# š® Hyprland ā SteamOS Session Switcher

**Seamlessly switch between Desktop and Gaming modes on Arch Linux**
[](https://archlinux.org/)
[](https://hyprland.org/)
[](https://store.steampowered.com/)
[](https://opensource.org/licenses/MIT)
## ⨠Features
š **One-Click Session Switching** - Toggle between Desktop (Hyprland) and Gaming (SteamOS-like) modes
šÆ **Gaming Optimized** - Seamless integration with Steam Big Picture and Gamescope
šØ **Beautiful UI** - Custom Wofi interface with glassmorphism effects
ā” **Lightning Fast** - Instant session switching with proper cleanup
š§ **Arch Native** - Built specifically for Arch Linux gaming setups
š® **Controller Friendly** - Works perfectly with gaming controllers
## š¼ļø Preview
```
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Switch Mode: ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā š® SteamOS ā
ā š„ļø Desktop ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
```
*Elegant Wofi interface with SteamOS-inspired glassmorphism design*
## šÆ What This Does
Transform your Arch Linux gaming rig into the ultimate dual-purpose machine:
- **š„ļø Desktop Mode**: Full Hyprland experience with UWSM session management
- **š® Gaming Mode**: SteamOS-like experience with Gamescope for optimal gaming performance
- **āØļø Quick Switch**: `SUPER + F12` to instantly toggle between modes
- **š Smart Cleanup**: Properly terminates sessions and handles process management
## š Requirements
### Core Dependencies
```bash
# Essential packages
sudo pacman -S hyprland sddm wofi gamescope steam
# AUR packages (install with yay)
yay -S gamescope-session-git uwsm-git gamescope-session-steam-git
```
### System Setup
- **OS**: Arch Linux (or Arch-based distro)
- **Display Manager**: SDDM
- **Session Manager**: UWSM
- **Window Manager**: Hyprland
- **Gaming Layer**: Gamescope + Steam
## š Installation
### Quick Install
```bash
# Clone the repository
git clone https://github.com/yourusername/hyprland-steamos-switcher.git
cd hyprland-steamos-switcher
# Make installer executable
chmod +x install.sh
# Run installation
./install.sh
```
### Manual Installation
Click to expand manual installation steps
1. **Copy the session switcher script**:
```bash
mkdir -p ~/.local/bin
cp install.sh ~/.local/bin/switch-session.sh
chmod +x ~/.local/bin/switch-session.sh
```
2. **Add Hyprland keybinding**:
```bash
echo "bind = SUPER, F12, exec, ~/.local/bin/switch-session.sh" >> ~/.config/hypr/hyprland.conf
```
3. **Configure SDDM for autologin** (optional):
```bash
sudo tee /etc/sddm.conf > /dev/null <
## š® Usage
### Switching Sessions
**Method 1: Keyboard Shortcut**
- Press `SUPER + F12` while in Hyprland
- Select your desired mode from the Wofi menu
**Method 2: Terminal**
```bash
~/.local/bin/switch-session.sh
```
**Method 3: From Gaming Mode**
- Use Steam's built-in session switching
- Or run the script from a terminal in desktop mode
### Session Types
| Mode | Description | Best For |
|------|-------------|----------|
| š® **SteamOS Mode** | Gamescope + Steam Big Picture | Gaming, controller use, living room setup |
| š„ļø **Desktop Mode** | Hyprland + UWSM | Development, productivity, general computing |
## āļø Configuration
### Customizing the Wofi Interface
Edit `~/.config/wofi/style.css` to modify the appearance:
```css
/* Example: Change the accent color */
#entry:selected {
background: linear-gradient(135deg, rgba(255, 107, 107, 0.8) 0%, rgba(255, 142, 83, 0.8) 100%);
}
```
### Adding Custom Session Options
Modify the script to add more session types:
```bash
choice=$(printf "š® SteamOS\nš„ļø Desktop\nš² RetroArch\nšµ Music Mode" | wofi --dmenu ...)
```
## š ļø Troubleshooting
### Common Issues
**Session won't switch**
```bash
# Check if services are running
systemctl --user status gamescope-session-plus@steam
systemctl --user status uwsm@hyprland-uwsm.service
```
**Wofi not appearing**
```bash
# Verify Wayland display
echo $WAYLAND_DISPLAY
echo $XDG_RUNTIME_DIR
```
**Steam not launching in gaming mode**
```bash
# Restart Steam service
systemctl --user restart gamescope-session-plus@steam
```
### Getting Help
- š Check the [Wiki](../../wiki) for detailed guides
- š Report issues on [GitHub Issues](../../issues)
- š¬ Join the discussion in [Discussions](../../discussions)
## šļø Uninstallation
To completely remove the session switcher:
```bash
chmod +x uninstall.sh
./uninstall.sh
```
This will remove:
- ā
Session switching scripts
- ā
SDDM autologin configuration
- ā
Systemd service overrides
- ā
Wofi custom styling
- ā
Hyprland keybinding
**Preserved**:
- ā
Hyprland configuration (except switcher keybinding)
- ā
UWSM setup
- ā
All installed packages
- ā
Steam and gaming setup
## šļø Architecture
```
āāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāā
ā Desktop Mode ā ā Gaming Mode ā
ā ā ā ā
ā Hyprland āāāāāŗā Gamescope ā
ā + UWSM ā ā + Steam ā
ā + Full DE ā ā + Big Picture ā
āāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāā
ā² ā²
ā ā
āāāāāāāāāā Wofi āāāāāāāāā
Session Switcher
```
## š¤ Contributing
We love contributions! Here's how you can help:
1. š“ Fork the repository
2. šæ Create a feature branch (`git checkout -b feature/AmazingFeature`)
3. š Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. š¤ Push to the branch (`git push origin feature/AmazingFeature`)
5. šÆ Open a Pull Request
### Development Setup
```bash
# Clone your fork
git clone https://github.com/yourusername/hyprland-steamos-switcher.git
# Create a development branch
git checkout -b my-awesome-feature
# Test your changes
./install.sh # Test installation
./uninstall.sh # Test cleanup
```
## š License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## š Acknowledgments
- **[Hyprland](https://hyprland.org/)** - Amazing Wayland compositor
- **[Gamescope](https://github.com/ValveSoftware/gamescope)** - Valve's gaming compositor
- **[UWSM](https://github.com/Vladimir-csp/uwsm)** - Universal Wayland Session Manager
- **[Wofi](https://hg.sr.ht/~scoopta/wofi)** - Beautiful application launcher
- **Arch Linux Community** - For the amazing ecosystem
## š Star History
[](https://star-history.com/#yourusername/hyprland-steamos-switcher&Date)
---
**Made with ā¤ļø for the Arch Linux Gaming Community**
[š Homepage](../../) ⢠[š Documentation](../../wiki) ⢠[š Report Bug](../../issues) ⢠[š” Request Feature](../../issues)