shellfie 0.1.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +95 -236
  3. data/docs/.nojekyll +0 -0
  4. data/docs/index.html +205 -0
  5. data/docs/scripts.js +85 -0
  6. data/docs/styles.css +507 -0
  7. data/examples/simple.yml +3 -3
  8. data/lib/shellfie/animation_frame_builder.rb +178 -0
  9. data/lib/shellfie/animation_scroll_easing.rb +77 -0
  10. data/lib/shellfie/animation_timeline.rb +27 -0
  11. data/lib/shellfie/ansi_colors.rb +94 -0
  12. data/lib/shellfie/ansi_line_buffer.rb +87 -0
  13. data/lib/shellfie/ansi_normalizer.rb +51 -0
  14. data/lib/shellfie/ansi_parser.rb +50 -84
  15. data/lib/shellfie/cli.rb +22 -173
  16. data/lib/shellfie/cli_generate.rb +197 -0
  17. data/lib/shellfie/cli_info.rb +139 -0
  18. data/lib/shellfie/config.rb +108 -25
  19. data/lib/shellfie/config_defaults.rb +64 -0
  20. data/lib/shellfie/config_validation.rb +200 -0
  21. data/lib/shellfie/dependency_checker.rb +76 -0
  22. data/lib/shellfie/errors.rb +11 -1
  23. data/lib/shellfie/font_resolver.rb +58 -0
  24. data/lib/shellfie/format_resolver.rb +15 -0
  25. data/lib/shellfie/gif_generator.rb +83 -87
  26. data/lib/shellfie/gif_palette.rb +101 -0
  27. data/lib/shellfie/headless_theme_registry.rb +42 -0
  28. data/lib/shellfie/image_magick_command_builder.rb +75 -0
  29. data/lib/shellfie/line_layout.rb +137 -0
  30. data/lib/shellfie/output_writer.rb +41 -0
  31. data/lib/shellfie/parser.rb +113 -23
  32. data/lib/shellfie/parser_validation.rb +145 -0
  33. data/lib/shellfie/raster_painter.rb +157 -0
  34. data/lib/shellfie/render_chrome_cache.rb +40 -0
  35. data/lib/shellfie/render_geometry.rb +114 -0
  36. data/lib/shellfie/render_segment.rb +59 -0
  37. data/lib/shellfie/renderer.rb +79 -149
  38. data/lib/shellfie/rendering/shape_helpers.rb +42 -0
  39. data/lib/shellfie/rendering/text_painter.rb +187 -0
  40. data/lib/shellfie/rendering/window_chrome.rb +196 -0
  41. data/lib/shellfie/svg_raster_wrapper.rb +35 -0
  42. data/lib/shellfie/text_metrics.rb +96 -0
  43. data/lib/shellfie/theme_data.rb +80 -0
  44. data/lib/shellfie/theme_registry.rb +131 -0
  45. data/lib/shellfie/themes/base.rb +10 -1
  46. data/lib/shellfie/themes/configured.rb +61 -0
  47. data/lib/shellfie/themes/macos.rb +3 -1
  48. data/lib/shellfie/themes/ubuntu.rb +2 -1
  49. data/lib/shellfie/themes/windows_terminal.rb +7 -1
  50. data/lib/shellfie/version.rb +1 -1
  51. data/lib/shellfie.rb +37 -3
  52. metadata +37 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2aa4926f71fb587dd2ec442e5257a849e8af9b7fbbb7fb62e0ef1a840cd8dac6
4
- data.tar.gz: 6dbfb90a504e732089a68548970c1ac17879338793612c50872b2cc762572b7f
3
+ metadata.gz: 7ab2ae504b1bc34a212d0354f51bc4d39cd9515d2d06703b342615a93dec0e3e
4
+ data.tar.gz: b442f32768d3a903c955a9830e6d69038ded4d232df459ee9ce93bc3445c9f47
5
5
  SHA512:
