| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- #!/usr/bin/env bash
- ## Author : Aditya Shakya
- ## Mail : adi1090x@gmail.com
- ## Github : @adi1090x
- ## Twitter : @adi1090x
- # Available Styles
- # >> Created and tested on : rofi 1.6.0-1
- #
- # column_circle column_square column_rounded column_alt
- # card_circle card_square card_rounded card_alt
- # dock_circle dock_square dock_rounded dock_alt
- # drop_circle drop_square drop_rounded drop_alt
- # full_circle full_square full_rounded full_alt
- # row_circle row_square row_rounded row_alt
- theme="full_circle"
- dir="$HOME/.config/rofi/powermenu"
- # random colors
- styles=($(ls -p --hide="colors.rasi" $dir/styles))
- color="${styles[$(( $RANDOM % 8 ))]}"
- # comment this line to disable random colors
- sed -i -e "s/@import .*/@import \"$color\"/g" $dir/styles/colors.rasi
- # comment these lines to disable random style
- themes=($(ls -p --hide="powermenu.sh" --hide="styles" --hide="confirm.rasi" --hide="message.rasi" $dir))
- theme="${themes[$(( $RANDOM % 24 ))]}"
- uptime=$(uptime -p | sed -e 's/up //g')
- rofi_command="rofi -theme $dir/$theme"
- # Options
- shutdown=""
- reboot=""
- lock=""
- suspend=""
- logout=""
- # Confirmation
- confirm_exit() {
- rofi -dmenu\
- -i\
- -no-fixed-num-lines\
- -p "Are You Sure? : "\
- -theme $dir/confirm.rasi
- }
- # Message
- msg() {
- rofi -theme "$dir/message.rasi" -e "Available Options - yes / y / no / n"
- }
- # Variable passed to rofi
- options="$shutdown\n$reboot\n$lock\n$suspend\n$logout"
- chosen="$(echo -e "$options" | $rofi_command -p "Uptime: $uptime" -dmenu -selected-row 2)"
- case $chosen in
- $shutdown)
- ans=$(confirm_exit &)
- if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then
- systemctl poweroff
- elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then
- exit 0
- else
- msg
- fi
- ;;
- $reboot)
- ans=$(confirm_exit &)
- if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then
- systemctl reboot
- elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then
- exit 0
- else
- msg
- fi
- ;;
- $lock)
- if [[ -f /usr/bin/i3lock ]]; then
- i3lock
- elif [[ -f /usr/bin/betterlockscreen ]]; then
- betterlockscreen -l
- fi
- ;;
- $suspend)
- ans=$(confirm_exit &)
- if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then
- mpc -q pause
- amixer set Master mute
- systemctl suspend
- elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then
- exit 0
- else
- msg
- fi
- ;;
- $logout)
- ans=$(confirm_exit &)
- if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then
- if [[ "$DESKTOP_SESSION" == "Openbox" ]]; then
- openbox --exit
- elif [[ "$DESKTOP_SESSION" == "bspwm" ]]; then
- bspc quit
- elif [[ "$DESKTOP_SESSION" == "i3" ]]; then
- i3-msg exit
- fi
- elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then
- exit 0
- else
- msg
- fi
- ;;
- esac
|