From 278de2d7f69898b07bdd69edba7d84f9ddf2acab Mon Sep 17 00:00:00 2001 From: Gilles Castel <66gilles99@gmail.com> Date: Fri, 8 Mar 2019 14:16:01 +0100 Subject: Initial commit --- rofi.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 rofi.py (limited to 'rofi.py') diff --git a/rofi.py b/rofi.py new file mode 100644 index 0000000..101c1c6 --- /dev/null +++ b/rofi.py @@ -0,0 +1,30 @@ +import subprocess + +def rofi(prompt, options, rofi_args=[], fuzzy=True): + optionstr = '\n'.join(option.replace('\n', ' ') for option in options) + args = ['rofi', '-sort', '-no-levenshtein-sort'] + if fuzzy: + args += ['-matching', 'fuzzy'] + args += ['-dmenu', '-p', prompt, '-format', 's', '-i'] + args += rofi_args + args = [str(arg) for arg in args] + + + result = subprocess.run(args, input=optionstr, stdout=subprocess.PIPE, universal_newlines=True) + returncode = result.returncode + stdout = result.stdout.strip() + + selected = stdout.strip() + try: + index = [opt.strip() for opt in options].index(selected) + except ValueError: + index = -1 + + if returncode == 0: + key = 0 + elif returncode == 1: + key = -1 + elif returncode > 9: + key = returncode - 9 + + return key, index, selected -- cgit v1.2.3