RoxApps - GIMP 2.6.12 als RoxApp im Eigenbau

Post Reply
Message
Author
User avatar
RSH
Posts: 2397
Joined: Mon 05 Sep 2011, 14:21
Location: Germany

RoxApps - GIMP 2.6.12 als RoxApp im Eigenbau

#1 Post by RSH »

Hallo.

Neben meinem RoxApp Builder, den ich zur Erstellung von RoxApps als Programm-Starter entwickelte, habe ich auch versucht, ein Programm-Modul in eine RoxApp umzuwandeln.

Meine Wahl fiel hierbei auf GIMP 2.6.12, da ich es sehr oft verwende.

Als Vorlage vewendete ich Blender-2.61 und Cinepaint-0.20.1 (das wie eine sehr frühe Version von GIMP daherkommt) - beide habe ich hier als RoxApp vorliegen.

Vorlage meint: Analyse der jeweiligen AppRun Datei um die notwendigen Schritte für GIMP 2.6.12 nachvollziehen zu können.

Die gute Nachricht: es funktioniert!

Eine schlechte Nachricht gibt es nicht; nur eine Warnung: nur ohne persönliche Speicherdatei ausprobieren!

Um aus GIMP 2.6.12 eine RoxApp zu machen, einfach den Inhalt des GIMP 2.6.12 Programm-Moduls in ein neues Verzeichnis kopieren. Dann aus /usr/share/pixmaps das GIMP Icon in das neue Verzeichnis (oberste Ebene) kopieren und nach .DirIcon umbenennen - jetzt wird das Verzeichnis statt mit einem Ordnersymbol mit dem GIMP Icon angezeigt.

Anschließend eine leere, neue Textdatei in der obersten Ebene des neuen Verzeichnisses erzeugen und in AppInfo.xml umbennen. Sie wird erst einmal als Textdatei angezeigt (trotz der .xml Endung). Offnet diese Datei in einem Texteditor und kopiert den folgenden Inhalt hinein:

Code: Select all

<?xml version="1.0"?>
<AppInfo>
	<Summary xml:lang="en">Gimp 2.6.12, Layer Graphics Application</Summary>
	<Summary xml:lang="de">Gimp 2.6.12, Grafikprogramm mit Ebenentechnik</Summary>
	<AppMenu>
		<Item icon="gimp" option="-rungimp">
			<Label xml:lang="en">Run Gimp 2.6.12</Label>
			<Label xml:lang="de">Gimp 2.6.12 starten</Label>
		</Item>
		<Item icon="noicon" option="-noaction">
			<Label></Label>
		</Item>
	</AppMenu>
</AppInfo>
Hiernach erneut eine leere Textdatei erzeugen, nach AppRun umbennen, in einen Texteditor laden und den folgenden Inhalt hineinkopieren:

Code: Select all

#!/bin/bash -a
#------------------------------------------------------------------------------
# Gimp 2.6.12 in a 'RoxApp'
# Created 2013-08-25 by RSH
#------------------------------------------------------------------------------

# Get Application Directory
#--------------------------
APPDIR="`dirname $0`"
[ "$APPDIR" = "." ] && APPDIR="`pwd`"
export APPDIR="$APPDIR"
export APPDIR=`dirname $0`
[ $APPDIR = '.' ] && export APPDIR=`pwd`

# Language files wanted to use - de here
LANGPRESET="de"

# Run the GIMP ?
exitcode=0
RunGimp="false"
case $1 in
	-rungimp) # RightClick ---> Execute Gimp
		RunGimp="true"
	;;
	*) # Single LeftClick ---> Execute Gimp
		RunGimp="true"
	;;
esac

