refactor(desktop): rework kanshi configurations

This commit is contained in:
Yorick Barbanneau 2025-09-26 22:18:20 +02:00
parent 0d8a394dcf
commit 70ec9d25a7
Signed by: ephase
GPG key ID: 246042E52B41FFCF
7 changed files with 104 additions and 65 deletions

View file

@ -29,7 +29,7 @@
accounts.dav.enable = true; accounts.dav.enable = true;
desktop.sway = { desktop.sway = {
enable = true; enable = true;
kanshi = true; kanshi.enable = true;
wallpapers.lockscreen = "${./files/lockscreen.png}"; wallpapers.lockscreen = "${./files/lockscreen.png}";
wallpapers.desktop = "${./files/wallpaper.png} center #000000"; wallpapers.desktop = "${./files/wallpaper.png} center #000000";
waybar = { waybar = {

View file

@ -46,7 +46,20 @@
desktop.sway = { desktop.sway = {
enable = true; enable = true;
wallpapers.lockscreen = "${./files/lockscreen.png}"; wallpapers.lockscreen = "${./files/lockscreen.png}";
kanshi = true; kanshi = {
enable = true;
standalone = {
profile.name = "standalone";
profile.outputs = [
{
criteria = "eDP-1";
scale = 1.325;
transform = "90";
status = "enable";
}
];
};
};
waybar = { waybar = {
laptop = true; laptop = true;
gpuThermal.enable = false; gpuThermal.enable = false;

View file

@ -22,11 +22,5 @@
"pointer_accel" = "0.3"; "pointer_accel" = "0.3";
}; };
}; };
wayland.windowManager.sway.config.output = {
"eDP-1" = {
transform = "90";
scale = "1.3";
};
};
sops.age.keyFile = "/home/ephase/.config/sops/age/keys.txt"; sops.age.keyFile = "/home/ephase/.config/sops/age/keys.txt";
} }

View file

@ -38,7 +38,7 @@
gaming.lutris.enable = false; gaming.lutris.enable = false;
desktop.sway = { desktop.sway = {
enable = true; enable = true;
kanshi = false; kanshi.enable = false;
swaylock.useNullPackage = true; swaylock.useNullPackage = true;
wallpapers.lockscreen = "${./files/lockscreen.png}"; wallpapers.lockscreen = "${./files/lockscreen.png}";
wallpapers.desktop = "${./files/background.png} fill #000000"; wallpapers.desktop = "${./files/background.png} fill #000000";

View file

@ -36,7 +36,28 @@
}; };
desktop.sway = { desktop.sway = {
enable = true; enable = true;
kanshi = true; kanshi = {
enable = true;
profiles = [
{
profile.name = "work";
profile.outputs = [
{
criteria = "Iiyama North America PL2792QN 1179214201663";
mode = "2560x1440";
position = "1450,0";
scale = 1.15;
}
{
criteria = "BOE 0x0A95 Unknown";
mode = "1920x1080";
position = "0,0";
scale = 1.325;
}
];
}
];
swaylock.useNullPackage = true; swaylock.useNullPackage = true;
waybar = { waybar = {
laptop = true; laptop = true;

View file

@ -10,12 +10,66 @@ in {
options.modules.desktop.sway = { options.modules.desktop.sway = {
enable = mkEnableOption "enable Sway Windows Manager"; enable = mkEnableOption "enable Sway Windows Manager";
kanshi = mkOption { kanshi.enable = mkOption {
type = types.bool; type = types.bool;
default = false; default = false;
description = "configure laptop mode"; description = "configure laptop mode";
}; };
kanshi.standalone = mkOption {
type = types.attrs;
default = {
profile.name = "standalone";
profile.outputs = [
{
criteria = "eDP-1";
scale = 1.325;
status = "enable";
}
];
};
description = ''
Default configuration for laptop internal screen when no others screen
are connected.
'';
};
kanshi.home = mkOption {
type = types.attrs;
default = {
profile.name = "home";
profile.outputs = [
{
criteria = "Iiyama North America PL2792UH 1166310803122";
mode = "3840x2160";
position = "1235,0";
scale = 1.75;
}
{
criteria = "Iiyama North America PL2792UH 1176923201598";
mode = "3840x2160";
position = "0,0";
transform = "90";
scale = 1.75;
}
{
criteria = "eDP-1";
status = "disable";
}
];
};
description = ''
Default home configuration use on most of my laptops
'';
};
kanshi.others = mkOption {
type = types.listOf types.attrs;
default = [];
description = ''
Kanshi profile to use specifically for host
'';
};
swaylock.useNullPackage = mkOption { swaylock.useNullPackage = mkOption {
type = types.bool; type = types.bool;
default = false; default = false;

View file

@ -3,61 +3,18 @@
lib, lib,
... ...
}: }:
with lib; { with lib; let
config = mkIf config.modules.desktop.sway.enable { cfg = config.modules.desktop.sway;
in {
config = mkIf cfg.enable {
services.kanshi = { services.kanshi = {
enable = config.modules.desktop.sway.kanshi; enable = cfg.kanshi.enable;
settings = [ settings =
{ [
profile.name = "standalone"; cfg.kanshi.standalone
profile.outputs = [ cfg.kanshi.home
{ ]
criteria = "eDP-1"; ++ cfg.kanshi.others;
scale = 1.33;
status = "enable";
}
];
}
{
profile.name = "home";
profile.outputs = [
{
criteria = "Iiyama North America PL2792UH 1166310803122";
mode = "3840x2160";
position = "1235,0";
scale = 1.75;
}
{
criteria = "Iiyama North America PL2792UH 1176923201598";
mode = "3840x2160";
position = "0,0";
transform = "90";
scale = 1.75;
}
{
criteria = "eDP-1";
status = "disable";
}
];
}
{
profile.name = "work";
profile.outputs = [
{
criteria = "Iiyama North America PL2792QN 1179214201663";
mode = "2560x1440";
position = "1450,0";
scale = 1.15;
}
{
criteria = "BOE 0x0A95 Unknown";
mode = "1920x1080";
position = "0,0";
scale = 1.325;
}
];
}
];
}; };
}; };
} }