化合物だけが美しく、部分がないものはありません。そして全体だけです。
いくつかの部分には、それ自体ではなく美しさがあります。
しかし、協力して協力して快適な合計を与えるようにのみ。
しかし、総計の美しさは詳細に美しさを要求します:
それはugさから構築することはできません。その法律は全体を通して実行されなければなりません。
- プロティノス、最初のennead
崇高なテキストまたはアトムの「コマンドパレット」を使用しましたか?これは、編集者が行うことができるすべてのリストであり、キーのプレスで開くと、いくつかの文字を入力するだけで探しているアクションを見つけます。それはあなたの指先での生の力です。
Plotinusは、システム上のすべてのアプリケーション(つまり、GTK+ 3ツールキットを使用するアプリケーション)にそのパワーをもたらします。実行中のアプリケーションを内省し、UIの変更に即座に適応し、関連するアクションのみを表示することにより、利用可能なすべてのコマンドを自動的に抽出します。 Plotinusを使用するには、アプリケーション自体に変更を必要としません!
Ctrl+Shift+P (構成可能)を押すだけで、あなたはビジネスをしているので、あなたがそれなしでどのように住んでいるのかと思います。
ソースからplotinusを構築するには、Git、Cmake、Vala、およびGTK+ 3開発ファイルが必要です。これらはすべて、ほとんどの最新のLinux分布で簡単に取得できます。
sudo dnf install git cmake vala gtk3-devel
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
Linux環境変数を取り巻く複雑さと不器用さのため、Plotinusは現在自動的に有効になっていません。システム上のすべてのアプリケーションにPlotinusを有効にする最も簡単な方法は、ラインを追加することです
GTK3_MODULES=[libpath]
/etc/environmentへ、 [libpath]はlibplotinus.soの完全で絶対的なパスであり、コマンドを使用して見つけることができます
whereis -b libplotinus
または、個々のアプリケーションを使用してPlotinusを使用して試してみることができます
GTK3_MODULES=[libpath] application
端末から。
Plotinusは、グローバルでアプリケーションごとに構成できます。アプリケーション設定は、グローバル設定よりも優先されます。以下のコマンドでは、 [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 、例えば["<Primary><Shift>P", "<Primary>P"]によって予想される形式の文字列の配列でなければなりません。配列内の各ショートカットがコマンドパレットを開きます。
gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/[application]/ dbus-enabled [true/false]
詳細については、次のセクションを参照してください。
Plotinusは、独自のソフトウェアから機能を使用したい開発者に、シンプルだが完全なD-Bus APIを提供します。 APIは2つの方法で構成されており、 com.worldwidemann.plotinusのセッションバスで公開されています。
GetCommands(window_path) -> (bus_name, command_paths)
GTK+ウィンドウのオブジェクトパス( meta_window_get_gtk_window_object_pathを介してMutterウィンドウから取得できます)を取り、そのウィンドウから抽出されたコマンドを参照するオブジェクトパスの配列と、登録されているバスの名前と同様に戻ります。
この方法の背後にあるメカニズムは、UbuntuのAppmenuレジストラに多少似ていますが、Waylandとより軽量で互換性があります。この方法を使用する前に、ウィンドウ登録を有効にする必要があります。
ShowCommandPalette(commands) -> (bus_name, command_palette_path)
一連のコマンド(フォームの構造(path, label, accelerators) )を取得し、それらのコマンドを表示するコマンドパレットウィンドウを開きます。返されたオブジェクトパスは、ウィンドウとのユーザーインタラクションの信号を提供する返されたバス名に登録されているコントロールオブジェクトを参照します。
これらの方法への呼び出しは、Plotinus D-Busサービスによって処理されます。
plotinus
次の例は、PythonのD-Bus APIを使用する方法を示しています。 Pydbusをインストールする必要があり、Plotinus D-Busサービスを実行する必要があります。
#!/usr/bin/env python
import sys
from 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 in enumerate ( 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を有効にしてアプリケーション(GEDITなど)を実行します。次に、ウィンドウオブジェクトパスを引数として使用してスクリプトを実行します。
./application_remote_control.py /org/gnome/gedit/window/1
このArgosプラグインに基づいて、Plotinusのコマンドパレットを使用して、システムで利用可能なアプリケーションのリストを表示します。
#!/usr/bin/env python
import os , re
from pydbus import SessionBus
from gi . repository import GLib , Gio
applications = {}
for app_info in Gio . AppInfo . get_all ():
categories = app_info . get_categories ()
if categories is None :
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 not in [ "GNOME" , "GTK" , "" ]:
if category not in applications :
applications [ category ] = []
applications [ category ]. append ( app )
break
commands = []
command_lines = []
for category , apps in sorted ( applications . items ()):
for app in sorted ( 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 ()
def command_executed ( index ):
os . system ( command_lines [ index ])
command_palette . CommandExecuted . connect ( command_executed )
def closed ():
# Wait for CommandExecuted signal
GLib . timeout_add ( 500 , loop . quit )
command_palette . Closed . connect ( closed )
loop . run ()GTK+モジュールに関するドキュメントは、本質的に存在しません。 GTKPARASITEとGNOME-GLOBALMENUから学ぶことがなければ、このプロジェクトを地面から離すのはずっと難しいでしょう。
Cmakeモジュールは、小学校のPantheon-Installerリポジトリから逐語的にコピーされます。
ヴァラは、Linuxデスクトップ開発に依然として最も偉大なことです。
貢献者はいつでも大歓迎です。ただし、特に新しい機能については、プルリクエストを開く前に追加するものを説明する問題を提出してください!私は、私が望んでいること(そして望んでいない)であることについて明確なビジョンを持っているので、潜在的な追加を議論することは、あなたが重複と無駄な仕事を避けるのに役立つかもしれません。
貢献することにより、プロジェクトの残りの部分と同じライセンスの下で変更をリリースすることに同意します(以下を参照)。
Copyright©2016-2017 Philipp Emanuel Weidmann([email protected])
GNU General Public License、バージョン3の条件の下でリリース