dde-dock 显卡切换插件 v1.8 —— 瞎改和重构
Tofloor
poster avatar
忘记、过去
Moderator
2020-07-19 12:05
Author
本帖最后由 zty199 于 2020-10-26 02:55 编辑

【10.26】版本更新:1.7.1 -> 1.8
修复之前版本中,切换显卡调用外部脚本时进程阻塞导致 dde-dock 无响应的问题。


虽然之前说不知道还能更新啥了......但是 1003 更新后又逼死强迫症患者,插件被设置了宽度限制,只有日期插件被豁免了 XD (详见大佬 q77190858 的帖子)
大佬的插件要显示的内容多,只能通过改插件识别名称来伪装自己是日期插件,从而不被遮挡。但是呢,我这个又不是啥复杂的玩意儿,就显示一个图标而已,改名称感觉怪怪的。
于是又折腾了一下午,尝试着想让图标跟随高度或者宽度缩放来着,结果一次都没成功......浪费了几个小时之后决定放弃......

转念一想,既然图标太大会被遮住,那就干脆缩小到不会被遮挡就行了呗~于是,就照搬了其他几个系统插件的绘制模式,给缩小的图标套了一个框,算是统一了一下风格吧......只不过 20x20 的图标确实有点小,效果一般。先凑活着看看吧,外观也不是啥重点......



dde-dock-graphics-plugin_1.8.tar.gz

* P.S > 后面主要是想有没有办法能在 CMake 项目里使用 QtLinguistTools 来翻译文本适配语言环境,今天尝试了许久又失败了......notify-send 也还是用外部指令直接执行的,想导入 libnotify-dev 库用代码实现系统通知也失败了......不知道啥时候才能把外部脚本全部抛弃哦......CMakeList.txt 是真的搞不懂......



*如果切换失败导致无法进入图形界面,可以 ctrl + alt + F2 进入 tty2,输入用户名密码登录后执行 /opt/apps/dde-dock-graphics-plugin/files/bin/Rescue.sh 清空配置文件。



原贴地址:https://bbs.deepin.org/post/197280
大佬的仓库地址:https://github.com/mywhat/DDESwitchCard
(去围观大佬啊,点个赞评个分啥的,再 Star 一下~)


对我这种小白来说,论坛大佬 chanforever 写的显卡切换插件是真的牛逼,总比我只会直接用脚本切换显卡方便不少。以前都是把脚本路径放在 .zshrc 里面用 function 调用的,还是不太方便。有了插件就好多了,有点显卡控制面板的感觉了~(虽然现在还是得自己先把显卡驱动装好才行......)

根据大佬的源码,经过了一番研究和改动,去掉了一些不合理的文件放置位置,增加了一个初始化脚本和自动检测配置文件是否存在的功能,打了一个 deb 包放上来给各位勇士试试。(大佬原来的文件摆放位置导致没有办法打包,因为 postinst 脚本执行时是 root 权限,没找到合适的办法放在用户主目录......只能挪走了。)
P.S.请先确保自己正确安装了 N卡闭源驱动 再尝试这个deb包!还有 nvidia-smi 也需要自己安装,毕竟官网的 .run 文件安装和官方源的 nvidia-driver 还是有区别的......

被我叉走的仓库在GitHub上:https://github.com/zty199/dde-dock-switch_graphics_card
                                   码云:https://gitee.com/deepin-opensource/switch-graphics-card






Reply Favorite View the author
All Replies
3 / 5
To page
风吹过的绿洲
deepin
2020-07-23 22:08
#41
https://bbs.deepin.org/post/197367
把大佬仓库叉过来的时候,里面只有48x48的png......等晚上我把几个小问题调整完之后看看能不能做新的矢量 ...

我使用这个切英伟达显卡,切完注销还是Intel,手动运行脚本能切换成功。
Reply View the author
忘记、过去
Moderator
2020-08-11 06:11
#42
自己顶一下......不晓得这鸡肋玩意儿有没有人用......自己用着明明没啥问题的说......
Reply View the author
mmlmonkey
deepin
2020-08-12 21:59
#43
https://bbs.deepin.org/post/197367
自己顶一下......不晓得这鸡肋玩意儿有没有人用......自己用着明明没啥问题的说...... ...

可以可以 1.2感觉笔记本上体验更好了  不过有新问题了 我给我的双N卡机器装了 不work
Reply View the author
忘记、过去
Moderator
2020-08-13 03:58
#44
https://bbs.deepin.org/post/197367
可以可以 1.2感觉笔记本上体验更好了  不过有新问题了 我给我的双N卡机器装了 不work  ...

