|
|
推荐一個小工具,發揮虛擬桌面的大大功效
devilspie (自動窗口行為)
linux可以虛擬多個桌面,可是我們在使用上,開了一個程式,然後點上面的選單,點放到desk2,要使用的時候還要切換到桌面2,這樣的過程浪費了大量的時間,為什麼程式不能夠在一打開的時候自動擺在桌面2,並且自動把大小方位擺好,不管是要最大化,全螢幕,還是放在左右邊,devilspie就是用來處理這個問題的.
devilspie會在背景常駐,然後只要有窗口(注意是窗口,不是程式,一個程式,可能有n個窗口)一被打開就會if...怎麼樣....就.....做什麼動作.(比如假如打開gimp這個程式,把它放在桌面2)
首先先下載這個程式
pacman -S devilspie wmctrl
devilspie會檢查~/.devilspie底下所有的*.ds (比如~/.devilspie/gimp.ds設定gimp的窗口行為)
ds格式語法都是(指令(指令...(指令....)))......這種格式.
執行wmctrl -lx,顯示如下
WIN ID(window_xid) 窗口類型(window_class) 窗口標題(window_name)
0x00600070 -1 _IB_0.Enlightenment_IconBox N/A Iconbox
0x0060009c -1 0.Enlightenment_Pager N/A Pager-0
0x006000d5 -1 1.Enlightenment_Pager N/A Pager-1
0x01c0003b 1 stardict.Stardict jiunypc 星際譯王
0x006095ec -1 2.Enlightenment_Pager N/A Pager-2
0x0060b305 -1 3.Enlightenment_Pager N/A Pager-3
0x01400034 3 acroread.Acroread jiunypc Rails 4 Days.pdf - Adobe Reader
0x01800150 2 smplayer.Smplayer jiunypc 播放清單
0x01800002 2 smplayer.Smplayer jiunypc SMPlayer
0x01000006 0 urxvt.URxvt jiunypc urxvt
0x01a00003 0 gvim.Gvim jiunypc [No Name] + - VIM
0x02000003 0 terminal.Terminal jiunypc 終端機 - root@jiunypc:~
舉一個例子:
- ;terminal将其置于桌面1,調大小方位及(這個是大小而不是行數)聚焦
- (if
- (is(window_class)"Terminal")
- (begin
- (set_workspace 1)
- (geometry "+0+0")
- (focus)
- )
- )
复制代码
每一個窗口都有唯一一個ID編號,以0x開頭的16進位表示,window_name指窗口上面的title,詳細的指令man devilspie裏面有.
- (is(window_class)"Terminal")
- 可以寫成
- (and
- (...)
- (...)
- )
复制代码
可以使用,and(及)...or(或者).....not(都不是)
然後把他放在背景,並執行terminal,是不是窗口自動放在桌面一的左上角了?
(devilspie &) && (terminal &)
如果你用vim,為了避免每次修改完,還要kill devilspie,然後重新載入,可以在~/.vimrc加入下面這一行,一旦有修改自動讓系統使用新的設定值.(devilspie.ds是你ds檔案的名稱,請改成你自己的檔名)
au! bufwritepost devilspie.ds exec "!pkill devilspie && (devilspie&)"
ps:wmctrl (window manager control)是終端底下的指令,可以控制視窗管理程式,主要用來寫在腳本裏面控制一堆窗口的動作.(兼容大部份的視窗管理程式) |
|