LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1888|回复: 24

推荐一個小工具,發揮虛擬桌面的大大功效

[复制链接]
发表于 2009-8-7 17:53:06 | 显示全部楼层 |阅读模式
推荐一個小工具,發揮虛擬桌面的大大功效

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:~

舉一個例子:

  1. ;terminal将其置于桌面1,調大小方位及(這個是大小而不是行數)聚焦
  2. (if
  3.      (is(window_class)"Terminal")
  4.         (begin
  5.             (set_workspace 1)
  6.             (geometry "+0+0")
  7.             (focus)
  8.         )
  9. )
复制代码

每一個窗口都有唯一一個ID編號,以0x開頭的16進位表示,window_name指窗口上面的title,詳細的指令man devilspie裏面有.


  1. (is(window_class)"Terminal")
  2. 可以寫成
  3. (and
  4.     (...)
  5.     (...)
  6. )
复制代码


可以使用,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)是終端底下的指令,可以控制視窗管理程式,主要用來寫在腳本裏面控制一堆窗口的動作.(兼容大部份的視窗管理程式)
 楼主| 发表于 2009-8-7 17:55:12 | 显示全部楼层
不好意思,系統多發了一貼,請版主刪掉,thx!
回复 支持 反对

使用道具 举报

发表于 2009-8-7 18:05:26 | 显示全部楼层
kde4下,楼主会发现自己所推荐的软件是多么的弱小和复杂。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-7 18:29:02 | 显示全部楼层
複雜還好啦!語法也不是特別的難,一個人常用到的程式也不會太多,也不用所有的行為都設定,主要還是丟到哪個桌面最重要,所以也不用寫個上百行.

其實這些小工具,組合起來是很猛的,怎麼會弱小呢?一方面加強工作效率,一方面降低系統負擔.

自從轉到archlinux就沒用kde了,之前幾乎都是用這個,kde確實挺不錯的.
回复 支持 反对

使用道具 举报

发表于 2009-8-7 19:01:41 | 显示全部楼层
kde---系统设置----窗口行为-----特定窗口

这个功能我比较常用。
回复 支持 反对

使用道具 举报

发表于 2009-8-7 19:04:37 | 显示全部楼层
自从terminal可透明化后,我很少需要多个桌面
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-7 19:15:39 | 显示全部楼层
自从terminal可透明化后,我很少需要多个桌面

-------
可以秀一下圖嗎?這個我還沒用過,好像很有意思.
回复 支持 反对

使用道具 举报

发表于 2009-8-7 19:28:14 | 显示全部楼层
kde自带的有,和系统结合的很完美。
回复 支持 反对

使用道具 举报

发表于 2009-8-7 20:57:50 | 显示全部楼层
Awesome下,你会发现,这实在是多此一举。因为这个功能是 awesome 自带的。
回复 支持 反对

使用道具 举报

发表于 2009-8-7 21:51:36 | 显示全部楼层
openbox 也有这功能。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表