531 Commits

Author SHA1 Message Date
Mitchell Hashimoto
a62b76eda3 core: add binding to write screen to file 2024-07-19 20:24:51 -07:00
Mitchell Hashimoto
55657465a7 add write_selection_file
Based on the work by @gigamaax
2024-07-19 20:20:49 -07:00
Mitchell Hashimoto
10198d88dc core: make the write scrollback file logic more generic 2024-07-19 20:16:17 -07:00
Mitchell Hashimoto
e3df08039a some bikeshedding 2024-07-19 20:03:20 -07:00
karei
6fde429728 core: support opening scrollback file in default text editor 2024-07-19 19:56:00 -07:00
Mitchell Hashimoto
72c0f9dd32 adjust selection 2024-07-19 14:20:28 -07:00
Mitchell Hashimoto
72d8af5d0b rename to expand_selection 2024-07-19 14:19:21 -07:00
Cameron Dart
cdeeeb9f88 feat: keybinds for text selection on copy mode 2024-07-19 14:08:52 -07:00
Mitchell Hashimoto
2d7baaa7d7 apprt/gtk: toggle_window_decorations keybinding
Fixes #1943
2024-07-15 21:23:52 -07:00
Mitchell Hashimoto
835d622baa termio: writer => mailbox 2024-07-15 10:23:09 -07:00
Mitchell Hashimoto
001a6d2624 termio: reader => backend 2024-07-15 10:14:14 -07:00
Mitchell Hashimoto
dc6dc1d3d2 termio: remove more state 2024-07-15 10:02:02 -07:00
Mitchell Hashimoto
3625e1e58e termio: take reader as option 2024-07-15 09:55:31 -07:00
Mitchell Hashimoto
a848a53d26 termio: remove a ton of state 2024-07-14 15:10:05 -07:00
Mitchell Hashimoto
af7adedb50 termio: writer abstraction 2024-07-14 14:48:48 -07:00
Mitchell Hashimoto
31144da845 termio: Thread doesn't need to hold termio pointer 2024-07-14 10:27:58 -07:00
Mitchell Hashimoto
49c92fd0e6 termio: rename Exec to Termio throughout 2024-07-13 15:19:37 -07:00
Alexey Shekhirin
447c324c4d docs(surface): keyCallback return value is self-descriptive 2024-07-11 20:24:09 +01:00
Qwerasd
94f50be0fe Disable mouse scroll logging since it floods logs when trackpad scrolling 2024-07-08 22:16:13 -04:00
Mitchell Hashimoto
31d5384920 macOS select output is cmd+tripleclick not control anymore
Fixes #1920

Ctrl interferes with context menus.
2024-07-07 14:01:20 -07:00
Mitchell Hashimoto
a32007bfeb core: when mouse reporting, clear link state 2024-07-07 12:26:40 -07:00
Mitchell Hashimoto
c9accc52e2 core: show URL even for non-OSC8 hyperlnks 2024-07-06 21:36:28 -07:00
Mitchell Hashimoto
8ecc84b943 core: helper to get osc8 URI 2024-07-06 10:27:21 -07:00
Mitchell Hashimoto
cb790b8e39 macos: show URL on OSC8 hover 2024-07-06 10:25:12 -07:00
Mitchell Hashimoto
e8a8b189ba core: when over a link we must set the whole screen dirty on move 2024-07-05 21:40:39 -07:00
Mitchell Hashimoto
925ad5b45c renderer: match multiple lines for osc8 2024-07-05 21:40:39 -07:00
Mitchell Hashimoto
f8fe0445a5 core: clicking OSC8 links work 2024-07-05 21:40:39 -07:00
Mitchell Hashimoto
3462b0676d core: mouse shift escape applies to all buttons, not just left
Fixes #1905
2024-07-01 18:42:32 -07:00
Mitchell Hashimoto
7fbc73ad37 macos: implement ctrl+command+d for quicklook under cursor 2024-07-01 10:08:38 -07:00
Mitchell Hashimoto
57d71450ab ctrl+click is handled as right-click (with various details)
If mouse capturing is enabled, we encode ctrl+click as ctrl+left-click
and DO NOT handle it as right click.
2024-06-30 19:44:51 -07:00
Mitchell Hashimoto
32588a647f core: on right click, only create selection if point isn't in prev sel 2024-06-30 10:24:53 -07:00
Mitchell Hashimoto
a586eb9889 core: right-click press selects word 2024-06-30 10:22:34 -07:00
Mitchell Hashimoto
03f37087a5 mouse button callbacks returns bool for consumption 2024-06-30 09:42:15 -07:00
Mitchell Hashimoto
26735f0e05 apprt: convert selection info to a single struct and C API 2024-06-29 11:23:14 -05:00
Mitchell Hashimoto
80700d524d macos: add API to get selection top-left for quicklook 2024-06-29 10:42:45 -05:00
Mitchell Hashimoto
4c3fbffa4b macos: return valid selection range 2024-06-29 10:42:45 -05:00
Mitchell Hashimoto
6faeb9ba40 core: mouse pressure state and callbacks 2024-06-29 10:42:45 -05:00
Mitchell Hashimoto
c3f78bc69d core: mouse within top/bottom 1 pixel should scroll selection
Fixes #1892

