0
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?

【Emacs】neotree-mode における quicklook を GNOME sushi と xdotool を援用して実装した

Last updated at Posted at 2024-07-08

かつてこんな記事を書いたことがある。

neotree-modeにおいてquicklook機能をMacOSのQuickLook (qlmanage) をラップする形で実装したものである。

さてUbuntuユーザにも同様の機能が欲しくなる。QuickLook相当のものは GNOME sushi であり、インストールは容易である。

sudo apt install gnome-sushi

これでインストールされる sushi コマンドを使って冒頭の記事のように実装すると、プレビュー自体は起動するのだが、初回のプレビュー以降はEmacsのフレームの後ろに隠れてしまう。やはり常に前面にプレビューが出てほしい。

そこでUbuntuのコマンド xdotool を利用する。

sudo apt install xdotool

設定は下記コードによる。sushi を動かしている実体 org.gnome.NautilusPreviewer を xdotool により探し出し、プレビューのウィンドウを前面に引っ張り出す (windowactivate) 仕組みである。

(require 'neotree)

(defvar neotree-sushi-search-command
  "xdotool search --desktop 0 org.gnome.NautilusPreviewer windowactivate")

(defun neotree-sushi (file-path &optional arg)
  (interactive)
  (neo-global--select-mru-window nil)
  (call-process-shell-command 
   (format "sushi %s; sleep 0.1; %s"
           file-path
           neotree-sushi-search-command)
   nil 0))

(defun neotree-quick-look2 ()
  "Quick Look like NeoTree open event."
  (interactive)
  (neo-buffer--execute nil 'neotree-sushi 'neo-open-dir)
  (neo-global--select-window))

(with-eval-after-load "neotree"
  (define-key neotree-mode-map (kbd "SPC") #'neotree-quick-look2))

これにより、Ubuntuでも快適なプレビューが実現できる。同様のハックはdiredにも応用できるだろう。

0
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
0
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?