Kindle には Linux の公式なサポートが無いため、Linux で Kindle を使いたい場合は Wine を使うか、何かしらの形で Android を立ち上げる必要があります。今回 NixOS(+ Hyprland)で Waydroid を使って Android を立ち上げ、その上で Kindle を立ち上げることができたので、手順を紹介します。
主な情報源は NixOS Wiki です。また NixOS ではないですがこちらの記事も参考にしました。
#Waydroid のインストールと起動
Waydroid 自体は virtualisation.waydroid.enable = true
で入ります。
追加で、今後の作業のために waydroid-helper
もインストールしておきます。このソフトウェアは動作に unzip
と fakeroot
が必要になるのですが、単にインストールするだけだとこれらのコマンドを見つけられないようなので(パッケージの PATH
の指定がまずい?)、合わせて入れておきます。
インストール後、Waydroid を初期化します:
sudo waydroid init
その後起動します:
sudo systemctl start waydroid-container
waydroid session start
コマンドを実行すると固まるので、別のターミナルを立ち上げて以下を打つと Android の画面が表示されます:
waydroid show-full-ui
NVIDIA GPU 搭載マシンで画面が真っ暗で表示されない場合、Waydroid の設定を変更します。
/var/lib/waydroid/waydroid_base.prop
を以下のように書き換えます:
ro.hardware.gralloc=default
ro.hardware.egl=swiftshader
画面が表示されることを確認します。
#Google Play Store の有効化
Kindle をインストールするためには Google Play Store を使用する必要があります。これをインストールするために waydroid-helper を使います。 waydroid-helper を起動し “Extensions” から “LiteGapps” で “LiteGapps-Lite” の “Show” を選択して、選択肢から LiteGapps をインストールします。
また同じ “Extensions” から “ndk_translation” で “ndk_translation-chromeos_guybrush” をインストールしておきます。
ここで show-full-ui
で Waydroid を起動すると、確かに Google App Store はインストールされているのですが、一方で Google App Store が使えないという旨の通知が届いているのを確認できます。これを解決するために、Android ID を Google に登録します。まず sudo waydroid shell
でシェルを起動し、以下のコマンドを打って Android ID を取得します:
ANDROID_RUNTIME_ROOT=/apex/com.android.runtime ANDROID_DATA=/data ANDROID_TZDATA_ROOT=/apex/com.android.tzdata ANDROID_I18N_ROOT=/apex/com.android.i18n sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = \"android_id\";"
取得した Android ID を https://www.google.com/android/uncertified/ から登録すると Google Play Store が使えるようになります。
#Kindle のインストール
前の手順までで Google Play Store が使えるようになったので、これを開いて持っている Google アカウントでログインしたあと Kindle をインストールすると、 Kindle が使えるようになります。
ちなみに Kindle をインストールしたあとであれば、わざわざ show-full-ui
で Android の画面を表示せずとも、desktop file として Kindle が登録される(ような)ので、そこから Kindle のみを起動できます。Rofi の -drun
でも起動できるようになります。
Waydroid の起動なども必要に応じて行われるようなので便利です。
#作業に失敗して全てをやり直す場合
途中の作業でミスをして Waydroid が立ち上がらなくなってしまった場合、以下のコマンドを実行すると最初からやり直せます:
sudo systemctl stop waydroid-container
sudo rm -r /var/lib/waydroid/* ~/.local/share/waydroid