Własne aktywatory w Unity

Środowisko Unity w Ubuntu wprowadziło nowe pojęcie – aktywatory. Jest to menu, które wyświetla się po kliknięciu prawym przyciskiem myszy na dowolną ikonę na bocznym pasku. Dzięki aktywatorom, możemy tworzyć przyciski o nawet bardzo zaawansowanych funkcjach takich jak pokazywanie poczty, automatyczna instalacja aktualizacji lub proste typu uruchamianie programu. Owy artykuł pokaże, jak tworzyć takie przyciski.

Aktywatory występują wraz ze środowiskiem graficznym Unity, które znajduje się w Ubuntu od wersji 11.04
UWAGA !!! Proszę zwracać uwagę na wielkość liter oraz na odstępy. Są one bardzo ważne.

Przykładowy kod ikony z aktywatorem wygląda tak:

[Desktop Entry]
Name=Katalog domowy oraz dodatkowe aplikacje
Exec=nautilus /home/morfeusz888
Icon=applications-utilities.svg
Type=Application
StartupNotify=true
Categories=Network

X-Ayatana-Desktop-Shortcuts=TagsAplikacje;Clementine;Desktop;Filezilla;Calc;Allname;Vbox;Shutter;Gimp;Meld;Xchat;Mcuser;Mcroot;TagsManager;Update;Synaptic;Monitor;Monitorall;Hdd;Clearos;TagsMount;Mountnfs;

[TagsAplikacje Shortcut Group]
Name=------Aplikacje------
Exec=
TargetEnvironment=Unity

[Clementine Shortcut Group]
Name=Clementine
Exec=clementine
TargetEnvironment=Unity

[Desktop Shortcut Group]
Name=Przeglądarka pulpitów
Exec=vinagre
TargetEnvironment=Unity

[Filezilla Shortcut Group]
Name=Filezilla
Exec=filezilla
TargetEnvironment=Unity

[Calc Shortcut Group]
Name=Kalkulator
Exec=gcalctool
TargetEnvironment=Unity

[Allname Shortcut Group]
Name=Masowa zmiana plików
Exec=pyrenamer
TargetEnvironment=Unity

[Vbox Shortcut Group]
Name=Wirtualizacja
Exec=virtualbox
TargetEnvironment=Unity

[Shutter Shortcut Group]
Name=Shutter
Exec=shutter
TargetEnvironment=Unity

[Gimp Shortcut Group]
Name=Gimp
Exec=gimp
TargetEnvironment=Unity

[Meld Shortcut Group]
Name=Porównaj pliki
Exec=meld
TargetEnvironment=Unity

[Xchat Shortcut Group]
Name=Xchat
Exec=xchat
TargetEnvironemt=Unity

[Mcuser Shortcut Group]
Name=MC (user)
Exec=gnome-terminal -e mc
TargetEnvironment=Unity

[Mcroot Shortcut Group]
Name=MC (root)
Exec=/home/morfeusz888/mcroot.sh
TargetEnvironment=Unity

[TagsManager Shortcut Group]
Name=------Zarządzanie systemem------
Exec=
TargetEnvironment=Unity

[Update Shortcut Group]
Name=Aktualizacja oprogramowania
Exec=update-manager
TargetEnvironment=Unity

[Synaptic Shortcut Group]
Name=Synaptic
Exec=gksudo synaptic
TargetEnvironment=Unity

[Monitor Shortcut Group]
Name=Monitor systemu (htop)
Exec=gnome-terminal -e htop
TargetEnvironment=Unity

[Monitorall Shortcut Group]
Name=Dokładny monitor systemu
Exec=gnome-system-monitor
TargetEnvironment=Unity

[Clearos Shortcut Group]
Name=Oczyszczanie systemu
Exec=/home/morfeusz888/bleachbit.sh
TargetEnvironment=Unity

[TagsMount Shortcut Group]
Name=------Montowania------
Exec=
TargetEnvironment=Unity

[Mountnfs Shortcut Group]
Name=Montowanie NFS
Exec=/home/morfeusz888/mountnfs.sh
TargetEnvironment=Unity

