refactor: switch from sway to i3

This commit is contained in:
Oliver Davies 2023-11-14 20:20:07 +00:00
parent eb622e5e45
commit d68d1aa679
5 changed files with 82 additions and 220 deletions

View file

@ -68,14 +68,21 @@ in
# Enable the X11 windowing system.
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 = {
# Configure keymap in X11.
layout = "gb";
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
@ -123,25 +130,11 @@ in
configure-gtk
ffmpegthumbnailer
shotwell
swaybg
xfce.thunar
xfce.thunar-volman
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
# started in user sessions.
# programs.mtr.enable = true;

View file

@ -19,9 +19,6 @@ in
pkgs.via
pkgs.vial
pkgs.vlc
pkgs.wl-mirror
pkgs.wob
pkgs.wofi
pkgs.xcape
pkgs.zoom-us
];

View file

@ -3,7 +3,7 @@
{
imports = [
./modules/alacritty.nix
./modules/sway.nix
./modules/i3.nix
];
xdg.configFile.wallpaper = {

View 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
'';
};
}

View file

@ -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
'';
};
}