feat(i3): use swayfx, better shared config

This commit is contained in:
winston 2023-03-16 12:50:59 +01:00
parent 562f8e9205
commit 28457d0525
Signed by: winston
GPG key ID: 3786770EDBC2B481
5 changed files with 146 additions and 34 deletions

View file

@ -36,6 +36,22 @@
"type": "github" "type": "github"
} }
}, },
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1650374568,
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": { "flake-utils": {
"locked": { "locked": {
"lastModified": 1676283394, "lastModified": 1676283394,
@ -224,6 +240,22 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_4": {
"locked": {
"lastModified": 1678875422,
"narHash": "sha256-T3o6NcQPwXjxJMn2shz86Chch4ljXgZn746c2caGxd8=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "126f49a01de5b7e35a43fd43f891ecf6d3a51459",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nur": { "nur": {
"locked": { "locked": {
"lastModified": 1678614282, "lastModified": 1678614282,
@ -271,7 +303,8 @@
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"nur": "nur", "nur": "nur",
"pre-commit-hooks": "pre-commit-hooks", "pre-commit-hooks": "pre-commit-hooks",
"sops": "sops" "sops": "sops",
"swayfx": "swayfx"
} }
}, },
"sops": { "sops": {
@ -293,6 +326,25 @@
"type": "github" "type": "github"
} }
}, },
"swayfx": {
"inputs": {
"flake-compat": "flake-compat_2",
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1678605650,
"narHash": "sha256-ROy8sD8/W1Sv1vF5D0EBSBm6W0KiWsuJGnQMRk6zT3Y=",
"owner": "willpower3309",
"repo": "swayfx",
"rev": "ac31a612164828ca6ae5478332eee3cd2317ffdc",
"type": "github"
},
"original": {
"owner": "willpower3309",
"repo": "swayfx",
"type": "github"
}
},
"utils": { "utils": {
"locked": { "locked": {
"lastModified": 1676283394, "lastModified": 1676283394,

View file

@ -20,6 +20,7 @@
sops.url = "github:Mic92/sops-nix"; sops.url = "github:Mic92/sops-nix";
# dev # dev
swayfx.url = "github:willpower3309/swayfx";
pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix";
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
}; };
@ -35,6 +36,7 @@
nur, nur,
pre-commit-hooks, pre-commit-hooks,
sops, sops,
swayfx,
... ...
}: let }: let
overlays = final: prev: { overlays = final: prev: {
@ -72,6 +74,7 @@
extraSpecialArgs = { extraSpecialArgs = {
flakePath = "/home/winston/.config/nixpkgs"; flakePath = "/home/winston/.config/nixpkgs";
machine.personal = true; machine.personal = true;
swayfx = swayfx.packages.${system}.swayfx-unwrapped;
}; };
}; };
}; };
@ -87,7 +90,7 @@
({config, ...}: { ({config, ...}: {
config = { config = {
nixpkgs.overlays = [overlays]; nixpkgs.overlays = [overlays swayfx.overlays.default];
home-manager = { home-manager = {
useGlobalPkgs = true; useGlobalPkgs = true;
sharedModules = [sops.homeManagerModules.sops]; sharedModules = [sops.homeManagerModules.sops];
@ -95,6 +98,7 @@
extraSpecialArgs = { extraSpecialArgs = {
flakePath = "/home/w/.config/nixpkgs"; flakePath = "/home/w/.config/nixpkgs";
machine.personal = false; machine.personal = false;
swayfx = swayfx.packages.${system}.swayfx-unwrapped;
}; };
}; };
}; };

View file

@ -3,6 +3,7 @@
lib, lib,
flakePath, flakePath,
pkgs, pkgs,
swayfx,
... ...
}: let }: let
inherit (pkgs.stdenv.hostPlatform) isLinux; inherit (pkgs.stdenv.hostPlatform) isLinux;
@ -30,6 +31,7 @@
workspaceAutoBackAndForth = true; workspaceAutoBackAndForth = true;
terminal = "wezterm start --always-new-process"; terminal = "wezterm start --always-new-process";
menu = ""; menu = "";
defaultWorkspace = "$ws1";
keybindings = let keybindings = let
mod = modifier; mod = modifier;
modMove = "${mod}+Shift"; modMove = "${mod}+Shift";
@ -152,17 +154,25 @@
# modes # modes
"${mod}+r" = "mode \"resize\""; "${mod}+r" = "mode \"resize\"";
"${mod}+p" = "mode \"system\""; "${mod}+p" = "mode \"power: (l)ock, (e)xit, (r)eboot, (s)uspend, (h)ibernate, (S)hut off\"";
}; };
modes = { modes = {
system = { "power: (l)ock, (e)xit, (r)eboot, (s)uspend, (h)ibernate, (S)hut off" = let
"l" = "exec --no-startup-id i3exit lock, mode \"default\""; lock =
"s" = "exec --no-startup-id i3exit suspend, mode \"default\""; if wayland
"u" = "exec --no-startup-id i3exit switch_user, mode \"default\""; then "swaylock"
"e" = "exec --no-startup-id i3exit logout, mode \"default\""; else "i3lock";
"h" = "exec --no-startup-id i3exit hibernate, mode \"default\""; msg =
"r" = "exec --no-startup-id i3exit reboot, mode \"default\""; if wayland
"Shift+s" = "exec --no-startup-id i3exit shutdown, mode \"default\""; then "swaymsg"
else "i3-msg";
in {
l = "exec --no-startup-id ${lock} --color 000000, mode \"default\"";
e = "exec --no-startup-id ${msg} exit, mode \"default\"";
r = "exec --no-startup-id systemctl reboot, mode \"default\"";
s = "exec --no-startup-id systemctl suspend, mode \"default\"";
h = "exec --no-startup-id systemctl hibernate, mode \"default\"";
"Shift+s" = "exec --no-startup-id systemctl poweroff, mode \"default\"";
Escape = "mode default"; Escape = "mode default";
Return = "mode default"; Return = "mode default";
}; };
@ -180,11 +190,10 @@
bars = [ bars = [
{ {
mode = "hide"; mode = "hide";
hiddenState = "hide";
# use waybar if wayland # use waybar if wayland
command = lib.mkIf wayland "${lib.getExe config.programs.waybar.package}"; command = lib.mkIf wayland "${lib.getExe config.programs.waybar.package}";
# otherwise use i3status-rust # otherwise use i3status-rust
statusCommand = lib.mkIf (!wayland) "${lib.getExe config.programs.i3status-rust.package} ${config.xdg.configHome}/i3status-rust/config-default.toml"; statusCommand = lib.mkIf (!wayland) "${config.programs.i3status-rust.package}/bin/i3status-rs ${config.xdg.configHome}/i3status-rust/config-default.toml";
position = "top"; position = "top";
workspaceNumbers = false; workspaceNumbers = false;
inherit fonts; inherit fonts;
@ -208,15 +217,7 @@
}; };
} }
]; ];
colors = let colors = rec {
unfocused = {
background = "#000000";
border = "#CBA6F7";
childBorder = "#CBA6F7";
text = "#CDD6F4";
indicator = "#CBA6F7";
};
in {
focused = { focused = {
background = "#000000"; background = "#000000";
border = "#F5C2E7"; border = "#F5C2E7";
@ -231,8 +232,14 @@
text = "#CDD6F4"; text = "#CDD6F4";
indicator = "#F38BA8"; indicator = "#F38BA8";
}; };
unfocused = {
background = "#000000";
border = "#CBA6F7";
childBorder = "#CBA6F7";
text = "#CDD6F4";
indicator = "#CBA6F7";
};
focusedInactive = unfocused; focusedInactive = unfocused;
unfocused = unfocused;
placeholder = unfocused; placeholder = unfocused;
}; };
window = { window = {
@ -242,7 +249,7 @@
}; };
gaps = { gaps = {
inner = 5; inner = 5;
outer = 5; outer = 2;
}; };
}; };
commonExtraConfig = '' commonExtraConfig = ''
@ -283,6 +290,42 @@
# keep apps in scratchpad # keep apps in scratchpad
for_window [class="discord"] move scratchpad sticky for_window [class="discord"] move scratchpad sticky
set $mode_gaps Gaps: (o)uter, (i)nner
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
bindsym ${(commonConfig {}).modifier}+Shift+g mode "$mode_gaps"
mode "$mode_gaps" {
bindsym o mode "$mode_gaps_outer"
bindsym i mode "$mode_gaps_inner"
bindsym Return mode "$mode_gaps"
bindsym Escape mode "default"
}
mode "$mode_gaps_outer" {
bindsym plus gaps outer current plus 5
bindsym minus gaps outer current minus 5
bindsym 0 gaps outer current set 0
bindsym Shift+plus gaps outer all plus 5
bindsym Shift+minus gaps outer all minus 5
bindsym Shift+0 gaps outer all set 0
bindsym Return mode "$mode_gaps"
bindsym Escape mode "default"
}
mode "$mode_gaps_inner" {
bindsym plus gaps inner current plus 5
bindsym minus gaps inner current minus 5
bindsym 0 gaps inner current set 0
bindsym Shift+plus gaps inner all plus 5
bindsym Shift+minus gaps inner all minus 5
bindsym Shift+0 gaps inner all set 0
bindsym Return mode "$mode_gaps"
bindsym Escape mode "default"
}
''; '';
in { in {
fonts.fontconfig.enable = true; fonts.fontconfig.enable = true;
@ -353,15 +396,13 @@ in {
enable = true; enable = true;
components = ["secrets"]; components = ["secrets"];
}; };
picom = let picom = {
riced = true;
in {
enable = true; enable = true;
package = pkgs.nur.repos.nekowinston.picom-ft-labs; package = pkgs.nur.repos.nekowinston.picom-ft-labs;
fade = false; fade = false;
backend = "glx"; backend = "glx";
vSync = true; vSync = true;
shadow = riced; shadow = true;
settings = { settings = {
animations = true; animations = true;
animation-exclude = [ animation-exclude = [
@ -378,9 +419,7 @@ in {
enable-fading-prev-tag = true; enable-fading-prev-tag = true;
enable-fading-next-tag = true; enable-fading-next-tag = true;
blur = lib.mkIf riced { blur.method = "dual_kawase";
method = "dual_kawase";
};
blur-background-exclude = [ blur-background-exclude = [
"window_type = 'dock'" "window_type = 'dock'"
"window_type = 'desktop'" "window_type = 'desktop'"
@ -427,6 +466,7 @@ in {
wayland.windowManager.sway = lib.mkIf isLinux { wayland.windowManager.sway = lib.mkIf isLinux {
enable = true; enable = true;
package = swayfx;
config = config =
commonConfig {wayland = true;} commonConfig {wayland = true;}
// { // {
@ -437,7 +477,14 @@ in {
} }
]; ];
}; };
extraConfig = commonExtraConfig; extraConfig = ''
${commonExtraConfig}
shadows on
shadow_color #0000007F
shadow_blur_radius 5
corner_radius 5
smart_corner_radius on
'';
systemdIntegration = true; systemdIntegration = true;
wrapperFeatures = { wrapperFeatures = {
base = true; base = true;

View file

@ -7,4 +7,6 @@
]; ];
# needed for gnome3 pinentry # needed for gnome3 pinentry
services.dbus.packages = [pkgs.gcr]; services.dbus.packages = [pkgs.gcr];
xdg.portal.enable = true;
xdg.portal.wlr.enable = true;
} }

View file

@ -35,9 +35,16 @@
xserver = { xserver = {
enable = true; enable = true;
desktopManager.xterm.enable = false; desktopManager.xterm.enable = false;
displayManager.gdm.enable = true; displayManager = {
gdm.enable = true;
# one of these days, it'll be sway :COPIUM:
defaultSession = "none+i3";
};
libinput.enable = true; libinput.enable = true;
windowManager.i3.enable = true; windowManager.i3 = {
enable = true;
package = pkgs.unstable.i3;
};
xkbOptions = "caps:ctrl_modifier"; xkbOptions = "caps:ctrl_modifier";
}; };
}; };