You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
3.1 KiB
Bash
151 lines
3.1 KiB
Bash
#!/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 \
|
|
dunst \
|
|
numix-icon-theme-circle \
|
|
vorbis-tools \
|
|
sound-theme-freedesktop
|
|
set +x
|
|
}
|
|
|
|
are-in-path() {
|
|
[[ $# -gt 0 ]] || return 0
|
|
is-in-path "$1" || return 1
|
|
shift
|
|
are-in-path "$@"
|
|
}
|
|
|
|
asset-dirs-exist() {
|
|
[[ -d /usr/share/icons/Numix-Circle ]] && [[ -d /usr/share/sounds/freedesktop ]]
|
|
}
|
|
|
|
install-dependencies() {
|
|
echo "=> Checking dependencies"
|
|
if ! are-in-path xcompmgr openbox dunst ogg123 || ! asset-dirs-exist; then
|
|
install-apt-dependencies
|
|
fi
|
|
|
|
declare notify_send_dir=''
|
|
notify_send_dir="$(local-dir)/applications/notify-send.sh"
|
|
if ! [[ -d "$notify_send_dir" ]]; then
|
|
mkdir -p "$notify_send_dir"
|
|
git clone git@github.com:vlevit/notify-send.sh.git "$notify_send_dir"
|
|
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)"
|
|
copy-files-in-dir-to "$(here)/config/dunst" "$(config-dir dunst)"
|
|
}
|
|
|
|
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"
|
|
}
|
|
|
|
ppa-has-been-added() {
|
|
declare ppa="$1"
|
|
grep -q "^deb .*$ppa" /etc/apt/sources.list /etc/apt/sources.list.d/*
|
|
}
|
|
|
|
add-ppa-if-not-added() {
|
|
declare ppa="$1"
|
|
if ! ppa-has-been-added "$ppa"; then
|
|
printf 'Adding ppa "%s"\n' "$ppa"
|
|
sudo add-apt-repository "ppa:$ppa"
|
|
fi
|
|
}
|
|
|
|
add-ppas() {
|
|
add-ppa-if-not-added 'nilarimogard/webupd8'
|
|
add-ppa-if-not-added 'numix/ppa'
|
|
}
|
|
|
|
cache-dir() {
|
|
echo "$HOME/.cache/clopper-ob"
|
|
}
|
|
|
|
local-dir() {
|
|
echo "$HOME/.local/share/clopper-ob"
|
|
}
|
|
|
|
create-cache-dir() {
|
|
mkdir -p "$(cache-dir)"
|
|
}
|
|
|
|
create-local-dir() {
|
|
mkdir -p "$(local-dir)"
|
|
}
|
|
|
|
copy-bins-to-local-dir() {
|
|
cp -r "$(here)/bin" "$(local-dir)/"
|
|
}
|
|
|
|
copy-libs-to-local-dir() {
|
|
cp -r "$(here)/lib" "$(local-dir)/"
|
|
}
|
|
|
|
setup-openbox-for-user() {
|
|
add-ppas
|
|
install-dependencies
|
|
copy-config
|
|
create-cache-dir
|
|
create-local-dir
|
|
copy-bins-to-local-dir
|
|
copy-libs-to-local-dir
|
|
add-custom-startup
|
|
|
|
echo "=> Finished"
|
|
}
|
|
|
|
setup-openbox-for-user
|