作者emerald12358 (小拍)
站内EzHotKey
标题[批次] 用wmctrl在linux底下控制浏览器大小
时间Thu Jul 24 00:44:00 2008
不晓得这个板能不能讨论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
1F:推 VElysian:Shell Script 当然可以讨论呀~~ 感谢分享~~ ^_^ 07/27 22:17