Difference between revisions of "Tencent QQ (简体中文)"

From ArchWiki
Jump to navigation Jump to search
(Wine QQ: 安装时可能会遇到的一些问题)
(replaced external links, flagged broken section links (interactive))
(Tag: wiki-scripts)
 
(51 intermediate revisions by 13 users not shown)
Line 1: Line 1:
 
[[Category:简体中文]]
 
[[Category:简体中文]]
 
[[Category:Internet applications (简体中文)]]
 
[[Category:Internet applications (简体中文)]]
 
 
QQ 是腾讯公司开发的即时通讯软件,为 ICQ 的仿制品,是中国最流行的 IM 软件。本页面列出了 Linux 下使用 QQ 的各种解决方案。
 
QQ 是腾讯公司开发的即时通讯软件,为 ICQ 的仿制品,是中国最流行的 IM 软件。本页面列出了 Linux 下使用 QQ 的各种解决方案。
  
==基于 WebQQ==
+
== 虚拟机 ==
 
+
您可以在虚拟机中运行一个完整的 Windows 系统,并在此中运行 QQ。相比于其他的方案,这种方案出错的几率是最小的,缺点是占用的资源较多。
{{警告|腾讯将关闭旧版的 WebQQ,并用SmartQQ取而代之, 届时恐怕所有依赖 WebQQ 协议的客户端都将不可用。}}
 
 
 
===SmartQQ===
 
 
 
