mirror of
https://github.com/basecamp/omarchy.git
synced 2026-02-17 15:25:37 +00:00
55 lines
1.8 KiB
Bash
Executable File
55 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Toggle dedicated vs integrated GPU mode via supergfxd (for hybrid gpu laptops, like Asus G14).
|
|
# Requires reboot to take effect.
|
|
|
|
# Ensure supergfxctl has been installed
|
|
if omarchy-cmd-missing supergfxctl; then
|
|
omarchy-pkg-add supergfxctl
|
|
sudo systemctl enable supergfxd
|
|
sudo systemctl start supergfxd
|
|
|
|
# Needed to deal with restoring to sleep where going through VFIO first means we don't need to reboot.
|
|
sudo sed -i "s/\"vfio_enable\": \".*\"/\"vfio_enable\": true/" /etc/supergfxd.conf
|
|
fi
|
|
|
|
gpu_mode=$(supergfxctl -g)
|
|
|
|
case "$gpu_mode" in
|
|
"Integrated")
|
|
if gum confirm "Enable dedicated GPU and reboot?"; then
|
|
# Switch to hybrid mode
|
|
sudo sed -i "s/\"mode\": \".*\"/\"mode\": \"Hybrid\"/" /etc/supergfxd.conf
|
|
|
|
# Let hybrid mode be the default after system sleep
|
|
sudo rm -rf /usr/lib/systemd/system-sleep/force-igpu
|
|
|
|
# Remove the startup delay override (not needed for Hybrid mode)
|
|
sudo rm -rf /etc/systemd/system/supergfxd.service.d/delay-start.conf
|
|
|
|
omarchy-cmd-reboot
|
|
fi
|
|
;;
|
|
"Hybrid")
|
|
if gum confirm "Use only integrated GPU and reboot?"; then
|
|
# Switch to integrated mode
|
|
sudo sed -i "s/\"mode\": \".*\"/\"mode\": \"Integrated\"/" /etc/supergfxd.conf
|
|
|
|
# Force igpu mode after system sleep (or dgpu could get activated)
|
|
sudo mkdir -p /usr/lib/systemd/system-sleep
|
|
sudo cp -p $OMARCHY_PATH/default/systemd/system-sleep/force-igpu /usr/lib/systemd/system-sleep/
|
|
|
|
# Delay supergfxd startup to avoid race condition with display manager
|
|
# that can cause system freeze when booting in Integrated mode
|
|
sudo mkdir -p /etc/systemd/system/supergfxd.service.d
|
|
sudo cp -p $OMARCHY_PATH/default/systemd/system/supergfxd.service.d/delay-start.conf /etc/systemd/system/supergfxd.service.d/
|
|
|
|
omarchy-cmd-reboot
|
|
fi
|
|
;;
|
|
*)
|
|
echo "Hybrid GPU not found or in unknown mode."
|
|
exit 1
|
|
;;
|
|
esac
|