我没太看懂你的需求
如果你是希望脚本中的命令以特定用户身份运行,可以试试 sudo -u
你这函数,第二个参数没传进去。image_file
没法取到数据(不过你后面也没用到)
不知道是不是你后面的 wallpaper_file_name
要用上。如果是要用,那么就少了$
,而且变量也没赋值。
string:"file:///usr/share/wallpapers/deepin/{wallpaper_file_name}"
你这函数,第二个参数没传进去。image_file
没法取到数据(不过你后面也没用到)
不知道是不是你后面的 wallpaper_file_name
要用上。如果是要用,那么就少了$
,而且变量也没赋值。
string:"file:///usr/share/wallpapers/deepin/{wallpaper_file_name}"
wallpaper_file_name塞python的 f-write语法要用的 主要是想以普通用户的权限运行这个脚本 su命令试过不行 只能来求助了
我没太看懂你的需求
如果你是希望脚本中的命令以特定用户身份运行,可以试试 sudo -u
想让普通用户运行这个脚本试过了sudo 和 su这些 都不管用 想让脚本检测当前普通用户在root⬇️切换到这里
sudo -u $USER env DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus dbus-send --session --dest=org.deepin.dde.Appearance1 --type=method_call --print-reply /org/deepin/dde/Appearance1 org.deepin.dde.Appearance1.SetMonitorBackground string:"eDP" string:"/usr/share/wallpapers/deepin/desktop.jpg"
添加DBUS_SESSION_BUS_ADDRESS变量就可以了
大家都喜欢自己折腾换壁纸啊
wallpaper_file_name塞python的 f-write语法要用的 主要是想以普通用户的权限运行这个脚本 su命令试过不行 只能来求助了
这个我就不了解了。
我是单纯针对你这 shell 脚本中说的。因为按纯 shell 语法来说,这个是错误的。
sudo -u $USER env DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus dbus-send --session --dest=org.deepin.dde.Appearance1 --type=method_call --print-reply /org/deepin/dde/Appearance1 org.deepin.dde.Appearance1.SetMonitorBackground string:"eDP" string:"/usr/share/wallpapers/deepin/desktop.jpg"
添加DBUS_SESSION_BUS_ADDRESS变量就可以了
大佬!检测显示屏内快用root也不行能不能给个解决办法 谢谢大佬
大佬!检测显示屏内快用root也不行能不能给个解决办法 谢谢大佬
试试加env DISPLAY=:0 环境变量
试试加env DISPLAY=:0 环境变量
MONITOR_NAME=$(xrandr | grep connected | grep -v disconnected | cut -d ' ' -f 1) 试过了不行,得用这个变量好用还是得不能root只能普通用户 要写在postinst里
MONITOR_NAME=$(env DISPLAY=:0 sudo -u $USER xrandr | grep connected | grep -v disconnected | cut -d ' ' -f 1)
MONITOR_NAME=$(env DISPLAY=:0 sudo -u $USER xrandr | grep connected | grep -v disconnected | cut -d ' ' -f 1)
谢谢大佬我去试试
MONITOR_NAME=$(env DISPLAY=:0 sudo -u $USER xrandr | grep connected | grep -v disconnected | cut -d ' ' -f 1)
大概这样就行了吧
#!/bin/bash
# 获取连接的显示器名称
MONITOR_NAME=$(env DISPLAY=:0 sudo -u $USER xrandr | grep connected | grep -v disconnected | cut -d ' ' -f 1)
# 设置壁纸的函数
set_wallpaper() {
local monitor_name="$1"
sudo -u $USER env DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus dbus-send --session --dest=org.deepin.dde.Appearance1 --type=method_call --print-reply /org/deepin/dde/Appearance1 org.deepin.dde.Appearance1.SetMonitorBackground string:"$monitor_name" string:"/usr/share/wallpapers/deepin/{wallpaper_file_name}"
}
# 调用函数设置壁纸
set_wallpaper "$MONITOR_NAME
大概这样就行了吧
#!/bin/bash
# 获取连接的显示器名称
MONITOR_NAME=$(env DISPLAY=:0 sudo -u $USER xrandr | grep connected | grep -v disconnected | cut -d ' ' -f 1)
# 设置壁纸的函数
set_wallpaper() {
local monitor_name="$1"
sudo -u $USER env DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus dbus-send --session --dest=org.deepin.dde.Appearance1 --type=method_call --print-reply /org/deepin/dde/Appearance1 org.deepin.dde.Appearance1.SetMonitorBackground string:"$monitor_name" string:"/usr/share/wallpapers/deepin/{wallpaper_file_name}"
}
# 调用函数设置壁纸
set_wallpaper "$MONITOR_NAME
嗯
MONITOR_NAME=$(env DISPLAY=:0 sudo -u $USER xrandr | grep connected | grep -v disconnected | cut -d ' ' -f 1)
运行了提示这个
Failed to open connection to "session" message bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
运行了提示这个
Failed to open connection to "session" message bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
报错,你得声明你的user变量吧,(如:USER=$(getent passwd who
| head -n 1 | cut -d : -f 1))才能获取到变量值!
Popular Events
More
我写了个不管用 su切换不行shell
postinst哪里要用普通用户运
有没有大佬帮我写个脚本 谢谢啦
这是要运行的脚本代码