Tencent QQ

提供: ArchWiki
2024年9月4日 (水) 20:59時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎Tips and tricks: 翻訳)
ナビゲーションに移動 検索に移動

QQ は Tencent が開発したインスタントメッセージングソフトウェアで、ICQ の模倣品であり、中国で人気のある IM ソフトウェアです。このページでは、Arch Linux で QQ を使用するためのさまざまなソリューションを紹介しています。

公式バージョン

公式バージョンは既に利用可能です。公式バージョンを使用するには、linuxqqAUR をインストールしてください。

ノート: 公式バージョンでは通常の QQ を提供していますが、TIM には公式バージョンがありません。TIM を使用したい場合は、Wine ソリューションを利用してください。

仮想マシン

完全な Windows システムを仮想マシン上で実行し、その中で QQ を動作させることができます。この方法は、他の方法と比べてエラーの発生確率が最も低いです。デメリットは、より多くのリソースを消費することです。

ヒント:
  • ライセンス条項 によると、各仮想デバイスで Windows を実行するには個別のライセンスが必要です。ただし、Microsoft が提供する仮想マシン専用システム[リンク切れ 2024-01-13](無料で使用可能)を選択することができます。
  • VirtualBox を使用する場合は、シームレスモード を有効にすることをお勧めします。この機能により、ホストデスクトップ上で仮想マシンのウィンドウをシームレスに操作できます。

Wine

この記事またはセクションは情報が古くなっています。
理由: Wine ベースの QQ の上流は、公式の Linux バージョンがリリースされて以来、長い間更新されていません。基本的に古い QQ バージョンのため動作しません。 (Discuss)

Wine は、UNIX 系システム上で Microsoft Windows プログラムを実行するための「互換レイヤー」であり、QQ/TIM を実行するための環境をエミュレートするのに使用できます。

警告: タイル型ウィンドウマネージャーでは、Wine QQ/TIM のウィンドウスタイルが制御不能になる場合があり、追加設定が必要です。

Deepin QQ/TIM

Deepin QQ/TIM は、Wine 上で比較的成熟したソリューションで、ほぼそのまま使用でき、バグも少ないです。

通常の QQ をインストールするには deepin-wine-qqAUR を、TIM をインストールするには com.qq.office.deepinAUR(または Spark Store から com.qq.tim.sparkAUR)を使用することができます。または、Arch Linux CN ソース から通常の QQ を deepin.com.qq.im、または TIM を deepin.com.qq.office としてインストールできます。

軽量バージョンをインストールするには、deepin.com.qq.im.lightAUR を使用します。

KDE/Plasma デスクトップ環境の場合は、Deepin-wine#Deepin-wine applications fails to start を参照してください。

Crossover

CrossOver を使用して、QQ、TM2013、TIM を実行することもできます。詳細は CrossOver の互換性リスト を参照してください。

AppImage

AppImage は、アプリケーションを 1 つのファイルにパッケージ化する形式です。パッケージ化された Wine QQ/TIM を [1] からダウンロードできます。実行権限を与えるだけで使用できます。AppImage 形式にはプログラムに必要な依存関係が含まれているため、この方法はシステムの他のコンポーネントのバージョンに最も影響されにくいです。

ノート: AppImage はシステムの Wine を使用しないため、Wine の設定変更が無効になる場合があります(例: #HiDPI support)。

Teacher Qingfeng の Wine QQ プログラム

Teacher Qingfeng が提供する 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="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 "クラッシュバグを回避するためにネイティブ riched20 をインストール"
    then
        w_call riched20
    fi

    if w_workaround_wine_bug 34566 "クラッシュを回避するためにネイティブ ctf をインストール"
    then
        w_call msctf
    fi

    # 中国語フォントが利用可能であることを確認する
    w_call fakechinese

    # mfc42u.dll を使用
    w_call mfc42

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

    # ログイン後のクラッシュ修正
    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

winewine-geckowine-mono をインストールします。

winetricks riched20 を実行するか、winecfg を使用して機能ライブラリの置換を設定します。

中国語フォントの表示を構成する必要がある場合があります。詳細は #Font configuration を参照してください。

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 deepin-wine winecfg または env WINEPREFIX=$HOME/.deepinwine/Deepin-TIM deepin-wine winecfg

タイル型ウィンドウマネージャーでの設定

Awesome

タイル型ウィンドウマネージャーでは、Wine QQ/TIM が制御不能になる場合があり、いくつかの設定が必要です。

以下の設定には次の効果があります:

  • すべての TM ウィンドウをフローティングに設定。
  • 不必要なウィンドウの境界線を削除し、メニューがポップアップしたときにフォーカスがメニューに移動するのを防ぐ。
  • タブ付きの会話ウィンドウを使用すると、デジタルスイッチ Alt+Number ショートカットキーが有効になり、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)

You can also look at the complete Awesome configuration.

i3

デフォルトの設定では、qq2012 を起動すると自動的に最大化され、境界線が美しくありません。i3config 設定で、次の 2 つのルールを設定することで改善できます:

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

Troubleshooting

Font configuration

If you have problems displaying Chinese, you can try to execute winetricks fakechinese first.

See also fonts and Applications without fontconfig support

File is occupied

Just kill the process of QQ or TIM. After exiting QQ/TIM, some related processes are still running in the background. You can also use the following script to start QQ/TIM, it will first find the existing process, kill the process and start a new 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'

The above example is applicable to TIM, and can be applied to QQ after a little modification.

Unable to input emoticons under xfce4 (xfwm4)

Open the Settings Manager-Window manager tuning-focus, uncheck the ICCCM focus prompt to activate focus anti-theft and follow the standard.

The reason is that incompatibility occurs when the emoji window gains focus.

Cannot enter Chinese under non-Chinese locale

Modify the Exec of the .desktop file, which is usually located in /usr/share/applications/, but must be copied to ~/.local/share/applications/ in order to not get overwritten.

Add env LC_ALL=zh_CN.UTF-8 to the Exec line. For example, the original Exec was:

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

Should be changed to:

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

Screen flicker when using a monitor with high refresh rate

See Chromium#Chromium rendering at 60 FPS despite using a display with a higher refresh rate.

See also