Ale po kolei. Główna sekcja oznaczona jest jako:

[Desktop Entry]

W niej wpisujemy to, co ma się stać jeżeli klikniemy na przycisk. Czy ma się uruchomić nautilus,, czy program lub coś innego. Podstawowe argumenty w tej sekcji to:

Name=Katalog domowy oraz dodatkowe aplikacje
Exec=nautilus /home/morfeusz888
Icon=user-home
Type=Application
StartupNotify=true
Categories=Network
Name=

Tekst, który ukaże się jak najedziemy kursorem na ikonę.

Exec=

Polecenie, które ma być wykonane gdy klikniemy na przyciskiem.

Icon=

Nazwa ikony, która będzie wyświetlana. Wartość tą można pominąć, lecz wtedy będzie wyświetlana ikona pytajnika co nie za ładnie będzie się prezentowało.

Type=

Typ aktywora.

StartupNotify=true/false

Ustalamy, czy ma być powiadomienie o uruchamianiu aplikacji. Powiadomienie wygląda tak, iż podczas uruchamiania aplikacji ikona „pulsuje”. Po uruchomieniu świeci „światłem ciągłym.”

Categories=

Kategoria.

Ta sekcja jest podstawowa i ona zawsze musi być pierwsza.

Gdy chcemy zrobić również bardziej rozbudowany aktywator, to będą nam potrzebne kolejne argumenty:

X-Ayatana-Desktop-Shortcuts=

Tutaj będą musiały być zawarte nazwy wszystkich grup. Później się wyjaśni o co chodzi.

[XXX Shortcut Group]
Name=Clementine
Exec=clementine
TargetEnvironment=Unity
XXX

Nazwa grupy.

Name=

Nazwa, jaka będzie wyświetlana w menu aktywatora.

Exec=

Polecenie, jakie ma być wykonane po kliknięciu.

TargetEnvironment=

Docelowe środowisko, czy w naszym przypadku Unity.

Może ze wstępu za wiele nie idzie zrozumieć, ale postaram się opowiedzieć to na przykładzie.

Piszemy własny aktywator

Napiszemy aktywator, który po naciśnięciu będzie przenosił nas do naszego zbioru plików muzycznych, a pod prawym przyciskiem myszy będzie umożliwiał uruchamianie aplikacji do odtwarzania muzyki. Do dzieła.

Najpierw zajmiemy się kliknięciem. Otwieramy zatem edytor tekstu i piszemy:

[Desktop Entry]
Name=Moja muzyka

Wyświetlają nazwę już mamy. Teraz musimy sprawić, aby po kliknięciu uruchomił się nautilus od razu w katalogu Muzyka. Piszemy więc:

Exec=nautilus /home/user/Muzyka

Teraz podajemy ikonę:

Icon=folder-music.svg

Ikony możemy wybrać ze wszystkich katalogów gdzie one się znajdują czyli:

/usr/share/pixmaps
/usr/share/icons

Nie musimy podawać lokalizacji. Wystarczy sama nazwa z rozszerzeniem.

Type=Application

Ja wybiorę, że mam być informowany o uruchamianiu:

StartupNotify=true

Kategoria niech będzie aplikacje:

Categories=Application

Całość ma wyglądać tak:

[Desktop Entry]
Name=Muzyka
Exec=nautilus /home/user/Muzyka
Icon=folder-music.svg
Type=Application
StartupNotify=true
Categories=Application
UWAGA !!! ABY PLIK ZADZIAŁAŁ, MUSIMY GO ZAPISAĆ W KATALOGU DOMOWYM UŻYTKONIKA !!!

Ok. Mamy podstawowy kod. Teraz zapisujemy plik z rozszerzeniem .desktop

Jest to ważne, gdyż innego rozszerzenie pasek Unity nie przyjmie. Po zapisaniu klikamy i przytrzymujemy lewy przycisk myszki i przeciągamy plik na boczny pasek. Upuszczamy lewy przycisk myszy i powinien się o na nim zaczepić. Efekt końcowy ma wyglądać tak:

Klikamy i powinien uruchomić się nam nautilus z folderze muzyka. Jeżeli tak się stało, to wszystko mamy dobrze.

