用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是基于由 斯蒂芬·麦卡曼。

xpywmpwm端口。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>;

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将多个线程中的函数放入单个队列   数组在Java中,如何在不改变整数顺序的情况下找到整数组的顺序?   java控制器属于表示层?   java Apache Ivy和本地Maven repo如何处理使用Maven 3构建的快照   Java可与泛型类型进行比较   java这个表达式在泛型中是什么意思   JavaEclipse和TeamCity插件   java检测构造函数中的final是否为空   java如何在StanfordCoreNLP管道中同时使用词汇化和依赖性解析器?   java在AntUnit控制台日志中显示完整异常堆栈跟踪   lambda如何与Java 8供应商建立连锁关系   如何让GRPC的重试机制在Kubernetes集群中使用grpcjava工作?   如何使用openjdk:7 Docker映像和Gradle包装器避免“EC参数错误”?   java将集合映射扩展为一维映射新的“无法推断函数接口类型”