6
- metadata.gz: 278e0eabca9c70c2284ca9ccbcba74933fe14e24e6c1050c0a2b635a058fb01d22d353f854083bc8edd4531c7565dbb4e47f84eebc286a33721c238bc025e568
7
- data.tar.gz: 2712539d09a9d2fe1e2149d6786f230ba68b230ea2f3fa3f885c081f52985d4437d0020a702fa9af2c2eed4fdb781dd0d4fa68d251fb1d11338ae090014eea1a
6
+ metadata.gz: bf425a5d9791d0d4856d3a241fca4ce732d2a0730d77677a3e9de739e7df6b3a63eeae5dfa826f01361c2b763d69c9f674f86b926e470203d5d11ba9712d9cd6
7
+ data.tar.gz: 47c58a2d9ddc8ec9ce700c4c5220513a7ded9271952aed2d518c5fb50c567de4227ff73fabede8effa54df70ae8d1ddad6908265a3616ec225126f90f973e17b
data/README.md CHANGED
@@ -1,113 +1,47 @@
1
+ # shellfie
2
+
3
+ Generate terminal screenshot-style images and animations from YAML.
4
+
1
5
  <p align="center">
2
- <img src="assets/logo-header.svg" alt="shellfie header logo">
3
- <p align="center">
4
- <strong>Generate beautiful terminal screenshots from YAML</strong>
5
- </p>
6
- <p align="center">
7
- <a href="https://rubygems.org/gems/shellfie"><img src="https://img.shields.io/gem/v/shellfie.svg?colorB=319e8c" alt="Gem Version"></a>
8
- <a href="https://rubygems.org/gems/shellfie"><img src="https://img.shields.io/gem/dt/shellfie.svg" alt="Downloads"></a>
9
- <img src="https://img.shields.io/badge/ruby-%3E%3D%203.0-ruby.svg" alt="Ruby Version">
10
- <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License">
11
- </p>
6
+ <img src="assets/logo-header.svg" alt="shellfie">
12
7
  </p>
13
8
 
14
9
  <p align="center">
15
- <a href="#features">Features</a>
16
- <a href="#installation">Installation</a>
17
- <a href="#usage">Usage</a> •
18
- <a href="#configuration">Configuration</a> •
19
- <a href="#themes">Themes</a>
10
+ <a href="https://rubygems.org/gems/shellfie"><img src="https://img.shields.io/gem/v/shellfie.svg?colorB=319e8c" alt="Gem Version"></a>
11
+ <a href="https://rubygems.org/gems/shellfie"><img src="https://img.shields.io/gem/dt/shellfie.svg" alt="Downloads"></a>
12
+ <img src="https://img.shields.io/badge/ruby-%3E%3D%203.0-ruby.svg" alt="Ruby Version">
13
+ <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License">
20
14
  </p>
21
15
 
22
- ---
23
-
24
- **Shellfie** (Shell + Selfie) creates stunning terminal screenshot-style images from simple YAML configuration files. Perfect for documentation, README files, tutorials, and presentations — without actually taking screenshots.
25
-
26
16
  <p align="center">
27
- <img src="examples/demo.gif" alt="Shellfie Demo" width="550">
17
+ <img src="examples/demo.gif" alt="shellfie demo" width="560">
28
18
  </p>
29
19
 
30
- ## Features
31
-
32
- ### Multiple Themes
33
-
34
- Generate images with different terminal styles:
35
-
36
- <table>
37
- <tr>
38
- <th>macOS</th>
39
- <th>Ubuntu</th>
40
- <th>Windows</th>
41
- </tr>
42
- <tr>
43
- <td><img src="examples/theme_macos.png" width="280" alt="macOS theme"></td>
44
- <td><img src="examples/theme_ubuntu.png" width="280" alt="Ubuntu theme"></td>
45
- <td><img src="examples/theme_windows.png" width="280" alt="Windows theme"></td>
46
- </tr>
47
- </table>
48
-
49
- ### Animated GIFs
50
-
51
- Create typing animations with realistic effects:
52
-
53
- ```yaml
54
- animation:
55
- typing_speed: 50 # Milliseconds per character
56
- command_delay: 500 # Pause after command
57
- loop: true # Loop animation
58
- ```
59
-
60
- ### Full ANSI Color Support
61
-
62
- - Standard 8 colors + bright variants
63
- - 256-color palette
64
- - True color (24-bit RGB)
65
- - Bold, italic, underline styles
66
-
67
- ### Flexible Output Options
68
-
69
- - **High DPI support** — Generate 2x or 3x scaled images for Retina displays
70
- - **Headless mode** — Output without window decorations
71
- - **Shadow effects** — Beautiful drop shadows
72
- - **Transparent backgrounds** — Perfect for overlays
73
- - **Fixed height with scrolling** — Consistent GIF dimensions
20
+ ## Install
74
21
 
