Własne skróty klawiaturowe oraz kontrola okien z poziomu terminala w Ubuntu

Słowa kluczowe: skróty klawiaturowe, kontrola okien, słownik, terminal, skrypt, shell, bash, Ubuntu

Artykuł przedstawia sposób rozwiązania problemu wywoływania i ukrywania programu słownika ukrytego pod ikoną na tacce systemowej poprzez skrót klawiaturowy skojarzony z przygotowanym skryptem basha.

Przypisywanie własnych skrótów klawiaturowych do zaplanowanych przez użytkownika akcji (np. uruchomienie określonego programu) w systemie Ubuntu jest możliwe dopiero po zainstalowaniu xbindkeys. Warto również doinstalować wersję okienkową tego programu:

sudo apt-get install xbindkeys xbindkeys-config

Manipulację oknami (zmiana rozmiaru, dekoracji, itd.) z poziomu terminala Ubuntu umożliwia program wmctrl. Aplikacja dostępna jest w repozytoriach:

sudo apt-get install wmctrl

Program wmctrl wywoływany jest bezpośrednio z linii poleceń (przykłady). Sterowanie oknami za pomocą skryptów napisanych w specjalnym języku umożliwia devilspie (również dostępny w wersji okienkowej). Warto zainteresować się aplikacją xmacro, która pozwala nagrywać i odtwarzać zachowanie klawiatury i myszki, co w połączeniu z wyżej przedstawionymi programami pozwala na całościowe sterowanie systemem okienkowym.

Niestety wmctrl nie ma dostępu do okien ukrytych na tacce systemowej (system tray, pasek systemowy). Ukrywanie i przywracanie aplikacji do i z paska systemowego umożliwia konsolowy program xtoggle opublikowany na forum Ubuntu. Program xtoggle nie jest dostępny w repozytoriach, należy go skompilować z dostępnych źródeł. Po rozpakowaniu plików wystarczy wpisać make w terminal w katalogu z plikami. Skompilowany xtoggle należy przenieść do /usr/local/bin poleceniem wykonanym w katalogu z programem:

sudo mv xtoggle /usr/local/bin

Szukając słowników polsko-* dla Ubuntu nie wymagających dostępu do Internetu najlepszą propozycją jest prawdopodobnie Kydpdict. Jest to nakładka na słowniki wydane przez YDP: słownik języka angielskiego Collinsa, niemieckiego Langenscheidt oraz PWN Oxford i SAP. Program należy skompilować z dostępnych źródeł lub posłużyć się przestarzałym pakietem DEB dla dystrybucji Ubuntu Dapper Drake (6.06). Kydpdict do kompilacji wymaga bibliotek Qt w odpowiedniej wersji, proces kompilacji opisano na polskim forum Ubuntu.

Skompilowany program został umieszczony w /usr/local/bin pod nazwą kydpdict.

Uruchomianie program słownika Kydpdict będzie kontrolowane przez skrypt, który z kolei będzie wykonywany po wciśnięciu ustawionej kombinacji klawiszy. W /usr/local/bin należy stworzyć plik o nazwie kydpdict-hotkey o zawartości:

#!/bin/bash
# Toggle kydpdict window on hotkey specified in xbindkeys config.
 
WINTITLE="Kydpdict"
PROGNAME="/usr/local/bin/kydpdict"
 
if [ `ps -ef | grep -wce $PROGNAME` -gt 1 ]
then
	xtoggle --lookup_class $WINTITLE
	xtoggle --restore_all
	wmctrl -a "$WINTITLE"
else
	$PROGNAME
#	wait 1
	xtoggle --lookup_class $WINTITLE
fi
 
exit 0

następnie nadać odpowiednie prawa stworzonemu plikowi:

sudo chmod +x /usr/local/bin/kydpdict-hotkey

Ostatnim krokiem jest konfiguracja skrótu klawiaturowego w xbindkeys. W tym celu należy wpisać w terminalu:

xbindkeys-config

Po utworzeniu nowego skrótu kliknięciem na przycisk "New" należy wybrać "Get Key", wprowadzić skrót klawiaturowy, następnie w pole "Action" wpisać /usr/local/bin/./kydpdict-hotkey i zatwierdzić zmiany przyciskiem "Save & Apply & Exit". Plik z ustawieniami skrótu zostanie zachowany pod nazwą .xbindkeysrc w katalogu domowym (wskazywanym przez zmienną środowiskową $HOME). Po wybraniu z menu System/Preferencje/Sesje można ustawić automatyczny start xbindkeys wpisując w pole "Polecenie":

xbindkeys -f $HOME/.xbindkeysrc

Od tego momentu wciśnięcie zdefiniowanego w ustawieniach xbindkeys-config skrótu klawiaturowego pokaże okno słownika, kolejne wciśnięcie kombinacji schowa to okno do ikony na tacce systemowej.

Przedstawione rozwiązanie jest doraźne. Okno słownika można zamknąć również przez ESC lub klawiszem myszy, jednak wtedy nie będzie możliwa dalsza kontrola z poziomu skrótu klawiaturowego.

Valid XHTML 1.0 Strict