有什麼方法可以使用快捷方式從視窗列開啟視窗嗎?例如開啟左側第一個視窗Ctrl+1,開啟左側第二個視窗Ctrl+2。
我現在使用xfce4,但是如果在xfce4下不可能,是否有其他桌面環境允許這樣做?
由於我為同一個應用程式開啟了多個窗口,因此我沒有搜尋與該應用程式相關的排序,而是搜尋與該視窗相關的排序。
答案1
只需一個小腳本並在您的系統上進行一個小手術,就可以完全按照您的描述進行安排。
原料
wmctrl
;它可能需要安裝。- 下面的腳本
xprop
,取得視窗屬性。它已安裝在您的系統上。- xfce 面板設定中的設定更改
- 附加鍵盤快速鍵
如何設定
安裝
wmctrl
:sudo apt-get install wmctrl
建立目錄
~/bin
(/home/<yourname>/bin
)。將下面的腳本複製到一個空文件中,將其另存為panel_navigate
(無擴展名)~/bin
並使其可執行。變更面板設定:
前往設定管理員 >“面板”>“專案”(選項卡)>“視窗按鈕”>- “排序順序”> 選擇:時間戳
- “視窗分組”> 選擇:“從不”
- 確保“顯示所有工作區或視窗中的視窗”聯合國打勾
- “排序順序”> 選擇:時間戳
新增鍵盤快速鍵:
前往“設定管理員”>“鍵盤”>“應用程式快速鍵”,選擇“新增”。新增指令:panel_navigate 1
將其設定為組合鍵Ctrl+1
現在您可以選擇:
- 重複此過程以
panel_navigate 2
在Ctrl+下添加2,依此類推(直到 9)
(儲存選項)或者(如果您不怕手動編輯設定檔):
您可以編輯該文件:
~/.config/xfce4/xfconf/xfce-perchanel-xml/xfce4-keyboard-shortcuts.xml
其中
xfce
儲存了鍵盤快捷鍵(在 中)。使用以下命令開啟檔案mousepad
並尋找類似以下內容的行:<property name="<Primary>1" type="string" value="panel_navigate 1"/>
複製該行,將其貼上到下一行(插入)並將兩次出現的 1 更改為 2,這樣您將得到:
<property name="<Primary>1" type="string" value="panel_navigate 1"/> <property name="<Primary>2" type="string" value="panel_navigate 2"/>
等等..
確保縮排完全相同。重複此過程直至 9。
- 重複此過程以
登出並重新登錄,它應該可以工作:
Ctrl+1
Ctrl+3
等等...
劇本
#!/usr/bin/env python3
import subprocess
import sys
def get_value(command):
return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").strip()
def run_command(command):
subprocess.Popen(["/bin/bash", "-c", command])
current_workspace = [l for l in get_value("wmctrl -d").splitlines() if l.split(" ")[2] == "*"][0][0]
wlist_ids = [item.split()[0:4] for item in get_value("wmctrl -l").splitlines()]
relevant = [item for item in wlist_ids if item[1] == current_workspace]
panel = []
for item in relevant:
data = get_value("xprop -id "+item[0])
if ("_TYPE_NORMAL" in data, "TYPE_DIALOG" in data).count(True) == 1:
panel.append(item)
try:
window = panel[int(sys.argv[1])-1][0]
run_command("wmctrl -ia "+window)
except IndexError:
pass
解釋
解決方案是一種機會主義的解決方案。我想到由命令調用的視窗列表wmcrl -l
是按視窗的年齡排序的。透過使 xfce 面板執行相同的操作(設定),兩個命令完美對應。該腳本的作用是建立一個視窗列表,過濾掉「真實」的可見視窗(使用xprop
)並透過命令切換到選定的窗口panel_navigate
,並以視窗編號(從左到右)作為參數。
問題
我注意到一個例外:IDLE(python 解釋器)視窗的 pid 0 且它們的屬性不能被xprop
.這些視窗不會出現在視窗清單中,並且會被腳本跳過。
筆記
雖然組合鍵Ctrl+<number>
在測試時沒有引發任何錯誤,但它可能與某些應用程式發生衝突。選擇 (eg)
Ctrl+ Alt+可能會更安全1
答案2
不確定是否相同的應用程式,但Unity
您可以使用 切換應用程序super+number
,例如super + 1
= 啟動器上的第一項,super + 2
= 啟動器的第二項,super + n
= 啟動器的第 n 項。這也有助於打開放置在啟動器上的任何項目,例如如果 nautilus 是啟動器的第一個項目,super + 1
將開啟 nautilus 檔案管理器。