-
Notifications
You must be signed in to change notification settings - Fork 1
/
ghostty.config
1240 lines (1164 loc) · 46.7 KB
/
ghostty.config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# The font families to use.
#
# You can generate the list of valid values using the CLI:
#
# ghostty +list-fonts
#
# This configuration can be repeated multiple times to specify preferred
# fallback fonts when the requested codepoint is not available in the primary
# font. This is particularly useful for multiple languages, symbolic fonts,
# etc.
#
# If you want to overwrite a previous set value rather than append a fallback,
# specify the value as `""` (empty string) to reset the list and then set the
# new values. For example:
#
# font-family = ""
# font-family = "My Favorite Font"
#
# Changing this configuration at runtime will only affect new terminals, i.e.
# new windows, tabs, etc.
font-family =
font-family-bold =
font-family-italic =
font-family-bold-italic =
# The named font style to use for each of the requested terminal font styles.
# This looks up the style based on the font style string advertised by the
# font itself. For example, "Iosevka Heavy" has a style of "Heavy".
#
# You can also use these fields to completely disable a font style. If you set
# the value of the configuration below to literal `false` then that font style
# will be disabled. If the running program in the terminal requests a disabled
# font style, the regular font style will be used instead.
#
# These are only valid if its corresponding font-family is also specified. If
# no font-family is specified, then the font-style is ignored unless you're
# disabling the font style.
font-style = default
font-style-bold = default
font-style-italic = default
font-style-bold-italic = default
# Apply a font feature. This can be repeated multiple times to enable multiple
# font features. You can NOT set multiple font features with a single value
# (yet).
#
# The font feature will apply to all fonts rendered by Ghostty. A future
# enhancement will allow targeting specific faces.
#
# A valid value is the name of a feature. Prefix the feature with a `-` to
# explicitly disable it. Example: `ss20` or `-ss20`.
#
# To disable programming ligatures, use `-calt` since this is the typical
# feature name for programming ligatures. To look into what font features
# your font has and what they do, use a font inspection tool such as
# [fontdrop.info](https://fontdrop.info).
#
# To generally disable most ligatures, use `-calt`, `-liga`, and `-dlig` (as
# separate repetitive entries in your config).
font-feature =
# Font size in points
font-size = 12
# A repeatable configuration to set one or more font variations values for
# a variable font. A variable font is a single font, usually with a filename
# ending in `-VF.ttf` or `-VF.otf` that contains one or more configurable axes
# for things such as weight, slant, etc. Not all fonts support variations;
# only fonts that explicitly state they are variable fonts will work.
#
# The format of this is `id=value` where `id` is the axis identifier. An axis
# identifier is always a 4 character string, such as `wght`. To get the list
# of supported axes, look at your font documentation or use a font inspection
# tool.
#
# Invalid ids and values are usually ignored. For example, if a font only
# supports weights from 100 to 700, setting `wght=800` will do nothing (it
# will not be clamped to 700). You must consult your font's documentation to
# see what values are supported.
#
# Common axes are: `wght` (weight), `slnt` (slant), `ital` (italic), `opsz`
# (optical size), `wdth` (width), `GRAD` (gradient), etc.
font-variation =
font-variation-bold =
font-variation-italic =
font-variation-bold-italic =
# Force one or a range of Unicode codepoints to map to a specific named font.
# This is useful if you want to support special symbols or if you want to use
# specific glyphs that render better for your specific font.
#
# The syntax is `codepoint=fontname` where `codepoint` is either a single
# codepoint or a range. Codepoints must be specified as full Unicode
# hex values, such as `U+ABCD`. Codepoints ranges are specified as
# `U+ABCD-U+DEFG`. You can specify multiple ranges for the same font separated
# by commas, such as `U+ABCD-U+DEFG,U+1234-U+5678=fontname`. The font name is
# the same value as you would use for `font-family`.
#
# This configuration can be repeated multiple times to specify multiple
# codepoint mappings.
#
# Changing this configuration at runtime will only affect new terminals,
# i.e. new windows, tabs, etc.
font-codepoint-map =
# Draw fonts with a thicker stroke, if supported. This is only supported
# currently on MacOS.
font-thicken = false
# All of the configurations behavior adjust various metrics determined by the
# font. The values can be integers (1, -1, etc.) or a percentage (20%, -15%,
# etc.). In each case, the values represent the amount to change the original
# value.
#
# For example, a value of `1` increases the value by 1; it does not set it to
# literally 1. A value of `20%` increases the value by 20%. And so on.
#
# There is little to no validation on these values so the wrong values (i.e.
# `-100%`) can cause the terminal to be unusable. Use with caution and reason.
#
# Some values are clamped to minimum or maximum values. This can make it
# appear that certain values are ignored. For example, the underline position
# is clamped to the height of a cell. If you set the underline position so
# high that it extends beyond the bottom of the cell size, it will be clamped
# to the bottom of the cell.
#
# `adjust-cell-height` has some additional behaviors to describe:
#
# * The font will be centered vertically in the cell.
#
# * The cursor will remain the same size as the font.
#
# * Powerline glyphs will be adjusted along with the cell height so
# that things like status lines continue to look aligned.
adjust-cell-width =
adjust-cell-height =
adjust-font-baseline =
adjust-underline-position =
adjust-underline-thickness =
adjust-strikethrough-position =
adjust-strikethrough-thickness =
# The method to use for calculating the cell width of a grapheme cluster.
# The default value is `unicode` which uses the Unicode standard to determine
# grapheme width. This results in correct grapheme width but may result in
# cursor-desync issues with some programs (such as shells) that may use a
# legacy method such as `wcswidth`.
#
# Valid values are:
#
# * `wcswidth` - Use the wcswidth function to determine grapheme width.
# This maximizes compatibility with legacy programs but may result
# in incorrect grapheme width for certain graphemes such as skin-tone
# emoji, non-English characters, etc.
#
# Note that this `wcswidth` functionality is based on the libc wcswidth,
# not any other libraries with that name.
#
# * `unicode` - Use the Unicode standard to determine grapheme width.
#
# If a running program explicitly enables terminal mode 2027, then `unicode`
# width will be forced regardless of this configuration. When mode 2027 is
# reset, this configuration will be used again.
#
# This configuration can be changed at runtime but will not affect existing
# terminals. Only new terminals will use the new configuration.
grapheme-width-method = unicode
# A named theme to use. The available themes are currently hardcoded to the
# themes that ship with Ghostty. On macOS, this list is in the `Ghostty.app/
# Contents/Resources/ghostty/themes` directory. On Linux, this list is in the
# `share/ghostty/themes` directory (wherever you installed the Ghostty "share"
# directory.
#
# To see a list of available themes, run `ghostty +list-themes`.
#
# Any additional colors specified via background, foreground, palette, etc.
# will override the colors specified in the theme.
#
# This configuration can be changed at runtime, but the new theme will only
# affect new cells. Existing colored cells will not be updated. Therefore,
# after changing the theme, you should restart any running programs to ensure
# they get the new colors.
#
# A future update will allow custom themes to be installed in certain
# directories.
theme =
# Background color for the window.
background = #282c34
# Foreground color for the window.
foreground = #ffffff
# The foreground and background color for selection. If this is not set, then
# the selection color is just the inverted window background and foreground
# (note: not to be confused with the cell bg/fg).
selection-foreground =
selection-background =
# Swap the foreground and background colors of cells for selection. This
# option overrides the `selection-foreground` and `selection-background`
# options.
#
# If you select across cells with differing foregrounds and backgrounds, the
# selection color will vary across the selection.
selection-invert-fg-bg = false
# The minimum contrast ratio between the foreground and background colors.
# The contrast ratio is a value between 1 and 21. A value of 1 allows for no
# contrast (i.e. black on black). This value is the contrast ratio as defined
# by the [WCAG 2.0 specification](https://www.w3.org/TR/WCAG20/).
#
# If you want to avoid invisible text (same color as background), a value of
# 1.1 is a good value. If you want to avoid text that is difficult to read, a
# value of 3 or higher is a good value. The higher the value, the more likely
# that text will become black or white.
#
# This value does not apply to Emoji or images.
minimum-contrast = 1
# Color palette for the 256 color form that many terminal applications use.
# The syntax of this configuration is `N=HEXCODE` where `N` is 0 to 255 (for
# the 256 colors in the terminal color table) and `HEXCODE` is a typical RGB
# color code such as `#AABBCC`.
#
# For definitions on all the codes [see this cheat
# sheet](https://www.ditig.com/256-colors-cheat-sheet).
palette = 0=#1d1f21
palette = 1=#cc6666
palette = 2=#b5bd68
palette = 3=#f0c674
palette = 4=#81a2be
palette = 5=#b294bb
palette = 6=#8abeb7
palette = 7=#c5c8c6
palette = 8=#666666
palette = 9=#d54e53
palette = 10=#b9ca4a
palette = 11=#e7c547
palette = 12=#7aa6da
palette = 13=#c397d8
palette = 14=#70c0b1
palette = 15=#eaeaea
palette = 16=#000000
palette = 17=#00005f
palette = 18=#000087
palette = 19=#0000af
palette = 20=#0000d7
palette = 21=#0000ff
palette = 22=#005f00
palette = 23=#005f5f
palette = 24=#005f87
palette = 25=#005faf
palette = 26=#005fd7
palette = 27=#005fff
palette = 28=#008700
palette = 29=#00875f
palette = 30=#008787
palette = 31=#0087af
palette = 32=#0087d7
palette = 33=#0087ff
palette = 34=#00af00
palette = 35=#00af5f
palette = 36=#00af87
palette = 37=#00afaf
palette = 38=#00afd7
palette = 39=#00afff
palette = 40=#00d700
palette = 41=#00d75f
palette = 42=#00d787
palette = 43=#00d7af
palette = 44=#00d7d7
palette = 45=#00d7ff
palette = 46=#00ff00
palette = 47=#00ff5f
palette = 48=#00ff87
palette = 49=#00ffaf
palette = 50=#00ffd7
palette = 51=#00ffff
palette = 52=#5f0000
palette = 53=#5f005f
palette = 54=#5f0087
palette = 55=#5f00af
palette = 56=#5f00d7
palette = 57=#5f00ff
palette = 58=#5f5f00
palette = 59=#5f5f5f
palette = 60=#5f5f87
palette = 61=#5f5faf
palette = 62=#5f5fd7
palette = 63=#5f5fff
palette = 64=#5f8700
palette = 65=#5f875f
palette = 66=#5f8787
palette = 67=#5f87af
palette = 68=#5f87d7
palette = 69=#5f87ff
palette = 70=#5faf00
palette = 71=#5faf5f
palette = 72=#5faf87
palette = 73=#5fafaf
palette = 74=#5fafd7
palette = 75=#5fafff
palette = 76=#5fd700
palette = 77=#5fd75f
palette = 78=#5fd787
palette = 79=#5fd7af
palette = 80=#5fd7d7
palette = 81=#5fd7ff
palette = 82=#5fff00
palette = 83=#5fff5f
palette = 84=#5fff87
palette = 85=#5fffaf
palette = 86=#5fffd7
palette = 87=#5fffff
palette = 88=#870000
palette = 89=#87005f
palette = 90=#870087
palette = 91=#8700af
palette = 92=#8700d7
palette = 93=#8700ff
palette = 94=#875f00
palette = 95=#875f5f
palette = 96=#875f87
palette = 97=#875faf
palette = 98=#875fd7
palette = 99=#875fff
palette = 100=#878700
palette = 101=#87875f
palette = 102=#878787
palette = 103=#8787af
palette = 104=#8787d7
palette = 105=#8787ff
palette = 106=#87af00
palette = 107=#87af5f
palette = 108=#87af87
palette = 109=#87afaf
palette = 110=#87afd7
palette = 111=#87afff
palette = 112=#87d700
palette = 113=#87d75f
palette = 114=#87d787
palette = 115=#87d7af
palette = 116=#87d7d7
palette = 117=#87d7ff
palette = 118=#87ff00
palette = 119=#87ff5f
palette = 120=#87ff87
palette = 121=#87ffaf
palette = 122=#87ffd7
palette = 123=#87ffff
palette = 124=#af0000
palette = 125=#af005f
palette = 126=#af0087
palette = 127=#af00af
palette = 128=#af00d7
palette = 129=#af00ff
palette = 130=#af5f00
palette = 131=#af5f5f
palette = 132=#af5f87
palette = 133=#af5faf
palette = 134=#af5fd7
palette = 135=#af5fff
palette = 136=#af8700
palette = 137=#af875f
palette = 138=#af8787
palette = 139=#af87af
palette = 140=#af87d7
palette = 141=#af87ff
palette = 142=#afaf00
palette = 143=#afaf5f
palette = 144=#afaf87
palette = 145=#afafaf
palette = 146=#afafd7
palette = 147=#afafff
palette = 148=#afd700
palette = 149=#afd75f
palette = 150=#afd787
palette = 151=#afd7af
palette = 152=#afd7d7
palette = 153=#afd7ff
palette = 154=#afff00
palette = 155=#afff5f
palette = 156=#afff87
palette = 157=#afffaf
palette = 158=#afffd7
palette = 159=#afffff
palette = 160=#d70000
palette = 161=#d7005f
palette = 162=#d70087
palette = 163=#d700af
palette = 164=#d700d7
palette = 165=#d700ff
palette = 166=#d75f00
palette = 167=#d75f5f
palette = 168=#d75f87
palette = 169=#d75faf
palette = 170=#d75fd7
palette = 171=#d75fff
palette = 172=#d78700
palette = 173=#d7875f
palette = 174=#d78787
palette = 175=#d787af
palette = 176=#d787d7
palette = 177=#d787ff
palette = 178=#d7af00
palette = 179=#d7af5f
palette = 180=#d7af87
palette = 181=#d7afaf
palette = 182=#d7afd7
palette = 183=#d7afff
palette = 184=#d7d700
palette = 185=#d7d75f
palette = 186=#d7d787
palette = 187=#d7d7af
palette = 188=#d7d7d7
palette = 189=#d7d7ff
palette = 190=#d7ff00
palette = 191=#d7ff5f
palette = 192=#d7ff87
palette = 193=#d7ffaf
palette = 194=#d7ffd7
palette = 195=#d7ffff
palette = 196=#ff0000
palette = 197=#ff005f
palette = 198=#ff0087
palette = 199=#ff00af
palette = 200=#ff00d7
palette = 201=#ff00ff
palette = 202=#ff5f00
palette = 203=#ff5f5f
palette = 204=#ff5f87
palette = 205=#ff5faf
palette = 206=#ff5fd7
palette = 207=#ff5fff
palette = 208=#ff8700
palette = 209=#ff875f
palette = 210=#ff8787
palette = 211=#ff87af
palette = 212=#ff87d7
palette = 213=#ff87ff
palette = 214=#ffaf00
palette = 215=#ffaf5f
palette = 216=#ffaf87
palette = 217=#ffafaf
palette = 218=#ffafd7
palette = 219=#ffafff
palette = 220=#ffd700
palette = 221=#ffd75f
palette = 222=#ffd787
palette = 223=#ffd7af
palette = 224=#ffd7d7
palette = 225=#ffd7ff
palette = 226=#ffff00
palette = 227=#ffff5f
palette = 228=#ffff87
palette = 229=#ffffaf
palette = 230=#ffffd7
palette = 231=#ffffff
palette = 232=#080808
palette = 233=#121212
palette = 234=#1c1c1c
palette = 235=#262626
palette = 236=#303030
palette = 237=#3a3a3a
palette = 238=#444444
palette = 239=#4e4e4e
palette = 240=#585858
palette = 241=#626262
palette = 242=#6c6c6c
palette = 243=#767676
palette = 244=#808080
palette = 245=#8a8a8a
palette = 246=#949494
palette = 247=#9e9e9e
palette = 248=#a8a8a8
palette = 249=#b2b2b2
palette = 250=#bcbcbc
palette = 251=#c6c6c6
palette = 252=#d0d0d0
palette = 253=#dadada
palette = 254=#e4e4e4
palette = 255=#eeeeee
# The color of the cursor. If this is not set, a default will be chosen.
cursor-color =
# The opacity level (opposite of transparency) of the cursor. A value of 1
# is fully opaque and a value of 0 is fully transparent. A value less than 0
# or greater than 1 will be clamped to the nearest valid value. Note that a
# sufficiently small value such as 0.3 may be effectively invisible and may
# make it difficult to find the cursor.
cursor-opacity = 1
# The style of the cursor. This sets the default style. A running programn can
# still request an explicit cursor style using escape sequences (such as `CSI
# q`). Shell configurations will often request specific cursor styles.
#
# Note that shell integration will automatically set the cursor to a bar at
# a prompt, regardless of this configuration. You can disable that behavior
# by specifying `shell-integration-features = no-cursor` or disabling shell
# integration entirely.
cursor-style = block
# Sets the default blinking state of the cursor. This is just the default
# state; running programs may override the cursor style using `DECSCUSR` (`CSI
# q`).
#
# If this is not set, the cursor blinks by default. Note that this is not the
# same as a "true" value, as noted below.
#
# If this is not set at all (`null`), then Ghostty will respect DEC Mode 12
# (AT&T cursor blink) as an alternate approach to turning blinking on/off. If
# this is set to any value other than null, DEC mode 12 will be ignored but
# `DECSCUSR` will still be respected.
cursor-style-blink =
# The color of the text under the cursor. If this is not set, a default will
# be chosen.
cursor-text =
# Enables the ability to move the cursor at prompts by using `alt+click` on
# Linux and `option+click` on macOS.
#
# This feature requires shell integration (specifically prompt marking
# via `OSC 133`) and only works in primary screen mode. Alternate screen
# applications like vim usually have their own version of this feature but
# this configuration doesn't control that.
#
# It should be noted that this feature works by translating your desired
# position into a series of synthetic arrow key movements, so some weird
# behavior around edge cases are to be expected. This is unfortunately how
# this feature is implemented across terminals because there isn't any other
# way to implement it.
cursor-click-to-move = true
# Hide the mouse immediately when typing. The mouse becomes visible again when
# the mouse is used. The mouse is only hidden if the mouse cursor is over the
# active terminal surface.
mouse-hide-while-typing = false
# Determines whether running programs can detect the shift key pressed with a
# mouse click. Typically, the shift key is used to extend mouse selection.
#
# The default value of `false` means that the shift key is not sent with
# the mouse protocol and will extend the selection. This value can be
# conditionally overridden by the running program with the `XTSHIFTESCAPE`
# sequence.
#
# The value `true` means that the shift key is sent with the mouse protocol
# but the running program can override this behavior with `XTSHIFTESCAPE`.
#
# The value `never` is the same as `false` but the running program cannot
# override this behavior with `XTSHIFTESCAPE`. The value `always` is the
# same as `true` but the running program cannot override this behavior with
# `XTSHIFTESCAPE`.
#
# If you always want shift to extend mouse selection even if the program
# requests otherwise, set this to `never`.
mouse-shift-capture = false
# Multiplier for scrolling distance with the mouse wheel. Any value less
# than 0.01 or greater than 10,000 will be clamped to the nearest valid
# value.
#
# A value of "1" (default) scrolls te default amount. A value of "2" scrolls
# double the default amount. A value of "0.5" scrolls half the default amount.
# Et cetera.
mouse-scroll-multiplier = 1
# The opacity level (opposite of transparency) of the background. A value of
# 1 is fully opaque and a value of 0 is fully transparent. A value less than 0
# or greater than 1 will be clamped to the nearest valid value.
#
# Changing this value at runtime (and reloading config) will only affect new
# windows, tabs, and splits.
background-opacity = 1
# A positive value enables blurring of the background when background-opacity
# is less than 1. The value is the blur radius to apply. A value of 20
# is reasonable for a good looking blur. Higher values will cause strange
# rendering issues as well as performance issues.
#
# This is only supported on macOS.
background-blur-radius = 0
# The opacity level (opposite of transparency) of an unfocused split.
# Unfocused splits by default are slightly faded out to make it easier to see
# which split is focused. To disable this feature, set this value to 1.
#
# A value of 1 is fully opaque and a value of 0 is fully transparent. Because
# "0" is not useful (it makes the window look very weird), the minimum value
# is 0.15. This value still looks weird but you can at least see what's going
# on. A value outside of the range 0.15 to 1 will be clamped to the nearest
# valid value.
unfocused-split-opacity = 0.7
unfocused-split-fill =
# The command to run, usually a shell. If this is not an absolute path, it'll
# be looked up in the `PATH`. If this is not set, a default will be looked up
# from your system. The rules for the default lookup are:
#
# * `SHELL` environment variable
#
# * `passwd` entry (user information)
#
# This can contain additional arguments to run the command with. If additional
# arguments are provided, the command will be executed using `/bin/sh -c`.
# Ghostty does not do any shell command parsing.
#
# If you're using the `ghostty` CLI there is also a shortcut to run a command
# with argumens directly: you can use the `-e` flag. For example: `ghostty -e
# fish --with --custom --args`.
command =
# If true, keep the terminal open after the command exits. Normally, the
# terminal window closes when the running command (such as a shell) exits.
# With this true, the terminal window will stay open until any keypress is
# received.
#
# This is primarily useful for scripts or debugging.
wait-after-command = false
# The number of milliseconds of runtime below which we consider a process exit
# to be abnormal. This is used to show an error message when the process exits
# too quickly.
#
# On Linux, this must be paired with a non-zero exit code. On macOS, we allow
# any exit code because of the way shell processes are launched via the login
# command.
abnormal-command-exit-runtime = 250
# Match a regular expression against the terminal text and associate clicking
# it with an action. This can be used to match URLs, file paths, etc. Actions
# can be opening using the system opener (i.e. `open` or `xdg-open`) or
# executing any arbitrary binding action.
#
# Links that are configured earlier take precedence over links that are
# configured later.
#
# A default link that matches a URL and opens it in the system opener always
# exists. This can be disabled using `link-url`.
#
# TODO: This can't currently be set!
# Enable URL matching. URLs are matched on hover with control (Linux) or
# super (macOS) pressed and open using the default system application for
# the linked URL.
#
# The URL matcher is always lowest priority of any configured links (see
# `link`). If you want to customize URL matching, use `link` and disable this.
link-url = true
# Start new windows in fullscreen. This setting applies to new windows and
# does not apply to tabs, splits, etc. However, this setting will apply to all
# new windows, not just the first one.
#
# On macOS, this always creates the window in native fullscreen. Non-native
# fullscreen is not currently supported with this setting.
fullscreen = false
# The title Ghostty will use for the window. This will force the title of the
# window to be this title at all times and Ghostty will ignore any set title
# escape sequences programs (such as Neovim) may send.
title =
# The setting that will change the application class value.
#
# This controls the class field of the `WM_CLASS` X11 property (when running
# under X11), and the Wayland application ID (when running under Wayland).
#
# Note that changing this value between invocations will create new, separate
# instances, of Ghostty when running with `gtk-single-instance=true`. See that
# option for more details.
#
# The class name must follow the requirements defined [in the GTK
# documentation](https://docs.gtk.org/gio/type_func.Application.id_is_valid.html).
#
# The default is `com.mitchellh.ghostty`.
#
# This only affects GTK builds.
class =
# This controls the instance name field of the `WM_CLASS` X11 property when
# running under X11. It has no effect otherwise.
#
# The default is `ghostty`.
#
# This only affects GTK builds.
x11-instance-name =
# The directory to change to after starting the command.
#
# This setting is secondary to the `window-inherit-working-directory`
# setting. If a previous Ghostty terminal exists in the same process,
# `window-inherit-working-directory` will take precedence. Otherwise, this
# setting will be used. Typically, this setting is used only for the first
# window.
#
# The default is `inherit` except in special scenarios listed next. On macOS,
# if Ghostty can detect it is launched from launchd (double-clicked) or
# `open`, then it defaults to `home`. On Linux with GTK, if Ghostty can detect
# it was launched from a desktop launcher, then it defaults to `home`.
#
# The value of this must be an absolute value or one of the special values
# below:
#
# * `home` - The home directory of the executing user.
#
# * `inherit` - The working directory of the launching process.
working-directory =
# Key bindings. The format is `trigger=action`. Duplicate triggers will
# overwrite previously set values.
#
# Trigger: `+`-separated list of keys and modifiers. Example: `ctrl+a`,
# `ctrl+shift+b`, `up`. Some notes:
#
# * modifiers cannot repeat, `ctrl+ctrl+a` is invalid.
#
# * modifiers and keys can be in any order, `shift+a+ctrl` is *weird*,
# but valid.
#
# * only a single key input is allowed, `ctrl+a+b` is invalid.
#
# Valid modifiers are `shift`, `ctrl` (alias: `control`), `alt` (alias: `opt`,
# `option`), and `super` (alias: `cmd`, `command`). You may use the modifier
# or the alias. When debugging keybinds, the non-aliased modifier will always
# be used in output.
#
# Action is the action to take when the trigger is satisfied. It takes the
# format `action` or `action:param`. The latter form is only valid if the
# action requires a parameter.
#
# * `ignore` - Do nothing, ignore the key input. This can be used to
# black hole certain inputs to have no effect.
#
# * `unbind` - Remove the binding. This makes it so the previous action
# is removed, and the key will be sent through to the child command
# if it is printable.
#
# * `csi:text` - Send a CSI sequence. i.e. `csi:A` sends "cursor up".
#
# * `esc:text` - Send an escape sequence. i.e. `esc:d` deletes to the
# end of the word to the right.
#
# * `text:text` - Send a string. Uses Zig string literal syntax.
# i.e. `text:\x15` sends Ctrl-U.
#
# Some notes for the action:
#
# * The parameter is taken as-is after the `:`. Double quotes or
# other mechanisms are included and NOT parsed. If you want to
# send a string value that includes spaces, wrap the entire
# trigger/action in double quotes. Example: `--keybind="up=csi:A B"`
#
# There are some additional special values that can be specified for
# keybind:
#
# * `keybind=clear` will clear all set keybindings. Warning: this
# removes ALL keybindings up to this point, including the default
# keybindings.
keybind = alt+five=goto_tab:5
keybind = ctrl+shift+q=quit
keybind = ctrl+alt+down=goto_split:bottom
keybind = ctrl+shift+page_down=jump_to_prompt:1
keybind = ctrl+alt+left=goto_split:left
keybind = alt+seven=goto_tab:7
keybind = ctrl+shift+w=close_surface
keybind = alt+f4=close_window
keybind = ctrl+shift+e=new_split:down
keybind = alt+three=goto_tab:3
keybind = ctrl+shift+v=paste_from_clipboard
keybind = super+ctrl+left_bracket=goto_split:previous
keybind = ctrl+page_down=next_tab
keybind = ctrl+alt+up=goto_split:top
keybind = super+ctrl+shift+up=resize_split:up,10
keybind = super+ctrl+shift+equal=equalize_splits
keybind = shift+page_up=scroll_page_up
keybind = ctrl+shift+page_up=jump_to_prompt:-1
keybind = alt+one=goto_tab:1
keybind = alt+six=goto_tab:6
keybind = ctrl+plus=increase_font_size:1
keybind = ctrl+minus=decrease_font_size:1
keybind = ctrl+shift+comma=reload_config
keybind = shift+home=scroll_to_top
keybind = alt+four=goto_tab:4
keybind = alt+eight=goto_tab:8
keybind = shift+end=scroll_to_bottom
keybind = ctrl+shift+c=copy_to_clipboard
keybind = ctrl+shift+n=new_window
keybind = ctrl+shift+j=write_scrollback_file
keybind = ctrl+shift+left=previous_tab
keybind = super+ctrl+shift+down=resize_split:down,10
keybind = ctrl+shift+a=select_all
keybind = ctrl+page_up=previous_tab
keybind = ctrl+zero=reset_font_size
keybind = ctrl+shift+o=new_split:right
keybind = shift+insert=paste_from_selection
keybind = alt+nine=goto_tab:9
keybind = ctrl+shift+t=new_tab
keybind = ctrl+shift+enter=toggle_split_zoom
keybind = ctrl+comma=open_config
keybind = super+ctrl+shift+left=resize_split:left,10
keybind = ctrl+equal=increase_font_size:1
keybind = super+ctrl+right_bracket=goto_split:next
keybind = super+ctrl+shift+right=resize_split:right,10
keybind = ctrl+alt+right=goto_split:right
keybind = shift+page_down=scroll_page_down
keybind = ctrl+shift+i=inspector:toggle
keybind = alt+two=goto_tab:2
keybind = ctrl+shift+right=next_tab
keybind = ctrl+enter=toggle_fullscreen
# Window padding. This applies padding between the terminal cells and the
# window border. The `x` option applies to the left and right padding and the
# `y` option is top and bottom. The value is in points, meaning that it will
# be scaled appropriately for screen DPI.
#
# If this value is set too large, the screen will render nothing, because the
# grid will be completely squished by the padding. It is up to you as the user
# to pick a reasonable value. If you pick an unreasonable value, a warning
# will appear in the logs.
#
# Changing these values will only apply after restart.
window-padding-x = 2
window-padding-y = 2
# The viewport dimensions are usually not perfectly divisible by the cell
# size. In this case, some extra padding on the end of a column and the bottom
# of the final row may exist. If this is `true`, then this extra padding
# is automatically balanced between all four edges to minimize imbalance on
# one side. If this is `false`, the top left grid cell will always hug the
# edge with zero padding other than what may be specified with the other
# `window-padding` options.
#
# If other `window-padding` fields are set and this is `true`, this will still
# apply. The other padding is applied first and may affect how many grid cells
# actually exist, and this is applied last in order to balance the padding
# given a certain viewport size and grid cell size.
window-padding-balance = false
# If true, new windows and tabs will inherit the working directory of the
# previously focused window. If no window was previously focused, the default
# working directory will be used (the `working-directory` option).
window-inherit-working-directory = true
# If true, new windows and tabs will inherit the font size of the previously
# focused window. If no window was previously focused, the default font size
# will be used. If this is false, the default font size specified in the
# configuration `font-size` will be used.
window-inherit-font-size = true
# If false, windows won't have native decorations, i.e. titlebar and
# borders.
window-decoration = true
# The theme to use for the windows. Valid values:
#
# * `auto` - Determine the theme based on the configured terminal
# background color.
# * `system` - Use the system theme.
# * `light` - Use the light theme regardless of system theme.
# * `dark` - Use the dark theme regardless of system theme.
#
# On macOS, if `macos-titlebar-tabs` is set, the window theme will be
# automatically set based on the luminosity of the terminal background color.
# This only applies to terminal windows. This setting will still apply to
# non-terminal windows within Ghostty.
#
# This is currently only supported on macOS and Linux.
window-theme = auto
# The colorspace to use for the terminal window. The default is `srgb` but
# this can also be set to `display-p3` to use the Display P3 colorspace.
#
# Changing this value at runtime will only affect new windows.
#
# This setting is only supported on macOS.
window-colorspace = srgb
# The initial window size. This size is in terminal grid cells by default.
#
# We don't currently support specifying a size in pixels but a future change
# can enable that. If this isn't specified, the app runtime will determine
# some default size.
#
# Note that the window manager may put limits on the size or override the
# size. For example, a tiling window manager may force the window to be a
# certain size to fit within the grid. There is nothing Ghostty will do about
# this, but it will make an effort.
#
# This will not affect new tabs, splits, or other nested terminal elements.
# This only affects the initial window size of any new window. Changing this
# value will not affect the size of the window after it has been created. This
# is only used for the initial size.
#
# BUG: On Linux with GTK, the calculated window size will not properly take
# into account window decorations. As a result, the grid dimensions will not
# exactly match this configuration. If window decorations are disabled (see
# window-decorations), then this will work as expected.
#
# Windows smaller than 10 wide by 4 high are not allowed.
window-height = 0
window-width = 0
# Whether to enable saving and restoring window state. Window state includes
# their position, size, tabs, splits, etc. Some window state requires shell
# integration, such as preserving working directories. See `shell-integration`
# for more information.
#
# There are three valid values for this configuration:
#
# * `default` will use the default system behavior. On macOS, this
# will only save state if the application is forcibly terminated
# or if it is configured systemwide via Settings.app.
#
# * `never` will never save window state.
#
# * `always` will always save window state whenever Ghostty is exited.
#
# If you change this value to `never` while Ghostty is not running, the next
# Ghostty launch will NOT restore the window state.
#
# If you change this value to `default` while Ghostty is not running and the
# previous exit saved state, the next Ghostty launch will still restore the
# window state. This is because Ghostty cannot know if the previous exit was
# due to a forced save or not (macOS doesn't provide this information).
#
# If you change this value so that window state is saved while Ghostty is not
# running, the previous window state will not be restored because Ghostty only
# saves state on exit if this is enabled.
#
# The default value is `default`.
#
# This is currently only supported on macOS. This has no effect on Linux.
window-save-state = default
# Resize the window in discrete increments of the focused surface's cell size.
# If this is disabled, surfaces are resized in pixel increments. Currently
# only supported on macOS.
window-step-resize = false
# The position where new tabs are created. Valid values:
#
# * `current` - Insert the new tab after the currently focused tab,
# or at the end if there are no focused tabs.
#
# * `end` - Insert the new tab at the end of the tab list.
#
# This configuration currently only works with GTK.
window-new-tab-position = current
# When enabled, the full GTK titlebar is displayed instead of your window
# manager's simple titlebar. The behavior of this option will vary with your
# window manager.
#
# This option does nothing when `window-decoration` is false or when running
# under macOS.
#
# Changing this value at runtime and reloading the configuration will only
# affect new windows.
gtk-titlebar = true
# Whether to allow programs running in the terminal to read/write to the
# system clipboard (OSC 52, for googling). The default is to allow clipboard
# reading after prompting the user and allow writing unconditionally.
clipboard-read = ask
clipboard-write = allow
# Trims trailing whitespace on data that is copied to the clipboard. This does
# not affect data sent to the clipboard via `clipboard-write`.
clipboard-trim-trailing-spaces = true
# Require confirmation before pasting text that appears unsafe. This helps
# prevent a "copy/paste attack" where a user may accidentally execute unsafe
# commands by pasting text with newlines.
clipboard-paste-protection = true
# If true, bracketed pastes will be considered safe. By default, bracketed
# pastes are considered safe. "Bracketed" pastes are pastes while the running
# program has bracketed paste mode enabled (a setting set by the running
# program, not the terminal emulator).
clipboard-paste-bracketed-safe = true
# The total amount of bytes that can be used for image data (i.e. the Kitty
# image protocol) per terminal scren. The maximum value is 4,294,967,295
# (4GiB). The default is 320MB. If this is set to zero, then all image
# protocols will be disabled.
#
# This value is separate for primary and alternate screens so the effective
# limit per surface is double.
image-storage-limit = 320000000
# Whether to automatically copy selected text to the clipboard. `true` will
# only copy on systems that support a selection clipboard.
#
# The value `clipboard` will copy to the system clipboard, making this work on
# macOS. Note that middle-click will also paste from the system clipboard in