¶News
Prot gave a talk “Computing in Freedom with GNU Emacs” at FLOSS @ Oxford on March 12. Great holistic intro to Emacs as a platform for freedom. Video and text available.
https://protesilaos.com/codelog/2026-03-13-computing-in-freedom-with-gnu-emacs/ https://ogeer.org/ox/rec/emacs/
64-bit Hurd on Guix! The GNU Hurd now has x86_64 support and you can install it on bare metal via the Guix 1.5.0 installer. Still early (~0.9% of packages), but a real milestone.
Emacs 31 is getting native frame transposition — built-in commands for rotating and flipping window layouts. No more custom elisp to rearrange your splits.
¶Popups 101
display-popupcommand basics- Sizing:
-w(width),-h(height) as percentage or cell count - Positioning:
-x,-yor-dfor current pane center - Closing:
-Eto close on exit,-EEto close on success only - Binding to keys:
bind+display-popup
# Basic popup running a command tmux display-popup -w 80% -h 80% -E "command here" # Popup anchored to current pane tmux display-popup -d '#{pane_current_path}' -w 80% -h 80% -E "command"
¶File Browser Popup
Browse and preview files with fzf + bat.
Guix packages: fzf, bat
# fzf file browser with bat preview tmux display-popup -d '#{pane_current_path}' -w 80% -h 80% -E \ "fzf --preview 'bat --color=always --style=numbers {}'"
¶Quick File Editor
Open a file in your editor via fzf, popup closes when you’re done.
# Find and edit a file tmux display-popup -d '#{pane_current_path}' -w 80% -h 80% -E \ "fzf --preview 'bat --color=always {}' --bind 'enter:become($EDITOR {})'"
¶Git Diff Viewer
View diffs with syntax highlighting using git-delta.
Guix packages: git-delta, diff-so-fancy
# Git diff in a popup with delta tmux display-popup -d '#{pane_current_path}' -w 80% -h 80% -E \ "git diff | delta | less -R" # Git log with diff preview tmux display-popup -d '#{pane_current_path}' -w 80% -h 80% -E \ "git log --oneline | fzf --preview 'git show {1} | delta'"
¶Git Status Popup
Quick at-a-glance view of working tree state.
# Simple git status tmux display-popup -d '#{pane_current_path}' -w 60% -h 60% -E \ "git status && read -n1" # Or use fzf to browse changed files with diff preview tmux display-popup -d '#{pane_current_path}' -w 80% -h 80% -E \ "git status -s | fzf --preview 'git diff {2} | delta'"
¶Grep / Search Popup
Search code with ripgrep, preview matches in context with bat.
Guix packages: ripgrep
# Ripgrep + fzf with preview tmux display-popup -d '#{pane_current_path}' -w 80% -h 80% -E \ "rg --line-number . | fzf --delimiter : \ --preview 'bat --color=always --highlight-line {2} {1}' \ --bind 'enter:become($EDITOR {1} +{2})'"
¶Keybindings
Wire everything to prefix-key combos in ~/.tmux.conf:
# Prefix-f: file browser bind f display-popup -d '#{pane_current_path}' -w 80% -h 80% -E \ "fzf --preview 'bat --color=always --style=numbers {}'" # Prefix-e: find and edit bind e display-popup -d '#{pane_current_path}' -w 80% -h 80% -E \ "fzf --preview 'bat --color=always {}' --bind 'enter:become($EDITOR {})'" # Prefix-g: git status bind g display-popup -d '#{pane_current_path}' -w 80% -h 80% -E \ "git status -s | fzf --preview 'git diff {2} | delta'" # Prefix-d: git diff bind d display-popup -d '#{pane_current_path}' -w 80% -h 80% -E \ "git diff | delta | less -R" # Prefix-/: search with ripgrep bind / display-popup -d '#{pane_current_path}' -w 80% -h 80% -E \ "rg --line-number . | fzf --delimiter : \ --preview 'bat --color=always --highlight-line {2} {1}' \ --bind 'enter:become($EDITOR {1} +{2})'"
¶Useful Links
- tmux popups: https://tmuxai.dev/tmux-popup/
- tmux wiki: https://github.com/tmux/tmux/wiki
- fzf: https://github.com/junegunn/fzf
- bat: https://github.com/sharkdp/bat
- git-delta: https://github.com/dandavison/delta
- ripgrep: https://github.com/BurntSushi/ripgrep
