Dry Hopped or mold

Hi everyone, doing a citra IPA and it had a dry hopping step after one week. We're at two weeks now and seeing in addition to the green on the rim some black. Is that a bad sign?

reddit.com
u/seej1171 — 13 hours ago
▲ 27 r/chicago

What's Chicago's next big idea? Check out the 6 finalists

Boy howdy these are not thinking big and pretty underwhelming, imo. Capping the highways feels the closest to large ambition that would stand out to the world.

youtube.com
u/seej1171 — 29 days ago

Remote Streaming via Sunshine in Game Mode

Okay I've been trying for months both with physical dummy HDMI connectors and virtual ones and for the life of me I can't get streaming to my handhelds to work properly. It works when I install decky sunshine BUT my display on my handhelds is 1/4 of the screen. Or a blank screen when trying with the dummy outputs. After a TON of trial and error with Claude's help I got it working. It's not perfect, you have to disconnect and reconnect when you first initiate Moonlight. But it's the closes to good enough I've gotten. Here's the steps:

My setup:

  • CachyOS with linux-cachyos-deckify kernel
  • Limine bootloader (not systemd-boot)
  • AMD RX 7800 XT
  • TV connected via DP-2
  • Sunshine installed via Decky Loader plugin (Flatpak, runs as root)
  • Target: 1080p streaming to handhelds with 1920x1080 screens

Step 1: Get a 1080p EDID file

Don't use the Samsung Q800T EDID that some guides suggest — it advertises 4K as preferred and gamescope will pick that up and render at 4K, causing a quarter-screen issue on 1080p clients.

Use this 1080p-only EDID instead:

bash

sudo mkdir -p /usr/lib/firmware/edid
sudo curl -L -o /usr/lib/firmware/edid/virtual-1080p.bin \
  "https://raw.githubusercontent.com/akatrevorjay/edid-generator/master/1920x1080.bin"
file /usr/lib/firmware/edid/virtual-1080p.bin
# Should say: EDID data, version 1.3

Step 2: Add EDID to initramfs

Edit /etc/mkinitcpio.conf and add the file to the FILES array:

FILES=(/usr/lib/firmware/edid/virtual-1080p.bin)

Step 3: Add kernel parameters

Important: CachyOS deckify uses Limine, not systemd-boot. Do not edit /boot/limine.conf directly — it gets overwritten. The correct override file is /etc/default/limine.

First identify your free connector (one that's disconnected and not your main display):

bash

for p in /sys/class/drm/*/status; do con=${p%/status}; echo -n "${con#*/card?-}: "; cat $p; done

My TV was on DP-2 and I used HDMI-A-1 as the virtual display. Add to /etc/default/limine — keep your existing KERNEL_CMDLINE line and append a second one:

bash

# Your existing line stays as-is, add this below it:
KERNEL_CMDLINE[default]+=" drm.edid_firmware=HDMI-A-1:edid/virtual-1080p.bin video=HDMI-A-1:1920x1080@60e"

The e at the end of the video= parameter is critical — it forces the connector enabled even with nothing plugged in.

Then regenerate:

bash

sudo limine-mkinitcpio

After reboot, verify:

bash

for p in /sys/class/drm/*/status; do con=${p%/status}; echo -n "${con#*/card?-}: "; cat $p; done
# HDMI-A-1 should show: connected

Step 4: Fix gamescope connector order

The deckify gamescope session script builds its -O (output) flag from the OUTPUT_CONNECTOR environment variable. By default it uses * which picks your physical display first. We need to control this so HDMI-A-1 becomes primary when streaming.

Create a systemd drop-in (TV-first is the default/resting state):

bash

sudo mkdir -p /etc/systemd/user/gamescope-session.service.d/
sudo tee /etc/systemd/user/gamescope-session.service.d/output-connector.conf << 'EOF'
[Service]
Environment="OUTPUT_CONNECTOR=DP-2,HDMI-A-1"
EOF

Reload:

bash

sudo -u deck DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus XDG_RUNTIME_DIR=/run/user/1000 systemctl --user daemon-reload

Step 5: Install Sunshine via Decky Loader

Install Decky Loader first if you haven't, then install the Decky Sunshine plugin from the Decky store. It handles Sunshine as a system Flatpak running as root.

If you previously installed Sunshine via AUR: remove it first (pacman -Rns sunshine) and clean up the leftover config (rm -rf /home/deck/.config/sunshine/). The Decky plugin will reinstall it as a Flatpak.

