Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .SRCINFO
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
pkgbase = deckless-git
pkgdesc = Keep official Steam intact while fixing proxy split, Big Picture rendering, and i3 couch-mode handoff on Linux
pkgver = 0.1.0.r0.g089aa68
pkgrel = 1
url = https://github.com/m1ngsama/deckless
arch = any
license = GPL-3.0-or-later
makedepends = git
depends = bash
depends = jq
depends = steam
optdepends = gamescope: run Big Picture inside gamescope
optdepends = gamemode: enable gamemode for Big Picture sessions
optdepends = i3-wm: enable fullscreen handoff between Big Picture and launched games
provides = deckless
conflicts = deckless
source = git+https://github.com/m1ngsama/deckless.git
sha256sums = SKIP

pkgname = deckless-git
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,18 @@ All notable changes to this project will be documented in this file.

The format is inspired by Keep a Changelog, and the project follows semantic versioning once tagged releases begin.

## [Unreleased]

### Added

- A `deckless-git` `PKGBUILD` and `.SRCINFO` entry point for Arch users who want to package Deckless from a local clone.
- A real-machine Big Picture screenshot and validation notes in the README.

### Fixed

- Wrapper timing around Steam's updater verification so Deckless no longer needs to present a modified wrapper during the verification phase to recover the proxied, GPU-enabled webhelper path.
- Wrapper cleanup now survives Steam's shutdown path by detaching the cleanup helper from the launcher session before Steam exits.

## [0.1.0] - 2026-03-28

### Added
Expand Down
56 changes: 56 additions & 0 deletions PKGBUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Maintainer: m1ngsama <contact@m1ng.space>

pkgname=deckless-git
pkgver=0.1.0.r0.g089aa68
pkgrel=1
pkgdesc='Keep official Steam intact while fixing proxy split, Big Picture rendering, and i3 couch-mode handoff on Linux'
arch=('any')
url='https://github.com/m1ngsama/deckless'
license=('GPL-3.0-or-later')
depends=('bash' 'jq' 'steam')
makedepends=('git')
optdepends=(
'gamescope: run Big Picture inside gamescope'
'gamemode: enable gamemode for Big Picture sessions'
'i3-wm: enable fullscreen handoff between Big Picture and launched games'
)
provides=('deckless')
conflicts=('deckless')
source=('git+https://github.com/m1ngsama/deckless.git')
sha256sums=('SKIP')

pkgver() {
cd deckless
git describe --long --tags --abbrev=7 | sed 's/^v//; s/-/.r/; s/-/./'
}

package() {
cd deckless

install -d "${pkgdir}/usr/share/deckless"
cp -a \
LICENSE \
README.md \
CHANGELOG.md \
CONTRIBUTING.md \
install.sh \
uninstall.sh \
bin \
config \
docs \
"${pkgdir}/usr/share/deckless/"

install -Dm755 /dev/stdin "${pkgdir}/usr/bin/deckless-install" <<'EOF'
#!/usr/bin/env bash
set -euo pipefail

exec /usr/share/deckless/install.sh "$@"
EOF

install -Dm755 /dev/stdin "${pkgdir}/usr/bin/deckless-uninstall" <<'EOF'
#!/usr/bin/env bash
set -euo pipefail

exec /usr/share/deckless/uninstall.sh "$@"
EOF
}
38 changes: 36 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,26 @@ It started from a real Arch Linux desktop that needed direct game traffic, proxi

- Keeps `/usr/bin/steam` as the official upstream client.
- Proxies only `steamwebhelper` traffic, so store, community pages, avatars, and embedded web content can use a proxy while games and downloads stay direct.
- Restores the original `steamwebhelper_sniper_wrap.sh` when Steam exits.
- Restores the original `steamwebhelper_sniper_wrap.sh` shortly after Steam exits through a detached cleanup helper.
- Removes Steam's `--disable-gpu` and `--disable-gpu-compositing` flags for Big Picture webhelper sessions.
- Exports sane `GBM`, `EGL`, and PulseAudio defaults to help Steam stay on hardware acceleration instead of dropping to software rendering.
- Launches Big Picture through `gamescope` and `gamemode` when they are available.
- Ships an optional i3 bridge that lets a newly launched game take fullscreen from Big Picture and hands fullscreen back when the game exits.
- Installs cleanly into XDG paths and can be rolled back with `./uninstall.sh`.

## Real-machine verification

Validated on March 28, 2026 on an Arch Linux desktop with X11, i3, NVIDIA 595.58.3, and a 240 Hz monitor.

![Deckless Big Picture running fullscreen on Arch Linux with i3](assets/screenshots/big-picture-arch-i3.png)

The live validation for this repository confirmed:

- Steam updater verification completed without a wrapper size mismatch loop.
- The top-level `steamwebhelper` launched with `--proxy-server=...` and without Steam's forced `--disable-gpu*` flags.
- `webhelper_gpu.txt` reported `gpu_compositing: enabled`, `opengl: enabled_on`, and `video_decode: enabled`.
- Big Picture opened as a focused fullscreen `steamwebhelper` window under i3.

## Design goals

- Official Steam first, customization second.
Expand Down Expand Up @@ -66,11 +79,30 @@ For a controller-first session, launch:
steam-bigpicture
```

## Arch packaging

This repository also ships a `PKGBUILD` for a rolling `deckless-git` package.

From a local clone:

```bash
makepkg -si
deckless-install
```

That installs Deckless under `/usr/share/deckless` and exposes:

- `deckless-install`
- `deckless-uninstall`

## What gets installed

- `~/.local/share/deckless/bin/deckless-steam`
- `~/.local/share/deckless/bin/deckless-bigpicture`
- `~/.local/share/deckless/bin/deckless-i3-bigpicture-bridge`
- `~/.local/share/deckless/bin/deckless-sync-webhelper-wrapper`
- `~/.local/share/deckless/bin/deckless-webhelper-heal`
- `~/.local/share/deckless/bin/deckless-webhelper-cleanup`
- `~/.local/bin/steam`
- `~/.local/bin/steam-bigpicture`
- `~/.local/share/applications/steam.desktop`
Expand Down Expand Up @@ -119,6 +151,8 @@ See [docs/i3.md](docs/i3.md) for the handoff behavior.
- official `steam` package
- X11
- i3
- NVIDIA proprietary driver 595.58.3
- 240 Hz display
- `gamescope`
- `gamemode`
- `jq`
Expand All @@ -129,7 +163,7 @@ Other X11 desktop environments may still benefit from the proxy split and Big Pi

- Deckless never replaces `/usr/bin/steam`.
- The Steam runtime wrapper is only rewritten while Steam is active.
- The original wrapper is restored after Steam exits.
- The original wrapper is restored shortly after Steam exits, once Steam activity is gone.
- `./uninstall.sh` restores the local launchers and desktop entries that existed before the first install.

## Documentation
Expand Down
Binary file added assets/screenshots/big-picture-arch-i3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading