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"
|
"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,
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
107
home/apps/i3.nix
107
home/apps/i3.nix
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue