lemonbar: Implement callbacks for host specific stuff
This commit is contained in:
@@ -21,6 +21,8 @@ class bar_mode(Enum):
|
||||
|
||||
mode = bar_mode.normal
|
||||
|
||||
screen_args = ['screen', '-D', '-R', '-U' '-S' 'lemonbar']
|
||||
|
||||
floatterm_args = lambda prog : ['terminator', '-r', 'FLOAT_TERM', '-p'
|
||||
, 'dark', '-e', 'echo kill_unfocus $$ > {}; exec {}'.format(
|
||||
config.fifo_file_executor, prog)]
|
||||
@@ -97,3 +99,57 @@ commands_dict = {'toggle_secs': toggle_secs
|
||||
,'bluetooth': bluetooth
|
||||
}
|
||||
|
||||
# Callbacks for workspaces
|
||||
def add_callbacks(i3ws):
|
||||
i3ws.change_callbacks.append(set_bg)
|
||||
i3ws.focus_callbacks.append(set_keymap)
|
||||
i3ws.focus_callbacks.append(kill_floating_windows)
|
||||
|
||||
def img_path(num):
|
||||
dir = '/home/kuba/Obrazy/Wallpapers/'
|
||||
return dir + {
|
||||
1: '1_main',
|
||||
2: '2_web',
|
||||
3: '3_music',
|
||||
4: '4_work',
|
||||
5: '5_terms',
|
||||
6: '6_stats',
|
||||
7: '7',
|
||||
8: '8',
|
||||
9: '9',
|
||||
}.get(int(num), 'default')
|
||||
|
||||
def set_bg(i3ws):
|
||||
cmd_args = ['sh', '/home/kuba/scripts/set_bg.sh']
|
||||
for output in i3ws.outputs:
|
||||
if output.active:
|
||||
bg = img_path(output.current_workspace.partition(' ')[0])
|
||||
cmd_args.append(bg)
|
||||
subprocess.call(cmd_args)
|
||||
|
||||
def kill_floating_windows(i3ws):
|
||||
global kill_on_unfocus, logger
|
||||
role = i3ws.focused_window.window_role
|
||||
wclass = i3ws.focused_window.window_class
|
||||
|
||||
if role != 'FLOAT_TERM' and wclass != 'FLOAT_PAVU' and wclass != 'YADWINBR':
|
||||
# Is there a window that the bar has opened?
|
||||
for pid in kill_on_unfocus:
|
||||
try:
|
||||
os.kill(pid, signal.SIGTERM)
|
||||
except ProcessLookupError:
|
||||
logger.debug('Tried killing process {} but it doesn\'t exist'.format(pid))
|
||||
kill_on_unfocus = []
|
||||
|
||||
def set_keymap(i3ws):
|
||||
global cur_class, keymaps, logger
|
||||
wclass = i3ws.focused_window.window_class
|
||||
cur_class = wclass
|
||||
|
||||
if wclass in keymaps:
|
||||
new_km = keymaps[wclass]
|
||||
logger.debug('Setting {} as keymap for {}'.format(new_km, wclass))
|
||||
else:
|
||||
new_km = def_keymap
|
||||
logger.debug('Setting default keymap {} for {}'.format(def_keymap, wclass))
|
||||
subprocess.call(['/home/kuba/.i3/scripts/lang.sh', 'qset', new_km])
|
||||
|
||||
Reference in New Issue
Block a user