Geany mit GTK2

Ab Debian 10 Buster wird Geany mit GTK3 bereitgestellt. Deshalb kann es sinnvoll sein, die alte Version mit GTK2 auf der langsamen Raspberry Pi Zero zu installieren.

Beschreibung

Beim Wechsel von Raspbian mit Basis Debian 9 Stretch auf Raspbian mit Debian 10 Buster gab es auch einen Wechsel bei der Entwicklungsumgebung Geany. Statt der Version 1.29 mit GTK2, wird nun die Version 1.33 mit GTK3 zur Verfügung gestellt. GTK ist eine Bibliothek für die grafische Benutzeroberflächen (GUI) mit der Fenster, Dialog und sonstige Anzeigeelemente erzeugt werden. Leider ist die Performance von GTK3 auf der Raspberry Pi Zero merklich schlechter als bei GTK2. Falls man die alte Version als zusätzliches Programm bereitstellen möchte, hier eine Anleitung.

Installation

Geany 1.33 GTK3

sudo apt-get install geany stterm libvte9 libvte-2.91-0

Geany 1.29 GTK2

mkdir geany
cd geany
wget https://raspbian.bio.lmu.de/raspbian/pool/main/g/geany/geany_1.29-1_armhf.deb
sudo apt-get install unp
unp geany_1.29-1_armhf.deb
unp data.tar.xz
sudo cp usr/bin/geany /usr/bin/geany-gtk2
sudo mkdir /usr/lib/arm-linux-gnueabihf/geany-gtk2/
sudo cp -rv usr/lib/arm-linux-gnueabihf/* /usr/lib/arm-linux-gnueabihf/geany-gtk2/
mkdir common
cd common 
wget https://raspbian.bio.lmu.de/raspbian/pool/main/g/geany/geany-common_1.29-1_all.deb
unp geany-common_1.29-1_all.deb
unp data.tar.xz
sudo cp usr/share/geany/geany.gtkrc /usr/share/geany/

sudo apt-get install libfreetype6 libfontconfig1 libgtk2.0-0 libpangoft2-1.0-0

Geany 1.33 GTK2 erstellen

Die Geany Version 1.33 mit der GTK2 Bibliothek kann selbst erstellt werden. Dies ist allerdings ein aufwendiger Prozess. Würde man das resultierende Debian Paket dann installieren wird die GTK3 Version ersetzt. Wir kopieren aber wieder die erzeugten Dateien zusätzlich auf das Raspbian System.

Zuerst besorgt man sich den Source-Code des Debian Paketes. Dann benötigt man noch alle Abhängigkeiten des Paketes und die GTK2 Development Library. Nun muss man den Source-Code entpacken. In der Datei “debian/rules” muss der Parameter “–enable-gtk3” entfernt werden. Danach kann das Paket neu erzeugt werden. Nun kopieren wir das neue Programm und die Bibliothekdateien in eine neue Datei bzw. Verzeichnis.

geany-gtk2.patch:

--- geany-1.33/debian/rules.old	2019-11-27 21:55:31.871256842 +0100
+++ geany-1.33/debian/rules	2019-11-28 22:27:55.832759732 +0100
@@ -10,7 +10,7 @@
 	NOCONFIGURE=1 dh_autoreconf ./autogen.sh
 
 override_dh_auto_configure:
-	dh_auto_configure -- --enable-vte --enable-the-force --enable-gtk3
+	dh_auto_configure -- --enable-vte --enable-the-force 
 	sed -i -r 's,^sys_lib_dlsearch_path_spec="(.*)$$,sys_lib_dlsearch_path_spec="/usr/lib /lib \1,' $(CURDIR)/libtool
 
 override_dh_auto_install:
sudo su -c "grep '^deb ' /etc/apt/sources.list | sed 's/^deb/deb-src/g' > /etc/apt/sources.list.d/deb-src.list"
sudo apt update
sudo apt install build-essential fakeroot devscripts
sudo apt-get build-dep geany
sudo apt-get install libgtk2.0-dev libgdk-pixbuf2.0-dev libatk1.0-dev libcairo2-dev libgio2.0-cil-dev libfreetype6-dev libpango1.0-dev
mkdir build
cd build
apt-get source geany
patch -p0 -i geany-gtk2.patch
cd geany-1.33
debuild -uc -us -b
sudo cp usr/bin/geany /usr/bin/geany-gtk2
sudo mkdir /usr/lib/arm-linux-gnueabihf/geany-gtk2/
sudo cp -rv usr/lib/arm-linux-gnueabihf/* /usr/lib/arm-linux-gnueabihf/geany-gtk2/
cd ..

Start

Bei Aufruf der GTK2 Version muss man den Pfad für die Bibliothek setzen, damit nicht die Version mit GTK3 Bibliothek geladen wird.

Aufruf geany mit GTK2:

LD_LIBRARY_PATH=/usr/lib/arm-linux-gnueabihf/geany-gtk2/ geany-gtk2

Bei einem alias Eintrag können die zwei Version direkt gestartet werden.

Alias für Aufruf “~/.bash_aliases”:

alias geany-gtk2="LD_LIBRARY_PATH=/usr/lib/arm-linux-gnueabihf/geany-gtk2/ geany-gtk2"
alias geany-gtk3="/usr/bin/geany"

Mit dem Aufruf geany kann dann je nach Systemleistung die GTK2 oder GTK3 Version gestartet werden.

Alias für Aufruf “~/.profile”:

function geany() { 
	if [ `cat /proc/cpuinfo | grep -e "^processor" | wc -l` = 1 ]; then 
    echo "start geany with GTK 2 (slow single core cpu)" 
		geany-gtk2 "$@"
	else 
		geany-gtk3 "$@"
	fi
}

Für einen optischer Vergleich der beiden Versionen siehe Bild (GTK2 Clearlooks Theme links, GTK3 rechts).

Vergleich Geany GTK2 (Clearlooks) vs GTK3

Einstellungen

Nach der Installation gab es beim Starten eines Programms immer das Problem, dass das Terminal Programm mit dem entwickelten Programm nicht ausgeführt werden konnte.

Fehler beim Ausführen

Das Problem kann gelöst werden indem man den internen Terminal für das Ausführen des Programms benutzt.

Bearbeiten -> Einstellungen bzw. Strg+Alt+P , Reiter Terminal
Die Optionen “Führe Programme in der VTE aus” und “Das Run-Skript nicht benutzen” müssen aktiviert werden.

Einstellungen

Performancevergleich GTK3 zu GTK2

Folgende Zeit wurde ohne exakte Messung ermittelt und sind deshalb nur als Richtwert zu sehen.

Raspberry Pi Zero

Aktion GTK3 (Sek.) GTK2 (Sek.)
Start 8 4
Fenster öffnen: Kommandos zum Erstellen konfigurieren 2 1
Fenster öffnen: Einstellungen 7 2
Beenden 2 1

Raspberry Pi 2

Aktion GTK3 (Sek.) GTK2 (Sek.)
Start 4 2
Fenster öffnen: Kommandos zum Erstellen konfigurieren 1 1
Fenster öffnen: Einstellungen 3 1
Beenden 1 1

Style für GTK2 ändern

Die Optik der alten GTK2 Version schaut in der Standardkonfiguration recht altbacken aus. Ein anderes Theme wie z.B. “Clearlooks” gibt dem Programm einen modernen Look.

sudo apt-get install gtk-theme-switch gtk2-engines
gtk-theme-switch2

/home/pi/.gtkrc-2.0:

# -- THEME AUTO-WRITTEN BY gtk-theme-switch2 DO NOT EDIT
include "/usr/share/themes/Clearlooks/gtk-2.0/gtkrc"

include "/home/pi/.gtkrc-2.0.mine"

# -- THEME AUTO-WRITTEN BY gtk-theme-switch2 DO NOT EDIT

Youtube Video Review

Geany GTK2 vs GTK3 @ Raspberry Pi Zero

Martin Strohmayer Geschrieben von:

Softwareentwickler und Raspberry Pi Enthusiast.