Gdybyśmy popełnili podczas pisania błąd krytyczny, czyli w ważnym poleceniu popełnili literówkę np. zamiast Desktop napisalibyśmy Deskto to pasek boczny nie przyjmie pliku. Druga ważna sprawa to jeżeli będziemy wprowadzać modyfikacje do pliku, a będzie on przyczepiony, to nie zobaczymy efektów. Musimy wprowadzić zmiany, zapisać plik, odczepić aktywator od paska i przyczepić go ponownie. Teraz też tak zrobimy. Klikamy prawym przyciskiem myszy na naszą ikonę i z menu aktywatora wybieramy Pozostaw w obszarze uruchamiania. Ikona powinna nam zniknąć.

Dobra. Teraz z lekka rozbudujemy sobie menu aktywatora. Do celów testowych załóżmy, że chcemy uruchamiać takie programy jak Banshee i Clementine.

Do naszego pliku pod całym aktualnym kodem piszemy:

X-Ayatana-Desktop-Shortcuts=

i póki co zostawiamy.

Pod spodem piszemy:

[Clementine Shortcut Group]
Name=Clementine
Exec=clementine
TargetEnvironment=Unity

[Banshee Shortcut Group]
Name=Banshee
Exec=banshee
TargetEnvironment=Unity

Teraz nazwy tych grup dodajemy do X-Ayatana-Desktop-Shortcuts czyli:

X-Ayatana-Desktop-Shortcuts=Clementine;Banshee;

Aby dana grupa była widoczna musi ona być dodana do powyższej linijki.

Całość ma wyglądać tak:

[Desktop Entry]
Name=Muzyka
Exec=nautilus /home/user/Muzyka
Icon=folder-music.svg
Type=Application
StartupNotify=true
Categories=Application

X-Ayatana-Desktop-Shortcuts=Clementine;Banshee;

[Clementine Shortcut Group]
Name=Clementine
Exec=clementine
TargetEnvironment=Unity

[Banshee Shortcut Group]
Name=Banshee
Exec=banshee
TargetEnvironment=Unity

Ok zapisujemy i przeciągamy plik na boczny panel. Gdy się ikona „zakotwiczy” to klikamy prawym przyciskiem myszy i naszym oczom powinno pojawić się coś takiego:

Aby sprawdzić, czy aplikacja się uruchomi wystarczy kliknąć na nazwę.

Skąd brać polecenia ?

Zapewne zastanawiacie się jak zgadnąć jakim poleceniem uruchamia się daną aplikację. Otóż z… Centrum oprogramowania Ubuntu.

Załóżmy przykładowo, że chcemy się dowiedzieć jakim poleceniem odpalić terminal. Wchodzimy zatem do Centrum oprogramowania Ubuntu, wpisujemy w wyszukiwarce Terminal i klikamy na Więcej informacji.

Pojawią nam się pewnie informacje o aplikacji. Nas interesuje to:

W nawiasie podane jest polecenie, którym uruchomimy terminal.

A aplikacje konsolowe i skrypty ?

Polecenie Exec umożliwia uruchamianie plików sh oraz aplikacji konsolowych. Jedyny myk może się pojawić w niektórych programach takich jak np. BleachBit. Gdy wpiszemy warunek gksudo bleachbit argument Exec uwzględni tylko gksudo a bleachbit pominie, przez co aplikacja nie uruchomi się. W takim wypadku pozostaje napisać tylko skrypt sh. Jak się go pisze ? Bardzo prosto. Przykładowo:

#!/bin/bash
gksudo bleachbit

Zapisujemy z rozszerzeniem .sh, nadajemy mu prawa do uruchamiania poleceniem:

chmod +x

w argumencie Exec podajemy lokalizację sh pliku i ma działać.

Jak widzimy, Unity jest bardzo konfigurowalne, ale trzeba niekiedy pobawić się w takie „zawiłości” . Z czasem być może pojawią się graficzne aplikacje umożliwiające tworzenie aktywatorów w łatwiejszy sposób (sam myślę nad taką jedną :-)).