Mittwoch, 26. Oktober 2011

Der schöne sudo-Dialog mit Ubuntu & GNOME3 - pkexec

Manche Anwendungen möchte man einfach als root starten. Beispielsweise benötige ich einen zweiten Texteditor (Gedit) mit root-Rechten um bequem Systemeinstellungen zu ändern.

Bisher habe ich diese Anwendungen unter Gnome 2 und 3 mit gksudo gestartet. Dazu habe ich die Datei gedit-root.desktop angelegt:

[Desktop Entry]
Name=gedit (root)
GenericName=Text Editor (root)
Comment=Edit text files
Exec=gksodu /usr/bin/gedit
Terminal=false
Type=Application
StartupNotify=true
MimeType=text/plain;
Icon=accessories-text-editor
Categories=GNOME;GTK;Utility;TextEditor;
X-GNOME-DocPath=gedit/gedit.xml
X-GNOME-FullName=Text Editor (root)
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gedit
X-GNOME-Bugzilla-Component=general
X-GNOME-Bugzilla-Version=3.0.0
X-GNOME-Bugzilla-ExtraInfoScript=/usr/share/gedit-2/gedit-bugreport
X-Ubuntu-Gettext-Domain=gedit

Der Dialog zur Autorisierung sieht dann ähnlich wie dieser aus:


Startet man unter GNOME 3 Anwendungen wie synaptic, fällt sofort der neue Dialog auf um diese Anwendung als root zu auszuführen.


Dieser Dialog wird mit dem Befehl pkexec aufgerufen. In der Datei gedit-root.desktop wird der Aufruf wie folgt geändert:

Exec=pkexec "/usr/bin/gedit"

Das genügt jedoch noch nicht ganz. Es muss noch eine Policy-Datei für den Aufruf angelegt werden (siehe http://hal.freedesktop.org/docs/polkit/pkexec.1.html). Diese Datei sieht dann wie folgt aus:



 
  Run Gedit as root
  Gedit als root starten
  Authentication is required to run Gedit
  Authorisierung ist erforderlich um Gedit zu starten
  gedit
  
  
   auth_admin
   auth_admin
   auth_admin
  

  /usr/bin/gedit
  true
 

Der Name der Datei ergibt sich aus der action id und der Endung policy. Sie wird dann unter "/usr/share/polkit-1/actions/de.aonnet.pkexec.gedit.policy" gespeichert.

Jetzt funktioniert der pkexec Aufruf und es erscheint der gewünschte Dialog:


Mittwoch, 19. Oktober 2011

Epiphany Webanwendungen mit eigenen Icons

Mit dem GNOME Browser Epiphany können Webanwendungen als eigene Anwendungen bereitgestellt werden. Diese können dann wie normale Anwendungen in einem eigenene Fenster gestartet werden (siehe Anmerkungen zur GNOME-Veröffentlichung 3.2). Für mich ist das zum Beispiel bei Google+ interessant, denn ich möchte Google+ die ganze Zeit unabhängig vom Browser (und Abstürzen) laufen lassen.

In Ubuntu 11.10 muss der Browser Epiphany 3.2.0 nachinstalliert werden. Das ist beispielsweise aus dem WebUpd8 GNOME 3 PPA möglich (siehe Things To Tweak After Installing Ubuntu 11.10 Oneiric Ocelot).

sudo add-apt-repository ppa:webupd8team/gnome3
sudo apt-get update
sudo apt-get install epiphany-browser

Dann Epiphany öffnen, gewünschte Webseite aufrufen und als Webanwendung speichern (Datei -> "Als Webanwendung speichern"). Der Name der neuen Anwendung kann jetzt geändert werden, das Icon leider nicht. Dies kann aber nach dem Speichern manuell erfolgen.


Ersteinaml ein passendes Icon besorgen (für Google+ zum Beispiel hier) und speichern. Jetzt genügt es folgendes Icon auszutauschen:


<USER_HOME>/.gnome2/epiphany/app-epiphany-<NAME_DER_ANWENDUNG>-<UUID>/app-icon.png


Das Ergebnis sieht in GNOME 3.2 so aus:


Die "Anwendung" Google+ kann jetzt wie jede andere Anwendung gestartet werden.