この広告は、90日以上更新していないブログに表示しています。
「中古のSurface Pro 6を入手したものの、Windows版Inkscapeが想像以上に重かったためWSL版Ubuntuをインストールした」というメモ。
wsl --install# 再起動を要求される
再起動後、ユーザー名とパスワードの設定を要求されるので入力する。
neofetch
でUbuntu 22.04 LTSがインストールされていることが確認できる。
sudo apt updatesudo apt upgrade -ysudo apt install neofetch -y
(いつのまにかneofetch
が開発終了していた)
ただAPTコマンドを入力するのみ。
sudo apt install inkscape -y
なんともいえないフォールバックフォント(中国)が適用されていたためざっくりNoto Fonts CJK JPに変更。
# Noto Fontsのインストールsudo apt install fonts-noto-cjk-extra -y # Noto Fontsの存在証明fc-list | grep "Noto" | grep "JP"# テキストエディタを開くsudo nano /etc/fonts/local.conf
下記を記述。
<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd"><fontconfig> <match target="pattern"> <test qual="all" name="family"> <string>sans</string> </test> <edit name="family" mode="assign"> <string>Noto Sans CJK JP</string> </edit> </match> <match target="pattern"> <test qual="all" name="family"> <string>serif</string> </test> <edit name="family" mode="assign"> <string>Noto Serif CJK JP</string> </edit> </match> <match target="pattern"> <test qual="any" name="family"> <string>sans-serif</string> </test> <edit name="family" mode="assign"> <string>Noto Sans CJK JP</string> </edit> </match> <match target="pattern"> <test qual="any" name="family"> <string>mono</string> </test> <edit name="family" mode="assign"> <string>Noto Sans Mono CJK JP</string> </edit> </match></fontconfig>
fc-cache -f
リストメニューが画面外に消えてしまうことがある(右下にメニューボックスなどで要注意)。
モニターに接続してウィンドウの表示可能領域を広げるか、ウィンドウの前画面状態を解除して可能な限り縮めてから開く…などの対応が必要になる。
動作はすこしカクカクしているがWindows版に比べれば快適な動作になった。どうしてこうなった。
(◕‿‿◕) < わけがわからないよなお筆者はまどマギをよく知らない
もうすぐUbuntu 24.04 LTSリリースの季節ということで、本来はUbuntu 24.04の開発版を触ってみる予定でした。
が、5GB以上あるISOファイルが何故か4GBでダウンロードが止まったり、Vivaldiブラウザがダウンロードの再開操作を受け付けず1からダウンロードし直そうとしたり(wget -c
で解決)、Regolith Desktopが認証ウィンドウを表示してくれなかったり(GNOMEに移動して解決)と、準備段階からしてグダグダな状態が続いていました。
そしていざUbuntu 24.04が書き込まれたUSBメモリを空き状態のノートパソコンに挿してみたところ、Ubuntu自体起動しないという問題に直面して大きなショックを受けたため、気分直しにUbuntu 23.10を入れることにしました。
Ubuntu 23.10をインストールするのは今回が初めてです。
個人的にはUbuntuにおけるibusの体験があまり良くなく(Ctrl+Backspaceをすると即クラッシュとか)、Wayland上で日本語入力するならFcitx 5の方がいいという曖昧な印象でFcitx 5を使用するつもりでいました。
とりあえず以下のコマンドでFcitx 5のインストールと切り替え操作を行いました。
sudo apt install fcitx5-mozcim-config -n fcitx5
本来であれば再起動後にはFcitx 5を利用して普通に日本語入力ができるはずでした。
が…
起動後、Fcitx 5が起動していることを確認し、端末上でも日本語入力ができることを確認していました。
が、その後Firefoxを開いたところ、日本語入力ができなくなっていることに気が付きました。
この時点で内心「Snapか…」という思い初めていました。
直後にもう一つのSnapアプリケーションである「アプリセンター」を開いたところ、こちらは日本語入力ができないどころか、Fcitx 5が起動している状態だと文字入力そのものができないという事態に陥っており、この時点でUbuntu24.04インストール失敗の仕切り直しという気分ではなくなっていました。
この問題を調べるため、Firefoxを端末で起動してみたところ、起動直後から入力に関する問題がエラーとして表示されていました。
Create input context failed: GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: An AppArmor policy prevents this sender from sending this message to this recipient; type="method_call", sender=":1.317" (uid=1000 pid=68181 comm="/snap/firefox/3836/usr/lib/firefox/firefox " label="/snap/firefox/3836/usr/lib/firefox/firefox (enforce)") interface="org.freedesktop.IBus" member="CreateInputContext" error name="(unset)" requested_reply="0" destination="org.freedesktop.IBus" (uid=1000 pid=16975 comm="fcitx5 -d " label="unconfined").
アプリセンターでも同様のログが表示されていた他、キーを押す毎に
ibus_im_context_filter_keypress: assertion 'ibusimcontext->cancellable != NU++ || ibus_bus_is_connected (_bus) == FALSE' failed
というエラーが吐き出されていました。
※ここには盛大な勘違いが記載されているので畳んでいます。
このエラーについてDuckDuckGoで調べてもFirefoxを公式バイナリ版にする話やあまり関係ない内容のみであり、Twitter(現X)で同様の報告は3件しかありませんでした(そもそもFcitx 5に切り替えたユーザーが少ない?)。
このときの自分は問題の解決に対する気力はなくなっていたため、AppArmorを無効にすることで一時的解決を図りました。
gihyo.jpの記事を参考に以下のコマンドを実行して再起動しました。
sudo systemctl stop apparmor.servicesudo systemctl disable apparmor.service
再起動後、再びSnapアプリを起動してみたところ、無事Fcitx 5で入力をすることができました。
しばらくしてから、この問題について(勉強も兼ねて)バグ報告をしようと、以下のコマンドで有効にしなおしました。
sudo systemctl enable apparmor.service
しかし、困ったことに、再起動後には同様の手順を踏んでも、文字入力ができないという問題は解消されてしまい、エラーも発生しなくなっていました。
何もしてないのに壊れた後、大したこともしてないのに直ってしまった。
「結論とは…?」と疑問に思うような内容ですが、「こんなことがあった」という備忘録です。
筆者は記事作成前、雑な調査でAppArmorを無効にしたことで問題を解決したつもりになっていましたが、もう一度Ubuntu 23.10を入れたときに再発し、AppArmorを無効にしても直らなかったので再調査をしたところ、非常にかんたんな方法で修正することができました。
sudo apt autoremove ibus-mozc
…競合ですね。
fcitx5入れたらibusを吹き飛ばす(か、無効にする)
Misskeyを開いたら、それはミス廃への片道切符。もう、後戻りはできない―――。 …ふざけました。NPLです。
今回はMisskey専用クライアントアプリ「Miria」のSnapパッケージ化の記録を簡単にまとめていきます。
Advent Calenderの季節ですが、特に関係はありません。
この記事の内容はほとんどプログラミングをしたことが無い人間によって書かれています。間違った内容が紛れている可能性が高いため、後述する参考記事や、その他複数の情報を参考にしながら読み進めてください。特に、この記事では解説していない内容も多数存在するため、Snapcraft.ioのドキュメントを参考にしてください
Miriaは、そらいろ氏が開発した、FlutterベースのMisskeyクライアントアプリです。
Misskeyに特化した機能開発による「複数アカウントのタブ切り替え」や「(初の)MFMの互換表示」などの特徴が存在します。
タブには通常のHTLやLTLに限らず、リスト・アンテナ・チャンネル・ロールなどを割り当てることもできます。また、Misskeyクライアントとしては珍しいWebViewを使わないMFM互換表示を利用することができます。
そんなMiriaですが、Flutterをベースに開発されていることから、Android・Windows・iOS/iPadOS/macOSでサポートされています。
そして、FlutterSDKを利用すれば、Linux用アプリを同一のコードでビルドすることができます。
今回は、MiriaをSnapパッケージで利用できるようにするため、snapcarft
に挑戦してみることにしました。
注意:MiriaのSnapパッケージを作成する話であり、現在Snap Storeを検索してもMiriaは存在しません。
SnapパッケージはUbuntuの開発元Canonicalが推奨しているパッケージです。debパッケージと違い、必要な依存関係を開発元が本体のパッケージにまとめて配布する方式です。snap
コマンドやSnap Store(Snapcraft.io)からパッケージのインストールを行うことができます。
debパッケージやrpmパッケージの方がユーザー数は多いとは思いますが、Flutter公式ドキュメントにSnapパッケージ化の方法が存在することや、Snapcraft側にもドキュメントが揃っていることから、Snapパッケージを選択しました。
日本語記事が少ない時点で諦めました。
一応パッケージ化することはできたものの、仕様の理解が進まなかった故、維持管理に問題のある状態の設定ファイルが出来上がってしまったため、お蔵入りになりました。
この記事の内容のほとんどは、gihyo.jpの「Snapパッケージ入門」を参考にしています。この記事を読む前に、参考記事の方を読むことをオススメします(この記事より詳細なことが書かれており、そちらの方が理解しやすいため)。
ここでは、Flutter公式ドキュメントに従ったパッケージングを行います。
これからFlutterアプリをSnapパッケージにするときはSnapcraftのドキュメントを読むことをオススメします。(理由)
ここではmiria-snap
ディレクトリをプロジェクトフォルダとして作業を行います。
事前にsnapcraft
をSnapでインストールしておきます。
~$ sudo snap install snapcraft --classic
プロジェクトフォルダに入り、Snapパッケージ作成のためのファイルを追加します。
~$ mkdir miria-snap && cd miria-snap~/miria-snap$ snapcraft init
これでプロジェクトフォルダ内にsnap
フォルダとsnap/snapcraft.yaml
ファイルが作成されました。
snapcraft.yaml
をドキュメントに習って編集する初期状態のsnapcraft.yaml
の中身はこのようになっています。
name: my-snap-name # you probably want to 'snapcraft register <name>'base: core22 # the base snap is the execution environment for this snapversion: '0.1' # just for humans, typically '1.2+git' or '1.3.2'summary: Single-line elevator pitch for your amazing snap # 79 char long summarydescription: | This is my-snap's description. You have a paragraph or two to tell the most important story about your snap. Keep it under 100 words though, we live in tweetspace and your description wants to look good in the snap store.grade: devel # must be 'stable' to release into candidate/stable channelsconfinement: devmode # use 'strict' once you have the right plugs and slotsparts: my-part: # See 'snapcraft plugins' plugin: nil
まずはこのファイルをFlutterドキュメントに合わせたものに変更します。
- name: my-snap-name # you probably want to 'snapcraft register <name>'+ name: miria-snap- base: core22 # the base snap is the execution environment for this snap+ base: core18- version: '0.1' # just for humans, typically '1.2+git' or '1.3.2'+ version: '1.0.13+87'- summary: Single-line elevator pitch for your amazing snap # 79 char long summary+ summary: Misskey Client for Mobiledescription: |- This is my-snap's description. You have a paragraph or two to tell the- most important story about your snap. Keep it under 100 words though,- we live in tweetspace and your description wants to look good in the snap- store.+ Misskey Client App built with Fluttergrade: devel # must be 'stable' to release into candidate/stable channelsconfinement: devmode # use 'strict' once you have the right plugs and slotsparts:- my-part:+ miria-snap: # See 'snapcraft plugins'- plugin: nil+ plugin: flutter+ source: https://github.com/shiosyakeyakini-info/miria.git+ flutter-target: lib/main.dart++ apps:+ miria-snap:+ command: miria+ extentions: [flutter-stable]
今はFlutterドキュメントに合わせて
core22
からcore18
に変更していることを覚えておいてください。
基本的に前半部分はアプリの名前や説明欄などを編集しています。
confinement
はユーザーに対するアプリのセキュリティ設定であり、開発中はdevmode
を選択しますが、リリース時にはstrict
で動くようにしなければなりません(ただし、エディターなどのファイルの書き込みの制限を緩める必要のある場合にはclassic
が使用できます)。
parts
では、パッケージに含めるプログラムの追加などを行います。今回の場合、miria-snap
のパーツとして、MiriaのソースコードをGitHubから取得し(source)、Flutterのビルド環境を用意して(plugin)、lib/main.dart
を対象としたビルドを行う(flutter-target)ように記述しています。
apps
では、実際に実行するコマンドの記述などを行います。今回はアプリ名がmiria-snap
であるため、apps:miria-snap:
の並びで作成します。アプリのインストール後に端末からmiria-snap
を入力してアプリを実行することができるようになります。
apps:command:
には、実際に実行されるプログラムのコマンドを入力します。ここではビルドしたmiria
の実行ファイル名"miria
"を入力します。
Flutterはビルド成果物をbuild/linux/x64/release/bundle
以下にlib, data, miria
を生成しますが、snapcraft
はそれらをSnapアプリのフォルダのルートに配置します。つまり、コマンドの内容は{Snapパッケージのフォルダルート}/miria
のような配置になります。
apps:miria:
としてしまった場合、アプリ名とコマンド名が一致せず、端末からの実行時にmiria-snap.miria
と入力しなければならないため、apps
以下の名前とsnapcraft.yaml
先頭のname
は一致するようにします。
apps:miria-snap:extentions:
には、Flutterに関連するplugs
や環境変数などを自動的に追加するためflutter-stable
を入力します。
基本的な内容はこれで書き終えたので、このままsnapcraft build
を実行すればSnapパッケージのビルドが開始されます。
ただし、このままではMiriaのビルドは完了しません。
ログを確認すると、Snapパッケージのビルド中の"Miria本体のビルド"が完了できていません。これは依存関係が不足していることが原因です。
Miriaではflutter_secure_storage
とmedia_kit
が使用されており、ビルド時にはlibsecret-1-dev, libmpb-dev
が、ユーザーの使用時にはlibsecret-1-0, libmpv1
が必要となります。
このため、ビルド専用の依存関係と、Snapパッケージに同梱する用の依存関係を追加します。
依存関係をparts:miria-snap:
以下のそれぞれbuild-packages
とstage-packages
に記述しました。
[...]parts: miria-snap: [...]+ build-packages:+ - libsecret-1-dev+ - libmpv-dev+ stage-packages:+ - libsecret-1-0+ - libmpv1
参考1:flutter_secure_storage | Flutter Packagelibjsoncpp
は最近のバージョンから不要になりました。
参考2:media_kit | Dart Packagempv
をstage-packages
に含めるとMPVプレーヤーがデスクトップアプリとして一緒にインストールされてしまうのでlibmpv
のみで十分です。
これで再度snapcraft build
を実行すると、Miria本体のビルドまで実行することができます。
これ以降のステップに進むには、一旦生成されたSnapパッケージをインストールして、動作を確認しながら進めていくことをおすすめします。
~/miria-snap$ sudo snap install --dangerous --devmode ./miria-snap_1.0.13+87_amd64.snap
strict
にするある程度動くものになってきたため、今度はconfinement
をdevmode
からstrict
に切り替え、必要な機能の洗い出しを行います。
[...]- confinement: devmode+ confinement: strict
Snapでは必要な機能のみをplug
で接続する必要があります。
extentions
にflutter-stable
を設定しているので、desktop, desktop-legacy, gsettings, opengl, wayland, x11
は、自動的に接続されます。
この時点で再度ビルドを実行し、すべての機能が動作するか確認します。Miriaの場合、"動画の音声が聞こえない"、"ログイン情報が保存されていない"という、2つの不具合がみつかりました。
音声の再生は、audio-playback
というプラグ、ログイン情報の保存はpassword-manager-service
というプラグによって管理されているため、この2つをapps:
以下に追加します。
[...]apps: [...]+ plugs:+ - audio-playback+ - password-manager-service
参考:The flutter extension | Snapcraft documentation
ただし、password-manager-service
は機密情報を扱うプラグであるため、アプリをインストールしても自動ではプラグが機能しないようになっています。 ユーザーにアプリを公開する前に、password-manager-service
へのアクセスを許可する操作を行うよう告知することを忘れないでください。
$ sudo snap connect miria-snap:password-manager-service
参考:Snapcraft.yaml reference | Snapcraft documentation
Miriaには画像ファイルをノートに添付して投稿する機能がありますが、SnapにしたMiriaではファイル選択のメニューが表示されなくなっています。
Miriaのファイル選択機能はflutter_file_picker
によって呼び出されていますが、flutter_file_picker
内部ではzenity --file-selection
(もしくは、qarma
やkdialog
でそれに類するコマンド)を呼び出しています。
Ubuntu Desktop自体にはzenity
が含まれているものの、Snapからは呼び出すことができないため、zenity
をパッケージに含めるようにする必要があります。
FLutterはGTKを使用したアプリであるため
zenity
で統一しました。
[...]parts: [...]+ zenity:+ plugin: nil+ stage-packages:+ - zenity+ prime:+ - usr/bin/zenity+ - usr/share/zenity/*
parts
以下に、miria-snap
とは別にzenity
を作成し、zenity
を用意して、prime
でパッケージに関連するファイルをSnapパッケージに含めるように指定しました。
参考:Inform users with custom dialogs - doc - snapcraft.io
今のままではデスクトップアプリなのにアプリのメニューボタンが存在しない状態になってしまうので、デスクトップエントリーファイルとアイコン画像を追加します。
デスクトップエントリーファイルとアイコン画像は次のコマンドでsnap/gui
ディレクトリを作成して、そこに追加します。
~/miria-snap $ mkdir -p snap/gui~/miria-snap $ touch snap/gui/miria-snap.desktop
デスクトップエントリーファイルには以下の内容を追加します。
[Desktop Entry]Version=1.0Name=Miria SnapGenericName=Misskey ClientType=ApplicationExec=miria-snapIcon=${SNAP}/meta/gui/miria-snap.pngComment=Misskey client app for mobile (Linux build)Comment[ja]=モバイル向けのMisskeyクライアントアプリ(Linux向けビルド)Keywords=Misskey;Miria;みりあTerminal=falseStartupNotify=false
Exec
にはアプリ名を追加します。Icon
はsnap/gui/mria-snap.png
を使用する場合、snap
以下のファイルはSnapパッケージ作成時に${SNAP}/meta
以下にコピーされるため${SNAP}/meta/gui/miria-png.png
を指定します。
keywords
は、Firefoxのデスクトップエントリーを見たところ、各言語ごとに分ける必要がありそうです(キーワードが多くなければ1つにまとめたままでもいいとは思いますが…)。
現在はversion
を直接記述しています(version: 1.0.13+87
はこの記事作成時の最新バージョン)が、Snapパッケージビルド時にこのバージョンを手動で書き換えるのは面倒なので、毎回バージョン情報を自動で取得するように変更します。
1, 直接記述されたバージョン情報を削除
[...]- version: 1.0.13+87+ adopt-info: miria-snap
version
を削除する代わりに、バージョンを取得する処理を行うパーツ名(今回はmiria-snap
)をadopt-info
に追加します。
2,ソースコード取得の処理を上書き
本来自動的に行われるソースコードの取得処理に変更を加えます。
[...]parts: miria-snap:+ override-pull: |+ snapcraftctl pull+ VERSION=$(cat pubspac.yaml | grep "version[:]" | cut -d " " -f 2)+ snapcraftctl set-version "$VERSION"
snapcraftctl pull
は本来行われるソースコードの取得処理を行うコマンドです。
VERSION
変数に、pubspac.yaml
に記述されたバージョンを代入して、snapcraftctl set-version
に渡しています。
Miriaでは
flutter pub run cider version
でバージョン情報のみを取得する適切な方法がありますが、この時点ではFlutterのセットアップが済んでいないため利用できません。そのため、cat, grep, cut
を駆使した酷いコードになっています。
参考1:第660回 自作のsnapパッケージをSnap Storeに公開する | gihyo.jp
参考2:Override build steps | Snapcraft documentation
これにてリリース可能なMiria Snapパッケージが完成しました。お疲れ様でした。
…で終わらなかった。
core18
からの脱却ここまで作ってきたSnapパッケージはcore18
というUbuntu 18.04 LTSベースのビルドが行われていました(Snapパッケージビルド時に起動するLXDコンテナもUbuntu 18.04です)。
しかし、Ubuntu 18.04 LTSのサポート期限はリリースから5年の2023年であり、MiriaのSnapパッケージを作成し始めた頃にはサポート終了の直前でした。Snapcraftも同様にcore18
のサポートを終了することは容易に予想でき(そして的中し)たので、Ubuntu 22.04 LTSベースのcore22
に移行する必要があります。
core22
に移行するcore18
からcore22
の間にはいくつか変更点があります。
core18
ではextentions
にflutter-stable
を設定することでplug
などが自動的に接続されていましたが、core22
では用意されていません。
代わりとしてgnome
を選択する必要があります。
flutter-stable
とgnome
のプラグの内容はほとんど同じなので不要だったのかもしれない。
snapcraftctl
の廃止override-pull
やoverride-build
内で処理を上書きするときに、既定の処理を呼び出すsnapcraftctl
が廃止され、代わりにcraftctl
を利用するようになりました。
override-pull
内でsnapcraftctl pull
としていたコマンドやoverride-build
内でsnapcraftctl build
としていたコマンドなどは、どちらもcraftctl default
に置き換えられます。
参考:Using the craftctl tool | Snapcraft documentation
上記の2つを置き換えていきます。
[...]apps: [...]- extentions: [flutter-stable]+ extentions: [gnome]
上記で記した通り、flutter-stable
をgnome
に置き換えるだけです。使用するplugs
に変更はないのでそのままです。
[...]parts: miria-snap: [...]- snapcraftctl pull+ craftctl default VERSION=$(cat pubspac.yaml | grep "version[:]" | cut -d " " -f 2)- snapcraft set-version $VERSION+ craftctl set version=$VERSION
上記で記したsnapcraftctl pull
→craftctl default
の他、set-version
オプションをset version=<version>
に置き換える必要があります。
これでコマンドの置き換えなどが完了しました。
これにてMiriaのSnapパッケージ化は一旦完了です。
今回は、MiriaをSnapパッケージにするまでの流れを解説(記録?)しました。
基本的にはgihyo.jpの記事を参考に大まかに内容を理解してから、Snapcraftのドキュメントを参考に詳細を埋めていく形でMiriaをSnapパッケージにすることができました。
作ってみた感想としては、「とりあえずパッケージ化して動くものを作りたい」という面では悪くない選択肢ではないかと思います。
また、「もう少し日本でSnapパッケージを利用する記事増えないかな〜?」と期待しています。
今回はパッケージ化するところ(「とりあえず動くものを作る」段階)まで記事にしましたが、今のままでは起動時間が長いことやパッケージサイズが200MBとちょと大きいという問題を抱えているため、これを改善する(「細かい調整」の段階)内容を時間があればまとめていきたいと思います。
検索でここにたどり着いた人へ:最後を見ればわかると思いますが、実働記録ではありません。
インストールに必要なもの-ReactOS ISOイメージv0.4.14
は使わないように(一敗)
USBメモリ 4GBあればなんとかなる
GParted(i686版) (詳細) 重くて動かなかったので適当なLinux OSを選択
Intel Atom N270の情報 コードネーム:Diamondville
「ダメです、動きません!!」
LiveUSB起動画面途中でフリースして動かない。
原因調査中
Ubuntu Touchを仮想環境で試す方法について調べたことを簡単にまとめていきます。
Ubuntu Touchとは、Ubuntuの開発元であるCanonicalが、iOSやAndroidに対抗するために作ったモバイルOSです。
現在は開発方針についてなんやかんやあった結果、UBportsが管理しています。
Ubuntu TouchはAndroidのカスタムROMと同じような方法で、対応する端末にインストールすることができます。
開発者向けにUbuntu Touchの仮想環境が提供されていないか、Ubuntu Touchの開発者向けドキュメントを読んだり(ついでに翻訳したり)していたところ、utqemu
という、Ubuntu TouchのQEMU環境が提供されているのを見つけました。
GitHub - ubports/utqemu: Ubuntu touch qemu virtual machine
utqemu
はsnapで提供されています。
1, 端末を開き、utqemu
をインストール
sudo snap install utqemu --edge
2,qemu-virgilをインストール
README.mdでインストールする項目として書かれていないものの、インストールする必要があります。
sudo snap install qemu-virgil --devmode
3, 接続
sudo snap connect utqemu:kvm
utqemu create
5, 以下のコマンドで起動
README.mdには「utqemu start
を使え」と書かれていますが、以下のコマンドでなければ起動しないことがIssueで報告されています。
qemu-virgil -enable-kvm -m 2G -device virtio-vga,virgl=on -display sdl,gl=on -netdev user,id=ethernet.0,hostfwd=tcp::10022-:22 -device rtl8139,netdev=ethernet.0 ~/snap/utqemu/common/ubuntu-touch-mainline-generic-amd64.img
ちなみにqemu-virgl
なしだと以下のエラーで止まります。
$ utqemu startqemu-system-x86_64: -device virtio-vga,virgl=on: Property '.virgl' not found
これでUbuntu Touchの仮想イメージが起動します。
どこにもOSのバージョン情報が書かれておらず、いつビルドされたものかもわかりません。
とりあえずTerminalでuname -a
を入力してみたところ、
Linux ubuntu-phablet 4.15.0-142-generic 146~16.04.1-Ubuntu SMP Tue Apr 13 09:27:15 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
と帰ってきました。少なくともUbuntu16.04 LTSベースである模様。
一方、ファイルアプリを開くと、ファイルの作成(最終アクセス?)日は2022年となっています。
2022年にビルドされたものなのでしょうか...?
とりあえずここまで。
一応utqemu
はQEMUのバイナリなどを持っているなので、本当はutqemu
だけで完結するはずのパッケージのようです。
でも、qemuのパスを直接指定して使った結果は以下のとおり…
$ /snap/utqemu/current/usr/bin/qemu-system-x86_64 -enable-kvm -m 2G -device virtio-vga,virgl=on -display sdl,gl=on -netdev user,id=ethernet.0,hostfwd=tcp::10022-:22 -device rtl8139,netdev=ethernet.0 ~/snap/utqemu/common/ubuntu-touch-mainline-generic-amd64.img/snap/utqemu/current/usr/bin/qemu-system-x86_64 -enable-kvm: error while loading shared libraries: libbrlapi.so.0.6: cannot open shared object file: No such file or directory
ライブラリ不足…(ソースコードを見るとstage-package
にちゃんと入ってるので謎)
wiki.misskey.ioで作ったリストですが肝心のWikiが落ちてるのでここにコピーしておきます。多分CCいくつとかのライセンスだと思います。 -> CC-BYでした。
注意:記事の内容は少し古くなり始めているので、元の記事を読むことをオススメします
特定のプラットフォームで使えるかどうかだけ書いてあります。App名には各公式サイトURL、Yesの項目にはダウンロードURLが貼ってあります。
なお、「このビッグウェーブに乗り遅れるわけにはいかない!」のノリで書いたのでリンク切れがある場合があります。
App | iOS/iPadOS | Android | Windows | macOS | Linux | Web | Language | Source Code |
---|---|---|---|---|---|---|---|---|
Kaiteki | No | Yes | Yes | No | Yes | Yes | de, el, en, es, fr, he, id, it, ja, lv, pl, ru, zh | Kaiteki-Fedi/Kaiteki on GitHub |
Kimis | Yes | No | No | Yes | No | No | en-US | Lakr233/Kimis on GitHub |
Milktea | No | Yes | No | No | No | No | ja-JP | pantasystem/Milktea on GitHub |
Miria | Yes | Yes | Yes | Yes | Yes | No | ja-KS, ja-OJ | shiosyakeyakini-info/miria on GitHub |
MissCat | Yes | No | No | No | No | No | ja? | YuigaWada/MissCat on GitHub |
MissLI | No | No | No | No | No | Yes | ja? | uboar/missli on GitHub |
MissRirica | Yes | Yes | No | No | No | Yes | en, ja, ko | fruitriin/missRirica-client on GitHub |
PSkey | No | Yes | No | No | No | No | ja-JP | ibuki2003/pskey - GitHub |
SocialHub | Yes | No | No | No | No | No | en, ja | uakihir0/SocialHub on GitHub |
SoraSNS | Yes | No | No | No | No | No | fr, ja, kr, es, zh-CN, zh-TW | - |
Takesama | Yes | Yes | No | No | No | Yes | en, ja | - |
TootRain | No | No | No | Yes | No | No | en, ja | b123400/TootRain on GitHub |
ZonePane | No | Yes | No | No | No | No | ja-JP | - |
※: 開発中のアプリであり、不具合が頻発する可能性があります。
特殊な環境下で動くMisskeyクライアントです。ノリが某有名俳優公式サイトのそれ。
App | Target Platdorm | Source Code |
---|---|---|
Citraskey | 3DS browser | GitHub - CyberRex0/citraskey |
misskey-cli | CLI System (Go) | GitHub - mikuta0407/misskey-cli |
Misskey Client for Visual Studio Code | Visual Studio Code | GitHub - mikankari/msky4vscode |
MisT | TUI System (Python) | GitHub - 35enidoi/MisT |
Teramisu | host server: Running Node.js, client:Telnet Client | GitHub - castella-cake/teramisu-server |
vimskey | vim/neovim | GitHub - Allianaab2m/vimskey |
もふきー | Windows 95+ | - |
この記事の更新履歴
2023/07/02 - リンク切れを多数起こしていたため修正、注意事項を追記
2023/07/03 - 特殊なクライアントを追加
2023/07/09 - クライアントを追加
2023/07/10 - 特殊なクライアントを追加
2023/07/12 - 特殊なクライアントを追加
2023/07/13 -wiki.misskey.ioが復旧してた
2023/07/20 - 祝・miria foriOSの正式リリース
2023/07/28 - 祝・miria forAndroidの正式リリース
2023/09/05 - クライアントの追加と言語の追加
2023/09/06 - クライアントを追加
2024/02/10 - 一部クライアントを削除、wiki.misskey.ioへの誘導
2024/03/26 - 特殊なクライアントを追加
2024/04/17 - 特殊なクライアントを追加
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。