]> git.mar77i.info Git - rcfiles/blob - deploy.sh
initial commit
[rcfiles] / deploy.sh
1 #!/usr/bin/env bash
2
3 srcdir="$(dirname "$(realpath -Pe "${0}")")"
4
5 old_dest() {
6 local REPLY
7 local ret=0
8 while :; do
9 read -p "replace old configuration ${1} (Y/n)? "
10 case "${REPLY,,}" in
11 n|no)
12 ret=1
13 break
14 ;;
15 y|yes)
16 break
17 ;;
18 *)
19 echo "Error: invalid input: ${REPLY}" >&2
20 ;;
21 esac
22 done
23 return "${ret}"
24 }
25
26 try_install() {
27 local src="${srcdir}/${1}"
28 local dest="${XDG_CONFIG_HOME}/${1}"
29 local skip=0
30 local replace=1
31 mkdir -p "${dest%/*}"
32 if [[ -f "${dest}" ]] && ! diff -q "${src}" "${dest}" >/dev/null; then
33 while :; do
34 read -p "${dest} exists: (diff/replace/skip): "
35 case "${REPLY,,}" in
36 diff)
37 diff -u "${src}" "${dest}" | less
38 ;;
39 replace)
40 if [[ -f "${dest}.old" ]] && ! old_dest "${dest}.old"; then
41 replace=0
42 fi
43 if (( replace )); then
44 mv "${dest}" "${dest}.old"
45 fi
46 break
47 ;;
48 skip)
49 skip=1
50 break
51 ;;
52 *)
53 echo "Error: invalid input: ${REPLY}" >&2
54 ;;
55 esac
56 done
57 fi
58 if (( skip == 0 )); then
59 cp "${src}" "${dest}"
60 fi
61 if [[ -f "${dest}.old" ]]; then
62 echo "Found old configuration in ${dest}.old"
63 fi
64 }
65
66 for f in "openbox/rc.xml" "qterminal.org/qterminal.ini"; do
67 try_install "${f}"
68 done
69
70 openbox_maj="$(openbox --version | head -n 1 | cut -d\ -f 2 | cut -d. -f 1)"
71 if [[ ! -d "/usr/share/themes/Artix-dark/openbox-${openbox_maj}/" ]]; then
72 echo "Warning: Artix-dark theme seems unavailable" >&2
73 fi
74 openbox --reconfigure
75
76 hide_autostart() {
77 local src="/etc/xdg/autostart/${f}"
78 local dest="${XDG_CONFIG_HOME}/autostart/${f}"
79 if [[ ! -e "${dest}" ]]; then
80 if [[ -e "${src}" ]]; then
81 cp "${src}" "${dest}"
82 else
83 echo "Desktop file missing or not installed: ${f}" >&2
84 return
85 fi
86 fi
87 if ! grep -Fq "Hidden=true" "${dest}"; then
88 sed -r -i '/^Exec=/i Hidden=true' "${dest}"
89 fi
90 }
91
92 hidden_desktop_files=(
93 geoclue-demo-agent.desktop
94 lxqt-globalkeyshortcuts.desktop
95 )
96 for f in "${hidden_desktop_files[@]}"; do
97 hide_autostart "${f}"
98 done