Commit graph

1250 commits

Author SHA1 Message Date
Daniel Eklöf
9f3d07ff21
changelog: rewrite entry for combining characters 2020-05-01 12:00:01 +02:00
Daniel Eklöf
02d4a093bb
changelog: change -> changes 2020-04-28 22:11:12 +02:00
Daniel Eklöf
3adcbf7d4d
term: load primary fonts in parallel
Use four threads to load the four primary font variants - normal,
bold, italic and bold italic.

This speeds up initial startup, and reloading of fonts on a DPI
change.
2020-04-28 22:07:02 +02:00
Daniel Eklöf
4283a8c51b
utf8: add support for unicode combining characters
This feature lets foot combine e.g. "a\u0301" to "á".

We first check if the current character (that we're about to print) is
a combining character, by checking if it's in one of the following
ranges:

* Combining Diacritical Marks (0300–036F), since version 1.0, with
  modifications in subsequent versions down to 4.1
* Combining Diacritical Marks Extended (1AB0–1AFF), version 7.0
* Combining Diacritical Marks Supplement (1DC0–1DFF), versions 4.1 to 5.2
* Combining Diacritical Marks for Symbols (20D0–20FF), since version
  1.0, with modifications in subsequent versions down to 5.1
* Combining Half Marks (FE20–FE2F), versions 1.0, with modifications
  in subsequent versions down to 8.0

If it is, we check if the last cell appears to contain a valid symbol,
and if so, we attempt to compose (combine) the last cell with the
current character, using utf8proc.

If the result is a combined character, we replace the content in the
previous cell with the new, combined character.

Thus, if you select and copy the printed character, you would get
e.g. "\u00e1" instead of "a\u0301".

This feature can be disabled. By default, it is enabled if the
utf8proc library is found, but can be explicitly disabled, or enabled,
with 'meson -Dunicode-combining=disabled|enabled'.
2020-04-27 12:13:30 +02:00
Daniel Eklöf
db0ac438be
changelog: CSI 13;2t and CSI 14t have also been implemented 2020-04-25 23:09:10 +02:00
Daniel Eklöf
b22c7c4d0a
changelog: use backticks for full escape sequence too, and shorten entry 2020-04-25 23:07:47 +02:00
Daniel Eklöf
0572138b09
changelog: one entry for conf-option + command line option changes 2020-04-24 20:40:33 +02:00
Daniel Eklöf
144280ba17
changelog: current output's subpixel order is preferred over FontConfig 2020-04-22 20:00:31 +02:00
Daniel Eklöf
fa8b0cbd80
csi: implement CSI Ps ; Ps ; Ps t reporting escape sequences
A lot of the escape sequences on the "CSI Ps ; Ps ; Ps t" form are
expected to return a reply. Thus, not having these implemented means
we will hang if the client sends these escapes.

Not all of these escapes can be meaningfully implemented on Wayland,
and thus this implementation is best effort.

We now support the following escapes:

* 11t   - report if window is iconified (always replies "no")
* 13t   - report window position (always replies 0,0)
* 13;2t - report text area position (replies with margins, since we
          cannot get the window's position)
* 14t   - report text area size, in pixels
* 14;2t - report window size, in pixels
* 15t   - report screen size, in pixels
* 16t   - report cell size, in pixels
* 18t   - report text area size, in cells
* 19t   - report screen size, in cells
2020-04-18 11:51:53 +02:00
Daniel Eklöf
842cd158d2
changelog: selection is no longer cleared on resize 2020-04-17 22:43:28 +02:00
Daniel Eklöf
87fc0cfb85
changelog: cursor coordinates are now translated on resize 2020-04-17 20:49:09 +02:00
Daniel Eklöf
27a205e90f
term: reset: plug memory leak
In reset, we allocated new rows for all the currently visible
lines. We did **not** however, free the 'old' rows.

Fix by not explicitly allocating new rows, but instead allocating
uninitialized rows when needed, and then explicitly erasing the row.

If there already was a row allocated, it is simply erased. If there
wasn't, the a new line is malloc:ed, and then erased.
2020-04-13 11:42:10 +02:00
Daniel Eklöf
00dbe12e41
input: slow trackpad scrolling now eventually scroll a line
Before, we converted each axis event's scroll amount to an integer and
scrolled that many lines.

However, axis events are speed sensitive - very slow scrolling will
result in events with a scroll amount that is < 1.0.

For us, this meant we never scrolled a single line. You could slow
scroll all day if you wanted, and still we would never scroll a single
line.

Fix this by aggregating the scroll amount from axis events until the
scroll amount is > 1.0, and then scroll.
2020-04-10 18:43:29 +02:00
Daniel Eklöf
7d76c5aca1
changelog: alt+return now emits ESC \r 2020-04-08 17:39:54 +02:00
Daniel Eklöf
5dc7608e3f
changelog: osc 4 multiple 'c;spec' pairs 2020-04-04 14:31:46 +02:00
Daniel Eklöf
51718f2e9c
changelog: right mouse button extends current selection 2020-04-04 12:08:46 +02:00
Daniel Eklöf
ea2897582f
changelog: mention memfd sealing failures not being fatal errors fix 2020-04-03 20:17:47 +02:00
Daniel Eklöf
4e4eaf0a12
changelog: mention OSC 7 hostname validation fix 2020-04-03 20:16:56 +02:00
Daniel Eklöf
ec7a768487
conf: add 'title' conf option and --title command line option 2020-04-01 19:59:47 +02:00
Daniel Eklöf
4d52a870b4
conf: add app-id config option and --app-id command line option 2020-04-01 18:40:51 +02:00
Daniel Eklöf
2c7ee09dad
Merge branch 'scroll-damage-performance' 2020-03-29 12:07:53 +02:00
Daniel Eklöf
043ee41c0d
changelog: mention renderer performance improvements with scrolling 2020-03-29 11:32:38 +02:00
Daniel Eklöf
a2a370acba
conf: rename 'startup-mode' to 'initial-window-mode' 2020-03-28 12:04:00 +01:00
Daniel Eklöf
e197368c0f
config: add 'startup-mode' option
This option controls the initial window mode: windowed, maximized or
fullscreen. The default is windowed.
2020-03-26 19:39:12 +01:00
Daniel Eklöf
48091966cb
render: resize: update saved 'normal' cursor if we're in alt screen
When resizing in alt mode, we never updated the saved 'normal'
cursor. This meant that when we exited alt mode, the cursor would be
positioned where it was in the old pre-resize/reflow grid.

Now, we update the saved cursor in the same way we update visible
cursor. The result is that when we exit the alt screen, the cursor
is restored to the same coordinates it would have been updated to had
the resize been done in the 'normal' screen.
2020-03-22 11:14:56 +01:00
Daniel Eklöf
ba4a328e42
changelog: mention change of default key binding for spaw-terminal 2020-03-17 21:12:37 +01:00
Daniel Eklöf
93207bc482
render: render non-block cursors after rendering the glyph + decorations
This fixes an issue where an 'underline' cursor wasn't visible on
underlined text - the cursor was rendered first, and then shadowed by
the text underline.
2020-03-17 11:47:47 +01:00
Daniel Eklöf
1006608093
alt-screen: use a custom 'saved' cursor when switching to alt screen
This fixes an issue where we failed to restore the cursor correctly
when exiting from the alternate screen, if the client had sent escapes
to save the cursor position while inside the alternate screen.

This was because we used the *same* storage for saving the cursor
position through escapes, as for saving it when entering the alternate
screen.

Fix by using a custom variable dedicated to normal <--> alt screen
switching.
2020-03-16 12:00:25 +01:00
Daniel Eklöf
4860c3eb37
completions: zsh: don't strip spaces from font name completions 2020-03-15 12:31:42 +01:00
Daniel Eklöf
065de3484c
changelog: add index 2020-03-15 11:39:11 +01:00
Daniel Eklöf
73aee27e47
Merge branch 'releases/1.2' 2020-03-15 11:36:25 +01:00
Daniel Eklöf
cc9337721b
meson/PKGBUILD: bump version to 1.2.3 2020-03-15 11:28:01 +01:00
Daniel Eklöf
db60e2cfb2
changelog: spaces 2020-03-14 23:28:21 +01:00
Daniel Eklöf
656a7690f9
Merge branch 'releases/1.2' 2020-03-14 23:21:56 +01:00
Daniel Eklöf
c28c0c3db4
changelog: mention fix for #5 2020-03-14 22:34:08 +01:00
Daniel Eklöf
af2e33b78e
changelog: updated to mention fix for #3
I really need to learn to update the changelog **with** the fix...
2020-03-14 22:32:24 +01:00
Daniel Eklöf
35de429592
changelog: update 2020-03-14 22:31:42 +01:00
Daniel Eklöf
d28494c01d
changelog: remove 'unreleased' section 2020-03-14 22:28:16 +01:00
Daniel Eklöf
ce68041ed6
changelog: upper case initial letter 2020-03-14 12:03:45 +01:00
Daniel Eklöf
abb1fa3574
changelog: mention removal of Sway 1.2 keyboard/pointer workarounds 2020-03-14 12:03:12 +01:00
Daniel Eklöf
59a1204c50
Merge branch 'scale-fonts-using-logical-dpi-plus-scale-factor' 2020-03-13 18:48:15 +01:00
Daniel Eklöf
d482bf0a30
sixel: improve handling of images when reflowing the grids
Update the sixels' 'row' attribute when re-flowing a grid, to ensure
it is rendered at the correct place.

This should work in most cases, but will break when the cell size has
changed (e.g. font size increase/decrease, or a DPI change).

This patch also moves the sixel image list from the terminal struct
into the grid struct. The sixels are per-grid after all.
2020-03-13 18:47:16 +01:00
Daniel Eklöf
60170f4738
changelog: user configurable key- and mouse bindings 2020-03-12 10:23:59 +01:00
Daniel Eklöf
7ed90e3ec4
changelog: mention fix for #5 2020-03-11 20:18:47 +01:00
Daniel Eklöf
57fe26955f
changelog: updated to mention fix for #3
I really need to learn to update the changelog **with** the fix...
2020-03-10 18:17:14 +01:00
Daniel Eklöf
39571a32c6
changelog: update 2020-03-09 21:11:41 +01:00
Daniel Eklöf
07002bb941
meson/PKGBUILD/changelog: bump to 1.2.1 2020-03-06 21:21:34 +01:00
Daniel Eklöf
4c56c8c63d
meson/PKGBUILD/changelog: prepare for 1.2.0 2020-03-06 20:11:50 +01:00
Daniel Eklöf
6bc6bf4fb4
changelog: add all major changes for 1.2.0 2020-03-06 20:10:27 +01:00
Daniel Eklöf
81b4f67d99
changelog: template 2020-03-06 19:45:04 +01:00