75
- ## Installation
76
-
77
- ### Requirements
22
+ Requirements:
78
23
 
79
24
  - Ruby 3.0+
80
- - ImageMagick 7.0+
81
-
82
- ```bash
83
- # Install ImageMagick first
84
- brew install imagemagick # macOS
85
- sudo apt install imagemagick # Ubuntu/Debian
86
- choco install imagemagick # Windows
87
- ```
88
-
89
- ### Install the gem
25
+ - ImageMagick 7+
90
26
 
91
27
  ```bash
28
+ brew install imagemagick
92
29
  gem install shellfie
93
30
  ```
94
31
 
95
- Or add to your Gemfile:
32
+ For Bundler:
96
33
 
97
34
  ```ruby
98
- gem 'shellfie'
35
+ gem "shellfie"
99
36
  ```
100
37
 
101
- ## Usage
38
+ ## Quick Start
102
39
 
103
- ### Quick Start
104
-
105
- 1. Create a configuration file:
40
+ Create `terminal.yml`:
106
41
 
107
42
  ```yaml
108
- # terminal.yml
109
43
  theme: macos
110
- title: "Terminal zsh"
44
+ title: "Terminal - zsh"
111
45
 
112
46
  window:
113
47
  width: 600
@@ -115,220 +49,145 @@ window:
115
49
 
116
50
  lines:
117
51
  - prompt: "$ "
118
- command: "echo 'Hello, World!'"
119
- - output: "Hello, World!"
52
+ command: "echo hello"
53
+ - output: "hello"
120
54
  ```
121
55
 
122
- 2. Generate an image:
56
+ Generate an image:
123
57
 
124
58
  ```bash
125
- shellfie generate terminal.yml -o output.png
59
+ shellfie generate terminal.yml -o terminal.png
126
60
  ```
127
61
 
128
- ### Commands
62
+ Use `shf` as a short alias for `shellfie`.
129
63
 
130
- | Command | Description |
131
- |---------|-------------|
132
- | `shellfie generate <file> -o <output>` | Generate image from config |
133
- | `shellfie init` | Output sample configuration |
134
- | `shellfie themes` | List available themes |
135
- | `shellfie validate <file>` | Validate configuration |
136
- | `shellfie version` | Show version |
137
- | `shellfie help` | Show help |
138
-
139
- > [!TIP]
140
- > Use `shf` as a shorter alias for `shellfie`
141
-
142
- ### Generate Options
64
+ ## CLI
143
65
 
144
66
  ```bash
145
- shellfie generate config.yml -o output.png [options]
67
+ shellfie generate config.yml -o output.png
68
+ shellfie generate config.yml -o demo.gif --animate
69
+ shellfie generate config.yml -o output.svg --format svg
70
+ shellfie generate config.yml -o output.png --scale 2 --no-shadow
71
+ shellfie generate config.yml -o output.png --no-header
72
+ shellfie validate config.yml
73
+ shellfie themes
74
+ shellfie init
146
75
  ```
147
76
 
77
+ Common `generate` options:
78
+
148
79
  | Option | Description |
