用python编写的一个简单但可扩展的x11窗口管理器
xpywm的Python项目详细描述
名称
xpywm-一个用python编写的简单但可扩展的x11窗口管理器。
http://www.lsnl.jp/~ohsaki/software/pwm/),一个X11窗口管理器在 Perl</P>
开发pwm是由perlwm(http://perlwm.sourceforge.net/" rel="nofollow">http://perlwm.sourceforge.net/)推动的, 这是一个完全用Perl编写的窗口管理器。实施的理念 轻量级语言中的x11窗口管理器非常棒,因为它允许您 通过一点编程完全定制窗口管理器的行为。 与perlwm类似,pwm是基于由 斯蒂芬·麦卡曼。
xpywm从pwm端口。xpywm使用python3 xlib模块 与X11显示服务器通信。
xpywm的显著特点是简单、紧凑和 可编程级联/平铺窗口放置算法。
xpywm在某种意义上很简单,它完全是用python编写的,而且 只需要pypi中的python3 xlib模块。xpywm用较少的 超过1000行代码。如果您熟悉x11协议和 python编程,您可以很容易地阅读和理解 xpywm
xpywm非常紧凑,因为它提供的窗口装饰很少。xpywm已经 没有弹出菜单、图形图标和窗口动画。xpywm的设计 用最少的屏幕空间让用户和 应用程序使用尽可能宽的屏幕空间。例如,xpywm 在窗口内部而不是窗口外部绘制窗口标题, 它可以在窗口周围保存十几条像素线。
xpywm支持两种窗口放置算法:编程模式和 平铺模式。
在编程模式下,您可以指定用于推断适当窗口的规则 几何学。默认情况下,emacs位于屏幕的左上角 窗宽50%,窗高100%。火狐,Chromium,mupdf,xdvi, libreoffice、tgif和mathematica被放置在带有50%窗口的emacs旁边 宽度和100%窗户高度。终端窗口位于 右下角,窗宽50%,窗高70%。如果有 存在两个以上的终端窗口,每个终端窗口的大小为 缩小到屏幕的1/4,并以不重叠的方式放置。
在标题模式下,所有窗口都以标题方式放置,以便 窗户的宽度和高度都是一样的 不与其他窗口重叠,如基于平铺的窗口管理器。此外, xpywm尝试为emacs分配更大的区域;即,如果有三个 例如,windows、emacs和两个终端,emacs将占据 屏幕,每个终端都有四分之一的屏幕。
选项
<>安装
$ pip3 install xpywm
自定义
启动时,xpywm加载每个用户的rc脚本(~/.xpywmrc
)。
rc脚本是任何有效的python脚本。你可以改变外观
使用rc文件的xpywm的行为。
由于python是一个解释器,您可以很容易地定制 xpywm直接修改其变量、函数和方法。为了 实例,如果要更改窗框的外观,请重写 变量。如果要更改键盘绑定,请修改字典 键盘处理器。字典的键是x11 keysym的名称 字符串。字典的价值是不言而喻的:修饰符是掩码 键盘修饰符和回调函数的引用。
下面是一个示例~/.xpywmrc
文件。
# specify the title fontglobalTITLE_FONTTITLE_FONT='-hiro-fixed-medium-r-normal--8-80-75-75-c-80-iso646.1991-irv'# add key binding: Alt + Ctrl + 6 to access your serverKEYBOARD_HANDLER['6']={'modifier':X.Mod1Mask|X.ControlMask,'command':'ssh -f your_server urxvt &'}# add key binding: Alt + Ctrl + F12 to execute your shell scriptKEYBOARD_HANDLER['F12']={'modifier':X.ShiftMask,'command':'/path/to/your/script.sh'}
绑定
mod1+按钮1
按住mod1+按钮1拖动时移动当前活动窗口。
mod1+按钮3
按mod1+按钮3拖动时调整当前活动窗口的大小。
ctrl+mod1+i
聚焦下一个窗口。可用窗口按以下顺序循环 左上、左下、右上和右下。
ctrl+mod1+m
升高或降低当前活动窗口。
ctrl+mod1+'
切换当前活动窗口的最大化。
ctrl+mod1+;
切换当前活动窗口的垂直最大化。
ctrl+mod1+,
在编程模式下布置所有可用窗口。
ctrl+mod1+。
以平铺模式布局所有可用窗口。
ctrl+mod1+z
销毁当前活动窗口。
ctrl+mod1+x
在第一个和第二个虚拟屏幕之间切换当前活动窗口。
ctrl+mod1+[
切换到上一个虚拟屏幕。
ctrl+mod1+]
切换到下一个虚拟屏幕。
ctrl+mod1+1
通过os.system()函数运行命令"(unset sty;urxvt)&;。
ctrl+mod1+2
通过os.system()函数运行命令"pidof emacs emacs&;"。
ctrl+mod1+3
通过os.system()函数运行命令"pidof firefox firefox&;"。
mod1+f1—mod1+f4
分别切换到虚拟屏幕1--4。
shift+f7
通过HDMI或DP端口启用外部视频输出。
ctrl+mod1+delete键
重新启动xpywm。
ctrl+mod1+=
终止xpywm。
可用性
最新版本的xpywm在pypi上提供 (https://pypi.org/project/xpywm/" rel="nofollow">https://pypi.org/project/xpywm/)。
另请参见
twm(1)、perlwm(1)、pwm(1)、xpymon(1)、xpylog(1)
作者
Hiroyuki Ohsaki<;Ohsaki[atmark]lsnl.jp>;