diff options
Diffstat (limited to '.local/bin/dmlog')
| -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);  } | 
