Setting up LACT on OpenSUSE tumbleweed

I would like to run LACT to limit my laptop GPU frequency, and thus let it stay cooler.

Terminal logs
## zypper install
arthur@laptop:~> sudo zypper install lact
[sudo] password for root: 
Refreshing service 'openSUSE'.
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
  lact

1 new package to install.

Package download size:     3.7 MiB

Package install size change:
              |      10.5 MiB  required by packages that will be installed
    10.5 MiB  |  -      0 B    released by packages that will be removed

Backend:  classic_rpmtrans
Continue? [y/n/v/...? shows all options] (y): y
Preloading: lact-0.9.0-1.1.x86_64.rpm [done]
Preload finished. [success (13.7 KiB/s) ] ....................................................[done]
Retrieving: lact-0.9.0-1.1.x86_64 (Main Repository (OSS))                       (1/1),   3.7 MiB    

Checking for file conflicts: .................................................................[done]
/usr/bin/systemd-sysusers --replace=/usr/lib/sysusers.d/lact-user.conf -
warning: /etc/lact/config.yaml created as /etc/lact/config.yaml.rpmnew
Removed '/etc/systemd/system/multi-user.target.wants/lactd.service'.
(1/1) Installing: lact-0.9.0-1.1.x86_64 ......................................................[done]
Running post-transaction scripts .............................................................[done]


arthur@laptop:~> lact
2026-06-18T21:31:33.703033Z  INFO i18n_embed::requester: Current Locale: [LanguageIdentifier { language: Language(Some("en")), script: None, region: Some(Region("US")), variants: None }]
2026-06-18T21:31:33.703097Z  INFO i18n_embed: Selecting translations for domain "lact_gui"
2026-06-18T21:31:33.703537Z  INFO i18n_embed::requester: Current Locale: [LanguageIdentifier { language: Language(Some("en")), script: None, region: Some(Region("US")), variants: None }]
2026-06-18T21:31:33.703557Z  INFO i18n_embed: Selecting translations for domain "lact_schema"

(process:76989): Gdk-WARNING **: 23:31:33.757: Cannot get portal org.freedesktop.portal.Settings version: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Could not activate remote peer 'org.freedesktop.portal.Desktop': startup job failed

(process:76989): Adwaita-WARNING **: 23:31:33.833: Using GtkSettings:gtk-application-prefer-dark-theme with libadwaita is unsupported. Please use AdwStyleManager:color-scheme instead.

(lact:76989): Gdk-WARNING **: 23:31:33.967: Cannot get portal org.freedesktop.host.portal.Registry version: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Could not activate remote peer 'org.freedesktop.portal.Desktop': startup job failed

(lact:76989): Gdk-WARNING **: 23:31:33.973: Cannot get portal org.freedesktop.portal.Inhibit version: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Could not activate remote peer 'org.freedesktop.portal.Desktop': startup job failed
2026-06-18T21:31:34.658513Z  INFO lact_client::connection::unix: connecting to service at "/run/lactd.sock"
2026-06-18T21:31:34.658592Z  INFO lact_gui::app: could not connect to socket: Permission denied (os error 13)
2026-06-18T21:31:34.658624Z  INFO lact_gui::app: using a local daemon
2026-06-18T21:31:34.717370Z  INFO lact_daemon::server::handler: Nvidia management library loaded
2026-06-18T21:31:34.722173Z  INFO lact_daemon::server::handler: NvAPI library loaded
2026-06-18T21:31:34.744390Z  INFO lact_daemon::server::handler: initialized nvidia controller for GPU 10DE:24DD-17AA:3A4F-0000:01:00.0 at '/sys/class/drm/card1/device'
2026-06-18T21:31:34.744430Z  INFO lact_daemon::server::handler: initialized 1 GPUs

(lact:76989): Adwaita-WARNING **: 23:31:34.865: AdwNavigationPage 0x55db5cdaa1b0 is missing a title. To hide a header bar title, consider using AdwHeaderBar:show-title instead.

(lact:76989): Gdk-WARNING **: 23:31:34.944: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:76989): Gdk-WARNING **: 23:31:34.972: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:76989): Gdk-WARNING **: 23:31:36.098: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:76989): Gdk-WARNING **: 23:31:36.190: vkAcquireNextImageKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:76989): Gdk-WARNING **: 23:31:36.201: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:76989): Gdk-WARNING **: 23:31:37.135: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:76989): Gdk-WARNING **: 23:31:37.342: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:76989): Gdk-WARNING **: 23:31:37.549: vkAcquireNextImageKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)
arthur@laptop:~> sudo systemctl enable --now lactd
Created symlink '/etc/systemd/system/multi-user.target.wants/lactd.service' → '/usr/lib/systemd/system/lactd.service'.
arthur@laptop:~> lact
2026-06-18T21:32:07.500088Z  INFO i18n_embed::requester: Current Locale: [LanguageIdentifier { language: Language(Some("en")), script: None, region: Some(Region("US")), variants: None }]
2026-06-18T21:32:07.500193Z  INFO i18n_embed: Selecting translations for domain "lact_gui"
2026-06-18T21:32:07.500639Z  INFO i18n_embed::requester: Current Locale: [LanguageIdentifier { language: Language(Some("en")), script: None, region: Some(Region("US")), variants: None }]
2026-06-18T21:32:07.500660Z  INFO i18n_embed: Selecting translations for domain "lact_schema"

