之前有人说,使用sudo
来启动基于 GUI 的应用程序是个坏主意。
所以应该使用pkexec
。
我记起来了,所以我尝试在 Kubuntu 20.04 LTS 上使用终端启动 Kubuntu 驱动程序管理器
pkexec kubuntu-driver-manager
但是这个命令不起作用,它崩溃并显示以下输出:
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: wayland-org.kde.kwin.qpa, dxcb, eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb.
Aborted (core dumped)
我最近报告过错误 1885615。但我对这种行为感到非常惊讶。有趣的是,它sudo kubuntu-driver-manager
正常工作。
我仍然可以在 Kubuntu 上使用pkexec
- 命令启动基于 Gtk 的应用程序,例如pkexec pluma
使用以下命令打开应用程序根权利。
所以我的问题就在标题里。
答案1
确实有某种黑客使用pkexec
而不是sudo
启动没有特定 PolicyKit 的应用程序。政策文件。我们需要指定缺少的环境变量,如下所示:
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY kubuntu-driver-manager
经过实验我发现它只需要一个/usr/share/polkit-1/actions/org.freedesktop.policykit.policy
文件即可运行。
答案2
要启动某个程序,目录中必须有该程序的pkexec
正确文件。这与使用哪个图形工具包(Gtk 或 Qt)无关。.policy
/usr/share/polkit-1/actions