3
3
# #############################################################################################
4
4
# THIS MODULE INCLUDES ALL THE ACTIONS INTENDED TO MANAGE THE APPS INSTALLED FROM THE DATABASE
5
5
# AND ONE OPTION IS FOR LOCAL APPIMAGES INSTEAD
6
- # OPTIONS: BACKUP/RESTORE, DOWNGRADE, LAUNCHER, LOCK/UNLOCK, NOLIBFUSE, REMOVE
6
+ # OPTIONS: BACKUP/RESTORE, CONFIG/HOME, DOWNGRADE, LAUNCHER, LOCK/UNLOCK, NOLIBFUSE, REMOVE
7
7
# #############################################################################################
8
8
9
- # BACKUP
9
+ # ###############################################################################################################################################################
10
+ # BACKUP
11
+ # ###############################################################################################################################################################
12
+
10
13
_backup_name () {
11
14
printf " \n ◆ To set date and time as a name, press ENTER (default)\n ◆ To set the version as a name, press \" 1\" \n ◆ To set a custom name, write anything else\n\n"
12
15
read -r -p " Write your choice here, or leave blank to use \" date/time\" : " response
@@ -48,7 +51,10 @@ _backup() {
48
51
echo " $DIVIDING_LINE "
49
52
}
50
53
51
- # RESTORE
54
+ # ###############################################################################################################################################################
55
+ # RESTORE
56
+ # ###############################################################################################################################################################
57
+
52
58
_overwrite () {
53
59
if [ ! -d " $HOME /.am-snapshots/$2 " ]; then
54
60
echo " ERROR: No snapshot for \" $2 \" found."
@@ -77,7 +83,40 @@ _overwrite() {
77
83
echo " $DIVIDING_LINE "
78
84
}
79
85
80
- # DOWNGRADE
86
+ # ###############################################################################################################################################################
87
+ # CONFIG/HOME
88
+ # ###############################################################################################################################################################
89
+
90
+ _isolate_appimage () {
91
+ _determine_args
92
+ if [ -z " $argpath " ]; then
93
+ printf " ✖ ERROR: \" %b\" is not installed\n" " $arg "
94
+ elif [ -f " $argpath " /" $arg " ] && ! head -c10 " $argpath " /" $arg " 2> /dev/null | grep -qa ' ^.ELF....AI$' ; then
95
+ printf " ✖ ERROR: \" %b\" is NOT an AppImage\n" " $arg "
96
+ else
97
+ if echo " $1 " | grep -q -- " C\|config$" ; then
98
+ if [ -d " $argpath " /" $arg " .config ]; then
99
+ echo " ✖ ERROR: \" $arg \" already contains a config dir" | _fit
100
+ else
101
+ mkdir " $argpath " /" $arg " .config || return 1
102
+ echo " ✔ \$ XDG_CONFIG_HOME set to \" $argpath .config\" for \" $arg \" " | _fit
103
+ fi
104
+ fi
105
+ if echo " $1 " | grep -q -- " H\|home$" ; then
106
+ if [ -d " $argpath " /" $arg " .home ]; then
107
+ echo " ✖ ERROR: \" $arg \" already contains a home dir" | _fit
108
+ else
109
+ mkdir " $argpath " /" $arg " .home || return 1
110
+ echo " ✔ \$ HOME set to \" $argpath .home\" for \" $arg \" " | _fit
111
+ fi
112
+ fi
113
+ fi
114
+ }
115
+
116
+ # ###############################################################################################################################################################
117
+ # DOWNGRADE
118
+ # ###############################################################################################################################################################
119
+
81
120
_downgrade_entries_filter () {
82
121
grep -vi " ^#\|version0=" ./AM-updater | grep " api.github.com" \
83
122
| tr ' =' ' \n' | sed ' s/^\$(//g' \
@@ -141,7 +180,10 @@ _downgrade() {
141
180
echo " ROLLBACK SUCCESSFUL!"
142
181
}
143
182
144
- # ICON THEME CHANGER
183
+ # ###############################################################################################################################################################
184
+ # ICON THEME CHANGER
185
+ # ###############################################################################################################################################################
186
+
145
187
_icon_theme () {
146
188
if [ " $AMCLI " = am ] && test -f /usr/local/share/applications/" $arg " * AM.desktop; then
147
189
$SUDOCMD sed -i " s#Icon=$argpath /icons/#Icon=#g" /usr/local/share/applications/" $arg " * AM.desktop 2> /dev/null
@@ -151,7 +193,10 @@ _icon_theme() {
151
193
_icon_theme_export_to_datadir 2> /dev/null
152
194
}
153
195
154
- # LAUNCHER
196
+ # ###############################################################################################################################################################
197
+ # LAUNCHER
198
+ # ###############################################################################################################################################################
199
+
155
200
_launcher_appimage_integration () {
156
201
if grep -Eaoq -m 1 " appimage-extract" " $arg " ; then
157
202
" $arg " --appimage-extract * .desktop 1> /dev/null && mv ./squashfs-root/* .desktop ./" $appimage " .desktop
@@ -252,7 +297,10 @@ _launcher(){
252
297
fi
253
298
}
254
299
255
- # LOCK/UNLOCK
300
+ # ###############################################################################################################################################################
301
+ # LOCK/UNLOCK
302
+ # ###############################################################################################################################################################
303
+
256
304
_lock () {
257
305
if [ ! -f " $argpath " /AM-updater ]; then
258
306
echo " \" $AMCLIUPPER \" cannot manage updates for $2 , \" AM-updater\" file not found!"
@@ -283,7 +331,10 @@ _unlock() {
283
331
fi
284
332
}
285
333
286
- # NO LIBFUSE
334
+ # ###############################################################################################################################################################
335
+ # NO LIBFUSE
336
+ # ###############################################################################################################################################################
337
+
287
338
_nolibfuse () {
288
339
AMCLIPATH_ORIGIN=" $AMCLIPATH "
289
340
target=" $( echo " ${2} " | tr ' [:lower:]' ' [:upper:]' ) "
@@ -365,7 +416,10 @@ _nolibfuse() {
365
416
fi
366
417
}
367
418
368
- # REMOVE
419
+ # ###############################################################################################################################################################
420
+ # REMOVE
421
+ # ###############################################################################################################################################################
422
+
369
423
_detect_path_to_remove () {
370
424
if [ -f " $APPMAN_APPSPATH " /" $arg " /remove ]; then
371
425
RMPATH=" 1"
@@ -405,9 +459,9 @@ _hard_remove() {
405
459
[ -d " $DATADIR " /icons/hicolor/scalable/apps ] && find " $DATADIR " /icons/hicolor/scalable/apps -xtype l -exec rm {} \;
406
460
}
407
461
408
- # ##########################################################################
409
- # OPTIONS AVAILABLE IN THIS MODULE
410
- # ##########################################################################
462
+ # ###############################################################################################################################################################
463
+ # USAGE
464
+ # ###############################################################################################################################################################
411
465
412
466
# Main logic
413
467
[ -z " $2 " ] && echo " USAGE: $AMCLI $1 [ARGUMENT]" && exit 1
@@ -423,6 +477,19 @@ case "$1" in
423
477
done
424
478
;;
425
479
480
+ ' config' |' -C' |' --config' |' home' |' -H' |' --home' |' -HC' |' -CH' |' HC' |' CH' )
481
+ # Set dedicated $HOME and $XDG_CONFIG_HOME directories for one or more AppImages.
482
+ _determine_args
483
+ echo " $DIVIDING_LINE "
484
+ entries=" $( echo " $@ " | cut -f2- -d ' ' ) "
485
+ for arg in $entries ; do
486
+ argpath=$( echo " $ARGPATHS " | grep " /$arg $" )
487
+ _isolate_appimage " ${@ } "
488
+ echo " $DIVIDING_LINE "
489
+ argpath=" "
490
+ done
491
+ ;;
492
+
426
493
' downgrade' |' --rollback' )
427
494
# Downgrade the installed app to a previous version, from its online source
428
495
_online_check
0 commit comments