{ 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; }; }