2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FreeBSDAdvent Calendar 2024

Day 23

GTK系ファイルマネージャーで Windows 共有されたファイルをクリックしたら開くようにしたかっただけなんです

Last updated at Posted at 2024-12-23

昔かいたネタで詳細を忘れているのですが

昔 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 で共有されたファイルをファイルマネージャーでクリックして開くという「当たり前」な環境を手に入れられます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?