# Run the GIMP !
if [ "$RunGimp" = "true" ]; then
	
	#cd $APPDIR
	GIMPPROGRAM="gimp"
	exitcode=0
	
	# Export needed path's
	export PATH=$PATH:$APPDIR/usr/bin:$APPDIR/sbin:$APPDIR/usr/sbin
	export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$APPDIR/usr/lib:$APPDIR/lib
	
	############
	# Pre work #
	############
	
	# Create needed symbolic links
	ln -s $APPDIR/usr/share/gimp /usr/share/gimp
	ln -s $APPDIR/usr/share/python /usr/share/python
	ln -s $APPDIR/usr/share/sane /usr/share/sane
	
	ln -s $APPDIR/usr/share/menu/gimp /usr/share/menu/gimp
	ln -s $APPDIR/usr/share/menu/sane /usr/share/menu/sane
	
	ln -s $APPDIR/usr/share/locale/$LANGPRESET/LC_MESSAGES/gimp20-libgimp.mo /usr/share/locale/de/LC_MESSAGES/gimp20-libgimp.mo
	ln -s $APPDIR/usr/share/locale/$LANGPRESET/LC_MESSAGES/gimp20.mo /usr/share/locale/de/LC_MESSAGES/gimp20.mo
	ln -s $APPDIR/usr/share/locale/$LANGPRESET/LC_MESSAGES/gimp20-python.mo /usr/share/locale/de/LC_MESSAGES/gimp20-python.mo
	ln -s $APPDIR/usr/share/locale/$LANGPRESET/LC_MESSAGES/gimp20-script-fu.mo /usr/share/locale/de/LC_MESSAGES/gimp20-script-fu.mo
	ln -s $APPDIR/usr/share/locale/$LANGPRESET/LC_MESSAGES/gimp20-std-plug-ins.mo /usr/share/locale/de/LC_MESSAGES/gimp20-std-plug-ins.mo
	ln -s $APPDIR/usr/share/locale/$LANGPRESET/LC_MESSAGES/gimp20-tips.mo /usr/share/locale/de/LC_MESSAGES/gimp20-tips.mo
	
	ln -s $APPDIR/usr/lib/babl-0.1 /usr/lib/babl-0.1
	ln -s $APPDIR/usr/lib/gegl-0.1 /usr/lib/gegl-0.1
	ln -s $APPDIR/usr/lib/gimp /usr/lib/gimp
	ln -s $APPDIR/usr/lib/openssl-1.0.0 /usr/lib/openssl-1.0.0
	
	ln -s $APPDIR/etc/gimp /etc/gimp	
	
	#######################
	# Execute the Program #
	#######################
	
	# Run the GIMP 1 - works
	#ln -s $APPDIR/usr/bin/$GIMPPROGRAM /usr/bin/$GIMPPROGRAM
	#/usr/bin/$GIMPPROGRAM
	
	# Run the GIMP 2 - works
	"$APPDIR/usr/bin/$GIMPPROGRAM"
	exitcode=$?
	
	##############
	# After work #
	##############
	
	# Remove created symbolic links
	rm -r /usr/share/gimp
	rm -r /usr/share/python
	rm -r /usr/share/sane
	
	rm /usr/share/menu/gimp
	rm /usr/share/menu/sane
	
	rm /usr/share/locale/$LANGPRESET/LC_MESSAGES/gimp20-libgimp.mo
	rm /usr/share/locale/$LANGPRESET/LC_MESSAGES/gimp20.mo
	rm /usr/share/locale/$LANGPRESET/LC_MESSAGES/gimp20-python.mo
	rm /usr/share/locale/$LANGPRESET/LC_MESSAGES/gimp20-script-fu.mo
	rm /usr/share/locale/$LANGPRESET/LC_MESSAGES/gimp20-std-plug-ins.mo
	rm /usr/share/locale/$LANGPRESET/LC_MESSAGES/gimp20-tips.mo
	
	rm -r /usr/lib/babl-0.1
	rm -r /usr/lib/gegl-0.1
	rm -r /usr/lib/gimp
	rm -r /usr/lib/openssl-1.0.0
		
	rm -r /etc/gimp
	
	rm 	/usr/bin/$GIMPPROGRAM
	
fi

exit $exitcode
Nun nur noch die AppRun Datei ausführbar machen und fertig ist die RoxApp GIMP 2.6.12!

Da beim Verlinken ins System nicht geprüft wird, ob bestimmte Dateien bereits im System sind, besteht die Gefahr, daß beim anschließenden Entfernen der erzeugten Links bereits vorhandene Dateien/Links ebenfalls entfernt werden.

Um diesem vorzubeugen, wäre anzuraten, beim Verlinken ins System abzufragen, ob die jeweilige Datei bereits vorhanden ist. Nur wenn sie nicht vorhanden ist, sollte sie ins System verlinkt werden und in eine temporäre Datei eingetragen werden.

Diese temporäre Datei kann dann verwendet werden, um tatsächlich nur die Dateien wieder zu entfernen, die auch ins System verlinkt wurden. Dann solte einer Verwendung von GIMP 2.6.12 als RoxApp auch in einem System unter Verwendung einer persönlichen Speicherdatei nichts mehr im Wege stehen.

