rofi power + nvidia settings
This commit is contained in:
parent
5c21103fb2
commit
e2e93f227f
|
@ -2,15 +2,15 @@
|
||||||
|
|
||||||
# monitor setup
|
# monitor setup
|
||||||
if [[ $(cat /etc/hostname) == "gojou" ]]; then
|
if [[ $(cat /etc/hostname) == "gojou" ]]; then
|
||||||
bspc monitor DP-1 -d 1 2 3 4 5 101
|
bspc monitor DP-0 -d 1 2 3 4 5 101
|
||||||
bspc monitor HDMI-1 -d 6 7 8 9 102
|
bspc monitor HDMI-0 -d 6 7 8 9 102
|
||||||
elif [[ $(cat /etc/hostname) == "uzui" ]]; then
|
elif [[ $(cat /etc/hostname) == "uzui" ]]; then
|
||||||
bspc monitor -d 1 2 3 4 5 6 7 8 9 101
|
bspc monitor -d 1 2 3 4 5 6 7 8 9 101
|
||||||
else
|
else
|
||||||
bspc monitor -d 1 101
|
bspc monitor -d 1 101
|
||||||
fi
|
fi
|
||||||
|
|
||||||
bspc wm -O DP-1 HDMI-1
|
bspc wm -O DP-0 HDMI-0
|
||||||
|
|
||||||
|
|
||||||
# change window settings
|
# change window settings
|
||||||
|
|
247
scripts/rofi-power-menu
Executable file
247
scripts/rofi-power-menu
Executable file
|
@ -0,0 +1,247 @@
|
||||||
|
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# This script defines just a mode for rofi instead of being a self-contained
|
||||||
|
# executable that launches rofi by itself. This makes it more flexible than
|
||||||
|
# running rofi inside this script as now the user can call rofi as one pleases.
|
||||||
|
# For instance:
|
||||||
|
#
|
||||||
|
# rofi -show powermenu -modi powermenu:./rofi-power-menu
|
||||||
|
#
|
||||||
|
# See README.md for more information.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
|
||||||
|
# All supported choices
|
||||||
|
all=(shutdown reboot suspend hibernate logout lockscreen)
|
||||||
|
|
||||||
|
# By default, show all (i.e., just copy the array)
|
||||||
|
show=("${all[@]}")
|
||||||
|
|
||||||
|
declare -A texts
|
||||||
|
texts[lockscreen]="lock screen"
|
||||||
|
texts[switchuser]="switch user"
|
||||||
|
texts[logout]="log out"
|
||||||
|
texts[suspend]="suspend"
|
||||||
|
texts[hibernate]="hibernate"
|
||||||
|
texts[reboot]="reboot"
|
||||||
|
texts[shutdown]="shut down"
|
||||||
|
|
||||||
|
declare -A icons
|
||||||
|
icons[lockscreen]="\uf023"
|
||||||
|
icons[switchuser]="\uf518"
|
||||||
|
icons[logout]="\uf842"
|
||||||
|
icons[suspend]="\uf9b1"
|
||||||
|
icons[hibernate]="\uf7c9"
|
||||||
|
icons[reboot]="\ufc07"
|
||||||
|
icons[shutdown]="\uf011"
|
||||||
|
icons[cancel]="\u00d7"
|
||||||
|
|
||||||
|
declare -A actions
|
||||||
|
actions[lockscreen]="loginctl lock-session ${XDG_SESSION_ID-}"
|
||||||
|
#actions[switchuser]="???"
|
||||||
|
actions[logout]="loginctl terminate-session ${XDG_SESSION_ID-}"
|
||||||
|
actions[suspend]="systemctl suspend"
|
||||||
|
actions[hibernate]="systemctl hibernate"
|
||||||
|
actions[reboot]="systemctl reboot"
|
||||||
|
actions[shutdown]="systemctl poweroff"
|
||||||
|
|
||||||
|
# By default, ask for confirmation for actions that are irreversible
|
||||||
|
confirmations=(reboot shutdown logout)
|
||||||
|
|
||||||
|
# By default, no dry run
|
||||||
|
dryrun=false
|
||||||
|
showsymbols=true
|
||||||
|
|
||||||
|
function check_valid {
|
||||||
|
option="$1"
|
||||||
|
shift 1
|
||||||
|
for entry in "${@}"
|
||||||
|
do
|
||||||
|
if [ -z "${actions[$entry]+x}" ]
|
||||||
|
then
|
||||||
|
echo "Invalid choice in $1: $entry" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Parse command-line options
|
||||||
|
parsed=$(getopt --options=h --longoptions=help,dry-run,confirm:,choices:,choose:,symbols,no-symbols --name "$0" -- "$@")
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo 'Terminating...' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
eval set -- "$parsed"
|
||||||
|
unset parsed
|
||||||
|
while true; do
|
||||||
|
case "$1" in
|
||||||
|
"-h"|"--help")
|
||||||
|
echo "rofi-power-menu - a power menu mode for Rofi"
|
||||||
|
echo
|
||||||
|
echo "Usage: rofi-power-menu [--choices CHOICES] [--confirm CHOICES]"
|
||||||
|
echo " [--choose CHOICE] [--dry-run] [--symbols|--no-symbols]"
|
||||||
|
echo
|
||||||
|
echo "Use with Rofi in script mode. For instance, to ask for shutdown or reboot:"
|
||||||
|
echo
|
||||||
|
echo " rofi -show menu -modi \"menu:rofi-power-menu --choices=shutdown/reboot\""
|
||||||
|
echo
|
||||||
|
echo "Available options:"
|
||||||
|
echo " --dry-run Don't perform the selected action but print it to stderr."
|
||||||
|
echo " --choices CHOICES Show only the selected choices in the given order. Use / "
|
||||||
|
echo " as the separator. Available choices are lockscreen, logout,"
|
||||||
|
echo " suspend, hibernate, reboot and shutdown. By default, all"
|
||||||
|
echo " available choices are shown."
|
||||||
|
echo " --confirm CHOICES Require confirmation for the gives choices only. Use / as"
|
||||||
|
echo " the separator. Available choices are lockscreen, logout,"
|
||||||
|
echo " suspend, hibernate, reboot and shutdown. By default, only"
|
||||||
|
echo " irreversible actions logout, reboot and shutdown require"
|
||||||
|
echo " confirmation."
|
||||||
|
echo " --choose CHOICE Preselect the given choice and only ask for a confirmation"
|
||||||
|
echo " (if confirmation is set to be requested). It is strongly"
|
||||||
|
echo " recommended to combine this option with --confirm=CHOICE"
|
||||||
|
echo " if the choice wouldn't require confirmation by default."
|
||||||
|
echo " Available choices are lockscreen, logout, suspend,"
|
||||||
|
echo " hibernate, reboot and shutdown."
|
||||||
|
echo " --[no-]symbols Show Unicode symbols or not. Requires a font with support"
|
||||||
|
echo " for the symbols. Use, for instance, fonts from the"
|
||||||
|
echo " Nerdfonts collection. By default, they are shown"
|
||||||
|
echo " -h,--help Show this help text."
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
"--dry-run")
|
||||||
|
dryrun=true
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
"--confirm")
|
||||||
|
IFS='/' read -ra confirmations <<< "$2"
|
||||||
|
check_valid "$1" "${confirmations[@]}"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
"--choices")
|
||||||
|
IFS='/' read -ra show <<< "$2"
|
||||||
|
check_valid "$1" "${show[@]}"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
"--choose")
|
||||||
|
# Check that the choice is valid
|
||||||
|
check_valid "$1" "$2"
|
||||||
|
selectionID="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
"--symbols")
|
||||||
|
showsymbols=true
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
"--no-symbols")
|
||||||
|
showsymbols=false
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
"--")
|
||||||
|
shift
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Internal error" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Define the messages after parsing the CLI options so that it is possible to
|
||||||
|
# configure them in the future.
|
||||||
|
|
||||||
|
function write_message {
|
||||||
|
icon="<span font_size=\"medium\">$1</span>"
|
||||||
|
text="<span font_size=\"medium\">$2</span>"
|
||||||
|
if [ "$showsymbols" = "true" ]
|
||||||
|
then
|
||||||
|
echo -n "\u200e$icon \u2068$text\u2069"
|
||||||
|
else
|
||||||
|
echo -n "$text"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function print_selection {
|
||||||
|
echo -e "$1" | $(read -r -d '' entry; echo "echo $entry")
|
||||||
|
}
|
||||||
|
|
||||||
|
declare -A messages
|
||||||
|
declare -A confirmationMessages
|
||||||
|
for entry in "${all[@]}"
|
||||||
|
do
|
||||||
|
messages[$entry]=$(write_message "${icons[$entry]}" "${texts[$entry]^}")
|
||||||
|
done
|
||||||
|
for entry in "${all[@]}"
|
||||||
|
do
|
||||||
|
confirmationMessages[$entry]=$(write_message "${icons[$entry]}" "Yes, ${texts[$entry]}")
|
||||||
|
done
|
||||||
|
confirmationMessages[cancel]=$(write_message "${icons[cancel]}" "No, cancel")
|
||||||
|
|
||||||
|
if [ $# -gt 0 ]
|
||||||
|
then
|
||||||
|
# If arguments given, use those as the selection
|
||||||
|
selection="${@}"
|
||||||
|
else
|
||||||
|
# Otherwise, use the CLI passed choice if given
|
||||||
|
if [ -n "${selectionID+x}" ]
|
||||||
|
then
|
||||||
|
selection="${messages[$selectionID]}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Don't allow custom entries
|
||||||
|
echo -e "\0no-custom\x1ftrue"
|
||||||
|
# Use markup
|
||||||
|
echo -e "\0markup-rows\x1ftrue"
|
||||||
|
|
||||||
|
if [ -z "${selection+x}" ]
|
||||||
|
then
|
||||||
|
echo -e "\0prompt\x1fPower menu"
|
||||||
|
for entry in "${show[@]}"
|
||||||
|
do
|
||||||
|
echo -e "${messages[$entry]}\0icon\x1f${icons[$entry]}"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
for entry in "${show[@]}"
|
||||||
|
do
|
||||||
|
if [ "$selection" = "$(print_selection "${messages[$entry]}")" ]
|
||||||
|
then
|
||||||
|
# Check if the selected entry is listed in confirmation requirements
|
||||||
|
for confirmation in "${confirmations[@]}"
|
||||||
|
do
|
||||||
|
if [ "$entry" = "$confirmation" ]
|
||||||
|
then
|
||||||
|
# Ask for confirmation
|
||||||
|
echo -e "\0prompt\x1fAre you sure"
|
||||||
|
echo -e "${confirmationMessages[$entry]}\0icon\x1f${icons[$entry]}"
|
||||||
|
echo -e "${confirmationMessages[cancel]}\0icon\x1f${icons[cancel]}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# If not, then no confirmation is required, so mark confirmed
|
||||||
|
selection=$(print_selection "${confirmationMessages[$entry]}")
|
||||||
|
fi
|
||||||
|
if [ "$selection" = "$(print_selection "${confirmationMessages[$entry]}")" ]
|
||||||
|
then
|
||||||
|
if [ $dryrun = true ]
|
||||||
|
then
|
||||||
|
# Tell what would have been done
|
||||||
|
echo "Selected: $entry" >&2
|
||||||
|
else
|
||||||
|
# Perform the action
|
||||||
|
${actions[$entry]}
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [ "$selection" = "$(print_selection "${confirmationMessages[cancel]}")" ]
|
||||||
|
then
|
||||||
|
# Do nothing
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# The selection didn't match anything, so raise an error
|
||||||
|
echo "Invalid selection: $selection" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
|
@ -18,6 +18,10 @@ super + @space
|
||||||
super + Tab
|
super + Tab
|
||||||
rofi -show-icons -modi window -show
|
rofi -show-icons -modi window -show
|
||||||
|
|
||||||
|
# show power options
|
||||||
|
super + p
|
||||||
|
rofi -show-icons -modi p:rofi-power-menu -show p
|
||||||
|
|
||||||
# toggle compositing
|
# toggle compositing
|
||||||
super + ctrl + space
|
super + ctrl + space
|
||||||
{pkill picom ,\
|
{pkill picom ,\
|
||||||
|
@ -148,7 +152,7 @@ super + {_,shift + }{h,j,k,l}
|
||||||
bspc node -{f,s} {west,south,north,east}
|
bspc node -{f,s} {west,south,north,east}
|
||||||
|
|
||||||
# focus the node for the given path jump
|
# focus the node for the given path jump
|
||||||
super + {p,b,comma,period}
|
super + {shift + p,shift + b,comma,period}
|
||||||
bspc node -f @{parent,brother,first,second}
|
bspc node -f @{parent,brother,first,second}
|
||||||
|
|
||||||
# focus the next/previous window in the current desktop
|
# focus the next/previous window in the current desktop
|
||||||
|
|
2
xinitrc
2
xinitrc
|
@ -1,3 +1,3 @@
|
||||||
xrandr --output DP-1 --primary
|
xrandr --output DP-0 --primary
|
||||||
xrdb -merge -I/home/emh ~/.config/X11/Xresources
|
xrdb -merge -I/home/emh ~/.config/X11/Xresources
|
||||||
exec dbus-launch bspwm
|
exec dbus-launch bspwm
|
||||||
|
|
|
@ -14,6 +14,7 @@ alias neofetch='neofetch --kitty $XDG_CONFIG_HOME/neofetch/$(hostname).png --siz
|
||||||
alias la='exa -lah --icons'
|
alias la='exa -lah --icons'
|
||||||
alias ll='exa -lah --icons'
|
alias ll='exa -lah --icons'
|
||||||
alias cat='bat -p --paging=never'
|
alias cat='bat -p --paging=never'
|
||||||
|
alias tcat="/usr/bin/cat"
|
||||||
|
|
||||||
alias xsecurelock='XSECURELOCK_NO_COMPOSITE=1 XSECURELOCK_AUTH_BACKGROUND_COLOR=$color00 XSECURELOCK_AUTH_FOREGROUND_COLOR=$color07 xsecurelock'
|
alias xsecurelock='XSECURELOCK_NO_COMPOSITE=1 XSECURELOCK_AUTH_BACKGROUND_COLOR=$color00 XSECURELOCK_AUTH_FOREGROUND_COLOR=$color07 xsecurelock'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user