Desktop Directory - Desktop Environment Configuration
The modules/desktop/ directory contains the desktop environment configuration for OmniXY, centered around the Hyprland compositor. This directory manages the complete desktop experience including window management, user interface, and desktop interactions.
Desktop Architecture
The desktop system is built in layers:
User Interaction Layer (keybindings, gestures)
↓
Application Layer (autostart, window rules)
↓
Compositor Layer (Hyprland core)
↓
System Integration Layer (services, hardware)
Core Desktop Module
hyprland.nix
Purpose: Main Hyprland compositor configuration and coordination What it provides:
- Core Hyprland configuration
- Integration with other desktop components
- Theme-aware window management
- Performance optimizations
Key Features:
- Wayland-native compositor
- Dynamic tiling window management
- Smooth animations and effects
- GPU-accelerated rendering
- Extensive customization options
Module Structure:
imports = [
./hyprland/bindings.nix
./hyprland/autostart.nix
./hyprland/idle.nix
];
Hyprland Sub-Modules
hyprland/bindings.nix
Purpose: Keyboard shortcuts and input bindings What it configures:
- Window management shortcuts
- Application launching bindings
- Workspace navigation
- System control shortcuts
Key Binding Categories:
Window Management
Super + Q: Close windowSuper + F: Toggle fullscreenSuper + Space: Toggle floatingSuper + V: Toggle split directionSuper + Arrow Keys: Move window focusSuper + Shift + Arrow Keys: Move windows
Application Launching
Super + Return: Terminal (Alacritty)Super + B: Web browserSuper + E: File managerSuper + D: Application launcherSuper + R: Run dialog
Workspace Management
Super + 1-9: Switch to workspaceSuper + Shift + 1-9: Move window to workspaceSuper + Mouse Wheel: Cycle through workspacesSuper + Tab: Application switcher
System Controls
Super + L: Lock screenSuper + Shift + E: Logout menuVolume Keys: Audio controlBrightness Keys: Display brightnessPrint: Screenshot regionShift + Print: Screenshot full screen
Advanced Bindings
Super + Alt + Arrow Keys: Resize windowsSuper + Mouse: Move/resize windowsSuper + Shift + S: Screenshot with selectionSuper + P: Power menu
hyprland/autostart.nix
Purpose: Applications and services started with the desktop session What it manages:
- Essential desktop services
- User applications
- Background processes
- System tray applications
Autostart Categories:
Essential Services
- Waybar: Desktop panel/taskbar
- Mako: Notification daemon
- Authentication Agent: Polkit authentication
- Network Manager Applet: Network connectivity
Background Services
- Clipboard Manager: Clipboard history
- Wallpaper Setter: Dynamic wallpapers
- Idle Manager: Screen timeout and locking
- Audio Control: Volume control daemon
User Applications (Optional)
- File Manager: Background file operations
- Chat Applications: Discord, Slack, etc.
- Productivity Tools: Note-taking, calendar
- Development Tools: IDEs, terminals
Configuration Example:
wayland.windowManager.hyprland.settings = {
exec-once = [
"waybar"
"mako"
"nm-applet --indicator"
"/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1"
];
};
hyprland/idle.nix
Purpose: Idle management and screen locking What it configures:
- Screen timeout settings
- Automatic screen locking
- Display power management
- Suspend/hibernate behavior
Idle Management Features:
Screen Locking
- Automatic lock after inactivity
- Manual lock with keybinding
- Grace period for quick unlock
- Secure lock screen (swaylock)
Display Management
- Screen dimming before lock
- Display turn-off timing
- Multiple monitor handling
- Brightness restoration
Power Management
- Suspend after extended idle
- Hibernate for long inactivity
- Wake-on-input configuration
- Battery-aware timeouts
Configuration Options:
services.hypridle = {
enable = true;
settings = {
general = {
after_sleep_cmd = "hyprctl dispatch dpms on";
before_sleep_cmd = "loginctl lock-session";
ignore_dbus_inhibit = false;
lock_cmd = "pidof hyprlock || hyprlock";
};
listener = [
{
timeout = 300; # 5 minutes
on-timeout = "brightnessctl -s set 10";
on-resume = "brightnessctl -r";
}
{
timeout = 600; # 10 minutes
on-timeout = "loginctl lock-session";
}
];
};
};
Window Management Features
Tiling Behavior
- Dynamic Tiling: Automatic window arrangement
- Manual Tiling: User-controlled window placement
- Floating Windows: Support for floating applications
- Split Layouts: Horizontal and vertical splits
Window Rules
- Application-Specific Rules: Size, position, workspace assignment
- Floating Applications: Always-float for certain apps
- Workspace Assignment: Auto-assign apps to specific workspaces
- Focus Behavior: Control focus stealing and new window focus
Animation System
- Window Animations: Smooth open/close transitions
- Workspace Transitions: Fluid workspace switching
- Resize Animations: Smooth window resizing
- Fade Effects: Window fade in/out
Desktop Integration
Theme Integration
Desktop components automatically adapt to the selected theme:
- Window border colors
- Panel/taskbar theming
- Icon themes
- Cursor themes
Hardware Integration
- GPU Acceleration: Optimal performance on all graphics hardware
- Multi-Monitor: Automatic detection and configuration
- HiDPI Support: Proper scaling for high-resolution displays
- Input Devices: Touchpad gestures, mouse sensitivity
Audio Integration
- Media Keys: Hardware media key support
- Volume Control: On-screen volume indicators
- Audio Device Switching: Quick audio output switching
- Notification Sounds: System sound integration
Performance Optimization
GPU Optimization
- Hardware Acceleration: GPU-accelerated compositing
- VSync Configuration: Tear-free rendering
- Frame Rate Management: Adaptive refresh rates
- Multi-GPU Support: Optimal GPU selection
Memory Management
- Efficient Compositing: Minimal memory usage
- Background Process Limits: Control background applications
- Cache Management: Optimal caching strategies
- Resource Monitoring: System resource awareness
Battery Optimization (Laptops)
- Power-Aware Rendering: Reduced effects on battery
- CPU Scaling: Dynamic performance scaling
- Display Brightness: Automatic brightness adjustment
- Background Process Management: Suspend non-essential processes
Customization Options
Layout Customization
wayland.windowManager.hyprland.settings = {
general = {
gaps_in = 5;
gaps_out = 10;
border_size = 2;
layout = "dwindle"; # or "master"
};
decoration = {
rounding = 10;
blur = {
enabled = true;
size = 8;
passes = 1;
};
drop_shadow = true;
shadow_range = 4;
shadow_render_power = 3;
};
};
Animation Customization
animation = {
enabled = true;
bezier = [
"wind, 0.05, 0.9, 0.1, 1.05"
"winIn, 0.1, 1.1, 0.1, 1.1"
"winOut, 0.3, -0.3, 0, 1"
];
animation = [
"windows, 1, 6, wind, slide"
"windowsIn, 1, 6, winIn, slide"
"windowsOut, 1, 5, winOut, slide"
"fade, 1, 10, default"
"workspaces, 1, 5, wind"
];
};
Desktop Components Integration
Panel (Waybar)
- System status display
- Workspace indicators
- System tray integration
- Custom module support
Application Launcher
- Quick application access
- Search functionality
- Recent application history
- Customizable appearance
File Manager Integration
- Desktop file operations
- Trash management
- Network location access
- Archive handling
Notification System
- Desktop notifications
- Notification history
- Do-not-disturb modes
- Custom notification rules
Troubleshooting
Common Issues
- Performance Problems: Check GPU acceleration
- Input Issues: Verify input device configuration
- Display Problems: Check monitor configuration
- Audio Issues: Verify PipeWire integration
Debugging Tools
hyprctl: Hyprland control utilitywaybar-log: Panel debuggingjournalctl: System logshtop: Resource monitoring
This desktop configuration provides a modern, efficient, and highly customizable desktop environment that adapts to user preferences while maintaining excellent performance across various hardware configurations.