aboutsummaryrefslogtreecommitdiffstats
path: root/bin/setup_screens
diff options
context:
space:
mode:
Diffstat (limited to 'bin/setup_screens')
-rwxr-xr-xbin/setup_screens179
1 files changed, 0 insertions, 179 deletions
diff --git a/bin/setup_screens b/bin/setup_screens
deleted file mode 100755
index 7cd0b17..0000000
--- a/bin/setup_screens
+++ /dev/null
@@ -1,179 +0,0 @@
-#!/usr/bin/env bash
-# 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 "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-all" will be used during login, when the lid
-# is open and docked.
-
-set -e -u
-
-lid_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()
-{
- x_user="$(loginctl list-sessions --no-legend| grep "seat"| awk '{print $3}')"
-}
-
-# get current user running this script
-get_current_user()
-{
- current_user="$(whoami)"
-}
-
-# get full path to this script
-get_path()
-{
- path="$0"
-}
-
-# Get current lid state ("open" or "closed")
-function get_lid_state()
-{
- if [ -r "/proc/acpi/button/lid/LID/state" ]; then
- lid_state="$(awk '{print $2}' /proc/acpi/button/lid/LID/state)"
- fi
-}
-
-# Get current docking state ("true" or "false")
-function is_docked()
-{
- 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
-}
-
-# Get the md5sum of the current autorandr fingerprint
-function get_setup_fingerprint()
-{
- fingerprint="$(autorandr --fingerprint| md5sum| cut -d ' ' -f 1)"
-}
-
-# Get the md5sum of a autorandr configuration
-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)"
- fi
- echo "$fingerprint"
-}
-
-function set_configuration()
-{
- local state=0
- # if the computer is docked
- if is_docked ; then
- # if there's a lid-switch action
- if [ -n "$action" ]; then
- case "$action" in
- "open")
- if [ "$(get_configuration_fingerprint 'docked-all')" == "$fingerprint" ]; then
- echo "Loading docked-all."
- state=1
- autorandr -l docked-all
- fi
- ;;
- "close")
- if [ "$(get_configuration_fingerprint 'docked-closed')" == "$fingerprint" ]; then
- echo "Loading docked-closed."
- state=1
- autorandr -l docked-closed
- fi
- ;;
- esac
- else
- # check the lid state
- case "$lid_state" in
- "open")
- if [[ $(get_configuration_fingerprint "docked-all") == "$fingerprint" ]]; then
- echo "Loading docked-all."
- state=1
- autorandr -l docked-all
- fi
- ;;
- "closed")
- if [[ $(get_configuration_fingerprint "docked-closed") == "$fingerprint" ]]; then
- echo "Loading docked-closed."
- state=1
- autorandr -l docked-closed
- fi
- ;;
- *)
- echo "Your computer is docked but has no lid?!"
- exit 1
- ;;
- esac
- fi
- # else if not docked
- else
- if [ "$action" = "open" ]; then
- if [[ $(get_configuration_fingerprint "external") == "$fingerprint" ]]; then
- echo "Loading external."
- state=1
- autorandr -l external
- fi
- fi
- fi
- # if the screen still has not been setup, try using default
- if [ $state -ne 1 ]; then
- if [[ $(get_configuration_fingerprint "default") == "$fingerprint" ]]; then
- echo "Loading default."
- autorandr -l default
- fi
- fi
-}
-
-# check if autorandr is installed
-if [ ! -x "/usr/bin/autorandr" ]; then
- echo "Autorandr is not installed."
- exit 1
-fi
-
-# get (lid-switch) action from parameter ("open" or "close")
-if [ "$#" -eq 1 ]; then
- action="$1"
-fi
-
-logger "Calling 'setup_screens'"
-get_x_user
-get_display
-get_current_user
-get_path
-
-# Export Xorg DISPLAY and 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" ]; then
- get_lid_state
- get_setup_fingerprint
- set_configuration
-elif [ "$current_user" == "root" ]; then
- logger "Running $path as user $x_user now."
- 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
-
-exit 0