Manjaro Linux - KDE Plasma
設定のメモなどです。
Windows10が最後のWindowsと信じて使ってきましたが、Windows11へのアップグレードができない(CPU のクロックが低いためらしい)ので Linux への乗り換えを検討しています。
しらべてみると、Manjaro Linux がよさそうです。パッケージマネージャーの pacman は Windows の Msys2 で使ったことがありますし。
Manjaro の公式版は Plasma, GNOME, Xfce の3種類ですが、Plasma Fullバージョンをダウンロードしてみました。Windows上の Rufus でダウンロードしたISOファイルからLiveUSBが簡単に作れます(使ってみたら Ventoy 便利です)。
ちなみに、Xfce でウインドウのリサイズが難しいときは XFCEでのウィンドウサイズ変更が鬼のように難しい によると「Alt + 右クリック」でサイズ変更できるそうです。
「KDE の問題の多くは設定に関係しています。」KDE 設定関連の問題(ArchWiki) と書いてあるように Plasma は設定がややこしいデスクトップ環境といえるかもしれません。
2024-02-28 に KDE community による MegaRelease で Plasma 6 がリリースされました。Manjaro では 2024-05-13 から Plasma 6.0.4 になりました。Plasma 6 では X11 に代わって Wayland が標準のはずです。自分は Plasma 6 を待ちきれずに Wayland に変えていたので、日本語入力(fcitx5 + mozc)の設定ができましたが、これが Manjaro の標準的な設定方法になるかは分かりません。Wayland セッションでは画面が数十秒間固まることがありますが自分だけの問題かもしれません。
2024-05-13 の大型アップデート(自分の場合、約1.9GBのダウンロードとなりました)で Plasma 6.0.4 になりました。KDEシステム設定 も構成が変わってしまいました。KDE システム設定 → 外観とスタイルのウィンドウの管理 → デスクトップ 効果に 魔法のランプ(ジニーエフェクト)があります。ぐらぐらウィンドウもあり、まさに柔らかいウィンドウオペレーションが可能になりました。グローバルテーマは Manjaro は Breath、KDE は Breeze を推してるようです。今までの設定をリセットする意味もあって Breeze Dark に変えました。
2024-05-29 の大型アップデート(自分の場合、約1.5GBのダウンロードとなりました)で Plasma 6.0.5 になりました。
2024年9月上旬に、manjaro-kde-24.0.7-240821-linux69.iso をダウンロードして live usb を試してみました。驚いたことに、Plasma 6.0.5 で X11 になっていました。Wayland(KWin)はバグがあるから X11 になっていると思われます。「Plasma 6 からは Wayland が標準」と思っていたのに。KDEシステム設定 で自動ログインを X11 に戻すことはできないそうです。これではまるで孫子兵法「はしご外し」です。しかし「はしご外し」は味方を奮闘させるための方策ですから、Wayland(KWin)を使い続けるべき、と判断しました。ところが、wayland と X11 のどちらをログインの時に選択しても、日本語入力できることに気が付いたので、両方使うことにしました。
Plasma 6.1.3 Complete Changelog には KWin で Wayland: add error handling for QFile::open failure in org_kde_plasma_window_get_icon. といいうのがあったので、やはりアイコン関係にバグがあったようです。アップグレードに期待したいです。各ブランチでのバージョンは Branch compare for Manjaro でみれます。
2024-10-01 の Stable Update で Plasma 6.1.5 になりました(自分の場合、1885.21 MiBのダウンロードとなりました)。Wayland(KWin)ではファイルマネージャの Dolphin でプレビューアイコンを表示しているとたまにフリーズする現象はまだあります。しかしプレビューアイコンを表示しなければ、使えるようになってきたのではないかと思ってます。(でも、アプリの起動時にフリーズすることがあります。X11で十分軽く動作してると思います。)
2024-11-30 の Stable Update で Plasma 6.2.4 になりました。自分の場合、合計ダウンロード容量: 2070.20 MiB です。Wayland ではまだフリーズする現象がありますが、以前に比べるとだいぶよくなったような気がします。アイコンプレビューで落ちるのはなくなったのでは。
yay のメッセージを参考に lib32-libva-vdpau-driver libva-vdpau-driver を削除。
gnome-terminal-fedora を削除。
vte-notification-common vte3-notification をダウングレード。
v86d を削除。念のためカーネルの再インストール。
gnome-terminal をインストール。
pacman/ヒントとテクニック を参考にして、
孤立したパッケージとその設定ファイルを再帰的に削除するには:
pacman -Qdtq | sudo pacman -Rns -
を実行してみたら、gnome-shell などが削除されました。そしたらなんだか調子いいです。スリープからの復帰も問題なくなりました。でもたまにフリーズしてます。
Plasma の軽くて柔らかいユーザーエクスペリエンスは、パソコン作業による疲労を軽減していると思います。
こんどこそ、不退転の覚悟を持って Wayland化を進めようと決めました。
Xorg(ArchWiki) を参考に使ってないはずのXorgのビデオドライバーを削除しました。
sudo pacman -Rs xf86-video-amdgpu xf86-video-ati xf86-video-nouveau
2025-02-04 の Stable Update で Plasma 6.2.5 になりました。自分の場合、合計ダウンロード容量: 2024.99 MiB です。それとカーネルが6.13に。
ようやく約1年で Plasma Wayland デスクトップがフリーズする問題の対処方法を発見しました。
/etc/environment
に書きます。値は自分の環境のものです。
MESA_LOADER_DRIVER_OVERRI=iris
LIBVA_DRIVER_NAME=i965
VDPAU_DRIVER=va_gl
GSK_RENDERER=vulkan
#GSK_RENDERER=ngl
#GSK_RENDERER=gl
MESA_LOADER_DRIVER_OVERRIDE
環境変数は OpenGL(ArchWiki) と Mesa 3D の Supported Drivers に説明があります。自分の場合は iris です。/lib/dri/${MESA_LOADER_DRIVER_OVERRIDE}
_dri.so が使われます。
LIBVA_DRIVER_NAME
環境変数は ハードウェアビデオアクセラレーション(ArchWiki) VA-API の設定 にあります。ノートの部分とその上の確認のところを参考にしてください。自分の場合は i965 です。/usr/lib/dri/${LIBVA_DRIVER_NAME}
_drv_video.so が使われます。
- libva-intel-driver の場合は i965
- intel-media-driver の場合は iHD
vainfo(libva-utils パッケージに含まれています)で確認するとエラーがでます。extra/libva-intel-driver 2.4.1-3 にはバグがあるとのことで aur/libva-intel-driver-git 2.4.1.r6.gab755cb7-1 (+2 0.00) をインストールして vainfo すると
$ vainfo
Trying display: wayland
error: failed to resolve wl_drm_interface(): /usr/lib/libEGL_mesa.so.0: undefined symbol: wl_drm_interface
vainfo: VA-API version: 1.23 (libva 2.22.0)
vainfo: Driver version: Intel i965 driver for Intel(R) CherryView - 2.4.0.pre1 (2.3.0-39-gfd727a4e)
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
エラーがでます。libva 2.22.0 の Waylandサポートが壊れてるそうです。バグ修正版をまつことにします(intel / libva)。
それで パッケージのダウングレード(ArchWiki) を参考にダウングレードしてみることにしました。まず libva-intel-driver に戻します。
sudo pacman -S libva-intel-driver
1つ前のバージョンは /var/cache/pacman/pkg/ にあるはずが、ありませんでした。Arch Linux Archive(ArchWiki) からとってくることにしました。
wget https://archive.archlinux.org/packages/l/libva/libva-2.21.0-1-x86_64.pkg.tar.zst
sudo pacman -U libva-2.21.0-1-x86_64.pkg.tar.zst
$ vainfo
Trying display: wayland
vainfo: VA-API version: 1.21 (libva 2.22.0)
vainfo: Driver version: Intel i965 driver for Intel(R) CherryView - 2.4.1
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
バージョン番号の表示がへんですが、これで動いてます。/etc/pacman.conf の [options] に書き加えておきます。
[options]
IgnorePkg = libva
VDPAU_DRIVER
環境変数は ハードウェアビデオアクセラレーション(ArchWiki) VDPAU の設定 にあります。自分は Intel graphics なので va_gl です。/usr/lib/vdpau/libvdpau_${VDPAU_DRIVER}
.so が使われます。
GSK_RENDERER
環境変数は GTK(ArchWiki) と Running and debugging GTK Applications を参考にしてください。自分は標準の vulkan にしました。
インテルグラフィックス(ArchWiki) を読んでみると、推奨されない intel ドライバー(xf86-video-intel)を使う設定になっていることに気が付きました。/etc/X11/xorg.conf.d/20-intel.conf
に次のように書き込んで modesetting ドライバー(xorg-server)を使う設定にしました。MODESETTING(4) と xorg.conf(5) に文書があります。
Section "Device"
Identifier "Intel Graphics"
Driver "modesetting"
EndSection
ファイルマネージャの Dolphin の動画のプレビューアイコンに問題があります。動画サムネイルのデータは ~/.cache/thumbnails の中に保存されますが、このフォルダは自動では作られないようです(2025年2月上旬の状態では)。なければ次のコマンドで作ってください。-p オプションでフォルダがすでにある場合はなにもしないようです(mkdirでディレクトリが存在しない時だけディレクトリを作成する。)。~/.bash_profile に書き込んでおきました。
mkdir -p ~/.cache/thumbnails
さらにターミナルから dolphin を起動して、動画ファイルのあるフォルダを開くと大量のエラーメッセージが表示されることがあります。これがシステムを不安定にしいているのではないか? 標準エラー出力のめづまり問題です。 /usr/share/applications/org.kde.dolphin.desktop をコピーして ~/.local/share/applications/org.kde.dolphin.desktop とし、Exec行を次のように書き換えます。不都合なメッセージは闇から闇へ。
Exec=dolphin 2>/dev/null %u
FFmpeg(ArchWiki) によるとIntel QuickSync(QSV)という技術があってこれを利用するには libmfx パッケージが必要になり、これはインストールされていました。しかし intel-media-sdk(Broadwell から Rocket Lake までの GPU向け)または onevpl-intel-gpu(Alder Lake 及びそれ以降の GPU向け)はインストールされていませんでした。たぶんインストールしたほうがよさそうです。
sudo pacman -S intel-media-sdk
KDEシステム設定 で スペルチェック のすべてのオプションのチェックをはずしました。
ビデオプレーヤーの vlc が2024-02-04にアップデートされました。ますますおかしくなったような気がしましたが、設定をリセットすればよくなります。設定画面の下側にある「設定をリセット」から再設定したほうがいいです。入力 / コーデック の設定で ハードウェアアクセラレーションによるデコード で 無効 を選択します。ですが mpv を使ったほうがいいと思います。キーボードからの操作方法は man mpv で英語ですが説明されています。
sudo pacman -S mpv
xwaylandvideobridge をアンインストールしました。
sudo pacman -Rs xwaylandvideobridge
アプリの起動時にマウスポインタの近くに現れるぴょんぴょん跳ねるアイコンがトラブルを起こすことがたまにあるので無効にしました。KDEシステム設定の「外観とスタイル」の「色とテーマ」から「カーソル」を選ぶと「起動フィードバックを設定(C)」があるので「カーソルフィードバック:」で「なし」を選択して「適用(A)」をクリックします。
Dragon Player はGPUを使わない動画プレーヤーのようです。VA-API の問題が解決するまではこれを使ったほうがいいかもしれません。
sudo pacman -S dragon
CPUに余裕があるならOpenGLにGPUを使わせないことで安定するようです。もっと早く試してみるべきでした。Mesa 3D Environment Variables に他の環境変数の説明があります。~/.bash_profile に加えました。mpv は起動しなくなりましたが、かなり安定していて不思議です。ぴょんぴょんアイコンも復活させました。(この対策はもう必要ありません)
if [ "$XDG_SESSION_TYPE" = "wayland" ]; then
export LIBGL_ALWAYS_SOFTWARE=true
fi
community レポジトリの消滅 Community Repo Error によると、community の中身はすでに extra に移されているそうです。sudo pacman -Syu でエラーが出て更新できないので /etc/pacman.conf の [community] の部分を削除してください。
[community]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist
2025-03-05 Stable Update で Plasma 6.3.2 になりました。ダウンロード容量は約1684 MiBでした。
2025-03-18 Stable Update で Plasma 6.3.3 になりました。ダウンロード容量は約1338 MiBでした。
2025-03-24 Stable Update がありました。ダウンロード容量は約480 MiBでした。LIBGL_ALWAYS_SOFTWARE=true
の設定をしなくてもフリーズしなくなったようです。
2025-03-30 Stable Update があり、自分の場合ダウンロード容量は約632 MiBでした。実はカーネルのアップグレードに失敗してシステムが起動せず。LiveUSBで起動して chroot と pacman でカーネルをインストールして 6.14 になりました。また GTK でカーソルが巨大化する問題も修正されました。
2025-04-12 Stable Update で Plasma 6.3.4 になりました。ダウンロード容量は約1020 MiBでした。
Link
- Manjaro
- Plasma - KDE Community
- Xfce デスクトップ環境
- GNOME
- KDE Applications
- Apps for GNOME
- KDE(ArchWiki)
- ArchWiki
- ArchWiki JP
- アプリケーション一覧(ArchWiki)
- manjaro forum
- KWin
- Manjaro Linux JP Manjaro Linux JP2
Plasma版 インストール直後の設定
Wi-Fi のパスワード入力後に KWallet(KDE Wallet)の設定を要求するダイアログが出た場合は、「Classic, blowfish encrypted file」を選択して(とりあえず)パスワードを入力しない。警告も無視していいようです。(自動ログイン時のKDEウォレットの設定)
# Windows で起動したときに時計がくるわないようにする
sudo timedatectl set-local-rtc true --adjust-system-clock
# pacman のミラーを日本サーバーに
sudo pacman-mirrors -c Japan
# データーベースの更新とアプグレード(時間がかかります。1GB以上のダウンロードが必要でした)
sudo pacman -Syu
# 日本語入力のインストール
sudo pacman -S manjaro-asian-input-support-fcitx5
sudo pacman -S fcitx5-mozc
# AUR(Arch User Repository)ヘルパーのインストール
sudo pacman -S base-devel
sudo pacman -S yay
Arch Linuxの日本語入力をfcitxからfcitx5に切り替えるによると、fcitx5-mozc のインストールのとき、「パッケージの選択を聞かれるので、デフォルトの“all”でインストールします。」と書いてあるので Manjaro でも同じく all でよさそうです。
Linux:RAMディスクを使ってアクセスを高速化 によると /home/ユーザ/.cache を tmpfs(ArchWiki) でramに配置することができます。再起動するとデータは消えますが、Firefox も高速化されます。
sudo nano /etc/fstab
/etc/fstab に次の行を書き足します(ユーザは置き換える)。
tmpfs /home/ユーザ/.cache tmpfs noatime,nodev,nosuid,size=2G 0 0
再起動すると有効。df -h や findmnt で確認できます。
KDEシステム設定 を開くと「クイック設定」で Breath Dark にすることができます。外観とスタイル の テキストとフォント → フォント でフォントサイズの調整などできます。Noto Sans でもいいのですが音引き「ー」の曲がった感じに違和感があるので、源ノ角ゴシックにしました。が、IPAexゴシック(等幅はIPAゴシック)に変えました。入力/出力デバイス の ディスプレイとモニタ で Global scale: 125% にしました。
mozc
mozc(ArchWiki) のUT辞書版が強く推奨されています。
- KDEシステム設定 → 言語と時刻 の 入力メソッド→ 入力メソッド と進んで グループが default になっていることを確認。「+入力メソッドの追加」を押して mozc を追加
- 「グローバルオプションのを設定」で 動作 の「デフォルトで有効にする」をチェックする。入力メソッドを有効にする:に変換キーを加える。「適用」をクリックする。
- 1つ戻って、mozc の設定アイコンをクリック、「初期モード」を直接入力にして、「候補を縦に並べる」をチェックする。「適用」をクリックする。
mozc の設定ツールを開いて、キー設定を MS-IME を選択、編集で 変換キーでIMF有効、無変換キーでIMF無効にするなど設定しました。半角英数字は mozc の直接入力モードで入力するのが基本になります。
# MS-IMEのキー設定より削除する項目
変換前入力中 Hiragana ひらがなに入力切替
変換前入力中 Katakana 全角カタカナに入力切替
変換前入力中 Muhenkan ひらがな・カタカナを切替
変換前入力中 Shift Muhenkan 全角英数に変換
変換中 Hiragana ひらがなに入力切替
変換中 Katakana 全角カタカナに入力切替
変換中 Muhenkan ひらがな・カタカナを切替
入力文字なし Hiragana ひらがなに入力切替
入力文字なし Katakana 全角カタカナに入力切替
入力文字なし Muhenkan 次のかな文字種に入力切替
# 追加する項目
変換前入力中 Hiragana 全角カタカナに変換
変換前入力中 Muhenkan 半角英数に変換
変換前入力中 Shift Muhenkan 全角英数に変換
変換中 Hiragana 全角カタカナに変換
変換中 Muhenkan 半角英数に変換
変換中 Shift Muhenkan 全角英数に変換
直接入力 Henkan IMEを有効化
入力文字なし Muhenkan IMEを無効化
半角カタカナはあまり使わないので F8 でいいかと。
エディッタの Kate を使っていて、テキストを選択したあと 変換キー を押すと再変換できることに気が付きました。さらに、Ctrl+v でペーストした直後も 変換キー を押すと再変換できます。これはかえって不便かもしれません。Shift Henkan に変更しました。
# 変更前
入力文字なし Henkan 再変換
# 変更後
入力文字なし Shift Henkan 再変換
キー設定はエクスポートできますが、英語になってしまいます。こぶり主義 Google日本語入力の研究 によると
変換前入力中 Composition
変換中 Conversion
直接入力 DirectInput
入力文字なし Precomposition
サジェスト選択中 Prediction
サジェスト表示中 Suggestion
fcitx5-mozc-with-jp-dict
Manjaro Linux 最初の一歩 によると SudachiDict をシステム辞書に組み入れた fcitx5-mozc-with-jp-dict のビルド済みパッケージが manjaro-jp レポジトリ と manjaro-jp sourceforge ミラー に公開されています。aur/fcitx5-mozc-with-jp-dict もありますが、こちらはビルドしなくてはなりません。
ビルド済みパッケージから pacman でインストールするには、鍵の追加が必要です(pacman/パッケージの署名)。kyeid = 57B49CC5AA4F00FC のインポート、署名をします。(それと関係者の皆様への感謝の気持ちも忘れずに。)
# 鍵のインポート
sudo pacman-key --recv-keys 57B49CC5AA4F00FC
# フィンガープリントを確認
pacman-key --finger 57B49CC5AA4F00FC
# インポートした鍵をローカルで署名
sudo pacman-key --lsign-key 57B49CC5AA4F00FC
# ダウンロードは sourceforge の方がよさそうです。ファイル名は上記レポジトリで確認してください。
sudo pacman -U https://manjaro-jp.sourceforge.io/manjaro-jp/fcitx5-mozc-with-jp-dict-2.31.5810.102-1-x86_64.pkg.tar.zst
# または
sudo pacman -U https://mirror.phoepsilonix.love/manjaro-jp/fcitx5-mozc-with-jp-dict-2.31.5810.102-1-x86_64.pkg.tar.zst
yay を使うと、更新されていれば AUR版をインストールしようとするので、/etc/pacman.conf の [options] に書き加えたほうがいいかもしれません。
[options]
IgnorePkg = fcitx5-mozc-with-jp-dict
mozc のユーザー辞書として取り込む方法もあるそうです。
Mozcdict-Ext
Anthy
fujiwarat / anthy-unicode は軽量で高速なかな漢字変換ソフトです。X11および Emacs 上で動作するそうですが、Wayland でも動作するようです(Xwayland ということでしょうか)。Anthy個人辞書管理ツール「霞」( fujiwarat / kasumi-unicode, aur/kasumi-unicode ) ですが、yay でインストールしようとすると「ビルド時にエラー」といって失敗しました。aur/kasumi-git のほうがいいのかもしれません。しかしこれも「ビルド時にエラー」といって失敗しました。
$ sudo pacman -S fcitx5-anthy
$ anthy-dic-tool --dump --utf8
Anthyの辞書登録 が参考になりそうです。それと Anthyの辞書ファイル(1) がありました。
KDEシステム設定 の 入力メソッド で Anthy の設定ができます。
無変換キーで半角英数入力、変換キーでひらがな入力にする方法です。ひらがなモード: の右側の + をクリックすると … になるので 変換キー を押します。 すると 変換 が設定されます。同様に 英数モード: を 無変換 に設定します。シンボルには半角文字を使用する: と 数字には半角文字を使用する:、のチェックをはずします。テンキータイプ: をハーフにします。適用(A) ボタンをクリックします。
入力方式 で Nicola というのは親指シフトキーボードでの入力用とのことで、そんなキーボード持ってないのでしょうがありません。
Anthyの珍変換 を読んでみると、Anthyを使うなら短めに変換するのがよさそうです。
SKK
SKK は東北大学の佐藤雅彦教授によって開発された形態素解析を行わない日本語入力メソッドです。SKK(ArchWiki)、ホームページは SKK Openlab です。SKK(ニコニコ大百科)に説明があります。
$ sudo pacman -S fcitx5-skk
KDE システム設定 → 入力メソッド → +入力メソッドを追加… → SKK を選択 → +追加 → 適用(A)
使い方としては基本はローマ字入力ですが、漢字にする部分の先頭をシフトキーを押して入力します。漢字の部分の入力が終れば、送り仮名があればその先頭をシフトキーを押して入力し、なければスペースキーを押します。カタカナに変換する場合も最初の文字はシフトキーを押して入力し、カタカナの部分を入力し終えたら q を押します。Emacs と同様に Ctrl+g でキャンセルできます。「シンプルかつ流れるような変換が可能になっている」そうですが本当でしょうか。
- ひらがなモード Ctrl+j
- カタカナモード q
- 全英モード シフトキー+l
- アスキーモード l
- 半角カナモード Ctrl+q
KKC
ueno / libkkc は N-gram 言語モデルを使って多少複雑な方法で連文節変換を行います。
$ sudo pacman -S fcitx5-kkc
Hazkey
Manjaro Linux 最初の一歩 で紹介されていた 7ka-Hiira / fcitx5-hazkey です。iOS用の azooKey の技術が使われているそうで、Linux での次期主力IMEになるかもしれません。
yay -S fcitx5-hazkey-bin
Wayland
- Wayland(ArchWiki)
- Using Fcitx 5 on Wayland (KDE Plasma)
- KDE Plasma の Wayland セッションで日本語入力
- Fcitx5(ArchWiki)
- KDE(ArchWiki)
- KWin
Wayland はディスプレイサーバープロトコルです。X Window System (X11) に代わって標準になるそうです。ネイティブな X11 アプリケーションをシームレスに動かすための後方互換性として、Xwayland を使うことができます。これは Wayland に X サーバを提供します。
「通常、Wayland のネイティブな text-input プロトコルでは、インプットメソッドモジュールよりも良い結果を得られます。」と書いてあったので Wayland に切り替えることにしました。Plasma 6 になると Wayland が標準になるそうです。以下は Manjaro Linux Plasma 5.27 で Wayland に切り変える方法です。
X11 でログインしている場合は、ログアウトしてから、ログイン画面の左下で Plasma (Wayland) を選択してからログインします。Wayland で自動ログインするには設定が必要のようです。
(Plasma 5.27 の場合は)KDEシステム設定で、ワークスペース 起動と終了 → ログイン画面(SDDM) → 挙動… → 起動するセッション で Plasma (Wayland) を選択 → 適用をクリック
Plasma 6 の場合は、/etc/sddm.conf.d/kde_settings.conf を編集して、[Autologin] の Session=plasma を Session=plasmawayland に書き換えてください。
X11 か Wayland かどちらを使っているか確認するには次のコマンドがあります。
$ echo $XDG_SESSION_TYPE
Wayland セッションで日本語入力する設定です。
KDEシステム設定で、ハードウェア 入力デバイス → 仮想キーボード → Fcitx 5 を選択 → 適用をクリック
- Do not set GTK_IM_MODULE & QT_IM_MODULE & SDL_IM_MODULE . You could unset GTK_IM_MODULE & QT_IM_MODULE by runing im-config and then selecting do not set any IM from im-config and use desktop default"
- Run chromium/electron application with --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime
環境変数の GTK_IM_MODULE と QT_IM_MODULE は設定してあるとログインしたときにメッセージが出ます。im-config を使って unset しろと書いてますが、Arch Linux にもそんなツールはないようです。さがしてみると /etc/profile.d/input-support.sh が見つかりました。次のように書き換えます。
/etc/profile.d/input-support.sh
# https://wiki.archlinux.org/index.php/Fcitx
# https://wiki.archlinux.org/index.php/Fcitx5
im=fcitx
#export GTK_IM_MODULE=$im
#export QT_IM_MODULE=$im
export XMODIFIERS=@im=$im
export INPUT_METHOD=$im
#export SDL_IM_MODULE=$im
if [ $DESKTOP_SESSION == "plasma" ]; then
export GTK_IM_MODULE=$im
export QT_IM_MODULE=$im
export SDL_IM_MODULE=$im
fi
行が # で始まるのはコメント行なのでなくてもいいです。if文は X11 でログインする場合に日本語入力できるようにするためのです。保存して(管理者パスワードが必要です)ログアウト、再ログインします。この /etc/profile.d/input-support.sh の書き換えは必要なくなったようです。extra/manjaro-asian-input-support-fcitx5 が設定するままで、X11 でも Wayland でも使えます。(XWayland で動くアプリのための export XMODIFIERS=@im=fcitx
が AppImage版GVim などの日本語入力のために必要です。~/.bash_profile に書いておいたほうがいいでしょう。ついでに export INPUT_METHOD=fcitx
も書いておくべきかもしれません)
~/.gtkrc-2.0 に次の行を付け加えます。
gtk-im-module="fcitx"
~/.config/gtk-3.0/settings.ini と ~/.config/gtk-4.0/settings.ini の [Settings] に次の行を付け加えます。
[Settings]
gtk-im-module=fcitx
これで gtk についてはいいらしいです。qt に関しては KDE の場合はなにもしなくてもいいようです。
Electron に関しては次のオプションをつけての起動が必要な場合があるそうです。
--enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime
アプリケーションメニューから右クリックで「アプリケーションを編集…」を選択します。「アプリケーション(A) 」のタブを選択して、「引数(A)」に上記オプションを書き込んで、OKボタンを押して閉じます。Snap版vscode もこれで日本語入力できるようになりました。
fcitx5 の設定を変更することにしました。
KDEシステム設定 → 地域の設定 → 入力メソッド → Mozc を選択して設定ボタンをクリック → プリエディットカーソルをプリエディットの先頭に固定する:のチェックをはずす → 適用ボタンをクリック → 1つ戻ってグローバルオプションの設定をクリック → 入力メソッドを有効にする:に変換キーを加える → 適用ボタンをクリック
fcitx5 の設定は fcitx5-config-qt
を起動しても GUI でできます。
Wayland にすると GUI 関係の動作が軽くなります。マウスカーソルの速度を少し遅く設定し直しました。IME も速くなった気がします。日本語入力が改善はされると思いますが、まだ文節の区切りがどこかわからなかったりします。それに、たまに画面が数秒間固まってしまうことがあります。マウスカーソルも動きません。どうやら画像や動画のプレビューを作っているのではないかと疑っています。はっきりしませんが。
X11 を使いたいときは、ログアウトしてから、ログイン画面の左下すみで X11 を選択してからログインしてください。
Plasma freezes often によると Baloo(ArchWiki) を止めるとよくなるようです。Baloo は検索用のインデックスをつくっているのですが ~/.local/share/baloo/index が 919.5MB にもなっていました。KDE システム設定 の 検索 → ファイルの検索 で ファイルのインデックスを作成: 有効 のチェックをはずします。Baloo は使わないことにしました。
Xwayland アプリケーションであることを視認する
sudo pacman -S xorg-xeyes xorg-xwininfo xorg-xlsclients
- ターミナルで
xeyes
で起動します。Xwayland で動いてるアプリのウインドウでマウスを動かすと、目玉が動きます。終了は Ctrl+c で。 - ターミナルで
xwininfo
で起動します。Xwayland で動いてるアプリのウインドウでマウスを動かすと、マウスポインタが + に変わります。そのままクリックするとターミナルに情報を出力します。終了は Ctrl+c で。 - ターミナルで
xlsclients -l
で Xwayland で動いてるアプリをすべてリストアップします。
kwin の Wayland デバッグコンソールを使ったほうが便利なようです。
qdbus6 org.kde.KWin /KWin org.kde.KWin.showDebugConsole
KDE Wallet
KDE Wallet(ArchWiki) は Plasma でパスワードを管理するためのツールです。ネットワーク接続のパスワード、ウエブブラウザーでサイトのパスワードなどです。
デフォルトのウォレット名 kdewallet を使い、ウォレットのパスワードはユーザーがログインに使うパスワードと同じにする、のが標準的な使い方らしいです。
DBus(プロセス間通信)API の org.freedesktop.secrets を使ってるそうなので、flatpak や sandbox を使っている場合はこれを通す設定にしなければなりません。
D-Bus の自動アクティベーションするには ~/.local/share/dbus-1/services/org.freedesktop.secrets.service をつくって次のように書いておくそうです。
[D-BUS Service]
Name=org.freedesktop.secrets
Exec=/usr/bin/kwalletd6
ですがウエブブラウザーのFLATPAK版Falkon で試したところ、org.freedesktop.secrets と org.freedesktop.secrets.service の設定は必要ないです。Flatseal で Falkon を選択して Socket の D-Bus session bus をオンにするだけで、org.kde.kwalletd5 が有効となり Falkon でパスワードを保存できるようになりました。org.freedesktop.secrets は使ってないようです。
systemd/ジャーナル
systemd は通常 /var/log/journal にログを残します。ファイルシステムの容量の10%(ただし最大 4GiB)まで書き込むそうです。個々のファイルサイズは 4MiB から 128MiB までになるようです。重大なエラーが発生したなども書き込まれるようですが、必要ないのではないかと思います。問題が起きたとしても、ログを調べるには知識も時間も必要ですから。
/etc/systemd/journald.conf に次の行を書きます。通常は auto にしておくようです。他には、メモリーに書く volatile それに persistent があります。
Storage=none
システムメンテナンス(ArchWiki) によると、本当はログをとって暇なときにエラーが出てないか確認したほうがいいそうです。
journalctl -p 3 -xb
Fonts
フォント(ArchWiki) を手動でインストールする場合は、~/.local/share/fonts/
(自分用)または /usr/local/share/fonts/
(全ユザー用)にインストールします。適当にサブフォルダをつくって構いません。ただし、全ユザー用のパーミッションは、ファイルの場合は 444 、ディレクトリの場合は 555 が必要です。 pacman などでインストールしたフォントは /usr/share/fonts/
にあります。
#fontconfig フォントキャッシュをアップデート(自動でおこなわれるため実行の必要なし)
sudo fc-cache -vf
【 fc-cache 】コマンド――フォントキャッシュを更新する によるとフォントキャッシュは /var/cache/fontconfig/
にあり、これは /etc/fonts/fonts.conf
で設定されています。フォントキャッシュが壊れた場合は次のコマンドで削除、更新されるようです。
fc-cache -r
IPAフォント
詳しくは IPAexフォントおよびIPAフォントについて と IPAフォント(wikipedia) などで。
- IPAフォント:IPA明朝 (IPAMincho) 固定幅フォント。IPA P明朝 (IPAPMincho) 可変幅フォント。
IPAゴシック(IPAGothic) 固定幅フォント。IPA Pゴシック(IPAPGothic) 可変幅フォント。 - IPAexフォント:IPAex明朝(IPAexMincho)、IPAexゴシック(IPAexGothic)。基本は和文文字は固定幅、欧文文字は変動幅。
- IPAmj明朝フォント:(IPAmjMincho) 異体字セレクタのIVSを利用することで、Moji_Johoコレクションにある異体字約1万通りが利用できる。一般的な用途には推奨されない。
sudo pacman -S otf-ipafont otf-ipaexfont
sudo pacman -S otf-ipamjfont
源ノ角ゴシック
- 源ノ角ゴシック:英語では Source Han Sans、Google では Noto Sans CJK。
- 源ノ明朝:英語では Source Han Serif、Google では Noto Serif CJK。
ややこしい「源ノ角ゴシック」と「Noto Sans」のまとめ も参考に。
等幅について。Source Han Mono(源ノ等幅)は日本・中国・台湾・香港・韓国を含む大きなもので、Source Han Code JP (源ノ角ゴシック Code JP)は日本語用。これらの半角は全角の3分の2の幅。なので横に伸びた感じがして、慣れるのは難しそう。
sudo pacman -S adobe-source-han-sans-jp-fonts
sudo pacman -S adobe-source-han-serif-jp-fonts
yay -S otf-source-han-code-jp
IBM Plex
IBM Plex もインストールすることにしました。pacman では hinted がインストールされるようです。AUR にはotf版もあります。IBM-Plex-Sans-JP をシステムフォントとして使うと行間が広くなりすぎます。原因不明です。
sudo pacman -S ttf-ibm-plex
M+ FONTS
M+ FONTS というのがあるのですが漢字が少ないので派生フォントとして MigMix(M+フォントに手を加えずIPAゴシックと合成)、Migu(M+の字形に改変を加えてIPAゴシックと合成)、Ricty(Inconsolata と Migu 1M の合成とチューニング、作者自身が他のフォントの使用を推奨)などがあります。(M+とIPAの合成フォント プログラミング用フォント Ricty)次のコマンドですが ttf-migmix は OSDN からダウンロードしようとして失敗することがあります。github からダウンロードするように書き換えればいいと思うのですが。ttf-ricty もうまくいかないようです。
yay -S ttf-migu ttf-migmix ttf-ricty
yuru7(tawara)
yuru7(tawara) udev-gothic をターミナルで使っており感謝です。plemoljp は インストール容量約443MiBと大きいです。
yay -S ttf-hackgen ttf-udev-gothic ttf-plemoljp-bin ttf-firge ttf-juisee
その他
Morisawa BIZ UDフォント の無償版があるそうです。老眼対策の決定打となるかもしれません。英字で下にはみ出すのを控えめにしてるようです。小文字の p は違和感がります。英字の多い文書には向かないフォントかもしれません。
yay -S morisawa-biz-ud-gothic-fonts morisawa-biz-ud-mincho-fonts
近ごろのフォントに飽きた人は、さざなみフォントがいいのかも(ノスタルジーです)。東風(こち)フォントもありました。フリーソフト・フォント
sudo pacman -S ttf-sazanami
yay -S ttf-kochi-substitute
emoji
絵文字と記号(ArchWiki)。もし絵文字フォントがなければインストールします。
sudo pacman -S noto-fonts-emoji
Full Emoji List, v15.1 の Unicode Emoji data files にあるテキストファイルを表示させてみると、v15.1 のほぼすべてのカラー絵文字を表示できます。ただ、絵文字は普通の文字より大きく表示しないとなんだか分からないものが多いし、ハートが多く、驚いた顔が少ないです。
Windows10 の LibreOffice Calc で "源ノ角ゴシック JP Regular" にしたところが Manjaro Linux で開くと代替フォントが使用されます。Windows では "源ノ角ゴシック JP" と "源ノ角ゴシック JP Regular" のどちらでも選択(同じフォントのようです)できるのですが、Linux では "源ノ角ゴシック JP Regular" がありません。/etc/fonts/local.conf に次の設定を書き加えることで、 "源ノ角ゴシック JP" にフォールバックさせることができます(このやり方でいいのか、自信はありません)。Windows で "源ノ角ゴシック JP Regular" は指定しないことにして、 "源ノ角ゴシック JP" を指定した方が無難なようです。
/etc/fonts/local.conf(カラー絵文字の設定は、昔 ArchWiki にあったものです。この設定があったほうがより確実にカラーで絵文字を表示してくれるようです。)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match>
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="prepend" binding="weak">
<string>Emoji</string>
</edit>
</match>
<match>
<test name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="prepend" binding="weak">
<string>Emoji</string>
</edit>
</match>
<match>
<test name="family">
<string>monospace</string>
</test>
<edit name="family" mode="prepend" binding="weak">
<string>Emoji</string>
</edit>
</match>
<match target="pattern">
<test name="family">
<string>源ノ角ゴシック JP Regular</string>
</test>
<edit name="family" mode="assign">
<string>源ノ角ゴシック JP</string>
</edit>
</match>
</fontconfig>
NumLock
Plasma の起動時に NumLock をオンにすることができます。
KDEシステム設定で、入力/出力デバイス キーボード → キーボード → ハードウエア タブ 「Plasma 起動時の NumLock」でオンに。
Konsole
曖昧文字幅(East Asian Ambiguous Width)を全角で表示するオプションがないようです。曖昧文字幅文字が半角の多いフォントを使ったほうがよさそうです。フォントの設定で "Show all fonts" をチェックしてから UDEV Gothic または PlemolJP Console あるいは HackGen Console(音引きの曲がりに慣れることができないのですが)などを選択。
Dolphin
Dolphin(ArchWiki) は KDE のファイルマネージャです。右クリック → 新規作成 > のコンテキストメニューにテンプレートフォルダ内のテンプレートが表示されないので調べてみました。 Template directory problem - no templates in context menu と Add your own “Create New” options in KDE Dolphin によると、~/.local/share/templates/ に .desktop ファイルを作って入れておかなければならないそうです。ファイル名は .desktop で終わればなんでもいいようです。URL はそのテンプレートファイルへの絶対パスか ~/.local/share/templates/ からの相対パスを書きます。Icon は /usr/share/icons/ 内の特に hicolor を探してみてください。
[Desktop Entry]
Name=Perl
Comment=Perl
Type=Link
URL=$HOME/テンプレート/perl.pl
Icon=application-x-perl
HelloFX.java のような java のソースファイルのアイコンを変えたいと思い方法を調べてみました。 アイコン(ArchWiki) xdg-utils(ArchWiki) XDG MIME Applications(ArchWiki) ファイルのアイコンを変更する道のり などによるとファイル名の拡張子から mime(Multipurpose Internet Mail Extensions, マイム)タイプを判断してアイコンを表示してるようです。
mimeタイプは file --mime ではなく /usr/share/mime/ などにある xml ファイルで定義されており xdg-mime コマンドで確認できます。 ~/.local/share/icons にファイル名を変えてコピーする。
file --mime HelloFX.java
HelloFX.java: text/plain; charset=utf-8
xdg-mime query filetype HelloFX.java
text/x-java
/usr/share/icons/hicolor/48x48/apps/ にある java-openjdk.png をコピーして ~/.local/share/icons/text-x-java.png にしてみましたが、無視され失敗でした。GUI による設定を信じるべきでした。KDEシステム設定 → アプリケーション → ファイルの関連付け から text/x-java を探してクリック、出てきたアイコンをクリックしてから選択してアイコンを変更できます。
アプリを起動したとき、フリーズすることがあるので調べていたのですが、「最近使用したファイル」「最近使用した場所」が怪しいとわかりました。「最近使用したファイル」を Dolphin で開いて、Ctrl+A で全選択、右クリックで Forget Files を選択してすべて消します。「最近使用した場所」も同様に、Dolphin で開いて、Ctrl+A で全選択、右クリックで Forget Locations を選択してすべて消します。とやってみたのですが、Dolphin を開き直すと「最近使用したファイル」と「最近使用した場所」にリストが現れます。何度やっても現れます。
recent-files-and-locations-listed-in-dolphin-and-other-applications-are-very-old を読んでみると、KDEシステム設定で設定できるようなのです。それと ~/local/share/RecentDocuments の中身も消去しておいた方が良さそうです。
KDEシステム設定 の セキュリティーとプライバシー の 最近のファイル で設定できます。 「履歴を残す: 永遠に」になってましたがこれはこのままでいいようです。履歴を消去して、開かれた文書を記憶する: で「記憶しない」をチェックします。「最近使用したファイル」「最近使用した場所」の両方とも記憶しなくなります。
プレビューアイコンを表示させるとフリーズが多くなる(この問題は解消されました)のですが、F12 でオン・オフが簡単にできます。
Dolphin でファイル名に /(スラッシュ)を使うと自動的に ⁄ (U+2044 Fraction Slash)に置き換わります。
Kate
Kate でHTMLを編集すると、LSP がどうのと言ってくるのでインストールしたけど使い方がよくわからない。(langserver.org)
sudo pacman -S vscode-html-languageserver
選択した範囲をまとめてインデントするには Tab、 減らすには Shift Tab が標準のよう。
リムーバブルデバイスにあるファイルの場合、メニューの "最近のファイルを開く" から開くと白紙になってることがある。ログインする前からつなげていても、ログインしたときに /run/media/USER_NAME/MEDIA_NAME に自動ではマウントしてくれないことが原因らしい。Dolphin でそのリムーバブルデバイスを開けばマウントしてくれる。(KDEシステム設定 → 接続されたデバイス → ディスクとカメラ → デバイスの自動マウント でログイン時の自動マウントの設定ができます。)
pacman
pacman(ArchWiki) はパッケージマネージャです。「部分的なアップグレードはサポートされていません。どんなときでも、パッケージをインストールする前に (pacman -Syu で) アップグレードしてください。」インストールされているパッケージのアップグレードを確認したいときは pacman-contrib パッケージに含まれている bash スクリプト checkupdates を使うことで、システムアップデートを行わずに安全に確認が行えます。
# 全てのパッケージのアップグレード
#「システムアップデートをしたときは、pacman からの表示を全て読み常識を働かせることが肝要です。」
sudo pacman -Syu
# パッケージデータベースに問い合わせ
pacman -Ss 検索ワード
# パッケージの詳細な情報
pacman -Si パッケージ名
# パッケージのさらなる情報
pacman -Sii パッケージ名
# パッケージのインストール(依存パッケージもインストール)
sudo pacman -S パッケージ名
# 提案パッケージを依存パッケージとしてインストール
sudo pacman -S --asdeps パッケージ名
# パッケージの削除(依存パッケージは残す)
sudo pacman -R パッケージ名
# パッケージの削除(そのパッケージのみが依存しているパッケージも削除)
sudo pacman -Rs パッケージ名
# インストール済みパッケージから検索
pacman -Qs 検索ワード1 検索ワード2 ...
# インストール理由を「依存パッケージ」に
sudo pacman -D --asdeps パッケージ名
# インストール理由を「明示的にインストール」に
sudo pacman -D --asexplicit パッケージ名
- pacman からの出力は /var/log/pacman.log に記録されています。
- pacman はダウンロードしたパッケージを /var/cache/pacman/pkg/ に保存します。
- pacman の設定は /etc/pacman.conf に記述されています。
トラブル
pacman -Syu が途中で止まったとき。パッケージデータベースの同期の途中で(回線の不調などで)止まったときは、もう一度 sudo pacman -Syu を実行する。パッケージのダウンロードの途中で止まったときは、sudo pacman -Su を実行する(ファイルの途中からでもレジュームでダウンロードしてくれる)。ただし、サーバーからパッケージが(最新版に更新されるなどして)削除された場合もあるので、その場合は pacman -Syu を実行する。
sudo pacman -Syu で次のメッセージが出た場合。
:: パッケージデータベースの同期中...
エラー: 全てのデータベースの同期に失敗しました (データベースをロックできません)
次のコマンドで db.lck を削除した後、pacman -Syu を実行する。
sudo rm /var/lib/pacman/db.lck
:: パッケージデータベースの同期中...
エラー: 全てのデータベースの同期に失敗しました (リポジトリに設定されたサーバーがありません)
次のコマンドでサーバーの設定をした後、pacman -Syu を実行する。(使用するミラーは /etc/pacman.d/mirrorlist に設定されています。このファイルは自動で書き換えられるようです。)
sudo pacman-mirrors -c Japan
次のようなメッセージが出た場合。-Suu でダウングレードも許可する。
警告: plymouth: ローカル (24.004.60-6) の方が extra よりも最新です (22.02.122-17)
sudo pacman -Suu
Switching Branches
Switching Branches Manjaroのリポジトリは unstable、testing、stable の3つがあります(一番安全なのが stable です)。これを切り替えるには次のコマンドです。
sudo pacman-mirrors --api --set-branch {branch}
データベースを更新するには次のコマンドです。
sudo pacman-mirrors --fasttrack 5 && sudo pacman -Sy
現在参照しているブランチを表示させるコマンドです。
pacman-mirrors -G
パッケージキャッシュの掃除
pacman-contrib をインストールします。pacman がダウンロードしたパッケージは通常 /var/cache/pacman/pkg/
にあります。いくらでもため込むので、たまに掃除が必要になります。Manjaro の場合すべて削除してもよさそうですが、せっかくダウンロードしたファイルなので最新と1つ前のバージョンを残しておくことにしました。
# 最も新しい3つを残して全て削除
paccache -r
# すべて削除
paccache -rk0
# 最も新しいバージョン1つだけを保持
paccache -rk1
# 最も新しいバージョン2つだけを保持
paccache -rk2
yay
Arch: Manjaro で「pacman」と「yay」のコマンド操作〈H53〉
yay は ~/.cache/yay/ を使うようです。yay の設定は ~/.config/yay/config.json
pamac
GUI でパッケージの管理ができるツール。端末からも使える。設定から「アップデートがあるか確認する」をオフにすることで自動でアプデートの確認をしなくなる。
ファイル検索
Linuxでファイルを検索する:findとlocateの使い方 find コマンドは高機能ですが、単純にファイル名から検索するのには遅すぎます。そこで locate(ArchWiki) を使うわけですが、mlocate と高速な plocate があります。plocate をインストールしてみました。
sudo pacman -S plocate
まずデータベースをつくる必要があります。デフォルトでは /var/lib/plocate/plocate.db につくられます。デフォルト設定ファイル(/etc/updatedb.conf)の除外パス(PRUNEPATHS)には /media と /mnt が含まれているので、デフォルトでは外部デバイスのファイルは検索できません。
#データベースの作成
sudo updatedb
# filename を検索
locate filename
# -b, --basename を指定するとパスの最後の部分(ベースネーム)に一致しなくてはなりません。
locate -b filename
# -i, --ignore-case を指定すると大文字小文字が無視されます。
locate -i filename
外部デバイスで検索するにはそのデバイスのデータベースをつくるのがいいかもしれません。(USER_NAME と DEVICE_NAME は置き換えて下さい。df コマンドで確かめることもできます。)
sudo updatedb -U /run/media/USER_NAME/DEVICE_NAME -o DEVICE_NAMEdb
locate -d DEVICE_NAMEdb filename
# あるいは
sudo updatedb -U /run/media/ -o mediadb
locate -d mediadb filename
zip
Windowsで作ったzipファイルは、unar で解凍すればファイル名が文字化けしないそうです(文字コードが自動認識される)。(アーカイブと圧縮(ArchWiki) も参照)
unar xxx.zip
unar -e help
でサポートされてる文字コードがリストされます。
* Shift_JIS (MS_Kanji, csShiftJIS, windows-31j, csWindows31J)
となっているので、Shift_JIS と windows-31j (cp932) は同じ扱いのようです。文字コード指定する場合はつぎのように。
unar -e Shift_JIS xxx.zip
# unzip がインストールされてる場合
unzip -O cp932 xxx.zip
unzip -O shift-jis xxx.zip
スリープ
Windows ではスリープしてもダウンロードは止まらず、便利だったけど Linux のスリープでは難しいらしい。電源管理/サスペンドとハイバネート(ArchWiki)
壁紙
- Manjaro Plasma では /usr/share/wallpapers にあります。
- Manjaro GNOME では /usr/share/backgrounds にあります。
pkgfile
pkgfile(ArchWiki) は特定のファイルを所有しているパッケージはどれか、または特定のパッケージに入っているファイルはどれかを表示するツールです。 デフォルトでは、毎日パッケージデータベースがアップデートされる設定になっています。自動アップデートを無効にすることができます。(systemd(ArchWiki))
#パッケージデータベースの自動更新を無効にする
systemctl disable pkgfile-update.timer
#パッケージデータベースの自動更新を有効にする
systemctl enable pkgfile-update.timer
#手動でパッケージデータベースの更新
sudo pkgfile -u
#参考
systemctl list-unit-files | grep pkg
systemctl status pkgfile-update
systemctl start pkgfile-update.servic
systemctl stop pkgfile-update.servic
systemctl enable pkgfile-update.service
systemctl disable pkgfile-update.service
pkgfile は使わないのでアンインストールしました。 pacman -F ファイル名 で検索できます。
pacman -F pkgfile
extra/pkgfile 21-2
usr/bin/pkgfile
usr/share/bash-completion/completions/pkgfile
NTFS
Windows の NTFS(ArchWiki) でファーマットされたUSB接続のハードディスクを使っていると
“wrong fs type, bad option, bad superblock on /dev/sdc2” error mounting HDD
というようなメッセージが出てマウントできませんでした。Windows で CHKDSK 読み取り専用でチェックしても問題なしといわれます。ArchWiki のとおりやってみると、マウントできました。
$ sudo dmesg
ntfs3: sdc2: It is recommened to use chkdsk.
ntfs3: sdc2: volume is dirty and "force" flag is not set!
$ sudo ntfsfix --clear-dirty /dev/sdc2
Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
NTFS partition /dev/sdc2 was processed successfully.
UEFI Boot Order
外付けSSDに Manjaro をインストールして使っていますが、このSSDを外した状態で Windows を起動すると Boot の優先順序の設定が変わってしまいます。これはバグではなくて仕様のようです(ブートドライブを UEFI ブートモードでスワップすると起動順序が変更される理由)。ブートドライブはなるべく外さないで使った方が良さそうです。ブートの順序は次のコマンドで確認、変更できます。
$ efibootmgr
BootCurrent: 0000
Timeout: 6 seconds
BootOrder: 0002,0000,0001
Boot0000* Manjaro
Boot0001* ubuntu
Boot0002* Windows Boot Manager
# ブートオーダーの変更
$ sudo efibootmgr -o 0000,0002,0001
Shell
シェルについてまとめる bashの.profileや.bashrc等を実行する動作仕様 fish shellが結構良かった話
sudo pacman -S fish
chroot
別のディレクトリをルートに見せかけるコマンドです。システムが起動しなくなったとき Manjaro のインストール用LiveUSBから起動して chroot でルートを変更して修正を試すことができます。chroot(ArchWiki) から自分の場合の方法を整理しておきます。
pacman が途中で止まってしまい、pacman を再実行してみたら正常に終わったので再起動してみたら、できずに /boot/vmlinuz がないとかいってきます。LiveUSB で起動してみると /boot/vmlinuz はありませんでした。このファイルは圧縮されたカーネルそのものらしいのです。pacman はカーネルを消去してから止まったようです。カーネルを再インストールすれば回復すると思われます。
まず、Manjaro-kde のインストール用LiveUSBで起動します。コンソールを起動して、コマンド lsblk
で修復するデバイスのマウントポイントを確認します。/run/media/manjaro/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx という感じでかなり長かったので変数newに入れておきました。root のパスワードはなにも設定されてないので、要求されたらただ Enterキー をたたいてください。
lsblk
new=/run/media/manjaro/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
cd $new
sudo mount -t proc /proc proc/
sudo mount -t sysfs /sys sys/
sudo mount --rbind /dev dev/
sudo mount --rbind /run run/
sudo chroot $new
sudo pacman -U /var/cache/pacman/pkg/linux613-6.13.8-2-x86_64.pkg.tar.zst
exit
近頃のパッケージ
- AppImage 公式サイト AppImages AppImageHub
- Flatpak 公式サイト Flathub
- Snapcraft 公式サイト
- Flatpak - ArchWiki
- Snap - ArchWiki
どれも多くの Linux ディストリビューションで動作し、依存ファイルを含んでいます。
AppImage
AppImage が最も手軽で windows のポータブルアプリに近いです。root権限を必要とせず、どこからでも起動できます。ただしサンドボックスで実行されるわけではありません。ディスクイメージのようになっていて、FUSE (Filesystem in Userspace) という仕組みでマウントされるそうです。ダウンロードした AppImageファイルは実行権限を与える必要があり、GUI からもできますが、次のコマンドでもできます。
chmod a+x *.AppImage
- ATOM Sunsetting Atom ferion11/atom_Appimage: Atom Appimage for linux 64bits Atom Community
- PULSAR (AppImage版もあります)
- zilti/code-oss.AppImage
Atom Editor をダウンロードしましたが次のように起動できます。
# 起動すると /tmp/atom-fcff66f2ff73.sock のようなファイルがつくられます。
./atom*.AppImage
# マウントして中身を見ることができます。
# /tmp/.mount_atom-v7RPCeN のような表示があり、そこにマウントされます。Ctrl-C で終了します。
atom-v1.63.1-x86_64.AppImage --appimage-mount
# その場所に squashfs-root/ をつくり展開します。
# スクリプトファイル squashfs-root/AppRun で起動できます。
atom-v1.63.1-x86_64.AppImage --appimage-extract
# /tmp/appimage_extracted_ffe170e536c3b7ba5b9dab6ffb6b555a のようなフォルダに展開してから実行されます。
# /tmp は通常Ram上にあるので、起動してしまえば高速動作が期待できます。ただし、展開すると大きくなるので注意が必要です。
# help にも出てこないので隠しオプションでしょうか?
atom-v1.63.1-x86_64.AppImage --appimage-extract-and-run
# 次のようにフォルダを AppImageファイルと同じフォルダにつくっておくと
# 設定ファイルをそこに作ってくれるそうです(portable mode)。
atom-v1.63.1-x86_64.AppImage.home
atom-v1.63.1-x86_64.AppImage.config
# 上記のフォルダを作るコマンドです。
atom-v1.63.1-x86_64.AppImage --appimage-portable-home
atom-v1.63.1-x86_64.AppImage --appimage-portable-config
# ヘルプの表示
atom-v1.63.1-x86_64.AppImage --appimage-help
Firejail で Atom Editor を起動する場合。(日本語入力できません。profile の変更の必要があります。ですが、Wayland では必要ないです。)
firejail --appimage --profile=atom atom*.AppImage
次のように起動できるものもあります。
firejail gvim --appimage-extract-and-run
AppImageKit/README.md も参考になりそうです。
~/AppImage をつくってそこに実行可能にした AppImage をいれておきます。~/AppImage-bin にパスを通しておいて、各AppImageの起動スクリプトをつくっておきます。.desktop の Exec には ~/AppImage-bin から起動するように設定しておきます。~/AppImage-bin/atom の例です。この方法は簡単かつ柔軟だと思うのですが…
#! /usr/bin/bash
exec firejail --appimage --profile=atom ~/AppImage/atom*.AppImage $@
Flatpak
Flatpak(ArchWiki) はサンドボックスで実行されます。「Flatpak はアプリケーションとランタイムを管理するためのツールです。」「Flatpak は OSTree を使用してデータを配布・デプロイします」正式な文書は Flatpak documentation にあります。
# リポジトリの追加
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# リポジトリの一覧表示
flatpak remotes
# リポジトリの appstream データの取得、ランタイムとアプリケーションのアップデート
flatpak update
# リポジトリの packagename パッケージを検索
flatpak search packagename
# remote という名前のリモートリポジトリに存在するランタイムとアプリケーションを確認
latpak remote-ls remote
# remote から name パッケージをインストール
flatpak install remote name
# インストールされたランタイムとアプリケーションの確認(ID の表示)
flatpak list
# インストールされたアプリケーションのみ表示(ID の表示)
flatpak list --app
# ID を実行
flatpak run ID
# ID をアップデート
flatpak update ID
# ID をアンインストール
flatpak uninstall ID
# アンインストール時に ~/.var/app とパーミッションストアのアプリデータを削除
flatpak uninstall --delete-data ID
# アプリケーションによって使われなくなったランタイムとエクステンションを削除
flatpak uninstall --unused
# 修復する
flatpak repair
# 自動および手動更新を防止
flatpak mask ID
# 更新を再度有効にする
flatpak mask --remove ID
# ID のサンドボックス権限を表示する
flatpak info --show-permissions ID
# ID のサンドボックス権限を上書き
flatpak override --nofilesystem=home ID
# ID のサンドボックス権限をリセット
flatpak override --reset ID
パーミッション管理のGUIツールがあります。flatpak-kcm は KDEシステム設定で、セキュリティーとプライバシー の アプリケーションの権限 → Flatpak の権限 で設定できるようになります。flatseal は Plasma でなくても使えるツールで、アプリケーションメニューから直接起動できます。
pacman -S flatpak-kcm
yay -S flatseal
Snap
Snap(ArchWiki) は AppArmor を有効にしておかないとサンドボックスの機能はなく、システムへ無制限にアクセスできるそうです。Snap はカーネルを含むこともできます。(新しいパッケージの仕組み、Flatpakを使用する)
Snap版 vscode をインストールしてみました。Install code on Manjaro Linux の通りにやってみました。
sudo pacman -S snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
sudo snap install code --classic
error: too early for operation, device not yet seeded or device model not acknowledged
# というメッセージが出ました。少し待ってからもう一度やってみるとダウンロードが始まりました。
Warning: /var/lib/snapd/snap/bin was not found in your $PATH. If you've not restarted your session
since you installed snapd, try doing that. Please see https://forum.snapcraft.io/t/9469
for more details.
WARNING: There is 1 new warning. See 'snap warnings'.
# というメッセージが出たので、一度ターミナルを閉じてから次のコマンドです。
snap warnings
warning: |
the snapd.apparmor service is disabled; snap applications will likely not start.
Run "systemctl enable --now snapd.apparmor" to correct this.
# AppArmor を有効にしないと起動できないアプリがあるぞという警告のようです。
sudo systemctl enable --now snapd.apparmor
# vscode は AppArmorなしでも起動しました。アプリケーションメニューか、ターミナルで次のコマンド。
/var/lib/snapd/snap/bin/code
Firefoxを含むsnapパッケージとの付き合い方 などを参考にすると
- /var/lib/snapd/snaps に .snap ファイルがダウンロードされます。
- /var/lib/snapd/snap/<snapname> にマウントされます。
- /etc/systemd/system/multi-user.target.wants/ にシステム起動時に作成されたマウントユニットへのシンボリックリンクがあります。
- /var/snap/パッケージ名/ snapパッケージのシステム用データ領域
- ~/snap/パッケージ名/ snapパッケージのユーザー固有のデータ領域
# インストールされている snap の確認
snap list
# ローカルの野良 snap をインストール
snap install --dangerous /path/to/snap
# snap を手動でアップデート
snap refresh
# 最新/次のアップデート時間を確認
snap refresh --time
# snap を削除
snap remove snapname
アプリケーションメニューには自動では登録されませんでした。自分で登録するかターミナルで code と打ち込んで起動する必要があります。
自動でアップデートしようとしますが、それを完全に止めるには snapd.socket を disable にするしか方法がないようです。snap コマンドは使えなくなりますが、code は起動できました。他に問題を起こさないという保証はありません。
sudo systemctl disable --now snapd.socket
#再開するには次のコマンド
sudo systemctl enable --now snapd.socket
インストールした snap の権限は snap ストア で調整できます(できないのも多いようです)。インストール済み を選択してアプリケーションを選択、Permissions をクリックします。大まかな感じで、全ユーザー共通の設定になります。
sudo snap install snap-store
sandbox
Firejail
Firejail, Firejail(ArchWiki), FIREJAIL-PROFILE(5)
sudo pacman -S firejail
sudo pacman -S firetools
デフォルトのプロファイルは /etc/firejail/ にあり、カスタマイズしたものは ~/.config/firejail/ に置きます。
# Firejail で vlc を起動する
firejail vlc
# Firejail が使用中かを確認する
firejail --list
# より総合的な出力を得るには:
firejail --tree
Atom Editor を Firejail で起動すると日本語入力ができなくなる問題を調べてみました。FIREJAIL-PROFILE(5) Fcitx 5 DBus D-Bus
/etc/firejail/atom.profile は electron.profile を読み込む設定になっています。/etc/firejail/electron.profile をコピーして ~/.config/firejail/electron.profile とします。~/.config/firejail/electron.profile の中をのぞいてみると、
dbus-user none
と書かれた行があるのでコメントアウトします。これだけで日本語入力できるようになりましたが、fcitx だけを通す設定にしたほうがいいと思われます。(この書き換えは Wayland では必要ないようです。)
#dbus-user none
dbus-user filter
dbus-user.talk org.fcitx.*
これで atomのプロファイルから AppImage版 Pulsar Editor 用プロファイルも作れるとはずと思いましたがうまくいきません。 Issue with Pulsar profile #6105 では、firetools で作ったプロファイルで、seccomp を
seccomp !chroot
に変更すればいいそうです。Firejail を使うならこの方法になりそうです。ただ、堅牢性とかどうなのか心配ではあります。
軽量画像ビューア qView の AppImage版をダウンロードしました。
firejail --build --appimage qView-6.1-x86_64.AppImage > qview.profile
で qView を起動して、いろいろな機能を使ってから終了させます。qview.profile を Editor で開いて
--- Built profile begins after this line ---
より下の部分のみを残して削除します。ファイルを移動して ~/.config/firejail/qview.profile とします。次のコマンドで起動し、メッセージを読んで qview.profile を修正します。
firejail --appimage --profile=qview qView-6.1-x86_64.AppImage
whitelist ${HOME}/..
は削除します。その他の whitelist も削除できるものは削除したほうがいいでしょう。面倒ではありますが、Electronアプリ以外では --build オプションが使える場合があります。
AppArmor のサポートを有効化する には、AppArmor を有効にしたうえで次のコマンド。
sudo apparmor_parser -r /etc/apparmor.d/firejail-default
AppArmor のサポートを無効化(上記コマンドの取り消し)する には。
sudo apparmor_parser -R /etc/apparmor.d/firejail-default
Bubblejail
yay -S bubblejail
GUI による設定アプリはターミナルでコマンド bubblejail-config またはアプリケーションメニューで Bubblejail Configuration を探すことで起動できます。
firefox のインスタンスを作成してみます。インスタンスは ~/.local/share/bubblejail/instances/ に作られます。(右はしの firefox の方がインスタンスの名前です)
bubblejail create --profile firefox firefox
Updating desktop MIME database
Import tips: Move .mozilla folder from your home directory in to instance
home directory.
デスクトップエントリを作りたくない場合は --no-desktop-entry オプションを付けます。~/.local/share/applications/firefox.desktop が作られますが、firefox_bubble.desktop のようにファイル名を変えておけば通常起動もできます(でも bubblejail を使っているのかどうかわからなくなるので、やらない方がいいです)。
~/.local/share/applications/firefox.desktop
Name=firefox bubble
Name[ja]=Firefox ウェブ・ブラウザ
Name[ja]=Firefox ウェブ・ブラウザ を Name[ja]=Firefox bubble に書き換えたほうがよさそうです。
bubblejail で firefox を起動するには次のようにします。ここの firefox は bubblejail のインスタンスの名前です。
bubblejail run firefox
実行するプログラムに引数を渡す場合は、インスタンス名と実行するプログラムも必ず指定しなければならないようです。ArchWiki の説明だと誤解しそうです。次のは例です。
bubblejail run firefox firefox google.com
bubblejail-config で bubblyfirefox を選択して Fcitx/Fcitx5 input method をチェックして save します。(IBus input method もあります。)Home Share で .mozilla と .cache を付け足すと通常起動の Firefox と設定とキャッシュが共用できます。Wayland を使っている場合は、Wayland windowing system をチェックしてください、しないと Firefox の起動が異常に遅くなります。
詳しくは man bubblejail と man bubblejail.services でマニュアルを読んでください。用意されているプロファイルのリストは次のコマンドで表示されます。
bubblejail list profiles
firefox_wayland
steam
chromium
generic
firefox
transmission-gtk
code_oss
lutris
Tor Ploject の Tor Browse を Bubblejail で使う方法が Example: setting up Torbrowser に説明されているので試してみました。
ターミナルから次のコマンドを実行して、インスタンスを作成します。
[username@hostname ~] bubblejail create --no-desktop-entry --profile generic tor_browser
サンドボックス内からターミナルを起動します。alacritty, foot, konsole のどれでもいいのですが gnome-terminal は D-Bus へアクセスしようとするので使えないそうです。
[username@hostname ~] bubblejail run tor_browser alacritty
Download Tor Browser から Linux版をダウンロードしてきて ~/.local/share/bubblejail/instances/tor_browser/home に配置して、展開します(ファイル名は実際のものに書き換えてください)。
[sandbox ~] tar --verbose --extract --file ./tor-browser-linux-x86_64-13.0.15.tar.xz
Tor Browser をサンドボックス内から起動します。
[sandbox ~] cd tor-browser
[sandbox ~] ./start-tor-browser.desktop
一度起動するとサンドボックス内の ~/.local/share/applications/ に desktop entry が作られるみたいなことが書かれていますが、作られません。次のコマンドでサンドボックスの外の ~/.local/share/applications/ に desktop entry が作られるはずなのですが、
[username@hostname ~] bubblejail generate-desktop-entry --desktop-entry ~/.local/share/bubblejail/instances/tor_browser/home/.local/share/applications/start-tor-browser.desktop tor_browser
パスを変えた次のコマンドで desktop entry を作ります。
[username@hostname ~] bubblejail generate-desktop-entry --desktop-entry ~/.local/share/bubblejail/instances/tor_browser/home/tor-browser/start-tor-browser.desktop tor_browser
desktop entry をエディッタで開いて
[username@hostname ~] nano ~/.local/share/applications/start-tor-browser.desktop
次のようになっている行を
Icon=/home/username/tor-browser/Browser/browser/chrome/icons/default/default128.png
次のように書き換えます。(アイコンのパスを書き換えます)
Icon=/home/username/.local/share/bubblejail/instances/tor_browser/home/tor-browser/Browser/browser/chrome/icons/default/default128.png
セーブして閉じます。データベースの更新を一応しておきます。
[username@hostname ~] update-desktop-database ~/.local/share/applications/
これでアプリケーションメニューから tor browser bubble を選んで起動できます。ダウンロードしたものは ~/.local/share/bubblejail/instances/tor_browser/home/tor-browser/Browser/ダウンロード/ に入ってたりと面倒です。
AppArmor
AppArmor(wikipedia) によると、 カーネルパラメータ(wikipedia)を設定する必要があるそうです。
lsm=landlock,lockdown,yama,apparmor,bpf
カーネルをコンパイルするとき、以下のオプションを設定する必要があります。
CONFIG_SECURITY_APPARMOR=y
CONFIG_AUDIT=y
カーネルパラメータでの設定を不必要にするには次のオプションの設定が必要です。
CONFIG_LSM="landlock,lockdown,yama,apparmor,bpf"
カーネルに設定された lsm=
値は zgrep CONFIG_LSM= /proc/config.gz
で、現在の値は cat /sys/kernel/security/lsm
です。
zgrep CONFIG_LSM= /proc/config.gz
CONFIG_LSM="landlock,lockdown,yama,integrity,bpf"
cat /sys/kernel/security/lsm
capability,landlock,lockdown,yama,bpf%
次のコマンドで apparmor module is loaded. と言ってるので、カーネルに apparmor が組み込まれているようです。
$ aa-status
apparmor module is loaded.
apparmor filesystem is not mounted.
結局どうするかというと(この部分は失敗するとシステムが起動しなくなるかもしれません。くれぐれも慎重に)、自分の場合は GRUB を使っているので /etc/default/grub を開いて
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash udev.log_priority=3"
となっているところに付け足して
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash udev.log_priority=3 lsm=landlock,lockdown,yama,apparmor,bpf"
に変えて保存します。それから次のコマンドで /boot/grub/grub.cfg ファイルを自動生成します。
sudo grub-mkconfig -o /boot/grub/grub.cfg
システムを再起動して、次のコマンドで確認します。
$ aa-enabled
Yes
$ aa-status
apparmor module is loaded.
You do not have enough privilege to read the profile set.
$ sudo aa-status
# AppArmor を有効にする
sudo systemctl enable --now apparmor.service
sudo systemctl enable --now snapd.apparmor.service
# AppArmor を無効にする
sudo systemctl disable --now apparmor.service
sudo systemctl disable --now snapd.apparmor.service
AppArmor を使えるようにすることはできました。プロファイルの調整方法はこれからの課題ということで。パート IV AppArmor による権限の制限 という SESU Linux の文書があったのでこれを勉強するべきでしょうか。第798回 Ubuntuのセキュリティを支えるAppArmor入門
bubblewrap
アプリケーションパッケージ自体は bubblewrap と呼ばれますが、実際の実行バイナリや man ページで使われている名前は bwrap です。
AppImage を bubblewrap で実行する方法がわかったので、なるべく bubblewrap を使う方針にしました。パッケージ squashfuse をインストールします。
sudo pacman -S squashfuse
~/bin/bwrap/qview をつくって実行権限を与えておきます。設定はゆるゆるですが、そのぶん短時間で設定をつくれます。bubblewrap は起動がはやいです。
~/bin/bwrap/qview
#!/usr/bin/bash
AppImage=$HOME/AppImage/qView-*-x86_64.AppImage
Name=qview
Id=$(/usr/bin/id -u)
Point=$HOME/.cache/mnt/$Name-$(uuidgen)
/usr/bin/mkdir -p $Point
/usr/bin/squashfuse -o offset=$($AppImage --appimage-offset) $AppImage $Point
/usr/bin/bwrap \
--setenv QT_QPA_PLATFORM xcb \
--ro-bind / / \
--bind /run/user/$Id /run/user/$Id \
--bind $HOME/.config/qView $HOME/.config/qView \
--dev /dev \
--dev-bind /dev/dri /dev/dri \
--proc /proc \
--unshare-all \
$Point/AppRun "$@"
/usr/bin/fusermount -u $Point
/usr/bin/rmdir $Point
zsync2
rsync (wikipedia) と同様の方法ですでにダウンロードしてある過去バージョンと違う部分だけをダウンロードして新バージョンにします。ただし .zsync ファイルが必要です。
zsync は https にアクセスできないようです。zsync2 が必要になりますが、AUR にあるのは curl とファイルが衝突すると言ってインストールできませんでした。探してみると AppImage版 zsync2 があったのでダウンロードして試してみました。zsync2 で起動するようにして、次の形のコマンドで成功しました。新しいファイルはカレントディレクトリにつくられます。AppImage版vimのアップグレードが半分より少し多い程度のダウンロードで済みました。
zsync2 -i path/oldVersionFile https://url/xxxx.zsync
Application menu
デスクトップエントリ(ArchWiki) によると、アプリケーションメニューは Freedesktop.org Specifications にある仕様に基づいており Desktop Entry Specification と Desktop Menu Specification を知る必要があるようです。XDG 関係のディレクトリは XDG Base Directory(ArchWiki) が参考になります。
AppImage をアプリケーションメニューから起動できるようにすることと、AppImage 専用のサブメニューをつくることが目的です。
通常アプリケーションの名のついた .desktop ファイルとそのアイコン、サブメニューの項目名に対応する .directory ファイルとそのアイコン、メニューの構造を XML で記述した .menu ファイルがあります。アイコンは用意しなくても何か代わりのアイコンを使ってくれるようですが、できれば 48x48 の PNG 画像があったほうがいいです。
- ユーザー定義の .menu ファイルは
~/.config/menus/application-merged/
に入れます。 - ユーザー定義の .directory ファイルは
~/.local/share/desktop-directories/
に入れます。 - ユーザー定義の .desktop ファイルは
~/.local/share/applications/
に入れます。 - ユーザー定義のアイコンは
~/.local/share/icons/
に入れます。
.menu の場所
まず .menu ファイルの位置を探します。次のように仕様書で定義されています。
$XDG_CONFIG_DIRS/menus/${XDG_MENU_PREFIX}applications.menu
${XDG_MENU_PREFIX}
は(自分の環境では)未定義です(いつのまにか plasma- がセットされていました)が、"gnome-" とか "kde-" にしてデスクトップ環境によって使い分けできるようになっています。$XDG_CONFIG_DIRS
を調べてみると(自分の環境では)
echo $XDG_CONFIG_DIRS
/home/USERNAME/.config/kdedefaults:/etc/xdg:/usr/share/manjaro-kde-settings/xdg
~/.config/kdedefaults/menus/plasma-applications.menu
を作っておけば、これが個人用として優先して使われるようです(試してませんが)。作ってなければ標準の /etc/xdg/menus/plasma-applications.menu
が使われます。デフォルトの場所にあるメニューもマージしてくれます。そのデフォルトの場所とは
$XDG_CONFIG_DIRS/menus/applications-merged/
ですが、$XDG_CONFIG_HOME
がセットされていないなら $HOME/.config
が sysconfdir
になり、
sysconfdir/menus/application-merged/
の中もシステムは探してくれるそうです。
~/.config/menus/application-merged/user.menu
です。
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
<Menu>
<Name>Applications</Name>
<Menu>
<Name>AppImage</Name>
<Directory>AppImage.directory</Directory>
<Include>
<Category>X-AppImage</Category>
</Include>
</Menu>
</Menu>
.directory の場所
.directory ファイルを置く場所については次の定義があります。
$XDG_DATA_DIRS/desktop-directories/
$XDG_DATA_DIRS
を調べてみると(自分の環境では)
echo $XDG_DATA_DIRS
/home/USERNAME/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share:/var/lib/snapd/desktop
ですが、$XDG_DATA_HOME
がセットされていないなら $HOME/.local/share/
が datadir
になり、
datadir/desktop-directories/
の中もシステムは探してくれるそうです。
~/.local/share/desktop-directories/AppImage.directory
です。
[Desktop Entry]
Icon=AppImage.png
Name=AppImage
.desktop の場所
.desktop ファイルを置く場所については次の定義があります。
$XDG_DATA_DIRS/applications/
ですが、$XDG_DATA_HOME
がセットされていないなら $HOME/.local/share/
が datadir
になり、
datadir/applications/
の中もシステムは探してくれるそうなのです。~/.local/share/applications/
に .desktop ファイルを置くことにしました。
~/.local/share/applications/gvim.desktop
です。
[Desktop Entry]
Type=Application
Name=GVim
GenericName=テキストエディッタ
Exec=/home/USER_NAME/.local/AppImage-bin/gvim -f %F
Terminal=false
Icon=gvim
Categories=Utility;TextEditor;X-AppImage;
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
MimeType などは展開した AppImage の .desktopファイルを読めばいいです。Categories に X-AppImage を追加しておきます。
次のコマンドで検証します。これをやって自分で作ったカテゴリーは X- で始めるのが作法と知りました。
desktop-file-validate ./gvim.desktop
インストールします。
desktop-file-install --dir=$HOME/.local/share/applications ./gvim.desktop
データベースの更新です。
update-desktop-database -v ~/.local/share/applications
同様に .desktopファイルをつくればメニューに登録されるはずです。
icon の場所
アイコンの置き場所は次の3つが標準のようです。
$HOME/.icons (後方互換性のため)
$XDG_DATA_DIRS/icons
/usr/share/pixmaps
ですが、$XDG_DATA_DIRS
が定義されていないので ~/.local/share/icons/
も読み込んでくれるようです。$HOME/.icons
は無視されるようなのですが…。AppImage 公式サイト のトップに AppImageのアイコン画像(SVG)があるので、それをダウンロードして、SVG to PNG / ものおき で等倍で 48x48 のPNGに変換しました。それを AppImage.png
として ~/.local/share/icons/
に入れておきます。
GVIm のAppImageファイルを展開(xxxx.AppImage --appimage-extract
)して 48x48 のアイコンをとりだしました。gvim.png
として ~/.local/share/icons/
に入れておきます。
XDG ユーザーディレクトリ
XDG ユーザーディレクトリ(ArchWiki) によるとログインしたときの早い段階で次のコマンドが実行されます。
xdg-user-dirs-update
これにより2つの設定ファイルが(おそらく、なければ)つくられます。~/.config/user-dirs.locale と ~/.config/user-dirs.dirs です。それと、~/.config/user-dirs.dirs に設定されているディレクトリが(もし、なければ)つくられます。
~/.config/user-dirs.locale は次の1行だけです。
ja_JP
~/.config/user-dirs.dirs は次のようになっていました。
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run.
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/デスクトップ"
XDG_DOWNLOAD_DIR="$HOME/ダウンロード"
XDG_TEMPLATES_DIR="$HOME/テンプレート"
XDG_PUBLICSHARE_DIR="$HOME/公開"
XDG_DOCUMENTS_DIR="$HOME/ドキュメント"
XDG_MUSIC_DIR="$HOME/音楽"
XDG_PICTURES_DIR="$HOME/画像"
XDG_VIDEOS_DIR="$HOME/ビデオ"
ディレクトリ名を英語にしたいときは次のコマンドを実行します。--force オプションは設定ファイルがすでにあっても作り直すという意味のようです。
LC_ALL=C xdg-user-dirs-update --force
~/.config/user-dirs.locale は次の1文字だけになります。
C
~/.config/user-dirs.dirs は次のようになっていました。
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run.
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/Downloads"
XDG_TEMPLATES_DIR="$HOME/Templates"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_VIDEOS_DIR="$HOME/Videos"
ディレクトリ名を日本語に戻したいときは次のコマンドを実行します。または ~/.config/user-dirs.locale と ~/.config/user-dirs.dirs を削除してから、ログアウト、ログインでもいいようです。
xdg-user-dirs-update --force
ただし、ディレクトリの中身の移動、不要になったディレクトリの削除は手作業で行う必要があります。
~/.config/user-dirs.dirs を直接書き換えてカスタムディレクトリを使うこともできます。たとえば "$HOME/ダウンロード" を "$HOME/Downloads" に書き換えてここだけ英語にすることもできます。ただし、$HOME/Downloads ディレクトリを作ってから ログアウト、ログイン をしてください。
Perl
use utf8は書くべきなのか? によると、「substr(文字分割)、length(文字の長さ取得)と言うような、UNICODE とマルチバイトで動作が変る関数群などに対して、 どちらの処理方法で処理するかを教えるのがutf8フラグとなります。」ということで utf8 で統一された環境では(そうした関数群を使わないなら)use utf8; プラグマは必要ないそうです。Linux では必要ないということになりそうです。Windows でも Msys2 で Perl を使っていれば use utf8; は必要なかったのかもしれません。
それでは Linux で use utf8; を使う場合、utf-8 以外のファイルを読み書きするにはどうすればいいのか? だいたい次のような感じでよさそうです。open 文でのファイル名の encode の必要はないようです。
#! /usr/bin/perl
use strict;
use warnings;
use utf8;
binmode STDIN, ":encoding(utf8)";
binmode STDOUT, ":encoding(utf8)";
binmode STDERR, ":encoding(utf8)";
use open ':encoding(utf8)';
use Encode qw/encode decode/;
sub d($) { decode('utf8', shift) }
sub e($) { encode('utf8', shift) }
@ARGV = map {d($_)} @ARGV;
open my $R, "<:encoding(EUC-JP)", "入力.txt"
or die "開けません";
while(my $l = <$R>){
print $l;
}
close $R;
open my $W, ">:encoding(EUC-JP)", "出力.txt"
or die "Can't open.";
print $W "出力文字列 ";
print $W $ARGV[0];
close $W;
use utf8; を使わない場合です。読み込んだらすぐに encode、書き込む直前に decode ですかね。
#! /usr/bin/perl
use strict;
use warnings;
open my $R, "<:encoding(EUC-JP)", "入力.txt"
or die "開けません";
while(my $l = <$R>){
$l = Encode::encode('utf8', $l);
print $l;
}
close $R;
open my $W, ">:encoding(EUC-JP)", "出力.txt"
or die "開けません";
print $W Encode::decode('utf8', "出力文字列 ");
print $W Encode::decode('utf8', $ARGV[0]."\n");
close $W;
2024-10-01 の Stable Update で Perl は 5.38 から 5.40 になりました。LWP::Simple と LWP::Protocol::https をインストールしておけば LWP::Simple の get でインターネット上の HTMLファイルを取得できたのですが、できなくなりました。CPANのドキュメントを読んで試してみると Mozilla::CA と Net::SSLeay をインストールすると再び get が機能することがわかりました(Mozilla::CA が本当に必要かはわかりません)。
Windows では Strawberry Perl を使ってたのですが、5.38 では Locale 'Japanese_Japan.932' is unsupported, and may crash the interpreter.
のメッセージがでて使えない状態でしたが、5.40 では問題なくなりました。
Raku
# rakudo インストール(zef もインストールされる)
yay -S rakudo-bin
PATH に /usr/share/perl6/site/bin/ を付け加えろとメッセージあり。
raku を実行すると以下のメセージ。
You may want to `zef install Readline`, `zef install Linenoise`, or `zef install Terminal::LineEditor` or use rlwrap for a line editor
zef update
zef upgrade
zef install Readline
Readline が動かなくなったので
zef uninstall Readline
zef install Linenoise
2023年12月ころより yay でアップグレードに失敗していたのですが、パッケージの詳細: rakudo-bin 2023.12_01-1 のコメントのコマンド後の再実行で成功しました。
gpg --keyserver keys.openpgp.org --receive-keys DB2BA39D1ED967B584D65D71C09FF113BB6410D0 59E634736AFDCF9C6DBAC382602D51EACA887C01
Java
Java(ArchWiki) によると、OpenJDK の最新版とLTS版が公式サポートされるらしいです。
sudo pacman -S jdk-openjdk
とコマンドを実行すると /usr/lib/jvm/java-XX-openjdk/ に最新版がインストールされます(XX はバージョン番号)。
さらに usr/lib/jvm/default-runtime と /usr/lib/jvm/default がつくられますが、これらは /usr/lib/jvm/java-XX-openjdk/ へのリンクです。
java コマンドで起動されるのは、/usr/bin/java ですが、これは /usr/lib/jvm/default-runtime/bin/java へのリンクです。
過去の LTS 版をインストールするには次のようにします。(番号は置き換えて下さい)
sudo pacman -S jdk17-openjdk
複数の Java を管理するコマンドが用意されています。
archlinux-java status
でインストールされている Java 環境を確認して、例えば
sudo archlinux-java set java-17-openjdk
のように default 環境を切り替える(リンクのはり直し)ことができます。
OpenJFX のインストールは AUR からになります。jdk17 対応のものは pacman でインストール可能でしたが、今は AUR からになるようです。
sudo pacman -S java17-openjfx
Javaプログラムを実行すると次のようなエラーメッセージがでます。
Error occurred during initialization of boot layer
java.lang.LayerInstantiationException: Package jdk.internal.jrtfs in both module java.base and module jrt.fs
2重にパッケージがあるので、jrt-fs.jar を削除すればいいそうです。
sudo rm /usr/lib/jvm/default/lib/jrt-fs.jar
jdk17 でターミナルに文字化けせずに日本語を表示してくれます。
最新の openJFX ですが、次のコマンドでビルドに失敗しました。
yay -S aur/java-openjfx
原因はわかりません。(メモリーが少ないからかもしれません)面倒なので OpenJDK にあるビルド済の JavaFX を使うことにしました。Linux/x64 の SDK と JMODs です。いっそのこと JDK 自体も OpenJDK の GA版でいいのではないかと思いました。
/usr/local/java というフォルダをつくり、その中に解凍展開したフォルダからバージョン番号を取り除いた jdk, javafx-sdk, javafx-jmods の3つのフォルダを入れておきます。( jdk/release, javafx-sdk/lib/javafx.properties を読むことでもバージョンは確認できます)
~/.bash_profile に環境変数の設定をします。
export JAVA_HOME=/usr/local/java/jdk
export PATH_TO_FX=/usr/local/java/javafx-sdk
export PATH_TO_FX_MODS=/usr/local/java/javafx-jmods
export PATH=$JAVA_HOME/bin:$PATH
のように書いておきます。確認してみます。
. .bash_profile
java -version
openjdk version "21.0.1" 2023-10-17
OpenJDK Runtime Environment (build 21.0.1+12-29)
OpenJDK 64-Bit Server VM (build 21.0.1+12-29, mixed mode, sharing)
手作業でアップデートしなければなりません。GA版には過去バージョンがありません(と思い込んでいたのですが、Archive に全部ありました。使用は推奨されてませんが)。
Apache Ant は入れておいたほうがよさそうです。ダウンロードして解凍展開して、/usr/local/java/apache-ant としました。~/.bash_profile に付け加えて、PATH を修正します。Apache Ivy もダウンロードしました。使い方は Apache Ivyの紹介と基本的な使い方 が詳しいです。
export ANT_HOME=/usr/local/java/apache-ant
export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH
サンプル
コマンド行引数ファイルを作る方法でサンプルのビルドと実行をしてみます。JavaFX の Getting Started with JavaFX のあたりにあったソースコードがもとになっているので確かなものだと思います。hellofx というプロジェクトフォルダを作り、src フォルダにソースコードを入れます。
hellofx/src/module-info.java
module hellofx {
requires javafx.controls;
exports hellofx;
}
hellofx/src/hellofx/HelloFX.java
package hellofx;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloFX extends Application {
@Override
public void start(Stage stage) {
String javaVersion = System.getProperty("java.version");
String javafxVersion = System.getProperty("javafx.version");
Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + ".");
Scene scene = new Scene(new StackPane(l), 640, 480);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
System.out.println("こんにちは世界!");
launch();
}
}
hellofx/arg これはコンパイル用のコマンド行引数ファイルです。
-Xlint:unchecked
-Xdiags:verbose
-d dst/hellofx
--module-path /usr/local/java/javafx-sdk/lib
src/module-info.java
src/hellofx/HelloFX.java
hellofx/opt これは実行用のコマンド行引数ファイルです。
--module-path /usr/local/java/javafx-sdk/lib:dst/hellofx
-m hellofx/hellofx.HelloFX
hellofx に行って次のコマンド。
javac @arg
java @opt
モジュラJARファイルの作り方。最後のドットを忘れないでください。
jar -c -v -f hellofx.jar -e hellofx.HelloFX -C dst/hellofx .
-c または --create アーカイブを作成します。
-v または --verbose 冗長出力を標準出力に出力します。
-f= FILE または --file= FILE アーカイブ・ファイル名を指定します。
-e= CLASSNAME または --main-class= CLASSNAME これは main class の指定です(これはなくてもかまいません)。
-C DIR 指定されたディレクトリから、この次に指定されたファイルを格納します。
hellofx.jar を module-path に入れることで起動できます。
java --module-path $PATH_TO_FX/lib:hellofx.jar -m hellofx/hellofx.HelloFX
hellofx.jar に main class が指定してあれば省略できます。
java --module-path $PATH_TO_FX/lib:hellofx.jar -m hellofx
カスタム・ランタイム・イメージの作り方。javafx は jmods を使うことに注意してください。hellofx.jar を使うこともできます。--launcher オプションはなくてもいいようです。
jlink --module-path $PATH_TO_FX_MODS:dst/hellofx --add-modules hellofx --output hellofx --launcher hellofx=hellofx/hellofx.HelloFX
起動方法。
hellofx/bin/java -m hellofx/hellofx.HelloFX
launcher を指定してあればそこから起動できます。
hellofx/bin/hellofx
自動モジュール
モジュール定義ファイル(module-info.java)を書くのは面倒です。2.1 Javaモジュールシステム(モジュール定義ファイル、モジュールパス、ルートモジュール、自動モジュール、無名モジュールなど)~Java Advanced編 によるとモジュール定義ファイルがない場合は、モジュールパス上に配置されれば自動モジュール(automatic module)とされ、クラスパス上に配置されれば無名モジュール(unnamed module)として扱われます。どちらの場合でも「包含されるすべてのパッケージがexportsされたものと見なされ、外部公開されます。またモジュールグラフ上のすべてのモジュールを、requiresしたものと見なされます。」クラスパスも使えますがこれは後方互換のための機能なので「今後のJavaによるアプリケーション開発では基本的にはモジュールシステムを適用し、すべてのライブラリをモジュールパスから読み込むことをお勧めします。」
モジュールグラフにモジュールを追加するオプションが --add-modules です。ALL-MODULE-PATH で動くならこれが一番簡単です。
hellofx/arg2 コンパイル用のコマンド行引数ファイルです。
-Xlint:unchecked
-Xdiags:verbose
-d dst/hellofx
--module-path /usr/local/java/javafx-sdk/lib
--add-modules ALL-MODULE-PATH
src/hellofx/HelloFX.java
hellofx/opt2 自動モジュールとして起動するコマンド行引数ファイルです。
--module-path /usr/local/java/javafx-sdk/lib:hellofx.jar
--add-modules ALL-MODULE-PATH
-m hellofx/hellofx.HelloFX
hellofx/opt3 無名モジュールとして起動するコマンド行引数ファイルです。
--module-path /usr/local/java/javafx-sdk/lib
--add-modules ALL-MODULE-PATH
-cp dst/hellofx
hellofx.HelloFX
コンパイルして jar ファイルをつくります。(自動モジュールは jarファイルである必要があるらしい)
javac @arg2
jar -c -v -f hellofx.jar -e hellofx.HelloFX -C dst/hellofx .
java @opt2
opt3 から 無名モジュールとして動くことも確認。
java @opt3
jdeps に module-info.java を作ってもらいます。
jdeps --generate-module-info . --module-path $PATH_TO_FX/lib hellofx.jar
module hellofx {
requires javafx.controls;
requires transitive javafx.graphics;
exports hellofx;
}
requires transitive javafx.graphics; の1行が増えており、実際は使われないモジールを requires する場合があることがわかります。
Java8 のプログラム(FXML を使ったものでした)で、--add-modules ALL-MODULE-PATH をつけると動くのに、jdeps --generate-module-info の作った module-info.java だと動かないものがありました。内部API という隠しAPI のせいでした。
requires jdk.unsupported;
と module-info.java に付け足すと動くようになりました。内部API は特別な扱いになっているようです。次のコマンドでみることができます。
jdeps --module-path $PATH_TO_FX/lib xxx.jar
jdeps --jdk-internals --module-path $PATH_TO_FX/lib xxx.jar
opens など他のモジュール・ディレクティブ(というらしいです)を付け加えなければならない場合もあるようです。内部API を使わないようにしなければ、再コンパイルする意義が小さくなるようです。
無名パッケージは、jdeps --generate-module-info すると次のようなメッセージが出て、module-info.java はつくれません。
エラー: hellofx.jarには、モジュールで許可されない名前のないパッケージが含まれます
- Java Documentation
- JavaFX
- Introduction to FXML
- A Guide to Java 9 Modularity
- 事例から学ぶ、Java SE 11移行 その2 -モジュールアプリケーションの場合-
- .jarファイル内のファイルにアクセスする方法
- Java 8からJava 12へのアップグレード
- Oracle JDK 移行ガイド
HiDPI
Windows で JavaFX の表示が大きくなることがあります。HiDPI のディスプレイで文字などが小さくなるのでディスプレイの設定で 125% とかにしていると起きるようです。これはキャンセルすることができるそうです。java コマンドに -Dprism.allowhidpi=false というオプションを付けるか、またはソースコードに次の文を書いておきます。(これらは Windows で実行することにそなえた対策です)
System.setProperty("prism.allowhidpi", "false");
Font Setup
JavaFX 21.0.1 ですが Labelなどで半角数字が表示されません。Windows版は問題ないのですが。原因がわからないので JavaFX - Gluon から 17.0.10 をダウンロードして使うことにしました。JavaFX 21では、デフォルトのフォント(System, Regular)では半角数字が表示されないようです(自分だけかもしれませんが)。実在するフォント名を指定すれば半角数字も表示されるようです。
Font Setup(OpenJDKWiki) を見つけました(ただしこれは古い情報です)。logical font として、System, Serif, SansSerif, Monospaced があり、スタイルは Regular, Bold, Italic, Bold Italic があります(System は SansSerif と同じです)。JavaFX はフォントに関しては fontconfig に問い合わせるそうです。書いてあるとおりにやってみると
$ fc-match sans.regular
DroidSansJapanese.ttf: "Droid Sans" "Regular"
なんだかわからないフォントになっていて、これが原因のようです。fontconfigの設定 を参考に設定してみました。絵文字の設定に使った /etc/fonts/local.conf の </fontconfig> の前に
<alias>
<family>serif</family>
<prefer>
<family>IPAexMincho</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>IPAexGothic</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>IPAGothic</family>
</prefer>
</alias>
を書き加えました。試してみます。
$ fc-match sans.regular
ipaexg.ttf: "IPAexゴシック" "Regular"
となりました。JavaFX21 でも半角数字が表示されるようになりました。fontconfig.properties(フォント構成ファイル)をつくるべきかもしれませんが難しそうです。誰かフォントに詳しい人が作って公開してくれるのを待ったほうがよさそうです(他力本願)。
Java は論理フォント名として Serif, SansSerif, Monospaced, Dialog, DialogInput の5つをサポートしなくてはならないそうです。スタイル名は標準で plain, bold, italic, bolditalic の4つです。
- Linuxのフォント設定
- 美しいフリーの日本語フォントを使う
- Linux fontconfigの設定について
- Archlinuxで、Notoフォント、Noto CJKフォントを使う
- フォント設定/サンプル(ArchWiki)
- Java 実行環境のフォント(ArchWiki)
- X Logical Font Description (ArchWiki)
- 5 Font Configuration Files
- 5 フォント構成ファイル
JavaFX 24
Release Notes for JavaFX 24 によると JavaFX24 は jdk22 かそれ以上でないと動かないそうです。それに次のようなメッセージが出るのでオプションをつけます。現時点ではオプションをつけなくてもメッセージが出るだけで動きます。
WARNING: Restricted methods will be blocked in a future release unless native access is enabled
# というようなメッセージが出るので次のようにオプションをつけます。
java --enable-native-access=javafx.graphics,javafx.media,javafx.web
次のようなメセージが出るのでさらにオプションが必要です。こっちは修正されるまで(24.0.1 ですでに修正されました)の一時的な対応です。
WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
...
WARNING: sun.misc.Unsafe::allocateMemory will be removed in a future release
# というようなメッセージが出るので次のようにオプションをつけます。
java --sun-misc-unsafe-memory-access=allow
Java 8
モジュールシステムに対応していないため、モジュールにする必要のないのが Java 8 です。公式サポートの延長がいつまでになるかわかりません。JavaFX を同梱している Amazon Corretto をダウンロードしてみました。Java 8 でいいのなら NetBeans も使いやすいのですが…。
/usr/local/java/jdk8/ に入れておきました。
Apache NetBeans
Apache NetBeans は NekoBean(ねこび〜ん) を擁する統合開発環境で、特に Java 開発環境として有名です。ほとんどが Java で書かれており、zip版をダウンロードすれば Windows と Linux の両方でバイナリを共有できます。ただし、日本語入力でインライン変換ができません。
NetBeans 自体を動かすのに JDK が必要ですが、NetBeans19 からは JDK11 以上となりました(もっと新しいバージョンでは JDK17 以上が要求されます)。これを指定するには環境変数 $JAVA_HOME か、etc/netbeans.conf の netbeans_jdkhome= に指定するか(コメントを参照してください)、起動時にオプション --jdkhome を使うなどの方法があります(この順で優先順位が高くなるようです)。起動後にメニューの Help → about で確認できます。
Ant のモジュールプロジェクトをつくるには、メニューの File → New Project... から Java widh Ant → Java Modular Project → Next> と進んで Project Name などを入力して Finish します。src に モジュール名/classes フォルダを作り、その中にソースを入れます。
src/モジュール名/classes/module-info.java
src/モジュール名/classes/パッケージ名/xxxx.java
Main Class は、メニューの File → Project Properties で RUN のカテゴリーで指定します(モジュール名は必要なく、パッケージ名.クラス名 です)。
JavaFX を使うには、メニューの Tools → Libraries で Ant Library Manager を開いて、Library Name を JavaFX などとして、Add JAR/Folder... を押して、javafx-sdk/lib を開いて中のすべての jar ファイルを選択、Add JAR/Folder ボタンを押します。OK ボタンを押します。
Project Properties で Categories から Libraries をクリックして、Modulepath の + ボタンをクリックして Add Library... を選択、JavaFX を選択して、OK ボタンで閉じます。
十進BASIC
十進BASIC は国際規格のJIS Full BASICに準拠し、二進化十進数による多倍長計算ができるBASIC言語です。Linux版 を試してみたのですが、残念ながらgtk2版とQt5版の両方の日本語入力に問題があります。他のエディッタに入力した文字をコピーすることはできます(メニューの表示(W) → 漢字入力枠(K) から入力できます)。メニューのアイコンが小さすぎます。Qt5版には次のパッケージが必要でした。(Wayland にしたら gtk2版 は起動しなくなりました。)
sudo pacman -S qt5pas
アイコンは BASIC812Ja/source/basic.ico にあります。ICOをPNGにオンラインかつ無料で変換する で変換し(basic.zip)ダウンロードしました。中から 2.png を取り出して basic.png などに名前を変えて ~/.local/share/icons に入れます。(このアイコンはダークモードにしてるせいか輝いて見えます。特にBの文字が。メニューの中で一番綺麗なアイコンです)
#サンプルプログラムから mime type を調べます
xdg-mime query filetype ./COMPLEX/ABS.BAS
text/x-basic
~/.local/share/applications/basic.desktop をつくります。Exec の PATH は置き換えてください。
[Desktop Entry]
Type=Application
Name=BASIC
GenericName=十進BASIC
Exec=/PATH/BASIC812Ja/basic -NR %F
Terminal=false
Icon=basic.png
Categories=Development;
MimeType=text/x-basic;
Qt6版がありました。qt6pas が必要らしいです。
KaTeX
KaTeX はウェブブラウザで数学記法を表示するクロスブラウザJavaScriptライブラリ、だそうです。
数式の書き方は Supported Functions と Support Table にまとめられています。
HTML の <head>
内に書いておけば、インターネットに接続していれば数式を表示できます(2024年12月)。
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.18/dist/katex.min.css" integrity="sha384-veTAhWILPOotXm+kbR5uY7dRamYLJf58I7P+hJhjeuc7hsMAkJHTsPahAl0hBST0" crossorigin="anonymous">
<!-- The loading of KaTeX is deferred to speed up page rendering -->
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.18/dist/katex.min.js" integrity="sha384-v6mkHYHfY/4BWq54f7lQAdtIsoZZIByznQ3ZqN38OL4KCsrxo31SLlPiak7cj/Mg" crossorigin="anonymous"></script>
<!-- To automatically render math in text elements, include the auto-render extension: -->
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.18/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous"
onload="renderMathInElement(document.body);"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
renderMathInElement(document.body, {
// customised options
// • auto-render specific keys, e.g.:
delimiters: [
{left: '$$', right: '$$', display: true},
{left: '$', right: '$', display: false},
{left: '\\(', right: '\\)', display: false},
{left: '\\[', right: '\\]', display: true}
],
// • rendering keys, e.g.:
throwOnError : false
});
});
</script>
オフラインで表示できるようにするにはまず npm を(なければ)インストールします(Node.js(ArchWiki))。それから npm で katex をインストールします。
sudo pacman -S npm
sudo npm install -g katex
# 次のコマンドで npm を update しろといわれました
sudo npm install -g npm@11.0.0
# すべてのローカルにインストールしたパッケージをアップデートするには
npm update
# すべてのグローバルにインストールしたパッケージをアップデートするには
sudo npm update -g
/usr/lib/node_modules/katex
にインストールされます。HTML の <head>
内の該当部分を次のように書き換えるとオフラインで数式を表示できます。
<link rel="stylesheet" href="/usr/lib/node_modules/katex/dist/katex.min.css">
<!-- The loading of KaTeX is deferred to speed up page rendering -->
<script defer src="/usr/lib/node_modules/katex/dist/katex.min.js"></script>
<!-- To automatically render math in text elements, include the auto-render extension: -->
<script defer src="/usr/lib/node_modules/katex/dist/contrib/auto-render.min.js"
onload="renderMathInElement(document.body);"></script>
Lua
Text Editor
Visual Studio Code
Snap版は AppArmor を有効にするのが面倒です。Flatpak版はメニューが白くなってたり(2024年8月の状態で)、日本語がインラインで入力出来なかったりします(バージョンが上がればよくなりそうですが)。
Flatpak版でインラインで日本語入力できるようにするには /var/lib/flatpak/app/com.visualstudio.code/current/active/export/share/applications/com.visualstudio.code.desktop を編集します。このファイルにたどり着くにはアプリケーションメニューから Visual Studio Code を右クリック → アプリケーションを編集… を選択 → リンク先: 右端の > を左クリックします。それからエディッタのKateで開いて、Exec=で始まる行を探します。
Exec=/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=code --file-forwarding com.visualstudio.code --reuse-window @@ %F @@
次のように Exec=の直後にenv GTK_IM_MODULE=fcitx を挿入します。Exec=は2つあるので両方を同様に編集します。
Exec=env GTK_IM_MODULE=fcitx /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=code --file-forwarding com.visualstudio.code --reuse-window @@ %F @@
保存します。(パスワードを尋ねられます)別の方法としては、com.visualstudio.code.desktop を ~/.local/share/applications/ にコピーしてから、アプリケーションメニューの Visual Studio Code を右クリック → アプリケーションを編集… を選択 → アプリケーション(A) タブを選択 → 環境変数: に GTK_IM_MODULE=fcitx と書き込む → OKボタンをクリック。
extra にあって pacman でインストールできるのは code-oss です。
sudo pacman -S code
パッケージ (3) electron28-28.3.3-1 ripgrep-14.1.0-1 code-1.89.1-1
合計ダウンロード容量: 82.65 MiB
合計インストール容量: 320.46 MiB
Visual Studio Code よりダウンロードして手作業でインストールするのが一番よさそうです(2024年6月上旬の状態では)。アイコンは VSCode-linux-x64/resources/app/resources/linux/code.png にあります(または Icons and names usage guidelines からダウンロードできます)。desktop ファイルは、vscode/resources/linux/code.desktop にあるものをコピーして修正すればなんとかなりそうです。
と思ったのですが「なるべくオープンソースを使うべき」という方針で pacman でインストールした code-oss を使うことにしました。
拡張機能については Visual Studio Code(ArchWiki) によると code-oss は Visual Studio Marketplace を直接使えず、 Open VSX registry を使わなくてはならないのですが、利用規約に違反しない方法が用意されています。
yay -S code-marketplace
としてから code-oss を起動して普通に Zenkaku と Trailing Spaces をインストールできました。
初期状態では、ASCII文字と紛らわしい文字(Ambiguous Characters)と全角空白(Invisible Characters)は四角い枠で強調表示されますが、この設定は変更できます。VSCodeで、全角スペースをハイライト表示する方法 と VSCodeで全角の空白・ASCIIと混同される文字のハイライトを、非表示にする方法 によると 設定(Ctrl + ,)で次のことをします。
# 全角空白だけ強調表示するには次の2つ
Editor > Unicode Highlight: Ambiguous Characters のチェックを外す。全角空白のみハイライト表示
Editor > Unicode Highlight: Include Comments の値を true に。コメント内でも全角空白を表示
# 全角空白も含め強調表示しない。次の2つ
Editor > Unicode Highlight: Ambiguous Characters のチェックを外す。全角の!や [ ]などのハイライトを、非表示にする
Editor > Unicode Highlight: Invisible Characters のチェックを外す。全角空白のハイライトを非表示にする
拡張機能の Zenkaku で全角空白を可視化(または非可視化)するには F1 または Ctrl+Shift+p で。
> Enable Zenkaku
> Disable Zenkaku
VSCodeの偽拡張機能を作ったらダウンロードされまくり&悪意あるコードを簡単に仕込めるVSCode拡張機能システムの欠陥も明らかになったという報告 - GIGAZINE というのもありますから sandbox を使ったほうがよさそうです。
bubblejail create --profile code_oss code-oss
Updating desktop MIME database
Import tips: Move .vscode-oss folder from your home directory in to instance
home directory.
~/.local/share/applications/code-oss.desktop をエディッターで開いて
MimeType=application/x-code-oss-workspace;
を次のように書き換えます。
MimeType=text/plain;inode/directory;application/x-code-workspace;
bubblejail-config で code-oss を選択します。チェックマークを付けたのは次の箇所です。Direct Rendering をチェックしないとウインドウをリサイズしたとき再描画がうまくいきません。
Common Settings
Default arguments /usr/bin/code-oss --wait
X11 windowing system
Network access
Home Share
.vscode-oss
.config/Code - OSS
.pki
.cache
Direct Rendering
Root share
Read/Write paths
/run/media
Fcitx/Fcitx5 input method
Disable host loopback access
固定スクロール(Sticky Scroll)を解除する方法、VSCodeで関数に沿って固定スクロールを解除する方法 によると設定(Ctrl + ,)で(似た項目が複数あるので注意)
Editor > Sticky Scroll: Enabled のチェックを外す。
Java の機能拡張をインストールしてみました。Language Support for Java(TM) by Red Hat です。java.jdt.ls.java.home を設定したほうがいいらしいです。Ctrl+, で設定を開いて java.jdt.ls.java.home を検索、Edit in settengs.json をクリックして,
"java.jdt.ls.java.home": "/usr/local/java/jdk",
のように jdk へのパスを書き込みます。【VSCode】settings.jsonについて理解する を参考にするとユーザ設定は ~/config/Code - OSS/User/settings.json にあります。機能拡張は ~/.vscode-oss の中にあります。ただし、他のエディターで直接 settings.json を編集してから code-oss を起動しても変更が反映されないことがあるようです。
どうやら機能拡張の Extension Pack for Java をインストールすればいっしょに Language Support for Java(TM) by Red Hat もインストールされるということでした。JavaFX を使ったプログラムではうまくいきません。そんなパケージにはアクセスできないと波線を付けられてしまいます。それで機能拡張の Project Manager for JavaFX をインストールしてみました。波線は少なくなりましたが、module-info.java 内の JavaFX パケージ名の下に波線がついたままです。JavaFX 同梱の Liberica JDK(Full JDK) を試してみました。すると、JavaFX パケージ名下の波線は消えました。
Oracle による NetBeans 由来の拡張機能 Java Platform Extension for Visual Studio Code も試してみました。JavaFX パケージ名下の波線を消すには、Liberica JDK(Full JDK) を使うのがよさそうです。
拡張機能をインストールして code-oss を Java IDE として使うのはあまりよくないようです。JavaFX や外部のモジュールを使うと設定が面倒です。それにソースコードのチェックに時間がかかってます。ソース・ファイル・モードで Java を使うのにはいいかもしれません。
ターミナルの設定がよくわからないのですが VSCodeのターミナル/プロファイルの設定の詳細 と How do I modify PATH in the VSCode integrated terminal without overwriting VSCode's own additions to the PATH? を参考にすると、~/config/Code - OSS/User/settings.json の一番外側の { } の内側に以下のように書き足します。jdk のパスやフォントサイズなどは適当に書き換えてください。
"terminal.integrated.profiles.linux": {
"bash": {
"path": "/usr/bin/bash",
"args": [
],
"overrideName": true,
"env": {
"JAVA_HOME": "/usr/local/java/jdk",
"PATH": "${workspaceFolder}:/usr/local/java/jdk/bin:${env:PATH}"
},
"icon": "terminal",
"color": "terminal.ansiRed"
}
},
"redhat.telemetry.enabled": true,
"terminal.integrated.fontSize": 16,
wayland セッションで、xwayland ではなく wayland で起動するには、~/config/code-flags.conf
をつくって次のように書き込んでおきます。
--enable-features=UseOzonePlatform,WaylandWindowDecorations
--ozone-platform-hint=auto
--enable-wayland-ime
--enable-features の行はななくてもいいのかもしれません。下線がなかったりしますが、日本語入力できます。bubblujail を使う場合は、設定で Wayland のチェックを入れて、Home Share の .config/Code - OSS を .config に変更します。
テキストをペーストする Ctrl + v が効かなくなってました(2025年2月上旬)。Cannot paste into Code - OSS 修正されるまで Ctrl + shift + v を使えばいいようです。この問題は 2025-03-18 のアップデートで修正されました。
Light Table
即時実行、即時フィードバックができるというエディッタです。開発はすでに止まっています。Light Table からダウンロードしたのですが libgconf-2.so.4 がないといって動きません。調べてみると
pacman -F libgconf-2.so.4
community/ledger-live-bin 2.60.0-1
opt/ledger-live-desktop/usr/lib/libgconf-2.so.4
が見つかったのでダウンロードしてきましたが zsh: segmentation fault (core dumped)
と表示され動きません。諦めたほうがよさそうです。
テキストエディター
Text Editor (gnome-text-editor) は GNOME 標準のテキストエディターです。軽量でシンプルなエディターです。インストール直後の状態ではフォントが Monospace 11 になってるので fontconfig の設定によってはテキストがうまく表示されないかもしれません。
sudo pacman -S gnome-text-editor
Wayland セッションではマウスカーソルが巨大化します(ディスプレイの設定でスケールを125%にしてたりすると起きる現象のようです)。TPatch for GTK 4.16 for incorrect cursor size on KDE によると、これは GTK 4.16 の問題で 4.18 では修正されています。
Xwayland で動かしたい場合は ~/.bash_profile
に export GDK_BACKEND=x11
と書いておきます。
vi
Manjaro では標準的にインストールされているようです。後にSun Microsystems 上級副社長となる Bill Joy がプログラムしたものに近いと思われます。とてもシンプルでストイックです。インサートモードでカーソル移動の矢印キーが使えません。ノーマルモードで日本語文で w コマンドで移動のしかたが vim とは違ってます。vi の基本コマンドの一覧、 viの基本操作 が参考になります。ビジュアルモードが使えないので、3文字をコピーしたい場合は y3l とすればいいということです。
vim, gvim
vim と gvim の設定ファイルは ~/.config/vim/ に vimrc と gvimrc として入れておけばいいそうです。[vim] viminfo の場所は vimrc の中で指定できる (set viminfo+=n~/.vim/viminfo) を参考にして vimrc に set viminfo+=n~/.config/vim/viminfo と書いておきます。
gvim はシステムのクリップボードと連携可能です。vimrc に set clipboard=unnamedplus,unnamed と書いておけばいいらしいです(これがベストなのか自信ありませんが)。
vim内のヤンクをクリップボードと連携させるには を参考にすると、このAppImage版vim はシステムのクリップボードと連携はできません。(再ビルドの必要があります)
vim, neovim でインサートモードからノーマルモードに戻ったときにすぐにコマンドを打てるように IME を自動的にオフにします。Fcitx5(ArchWiki) vim で自動的に入力メソッドを切り替える
vim は ~/.vimrc に、neovim は ~/.config/nvim/init.vim に次のコードを書き加えます。ArchWiki にあるものですが、コメントに改行を入れています。(そうしないと機能しませんでした)
let fcitx5state=system("fcitx5-remote")
autocmd InsertLeave * :silent let fcitx5state=system("fcitx5-remote")[0] | silent !fcitx5-remote -c
" Disable the input method when exiting insert mode and save the state
autocmd InsertEnter * :silent if fcitx5state == 2 | call system("fcitx5-remote -o") | endif
" 2 means that the input method was opened in the previous state, and the input method is started
" when entering the insert mode
vim9script が使えるなら下のコードのほうがいいらしいです。
# Only taking affect after using vim9script grammar or has `vim9script` keyword.
var fcitx5state = system("fcitx5-remote")
autocmd InsertLeave * :silent fcitx5state = system("fcitx5-remote")[0] | silent !fcitx5-remote -c
autocmd InsertEnter * :silent if fcitx5state == '2' | call system("fcitx5-remote -o") | endif
インサートモードを抜けると mozc がオフになります。
vi(vim)で完全にカーソルキーを無効化させたい によると、vimrc や init.vim に書いておけば矢印キーを無効にできます。
noremap <up> <nop>
noremap <left> <nop>
noremap <right> <nop>
noremap <down> <nop>
noremap! <up> <nop>
noremap! <left> <nop>
noremap! <right> <nop>
noremap! <down> <nop>
ミニマリスト向けのプラグインマネージャー junegunn / vim-plug を入ました。ターミナルで次のコマンドです。昔は ~/.vim に入れていたようです。
curl -fLo ~/.config/vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
overcache / NeoSolarized と mattn / emmet-vim をインストールしました。~/.config/vim/vimrc に次のコードを書き込んでおきます。set termguicolors
を忘れずに。
call plug#begin('~/.config/vim/plugged')
Plug 'overcache/NeoSolarized'
Plug 'mattn/emmet-vim'
call plug#end()
syntax enable
set termguicolors
#set background=light
set background=dark
colorscheme NeoSolarized
g:user_emmet_leader_key = '<C-E>'
vim を起動してコマンド :PlugInstall
または :PlugUpdate
を実行します。emmet は コマンドの直後に Ctrl + e のあと , をタイプしてください。
~/.config/vim/gvimrc に次のように書いておくと、GVim で Solarized dark が使えました。
~/.config/vim/gvimrc
vim9script
set guifont=Migu\ 1M\ 14
set columns=120 # 幅
set lines=30 # 高さ
syntax enable
set background=dark
#set background=light
colorscheme NeoSolarized
neovim, neovim-qt
nvim でのシステムのクリップボードとの連携については、X11 では xclip(xcel でもいいのかも) を、Wayland では wl-clipboard を pacman でインストールします。両方インストールしても衝突はしないようです。~/.config/nvim/init.vim に set clipboard=unnamedplus,unnamed と書いておきます。
init.lua に Lua言語で書いたほうがいいらしいのです。Getting started using Lua in Neovim が参考になります。プラグインマネージャーは folke / lazy.nvim を使えばいいのですが… Getting Started の構成的セットアップをやってみました。まず ~/.config/nvim/init.lua と ~/.config/nvim/lua/config/lazy.lua をつくります。
~/.config/nvim/init.lua
require("config.lazy")
~/.config/nvim/lua/config/lazy.lua
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- This is also a good place to setup other settings (vim.opt)
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"
-- Setup lazy.nvim
require("lazy").setup({
spec = {
-- import your plugins
{ import = "plugins" },
},
-- Configure any other settings here. See the documentation for more details.
-- colorscheme that will be used when installing plugins.
install = { colorscheme = { "habamax" } },
-- automatically check for plugin updates
checker = { enabled = true },
})
プラグインの情報をいれるフォルダをつくります。
mkdir -p ~/.config/nvim/lua/plugins/
この状態で nvim を起動すると No specs found for module "plugins"
といわれます。Tsuzat / NeoSolarized.nvim をインストールしてみました。~/.local/share/nvim/lazy をつくります。
~/.local/share/nvim/lazy
return {
{
"Tsuzat/NeoSolarized.nvim",
lazy = false, -- make sure we load this during startup if it is your main colorscheme
priority = 1000, -- make sure to load this before all the other start plugins
config = function()
vim.cmd [[ colorscheme NeoSolarized ]]
end
}
}
nvim を起動するとダウンロードして NeoSolarized が使えるようになります。ですが lightモードにするには ~/.local/share/nvim/lazy/NeoSolarized.nvim/lua/NeoSolarized/config.lua を書き換えろということなのかよくわかりません。
~/.config/nvim/init.vim があると E5422: 設定が競合しています:
とメッセージがでます。
vim.cmd [[ ]] の中に書き込んでしまえばとりあえず動きます。(vim9script はだめらしいです)
~/.config/nvim/init.lua
require("config.lazy")
vim.cmd [[
let fcitx5state=system("fcitx5-remote")
autocmd InsertLeave * :silent let fcitx5state=system("fcitx5-remote")[0] | silent !fcitx5-remote -c
" Disable the input method when exiting insert mode and save the state
autocmd InsertEnter * :silent if fcitx5state == 2 | call system("fcitx5-remote -o") | endif
" 2 means that the input method was opened in the previous state, and the input method is started
" when entering the insert mode
set clipboard=unnamedplus,unnamed
]]
ginit.vim は フォントの設定で GuiFont! Migu 1M:h12
のように ! が必要です(日本語の等幅フォントは半角と全角があるため)。ですが、init.lua を使うと ginit.vim は読み込まれないようです。Saying Goodbye to Vimscript が参考になりそうですが… よくわかりません。
CudaText
CudaText はクロスプラットフォームで Object Pascal で書かれたオープンソースのエディターです。gtk2版とqt6版がありますが、X11でgtk2版が日本語入力できます。qt6版はパッケージ qt6pas をインストールしないと起動しません。CudaText は Raku のシンタックスカラーリングがいいです。
Zed
Zed ですが、extra/zed 0.152.4-1 にありました。ダウンロードはわずか 32.82 MiB です。ターミナルからは zeditor
で起動します。
sudo pacman -S zed
zed の提案パッケージ
clang: improved C/C++ language support
eslint: improved Javascript language support
pyright: improved Python language support
rust-analyzer: improved Rust language support
Zed を起動して右上部にある ∨ をクリックして選択するかまたは Ctrl + , で設定が開きます。"buffer_font_family": "UDEV Gothic",
とか書き込んで Ctrl + s でセーブします。設定すると日本語も表示されますが、日本語入力のほうがうまくいきません(extra/zed 0.163.2-1 で日本語入力できるようになりました、しかし文節の区切りの変更がうまくいきません。設定があるのでしょうか)。ワードラップは設定に "soft_wrap": "editor_width"
と書き込めばいいようです。ui font も設定しなくては日本語ファイル名を表示できないようです。"ui_font_family": "IPAexGothic",
などとします。
新規ファイルを開くには右上の + をクリックします。
Emacs
GNU Emacs はもちろん Richard Stallman がつくった有名なテキストエディタです。Emacs(ArchWiki) にも情報があります。blahgeek / emacs-appimage にAppImage版がありまが、x11: X11用、pgtk: waylandのpgtk用、nox: GUIなし の3種類があります。コマンド一覧表 が参考になります。残念ながら30.0.92 のGUI版は一部のメニューで落ちます。
(emacs:4736): Gtk-WARNING **: 10:22:36.565: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.
**
[Solved] Could not load pixbuf from icon theme. gdk error crash が参考になりそうだと思ったのですが。
sudo chmod -R 755 /usr/share/mime
sudo update-mime-database /usr/share/mime
sudo chmod 644 /usr/share/applications/mimeinfo.cache
sudo gdk-pixbuf-query-loaders --update-cache
やってみましたが変化なし。pacman -Qi gdk-pixbuf2 で提案パッケージの libwmf libopenraw がインストールされてないことに気が付きました。
sudo pacman -S --asdeps libwmf libopenraw
これでもだめでした。AppImage版をあきらめてpacmanでインストールすることにしました。
sudo pacman -S emacs-wayland
ターミナルで使いたい場合は -nw(--no-window-system)オプションをつけて起動できます。
その他
Terminal Emulator
gnome-terminal
曖昧文字幅文字を全角で表示するのは GNOME の端末なら設定できます。fedora パッチ版の gnome-terminal-fedora もあります。こちらはウインドウを半透明にできます。半透明にすると圧迫感のようなものが軽減できるので fedora パッチ版の方がいいかもしれません。
sudo pacman -S gnome-terminal
コンソール
GNOME 標準の Console です。かなりシンプルです。
sudo pacman -S gnome-console
cool-retro-term
cool-retro-term は陰極線管(CRT)をシュミレートしたターミナルです。AppImage版( Cool-retro-term AppImage)を日々の pacman -Syu に使ってます。残念ながら日本語の入力ができませんでした。
Alacritty
Alacritty(ArchWiki) によると、 Alacritty は Rust によって書かれている、シンプルで GPU アクセラレーションを使用するターミナルエミュレータだそうです。
sudo pacman -S alacritty
設定は YAML ではなく TOML に変更されてます。設定については ターミナルをiTerm2からAlacrittyに変更した - 肉球でキーボード と Configuration それに man alacritty
を参照してください。とりあえず ~/.config/alacritty/alacritty.toml をつくりました。
[shell]
program = "/bin/zsh"
[font]
normal = { family = "UDEV Gothic", style = "Regular" }
size = 12
Yaml configからTomlに切り替えろと言われたので`alacritty migrate`した
Foot
Foot(ArchWiki) によると、Foot は、高速、軽量、ミニマルな Wayland ターミナル エミュレータだそうです。日本語入力も改善されており、これまで試した中では最良のターミナル、と思ったのですがカーソルを右に移動させると縦の線が文字の間に残るときがあり、残念です(マウスでウインドウをゆすってみてください)。
sudo pacman -S foot
設定はまず /etc/xdg/foot/foot.ini を ~/.config/foot/foot.ini にコピーしてから編集します。コメントをはずして書き換えます(例えば次のように)。詳しくは foot.ini(5) を参照してください。
shell=/usr/bin/zsh
font=UDEV Gothic:size=12
underline-offset=4px
initial-window-size-chars=120x30
underline-offset は日本語入力のときの下線が近すぎるので離しました。
カラーテーマは /usr/share/foot/themes にあるものから選択できます。[main]セクションに書けばよいのですが、[main] は省略できるようです。[environment] が現れる前の行に書いてください。
include=/usr/share/foot/themes/zenburn
背景を透明にするには [colors] の alpha を設定してください。これはカラーテーマを設定していても有効のようです。
[colors]
alpha=0.7
Foot Client と Foot Server が使わないのにアプリケーションメニューに現れてじゃまに感じる場合は、/usr/share/applications/foot-server.desktop と /usr/share/applications/footclient.desktop (以前は /usr/share/applications/org.codeberg.dnkl.foot-server.desktop と /usr/share/applications/org.codeberg.dnkl.footclient.desktop でした。)に NoDisplay=true 行を追加してください。
WezTerm
sudo pacman -S wezterm
Web Browser
Firefox
Firefox については ArchWiki に多くの情報があります。Firefox/プライバシー によると、トラッキング防止機能を有効化するとロード時間が 44% 短くなるそうです。2015年発表の論文なので少し古い情報と思ったのですが試してみました。Firefox を起動してアドレスバーに about:config
と入力して、危険性を承知の上で先に進みます。privacy.trackingprotection.enabled
を検索して切り替えボタンをクリックして値を true
にします。使ってみると、本当に読み込みが早くなってるようです。広告ブロック拡張機能を使ってなかったからかもしれませんが。
about:support
で グラフィック の ウィンドウプロトコル が wayland か xwayland か x11 かを見ることができます。wayland で起動しようとするのがデフォルトになってます。xwayland で起動したい場合は環境変数で export MOZ_ENABLE_WAYLAND=0
としてください。
むかしから bubblejail を使っている場合は、bubblejail-config で Application's D-Bus name に org.mozilla.* を設定してください。他のデスクトップで Firefox を起動していても、起動できるようになります。bubblejail のアップデートでこの設定が標準になってました。
Web
Web は GNOME のコアアプリです。フォントの設定に時間がかかる上に、フォントが大きくならず小さすぎます。GNOME 上では正常に動作するのかもしれません。バージョンアップに期待するしかありません。パッケージ xdg-desktop-portal-gtk (syncs font settings to Flatpak apps when run in Plasma) をインストールすることで正常に表示されるようになりました。
flatpak install flathub org.gnome.Epiphany
近頃まともに動作しない状況でしたが、KDEシステム設定→アプリケーションの権限→Flatpakの権限で Web を選択、標準設定(D) をクリック。ファイルシステムへのアクセスのところを全部チェックして、All user files を 読み取り/書き込み にします。適用(A) をクリックで動作するようになりました。
Falkon
Falkon は KDE のウエブブラウザーです。普通に使えます。が、アドレスバーの横にある検索ウインドウに検索文字を入力するとき、一度確定させてしまうと次の日本語が変換できません。
flatpak install flathub org.kde.falkon
Min browser
Min はプライバシーを守ってくれるミニマルなブラウザーです。AURにもあります(aur/min-browser-bin)。 が Debian のパッケージファイルをダウンロードして解体したバイナリを使うことにしました。操作が独特ですが慣れればいいのかもしれません。
min-x.xx.x-amd64.deb をアーカイブツールのArkで開き data.tar.xz を取り出してArkで開くと opt の中に Min フォルダがるのでそれを取り出します。usr/share/applications/min.desktop も取り出して、Exec= のパスを書き換えて、~/.local/share/applications/min.desktop とします。アイコンは Min/resources/app/icons/icon256.png にありますので、~/.local/share/icons/min.png としてコピーしておきます。
Min は Electron(Chromium)ベースということです。bubblejail のインスタンス min を作成します。
bubblejail create --no-desktop-entry --profile chromium min
bubblejail-config で min を開いて Default arguments に /PATH/Min/min を書き込みます(それと Fcitx/Fcitx5 input method をチェックします)。~/.local/share/applications/min.desktop の Exec のところを Exec=bubblejail run min %U のように書き換えます。
その後、yay で aur/min-browser-bin をインストールしてみましたが、結局 deb パッケージをダウンロードしておりほぼ同じことでした。
Chromium
Chromium はフリーかつオープンソースのウェブブラウザ向けのコードベースです。主にGoogleによって開発とメンテナンスが行われているそうです。Downloads for ungoogled-chromium から AppImage版をダウンロードしました。~/AppImage に入れて実行可能にしておきます。
AppImage なので firejail を使います。/etc/firejail/chromium-browser.profile を使えばよさそうです。
~/AppImage-bin/chromium を作って次のように書いておきます。
#! /usr/bin/bash
exec firejail --appimage --profile=chromium-browser ~/AppImage/ungoogled-chromium*.AppImage $@
xwayland ではなく wayland で動作させるには --ozone-platform-hint=auto --enable-wayland-ime
をつけたせばいいようです。
~/.config/firejail/chromium-browser.local を作ってパーミッションの調整をします。例えば次のように。
noblacklist /run/media
whitelist /run/media
AppImage を展開して、chromium.png をコピーして ~/.local/share/icons/chromium.png とします。ungoogled-chromium.desktop をコピーして ~/.local/share/applications/ungoogled-chromium.desktop とします。ungoogled-chromium.desktop の Exex= の AppRun を書き換えます。
NCSA Mosaic
テキストと画像を同一のウインドウ内に表示することで革命をもたらしたブラウザーです。 NCSA-Mosaic-AppImage からダウンロードしました。動作はしますが https には対応できません。http://google.com にアクセスすることはできます。http://hadwiger.static.jp/mosaic/index.html をテスト用ページとして作ってみました。
Vivaldi
Vivaldi は、Chromium ベースのプロプライエタリのウェブブラウザです。Vivaldi-appimage から、snapshot 版 AppImge をダウンロードして ~/AppImage に入れて実行可能にしておきます。~/AppImage-bin/vivaldi-snapshot をつくって次の2行を書いて、実行権限を与えておきます。
#! /usr/bin/bash
exec firejail --appimage --profile=vivaldi-snapshot ~/AppImage/Vivaldi*.AppImage $@
~/AppImage-bin にパスを通しておけばターミナルで vivaldi-snapshot で起動できます。
FixBrowser
ゼロから作られた超軽量ブラウザ「FixBrowser」のアルファ版公開、JavaScript非対応でリソース消費量を大幅削減 - GIGAZINE
FixBrowser
Video Player
VLC media player
WebM(VP9) がうまく再生できないことに悩んできましたが、設定方法がわかりました。まず VLC メディアプレイヤー を起動します。ツール(S) メニューから 設定(P) を選択します。シンプルな設定ウインドウが開きますが、左下すみの 設定の表示 で すべて をチェックします。それから下にスクロールさせて 入力 / コーデック の ビデオコーデック をダブルクリックして、FFmpeg をクリックします。それから デコード中 の 「ダイレクトレンダリング」 のチェックをはずします。「処理を急ぐ」 のチェックもはずします。「ハードウェアデコーディング」 は 自動 でいいらしいのですが、自分の場合は VA-APIビデオデコーダー にしてます。保存(S) をクリックして設定を終えます。自分の場合、これで普通に再生できるようになりました。
まずターミナルからコマンドで再生できるか試したほうがいいかもしれません。
vlc --no-avcodec-dr --no-avcodec-hurry-up xxxx.webm
ターミナルで実行したとき次のようなメッセージを大量に出す場合は、
[0000591662fd7560] main libvlc error: stale plugins cache: modified /usr/lib/vlc/plugins/stream_extractor/libarchive_plugin.so
how to avoid main libvlc error when using the python vlc package を参考に次のコマンドを実行します。
sudo /usr/lib/vlc/vlc-cache-gen /usr/lib/vlc/plugins