(process:77828): Gdk-WARNING **: 23:32:07.516: Cannot get portal org.freedesktop.portal.Settings version: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Could not activate remote peer 'org.freedesktop.portal.Desktop': startup job failed

(process:77828): Adwaita-WARNING **: 23:32:07.592: Using GtkSettings:gtk-application-prefer-dark-theme with libadwaita is unsupported. Please use AdwStyleManager:color-scheme instead.

(lact:77828): Gdk-WARNING **: 23:32:07.726: Cannot get portal org.freedesktop.host.portal.Registry version: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Could not activate remote peer 'org.freedesktop.portal.Desktop': startup job failed

(lact:77828): Gdk-WARNING **: 23:32:07.733: Cannot get portal org.freedesktop.portal.Inhibit version: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Could not activate remote peer 'org.freedesktop.portal.Desktop': startup job failed
2026-06-18T21:32:08.396978Z  INFO lact_client::connection::unix: connecting to service at "/run/lactd.sock"
2026-06-18T21:32:08.397069Z  INFO lact_gui::app: could not connect to socket: Permission denied (os error 13)
2026-06-18T21:32:08.397099Z  INFO lact_gui::app: using a local daemon
2026-06-18T21:32:08.444747Z  INFO lact_daemon::server::handler: Nvidia management library loaded
2026-06-18T21:32:08.448495Z  INFO lact_daemon::server::handler: NvAPI library loaded
2026-06-18T21:32:08.470526Z  INFO lact_daemon::server::handler: initialized nvidia controller for GPU 10DE:24DD-17AA:3A4F-0000:01:00.0 at '/sys/class/drm/card1/device'
2026-06-18T21:32:08.470567Z  INFO lact_daemon::server::handler: initialized 1 GPUs

(lact:77828): Adwaita-WARNING **: 23:32:08.589: AdwNavigationPage 0x564292fc67e0 is missing a title. To hide a header bar title, consider using AdwHeaderBar:show-title instead.

(lact:77828): Gdk-WARNING **: 23:32:08.666: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:77828): Gdk-WARNING **: 23:32:08.732: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:77828): Gdk-WARNING **: 23:32:08.733: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:77828): Gdk-WARNING **: 23:32:09.351: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:77828): Gdk-WARNING **: 23:32:09.800: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:77828): Gdk-WARNING **: 23:32:09.843: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:77828): Gdk-WARNING **: 23:32:09.850: vkAcquireNextImageKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)
2026-06-18T21:32:18.792691Z ERROR lact_daemon::server::handler: could not apply settings: Could not apply GPU locked clocks

Caused by:
    the current user does not have permission to perform this operation
2026-06-18T21:32:18.802352Z  WARN update_with_view{input=ApplyChanges component="lact_gui::app::AppModel" id="0x7ffdfc3632f8"}: lact_gui::app: Could not apply settings

Caused by:
0: Got error from daemon, end of client boundary
1: Could not apply settings
2: Could not apply GPU locked clocks
3: the current user does not have permission to perform this operation

(lact:77828): Gdk-WARNING **: 23:32:20.235: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:77828): Gdk-WARNING **: 23:32:21.050: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:77828): Gdk-WARNING **: 23:32:28.431: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:77828): Gdk-WARNING **: 23:32:31.949: vkAcquireNextImageKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)
## flatpak install
arthur@laptop:~> flatpak install lact
Looking for matches…
Found ref ‘app/io.github.ilya_zlobintsev.LACT/x86_64/stable’ in remote ‘flathub’ (system).
Use this ref? [Y/n]: y
Skipping: io.github.ilya_zlobintsev.LACT/x86_64/stable is already installed
arthur@laptop:~> flatpak run io.github.ilya_zlobintsev.LACT 
2026-06-18T21:17:42.152586Z  INFO i18n_embed::requester: Current Locale: [LanguageIdentifier { language: Language(Some("en")), script: None, region: Some(Region("US")), variants: None }]
2026-06-18T21:17:42.152664Z  INFO i18n_embed: Selecting translations for domain "lact_gui"
2026-06-18T21:17:42.153117Z  INFO i18n_embed::requester: Current Locale: [LanguageIdentifier { language: Language(Some("en")), script: None, region: Some(Region("US")), variants: None }]
2026-06-18T21:17:42.153139Z  INFO i18n_embed: Selecting translations for domain "lact_schema"