We previously required a negative y or y beyond the height of the window
but in a full screen scenario neither happen, so we add a one pixel
buffer instead where we still scroll.
2024-06-28 23:45:42 -05:00
Mitchell Hashimoto
c69dc0e0e1 migrate termio.Options.LinuxCgroup to Command 2024-06-08 19:10:19 -07:00
Mitchell Hashimoto
e2772eacec Merge pull request #1846 from kdrag0n/buffered-scrollback-file
scrollback: buffer writes to scrollback file
2024-06-08 14:56:13 -07:00
Mitchell Hashimoto
fb7cbd69c0 core: consider any paste with bracketed paste closer unsafe
Thanks to: https://thejh.net/misc/website-terminal-copy-paste

If a paste has the ending sentinel value for a bracketed paste
("\x1b[201~") then the shell may start processing data faster. We now
consider this unsafe even if the `clipboard-paste-bracketed-safe`
setting is true.
2024-06-08 14:38:49 -07:00
Danny Lin
197b873dee scrollback: buffer writes to scrollback file
Screen.dumpString writes one character at a time, so buffer writes to
the scrollback file to speed it up.
2024-06-07 20:52:08 -07:00
Mitchell Hashimoto
1093ccecb4 xdg-terminal-exec invocations set title based on command
Fixes #1724

See background in #1724. The general idea is that for Ghostty
invocations via xdg-terminal-exec, we set the initial title to the
command automatically so that window managers can modify the styling.

We only do this for xdg-terminal-exec because that protocol/spec is
specifically for the scenario that the terminal is being used to launch
a command from the desktop environment.
2024-06-06 10:01:32 -07:00
Mitchell Hashimoto
dc51b8269c plumb the linux cgroup through to termio 2024-06-04 21:37:34 -07:00
Mitchell Hashimoto
cd7da9eb4b inspector: fix encoding of pty-encoded key event 2024-06-03 18:40:52 -07:00
Mitchell Hashimoto
30c1ab737c core: only hide mouse on key press events
see comment
2024-06-03 15:04:19 -07:00
Mitchell Hashimoto
ac554c74ff core: do not toggle mouse hidden on keyCallback with mods
If the mouse was hidden, we just keep it hidden.
2024-06-03 14:55:21 -07:00
Mitchell Hashimoto
14417d2592 Allow keybinding arbitrary unicode codepoints (#1814)
Fixes #1802 

This allows `keybind` configurations to map to any Unicode codepoint. This enables keybindings for which we don't have a registered keycode or for custom keyboard firmwares that may produce arbitrary text (but the Ghostty support is limited to a single codepoint).

The `keybind` syntax is unchanged. If a bound character doesn't map to a known logical key that Ghostty knows about, we map it to a Unicode codepoint. The unicode codepoint is compared against the _unshifted codepoint_ from the apprt key event. 

Note that this binding is to a single _codepoint_. We don't support arbitrary sequences of characters or multi-code point graphemes for keybindings due to the complexity in memory management that would introduce.

This also provides a good fallback for scenarios where it might make sense to educate Ghostty about a key code or fix a bug in our keyboard input system, but the unicode data is correct. In that scenario, unicode key binds should allow key binds to still work while we investigate the input issues.

Example:

```
shift+ö=text:hello
```

This now works as expected on a US hardware keyboard with the Hungarian keyboard layout.
2024-06-02 10:53:36 -07:00
cryptocode
0b6081d427 scrollback: Include active area when writing scrollback to file
Writing scrollback to file is, among other usecases, an interrim solution for searching.
Status quo is to only write history pages, and not the active area. This PR proposes that
the scrollback write includes the active area, which I think is more useful. For example,
you can then do less +G <super+shift+j> if you have long log output and then page and
reverse-search through all of it. It's a bit surprising if the active area is missing.
2024-05-29 15:19:45 +02:00
Mitchell Hashimoto
ded7c0abac Merge pull request #1760 from jcollie/notification-suppression
Rate limit desktop notifications
2024-05-26 20:50:19 -07:00