Linux
如何創建一個鍵盤快捷鍵來檢查程序是否已經打開,如果是,它會打開它的視窗而不是新實例
超級終端上的範例:
我按
alt
+h
,腳本應該檢查 hyper 是否已經在後台執行。如果是,它應該已經打開了打開的視窗。
如果沒有,請打開一個新視窗。
作業系統:Ubuntu 18.04
創建鍵盤快捷鍵取決於您的 DesktopManager。在 Ubuntu 18中,這個答案解釋瞭如何. 以下是您應該設置為由您的快捷方式啟動的命令。
這個簡單的命令可以為我的視窗管理器切換到 Hyper 視窗:
wmctrl -a Hyper
所有支持 EWMH/NetWM 規範的視窗/桌面管理器都可以使用
wmctrl
. 很可能 Ubuntu 桌面是兼容的,但您可能需要安裝wmctrl
.我留下我之前的答案,只是為了讓你涉足桌面上可能做的其他事情。這就是我在上面找到命令的方式。
舊答案:
您可以嘗試編寫的腳本的一些關鍵元素:
ps -xau | grep hyper
將獲得程序是否已經在執行的資訊。請注意,還會列出正在搜尋的 grep 程序hyper
。- 第 1 步可能是可選的。您的視窗管理器很可能支持 EWMH/NetWM 規範。因此,您可以使用
wmctrl
. 您可能必須安裝它。輸入wmctrl
終端以查看它是否存在。wmctrl -l
將為您提供所有目前打開的視窗的列表。wmctrl -a
然後,您可以啟動所需的視窗並使用或轉到該視窗wmctrl -R
wmctrl -h
將告訴您可以對桌面執行的其他不同操作。例如在我的機器上(有幾個打開的視窗和桌面),在啟動 Hyper 之後,當輸入 wmctrl -l 我有:
0x02c00006 18 mymachine urxvt 0x02e00006 19 mymachine ncurses.h = (/nix/store/ffjl7aw7f0gjwv4gb4mgb0w49v5dhrkg-ncurses-6.0-20171125-dev/include) - VIM 0x03c00006 16 mymachine urxvt 0x03000006 20 mymachine urxvt 0x03a00006 8 mymachine urxvt 0x00e00006 24 mymachine urxvt 0x01800003 15 mymachine Volume Control 0x04c00005 1 mymachine Hyper 0x03e00001 15 mymachine 2.3. Using Precedences - Chromium 0x03e00006 15 mymachine Edit - Unix & Linux Stack Exchange - Chromium 0x03e00007 15 mymachine C++ Core Guidelines - Chromium
注意這一行:它在桌面 1 上顯示,視窗 0x04c00005 的名稱為 Hyper:
0x04c00005 1 mymachine Hyper
您可以使用命令直接獲取此行:
wmctrl -l | grep Hyper
以便啟動視窗:
wmctrl -a 0x04c00005
但是由於某種原因,我不知道為什麼這個最新的命令在我的 Fluxbox 環境中不起作用…… Fluxbox 可能沒有實現所有
wmctrl
功能。你應該測試一下。如果這在您的 Ubuntu 環境中有效,請嘗試編寫自動執行這些不同命令的 bash 腳本。然後告訴我們你在什麼方面取得了成功或阻礙。
編輯:似乎
wmctrl -a
期望視窗的標題,而不是十六進制 ID。所以解決方案很簡單:
wmctrl -a Hyper
你也可以試試
wmctrl -R Hyper