GNU/Linux >> Belajar Linux >  >> Linux

Batasi program gui di Linux hanya untuk satu instance

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.


Linux
  1. Sistem Berbasis Debian, Hanya Satu Program Gui, Tidak Ada Yang Lain?

  2. Bagaimana Memastikan Hanya Satu Contoh Skrip Bash yang Berjalan?

  3. Bagaimana Cara Memulai Ulang (atau Mengatur Ulang) Proses yang Berjalan Di Linux?

  1. Linux – Reboot Hanya Userspace?

  2. Periksa layanan yang berjalan di Linux

  3. Bagaimana saya memastikan hanya satu contoh skrip Ruby yang berjalan pada satu waktu?

  1. Linux – Mendapatkan Hanya Os Open-source Sejati yang Berjalan di Ponsel? Android?

  2. Apa cara terbaik untuk memastikan hanya satu contoh skrip Bash yang berjalan?

  3. Mengalami kesulitan menjalankan Steam Terraria di Linux