diff --git a/system/nixos/configuration.nix b/system/nixos/configuration.nix index 2c9264dd..069fa05c 100644 --- a/system/nixos/configuration.nix +++ b/system/nixos/configuration.nix @@ -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; diff --git a/system/nixos/home-manager/default.nix b/system/nixos/home-manager/default.nix index b334ec2e..805f6fce 100644 --- a/system/nixos/home-manager/default.nix +++ b/system/nixos/home-manager/default.nix @@ -19,9 +19,6 @@ in pkgs.via pkgs.vial pkgs.vlc - pkgs.wl-mirror - pkgs.wob - pkgs.wofi pkgs.xcape pkgs.zoom-us ]; diff --git a/system/nixos/home-manager/desktop.nix b/system/nixos/home-manager/desktop.nix index 633b1d61..7fa35816 100644 --- a/system/nixos/home-manager/desktop.nix +++ b/system/nixos/home-manager/desktop.nix @@ -3,7 +3,7 @@ { imports = [ ./modules/alacritty.nix - ./modules/sway.nix + ./modules/i3.nix ]; xdg.configFile.wallpaper = { diff --git a/system/nixos/home-manager/modules/i3.nix b/system/nixos/home-manager/modules/i3.nix new file mode 100644 index 00000000..fa6c5b60 --- /dev/null +++ b/system/nixos/home-manager/modules/i3.nix @@ -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 + ''; + }; +} diff --git a/system/nixos/home-manager/modules/sway.nix b/system/nixos/home-manager/modules/sway.nix deleted file mode 100644 index 19909ef2..00000000 --- a/system/nixos/home-manager/modules/sway.nix +++ /dev/null @@ -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 - ''; - }; -}