Commit graph

95 commits

Author SHA1 Message Date
1b8138fc4f
grid: store and render combining marks on the base cell
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ic1aedda14fa6102c4dc80f9fd6863c7f6a6a6964
2026-06-26 10:21:47 +03:00
53924d381a
wayland: render IME preedit and commit via text-input-v3
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I84a3735ca2e75e63d098fb17836ffd786a6a6964
2026-06-26 10:21:46 +03:00
155954a491
wayland: track input devices per seat for multi-seat support
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: If33e7d1de13c5dcd5e504cacd07911ec6a6a6964
2026-06-26 10:21:45 +03:00
baed9bc98c
wayland: render at fractional scale via viewporter, integer fallback
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I930684c15213a3e3b7de6b74dfb9da076a6a6964
2026-06-26 10:21:44 +03:00
206449a95d
doc: generate manpages with scdoc
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I76a1ac451259af5b4eb86a609b367ca36a6a6964
2026-06-26 10:21:43 +03:00
0ecda1b5ce
config: live reload on SIGUSR1
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I2549feccf6eb3a48ea39dbf0e370e0c46a6a6964
2026-06-26 10:21:42 +03:00
9a680ab42e
input: configurable key/text bindings, font resize, and fullscreen
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I671e429c3d4e4f3c82f4a15fed0ac73d6a6a6964
2026-06-26 10:21:41 +03:00
0738ce3b6f
config: default cursor style/blink and visual bell
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ibd512084374fe4723ee267a916187af56a6a6964
2026-06-26 10:21:40 +03:00
2d319b7e73
render: inner terminal padding (pad-x/pad-y)
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I190f63ca86a8cf976e4d018df73897ab6a6a6964
2026-06-26 10:21:39 +03:00
c78687c0ae
color: config-seeded theme/palette with OSC 4/10/11/17/19 and bg opacity
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ied0c27950f4ee8d5bd862c90341118826a6a6964
2026-06-26 10:21:38 +03:00
ccc30d1bbd
config: load beer.toml and apply font, geometry, scrollback, word delimiters
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I5008a74307d856f9df472776cb66c8b06a6a6964
2026-06-26 10:21:37 +03:00
9df4e8fb8a
build: tag 0.1.0
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I5858af7c69ace264fdb8c0b20ec680d66a6a6964
2026-06-26 10:21:36 +03:00
b7ed08d44c
grid: reflow scrollback and screen on resize
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I73b5d858eafc05026a6fff1eb67eea226a6a6964
2026-06-26 10:21:35 +03:00
6f1d4dd7f9
search: incremental scrollback search with match highlight and prompt
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I0a0450eba48d308763db297f105565346a6a6964
2026-06-26 10:21:34 +03:00
28a49c5bbe
osc: clipboard get/set via OSC 52
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I39637cb00313f1f9f83a4ac2977794246a6a6964
2026-06-26 10:21:33 +03:00
1b4c293c99
selection: block (Ctrl-drag) selection, edge autoscroll, word delimiters
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Icd505e07375273e3dd7b14f0b05e44e16a6a6964
2026-06-26 10:21:32 +03:00
219f0a3c94
input: report mouse and focus events to the application
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I7136e2ae2c833ff581ea14287c876a3a6a6a6964
2026-06-26 10:21:31 +03:00
8469cd3b39
pointer: set an I-beam cursor shape over the window
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I30b31f4d2de479d972d86fd0d9edf43a6a6a6964
2026-06-26 10:21:30 +03:00
72044c21fd
vt: honour synchronized output (DECSET 2026) with a present timeout
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I173dc842d89d96ea39154e1fde95be816a6a6964
2026-06-26 10:21:29 +03:00
f1c8271d31
render: frame-paced presentation with per-row damage and blink
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I4e925b4d1d904d9592060e968d84ec906a6a6964
2026-06-26 10:21:28 +03:00
7887420139
render: mouse selection with clipboard and primary copy-paste
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I808839078ae2674caa1f1bfd7e84f3bc6a6a6964
2026-06-26 10:21:27 +03:00
f52af55f66
build: tag 0.0.2
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I4c31117b3b11ee3e59f77b9285ac64fe6a6a6964
2026-06-26 10:21:26 +03:00
3dd953b75a
grid: scrollback with mouse-wheel and Shift+PageUp scrolling
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I12b2ed33a705eb3474a7d14a295e021d6a6a6964
2026-06-26 10:21:25 +03:00
ba8f8d7144
input: drive key repeat off a calloop timer
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ic249e3ed4742ad5bc3c12eade720a7f26a6a6964
2026-06-26 10:21:24 +03:00
23ad00348d
font: bound the glyph cache; synthesize missing bold/italic
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I39a00a2847022f684060e94c816df7786a6a6964
2026-06-26 10:21:23 +03:00
5682027a94
font: render colour emoji from bitmap strikes, scaled to the cell
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: If30e5f13ee24e691b417ad35c588a6226a6a6964
2026-06-26 10:21:22 +03:00
8e737dd2ff
vt: answer XTGETTCAP capability queries
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I8011dd7a061b46447b6c9f147b5614e06a6a6964
2026-06-26 10:21:21 +03:00
8486c343d7
nix: load terminfo in the devshell and complete the package build
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I9d341443399d553c197f56bf66a578426a6a6964
2026-06-26 10:21:21 +03:00
7254cbf381
render: cut per-frame cost with a fast clear and row fills
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I96cdacecbe2a55c42825006e84fede076a6a6964
2026-06-26 10:21:20 +03:00
b2d656e7bd
input: encode keyboard events and send them to the shell
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6ee2acd5f74575f4bcc2f41417207c626a6a6964
2026-06-26 10:21:19 +03:00
0df5588f02
wayland: spawn the pty after the first configure
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I0fb9dd38217943d4defd908f857d78766a6a6964
2026-06-26 10:21:18 +03:00
88df7c2404
render: cursor shapes, visibility, and focus
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Iad508cceb2c8417147ad71b5c1ffc4bc6a6a6964
2026-06-26 10:21:17 +03:00
2afb4875be
render: draw underline styles, strike, overline, and dim
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I0cf6a44446240a59c2fc8c6735afaf1d6a6a6964
2026-06-24 15:36:30 +03:00
6b3c8dc059
vt: answer XTVERSION, DA3, DECRQM, and the title stack
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ib74e56cfd26b029064e5683ba20b70606a6a6964
2026-06-24 15:36:29 +03:00
56907b4115
pty: propagate the shell's exit status
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I9f33a222a19794b6ad2910fb6029796f6a6a6964
2026-06-24 15:36:28 +03:00
5690e0e883
render: draw the grid with rasterized glyphs
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6350824abb506c2af98884a7374228116a6a6964
2026-06-24 15:36:27 +03:00
a3c41c6ccb
build: tag 0.0.1
Still not usable, so we're incrementing patch versions only. It's like
patchinig this thing into existence.

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Iad730d26b7d0e1d6599687148ac846af6a6a6964
2026-06-24 08:25:37 +03:00
bc53393aec
vt: parse terminal output into a grid model
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Iee271b093801326cff2489218063ab4c6a6a6964
2026-06-24 08:25:36 +03:00
740aefffa8
pty: run the shell and read its output
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ib472cd1bd66ffbba1725d4576eedffff6a6a6964
2026-06-24 08:25:35 +03:00
c68d3445e7
wayland: we have a (blank) window ladies and gentlemen
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Id2b91339a2d43cc95041dafe835c6a526a6a6964
2026-06-24 08:25:19 +03:00
2ccd62ba5e
nix: initial tooling
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I5201e2b745fec2d5d6806693b5243d4e6a6a6964
2026-06-23 14:59:09 +03:00
b5c80f5921
docs: initial project README
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ifce7143b8734868250a7665463ac344a6a6a6964
2026-06-23 14:59:08 +03:00
35ea435776
beer: initial project scaffolding
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I07c4ee715f51332893e2466b8c52f8eb6a6a6964
2026-06-23 14:59:07 +03:00
c9b8424bd1
meta: set up linters and rustfmt
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I554f12c5ce67d41aea3b7559e5536b6f6a6a6964
2026-06-23 14:59:06 +03:00
1593b40dec
initial commit
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I29ab7ff39db110698d7ee72c56cf96486a6a6964
2026-06-23 14:58:45 +03:00