From 991d3e7d5cc0a756990e5db2d4a509ec6b85bf74 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 24 Aug 2025 12:34:34 +0000 Subject: [PATCH 1/3] Initial plan From 61565a47af5543ae4dc1c82f3e7532fd19da0357 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 24 Aug 2025 12:42:33 +0000 Subject: [PATCH 2/3] Migrate from GNOME to Hyprland - core configuration changes Co-authored-by: sanchit-lamba <121615638+sanchit-lamba@users.noreply.github.com> --- configuration.nix | 38 +-- flake.nix | 7 +- home/san.nix | 30 +-- modules/desktop/hyprland/default.nix | 350 +++++++++++++++++++++++++++ 4 files changed, 360 insertions(+), 65 deletions(-) create mode 100644 modules/desktop/hyprland/default.nix diff --git a/configuration.nix b/configuration.nix index ff517b8..72fd9e5 100644 --- a/configuration.nix +++ b/configuration.nix @@ -8,6 +8,7 @@ imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix + ./modules/desktop/hyprland ]; # Bootloader. @@ -25,12 +26,7 @@ networking.networkmanager.enable = true; #dconf programs.dconf.enable = true; - #xdg - xdg.portal = { - enable = true; - wlr.enable = true; - # extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; -}; + # XDG portal configuration is handled by the Hyprland module # Set your time zone. time.timeZone = "Asia/Kolkata"; @@ -114,17 +110,6 @@ lazygit git firefox - # GNOME applications and utilities - gnome-calculator # Calculator - gnome-characters # Character selector - gnome-color-manager # Color management - gnome-disk-utility # Disk management - gnome-system-monitor # System monitor - file-roller # Archive manager - gnome-terminal # Terminal - gnome-text-editor # Text editor - gnome-tweaks # GNOME tweaks - gnome-shell-extensions # GNOME extensions manager # Keep some useful applications kdiff3 # Compares and merges 2 or 3 files or directories @@ -135,7 +120,6 @@ code-cursor gsettings-desktop-schemas gtk-engine-murrine # Required by many themes - gnome-themes-extra gruvbox-dark-gtk ]; @@ -165,23 +149,7 @@ # Before changing this value read the documentation for this option # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). system.stateVersion = "25.05"; # Did you read the comment? - services.xserver = { - enable = true; - desktopManager.gnome = { - enable = true; - # This is the important part to make fractional scaling appear in the UI - extraGSettingsOverrides = '' - [org.gnome.mutter] - experimental-features=['scale-monitor-framebuffer'] - ''; - # Ensure Mutter schemas are available for GSettings - extraGSettingsOverridePackages = [ pkgs.mutter ]; - }; - displayManager.gdm = { - enable = true; - wayland = true; # Crucial for modern Gnome HiDPI on Wayland - }; - }; + # These configurations are now handled by the Hyprland module nix.settings.experimental-features = [ "nix-command" "flakes" ]; home-manager = { backupFileExtension = "hm-bak"; diff --git a/flake.nix b/flake.nix index 4329047..fb97592 100644 --- a/flake.nix +++ b/flake.nix @@ -8,11 +8,6 @@ url = "github:nix-community/home-manager/release-25.05"; inputs.nixpkgs.follows = "nixpkgs"; # Ensures HM uses the same nixpkgs }; - # Added firefox-gnome-theme as an input - firefox-gnome-theme = { - url = "github:rafaelmardojai/firefox-gnome-theme"; - flake = false; # Important: Treat it as a legacy source tree, not a flake itself - }; }; outputs = { self, nixpkgs, home-manager, ... }@inputs: # @inputs captures all inputs @@ -25,7 +20,7 @@ # to match your system's hostname. nixosConfigurations.BlitzWing = nixpkgs.lib.nixosSystem { inherit system; - specialArgs = { inherit inputs; }; # Makes all flake inputs (including firefox-gnome-theme) available + specialArgs = { inherit inputs; }; # Makes all flake inputs available modules = [ # Import the Home Manager NixOS module diff --git a/home/san.nix b/home/san.nix index f898e86..d3f1205 100644 --- a/home/san.nix +++ b/home/san.nix @@ -4,10 +4,6 @@ home.homeDirectory = lib.mkForce "/home/san"; home.stateVersion = "25.05"; # Ensure this matches your NixOS/Home Manager version - home.file.".mozilla/firefox/default/chrome/firefox-gnome-theme" = { - source = inputs.firefox-gnome-theme; - recursive = true; # Important: copies/links the entire directory content - }; gtk = { enable = true; @@ -45,29 +41,22 @@ }; }; - # This helps ensure GNOME and GTK4 applications respect the theme settings + # GTK and Qt theming settings dconf.settings = { "org/gnome/desktop/interface" = { - # FIXED: Using correct lowercase theme name "gruvbox-dark" + # Keep GTK theme settings for compatibility with GTK applications gtk-theme = "gruvbox-dark"; icon-theme = "Gruvbox-Plus-Dark"; cursor-theme = "Bibata-Modern-Classic"; - # ADDED: Modern color scheme preference for GTK4+ applications + # Modern color scheme preference for GTK4+ applications color-scheme = "prefer-dark"; }; - - # ADDED: Additional GNOME settings for consistent theming - "org/gnome/desktop/wm/preferences" = { - # FIXED: Using correct lowercase theme name "gruvbox-dark" - theme = "gruvbox-dark"; - }; }; - # ADDED: Set environment variables for consistent theming across all applications + # Set environment variables for consistent theming across all applications home.sessionVariables = { - # FIXED: Using correct lowercase theme name "gruvbox-dark" GTK_THEME = "gruvbox-dark"; - # ADDED: For Qt applications to use dark theme + # For Qt applications to use dark theme QT_STYLE_OVERRIDE = "adwaita-dark"; }; @@ -108,14 +97,7 @@ "browser.tabs.drawInTitlebar" = true; "svg.context-properties.content.enabled" = true; }; - userChrome = '' - @import "firefox-gnome-theme/userChrome.css"; - @import "firefox-gnome-theme/theme/colors/dark.css"; /* Or your preferred color variant */ - ''; - # If the theme also provides userContent.css: - # userContent = '' - # @import "firefox-gnome-theme/userContent.css"; - # ''; + # Removed GNOME-specific theme }; }; programs.home-manager.enable = true; diff --git a/modules/desktop/hyprland/default.nix b/modules/desktop/hyprland/default.nix new file mode 100644 index 0000000..e53dda9 --- /dev/null +++ b/modules/desktop/hyprland/default.nix @@ -0,0 +1,350 @@ +{ lib, pkgs, config, inputs, ... }: + +{ + # Enable Hyprland and basic Wayland support + programs.hyprland = { + enable = true; + # Set the default session + }; + + # Use SDDM as display manager instead of GDM + services.displayManager = { + sddm = { + enable = true; + wayland.enable = true; + }; + defaultSession = "hyprland"; + }; + + # Disable GNOME desktop entirely + services.xserver.desktopManager.gnome.enable = lib.mkForce false; + services.xserver.displayManager.gdm.enable = lib.mkForce false; + + # Essential Hyprland ecosystem packages + environment.systemPackages = with pkgs; [ + # Window manager essentials + waybar + rofi-wayland + swaync # notification daemon + hyprpaper # wallpaper manager + hyprlock # screen locker + hypridle # idle management + hyprpicker # color picker + + # Wayland utilities + wl-clipboard + cliphist + grimblast # screenshot tool + swappy # screenshot editing + + # System utilities + brightnessctl + networkmanagerapplet + pamixer + pavucontrol + playerctl + + # Authentication + polkit-kde-agent + + # File managers and utilities + nautilus # Keep nautilus as it works well with Wayland + + # Keep existing useful packages + wayland-utils + ]; + + # Configure polkit + security.polkit.enable = true; + + # XDG portal for Hyprland + xdg.portal = { + enable = true; + wlr.enable = true; + extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + config.common.default = ["gtk" "wlr"]; + }; + + # Enable necessary services + services = { + greetd = { + enable = false; # We're using SDDM instead + }; + }; + + # Fonts for the UI + fonts.packages = with pkgs; [ + noto-fonts + noto-fonts-cjk-sans + noto-fonts-emoji + font-awesome + (nerdfonts.override { fonts = [ "FiraCode" "Meslo" ]; }) + ]; + + # Home-manager configuration for Hyprland + home-manager.sharedModules = [ + ({ config, lib, pkgs, ... }: { + # Hyprland configuration + wayland.windowManager.hyprland = { + enable = true; + systemd.enable = true; + settings = { + # Basic settings adapted from reference config + "$mainMod" = "SUPER"; + "$term" = "${lib.getExe pkgs.ghostty}"; # Use existing terminal + "$fileManager" = "nautilus"; + "$browser" = "firefox"; + + # Monitor configuration - using auto detection for now + monitor = [ + ",preferred,auto,1" + ]; + + # Environment variables for Wayland + env = [ + "XDG_CURRENT_DESKTOP,Hyprland" + "XDG_SESSION_DESKTOP,Hyprland" + "XDG_SESSION_TYPE,wayland" + "GDK_BACKEND,wayland,x11,*" + "NIXOS_OZONE_WL,1" + "ELECTRON_OZONE_PLATFORM_HINT,auto" + "MOZ_ENABLE_WAYLAND,1" + "QT_QPA_PLATFORM,wayland;xcb" + "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" + ]; + + # Auto-start applications + exec-once = [ + "waybar" + "swaync" + "nm-applet --indicator" + "${lib.getExe' pkgs.wl-clipboard "wl-paste"} --type text --watch cliphist store" + "${lib.getExe' pkgs.wl-clipboard "wl-paste"} --type image --watch cliphist store" + "polkit-kde-agent" + ]; + + # Input configuration + input = { + kb_layout = "us"; + repeat_delay = 300; + repeat_rate = 30; + follow_mouse = 1; + touchpad.natural_scroll = false; + sensitivity = 0; + }; + + # General appearance + general = { + gaps_in = 4; + gaps_out = 9; + border_size = 2; + "col.active_border" = "rgba(ca9ee6ff) rgba(f2d5cfff) 45deg"; + "col.inactive_border" = "rgba(b4befecc) rgba(6c7086cc) 45deg"; + layout = "dwindle"; + }; + + # Decorations + decoration = { + rounding = 10; + shadow.enabled = false; + blur = { + enabled = true; + size = 6; + passes = 2; + }; + }; + + # Animations + animations = { + enabled = true; + animation = [ + "windows, 1, 3, default, popin 60%" + "border, 1, 10, default" + "fade, 1, 2.5, default" + "workspaces, 1, 3.5, default, slide" + ]; + }; + + # Basic keybindings + bind = [ + # Window management + "$mainMod, Q, killactive" + "$mainMod, W, togglefloating" + "$mainMod, F, fullscreen" + + # Applications + "$mainMod, Return, exec, $term" + "$mainMod, E, exec, $fileManager" + "$mainMod, Space, exec, rofi -show drun" + "$mainMod, V, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy" + + # Workspaces + "$mainMod, 1, workspace, 1" + "$mainMod, 2, workspace, 2" + "$mainMod, 3, workspace, 3" + "$mainMod, 4, workspace, 4" + "$mainMod, 5, workspace, 5" + "$mainMod, 6, workspace, 6" + "$mainMod, 7, workspace, 7" + "$mainMod, 8, workspace, 8" + "$mainMod, 9, workspace, 9" + "$mainMod, 0, workspace, 10" + + # Move windows to workspaces + "$mainMod SHIFT, 1, movetoworkspace, 1" + "$mainMod SHIFT, 2, movetoworkspace, 2" + "$mainMod SHIFT, 3, movetoworkspace, 3" + "$mainMod SHIFT, 4, movetoworkspace, 4" + "$mainMod SHIFT, 5, movetoworkspace, 5" + "$mainMod SHIFT, 6, movetoworkspace, 6" + "$mainMod SHIFT, 7, movetoworkspace, 7" + "$mainMod SHIFT, 8, movetoworkspace, 8" + "$mainMod SHIFT, 9, movetoworkspace, 9" + "$mainMod SHIFT, 0, movetoworkspace, 10" + + # Focus movement + "$mainMod, left, movefocus, l" + "$mainMod, right, movefocus, r" + "$mainMod, up, movefocus, u" + "$mainMod, down, movefocus, d" + ]; + + # Volume and brightness keys + binde = [ + ",XF86MonBrightnessDown, exec, brightnessctl set 2%-" + ",XF86MonBrightnessUp, exec, brightnessctl set +2%" + ",XF86AudioLowerVolume, exec, pamixer -d 2" + ",XF86AudioRaiseVolume, exec, pamixer -i 2" + ",XF86AudioMute, exec, pamixer -t" + ]; + + # Mouse bindings + bindm = [ + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + }; + }; + + # Waybar configuration + programs.waybar = { + enable = true; + systemd.enable = true; + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 30; + modules-left = [ "hyprland/workspaces" ]; + modules-center = [ "clock" ]; + modules-right = [ "pulseaudio" "network" "battery" "tray" ]; + + "hyprland/workspaces" = { + format = "{icon}"; + format-icons = { + "1" = "󰲠"; + "2" = "󰲢"; + "3" = "󰲤"; + "4" = "󰲦"; + "5" = "󰲨"; + "6" = "󰲪"; + "7" = "󰲬"; + "8" = "󰲮"; + "9" = "󰲰"; + "10" = "󰿬"; + }; + }; + + clock = { + format = "{:%H:%M}"; + tooltip-format = "{:%Y-%m-%d | %H:%M:%S}"; + }; + + pulseaudio = { + format = "{volume}% {icon}"; + format-bluetooth = "{volume}% {icon}"; + format-muted = ""; + format-icons = { + headphone = ""; + hands-free = ""; + headset = ""; + phone = ""; + portable = ""; + car = ""; + default = ["" ""]; + }; + on-click = "pavucontrol"; + }; + + network = { + format-wifi = "{essid} ({signalStrength}%) "; + format-ethernet = "{ifname}: {ipaddr}/{cidr} "; + format-disconnected = "Disconnected ⚠"; + tooltip-format = "{ifname}: {ipaddr}"; + }; + + battery = { + bat = "BAT0"; + states = { + good = 95; + warning = 30; + critical = 15; + }; + format = "{capacity}% {icon}"; + format-icons = ["" "" "" "" ""]; + }; + + tray = { + icon-size = 21; + spacing = 10; + }; + }; + }; + + style = '' + * { + font-family: "Fira Code Nerd Font"; + font-size: 14px; + border: none; + border-radius: 0; + min-height: 0; + } + + window#waybar { + background: rgba(30, 30, 46, 0.8); + color: #cdd6f4; + } + + #workspaces button { + padding: 0 8px; + background: transparent; + color: #7f849c; + border-bottom: 2px solid transparent; + } + + #workspaces button.active { + color: #cba6f7; + border-bottom: 2px solid #cba6f7; + } + + #clock, #pulseaudio, #network, #battery, #tray { + padding: 0 10px; + margin: 0 5px; + background: rgba(49, 50, 68, 0.8); + border-radius: 10px; + } + ''; + }; + + # SwayNC (notification daemon) + services.swaync.enable = true; + + # Rofi configuration + programs.rofi = { + enable = true; + package = pkgs.rofi-wayland; + theme = "gruvbox-dark"; + }; + }) + ]; +} \ No newline at end of file From fbc03775886b02e19a90ff60e469d7a241aa4dfa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 24 Aug 2025 12:44:44 +0000 Subject: [PATCH 3/3] Add final improvements and documentation for Hyprland migration Co-authored-by: sanchit-lamba <121615638+sanchit-lamba@users.noreply.github.com> --- MIGRATION_GUIDE.md | 131 +++++++++++++++++++++++++++ modules/desktop/hyprland/README.md | 37 ++++++++ modules/desktop/hyprland/default.nix | 56 ++++++++++++ 3 files changed, 224 insertions(+) create mode 100644 MIGRATION_GUIDE.md create mode 100644 modules/desktop/hyprland/README.md diff --git a/MIGRATION_GUIDE.md b/MIGRATION_GUIDE.md new file mode 100644 index 0000000..b00374a --- /dev/null +++ b/MIGRATION_GUIDE.md @@ -0,0 +1,131 @@ +# GNOME to Hyprland Migration Guide + +This document describes the migration from GNOME to Hyprland that has been performed on your NixOS configuration. + +## What Was Changed + +### 1. Desktop Environment +- **Removed**: GNOME desktop environment and GDM display manager +- **Added**: Hyprland compositor with SDDM display manager +- **Reason**: Modern tiling window manager with better Wayland support + +### 2. System Packages Removed +The following GNOME-specific packages were removed: +- `gnome-calculator`, `gnome-characters`, `gnome-color-manager` +- `gnome-disk-utility`, `gnome-system-monitor`, `gnome-terminal` +- `gnome-text-editor`, `gnome-tweaks`, `gnome-shell-extensions` +- `gnome-themes-extra` + +### 3. New Hyprland Ecosystem Added +- **Waybar**: Status bar showing workspaces, time, system info +- **Rofi**: Application launcher (Super+Space) +- **SwayNC**: Notification daemon +- **Hyprpaper**: Wallpaper management +- **Grimblast/Grim/Slurp**: Screenshot tools +- **Cliphist**: Clipboard manager + +### 4. Home Manager Changes +- Removed GNOME-specific dconf settings +- Removed Firefox GNOME theme dependency +- Kept GTK theming for application compatibility +- Added Hyprland, Waybar, and Rofi configurations + +## What Was Preserved + +### User Applications +All your existing applications are preserved: +- Development tools (vscode, obsidian, neovim, gh, git) +- Media (haruna, mpv, obs-studio, thunderbird) +- System utilities (asusctl, android-tools, lm_sensors) +- Browsers (firefox, vivaldi) +- Terminal (ghostty) + +### System Configuration +- Sound system (PipeWire) +- Network management +- Docker, ADB, ASUSD services +- User account and groups +- Theming (gruvbox-dark preserved) + +### Hardware Support +- All existing hardware configurations maintained +- Wayland utilities preserved +- Existing kernel modules and drivers + +## Key Differences + +### Window Management +- **GNOME**: Traditional desktop with overview and activities +- **Hyprland**: Tiling window manager with workspaces + +### Application Launching +- **GNOME**: Activities overview or Alt+F2 +- **Hyprland**: Rofi launcher (Super+Space) + +### System Settings +- **GNOME**: GNOME Settings and Tweaks +- **Hyprland**: System settings through individual applications (pavucontrol, nm-applet, etc.) + +## Getting Started + +### Essential Keybindings +- `Super+Return`: Open terminal +- `Super+Space`: Application launcher +- `Super+Q`: Close window +- `Super+W`: Toggle floating mode +- `Super+F`: Toggle fullscreen +- `Super+1-9`: Switch workspaces +- `Super+Shift+1-9`: Move window to workspace + +### System Tray +The system tray (right side of waybar) provides access to: +- Network manager +- Sound control (click to open pavucontrol) +- Notifications (SwayNC) + +### Clipboard +- Clipboard history: `Super+V` +- Screenshots: Use grim/slurp or add screenshot keybindings + +## Potential Issues and Solutions + +### Missing Applications +If you had GNOME-specific applications you relied on: +- **Calculator**: Install `gnome-calculator` or use `qalculate-gtk` +- **System Monitor**: Use `btop`, `htop`, or install `gnome-system-monitor` +- **Archive Manager**: `file-roller` is included +- **Text Editor**: Use `neovim`, `vscode`, or install `gnome-text-editor` + +### Theming Issues +If some applications don't look right: +- GTK theme is preserved (gruvbox-dark) +- For Qt applications, install `qt6ct` and configure themes +- Some GNOME applications may need `gsettings` adjustments + +### Wayland Compatibility +Most applications should work, but if you encounter issues: +- Some older applications may need XWayland +- Check if apps have Wayland-specific flags +- Electron apps should work with the existing wayland.nix overlay + +## Building and Applying Changes + +To apply this configuration: + +```bash +# Build the configuration +sudo nixos-rebuild switch --flake .#BlitzWing + +# Or if you're testing first +sudo nixos-rebuild test --flake .#BlitzWing +``` + +## Customization + +The Hyprland configuration is in `modules/desktop/hyprland/default.nix`. You can: +- Modify keybindings in the `bind` section +- Adjust window rules for specific applications +- Change colors, gaps, and animation settings +- Add more startup applications to `exec-once` + +The Waybar configuration is included and can be customized for different modules and appearance. \ No newline at end of file diff --git a/modules/desktop/hyprland/README.md b/modules/desktop/hyprland/README.md new file mode 100644 index 0000000..7f07994 --- /dev/null +++ b/modules/desktop/hyprland/README.md @@ -0,0 +1,37 @@ +# Basic configuration for Hyprland migration + +This directory contains the Hyprland configuration module that replaces GNOME in your NixOS setup. + +## Key Features + +- **Window Manager**: Hyprland with tiling window management +- **Display Manager**: SDDM (replacing GDM) +- **Status Bar**: Waybar with system information +- **Application Launcher**: Rofi (Super+Space) +- **Notifications**: SwayNC +- **Screen Locker**: Hyprlock (can be added later) +- **Screenshot Tool**: Grimblast (can be added later) + +## Key Keybindings + +- `Super+Return`: Open terminal (ghostty) +- `Super+Space`: Application launcher (rofi) +- `Super+Q`: Close window +- `Super+W`: Toggle floating +- `Super+F`: Toggle fullscreen +- `Super+E`: File manager (nautilus) +- `Super+1-9`: Switch to workspace +- `Super+Shift+1-9`: Move window to workspace +- `Super+Arrow Keys`: Move focus between windows + +## System Integration + +- Volume and brightness keys work out of the box +- Network manager applet in system tray +- Clipboard history with cliphist +- Proper XDG portal setup for file dialogs +- Wayland environment variables configured + +## Theme Compatibility + +Your existing gruvbox-dark theme setup is preserved and will work with GTK applications running under Hyprland. \ No newline at end of file diff --git a/modules/desktop/hyprland/default.nix b/modules/desktop/hyprland/default.nix index e53dda9..aa92226 100644 --- a/modules/desktop/hyprland/default.nix +++ b/modules/desktop/hyprland/default.nix @@ -36,6 +36,7 @@ cliphist grimblast # screenshot tool swappy # screenshot editing + wf-recorder # screen recording # System utilities brightnessctl @@ -49,6 +50,11 @@ # File managers and utilities nautilus # Keep nautilus as it works well with Wayland + file-roller # Archive manager + + # Additional useful tools + grim # screenshot backend + slurp # area selection for screenshots # Keep existing useful packages wayland-utils @@ -121,6 +127,7 @@ "${lib.getExe' pkgs.wl-clipboard "wl-paste"} --type text --watch cliphist store" "${lib.getExe' pkgs.wl-clipboard "wl-paste"} --type image --watch cliphist store" "polkit-kde-agent" + "hyprpaper" # wallpaper daemon ]; # Input configuration @@ -171,12 +178,18 @@ "$mainMod, Q, killactive" "$mainMod, W, togglefloating" "$mainMod, F, fullscreen" + "$mainMod, P, pseudo" # dwindle + "$mainMod, J, togglesplit" # dwindle # Applications "$mainMod, Return, exec, $term" "$mainMod, E, exec, $fileManager" "$mainMod, Space, exec, rofi -show drun" "$mainMod, V, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy" + + # System + "$mainMod SHIFT, Q, exec, swaync-client -t -sw" # toggle notification center + "$mainMod, L, exec, loginctl lock-session" # lock screen (if hyprlock is installed) # Workspaces "$mainMod, 1, workspace, 1" @@ -207,6 +220,16 @@ "$mainMod, right, movefocus, r" "$mainMod, up, movefocus, u" "$mainMod, down, movefocus, d" + + # Move windows + "$mainMod SHIFT, left, movewindow, l" + "$mainMod SHIFT, right, movewindow, r" + "$mainMod SHIFT, up, movewindow, u" + "$mainMod SHIFT, down, movewindow, d" + + # Switch workspaces with scroll + "$mainMod, mouse_down, workspace, e+1" + "$mainMod, mouse_up, workspace, e-1" ]; # Volume and brightness keys @@ -218,6 +241,24 @@ ",XF86AudioMute, exec, pamixer -t" ]; + # Window rules + windowrule = [ + "float, ^(pavucontrol)$" + "float, ^(nm-connection-editor)$" + "float, ^(thunar)$" + "float, ^(file-roller)$" + "float, ^(ark)$" + "float, ^(nautilus)$" + "center, ^(pavucontrol)$" + + # Opacity rules for transparency + "opacity 0.9 0.9, ^(ghostty)$" + "opacity 0.9 0.9, ^(code)$" + "opacity 0.9 0.9, ^(vscode)$" + "opacity 1.0 1.0, ^(firefox)$" + "opacity 1.0 1.0, ^(vivaldi)$" + ]; + # Mouse bindings bindm = [ "$mainMod, mouse:272, movewindow" @@ -345,6 +386,21 @@ package = pkgs.rofi-wayland; theme = "gruvbox-dark"; }; + + # Hyprpaper configuration for wallpaper + services.hyprpaper = { + enable = true; + settings = { + preload = [ + # You can set a wallpaper path here or use a solid color + # "~/Pictures/wallpaper.jpg" + ]; + wallpaper = [ + # Example: ",~/Pictures/wallpaper.jpg" + # For now, Hyprland will use a default background + ]; + }; + }; }) ]; } \ No newline at end of file