refactor: switch from sway to i3
This commit is contained in:
parent
eb622e5e45
commit
d68d1aa679
|
@ -68,14 +68,21 @@ in
|
||||||
# Enable the X11 windowing system.
|
# Enable the X11 windowing system.
|
||||||
services.xserver.enable = true;
|
services.xserver.enable = true;
|
||||||
|
|
||||||
# Enable the KDE Plasma Desktop Environment.
|
|
||||||
services.xserver.displayManager.defaultSession = "sway";
|
|
||||||
services.xserver.displayManager.sddm.enable = true;
|
|
||||||
|
|
||||||
# Configure keymap in X11
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
|
# Configure keymap in X11.
|
||||||
layout = "gb";
|
layout = "gb";
|
||||||
xkbVariant = "";
|
xkbVariant = "";
|
||||||
|
|
||||||
|
displayManager = {
|
||||||
|
defaultSession = "none+i3";
|
||||||
|
sddm.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
windowManager.i3 = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.i3-gaps;
|
||||||
|
extraPackages = with pkgs; [ i3status i3lock i3blocks ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Configure console keymap
|
# Configure console keymap
|
||||||
|
@ -123,25 +130,11 @@ in
|
||||||
configure-gtk
|
configure-gtk
|
||||||
ffmpegthumbnailer
|
ffmpegthumbnailer
|
||||||
shotwell
|
shotwell
|
||||||
swaybg
|
|
||||||
xfce.thunar
|
xfce.thunar
|
||||||
xfce.thunar-volman
|
xfce.thunar-volman
|
||||||
xfce.tumbler
|
xfce.tumbler
|
||||||
wl-clipboard
|
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
wlr.enable = true;
|
|
||||||
# gtk portal needed to make gtk apps happy
|
|
||||||
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.sway = {
|
|
||||||
enable = true;
|
|
||||||
wrapperFeatures.gtk = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Some programs need SUID wrappers, can be configured further or are
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
# started in user sessions.
|
# started in user sessions.
|
||||||
# programs.mtr.enable = true;
|
# programs.mtr.enable = true;
|
||||||
|
|
|
@ -19,9 +19,6 @@ in
|
||||||
pkgs.via
|
pkgs.via
|
||||||
pkgs.vial
|
pkgs.vial
|
||||||
pkgs.vlc
|
pkgs.vlc
|
||||||
pkgs.wl-mirror
|
|
||||||
pkgs.wob
|
|
||||||
pkgs.wofi
|
|
||||||
pkgs.xcape
|
pkgs.xcape
|
||||||
pkgs.zoom-us
|
pkgs.zoom-us
|
||||||
];
|
];
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./modules/alacritty.nix
|
./modules/alacritty.nix
|
||||||
./modules/sway.nix
|
./modules/i3.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.configFile.wallpaper = {
|
xdg.configFile.wallpaper = {
|
||||||
|
|
69
system/nixos/home-manager/modules/i3.nix
Normal file
69
system/nixos/home-manager/modules/i3.nix
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
{ config, inputs, self, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
modifier = "Mod4";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.file.".background-image".source = ../../../../config/wallpaper/wallpaper.jpg;
|
||||||
|
|
||||||
|
services.autorandr.enable = true;
|
||||||
|
|
||||||
|
programs.autorandr = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
profiles = {
|
||||||
|
default = {
|
||||||
|
# config = {
|
||||||
|
# "eDP-1" = {
|
||||||
|
# dpi = 96;
|
||||||
|
# enable = true;
|
||||||
|
# mode = "1920x1080";
|
||||||
|
# primary = true;
|
||||||
|
# rate = "60";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xsession.windowManager.i3 = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
config = {
|
||||||
|
assigns = {
|
||||||
|
"1" = [{ class = "firefox"; }];
|
||||||
|
"2" = [{ class = "Alacritty"; }];
|
||||||
|
"3" = [{ class = "vlc"; }];
|
||||||
|
"9" = [
|
||||||
|
{ class = "Slack"; }
|
||||||
|
{ class = "discord"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
modifier = modifier;
|
||||||
|
|
||||||
|
keybindings = inputs.nixpkgs.lib.mkOptionDefault {
|
||||||
|
"${modifier}+Shift+b" = "exec firefox";
|
||||||
|
# "${modifier}+tab" = "workspace back_and_forth";
|
||||||
|
};
|
||||||
|
|
||||||
|
terminal = "alacritty";
|
||||||
|
|
||||||
|
window = {
|
||||||
|
border = 0;
|
||||||
|
hideEdgeBorders = "none";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
set $laptop eDP-1
|
||||||
|
bindswitch --reload --locked lid:on output $laptop disable
|
||||||
|
bindswitch --reload --locked lid:off output $laptop enable
|
||||||
|
|
||||||
|
default_border none
|
||||||
|
default_floating_border none
|
||||||
|
smart_borders on
|
||||||
|
smart_gaps on
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,197 +0,0 @@
|
||||||
{ config, inputs, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
services.swayidle = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
events = [
|
|
||||||
{
|
|
||||||
event = "before-sleep";
|
|
||||||
command = "${pkgs.swaylock}/bin/swaylock --daemonize --image ~/.config/wallpaper/wallpaper.jpg";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.swayidle.timeouts = [
|
|
||||||
{
|
|
||||||
timeout = 300;
|
|
||||||
command = "${pkgs.swaylock}/bin/swaylock --daemonize --image ~/.config/wallpaper/wallpaper.jpg";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
timeout = 600;
|
|
||||||
command = "swaymsg 'output * dpms off'";
|
|
||||||
resumeCommand = "swaymsg 'output * dpms on'";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.swaylock = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
daemonize = true;
|
|
||||||
image = "~/.config/wallpaper/wallpaper.jpg";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.i3status-rust = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
bars = {
|
|
||||||
default = {
|
|
||||||
blocks = [
|
|
||||||
{
|
|
||||||
block = "net";
|
|
||||||
format = " $ip ";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
block = "battery";
|
|
||||||
format = " $icon $percentage $time ";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
block = "cpu";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
block = "memory";
|
|
||||||
format = " $icon $mem_total_used_percents.eng(w:2) ";
|
|
||||||
format_alt = " $icon_swap $swap_used_percents.eng(w:2) ";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
block = "disk_space";
|
|
||||||
path = "/";
|
|
||||||
info_type = "available";
|
|
||||||
alert_unit = "GB";
|
|
||||||
interval = 20;
|
|
||||||
warning = 20.0;
|
|
||||||
alert = 10.0;
|
|
||||||
format = " $icon $available.eng(w:2) ";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
block = "time";
|
|
||||||
interval = 1;
|
|
||||||
format = " $timestamp.datetime(f:'%F %T') ";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
theme = {
|
|
||||||
theme = "plain";
|
|
||||||
overrides = {
|
|
||||||
critical_bg = "#222222";
|
|
||||||
good_bg = "#222222";
|
|
||||||
good_fg = "#ffffff";
|
|
||||||
idle_bg = "#222222";
|
|
||||||
idle_fg = "#ffffff";
|
|
||||||
info_bg = "#222222";
|
|
||||||
info_fg = "#ffffff";
|
|
||||||
separator_bg = "#222222";
|
|
||||||
warning_bg = "#222222";
|
|
||||||
warning_fg = "#ffffff";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
wayland.windowManager.sway = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
config = {
|
|
||||||
assigns = {
|
|
||||||
"1" = [{ app_id = "firefox"; }];
|
|
||||||
"2" = [{ app_id = "Alacritty"; }];
|
|
||||||
"3" = [{ class = "vlc"; }];
|
|
||||||
"9" = [
|
|
||||||
{ class = "Slack"; }
|
|
||||||
{ class = "discord"; }
|
|
||||||
];
|
|
||||||
# Get app_id with swaymsg -t get_tree
|
|
||||||
};
|
|
||||||
|
|
||||||
bars = [
|
|
||||||
{
|
|
||||||
colors.background = "#222222";
|
|
||||||
|
|
||||||
fonts = {
|
|
||||||
names = [ "JetBrainsMono Nerd Font Mono" ];
|
|
||||||
size = 12.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
statusCommand = "i3status-rs ~/.config/i3status-rust/config-default.toml";
|
|
||||||
trayPadding = 10;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
gaps = {
|
|
||||||
inner = 0;
|
|
||||||
smartBorders = "on";
|
|
||||||
# smartGaps = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
input = {
|
|
||||||
"*" = {
|
|
||||||
xkb_layout = "gb";
|
|
||||||
};
|
|
||||||
|
|
||||||
"type:touchpad" = {
|
|
||||||
dwt = "enabled";
|
|
||||||
tap = "enabled";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
keybindings =
|
|
||||||
let modifier = config.wayland.windowManager.sway.config.modifier;
|
|
||||||
in inputs.nixpkgs.lib.mkOptionDefault {
|
|
||||||
"${modifier}+Escape" = "exec swaylock --daemonize";
|
|
||||||
"${modifier}+Shift+b" = "exec firefox";
|
|
||||||
"${modifier}+tab" = "workspace back_and_forth";
|
|
||||||
};
|
|
||||||
|
|
||||||
menu = "wofi --show run";
|
|
||||||
modifier = "Mod4";
|
|
||||||
|
|
||||||
output = {
|
|
||||||
"*" = {
|
|
||||||
bg = "~/.config/wallpaper/wallpaper.jpg fill";
|
|
||||||
};
|
|
||||||
|
|
||||||
eDP-1 = {
|
|
||||||
scale = "1.0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
terminal = "alacritty";
|
|
||||||
|
|
||||||
window.border = 3;
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
set $laptop eDP-1
|
|
||||||
bindswitch --reload --locked lid:on output $laptop disable
|
|
||||||
bindswitch --reload --locked lid:off output $laptop enable
|
|
||||||
|
|
||||||
set $WOBSOCK $XDG_RUNTIME_DIR/wob.sock
|
|
||||||
exec rm -f $WOBSOCK && mkfifo $WOBSOCK && tail -f $WOBSOCK | wob
|
|
||||||
|
|
||||||
bindsym XF86AudioRaiseVolume exec pamixer -ui 2 && pamixer --get-volume > $WOBSOCK
|
|
||||||
bindsym XF86AudioLowerVolume exec pamixer -ud 2 && pamixer --get-volume > $WOBSOCK
|
|
||||||
bindsym XF86AudioMute exec pamixer --toggle-mute && ( [ "$(pamixer --get-mute)" = "true" ] && echo 0 > $WOBSOCK ) || pamixer --get-volume > $WOBSOCK
|
|
||||||
|
|
||||||
bindsym XF86MonBrightnessDown exec brightnessctl set 5%- | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $WOBSOCK
|
|
||||||
bindsym XF86MonBrightnessUp exec brightnessctl set +5% | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $WOBSOCK
|
|
||||||
|
|
||||||
exec alacritty
|
|
||||||
exec firefox
|
|
||||||
|
|
||||||
for_window [class="vlc"] inhibit_idle fullscreen
|
|
||||||
|
|
||||||
for_window [app_id="zoom"] floating enable
|
|
||||||
for_window [app_id="zoom" title="Choose ONE of the audio conference options"] floating enable
|
|
||||||
for_window [app_id="firefox" title="Firefox — Sharing Indicator"] floating enable
|
|
||||||
for_window [app_id="zoom" title="zoom"] floating enable
|
|
||||||
for_window [app_id="zoom" title="Zoom Meeting"] floating disable
|
|
||||||
for_window [app_id="zoom" title="Zoom - Free Account"] floating disable
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Reference in a new issue