import subprocess from time import sleep import prof led_thread = None last_window_jid = None unfocused_jid = {} def call_command(state_on=True): if state_on: command = prof.settings_string_get("lednotification", "command_on", "xset led 3") else: command = prof.settings_string_get("lednotification", "command_off", "xset -led 3") subprocess.call(command, shell=True) def enable_led(state_on=True): # Can be expanded for different ways to call LED changes call_command(state_on) def led_notify(): enable_led(True) def prof_on_chat_win_focus(barejid): on_focus(barejid) return None def prof_on_room_win_focus(barejid): rooms = prof.settings_string_get("lednotification", "rooms", "off") if rooms == "on": on_focus(barejid) return None def on_focus(jid): global focused global last_window_jid global unfocused_jid prof.cons_show("!!!" + unfocused_jid + " ; " + bool(unfocused_jid)) focused = True last_window_jid = jid unfocused_jid.pop(jid, None) if led_thread: led_thread.join() led_thread = None if not unfocused_jid: enable_led(False) def prof_post_chat_message_display(barejid, resource, message): prof.cons_show('test1234') prof.cons_show("##!!!" + unfocused_jid + " ; " + bool(unfocused_jid)) if check_chat_notify(barejid): led_notify() return message def prof_post_room_message_display(barejid, nick, message): if check_chat_notify(barejid) and check_room_notify(barejid, nick): led_notify() return message def prof_post_priv_message_display(barejid, nick, message): if check_chat_notify(barejid): led_notify() return message def check_chat_notify(barejid): global unfocused_jid is_console = prof.current_win_is_console() if last_window_jid != barejid or is_console: unfocused_jid[barejid] = True prof.cons_show("CCC##!!!" + unfocused_jid + " ; " + bool(unfocused_jid)) enabled = prof.settings_string_get("lednotification", "enabled", "on") return enabled == "on" and is_console def check_room_notify(barejid, nick): rooms = prof.settings_string_get("lednotification", "rooms", "off") user = prof.get_room_nick(barejid) return rooms == "on" and user != nick def _cmd_say(arg1=None, arg2=None): if arg1 == "on": prof.settings_string_set("lednotification", "enabled", "on") prof.cons_show("LED notifications enabled") elif arg1 == "off": prof.settings_string_set("lednotification", "enabled", "off") prof.cons_show("LED notifications disabled") elif arg1 == "command": split = arg2.split() mode = split[0] arg3 = arg2.replace(mode, '', 1)[1:] arg2 = mode if arg2 == None or arg3 == None: prof.cons_bad_cmd_usage("/lednotification") elif arg2 == "on": prof.settings_string_set("lednotification", "command_on", arg3) prof.cons_show("LED notification enable command set to: " + arg3) elif arg2 == "off": prof.settings_string_set("lednotification", "command_off", arg3) prof.cons_show("LED notification disable command set to: " + arg3) elif arg1 == "blink": if arg2 == None: prof.cons_bad_cmd_usage("/lednotification") else: prof.settings_string_set("lednotification", "blink", arg2) prof.cons_show("LED notification blinking set to: " + arg2) elif arg1 == "rooms": if arg2 == None: prof.cons_bad_cmd_usage("/lednotification") else: prof.settings_string_set("lednotification", "rooms", arg2) prof.cons_show("LED notifications notifications for rooms set to: " + arg2) else: enabled = prof.settings_string_get("lednotification", "enabled", "on") command_on = prof.settings_string_get("lednotification", "command_on", "xset led 3") command_off = prof.settings_string_get("lednotification", "command_off", "xset -led 3") rooms = prof.settings_string_get("lednotification", "rooms", "off") blink = prof.settings_string_get("lednotification", "blink", "off") prof.cons_show("LED notification plugin settings:") prof.cons_show("enabled: " + enabled) prof.cons_show("command on: " + command_on) prof.cons_show("command off: " + command_off) prof.cons_show("blink: " + blink) prof.cons_show("rooms: " + rooms) def prof_init(version, status, account_name, fulljid): synopsis = [ "/lednotification on|off", "/lednotification command on command", "/lednotification command off command", "/lednotification blink on|off|interval", "/lednotification rooms on|off"] description = "Show new notifications with LEDs" args = [ ["on|off", "Enable/disable lednotification for all windows"], ["command on ", "Command for turning the LED on"], ["command off ", "Command for turning the LED off"], ["blink ", "Turn LED blinking on or off, set blinking interval"], ["rooms ", "Turn notifications for rooms on or off"]] examples = [ "/lednotification on", "/lednotification command on xset led 3", "/lednotification rooms off", "/lednotification blink on", "/lednotification blink 0.5"] prof.register_command("/lednotification", 0, 2, synopsis, description, args, examples, _cmd_say) prof.completer_add("/lednotification", ["on", "off", "blink", "rooms"]) prof.completer_add("/lednotification blink", ["on", "off"]) prof.completer_add("/lednotification rooms", ["on", "off"])