昔かいたネタで詳細を忘れているのですが
昔 FreeBSD ワークショップ(https://freebsd-workshop.connpass.com/) の発表向けに限定公開していたものを少し加筆して正式公開します。後でちゃんと詳細を書き足そうと寝かしていたら、詳細を忘れてしまいました......。
2022年に書いたのですが、まだ下記のような手順が必要のようです。
問題
FreeBSDマシンからWindows 共有などの smbプロトコルで公開されているファイルへ、GTK 系のファイルマネージャー(GNOME の Nautilus, Xfce の Thunar)でアクセスすると、ファイル一覧やファイル操作(コピーや削除など)は出来るが、ダブルクリックしてアプリケーションでオープンすることができません。
結論
上記は pkg で通常にgnome や xfce4 をインストールすると発生します。
すでにgnome などのデスクトップ環境がインストールされている状態で以下を行う必要があります。
手順
filesystems/gvfs で fuse を使えるように設定
ports の filesystems/gvfs にて、
# make config
を実行し、「FUSE」オプションを有効にする。
これで smb 共有領域を gvfsd-fuse として自動 mount されるようになります(/var/run/xdg/${HOME}/gvfs 以下に mountされる)。
filesystems/gvfs の ports を修正
更に filesystems/gvfs の files/patch-client_gvfsfusedaemon.cを編集し、
+#ifdef FUSE_CAP_ATOMIC_O_TRUNC
の行を
+#if 0
に変更し、
# make deinstall reinstall
を実行する。
現状 ports を修正する必要があります。
FUSE 上での open()で O_TRUNC で問題が発生したのデバッガで確認して無理やり無効化したのですが、詳細を忘れました......。ここは自己責任で参考にしてください。
ユーザー権限で fuse のマウントを出来るようにする
/etc/sysctl.conf に
vfs.usermount=1
の行を追加する。
ユーザー権限で fuse mountを出来るようにします。
上記までで、テキストファイルを gvim で開くみたいなことは可能になります。
libreoffice の場合は libreoffice-*.desktop ファイルを変更する
libreoffice で開きたい場合は
$ cp /usr/local/share/applications/libreoffice-*.desktop ~/.local/share/applications/
$ sed -i.bak 's/%U/%F/' ~/.local/share/applications/libreoffice-*.desktop
を実行する。
/usr/local/share/applications/libreoffice-*.desktop
で libreoffice のGUI デスクトップでの扱い("アイコンのパスは?" とか "メニューのどのカテゴリに入るか?" とか "関連する mime-type は?" とかが設定されていて、ファイルの開き方も Exec
の行で定義されています。
デフォルトでは例えば libreoffice calc だと
Exec=libreoffice --calc %U
となっていて、URL(%U)で開くようになっています。ですから smb 共有も smb://〜 で開こうとするのですが、smb は上記の設定で gvfs で mount されているので、smb:// は不要です。そんなわけで /usr/local/share/applications/libreoffice-*.desktop
のファイルを個人向けに設定するため ${HOME}/.local/share/application
にコピーして、Exec
行の %U
を %F
(普通のファイルパス) に変更しています。
とりあえずこれで Windows や samba で共有されたファイルをファイルマネージャーでクリックして開くという「当たり前」な環境を手に入れられます。