plotinus, 在每个现代GTK+应用程序中,都有一个可以搜索的命令选项板

分享于 

10分钟阅读

GitHub

  繁體 雙語
A searchable command palette in every modern GTK+ application
  • 源代码名称:plotinus
  • 源代码网址:http://www.github.com/p-e-w/plotinus
  • plotinus源代码文档
  • plotinus源代码下载
  • Git URL:
    git://www.github.com/p-e-w/plotinus.git
    Git Clone代码到本地:
    git clone http://www.github.com/p-e-w/plotinus
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/p-e-w/plotinus
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    只有一个复合物可以美观,没有任何零件,只有一个整体;
    这几个部分会有美丽的,而不是自己
    但是只有在一起工作才能给comely总计。
    然而,美丽中的美丽要求美丽的细节:
    它不能由丑陋构成;它的法律必须贯穿于整个。

    - Plotinus,Ennead

    Plotinus

    在每个现代GTK+应用程序中提供可以搜索的命令选项板


    你使用过 Sublime 还是文本"Atom 调色板命令"? 这是一个列表,编辑可以做的一切,在按键,找到你寻找的动作,只是键入几个字母。 它是你指尖的原始动力。

    Plotinus使你系统的每个应用程序的功耗为1 磅。 它通过扫描运行的应用程序来自动提取所有可用的命令,立即适应UI更改,只显示。 使用Plotinus需要对应用程序本身进行修改 !

    只要按 Ctrl+Shift+P (。配置电子邮件) 就可以了- 它很自然你很快就会知道如何没有它。

    Nautilus screencast

    gedit screencast

    安装

    先决条件

    要从源代码构建 Plotinus,你需要 Git,Vala和 GTK+ 3开发文件。 所有这些都可以在大多数现代Linux发行版中轻松获得:

    Fedora/RHEL/等等
    
    sudo dnf install git cmake vala gtk3-devel
    
    
    
    
    Ubuntu/Mint/Elementary/等等
    
    sudo apt-get install git cmake valac libgtk-3-dev
    
    
    
    

    建筑

    
    git clone https://github.com/p-e-w/plotinus.git
    
    
    cd plotinus
    
    
    mkdir build
    
    
    cd build
    
    
    cmake.. 
    
    
    make
    
    
    sudo make install
    
    
    
    

    在应用程序中启用 Plotinus

    由于 Linux 环境变量的复杂性和笨拙性,Plotinus目前没有自动启用。 在系统上为所有应用程序启用Plotinus的最简单方法是添加行

    
    GTK3_MODULES=[libpath]
    
    
    
    

    对于 /etc/environment,其中 [libpath] 是 ,绝对的路径,可以通过命令找到

    
    whereis -b libplotinus
    
    
    
    

    或者,你可以使用单独的应用程序来尝试 Plotinus,方法是使用

    
    GTK3_MODULES=[libpath] application
    
    
    
    

    从终端。

    配置

    可以在全局和每个应用程序中配置 Plotinus。 应用程序设置优先于全局设置。 在命令 below 中,[application] 可以是

    • default,在这种情况下,设置被全局应用,或者
    • 没有前导斜杠和所有其他斜杠的应用程序可执行文件的路径被句点( 比如 ) 替换。 /usr/bin/gedit -> usr.bin.gedit )。

    注意,相关路径是进程可执行插件的路径,它并不总是与启动的可执行程序相同。 例如所有的GNOME JavaScript应用程序都运行进程 /usr/bin/gjs

    启用/禁用命令选项板

    
    gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/[application]/enabled [true/false]
    
    
    
    

    更改键盘快捷键

    
    gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/[application]/hotkeys '[keys]'
    
    
    
    

    [keys] 必须是 gtk_accelerator_parse 所需格式的字符串 array,比如 ["<Primary><Shift>P","<Primary>P"] array 中的每个快捷方式都打开命令选项板。

    启用/禁用d 总线窗口注册

    
    gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/[application]/dbus-enabled [true/false]
    
    
    
    

    有关详细信息,请参阅以下部分。

    总线 API

    Plotinus为希望使用它的软件功能的开发人员提供了一个简单但完整的接口 API。 API包含两个方法,在 com.worldwidemann.plotinus的会话总线上公开:

    • GetCommands(window_path) -> (bus_name, command_paths)
      获取GTK+窗口的对象路径( 可以通过从Mutter窗口获取 比如 )meta_window_get_gtk_window_object_path 返回的对象路径,并返回引用从该窗口提取的命令的对象路径,以及它们注册的总线的NAME。
      这种机制与 behind 注册中心的 AppMenu有些类似,但是更轻量级,并且与兼容。 在使用这里方法之前,必须启用窗口注册

    • ShowCommandPalette(commands) -> (bus_name, command_palette_path)
      接受命令( 表单 (path, label, accelerators)的结构)的array 并打开显示这些命令的命令选项板窗口。 返回对象路径引用在返回的总线 NAME 上注册的控件对象,该对象为用户与窗口的交互提供信号。

    对这些方法的调用由收费的总线服务( ) 来处理,该服务可以

     
    plotinus
    
    
    
     

    示例

    下面的示例演示如何使用 python 中的d。 它们需要安装 pydbus,并运行 Plotinus d 总线服务。

    应用程序远程控制
    #!/usr/bin/env pythonimport sysfrom pydbus import SessionBus
    bus = SessionBus()
    plotinus = bus.get("com.worldwidemann.plotinus")
    bus_name, command_paths = plotinus.GetCommands(sys.argv[1])
    commands = [bus.get(bus_name, command_path) for command_path in command_paths]for i, command inenumerate(commands):
     print("[%d] %s -> %s"% (i, " -> ".join(command.Path), command.Label))
    index =raw_input("Number of command to execute: ")if index:
     commands[int(index)].Execute()

    在运行这里示例之前,请启用

    
    gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/default/dbus-enabled true
    
    
    
    

    然后,运行一个应用程序( 比如。 使用 Plotinus启用。 现在使用窗口对象路径作为参数运行脚本,i.e.

    
    ./application_remote_control.py/org/gnome/gedit/window/1
    
    
    
    
    应用程序启动器

    基于这个插件,使用'命令面板显示系统中可用的应用程序列表。

    #!/usr/bin/env pythonimport os, refrom pydbus import SessionBusfrom gi.repository import GLib, Gio
    applications = {}for app_info in Gio.AppInfo.get_all():
     categories = app_info.get_categories()
     if categories isNone:
     continue# Remove"%U" and"%F" placeholders command_line = re.sub("%w", "", app_info.get_commandline()).strip()
     app = (app_info.get_name(), command_line)
     for category in categories.split(";"):
     if category notin ["GNOME", "GTK", ""]:
     if category notin applications:
     applications[category] = []
     applications[category].append(app)
     breakcommands = []
    command_lines = []for category, apps insorted(applications.items()):
     for app insorted(apps):
     commands.append(([category], app[0], []))
     command_lines.append(app[1])
    bus = SessionBus()
    plotinus = bus.get("com.worldwidemann.plotinus")
    bus_name, command_palette_path = plotinus.ShowCommandPalette(commands)
    command_palette = bus.get(bus_name, command_palette_path)
    loop = GLib.MainLoop()defcommand_executed(index):
     os.system(command_lines[index])
    command_palette.CommandExecuted.connect(command_executed)defclosed():
     # Wait for CommandExecuted signal GLib.timeout_add(500, loop.quit)
    command_palette.Closed.connect(closed)
    loop.run()

    确认

    关于GTK+模块的文档基本上不存在。 如果没有 gtkparasitegnome-globalmenu,那么从地面上获取这个项目将是困难得多的事情。

    插件模块是从基本万神庙的安装程序库的中逐字复制的。

    Vala仍然是Linux桌面开发中最伟大的事情。

    Contributors总是欢迎。不过,在打开拉请求之前,请 file 描述你打算添加的内容,特别是对于新功能 ! 我想清楚我希望( 不希望) Plotinus是什么,所以讨论潜在的添加可以能帮助你避免重复和浪费工作。

    通过贡献,你同意将变更发布到与项目( 请参见下面) 相同的许可之下。

    许可证

    版权所有 © 2016 -2017 Philipp Weidmann ( pew@worldwidemann.com )

    发布在通用 public 许可证条款下,版本 3。


    COM  COMM  模式  Comma  搜索  GTK  
    相关文章