4361 Commits

Author SHA1 Message Date
Thorsten Ball
3ab96f266b gtk: add missing space in close dialog and add newline
See before/after screenshots. Before, without the space, it's wrong. I
fixed that and added a newline, since a big paragraph like that looks a
bit wrong in a dialog popup.
2023-08-01 07:03:57 +02:00
Mitchell Hashimoto
b459c6e002 Merge pull request #214 from mitchellh/mrn/gtk-default-keybinding-split
config: change default keybind for goto-split on non-Darwin
2023-07-23 15:59:45 -07:00
Thorsten Ball
920b90ba1a config: change default keybind for goto-split on non-Darwin
Feel free to ignore or close this, because this is personal and if I
could figure out the syntax, I'm sure I could overwrite the keybindings
in the config myself.

But here's my case: `Ctrl+[` sends escape and I use that instead of
`Esc` because it's easier to reach (capslock is remapped to `ctrl`, so
`ctrl+[` is homerow only).

Kitty uses it's own "kittymod" combo for a lot of keybindings and for
the equivalent of these two, it uses `Ctrl+shift`. That's already taken
by other keybindings, so I added `.super` here.

Again: feel free to ignore. Personal preference. If you close this PR,
I'll have to tweak my config on Linux.
2023-07-23 14:02:39 +02:00
Thorsten Ball
a01a3fdcde gtk: remove thin, white border
The GTK app has a really thin, white border around the terminal
contents. It's really distracting when in fullscreen.

At first I thought it's the window that has a border, but turns out
that's not it. It's the GTK Notebook widget. Luckily for us, GTK4 has a
single API call that allows us to turn off the border.
2023-07-23 13:05:02 +02:00
Mitchell Hashimoto
e45c8d97d7 CSI for SGR only if there are no intermediates
Fixes #210

We were previously taking any `CSI <symbol> <data> m` as SGR. But SGR is
only if "symbol" is empty. There are other forms of `CSI m` that set the
intermediate symbol to `?` or `>` and we don't implement those. We
shouldn't treat that as a SGR attribute either.
2023-07-20 19:23:01 -07:00
Thorsten Ball
5472d03832 locale: remove default value for local dev env
I commented this out to test something locally and it compiles & runs
fine on macOS with Xcode. Looks like it's not needed anymore.
2023-07-19 06:46:01 +02:00
Thorsten Ball
4b48d42a07 locale: set LANG to the fallback value if we have invalid locale
See #201 for more information.

Problem is that while we fall back to a default value to pass to
`setlocale`, we don't set a `LANG` and instead reset it to `""`.

What this does here is it changes the resetting to `""` and instead sets
it to the default value.
2023-07-19 06:44:35 +02:00
Mitchell Hashimoto
4137c6cf69 font/shaper: do not break on merged emoji if cursor is directly on it 2023-07-18 16:38:02 -07:00
Mitchell Hashimoto
4b062dc45c font/shaper: text runs should split around block cursors
Fixes #206
2023-07-18 16:20:30 -07:00
Mitchell Hashimoto
6ae3c4b20e Merge pull request #205 from mitchellh/locale2
reset LANG env var if we set it and it is invalid
2023-07-18 10:55:06 -07:00
Mitchell Hashimoto
4176c6bdbf reset LANG env var if we set it and it is invalid
This was breaking downstream programs, see #201
2023-07-18 10:49:43 -07:00
Mitchell Hashimoto
3d48432daf renderer: change padding to integers
Screen size is always an integer, it makes sense for padding to also be
rounded to some integer.
2023-07-18 10:44:33 -07:00
Thorsten Ball
ead997b5ec Fix blurry fonts by flooring padding of surface
This fixes #99 for me.

Without this fix I end up with paddings of `3.333333` because my DPI is
`125.0` on Linux. If I set it to `144.0` manually so that the `/ 72`
gives me a clean `2.0`, the blurry fonts are gone.

I do think the calculation here is correct (even though I'm not sure
whether we should use 72? Why not 96? Or another system value?), so
let's use `std.math.floor` to get us to a "clean" padding of `3.0`.

That also solves blurry fonts for me.
2023-07-18 07:02:33 +02:00
Thorsten Ball
de5780a771 gtk: change default window size to 1000x600
The previous 200x200 looks ... weird :) But it was also quite unhandy
because I constantly have to resize new builds when I want to check
something.
2023-07-17 06:54:47 +02:00
Mitchell Hashimoto
0849aa8f20 validate locale prior to setting, fallback to en_US.UTF-8
Fixes #201

I don't fully understand locales, but it appears that the locale
returned from NSLocale can be "valid" in general but invalid according
to libc's locale API. If you attempt to `setlocale` with this bad
locale, it defaults everything to "C", which ends up breaking a lot of
things.

This commit validates the locale, and if it is invalid, we default to
"en_US.UTF-8" so things tend to work. This behavior can be overridden
using standard environment variables (LANG, LC_ALL, etc.).

