Sử dụng StartupWMClass cho các ứng dụng chạy trong một thiết bị đầu cuối
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
Đâ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.