{ pkgs, lib, config, ... }: let builtin_configs = [ "off" "common" "clone-largest" "horizontal" "vertical" "horizontal-reverse" "vertical-reverse" ]; autorandrmenu = { title, option, builtin ? false }: pkgs.writeShellScript "autorandrmenu" '' shopt -s nullglob globstar profiles="${if builtin then lib.strings.concatLines builtin_configs else ""}$(${pkgs.autorandr}/bin/autorandr | ${pkgs.gawk}/bin/awk '{ print $1 }')" profile="$(echo "$profiles" | ${config.programs.rofi.package}/bin/rofi -dmenu -p "${title}")" [[ -n "$profile" ]] || exit ${pkgs.autorandr}/bin/autorandr ${option} "$profile" ''; in { config = lib.mkIf config.frogeye.desktop.xorg { frogeye.desktop.i3.bindmodes = { "Screen setup [A] Auto [L] Load [S] Save [R] Remove [D] Default" = { bindings = { "a" = "exec ${pkgs.autorandr}/bin/autorandr --change --force, mode default"; "l" = "exec ${autorandrmenu {title="Load profile"; option="--load"; builtin = true;}}, mode default"; "s" = "exec ${autorandrmenu {title="Save profile"; option="--save";}}, mode default"; "r" = "exec ${autorandrmenu {title="Remove profile"; option="--remove";}}, mode default"; "d" = "exec ${autorandrmenu {title="Default profile"; option="--default"; builtin = true;}}, mode default"; }; mod_enter = "t"; }; }; programs.autorandr.enable = true; services.autorandr.enable = true; }; } # TODO Deterministic configs?