489 Commits

Author SHA1 Message Date
Mitchell Hashimoto
b0cd40d1de termio: fix windows build 2024-07-14 15:16:16 -07:00
Mitchell Hashimoto
08ed60ceec termio: ReadData is gone! 2024-07-14 15:15:22 -07:00
Mitchell Hashimoto
89d407dd6a termio: excessive cursor reset 2024-07-14 15:13:41 -07:00
Mitchell Hashimoto
6b0b840a81 termio: writer needs a mut pointer 2024-07-14 15:11:09 -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
f50c15c350 termio: ReadData doesn't need a loop 2024-07-14 09:40:53 -07:00
Mitchell Hashimoto
eec33f10e2 termio: remove more unused things 2024-07-13 19:27:17 -07:00
Mitchell Hashimoto
e30e635bed termio: move all subprocess logic to termio.Exec 2024-07-13 19:24:10 -07:00
Mitchell Hashimoto
7c23d61379 termio: rename 2024-07-13 18:50:37 -07:00
Mitchell Hashimoto
faef40b769 termio: fix up rebase 2024-07-13 15:21:50 -07:00
Mitchell Hashimoto
16f5890724 termio: delete old impl 2024-07-13 15:20:39 -07:00
Mitchell Hashimoto
b3c2479f87 termio: move subprocess out to its own file 2024-07-13 15:20:38 -07:00
Mitchell Hashimoto
2e62e3354b termio: cleanup more state 2024-07-13 15:19:39 -07:00
Mitchell Hashimoto
bfbbe1485e termio: queueWrite no longer uses EventData 2024-07-13 15:19:38 -07:00
Mitchell Hashimoto
ffaf020576 termio: move stream handler to dedicated file, remove dep on EventData 2024-07-13 15:19:38 -07:00
Mitchell Hashimoto
e51180e4a9 termio: changeConfig on reader data 2024-07-13 15:19:38 -07:00
Mitchell Hashimoto
4e6e0f90c7 termio: remove data field 2024-07-13 15:19:38 -07:00
Mitchell Hashimoto
c4484938c5 termio: wip but it builds 2024-07-13 15:19:38 -07:00
Mitchell Hashimoto
49c92fd0e6 termio: rename Exec to Termio throughout 2024-07-13 15:19:37 -07:00
Mitchell Hashimoto
ff43609097 terminal: boilerplate for tmux control mode parsing 2024-07-11 18:58:25 -07:00
Mitchell Hashimoto
f375bf009c terminal: all DCS events can produce a command 2024-07-11 18:53:42 -07:00
Mitchell Hashimoto
01e1538ad3 terminal: dcs put can return a command 2024-07-11 18:42:22 -07:00
Mitchell Hashimoto
245314b14e termio: hook up OSC8 2024-07-05 21:40:38 -07:00
Mitchell Hashimoto
4d2c98afea termio: allow failing to build manpath string 2024-07-03 09:28:50 -07:00
Jon Parise
691319f6d7 termio: remove unnecessary resources_key const 2024-07-03 10:52:35 -04:00
Jon Parise
89ac7ac5f6 termio: add man pages to MANPATH on macOS 2024-07-03 10:52:35 -04:00
Jeffrey C. Ollie
fa6d2b2913 Don't leak env vars in GTK apprt.
The GTK apprt should not leak the GDK_DEBUG and GSK_RENDERER env vars
to child processes.
2024-07-01 11:25:48 -05:00
Mitchell Hashimoto
8f9cdff1f5 small stylistic tweaks 2024-06-08 19:07:10 -07:00
Jeffrey C. Ollie
e6f97c28f8 Use clone3 / CLONE_INTO_CGROUP on Linux
Use clone3 / CLONE_INTO_CGROUP to have the Linux kernel create the process in the
correct cgroup rather than move the process into the cgroup after it is created.
2024-06-07 23:48:03 -06:00
Mitchell Hashimoto
dda6a22ea9 apprt/gtk: cgroup hierarchy only affects surfaces 2024-06-05 10:42:43 -07:00
Mitchell Hashimoto
7d9da34259 termio/exec: move subprocess into cgroup 2024-06-05 09:30:21 -07:00
Mitchell Hashimoto
a63c8d0913 termio: plumb a lot more to get ready to move into cgroup 2024-06-05 09:25:36 -07:00
Mitchell Hashimoto
dc51b8269c plumb the linux cgroup through to termio 2024-06-04 21:37:34 -07:00
Jon Parise
7d7fa46b0c shell-integration: bash must be explicitly enabled
For now, bash integration must be explicitly enabled (by setting
`shell-integration = bash`). Our automatic shell integration requires
bash version 4 or later, and systems like macOS continue to ship bash
version 3 by default. This approach avoids the cost of performing a
runtime version check.
2024-06-03 20:34:29 -04:00
Mitchell Hashimoto
66a9b1b99f rename env var 2024-05-27 16:18:51 -07:00
ilk
7377ca8917 refactor(shell-integration): refactor to make cases alphabetical
also refactors elvish file to evade unobvious returns
and tries to fix some build errors
2024-05-27 16:15:12 -07:00
ilk
1fa830cc73 feat(shell-integration): add automatic integration for Elvish
Fish automatic integration taken as an example.
Just like fish, Elvish checks `XDG_DATA_DIRS` for its modules.
Thus, Fish integration in zig is reused, and integration in
Elvish now removes `GHOSTTY_FISH_XDG_DIR` environment variable
on launch.
2024-05-27 16:15:01 -07:00
Jon Parise
016c58cfe4 shell-integration: handle 'bash -c command'
When the -c option is present, then commands are read from the first
non-option argument command string. Our simple implementation assumes
that if we see at least the '-c' option, a command string was given, and
the shell is always considered to be non-interactive - even if the '-i'
(interactive) option is also given.
2024-05-14 11:01:49 -07:00
Jon Parise
054e01eaaf shell-integration: expand bash HISTFILE value
bash reads HISTFILE at startup to locate its history file, but this is
apparently too early for it to be able to expand home-relative paths. We
now manually expand the full path and add that to the environment.
2024-05-08 07:49:46 -07:00
Mitchell Hashimoto
d64fa6d9db termio: shell integration uses arena 2024-05-07 19:57:26 -07:00
Jon Parise
861edc722f shell-integration: revise ShellIntegration.command comment 2024-05-05 14:03:31 -07:00
Jon Parise
73b3560e62 shell-integration: automatic bash integration
This change adds automatic bash shell detection and integration.

