100 lines
2.7 KiB
Python
Executable File
100 lines
2.7 KiB
Python
Executable File
import subprocess
|
|
from enum import Enum
|
|
|
|
import i3_lemonbar_config as config
|
|
|
|
p_screen = None
|
|
kill_on_unfocus = []
|
|
|
|
# Loggers, initialized in main function
|
|
logger = None
|
|
health_logger = None
|
|
|
|
class bar_mode(Enum):
|
|
power, normal, control = range(-1,2) # Don't cycle through power
|
|
|
|
def cycle(self):
|
|
try:
|
|
return bar_mode(self.value + 1)
|
|
except ValueError:
|
|
return bar_mode(0)
|
|
|
|
mode = bar_mode.normal
|
|
|
|
floatterm_args = lambda prog : ['terminator', '-r', 'FLOAT_TERM', '-p'
|
|
, 'dark', '-e', 'echo kill_unfocus $$ > {}; exec {}'.format(
|
|
config.fifo_file_executor, prog)]
|
|
def date_comm(args):
|
|
subprocess.Popen(['yad', '--no-buttons', '--calendar', '--sticky'
|
|
, '--on-top' , '--class' , '"YADWIN"', '--posx=1650', '--posy=24'
|
|
, '--close-on-unfocus'])
|
|
|
|
def pavu_comm(args):
|
|
global kill_on_unfocus
|
|
p = subprocess.Popen(['pavucontrol', '--class=FLOAT_PAVU'])
|
|
kill_on_unfocus.append(p.pid)
|
|
|
|
def htop_comm(args):
|
|
subprocess.Popen(floatterm_args('htop'))
|
|
|
|
def nmtui_comm(args):
|
|
subprocess.Popen(floatterm_args('nmtui'))
|
|
def lang_comm(args):
|
|
subprocess.Popen(['sh', '/home/kuba/.i3/scripts/lang.sh', 'next'])
|
|
def dpms_comm(args):
|
|
subprocess.Popen(['sh', '/home/kuba/.i3/scripts/dpmsctl.sh'])
|
|
def adj_br(args):
|
|
subprocess.Popen(['/home/kuba/.i3/scripts/adjbr.sh', '-b', config.fifo_file_executor])
|
|
def i3msg_comm(args):
|
|
subprocess.Popen(args.split())
|
|
def add_tokill(args):
|
|
global kill_on_unfocus
|
|
kill_on_unfocus.append(int(args.split()[1]))
|
|
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]
|
|
btcargs.append('\n')
|
|
inp = ' '.join(btcargs)
|
|
p_screen.stdin.write(inp)
|
|
p_screen.stdin.flush()
|
|
|
|
show_secs = False
|
|
def toggle_secs(args):
|
|
global show_secs
|
|
show_secs = not show_secs
|
|
|
|
# Keymaps
|
|
def_keymap = 'pl'
|
|
keymaps = {'Firefox': 'se'}
|
|
cur_class = ''
|
|
def set_lang(args):
|
|
global keymaps
|
|
lang = args.split()[1]
|
|
keymaps[cur_class] = lang
|
|
|
|
commands_dict = {'toggle_secs': toggle_secs
|
|
,'date': date_comm
|
|
,'pavu': pavu_comm
|
|
,'load': htop_comm
|
|
,'wlan': nmtui_comm
|
|
,'dpms': dpms_comm
|
|
,'i3-msg': i3msg_comm
|
|
,'switch_lang': lang_comm
|
|
,'kill_unfocus': add_tokill
|
|
,'mode': set_mode
|
|
,'adj_br': adj_br
|
|
,'setlang': set_lang
|
|
,'bluetooth': bluetooth
|
|
}
|
|
|