workspaces.conf
Auto-generated workspace configuration file that defines workspace rules, monitor assignments, and workspace-specific behaviors in HyprFlux. This file works in conjunction with monitors.conf to create a cohesive multi-monitor workspace experience.
Purpose
- Workspace Rules: Defines behavior and properties for specific workspaces
- Monitor Assignment: Assigns workspaces to specific monitors
- Default Workspaces: Sets default starting workspaces per monitor
- Workspace Customization: Configures workspace-specific settings like gaps, borders, and decorations
File Location
~/.config/hypr/workspaces.conf
Important Notes
Auto-Generation Warning
bash
# *********************************************************** #
#
# NOTE: This will be overwritten by NWG-Displays
# once you use and click apply.
#
# *********************************************************** #
Key Points:
- File is overwritten when using nwg-displays
- Manual changes may be lost when using GUI tools
- Backup important custom rules before using nwg-displays
Configuration Structure
Basic Workspace Rules
Workspace Assignment to Monitors
bash
# Assign workspaces to specific monitors
workspace = 1, monitor:eDP-1
workspace = 2, monitor:eDP-1
workspace = 3, monitor:eDP-1
workspace = 4, monitor:eDP-1
workspace = 5, monitor:DP-2
workspace = 6, monitor:DP-2
workspace = 7, monitor:DP-2
workspace = 8, monitor:DP-2
Properties:
- Workspace Number: Numeric identifier (1-10 typically)
- Monitor Assignment: Specific monitor name (eDP-1, DP-1, etc.)
Default Workspace per Monitor
bash
# Set default starting workspace for each monitor
workspace = 1, monitor:eDP-1, default:true
workspace = 5, monitor:DP-2, default:true
Advanced Workspace Rules
Workspace Appearance Customization
bash
# Remove decorations and gaps for specific workspace
workspace = 3, rounding:false, decorate:false
# Gaming workspace with no distractions
workspace = 8, bordersize:8
# Coding workspace with minimal distractions
workspace = name:coding, rounding:false, decorate:false, gapsin:0, gapsout:0, border:false, decorate:false, monitor:DP-1
Named Workspaces
bash
# Create named workspaces for specific purposes
workspace = name:Hello, monitor:DP-1, default:true
workspace = name:gaming, monitor:desc:Chimei Innolux Corporation 0x150C, default:true
workspace = name:coding, monitor:DP-1, rounding:false, decorate:false
workspace = name:media, monitor:HDMI-A-1, gapsin:0, gapsout:0
Auto-Launch Applications
bash
# Launch applications when workspace is created
workspace = 5, on-created-empty:[float] firefox
workspace = special:scratchpad, on-created-empty:foot
workspace = name:development, on-created-empty:code
workspace = name:communication, on-created-empty:discord
Workspace Properties
Visual Properties
Rounding and Decoration
bash
workspace = 3, rounding:false # Disable window rounding
workspace = 4, decorate:false # Disable window decorations
workspace = 5, border:false # Disable window borders
Gaps Configuration
bash
workspace = 6, gapsin:0 # No inner gaps
workspace = 7, gapsout:0 # No outer gaps
workspace = 8, gapsin:5, gapsout:10 # Custom gap sizes
Border Customization
bash
workspace = 9, bordersize:8 # Custom border size
workspace = 10, bordersize:0 # No borders
Monitor-Specific Properties
Monitor Description Assignment
bash
# Assign workspace to monitor by description
workspace = name:gaming, monitor:desc:Chimei Innolux Corporation 0x150C, default:true
Multiple Monitor Setup
bash
# Primary monitor workspaces (1-5)
workspace = 1, monitor:DP-1, default:true
workspace = 2, monitor:DP-1
workspace = 3, monitor:DP-1
workspace = 4, monitor:DP-1
workspace = 5, monitor:DP-1
# Secondary monitor workspaces (6-10)
workspace = 6, monitor:HDMI-A-1, default:true
workspace = 7, monitor:HDMI-A-1
workspace = 8, monitor:HDMI-A-1
workspace = 9, monitor:HDMI-A-1
workspace = 10, monitor:HDMI-A-1
Common Workspace Configurations
Dual Monitor Setup
Standard Dual Monitor
bash
# Left monitor (primary) - workspaces 1-5
workspace = 1, monitor:DP-1, default:true
workspace = 2, monitor:DP-1
workspace = 3, monitor:DP-1
workspace = 4, monitor:DP-1
workspace = 5, monitor:DP-1
# Right monitor (secondary) - workspaces 6-10
workspace = 6, monitor:HDMI-A-1, default:true
workspace = 7, monitor:HDMI-A-1
workspace = 8, monitor:HDMI-A-1
workspace = 9, monitor:HDMI-A-1
workspace = 10, monitor:HDMI-A-1
Laptop + External Monitor
bash
# Laptop screen - communication and monitoring
workspace = 1, monitor:eDP-1, default:true
workspace = 2, monitor:eDP-1
workspace = 3, monitor:eDP-1
# External monitor - main work
workspace = 4, monitor:DP-1, default:true
workspace = 5, monitor:DP-1
workspace = 6, monitor:DP-1
workspace = 7, monitor:DP-1
workspace = 8, monitor:DP-1
Triple Monitor Setup
Productivity Setup
bash
# Left monitor - communication
workspace = 1, monitor:DP-1, default:true, on-created-empty:discord
workspace = 2, monitor:DP-1, on-created-empty:thunderbird
# Center monitor - main work
workspace = 3, monitor:DP-2, default:true
workspace = 4, monitor:DP-2
workspace = 5, monitor:DP-2
# Right monitor - reference/monitoring
workspace = 6, monitor:HDMI-A-1, default:true
workspace = 7, monitor:HDMI-A-1, on-created-empty:firefox
Specialized Workspace Configurations
Gaming Workspace
bash
# Full-screen gaming workspace with minimal UI
workspace = name:gaming, monitor:DP-1, rounding:false, decorate:false, gapsin:0, gapsout:0, border:false
Development Workspace
bash
# Coding workspace with specific layout
workspace = name:coding, monitor:DP-1, rounding:false, decorate:false, gapsin:2, gapsout:4
workspace = name:coding, on-created-empty:code
Media Workspace
bash
# Media consumption workspace
workspace = name:media, monitor:HDMI-A-1, gapsin:0, gapsout:0, on-created-empty:mpv
Communication Workspace
bash
# Communication apps workspace
workspace = name:chat, monitor:eDP-1, on-created-empty:discord
Special Workspaces
Scratchpad Workspace
bash
# Special scratchpad workspace
workspace = special:scratchpad, on-created-empty:foot
workspace = special:notes, on-created-empty:obsidian
workspace = special:music, on-created-empty:spotify
Named Special Workspaces
bash
# Custom special workspaces
workspace = special:terminal, on-created-empty:kitty
workspace = special:calculator, on-created-empty:qalculate-gtk
workspace = special:notes, on-created-empty:notepadqq
Dynamic Workspace Management
Auto-Creation Rules
bash
# Automatically create workspaces with specific applications
workspace = 1, on-created-empty:firefox
workspace = 2, on-created-empty:code
workspace = 3, on-created-empty:thunar
workspace = 4, on-created-empty:discord
workspace = 5, on-created-empty:spotify
Conditional Workspace Creation
bash
# Create workspace only if application is installed
workspace = name:development, on-created-empty:[[ -x "$(command -v code)" ]] && code
workspace = name:gaming, on-created-empty:[[ -x "$(command -v steam)" ]] && steam
Integration with Window Rules
Workspace-Specific Window Rules
bash
# In WindowRules.conf - assign applications to specific workspaces
windowrule = workspace 1, ^(firefox)$
windowrule = workspace 2, ^(code)$
windowrule = workspace 3, ^(thunar)$
windowrule = workspace 4, ^(discord)$
windowrule = workspace 5, ^(spotify)$
Monitor-Aware Window Rules
bash
# Assign applications to workspaces on specific monitors
windowrule = workspace 1, ^(firefox)$, monitor:DP-1
windowrule = workspace 6, ^(discord)$, monitor:HDMI-A-1
Customization Examples
Productivity Setup
bash
# Monitor 1: Communication and monitoring
workspace = 1, monitor:DP-1, default:true, on-created-empty:thunderbird
workspace = 2, monitor:DP-1, on-created-empty:discord
workspace = 3, monitor:DP-1, on-created-empty:htop
# Monitor 2: Main work
workspace = 4, monitor:DP-2, default:true, on-created-empty:code
workspace = 5, monitor:DP-2, on-created-empty:firefox
workspace = 6, monitor:DP-2
# Monitor 3: Reference and media
workspace = 7, monitor:HDMI-A-1, default:true, on-created-empty:thunar
workspace = 8, monitor:HDMI-A-1, on-created-empty:spotify
Gaming Setup
bash
# Main gaming monitor - minimal UI
workspace = 1, monitor:DP-1, default:true, rounding:false, decorate:false, gapsin:0, gapsout:0
workspace = 2, monitor:DP-1, rounding:false, decorate:false, gapsin:0, gapsout:0
# Secondary monitor - communication while gaming
workspace = 3, monitor:HDMI-A-1, default:true, on-created-empty:discord
workspace = 4, monitor:HDMI-A-1, on-created-empty:firefox
Development Setup
bash
# Code workspace with minimal distractions
workspace = name:code, monitor:DP-1, rounding:false, decorate:false, gapsin:2, gapsout:4
workspace = name:code, on-created-empty:code
# Terminal workspace
workspace = name:terminal, monitor:DP-1, gapsin:5, gapsout:10
workspace = name:terminal, on-created-empty:kitty
# Browser for testing
workspace = name:testing, monitor:HDMI-A-1, on-created-empty:firefox
Troubleshooting
Common Issues
Workspaces Not Assigned to Monitors
bash
# Check monitor names
hyprctl monitors
# Verify workspace assignment
hyprctl workspaces
# Test workspace assignment
hyprctl dispatch workspace 1
Applications Not Auto-Launching
bash
# Check if application exists
which firefox
# Test command manually
firefox &
# Check workspace creation
hyprctl dispatch workspace name:development
Workspace Rules Not Applied
bash
# Reload configuration
hyprctl reload
# Check current workspace rules
hyprctl getoption workspace
# Test rule application
hyprctl dispatch workspace 3
Debug Commands
bash
# List current workspaces
hyprctl workspaces
# Get workspace information
hyprctl activeworkspace
# List workspace rules
hyprctl getoption workspace
# Switch to workspace for testing
hyprctl dispatch workspace 5
Validation
Test Workspace Configuration
bash
# Switch between workspaces
hyprctl dispatch workspace 1
hyprctl dispatch workspace 2
# Check workspace properties
hyprctl workspaces | grep -A 5 "workspace ID 1"
Monitor Workspace Assignment
bash
# Check which workspaces are on which monitors
hyprctl monitors | grep -A 10 "Monitor"
Best Practices
Configuration Management
Backup Before Changes
bash
cp ~/.config/hypr/workspaces.conf ~/.config/hypr/workspaces.conf.backup
Document Custom Rules
bash
# Development workspaces - custom gaps for coding
workspace = name:coding, monitor:DP-1, gapsin:2, gapsout:4
# Gaming workspace - no decorations for immersion
workspace = name:gaming, monitor:DP-1, rounding:false, decorate:false
Performance Optimization
Minimize Auto-Launch Applications
bash
# Only auto-launch essential applications
workspace = 1, on-created-empty:firefox # Essential browser
# workspace = 2, on-created-empty:code # Commented out - launch manually
Use Efficient Workspace Layouts
bash
# Disable expensive visual effects for performance-critical workspaces
workspace = name:gaming, rounding:false, decorate:false, gapsin:0, gapsout:0
User Experience
Logical Workspace Organization
bash
# Group related workspaces by monitor
# Monitor 1: Work (1-3)
# Monitor 2: Communication (4-6)
# Monitor 3: Media/Entertainment (7-9)
Consistent Naming
bash
# Use descriptive names for special workspaces
workspace = name:development, monitor:DP-1
workspace = name:communication, monitor:HDMI-A-1
workspace = name:entertainment, monitor:DP-2
This workspace configuration system provides flexible workspace management that adapts to various monitor setups and workflow requirements while maintaining consistency and performance.