卧槽......双N卡是指蓝天模具的mxm显卡?这种笔记本一般屏蔽核显吧......能确定内屏连在核显上吗?不然切换没有意义啊......
Reply View the author
mmlmonkey
deepin
2020-08-13 18:39
#45
https://bbs.deepin.org/post/197367
卧槽......双N卡是指蓝天模具的mxm显卡?这种笔记本一般屏蔽核显吧......能确定内屏连在核显上吗?不然切 ...

不是 台式机 强制启用核显 然后 显示插主板上 和笔记本就一样了  这台机器用来训练模型的 所以就没用独显输出 但是有时候手痒想用它打游戏
Reply View the author
忘记、过去
Moderator
2020-08-14 01:49
#46
https://bbs.deepin.org/post/197367
不是 台式机 强制启用核显 然后 显示插主板上 和笔记本就一样了  这台机器用来训练模型的 所以就没用独显 ...

这个......毕竟独显还是有独立输出的,和笔记本还是有区别,不晓得这样操作有没有用......如果你是核显+p106矿卡的话我觉得可能更靠谱一点?

有兴趣的话你可以按deepin wiki的显卡配置试试看,如果没问题的话那插件应该文艺也不大?晚点我可能要再改改显卡判断条件......
Reply View the author
忘记、过去
Moderator
2020-08-14 06:53
#47
https://bbs.deepin.org/user/22562 抱歉这么久才按你说的修改了脚本......大佬还有时间可以测试一下吗......不知道现在识别显卡还有没有问题的说......
Reply View the author
mmlmonkey
deepin
2020-08-14 18:47
#48
https://bbs.deepin.org/post/197367
这个......毕竟独显还是有独立输出的,和笔记本还是有区别,不晓得这样操作有没有用......如果你是核显+p ...

我当时没细看 昨天回去仔细查了一下  xorg.conf里busid 填了2个所以挂了
NVIDIA_BusID=`lspci | egrep 'VGA|3D' | grep 'NVIDIA' | cut -d ' ' -f 1 | sed -r 's/0?(.)/\1/' | sed -e 's/:0/:/g' -e 's/\./:/g'`
改成
NVIDIA_BusID=`lspci | egrep 'VGA|3D' | grep 'NVIDIA' | cut -d ' ' -f 1 | sed -r 's/0?(.)/\1/' | sed -e 's/:0/:/g' -e 's/\./:/g'|head -n 1`
就是只取第一张卡的busid 另外你这个脚步最好考虑一些其他显卡用户安装和显卡是否挂了的情况 我真的遇到过
可以加个wc -l 获得数量
NVIDIA_BusID=`lspci | egrep 'VGA|3D' | grep 'NVIDIA' | cut -d ' ' -f 1 | sed -r 's/0?(.)/\1/' | sed -e 's/:0/:/g' -e 's/\./:/g'|wc -l`
就能知道有没有显卡了 和 有几张  如果结果是0 就不切换 保持原样
Reply View the author
mmlmonkey
deepin
2020-08-14 18:56
#49
https://bbs.deepin.org/post/197367
这个......毕竟独显还是有独立输出的,和笔记本还是有区别,不晓得这样操作有没有用......如果你是核显+p ...

对了 还有就是图标太大 菜单栏调到最小高度 图标显示不完全 这个svg图为啥不能自动缩放呢
Reply View the author
忘记、过去
Moderator
2020-08-14 19:46
#50
本帖最后由 zty199 于 2020-8-14 11:48 编辑
https://bbs.deepin.org/post/197367
对了 还有就是图标太大 菜单栏调到最小高度 图标显示不完全 这个svg图为啥不能自动缩放呢  ...

哇,感谢大佬......我这里还真没想到有多显卡这情况(家境贫寒)......

如果是其他显卡的用户的话,是没办法通过 lshw -c video 检测 nvidia驱动安装的,昨天更新加进去了。如果切换挂掉了的话,可以进tty执行 /opt/durapps/dde-dock-switch_graphics_card/Rescue.sh,会清空相关配置文件重启lightdm来还原操作。
至于自动缩放的话......我也不知道官方的是怎么做到的......我看其他大佬写的系统监控插件好像也没找到相关实现方式......晚点试试能不能从官方的源码里找到类似的实现......
Reply View the author
xuey
deepin
2020-08-14 20:55
#51
可否添加一个右键使用prime-run运行的选项,这样的话再把三个选项合并成一个,省点菜单空间
Reply View the author
忘记、过去
Moderator
2020-08-14 21:57
#52
https://bbs.deepin.org/post/197367
可否添加一个右键使用prime-run运行的选项,这样的话再把三个选项合并成一个,省点菜单空间 ...

