Chuyện gì đang xảy ra
Các vấn đề như thế này liên quan đến khung kết hợp ứng dụng của Unity. Để đơn giản hóa các chi tiết kỹ thuật, cửa sổ chương trình và ứng dụng là hai thứ riêng biệt với Ubuntu. Ubuntu cần phải 'đoán' ứng dụng nào sở hữu một cửa sổ cụ thể. Và đôi khi đoán đó thất bại, và một dấu hỏi xuất hiện trong trình khởi chạy.
Sự thất bại có thể là do:
- Một lỗi trong BAMF (khung phù hợp với ứng dụng được đề cập ở trên).
- Mô tả ứng dụng bị lỗi (còn gọi là tệp '.desktop').
- Việc thiếu bất kỳ mô tả ứng dụng nào cả. Các tệp thực thi khởi chạy windows không có siêu dữ liệu này.
Ứng dụng hiển thị trong câu hỏi (KeePass2) bị sự cố loại 1 đã được báo cáo cho trình theo dõi lỗi thích hợp .
Ví dụ về các vấn đề
Các ví dụ dưới đây là kỹ thuật, nhằm vào các lập trình viên muốn ứng dụng của riêng họ hiển thị đúng trong trình khởi chạy Ubuntu.
Vấn đề 3 - Không có mô tả ứng dụng
Để ứng dụng được tích hợp với Unity, nghĩa là, có thể tìm kiếm trong Dash và được đặt trong launcher, nó cần phải có một mục trên máy tính để bàn. Entry như vậy được đặt trong /usr/share/applications/
, /usr/local/share/applications/
và $HOME/.local/share/applications/
(hai nước này là cho phần mềm của bên thứ ba, toàn hệ thống và người dùng chỉ tương ứng). Chúng kết thúc bằng một .desktop
phần mở rộng và làm theo định dạng cơ bản này:
[Desktop Entry]
Type=Application
Name=My Application's Name
Icon=/file/path/of/my/icon
Exec=/file/path/of/my/executable
Mục này bắt đầu một chương trình bằng cách gọi Exec
thực thi. Bất cứ khi nào chương trình đó hiển thị một cửa sổ hoặc hộp thoại, Unity sẽ nhận thấy rằng "thuộc về" thực thi của nó đối với mô tả ứng dụng này và sử dụng cái đã cho Name
và Icon
trong trình khởi chạy.
Đây là một ví dụ về barebones. Các đặc điểm kỹ thuật chính thức bao gồm nhiều tính năng nâng cao.
Vấn đề 2 - Mô tả ứng dụng bị lỗi
Chúng ta hãy giả sử rằng my_app.desktop
tồn tại trong một thư mục ứng dụng hợp lệ, nhưng:
/file/path/of/my/icon
không tồn tại trong hệ thống tập tin.
/file/path/of/my/icon
không phải là một hình ảnh.
- mục nhập sử dụng một số cú pháp không chính xác hoặc thẻ không hợp lệ.
Trong bất kỳ trường hợp nào ở trên, Ubuntu sẽ không thể liệt kê chính xác cửa sổ ứng dụng trong trình khởi chạy.
Vấn đề 1 - Một lỗi trong BAMF
Kể từ Ubuntu 11.10, BAMF có một số lỗi ngăn không cho ứng dụng khớp chính xác. Cạm bẫy phổ biến (tạm thời) bao gồm:
- Đường
Exec
dẫn là một liên kết tượng trưng chứ không phải là một tệp thông thường
- Việc thực thi là một kịch bản khởi chạy chương trình thực thi chính.
Trong những trường hợp này, các lập trình viên không có lựa chọn nào khác ngoài sử dụng một cách giải quyết, chẳng hạn như loại bỏ trừu tượng liên kết tượng trưng hoặc liên kết trực tiếp đến tệp thực thi. Không phải cái nào trong số này được yêu cầu bởi chính đặc tả mục máy tính để bàn.