{ lib, config, pkgs, ... }: let cfg = config.sway.kanshi; in { options = { sway.kanshi.enable = lib.mkEnableOption "kanshi, a dynamic display recognizer"; sway.kanshi.laptop = lib.mkEnableOption "laptop workspaces"; }; config = lib.mkIf cfg.enable { services.kanshi = { enable = true; profiles = lib.mkIf cfg.laptop { laptop.outputs = [ { criteria = "eDP-1"; position = "0,0"; } ]; dock_luhbots = { outputs = [ { criteria = "eDP-1"; position = "0,1080"; } { criteria = "Dell Inc. DELL U2422HE GRCPH83"; position = "0,0"; } { criteria = "NEC Corporation E243WMi 7X313185NB"; transform = "90"; position = "1920,0"; } ]; exec = [ "${pkgs.sway}/bin/swaymsg workspace 1, move workspace to DP-4" "${pkgs.sway}/bin/swaymsg workspace 2, move workspace to DP-5" "${pkgs.sway}/bin/swaymsg workspace 3, move workspace to eDP-1" "${pkgs.sway}/bin/swaymsg workspace 4, move workspace to eDP-1" "${pkgs.sway}/bin/swaymsg workspace 5, move workspace to DP-4" ]; }; dock_luhbots2 = { outputs = [ { criteria = "eDP-1"; position = "1080,1080"; } { criteria = "Dell Inc. DELL U2422HE 8YCPH83"; position = "1080,0"; } { criteria = "NEC Corporation E243WMi 59118576NB"; transform = "90"; position = "0,0"; } ]; exec = [ "${pkgs.sway}/bin/swaymsg workspace 1, move workspace to DP-4" "${pkgs.sway}/bin/swaymsg workspace 2, move workspace to DP-5" "${pkgs.sway}/bin/swaymsg workspace 3, move workspace to eDP-1" "${pkgs.sway}/bin/swaymsg workspace 4, move workspace to eDP-1" "${pkgs.sway}/bin/swaymsg workspace 5, move workspace to DP-4" ]; }; dock_luhbots3 = { outputs = [ { criteria = "eDP-1"; position = "0,1080"; } { criteria = "Dell Inc. DELL U2422HE 53DCH83"; position = "0,0"; } { criteria = "Dell Inc. DELL U2412M 0FFXD46I4U5S"; transform = "90"; position = "1920,0"; } ]; exec = [ "${pkgs.sway}/bin/swaymsg workspace 1, move workspace to DP-6" "${pkgs.sway}/bin/swaymsg workspace 2, move workspace to DP-7" "${pkgs.sway}/bin/swaymsg workspace 3, move workspace to eDP-1" "${pkgs.sway}/bin/swaymsg workspace 4, move workspace to eDP-1" "${pkgs.sway}/bin/swaymsg workspace 5, move workspace to DP-6" ]; }; dock_luhbots4 = { outputs = [ { criteria = "eDP-1"; position = "1080,1080"; } { criteria = "Dell Inc. DELL P2422HE 4BXL9M3"; position = "1080,0"; } { criteria = "NEC Corporation E243WMi 75309334NB"; transform = "90"; position = "0,0"; } ]; exec = [ "${pkgs.sway}/bin/swaymsg workspace 1, move workspace to DP-3" "${pkgs.sway}/bin/swaymsg workspace 2, move workspace to DP-4" "${pkgs.sway}/bin/swaymsg workspace 3, move workspace to eDP-1" "${pkgs.sway}/bin/swaymsg workspace 4, move workspace to eDP-1" "${pkgs.sway}/bin/swaymsg workspace 5, move workspace to DP-3" ]; }; laptop_hannspree = { outputs = [ { criteria = "eDP-1"; position = "320,1440"; } { criteria = "HannStar Display Corp HC281UPB "; position = "0,0"; mode = "3840x2160@60"; scale = 1.5; } ]; exec = [ "${pkgs.sway}/bin/swaymsg workspace 1, move workspace to HDMI-A-1" "${pkgs.sway}/bin/swaymsg workspace 2, move workspace to eDP-1" "${pkgs.sway}/bin/swaymsg workspace 3, move workspace to eDP-1" "${pkgs.sway}/bin/swaymsg workspace 4, move workspace to eDP-1" "${pkgs.sway}/bin/swaymsg workspace 5, move workspace to HDMI-A-1" ]; }; }; }; }; }