This also doesn't touch env vars so further subprocesses from the shell
see original locale env vars.
2023-07-11 11:50:12 -07:00
Mitchell Hashimoto
bf25bf0a6a move a bunch of files to src/os 2023-07-10 16:48:22 -07:00
Mitchell Hashimoto
9300404603 font: block cursor was not taking full cell width 2023-07-10 11:45:35 -07:00
Mitchell Hashimoto
ea268bae5e renderer: do not blink explicit steady cursor styles 2023-07-10 11:27:37 -07:00
Mitchell Hashimoto
1028d517e4 do not write scrollback file for alternate screens 2023-07-09 13:03:29 -07:00
Mitchell Hashimoto
5faafbbfa5 write_scrollback_file binding 2023-07-09 12:28:48 -07:00
Mitchell Hashimoto
9a0d131b5b move TempDir to src/os and use the real tmpDir 2023-07-09 12:14:05 -07:00
Mitchell Hashimoto
26e17de777 add os.tmpDir to get the recommended temp dir base path 2023-07-09 11:58:04 -07:00
Mitchell Hashimoto
791e1a84af terminal: don't export plainString, its only for testing 2023-07-09 11:56:19 -07:00
Mitchell Hashimoto
a890cc3a5b terminal: add screen.dumpString 2023-07-09 11:52:37 -07:00
Mitchell Hashimoto
de66d4925a terminal: rename scroll "delta/delta_no_grow" to screen/viewport 2023-07-08 13:47:16 -07:00
Mitchell Hashimoto
1a94f6ba7d terminal: do not scroll viewport if new lines are added while scrolled 2023-07-08 13:42:00 -07:00
Mitchell Hashimoto
13315471d7 renderer: double line widths for sprite fonts when font-thicken is true
Fixes #193
2023-07-07 09:08:46 -07:00
Mitchell Hashimoto
247638c2da config: support enum cloning 2023-07-06 18:13:26 -07:00
Mitchell Hashimoto
02d0619f87 change "auto" to "detect" for shell integration 2023-07-06 18:05:01 -07:00
Mitchell Hashimoto
8239f09d9d allow configuring shell integration injection 2023-07-06 18:04:12 -07:00
Mitchell Hashimoto
18e43ddb3f config: support parsing enums 2023-07-06 17:56:19 -07:00
Mitchell Hashimoto
80e2cd4e78 zsh integration 2023-07-06 17:46:54 -07:00
Mitchell Hashimoto
4cdad44119 zsh files starting 2023-07-06 16:42:01 -07:00
Mitchell Hashimoto
efd7cb35b8 fish: pwd reporting 2023-07-06 16:15:30 -07:00
Mitchell Hashimoto
ad62e3ac1b fish shell integration 2023-07-06 16:10:30 -07:00
Mitchell Hashimoto
ae206b2f89 termio: fish shell integration injection 2023-07-06 14:14:55 -07:00
Mitchell Hashimoto
59fb3a55e3 termio/exec: refactor resources dir lookup to prep for shell integ 2023-07-06 13:42:06 -07:00
Mitchell Hashimoto
848943770a start shell-integration folder, copy into zig-out 2023-07-06 13:26:28 -07:00
Mitchell Hashimoto
b3b19997ea terminal: scroll to row always tries to get it to the top 2023-07-06 10:31:47 -07:00
Mitchell Hashimoto
9f86c48fd8 keybinding jump_to_prompt for semantic prompts 2023-07-06 10:30:29 -07:00
Mitchell Hashimoto
b542f7e3c4 terminal: jump to prompt core methods 2023-07-06 10:16:07 -07:00
Mitchell Hashimoto
2f935d2c5c clear_screen uses FF (0x0C) if cursor is at prompt 2023-07-05 14:16:34 -07:00
Mitchell Hashimoto
2ac9fec908 Merge pull request #186 from mitchellh/clear-screen
clear_screen keybinding works even when not at shell prompt
2023-07-05 14:11:12 -07:00
Mitchell Hashimoto
738c4dff4c clear_screen keybinding works even when not at shell prompt
Instead of sending formfeed (0x0C), clear_screen actually does a
terminal emulator level clear instead. This MOSTLY matches the behavior
of iTerm and Terminal.app, with some differences:

  1. I do not clear _below_ the cursor. I feel like the use case for
     this feature is primarily to clear above the cursor. Happy to be
     wrong here but I want it proven to me!

  2. I do not clear in alternate screen mode. Clearing alt screens
     breaks rendering in Vim, less, etc. and it feels like the wrong
     behavior.
2023-07-05 14:01:01 -07:00
Mitchell Hashimoto
45ac9b5d4c font-feature config to enable/disable OpenType Font Features 2023-07-05 13:12:30 -07:00
Mitchell Hashimoto
853f15ef19 bar cursor was short by a couple pixels 2023-07-04 13:12:21 -07:00
Mitchell Hashimoto
9a079bb5b9 background-blur-radius for macOS 2023-07-03 20:43:53 -07:00
Mitchell Hashimoto
d25568ffdb apprt/gtk: honor background opacity 2023-07-03 20:21:16 -07:00
Mitchell Hashimoto
55313fcbd5 opengl: support background opacity 2023-07-03 19:51:11 -07:00
Mitchell Hashimoto
7896f99f2f config: clarify reload 2023-07-03 19:45:36 -07:00