diff options
author | David Runge <david.runge@native-instruments.de> | 2018-11-24 14:19:45 +0100 |
---|---|---|
committer | David Runge <david.runge@native-instruments.de> | 2018-11-24 14:19:45 +0100 |
commit | f4fec3ab8e56e82bf7904c3c19876e2f4e13667d (patch) | |
tree | 23a4dd266333fc6cfeb5ee05c6000ced30724098 /bin | |
parent | 31895b1b525ab673becdb10c7a421f71510f6354 (diff) | |
parent | de1f86528b58faa0844f24b9edb63e5837dd7444 (diff) | |
download | dotfiles-f4fec3ab8e56e82bf7904c3c19876e2f4e13667d.tar.gz dotfiles-f4fec3ab8e56e82bf7904c3c19876e2f4e13667d.tar.bz2 dotfiles-f4fec3ab8e56e82bf7904c3c19876e2f4e13667d.tar.xz dotfiles-f4fec3ab8e56e82bf7904c3c19876e2f4e13667d.zip |
Merge branch 'master' of git.sleepmap.de:config/dotfiles
* 'master' of git.sleepmap.de:config/dotfiles: (36 commits)
.config/packages-community.txt: Adding pd-lua.
.config/systemd/user/mpd@.service: Adding local override for mpd@ user service. Raising LimitRTPrio to 75, as some threads in mpd apparently require it.
.config/jack/*: Changing all configurations for jack@ user service (as its layout has changed).
.gitignore: Removing ignore of .config/systemd (time to add some local overrides).
.config/packages-aur.txt: Removing ssr (now in [community]).
.config/systemd/user/jack@.service: Adding a local jack@ user service, so no package is required.
.config/packages-community.txt: Adding dragonfly-reverb, libmusicxml, ssr and wolf-shaper.
.ncmpcpp/config: Switching to local visualizer fifo. Using visualizer_type ellipse.
.zsh.after/aliases.zsh: Removing useless pacsearch overloading.
bin/setup_screens: Fixing and simplifying various things with the help of shellcheck. Using a separate get_display function to retrieve DISPLAY.
bin/xorg_autolock: Properly quoting variables. Abstracting lock_cmd.
bin/xorg_lock: Properly quote variables. Rename variables for better readibility.
.xprofile: Repaired with the help of shellcheck.
.config/packages-community.txt: Adding marsyas.
.config/packages-aur.txt: Removing gmsynth.lv2 (now in community). Adding librenms and patroneo-git.
.config/packages-community.txt: Adding ams-lv2, beatslash-lv2, gmsynth.lv2, lib32-fluidsynth, lsp-plugins, lvtk, stk and removing ssmtp.
bin/cs: Fixing script according to shellcheck.
.config/packages-community.txt: Adding nextcloud-app-spreed.
.vim/addons-settings.vim: Adding supercollider settings for split in tmux.
.config/linuxsampler.org/Qsampler.conf: Remove, because it makes no sense in repo.
...
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/backlight | 99 | ||||
-rwxr-xr-x | bin/cs | 26 | ||||
-rwxr-xr-x | bin/pkgs | 2 | ||||
-rwxr-xr-x | bin/setup_screens | 66 | ||||
-rwxr-xr-x | bin/startsway | 6 | ||||
-rwxr-xr-x | bin/xorg_autolock | 11 | ||||
-rwxr-xr-x | bin/xorg_lock | 10 |
7 files changed, 165 insertions, 55 deletions
diff --git a/bin/backlight b/bin/backlight new file mode 100755 index 0000000..ac8a466 --- /dev/null +++ b/bin/backlight @@ -0,0 +1,99 @@ +#!/usr/bin/env bash +# set backlight through sysfs + +set -euo pipefail + +# brightness steps in percentage +brightness_step_size=5 +brightness_device=/sys/class/backlight/intel_backlight/brightness +brightness_max_device=/sys/class/backlight/intel_backlight/max_brightness +calculated_brightness=0 +amount=0 + +brightness_steps=$(echo "100/${brightness_step_size}" |bc -l) +maximum_brightness_raw=$(cat $brightness_max_device) +current_brightness_raw=$(cat $brightness_device) +brightness_one_percent_raw=$(echo "${maximum_brightness_raw}/100" |bc -l) +current_brightness_percentage=$(echo "${current_brightness_raw}/(${maximum_brightness_raw}/100)" |bc -l) +current_brightness_remainder=$(echo "${current_brightness_percentage}%${brightness_step_size}"|bc -l) +current_step=$(echo ${current_brightness_percentage}/${brightness_step_size}|bc -l) + +check_if_number() { + if [[ $1 =~ ^[!\-0-9]+$ ]]; then + echo "Not an Integer: $1" + exit 1 + fi +} + +calculate_increment() { + check_if_number $1 + if [ $1 -eq 0 ]; then + echo "There's nothing to do." + exit 1 + fi + if [ $1 -gt 0 ]; then + if [ $(printf '%.0f' $current_brightness_percentage) -eq 100 ]; then + echo "Already at 100%" + exit 0 + elif [ $(printf '%.0f' $(echo "${current_brightness_percentage}+$1"| bc)) -gt 100 ]; then + calculated_brightness=100 + else + calculated_brightness=$(printf '%.0f' $(echo "${current_brightness_percentage}+$1"| bc)) + fi + else + if [ $(printf '%.0f' $current_brightness_percentage) -eq 0 ]; then + echo "Already at 0%" + exit 0 + elif [ $(printf '%.0f' $(echo "${current_brightness_percentage}+$1"| bc)) -lt 0 ]; then + calculated_brightness=0 + else + calculated_brightness=$(printf '%.0f' $(echo "${current_brightness_percentage}+$1"| bc)) + fi + fi +} + +calculate_percentage() { + check_if_number $1 + if [ $1 -lt 0 ] || [ $1 -gt 100 ]; then + echo "Invalid range: $1" + exit 1 + fi + calculated_brightness=$1 +} + +percentage_to_raw() { + printf '%.0f' $(echo "$1*${brightness_one_percent_raw}"|bc -l) +} + +set_brightness() { + echo "$(percentage_to_raw $calculated_brightness)" > $brightness_device +} + +print_help() { + echo -e "Usage:\n $0 -d <decrement_by_x_percent> \n or $0 -i <increment_by_x_percent>" + exit 1 +} + +if [ ${#@} -gt 0 ]; then + while getopts 'hi:s:' flag; do + case "${flag}" in + h) + print_help + ;; + i) + calculate_increment $OPTARG + ;; + s) + calculate_percentage $OPTARG + ;; + *) + echo "Error! Try '${0} -h'." + exit 1 + ;; + esac + done +else + print_help +fi + +set_brightness @@ -19,7 +19,7 @@ function open_cryptdevice() { echo "Crypt device has already been opened: /dev/mapper/$2" echo "Continuing..." else - /usr/bin/sudo /usr/bin/cryptsetup luksOpen "/dev/disk/by-uuid/$1" $2 + /usr/bin/sudo /usr/bin/cryptsetup luksOpen "/dev/disk/by-uuid/$1" "$2" fi else echo "Error: Device $2 (UUID=$1) is not available." @@ -28,7 +28,7 @@ function open_cryptdevice() { } function close_cryptdevice() { - /usr/bin/sudo /usr/bin/cryptsetup luksClose $1 + /usr/bin/sudo /usr/bin/cryptsetup luksClose "$1" } function mount_cryptdevice() { @@ -50,35 +50,35 @@ function unmount_cryptdevice() { if [ -x "$HOME/.config/cs/pre_umount/$1" ]; then "$HOME/.config/cs/pre_umount/$1" fi - /usr/bin/sudo /usr/bin/umount /mnt/$1 + /usr/bin/sudo /usr/bin/umount "/mnt/$1" } function validate_cryptdevice_name() { - local _result_valid_name=$1 + local _result_valid_name="$1" local name_found=0 - local input_name=${2:-} + local input_name="${2:-}" for name in "${!devices[@]}"; do - if [ $name = "${input_name}" ]; then + if [ "$name" = "${input_name}" ]; then name_found=1 - eval $_result_valid_name="'$name_found'" + eval "$_result_valid_name"="$name_found" fi done } -validate_cryptdevice_name valid_name ${device_name} +validate_cryptdevice_name valid_name "${device_name}" if [ $valid_name -eq 0 ]; then echo "No such device: '$device_name'!" exit 1 fi -case $1 in +case "$command_name" in "open") - open_cryptdevice ${devices[${2}]} $2 - mount_cryptdevice $2 + open_cryptdevice "${devices[${2}]}" "$2" + mount_cryptdevice "$2" ;; "close") - unmount_cryptdevice $2 - close_cryptdevice $2 + unmount_cryptdevice "$2" + close_cryptdevice "$2" ;; *) echo "cs only understands 'open' and 'close'." @@ -249,12 +249,10 @@ if [ $list_mode -eq 1 ] && \ elif [ $list_mode -eq 1 ] && \ [ $aur_mode -eq 1 ] && \ [ $community_mode -eq 0 ];then - echo "AUR packages:" cat "$aur_packagelist" elif [ $list_mode -eq 1 ] && \ [ $aur_mode -eq 0 ] && \ [ $community_mode -eq 1 ];then - echo "Community packages:" cat "$community_packagelist" elif [ $list_mode -eq 1 ] && \ [ $aur_mode -eq 1 ] && \ diff --git a/bin/setup_screens b/bin/setup_screens index 1a84bba..7cd0b17 100755 --- a/bin/setup_screens +++ b/bin/setup_screens @@ -2,23 +2,29 @@ # Script to setup screens on login and lid-switch-action # Uses autorandr to determine which screens are connected and which to setup. # -# Per default a configuration named "internal" will be used, if the computer is +# Per default a configuration named "default" will be used, if the computer is # a laptop and not docked. # A configuration named "docked-closed" will be used during login, when the lid # is closed and docked. -# A configuration named "docked-open" will be used during login, when the lid +# A configuration named "docked-all" will be used during login, when the lid # is open and docked. set -e -u lid_state="" -docking_state="" fingerprint="" action="" x_user="" +display="" current_user="" path="" +# get DISPLAY number +get_display() +{ + display=$(pgrep -a Xorg|cut -d':' -f2| cut -d' ' -f1) +} + # get current user running X get_x_user() { @@ -41,15 +47,17 @@ get_path() function get_lid_state() { if [ -r "/proc/acpi/button/lid/LID/state" ]; then - lid_state="$(cat /proc/acpi/button/lid/LID/state|awk '{print $2}')" + lid_state="$(awk '{print $2}' /proc/acpi/button/lid/LID/state)" fi } # Get current docking state ("true" or "false") -function get_docking_state() +function is_docked() { - if [ -x "/usr/bin/busctl" ]; then - docking_state="$(busctl introspect org.freedesktop.login1 /org/freedesktop/login1|grep "\.Docked"|awk '{print $4}')" + if command -v busctl > /dev/null; then + busctl introspect org.freedesktop.login1 /org/freedesktop/login1| grep -E '^.Docked'| awk '{print $4}' + else + echo false fi } @@ -63,8 +71,8 @@ function get_setup_fingerprint() function get_configuration_fingerprint() { local fingerprint="" - if [ -r $HOME/.config/autorandr/$1/setup ]; then - fingerprint="$(md5sum $HOME/.config/autorandr/$1/setup| cut -d ' ' -f 1)" + if [ -r "$HOME/.config/autorandr/$1/setup" ]; then + fingerprint="$(md5sum "$HOME/.config/autorandr/$1/setup"| cut -d ' ' -f 1)" fi echo "$fingerprint" } @@ -73,19 +81,19 @@ function set_configuration() { local state=0 # if the computer is docked - if [ "$docking_state" = "true" ]; then + if is_docked ; then # if there's a lid-switch action if [ -n "$action" ]; then case "$action" in "open") - if [ $(get_configuration_fingerprint "docked-open") == "$fingerprint" ]; then - echo "Loading docked-open." + if [ "$(get_configuration_fingerprint 'docked-all')" == "$fingerprint" ]; then + echo "Loading docked-all." state=1 - autorandr -l docked-open + autorandr -l docked-all fi ;; "close") - if [ $(get_configuration_fingerprint "docked-closed") == "$fingerprint" ]; then + if [ "$(get_configuration_fingerprint 'docked-closed')" == "$fingerprint" ]; then echo "Loading docked-closed." state=1 autorandr -l docked-closed @@ -96,10 +104,10 @@ function set_configuration() # check the lid state case "$lid_state" in "open") - if [[ $(get_configuration_fingerprint "docked-open") == "$fingerprint" ]]; then - echo "Loading docked-open." + if [[ $(get_configuration_fingerprint "docked-all") == "$fingerprint" ]]; then + echo "Loading docked-all." state=1 - autorandr -l docked-open + autorandr -l docked-all fi ;; "closed") @@ -125,11 +133,11 @@ function set_configuration() fi fi fi - # if the screen still has not been setup, try using internal + # if the screen still has not been setup, try using default if [ $state -ne 1 ]; then - if [[ $(get_configuration_fingerprint "internal") == "$fingerprint" ]]; then - echo "Loading internal." - autorandr -l internal + if [[ $(get_configuration_fingerprint "default") == "$fingerprint" ]]; then + echo "Loading default." + autorandr -l default fi fi } @@ -147,27 +155,25 @@ fi logger "Calling 'setup_screens'" get_x_user +get_display get_current_user get_path # Export Xorg DISPLAY and XAUTHORITY -export DISPLAY=$(ls /tmp/.X*|grep "lock"|cut -d '.' -f2| cut -d '-' -f1|sed -e 's/X/:/') -export XAUTHORITY="$(eval echo ~$x_user/.Xauthority)" +export DISPLAY=":$display" +export XAUTHORITY="/home/$x_user/.Xauthority" # if the script caller is the current X user or root (and lightdm is the current X user) -if [ "$current_user" = "$x_user" ] || [ $current_user = "root" -a $x_user = "lightdm" ]; then +if [ "$current_user" == "$x_user" ]; then get_lid_state - get_docking_state get_setup_fingerprint set_configuration -else - if [ $current_user = "root" ]; then +elif [ "$current_user" == "root" ]; then logger "Running $path as user $x_user now." - runuser -l $x_user -c $path - else + runuser -l "$x_user" -c "$path" +else echo "$current_user is not currently running X and is not allowed to let the current X user run this script." exit 1 - fi fi exit 0 diff --git a/bin/startsway b/bin/startsway new file mode 100755 index 0000000..ee46560 --- /dev/null +++ b/bin/startsway @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +export XKB_DEFAULT_LAYOUT=us,de +export XKB_DEFAULT_OPTIONS=grp:alt_shift_toggle +mkdir -p "$HOME/.log" +/usr/bin/sway -dV > "$HOME/.log/sway.log" 2>&1 diff --git a/bin/xorg_autolock b/bin/xorg_autolock index f30ae3e..181548e 100755 --- a/bin/xorg_autolock +++ b/bin/xorg_autolock @@ -4,15 +4,16 @@ set -euo pipefail lock=${XDG_RUNTIME_DIR}/xorg_autolock.lock lock_block=${XDG_RUNTIME_DIR}/xorg_autolock_block +lock_cmd="$HOME/bin/xorg_lock" lockafter=600000 -rm -f ${lock} ${lock_block} +rm -f "${lock}" "${lock_block}" -while [ 1 ]; do - if [ ! -f ${lock} -a ! -f ${lock_block} ];then +while true; do + if [ ! -f "${lock}" ] && [ ! -f "${lock_block}" ];then if [ -x "/usr/bin/xssstate" ]; then - if [ $(xssstate -i) -ge $lockafter ]; then - $HOME/bin/xorg_lock + if [ "$(xssstate -i)" -ge $lockafter ] && [ -x "$lock_cmd" ]; then + $lock_cmd fi else echo "xssstate is note installed!" diff --git a/bin/xorg_lock b/bin/xorg_lock index 648099e..6ddeb0c 100755 --- a/bin/xorg_lock +++ b/bin/xorg_lock @@ -2,13 +2,13 @@ set -euo pipefail -lock=${XDG_RUNTIME_DIR}/xorg_autolock.lock -lockcmd="i3lock -n -e -c 000000 -f" +lock_file=${XDG_RUNTIME_DIR}/xorg_autolock.lock +lock_cmd="i3lock -n -e -c 000000 -f" if [ -x "/usr/bin/i3lock" ]; then - touch ${lock} - ${lockcmd} - rm -f ${lock} + touch "${lock_file}" + ${lock_cmd} + rm -f "${lock_file}" else echo "i3lock is not installed!" exit 1 |