コーヒーとトネリコ

いいアイデアだと思って書いてみたら、先週上司に説教された内容そのままだった。めげずに生きていきたい

Obsidianにローカルファイルのリンクをさくっと貼りたい

Obsidianというマークダウンエディタを使わせていただいております。

以前紹介記事も書かせていただきました。

since1972.hatenablog.com

ひとつ、以前から改善したいと思っていたことが改善できたので、この場を借りてご報告いたします。

ローカルファイルをD&Dするとファイルが複製されてしまう

Obsidianの画面にファイルブラウザからファイルをドラッグ・アンド・ドロップすると、リンクが作られるのではなく、設定によって指定されたディレクトリにファイルが複製されるのです。

ウェブクリップしておきたいときはこれでいいが、自分のパソコンの他の場所にすでにあるファイルを複製すると、ディスク容量が無駄になる&万が一のときにどっちが正規のファイルかわかりづらくなる。

ファイルが複製されるとどうなるかというと、画像ファイルとかの場合、同じファイルが2つ存在することになり、ディスクの容量を圧迫するのです。同じことを二回書いてしまいました。ディスクの容量を圧迫するかもしれません。

これを解消できるようなプラグイン(Better File Linkプラグイン)もあったりしますが、

  1. コマンドパレットを呼び出す
  2. ADDと入力してBFLを候補最冗談に呼び出し
  3. エンターキーで選択
  4. ダイアログでクリックまたは選択
  5. ファイルブラウザが開く
  6. 選んでクリック
  7. リンク貼り付けボタンをクリック

という手順が必要で、結構煩雑です。

D&Dは無理でも、右クリックメニューで選択→Obisidianにペースト、くらいの手間にしたい。

こちらが完成品です

いろいろあれこれ考えたりしていたのですが、ファイルブラウザ(NEMO)の設定>コンテキストメニュースクリプトに、以下のスクリプトを置くことで解決しました。

#!/bin/sh
echo -n "![]("$NEMO_SCRIPT_SELECTED_URIS")" | xclip -i -selection clipboard

これだけ。実行可能にするのを忘れずに。あとxclipをインストールしておくことが必要です。 たぶんNautilusでも似たようなことができると思います。

あ、ただこれは画像向けで、ほかのテキストファイルとかのリンクには向いていないかもしれない。 通常ファイルへのリンクなら、[ ] の間にファイル名を入れたほうがいいと思います。

NEMOのスクリプトの解説を見ると、環境変数としてURIじゃなくフルパスもいけるので、そっちからファイル名出したほうがいいのかもしれません。 やってみました。

#!/bin/sh
basename=${NEMO_SCRIPT_SELECTED_FILE_PATHS##*/}
echo -n "!["$basename"]("$NEMO_SCRIPT_SELECTED_URIS")" | xclip -i -selection clipboard

こんな感じです!以上!