diff --git a/DND.py b/DND.py new file mode 100755 index 0000000..6f1f8ba --- /dev/null +++ b/DND.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 + +# Turns on DND +# Can be used for toggling along with a parent script DNDToggle.sh + +def set_procname(Newname): + newname = bytes(Newname, 'utf-8') + from ctypes import cdll, byref, create_string_buffer + libc = cdll.LoadLibrary('libc.so.6') #Loading a 3rd party library C + buff = create_string_buffer(len(newname)+1) #Note: One larger than the name (man prctl says that) + buff.value = newname #Null terminated string as it should be + libc.prctl(15, byref(buff), 0, 0, 0) #Refer to "#define" of "/usr/include/linux/prctl.h" for the misterious value 16 & arg[3..5] are zero as the man page says. + +set_procname("DND.py") + +from pydbus import SessionBus +import signal + +bus = SessionBus() +remote_object = bus.get("org.freedesktop.Notifications", "/org/freedesktop/Notifications") + +remote_object.Inhibit("DND.py", "Manual suspend", {}) + +signal.pause() + diff --git a/DNDToggle.sh b/DNDToggle.sh new file mode 100755 index 0000000..3e0f650 --- /dev/null +++ b/DNDToggle.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# Toggles DND + +dnd=$(pgrep DND.py) +if [[ $dnd ]]; +then + kill $dnd +else + /home/sintan/.local/bin/personal/DND.py & +fi