ฉันพบกระทู้นี้และนำไปใช้งานแล้วแบ่งปันเวอร์ชันของฉัน
ฉันสร้างไฟล์ที่ปฏิบัติการได้ /usr/local/bin/run_once.sh
มี
#! /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
$@
fi
การตรวจสอบนี้ใช้ wmctrl
หากแอปพลิเคชันที่คุณพยายามเริ่มมีหน้าต่างเปิดอยู่ (โปรแกรม gui บางโปรแกรมให้คนทำงานโดยไม่ใช้ gui) แทนที่จะใช้ ps
ใช้ -x เพื่อใช้ WM_CLASS
แทนชื่อแถบชื่อเรื่อง
สำหรับแต่ละโปรแกรมที่ฉันต้องการเพียงหน้าต่างเดียวที่ฉันคัดลอกระบบ .desktop
ไฟล์ไปที่ ~/.local/share/applications
และเปลี่ยน exec
สนามจาก exec=program --arguments
ไปยัง exec=/usr/local/bin/run_once.sh program --arguments