Das angehängte Biild zeigt GIMP 2.6.12 als RoxApp, aus /mnt/sdd2/RoxApps gestartet, in Aktion.
Attachments
GIMP-RoxApp-in-Aktion.jpg
RoxApp GIMP 2.6.12 in Aktion
(68.7 KiB) Downloaded 193 times
Last edited by RSH on Thu 05 Sep 2013, 03:55, edited 1 time in total.
[b][url=http://lazy-puppy.weebly.com]LazY Puppy[/url][/b]
[b][url=http://rshs-dna.weebly.com]RSH's DNA[/url][/b]
[url=http://murga-linux.com/puppy/viewtopic.php?t=91422][b]SARA B.[/b][/url]

User avatar
RSH
Posts: 2397
Joined: Mon 05 Sep 2011, 14:21
Location: Germany

#2 Post by RSH »

Hallo.

Hier ein kleines Update zu GIMP 2.6.12 als RoxApp im Eigenbau.

Inzwischen habe ich drei verschiedene Typen von RoxApps ausgemacht, die zwar alle auf dem typischen RoxApp Verzeichnis basieren, sich vom Inhalt her aber doch eindeutig unterscheiden.

Die einfachste Form einer RoxApp stellt demnach /usr/local/apps/Wallpaper dar. Zwar gibt es in /usr/local/apps mehrere RoxApp Verzeichnisse, doch -zumindest hier- nur /usr/local/apps/Wallpaper offenbart tatsächliche RoxApp-Funktionen.

Die zweite Form einer RoxApp entspricht in etwa dem, was ich hier mit GIMP 2.6.12 als RoxApp im Eigenbau veröffentlicht habe. Meine hier vorliegende Blender-2.61 RoxApp ist so ähnlich aufgebaut.

Die dritte Form einer RoxApp hingegen unterscheidet sich maßgeblich von den Anderen. Denn sie enthält eine Datei xxx.rox4fs in welcher offensichtlich sämtliche Programmdateien vorrätig gehalten werden.

Geleitet durch die '4fs' Dateiendung und die Tatsache, daß diese Datei als Squash File System eingebunden wird, vermutete ich eine schlichte ext4 Speicherdatei. Ein Klick auf diese Datei war allerdings ernüchternd: keine ext4 Speicherdatei.

Als Anfänger, und gesegnet mit der notwendigen Portion Neugierde und Spielfreude, erlaubte ich mir diese Datei nach xxx.sfs umzubenennen.

Und siehe da: nach einem Klick auf die umbenannte Datei offenbarte diese mir ihren Inhalt.

Eine xxx.rox4fs Datei ist somit offensichtlich nichts anderes, als eine umbenannte SFS Datei.

Damit werde ich mich demnächst beschäftigen.

Hier gibt es jetzt erst einmal ein Update des AppRun Skriptes. Dieses nimmt nun eine Prüfung vor, ob ins System zu verlinkende Verzeichnisse oder Dateien bereits im System vorhanden sind, und verlinkt diese nur, wenn sie noch nicht vorhanden sind.

Code: Select all

#!/bin/bash -a
#------------------------------------------------------------------------------
# Gimp 2.6.12 in a 'RoxApp'
# Created 2013-08-25 by RSH
#------------------------------------------------------------------------------

# Get Application Directory
#--------------------------
APPDIR="`dirname $0`"
[ "$APPDIR" = "." ] && APPDIR="`pwd`"
export APPDIR="$APPDIR"
export APPDIR=`dirname $0`
[ $APPDIR = '.' ] && export APPDIR=`pwd`

# Language files wanted to use - get it from '/etc/keymap' now
#LANGPRESET="de"
LANGPRESET="`cat /etc/keymap`"

# Run the GIMP ?
exitcode=0
RunGimp="false"
case $1 in
	-rungimp2612roxapp) # RightClick ---> Execute Gimp
		RunGimp="true"
	;;
	*) # LeftClick ---> Execute Gimp
		RunGimp="true"
	;;
esac

# Run the GIMP !
if [ "$RunGimp" = "true" ]; then
	
	#cd $APPDIR
	GIMPPROGRAM="gimp"
	exitcode=0
	
	# Export needed path's
	export PATH=$PATH:$APPDIR/usr/bin:$APPDIR/sbin:$APPDIR/usr/sbin
	export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$APPDIR/usr/lib:$APPDIR/lib
	
	############
	# Pre work #
	############
	
	# Use a copy of file list for symbolic links
	# because of replacing 'GIMPLANGPRESET' with content of '$LANGPRESET'
	cp -af $APPDIR/data/link_into_os /tmp/gimp_link_into_os_tmp
	sed -i 's|GIMPLANGPRESET|'$LANGPRESET'|' /tmp/gimp_link_into_os_tmp
	
	# Create some directories to keep SFS compatibility
	# It keeps the 'python/runtime.d' directory usable for SFS applications
	# that will use a 'python/runtime.d' directory also
	mkdir -p /usr/share/python/runtime.d
	
	# Create needed symbolic links by a list of needed files to sym-link
	# This List has to be manually created and edited
	if [ -f /tmp/gimp2612roxapp_symlinks ]; then
		rm -f /tmp/gimp2612roxapp_symlinks
	fi
	while read LINE; do
		if [ "$LINE" != "" ]; then
			if [ -f $APPDIR$LINE ]; then
				if [ ! -f $LINE ]; then
					#echo $LINE
					ln -s $APPDIR$LINE $LINE
					echo "$LINE" >> /tmp/gimp2612roxapp_symlinks
				fi
				else
				if [ -d $APPDIR$LINE ]; then
					if [ ! -d $LINE ]; then
						#echo $LINE
						ln -s $APPDIR$LINE $LINE
						echo "$LINE" >> /tmp/gimp2612roxapp_symlinks
					fi
				fi
			fi
		fi
	done < /tmp/gimp_link_into_os_tmp
	
	#######################
	# Execute the Program #
	#######################
	
	# Run the GIMP 1 - works
	#ln -s $APPDIR/usr/bin/$GIMPPROGRAM /usr/bin/$GIMPPROGRAM
	#/usr/bin/$GIMPPROGRAM
	
	# Run the GIMP 2 - works
	"$APPDIR/usr/bin/$GIMPPROGRAM"
	exitcode=$?
	
	##############
	# After work #
	##############
	
	# Disabled removing of created symbolic links
	# Remove created symbolic links from a List of created sym-links
	while read LINE; do
		if [ "$LINE" != "" ]; then
			if [ -f "$LINE" ]; then
				#echo $LINE
				rm -f $LINE
				else
				if [ -d "$LINE" ]; then
					#echo $LINE
					rm -r $LINE
				fi
			fi
		fi 
	done < /tmp/gimp2612roxapp_symlinks
	
	# Remove temp. files
	rm -f /tmp/gimp_link_into_os_tmp # Full list of needed files to sym-link
	rm -f /tmp/gimp2612roxapp_symlinks # List of created sym-links
	
	# Remove the GIMP Settings directory
	rm -r /root/.gimp-2.6
	
fi

echo ""
echo "GIMP 2.6.12 Exit-Code:" $exitcode

exit $exitcode
Die zu verlinkenden Dateien und Verzeichnisse sind nun in einer Datei definiert. Diese Datei wird als link_into_os in das Verzeichnis data kopiert, welches zuvor in der obersten Ebene des RoxApps Verzeichnisses erzeugt wird.

Code: Select all

/usr/share/gimp
/usr/share/python/runtime.d/gimp.rtupdate
/usr/share/sane
	
/usr/share/menu/gimp
/usr/share/menu/sane
	
/usr/share/locale/GIMPLANGPRESET/LC_MESSAGES/gimp20-libgimp.mo
/usr/share/locale/GIMPLANGPRESET/LC_MESSAGES/gimp20.mo
/usr/share/locale/GIMPLANGPRESET/LC_MESSAGES/gimp20-python.mo
/usr/share/locale/GIMPLANGPRESET/LC_MESSAGES/gimp20-script-fu.mo
/usr/share/locale/GIMPLANGPRESET/LC_MESSAGES/gimp20-std-plug-ins.mo
/usr/share/locale/GIMPLANGPRESET/LC_MESSAGES/gimp20-tips.mo
	
/usr/lib/babl-0.1
/usr/lib/gegl-0.1
/usr/lib/gimp
/usr/lib/openssl-1.0.0
	
/etc/gimp
Auf diese Weise werden am Ende nur die symbolischen Links aus dem System wieder entfernt, die auch tatsächlich erzeugt wurden.

Aber auch hier gilt weiterhin: nur ohne Speicherdatei testen!

RSH
[b][url=http://lazy-puppy.weebly.com]LazY Puppy[/url][/b]
[b][url=http://rshs-dna.weebly.com]RSH's DNA[/url][/b]
[url=http://murga-linux.com/puppy/viewtopic.php?t=91422][b]SARA B.[/b][/url]

User avatar
RSH
Posts: 2397
Joined: Mon 05 Sep 2011, 14:21
Location: Germany

#3 Post by RSH »

Hallo.

Hier ein weiteres, kleines Update zu GIMP 2.6.12 als RoxApp im Eigenbau.

Diese Version bzw. dieser Versuch ist insofern unglücklich verlaufen, da Gimp seine PugIns nicht findet und daher nur .xcf Dateien verarbeiten kann.

Das ist aber nicht weiter schlimm, denn ich war in der Lage, meinen RoxApp Builder soweit zu verbessern, daß er mir eine RoxApp für Gimp-2.6.12 erstellte, mit der Gimp nun auch seine PlugIns findet.

Also: das hier ist beendet und den RoxApp Rahmen gibt es gleich, im RoxApp Builder Forum.

RSH
[b][url=http://lazy-puppy.weebly.com]LazY Puppy[/url][/b]
[b][url=http://rshs-dna.weebly.com]RSH's DNA[/url][/b]
[url=http://murga-linux.com/puppy/viewtopic.php?t=91422][b]SARA B.[/b][/url]

Post Reply