2026-10-06

OpenBSDのxenodmと~/.xsessionの関係

OpenBSDでxenodmを使ってログインすると、「~/.xsession」が呼ばれます。その関係は、「/etc/X11/xenodm/Xsession」の最後を見れば、よくわかります。具体的には、次のようになっています。

# The startup script is not intended to have arguments.

startup=$HOME/.xsession
resources=$HOME/.Xresources

if [ -s "$startup" ]; then
    if [ -x "$startup" ]; then
        "$startup"
    else
        /bin/sh "$startup"
    fi
else
    if [ -f "$resources" ]; then
        @XRDB_PROGRAM@ -load "$resources"
    fi
    @bindir@/xterm &
    @bindir@/fvwm
fi
do_exit 

 

まず、「~/.xsession」の有無で処理が分かれます。あれば利用するし、なければ「fvwm」が使われます。

 

もし「~/.xsession」が存在するとしても、実行可否で処理が分かれます。実行可能であれば直接実行されるし、実行可能でなければ/bin/shに解釈させます。つまり、実行可能な「~/.xsession」であれば、ファイルにシバンを書いておくことで、/bin/sh以外(例えば/usr/local/bin/tcshなど)を使うことが可能になります。

 

もしOpenBSDでcwmを使いたければ、「~/.xsession」を用意しておく必要があります。実行可否は、どちらでも構いません。ただし/usr/local/bin/tcshを使いたいのであれば、実行可能とし、さらにシバン(#!/usr/local/bin/tcsh)を書いておく必要があります。

2026-10-05

『年貢』(渡辺尚志、中公新書2920)を読んでみた

書店で『年貢』(渡辺尚志、中公新書2920)を見かけたので、購入し読んでみました。「年貢」という言葉そのものは、学校で習いますし、時代劇などでもお馴染みです。しかし実態に詳しいわけではなく、江戸時代は領主に米を納めており、時には一揆を引き起こす場合もあったという程度の認識しかありません。

 

本書は、その「年貢」について、詳しく書かれています。とても勉強になりました。

 

江戸時代の年貢は、領主と領地との関係で成り立っています。本書を読んでいて思ったのですが、現在の政府や自治体と住民との関係のように、全国どこでも統一されたいるわけではないと思います。ある領主と、その領地の村々だけを考えれば、何らかの仕組みが出来ているでしょう。しかしながら、その仕組みが全国統一されたものとは思えません。幕領とか国替のない大名などであれば、江戸期を通じて、同じやり方だったかもしれません。しかし「鉢植え大名」という言葉があるように、国替を繰り返していた大名家もあります。また領主が次々と変化した村々もあるでしょう。年貢についての全国統一方式がないということは、領主側にとっても領地側にとっても、仕組みを再構築する必要があったということです。お互いの認識しているやり方が微妙に違っていると、わざわざ説明するのが面倒だったのではないでしょうか。仕組みが全国で統一されていれば、お国替えがあっても、領主としても、領民としても、年貢の納める方式に違いはないので、楽だったでしょう。しかし江戸時代と言うのは、徳川幕府は「全国統一政府」ではないので、各大名のやり方に口をはさめなかったと思います。

 

「鉢植え大名」で、諸国を転々とするのは、大変だったとは思います。しかし、そのように転々とすることで、年貢の収受にかかわる極端なローカルルールが淘汰される契機にもなったかもしれません。 

2026-10-04

OpenBSD/amd64にfcitx-anthyをインストール

Let's note CF-SV8RDCVSにOpenBSD/amd 7.9を入れました。まだOSを入れただけなので、これから様々な環境設定を行うつもりです。まず最初に日本語環境を整えておこうと思います。そのためにやる事は、次のようなことだと思います。

  1. 環境変数LANをja_JP.UTF-8にする。
  2. 日本語フォント入れる。
  3. 日本語変換できるようにする。 

 

 環境変数LANGについては、既に設定を終えています。次は日本語フォントです。旧い知識だとIPAフォントかと考えていたのですが、最近はnotoフォントが良さそうです。OpenBSDのパッケージにも、notoフォントが揃っています。ただしIPAフォントは、無くはないですが、お勧めではない雰囲気です(個人的な印象ですが)。noto関連フォントが、幾つかあり、必要なものだけに限定してインストールしても良いのですが、ディスク不足に悩んでいるわけでもないので、全て入れてしまいます。

  • noto-cjk-20240730
  • noto-emoji-2.051v0
  • noto-fonts-2026.03.01v0
  • noto-nerd-fonts-3.3.0

 

最後に日本語変換です。OpenBSDのパッケージにはmozcが無かったのでanthyにしました。以下のパッケージを入れましたが、依存関係にあるパッケージが勝手にインストールされるので、この3つだけをインストールしたのではありません。

  • fcitx-anthy
  • fcitx-gtk
  • fcitx-qt

 

日本語変換はインストールしただけでは動きませんから、~/.xsessionにも設定をしておきます。次のようにしました。

#!/usr/local/bin/tcsh

# import env from ~/.login
if (-f ~/.login) source ~/.login

# fcitx-anthy
setenv GTK_IM_MODULE            fcitx
setenv QT_IM_MODULE             fcitx
setenv XMODIFIERS               @im=fcitx
/usr/local/bin/fcitx5 -d &

# go cwm
exec /usr/X11R6/bin/cwm
#[EOF]

 

試しにxtermでCtrl-SPACEを押したら、変換ウィンドウが出てきて、変換もできました。うまくいっているようです。ただし、xtermのフォントと変換ウィンドウのフォントのバランスが悪いので、調整が必要です。 

2026-10-03

スマホ用Firefoxのブックマークに「指定の順序で並べ替え」という設定が存在する

スマホ用Firefoxのブックマークに「指定の順序で並べ替え」という設定がありました。以前は存在しなかったので、いつのまにか新設されたようです。Windows用Firefoxには「並べかえない」という設定が元々存在しました。ところがスマホ用には無かったので、Firefox Syncでブックマークを共用している場合に、Windosとスマホとで出現順序が違うので、戸惑っていました。

 

スマホでは「指定の順序で並べ替え」という設定項目名になり、Windowsでは「並べ替えない」という設定項目名になっています。どうして同じにしないのかと、不思議で仕方ありません。それはともかくとして、Windowsとスマホとでブックマークの出現順序が揃ったので、ありがたいことは確かです。 

「~/.xsession」を「#!/usr/local/bin/tcsh」とする

最近入手したLet's note CF-SV8RDCVSにOpenBSD/amd64 7.9を入れました。日本語環境を設定するため、環境変数「LANG」に「ja_JP.UTF-8」を指定する方法を探していました。ログインクラスを利用しようと思いましたが、思ったように動作しないので断念しました。ホームディレクトリにあるドットファイルで個別に指定するしかないようです。


ログインシェルにはtcshを利用しています。パッケージから導入したので「/usr/local/bin/tcsh」です。環境変数を設定するなら「~/.login」を編集することになるでしょう。一方でxenodmからcwmを利用する場合には「~/.xsession」が使われ、通常は「/bin/sh」で解釈されます。

 

Bシェル系とCシェル系とでは環境変数を設定する書式が違いますので、ワンライナーか何かで変換し、一方から他方を参照しようと考えていました。Geminiに相談したら、「~/.xsessionにシバンで/usr/local/bin/tcshを指定する」という方法を教えてくれました。そうすれば「if ( -f ~/.xsession ) source ~/.xsession」で一発です。こういう発想はなかったので、目から鱗でした。

 

これで「LANG=ja_JP.UTF-8」を指定することができるようになったので、日本語環境の設定を進めていけます。

2026-10-02

環境変数「LANG」設定にOpenBSDでログインクラスを利用するのは断念

Let's note CF-SV8RDCVSにOpenBSD/amd64 7.9をインストールしました。まだOSを入れただけですので、これから設定していくことになります。まずは日本語環境から設定します。そのために環境変数「LANG」を「ja_JP.UTF-8」にします。これを設定するなら、シェルの初期化スクリプトを使うことが多いかもしれません。今のところ、次のような形態を想定しているので、シェルの初期化スクリプトを使うのは二の足を踏みます。

  1. Windows11のRLoginを使ってSSHログインする。
  2. xenodmでログインしてcwmを使う。 

 

SSHログインの場合、シェルには「tcsh」を使っているので、「~/.login」に設定することになります。一方でxenodmの場合、「~/.xsession」に設定することになります。それだけではなく、Bシェル系とCシェル系とに分かれるので、両者の設定を共用できません。こうなるのでログインクラスを使いたかったのですが、OpenBSDでは、バグなのか仕様なのか不明ですが、うまくいかないのです。

 

Geminiにアドバイスを求めた結果、「~/.xsession」の設定をワンライナーで加工して「~/.login」で利用すれば良いのではないかという結論に至りました。もっと複雑な方式を構築することも出来るかもしれませんが、「KISS原則」に従おうと思います。

2026-10-01

「/etc/login.conf.d」はOpenBSD 7.1で導入

OpenBSDではディレクトリ「/etc/login.conf.d」というものがあります。調べてみると、OpenBSD 7.1の「What's New」で次のように書かれています。

 Introduced support for storing capability databases in /etc/login.conf.d, allowing easy addition of custom login classes from packages and made rcctl(8) look for the login class in both login.conf and login.conf.d/${class}. 

 

パッケージで使われることを想定して導入されたようです。何か実例はないかと探してみると「databases/mariadb」に「mysqld.login」を見つけました。

 

またOpenBSDでは、「LOGIN.CONF(5)」で「Sites with very large /etc/login.conf files may wish to create a database version of the file, /etc/login.conf.db, for improved performance. Using a database version for small files does not result in a performance improvement.」と書かれています。OpenBSDでは「cap_mkdb」にかけるか否かはオプションです。ところがFreeBSDでは、「LOGIN.CONF(5)」では「Whenever to this, or the user's ~/.login_conf, file are made, the modifications will not be picked up until cap_mkdb(1) is used to compile the file into a database.」と書かれているように、「cap_mkdb」にかけなければなりません。