Permalink
| #!/bin/bash | |
| # Make kicad configs to be unversioned | |
| export HOME="$SNAP_USER_COMMON" | |
| # Set XDG runtime directory | |
| export XDG_RUNTIME_DIR=/run/shm/snap.$SNAP_NAME.$SNAP_REVISION | |
| mkdir -p $XDG_RUNTIME_DIR | |
| # Setup i18n and locale | |
| export I18NPATH=$SNAP/usr/share/i18n | |
| export LOCPATH=$SNAP_USER_COMMON/.locale | |
| mkdir -p $LOCPATH | |
| # generate a locale | |
| LANG_EN=en_GB.UTF-8 | |
| if [ ! -e $LOCPATH/$LANG_EN ]; then | |
| LANG1=$(echo $LANG_EN | cut -f1 -d.) | |
| ENC=$(echo $LANG_EN | cut -f2 -d.) | |
| $SNAP/usr/bin/localedef --prefix=$SNAP_USER_COMMON -f $ENC -i $LANG1 $LOCPATH/$LANG_EN | |
| fi | |
| if [ ! -e $LOCPATH/$LANG ]; then | |
| LANG1=$(echo $LANG | cut -f1 -d.) | |
| ENC=$(echo $LANG | cut -f2 -d.) | |
| $SNAP/usr/bin/localedef --prefix=$SNAP_USER_COMMON -f $ENC -i $LANG1 $LOCPATH/$LANG | |
| fi | |
| ####################################################### | |
| # dektop-launch script with $SNAP_USER_{DATA->COMMON} # | |
| ####################################################### | |
| ############################################### | |
| # Launcher common exports for any desktop app # | |
| ############################################### | |
| needs_update=true | |
| . ~/.last_revision 2>/dev/null || true | |
| if [ "$SNAP_DESKTOP_LAST_REVISION" = "$SNAP_REVISION" ]; then | |
| needs_update=false | |
| fi | |
| [ $needs_update = true ] && echo "SNAP_DESKTOP_LAST_REVISION=$SNAP_REVISION" > ~/.last_revision | |
| if [ "$SNAP_ARCH" == "amd64" ]; then | |
| ARCH="x86_64-linux-gnu" | |
| elif [ "$SNAP_ARCH" == "armhf" ]; then | |
| ARCH="arm-linux-gnueabihf" | |
| else | |
| ARCH="$SNAP_ARCH-linux-gnu" | |
| fi | |
| # XKB config | |
| export XKB_CONFIG_ROOT=$SNAP/usr/share/X11/xkb | |
| # Mesa Libs | |
| ##export LD_LIBRARY_PATH=$SNAP/usr/lib/$ARCH/mesa:$LD_LIBRARY_PATH | |
| ##export LD_LIBRARY_PATH=$SNAP/usr/lib/$ARCH/mesa-egl:$LD_LIBRARY_PATH | |
| # Tell libGL where to find the drivers | |
| export LIBGL_DRIVERS_PATH=$SNAP/usr/lib/$ARCH/dri | |
| export LD_LIBRARY_PATH=$SNAP/usr/lib/$ARCH/dri:$LD_LIBRARY_PATH | |
| # Pulseaudio export | |
| ##export LD_LIBRARY_PATH=$SNAP/usr/lib/$ARCH/pulseaudio:$LD_LIBRARY_PATH | |
| # XDG Config | |
| export XDG_CONFIG_DIRS=$SNAP/etc/xdg:$SNAP/usr/xdg:$XDG_CONFIG_DIRS | |
| # Define snaps' own data dir | |
| export XDG_DATA_DIRS=$SNAP_USER_COMMON:$SNAP/usr/share:$XDG_DATA_DIRS | |
| # Set XDG_DATA_HOME to local path | |
| export XDG_DATA_HOME=$SNAP_USER_COMMON/.local/share | |
| export XDG_DATA_DIRS=$XDG_DATA_HOME:$XDG_DATA_DIRS | |
| mkdir -p $XDG_DATA_HOME | |
| # Set cache folder to local path | |
| export XDG_CACHE_HOME=$SNAP_USER_COMMON/.cache | |
| mkdir -p $XDG_CACHE_HOME | |
| # Font Config and themes | |
| export FONTCONFIG_PATH=$SNAP/etc/fonts/conf.d | |
| export FONTCONFIG_FILE=$SNAP/etc/fonts/fonts.conf | |
| if [ $needs_update = true ]; then | |
| rm -rf $XDG_DATA_HOME/{fontconfig,fonts,fonts-*,themes,.themes} | |
| rm -rf $SNAP_USER_COMMON/.themes | |
| ln -sf $SNAP/usr/share/{fontconfig,fonts,fonts-*,themes} $XDG_DATA_HOME | |
| ln -sf $SNAP/usr/share/themes $SNAP_USER_COMMON/.themes | |
| fi | |
| # Build mime.cache | |
| # needed for gtk and qt icon | |
| if [ $needs_update = true ]; then | |
| rm -rf $XDG_DATA_HOME/mime | |
| if [ `which update-mime-database` ]; then | |
| cp --preserve=timestamps -dR $SNAP/usr/share/mime $XDG_DATA_HOME | |
| update-mime-database $XDG_DATA_HOME/mime | |
| fi | |
| fi | |
| ############################## | |
| # GTK launcher specific part # | |
| ############################## | |
| # select gtk version | |
| . $SNAP/flavor-select | |
| # Gdk-pixbuf loaders | |
| export GDK_PIXBUF_MODULE_FILE=$XDG_CACHE_HOME/gdk-pixbuf-loaders.cache | |
| export GDK_PIXBUF_MODULEDIR=$SNAP/usr/lib/$ARCH/gdk-pixbuf-2.0/2.10.0/loaders | |
| if [ $needs_update = true ]; then | |
| rm -f $GDK_PIXBUF_MODULE_FILE | |
| if [ -f $SNAP/usr/lib/$ARCH/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders ]; then | |
| $SNAP/usr/lib/$ARCH/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders > $GDK_PIXBUF_MODULE_FILE | |
| fi | |
| fi | |
| # Gio modules and cache | |
| export GIO_MODULE_DIR=$XDG_CACHE_HOME/gio-modules | |
| if [ $needs_update = true ]; then | |
| rm -rf $GIO_MODULE_DIR | |
| mkdir -p $GIO_MODULE_DIR | |
| ln -s $SNAP/usr/lib/$ARCH/gio/modules/*.so $GIO_MODULE_DIR | |
| if [ -f $SNAP/usr/lib/$ARCH/glib-2.0/gio-querymodules ]; then | |
| $SNAP/usr/lib/$ARCH/glib-2.0/gio-querymodules $GIO_MODULE_DIR | |
| fi | |
| fi | |
| # GI repository | |
| export GI_TYPELIB_PATH=$SNAP/usr/lib/girepository-1.0:$SNAP/usr/lib/$ARCH/girepository-1.0 | |
| if [ "$USE_gtk3" = true ]; then | |
| export GTK_PATH=$SNAP/usr/lib/$ARCH/gtk-3.0 | |
| else | |
| export GTK_PATH=$SNAP/usr/lib/$ARCH/gtk-2.0 | |
| fi | |
| # ibus and fcitx integration | |
| # with those defintions fcitx works unconfined out of the box, ibus requires | |
| # user config to be copied though, https://launchpad.net/bugs/1580463 | |
| GTK_IM_MODULE_DIR=$XDG_CACHE_HOME/immodules | |
| export GTK_IM_MODULE_FILE=$GTK_IM_MODULE_DIR/immodules.cache | |
| if [ $needs_update = true ]; then | |
| rm -rf $GTK_IM_MODULE_DIR | |
| mkdir -p $GTK_IM_MODULE_DIR | |
| if [ "$USE_gtk3" = true ]; then | |
| ln -s $SNAP/usr/lib/$ARCH/gtk-3.0/3.0.0/immodules/*.so $GTK_IM_MODULE_DIR | |
| $SNAP/usr/lib/$ARCH/libgtk-3-0/gtk-query-immodules-3.0 > $GTK_IM_MODULE_FILE | |
| else | |
| ln -s $SNAP/usr/lib/$ARCH/gtk-2.0/2.10.0/immodules/*.so $GTK_IM_MODULE_DIR | |
| $SNAP/usr/lib/$ARCH/libgtk2.0-0/gtk-query-immodules-2.0 > $GTK_IM_MODULE_FILE | |
| fi | |
| fi | |
| # Keep an array of data dirs, for looping through them | |
| IFS=':' read -r -a data_dirs_array <<< "$XDG_DATA_DIRS" | |
| # Setup compiled gsettings schema | |
| GS_SCHEMA_DIR=$XDG_DATA_HOME/glib-2.0/schemas | |
| if [ $needs_update = true ]; then | |
| rm -rf $GS_SCHEMA_DIR | |
| mkdir -p $GS_SCHEMA_DIR | |
| for d in "${data_dirs_array[@]}"; do | |
| schema_dir=$d/glib-2.0/schemas | |
| if [ "$(ls -A $schema_dir/*.xml 2>/dev/null)" ]; then | |
| ln -s $schema_dir/*.xml $GS_SCHEMA_DIR | |
| fi | |
| done | |
| if [ -f $SNAP/usr/lib/$ARCH/glib-2.0/glib-compile-schemas ]; then | |
| $SNAP/usr/lib/$ARCH/glib-2.0/glib-compile-schemas $GS_SCHEMA_DIR | |
| fi | |
| fi | |
| # Enable gsettings user changes | |
| # symlink the dconf file if home plug is connected for read | |
| DCONF_DEST_USER_DIR=$SNAP_USER_COMMON/.config/dconf | |
| if [ ! -f $DCONF_DEST_USER_DIR/user ]; then | |
| if [ -f /home/$USER/.config/dconf/user ]; then | |
| mkdir -p $DCONF_DEST_USER_DIR | |
| ln -s /home/$USER/.config/dconf/user $DCONF_DEST_USER_DIR | |
| fi | |
| fi | |
| # Icon themes cache | |
| if [ $needs_update = true ]; then | |
| rm -rf $XDG_DATA_HOME/icons | |
| mkdir -p $XDG_DATA_HOME/icons | |
| for d in "${data_dirs_array[@]}"; do | |
| for i in $d/icons/*; do | |
| if [ -d "$i" ]; then | |
| theme_dir=$XDG_DATA_HOME/icons/$(basename "$i") | |
| if [ ! -d "$theme_dir" ]; then | |
| mkdir -p "$theme_dir" | |
| ln -s $i/* "$theme_dir" | |
| if [ -f $SNAP/usr/sbin/update-icon-caches ]; then | |
| $SNAP/usr/sbin/update-icon-caches "$theme_dir" | |
| elif [ -f $SNAP/usr/sbin/update-icon-cache.gtk2 ]; then | |
| $SNAP/usr/sbin/update-icon-cache.gtk2 "$theme_dir" | |
| fi | |
| fi | |
| fi | |
| done | |
| done | |
| fi | |
| # Init global FP library table | |
| if [ ! -f $HOME/.config/kicad/fp-lib-table ]; then | |
| mkdir -p $HOME/.config/kicad | |
| cp $SNAP/usr/share/kicad/template/fp-lib-table.for-pretty $HOME/.config/kicad/fp-lib-table | |
| fi | |
| # Set ngspice library directory | |
| export SPICE_LIB_DIR=$SNAP/usr/share/ngspice | |
| exec "$@" |