腾讯QQ
QQ 是腾讯公司开发的即时通讯软件,是对 ICQ 的模仿,也是中国流行的 IM 软件。本页面列出了 Arch Linux 上使用 QQ 的各种方案。
原生 Linux 版本
官方 Electron 驱动的 Linux 版本已经可用。要使用它,请安装 linuxqqAUR。
虚拟机
您可以在虚拟机中运行完整的 Windows 系统,并在其中运行 QQ。与其他方案相比,此方案出错的几率最小。缺点是占用更多资源。
- 根据 许可条款[死链接 2024-10-12 ⓘ],在每个虚拟设备上运行 Windows 都需要单独授权。但是您可以选择使用 微软提供的虚拟机专用系统[死链接 2024-01-13 ⓘ](免费使用)。
- 如果您使用 VirtualBox,建议您启用 无缝模式,此功能允许您在主机桌面下无缝操作虚拟机中的窗口。
Wine
Wine 是一个“兼容层”,可以在类 UNIX 系统下运行 Microsoft Windows 程序,它可以用于模拟 QQ 环境以运行 QQ/TIM。
Deepin QQ/TIM
Deepin QQ/TIM 是 Wine 中相对成熟的解决方案。几乎开箱即用,bug 较少。
您可以安装普通 QQ: deepin-wine-qqAUR 或 TIM: com.qq.office.deepinAUR (或 com.qq.tim.sparkAUR 来自 Spark 商店),也可以从 Arch Linux CN 源 安装普通 QQ: deepin.com.qq.im
或 TIM: deepin.com.qq.office
。
或者您可以安装轻聊版: deepin.com.qq.im.lightAUR。
对于 KDE/Plasma 桌面,请参阅 Deepin-wine#Deepin-wine 应用程序启动失败。
Crossover
您可以使用 CrossOver 运行 QQ、TM2013 和 TIM。有关更多详细信息,请参阅 CrossOver 的兼容性列表。
AppImage
AppImage 是一种将应用程序打包成单个文件的格式。您可以在 [1] 中下载打包好的 Wine QQ/TIM。只需给予可执行权限即可使用。由于 AppImage 格式自带程序所需的依赖项,因此这种方法受系统中其他组件版本的影响最小。
青风老师 Wine QQ 程序
您也可以使用 青风老师 提供的 Wine QQ 程序。
手动 Wine 方案
QQ 轻聊版
安装 winetricks 和 wine。创建 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="https://www.qq.com" \ unattended="no" load_qqlight() { w_download https://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
安装 wine、 wine-gecko 和 wine-mono。
执行 winetricks riched20
,或使用 winecfg
设置函数库替换。
您可能需要配置中文字体显示,请参阅 #字体配置。
安装 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。
winecfg
时需要指定 WINEPREFIX
变量。例如,env WINEPREFIX=$HOME/.deepinwine/Deepin-QQ deepin-wine winecfg
或 env WINEPREFIX=$HOME/.deepinwine/Deepin-TIM deepin-wine winecfg
。平铺窗口管理器下的配置
Awesome
Wine QQ/TM 在平铺窗口管理器下可能会失控,需要进行一些配置。
以下配置具有这些效果
- 将所有 TM 窗口设置为浮动。
- 清除不必要的窗口边框,以防止在弹出菜单时焦点移动到菜单。
- 当使用选项卡式会话窗口时,增加 使用数字切换 Alt+数字 快捷键,需要安装 xdotool。
- 自动关闭弹出的新闻窗口。
将以下内容添加到 Awesome 配置中
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 = { -- we use our own function focus = myfocus_filter, -- The following is the default part 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, -- remove the border border_width = 0, } }, { -- Other rules } } 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) -- other configuration if c.instance == 'TM.exe' then -- add Alt+n support bind_alt_switch_tab_keys(c) -- close all kinds of news notification small windows if c.name and c.name:match('^腾讯') and c.above then c:kill() end end -- other configuration end)
您还可以查看完整的 Awesome 配置。
i3
在原生配置中,当 qq2012
启动时,它将自动最大化,并且边框不美观。可以在 i3 config
设置中设置以下两个规则来改进
for_window [instance="QQ.exe"] floating enable for_window [instance="QQ.exe"] border none
故障排除
字体配置
如果您在显示中文时遇到问题,可以先尝试执行 winetricks fakechinese
。
另请参阅 字体 和 字体配置#不支持 Fontconfig 的应用程序。
文件被占用
只需杀死 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"
使用高刷新率显示器时屏幕闪烁
请参阅 Chromium#尽管使用更高刷新率的显示器,Chromium 仍以 60 FPS 渲染。
原生 Linux 版本的热更新
原生 Linux 版本的 QQ 有时会通知用户下载热更新。这些更新下载到 ~/.config/QQ/versions/
,可以通过重启应用程序快速应用。但是,这种机制在 Arch Linux 上经常遇到问题。
热更新后出现空白登录页
如果 QQ 在热更新后显示空白登录页,请删除 ~/.config/QQ/versions/version/libssh2.so.1
并重启 QQ。如果无效,请尝试 #从热更新回滚
从热更新回滚
如果您出于任何原因想要从热更新版本回滚,请将当前版本添加到 ~/.config/QQ/versions/config.json
中的 onErrorVersions
,并将 curVersion
更改为上一个好版本,然后重启 QQ。下次,QQ 将使用 curVersion
中指定的版本启动,并且不会在 onErrorVersions
中请求更新。
参见
- openSUSE wiki
- 网页端 QQ 群空间 当使用的 QQ 客户端不支持群空间时,可以使用此服务代替。
- IM QQ-QQ 手机版 移动端也是一种替代方案。
- hillwoodroc/winetricks-zh hillwoodroc/winetricks-zh