2013-01-25 35 views
5

Tôi đã xây dựng wxWidgets 2.9.3 (cho thời điểm này tôi phải tuân theo phiên bản này) trong Ubuntu 12.10 và tôi dường như không thể sử dụng lớp wxTaskBarIcon. Mẫu được phân phối với wxWidgets đang biên dịch và chạy, nhưng chính biểu tượng đó không hiển thị trên thanh tác vụ. Tôi đã kiểm tra cấu hình của mình và tôi biết rằng việc biên dịch các thư viện wxWidgets được thực hiện với cài đặt mặc định (có nghĩa là "có" để hỗ trợ thanh tác vụ).wxTaskBarIcon trong Ubuntu 12.10

Bất kỳ ý tưởng nào làm cho nó hoạt động? Vấn đề này có liên quan đến wxWidgets và/hoặc phiên bản Ubuntu không?

Chỉnh sửa: Chắc chắn không được kết nối với phiên bản wxWidgets (được kiểm tra theo wx 2.8, 2.9.3, 2.9.4).

Chỉnh sửa 2: Trong trường hợp quan trọng: Hệ thống nằm trên VirtualBox 4.2.6, được cài đặt với tất cả các cài đặt mặc định. Tôi đang cài đặt bản cập nhật ít nhất một lần một tuần.

+0

Có thể bạn có thể tạo [SSCCE] (http://sscce.org/) để cho chúng tôi biết bạn đã làm gì? –

+0

Bạn đang sử dụng Trình quản lý cửa sổ nào? Có rất nhiều thông báo được đề cập ngay ở đầu http://docs.wxwidgets.org/2.8/wx_wxtaskbaricon.html –

+0

@JoachimPileborg Tôi có thể đăng ví dụ về mã của mình, nhưng có thể không cần thiết vì mẫu mặc định không hoạt động hoặc. – Rivenris

Trả lời

3

Theo Ubuntu từ 11.04 thanh tác vụ được quản lý bởi Unity theo mặc định không cho phép tất cả các chương trình đặt biểu tượng của chúng ở đó. Bạn phải đưa vào danh sách trắng ứng dụng của mình để cho phép ứng dụng truy cập thanh tác vụ. Đây là nơi tôi tìm thấy câu trả lời ban đầu:

http://ubuntuforums.org/showthread.php?t=1737589

Về cơ bản bạn phải gọi:.

gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Mumble', 'Wine', 'Skype', 'YOUR_APPLICATION']" 

Sau đó thoát ra, đăng nhập này sẽ thêm YOUR_APPLICATION vào danh sách trắng Unity.Panel. Lưu ý rằng trong trường hợp này, bạn cũng phải liệt kê các mục nằm trong danh sách đó trước đó. Bạn có thể kiểm tra ngoại hình như thế nào danh sách trắng bằng cách gọi:

gsettings get com.canonical.Unity.Panel systray-whitelist 

Trong trường hợp của tôi (như tôi đang làm việc trên môi trường phát triển) Tôi chỉ cần đặt nó vào "['all']". Điều này sẽ cho phép tất cả các ứng dụng truy cập vào thanh tác vụ.

Hãy nhớ rằng Ubuntu sẽ không hỗ trợ như vậy và trong tương lai bạn nên sử dụng thư viện AppIndicator thay vì để đạt được mục tiêu đó. Điều này có nghĩa là wxTaskBarIcon sẽ không hoạt động ngay cả với danh sách cho phép trừ khi nó sẽ sử dụng thư viện AppIndicator.

Nguồn: http://www.webupd8.org/2013/02/unity-notification-area-systray.html

+1

Có lý do gì khiến wxWidgets tụt hậu không? Chắc chắn 'wxTaskBarIcon' sẽ nhận được một' Appindicator' thực hiện – fatuhoku

+0

Tôi chỉ có thể đoán rằng điều này được kết nối với thực tế, rằng wxWidgets là khá GTK theo định hướng, không Ubuntu. Có thể khó điều chỉnh 'wxTaskBarIcon' thành Ubuntu, đặc biệt khi' AppIndicator' có khả năng ít hơn so với biểu tượng gtk (sự kiện trên chương trình, v.v.).Ngoài ra trong kinh nghiệm của tôi 'AppIndicator' là ít đáng tin cậy như tôi tìm thấy rất nhiều lỗi và hành vi kỳ lạ ở đó. – Rivenris