73 lines
1.8 KiB
Nix
73 lines
1.8 KiB
Nix
{
|
|
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;
|
|
};
|
|
}
|