Following up on #1145, this changes middle-click behavior on MacOS to
always paste from the system clipboard. This does not alter any of the
selection behavior, i.e. default behavior is to allow paste, but you
still need to manually copy. MacOS users still need to enable
"copy-on-select = clipboard" for that respective functionality.
From #1132, our resources dir is now someting like `/usr/share/ghostty`,
but GTK icons always go into `/usr/share/icons`. This does a basename on
the resources dir to set the correct directory.
Fixes#1146
I can't remember why we did this before. The comment in question makes
sense if we were trying to set cur to infinity but doesn't make sense to
me why we'd change max. Removing this doesn't seem to cause any issues
so lets give it a shot.
Installing resources directly under ${prefix}/share causes conflicts
with other packages. This will become more problematic whenever Ghostty
is opened and becomes packaged in distributions.
Instead, install all resources under a "ghostty" subdirectory (i.e.
${prefix}/share/ghostty). This includes themes, shell integration, and
terminfo files.
Only "/usr/share" style paths use the "ghostty" subdirectory. On macOS,
Ghostty is already isolated within its app bundle, and if
$GHOSTTY_RESOURCES_DIR is set then we assume that points to the actual
resources dir (without needing to append "ghostty" to it).
Commit 5e473ebd ("terminfo: add additional entries, fix smkx/rmkx")
added entries `xr` and `rv`, but without proper escaping of the
backslashes. This commit adds the extras. Output of `infocmp` now
matches foot, kitty, et al.
Fixes#1047
This resets the IME state only if we were previously in a composing
state. I did not realize that IME state also included non-composing
state that we want to preserve, such as the next quotation direction
in the case of chinese. i.e. `“` vs `”`.
I'm not fully sure that this is the right logic, but previous pre-edit
states such as in Japanese appear to still work and this fixes Chinese
quotation marks.
This adds Powerline rendering for the trapezoid characters (E0D2 and
E0D4).
This is the last of the Powerline additions for now. These are the
shapes that 1) render the most egregiously with stock fonts (off-center,
bleeding background, visible gaps), and 2) are simple enough to be
rendered without resorting to more complex measures like embedding SVG.
CLI args are stored in the configuration `_inputs` field for replaying
on configuration reload. When entering `parseManuallyHook`, we consume
all args, preventing storage for replays. Store the args when parsing
manually to allow replay of configuration.
This returns an error from the renderer implementation. This error just
crashes Ghostty currently with a stack trace. We can handle the error
later but for now it makes it a lot more obvious why certain error
scenarios happen.
[xdg-terminal-exec](https://github.com/Vladimir-csp/xdg-terminal-exec)
is a proposal to allow users to define a "default" terminal to use when
launching applications which have `Terminal=true` in their desktop file.
Users can symlink their terminal of choice to `xdg-terminal-exec`, which
is the first option used in the GIO launch options, and is gaining
traction elsewhere.
When launched as `xdg-terminal-exec`, ghostty must parse any args as the
command. Add a special case using the same logic as the '-e' flag to
enable ghostty to be launched in this manner.
Fixes: https://github.com/mitchellh/ghostty/issues/658
Fixes#1052
This implements a `close_all_windows` binding in the core and implements
it for macOS specifically. This will ask for close confirmation if any
surface in any of the windows requires confirmation.
This is bound by default to option+shift+command+w to match Safari. The
binding is generall option+command+w but users may expect this to also
mean "Close All Other Tabs" which is the changed behavior if any tabs
are present in a standard macOS application. So I chose to follow Safari
instead.
This doesn't implement this feature for GTK, that's left as an exercise
for a contributor.
This allows bindings with `tab` to work properly on Linux. The issue is
that in the key translation, we weren't mapping this and thought it was
invalid IME input so we were ignoring it.
This adds the Powerline glyphs to the exemptions from the PUA
constraints put in as a part of #1110.
While Powerline is considered to part of the Nerd Font group, the
constraint behavior seems to cause issues with some setups - e.g.
powerlevel10k prompts where characters immediately follow a Powerline
character.
Only the codes given as shapes below are included:
https://github.com/ryanoasis/powerline-extra-symbols/blob/master/img/fontforge.pngFixes#1113, where the issue can be seen.
This fixes keyToMouseShape (the new handler for mouse shape state for
key combinations, e.g. during mouse tracking override or rectangle
select) so that it respects whether or not the mouse is currently
hidden, and will not send back a shape to change the mouse to in these
situations.
Fixes#1107.
Related to #1102, #1074
Because we are now using the built-in zsh on macOS to launch the real
shell the user wants to use (see #1102 for why), this "outer zsh"
process was consuming our shell integration setup.
This commit adds flags so that this zsh instance doesn't load local
zshrc files and therefore doesn't consume our shell integration setup.
This work is mainly targeted at adding the crosshair for when
ctrl/super+alt is pressed. We also add this for when mouse tracking is
enabled so that we show the crosshair when ctrl/super+alt+shift is
pressed at the same time.
I've also changed the event processing logic here because the amount of
keys we have to process has greatly increased. Instead of processing
each individual event, we now process the modifier state.
Additionally, some refactoring has been done geared at starting to
re-work the mouse for the core surface into a something stateful. My
hope is that we can continue to unravel some of this from the core
surface so that we can process key inputs, motion events, and anything
else relevant as inputs to transitions for shape display, click
behavior, etc.
This commit now also moves the ctrlOrSuper handlers to respective parts
in the Key hierarchy, while also adding additional helpers for other
modifiers.