有馬総一郎のブログ

(彼氏の事情)

2024年02月27日 07:30:57 JST - 4 minute read - Comments - Linux

dokcer-wineで日本語入力が出来る状態でWindows版LINEを起動する

Chrome拡張機能のLINEを使っていると、「ネットワーク回線が不安定です」みたいな表示がよく表示されて、文字どおり不安定なのでWindows版LINEを使いたい。とはいえ、その為に依存パッケージが多い1wineをインストールするのは気が引ける。ので、 docker-wineを使ってみることにした。


追記 2024-02-27
LINEに限っていえば Bottlesを使う方がオススメ

追記ここまで


LINE

やり方は Docker+WineでKindleアプリを立ち上げる #Docker - Qiitaを参考にした。やはり、 docker-wineadd_run_arg --ipc=hostを追記しないと駄目だった。引っ張ってくるdocker imageはstable-7.0.1-20230115でなくても、LINEは問題なかったので最新をそのまま使っている。

起動するとメインディスプレイがHiDPIのためか、文字が小さい。なので、 wine font size 変更 – weblogを参考にwinecfgでwine設定を起動して、画面タブからdpi値を 192 とした。

winecfg

そのままだと、日本語入力が出来ない。 Wineの日本語設定 : Windowsはもういらないを参考に

[Software\\Wine\\X11 Driver]
"InputStyle"="root"

としても駄目。レジストエディタからHKEY_CURRENT_USER\Software\Wine\X11 Driverを開きInputStyleの値を変更しても駄目。これはdockerの問題だと気付き、 Dockerコンテナ上のGUIアプリで日本語入力する(Linux)を参考に追記した。結果として、以下のようになった。

docker-wine

    # Run in X11 forwarding mode on Linux
    elif [ "$(uname)" == "Linux" ]; then

        # Store the X11 key for the display in ~/.docker-wine.Xkey and add to run args
        add_x11_key "$DISPLAY"

        # Configure sound output
        configure_sound "linux"

        # Add Linux run args
        add_run_arg --env="DISPLAY"
        add_run_arg --volume="/tmp/.X11-unix:/tmp/.X11-unix:ro"
        # im
        add_run_arg --env="XMODIFIERS" # XクライアントにIMを伝える
        add_run_arg --env="GTK_IM_MODULE" # GTKアプリにIMを伝える
        add_run_arg --env="QT_IM_MODULE"  # QTアプリにIMを伝える
        add_run_arg --env="DefalutIMModule=ibus" # IMを伝える
        add_run_arg --env="DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus" # プロセス間通知のためのパスを伝える
        # im
        add_run_arg --volume="/run/user/1000/bus:/run/user/1000/bus" #プロセス間通信のためのパスを共有する
        # line
        add_run_arg --ipc=host

        run_container "interactive"

LINEの場合は"InputStyle"="onthespot"で問題なく、その方が入力しやすいのでそうしている。

regedit

本当は音も出るようにしたいのだけど、そもそもdocker起動時にINFO: pulseaudio not installed so running without soundというメッセージが表示されている。本来であれば、dokcer-wineのオプションとして--sound=OPTIONがあるのだけど、使っても駄目だった。2

それから、参考にしたサイトのように起動するだけで、LINEを自動実行させようと以下のファイルを作ってdocker-wine /home/wineuser/execLINE.shとしたけど駄目だった。dockerwine wine C:\\\\users\\\\wineuser\\\\AppData\\\\Local\\\\LINE\\\\bin\\\\LineLauncher.exeとしても駄目。起動前後にsleep 5など入れても駄目だった。

#!/bin/sh
wine '/home/wineuser/.wine/drive_c/users/wineuser/AppData/Local/LINE/bin/LineLauncher.exe'

しょうがないので、 ~/.bashrc に書き込んだら、それは成功した。

ただ、--nottyのオプションを使うとLINEが起動しない。なので、./docker-wine > /dev/null 2>&1 &と実行。ちゃんとバックグラウンド実行された。LINE終了したいときはdocker stop wineでOK。

ただ、desktopファイルを作成して、 docker-wine を叩くようにしたのだけど、ターミナルが残り続ける形でないと起動できない。アプリランチャーから起動させることは諦めた。

