summaryrefslogtreecommitdiffstats
path: root/.local/bin/dmlog
diff options
context:
space:
mode:
Diffstat (limited to '.local/bin/dmlog')
-rwxr-xr-x.local/bin/dmlog79
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);
}