From bb46a0b6e2cac478fde1edd38eff0ddae9d55312 Mon Sep 17 00:00:00 2001 From: "committer@tuxwarrior" Date: Tue, 24 Feb 2026 10:02:41 -0500 Subject: [PATCH] wip --- README.md | 26 +- dots/archinstall/common/packages.txt | 2 +- .../obsolete.dmenu_recency} | 0 .../obsolete.i3lock_fk.sh} | 0 .../obsolete.lfMultiSelectHandler.sh} | 0 .../obsolete.lordOfTheRing.sh} | 0 .../obsolete.pCloudSynologyDriveRestarter.sh} | 0 scripts/99_deploy.sh | 52 +- scripts/obsolete/260224.99_deploy.sh | 479 ++++++++++++++++++ 9 files changed, 528 insertions(+), 31 deletions(-) rename dots/bin/{dmenu_recency => obsolete/obsolete.dmenu_recency} (100%) rename dots/bin/{i3lock_fk.sh => obsolete/obsolete.i3lock_fk.sh} (100%) rename dots/bin/{lfMultiSelectHandler.sh => obsolete/obsolete.lfMultiSelectHandler.sh} (100%) rename dots/bin/{lordOfTheRing.sh => obsolete/obsolete.lordOfTheRing.sh} (100%) rename dots/bin/{pCloudSynologyDriveRestarter.sh => obsolete/obsolete.pCloudSynologyDriveRestarter.sh} (100%) create mode 100644 scripts/obsolete/260224.99_deploy.sh diff --git a/README.md b/README.md index 7c19d2f..19f157c 100644 --- a/README.md +++ b/README.md @@ -182,9 +182,7 @@ Primary key fingerprint: 3E80 CA1A 8B89 F69C BA57 D98A 76A5 EF90 5444 9A5C - and disable the two options `Ask before syncing folders larger than xxx` and `Ask before syncing external storages` - click `Connect` - wait for nextcloud to complete syncronisation - - this will likely take a few days, depending on the internet speed and the amount of data stored with nextcloud -- set up protonvpn - - log in (but wait with enabling vpn until nextcloud has completed syncing) + - this will likely take time. how long depends on the internet speed and the amount of data stored with nextcloud. ## step six :: post syncronisation tasks @@ -202,9 +200,27 @@ if the system runs nvidia, follow the steps in [nvidia.md](nvidia.md) to set up ## step eight :: post installation tasks - **KITTEN** - - `$ kitten themes 'sakura night'` + - `$ kitten themes 'falcon'` - to list all themes: `$ kitten themes` - - nice themes: `1984 dark`, `box`, `cyberpunk`, `falcon`, `flat`, `goa base`, `neowave`, `sakura night`, `tropical neon`, `ubunto` + - selected themes: + - `kitten themes '1984 dark'` + - `kitten themes 'adwaita darker'` + - `kitten themes 'box'` + - `kitten themes 'copland os'` + - `kitten themes 'cyberpunk neon'` + - `kitten themes 'default'` + - `kitten themes 'encom'` + - `kitten themes 'falcon'` + - `kitten themes 'hachiko'` + - `kitten themes 'neowave'` + - `kitten themes 'papercolor dark'` + - `kitten themes 'paul millr'` + - `kitten themes 'tropical neon'` + - `kitten themes 'ubuntu'` + - `kitten themes 'vibrant ink'` + - `kitten themes 'wez'` + + - (search for `tropical` ➔ select `tropical neon` ➔ press `M` to modify kitten.conf and start using the theme) - **VSCODIUM** - **local sync** diff --git a/dots/archinstall/common/packages.txt b/dots/archinstall/common/packages.txt index 1eafeb2..ecd765a 100644 --- a/dots/archinstall/common/packages.txt +++ b/dots/archinstall/common/packages.txt @@ -34,7 +34,7 @@ aur:hyprmon-bin # multi-monitor profile manager #aur:caffeine-ng # status bar application able to temporarily inhibit the screensaver and sleep mode #aur:candy-icons-git # icons theme #aur:canon-pixma-mg2500-complete # stand alone driver set (print and scan) for Canon Pixma MG2500 series -#aur:cryptomator-bin # encryption tool | need to decrypt ssh vault in the cloud +aur:cryptomator-bin # encryption tool | need to decrypt ssh vault in the cloud #aur:ctpv-git # image previewer for lf #aur:dragon-drop # simple drag-and-drop source/sink #aur:figlet-fonts # fonts for figlet - ascii diff --git a/dots/bin/dmenu_recency b/dots/bin/obsolete/obsolete.dmenu_recency similarity index 100% rename from dots/bin/dmenu_recency rename to dots/bin/obsolete/obsolete.dmenu_recency diff --git a/dots/bin/i3lock_fk.sh b/dots/bin/obsolete/obsolete.i3lock_fk.sh similarity index 100% rename from dots/bin/i3lock_fk.sh rename to dots/bin/obsolete/obsolete.i3lock_fk.sh diff --git a/dots/bin/lfMultiSelectHandler.sh b/dots/bin/obsolete/obsolete.lfMultiSelectHandler.sh similarity index 100% rename from dots/bin/lfMultiSelectHandler.sh rename to dots/bin/obsolete/obsolete.lfMultiSelectHandler.sh diff --git a/dots/bin/lordOfTheRing.sh b/dots/bin/obsolete/obsolete.lordOfTheRing.sh similarity index 100% rename from dots/bin/lordOfTheRing.sh rename to dots/bin/obsolete/obsolete.lordOfTheRing.sh diff --git a/dots/bin/pCloudSynologyDriveRestarter.sh b/dots/bin/obsolete/obsolete.pCloudSynologyDriveRestarter.sh similarity index 100% rename from dots/bin/pCloudSynologyDriveRestarter.sh rename to dots/bin/obsolete/obsolete.pCloudSynologyDriveRestarter.sh diff --git a/scripts/99_deploy.sh b/scripts/99_deploy.sh index 3420969..c9af017 100644 --- a/scripts/99_deploy.sh +++ b/scripts/99_deploy.sh @@ -20,6 +20,7 @@ operation=$1 targz_dots_url=https://gi.op.fo/fro/lnx-arch/archive/master.tar.gz options_url=https://gi.op.fo/fro/lnx-arch/raw/branch/master/dots/archinstall/${HOSTNAME}/options.sh +# download options options_trg=/tmp/options.sh rm -rf ${options_trg} rm -rf ${options_trg}.tmp @@ -38,6 +39,7 @@ if [[ -z "${clone_trg}" ]] ; then exit 1 fi +# load secrets, as environment variables secrets_cred_path=/home/${system_user}/syncDir/secrets/toBeSourced/cred.sh source ${secrets_cred_path} @@ -146,31 +148,31 @@ deploy_file() { ls -al ${_trg_path} } -# locate firefox's profile directory -#firefox_profile_dir() { -# ffdir=/home/${system_user}/.mozilla/firefox/ -# -# if ! [ -d "$ffdir" ] -# then -# echo "error: firefox main directory not found: '${ffdir}'" -# else -# pattern=".default-release" -# old_dir=`pwd` -# cd ${ffdir} -# for _dir in *"${pattern}"*; do -# [ -d "${_dir}" ] && dir="${_dir}" && break -# done -# cd ${old_dir} -# -# if [ -z "$dir" ] -# then -# echo "error: firefox profile directory not found" -# else -# ffprofiledir=${ffdir}${dir} -# echo "${ffprofiledir}" -# fi -# fi -#} +# locate librewolf's profile directory +librewolf_profile_dir() { + ffdir=/home/${system_user}/.mozilla/firefox/ + + if ! [ -d "$ffdir" ] + then + echo "error: firefox main directory not found: '${ffdir}'" + else + pattern=".default-release" + old_dir=`pwd` + cd ${ffdir} + for _dir in *"${pattern}"*; do + [ -d "${_dir}" ] && dir="${_dir}" && break + done + cd ${old_dir} + + if [ -z "$dir" ] + then + echo "error: firefox profile directory not found" + else + ffprofiledir=${ffdir}${dir} + echo "${ffprofiledir}" + fi + fi +} # ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ diff --git a/scripts/obsolete/260224.99_deploy.sh b/scripts/obsolete/260224.99_deploy.sh new file mode 100644 index 0000000..3420969 --- /dev/null +++ b/scripts/obsolete/260224.99_deploy.sh @@ -0,0 +1,479 @@ +#!/usr/bin/env bash + +# klevstul + +echo "<< 99_deploy.sh >>" + +if [ "$EUID" -ne 0 ] + then echo "error: run as 'root'" + exit +fi + +this_file_name=`basename "$0"` +if [ $# -lt 1 ]; then + echo "usage: '$this_file_name {all}'" + exit 1 +fi +operation=$1 + +# urls +targz_dots_url=https://gi.op.fo/fro/lnx-arch/archive/master.tar.gz +options_url=https://gi.op.fo/fro/lnx-arch/raw/branch/master/dots/archinstall/${HOSTNAME}/options.sh + +options_trg=/tmp/options.sh +rm -rf ${options_trg} +rm -rf ${options_trg}.tmp +wget --no-check-certificate -q ${options_url} -O ${options_trg} +source ${options_trg} +if [ -z "${OPTIONS_LOADED}" ]; then + echo "error: unable to load options" + exit 1 +fi + +# load values found in options.sh file, sourced above +system_user=${SYSTEM_USER} +clone_trg=${CLONE_TARGET_DIR} +if [[ -z "${clone_trg}" ]] ; then + echo "error: CLONE_TARGET_DIR is empty" + exit 1 +fi + +secrets_cred_path=/home/${system_user}/syncDir/secrets/toBeSourced/cred.sh +source ${secrets_cred_path} + +# ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ + +# helper functions +download_repo() { + + _targz_url=$1 + + # make clone target directory, if it doesn't exist + mkdir -p ${clone_trg} + + # instead of doing a git clone (like `git clone ${clone_url} ${clone_trg}`), + # where i would have emptied the target dir each time, i download the + # source as a tar.gz. + wget --no-check-certificate --show-progress ${_targz_url} -O ${clone_trg}/tmp.tar.gz + tar -xzf ${clone_trg}/tmp.tar.gz -C ${clone_trg} + rm ${clone_trg}/tmp.tar.gz +} + +create_dir() { + _directory=$1 + + mkdir_command="mkdir -p \"${_directory}\"" + runuser -l ${system_user} -c '${mkdir_command}' + + if ! [ -d "$_directory" ] + then + echo "" + echo "error: unable to create the directory '${_directory}'" + echo " command:" + echo " runuser -l ${system_user} -c '${mkdir_command}'" + echo "will try creating the directory as root, and changing owner" + + mkdir -p "${_directory}" + sudo chown -R ${system_user}:${system_user} "${_directory}" + + if [ -d "$_directory" ] + then + echo "success!" + else + echo "failure! directory could not be created." + fi + fi +} + +deploy_file() { + _src_path=$1 + _trg_path=$2 + _no_chown=$3 + _recursive=$4 + + if [[ "$_src_path" == *.zip ]] || [[ "$_src_path" == *.tar.xz ]] ; then + file_name_src=$(basename ${_src_path}) + fi + + file_name_trg=$(basename ${_trg_path}) + echo "" + echo "${file_name_trg}:" + + suffix1=".zip" + suffix2=".tar.xz" + if [[ ${file_name_src} == *$suffix1 ]] ; then + echo "unzipping '${_src_path}'" + # -o: overwrite without prompting + unzip -o ${_src_path} -d ${_trg_path} + elif [[ ${file_name_src} == *$suffix2 ]] ; then + echo "un-taring '${_src_path}'" + tar -xf ${_src_path} -C ${_trg_path} + else + echo "copying '${_src_path}' to '${_trg_path}'" + # -f (--force): overwrite without confirmation + cp --force --recursive ${_src_path} ${_trg_path} + fi + + # chown by default + if [[ ${_no_chown} != "no_chown" ]] ; then + # if the target path ends with a slash, we have a directory + if [[ "$_trg_path" == */ ]] + then + echo "(ignore potential \"chown: cannot access\" error, which will occur if there are no dot-files in the directory)" + + if [[ ${_recursive} != "recursive" ]] ; then + # https://serverfault.com/questions/156437/how-to-chown-a-directory-recursively-including-hidden-files-or-directories + chown ${system_user}:${system_user} ${_trg_path}* + chown ${system_user}:${system_user} ${_trg_path}.[^.]* + else + chown -R ${system_user}:${system_user} ${_trg_path}* + chown -R ${system_user}:${system_user} ${_trg_path}.[^.]* + fi + else + chown ${system_user}:${system_user} ${_trg_path} + fi + fi + + suffix=".sh" + if [[ ${file_name_trg} == *$suffix ]] ; then + chmod 755 ${_trg_path}/*.sh + elif [[ ${file_name_trg} == "bin" ]] ; then + chmod 755 ${_trg_path}/* + elif [[ ${file_name_trg} == "wms" ]] ; then + chmod 755 ${_trg_path}/* + fi + + ls -al ${_trg_path} +} + +# locate firefox's profile directory +#firefox_profile_dir() { +# ffdir=/home/${system_user}/.mozilla/firefox/ +# +# if ! [ -d "$ffdir" ] +# then +# echo "error: firefox main directory not found: '${ffdir}'" +# else +# pattern=".default-release" +# old_dir=`pwd` +# cd ${ffdir} +# for _dir in *"${pattern}"*; do +# [ -d "${_dir}" ] && dir="${_dir}" && break +# done +# cd ${old_dir} +# +# if [ -z "$dir" ] +# then +# echo "error: firefox profile directory not found" +# else +# ffprofiledir=${ffdir}${dir} +# echo "${ffprofiledir}" +# fi +# fi +#} + +# ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ + +# dots (dot files) +if [ ${operation} == "dots" ] ; then + + # declarations + dots_trg=${clone_trg}/lnx-arch/dots + + echo "***** ${operation} *****" + rm -rf ${clone_trg}/lnx-arch + download_repo ${targz_dots_url} + tree ${clone_trg}/lnx-arch + + # ---------- + # system + # ---------- + + # applications + file_path=/usr/share/applications + deploy_file "${dots_trg}/applications/*" "${file_path}/" + + # bashrc + file_name=.bashrc + file_path=/home/${system_user} + deploy_file "${dots_trg}/bash/${file_name}" "${file_path}/${file_name}" + + # bin (executable binaries, scripts) + file_path=/usr/local/bin + deploy_file "${dots_trg}/bin/*" "${file_path}/" + + # environment + file_name=environment + file_path=/etc + deploy_file "${dots_trg}/environment/${file_name}" "${file_path}/${file_name}" no_chown + + # mimeapps (available applications: `/usr/share/applications/`) + file_name=mimeapps.list + file_path=/home/${system_user}/.config + deploy_file "${dots_trg}/mimeapps/${file_name}" "${file_path}/${file_name}" no_chown + + # mounts +# file_name=mnt-nas.mount +# file_path=/etc/systemd/system +# deploy_file "${dots_trg}/systemd/${file_name}" "${file_path}/${file_name}" no_chown + # sed -i "s|USERNAME|klevstul|g" "${file_path}/${file_name}" + # sed -i "s|PASSWORD|${LILLESORTEBOKS}|g" "${file_path}/${file_name}" + + # pacman + file_name=.makepkg.conf + file_path=/home/${system_user} + deploy_file "${dots_trg}/pacman/${file_name}" "${file_path}/${file_name}" + + # ssh + file_name=config + file_path=/home/${system_user}/.ssh + deploy_file "${dots_trg}/ssh/${file_name}" "${file_path}/${file_name}" + + # ---------- + # printing + # + # src: + # - https://wiki.manjaro.org/index.php?title=Printing + # - http://localhost:631/help/admin.html + # + # example (turn the printer on, to see the "usb: value"): + # $ lpinfo -m | grep 'ql700' + # brother_ql700_printer_en.ppd Brother QL-700 CUPS + # $ (sudo) lpinfo -v + # ... + # direct usb://Brother/QL-700?serial=000L0Z530516 + # ... + # ---------- + + file_path=/etc/cups + deploy_file "${dots_trg}/cups/*" "${file_path}/" no_chown + + # man page: + # https://www.cups.org/doc/man-lpadmin.html + + # current printers: + + # Description: Canon MG2500 + # Location: NAS + # Driver: Canon MG2500 series Ver.4.00 (color) + # Connection: ipp://192.168.1.222:631/printers/usbprinter + # Defaults: job-sheets=none, none media=iso_a4_210x297mm sides=one-sided + # + # Description: Canon MG2500 + # Location: t470p + # Driver: Canon MG2500 series Ver.4.00 (color) + # Connection: usb://Canon/MG2500%20series?serial=FC4F1F&interface=1 + # Defaults: job-sheets=none, none media=iso_a4_210x297mm sides=one-sided + + # outdated commands: + # -p is an obsolete flag + # lpadmin -p Brother_HL-L2310D_series -D "Brother HL-L2310D_series" -E -v usb://Brother/HL-L2310D%20series?serial=E78096L7N181893 -m lsb/usr/cupsfilters/brother-HLL2310D-cups-en.ppd + # lpadmin -p Brother_QL-700 -D "Brother QL-700" -E -v usb://Brother/QL-700?serial=000L0Z530516 -m brother_ql700_printer_en.ppd + + +# EXAMPLE OF FILE MANIPULATION (from lnxPub's `cli/2103mjr/scr/80_urxvt.sh`) +# # ----- +# # update .Xresources +# # ----- +# file=$HOME/.Xresources +# +# # update font setting (so it's understandable by the extension) +# /tmp/99_key_value_modifier.sh URxvt.font xft:NotoSansMono-Light:size=12 : $file +# +# # enable the "resize-font" extension +# /tmp/99_comment_add_remove.sh remove ! Rxvt.perl-ext-common $file +# /tmp/99_key_value_modifier.sh Rxvt.perl-ext-common resize-font : $file +# +# # make the terminal's background transparent +# /tmp/99_comment_add_remove.sh remove '! ' 'URxvt\*inheritPixmap' $file +# /tmp/99_comment_add_remove.sh remove '! ' 'URxvt\*transparent' $file +# /tmp/99_comment_add_remove.sh remove '! ' 'URxvt\*shading' $file +# /tmp/99_key_value_modifier.sh 'URxvt\*shading' 30 : $file + + + # ---------- + # programs + # ---------- + + # cava +# file_name=config +# file_path=/home/${system_user}/.config/cava +# create_dir ${file_path} +# deploy_file "${dots_trg}/cava/${file_name}" "${file_path}/${file_name}" + + ## dbgate + #file_name=settings.json + #file_path=/home/${system_user}/.dbgate + #create_dir ${file_path} + #deploy_file "${dots_trg}/dbgate/${file_name}" "${file_path}/${file_name}" + #cp /home/${system_user}/syncDir/secrets/dbgate/connections.jsonl ${file_path}/ + #chown ${system_user}:${system_user} ${file_path}/connections.jsonl + + # dunst +# file_name=dunstrc +# file_path=/home/${system_user}/.config/dunst +# create_dir ${file_path} +# deploy_file "${dots_trg}/dunst/${file_name}" "${file_path}/${file_name}" + + # lf +# file_name=lfrc +# file_path=/home/${system_user}/.config/lf +# create_dir ${file_path} +# deploy_file "${dots_trg}/lf/${file_name}" "${file_path}/${file_name}" + + # firefox + #file_name=policies.json + #file_path=/usr/lib/firefox/distribution + #deploy_file "${dots_trg}/firefox/${file_name}" "${file_path}/${file_name}" no_chown + + ffpd=$(firefox_profile_dir) + if [[ ${ffpd} == error* ]] ; then + echo ${ffpd} + else + file_name=user.js + file_path=${ffpd} + deploy_file "${dots_trg}/firefox/${file_name}" "${file_path}/${file_name}" + # https://stackoverflow.com/questions/525592/find-and-replace-inside-a-text-file-from-a-bash-command + # https://askubuntu.com/questions/76808/how-do-i-use-variables-in-a-sed-command + sed -i -e "s/{HOSTNAME}/${HOSTNAME}/g" "${file_path}/${file_name}" + + file_name=userChrome.css + file_path=${ffpd}/chrome + create_dir ${file_path} + deploy_file "${dots_trg}/firefox/${file_name}" "${file_path}/${file_name}" + fi + + # gtk (settings found using lxappearance) + # note that the bookmarks file were found in two different locations, so a + # symlink is created below. as well, ".gtkrc-2.0.mine" had no effect, so + # ".gtkrc-2.0" is overwritten +# file_name=settings.ini +# file_path=/home/${system_user}/.config/gtk-3.0 +# create_dir ${file_path} +# deploy_file "${dots_trg}/gtk/${file_name}" "${file_path}/${file_name}" +# gsettings set org.gnome.desktop.interface gtk-theme "Sweet-Dark" + + file_name=.gtk-bookmarks + file_path=/home/${system_user} + deploy_file "${dots_trg}/gtk/${file_name}" "${file_path}/${file_name}" + tmp_file_path_full="/home/${system_user}/.config/gtk-3.0/bookmarks" + trash-put ${tmp_file_path_full} + ln -s "${file_path}/${file_name}" "${tmp_file_path_full}" + +# file_name=.gtkrc-2.0 +# file_path=/home/${system_user} +# deploy_file "${dots_trg}/gtk/${file_name}" "${file_path}/${file_name}" + +# file_name=index.theme +# file_path=/home/${system_user}/.icons/default +# create_dir ${file_path} +# deploy_file "${dots_trg}/gtk/${file_name}" "${file_path}/${file_name}" + + # helix + file_name=config.toml + file_path=/home/${system_user}/.config/helix + create_dir ${file_path} + deploy_file "${dots_trg}/helix/${file_name}" "${file_path}/${file_name}" + + # nitrogen +# file_path=/home/${system_user}/.config/nitrogen +# create_dir ${file_path} +# deploy_file "${dots_trg}/nitrogen/*" "${file_path}/" + + # pcmanfm + # bookmarks found in "dots/gtk/.gtk-bookmarks" + file_name=pcmanfm.conf + file_path=/home/${system_user}/.config/pcmanfm/default + create_dir ${file_path} + deploy_file "${dots_trg}/pcmanfm/${file_name}" "${file_path}/${file_name}" + + # i3wm + if [ ${I3WM} == "true" ] ; then + + # i3 + file_name=config + file_path=/home/${system_user}/.config/i3 + create_dir ${file_path} + deploy_file "${dots_trg}/i3wm/${file_name}" "${file_path}/" + + # i3status + file_name=config + file_path=/home/${system_user}/.config/i3status + create_dir ${file_path} + deploy_file "${dots_trg}/i3status/${file_name}" "${file_path}/" + + fi + + if [ ${I3WM} == "true" ] || [ ${QTILE} == "true" ] ; then + + # xorg + file_path=/home/${system_user} + deploy_file "${dots_trg}/xorg/.*" "${file_path}/" + chmod 755 ${file_path}/.xinitrc + + fi + +fi + +# dots+ (wallpapers, fonts ++) +if [ ${operation} == "dots+" ] ; then + + # declarations + targz_dotsplus_url=https://gitlab.com/pqq/dotsplus/-/archive/main/dotsplus-main.tar.gz + dotsplus_trg=${clone_trg}/dotsplus-main + + echo "***** ${operation} *****" + rm -rf ${dotsplus_trg} + download_repo ${targz_dotsplus_url} + tree ${clone_trg} + + # ---------- + # fonts + # ---------- + file_path=/home/${system_user}/.local/share/fonts + create_dir ${file_path} + deploy_file "${dotsplus_trg}/fonts/install/*" "${file_path}/" + + # ---------- + # images + # ---------- + file_path=/home/${system_user}/.local/share/img + create_dir ${file_path} + deploy_file "${dotsplus_trg}/images/*" "${file_path}/" + + # ---------- + # wallpapers + # ---------- + file_path=/home/${system_user}/.local/share/wp + create_dir ${file_path} + deploy_file "${dotsplus_trg}/wallpapers/install/*" "${file_path}/" + + # ---------- + # miscelanneous + # ---------- + + # vscodium theme + # https://vscodethemes.com/e/sdras.night-owl/night-owl-no-italics?language=javascript + # https://github.com/sdras/night-owl-vscode-theme/tree/main/themes + # if a new version is commited, download and rename the following file: + # https://github.com/sdras/night-owl-vscode-theme/archive/refs/heads/main.zip + file_name=night-owl-vscode-theme-main.zip + file_path=/home/${system_user}/.vscode-oss/extensions + create_dir ${file_path} + deploy_file "${dotsplus_trg}/miscellaneous/${file_name}" "${file_path}/" chown recursive + + # sweet dark gtk theme + # https://github.com/EliverLara/Sweet + # https://github.com/EliverLara/Sweet/releases +# file_name=Sweet-Dark.tar.xz +# file_path=/usr/share/themes +# deploy_file "${dotsplus_trg}/miscellaneous/${file_name}" "${file_path}/" chown recursive + + # ---------- + # chowning + # ---------- + share_dir=/home/${system_user}/.local/share + chown ${system_user}:${system_user} ${share_dir} + chown ${system_user}:${system_user} ${share_dir}/* + +fi