用于平铺窗口管理器的语法和配置生成器

tile的Python项目详细描述


平铺

forthebadgeforthebadge

用于平铺窗口管理器的语法和配置生成器。在

TL;DR

如果您正在使用i3Sway 看看下面的example。在

安装

pip install tile

使用

  1. 使用下面的Concepts创建input_文件。在
  2. 尝试使用tile input_file
  3. 使用tile --write input_file将其写入i3配置
  4. 使用tile --write --sway input_file将其写入Sway config

查看tile --help以获取更多选项。在

概念

映射类型

tile支持两种类型的映射:

  1. WM内置命令的命令绑定:
INPUT:
$mod+f -> fullscreen toggle

OUTPUT:
bindsym $mod+f fullscreen toggle
  1. Exec绑定,这是不言而喻的
^{pr2}$

替代品

Alternatives表达了同一个操作应该绑定到多个键绑定的思想。在

例如:

INPUT:
$mod+h/Left -> focus left

OUTPUT:
bindsym $mod+h focus left
bindsym $mod+Left focus left

变量

Variables是编写具有类似结构的绑定的较短方法。在

例如:

INPUT:
$mod+{f,s} -> {fullscreen,split} toggle

OUTPUT:
bindsym $mod+f fullscreen toggle
bindsym $mod+s split toggle

范围扩展

在变量内部可以写1-10,它将被扩展为1,2,3...。在

INPUT:
$mod+{1-4} -> workspace {100-103}

OUTPUT:
bindsym $mod+1 workspace 100
bindsym $mod+2 workspace 101
bindsym $mod+3 workspace 102
bindsym $mod+4 workspace 103

变量引用

您可以使用@n语法引用变量的当前值,其中n是变量索引。 每个变量从左到右编号(从0开始)。E、 g.:

foo {bar,{foo,bar}} {0-1} ...
    ^    ^          ^
    0    1          2

这样使用:

INPUT:
$mod+Control+Shift {8-9,0} -> move container to workspace {8-10}; workspace @1

OUTPUT:
bindsym $mod+Control+Shift 8 move container to workspace 8; workspace 8
bindsym $mod+Control+Shift 9 move container to workspace 9; workspace 9
bindsym $mod+Control+Shift 0 move container to workspace 10; workspace 10

或者为了避免重复长序列:

INPUT:
$mod+x -> {[instance="calculator"]} scratchpad show; @0 move position center

OUTPUT:
bindsym $mod+x [instance="calculator"] scratchpad show;[instance="calculator"] move position center

空值

您可以在Variable内使用空值,用_表示。E、 g

INPUT:
$mod+{_,Shift+}h/Left -> {focus,move} left

OUTPUT:
bindsym $mod+h focus left
bindsym $mod+Left focus left
bindsym $mod+Shift+h move left
bindsym $mod+Shift+Left move left

嵌套

您可以在Variable中使用AlternativesVariables同时创建多个绑定。在

INPUT:
the {{quick,brown},{fox,dog/beast}}=> {xterm,kitty} -e echo{jumps,over}

OUTPUT:
bindsym the quick exec --no-startup-id xterm -e echo jumps
bindsym the brown exec --no-startup-id xterm -e echo over
bindsym the fox exec --no-startup-id kitty -e echo jumps
bindsym the dog exec --no-startup-id kitty -e echo over
bindsym the beast exec --no-startup-id kitty -e echo over

附加语法

括号

{emm、加号等特殊字符。在

INPUT:
$mod+p/Print => scrot

OUTPUT:
bindsym $mod+p exec --no-startup-id scrot
bindsym $mod+Print exec --no-startup-id scrot

可以使用括号修改行为:

INPUT:
($mod+p/Print)=> scrot

OUTPUT:
bindsym $mod+p exec --no-startup-id scrot
bindsym Print exec --no-startup-id scrot

评论

将忽略空行或以#开头的行。在

INPUT:
# This is a comment

OUTPUT:

示例

INPUT:
$mod+{_,Shift+}{h/Left,j/Down,k/Up,l/Right}         -> {focus,move}{left,down,up,right}$mod+Control+Shift+{{h/Left,k/Up},{l/Right,j/Down}} -> resize {shrink,grow}{width,height} 5px or 5ppt
$mod+{_,Shift+}{1-9,0}                              -> {_,move container to }workspace {1-10}$mod+Control+Shift {1-9,0}                          -> move container to workspace {1-10}; workspace @1

OUTPUT:
bindsym $mod+h focus left
bindsym $mod+Left focus left
bindsym $mod+j focus down
bindsym $mod+Down focus down
bindsym $mod+k focus up
bindsym $mod+Up focus up
bindsym $mod+l focus right
bindsym $mod+Right focus right
bindsym $mod+Shift+h move left
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+l move right
bindsym $mod+Shift+Right move right
bindsym $mod+Control+Shift+h resize shrink width 5px or 5ppt
bindsym $mod+Control+Shift+Left resize shrink width 5px or 5ppt
bindsym $mod+Control+Shift+k resize shrink height 5px or 5ppt
bindsym $mod+Control+Shift+Up resize shrink height 5px or 5ppt
bindsym $mod+Control+Shift+l resize grow width 5px or 5ppt
bindsym $mod+Control+Shift+Right resize grow width 5px or 5ppt
bindsym $mod+Control+Shift+j resize grow height 5px or 5ppt
bindsym $mod+Control+Shift+Down resize grow height 5px or 5ppt
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10
bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10
bindsym $mod+Control+Shift 1 move container to workspace 1; workspace 1
bindsym $mod+Control+Shift 2 move container to workspace 2; workspace 2
bindsym $mod+Control+Shift 3 move container to workspace 3; workspace 3
bindsym $mod+Control+Shift 4 move container to workspace 4; workspace 4
bindsym $mod+Control+Shift 5 move container to workspace 5; workspace 5
bindsym $mod+Control+Shift 6 move container to workspace 6; workspace 6
bindsym $mod+Control+Shift 7 move container to workspace 7; workspace 7
bindsym $mod+Control+Shift 8 move container to workspace 8; workspace 8
bindsym $mod+Control+Shift 9 move container to workspace 9; workspace 9
bindsym $mod+Control+Shift 0 move container to workspace 10; workspace 10

背景

i3是一个很棒的windows管理器,但是它的配置非常冗长。 我尝试了bspwm及其热键守护程序sxhkd,我更喜欢这种语法。 所以我写了tile。在

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

推荐PyPI第三方库


热门话题
java消费者。如何指定要读取的分区?[卡夫卡]   网络可以创建一个Java UDPsocket来监听所有地址吗?   java如何在某一天之前到达   JAVAlang.SecurityException:需要蓝牙权限:用户10065和当前进程都没有安卓。准许蓝牙   java将字符串转换为datetime SQLServer2008   将字节码转换为dex:com时发生java错误。安卓dx。rop。科技委。CstFieldRef无法转换为com。安卓dx。rop。科技委。CstString   ajax如何将变量值从java类传递到jsp页面   不访问私钥的java加密操作(如Android密钥库)   试图保存一个或多个文件时,执行create HH000437时发生java错误   继承JAVA实现接口,方法采用并返回类型接口   soap SoapUI验证错误。无法将lang.String转换为org。阿帕奇。xmlbeans。XmlError   java无法使用Spring HATEOAS和Jersey实现HAL渲染   使用泛型的Java工厂。阶级vs。getClass()   java何时会发生“SecurityException:不正确的签名”?   java如何将JOptionPane中的文本存储到文本文件中   java双向通信(询问还是告知)?   java为什么我不能移动数组初始值设定项?