ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于原生Wine6.0.2稳定版打补丁解决ukylin-wine图标显示异常和deepin-wine闪退的问题,运行QQ接近完美(附补丁)。

2021-12-09 14:01:43  阅读:383  来源: 互联网

标签:QQ ukylin 打补丁 wine Wine 源代码 图标


        在之前的文章介绍了我使用deepin-wine和ukylin-QQ相结合获得更佳的使用体验,但是毕竟闪退的问题还没有得到彻底解决,因此还是心有不甘,想通过自身查看Wine或窗口管理器的源代码来解决deepin-wine运行QQ闪退的问题。        在最初我还以为ukylin-wine运行QQ图标显示异常是由于窗口管理器(如Xfce、Cinnamon等)提供的托盘管理小程序的问题,我还查看了Xfce和Cinnamon的systray小程序源代码,Xfce的systray是由C代码编制,看了一阵子没有下手的地方,就暂时放弃;由于Cinnamon的systray小程序是由JavaScript编写而成,相对比较容易修改,/usr/share/cinnamon/applets/systray@cinnamon.org中的applet.js文件的图标Click事件中增加了刷新图标的语句on_applet_clicked(event) { Main.statusIconDispatcher.redisplay(); },可以手工临时解决QQ图标与其他图标残留叠加显示的问题。但这个始终没有找到问题的根源,想到原来的Deepin-wine QQ在同样的窗口管理中能够正常的显示,我几乎可以肯定问题就是来源于Wine server。        在确定是Wine server是缺陷存在的地点后,就将注意力转向Wine本身,由于ukylin-wine和deepin-wine都不提供源代码,因此只能从开源社区寻求解决方法,首先安装最新稳定版的Wine6.0.2可执行程序,然后就到www.winehq.org下载最新发布的稳定版Wine 6.0.2版本的源代码压缩包,最后就是修改源代码编译并进行测试直到满意为止。 第一步是安装原生的Wine6.0.2稳定版的可执行程序。 1、首先在系统上启用32位支持,运行命令:sudo dpkg --add-architecture i386 2、添加正式的Wine仓库密钥: wget -nc https://dl.winehq.org/wine-builds/winehq.key sudo apt-key add winehq.key 3、添加Wine仓库本身,不同的ubuntu版本是不同的执行命令,可以直接到官网查看,下面是ubuntu 20.04及其衍生版的: sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main' sudo apt-get update 4、安装Wine 6.0稳定版(其他版本请查看官网的相应命令): sudo apt install --install-recommends winehq-stable 以上步骤执行完成后在/opt目录中就增加了wine-stable目录,在/usr/bin目录中wine可执行脚本指向这个目录中的可执行文件。 第二步是下载原生的Wine6.0.2稳定版的源代码并进行编译并打补丁。 1、在wine官网上下载源代码压缩包,下载地址为:https://dl.winehq.org/wine/source/6.0/wine-6.0.2.tar.xz 2、将该压缩包解压至用户主目录中,所有文件位于wine-6.0.2中。 3、进入wine-6.0.2目录中,执行./congfigure 4、根据要解决的核心问题是图标显示异常问题,通过查看源代码目录,发现在/dlls/winex11.drv目录中包含含显示托盘图标的systray.c源代码文件。限定了问题范围就可以针对winex11.drv单独编译了,这样非常快速看到修改后的运行效果,便于快速发现和解决问题。 5、进入dlls/winex11.drv目录执行make命令就可以生成winex11.drv.so共享链接库文件。此文件需要去覆盖/opt/wine-stable/lib/wine目录下的winex11.drv.so文件。 6、后面的补丁工作就是在这个模块中不断地修改代码,重新make编译,重新替换,查看运行效果到满意为止。 (备注:使用同为wine6大版本的deepin-wine中包含的winex11.drv.so文件进行替换是不行的,替换以后,QQ窗口显示异常,光标进入以后会消失,所以只能使用自己编译的版本。以下为我修改编译后的winex11.drv.so文件: winex11.drv.so第三部就是安装QQ的容器及启动脚本。 1、为了避免不必要的重复工作,我们就使用比较好的ukylin QQ安装包,进行安装执行,产生一个QQ容器和启动脚本,以及完成开始菜单的生成等。下载地址为: http://archive.ubuntukylin.com/software/pool/partner/ukylin-qq_1.0_amd64.deb  2、通过修改ukylin QQ的启动脚本文件(/opt/ukylin-wine/apps/wine-qq/run.sh),将“/usr/bin/ukylin-wine”修改为调用原生wine-6.0.2程序的的“wine”语句。 3、重启系统就可以在开始菜单中接近完美的运行QQ了,和ukylin-wine QQ一样的稳定运行,系统托盘中的QQ图标干净了没有其它图标残影的叠加了,而且新消息来了,有消息图标会正常脉动闪烁,总之我关心的问题已经全部解决完成了。

标签:QQ,ukylin,打补丁,wine,Wine,源代码,图标
来源: https://blog.csdn.net/ericden/article/details/121818332

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有