weechat-awayonlock/src/away_on_lock.py
snow flurry 97b34f6334 Make away_on_lock.py executable
Just in case somebody decides they want to include this as a git
submodule or something, idk why they'd ever want to do that though.
Seems a bit silly to me, y'know?
2023-07-26 13:27:51 -07:00

78 lines
2.3 KiB
Python
Executable file

#!/usr/bin/env python3
try:
import weechat
import_ok = True
except ImportError:
import_ok = False
import sys
try:
import importlib
notify = importlib.import_module("notify_%s" % sys.platform)
except ImportError:
weechat.prnt('', 'No OS-specific module notify_%s found.' % sys.platform)
import_ok = False
SCRIPT_AUTHOR = 'snow flurry <snow@datagirl.xyz>'
SCRIPT_NAME = 'away_on_lock'
SCRIPT_VERSION = '0.5'
SCRIPT_LICENSE = 'MIT'
SCRIPT_DESC = 'Sends /away on lock'
DEFAULT_OPTIONS = {
'verbose': 'on',
'message': 'Screen locked',
}
def locknotify_cb(data, command, return_code, out, err):
if return_code == weechat.WEECHAT_HOOK_PROCESS_ERROR:
weechat.prnt("", "locknotify returned error: %s" % err)
weechat.prnt("", "out: %s" % out)
return weechat.WEECHAT_RC_OK
verbose = weechat.config_boolean(weechat.config_get_plugin('verbose'))
if out != "":
out = out.strip()
if out == "lock":
weechat.prnt("", "screen locked, setting away...") if verbose else ()
weechat.command("", "/away -all %s"
% weechat.config_get_plugin('message'))
elif out == "unlock":
weechat.prnt("", "screen unlocked, setting back...") if verbose else ()
weechat.command("", "/away -all")
else:
weechat.prnt("", "unknown output: %s" % out)
else:
weechat.prnt("", "stderr: %s" % err)
if return_code != weechat.WEECHAT_HOOK_PROCESS_RUNNING:
spawn_helper()
return weechat.WEECHAT_RC_OK
def spawn_helper():
verbose = weechat.config_boolean(weechat.config_get_plugin('verbose'))
print("spawning '%s'" % proc) if verbose else ()
hook = weechat.hook_process(proc, 0, "locknotify_cb", "")
if import_ok:
weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE, SCRIPT_DESC, "", "")
for key, val in DEFAULT_OPTIONS.items():
if not weechat.config_is_set_plugin(key):
weechat.config_set_plugin(key, val)
proc = "%s --selfhost" % __file__
spawn_helper()
elif __name__ == "__main__":
if len(sys.argv) < 2 or sys.argv[1] != "--selfhost":
print('This script must be run from WeeChat.')
sys.exit(1)
notify.notify_lock(lambda status: print(status))