Files
dotfiles/config/scripts/.local/scripts/ghostty-capture
2025-12-07 02:52:32 +01:00

54 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Description:
# Use a sequence of keybinds to open the scrollback(or screen) buffer in editor (default to vim)
# without switching contexts.
# (It will be much easier if write_<screen|scrollback>_file:open is correctly implemented)
#
# Requirements:
# - ghostty (of course)
# - wl-clipboard
#
# Example configuration in ~/.config/ghostty/config:
# # ctrl+shift+h>j to open the screen buffer in editor
# keybind = ctrl+shift+h=write_screen_file:copy
# keybind = ctrl+shift+j=text:ghostty-capture\n
# Or without wl-paste:
# # ctrl+shift+h>j > Enter to open the screen buffer in editor
# keybind = ctrl+shift+j=text:ghostty-capture\x20
# keybind = ctrl+shift+h=write_screen_file:paste
if [ -z "$1" ] && ! command -v wl-paste &> /dev/null; then
echo "Error: wl-paste not found." >&2
exit 1
fi
file=${1:-$(wl-paste --no-newline)}
[ -z "$file" ] && {
echo "No file provided or found in clipboard." >&2
exit 1
}
[ -f "$file" ] || {
echo "File does not exist: $file" >&2
exit 1
}
case "$file" in
/tmp/*/*.txt) ;;
*)
echo "Possibily not a Ghostty generated temp file: $file" >&2
exit 1
;;
esac
if [[ "$EDITOR" == *"code"* ]]; then
$EDITOR --wait "$file"
else
${EDITOR:-vim} "$file"
fi
rm -f "$file"
rmdir "$(dirname "$file")" 2>/dev/null