K čemu to je dobré? No, fantazii se meze nekladou, já to používám například na:
- změnu pozadí
- záložky Firefoxu
- záložky Thunaru (Nautilu)
- killnutí nejvíce vytěžujících aplikací (CPU, RAM)
- rychlý přístup k TODO souborům
- rychlý přístup k dokumentaci (v
/usr/share/doc)
Kde je získat
Po internetu se nějaká toulají. Mohlo by jich sice být víc, ale když se hledá, najde se ledacos. Některé zajímavé odkazy jsou pod článkem.
Mám v úmyslu dát k dispozici má pipe-menu (ono ohlášené překvapení), ale bohužel vůbec nebyl čas je dopsat, takže je dodám v pozdějších dílech seriálu.
Jak je psát
Pište si je jak chcete, ale pokud chcete, aby vám to chodilo, mělo by to mít zhruba takovýto výstup:
<openbox_pipe_menu>
<menu id="jedinecny_identifikator" label="Linux">
<item label="Root">
<action name="execute">
<execute>firefox www.root.cz</execute>
</action>
</item>
<item label="Slashdot">
<action name="execute">
<execute>firefox www.slashdot.org</execute>
</action>
</item>
</menu>
<menu id="jedinecny_identifikator_II" label="Ruby">
<item label="The Pragmatic Programmers">
<action name="execute">
<execute>firefox www.ruby-doc.org/docs/ProgrammingRuby</execute>
</action>
</item>
(...)
</menu>
</openbox_pipe_menu>
Jdeme na to
Asi není tak úplně nejlepší psát je hned v Céčku, Fortranu nebo assembleru, nejideálnější bude sáhnout po něčem jako je Ruby, Python a podobně. Kdyby to náhodou (nedej Tuxi!) někoho napadlo – rozhodně ne bash, tyhle skripty už jsou nad jeho schopnosti.
Ale abych tu o nich jen nežvanil, zkusíme si rovnou jedno drobné napsat. A použijeme třeba Ruby. Budou to záložky Nautilu, Thunaru a podobných GTK filemanagerů.
Jediné, co potřebujeme vědět, že záložky jsou uloženy v souboru ~/.gtk-bookmarks. Tedy samozřejmě pokud jste si nějaké vytvořili.
#!/usr/bin/env ruby
# Vyberte filemanager.
# Nautilus je nutné spouštět s volbou --no-desktop,
# jinak vám nastaví plochu z Gnome, což má mj. za následek,
# že se vůbec nedostanete k menu (nemáte-li ho namapované
# na nějaké klávesové zkratce) a budete muset nautilus killnout.
program = "thunar"
#program = "nautilus --no-desktop"
# otevření souboru se záložkami
# (ENV je hash proměnných prostředí, jako je třeba HOME nebo CFLAGS)
gtk_file = File.open("#{ENV['HOME']}/.gtk-bookmarks", "r")
# tag počátku pipe-menu
puts "<openbox_pipe_menu>"
# Cyklus prolézá řádky souboru, vytahuje data
# a tiskne je na STDIN v námi zadané podobě
# Totéž dosáhneme zápisem "for line in gtk_file",
# nicméně v Ruby se zpravidla dává přednost zápisu
# metody each nebo jí podobných - inu Ruby
# je prostě vyloženě objektový jazyk.
gtk_file.each do
|line|
line.chomp! # odstranění znaku konce řádku
label = line.sub(/\w+:\/{2}/, '') # název bude bez "file://" na počátku
# jeden z možných zápisů stringu, ve kterém
# mají být interpretovány escape sekvence
# a vyhodnocovány kusy kódu v #{}
puts %Q{
<item label="#{label}">
<action name="Execute">
<execute>#{program} #{line}</execute>
</action>
</item>
}
end
# ukončovací tag
puts "</openbox_pipe_menu>"
Menu máme. Kromě uložení není od věci dát mu právo spuštění ( chmod +x gtk_menu.rb). Teď už stačí pouze zapsat do souboru menu.xml:
<menu execute="~/.config/openbox/gtk_menu.rb" id="gtk" label="GTK záložky"/>
Poslední věc, kterou je třeba udělat, je zavolání openboxové akce reconfigure (pravděpodobně máte v menu) a je hotovo. Jednoduché, že?
Příště
Původně jsem se chtěl věnovat jenom Openboxu jako samostatnému prostředí, ale protože Openbox můžete používat jako správce oken místo Metacity nebo KWin v Gnome či KDE, určitě toto téma aspoň naťuknu.