linux系统(kylin)中因为一些特殊原因,需要用户每次登陆后自动调节屏幕分辨率。目前找到通过xrandr来实现调节分辨率,这个命令完全可行的,只是放到/etc/profile.d中后却无法实现登陆后自动调节分辨率,怀疑是在执行自启脚本时界面UI还没有加载出来所以导致命令无效,有没有一种能在整个系统都加载完毕后再去执行的自启,求指教该怎么办!
你可以再命令前加一行sleep 60 等系统完全起来之后再运行命令
我之前在麒麟系统开机自启是建了个脚本,可以参考https://blog.csdn.net/qq_17576885/article/details/121011836
为什么不能直接设置分辨率?
或者说客户会设置分辨率,但你有需要固定到某个分辨率?
登陆自欺执行脚本过程中有时候会报错:
Error found when loading /etc/profile:
PlatformTheme Create "ukui"
ProxyStyle create "kysec _auth" "ukui"
Qt5UKUIStyle create "kysec_auth""ukui-default"
As a result the session will not be configured correctly,
You should fix the problem as soon as feasible.
参考一下,延迟执行:
https://www.csdn.net/tags/MtTaEg5sMzEwNDgyLWJsb2cO0O0O.html
编写成服务,放置在x界面启动后执行
放到登录用户的 ~/.bashrc 文件中试试,这个脚本应该是用户登录时会执行的
我来晚了吗,搞定了吗
加入用户环境变量也不行吗,随登录执行的
这个涉及到linux系统的服务,用服务来做比较适合你,上电(开机)的一瞬间,服务的执行级别是比bashrc高的,建议你用服务来做,肯定可以解决你的问题。方法如下:
PS:ros_start.service 一模一样复制粘贴即可,ros_starting.sh加入你的调节屏幕分辨率的代码即可,启动服务ok;
具体操作如下:
1. 在/etc/systemd/system/目录下创建一个服务,里面内容跟下面一样即可,名为:ros_start.service
[Unit]
Description=/usr/local/ros_starting.sh Compatibility
After=network.target
[Service]
Type=forking
ExecStart=/bin/bash /usr/local/ros_starting.sh
ExecReload=/bin/bash /usr/local/ros_starting.sh
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
[Install]
WantedBy=multi-user.target
Alias=ros_start.service
2. 在/usr/local/创建一个开机启动的脚本,在这个脚步里面加入你调节屏幕分辨率的代码,名为:ros_starting.sh
#!/bin/bash
sleep 2
加入调节屏幕分辨率的代码(记得加sudo,给管理员权限)
3. 脚本授权
#授权脚本为可执行
sudo chmod 777 ros_starting.sh
4. 设置ros_start为服务,并且启动
#重新载入当前的服务
sudo systemctl daemon-reload
#设置服务名字为:ros_start
sudo systemctl enable ros_start
#开启服务
sudo systemctl start ros_start.service
#检查服务开启状态(如果服务在active状态,表示启动成功)
sudo systemctl status ros_start.service
查看服务状态是action,绿色的,说明服务已经启动了