[批次] 用wmctrl在linux底下控制瀏覽器大小

看板EzHotKey作者 (小拍)時間16年前 (2008/07/24 00:44), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
不曉得這個板能不能討論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
Shell Script 當然可以討論呀~~ 感謝分享~~ ^_^
07/27 22:17, 1F
文章代碼(AID): #18Xr_Hzp (EzHotKey)
文章代碼(AID): #18Xr_Hzp (EzHotKey)