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>
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
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.