Câu trả lời:
Bạn có thể sử dụng lệnh sau để liệt kê các biểu tượng ứng dụng liên kết đến các chương trình không tồn tại:
for i in {/usr,~/.local}/share/applications/*.desktop; do which $(grep -Poh '(?<=Exec=).*?( |$)' $i) > /dev/null || echo $i; done
Tôi nghi ngờ bạn sẽ thấy rằng hầu hết các biểu tượng của bạn là các biểu tượng tùy chỉnh trong thư mục nhà của bạn, vì chúng không được trình quản lý gói tự động dọn sạch. Nếu đây là trường hợp và bạn muốn dọn rác tất cả chúng cùng một lúc, bạn có thể sử dụng sửa đổi lệnh trước đó:
for i in ~/.local/share/applications/*.desktop; do which $(grep -Poh '(?<=Exec=).*?( |$)' $i) > /dev/null || trash $i; done
Hoặc, tất nhiên, duyệt đến ~/.local/share/applications/
trong Nautilus và dọn rác chúng qua giao diện đồ họa.
Nếu bằng menu bắt đầu, bạn có nghĩa là menu 'Ứng dụng', bạn có thể chỉnh sửa nó bằng cách đi tới: Hệ thống -> Tùy chọn -> Menu chính.
Bạn có thể thêm, sắp xếp lại, chỉnh sửa và xóa các mục tùy ý.
Khi một ứng dụng được gỡ cài đặt, nó sẽ xóa các mục menu mà nó đã cài đặt. Và nó hoạt động theo cách này trên máy của tôi.
Nếu nó hoạt động khác nhau, đó là một lỗi của một gói cụ thể hoặc một vấn đề trên hệ thống của bạn. Tôi không thể tin rằng bạn có hơn 40 mục mồ côi. Nó sẽ là triệu chứng của một vấn đề.
Chà, cái này thì khó nhưng ít nhất tôi muốn nói cho bạn biết vấn đề là gì.
Gnome lưu trữ các ứng dụng đã cài đặt trong / usr / share / application với các tệp đã kết thúc bằng .desktop (vì vậy chương trình vlc được khởi chạy bởi vlc.desktop)
Bên trong mỗi cái, có một phần "Danh mục" trong đó bạn có thể đặt trong phần nào của menu Ứng dụng mà chương trình bạn muốn. Vấn đề là: cách duy nhất tôi nghĩ nó có thể được thực hiện những gì bạn đang yêu cầu là sử dụng tập lệnh bash hỏi xem gói có liên quan đến .desktop đó đã được cài đặt hay chưa. nếu không, hãy xóa tệp .desktop đó. Khi bạn xóa tệp, nó sẽ nằm ngoài menu và khi ứng dụng của bạn nằm trong danh mục, tệp đó sẽ không hiển thị.
Đó là một chút ngoài phạm vi của tôi bởi vì mọi lệnh (dpkg, apt-get, v.v.) luôn trả về một lối thoát tốt khi họ nói rằng gói không được cài đặt, vì vậy chúng tôi phải đọc lối ra từ ứng dụng đó để tìm kiếm một Chuỗi (fi "chưa được cài đặt"), kiểm tra nó và nếu Chuỗi tồn tại, điều đó có nghĩa là ứng dụng chưa được cài đặt và .desktop có thể bị xóa.
Vì vậy, nếu bạn muốn, bạn chỉ cần nhập thư mục (/ usr / share / application) và nhấp vào các tệp tương ứng với các chương trình. Họ sẽ biến mất khỏi menu Ứng dụng. Để làm điều đó tự động, tôi đoán chúng ta cần một kịch bản bash tốt trên bản nhạc tôi đã nói.
Tôi hy vọng việc này sẽ có ích trong vài trường hợp.
Thay thế:
Theo câu trả lời @ ændrük, đây là một giải pháp tương tự hỗ trợ khoảng trắng trong đường dẫn và thư mục con , có thể được sử dụng trên một thư mục cụ thể hoặc toàn bộ đĩa để tìm .desktop
tệp bị hỏng (phím tắt)
find {/usr,~/.local,/usr/local,}/share/applications/ -name '*.desktop' | while read -r line; do which $(grep -Poh '(?<=Exec=).*?( |$)' $line) > /dev/null || echo $line; done
Cho toàn bộ đĩa
find / -name '*.desktop' | while read -r line; do which $(grep -Poh '(?<=Exec=).*?( |$)' $line) > /dev/null || echo $line; done
Lưu ý: rằng bất kỳ phương pháp nào cũng có thể hiển thị kiểm tra dương tính giả hai lần tìm thấy tệp trước khi xóa chúng
Đây có thể là một câu hỏi đã được đăng cũ nhưng tôi nghĩ dù sao tôi cũng nên bấm nút vì tôi gặp vấn đề tương tự tuy nhiên không có gợi ý nào trong số này có tác dụng nhưng tôi thấy trên internet có một người rất thông minh biết về chương trình có tên Alacarte (chỉnh sửa menu Gnome dễ dàng) chương trình được cài đặt bằng trình quản lý phần mềm và tôi rất vui vì nó vẫn được cài đặt theo mặc định nhưng không phải là chương trình nổi tiếng nhưng tôi rất vui vì nó vẫn có sẵn thông qua trình quản lý phần mềm và nó rất dễ sử dụng chỉ cần nhấp vào để tô sáng mục nhập chương trình đã gỡ cài đặt mà bạn muốn loại bỏ và nhấp vào xóa ở bên phải và thế là xong. có lẽ điều này sẽ giúp ích nếu những gợi ý khác không hiệu quả với bạn