Unlike our other shell integrations, bash doesn't provide a built-in
mechanism for injecting our ghostty.bash script into the new shell
environment.

Instead, we start bash in POSIX mode and use the ENV environment
variable to load our integration script, and the rest of the bash
startup sequence becomes the responsibility of our script to emulate
(along with disabling POSIX mode).
2024-05-05 13:59:52 -07:00
Mitchell Hashimoto
3f9e3c39a4 terminal: track dirty state of palette and reverse colors 2024-05-01 20:31:49 -07:00
Jon Parise
54f6abf1cf termio: pass full command to shell integration
This will allow the shell integration code to inspect the full command
string rather than just the first component (shell binary).
2024-04-21 09:53:27 -07:00
Jon Parise
5ea99d3626 termio: fix "forced" shell integration
When a shell is forced, we would supply its /-prefixed executable name
to mimic a path location. The rest of the integration detection logic
assumes just a base executable name. Fix the forced names accordingly.

Also add a unit test for this "force shell" behavior.
2024-04-20 11:37:34 -07:00
Mitchell Hashimoto
be0d52a4f2 config: rename "wcswidth" to "legacy" for "grapheme-width-method"
We don't actually use libc wcswidth to determine width and even if we
did some terminals use wcwidth (which behaves differently), some use
the Python wcswidth library (which behaves differently), etc. The
reality is there is no real consistency on "legacy" behavior so by
naming it "legacy" we show that we're doing our best but also gives us
wiggle room to change our behavior in the future.

Functionally nothing changes with this commit.
2024-04-19 09:56:22 -07:00
Mitchell Hashimoto
8dbedeb76c fix breaking changes with latest zig 2024-04-17 20:50:50 -07:00
Marius Svechla
e34b373426 shell-integration: implement no-title option
This adds a new option to the shell integration feature set, `no-title`.
If this option is set, the shell integration will not automatically
update the window title.
2024-04-03 22:00:42 +02:00