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"
}
},
"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": {
"locked": {
"lastModified": 1676283394,
@ -224,6 +240,22 @@
"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": {
"locked": {
"lastModified": 1678614282,
@ -271,7 +303,8 @@
"nixpkgs-unstable": "nixpkgs-unstable",
"nur": "nur",
"pre-commit-hooks": "pre-commit-hooks",
"sops": "sops"
"sops": "sops",
"swayfx": "swayfx"
}
},
"sops": {
@ -293,6 +326,25 @@
"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": {
"locked": {
"lastModified": 1676283394,

View file

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

View file

@ -3,6 +3,7 @@
lib,
flakePath,
pkgs,
swayfx,
...
}: let
inherit (pkgs.stdenv.hostPlatform) isLinux;
@ -30,6 +31,7 @@
workspaceAutoBackAndForth = true;
terminal = "wezterm start --always-new-process";
menu = "";
defaultWorkspace = "$ws1";
keybindings = let
mod = modifier;
modMove = "${mod}+Shift";
@ -152,17 +154,25 @@
# modes
"${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 = {
system = {
"l" = "exec --no-startup-id i3exit lock, mode \"default\"";
"s" = "exec --no-startup-id i3exit suspend, mode \"default\"";
"u" = "exec --no-startup-id i3exit switch_user, mode \"default\"";
"e" = "exec --no-startup-id i3exit logout, mode \"default\"";
"h" = "exec --no-startup-id i3exit hibernate, mode \"default\"";
"r" = "exec --no-startup-id i3exit reboot, mode \"default\"";
"Shift+s" = "exec --no-startup-id i3exit shutdown, mode \"default\"";
"power: (l)ock, (e)xit, (r)eboot, (s)uspend, (h)ibernate, (S)hut off" = let
lock =
if wayland
then "swaylock"
else "i3lock";
msg =
if wayland
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";
Return = "mode default";
};
@ -180,11 +190,10 @@
bars = [
{
mode = "hide";
hiddenState = "hide";
# use waybar if wayland
command = lib.mkIf wayland "${lib.getExe config.programs.waybar.package}";
# 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";
workspaceNumbers = false;
inherit fonts;
@ -208,15 +217,7 @@
};
}
];
colors = let
unfocused = {
background = "#000000";
border = "#CBA6F7";
childBorder = "#CBA6F7";
text = "#CDD6F4";
indicator = "#CBA6F7";
};
in {
colors = rec {
focused = {
background = "#000000";
border = "#F5C2E7";
@ -231,8 +232,14 @@
text = "#CDD6F4";
indicator = "#F38BA8";
};
unfocused = {
background = "#000000";
border = "#CBA6F7";
childBorder = "#CBA6F7";
text = "#CDD6F4";
indicator = "#CBA6F7";
};
focusedInactive = unfocused;
unfocused = unfocused;
placeholder = unfocused;
};
window = {
@ -242,7 +249,7 @@
};
gaps = {
inner = 5;
outer = 5;
outer = 2;
};
};
commonExtraConfig = ''
@ -283,6 +290,42 @@
# keep apps in scratchpad
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 {
fonts.fontconfig.enable = true;
@ -353,15 +396,13 @@ in {
enable = true;
components = ["secrets"];
};
picom = let
riced = true;
in {
picom = {
enable = true;
package = pkgs.nur.repos.nekowinston.picom-ft-labs;
fade = false;
backend = "glx";
vSync = true;
shadow = riced;
shadow = true;
settings = {
animations = true;
animation-exclude = [
@ -378,9 +419,7 @@ in {
enable-fading-prev-tag = true;
enable-fading-next-tag = true;
blur = lib.mkIf riced {
method = "dual_kawase";
};
blur.method = "dual_kawase";
blur-background-exclude = [
"window_type = 'dock'"
"window_type = 'desktop'"
@ -427,6 +466,7 @@ in {
wayland.windowManager.sway = lib.mkIf isLinux {
enable = true;
package = swayfx;
config =
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;
wrapperFeatures = {
base = true;

View file

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

View file

@ -35,9 +35,16 @@
xserver = {
enable = true;
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;
windowManager.i3.enable = true;
windowManager.i3 = {
enable = true;
package = pkgs.unstable.i3;
};
xkbOptions = "caps:ctrl_modifier";
};
};