麒麟SP1系统非root用户强制修改分辨率,开机自动生效

本文介绍了在麒麟SP1系统中遇到显示屏显示异常的问题,通过xrandr命令手动指定1920*1080分辨率并编写脚本来修复。同时,详细阐述了如何创建开机自动启动脚本,包括编写桌面启动文件和设置开机自启,以确保每次启动时分辨率能正确设置。在过程中,作者遇到了DISPLAY环境变量设置和开机启动顺序的问题,并给出了相应的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

        安装麒麟SP1系统后发现显示屏无法正常显示,通过显示硬件自动调节后上下左正常,右侧整条有一部分缺失,桌面查看分辨率为1920*1080是正确的,于是想到xrandr命令来解决此问题

二、手动指定分辨率(1920*1080 60hz举例),重启后失效

[kylin@kylin~]$ xrandr                 #会输出多种已加载分辨率
[kylin@kylin~]$ export DISPLAY=:0.0    #设置DISPLAY环境变量
[kylin@kylin~]$ cvt 1920 1080 60 | sed -n 's/Modeline //p'    #过滤出需要使用的参数
[kylin@kylin~]$ xrandr --newmode "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync               #创建一个mode,参数为上一条命令过滤出来的参数
[kylin@kylin~]$ xrandr --addmode VGA-1 "1920x1080_60.00"      #新建模式,将新模式添加至当前输出设备
[kylin@kylin~]$ xrandr --output VGA-1 --mode 1920x1080_60.00  #设置newmode为当前分辨率

三、开机自动启动 

1、编写设置参数脚本

[kylin@kylin~]$ vim /home/kylin/display.sh    #编写脚本
#!/bin/bash
export DISPLAY=:0.0
xrandr --newmode "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
xrandr --addmode VGA-1 "1920x1080_60.00"
xrandr --output VGA-1 --mode 1920x1080_60.00
[kylin@kylin~]$ sudo chmod +x /home/kylin/display.sh    #给脚本加执行权限
[kylin@kylin~]$ /home/kylin/display.sh                  #验证脚本是否可正确执行,若分辨率可正常更改,继续如下操作

 2、编写desktop文件

[kylin@kylin~]$ vim /etc/xdg/autostart/test.desktop
[Desktop Entry]
Encoding=UTF-8                  #字符串所使用的编码方式
Name=display_                   #desktop 文件最终显示的名称(一定要注意和 desktop 文件名的区别)
Exec=sh /home/kylin/display.sh  #用于指定二进制可执行程序的完整路径
Info="Spark"
Terminal=false                  #程序是否在终端窗口中运行
Type=Application                #用于指定 desktop 文件的类型(包括 3 种类型:Application、Link、Directory)
StartupNotify=true              #如果不存在,则合理的处理取决于实现

[kylin@kylin~]$ sudo chmod +x /etc/xdg/autostart/test.desktop #加执行权限

#一个 desktop 文件主要由两部分组成,头部 [Desktop Entry] 声明(用于指定这是一个desktop文件)和一系列的参数/值对组成。一个 desktop文件至少要指定3个参数的值(Name、Type 和 Exec)
#=号两边不能有空格
#条目具体要求和含义可参见:
https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html

3、加入开机自启

ecc48cb068464cbfa3df08daafeec6a8.png

af420a5b4d0946ed9812888252a94352.png 

4、文件描述整理

键Key描述Value 类型是否必须?生效类型
TypeApplication (type1), Link (type2), Direcory (type3)stringYes 
Version版本,例如1.0stringNo1-3
Name应用程序的特定名称localestringYes1-3
GenericName应用程序的通用名称localestringNo1-3
NoDisplay不在菜单中显示, 但可以与MIME类型相关联booleanNo1-3
Comment应用描述ocalestringNo1-3
Icon要么绝对路径,要么符合图标主题规范localestringNo1-3
Hidden是否隐藏,等同于不存在的文件booleanNo1-3
OnlyShowIn, NotShowIn一般不用此字段booleanNo1-3
DBusActivatableDBus激活,默认falsebooleanNo 
TryExec如果文件不存在, 则忽略该文件,并不在菜单中出现stringNo1
Exec执行路径stringNo1
Path当Type=Application时,程序运行的目录stringNo1
Terminal程序是否在终端窗口中运行booleanNo1
Actions为其他组提供接口,比如Action=Gallery;,那么其他组就为[Desktop Action Gallery]string(s)No1
MimeType此应用支持打开的类型string(s)No1
Categories参阅桌面菜单规范string(s)No1
Implements默认情况下,桌面文件不实现任何接口string(s)No1
Keywords用于搜索,不应该是Name或者为多余的值 GenericNamelocalestring(s)No 
StartupNotify如果不存在,则合理的处理取决于实现(假设为false,使用StartupWMClass等)。参阅启动通知协议规范booleanNo1
StartupWMClass一般跟Name相同即可stringNo1
URL只适用于Type=LinkstringYes2

4、 

四、错误整理

错误1:设置DISPLAY环境变量, 运行图形程序(如xclock)时会收到如下错误:

        Xlib: connection to ":0.0"refused by server

        Xlib: No protocol specified

        Error: Can’t open display: :0.0

错误2:开机自启趟过的坑

        尝试过rc.loacl、xorg.conf、systemd、crontab、profile都无法实现开机自动配置,根据表现猜测为启动时序问题导致,最后使用了系统自带desktop解决此问题

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

*_花非人陌_*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值