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

From ArchWiki
Jump to navigation Jump to search
(调整顺序)
(Wine 模拟: 重写)
Line 12: Line 12:
 
* 如果您使用 VirtualBox,建议您开启'''[https://www.virtualbox.org/manual/ch04.html#seamlesswindows 无缝模式]''',这个功能能让您在宿主机的桌面下无缝操作虚拟机中的窗口。}}
 
* 如果您使用 VirtualBox,建议您开启'''[https://www.virtualbox.org/manual/ch04.html#seamlesswindows 无缝模式]''',这个功能能让您在宿主机的桌面下无缝操作虚拟机中的窗口。}}
  
==Wine 模拟==
+
== Wine ==
  
[[Wine (简体中文)]] 是类 UNIX 系统下运行微软 Windows 程序的"兼容层",可以用它模拟 Windows 环境来运行 QQ/TM。
+
[[Wine (简体中文)| Wine]] 是类 UNIX 系统下运行微软 Windows 程序的"兼容层",可以用它模拟 Windows 环境来运行 QQ/TIM。
  
 
{{警告|
 
{{警告|
 
* 受 wine 上游的一个[https://bugs.winehq.org/show_bug.cgi?id=45199 Bug] 影响,官方仓库中提供的 {{Pkg|wine}} 自3.8开始无法运行许多程序,包括 QQ 和 TIM。截止3.15-1版本此问题仍未修复。您可以将{{Pkg|wine}}[[Downgrading packages (简体中文)|降级]]到3.7来绕过这个问题。也可以按照{{Bug|58833}},使用[[Arch Build System (简体中文)|ABS]]修改编译参数之后重新编译安装{{Pkg|wine}}。
 
* 受 wine 上游的一个[https://bugs.winehq.org/show_bug.cgi?id=45199 Bug] 影响,官方仓库中提供的 {{Pkg|wine}} 自3.8开始无法运行许多程序,包括 QQ 和 TIM。截止3.15-1版本此问题仍未修复。您可以将{{Pkg|wine}}[[Downgrading packages (简体中文)|降级]]到3.7来绕过这个问题。也可以按照{{Bug|58833}},使用[[Arch Build System (简体中文)|ABS]]修改编译参数之后重新编译安装{{Pkg|wine}}。
* Wine QQ/TIM 在平铺式窗口管理器下的样式可能会大规模失控,需要进行额外的配置。}}
+
* Wine QQ/TIM 在平铺式窗口管理器下的样式可能会大规模失控,需要进行[[#平铺式窗口管理器下的配置|额外的配置]]。}}
  
===Wine QQ===
+
=== Deepin QQ/TIM ===
  
目前较为成熟的 Wine 模拟方案为{{aur|deepin-qq-im}},也可以从 [https://www.archlinuxcn.org/archlinux-cn-repo-and-mirror/ ArchLinux CN 源] 安装 deepin-qq-im。
+
Deepin QQ/TIM 是 wine 中相对成熟的方案。几乎开箱即用,bug 较少。
  
之前比较好的解决方案有 [http://phpcj.org/wineqq/ 清风老师] 提供的 Wine QQ 方案等。
+
您可以安装{{aur|deepin-qq-im}}或{{aur|deepin-wine-tim}},也可以从 [https://www.archlinuxcn.org/archlinux-cn-repo-and-mirror/ ArchLinux CN 源] 安装。
 +
 
 +
=== Crossover ===
 +
 
 +
可以使用 [[CrossOver]] 运行 QQ、TM2013 和 TIM。更多详情可以参阅[https://www.codeweavers.com/compatibility CrossOver的兼容性列表]。
 +
 
 +
=== AppImage ===
 +
 
 +
AppImage 是一种把应用打包成单一文件的格式。您可以在[https://github.com/askme765cs/Wine-QQ-TIM]下载到封装好的 Wine QQ/TIM。只需要赋予可执行权限即可使用。由于 AppImage 格式附带了程序所需要的依赖,所以这种方式受系统中其他组件版本的影响最小。
 +
{{注意|由于 AppImage 不使用系统的 Wine,所以对 Wine 的调整可能无效,例如[[#HiDPI 支持]]。}}
 +
 
 +
=== 清风老师的 Wine QQ 方案 ===
 +
 
 +
您也可以使用[http://phpcj.org/wineqq/ 清风老师] 提供的 Wine QQ 方案。
  
 
{{注意|  
 
{{注意|  
 
*如果系统默认不是中文环境可能无法输入中文,解决方法是修改启动文件的{{ic|Exec}}:
 
*如果系统默认不是中文环境可能无法输入中文,解决方法是修改启动文件的{{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"}}
 
{{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|Mono}}库。如果安装失败,可以首先删除{{ic|$HOME/.wine}}并卸载所有 Wine 相关的包后重启系统,得到一个相对干净的环境再尝试按上面博客的步骤进行安装。
 
  
 
*安装成功之后要取消勾选 QQ 的自动更新,以免自动更新导致不可用。
 
*安装成功之后要取消勾选 QQ 的自动更新,以免自动更新导致不可用。
 
}}
 
}}
  
=== Wine QQ 轻聊版 ===
+
=== 手动 Wine 方案 ===
 +
 
 +
==== QQ 轻聊版 ====
  
{{注意|此方案使用QQ轻聊版6.7,更高版本在当前wine版本需要[https://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 81: Line 94:
 
  }
 
  }
  
运行 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 TIM ===
+
==== TIM ====
[http://im.qq.com/download/ TIM]是腾讯推出的主打办公协同的QQ版本。
 
 
 
同时,在 AUR 中,仍有已经稳定成熟的模拟方案:{{aur|deepin-wine-tim}}。当然,你也可以选择按下文的方法手动安装配置。
 
 
 
==== 安装前的准备 ====
 
{{提示|如果使用crossover内建的TIM可忽略该准备步骤。}}
 
可参考[[Wine (简体中文)]]
 
* 安装{{pkg|wine}}、{{pkg|wine_gecko}} 和 {{pkg|wine-mono}}
 
$ pacman -S wine wine_gecko wine-mono winetricks
 
* 使用内建函数库
 
打开winecfg,在函数库一项中的“新增函数库顶替”中选择添加riched20,也可也执行以下命令添加:
 
$ winetricks riched20
 
* 中文字体显示
 
可以提供windows字体[[Font configuration#Applications without fontconfig support]]或使用linux的字体,方法如下:
 
{{警告|经测试,使用文泉驿和思源黑体,均出现部分位置文字内容无法显示的情况(但影响很小)}}
 
{{提示|默认显示dpi为96,可能使文字显示毛躁不清,可在winecfg的“显示”选项卡中将dpi适当调高(例如缩放125%则为120,缩放150%则为144)。}}
 
新建一个reg文件,例如名为wine-fonts.reg,写入如下内容:
 
 
 
REGEDIT4
 
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink]
 
"Lucida Sans Unicode"="wqy-microhei.ttc"
 
"Microsoft Sans Serif"="wqy-microhei.ttc"
 
"Microsoft YaHei"="wqy-microhei.ttc"
 
"MS Sans Serif"="wqy-microhei.ttc"
 
"Tahoma"="wqy-microhei.ttc"
 
"Tahoma Bold"="wqy-microhei.ttc"
 
"SimSun"="wqy-microhei.ttc"
 
"Arial"="wqy-microhei.ttc"
 
"Arial Black"="wqy-microhei.ttc"
 
"宋体"="wqy-microhei.ttc"
 
"新細明體"="wqy-microhei.ttc"
 
 
 
 
 
保存后运行:
 
  $ wine regedit
 
打开regedit图形界面,点击注册表-导入注册表文件,然后选择wine-fonts.reg即可。
 
 
 
==== 安装及配置 ====
 
 
 
* 安装tim
 
使用wine安装tim。可以使用右键菜单中的“运行程”序运行tim的exe文件进行安装,也可以使用命令行:
 
  $ wine tim.exe
 
 
 
* 增加启动菜单项
 
安装的tim可能没有在程序列表中生成图标。自行添加图标,新建一个名为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;
 
 
 
 
 
其中comment是程序介绍,Exec是执行命令,Icon是要显示的图表,可以根据实际情况进行修改。(自带的ico图表不太清晰,可下载[https://sqimg.qq.com/qq_product_operations/eim/site/img/share.png 该图标文件]更换)
 
将tim.desktop移动到~/.local/share/applications或/usr/share/applications文件夹下即可。
 
 
 
{{注意|desktop entry 有时无法使用,需要将里面的相对路径改成绝对路径。}}
 
 
 
==== 相关问题解决 ====
 
* 文件被占用
 
打开进程管理器,杀死 TIM.exe 进程即可。
 
原因是退出tim后,某些相关进程仍然在后台运行。也可以使用如下脚本来启动 TIM,它会首先查找已有的 TIM.exe 进程,杀死该进程后启动新的 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.desktop 中的 {{ic|Exec}} 的值改为 {{ic|start-tim.sh}} 即可.
 
 
 
* xfce4(xfwm4)下无法输入表情
 
打开设置管理器-窗口管理器微调-焦点,取消勾选激活焦点防窃取和遵照标准的ICCCM焦点提示即可。
 
原因是表情窗口获取焦点时会发生不兼容现象。
 
 
 
===CrossOver TM2013===
 
 
 
关于 [[CrossOver]] 版本的 TM2013 相关信息参见[http://www.codeweavers.com/support/forums/general/?t=37;msg=151682 此处]。除了更加稳定之外,和自行 Wine 的版本没有明显区别。
 
 
 
===Awesome 下的配置===
 
Wine QQ/TM 在平铺式窗口管理器下可能不太听话。以下是一些 [[Awesome (简体中文)]] 配置,其作用为:
 
 
 
* 将所有 TM 的窗口设置为浮动
 
* 清除不需要的窗口边框、避免菜单弹出时焦点移动到菜单上
 
* 在使用标签式会话窗口时,增加[https://blog.lilydjwg.me/2013/11/15/switch-tabs-with-alt-num-in-wined-tm-exe-in-awesome.41729.html 使用 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)
 
 
 
[https://github.com/lilydjwg/myawesomerc 一个完整的 Awesome 配置]。
 
  
===i3 下的配置===
+
# 安装{{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|qq2012}} 时会自动最大化,且边框不美观,可在 [[i3 (简体中文)]] 的 {{ic|config}} 设置如下两条规则以改善:
+
{{ic|tim.desktop}} 移动到{{ic|~/.local/share/applications}}或{{ic|/usr/share/applications}}文件夹下即可。}}
  
for_window [instance="QQ.exe"] floating enable
 
for_window [instance="QQ.exe"] border none
 
 
==基于 WebQQ==
 
==基于 WebQQ==
  

Revision as of 17:42, 20 September 2018

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

虚拟机

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

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

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

Wine

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

警告:
  • 受 wine 上游的一个Bug 影响,官方仓库中提供的 wine 自3.8开始无法运行许多程序,包括 QQ 和 TIM。截止3.15-1版本此问题仍未修复。您可以将wine降级到3.7来绕过这个问题。也可以按照FS#58833,使用ABS修改编译参数之后重新编译安装wine
  • Wine QQ/TIM 在平铺式窗口管理器下的样式可能会大规模失控,需要进行额外的配置

Deepin QQ/TIM

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

您可以安装deepin-qq-imAURdeepin-wine-timAUR,也可以从 ArchLinux CN 源 安装。

Crossover

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

AppImage

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

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

清风老师的 Wine QQ 方案

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

注意:
  • 如果系统默认不是中文环境可能无法输入中文,解决方法是修改启动文件的Exec:
$HOME/.local/share/applications/wine-QQ.desktop
Exec=env LC_ALL=zh_CN.UTF-8 wine ".wine/drive_c/Program Files/QQ/Bin/QQ.exe"
  • 安装成功之后要取消勾选 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文件夹下即可。

基于 WebQQ

SmartQQ

SmartQQ 是腾讯推出的网页端 QQ,它高度模仿微信风格,功能欠完善,高度依赖网络环境,而且需要通过手机客户端扫描二维码登录。

将 Google Chrome 的把网站做为应用程序与其桌面提醒功能整合,也可以打造一个实用的 QQ 软件:

  1. 安装并运行 Chromium (简体中文)或者火狐浏览器firefox,并打开 SmartQQ,需要手机QQ客户端扫描二维码登陆,功能少。

weechat-webqq

注意: 也可选择其它支持IRC协议的聊天客户端

WeeChat 可使用的 QQ 插件脚本,使用 perl语言开发的 Mojo-Webqq库,基于 smartqq 协议 。 源码脚本可访问 weechat-webqq 获取

SmartIM

SmartIM 是一个用java写的,包含简单的IM API封装的小程序,支持SmartQQ、微信。不过遗憾的是仍然需要扫描二维码。

不支持图片,视频,表情和语音,不过支持依赖第三方服务器的文件传输。

使用方法:只需将jar包下载下来,然后安装java-openjdk之后,就可以在终端通过“java -jar”的方式直接运行了。

Github 地址: Jamling/SmartIM

参阅