diff --git a/README.md b/README.md new file mode 100644 index 0000000..28f5431 --- /dev/null +++ b/README.md @@ -0,0 +1,111 @@ +# Ghostty Shader Previews + +A collection of shader previews for Ghostty terminal. + +## animated-gradient-shader + +![animated-gradient-shader](shader_previews/animated-gradient-shader.gif) + +## bettercrt + +![bettercrt](shader_previews/bettercrt.gif) + +## bloom + +![bloom](shader_previews/bloom.gif) + +## crt + +![crt](shader_previews/crt.gif) + +## cubes + +![cubes](shader_previews/cubes.gif) + +## dither + +![dither](shader_previews/dither.gif) + +## drunkard + +![drunkard](shader_previews/drunkard.gif) + +## fireworks-rockets + +![fireworks-rockets](shader_previews/fireworks-rockets.gif) + +## fireworks + +![fireworks](shader_previews/fireworks.gif) + +## galaxy + +![galaxy](shader_previews/galaxy.gif) + +## gears-and-belts + +![gears-and-belts](shader_previews/gears-and-belts.gif) + +## glitchy + +![glitchy](shader_previews/glitchy.gif) + +## glow-rgbsplit-twitchy + +![glow-rgbsplit-twitchy](shader_previews/glow-rgbsplit-twitchy.gif) + +## gradient-background + +![gradient-background](shader_previews/gradient-background.gif) + +## inside-the-matrix + +![inside-the-matrix](shader_previews/inside-the-matrix.gif) + +## just-snow + +![just-snow](shader_previews/just-snow.gif) + +## matrix-hallway + +![matrix-hallway](shader_previews/matrix-hallway.gif) + +## negative + +![negative](shader_previews/negative.gif) + +## retro-terminal + +![retro-terminal](shader_previews/retro-terminal.gif) + +## smoke-and-ghost + +![smoke-and-ghost](shader_previews/smoke-and-ghost.gif) + +## sparks-from-fire + +![sparks-from-fire](shader_previews/sparks-from-fire.gif) + +## spotlight + +![spotlight](shader_previews/spotlight.gif) + +## starfield-colors + +![starfield-colors](shader_previews/starfield-colors.gif) + +## starfield + +![starfield](shader_previews/starfield.gif) + +## tft + +![tft](shader_previews/tft.gif) + +## underwater + +![underwater](shader_previews/underwater.gif) + +## water + +![water](shader_previews/water.gif) diff --git a/generate-previews.sh b/generate-previews.sh new file mode 100755 index 0000000..4be4cc7 --- /dev/null +++ b/generate-previews.sh @@ -0,0 +1,94 @@ +#!/bin/bash + +CONFIG_FILE="$HOME/Library/Application Support/com.mitchellh.ghostty/config" +BACKUP_FILE="$CONFIG_FILE.backup" + +# Check if ffmpeg is installed +if ! command -v ffmpeg &> /dev/null; then + echo "ffmpeg is required but not installed. Please install it with 'brew install ffmpeg'" + exit 1 +fi + +# Create videos directory if it doesn't exist and clean existing recordings +rm -rf shader_previews +mkdir -p shader_previews + +# Start README.md with a header +echo "# Ghostty Shader Previews" > README.md +echo "" >> README.md +echo "A collection of shader previews for Ghostty terminal." >> README.md +echo "" >> README.md + +# Capture original shader setting +ORIGINAL_SHADER=$(grep "^custom-shader=" "$CONFIG_FILE" || echo "") + +# Create backup of original config +cp "$CONFIG_FILE" "$BACKUP_FILE" + +# Loop through all .glsl files in the current directory +for file in *.glsl; do + if [ -f "$file" ]; then + echo "Applying shader: $file" + + # Remove existing custom-shader line if it exists + sed -i '' '/^custom-shader = /d' "$CONFIG_FILE" + + # Add new shader config on a new line, ensuring there's a blank line before it + echo "" >> "$CONFIG_FILE" + echo "custom-shader = $(pwd)/$file" >> "$CONFIG_FILE" + + # Get filename without extension for the video name + filename=$(basename "$file" .glsl) + + # Open Ghostty + open -a Ghostty + + # Give it a moment to open + sleep 2 + + # Type commands using AppleScript + osascript -e 'tell application "System Events" + keystroke "cd '"$(pwd)"' && ls -la" + key code 36 # Return key + end tell' + + # First capture video at reduced size + ffmpeg -f avfoundation -capture_cursor 1 -i "0:none" -t 10 \ + -vf "scale=iw/2:ih/2" \ + -c:v libx264 -preset fast \ + -y "shader_previews/${filename}_temp.mp4" + + # Convert to optimized GIF + ffmpeg -i "shader_previews/${filename}_temp.mp4" \ + -vf "fps=10,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \ + -loop 0 \ + "shader_previews/${filename}.gif" + + # Remove temporary video + rm "shader_previews/${filename}_temp.mp4" + + # Close Ghostty (force kill if necessary) + pkill -9 -x "ghostty" + + # Give it a moment to close + sleep 1 + + # Add shader section to README.md + echo "## ${filename}" >> README.md + echo "" >> README.md + echo "![${filename}](shader_previews/${filename}.gif)" >> README.md + echo "" >> README.md + fi +done + +# Restore original config +cp "$BACKUP_FILE" "$CONFIG_FILE" + +# If there was an original shader, restore it properly +if [ -n "$ORIGINAL_SHADER" ]; then + sed -i '' '/^custom-shader=/d' "$CONFIG_FILE" + echo "" >> "$CONFIG_FILE" + echo "$ORIGINAL_SHADER" >> "$CONFIG_FILE" +fi + +rm "$BACKUP_FILE" diff --git a/shader_previews/animated-gradient-shader.gif b/shader_previews/animated-gradient-shader.gif new file mode 100644 index 0000000..1b0ca91 Binary files /dev/null and b/shader_previews/animated-gradient-shader.gif differ diff --git a/shader_previews/bettercrt.gif b/shader_previews/bettercrt.gif new file mode 100644 index 0000000..6ec2131 Binary files /dev/null and b/shader_previews/bettercrt.gif differ diff --git a/shader_previews/bloom.gif b/shader_previews/bloom.gif new file mode 100644 index 0000000..b9c86b5 Binary files /dev/null and b/shader_previews/bloom.gif differ diff --git a/shader_previews/crt.gif b/shader_previews/crt.gif new file mode 100644 index 0000000..2e2c4f7 Binary files /dev/null and b/shader_previews/crt.gif differ diff --git a/shader_previews/cubes.gif b/shader_previews/cubes.gif new file mode 100644 index 0000000..8615c26 Binary files /dev/null and b/shader_previews/cubes.gif differ diff --git a/shader_previews/dither.gif b/shader_previews/dither.gif new file mode 100644 index 0000000..7026334 Binary files /dev/null and b/shader_previews/dither.gif differ diff --git a/shader_previews/drunkard.gif b/shader_previews/drunkard.gif new file mode 100644 index 0000000..bba47fd Binary files /dev/null and b/shader_previews/drunkard.gif differ diff --git a/shader_previews/fireworks-rockets.gif b/shader_previews/fireworks-rockets.gif new file mode 100644 index 0000000..8576705 Binary files /dev/null and b/shader_previews/fireworks-rockets.gif differ diff --git a/shader_previews/fireworks.gif b/shader_previews/fireworks.gif new file mode 100644 index 0000000..1af1ca0 Binary files /dev/null and b/shader_previews/fireworks.gif differ diff --git a/shader_previews/galaxy.gif b/shader_previews/galaxy.gif new file mode 100644 index 0000000..e64688b Binary files /dev/null and b/shader_previews/galaxy.gif differ diff --git a/shader_previews/gears-and-belts.gif b/shader_previews/gears-and-belts.gif new file mode 100644 index 0000000..d6f8c9c Binary files /dev/null and b/shader_previews/gears-and-belts.gif differ diff --git a/shader_previews/glitchy.gif b/shader_previews/glitchy.gif new file mode 100644 index 0000000..9bfb37d Binary files /dev/null and b/shader_previews/glitchy.gif differ diff --git a/shader_previews/glow-rgbsplit-twitchy.gif b/shader_previews/glow-rgbsplit-twitchy.gif new file mode 100644 index 0000000..ce766fb Binary files /dev/null and b/shader_previews/glow-rgbsplit-twitchy.gif differ diff --git a/shader_previews/gradient-background.gif b/shader_previews/gradient-background.gif new file mode 100644 index 0000000..b7a93f5 Binary files /dev/null and b/shader_previews/gradient-background.gif differ diff --git a/shader_previews/inside-the-matrix.gif b/shader_previews/inside-the-matrix.gif new file mode 100644 index 0000000..d500f63 Binary files /dev/null and b/shader_previews/inside-the-matrix.gif differ diff --git a/shader_previews/just-snow.gif b/shader_previews/just-snow.gif new file mode 100644 index 0000000..c90fee6 Binary files /dev/null and b/shader_previews/just-snow.gif differ diff --git a/shader_previews/matrix-hallway.gif b/shader_previews/matrix-hallway.gif new file mode 100644 index 0000000..8c091f1 Binary files /dev/null and b/shader_previews/matrix-hallway.gif differ diff --git a/shader_previews/negative.gif b/shader_previews/negative.gif new file mode 100644 index 0000000..f23670d Binary files /dev/null and b/shader_previews/negative.gif differ diff --git a/shader_previews/retro-terminal.gif b/shader_previews/retro-terminal.gif new file mode 100644 index 0000000..c0330b6 Binary files /dev/null and b/shader_previews/retro-terminal.gif differ diff --git a/shader_previews/smoke-and-ghost.gif b/shader_previews/smoke-and-ghost.gif new file mode 100644 index 0000000..597efa2 Binary files /dev/null and b/shader_previews/smoke-and-ghost.gif differ diff --git a/shader_previews/sparks-from-fire.gif b/shader_previews/sparks-from-fire.gif new file mode 100644 index 0000000..93cf738 Binary files /dev/null and b/shader_previews/sparks-from-fire.gif differ diff --git a/shader_previews/spotlight.gif b/shader_previews/spotlight.gif new file mode 100644 index 0000000..827c0af Binary files /dev/null and b/shader_previews/spotlight.gif differ diff --git a/shader_previews/starfield-colors.gif b/shader_previews/starfield-colors.gif new file mode 100644 index 0000000..f434c98 Binary files /dev/null and b/shader_previews/starfield-colors.gif differ diff --git a/shader_previews/starfield.gif b/shader_previews/starfield.gif new file mode 100644 index 0000000..a885b5c Binary files /dev/null and b/shader_previews/starfield.gif differ diff --git a/shader_previews/tft.gif b/shader_previews/tft.gif new file mode 100644 index 0000000..8fc03dd Binary files /dev/null and b/shader_previews/tft.gif differ diff --git a/shader_previews/underwater.gif b/shader_previews/underwater.gif new file mode 100644 index 0000000..e4d9c40 Binary files /dev/null and b/shader_previews/underwater.gif differ diff --git a/shader_previews/water.gif b/shader_previews/water.gif new file mode 100644 index 0000000..2d26564 Binary files /dev/null and b/shader_previews/water.gif differ