54 lines
1.3 KiB
Bash
Executable File
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 |