課題はいくつか残っているがこれでLINEを使っていくこととしてみる。 Bottlesで起動することにした。


  1. 以下のパッケージが新たにインストールされます: fonts-wine gcc-12-base:i386 glib-networking:i386 gstreamer1.0-plugins-base:i386 gstreamer1.0-plugins-good:i386 gstreamer1.0-x:i386 krb5-locales libaa1:i386 libapparmor1:i386 libasound2:i386 libasound2-plugins:i386 libasyncns0:i386 libatomic1:i386 libavahi-client3:i386 libavahi-common-data:i386 libavahi-common3:i386 libavc1394-0:i386 libblkid1:i386 libbrotli1:i386 libbsd0:i386 libbz2-1.0:i386 libc6:i386 libcaca0:i386 libcairo-gobject2:i386 libcairo2:i386 libcap2:i386 libcapi20-3 libcapi20-3:i386 libcdparanoia0:i386 libcom-err2:i386 libcrypt1:i386 libcups2:i386 libcurl4:i386 libdatrie1:i386 libdb5.3:i386 libdbus-1-3:i386 libdecor-0-0:i386 libdecor-0-plugin-1-cairo:i386 libdeflate0:i386 libdrm-amdgpu1:i386 libdrm-intel1:i386 libdrm-nouveau2:i386 libdrm-radeon1:i386 libdrm2:i386 libdv4:i386 libdw1:i386 libedit2:i386 libelf1:i386 libexif12:i386 libexpat1:i386 libfaudio0 libfaudio0:i386 libffi8:i386 libflac8:i386 libfontconfig1:i386 libfreetype6:i386 libfribidi0:i386 libgbm1:i386 libgcc-s1:i386 libgcrypt20:i386 libgd3:i386 libgdk-pixbuf-2.0-0:i386 libgl1:i386 libgl1-mesa-dri:i386 libglapi-mesa:i386 libglib2.0-0:i386 libglvnd0:i386 libglx-mesa0:i386 libglx0:i386 libgmp10:i386 libgnutls30:i386 libgpg-error-l10n libgpg-error0:i386 libgphoto2-6:i386 libgphoto2-port12:i386 libgpm2:i386 libgraphite2-3:i386 libgsm1:i386 libgssapi-krb5-2:i386 libgstreamer-plugins-base1.0-0:i386 libgstreamer-plugins-good1.0-0:i386 libgstreamer1.0-0:i386 libgudev-1.0-0:i386 libharfbuzz0b:i386 libhogweed6:i386 libicu70:i386 libidn2-0:i386 libiec61883-0:i386 libjack-jackd2-0:i386 libjbig0:i386 libjpeg-turbo8:i386 libjpeg8:i386 libk5crypto3:i386 libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 liblcms2-2:i386 libldap-2.5-0:i386 libldap-common libllvm15:i386 libltdl7:i386 liblz4-1:i386 liblzma5:i386 libmd0:i386 libmount1:i386 libmp3lame0:i386 libmpg123-0:i386 libncurses6:i386 libncursesw6:i386 libnettle8:i386 libnghttp2-14:i386 libnsl2:i386 libnss-nis:i386 libnss-nisplus:i386 libodbc2:i386 libogg0:i386 libopenal1:i386 libopus0:i386 liborc-0.4-0:i386 libosmesa6 libosmesa6:i386 libp11-kit0:i386 libpango-1.0-0:i386 libpangocairo-1.0-0:i386 libpangoft2-1.0-0:i386 libpcap0.8:i386 libpciaccess0:i386 libpcre2-8-0:i386 libpcre3:i386 libpixman-1-0:i386 libpng16-16:i386 libproxy1v5:i386 libpsl5:i386 libpulse0:i386 libraw1394-11:i386 librtmp1:i386 libsamplerate0:i386 libsasl2-2:i386 libsasl2-modules:i386 libsasl2-modules-db:i386 libsdl2-2.0-0:i386 libselinux1:i386 libsensors5:i386 libshout3:i386 libslang2:i386 libsndfile1:i386 libsndio7.0:i386 libsoup2.4-1:i386 libspeex1:i386 libsqlite3-0:i386 libssh-4:i386 libssl3:i386 libstb0 libstb0:i386 libstdc++6:i386 libsystemd0:i386 libtag1v5:i386 libtag1v5-vanilla:i386 libtasn1-6:i386 libthai0:i386 libtheora0:i386 libtiff5:i386 libtinfo6:i386 libtirpc3:i386 libtwolame0:i386 libudev1:i386 libunistring2:i386 libunwind8:i386 libusb-1.0-0:i386 libuuid1:i386 libv4l-0:i386 libv4lconvert0:i386 libvisual-0.4-0:i386 libvkd3d1 libvkd3d1:i386 libvorbis0a:i386 libvorbisenc2:i386 libvpx7:i386 libvulkan1:i386 libwavpack1:i386 libwayland-client0:i386 libwayland-cursor0:i386 libwayland-egl1:i386 libwayland-server0:i386 libwebp7:i386 libwine libwine:i386 libx11-6:i386 libx11-xcb1:i386 libxau6:i386 libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386 libxcb-present0:i386 libxcb-randr0:i386 libxcb-render0:i386 libxcb-shm0:i386 libxcb-sync1:i386 libxcb-xfixes0:i386 libxcb1:i386 libxcomposite1:i386 libxcursor1:i386 libxdamage1:i386 libxdmcp6:i386 libxext6:i386 libxfixes3:i386 libxi6:i386 libxinerama1:i386 libxkbcommon0:i386 libxml2:i386 libxpm4:i386 libxrandr2:i386 libxrender1:i386 libxshmfence1:i386 libxslt1.1:i386 libxss1:i386 libxv1:i386 libxxf86vm1:i386 libz-mingw-w64 libzstd1:i386 mesa-vulkan-drivers:i386 ocl-icd-libopencl1:i386 publicsuffix wine wine32:i386 wine64 zlib1g:i386 自環境で試したら、これだけのパッケージが出た。 ↩︎

  2. 当たり前だが、自分でdocker構築した方がやりたいことはしやすいのかも。 ↩︎