i3的最终diy状态线生成器

i3-dstatus的Python项目详细描述


i3wm的最终diy状态行生成器。

关于

i3 dstatus是i3的状态行生成器,您可以使用它来显示 您可能感兴趣的系统信息。i3附带i3status 这有很多限制。它没有插件接口。它没有 对事件的支持,并依赖于对其所有信息的轮询 使它在资源上出奇的繁重。它有一个奇怪的配置文件 使其难以配置的格式。

其他项目已经出现,以弥补这些弱点和许多 他们中的一个做得很好。I3dStand是用户想要更灵活的 可通过编辑配置中的选项实现的状态行 但是不需要学习复杂的插件api就可以创建 自定义状态行条目。

这是通过允许用户通过 进程间通信使用 DBUS。I3数据状态 公开一个dbus服务,您可以使用它简单地更新statusline 在几乎任何编程语言和任何过程中(甚至 在一个cron中!).

  • 不需要配置文件
  • 从多个进程更新状态行
  • 从任何语言更新statusline(甚至从命令行!)
  • 没有复杂的插件api可供学习

安装

i3 dstatus在PyPI上。

pip install i3-dstatus

用法

在条形图块中使用i3 dstatus作为状态命令,如下所示:

bar {
    status_command i3-dstatus clock
}

传递要作为运行方式运行的statusline生成器脚本的路径 I3数据状态的参数。传递相对路径将启动脚本 来自发电机路径的I3数据状态中包含的发电机。 使用绝对路径或a~/home相对路径将调用 合适的路径。块将按 发电机是在命令行上发出的。

配置

生成器脚本将查找配置的~/.i3-dstatus.conf。 选项。有关示例,请参见repo中的i3-dstatus.conf。这个 配置文件应该是单个yaml对象。(更多文档 来吧)。

更新状态行

dbus服务公开方法show_block,以更新 状态行。这个方法包含了大量的变体。传递一个对象 符合i3bar input protocol来显示块。

可以通过省略或设置“全文”成员来清除块 到空字符串。

可以从python脚本更新statusline。只需使用脚本 像这样:

fromdbus_next.aioimportMessageBusfromdbus_nextimportVariantbus=awaitMessageBus().connect()introspection=awaitbus.introspect('com.dubstepdish.i3dstatus','/com/dubstepdish/i3dstatus')obj=bus.get_proxy_object('com.dubstepdish.i3dstatus','/com/dubstepdish/i3dstatus')i3dstatus=obj.get_interface('com.dubstepdish.i3dstatus')awaiti3dstatus.call_show_block({'name':Variant('s','test'),'full_text':Variant('s','hello world')})

可以使用dbus绑定从任何语言更新statusline (几乎都是这样)。你甚至可以更新statusline 从命令行!

dbus-send --session \
    --dest=com.dubstepdish.i3dstatus \
    --type=method_call \
    /com/dubstepdish/i3dstatus \
    com.dubstepdish.i3dstatus.show_block \
    dict:string:string:name,test,full_text,'hello world'

贡献

请报告错误、请求功能、编写文档和添加 到i3dstatus/generators目录的生成器。i3 dstatus是一个社区 项目所以欢迎反馈!

许可证

此工作在FreeBSD许可证下可用(请参阅许可证)。

版权所有©2014,Tony Crisi

保留所有权利。

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

推荐PyPI第三方库


热门话题
java如何在jetty请求日志中添加milliscond字段?   java在使用Scanner类从文件读取信息时遇到问题   为什么。类不适用于泛型类型?   SQLite插入上的java空指针异常   java能告诉我们Guava缓存是在禁用统计数据的情况下构建的吗?   java在应用程序中使用常量   java无法使用AutoIT和Selenium Webdriver在所需位置/文件夹保存图像   java如何在jtable中更新jprogress栏   java是比较给定日期和当前日期(在给定时区中没有时间段)的最佳方法   安卓代码中的java错误   java无法访问实体类中的字段   java如何在tomcat中处理三个JDBC连接池?   java无法使用Spring Security保护AngularJS页面   如何在没有TCP/IP协议栈的情况下用Java发送以太帧