[http://w.qq.com/ SmartQQ] 是腾讯推出的网页端 QQ,它高度模仿微信风格,功能欠完善,且高度依赖网络环境。
 
  
将 Google Chrome 的把网站做为应用程序与其桌面提醒功能整合,也可以打造一个实用的 QQ 软件:
+
一般使用 [[VirtualBox (简体中文)|VirtualBox]] 即可满足需求,也可以参考 [[:Category:Hypervisors]] 选择其它的虚拟机程序。
  
# 安装并运行 [[Chromium (简体中文)]]或者[[Firefox_(简体中文)|火狐浏览器firefox]],并打开 [http://w.qq.com/ SmartQQ],需要手机QQ客户端扫描二维码登陆,功能少。
+
{{提示|
 +
* 根据[https://www.microsoft.com/en-us/Useterms/OEM/Windows/10Mobile/UseTerms_OEM_Windows_10Mobile_ChineseSimplified.htm 许可条款],在每个虚拟设备上运行 Windows 都需要单独的授权。但您可以选择使用[https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ 微软提供的虚拟机专用系统](免费使用)。
 +
* 如果您使用 VirtualBox,建议您开启'''[https://www.virtualbox.org/manual/ch04.html#seamlesswindows 无缝模式]''',这个功能能让您在宿主机的桌面下无缝操作虚拟机中的窗口。}}
  
===官方 Adobe Air 客户端===
+
== Wine ==
  
{{警告|Adobe Air 的 Linux 版本似乎已经停止开发,且从 [[Arch User Repository (简体中文)]] 编译安装时会用到大量 lib32 库,会与 64位 Arch Linux 原有的库发生冲突,不推荐使用}}
+
[[Wine (简体中文)|Wine]] 是类 UNIX 系统下运行微软 Windows 程序的"兼容层",可以用它模拟 Windows 环境来运行 QQ/TIM。
  
腾讯官方提供的 WebQQ 客户端,基于 Adobe Air 平台。
+
{{警告|Wine QQ/TIM 在平铺式窗口管理器下的样式可能会大规模失控,需要进行[[#平铺式窗口管理器下的配置|额外的配置]]。}}
  
在 [[Arch User Repository (简体中文)]] 安装 {{AUR|webqq}}{{Broken package link|{{aur-mirror|webqq}}}} 即可。
+
=== Deepin QQ/TIM ===
  
===PyWebQQ (python-webqq)===
+
Deepin QQ/TIM 是 wine 中相对成熟的方案。几乎开箱即用,bug 较少。
  
{{注意|据用户报告,访问速度非常差,不推荐使用}}
+
您可以安装{{aur|deepin-qq-im}}或{{aur|deepin-wine-tim}},也可以从 [https://www.archlinuxcn.org/archlinux-cn-repo-and-mirror/ ArchLinux CN 源] 安装deepin.com.qq.office或者deepin.com.qq.im。
  
[http://code.google.com/p/python-webqq/ PyWebQQ(python-webqq)]是用 python-webkit 包装而成的 WebQQ 桌面版,均可以访问 Smart QQ 或 WebQQ。由于使用单独的浏览器内核,可以避免长期挂机拖慢浏览器。并且提供了简单的桌面整合,能最小化到托盘,支持消息提醒。
+
如果是Arch系KDE/Plasma桌面,请[[KDE (简体中文)#%E7%A8%8B%E5%BA%8F%E8%87%AA%E5%90%AF%E5%8A%A8/|按照这个教程]]{{Broken section link}},先安装gnome-settings-daemon,然后将/usr/lib/gsd-xsettings设置为自动启动
  
在 [[Arch User Repository (简体中文)]] 安装 {{AUR|python-webqq-svn}}{{Broken package link|{{aur-mirror|python-webqq-svn}}}} 即可。
+
=== Crossover ===
  
===pidgin-lwqq===
+
可以使用 [[CrossOver]] 运行 QQ、TM2013 和 TIM。更多详情可以参阅[https://www.codeweavers.com/compatibility CrossOver的兼容性列表]。
  
[https://github.com/xiehuc/pidgin-lwqq pidgin-lwqq] 是一个 [[Pidgin (简体中文)]] 插件,实现了 WebQQ 协议支持;目前处于良好的维护状态,帮助文档非常详细;功能较为完善,但WebQQ取消了文件发送及接收,因此已经无法实现文件传输,而且无法视频语音。[[Official repositories (简体中文)]]提供了 {{pkg|pidgin-lwqq}} 软件包。
+
=== AppImage ===
  
安装完后,在 Pidgin 新建账号时,协议直接选择 webqq,并填入必要的帐号和密码,最后登录即可。
+
AppImage 是一种把应用打包成单一文件的格式。您可以在[https://github.com/askme765cs/Wine-QQ-TIM]下载到封装好的 Wine QQ/TIM。只需要赋予可执行权限即可使用。由于 AppImage 格式附带了程序所需要的依赖,所以这种方式受系统中其他组件版本的影响最小。
 +
{{注意|由于 AppImage 不使用系统的 Wine,所以对 Wine 的调整可能无效,例如[[#HiDPI 支持]]。}}
  
此外,该插件也支持 Empathy。
+
=== 清风老师的 Wine QQ 方案 ===
  
===gtkqq===
+
您也可以使用[http://phpcj.org/wineqq/ 清风老师] 提供的 Wine QQ 方案。
{{警告|据用户报告,该程序缺失维护长达两年,已不可用}}
 
  
[https://github.com/kernelhcy/gtkqq gtkqq]是基于 WebQQ 协议的QQ客户端,基于GTK+开发。界面简洁清爽,功能比较完善。但目前还出于开发阶段,易崩溃。
+
{{注意| 安装成功之后要取消勾选 QQ 的自动更新,以免自动更新导致不可用。
 
 
在 [[Arch User Repository (简体中文)]] 安装 {{AUR|gtkqq-git}}{{Broken package link|{{aur-mirror|gtkqq-git}}}} 即可。
 
 
 
===qtqq===
 
{{警告|程序无法获取好友列表,暂不可用,作者未回应}}
 
 
 
用 [[qt (简体中文)]] 开发的 qq 客户端,基于 webqq3.0 协议。
 
 
 
在 [[Arch User Repository (简体中文)]] 安装 {{AUR|qtqq-git}}{{Broken package link|{{aur-mirror|qtqq-git}}}} 即可。
 
 
 
===weechat-webqq===
 
{{注意|也可选择其它支持IRC协议的聊天客户端}}
 
 
 
在 [[WeeChat]] 可使用的 QQ 插件脚本,使用 perl语言开发的 [https://github.com/sjdy521/Mojo-Webqq Mojo-Webqq]库,基于 smartqq 协议 。
 
源码脚本可访问 [https://github.com/wxg4net/weechat-webqq weechat-webqq] 获取
 
 
 
==独立开发==
 
 
 
===libqq===
 
[http://code.google.com/p/libqq-pidgin/ libqq]是 Pidgin 下的QQ协议插件,采用2010版协议改写。目前已比较稳定,但开发貌似停滞不前。
 
 
 
AUR:{{AUR|libqq-svn}}{{Broken package link|{{aur-mirror|libqq-svn}}}}、{{AUR|libqq-pidgin-svn}}{{Broken package link|{{aur-mirror|libqq-pidgin-svn}}}}(貌似一样)
 
 
 
'''优点''':基于功能强大的Pidgin,无需安装第三方软件,桌面整合好,节省资源。<br>
 
'''缺点''':仍有稳定性问题。
 
 
 
==官方版本==
 
 
 
{{警告|由于 QQ for Linux 长时间不更新,导致程序无法适应现有的部分Linux组件,安装后经常崩溃。而据用户报告,如今 QQ for Linux 也已不允许登录,每次登录都提示版本过低}}
 
 
 
{{提示|可以在腾讯[http://support.qq.com/write.shtml 投诉]页面呼吁官方提供 Linux 版}}
 
 
 
腾讯在 2008 年底发布了 QQ for Linux 1.0 Preview 3,功能如下:
 
 
 
# 支持和好友传送文件
 
# 支持和好友/群发送图片
 
# 支持群里截屏并传送截图
 
# 聊天设置中,已经可以设定按回车键发送
 
 
 
在 [[Arch User Repository (简体中文)]] 安装 {{AUR|linuxqq}}{{Broken package link|{{aur-mirror|linuxqq}}}} 即可。
 
 
 
==Wine 模拟==
 
 
 
[[Wine (简体中文)]] 是类 UNIX 系统下运行微软 Windows 程序的"兼容层",可以用它模拟 Windows 环境来运行 QQ/TM。
 
 
 
{{警告|Wine QQ/TM 在平铺式窗口管理器下的样式可能会大规模失控,需要进行额外的配置}}
 
 
 
===Wine QQ===
 
 
 
目前较为成熟的 Wine 模拟方案之一为 [http://phpcj.org/wineqq/ 清风老师] 提供的 Wine QQ 方案。
 
 
 
{{注意| 如果系统默认不是中文环境可能无法输入中文,解决方法是修改启动文件的{{ic|Exec}}:{{hc|head=$HOME/.local/share/applications/wine-QQ.desktop|output=Exec=env LC_ALL=zh_CN.UTF-8 wine ".wine/drive_c/Program Files/QQ/Bin/QQ.exe"}}
 
 
}}
 
}}
  
{{注意|此方案只需要安装{{Pkg|wine}}即可,安装其它的Wine库可能造成干扰。如果安装失败,可以首先删除{{ic|$HOME/.wine}}并卸载所有Wine相关的包后重启系统,得到一个相对干净的环境再尝试按上面博客的步骤进行安装}}
+
=== 手动 Wine 方案 ===
  
=== Wine QQ 轻聊版 ===
+
==== QQ 轻聊版 ====
  
{{注意|此方案使用QQ轻聊版6.7,更高版本在当前wine版本需要[http://blog.lilydjwg.me/2015/10/26/run-tencent-qq-lite-with-wine.186640.html 额外的调整]才能安装}}
+
{{注意|此方案使用QQ轻聊版6.7,更高版本在当前wine版本需要[https://blog.lilydjwg.me/2015/10/26/run-tencent-qq-lite-with-wine.186640.html 额外的调整]才能安装。}}
  
安装{{Pkg|winetricks}}、{{Pkg|wine}}。创建 qqlight.verb 如下,
+
安装{{Pkg|winetricks}}、{{Pkg|wine}}。创建 qqlight.verb 如下:
  
 
  w_metadata qqlight apps \
 
  w_metadata qqlight apps \
Line 146: Line 90:
 
  }
 
  }
  
运行 winetricks 安装,
+
运行 winetricks 安装:
  
 
  $ winetricks qqlight.verb
 
  $ winetricks qqlight.verb
  
安装完成后通过 wineconsole 启动,
+
安装完成后通过 wineconsole 启动:
  
 
  $ wineconsole .wine/drive_c/run-qqlight.bat
 
  $ wineconsole .wine/drive_c/run-qqlight.bat
  
=== Wine TM ===
+
==== TIM ====
 
 
对于仍然能用的 TM 版本(TM2009Beta3.4、TM2013preview1),使用[http://blog.lilydjwg.me/2013/3/24/run-tencent-messenger-with-wine.38382.html 以下方案]可以成功:
 
$ winetricks riched20 ie6 mfc42
 
 
 
然后运行 winecfg,切换到「函数库」选项卡,在「已有的函数库顶替」中编辑「urlmon.dll」项,设置其使用「内建」版本。
 
 
 
将 ie6 替换成 ie7 亦可。可能需要安装相关字体支持,比如安装 simsun.ttc 字体。
 
 
 
在 Wine 1.7.6 之后,'''登录后片刻状态自动变成离开的问题已经修复'''。但是此离开状态检测是在 Wine 环境内部的(和全局快捷键一样),也就是如果没有用户操作传递给此 Wine 环境中的任意程序,'''即使用户在 Linux 上做其它事情,在指定时间之后 TM 仍然会转变成离开状态'''。因此建议在「在线状态」设置中禁用自动将状态切换为「离开」的功能。
 
 
 
已知可以正常使用的功能:
 
  
* 基本聊天
+
# 安装{{pkg|wine}}、{{pkg|wine_gecko}} 和 {{pkg|wine-mono}}。
* 截图、粘贴剪贴板中的图像
+
# 执行{{ic|winetricks riched20}},也可使用 {{ic|winecfg}} 设置函数库顶替。
* 文件传输
+
# 中文字体显示见[[#字体配置]]。
* 群共享
+
# 安装 TIM。
* 远程协助(作为求助方和协助方均可)
+
{{提示|安装的tim可能没有在程序列表中生成图标。若要自行添加图标,新建一个名为tim.desktop的文件,写入以下内容:
 +
{{hc|tim.desktop|
 +
<nowiki>[Desktop Entry]
 +
Encoding=UTF-8
 +
Version=1
 +
Name=TIM
 +
Comment=Tencent TIM
 +
Exec=wine '~/.wine/drive_c/Program Files/Tencent/TIM/Bin/TIM.exe'
 +
Icon=~/.wine/drive_c/Program Files/Tencent/TIM/TIMUninst.ico
 +
Terminal=false
 +
Type=Application
 +
Categories=Network;</nowiki>}}
  
已知问题:
+
将 {{ic|tim.desktop}} 移动到{{ic|~/.local/share/applications}}或{{ic|/usr/share/applications}}文件夹下即可。}}
  
* GIF 动画显示不正常
+
== 提示与技巧 ==
* 输入法光标跟随无效。输入法的提示窗口总是位于输入框下方
 
* 截图仅能截取一个屏幕,在双显示器时会有问题。快捷键仅在 Wine 程序拥有焦点时可以工作
 
* 偶尔可能会假死或者崩溃(在 CrossOver 版本中非常少见)
 
* 在 [[Awesome]] 下(特别是双显示器的扩展屏上时),鼠标拖动窗口上边缘可能导致窗口乱跑
 
* 安装界面部分文本在点击后、鼠标经过时变为白色
 
* 托盘右键菜单弹出后,点击 Wine 之外的程序它并不会自动消失
 
  
Wine TM2013 Wine 环境大小为 227.8MiB,[[p7zip|7z]] 压缩后为 67.1MiB。
+
=== HiDPI 支持 ===
 +
在 HiDPI 显示器上,QQ/TIM 的界面可能会过小。在较新版本的 QQ/TIM 中已经加入了对 HiDPI 的支持。只需手动调整 Wine 的 DPI 即可。
  
===CrossOver TM2013===
+
执行 {{ic|winecfg}},在打开的窗口中切换到'''显示'''选项卡并调整 DPI。
 +
{{注意|如果您使用的不是默认的 Wine 容器(例如使用了deepin QQ/TIM),那么需要在执行 {{ic|winecfg}} 时指定{{ic|WINEPREFIX}} 变量。例如{{ic|1=env WINEPREFIX=$HOME/.deepinwine/Deepin-QQ winecfg}} 或是 {{ic|1=env WINEPREFIX=$HOME/.deepinwine/Deepin-TIM winecfg}}。}}
  
关于 [[CrossOver]] 版本的 TM2013 相关信息参见[http://www.codeweavers.com/support/forums/general/?t=37;msg=151682 此处]。除了更加稳定之外,和自行 Wine 的版本没有明显区别。
+
=== 平铺式窗口管理器下的配置 ===
  
===Awesome 下的配置===
+
==== Awesome ====
Wine QQ/TM 在平铺式窗口管理器下可能不太听话。以下是一些 [[Awesome (简体中文)]] 配置,其作用为:
+
Wine QQ/TM 在平铺式窗口管理器下可能不太听话。以下是一些 [[Awesome (简体中文)|Awesome]] 配置,其作用为:
  
 
* 将所有 TM 的窗口设置为浮动
 
* 将所有 TM 的窗口设置为浮动
 
* 清除不需要的窗口边框、避免菜单弹出时焦点移动到菜单上
 
* 清除不需要的窗口边框、避免菜单弹出时焦点移动到菜单上
* 在使用标签式会话窗口时,增加[http://blog.lilydjwg.me/2013/11/15/switch-tabs-with-alt-num-in-wined-tm-exe-in-awesome.41729.html 使用 Alt+数字来切换标签页]的快捷键(需要安装 [[xdotool]])
+
* 在使用标签式会话窗口时,增加[https://blog.lilydjwg.me/2013/11/15/switch-tabs-with-alt-num-in-wined-tm-exe-in-awesome.41729.html 使用 Alt+数字来切换标签页]的快捷键(需要安装 [[xdotool]])
 
* 自动关闭弹出的新闻窗口
 
* 自动关闭弹出的新闻窗口
  
Line 279: Line 219:
 
[https://github.com/lilydjwg/myawesomerc 一个完整的 Awesome 配置]。
 
[https://github.com/lilydjwg/myawesomerc 一个完整的 Awesome 配置]。
  
===i3 下的配置===
+
==== i3 ====
  
原生配置下,启动 {{ic|qq2012}} 时会自动最大化,且边框不美观,可在 [[i3 (简体中文)]] 的 {{ic|config}} 设置如下两条规则以改善:
+
原生配置下,启动 {{ic|qq2012}} 时会自动最大化,且边框不美观,可在 [[i3]] 的 {{ic|config}} 设置如下两条规则以改善:
  
 
  for_window [instance="QQ.exe"] floating enable
 
  for_window [instance="QQ.exe"] floating enable
 
  for_window [instance="QQ.exe"] border none
 
  for_window [instance="QQ.exe"] border none
  
 +
== 疑难解答 ==
 +
 +
=== 字体配置 ===
 +
如果中文的显示遇到问题,可以尝试先执行{{ic|winetricks fakechinese}}。
 +
 +
另请参阅 [[Wine#Fonts]] 和 [[Font configuration#Applications without fontconfig support]]。
 +
 +
=== 文件被占用 ===
 +
 +
杀死 QQ 或 TIM 的进程即可。
 +
在退出 QQ/TIM 之后,某些相关进程仍然在后台运行。也可以使用如下脚本来启动 QQ/TIM,它会首先查找已有的进程,杀死该进程后启动新的 QQ/TIM。
 +
 +
{{hc|start-tim.sh|
 +
#!/bin/sh
 +
# script to start TIM
 +
# kill TIM before start TIM
 +
for pid in `pgrep TIM.exe`; do
 +
if [ -n ${pid} ]; then
 +
kill ${pid}
 +
fi
 +
done
 +
# start TIM
 +
wine '~/.wine/drive_c/Program Files/Tencent/TIM/Bin/TIM.exe'
 +
}}
 +
上面的例子适用于 TIM,稍作修改之后即可应用于 QQ。
 +
 +
=== xfce4(xfwm4)下无法输入表情 ===
 +
打开设置管理器-窗口管理器微调-焦点,取消勾选激活焦点防窃取和遵照标准的ICCCM焦点提示即可。
 +
 +
原因是表情窗口获取焦点时会发生不兼容现象。
 +
 +
=== 在非中文 locale 下无法输入中文 ===
 +
修改 {{ic|.desktop}} 文件的 {{ic|Exec}},这个文件一般位于 {{ic|/usr/share/applications/}} 或者 {{ic|~/.local/share/applications/}}。
 +
 +
在 {{ic|Exec}} 行中加入 {{ic|<nowiki>env LC_ALL=zh_CN.UTF-8</nowiki>}}。
 +
例如,原来的 {{ic|Exec}} 为:
 +
Exec=".wine/drive_c/Program Files/QQ/Bin/QQ.exe"
 +
则应改为:
 +
Exec=env LC_ALL=zh_CN.UTF-8 wine ".wine/drive_c/Program Files/QQ/Bin/QQ.exe"
 
==参阅==
 
==参阅==
  

Latest revision as of 22:27, 19 August 2019

QQ 是腾讯公司开发的即时通讯软件,为 ICQ 的仿制品,是中国最流行的 IM 软件。本页面列出了 Linux 下使用 QQ 的各种解决方案。

虚拟机

您可以在虚拟机中运行一个完整的 Windows 系统,并在此中运行 QQ。相比于其他的方案,这种方案出错的几率是最小的,缺点是占用的资源较多。

一般使用 VirtualBox 即可满足需求,也可以参考 Category:Hypervisors 选择其它的虚拟机程序。

提示:
  • 根据许可条款,在每个虚拟设备上运行 Windows 都需要单独的授权。但您可以选择使用微软提供的虚拟机专用系统(免费使用)。
  • 如果您使用 VirtualBox,建议您开启无缝模式,这个功能能让您在宿主机的桌面下无缝操作虚拟机中的窗口。

Wine

Wine 是类 UNIX 系统下运行微软 Windows 程序的"兼容层",可以用它模拟 Windows 环境来运行 QQ/TIM。

警告: Wine QQ/TIM 在平铺式窗口管理器下的样式可能会大规模失控,需要进行额外的配置

Deepin QQ/TIM

Deepin QQ/TIM 是 wine 中相对成熟的方案。几乎开箱即用,bug 较少。

您可以安装deepin-qq-imAURdeepin-wine-timAUR,也可以从 ArchLinux CN 源 安装deepin.com.qq.office或者deepin.com.qq.im。

如果是Arch系KDE/Plasma桌面,请按照这个教程[broken link: invalid section],先安装gnome-settings-daemon,然后将/usr/lib/gsd-xsettings设置为自动启动

Crossover

可以使用 CrossOver 运行 QQ、TM2013 和 TIM。更多详情可以参阅CrossOver的兼容性列表

AppImage

AppImage 是一种把应用打包成单一文件的格式。您可以在[1]下载到封装好的 Wine QQ/TIM。只需要赋予可执行权限即可使用。由于 AppImage 格式附带了程序所需要的依赖,所以这种方式受系统中其他组件版本的影响最小。

注意: 由于 AppImage 不使用系统的 Wine,所以对 Wine 的调整可能无效,例如#HiDPI 支持

清风老师的 Wine QQ 方案

您也可以使用清风老师 提供的 Wine QQ 方案。

注意: 安装成功之后要取消勾选 QQ 的自动更新,以免自动更新导致不可用。

手动 Wine 方案

QQ 轻聊版

注意: 此方案使用QQ轻聊版6.7,更高版本在当前wine版本需要额外的调整才能安装。

安装winetrickswine。创建 qqlight.verb 如下:

w_metadata qqlight apps \
 title="QQ Light" \
 publisher="Tencent" \
 year="2015" \
 media="download" \
 file1="QQ6.7Light.exe" \
 installed_exe1="$W_PROGRAMS_X86_WIN/Tencent/QQ/Bin/QQ.exe" \
 homepage="http://www.qq.com" \
 unattended="no"

load_qqlight()
{
    w_download http://dldir1.qq.com/qqfile/qq/QQ6.7Light/13466/QQ6.7Light.exe e1e1ff2bf6461c08047d0a01927a43c5a0746bdf

    if w_workaround_wine_bug 29636 "Installing native riched20 to work around crash bug"
    then
        w_call riched20
    fi

    if w_workaround_wine_bug 34566 "Installing native ctf to work around crash"
    then
        w_call msctf
    fi

    # Make sure chinese fonts are available
    w_call fakechinese

    # uses mfc42u.dll
    w_call mfc42

    cd "$W_CACHE/$W_PACKAGE"
    w_try "$WINE" "$file1"

    # fix crash after login
    mkdir -p ~/.local/share/wineprefixes/qqlight/drive_c/users/$LOGNAME/Application\ Data/Tencent/QQ/Misc/com.tencent.wireless/SDK
    chmod 000 ~/.local/share/wineprefixes/qqlight/drive_c/users/$LOGNAME/Application\ Data/Tencent/QQ/Misc/com.tencent.wireless/SDK

    w_declare_exe "$W_PROGRAMS_X86_WIN\\Tencent\\QQ\\Bin" QQ.exe
}

运行 winetricks 安装:

$ winetricks qqlight.verb

安装完成后通过 wineconsole 启动:

$ wineconsole .wine/drive_c/run-qqlight.bat

TIM

  1. 安装winewine_geckowine-mono
  2. 执行winetricks riched20,也可使用 winecfg 设置函数库顶替。
  3. 中文字体显示见#字体配置
  4. 安装 TIM。
提示: 安装的tim可能没有在程序列表中生成图标。若要自行添加图标,新建一个名为tim.desktop的文件,写入以下内容:
tim.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1
Name=TIM
Comment=Tencent TIM
Exec=wine '~/.wine/drive_c/Program Files/Tencent/TIM/Bin/TIM.exe'
Icon=~/.wine/drive_c/Program Files/Tencent/TIM/TIMUninst.ico
Terminal=false
Type=Application
Categories=Network;
tim.desktop 移动到~/.local/share/applications/usr/share/applications文件夹下即可。

提示与技巧

HiDPI 支持

在 HiDPI 显示器上,QQ/TIM 的界面可能会过小。在较新版本的 QQ/TIM 中已经加入了对 HiDPI 的支持。只需手动调整 Wine 的 DPI 即可。

执行 winecfg,在打开的窗口中切换到显示选项卡并调整 DPI。

注意: 如果您使用的不是默认的 Wine 容器(例如使用了deepin QQ/TIM),那么需要在执行 winecfg 时指定WINEPREFIX 变量。例如env WINEPREFIX=$HOME/.deepinwine/Deepin-QQ winecfg 或是 env WINEPREFIX=$HOME/.deepinwine/Deepin-TIM winecfg

平铺式窗口管理器下的配置

Awesome

Wine QQ/TM 在平铺式窗口管理器下可能不太听话。以下是一些 Awesome 配置,其作用为:

  • 将所有 TM 的窗口设置为浮动
  • 清除不需要的窗口边框、避免菜单弹出时焦点移动到菜单上
  • 在使用标签式会话窗口时,增加使用 Alt+数字来切换标签页的快捷键(需要安装 xdotool
  • 自动关闭弹出的新闻窗口
function myfocus_filter(c)
  if awful.client.focus.filter(c) then
    -- This works with tooltips and some popup-menus
    if c.class == 'Wine' and c.above == true then
      return nil
    elseif c.class == 'Wine'
      and c.type == 'dialog'
      and c.skip_taskbar == true
      and c.size_hints.max_width and c.size_hints.max_width < 160
      then
      -- for popup item menus of Photoshop CS5
      return nil
    else
      return c
    end
  end
end

awful.rules.rules = {
  -- All clients will match this rule.
  {
    rule = { },
    properties = {
      -- 这里使用我们自己的函数
      focus = myfocus_filter,
      -- 以下是默认的部分
      border_width = beautiful.border_width,
      border_color = beautiful.border_normal,
      keys = clientkeys,
      buttons = clientbuttons,
    }
  }, {
    rule_any = { 
      instance = {'TM.exe', 'QQ.exe'},
    },
    properties = {
      -- This, together with myfocus_filter, make the popup menus flicker taskbars less
      -- Non-focusable menus may cause TM2013preview1 to not highlight menu
      -- items on hover and crash.
      focusable = true,
      floating = true,
      -- 去掉边框
      border_width = 0,
    }
  }, {
    -- 其它规则
  }
}

alt_switch_keys = awful.util.table.join(
    -- it's easier for a vimer to manage this than figuring out a nice way to loop and concat
    awful.key({'Mod1'}, 1, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+1') end),
    awful.key({'Mod1'}, 2, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+2') end),
    awful.key({'Mod1'}, 3, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+3') end),
    awful.key({'Mod1'}, 4, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+4') end),
    awful.key({'Mod1'}, 5, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+5') end),
    awful.key({'Mod1'}, 6, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+6') end),
    awful.key({'Mod1'}, 7, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+7') end),
    awful.key({'Mod1'}, 8, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+8') end),
    awful.key({'Mod1'}, 9, function(c) awful.util.spawn('xdotool key --window ' .. c.window .. ' ctrl+9') end)
)
function bind_alt_switch_tab_keys(client)
    client:keys(awful.util.table.join(client:keys(), alt_switch_keys))
end -- }}}

client.connect_signal("manage", function (c, startup)
  -- 其它配置

  if c.instance == 'TM.exe' then
    -- 添加 Alt+n 支持
    bind_alt_switch_tab_keys(c)
    -- 关闭各类新闻通知小窗口
    if c.name and c.name:match('^腾讯') and c.above then
      c:kill()
    end
  end

  -- 其它配置
end)

一个完整的 Awesome 配置

i3

原生配置下,启动 qq2012 时会自动最大化,且边框不美观,可在 i3config 设置如下两条规则以改善:

for_window [instance="QQ.exe"] floating enable
for_window [instance="QQ.exe"] border none

疑难解答

字体配置

如果中文的显示遇到问题,可以尝试先执行winetricks fakechinese

另请参阅 Wine#FontsFont configuration#Applications without fontconfig support

文件被占用

杀死 QQ 或 TIM 的进程即可。 在退出 QQ/TIM 之后,某些相关进程仍然在后台运行。也可以使用如下脚本来启动 QQ/TIM,它会首先查找已有的进程,杀死该进程后启动新的 QQ/TIM。

start-tim.sh
#!/bin/sh
# script to start TIM
# kill TIM before start TIM
for pid in `pgrep TIM.exe`; do
	if [ -n ${pid} ]; then
		kill ${pid}
	fi
done
# start TIM
wine '~/.wine/drive_c/Program Files/Tencent/TIM/Bin/TIM.exe'

上面的例子适用于 TIM,稍作修改之后即可应用于 QQ。

xfce4(xfwm4)下无法输入表情

打开设置管理器-窗口管理器微调-焦点,取消勾选激活焦点防窃取和遵照标准的ICCCM焦点提示即可。

原因是表情窗口获取焦点时会发生不兼容现象。

在非中文 locale 下无法输入中文

修改 .desktop 文件的 Exec,这个文件一般位于 /usr/share/applications/ 或者 ~/.local/share/applications/

Exec 行中加入 env LC_ALL=zh_CN.UTF-8。 例如,原来的 Exec 为:

Exec=".wine/drive_c/Program Files/QQ/Bin/QQ.exe"

则应改为:

Exec=env LC_ALL=zh_CN.UTF-8 wine ".wine/drive_c/Program Files/QQ/Bin/QQ.exe"

参阅