lemonbar: Screen working somewhat. Remove one fifo
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import subprocess
|
||||
import subprocess, os, getpass
|
||||
from enum import Enum
|
||||
|
||||
import i3_lemonbar_config as config
|
||||
@@ -9,6 +9,9 @@ kill_on_unfocus = []
|
||||
logger = None
|
||||
health_logger = None
|
||||
|
||||
screen = None
|
||||
parsing_queue = None
|
||||
|
||||
class bar_mode(Enum):
|
||||
power, normal, control = range(-1,2) # Don't cycle through power
|
||||
|
||||
@@ -20,9 +23,6 @@ class bar_mode(Enum):
|
||||
|
||||
mode = bar_mode.normal
|
||||
|
||||
screen_args = ['screen', '-d', '-m', '-U', '-S', 'lemonbar'
|
||||
, '-L', '-Logfile', config.fifo_screen_log]
|
||||
|
||||
floatterm_args = lambda prog : ['terminator', '-r', 'FLOAT_TERM', '-p'
|
||||
, 'dark', '-e', 'echo kill_unfocus $$ > {}; exec {}'.format(
|
||||
config.fifo_file_executor, prog)]
|
||||
@@ -66,16 +66,13 @@ def bluetooth(args):
|
||||
btcargs = args.split()[1:]
|
||||
btcargs = [a.replace('pxc550', '00:16:94:22:29:0E') for a in btcargs]
|
||||
inp = ' '.join(btcargs)
|
||||
stuff_screen(inp)
|
||||
screen.send_cmd('bluetoothctl ' + inp)
|
||||
|
||||
show_secs = False
|
||||
def toggle_secs(args):
|
||||
global show_secs
|
||||
show_secs = not show_secs
|
||||
|
||||
def stuff_screen(cmd):
|
||||
subprocess.run(['screen', '-S', 'lemonbar', '-X', 'stuff', "echo " + cmd + "\\n"])
|
||||
|
||||
# Keymaps
|
||||
def_keymap = 'pl'
|
||||
keymaps = {'Firefox': 'se'}
|
||||
@@ -154,3 +151,49 @@ def set_keymap(i3ws):
|
||||
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])
|
||||
|
||||
def create_new_fifo(fifo_file):
|
||||
"""
|
||||
Create new fifo file, removing old one if it exists
|
||||
"""
|
||||
try:
|
||||
os.remove(fifo_file)
|
||||
logger.debug('''Removed old fifo file''')
|
||||
except OSError:
|
||||
logger.debug('''No old fifo file, good''')
|
||||
|
||||
try:
|
||||
os.mkfifo(fifo_file)
|
||||
except OSError:
|
||||
logger.error('''Failed, couldn't create fifo file''')
|
||||
os.remove(config.pid_file) # Clean up own PID file
|
||||
sys.exit(0)
|
||||
|
||||
class LemonbarScreen:
|
||||
# Start, stop and send commands to screen instance
|
||||
|
||||
# Start detached, in UTF-8 mode. Log to fifo
|
||||
start_flags = ['-d', '-m', '-U', '-L', '-Logfile', config.fifo_screen_log]
|
||||
|
||||
def __init__(self):
|
||||
self.identifier = 'lemonbar_{}_{}'.format(getpass.getuser(), os.getpid())
|
||||
|
||||
create_new_fifo(config.fifo_screen_log)
|
||||
self.send(self.start_flags) # Start screen
|
||||
self.send_cmd('stty -echo') # Do not echo what is written to screen terminal
|
||||
self.send_colon('logfile flush 0.1') # Log quickly
|
||||
|
||||
def destroy(self):
|
||||
self.send_colon('kill')
|
||||
|
||||
def send(self, args):
|
||||
# Send something to our screen instance
|
||||
subprocess.call(['screen', '-S', self.identifier] + args)
|
||||
|
||||
def send_cmd(self, cmd):
|
||||
# Send terminal input to our screen instance
|
||||
self.send(['-X', 'stuff', cmd + '\n'])
|
||||
|
||||
def send_colon(self, cmd):
|
||||
# Send colon command to our screen instance
|
||||
self.send(['-X', 'colon', cmd + '\n'])
|
||||
|
||||
Reference in New Issue
Block a user