Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.
[BUG] Hyprshot NVIDIA PBUFFER inconsistency and fix
Reported by ngodn · filed Sep 15, 2025Closed upstream on 2025-10-26 by ryanrhughes. GitHub close reason: completed. No closing PR or commit is recorded — "completed" alone is not evidence of a fix.
At a glance
- 1 · What is claimed?
- Only the report text below — no validator has restated it as checkable claims yet.
- 2 · What does it affect?
- Not yet mapped to any requirement or component.
- 3 · Is it reproducible?
- No validation has been run yet.
- 4 · What remains unclear?
- Not validated yet: no claims, no reproducer.
- 5 · What happens next?
- Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.
Original report
System details
NVIDIA GeForce RTX 3060 Lite Hash Rate, Omarchy v2.1.2, Linux 6.16.7-1-cachyos-lto, Hyprland 0.51.0, hyprshot 1.3.0-4, satty 0.19.0
What's wrong?
Issue Summary
Hyprshot's --freeze flag produces inconsistent behavior on NVIDIA GPUs, causing [ERR] renderSurface: PBUFFER null errors.
Problem Details
- Screenshots work ~60-70% of the time
- When PBUFFER error occurs, satty receives invalid image data and fails with "Unrecognized image file format"
- Error message:
[ERR] renderSurface: PBUFFER null - Inconsistent user experience - sometimes works, sometimes doesn't
Root Cause
The PBUFFER (Pixel Buffer) error occurs when hyprshot's --freeze flag attempts to create an OpenGL pixel buffer on NVIDIA hardware under Wayland. This is related to NVIDIA driver compatibility issues with certain OpenGL operations.
Testing Results
# With --freeze flag (inconsistent)
$ hyprshot -m region --raw --freeze
[ERR] renderSurface: PBUFFER null # Sometimes appears
�PNG... # Sometimes valid, sometimes corrupted
# Without --freeze flag (consistent)
$ hyprshot -m region --raw
�PNG... # Always works, but no freeze UXImplemented Solution
Created a smart retry mechanism that:
1. First attempt: Uses --freeze flag for optimal user experience
2. Fallback attempt: Removes --freeze flag when PBUFFER errors occur
3. Result: 100% success rate with best possible UX
Environment Variables Added
# In ~/.config/hypr/hyprland.conf
env = GBM_BACKEND,nvidia-drm
env = WEBKIT_DISABLE_DMABUF_RENDERER,1Script Modification
# Smart retry logic in omarchy-cmd-screenshot
for attempt in 1 2; do
if [ $attempt -eq 1 ]; then
# Try with freeze first (better UX)
notify-send "Taking screenshot (freeze)..." -t 1500
hyprshot_cmd="hyprshot -m ${1:-region} --raw --freeze"
else
# Fallback without freeze (PBUFFER workaround)
notify-send "Retrying without freeze..." -t 1500
hyprshot_cmd="hyprshot -m ${1:-region} --raw"
fi
if $hyprshot_cmd 2>/dev/null | satty --filename - [...]; then
notify-send "Screenshot saved successfully" -t 2000
break
fi
doneHardware Tested
- NVIDIA GeForce RTX 3060 Lite Hash Rate
View raw text
### System details
NVIDIA GeForce RTX 3060 Lite Hash Rate, Omarchy v2.1.2, Linux 6.16.7-1-cachyos-lto, Hyprland 0.51.0, hyprshot 1.3.0-4, satty 0.19.0
### What's wrong?
## Issue Summary
Hyprshot's `--freeze` flag produces inconsistent behavior on NVIDIA GPUs, causing `[ERR] renderSurface: PBUFFER null` errors.
## Problem Details
- Screenshots work ~60-70% of the time
- When PBUFFER error occurs, satty receives invalid image data and fails with "Unrecognized image file format"
- Error message: `[ERR] renderSurface: PBUFFER null`
- Inconsistent user experience - sometimes works, sometimes doesn't
## Root Cause
The PBUFFER (Pixel Buffer) error occurs when hyprshot's `--freeze` flag attempts to create an OpenGL pixel buffer on NVIDIA hardware under Wayland. This is related to NVIDIA driver compatibility issues with certain OpenGL operations.
## Testing Results
```bash
# With --freeze flag (inconsistent)
$ hyprshot -m region --raw --freeze
[ERR] renderSurface: PBUFFER null # Sometimes appears
�PNG... # Sometimes valid, sometimes corrupted
# Without --freeze flag (consistent)
$ hyprshot -m region --raw
�PNG... # Always works, but no freeze UX
```
## Implemented Solution
Created a smart retry mechanism that:
1. **First attempt**: Uses `--freeze` flag for optimal user experience
2. **Fallback attempt**: Removes `--freeze` flag when PBUFFER errors occur
3. **Result**: 100% success rate with best possible UX
### Environment Variables Added
```bash
# In ~/.config/hypr/hyprland.conf
env = GBM_BACKEND,nvidia-drm
env = WEBKIT_DISABLE_DMABUF_RENDERER,1
```
### Script Modification
```bash
# Smart retry logic in omarchy-cmd-screenshot
for attempt in 1 2; do
if [ $attempt -eq 1 ]; then
# Try with freeze first (better UX)
notify-send "Taking screenshot (freeze)..." -t 1500
hyprshot_cmd="hyprshot -m ${1:-region} --raw --freeze"
else
# Fallback without freeze (PBUFFER workaround)
notify-send "Retrying without freeze..." -t 1500
hyprshot_cmd="hyprshot -m ${1:-region} --raw"
fi
if $hyprshot_cmd 2>/dev/null | satty --filename - [...]; then
notify-send "Screenshot saved successfully" -t 2000
break
fi
done
```
## Hardware Tested
- NVIDIA GeForce RTX 3060 Lite Hash RateValidation
Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.
Linked
Not linked to any known issue, other report or change yet.
Decision
Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.
No decision has been recorded yet.