From 1d9c97b17a532f0a7bd91e17e67613ad2549b6b8 Mon Sep 17 00:00:00 2001 From: Tyler Mayoff Date: Fri, 14 Feb 2025 19:52:29 -0500 Subject: [PATCH] Waybar and sway configs --- dot_config/flake/home/wash/wash.nix | 331 +++++++++++++++++- dot_config/flake/nixos/wash/configuration.nix | 21 +- 2 files changed, 347 insertions(+), 5 deletions(-) diff --git a/dot_config/flake/home/wash/wash.nix b/dot_config/flake/home/wash/wash.nix index cedd66e..44925b6 100644 --- a/dot_config/flake/home/wash/wash.nix +++ b/dot_config/flake/home/wash/wash.nix @@ -2,9 +2,338 @@ config, pkgs, ... -}: { +}: let + mod = "Mod4"; + term = "kitty"; + menu = "wmenu-run"; +in { imports = [../common.nix ../gnome.nix ../home-backup.nix ../gui.nix]; + programs.feh.enable = true; + programs.waybar = { + enable = true; + style = '' + * { + font-size: 15px; + font-family: "CodeNewRoman Nerd Font Propo"; + } + + window#waybar { + all:unset; + } + + .modules-left { + padding: 7px; + margin: 10 0 5 10; + border-radius: 10px; + background: alpha(@background, .6); + box-shadow: 0px 0px 2px rgba(0, 0, 0, .6); + } + + .modules-center { + padding: 7px; + margin: 10 0 5 0; + border-radius: 10px; + background: alpha(@background, .6); + box-shadow: 0px 0px 2px rgab(0, 0, 0, .6); + } + + .modules-right { + padding: 7px; + margin: 10 0 5 0; + border-radius: 10px; + background: alpha(@background, .6); + box-shadow: 0px 0px 2px rgab(0, 0, 0, .6); + } + + tooltip { + background: @background + } + ''; + + settings = { + mainBar = { + layer = "top"; + position = "top"; + reload_style_on_change = true; + + modules-left = ["clock" "tray"]; + modules-center = ["sway/workspaces"]; + modules-right = ["battery"]; + + "sway/workspaces" = { + format = "{icon}"; + format-icons = { + active = ""; + default = ""; + empty = ""; + }; + }; + + "clock" = { + format = "{:%I:%M:%S %p} "; + interval = 1; + tooltip-format = "{calendar}"; + calendar = { + format = { + today = "{}"; + }; + }; + actions = { + on-click-right = "shift_down"; + on-clock = "shift_up"; + }; + }; + + battery = { + interval = 30; + states = { + good = 95; + warning = 30; + critical = 20; + }; + format = "{capacity}% {icon}"; + format-charging = "{capacicty}% 󰂄"; + format-plugged = "{capacity}% 󰂄 "; + format-alt = "{time} {icon}"; + format-icons = [ + "󰁻" + "󰁼" + "󰁾" + "󰂀" + "󰂂" + "󰁹" + ]; + }; + + tray = { + icon-size = 14; + spacing = 10; + }; + }; + }; + }; + + wayland.windowManager.sway = { + enable = true; + checkConfig = true; + config = { + output."*".scale = "1"; + + startup = [ + {command = "feh .config/flake/wallpaper.jpp";} + ]; + + + # Home row direction keys, like vim + up = "k"; + left = "h"; + down = "j"; + right = "l"; + + ### Idle configuration + # + # Example configuration: + # + # exec swayidle -w \ + # timeout 300 'swaylock -f -c 000000' \ + # timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \ + # before-sleep 'swaylock -f -c 000000' + # + # This will lock your screen after 300 seconds of inactivity, then turn off + # your displays after another 300 seconds, and turn your screens back on when + # resumed. It will also lock your screen before your computer goes to sleep. + + ### Input configuration + # + # Example configuration: + # + # input "2:14:SynPS/2_Synaptics_TouchPad" { + # dwt enabled + # tap enabled + # natural_scroll enabled + # middle_emulation enabled + # } + # + # You can get the names of your inputs by running: swaymsg -t get_inputs + # Read `man 5 sway-input` for more information about this section. + + input = { + "*" = { + tap = "enabled"; + natural_scroll = "enabled"; + }; + }; + + ### Key bindings + # + # Basics: + + keybindings = { + # Start a terminal + "${mod}+Return" = "exec ${term}"; + + # Kill focused window + "${mod}+Shift+q" = "kill"; + + # Start launcher + "${mod}+d" = "exec ${menu}"; + + # Reload the configuration file + "${mod}+Shift+c" = "reload"; + + "${mod}+r" = "mode resize"; + + # Moving around: + + # Move your focus around + # "${mod}+$left" = "focus left"; + # "${mod}+$down" = "focus down"; + # "${mod}+$up" = "focus up"; + # "${mod}+$right" = "focus right"; + # Or use $mod+[up|down|left|right] + "${mod}+Left" = "focus left"; + "${mod}+Down" = "focus down"; + "${mod}+Up" = "focus up"; + "${mod}+Right" = "focus right"; + }; + + # Drag floating windows by holding down $mod and left mouse button. + # Resize them with right mouse button + $mod. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + # floating_modifier $mod normal + + # Exit sway (logs you out of your Wayland session) + # bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' + + # # Move the focused window with the same, but add Shift + # bindsym $mod+Shift+$left move left + # bindsym $mod+Shift+$down move down + # bindsym $mod+Shift+$up move up + # bindsym $mod+Shift+$right move right + # # Ditto, with arrow keys + # bindsym $mod+Shift+Left move left + # bindsym $mod+Shift+Down move down + # bindsym $mod+Shift+Up move up + # bindsym $mod+Shift+Right move right + # # + # # Workspaces: + # # + # # Switch to workspace + # bindsym $mod+1 workspace number 1 + # bindsym $mod+2 workspace number 2 + # bindsym $mod+3 workspace number 3 + # bindsym $mod+4 workspace number 4 + # bindsym $mod+5 workspace number 5 + # bindsym $mod+6 workspace number 6 + # bindsym $mod+7 workspace number 7 + # bindsym $mod+8 workspace number 8 + # bindsym $mod+9 workspace number 9 + # bindsym $mod+0 workspace number 10 + # # Move focused container to workspace + # bindsym $mod+Shift+1 move container to workspace number 1 + # bindsym $mod+Shift+2 move container to workspace number 2 + # bindsym $mod+Shift+3 move container to workspace number 3 + # bindsym $mod+Shift+4 move container to workspace number 4 + # bindsym $mod+Shift+5 move container to workspace number 5 + # bindsym $mod+Shift+6 move container to workspace number 6 + # bindsym $mod+Shift+7 move container to workspace number 7 + # bindsym $mod+Shift+8 move container to workspace number 8 + # bindsym $mod+Shift+9 move container to workspace number 9 + # bindsym $mod+Shift+0 move container to workspace number 10 + # # Note: workspaces can have any name you want, not just numbers. + # # We just use 1-10 as the default. + # # + # # Layout stuff: + # # + # # You can "split" the current object of your focus with + # # $mod+b or $mod+v, for horizontal and vertical splits + # # respectively. + # bindsym $mod+b splith + # bindsym $mod+v splitv + + # # Switch the current container between different layout styles + # bindsym $mod+s layout stacking + # bindsym $mod+w layout tabbed + # bindsym $mod+e layout toggle split + + # # Make the current focus fullscreen + # bindsym $mod+f fullscreen + + # # Toggle the current focus between tiling and floating mode + # bindsym $mod+Shift+space floating toggle + + # # Swap focus between the tiling area and the floating area + # bindsym $mod+space focus mode_toggle + + # # Move focus to the parent container + # bindsym $mod+a focus parent + # # + # # Scratchpad: + # # + # # Sway has a "scratchpad", which is a bag of holding for windows. + # # You can send windows there and get them back later. + + # # Move the currently focused window to the scratchpad + # bindsym $mod+Shift+minus move scratchpad + + # # Show the next scratchpad window or hide the focused scratchpad window. + # # If there are multiple scratchpad windows, this command cycles through them. + # bindsym $mod+minus scratchpad show + # # + # # Resizing containers: + # # + # mode "resize" { + # # left will shrink the containers width + # # right will grow the containers width + # # up will shrink the containers height + # # down will grow the containers height + # bindsym $left resize shrink width 10px + # bindsym $down resize grow height 10px + # bindsym $up resize shrink height 10px + # bindsym $right resize grow width 10px + + # # Ditto, with arrow keys + # bindsym Left resize shrink width 10px + # bindsym Down resize grow height 10px + # bindsym Up resize shrink height 10px + # bindsym Right resize grow width 10px + + # # Return to default mode + # bindsym Return mode "default" + # bindsym Escape mode "default" + # } + + # # + # # Utilities: + # # + # # Special keys to adjust volume via PulseAudio + # bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle + # bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5% + # bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5% + # bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle + # # Special keys to adjust brightness via brightnessctl + # bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%- + # bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+ + # # Special key to take a screenshot with grim + # bindsym Print exec grim + + # + # Status Bar: + # + # Read `man 5 sway-bar` for more information about this section. + + bars = [ + { + command = "waybar"; + position = "top"; + } + ]; + }; + }; + home = { username = "tyler"; homeDirectory = "/home/tyler"; diff --git a/dot_config/flake/nixos/wash/configuration.nix b/dot_config/flake/nixos/wash/configuration.nix index 0193889..7883f82 100644 --- a/dot_config/flake/nixos/wash/configuration.nix +++ b/dot_config/flake/nixos/wash/configuration.nix @@ -73,6 +73,8 @@ # Enable CUPS to print documents. services.printing.enable = true; + services.fprintd.enable = true; + # Enable sound with pipewire. hardware.pulseaudio.enable = false; security.rtkit.enable = true; @@ -89,6 +91,8 @@ #media-session.enable = true; }; + services.gnome.gnome-keyring.enable = true; + # Enable touchpad support (enabled default in most desktopManager). # services.xserver.libinput.enable = true; @@ -100,13 +104,22 @@ shell = pkgs.fish; }; - # Install firefox. - programs.firefox.enable = true; - - environment.systemPackages = [ + environment.systemPackages = with pkgs; [ + sqlite ]; + fonts.packages = with pkgs; [ + nerdfonts + ]; + + # Install firefox. + programs.firefox.enable = true; programs.fish.enable = true; + programs.sway = { + enable = true; + # package = null; + wrapperFeatures.gtk = true; + }; # Some programs need SUID wrappers, can be configured further or are # started in user sessions.