Sử dụng StartupWMClass cho các ứng dụng chạy trong một thiết bị đầu cuối

Oct 04 2020

Vào năm 18.04, tôi có một trình khởi chạy trong Dấu gạch ngang để chạy một ứng dụng trong một thiết bị đầu cuối với Dấu gạch ngang hiển thị một chấm chỉ báo cho trình khởi chạy khi nó đang chạy, thay vì một chỉ báo cho trình khởi chạy đầu cuối chung chung (bằng cách này, tôi có thể tìm thấy nó nếu các cửa sổ đầu cuối khác đang mở). Tôi đã có thể sử dụng tùy chọn --class trong mục Exec cùng với StartupWMClass để đạt được điều này.

Trong 20.04, trình khởi chạy không hoạt động khi một thiết bị đầu cuối được mở, ứng dụng sẽ cố khởi chạy và sau đó thiết bị đầu cuối đóng lại. Tôi đã truy cập vào địa chỉ này và có một số cuộc bàn tán về việc tùy chọn --class bị giảm giá trị. Nếu tôi xóa tùy chọn - lớp, trình khởi chạy hoạt động, nhưng chấm chỉ báo được gắn vào trình khởi chạy đầu cuối chung.

Đây là tệp .desktop trước khi xóa tùy chọn --class

[Desktop Entry]
Version=1.0
Type=Application
Terminal=true
Encoding=UTF-8
StartupNotify=true
Icon[en_US]=sage-terminal
Icon=sage-terminal
Exec=/home/rquint/Sage/SageMath/sage --class=SageTerminal
StartupWMClass=SageTerminal
Name=SageTerminal
Name[en_US]=SageTerminal
Actions=SageDocumentation;

[Desktop Action SageDocumentation]
Name=Sage Documentation
Exec=firefox /home/rquint/Sage/SageMath/local/share/doc/sage/html/en/index.html

Trả lời

1 RichardQuint Oct 06 2020 at 00:10

Đây không phải là một giải pháp hoàn hảo, nhưng bây giờ nó hoạt động. Tôi tìm thấy những thứ sau đây trên Google

https://itectec.com/ubuntu/ubuntu-how-to-make-a-custom-launcher-for-terminal-applications/

hiển thị cách khởi chạy ứng dụng trong một thiết bị đầu cuối mặc dù trình khởi chạy sử dụng Terminal = false. Trong essense, bạn đang khởi chạy trình giả lập đầu cuối, sau đó chạy ứng dụng. Có hai cách có thể xảy ra với phương pháp này. Đầu tiên, nó đặc biệt gọi một trình giả lập thiết bị đầu cuối cụ thể; thứ hai, tùy chọn --class bị giảm giá trị và có thể không hoạt động trong tương lai.

Vì vậy, hiện tại (Ubuntu 20.04.1 và Gnome 3.36.3), tôi đã thay thế các dòng

Terminal=true
Exec=/home/rquint/Sage/SageMath/sage --class=SageTerminal

với

Terminal=false
Exec=gnome-terminal --class=SageTerminal -e /home/rquint/Sage/SageMath/sage

và có hành vi mà tôi mong muốn.