(process:3): Gdk-WARNING **: 23:17:42.180: Failed to read portal settings: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Could not activate remote peer 'org.freedesktop.portal.Desktop': startup job failed
2026-06-18T21:17:42.837706Z  INFO lact_client::connection::unix: connecting to service at "/run/lactd.sock"
2026-06-18T21:17:42.837806Z  INFO lact_gui::app: could not connect to socket: Permission denied (os error 13)
2026-06-18T21:17:42.837832Z  INFO lact_gui::app: using a local daemon
2026-06-18T21:17:42.882667Z  INFO lact_daemon::server::handler: Nvidia management library loaded
2026-06-18T21:17:42.886859Z  INFO lact_daemon::server::handler: NvAPI library loaded
2026-06-18T21:17:42.909517Z  INFO lact_daemon::server::handler: initialized nvidia controller for GPU 10DE:24DD-17AA:3A4F-0000:01:00.0 at '/sys/class/drm/card1/device'
2026-06-18T21:17:42.909558Z  INFO lact_daemon::server::handler: initialized 1 GPUs

(lact:3): Adwaita-WARNING **: 23:17:43.033: AdwNavigationPage 0x559ec0739510 is missing a title. To hide a header bar title, consider using AdwHeaderBar:show-title instead.

(lact:3): Gdk-WARNING **: 23:17:43.123: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:17:43.151: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:17:43.175: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:17:43.191: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:17:43.192: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:17:43.195: vkAcquireNextImageKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:17:43.201: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:17:43.208: vkAcquireNextImageKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:17:53.427: vkAcquireNextImageKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:17:53.779: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:17:54.288: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:17:54.313: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:17:54.320: vkAcquireNextImageKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:17:55.659: vkAcquireNextImageKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:18:09.625: vkAcquireNextImageKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)
2026-06-18T21:21:30.380510Z ERROR lact_daemon::server::handler: could not apply settings: Could not set clock offset -239 for GPU pstate Zero

Caused by:
    the current user does not have permission to perform this operation
2026-06-18T21:21:30.389322Z  WARN update_with_view{input=ApplyChanges component="lact_gui::app::AppModel" id="0x7ffc86858e98"}: lact_gui::app: Could not apply settings

Caused by:
0: Got error from daemon, end of client boundary
1: Could not apply settings
2: Could not set clock offset -239 for GPU pstate Zero
3: the current user does not have permission to perform this operation

(lact:3): Gdk-WARNING **: 23:21:32.887: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:21:32.891: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:21:32.900: vkQueuePresentKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

(lact:3): Gdk-WARNING **: 23:21:32.909: vkAcquireNextImageKHR(): A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully. (VK_SUBOPTIMAL_KHR) (1000001003)

I tried both the zypper package and the Flathub package. I am curious what is going wrong. I am running Labwc, but I’m not sure that changes much except for maybe different rendering of GUIs. I did uninstall KDE, using Myrlyn and looking the KDE package patterns carefully, to not uninstall important stuff. At the moment I see there is a permission issue popping up and something to do with swapchains. I’m not sure what I can do to fix this except for maybe going into distrobox and using DistroShelf to set up a distrobox with a systemd init, and installing it there.

The GUI says I should sudo systemctl enable --now lactd, which it seemed to do succesfully.

I tried the distrobox route, with NVIDIA integration and systemd init, latest Debian image. Didn’t quite get there unfortunately, but it was a fun experiment!

libEGL warning: pci id for fd 22: 10de:24dd, driver (null)

pci id for fd 21: 10de:24dd, driver (null)
pci id for fd 23: 10de:24dd, driver (null)
libEGL warning: egl: failed to create dri2 screen
pci id for fd 21: 10de:24dd, driver (null)
pci id for fd 23: 10de:24dd, driver (null)
libEGL warning: egl: failed to create dri2 screen

2026-06-18T22:10:10.497694Z  WARN lact_daemon::server::gpu_controller::nvidia: could not load vulkan info: Could not find a vulkan device with matching pci ids

I am back here to note that I was running labwc as non-root, and when I run it as root I get this fatal error:

arthur@laptop:~> sudo labwc
[sudo] password for root: 
00:00:00.025 [../src/main.c:268] XDG_RUNTIME_DIR is unset

I will fix this at some point lol, nevermind this post with my scuffed setup. I am pretty new to window managers / compositors and thought it was a good idea to launch them from tty without root

@Arthurium Is your user in the wheel group?
https://github.com/ilya-zlobintsev/LACT/blob/master/docs/CONFIG.md

Did you check the status of the the systemd service via systemctl status lactd.service

And https://github.com/ilya-zlobintsev/LACT?tab=readme-ov-file#configuration so you need to edit /etc/lact/config.yaml and use your username in the admin_user and wheel to admin_group

Better check: sudo systemctl status lactd.

I have tried adding my user to wheel, and I got a different error, but you were correct it was not added. But I found myself having more than just issues with LACT, and all pointed to not having the appropriate desktop packages and userspace configurations because I selected server install during the netinstallation. This was my lapse of judgement. Not because it wouldn’t be maximally debloated but since I have never set up a user environment from scratch, and only recently got into using a standalone wayland compositor. I went from server install straight to labwc, so nothing was set up properly, like the freedesktop standard things, and I had no polkit authentication agent. And I don’t feel skilled enough yet for all this… I realized I want things to just work

Long story short, I reinstalled openSUSE tumbleweed by choosing GNOME installation. From here on out I will install labwc as a secondary desktop and thus have all this freedesktop/polkit agent stuff worked out for me. LACT flatpak works just immediately on here!

Thanks for the replies nonetheless though!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.