lemonbar: Move last actions to modules and remove command dict
This commit is contained in:
@@ -13,6 +13,7 @@ health_logger = None
|
|||||||
screen_send_cmd = lambda s : None # TODO temporary until move actions to modules
|
screen_send_cmd = lambda s : None # TODO temporary until move actions to modules
|
||||||
write_queue = None # TODO Actually, why is this a queue? Just last element is important
|
write_queue = None # TODO Actually, why is this a queue? Just last element is important
|
||||||
|
|
||||||
|
# TODO bar mode can be moved to i3Module
|
||||||
class bar_mode(Enum):
|
class bar_mode(Enum):
|
||||||
power, normal, control = range(-1,2) # Don't cycle through power
|
power, normal, control = range(-1,2) # Don't cycle through power
|
||||||
|
|
||||||
@@ -24,40 +25,12 @@ class bar_mode(Enum):
|
|||||||
|
|
||||||
mode = bar_mode.normal
|
mode = bar_mode.normal
|
||||||
|
|
||||||
def i3msg_comm(args):
|
|
||||||
subprocess.Popen(args.split())
|
|
||||||
def set_mode(args):
|
|
||||||
global mode
|
|
||||||
new_mode = args.split()[1]
|
|
||||||
if new_mode == "cycle":
|
|
||||||
mode = mode.cycle()
|
|
||||||
|
|
||||||
for m in bar_mode:
|
|
||||||
if new_mode == m.name:
|
|
||||||
mode = m
|
|
||||||
break
|
|
||||||
def bluetooth(args):
|
|
||||||
btcargs = args.split()[1:]
|
|
||||||
btcargs = [a.replace('pxc550', '00:16:94:22:29:0E') for a in btcargs]
|
|
||||||
inp = ' '.join(btcargs)
|
|
||||||
screen_send_cmd('bluetoothctl ' + inp)
|
|
||||||
|
|
||||||
show_secs = False
|
show_secs = False
|
||||||
|
|
||||||
# Keymaps
|
# Keymaps
|
||||||
def_keymap = 'pl'
|
def_keymap = 'pl'
|
||||||
keymaps = {'firefox': 'se'}
|
keymaps = {'firefox': 'se'}
|
||||||
cur_class = ''
|
cur_class = ''
|
||||||
def set_lang(args):
|
|
||||||
global keymaps
|
|
||||||
lang = args.split()[1]
|
|
||||||
keymaps[cur_class] = lang
|
|
||||||
|
|
||||||
commands_dict = {'i3-msg': i3msg_comm
|
|
||||||
,'mode': set_mode
|
|
||||||
,'setlang': set_lang
|
|
||||||
,'bluetooth': bluetooth
|
|
||||||
}
|
|
||||||
|
|
||||||
# Helper functions
|
# Helper functions
|
||||||
ansi_escape = re.compile(r'(\x9B|\x1B\[)[0-?]*[ -/]*[@-~]')
|
ansi_escape = re.compile(r'(\x9B|\x1B\[)[0-?]*[ -/]*[@-~]')
|
||||||
|
|||||||
@@ -152,15 +152,10 @@ def exec_commands():
|
|||||||
|
|
||||||
common.logger.debug('Trying reading: "{0}"'.format(data.strip('\n')))
|
common.logger.debug('Trying reading: "{0}"'.format(data.strip('\n')))
|
||||||
try:
|
try:
|
||||||
for key,func in common.commands_dict.items():
|
modules.do_action(data)
|
||||||
l = len(key)
|
|
||||||
if data[:l] == key:
|
|
||||||
func(data)
|
|
||||||
break
|
|
||||||
modules.do_action(data.split()[0])
|
|
||||||
|
|
||||||
except:
|
except:
|
||||||
common.logger.debug('Exception occured executing command\n Line in: {}\n Data: {}'.format(data, data[l:].split()))
|
common.logger.debug('Exception occured executing command\n Line in: {}'.format(data))
|
||||||
if len(data) == 0:
|
if len(data) == 0:
|
||||||
common.logger.debug("Lemonbar output closed")
|
common.logger.debug("Lemonbar output closed")
|
||||||
break
|
break
|
||||||
|
|||||||
@@ -48,10 +48,16 @@ class LemonModule(threading.Thread):
|
|||||||
def register_action(self, keyword, do_action):
|
def register_action(self, keyword, do_action):
|
||||||
self.actions[keyword] = do_action
|
self.actions[keyword] = do_action
|
||||||
|
|
||||||
def do_action(self, keyword):
|
def do_action(self, command):
|
||||||
if (keyword in self.actions):
|
action_arr = command.split()
|
||||||
func = self.actions[keyword]
|
action = action_arr[0]
|
||||||
func()
|
if (action in self.actions):
|
||||||
|
func = self.actions[action]
|
||||||
|
if len(action_arr) == 1:
|
||||||
|
# Function has no arguments
|
||||||
|
func()
|
||||||
|
else:
|
||||||
|
func(action_arr[1:])
|
||||||
|
|
||||||
def format_load(data, module, alert):
|
def format_load(data, module, alert):
|
||||||
# Helper function to format network modules
|
# Helper function to format network modules
|
||||||
@@ -229,13 +235,13 @@ class ConkySlowModule(LemonModule):
|
|||||||
p = subprocess.Popen(['xterm', '-class', 'FLOAT_TERM', '-e', 'htop'])
|
p = subprocess.Popen(['xterm', '-class', 'FLOAT_TERM', '-e', 'htop'])
|
||||||
common.kill_on_unfocus.append(p.pid)
|
common.kill_on_unfocus.append(p.pid)
|
||||||
|
|
||||||
def lang_comm(args):
|
def lang_comm(self):
|
||||||
subprocess.Popen(['sh', '/home/kuba/.i3/scripts/lang.sh', 'next'])
|
subprocess.Popen(['sh', '/home/kuba/.i3/scripts/lang.sh', 'next'])
|
||||||
|
|
||||||
def dpms_comm(args):
|
def dpms_comm(self):
|
||||||
subprocess.Popen(['sh', '/home/kuba/.i3/scripts/dpmsctl.sh'])
|
subprocess.Popen(['sh', '/home/kuba/.i3/scripts/dpmsctl.sh'])
|
||||||
|
|
||||||
def adj_br(args):
|
def adj_br(self):
|
||||||
subprocess.Popen(['/home/kuba/.i3/scripts/adjbr.sh', '-b', config.fifo_file_executor])
|
subprocess.Popen(['/home/kuba/.i3/scripts/adjbr.sh', '-b', config.fifo_file_executor])
|
||||||
|
|
||||||
class i3Module(LemonModule):
|
class i3Module(LemonModule):
|
||||||
@@ -261,6 +267,9 @@ class i3Module(LemonModule):
|
|||||||
parser.g_parser.register_unit(self.workspaces)
|
parser.g_parser.register_unit(self.workspaces)
|
||||||
parser.g_parser.register_unit(self.title)
|
parser.g_parser.register_unit(self.title)
|
||||||
|
|
||||||
|
self.register_action('i3-msg' , self.i3msg_comm)
|
||||||
|
self.register_action('mode' , self.set_mode)
|
||||||
|
|
||||||
# Add callbacks for parsing
|
# Add callbacks for parsing
|
||||||
self.i3_ws_obj.change_callbacks.append(self.parse_displays)
|
self.i3_ws_obj.change_callbacks.append(self.parse_displays)
|
||||||
self.i3_ws_obj.change_callbacks.append(self.parse_workspaces)
|
self.i3_ws_obj.change_callbacks.append(self.parse_workspaces)
|
||||||
@@ -406,6 +415,20 @@ class i3Module(LemonModule):
|
|||||||
common.logger.debug('Setting default keymap {} for {}'.format(new_km, wclass))
|
common.logger.debug('Setting default keymap {} for {}'.format(new_km, wclass))
|
||||||
subprocess.call(['/home/kuba/.i3/scripts/lang.sh', 'qset', new_km])
|
subprocess.call(['/home/kuba/.i3/scripts/lang.sh', 'qset', new_km])
|
||||||
|
|
||||||
|
def i3msg_comm(self, args):
|
||||||
|
# TODO this is not needed anymore. Use i3ws object directly
|
||||||
|
subprocess.Popen(['i3-msg'] + args)
|
||||||
|
|
||||||
|
def set_mode(self, args):
|
||||||
|
new_mode = args[0]
|
||||||
|
if new_mode == "cycle":
|
||||||
|
common.mode = common.mode.cycle()
|
||||||
|
|
||||||
|
for m in common.bar_mode:
|
||||||
|
if new_mode == m.name:
|
||||||
|
common.mode = m
|
||||||
|
break
|
||||||
|
|
||||||
class ScreenModule(LemonModule):
|
class ScreenModule(LemonModule):
|
||||||
# Start, stop and send commands to screen instance
|
# Start, stop and send commands to screen instance
|
||||||
|
|
||||||
@@ -445,6 +468,8 @@ class ScreenModule(LemonModule):
|
|||||||
parser.g_parser.register_unit(self.response)
|
parser.g_parser.register_unit(self.response)
|
||||||
parser.g_parser.register_unit(self.controls)
|
parser.g_parser.register_unit(self.controls)
|
||||||
|
|
||||||
|
self.register_action('bluetooth', self.bluetooth)
|
||||||
|
|
||||||
def _stop_module(self):
|
def _stop_module(self):
|
||||||
self.send_colon('kill')
|
self.send_colon('kill')
|
||||||
self.status_handle.close()
|
self.status_handle.close()
|
||||||
@@ -483,6 +508,11 @@ class ScreenModule(LemonModule):
|
|||||||
# Send colon command to our screen instance
|
# Send colon command to our screen instance
|
||||||
self.send(['-X', 'colon', cmd + '\n'])
|
self.send(['-X', 'colon', cmd + '\n'])
|
||||||
|
|
||||||
|
def bluetooth(self, args):
|
||||||
|
btcargs = [a.replace('pxc550', '00:16:94:22:29:0E') for a in args]
|
||||||
|
inp = ' '.join(btcargs)
|
||||||
|
common.screen_send_cmd('bluetoothctl ' + inp)
|
||||||
|
|
||||||
class PowerOptionsModule(LemonModule):
|
class PowerOptionsModule(LemonModule):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user