Hanya senyawa yang bisa indah, tidak pernah ada bagian yang tanpa bagian; dan hanya secara keseluruhan;
Beberapa bagian akan memiliki keindahan, bukan dalam diri mereka sendiri,
tetapi hanya bekerja bersama untuk memberikan total yang indah.
Namun keindahan secara agregat menuntut kecantikan secara detail:
itu tidak dapat dibangun karena keburukan; Hukumnya harus berjalan di seluruh.
- Plotinus, ennead pertama
Sudahkah Anda menggunakan "Palet Perintah" Teks Sublime atau Atom? Ini adalah daftar segala sesuatu yang dapat dilakukan oleh para editor yang dibuka pada penekan tombol dan menemukan tindakan yang Anda cari hanya dengan mengetik beberapa huruf. Ini kekuatan mentah di ujung jari Anda.
Plotinus membawa kekuatan itu ke setiap aplikasi pada sistem Anda (yaitu, bagi mereka yang menggunakan toolkit GTK+ 3). Ini secara otomatis mengekstrak semua perintah yang tersedia dengan mengintrospeksi aplikasi yang berjalan, langsung beradaptasi dengan perubahan UI dan hanya menunjukkan tindakan yang relevan. Menggunakan Plotinus tidak memerlukan modifikasi pada aplikasi itu sendiri!
Cukup tekan Ctrl+Shift+P (dapat dikonfigurasi) dan Anda dalam bisnis - rasanya sangat alami Anda akan segera bertanya -tanya bagaimana Anda pernah hidup tanpanya.
Untuk membangun plotinus dari sumber, Anda memerlukan file pengembangan git, cmake, vala, dan gtk+ 3. Semua ini mudah diperoleh pada sebagian besar distribusi Linux modern:
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
Karena kompleksitas dan kecanggungan di sekitar variabel lingkungan Linux, Plotinus saat ini tidak diaktifkan secara otomatis. Cara termudah untuk mengaktifkan plotinus untuk semua aplikasi pada sistem adalah dengan menambahkan garis
GTK3_MODULES=[libpath]
ke /etc/environment , di mana [libpath] adalah jalur penuh dan absolut libplotinus.so , yang dapat ditemukan menggunakan perintah tersebut
whereis -b libplotinus
Atau, Anda dapat mencoba plotinus dengan aplikasi individual dengan menjalankannya
GTK3_MODULES=[libpath] application
dari terminal.
Plotinus dapat dikonfigurasi baik secara global maupun per aplikasi. Pengaturan aplikasi diutamakan daripada pengaturan global. Dalam perintah di bawah ini, [application] bisa menjadi keduanya
default , dalam hal ini pengaturan diterapkan secara global, atau/usr/bin/gedit -> usr.bin.gedit ). Perhatikan bahwa jalur yang relevan adalah jalur proses yang dapat dieksekusi , yang tidak selalu identik dengan yang dapat dieksekusi yang diluncurkan. Misalnya, semua aplikasi Gnome JavaScript menjalankan proses /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] Harus berupa array string dalam format yang diharapkan oleh gtk_accelerator_parse , misalnya ["<Primary><Shift>P", "<Primary>P"] . Setiap jalan pintas dalam array membuka palet perintah.
gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/[application]/ dbus-enabled [true/false]
Lihat bagian berikut untuk detailnya.
Plotinus menyediakan API D-Bus yang sederhana namun lengkap untuk pengembang yang ingin menggunakan fungsinya dari perangkat lunak mereka sendiri. API terdiri dari dua metode, diekspos di bus sesi di com.worldwidemann.plotinus :
GetCommands(window_path) -> (bus_name, command_paths)
Mengambil jalur objek dari jendela GTK+ (yang dapat dibayar dari jendela mutter melalui meta_window_get_gtk_window_object_path ) dan mengembalikan array jalur objek yang merujuk perintah yang diekstraksi dari jendela itu, serta nama bus yang terdaftar.
Mekanisme di balik metode ini agak mirip dengan Panitera AppMenu Ubuntu, tetapi lebih ringan dan kompatibel dengan Wayland. Pendaftaran jendela harus diaktifkan sebelum menggunakan metode ini.
ShowCommandPalette(commands) -> (bus_name, command_palette_path)
Mengambil array perintah (struct dari bentuk (path, label, accelerators) ) dan membuka jendela palet perintah yang menampilkan perintah tersebut. Jalur objek yang dikembalikan merujuk pada objek kontrol yang terdaftar pada nama bus yang dikembalikan yang memberikan sinyal pada interaksi pengguna dengan jendela.
Panggilan ke metode ini diproses oleh layanan Plotinus D-Bus, yang dapat dimulai dengan
plotinus
Contoh-contoh berikut menunjukkan cara menggunakan API D-Bus dari Python. Mereka membutuhkan Pydbus untuk diinstal dan layanan Plotinus D-Bus untuk dijalankan.
#!/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 ()Sebelum menjalankan contoh ini, aktifkan pendaftaran jendela dengan
gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/default/ dbus-enabled true
Kemudian, jalankan aplikasi (misalnya gedit) dengan Plotinus diaktifkan. Sekarang jalankan skrip dengan jalur objek jendela sebagai argumen, yaitu
./application_remote_control.py /org/gnome/gedit/window/1
Berdasarkan plugin Argos ini, menggunakan palet perintah Plotinus untuk menampilkan daftar aplikasi yang tersedia di sistem.
#!/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 ()Dokumentasi tentang modul GTK+ pada dasarnya tidak ada. Tanpa gtkparasite dan gnome-globalmenu untuk dipelajari, akan jauh lebih sulit untuk menyelesaikan proyek ini.
Modul CMake disalin dengan kata demi kata dari repositori Pantheon-Installer Elementary.
Vala masih merupakan hal terbesar yang pernah terjadi pada pengembangan desktop Linux.
Kontributor selalu diterima. Namun, silakan ajukan masalah yang menggambarkan apa yang ingin Anda tambahkan sebelum membuka permintaan tarik, terutama untuk fitur baru! Saya memiliki visi yang jelas tentang apa yang saya inginkan (dan tidak diinginkan) Plotinus, sehingga membahas penambahan potensial dapat membantu Anda menghindari duplikasi dan pekerjaan yang terbuang.
Dengan berkontribusi, Anda setuju untuk melepaskan perubahan Anda di bawah lisensi yang sama dengan sisa proyek (lihat di bawah).
Hak Cipta © 2016-2017 Philipp Emanuel Weidmann ([email protected])
Dirilis di bawah ketentuan Lisensi Publik Umum GNU, Versi 3