好主意......只是没办法按你说的三合一,这个我实现不了,不知道原始菜单的怎么实现的......暂时准备把切换的两个删了,反正没啥卵用的样子,换成“使用 prime-run 运行”,右键可执行程序的时候会显示这个。
Reply View the author
xuey
deepin
2020-08-14 22:32
#53
https://bbs.deepin.org/post/197367
好主意......只是没办法按你说的三合一,这个我实现不了,不知道原始菜单的怎么实现的......暂时准备 ...

像这样,做个次级菜单,虽然我也不知道怎么实现,但看起来挺简单的。
Reply View the author
Comments
zty199
2020-08-14 23:52
我知道,然而我不会......这个区域的菜单不归 oem-menuextensions 管,我也不知道在哪里实现的......暂时先把这个问题挂这里吧......
忘记、过去
Moderator
2020-08-15 00:07
#54
https://bbs.deepin.org/post/197367
对了 还有就是图标太大 菜单栏调到最小高度 图标显示不完全 这个svg图为啥不能自动缩放呢  ...

@as763190097 关于任务栏高度最低的时候显示不正常的问题暂时没啥好办法,我这里测试的时候,直接调节任务栏高度就有这个问题。但如果调节高度至最低后,先右键取消显示插件,再重新显示,就没有显示不全的问题了......感觉像是任务栏没办法实时刷新的样子,暂时不太会改,估计要在初始化加载插件的时候调整?=_=


Reply View the author
mmlmonkey
deepin
2020-08-15 03:30
#55
zty199 发表于 2020-8-14 16:07
@as763190097 关于任务栏高度最低的时候显示不正常的问题暂时没啥好办法,我这里测试的时候,直接调节任 ...

我上班摸鱼 找了官网的svg 改了一下大小和颜色 可以在最小的菜单栏正常显示 等我到家发出来
Reply View the author
Comments
zty199
2020-08-15 03:46
现在用的svg是我自己扣的,48x48,我这里测试过32x32整好可以不被遮挡,但是太小了看着难受,就没有换......
lenke
deepin
2020-08-15 04:45
#56
https://bbs.deepin.org/post/197367
@lenke 抱歉这么久才按你说的修改了脚本......大佬还有时间可以测试一下吗......不知道现在识别显卡还有没 ...

众人拾柴火焰高,测试最新的1.4版,所有功能正常
Reply View the author
Comments
xuey
2020-08-15 04:51
摩拜
zty199
2020-08-15 04:49
太好了,感谢大佬!
lenke
deepin
2020-08-15 04:50
#57
在提个意见,prime-run功能,能否监测.desktop文件
Reply View the author
忘记、过去
Moderator
2020-08-15 04:58
#58
本帖最后由 zty199 于 2020-8-14 21:31 编辑
https://bbs.deepin.org/post/197367
在提个意见,prime-run功能,能否监测.desktop文件

搞定了......为了实现这个直接运行.desktop文件只能委屈一下prime-run了prime-run脚本里面加上文件后缀名判断,如果是.desktop就提取里面的Exec执行路径这样子。晚点等楼上mmlmonkey大佬的图标发出来之后我再一起更新。
Reply View the author
mmlmonkey
deepin
2020-08-15 08:01
#59

差点搞忘了  

这是最小的时候效果  确实有点小

放大之后的 貌似也不会自动变化 但这个svg图是矢量的可以修改大小和颜色的
下面的文本里的 fill是代表颜色 FFFFFF就是全白 000000 就是全黑 width 和 height 是大小 如果插件能获取到当前的菜单栏高度是可以动态的调整大小的 就是有点麻烦



  1.          id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:svg="http://www.w3.org/2000/svg"
  2.          xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="32px" height="24px"
  3.          viewBox="0 0 400 300" enable-background="new 0 0 400 300" xml:space="preserve">

  4.        
  5.                
  6.                
  7.                
  8.                         />
  9.                
  10.                
  11.                
  12.                
  13.        

Copy the Code
svg_log.zip




Reply View the author
忘记、过去
Moderator
2020-08-15 20:42
#60
本帖最后由 zty199 于 2020-8-15 12:45 编辑
https://bbs.deepin.org/post/197367
差点搞忘了  

这是最小的时候效果  确实有点小

感谢,已经更新了,现在支持颜色跟随系统主题了......大小的话暂时没改出来,以后有时间再研究看看......

https://bbs.deepin.org/user/22562 新的 1.5 支持直接右键 prime-run .desktop 了,命令行也可以,只在 intel 显卡生效。

https://bbs.deepin.org/user/41719 换了新图标了,分辨率 32x20 ,应该不会再被遮挡了......就是有点小。大小动态变化要晚点再研究了......
Reply View the author
3 / 5
To page