docker上のGUIアプリを立ち上げたい
あんまり普通の使い方じゃない気がするので私のためだけの備忘録
Firefoxを例にして説明しますが他のGUIアプリを試したい時はFirefoxのインストール部分だけ入れたいアプリに変えたら動くと思います。
とりあえずUbuntuコンテナ起動
ホストOSのXサーバに投影するのでソケットファイルをマウントして
GUI実行時に必要な環境変数を渡しています。
docker run -it --rm --privileged \
-e LANG=ja_JP.UTF-8 \
-e HOST_UID=${UID} \
-e DISPLAY=${DISPLAY} \
-e GTK_IM_MODULE=ibus \
-e XMODIFIERS=@im=ibus \
-e QT_IM_MODULE=ibus \
-v /tmp/.X11-unix:/tmp/.X11-unix \
ubuntu bash
日本語化
Ubuntu Japanese Teamが配布してる「日本語化 Remix」をあてるだけで大体OKです。
几帳面な人達は必要なパッケージだけ厳選して入れてるけど
それが原因で苦しむくらいなら容量犠牲に楽を取ります。
apt update -y && apt install -y wget gnupg
wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | apt-key add -
wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | apt-key add -
wget https://www.ubuntulinux.jp/sources.list.d/focal.list -O /etc/apt/sources.list.d/ubuntu-ja.list
apt update -y && apt upgrade -y && apt install -y ubuntu-defaults-ja
最後のコマンドでロケールとかキーボードとか聞かれますが大体日本っぽい感じの所選んどけば間違いないです。(流石にキーボード配列はUSだと思いますが)
firefoxを入れる
apt install -y firefox
実行。。。前の下準備
firefox実行ユーザをホストOSの実行ユーザのIDと合わせて作成
yes | adduser --uid ${HOST_UID} gui 2>&1 > /dev/null
多分ココはもっとキレイに書けるワンライナーあると思う
firefoxと日本語入力を仲介するD-BUSを起動して日本語入力を起動します。
mkdir -p /var/run/dbus/ && dbus-daemon --system --nofork --nopidfile &
su gui -c 'ibus-daemon -d'
ここでタスクトレイのところにIMが増えます。
こいつがちょっと曲者でこいつの設定開いて入力メソッドからmozcじゃない方を削除しておいて下さい。
そいつが残ってるとわざわざタスクトレイでmozc選ばないと日本語入力変換出来ません。
多分aptでなんか消せば消えてくれると思うんだけど。
誰かわからないかな。。。?🤔
いよいよfirefox実行
su gui -c firefox
日本語入力成功
速度測定も問題なし
これでキレイなFirefoxが使えましたね💖
結構面倒な手順ですが私はココまでの手順で作っといたイメージをローカルに保存してて
なにか知らないアプリを試すときにはまずはこっち側で確認してからインストールするといった風に使ってます。
docker commit <実行中にDokcerID> <保存したいイメージ名>
でローカルにイメージ保持できます
という訳で毎回D-BUS周りの起動方法で詰んで調べ直してる私の為の備忘録でした。
しゃみしゃっきり〜
Discussion