Display ID: leave the Display ID field blank in Sunshine's Audio/Video config — letting it auto-detect works better than setting it explicitly.

Step 6: Automatic TV swap on stream connect/disconnect

The Sunshine Flatpak sandbox is heavily restricted — it can't exec host binaries directly, can't write to /tmp (isolated), and flatpak-spawn --host requires D-Bus which isn't always available. The working solution is a systemd path unit that watches a trigger file inside the Flatpak's own config directory.

Create the trigger scripts (these run inside the Flatpak sandbox and can write to their own config dir):

bash

sudo mkdir -p /root/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/scripts

sudo tee /root/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/scripts/connect.sh << 'EOF'
#!/bin/bash
rm -f /root/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/trigger-disconnect
touch /root/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/trigger-connect
EOF

sudo tee /root/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/scripts/disconnect.sh << 'EOF'
#!/bin/bash
rm -f /root/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/trigger-connect
touch /root/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/trigger-disconnect
EOF

sudo chmod +x /root/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/scripts/connect.sh
sudo chmod +x /root/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/scripts/disconnect.sh

Create the systemd path units and services (these run on the host as root and can do anything):

bash

sudo tee /etc/systemd/system/sunshine-connect.path << 'EOF'
[Unit]
Description=Watch for Sunshine connect trigger

[Path]
PathExists=/root/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/trigger-connect
Unit=sunshine-connect.service

[Install]
WantedBy=multi-user.target
EOF

sudo tee /etc/systemd/system/sunshine-disconnect.path << 'EOF'
[Unit]
Description=Watch for Sunshine disconnect trigger

[Path]
PathExists=/root/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/trigger-disconnect
Unit=sunshine-disconnect.service

[Install]
WantedBy=multi-user.target
EOF

sudo tee /etc/systemd/system/sunshine-connect.service << 'EOF'
[Unit]
Description=Sunshine Connect Handler
StartLimitBurst=2
StartLimitIntervalSec=60

[Service]
Type=oneshot
ExecStart=/bin/bash -c "rm -f /root/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/trigger-connect && printf '[Service]\nEnvironment=\"OUTPUT_CONNECTOR=HDMI-A-1,DP-2\"\n' > /etc/systemd/user/gamescope-session.service.d/output-connector.conf"
ExecStart=machinectl shell deck@ /bin/bash -c 'systemctl --user daemon-reload && systemctl --user restart gamescope-session.target'
EOF

sudo tee /etc/systemd/system/sunshine-disconnect.service << 'EOF'
[Unit]
Description=Sunshine Disconnect Handler
StartLimitBurst=2
StartLimitIntervalSec=60

[Service]
Type=oneshot
ExecStart=/bin/bash -c "rm -f /root/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/trigger-disconnect && printf '[Service]\nEnvironment=\"OUTPUT_CONNECTOR=DP-2,HDMI-A-1\"\n' > /etc/systemd/user/gamescope-session.service.d/output-connector.conf"
ExecStart=machinectl shell deck@ /bin/bash -c 'systemctl --user daemon-reload && systemctl --user restart gamescope-session.target'
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now sunshine-connect.path
sudo systemctl enable --now sunshine-disconnect.path

Set the Sunshine app commands in the web UI under Applications → Desktop → Command Preparations:

  • Do Command: /root/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/scripts/connect.sh
  • Undo Command: /root/.var/app/dev.lizardbyte.app.Sunshine/config/sunshine/scripts/disconnect.sh

How it works

  • On connect: Flatpak script touches a trigger file → host path unit fires → systemd service rewrites the gamescope drop-in to put HDMI-A-1 first → restarts gamescope → TV goes dark, virtual display becomes primary at 1080p
  • On disconnect: reverse — DP-2 goes back to primary, TV restores at 4K

Known quirk: because gamescope has to fully restart when you connect, Moonlight will show a blank screen initially. Disconnect and reconnect once and it will display correctly. This is because Sunshine locks onto the display state at connection time, before gamescope finishes restarting.

Troubleshooting

If the TV doesn't restore after disconnecting, the path unit may have hit its rate limit:

bash

sudo systemctl reset-failed sunshine-connect.service sunshine-disconnect.service sunshine-connect.path sunshine-disconnect.path
sudo systemctl restart sunshine-connect.path sunshine-disconnect.path
# Then manually trigger disconnect:
sudo systemctl start sunshine-disconnect.service
reddit.com
u/seej1171 — 2 months ago