feat(i3): use swayfx, better shared config
This commit is contained in:
parent
562f8e9205
commit
28457d0525
5 changed files with 146 additions and 34 deletions
54
flake.lock
54
flake.lock
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
107
home/apps/i3.nix
107
home/apps/i3.nix
|
@ -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;
|
||||
|
|
|
@ -7,4 +7,6 @@
|
|||
];
|
||||
# needed for gnome3 pinentry
|
||||
services.dbus.packages = [pkgs.gcr];
|
||||
xdg.portal.enable = true;
|
||||
xdg.portal.wlr.enable = true;
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue