2012-02-17 29 views
8

Tôi mới phát triển Gtk + và đang cố gắng viết một ứng dụng bằng PyGObject và Gtk + 3.0. Khi tôi chạy ứng dụng của tôi trong Gnome Shell từ dòng lệnh, tuy nhiên, tên ứng dụng khi nó xuất hiện ở góc trên bên trái (ngay bên phải của góc nóng Hoạt động) chỉ được đặt thành tên của tệp nguồn Python mà tôi đã chạy để khởi động ứng dụng. Có cách nào để đặt tên xuất hiện trong Gnome Shell cho ứng dụng của tôi không? Tôi đã nhìn vào Gtk.Application, và mặc dù nó có vẻ như làm một số những gì tôi muốn (bắt đầu trong Gtk + 3,3, anyway), tôi dường như không thể tìm ra cách để sửa chữa tên hoạt động hoặc tên ứng dụng.Cách đặt tiêu đề ứng dụng trong Gnome Shell?

+3

Tôi nghĩ rằng tên đó có thể được tìm nạp từ tệp '.desktop' được kết hợp với chương trình. –

+2

Không chắc chắn, nhưng hãy thử 'GLib.set_application_name()' ở đầu chương trình của bạn? – ptomato

Trả lời

13

gnome-shell cố khớp cửa sổ với ứng dụng (ví dụ ShellApp) và sử dụng tên đó. Mã này làm điều đó là ở đây: http://git.gnome.org/browse/gnome-shell/tree/src/shell-window-tracker.c#n328

Nhưng nếu nó không tìm thấy ShellApp cho cửa sổ sau đó nó rơi trở lại bằng cách sử dụng ICCCM định WM_CLASS (spec là tại http://tronche.com/gui/x/icccm/sec-4.html#s-4.1.2.5) ở đây: http://git.gnome.org/browse/gnome-shell/tree/src/shell-app.c#n361

Vì vậy, nếu bạn đang không cài đặt tệp .desktop để tìm tên ứng dụng từ bạn sẽ nhận được mặc định WM_CLASS xuất hiện trong đó. GTK tự động tạo dựa trên tên thực thi. Bạn có thể ghi đè điều đó trước khi cửa sổ được nhận ra (điều này có nghĩa là trước khi gọi _show trên cửa sổ) bằng cách sử dụng gtk_window_set_wmclass()

Đây là ví dụ đơn giản sẽ xuất hiện dưới dạng "Hello World". Đừng quên đặt tiêu đề cửa sổ nữa!

#!/usr/bin/python 
from gi.repository import Gtk 

win = Gtk.Window() 
win.connect("delete-event", Gtk.main_quit) 
win.set_wmclass ("Hello World", "Hello World") 
win.set_title ("Hello World") 
win.show_all() 
Gtk.main() 
+1

Đối với hậu thế: GNOME Shell hiển thị đối số cuối cùng cho 'set_wmclass' trong thanh trên cùng. – wjt

+0

Trớ trêu thay là "Không sử dụng chức năng này". trong [tài liệu GTK] (https://developer.gnome.org/gtk3/stable/GtkWindow.html#gtk-window-set-wmclass). Tuy nhiên, tôi khuyên bạn nên sử dụng nó. – JayStrictor

+0

Chức năng này không còn được dùng thay cho Gtk + 3.22. – Aeyoun

Các vấn đề liên quan