我切换到 Manjaro 20.2 GNOME,在尝试在 udev 中针对外部监视器连接/断开连接事件运行脚本时遇到问题。在 popos 中,此脚本运行正常,似乎 udev 触发正在运行,但命令gsettings
不起作用。
问题如下 -gsettings set org.gnome.desktop.interface text-scaling-factor 1.14
在 PopOS(以前的发行版)中运行时,顶部栏中会显示辅助功能选项,并且它会立即按应有的方式缩放文本。在 Manjaro 中它什么也不做。当我检查值时,gsettings get org.gnome.desktop.interface text-scaling-factor
它会返回,1.13999
但更改不会反映在 UI 中或在查看时dconf-editor
,它仍然显示1.0
。
此外,当更改 intweak-tools
或 in 的值时dconf-editor
,UI 会立即相应地缩放,但是当使用顶部面板菜单中的滑块重新切换缩放时,它会重置为与我之前设置的不同或返回时的1.25
值。为了清楚起见,重新切换“大文本”后显示的值为,但仍然显示。1.14
gsettings get
dconf-editor
1.25
gsettings get
1.13999
虽然现在与问题有些无关,但这里是使用 dbus 套接字运行的脚本gsettings
:
# rule in /etc/udev/rules.d/text_scale.rules:
# SUBSYSTEM=="drm", ACTION=="change", RUN+="/home/user/.bin/scale_text"
# Need to run 'gsettings' as user, so lets get the user id
# Get the Real Username
RUID=$(who | awk 'FNR == 1 {print $1}')
# Translate Real Username to Real User ID
RUSER_UID="$(id -u ${RUID})"
# Get the current text-scaling-factor
CURRENT_FACTOR=$(sudo -u ${RUID} \
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/${RUSER_UID}/bus" \
gsettings get org.gnome.desktop.interface text-scaling-factor)
if (( $(echo "$CURRENT_FACTOR == 1.0" | bc -l) ))
then
sudo -u ${RUID} DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/${RUSER_UID}/bus" \
gsettings set org.gnome.desktop.interface text-scaling-factor 1.14
else
sudo -u ${RUID} DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/${RUSER_UID}/bus" \
gsettings reset org.gnome.desktop.interface text-scaling-factor
fi
答案1
所以我偶然发现了类似的问题这里和 ran which gsettings
,它令人惊讶地返回/home/user/miniconda3/bin/gsettings
(为什么甚至将它放在 conda 中,是出于某些 python gtk 开发原因吗?)。
所以我重命名了该文件夹,现在一切正常,因为 gsettings 二进制文件回落到它/usr/bin/gsettings
应该一直存在的位置。