取り上げる内容は概ね以下のリストにあたる(GitHubにリポジトリがあるもののみ)。随時更新する。
システム
booster
Go製の高速なinitramfsジェネレータ。YAMLで設定を書く。
modules_force_load: amdgpu
bottom
Rust製のプロセス監視ツール。BashtopやGoTopよりシンプルだが、必要十分。
![「topの逆で、bottom」というネーミング](/_astro/btm-ps.DMvoqaaF_18iqis.avif)
howdy / fprintd
LinuxでもWindows Hello(みたいなことができる)。赤外線カメラか指紋リーダーさえ付いていれば、howdy / fprintdをセットアップすることで、ログイン時やsudo
実行時に生体認証が使える。
注意点
howdy / fprintdによる認証はパスワードを完全に代替するものではない。したがって、ログイン時にこれらを利用すると、パスワードによって暗号化されたキーリングは解錠されない。これを避けたい場合、生体認証はsudo
用のみ設定することをおすすめする。
さらにリモートログインのことも考慮すると、sudo
時に一旦通常通りパスワードを訊ねて、入力が空文字列であった場合のみ生体認証へ移行するのが望ましい。このための設定は以下のようになる:
#%PAM-1.0
auth sufficient pam_unix.so try_first_pass likeauth nullok
auth sufficient pam_python.so /lib/security/howdy/pam.py
auth sufficient pam_fprintd.so
auth include system-auth
account include system-auth
session include system-auth
デスクトップ・ディスプレイ
lightdm-webkit2-theme-reactive
モダンなLightDM用テーマ。1
![Arch Linux-chan](/_astro/lightdm.CIxl0LcW_2hugnE.avif)
ddccontrol
外部モニタの輝度・RGB比を操作できるツール。下みたいな力技ができたりする。
# brightness controls (requires non-root access to i2c devices)
bindsym $mod+F5 exec ddccontrol -f -r 0x10 -W -5 dev:/dev/i2c-1 | grep Brightness | cut -d "/" -f 2 | tee $WOBSOCK
bindsym $mod+F6 exec ddccontrol -f -r 0x10 -W +5 dev:/dev/i2c-1 | grep Brightness | cut -d "/" -f 2 | tee $WOBSOCK
Weylus
ブラウザ経由で手書き描画を受け付ける面白いディスプレイサーバー(?)。筆圧も感知するようなので、タブレットが余っている人はおもちゃにできる。
ファイル
onedriver
Go製のOneDriveクライアント。
google-drive-ocamlfuse
OCaml製のGoogle Driveクライアント。これがなければLinuxラップトップで大学生活を営むのは難しかったかもしれない。
小さなファイルの同期にややボトルネックがあるが、それほど困らない。
![クラウドストレージたち](/_astro/gdrive-ocamlfuse.Bk1AitZY_Z1HbTxB.avif)
メディア
yt-dlp
みんな大好きyoutube-dl
の改良版。ブラウザのCookieを利用した認証等が追加されている。
yt-dlp https://example.com/user/movie/view --cookies-from-browser chrome
playerctl
音声・映像の再生をコマンドラインから制御するツール。ターミナルから操作するだけでも便利だが、キーバインドを設定すると真価を発揮する。たとえばSwayの場合:
bindsym $mod+comma exec playerctl previous
bindsym $mod+period exec playerctl play-pause
bindsym $mod+slash exec playerctl next
bindsym $mod+shift+comma exec playerctl --player playerctld position -10
bindsym $mod+shift+slash exec playerctl --player playerctld position +10
この使用感に慣れてしまうと、もう二度とウィンドウを切り替えてマウスで再生ボタンを押す気にはならない。
PipeWire
PipeWire is a project that aims to greatly improve handling of audio and video under Linux.
PipeWireはpipewire-pulse
、pipewire-alsa
、pipewire-jack
によってPulseAudio、ALSA、Jackをそれぞれ代替するほか、Wayland環境では画面共有・画面録画(WebRTC、OBS)にも使用される2。
WirePlumber
Luaで設定を書けるPipeWireのセッションマネージャ。たとえばデバイスの表示名を変えるには:
rule = {
matches = {
{
{ 'node.name', 'matches', 'alsa_input.pci-0000_00_1f.3.analog-stereo' },
},
},
apply_properties = {
['node.nick'] = 'Headset_input',
},
}
table.insert(alsa_monitor.rules, rule)
EasyEffects
PipeWire 向けのサウンドエフェクトツール。イコライザーとかいろいろ。
![イコライザー](/_astro/easyeffects.CMHx5qpB_ZOfzdh.avif)
systemdを使う場合、以下のように自動で起動できる。
[Unit]
Description=easyeffects daemon
PartOf=graphical-session.target
After=graphical-session.target
[Service]
Environment="G_MESSAGES_DEBUG=easyeffects"
ExecStart=/usr/bin/easyeffects --gapplication-service
Restart=on-failure
[Install]
WantedBy=graphical-session.target
AutoEq
様々なヘッドホン・イヤホンの特性を測定し、機器ごとにもっともニュートラルな出力ができるイコライザー設定を生成するプロジェクト。もっぱらリポジトリ内のresults
以下に蓄積された計測結果を利用するのが便利だ。前述のEasyEffectsに.txt
ファイルを読み込ませることで使える。
noise-suppression-for-voice
マイク用のノイズ抑制プラグイン。タイプ音・呼吸音などを除去してくれる。
context.modules = [
{ name = libpipewire-module-filter-chain
args = {
node.description = "Noise Canceling source"
media.name = "Noise Canceling source"
filter.graph = {
nodes = [
{
type = ladspa
name = rnnoise
plugin = /usr/lib/ladspa/librnnoise_ladspa.so
label = noise_suppressor_stereo
control = {
"VAD Threshold (%)" 50.0
}
}
]
}
audio.position = [ FL FR ]
capture.props = {
node.name = "effect_input.rnnoise"
node.passive = true
}
playback.props = {
node.name = "effect_output.rnnoise"
media.class = Audio/Source
}
}
}
]
wpctl
WirePlumberの操作ツール。現在の音量等の情報を取り出せる。
> wpctl get-volume @DEFAULT_SINK@
Volume: 0.50
入力関連
fcitx5-mozc-ut
mozcの辞書強化版。地名・人名・キャラクター・ネットスラングに比較的強く、Windows版Google日本語入力の水準に近い。
rofimoji
rofi / wofi等のランチャーを利用する絵文字パレット。
apple-emoji-linux
Appleスタイルの絵文字をLinuxで使えるようにするパッケージ。
libinput-gestures
libinput
を拡張し、タッチパッドの三・四本指スワイプに任意のコマンドを割り当てられるようにするツール。ブラウザバックとか、ワークスペースの切り替えとか。主にノートPCで便利。
gesture: swipe right 3 ~/.config/libinput-gestures/gestures backward
gesture: swipe left 3 ~/.config/libinput-gestures/gestures forward
gesture: swipe right 4 swaymsg workspace prev
gesture: swipe left 4 swaymsg workspace next
#!/bin/sh
case "$@" in
forward )
echo "Forward" >> /tmp/gestures.log
swaymsg seat seat0 cursor press BTN_EXTRA
swaymsg seat seat0 cursor release BTN_EXTRA
;;
backward )
echo "Backward" >> /tmp/gestures.log
swaymsg seat seat0 cursor press BTN_SIDE
swaymsg seat seat0 cursor release BTN_SIDE
;;
esac
その他
meteo-qt
システムトレイに常駐し、天気予報を通知するアプリ。
![天気予報](/_astro/meteo-qt.tvA3yV-C_EDsMf.avif)