i3配置操作工具
i3configger的Python项目详细描述
i3配置器
免责声明:这是一个针对已经知道i3配置如何工作的用户的工具(如优秀文档中所述)。i3configer
是一个独立的附加组件,与项目没有直接关联,也不需要以任何方式高效地使用i3。
注意使用i3configger
将替换现有的配置文件(config
和可选的状态栏配置),但如果还没有备份,则会将它们移到<;原始名称>;.bak
中,以便您可以在需要时轻松恢复损坏。回到原来的文件。
我想能够在不同的颜色主题之间切换,做一些事情,比如用键盘快捷键隐藏i3bar。i3configer
在不更改i3wm本身的情况下,使此更改和其他动态更改成为可能。
主要特性
- 配置语言与i3相同,但有以下区别:
- 可以将配置分散到多个文件中
- 将变量赋给变量的可能性
- i3status配置中的变量也会被解析(将它们设置在源中的任何位置)
- i3configer本身的附加配置和i3配置更改的持久性是通过在配置文件上撒一点json来实现的。
- 命令行驱动-活动可以直接绑定到键盘快捷键,也可以作为绑定模式的一部分
最后,i3wm需要一个它能处理的配置文件,当某些东西改变时,它需要重新加载或重新启动。
这可以通过添加一个生成步骤来实现,该步骤可以通过直接调用i3configer
来触发,也可以通过将其作为一个[daemonized]监视程序进程运行来触发,该进程在源文件更改或消息发送时自动重建和重新加载。
我能用它做什么?
在任意"方案"之间切换
您可以切换符合简单命名约定(config.d/<;key>;<;value2>;.co)的子配置(例如不同的配色方案)。nf
等)通过调用例如i3configger select next<;key>;
或i3configger select<;key>;
要了解可以做什么,请查看示例,并阅读文档
覆盖任何变量
通过调用i3configger set<;variable name>;<;new value>;
,可以更改配置中定义的任何变量。这些更改不会保存在配置本身中,而是保存在一个附加文件中。
有关概念和其他可能的命令的详细说明,请参见i3configer文档。
用法示例
下面是i3配置的一个片段,它使用一种模式通过向i3configer发送消息来改变自身:
set $i3cBin ~/.virtualenvs/i3/bin/i3configger bindsym $win+w mode "i3configger" mode "i3configger" { bindsym Right exec "$i3cBin select-next colors --i3-refresh-msg restart" bindsym Left exec "$i3cBin select-previous colors --i3-refresh-msg restart" bindsym Up exec "$i3cBin shadow bars:targets:laptop:mode dock" bindsym Down exec "$i3cBin shadow bars:targets:laptop:mode hide" bindsym Return mode "default" bindsym Escape mode "default" }
所用信息的说明:
选择[…]
集成不同的配置部分,因此可以进行广泛的更改。例如,在本例中,有不同的颜色。<;value>;.conf
部分可以激活不同的颜色方案shadow
添加一个覆盖,在本例中,该覆盖将在hide
和dock
之间更改笔记本电脑栏的模式
安装
$ pip install i3configger
有关更多详细信息和不同的安装方式,请参见文档。
i3项目的一些启示
我也希望在这个项目中注意到:
< Buff行情>- 从不中断配置文件或现有工作流。中断更改需要主版本凹凸(v4→v5)。
- 保持低心理复杂度:一旦你知道i3的主要功能,其他功能应该很容易理解。
- 只添加有利于许多人的功能,而不是不遗余力地支持很少使用的工作流。
- 只支持记录的行为。清晰的文档是投稿的必要条件。
更改日志
0.9.1.post1(永远不要太晚才弄糟变更日志)-2018-12-28
固定
- 损坏的更改日志
0.9.1(从不迟于犯愚蠢的错误)-2018-12-28
固定
- 执行命令时由于忘记显式self而崩溃
0.9.0(新的开始)-2018年12月19日
添加
- 如果有意义,可以在i3config.json中更改命令行设置的默认值(配置中的命令行覆盖设置)
- 使状态命令可配置(用于刷新)
- 用于IPC配置的关闭开关(便于测试)
- 主要cli功能的功能测试
更改
- 使python版本与arch系统python保持同步:用python 3.7测试
- 打破i3configer.json中的更改-查看示例以了解不同之处。最简单的升级方法是将旧配置移到一边,运行i3configger生成新的默认配置,并从旧配置中添加设置。
- 术语:i3status->;i3bar
- 术语:值->;选择
- 内部现代化和重构
固定
- 在"选择下一个/上一个"中错误地使用了"反转"
已删除
- 不同配置的选项没有实际用途,而且会使事情变得不必要地复杂
0.8.0(命名困难)-2017-06-20
更改
- i3bar键的名称固定为
i3bar
-无需配置
固定
- 如果尚未生成i3bar配置文件,则不要崩溃
- 术语i3状态->;i3bar
0.7.7(只是越来越好)-2017-06-16
添加
- 使用任意数量的间接指令解析变量
- 如果解决失败,则给出有关失败路径的正确反馈
- 配置中断时,更好的错误处理/通知功能
- 上下文解析测试
已修复
- 监视过程不再崩溃,而是提供正确的反馈
- 如果在没有默认in.messages.json的情况下切换,则不会崩溃
0.7.6(魔鬼在细节中)-2017-06-11
更改
- 如果只包含set语句,则不要将partial添加到config中
- 从部分的开头和结尾删除空行
0.7.5(是时候制作一个git aur了?)-2017年6月11日
更改
- 如果未安装i3,则进行更宽容的检查-用于在pkgbuild之后测试完整运行
0.7.4(包装有趣,适合测试)-2017-06-11
更改
- 改进IPC处理-修复设置方法太迟
0.7.3(做正确的事)-2017-06-11
已修复
- 使用实际的partials path进行初始化,而不是假设config path==partials path的父路径
0.7.2(需要速度)-2017-06-11
更改
- 通过将非常昂贵的版本回迁到一个只在真正需要版本时调用的函数中,减少几百毫秒的启动时间。
- 在用户使用不存在的命令时帮助他们
- 消除邮件中不必要的副作用
- 当config.d已经存在,但还不存在i3configger.json时,将立即自动创建它
- 更好的示例/测试
0.7.1(伟大的包装冒险开始)-2017-06-10
更改
- (内部)另一个inotify库中的供应商,该库使为archlinux打包变得更容易
0.7.0(比抱歉更安全)-2017-06-10
更改
- 如果用户文件不存在,请始终创建该文件的备份。不要在以后的版本中删除它,以确保在需要时始终可以返回到旧文件,即使它们没有外部备份或配置管理。
0.6.0(指挥与征服)-2017-06-10
已修复
- 上下文合并的顺序错误(set在所有情况下都不起作用)
添加
- 新命令:shadow-shadow在
i3configer.json中任意输入
- 新命令:merge-将a
.json
文件合并到.messages.json
- 新命令:prune-merge的反面:删除
.messages.json中给定的.json
文件中的所有键
更改
- 将包含冻结消息的文件从
.state.json
重命名为.messages.json
0.5.3(亲吻)-2017-06-09
更改
- 数据元素火箭科学发布过程
- 更改工具说明
0.5.2(正确释放是硬的)-2017-06-09
已修复
- 错误的更改日志:)
0.5.1(也许我应该测试更多)-2017-06-09
已修复
- #4修复监视和守护程序模式
0.5.0(中途)-2017-06-08
添加
- 正确的文档位于http://oliver.bestwalter.de/i3configer/" rel="nofollow">http://oliver.bestwalter.de/i3configer/
- 初始化时将用户或默认配置复制到
config.d
删除
- 行尾注释不再受支持(可能有太多的错误-需要某种形式的解析才能使其工作->;不值得使用模糊功能)
更改
- 评论不再从构建中删除
- 默认情况下,通知处于关闭状态:cli arg从
--no notify-
更改为--notify
已修复
- 检查形态带有
i3-c
的ig不起作用,因为-c
(small c)未被传递,传递到新配置的路径被静默忽略,而活动配置被选中
0.4.4(我并不孤单)-2017-06-05
已修复
- #2-如果不使用i3status,则失败。通过使刷新调用忽略任何错误进行修复-不太好,只是一个快速修复。
0.4.3-(夜间狗的好奇事件)-2017-06-04
添加
- 用作测试用例的示例
已修复
- 关于选择的一些小修正
0.4.2(答案)-2017-06-03
基本实现
- 构建主配置,一个或多个i3status配置来自同一个源
- 变量的处理比i3稍微智能一些(分配给其他变量的变量被解析)
- 行末注释是可能的(在构建时删除)
- i3status配置中的变量也会被解析(设置在源中的任何位置)
- 更改完成后重新加载或重新启动i3(使用
i3 msg
) - 创建并激活新配置时通知(使用
notify send
) - 基于文件名中的键值对呈现部分的简单方法
- 通过发送消息更改配置的简单方法
- 将配置构建为一次性脚本或监视更改
- 向监视i3configer进程发送消息
- 如果新呈现的配置
i3-c失败
,将保留旧配置,不会造成任何损害
i3bar
-无需配置
i3configer.json中任意输入
- 新命令:merge-将a
.json
文件合并到.messages.json
- 新命令:prune-merge的反面:删除
.messages.json中给定的.json
文件中的所有键
.state.json
重命名为.messages.json
config.d
--no notify-
更改为--notify
i3-c
的ig不起作用,因为-c
(small c)未被传递,传递到新配置的路径被静默忽略,而活动配置被选中i3 msg
)notify send
)i3-c失败
,将保留旧配置,不会造成任何损害注意:格式基于:保留更改日志项目遵循语义版本控制