|
|
|
#!/bin/bash
|
|
|
|
###
|
|
|
|
# This file is part of the code-cloppers openbox setup. Use at your own risk.
|
|
|
|
#
|
|
|
|
# This script should setup openbox for a user on ubuntu
|
|
|
|
|
|
|
|
set -eo pipefail
|
|
|
|
|
|
|
|
is-in-path() {
|
|
|
|
which "$1" &>>/dev/null
|
|
|
|
}
|
|
|
|
|
|
|
|
install-apt-dependencies() {
|
|
|
|
echo "=> Installing apt dependencies"
|
|
|
|
set -x
|
|
|
|
sudo apt-get update && \
|
|
|
|
sudo apt-get install xcompmgr openbox albert plank
|
|
|
|
set +x
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
install-dependencies() {
|
|
|
|
echo "=> Checking dependencies"
|
|
|
|
if ! is-in-path xcompmgr || ! is-in-path openbox; then
|
|
|
|
install-apt-dependencies
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
here() {
|
|
|
|
dirname "$(readlink -f "${BASH_SOURCE[0]}")"
|
|
|
|
}
|
|
|
|
|
|
|
|
config-dir() {
|
|
|
|
if ! [[ $# -ge 1 ]]; then
|
|
|
|
echo "$(caller) Expected argument" >&2
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
declare app="$1"
|
|
|
|
echo "$HOME/.config/$app"
|
|
|
|
}
|
|
|
|
|
|
|
|
create-dir-if-not-exists() {
|
|
|
|
[[ -d $1 ]] || mkdir -p "$1"
|
|
|
|
}
|
|
|
|
|
|
|
|
copy-files-in-dir-to() {
|
|
|
|
declare source="$1" destination="$2"
|
|
|
|
create-dir-if-not-exists "$destination"
|
|
|
|
cp -r "$source/"* "$destination"/
|
|
|
|
}
|
|
|
|
|
|
|
|
copy-config() {
|
|
|
|
echo "=> Copying config"
|
|
|
|
|
|
|
|
copy-files-in-dir-to "$(here)/config/albert" "$(config-dir albert)"
|
|
|
|
copy-files-in-dir-to "$(here)/config/openbox" "$(config-dir openbox)"
|
|
|
|
}
|
|
|
|
|
|
|
|
add-custom-startup() {
|
|
|
|
declare startup_file=''
|
|
|
|
read -rep "Please provide a path to a custom startup script for your sessions (default: ~/.startup):" \
|
|
|
|
startup_file
|
|
|
|
|
|
|
|
[[ -z $startup_file ]] && startup_file="$HOME/.startup"
|
|
|
|
printf 'source "%s"\n' "$startup_file" >> "$(config-dir openbox)/autostart.sh"
|
|
|
|
}
|
|
|
|
|
|
|
|
setup-openbox-for-user() {
|
|
|
|
install-dependencies
|
|
|
|
copy-config
|
|
|
|
add-custom-startup
|
|
|
|
|
|
|
|
echo "=> Finished"
|
|
|
|
}
|
|
|
|
|
|
|
|
setup-openbox-for-user
|