[批次] 用wmctrl在linux底下控制瀏覽器大小
不曉得這個板能不能討論Windows以外的應用,
翻來翻去沒看到作業系統上的限制 @@
許久以前用Windows的時候,有小工具可以協助resize瀏覽器,
幫助網頁設計師確認網頁在不同解析度下長什麼樣子;
雖然在linux底下會因為字型的設定和佈景等因素影響實際網頁顯示區的大小,
不過還是可以大概看出會變什麼樣子的。
但在linux底下似乎沒有發現這種的工具,
於是就用wmctrl這一個命令列下的小工具,
配合簡單的Shell Script兜一個出來用。
(Shell Script應該也算批次檔吧,就選這個分類了…汗)
wmctrl: http://www.sweb.cz/tripie/utils/wmctrl/
首頁有大概列出支援的wm(視窗管理器,Window Manager),
我目前用的openbox就在支援之列,
KDE、Gnome和XFCE預設的視窗管理器也是可以使用的。
Script本身很簡單,內容只有三行:
(我承認這樣寫有點過於暴力.....Orz)
(以下假設這個script位於/usr/local/bin/winsize.sh,權限755,
且假設wmctrl已安裝好可正常運作)
#!/bin/sh
wmctrl -l | cut -c27- | grep 'Swiftfox$\|^Internet Explorer' | \
sed -e "s/.*/wmctrl -r \"&\" -e 0,-1,-1,$1,$2/" | sh
(注意第二行最後的斜線後面不能有任何多餘的空白)
用法也不難,假設要把電腦上所有瀏覽器的大小一次設為800x600,就可以用
winsize.sh 800 600
其中Firefox的部份我是用Swiftfox,
如果是用官版Firefox的話要看一下瀏覽器標題改grep...那個指令中的字串
(抱怨一下,用wine模擬出來的IE好慢....)
至於Opera我還沒裝,不曉得他的標題長怎樣 @@"...
而cut指令中的27這個魔術數字在不同人的電腦上可能會不太一樣,
抓這個數字的方法為,在終端機下輸入wmctrl -l,會得到類似這樣一串東西:
0x00600003 -1 emeraldhome pcmanfm
0x0040001d -1 emeraldhome panel
0x00e00003 3 emeraldhome 批踢踢 - PCMan X 0.3.7
0x0200000b 0 emeraldhome Internet Explorer: Get It Now - Microsoft Internet
Explorer 6.0
其中最後一個欄位是視窗標題,我們要利用這個資訊來指定要控制的視窗,
因此就數數看那一大串東西中,每一行的視窗標題都是從第幾個字元開始,
拿這個數字去取代27就行了 XD
已知問題:如果有其他視窗標題也是Swiftfox結尾,或Internet Explorer開頭的,
也會跟著一起變動大小…囧
最後,每次都要下指令很麻煩,
把常用到的解析度設定成快速鍵,寫進視窗管理器的設定檔中就行了。
這個每種視窗管理器的方法不太一樣,要google一下…
以我使用openbox為例,就在~/.config/openbox/rc.xml的keyboard區段中寫入:
<keybind key="S-A-8"> <!-- Shift + Alt + 8 for 800x600 -->
<action name="Execute">
<command>/usr/local/bin/winsize.sh 800 600</command>
</action>
</keybind>
<keybind key="S-A-0"> <!-- Shift + Alt + 0 for 1024x768 -->
<action name="Execute">
<command>/usr/local/bin/winsize.sh 1024 768</command>
</action>
</keybind>
以上,看起來很大費周張,不過其實蠻單純的,只是我寫了不少廢話 Orz
予兒 2008.07.23
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.166.61.63
推
07/27 22:17, , 1F
07/27 22:17, 1F
EzHotKey 近期熱門文章
PTT數位生活區 即時熱門文章