God a used GPD Win 4 Pro with 2TB drive, so decided to install EndeavourOS and game on it since I don't like Windows 11.
2023/12/31: Decided to install EndeavourOS on my Framework 13 as well, keeping the notes in the same doc
GPD Win 4: Del to bios, make sure secure boot is off. F7 to access boot menu
By default it creates a 300GB partition for Windows and the most of the rest as D:, we will replace D: with Linux.
- Download ISO from website. Use flatpak
ISO Image Writer
to create bootable USB - Boot into live env
- Need to patch file https://forum.endeavouros.com/t/replace-partition-with-endeavouros-on-btrfs-along-side-windows-10-dual-boot/29387 so that we can install system with btrfs partition
- Open installer, choose "Replace a partition", choose the D: partition, the file system should now be
btrfs
- Check
Encrypt system
checkbox (forgot the exact text) so that luks is enabled.
Post installation:
Switch to Wayland https://forum.endeavouros.com/t/how-to-switch-to-wayland-in-kde-plasma/21957
Get Steam working, based on my previous notes https://gist.github.com/fsworld009/cb9a402ede96fa6087a2562d987e82be
- Enable bluetooth https://forum.endeavouros.com/t/bluetooth-works-in-live-usb-but-not-after-installation/46700/3
- Enable flatpak and discover store https://flatpak.org/setup/EndeavourOS
- Install lutris and proton-qt
- Install fticx5 and IMEs via flatpak
- Steam: Install steam, gamescope, mangohud, ibus, ibus-pinyin, ibus-anthy
- multilib is already enabled
- Tested on desktop mode, works fine except I couldn't get local network game trasfer working
- My own gamescope launch script from https://gist.github.com/fsworld009/cb9a402ede96fa6087a2562d987e82be also works fine
- Steam Gamemode https://aur.archlinux.org/packages/gamescope-session-steam-git
- Steam gamesope session would appear in sddm (there will be two options, the first one should work)
- Sometimes game controller isn't detected in game, need to flip mouse/controller switch to reconnect it.
TODO:
- Set power button to sleep
- Look into battery setting: right now one Holocure game burns out ~60% battery
Anything not 1080p breaks the screen, fix to 1080p with 150% scale for now. Konsole: change font to 14px
- Cannot adjust brightness
- Cannot adjust TDP
For TDO: Install ryzenadj and then install https://github.com/aarron-lee/simple-ryzen-tdp (use install.sh)
Gave up on Gamemode now and just launch gamescope in KDE Plasma, since we get screen brightness, battery related settings out of the box.
Use the script from my Arch linux note but change to launch gamescope with fullscreen
#!/bin/sh
set -v
## This option would break mongohud in Stem and games
# Enable Mangoapp
export STEAM_USE_MANGOAPP=1
export MANGOHUD_CONFIGFILE=$(mktemp /tmp/mangohud.XXXXXXXX)
#https://gist.github.com/DoomedSouls/e4015dffc08963a57c6adf3066f5a486
# Enable support for xwayland isolation per-game in Steam
export STEAM_MULTIPLE_XWAYLANDS=1
# We have the Mesa integration for the fifo-based dynamic fps-limiter
export STEAM_GAMESCOPE_DYNAMIC_FPSLIMITER=1
# Don't wait for buffers to idle on the client side before sending them to gamescope
export vk_xwayland_wait_ready=false
# Scaling support
export STEAM_GAMESCOPE_FANCY_SCALING_SUPPORT=1
# Support for gamescope tearing with GAMESCOPE_ALLOW_TEARING atom
export STEAM_GAMESCOPE_HAS_TEARING_SUPPORT=1
# Enable tearing controls in steam
export STEAM_GAMESCOPE_TEARING_SUPPORTED=1
# We no longer need to set GAMESCOPE_EXTERNAL_OVERLAY from steam, mangoapp now does it itself
export STEAM_DISABLE_MANGOAPP_ATOM_WORKAROUND=1
# Enable horizontal mangoapp bar
export STEAM_MANGOAPP_HORIZONTAL_SUPPORTED=1
# Set input method modules for Qt/GTK that will show the Steam keyboard
export QT_IM_MODULE=steam
export GTK_IM_MODULE=Steam
# Create run directory file for startup and stats sockets
# shellcheck disable=SC2030 # (broken warning)
tmpdir="$([[ -n ${XDG_RUNTIME_DIR+x} ]] && mktemp -p "$XDG_RUNTIME_DIR" -d -t gamescope.XXXXXXX)"
socket="${tmpdir:+$tmpdir/startup.socket}"
stats="${tmpdir:+$tmpdir/stats.pipe}"
# Fail early if we don't have a proper runtime directory setup
# shellcheck disable=SC2031 # (broken warning)
if [[ -z $tmpdir || -z ${XDG_RUNTIME_DIR+x} ]]; then
echo >&2 "!! Failed to find run directory in which to create stats session sockets (is \$XDG_RUNTIME_DIR set?)"
exit 0
fi
export GAMESCOPE_STATS="$stats"
mkfifo -- "$stats"
mkfifo -- "$socket"
# Initially write no_display to our config file
# so we don't get mangoapp showing up before Steam initializes
# on OOBE and stuff.
mkdir -p "$(dirname "$MANGOHUD_CONFIGFILE")"
echo "no_display" > "$MANGOHUD_CONFIGFILE"
# Input method support if present
if command -v ibus-daemon > /dev/null; then
ibus-daemon -d -r --panel=disable --emoji-extension=disable
fi
gamescope -H 1080 -e \
--fullscreen \
--xwayland-count 2 \
--cursor-hotspot 5,3 \
--cursor "$HOME/.local/share/Steam/tenfoot/resource/images/cursors/arrow.png" \
--default-touch-mode 4 \
-R "$socket" -T "$stats" \
--immediate-flips > "${HOME}"/.gamescope-stdout.log 2>&1 &
gamescope_pid="$!"
if read -r -t 3 response_x_display response_wl_display <> "$socket"; then
export DISPLAY="$response_x_display"
export GAMESCOPE_WAYLAND_DISPLAY="$response_wl_display"
# We're done!
else
echo "failed to get DISPLAY and GAMESCOPE_WAYLAND_DISPLAY"
kill -9 "$gamescope_pid"
exit 0
fi
# If we have mangoapp binary start it
if command -v mangoapp > /dev/null; then
mangoapp > "${HOME}"/.mangoapp-stdout.log 2>&1 &
mangoapp_pid="$!"
fi
steam -steamos3 -steampal -steamdeck -gamepadui > "${HOME}"/.steam-stdout.log 2>&1
kill -9 $mangoapp_pid
pkill -9 -f ibus-daemon
Bios: can change boot order of SSD so Linux is default (Boot -> UEFI NVME Drive BBS Priorities)
We won't be able to use device encryption with Windows 11 Home because we need Secure Boot off https://answers.microsoft.com/en-us/windows/forum/all/device-encryption-setting-in-windows-11-home-has/43fc2f3b-8c75-4c12-ae01-741433f5fb0f
For now leave it as non-encrypted and focus on Linux.
timeshift
will work with btrfs mode
Install xdg-desktop-portal-kde
and reboot (Maybe logout and login would work)
https://ivonblog.com/posts/linux-bottles-install-line/
The guide worked on my Artch linux install but kept stuck on "Launching LINE" screen this time.
Successfully switched to lutris instead.
- Create game (Add locally installed game)
- Use Wine-GE 8.x
- Open bash terminal
- winetricks cjkfonts vcrun2012 d3dcompiler_46
- wine "/path/to/LineInst.exe" (Linux path not C:...)
- Edit -> Game options -> Executable:
/path/to/wine_prefix/drive_c/users/{username}/AppData/Local/bin/LineLauncher.exe
- Optional: set DPI to
150
(150%) as the screen is quite small
- Optional: set DPI to
If fcitx5 is not working, test in xterm
first. Most likely it's not working there too.
Make sure /etc/environment is updated with:
XMODIFIERS=@im=fcitx
Ref: fcitx/fcitx5#262
It is skipped if some packages aren't selected during install:
sudo pacman -S discover
Install packagekit-qt5
if you'd like to update pacman packages in discover store
sudo nvim /etc/kernel/cmdline
and add this to the last linekernel_cmdline+=" splash quiet "
yay -S plymouth-git
- (Not sure if it's required)
sudo dracut --uefi
sudo reinstall-kernels
https://forum.endeavouros.com/t/how-do-i-make-plymouth-work-on-my-system/41258 https://forum.endeavouros.com/t/plymouth-not-working-with-systemd-boot-and-dracut-on-luks-encrypted-devices/43493
https://forum.endeavouros.com/t/tip-enable-colour-emojis/6210
Only installed noto-fonts-emoji
for now
Make sure dracut is 59 up and systemd-boot is 255 up
https://forum.endeavouros.com/t/hibernation-stops-working-after-last-upgrade/48817/4 https://bbs.archlinux.org/viewtopic.php?id=290450
I selected swapfile during installation, but swap file is only 512MB
# Turn off swap
sudo swapoff -a
sudo btrfs filesystem mkswapfile --size 64G /swap/swapfile_64G
sudo swapon /swap/swapfile_64G
-
Edit /etc/fstab to use the new swap file
-
Apply dracut patch mentioned in the linnk (should be fixed in 60+?)
create /etc/dracut.conf.d/resume.conf
add_dracutmodules+=" resume "
install_items+=" /usr/lib/systemd/system/systemd-hibernate-resume.service "
-
Run
sudo dracut-rebuild
andsudo reinstall-kernels
to rebuild boot image -
Test with
systemctl hibernate
KDE should have Hibernate
option on boot menu after these. If not, try reboot?
Brand new install on UM790Pro, hitting this error:
❯ flatpak run --command=syncthing me.kozec.syncthingtk --logfile syncthing.log --no-browser
[monitor] 2024/01/12 20:50:03 INFO: Log output saved to file "/home/fsworld009/syncthing.log"
[start] 2024/01/12 20:50:03 INFO: syncthing v1.23.4 "Fermium Flea" (go1.20.3 linux-amd64) [email protected] 2023-04-28 05:25:02 UTC [noupgrade]
[OQKKP] 2024/01/12 20:50:03 INFO: My ID: ***
[OQKKP] 2024/01/12 20:50:04 INFO: Single thread SHA256 performance is 2448 MB/s using minio/sha256-simd (696 MB/s using crypto/sha256).
[OQKKP] 2024/01/12 20:50:04 INFO: Hashing performance is 1559.07 MB/s
[OQKKP] 2024/01/12 20:50:04 INFO: Detected upgrade from v1.27.2 to v1.23.4
[OQKKP] 2024/01/12 20:50:04 INFO: Overall send rate is unlimited, receive rate is unlimited
[OQKKP] 2024/01/12 20:50:04 INFO: Relay listener (dynamic+https://relays.syncthing.net/endpoint) starting
[OQKKP] 2024/01/12 20:50:04 INFO: Ready to synchronize "Default Folder" (default) (sendreceive)
[OQKKP] 2024/01/12 20:50:04 INFO: Using discovery mechanism: global discovery server https://discovery.syncthing.net/v2/?noannounce&id=*****
[OQKKP] 2024/01/12 20:50:04 INFO: Using discovery mechanism: global discovery server https://discovery-v4.syncthing.net/v2/?nolookup&id=*****
[OQKKP] 2024/01/12 20:50:04 INFO: Using discovery mechanism: global discovery server https://discovery-v6.syncthing.net/v2/?nolookup&id=*****
[OQKKP] 2024/01/12 20:50:04 INFO: Using discovery mechanism: IPv4 local broadcast discovery on port 21027
[OQKKP] 2024/01/12 20:50:04 INFO: Using discovery mechanism: IPv6 local multicast discovery on address [ff12::8384]:21027
[OQKKP] 2024/01/12 20:50:04 INFO: QUIC listener ([::]:22000) starting
[OQKKP] 2024/01/12 20:50:04 INFO: Completed initial scan of sendreceive folder "Default Folder" (default)
[OQKKP] 2024/01/12 20:50:04 INFO: GUI and API listening on 127.0.0.1:8384
[OQKKP] 2024/01/12 20:50:04 INFO: Access the GUI via the following URL: http://127.0.0.1:8384/
[OQKKP] 2024/01/12 20:50:04 INFO: TCP listener ([::]:22000) starting
[OQKKP] 2024/01/12 20:50:04 INFO: My name is "fsworld009-new"
It exits without error code afterwards. On FW13 it seems fine. Reason is unknown.
Arch native syncthing
or flatpak Syncthingy
works fine. Maybe try again later when moving to FW 16.
Change to use Syncthingy for now.
Config paths:
- ~/.local/state/syncthing
- ~/.var/app/me.kozec.syncthingtk/config/syncthing/
- ~/.var/app/com.github.zocker_160.SyncThingy/.local/state/syncthing/
❯ sudo dolphin
Running Dolphin with sudo is not supported as it can cause bugs and expose you to security vulnerabilities. Instead, install the `kio-admin` package from your distro and use it to manage root-owned locations by right-clicking on them and selecting "Open as Administrator".
~ as 🧙 took 12s
❯ sudo pacman -S kio-admin
Main note https://gist.github.com/fsworld009/cb9a402ede96fa6087a2562d987e82be#20231020
==> ERROR: 'pacman' failed to install missing dependencies.
==> Missing dependencies:
-> asio
-> cef-minimal-obs-bin
-> cmake
-> nlohmann-json
-> swig
-> vlc
-> websocketpp
need to yay -S cef-minimal-obs-bin
2%] Building C object libobs/CMakeFiles/libobs.dir/media-io/media-remux.c.o
/home/fsworld009/projects/obs-studio-git/src/obs-studio-git/libobs/media-io/media-remux.c: In function ‘init_output’:
/home/fsworld009/projects/obs-studio-git/src/obs-studio-git/libobs/media-io/media-remux.c:99:17: error: ‘av_stream_get_side_data’ is deprecated [-Werror=deprecated-declarations]
99 | const uint8_t *const content_src = av_stream_get_side_data(
| ^~~~~
In file included from /home/fsworld009/projects/obs-studio-git/src/obs-studio-git/libobs/media-io/media-remux.c:24:
/usr/include/libavformat/avformat.h:1917:10: note: declared here
1917 | uint8_t *av_stream_get_side_data(const AVStream *stream,
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/fsworld009/projects/obs-studio-git/src/obs-studio-git/libobs/media-io/media-remux.c:103:25: error: ‘av_stream_new_side_data’ is deprecated [-Werror=deprecated-declarations]
103 | uint8_t *const content_dst = av_stream_new_side_data(
| ^~~~~~~
/usr/include/libavformat/avformat.h:1902:10: note: declared here
1902 | uint8_t *av_stream_new_side_data(AVStream *stream,
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/fsworld009/projects/obs-studio-git/src/obs-studio-git/libobs/media-io/media-remux.c:115:17: error: ‘av_stream_get_side_data’ is deprecated [-Werror=deprecated-declarations]
115 | const uint8_t *const mastering_src = av_stream_get_side_data(
| ^~~~~
/usr/include/libavformat/avformat.h:1917:10: note: declared here
1917 | uint8_t *av_stream_get_side_data(const AVStream *stream,
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/fsworld009/projects/obs-studio-git/src/obs-studio-git/libobs/media-io/media-remux.c:119:25: error: ‘av_stream_new_side_data’ is deprecated [-Werror=deprecated-declarations]
119 | uint8_t *const mastering_dst = av_stream_new_side_data(
| ^~~~~~~
/usr/include/libavformat/avformat.h:1902:10: note: declared here
1902 | uint8_t *av_stream_new_side_data(AVStream *stream,
| ^~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[2]: *** [libobs/CMakeFiles/libobs.dir/build.make:762: libobs/CMakeFiles/libobs.dir/media-io/media-remux.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1226: libobs/CMakeFiles/libobs.dir/all] Error 2
make: *** [Makefile:156: all] Error 2
Latest git build works fine, guess we need to rebase and rebuild again. For now, use previous build I had in backup https://github.com/fsworld009/obs-studio/releases/tag/30.0.0-rc1-projector-patches
GC553 works fine with env var and there is no audio lag out of box, guess eos did a good job to tweak pipewire configs.
Previous setup still works, but need to yay -S gamescope-session-steam
and login to that session first to do first time login.
Otherwise will stuck in Steam Deck initial setup screen and get error after internet tab.
My GPD Win4 install was done without swap, recreated swap subvolume and file:
sudo mkdir /mnt/root
sudo mount -t btrfs /dev/mapper/luks-{UUID} /mnt/root
sudo btrfs subvolume create /mnt/root/@swap
# create swap file
sudo btrfs filesystem mkswapfile --size 32 /swap/swapfile_32
# Copy fstab from other installs
/dev/mapper/luks-{UUID} btrfs subvol=/@swap,noatime 0 0
/swap/swapfile_32 swap swap defaults 0 0
# Reboot, verify
swapon
❯ mangoapp
Glfw Error 65550: X11: Platform not initialized
Glfw Error 65550: X11: Platform not initialized
Glfw Error 65550: X11: Platform not initialized
Glfw Error 65550: X11: Platform not initialized
This is because glfw-x11
and glfw-wayland
has now merged into one package glfw. Need to run with XDG_SESSION_TYPE=x11
under Wayland session.
This is an issue with 3.14.0 ValveSoftware/gamescope#1172
Need to downgrade to 3.13.19 for now https://archive.archlinux.org/packages/g/gamescope/
sudo pacman -U gamescope-3.13.19-1-x86_64.pkg.tar.zst
Updated script with mangoapp fix as well as porting some env vars from the script on Steam Deck
#!/bin/sh
set -v
# Enable OBS Capture
export OBS_VKCAPTURE=1
## This option would break mongohud in Stem and games
# Enable Mangoapp
export STEAM_USE_MANGOAPP=1
export MANGOHUD_CONFIGFILE=$(mktemp /tmp/mangohud.XXXXXXXX)
#https://gist.github.com/DoomedSouls/e4015dffc08963a57c6adf3066f5a486
# Disable automatic audio device switching in steam, now handled by wireplumber
export STEAM_DISABLE_AUDIO_DEVICE_SWITCHING=1
# Enable support for xwayland isolation per-game in Steam
export STEAM_MULTIPLE_XWAYLANDS=1
# We have the Mesa integration for the fifo-based dynamic fps-limiter
export STEAM_GAMESCOPE_DYNAMIC_FPSLIMITER=1
# Don't wait for buffers to idle on the client side before sending them to gamescope
export vk_xwayland_wait_ready=false
# Scaling support
export STEAM_GAMESCOPE_FANCY_SCALING_SUPPORT=1
# Support for gamescope tearing with GAMESCOPE_ALLOW_TEARING atom
export STEAM_GAMESCOPE_HAS_TEARING_SUPPORT=1
# Enable tearing controls in steam
export STEAM_GAMESCOPE_TEARING_SUPPORTED=1
# We no longer need to set GAMESCOPE_EXTERNAL_OVERLAY from steam, mangoapp now does it itself
export STEAM_DISABLE_MANGOAPP_ATOM_WORKAROUND=1
# Enable horizontal mangoapp bar
export STEAM_MANGOAPP_HORIZONTAL_SUPPORTED=1
# Let steam know it can unmount drives without superuser privileges
export STEAM_ALLOW_DRIVE_UNMOUNT=1
# Don't wait for buffers to idle on the client side before sending them to gamescope
export vk_xwayland_wait_ready=false
# Set input method modules for Qt/GTK that will show the Steam keyboard
export QT_IM_MODULE=steam
export GTK_IM_MODULE=Steam
# Make Qt apps use the styling and behaviour of the desktop session
# This fixes some missing icons and unreadable text with Qt desktop apps in gamescope
export QT_QPA_PLATFORM_THEME=kde
# To play nice with the short term callback-based limiter for now
export GAMESCOPE_LIMITER_FILE=$(mktemp /tmp/gamescope-limiter.XXXXXXXX)
# Create run directory file for startup and stats sockets
# shellcheck disable=SC2030 # (broken warning)
tmpdir="$([[ -n ${XDG_RUNTIME_DIR+x} ]] && mktemp -p "$XDG_RUNTIME_DIR" -d -t gamescope.XXXXXXX)"
socket="${tmpdir:+$tmpdir/startup.socket}"
stats="${tmpdir:+$tmpdir/stats.pipe}"
# Fail early if we don't have a proper runtime directory setup
# shellcheck disable=SC2031 # (broken warning)
if [[ -z $tmpdir || -z ${XDG_RUNTIME_DIR+x} ]]; then
echo >&2 "!! Failed to find run directory in which to create stats session sockets (is \$XDG_RUNTIME_DIR set?)"
exit 0
fi
export GAMESCOPE_STATS="$stats"
mkfifo -- "$stats"
mkfifo -- "$socket"
# Initially write no_display to our config file
# so we don't get mangoapp showing up before Steam initializes
# on OOBE and stuff.
mkdir -p "$(dirname "$MANGOHUD_CONFIGFILE")"
echo "no_display" > "$MANGOHUD_CONFIGFILE"
# Input method support if present
if command -v ibus-daemon > /dev/null; then
ibus-daemon -d -r --panel=disable --emoji-extension=disable
fi
export XDG_SESSION_TYPE=x11
gamescope -H 1080 -e \
--generate-drm-mode fixed \
--xwayland-count 2 \
--cursor-hotspot 5,3 \
--cursor "$HOME/.local/share/Steam/tenfoot/resource/images/cursors/arrow.png" \
--hide-cursor-delay 3000 \
--max-scale 2 \
--default-touch-mode 4 \
--fade-out-duration 200 \
-R "$socket" -T "$stats" \
-O '*',eDP-1 \
> "${HOME}"/.gamescope-stdout.log 2>&1 &
gamescope_pid="$!"
if read -r -t 3 response_x_display response_wl_display <> "$socket"; then
export DISPLAY="$response_x_display"
export GAMESCOPE_WAYLAND_DISPLAY="$response_wl_display"
# We're done!
else
echo "failed to get DISPLAY and GAMESCOPE_WAYLAND_DISPLAY"
kill -9 "$gamescope_pid"
exit 0
fi
# If we have mangoapp binary start it
if command -v mangoapp > /dev/null; then
mangoapp > "${HOME}"/.mangoapp-stdout.log 2>&1 &
mangoapp_pid="$!"
fi
steam -steamos3 -steampal -steamdeck -gamepadui > "${HOME}"/.steam-stdout.log 2>&1
kill -9 $mangoapp_pid
pkill -9 -f ibus-daemon
Main repo was 42GiB and there's mmore repo to be cloned, didn't finish all downloading after leaving update in 2 hours
Solution: yay -Rs electron25
Not sure why this was installed, could have been an old dependency of Zoom
https://bbs.archlinux.org/viewtopic.php?id=287529
Use qt6-multimedia-ffmpeg
Official app doesn't support screenshare + audio, and also seems don't support screenshare at all in Wayland?
Alternatives:
Deal breaker: only allow entire monitor share, no per-app share support
Also, unable to enable tray icon, the discord-screenaudio
settings is not presented as seen in maltejur/discord-screenaudio#113
Seems working, didn't verifty if audio actually works (need another account to watch my own sharing to confirm)
Issue: fcitx not working https://github.com/Vencord/Vesktop/issues/420
Confirmed current build (1.5.1) can enable fcitx with the following command
/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=startvesktop dev.vencord.Vesktop --enable-wayland-ime
To enable passing --enable-wayland-ime
by default, follow https://www.reddit.com/r/Fedora/comments/s2c9in/how_do_i_always_run_a_flatpak_application_with/
cp /var/lib/flatpak/app/dev.vencord.Vesktop/current/active/export/share/applications/dev.vencord.Vesktop.desktop ~/.local/share/applications/
Edit the copied .desktop file and update Exec
line:
Exec=/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=startvesktop dev.vencord.Vesktop --enable-wayland-ime
Built-in option don't work with Flatpak install for now https://github.com/Vencord/Vesktop/issues/273 need to add the app to KDE System Settings -> Autostart -> Vesktop
Check brave://gpu/
, if Vulkan is not enabled, go to brave://flags
to turn it on.
2024/12/10: Currently the option is hidden by mistake, need to enable Temporarily unexpire M130 flags
flag as a workaround
- https://www.reddit.com/r/chrome/comments/1gqi64j/vulkan_not_present_in_chromeflags/
- https://community.brave.com/t/vulkan-support-missing-in-flags-on-linux/581421
Switched to Framework 16 which has igpu and dgpu onboarded.
For games that don't use dgpu automatically, need to manually set env var
DRI_PRIME=1
# Some games have to use this?
DXVK_FILTER_DEVICE_NAME="AMD Radeon RX 7700S (RADV NAVI33)"
more info: https://community.frame.work/t/responded-dri-prime-not-correctly-using-the-dgpu-in-some-games/45912
Ideally it would be better to run steam with these variables, however it doesn't work on Steam client
The gamescope + SteamOS client mode combination also doesn't work,as the games would run in a separate window instead of inside the gamescope (Probably because gamescope was created under igpu).
Update: Found that I need to close Lutris main program before launching Lutris games so that the game would be launched within gamescope.
- need to update launch script with
gamescope -W 1920 -H 1080 steam...
, otherwise the gamescope is in 16:10 ratio. I suppose this is because FW16 built-in screen is 16:10. - For Lutris games, go to Lutris preferences -> Global options, change GPU to dGPU
- Steam: change game options: change resolution to
Native
. Most games should pick dGPU automatically, if not, add the env vars mentioned above in launch options.
Step 3. need to be done on every single game, not sure if there's a way to default to those options.
Install gamescope and mangohud
flatpak install org.freedesktop.Platform.VulkanLayer.MangoHud
flatpak install org.freedesktop.Platform.VulkanLayer.gamescope
Restart Lutris, go to Preferences -> System, should see MangoHud and Gamescope as enabled
If not, could be Lutris is looking for a specific Mangohud & gamescope version, but not sure how to check
Go to Preferences -> Global options (default for all games) or game configuration -> System options, turn on FPS Counter (Mangohud)
to enable MangoHud
You can also configure Gamescope in the same places.
https://github.com/flightlessmango/MangoHud?tab=readme-ov-file#hud-configuration
Per https://github.com/flathub/org.freedesktop.Platform.VulkanLayer.MangoHud it should be possible to create config file, but it doesn't work for me, the default layout is always used
Also tried some flatpak override commands:
sudo flatpak override --filesystem=xdg-config/MangoHud:ro
(Ref: flightlessmango/MangoHud#972
And tried to add this filesystem override to Lutris app only, didn't work.
Currently I can only confiure it via MANGOHUD_CONFIG
env var
In Lutris you can configure env var globally so this is probably fine for now.
Create a config file /etc/sddm.conf.d/10-wayland.config
to switch SDDM to Wayland (Default is X11)
[General]
GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell
[Wayland]
CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1
However, it doesn't work for monitors connecting to dGPU, only for iGPU ones.
https://aur.archlinux.org/packages/obs-studio-git
- need new dependencies 'uthash', 'ffnvcodec-headers-12-1' from yay
- was hitting this error in
plugins/obs-filters/rnnoise/src/denoise.c
‘calloc’ sizes specified with ‘sizeof’ in the earlier argument and not in the later argument
(I didn't save the full compiler message) for both yay install and my local build.
However, local build went through after deleting all local files on my local obs-studio-git
folder and rebooting.
sudo pacman -S docker
By default docker only works with sudo, need to follow these guides to solve permission issue:
- https://stackoverflow.com/a/48957722
- https://stackoverflow.com/a/51362528
- https://wiki.archlinux.org/title/docker#Daemon_socket
- Fix user group
# create user group docker and add self into it sudo groupadd docker sudo usermod -aG docker $USER # have group access for this shell session. To have it permanatelly, need to logout and login newgrp docker
- Fix systemd config
# add group access to socket sudo chgrp docker /lib/systemd/system/docker.socket sudo chmod g+w /lib/systemd/system/docker.socket # tell the daemon use default unix socket path sudo mkdir /etc/systemd/system/docker.service.d # Use the content below sudo nvim /etc/systemd/system/docker.service.d/docker.conf # Save the following content systemctl start docker # Should be able to connect without root now docker info
- docker.conf
[Service] ExecStart= ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2376
Some plugins don't work with current Steam client due to front-end library update
See jfernandez/ControllerTools#43
Plugin authors need to bump the dependency and submit version bump to https://github.com/SteamDeckHomebrew/decky-plugin-database/pulls . Decky loader will only see new versions after database version bump PR is merged.
Currently some plugins are fixed but aren't bumped in database repo yet, so trying to manually build them
Plugin install folder: ~/homebrew/plugins
Somehow all folders are readonly, need to give write permissions first
UI are all built in the same way for all projects
nvm install --lts # 20 by the time of writing
nvm use --lts
npm install -g pnpm
# Install dependencies
pnpm i
# dist/index.js would be the output
npm run build
# Copy dist/index.js to ~/homebrew/plugins/{name}/dist/index.js to update UI
Backend dependency: varies for each project But the common practice is to use docker to run holoiso and build them. (See Docker section above)
UI only plugin. The release tag 1.1.3
already have a zip so you can just unzip that to plugin folder.
https://github.com/davocarli/deck-roulette/releases/tag/release
Note: Only the frontend is broken so you only need to update dist
, but as a practice I also built backend and confirmed
the new build works.
# Build backends
bash scripts/build_docker_image.sh
bash backend/run-docker-image.sh
# Copy dist to ~/homebrew/plugins/ControllerTools/dist
# Copy backend/out/backend to ~/homebrew/plugins/ControllerTools/bin/backend
No isse for this plugin, but it doesn't record for my EndeavourOS setup
Required Dependencies:
sudo pacman -S gstreamer libva-mesa-driver python jq
Use the current main branch main.py with following patches:
- Change
in_gamemode
condition since we are not running gamescope-sessionif "gamescope" in " ".join(child.cmdline()):
- Fix video src: need to specify pipewiresrc path, which is the gamescope window running steam + games.
Patch this in
start_capturing
:# Video Pipeline path_id = get_cmd_output('pw-dump | jq \'.[] | select(.info.props.["node.name"] == "gamescope") | .id\'') if not self._rolling: videoPipeline = f"pipewiresrc path={path_id} do-timestamp=true ! vaapipostproc ! queue ! vaapih264enc ! h264parse ! {muxer} name=sink !" else: videoPipeline = f"pipewiresrc path={path_id} do-timestamp=true ! vaapipostproc ! queue ! vaapih264enc ! h264parse !"
Reload plugin and restart Replay Mode
~/homebrew/log/decky-recorder
Traceback (most recent call last):
File "/home/fsworld009/homebrew/plugins/decky-recorder/main.py", line 95, in watchdog
in_gm = in_gamemode()
File "/home/fsworld009/homebrew/plugins/decky-recorder/main.py", line 59, in in_gamemode
for child in psutil.process_iter():
NameError: name 'psutil' is not defined
2024-06-09 22:17:52,174 - ERROR - watchdog
saw
sys.path = [str(DEPSPATH / "psutil")] + sys.path
import psutil
and tried to print the path, but it is resolved correctly after adding log, no idea why
2024-06-10 01:04:43,671 - WARNING - Left gamemode but recording was still running, killing capture
Hard code (See above)in_gamemode
to return true.
gst is launched but defuncted
❯ ps aux | grep gst
fsworld+ 193463 0.7 0.0 0 0 ? Z 00:55 0:01 [gst-launch-1.0] <defunct>
copying the command from log (Command: GST_VAAPI_ALL_DRIVERS=1 ...), run it manually, and get this output
WARNING: erroneous pipeline: no element "vaapipostproc"
Program ends immediately
Inspect this element
❯ gst-inspect-1.0 vaapipostproc
Xlib: extension "DRI2" missing on display ":1".
Xlib: extension "DRI2" missing on display ":1".
No such element or plugin 'vaapipostproc'
while this command is successful in steamdeck
solution: sudo pacman -S libva-mesa-driver
Now the command is successful
Same issue with gst-inspect-1.0 pipewire
, need to install gst-plugin-pipewire
"Too early to record another clip""
Currently stuck in this error, there was one successful recording but the video source is my capture card, not screen.
Sync gstreamer version
SDH-Stewardship/decky-recorder-fork#25
FROM ghcr.io/steamdeckhomebrew/holo-base:latest
#RUN mkdir /pacman && pacman -Sydd --noconfirm --root /pacman --dbpath /var/lib/pacman gstreamer-vaapi gst-plugin-pipewire gst-plugins-bad gst-plugins-bad-libs gst-plugins-good
RUN mkdir /pacman && pacman -Udd --noconfirm --root /pacman --dbpath /var/lib/pacman \
https://archive.archlinux.org/packages/g/gstreamer-vaapi/gstreamer-vaapi-1.24.3-1-x86_64.pkg.tar.zst \
https://archive.archlinux.org/packages/g/gst-plugins-bad-libs/gst-plugins-bad-libs-1.24.3-1-x86_64.pkg.tar.zst \
https://archive.archlinux.org/packages/g/gst-plugins-bad/gst-plugins-bad-1.24.3-1-x86_64.pkg.tar.zst \
https://archive.archlinux.org/packages/g/gst-plugins-good/gst-plugins-good-1.24.3-1-x86_64.pkg.tar.zst \
https://archive.archlinux.org/packages/g/gst-plugin-pipewire/gst-plugin-pipewire-1%3A1.0.7-2-x86_64.pkg.tar.zst
#RUN cd /pacman/usr/lib/gstreamer-1.0/ && rm libgstneonhttpsrc.so libgstfaad.so libgstcacasink.so libgstaasink.so libgstspandsp.so libgstgme.so libgstteletext.so libgstshout2.so libgstchromaprint.so libgstkate.so libgstwildmidi.so libgstmusepack.so libgstmplex.so libgsttimecode.so libgstavtp.so libgstwebrtc.so libgsttwolame.so libgstmpeg2enc.so libgstopenmpt.so libgstdtsdec.so libgstzbar.so libgstresindvd.so libgstdc1394.so libgstsoundtouch.so libgstmicrodns.so libgstmpg123.so libgstrtmp.so libgstopenexr.so libgstfluidsynthmidi.so libgstsvthevcenc.so libgstwavpack.so libgstde265.so libgstsrtp.so libgstladspa.so libgstdv.so
RUN cd /pacman/usr/lib/gstreamer-1.0/ && rm -f libgstneonhttpsrc.so libgstfaad.so libgstcacasink.so libgstaasink.so libgstspandsp.so libgstgme.so libgstteletext.so libgstshout2.so libgstchromaprint.so libgstkate.so libgstwildmidi.so libgstmusepack.so libgstmplex.so libgsttimecode.so libgstavtp.so libgstwebrtc.so libgsttwolame.so libgstmpeg2enc.so libgstopenmpt.so libgstdtsdec.so libgstzbar.so libgstresindvd.so libgstdc1394.so libgstsoundtouch.so libgstmicrodns.so libgstmpg123.so libgstrtmp.so libgstopenexr.so libgstfluidsynthmidi.so libgstsvthevcenc.so libgstwavpack.so libgstde265.so libgstsrtp.so libgstladspa.so libgstdv.so
RUN pacman -Sydd --noconfirm --dbpath /var/lib/pacman python-pip
RUN pip3 install psutil --target=/psutil
ENTRYPOINT [ "/backend/entrypoint.sh" ]
- Run
cd backend && make all
to build - Copy
backend/out
to~/homebrew/decky-recorder/bin
This causes the record to fail (gst command results in status).
Building frontend from current master, the index.js won't load, not sure the reason. (Readme says Node version is 18, could be a reason)
After latest system upgrade, I can no longer downgrade gamescope due to dependency conflict.
There seems to be no screenshot issues anymore
In GPD Win4 I've found that it doesn't render anything, later on found it works if I turn off FSR.
Searched around and confirmed FSR+Fullscreen is the issue ValveSoftware/gamescope#1237
The issue thread suggested using --backend sdl
but it crashed on many games from my testing.
Hence for now we cannot use FSR with fullscreen. If the game has been set to use FSR in steam client and it's not possible to bring up the menu to turn it off due to game not rendering, the workaround is to leave gamescope fullscreen with Win+F to turn it off.
Also the FSR seems picking up wrong resolution if we set scaling in descktop setting.
For a 1080p screen with 150% scale, and running game in 720p, I have to use gamescope -H 477
in order to get FSR rendering. Higher height like 495 won't work.
I assume it's because 4771.5 < 720 while 4951.5 > 720
BizHawk Linux native build
yay -S bizhawk
Need to fix user group and folder permission based on https://aur.archlinux.org/packages/bizhawk-bin
sudo usermod -a -G games fsworld009
sudo chown fsworld009 /opt/bizhawk -R
Might need to reboot to take effect?
Confirmed the Lua script work (RMX4 Boost). Not compatible with VBA-RR scripts.
If we want this on Steam Deck, probably need to use distrobox
Dark theme doesn't work well with mono mono/mono#9998
GTK_DATA_PREFIX= bizhawk
# give apps permission to read theme
sudo flatpak override --filesystem=xdg-config/gtk-3.0:ro
sudo flatpak override --filesystem=xdg-config/gtk-4.0:ro
sudo flatpak override --filesystem=xdg-data/icons:ro
sudo flatpak override --filesystem=xdg-config/vkBasalt:ro
# seems the corresponding theme set in KDE config need to be installed in flatpak as well, e.g.
flatpak install org.gtk.Gtk3theme.adw-gtk3-dark
flatpak install org.gtk.Gtk3theme.adw-gtk3
Alternatively force theme for this app by
GTK_THEME=adw-gtk3-dark
Note: prerequisite to install apps to user space
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Plain bopomofo is broken after system upgrade, switched to Flatpak fcitx5 for now
- Set virtual keyboard to None
sudo pacman -Rs fcitx5 fcitx5-configtool fcitx5-mcbopomofo-git fcitx5-mozc fcitx5-qt
- install fcitx5 from Discover, then reselect virtual keyboard
- Right click keyboard icon on bottom right to configure IMEs and shortcuts
https://www.reddit.com/r/linuxquestions/comments/eznjzs/v4l2_vs_vaapi_vs_vdpau/ https://forum.endeavouros.com/t/random-crashes-and-freezes-with-kde-plasma/58760/22
Installing these may help resolve random crash
mesa
lib32-mesa
vulkan-radeon
lib32-vulkan-radeon
# For accelerated video (VA-API) (VDPAU)
vdpau
libva-mesa-driver
lib32-libva-mesa-driver
mesa-vdpau
lib32-mesa-vdpau
# utils
vdpauinfo libva-utils
Another possible solution: https://unix.stackexchange.com/questions/756281/kernel-6-5-2-seems-to-have-amdgpu-crash-on-no-retry-page-fault
set kernel param amdgpu.mcbp=0
Seems dracut-build
is not necessary when the changes require reinstall-kernels
https://forum.endeavouros.com/t/system-wont-boot-unless-i-select-fallback/42183/6