diff options
Diffstat (limited to '')
| -rwxr-xr-x | .local/bin/dmlog | 79 |
1 files changed, 50 insertions, 29 deletions
diff --git a/.local/bin/dmlog b/.local/bin/dmlog index 756d9b9..a5f9b15 100755 --- a/.local/bin/dmlog +++ b/.local/bin/dmlog @@ -12,7 +12,7 @@ use constant { KILL_PATH => '/usr/bin/killall', SHUTDOWN_PATH => '/sbin/shutdown', LOGINCTL_PATH => '/usr/bin/loginctl', - NOTIF_PATH => 'notify-send', + NOTIF_PATH => '/usr/local/bin/herbe', HOSTNAME => (split /\./, hostname())[0] }; use constant LIST => [ @@ -27,6 +27,17 @@ use constant CONFIRM => [ "yes" ]; +sub notify +{ + my ($str) = @_; + + my $pid = fork(); + if (not $pid) { + exec(NOTIF_PATH, $str); + } + return; +}; + sub confirm { my ($var, $color) = @_; @@ -36,8 +47,13 @@ sub confirm for (@{+CONFIRM}) { $list .= $_ . "\n"; } + + my $menu = "dmenu -sb '$color' -shb '$color'"; + if (defined $ENV{WAYLAND_DISPLAY}) { + $menu = "wmenu -S '$color'"; + } $choice = `printf "%s" "$list" | \ - dmenu -i -p "$var?" -sb '$color' -shb '$color'`; + $menu -i -p "$var?"`; chomp $choice; if ($choice eq ${+CONFIRM}[1]) { return (1); @@ -52,27 +68,38 @@ sub action chomp $var; if ($var eq ${+LIST}[0]) { - exec(XSCREENSAVER_PATH, '-lock'); + if (defined $ENV{WAYLAND_DISPLAY}) { + exec("waylock", + "-init-color", "0x1d2021", + "-input-color", "0xd79921", + "-fail-color", "0xcc241d"); + } + else { + exec(SLOCK_PATH . " && exec herbe 'welcome back, partner!'"); + } } elsif ($var eq ${+LIST}[1]) { $pid = fork(); if (not $pid) { - exec(XSCREENSAVER_PATH, '-lock'); + if (defined $ENV{WAYLAND_DISPLAY}) { + exec("waylock", + "-init-color", "0x1d2021", + "-input-color", "0xd79921", + "-fail-color", "0xcc241d"); + } + else { + exec(XSCREENSAVER_PATH, '-lock'); + } } else { - system( - NOTIF_PATH, - '-u', - 'normal', - 'shutdown', - ' g\'night, partner!' - ); + notify("g'night, partner!"); sleep 2; if (HOSTNAME eq 'mother') { + system('umount', '-f', '/var/dev/ceres'); exec(LOGINCTL_PATH, 'suspend'); } elsif (HOSTNAME eq 'po-rbo') { - exec('systemctl', 'suspend'); + exec('doas', 'systemctl', 'suspend'); } exec(ACPI_PATH, '-s', '3'); } @@ -88,36 +115,25 @@ sub action elsif ($var eq ${+LIST}[3]) { if (confirm($var, $color) == 1) { if (HOSTNAME eq 'mother') { + system('umount', '-f', '/var/dev/ceres'); exec(LOGINCTL_PATH, 'reboot'); } elsif (HOSTNAME eq 'po-rbo') { - exec('systemctl', 'reboot'); + exec('doas', 'systemctl', 'reboot'); } - system( - NOTIF_PATH, - '-u', - 'normal', - 'shutdown', - ' rebootin\', partner!' - ); + notify("rebootin', partner!"); exec(SHUTDOWN_PATH, '-r', 'now'); } } elsif ($var eq ${+LIST}[4]) { if (confirm($var, $color) == 1) { - system( - NOTIF_PATH, - '-u', - 'normal', - 'shutdown', - ' farewell, partner!' - ); + notify("farewell, partner!"); sleep 2; if (HOSTNAME eq 'mother') { exec(LOGINCTL_PATH, 'poweroff'); } elsif (HOSTNAME eq 'po-rbo') { - exec('systemctl', 'poweroff'); + exec('doas', 'systemctl', 'poweroff'); } exec(SHUTDOWN_PATH, '-p', 'now'); } @@ -138,7 +154,12 @@ sub main for (@{+LIST}) { $list .= $_ . "\n"; } - $choice = `printf "%s" "$list" | dmenu -i -sb '$color' -shb '$color'`; + + my $menu = "dmenu -sb '$color' -shb '$color'"; + if (defined $ENV{WAYLAND_DISPLAY}) { + $menu = "wmenu -S '$color'"; + } + $choice = `printf "%s" "$list" | $menu -i`; action($choice, $color); return (0); } |
