979 Commits

Author SHA1 Message Date
Mitchell Hashimoto
d916d56bff IO thread stream handler is in, lots of commented TODOs 2022-11-05 19:31:02 -07:00
Mitchell Hashimoto
9b3d22e55e IO thread has more state setup 2022-11-05 19:31:02 -07:00
Mitchell Hashimoto
35c1decd58 Start pulling out IO thread and IO implementation 2022-11-05 19:31:02 -07:00
Mitchell Hashimoto
8dd67662b3 Blocking queue implementation for thread message passing 2022-11-05 19:31:02 -07:00
Mitchell Hashimoto
72ac3b4685 re-enable hot path optimization 2022-11-03 15:37:24 -07:00
Mitchell Hashimoto
d75e869b4e Load $XDG_CONFIG_HOME/ghostty/config if it exists (#25)
Ghostty now loads the config file in `$XDG_CONFIG_HOME/ghostty/config` if it exists on startup. This follows the XDG base dir specification so if $XDG_CONFIG_HOME is not set, we default to `$HOME/.config/ghostty/config`.
2022-11-02 16:12:50 -07:00
Mitchell Hashimoto
116a157e17 change defaults to be more aesthetically pleasing 2022-11-01 18:25:36 -07:00
Mitchell Hashimoto
b528d435fb properly handle "inherit" working directory value 2022-11-01 18:22:33 -07:00
Mitchell Hashimoto
df50aacff1 macos: Default working directory to home dir if launched from app
This also introduces a `--working-directory` config flag.
2022-11-01 18:10:30 -07:00
Mitchell Hashimoto
63fab367fe Command supports setting cwd 2022-11-01 17:51:50 -07:00
Mitchell Hashimoto
be1fa78511 extract passwd to its own file so its easier to test 2022-11-01 17:47:34 -07:00
Mitchell Hashimoto
c7db5b96d6 get rid of stage1 compat 2022-11-01 14:10:35 -07:00
Mitchell Hashimoto
74d8d6cd6c source default shell from SHELL if set 2022-11-01 14:09:40 -07:00
Mitchell Hashimoto
7da18d8063 look up default shell in user passwd entry 2022-11-01 14:02:10 -07:00
Mitchell Hashimoto
4d13f2648a update zig 2022-11-01 13:26:46 -07:00
Mitchell Hashimoto
f09ba38c6f remove stage1 hack 2022-11-01 13:25:20 -07:00
Mitchell Hashimoto
3d5ea05565 update zig 2022-10-31 21:34:36 -07:00
Mitchell Hashimoto
9e3bbc1598 macos: send logs to unified logging 2022-10-31 15:16:29 -07:00
Mitchell Hashimoto
7608d7921f pkg/macos: OS Log support 2022-10-31 14:47:10 -07:00
Mitchell Hashimoto
e0933ed62e Update README.md 2022-10-31 14:05:53 -07:00
Mitchell Hashimoto
9d736985b3 Mac bundle, icons 2022-10-31 14:04:41 -07:00
Mitchell Hashimoto
a9df393580 fix mouse scroll direction 2022-10-31 12:09:34 -07:00
Mitchell Hashimoto
a14871e38a Metal Renderer
This implements a pure Metal renderer for macOS targets. 

Performance:
  - Average frame time: 0.7ms (Metal) vs. 1.5ms (OpenGL)
  - Average fps while `cat`-ing a 1GB file (vsync disabled): 100 (Metal) vs. 70 (OpenGL)
    * Note: while the frame time is 2x faster in Metal, the FPS is not 2x for what I assume to be lock contention on terminal state.

Why?
  - OpenGL has been deprecated on macOS since 2018. 
  - All OpenGL has to go through a Metal translation layer anyways, which has a non-zero cost. 
  - There is a bug on Mac where rendering OpenGL on a separate thread from the windowing thread can cause crashes, so most OpenGL software just don't multi-thread render on Mac. 
  - Metal is more explicit about resource management compared to OpenGL, so we gain performance.
  - Metal is much more multi-thread friendly, so our multi-threaded renderer works great! (with resizes!)
2022-10-31 10:48:53 -07:00
Mitchell Hashimoto
8dd68ea5fe metal: reallocate textures if they grow 2022-10-31 10:42:27 -07:00
Mitchell Hashimoto
9e628635c2 metal: hollow rect cursor works 2022-10-31 10:33:31 -07:00
Mitchell Hashimoto
20adaa7b66 metal: disable v-sync 2022-10-31 10:25:49 -07:00
Mitchell Hashimoto
1d1f161b03 metal: fix double wide cell width 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
901ff199c8 log the renderer on startup 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
ddc0d60ea2 metal: set contentsScale and handle screen scale factor for retina 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
c1b70cb788 metal: devmode 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
666833f12f metal: color textures 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
ee45d363a9 metal: cursor and underline 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
4b5174d2c6 metal: blending 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
178418834c metal: glyphs show up (poorly) 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
0058906035 metal: handle HiDPI scaling 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
fb49595904 metal: pass colors in 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
a7c1f63ad8 metal: populate the greyscale texture, prep ubershader 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
89610f9b8d metal: setup vertex data 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
6b7ed3fefb metal: use content scale when resizing 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
ea0265f021 projection matrix, render cell 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
a17a7426a3 draw a square, handle resize 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
4d4c1790cb draw a triangle 2022-10-31 09:44:36 -07:00
Mitchell Hashimoto
fc7e457098 add first pass metal shader 2022-10-31 09:44:36 -07:00
Mitchell Hashimoto
90a284e176 boilerplate for rendering 2022-10-31 09:44:36 -07:00
Mitchell Hashimoto
873afd042b don't test stage1 2022-10-31 09:44:36 -07:00
Mitchell Hashimoto
090bab6798 metal: setup the render loop, draw the background color 2022-10-31 09:44:36 -07:00
Mitchell Hashimoto
07271a6cfd Initial metal abstraction (noop) 2022-10-31 09:44:36 -07:00
Mitchell Hashimoto
19f003d7d0 mac: load emoji font last so it is not preferred for text 2022-10-31 09:44:19 -07:00
Mitchell Hashimoto
7557b7b831 update zig 2022-10-30 22:27:08 -07:00
Mitchell Hashimoto
6203893d45 update README about release builds 2022-10-30 22:22:39 -07:00