Automatically launch/close Steam big picture mode when a controller is connected or disconnected on linux.
- Works with both bluetooth and USB connections.
- (Optional) If Steam isn't already running it launches on controller connection.
- Keeps big picture open if a game is running when you disconnect the controller.
- Lightweight and runs in the background as a systemd service.
- Quick installer.
The tool should work on most distros from the Arch, Debian/Ubuntu, and Fedora families. It should also play nice with derivatives like CachyOS, Mint, Nobara etc. If your distro works (or doesn't) let me know so I can look into it
Setups I always test on:
- ✅ Arch + KDE Plasma (Wayland)
- ✅ Mint + Cinnamon (X11)
- ✅ CachyOS + Hyprland (Wayland)
- ✅ Fedora + KDE Plasma (Wayland)
Tested with Xbox Wireless Controller both via bluetooth and USB, but should work with any controller
Just clone the repo and run the installer script. It will guide you through the rest.
git clone https://github.com/goatvisuals/auto-big-picture.git
cd auto-big-picture
./install.sh
The script will handle dependencies if needed (bluez/bluez-utils for Bluetooth mode)
Options during install
Step 1: Installation type
1: Install for Bluetooth and USB connections
2: Install for USB connections only
Step 1.5: Only for bluetooth installation type
Choose controller from list of paired devices
Step 2: Should steam launch when a controller gets connected even if it isn't already running?
1: Yes - launches even if steam wasn't running
2: No - only start big picture when the steam process is already running
Step 3: Change config path
Input custom path or leave blank to keep the default
~/.config/auto-big-picture
Just run the uninstaller and that's it.
./uninstall.sh
Manual uninstall
If you prefer to manually uninstall, you can do it by stopping and disabling the service and then removing the files. The service file is always located at ~/.config/systemd/user/auto-big-picture.service
, and the config/script is by default stored in ~/.config/auto-big-picture/auto-big-picture.py
(or a different location you chose during installation).
1 Stop and disable the service:
systemctl --user stop auto-big-picture.service
systemctl --user disable auto-big-picture.service
2 Reload systemd:
systemctl --user daemon-reload
3 Remove the files (change last 2 paths if you chose a custom config dir):
rm -f ~/.config/systemd/user/auto-big-picture.service
rm -f ~/.config/auto-big-picture/auto-big-picture.py
rmdir ~/.config/auto-big-picture
It's a python script that uses bluetoothctl polling to check bluetooth status and periodically checks /dev/input
for USB devices. The game check just looks for processes running from your steamapps/common
directory to avoid closing when in game (for example if batteries die or controller goes to sleep because of inactivity)