66 lines
1.4 KiB
Nix
66 lines
1.4 KiB
Nix
|
# Small script to toggle DO-NOT-DISTURB mode
|
||
|
# and make it integrate well with other applications
|
||
|
{pkgs, ...}:
|
||
|
pkgs.writeShellApplication {
|
||
|
name = "do-not-disturb";
|
||
|
runtimeInputs = with pkgs; [
|
||
|
coreutils
|
||
|
mako
|
||
|
systemd
|
||
|
];
|
||
|
text = ''
|
||
|
MAKO_DEFAULT_MODE=default
|
||
|
MAKO_SILENT_MODE=do-not-disturb
|
||
|
|
||
|
# Sanity checks
|
||
|
if [ -z "''${1+x}" ]; then
|
||
|
print_help
|
||
|
fi
|
||
|
if [ -z "''${XDG_RUNTIME_DIR+x}" ]; then
|
||
|
printf "XDG_RUNTIME_DIR undefined! Cannot connect to mako!\n"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
state="$XDG_RUNTIME_DIR/do-not-disturb"
|
||
|
|
||
|
# Print usage information
|
||
|
function print_help() {
|
||
|
printf "Usage:\n"
|
||
|
printf " %s [ toggle | is-on | is-off | get-file ]\n" "$0"
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
# Toggle the mode
|
||
|
function toggle() {
|
||
|
if [ -f "$state" ]; then
|
||
|
rm "$state"
|
||
|
else
|
||
|
touch "$state"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# Update mako's mode to this scripts mode
|
||
|
function update-mako() {
|
||
|
if [ -f "$state" ]; then
|
||
|
makoctl set-mode $MAKO_SILENT_MODE
|
||
|
else
|
||
|
makoctl set-mode $MAKO_DEFAULT_MODE
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
action=$1
|
||
|
if [ "$action" = "toggle" ]; then
|
||
|
toggle
|
||
|
update-mako
|
||
|
elif [ "$action" = "is-on" ]; then
|
||
|
[ -f "$state" ]
|
||
|
elif [ "$action" = "is-off" ]; then
|
||
|
[ ! -f "$state" ]
|
||
|
elif [ "$action" = "get-file" ]; then
|
||
|
printf "%s" "$state"
|
||
|
else
|
||
|
print_help
|
||
|
fi
|
||
|
'';
|
||
|
}
|