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.