Saya akan merekomendasikan mengganti tautan ke program dengan tautan ke skrip shell yang memeriksa apakah program sedang berjalan, dan jika ya, ia menggunakan fungsi manajer jendela untuk membawa program terlebih dahulu, dan jika tidak, jalankan itu .
Saya menemukan utas ini dan menerapkannya, membagikan versi saya.
Saya membuat file yang dapat dieksekusi /usr/local/bin/run_once.sh
mengandung
#! /bin/bash
application=$1
if wmctrl -xl | grep "${application}" > /dev/null ; then
# Already running, raising to front
wmctrl -x -R "$application"
else
# Not running: starting
[email protected]
fi
Pemeriksaan ini menggunakan wmctrl
jika aplikasi yang Anda coba mulai sudah memiliki jendela terbuka (beberapa program gui membuat pekerja tanpa gui tetap berjalan) alih-alih menggunakan ps
, gunakan -x untuk menggunakan WM_CLASS
alih-alih nama bilah judul.
Untuk setiap program yang saya inginkan hanya satu jendela, saya menyalin sistem .desktop
file ke ~/.local/share/applications
dan mengubah exec
bidang dari exec=program --arguments
ke exec=/usr/local/bin/run_once.sh program --arguments
Umumnya kode sumber aplikasi harus dimodifikasi. Ini bukan sesuatu yang dilakukan oleh sistem operasi.