#!/usr/bin/env python3 import configparser import math import os import sys def main(): action = parse_action() if action == "+": update_font_size(get_size_increment) elif action == "-": update_font_size(get_size_decrement) else: update_font_size(lambda _: action) def parse_action(): if len(sys.argv) != 2: print_help_exit() action = sys.argv[1] if action != "+" and action != "-" and not action.isdigit(): print_help_exit() if action.isdigit(): action = int(action) if action < 1: print_help_exit() return action def print_help_exit(): print("Usage: %s [+|-|22]", file=sys.stderr) sys.exit(1) def get_size_increment(size): if size >= 40: return math.floor(size / 8) * 8 + 8 if size >= 28: return math.floor(size / 4) * 4 + 4 if size >= 18: return math.floor(size / 2) * 2 + 2 return size + 1 def get_size_decrement(size): if size > 40: return math.ceil(size / 8) * 8 - 8 if size > 28: return math.ceil(size / 4) * 4 - 4 if size > 18: return math.ceil(size / 2) * 2 - 2 return size - 1 def update_font_size(fn): filename = get_config_filename() config = configparser.RawConfigParser() config.optionxform = lambda key: key config.read(filename) font_name, old_size = config["Configuration"]["FontName"].rsplit(" ", 1) new_size = fn(int(old_size)) config["Configuration"]["FontName"] = "%s %s" % (font_name, new_size) print("Updating font size:", old_size, "->", new_size) with open(filename+".new", "w") as f: config.write(f) os.rename(filename+".new", filename) def get_config_filename(): xdg_config_dir = os.environ.get("XDG_CONFIG_HOME", None) if not xdg_config_dir: xdg_config_dir = os.path.expanduser("~/.config") return os.path.join(xdg_config_dir, "xfce4", "terminal", "terminalrc") if __name__ == "__main__": main()