149
- |--------|-------------|
150
- | `-o, --output PATH` | Output file path (required) |
151
- | `-t, --theme NAME` | Override theme (`macos`, `ubuntu`, `windows`) |
152
- | `-a, --animate` | Generate animated GIF |
153
- | `-s, --scale FACTOR` | Output scale (1, 2, 3) for HiDPI |
154
- | `-w, --width PIXELS` | Override width |
155
- | `--no-shadow` | Disable shadow effect |
156
- | `--no-header` | Disable window header (headless mode) |
80
+ | --- | --- |
81
+ | `-o, --output PATH` | Output path |
82
+ | `-t, --theme NAME` | Override theme |
83
+ | `-a, --animate` | Render animation |
84
+ | `-s, --scale FACTOR` | Output scale: `1`, `2`, or `3` |
85
+ | `-w, --width PIXELS` | Override window width |
86
+ | `--format FORMAT` | `png`, `gif`, `svg`, `webp`, or `apng` |
87
+ | `--fps FPS` | Override animation typing FPS |
88
+ | `--overflow MODE` | `clip`, `wrap`, or `scroll` |
89
+ | `--no-shadow` | Disable shadow |
157
90
  | `--transparent` | Transparent background |
91
+ | `--no-header` | Headless output |
92
+ | `--force` | Overwrite existing files |
158
93
 
159
- ### Examples
160
-
161
- ```bash
162
- # Basic PNG
163
- shellfie generate config.yml -o terminal.png
164
-
165
- # Animated GIF
166
- shellfie generate config.yml -o demo.gif --animate
167
-
168
- # Retina-ready (2x scale)
169
- shellfie generate config.yml -o terminal@2x.png --scale 2
170
-
171
- # Headless (no window decorations)
172
- shellfie generate config.yml -o code.png --no-header
173
-
174
- # Ubuntu theme with custom width
175
- shellfie generate config.yml -o ubuntu.png -t ubuntu -w 800
176
- ```
94
+ Static output supports `png`, `svg`, and `webp`.
95
+ Animated output supports `gif`, `webp`, and `apng`.
177
96
 
178
97
  ## Configuration
179
98
 
180
- ### Basic Structure
99
+ Static content uses `lines`:
181
100
 
182
101
  ```yaml
183
- theme: macos # Theme: macos, ubuntu, windows
184
- title: "Terminal — zsh" # Window title
185
- headless: false # Hide window decorations
102
+ theme: macos
103
+ title: "Terminal"
186
104
 
187
105
  window:
188
- width: 600 # Window width in pixels
189
- padding: 20 # Content padding
190
- visible_lines: 10 # Fixed line count (for scrolling GIFs)
106
+ width: 600
107
+ padding: 20
108
+ visible_lines: 8
109
+ overflow: clip
191
110
 
192
111
  font:
193
- family: "Monaco" # Font family
194
- size: 14 # Font size
195
- line_height: 1.4 # Line height multiplier
196
-
197
- lines: # Static content
198
- - prompt: "$ "
199
- command: "echo hello"
200
- - output: "hello"
201
- ```
202
-
203
- ### Static Images
204
-
205
- ```yaml
206
- theme: macos
207
- title: "Terminal"
112
+ family: Monaco
113
+ size: 14
114
+ line_height: 1.4
208
115
 
209
116
  lines:
210
117
  - prompt: "$ "
211
118
  command: "gem install shellfie"
212
-
213
119
  - output: |
214
- Fetching shellfie-0.1.0.gem
215
- Successfully installed shellfie-0.1.0
120
+ Successfully installed shellfie
216
121
  1 gem installed
217
-
218
- - prompt: "$ "
219
- command: ""
220
122
  ```
221
123
 
222
- ### Animated GIFs
124
+ Animations use `frames`:
223
125
 
224
126
  ```yaml
225
127
  theme: macos
226
128
  title: "Demo"
227
129
 
228
130
  animation:
229
- typing_speed: 50 # ms per character
230
- command_delay: 500 # ms after command execution
231
- cursor_blink: true # Show blinking cursor
232
- loop: true # Loop the animation
131
+ typing_speed: 50
132
+ command_delay: 500
133
+ cursor_blink: true
134
+ loop: true
135
+ palette: global
136
+ dither: true
137
+ scroll_easing: ease_out
233
138
 
234
139
  frames:
235
140
  - prompt: "$ "
236
- type: "echo 'Hello!'" # Text to type (animated)
237
- delay: 500 # Pause after this frame
238
-
239
- - output: "Hello!"
141
+ type: "echo hello"
142
+ delay: 500
143
+ - output: "hello"
240
144
  delay: 1000
241
145
  ```
