3#include "di/reflect/prelude.h"
4#include "di/util/bitwise_enum.h"
5#include "dius/sync_file.h"
30DI_DEFINE_ENUM_BITWISE_OPERATIONS(
Feature)
34 return di::make_enumerators<
"Feature">(
35 di::enumerator<
"None",
None>,
37 "Allow using DEC private mode 2026 to synchronize screen updates to prevent tearing">,
39 "Supports using kitty text sizing protocol (OSC 66) to specify explicit widths">,
41 "Supports using kitty text sizing protocol (OSC 66) to specify multi-height cells">,
43 "Supports light/dark mode detection via DEC private mode 2031">,
45 "Supported in-band size reports via DEC private mode 2048">,
47 "Reports some support for grapheme clustering DEC private mode 2038">,
48 di::enumerator<
"KittyKeyProtocol",
KittyKeyProtocol,
"Supports kitty key reporting protocol">,
49 di::enumerator<
"Undercurl",
Undercurl,
"Supports undercurl (fancy underline) and underline colors">,
52 "Grapheme clustering behavior matches the kitty specification on extreme edge cases">,
55 "Supports using kitty text sizing protocl (OSC 66) to specifiy fractional scaling and cell alignment">,
56 di::enumerator<
"Clipboard",
Clipboard,
"Supports settings the clipboard via OSC 52">,
57 di::enumerator<
"DynamicPalette",
DynamicPalette,
"Supports setting the color palette dynamically via OSC 4">,
59 "Clearing the screen will set the background color of cells">,
61 "Suppports the seamless navigation protocol (OSC 8671)">,
63 "Supports setting the color palette via kitty color protocol (OSC 21)">);
72auto detect_features(dius::SyncFile& terminal) -> di::Result<FeatureResult>;
Implementation of clipboard handling for ttx.
Definition clipboard.h:41
ThemeMode
Theme mode (light or dark).
Definition palette.h:10
@ Dark
Definition palette.h:12
Definition clipboard.h:10
@ None
Definition direction.h:8
constexpr auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< ClipboardMode >)
Definition clipboard.h:21
Feature
Definition features.h:9
@ KittyKeyProtocol
Supports kitty key protocol.
Definition features.h:17
@ Undercurl
Supports undercurl (fancy underline) and underline colors.
Definition features.h:18
@ TextSizingPresentation
Supports text-sizing with scale=1 but fractional scale and alignment.
Definition features.h:21
@ GraphemeClusteringMode
Supports grapheme clustering mode via mode 2027.
Definition features.h:16
@ TextSizingWidth
Supports using the text sizing protocol to specify explicit text width.
Definition features.h:12
@ None
Definition features.h:10
@ BackgroundCharacterErase
Clearing the screen sets the current SGR background color.
Definition features.h:24
@ InBandSizeReports
Supports in-band size reports via mode 2048.
Definition features.h:15
@ DynamicPalette
Supports changing the color palette dynamically.
Definition features.h:23
@ ThemeDetection
Supports light/dark mode detection via mode 2031.
Definition features.h:14
@ SeamlessNavigation
Supports seamless navigation protocol (OSC 8671).
Definition features.h:25
@ BasicGraphemeClustering
Supports grapheme clustering, but may not match the kitty spec.
Definition features.h:19
@ FullGraphemeClustering
Grapheme clustering behavior matches kitty spec.
Definition features.h:20
@ All
Definition features.h:27
@ DynamicPaletteKitty
Supports kitty color protocol (OSC 21).
Definition features.h:26
@ SyncronizedOutput
Allow using DEC mode 2026 to synchronize screen updates.
Definition features.h:11
@ TextSizingFull
Supports using the text sizing protocol to multi-height cells.
Definition features.h:13
auto detect_features(dius::SyncFile &terminal) -> di::Result< FeatureResult >
Definition features.cpp:157
terminal::Palette palette
Definition features.h:68
terminal::ThemeMode theme_mode
Definition features.h:69
Feature features
Definition features.h:67