Dieser Artikel wurde von tuxorials.de (Dokuwiki) hierher migriert! Mögliche Darstellungsfehler bitte ich zu entschuldigen.

Die Gnome Shell, als neue Oberfläche des Gnome Desktops, erlaubt es durch Plugins erweitert zu werden. Diese Plugins werden in Javascript entwickelt und können die Funktionen der Gnome-Shell sehr stark modifizieren. Ein Problem, welches in der Version 3.0 besteht, ist der sehr restriktive Check auf die im Plugin angegebene Gnome-Shell-Version, was bei einem Update der Gnome Shell dazu führt, dass die Plugins nicht mehr geladen werden. Eine Lösung für dieses Problem liefert dieser Beitrag.

Gnome Shell Extensions bestehen aus einem Verzeichnis mit einem eindeutigen Namen, sowie zwei Dateien extension.js und metadata.json. Erweiterungen können von jedem Nutzer im Verzeichnis ~/.local/share/gnome-shell/extensions/ installiert werden, wobei nach der Installation die Gnome-Shell neu gestartet werden muss (Drücken Sie STRG-F2 und geben Sie dort „r“ ein).

Nachfolgend ist als Beispiel eine metadata.json dargestellt, welche der Pidgin-Integration der Gnome-Shell entnommen ist:

{
 "uuid": "pidgin@gnome-shell-extensions.gnome.org",
 "name": "Pidgin IM Integration",
 "description": "Display Pidgin chats as notifications in the Shell message tray.",
 "shell-version": [ "3.0.2" ],
 "localedir": "/usr/share/locale",
 "url": "https://github.com/kagesenshi/gnome-shell-extensions-pidgin"
}

Wie schwer zu übersehen ist, steht dort die Gnome-Shell-Version hart codiert und die Shell überprüft diese Angabe auch sehr genau, was ein wirkliches Problem darstellt.

Die Lösung für dieses Problem ist folgendes Script, welches durch einen Eintrag in die Datei /etc/rc.local beim Starten des X-Servers ausgeführt wird und die Versionen aller installierten Plugins auf die aktuell installierte Gnome-Shell-Version korrigiert.

update_extension_version.sh
#!/bin/bash
#
# Script, welches die Gnome-Shell-Version in den Erweiterungen auf
# die aktuell installierte Version updatet. 
#
# Autor: Philipp Böhm
# URL: http://www.tuxorials.de
# Lizenz: GNU General Public License v2
# Lizenztext: http://www.gnu.org/licenses
# 
VERSION=`gnome-shell --version | cut -d " " -f3`
 
USER=philipp
cd /home/$USER/.local/share/gnome-shell/extensions
 
for file in `find -L .  -name metadata.json`
do
    sed -i " s/.*shell-version.*/ \"shell-version\": [ \"$VERSION\" ],/ " $file
done