242
146
 
243
- ### ANSI Colors
147
+ Useful top-level keys:
244
148
 
245
- ```yaml
246
- lines:
247
- - prompt: "\e[32muser@host\e[0m:\e[34m~/project\e[0m$ "
248
- command: "ls"
149
+ | Key | Purpose |
150
+ | --- | --- |
151
+ | `theme` | `macos`, `ubuntu`, `windows`, or `custom` |
152
+ | `color_scheme` | Built-in color scheme such as `dracula` |
153
+ | `colors` | Theme color overrides |
154
+ | `window` | Size, padding, wrapping, clipping, scrolling |
155
+ | `font` | Font family, size, line height |
156
+ | `animation` | Typing speed, delays, loop, palette, easing |
157
+ | `cursor` | Cursor style and color |
158
+ | `headless` | Hide window chrome |
159
+ | `lines` | Static terminal content |
160
+ | `frames` | Animated terminal content |
249
161
 
250
- - output: "\e[34mdir1\e[0m \e[32mfile.txt\e[0m \e[31merror.log\e[0m"
251
- ```
162
+ ANSI colors and styles are supported in `prompt`, `command`, and `output`, including 8-color, bright, 256-color, and RGB escape sequences.
252
163
 
253
- **Supported escape codes:**
164
+ ## Themes
254
165
 
255
- | Code | Effect |
256
- |------|--------|
257
- | `\e[0m` | Reset |
258
- | `\e[1m` | Bold |
259
- | `\e[3m` | Italic |
260
- | `\e[4m` | Underline |
261
- | `\e[30-37m` | Foreground colors |
262
- | `\e[40-47m` | Background colors |
263
- | `\e[90-97m` | Bright foreground |
264
- | `\e[38;5;Nm` | 256-color foreground |
265
- | `\e[38;2;R;G;Bm` | RGB foreground |
166
+ Built-in window themes:
266
167
 
267
- ### Fixed Height with Scrolling
168
+ - `macos`
169
+ - `ubuntu`
170
+ - `windows`
268
171
 
269
- For GIFs with many lines, use `visible_lines` to maintain consistent dimensions:
172
+ Headless output removes window chrome:
270
173
 
271
174
  ```yaml
272
- window:
273
- width: 600
274
- visible_lines: 8 # Show only last 8 lines
275
-
276
- frames:
277
- - prompt: "$ "
278
- type: "for i in {1..20}; do echo $i; done"
279
- # Lines will scroll as content exceeds visible_lines
175
+ headless: true
280
176
  ```
281
177
 
282
- ## Themes
283
-
284
- ### macOS (default)
285
-
286
- Classic macOS Terminal appearance with traffic light buttons (red, yellow, green) on the left side.
287
-
288
- ### Ubuntu
289
-
290
- GNOME Terminal style with window controls on the right side and Ubuntu's signature purple background.
291
-
292
- ### Windows Terminal
293
-
294
- Modern Windows Terminal design with flat styling and square corners.
295
-
296
- ### Headless Mode
297
-
298
- No window decorations — just the terminal content. Perfect for embedding in documentation.
299
-
300
- <p align="center">
301
- <img src="examples/headless.png" alt="Headless mode" width="500">
302
- </p>
178
+ or:
303
179
 
304
180
  ```bash
305
181
  shellfie generate config.yml -o output.png --no-header
306
182
  ```
307
183
 
308
- Or in YAML:
309
-
310
- ```yaml
311
- headless: true
312
- ```
313
-
314
184
  ## Development
315
185
 
316
186
  ```bash
317
- git clone https://github.com/yourusername/shellfie.git
318
- cd shellfie
319
-
320
187
  bundle install
321
- bundle exec rspec # Run tests
188
+ bundle exec rspec
322
189
  ```
323
190
 
