Skip to content

Automatically launch/close Steam big picture mode when a controller is connected or disconnected on linux.

License

Notifications You must be signed in to change notification settings

goatvisuals/Auto-Big-Picture

Repository files navigation

Auto-Big-Picture 🎮

Automatically launch/close Steam big picture mode when a controller is connected or disconnected on linux.


Features

  • 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.

Supported Distros

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)

Supported Controllers

Tested with Xbox Wireless Controller both via bluetooth and USB, but should work with any controller


Installation

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


Uninstall

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

For the nerds (how does it work?)

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)

About

Automatically launch/close Steam big picture mode when a controller is connected or disconnected on linux.

Topics

Resources

License

Stars

Watchers

Forks