{ lib, config, pkgs, ... }: let cfg = config.myConfig.sway.kanshi; in { options.myConfig.sway.kanshi = { enable = lib.mkEnableOption "kanshi, a dynamic display recognizer"; laptop = lib.mkEnableOption "laptop workspaces"; }; config = lib.mkIf cfg.enable { services.kanshi = { enable = true; settings = lib.mkIf cfg.laptop [ { profile.name = "laptop"; profile.outputs = [ { criteria = "eDP-1"; position = "0,0"; } ]; } { profile.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"; } ]; profile.exec = [ "${pkgs.sway}/bin/swaymsg workspace main; move workspace to DP-4; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace term; move workspace to DP-5; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace msg; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace music; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace 5; move workspace to DP-4; workspace back_and_forth" ]; } { profile.outputs = [ { criteria = "eDP-1"; position = "0,1080"; } { criteria = "Dell Inc. DELL U2422HE 8YCPH83"; transform = "normal"; position = "0,0"; } { criteria = "Dell Inc. DELL P2422HE 28XL9M3"; transform = "normal"; position = "1920,0"; } ]; profile.exec = [ "${pkgs.sway}/bin/swaymsg workspace main; move workspace to '\"Dell Inc. DELL U2422HE 8YCPH83\"'; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace term; move workspace to '\"Dell Inc. DELL P2422HE 28XL9M3\"'; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace msg; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace music; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace 5; move workspace to '\"Dell Inc. DELL U2422HE 8YCPH83\"'; workspace back_and_forth" ]; } { profile.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"; } ]; profile.exec = [ "${pkgs.sway}/bin/swaymsg workspace main; move workspace to DP-6; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace term; move workspace to DP-7; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace msg; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace music; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace 5; move workspace to DP-6; workspace back_and_forth" ]; } { profile.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"; } ]; profile.exec = [ "${pkgs.sway}/bin/swaymsg workspace main; move workspace to DP-3; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace term; move workspace to DP-4; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace msg; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace music; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace 5; move workspace to DP-3; workspace back_and_forth" ]; } { profile.outputs = [ { criteria = "eDP-1"; position = "1080,1080"; } { criteria = "Dell Inc. DELL P2422HE JLXL9M3"; position = "1080,0"; } { criteria = "NEC Corporation E243WMi 59118576NB"; transform = "90"; position = "0,0"; } ]; profile.exec = [ "${pkgs.sway}/bin/swaymsg workspace main; move workspace to DP-3; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace term; move workspace to DP-4; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace msg; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace music; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace 5; move workspace to DP-3; workspace back_and_forth" ]; } { profile.outputs = [ { criteria = "eDP-1"; position = "0,1080"; } { criteria = "Dell Inc. DELL P2422HE 7VWL9M3"; position = "0,0"; } { criteria = "ViewSonic Corporation VG2448 V5E201960167"; transform = "90"; position = "1920,0"; } ]; profile.exec = [ "${pkgs.sway}/bin/swaymsg workspace main; move workspace to '\"Dell Inc. DELL P2422HE 7VWL9M3\"'; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace term; move workspace to '\"ViewSonic Corporation VG2448 V5E201960167\"'; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace msg; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace music; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace 5; move workspace to '\"Dell Inc. DELL P2422HE 7VWL9M3\"'; workspace back_and_forth" ]; } { profile.outputs = [ { criteria = "eDP-1"; position = "1080,1080"; } { criteria = "Dell Inc. DELL U2422HE 7HCPH83"; position = "1080,0"; } { criteria = "Dell Inc. DELL U2422HE 1XFFH83"; transform = "90"; position = "0,0"; } ]; profile.exec = [ "${pkgs.sway}/bin/swaymsg workspace main; move workspace to '\"Dell Inc. DELL U2422HE 7HCPH83\"'; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace term; move workspace to '\"Dell Inc. DELL U2422HE 1XFFH83\"'; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace msg; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace music; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace 5; move workspace to '\"Dell Inc. DELL U2422HE 7HCPH83\"'; workspace back_and_forth" ]; } { profile.outputs = [ { criteria = "eDP-1"; position = "1080,1080"; } { criteria = "DP-3"; position = "1080,0"; } { criteria = "DP-1"; transform = "90"; position = "0,0"; } ]; profile.exec = [ "${pkgs.sway}/bin/swaymsg workspace main; move workspace to DP-3; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace term; move workspace to DP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace msg; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace music; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace 5; move workspace to DP-3; workspace back_and_forth" ]; } { profile.name = "docked-4k"; profile.outputs = [ { criteria = "eDP-1"; position = "320,1440"; } { criteria = "HannStar Display Corp HC281UPB "; position = "0,0"; mode = "3840x2160@60"; scale = 1.5; } ]; profile.exec = [ "${pkgs.sway}/bin/swaymsg workspace main; move workspace to HDMI-A-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace term; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace msg; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace music; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace 5; move workspace to HDMI-A-1; workspace back_and_forth" ]; } { profile.outputs = [ { criteria = "eDP-1"; position = "0,0"; } { criteria = "Hisense Electric Co., Ltd. HISENSE 0x00000001"; position = "1920,0"; } ]; profile.exec = [ "${pkgs.sway}/bin/swaymsg workspace --no-auto-back-and-forth main; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace --no-auto-back-and-forth term; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace --no-auto-back-and-forth msg; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace --no-auto-back-and-forth music; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace --no-auto-back-and-forth 5; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace --no-auto-back-and-forth mirror; move workspace to HDMI-A-1; exec ${pkgs.wl-mirror}/bin/wl-mirror eDP-1; workspace back_and_forth" ]; } { profile.outputs = [ { criteria = "eDP-1"; position = "0,1080"; } { criteria = "ViewSonic Corporation VG2448 V5E201864188"; position = "0,0"; } ]; profile.exec = [ "${pkgs.sway}/bin/swaymsg workspace --no-auto-back-and-forth main; move workspace to '\"ViewSonic Corporation VG2448 V5E201864188\"'; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace --no-auto-back-and-forth term; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace --no-auto-back-and-forth msg; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace --no-auto-back-and-forth music; move workspace to eDP-1; workspace back_and_forth" "${pkgs.sway}/bin/swaymsg workspace --no-auto-back-and-forth 5; move workspace to '\"ViewSonic Corporation VG2448 V5E201864188\"'; workspace back_and_forth" ]; } ]; }; }; }