forked from jeanclaude/Dotfiles
UPDATE: Scripts from upstream
This commit is contained in:
parent
cc85c51b4d
commit
2c4fa476d7
|
@ -1,35 +1,48 @@
|
|||
#!/bin/bash
|
||||
# Control the backlight brightness
|
||||
|
||||
sendNotification=false
|
||||
APPNAME=$( basename "$0" | sed "s/\.sh$//" )
|
||||
|
||||
currentLevelCache=~/.cache/backlight/level
|
||||
backlightDev=/sys/class/backlight/intel_backlight/
|
||||
notification="false"
|
||||
|
||||
currentLevelCache=$XDG_CACHE_HOME/backlight/level
|
||||
backlightDev=/sys/class/backlight/intel_backlight
|
||||
|
||||
declare -a levels=(0 50 100 200 500 1000 1500 2000 3500 5000 7500 10000 15000 20000 24242)
|
||||
defaultValue=2
|
||||
|
||||
getCurrentLevel() {
|
||||
# Fetch the cached level and return its value. If no cache exist, create it and return the default value
|
||||
verbose="false"
|
||||
|
||||
if [[ -f $currentLevelCache ]]
|
||||
b_log_debug() {
|
||||
if $verbose
|
||||
then
|
||||
echo $(<$currentLevelCache)
|
||||
else
|
||||
mkdir -p "$(dirname $currentLevelCache)"
|
||||
echo "$defaultValue" > $currentLevelCache
|
||||
echo "$APPNAME: DEBUG: $1" > /dev/tty
|
||||
fi
|
||||
}
|
||||
|
||||
changeLevel() {
|
||||
b_get_current_level() {
|
||||
# Fetch the cached level and return its value. If no cache exist, create it and return the default value
|
||||
|
||||
if [[ ! -f $currentLevelCache ]]
|
||||
then
|
||||
b_log_debug "Create Cache File"
|
||||
mkdir -p "$(dirname $currentLevelCache)"
|
||||
echo "$defaultValue" > $currentLevelCache
|
||||
fi
|
||||
|
||||
echo $(<$currentLevelCache)
|
||||
}
|
||||
|
||||
b_change_level() {
|
||||
# Change the brightness level according the the provided $1. + for increase, - for decrease
|
||||
|
||||
local currentLevel=$(getCurrentLevel)
|
||||
local currentLevel=$(b_get_current_level)
|
||||
|
||||
case "$1" in
|
||||
+)
|
||||
local upperBound="${#levels[@]}"
|
||||
local newLevel=$(( currentLevel + 1 < upperBound ? currentLevel + 1 : currentLevel ))
|
||||
local upperBound=${#levels[@]}
|
||||
local upperBound=$(( upperBound - 1 ))
|
||||
local newLevel=$(( currentLevel + 1 <= upperBound ? currentLevel + 1 : currentLevel ))
|
||||
;;
|
||||
-)
|
||||
local newLevel=$(( currentLevel - 1 >= 0 ? currentLevel - 1 : 0 ))
|
||||
|
@ -40,48 +53,61 @@ changeLevel() {
|
|||
esac
|
||||
|
||||
echo $newLevel > $currentLevelCache
|
||||
echo ${levels[$newLevel]} > "${backlightDev}brightness"
|
||||
echo ${levels[$newLevel]} > "${backlightDev}/brightness"
|
||||
}
|
||||
|
||||
sendNotification() {
|
||||
local currentLevel=$(getCurrentLevel)
|
||||
local maxLevel="${#levels[@]}"
|
||||
local levelDiff=$((maxLevel - currentLevel - 1))
|
||||
b_send_notification() {
|
||||
local level=$(b_get_current_level)
|
||||
local maxLevel=${#levels[@]}
|
||||
local maxLevel=$(( maxLevel - 1 ))
|
||||
|
||||
local barLeft=$(seq -s "=" 0 $currentLevel | sed 's/[0-9]//g')
|
||||
local barRight=$(seq -s "-" 0 $levelDiff | sed 's/[0-9]//g')
|
||||
b_log_debug "Current Level $level"
|
||||
|
||||
displayer dunstify -a "changeBacklight" -u low -r "1234212" " ${barLeft}${barRight}"
|
||||
local level=$(( level * 100 ))
|
||||
local level=$(( level / maxLevel ))
|
||||
|
||||
b_log_debug "Normalized Level $level"
|
||||
|
||||
local message=""
|
||||
|
||||
displayer dunstify -a "changeBacklight" -u low -r "1234212" -h int:value:$level $message
|
||||
}
|
||||
|
||||
usage() {
|
||||
b_usage() {
|
||||
printf "Usage: $0\n-i Increase brighness\n-d decrease brightness\n-n notification\n-h help"
|
||||
}
|
||||
|
||||
while getopts 'idhn' flag
|
||||
while (( $# ))
|
||||
do
|
||||
case "${flag}" in
|
||||
i)
|
||||
case "$1" in
|
||||
-i)
|
||||
changeState=+
|
||||
shift
|
||||
;;
|
||||
d)
|
||||
-d)
|
||||
changeState=-
|
||||
shift
|
||||
;;
|
||||
n)
|
||||
sendNotification=true
|
||||
-n)
|
||||
notification="true"
|
||||
shift
|
||||
;;
|
||||
h | *)
|
||||
usage
|
||||
-v)
|
||||
verbose="true"
|
||||
shift
|
||||
;;
|
||||
-h | *)
|
||||
b_usage
|
||||
exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ -n ${changeState+x} ]]
|
||||
then
|
||||
echo "$(changeLevel $changeState)"
|
||||
echo "$(b_change_level $changeState)"
|
||||
fi
|
||||
|
||||
if [[ $sendNotification = true ]]
|
||||
if [[ $notification = true ]]
|
||||
then
|
||||
$(sendNotification)
|
||||
$(b_send_notification)
|
||||
fi
|
||||
|
|
|
@ -1,55 +1,139 @@
|
|||
#!/bin/bash
|
||||
# Monitor controller
|
||||
|
||||
penMap() {
|
||||
xinput --map-to-output 'Wacom Pen and multitouch sensor Finger' eDP-1
|
||||
xinput --map-to-output 'Wacom Pen and multitouch sensor Pen Pen (0xb6cd249a)' eDP-1
|
||||
xinput --map-to-output 'Wacom Pen and multitouch sensor Pen Eraser (0xb6cd249a)' eDP-1
|
||||
#xinput --map-to-output 'Wacom Pen and multitouch sensor Pen' eDP-1
|
||||
# Make sure pen stick the touchscreen
|
||||
xinput --map-to-output 'Wacom Pen and multitouch sensor Finger touch' eDP-1
|
||||
xinput --map-to-output 'Wacom Pen and multitouch sensor Pen stylus' eDP-1
|
||||
xinput --map-to-output 'Wacom Pen and multitouch sensor Pen eraser' eDP-1
|
||||
APPNAME=$( basename "$0" | sed "s/\.sh$//" )
|
||||
|
||||
intern="eDP-1"
|
||||
extern=""
|
||||
|
||||
verbose="false"
|
||||
|
||||
m_log_debug() {
|
||||
if $verbose
|
||||
then
|
||||
echo "$APPNAME: DEBUG: $1" > /dev/tty
|
||||
fi
|
||||
}
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 \n
|
||||
-h help\n
|
||||
-s built-in monitor only\n
|
||||
-e external monitor only\n
|
||||
-m multi monitor" 1>&2; exit 1;
|
||||
m_log_info() {
|
||||
echo "$APPNAME: $1" > /dev/tty
|
||||
}
|
||||
|
||||
m_log_error() {
|
||||
echo "$APPNAME: ERROR: $1" > /dev/tty
|
||||
}
|
||||
|
||||
m_get_connected() {
|
||||
local out=$(xrandr | grep " connected " | awk '{ print$1 }')
|
||||
m_log_debug "Connected: ${out}"
|
||||
echo $out
|
||||
}
|
||||
|
||||
m_get_disconnected() {
|
||||
local out=$(xrandr | grep " disconnected " | awk '{ print$1 }')
|
||||
echo $out
|
||||
}
|
||||
|
||||
m_penmap() {
|
||||
m_log_debug "Run m_penmap"
|
||||
xinput --map-to-output 'Wacom Pen and multitouch sensor Finger touch' $intern
|
||||
xinput --map-to-output 'Wacom Pen and multitouch sensor Pen stylus' $intern
|
||||
xinput --map-to-output 'Wacom Pen and multitouch sensor Pen eraser' $intern
|
||||
}
|
||||
|
||||
m_usage() {
|
||||
local txt=(
|
||||
"Utility $APPNAME for setting monitors."
|
||||
"Usage: $APPNAME [options]"
|
||||
""
|
||||
"Options:"
|
||||
" --help, -h Print help."
|
||||
" --internal, -i Internal Monitor Only."
|
||||
" --external, -E External Monitor Only."
|
||||
" --extend, -e Extend Internal Monitor."
|
||||
" --clone, -c Cline Internal Monitor."
|
||||
" --verbose, -v Verbose Output."
|
||||
)
|
||||
|
||||
printf "%s\\n" "${txt[@]}"
|
||||
}
|
||||
|
||||
m_set() {
|
||||
|
||||
connected=$(m_get_connected)
|
||||
extern=${connected/"$intern"/}
|
||||
|
||||
m_log_debug "Called m_set with $1"
|
||||
|
||||
cmd="xrandr"
|
||||
|
||||
# Enable correct monitors
|
||||
case "$1" in
|
||||
internal)
|
||||
m_log_info "Enable internal monitor only"
|
||||
cmd="${cmd} --output ${intern} --primary --auto --pos 0x0 --rotate normal --output ${extern} --off"
|
||||
;;
|
||||
external)
|
||||
m_log_info "Enalbe external monitor only"
|
||||
cmd="${cmd} --output ${intern} --off --output ${extern} --primary --auto --scale 2.5x2.5 --rotate normal"
|
||||
;;
|
||||
extend)
|
||||
m_log_info "Extend internal monitor"
|
||||
cmd="${cmd} --output ${intern} --primary --auto --pos 432x2700 --rotate normal --output ${extern} --auto --scale 2x2 --pos 0x0 --rotate normal"
|
||||
;;
|
||||
clone)
|
||||
m_log_info "Clone internal monitor"
|
||||
cmd="${cmd} --output ${intern} --primary --auto --pos 432x2700 --rotate normal --output "$extern" --auto --scale 2x2 --pos 0x0 --rotate normal --same-as ${intern}"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Disable unused monitors
|
||||
for d in $(m_get_disconnected)
|
||||
do
|
||||
cmd="${cmd} --output ${d} --off"
|
||||
done
|
||||
|
||||
m_log_debug "Run ${cmd}"
|
||||
eval "$cmd"
|
||||
|
||||
m_penmap
|
||||
~/.fehbg
|
||||
}
|
||||
|
||||
# No flags passed
|
||||
if [[ $# -eq 0 ]]
|
||||
then
|
||||
usage
|
||||
m_usage
|
||||
fi
|
||||
|
||||
# Flags passed
|
||||
while getopts 'hsme' flag
|
||||
while (( $# ))
|
||||
do
|
||||
case "${flag}" in
|
||||
s)
|
||||
# Single monitor built-in
|
||||
xrandr --output eDP-1 --primary --mode 3840x2160 --pos 0x0 --rotate normal --output DP-1 --off --output HDMI-1 --off --output DP-2 --off
|
||||
penMap
|
||||
~/.fehbg
|
||||
m_log_debug "Parse Arg $1"
|
||||
case "$1" in
|
||||
--internal | -i)
|
||||
mode="internal"
|
||||
shift
|
||||
;;
|
||||
e)
|
||||
# Single monitor external
|
||||
xrandr --output eDP-1 --off --output DP-1 --off --output HDMI-1 --primary --mode 1920x1080 --scale 2.5x2.5 --rotate normal --output DP-2 --off
|
||||
penMap
|
||||
~/.fehbg
|
||||
--external | -E)
|
||||
mode="external"
|
||||
shift
|
||||
;;
|
||||
m)
|
||||
# Multiple monitor
|
||||
xrandr --output eDP-1 --primary --mode 3840x2160 --pos 0x0 --rotate normal --output DP-1 --off --output HDMI-1 --mode 1920x1080 --scale 2x2 --pos 3840x0 --rotate normal --output DP-2 --off
|
||||
penMap
|
||||
~/.fehbg
|
||||
--extend | -e)
|
||||
mode="extend"
|
||||
shift
|
||||
;;
|
||||
h | *)
|
||||
usage
|
||||
--clone | -c)
|
||||
mode="clone"
|
||||
shift
|
||||
;;
|
||||
--verbose | -v)
|
||||
verbose="true"
|
||||
shift
|
||||
;;
|
||||
--help | -h | *)
|
||||
m_usage
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
m_set "$mode"
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
#!/bin/bash
|
||||
|
||||
o0="Cancel"
|
||||
o1="Only eDP-1"
|
||||
o2="Only HDMI-1"
|
||||
o3="Dual Screen eDP-1 -> HDMI-1"
|
||||
o4="Clone Screen eDP-1 -> HDMI-1"
|
||||
o1="Internal Only"
|
||||
o2="External Only"
|
||||
o3="Extend Internal"
|
||||
o4="Clone Internal"
|
||||
|
||||
options="$o0\n$o1\n$o2\n$o3\n$o4"
|
||||
|
||||
|
@ -13,15 +13,15 @@ echo $selection
|
|||
|
||||
case $selection in
|
||||
$o1)
|
||||
displayer /home/gwen/bin/monitor.sh -s
|
||||
displayer /home/gwen/bin/monitor.sh --internal
|
||||
;;
|
||||
$o2)
|
||||
displayer /home/gwen/bin/monitor.sh -e
|
||||
displayer /home/gwen/bin/monitor.sh --external
|
||||
;;
|
||||
$o3)
|
||||
displayer /home/gwen/bin/monitor.sh -m
|
||||
displayer /home/gwen/bin/monitor.sh --extend
|
||||
;;
|
||||
$o4)
|
||||
displayer /home/gwen/bin/monitor.sh -m
|
||||
displayer /home/gwen/bin/monitor.sh --clone
|
||||
;;
|
||||
esac
|
||||
|
|
|
@ -1,76 +1,114 @@
|
|||
#!/bin/bash
|
||||
# Control the volume
|
||||
# Might require setting the default sink using
|
||||
# pactl set-default-sink <someSink>
|
||||
|
||||
sendNotification=false
|
||||
APPNAME=$( basename "$0" | sed "s/\.sh$//" )
|
||||
|
||||
changeLevel() {
|
||||
notification="false"
|
||||
sink="@DEFAULT_SINK@"
|
||||
maxVolumeLevel=120
|
||||
|
||||
verbose="false"
|
||||
|
||||
v_log_debug() {
|
||||
if $verbose
|
||||
then
|
||||
echo "$APPNAME: DEBUG: $1" > /dev/tty
|
||||
fi
|
||||
}
|
||||
|
||||
v_run_pactl() {
|
||||
out=$(sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 pactl $1)
|
||||
echo $out
|
||||
}
|
||||
|
||||
v_change_level() {
|
||||
# Change the volume according the the provided $1. + for increase, - for decrease
|
||||
|
||||
case "$1" in
|
||||
+)
|
||||
sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 pactl set-sink-volume @DEFAULT_SINK@ +5%
|
||||
#sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 pactl set-sink-volume "$sink" +5%
|
||||
v_run_pactl "set-sink-volume $sink +5%"
|
||||
;;
|
||||
-)
|
||||
sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 pactl set-sink-volume @DEFAULT_SINK@ -5%
|
||||
#sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 pactl set-sink-volume "$sink" -5%
|
||||
v_run_pactl "set-sink-volume $sink -5%"
|
||||
;;
|
||||
m)
|
||||
sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 pactl set-sink-mute @DEFAULT_SINK@ toggle
|
||||
#sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 pactl set-sink-mute "$sink" toggle
|
||||
v_run_pactl "set-sink-mute $sink toggle"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
}
|
||||
|
||||
sendNotification() {
|
||||
local mute=$(sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 pactl list sinks | grep '^[[:space:]]Mute:' | sed -e 's_.*: \(\w\)_\1_')
|
||||
local currentLevel=$(sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 pactl list sinks | grep '^[[:space:]]Volume:' | head -n $(( $SINK + 1 )) | tail -n 1 | sed -e 's,.* \([0-9][0-9]*\)%.*,\1,')
|
||||
currentLevel=$((currentLevel / 10 + 1))
|
||||
v_send_notification() {
|
||||
local mute=$(v_run_pactl "get-sink-mute $sink" | sed -e 's_.*: \(\w\)_\1_')
|
||||
|
||||
local levelDiff=$((20 - currentLevel))
|
||||
local level=$(v_run_pactl "get-sink-volume $sink" | head -n $(( $SINK + 1 )) | tail -n 1 | sed -e 's,.* \([0-9][0-9]*\)%.*,\1,')
|
||||
|
||||
|
||||
v_log_debug "Current Level: $level"
|
||||
|
||||
level=$(( level * 100 ))
|
||||
level=$(( level / $maxVolumeLevel ))
|
||||
|
||||
v_log_debug "Normalized Level: $level"
|
||||
|
||||
local levelDiff=$((20 - level))
|
||||
|
||||
if [[ $mute == no ]]
|
||||
then
|
||||
local barLeft=$(seq -s "=" 0 $currentLevel | sed 's/[0-9]//g')
|
||||
local message=" Unmute"
|
||||
else
|
||||
local barLeft=$(seq -s "x" 0 $currentLevel | sed 's/[0-9]//g')
|
||||
local message=" Mute"
|
||||
fi
|
||||
local barRight=$(seq -s "-" 0 $levelDiff | sed 's/[0-9]//g')
|
||||
|
||||
displayer dunstify -a "changeVolume" -u low -r "38462528" " ${barLeft}${barRight}"
|
||||
displayer dunstify -a "changeVolume" -u low -r "38462528" -h int:value:$level $message
|
||||
}
|
||||
|
||||
usage() {
|
||||
v_usage() {
|
||||
printf "Usage: $0\n-i Increase volume\n-d decrease volumei\n-m mute\n-n notification\n-h help"
|
||||
}
|
||||
|
||||
while getopts 'idhnm' flag
|
||||
while (( $# ))
|
||||
do
|
||||
case "${flag}" in
|
||||
i)
|
||||
case "$1" in
|
||||
-i)
|
||||
changeState=+
|
||||
shift
|
||||
;;
|
||||
d)
|
||||
-d)
|
||||
changeState=-
|
||||
shift
|
||||
;;
|
||||
m)
|
||||
-m)
|
||||
changeState=m
|
||||
shift
|
||||
;;
|
||||
n)
|
||||
sendNotification=true
|
||||
-n)
|
||||
notification="true"
|
||||
shift
|
||||
;;
|
||||
h | *)
|
||||
usage
|
||||
-v)
|
||||
verbose="true"
|
||||
shift
|
||||
;;
|
||||
-h | *)
|
||||
v_usage
|
||||
exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ -n ${changeState+x} ]]
|
||||
then
|
||||
echo "$(changeLevel $changeState)"
|
||||
echo "$(v_change_level $changeState)"
|
||||
fi
|
||||
|
||||
if [[ $sendNotification = true ]]
|
||||
if $notification
|
||||
then
|
||||
$(sendNotification)
|
||||
v_log_debug "Send Notification"
|
||||
$(v_send_notification)
|
||||
fi
|
||||
|
|
Loading…
Reference in New Issue