324
- ## Contributing
325
-
326
- 1. Fork it
327
- 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
328
- 3. Commit your changes (`git commit -am 'Add amazing feature'`)
329
- 4. Push to the branch (`git push origin feature/amazing-feature`)
330
- 5. Open a Pull Request
331
-
332
191
  ## License
333
192
 
334
- Released under the [MIT License](LICENSE).
193
+ [MIT](LICENSE)
data/docs/.nojekyll ADDED
File without changes
data/docs/index.html ADDED
@@ -0,0 +1,205 @@
1
+ <!doctype html>
2
+ <html lang="ja">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Shellfie Docs</title>
7
+ <meta
8
+ name="description"
9
+ content="Shellfie documentation. Generate beautiful terminal screenshots from YAML."
10
+ />
11
+ <link rel="stylesheet" href="./styles.css" />
12
+ </head>
13
+ <body>
14
+ <div class="ambient-glow" aria-hidden="true"></div>
15
+ <div class="sun-core" aria-hidden="true"></div>
16
+ <div class="scanlines" aria-hidden="true"></div>
17
+ <div class="stars" aria-hidden="true"></div>
18
+ <div class="grid-floor" aria-hidden="true"></div>
19
+
20
+ <header class="topbar">
21
+ <div class="brand">
22
+ <span class="brand__glyph">◎</span>
23
+ <div class="brand__stack">
24
+ <span class="brand__title">Shellfie</span>
25
+ <span class="brand__subtitle">Terminal Screenshot Generator</span>
26
+ </div>
27
+ </div>
28
+ <nav class="topnav">
29
+ <a href="#features">Features</a>
30
+ <a href="#install">Install</a>
31
+ <a href="#usage">Usage</a>
32
+ <a href="#config">Config</a>
33
+ <a href="#themes">Themes</a>
34
+ </nav>
35
+ <a class="cta" href="https://github.com/ydah/shellfie">GitHub</a>
36
+ </header>
37
+
38
+ <main>
39
+ <section class="hero">
40
+ <div class="hero__content">
41
+ <p class="eyebrow">YAML → Image → Imagination</p>
42
+ <h1>
43
+ Terminal visuals that elevate<br />
44
+ your documentation
45
+ </h1>
46
+ <p class="hero__lead">
47
+ Shellfie is a CLI that generates PNGs and animated GIFs from YAML.
48
+ Build documentation, tutorials, and presentations without taking screenshots.
49
+ </p>
50
+ <div class="hero__actions">
51
+ <a class="cta cta--primary" href="#usage">Quick Start</a>
52
+ <a class="cta cta--ghost" href="#config">View Config</a>
53
+ </div>
54
+ <div class="hero__meta">
55
+ <span>Ruby 3.0+</span>
56
+ <span>ImageMagick 7.0+</span>
57
+ <span>CLI: shellfie / shf</span>
58
+ </div>
59
+ </div>
60
+ <div class="hero__preview">
61
+ <div class="terminal-card">
62
+ <div class="terminal-card__bar">
63
+ <span></span><span></span><span></span>
64
+ </div>
65
+ <div class="terminal-card__body">
66
+ <div
67
+ class="typewriter"
68
+ data-lines="$ shellfie init &gt; demo.yml||$ shellfie generate demo.yml -o neon.png||Generated: neon.png||Let the glow begin..."
69
+ ></div>
70
+ </div>
71
+ </div>
72
+ </div>
73
+ </section>
74
+
75
+ <section id="features" class="section">
76
+ <div class="section__header">
77
+ <p class="eyebrow">Features</p>
78
+ <h2>Make visuals and storytelling effortless</h2>
79
+ <p class="section__lead">
80
+ Switch themes, animate typing, and support ANSI colors to level up your docs.
81
+ </p>
82
+ </div>
83
+ <div class="grid">
84
+ <article class="card">
85
+ <h3>Multi Theme</h3>
86
+ <p>Switch between macOS, Ubuntu, and Windows terminal styles.</p>
87
+ </article>
88
+ <article class="card">
89
+ <h3>Animated GIF</h3>
90
+ <p>Create typing animations that feel like a guided walkthrough.</p>
91
+ </article>
92
+ <article class="card">
93
+ <h3>Full ANSI</h3>
94
+ <p>Support 256-color palettes, TrueColor, and text styles.</p>
95
+ </article>
96
+ <article class="card">
97
+ <h3>HiDPI Output</h3>
98
+ <p>Render crisp assets with 2x or 3x scaling for HiDPI.</p>
99
+ </article>
100
+ </div>
101
+ </section>
102
+
103
+ <section id="install" class="section section--alt">
104
+ <div class="section__header">
105
+ <p class="eyebrow">Install</p>
106
+ <h2>Install in two steps</h2>
107
+ </div>
108
+ <div class="split">
109
+ <div class="code-block">
110
+ <h3>ImageMagick</h3>
111
+ <pre><code>brew install imagemagick
112
+ # Ubuntu/Debian
113
+ sudo apt install imagemagick</code></pre>
114
+ </div>
115
+ <div class="code-block">
116
+ <h3>Shellfie</h3>
117
+ <pre><code>gem install shellfie
118
+ # or
119
+ bundle add shellfie</code></pre>
120
+ </div>
121
+ </div>
122
+ </section>
123
+
124
+ <section id="usage" class="section">
125
+ <div class="section__header">
126
+ <p class="eyebrow">Usage</p>
127
+ <h2>Quick Start</h2>
128
+ <p class="section__lead">
129
+ Create a YAML file, then generate the output.
130
+ </p>
131
+ </div>
132
+ <div class="split">
133
+ <div class="code-block">
134
+ <h3>terminal.yml</h3>
135
+ <pre><code>theme: macos
136
+ title: "Terminal — zsh"
137
+
138
+ window:
139
+ width: 620
140
+ padding: 20
141
+
142
+ lines:
143
+ - prompt: "$ "
144
+ command: "echo 'Hello, Vaporwave!'"
145
+ - output: "Hello, Vaporwave!"</code></pre>
146
+ </div>
147
+ <div class="code-block">
148
+ <h3>Generate</h3>
149
+ <pre><code>shellfie generate terminal.yml -o output.png
150
+ shellfie generate terminal.yml -o demo.gif --animate</code></pre>
151
+ </div>
152
+ </div>
153
+ </section>
154
+
155
+ <section id="config" class="section section--alt">
156
+ <div class="section__header">
157
+ <p class="eyebrow">Config</p>
158
+ <h2>Animation controls</h2>
159
+ <p class="section__lead">
160
+ Tune typing speed, delays, and looping.
161
+ </p>
162
+ </div>
163
+ <div class="code-block code-block--wide">
164
+ <pre><code>animation:
165
+ typing_speed: 50
166
+ command_delay: 500
167
+ cursor_blink: true
168
+ loop: true
169
+
170
+ frames:
171
+ - prompt: "$ "
172
+ type: "ls -la"
173
+ delay: 400
174
+ - output: "docs lib README.md"
175
+ delay: 800</code></pre>
176
+ </div>
177
+ </section>
178
+
179
+ <section id="themes" class="section">
180
+ <div class="section__header">
181
+ <p class="eyebrow">Themes</p>
182
+ <h2>Shape the vibe with themes</h2>
183
+ </div>
184
+ <div class="theme-list">
185
+ <div class="theme-pill">macos</div>
186
+ <div class="theme-pill">ubuntu</div>
187
+ <div class="theme-pill">windows</div>
188
+ <div class="theme-pill">headless</div>
189
+ </div>
190
+ <div class="code-block code-block--wide">
191
+ <pre><code>shellfie themes
192
+ shellfie generate config.yml -o neon.png -t ubuntu
193
+ shellfie generate config.yml -o ghost.png --no-header</code></pre>
194
+ </div>
195
+ </section>
196
+ </main>
197
+
198
+ <footer class="footer">
199
+ <p>Shellfie Docs</p>
200
+ <p>Built for GitHub Pages + GitHub Actions</p>
201
+ </footer>
202
+
203
+ <script src="./scripts.js"></script>
204
+ </body>
205
+ </html>