Commit graph

1215 commits

Author SHA1 Message Date
Daniel Eklöf
6f281cebfb
term: add term_visual_focus_{in,out}
These functions should be called when the terminal gets or loses
visual focus.

Note that this isn't necessarily the same as having keyboard focus.
2020-01-02 19:35:32 +01:00
Daniel Eklöf
4be3c04999
input: keyboard-leave: move comment to where it belongs 2020-01-02 19:30:34 +01:00
Daniel Eklöf
e9325b958f
term: rename term_focus_{in,out} -> term_kbd_focus_{in,out} 2020-01-02 19:29:42 +01:00
Daniel Eklöf
90a1d920bb
Merge branch 'master' into visual-focus 2020-01-02 18:42:30 +01:00
Daniel Eklöf
9829539af8
fcft: ignore embeddedbitmap for non-scalable fonts 2020-01-02 18:42:21 +01:00
Daniel Eklöf
2192d95fa9
wayland: xdg-toplevel-configure: check for stateless configure calls
Ignore configure calls without state, instead of checking for
width/height == 0.
2020-01-02 17:38:50 +01:00
Daniel Eklöf
4a9f359a6a
wayland: ignore early configure calls
At this point, not everything has been setup and we crash when trying
to convert the surface pointer to a terminal pointer.
2020-01-02 17:25:41 +01:00
Daniel Eklöf
eb1ea2d80d
term: add visually focused attribute to terminal struct 2020-01-02 16:06:35 +01:00
Daniel Eklöf
4ecb0ecf4d
wayland: rename focused/moused to kbd_focus/mouse_focus 2020-01-02 15:58:52 +01:00
Daniel Eklöf
6c75c16d2c
README: add missing '+' in keyboard shortcut ctrl+shift+w 2020-01-01 17:01:34 +01:00
Daniel Eklöf
403af22061
wayland: warn when presentation timings have been requested but is not supported 2020-01-01 16:09:16 +01:00
Daniel Eklöf
fad5c87f65
Merge branch 'readme-pimping' 2020-01-01 15:20:39 +01:00
Daniel Eklöf
ba9c14ad68
README: use footnote 2020-01-01 15:18:12 +01:00
Daniel Eklöf
a958c07489
README: add keyboard::normal-mode and keyboard::scrollback-search to index 2020-01-01 15:14:19 +01:00
Daniel Eklöf
79da7907fb
README: use headings to separate normal key bindings from scrollback search bindings 2020-01-01 15:12:57 +01:00
Daniel Eklöf
1a8849c5f6
Revert "README: try removing empty lines between list items"
This reverts commit 7e39d113b7.
2020-01-01 15:12:00 +01:00
Daniel Eklöf
d13b106516
Revert "README: that didn't work - try with a hard line break"
This reverts commit 7489cae576.
2020-01-01 15:11:50 +01:00
Daniel Eklöf
7489cae576
README: that didn't work - try with a hard line break 2020-01-01 15:09:51 +01:00
Daniel Eklöf
7e39d113b7
README: try removing empty lines between list items 2020-01-01 15:08:27 +01:00
Daniel Eklöf
6312a7b7f4
README: list items should be indented by **4** spaces 2020-01-01 15:07:12 +01:00
Daniel Eklöf
87cded5dff
README: make GNOME SSD reply italic 2020-01-01 15:04:44 +01:00
Daniel Eklöf
9cab0e97dd
README: use a definition list for keyboard shortcuts 2020-01-01 15:01:27 +01:00
Daniel Eklöf
19c0c3d2a4
render: presentation: cleanup 2020-01-01 11:37:47 +01:00
Daniel Eklöf
bd8c81547f
render: call wl_display_flush() right after wl_surface_commit()
This groups the two calls, for readability.
2020-01-01 11:19:39 +01:00
Daniel Eklöf
9ba702ce00
render: presentation: clean up frame interval count calculation 2020-01-01 11:19:13 +01:00
Daniel Eklöf
b8960f930d
term: bump lower delay limit to 500µs
Emacs with a split screen often goes above 200µs. 500µs is still much
better than 2000µs...
2019-12-31 20:39:16 +01:00
Daniel Eklöf
c5bdf7c27e
term: ptmx timing: use a define instead of #if 0 2019-12-31 20:37:43 +01:00
Daniel Eklöf
d3fc0fc21e
render: presentation: space between value and "µs" 2019-12-31 20:31:06 +01:00
Daniel Eklöf
3912638141
term: lower the lower delay timeout from 2ms to 200µs 2019-12-31 20:29:47 +01:00
Daniel Eklöf
60b27a9686
term: commented out code to measure time between slave output
This allows us to measure the time between to refresh delays. That is,
when we decide to delay a refresh, we store the current time.

If we hit that code path _again_, without having refreshed, we
calculate the time that has passed.

This gives us an estimate for how we should set our lower delay
timeout.

This is of course application dependent, but is still much better than
simply guessing a value...
2019-12-31 20:26:30 +01:00
Daniel Eklöf
a45786ef1b
render: presentation: also use seconds when calculating frame interval count 2019-12-31 20:04:44 +01:00
Daniel Eklöf
dd3e9346cf
render: presentation: log both input -> commit and commit -> presented times 2019-12-31 20:01:47 +01:00
Daniel Eklöf
b100a82c2a
wayland: only bind to 'presentation' interface if -p,--presentation-timings 2019-12-31 16:12:48 +01:00
Daniel Eklöf
7fe081600a
wayland: remove empty line 2019-12-31 16:07:05 +01:00
Daniel Eklöf
2cd7e51002
render: reset input/commit timestamps on presentation discarded event 2019-12-31 16:03:42 +01:00
Daniel Eklöf
d8761f31a2
wayland: make zxdg_output_v1_listener struct const 2019-12-31 15:43:15 +01:00
Daniel Eklöf
5a07419096
wayland: optionally use the presentation time protocol to measure input lag
This adds a flag, -p,--presentation-timings, that enables input lag
measuring using the presentation time Wayland protocol.

When enabled, we store a timestamp when we *send* a key to the
slave. Then, when we commit a frame for rendering to the compositor,
we request presentation feedback. We also store a timestamp for when
the frame was committed.

The 'presented' callback then looks at the input and commit
timestamps, and compares it with the presented timestamp.

The delay is logged at INFO when the delay was less than one frame
interval, at WARN when it was one frame interval, and at ERR when it
was two or more frame intervals.

We also update statistic counters that we log when foot is shut down.
2019-12-31 15:39:40 +01:00
Daniel Eklöf
ea1d072f52
main: let getopt_long() print error message 2019-12-29 18:35:06 +01:00
Daniel Eklöf
58a7ab76ba
main: third member in "struct option" is a pointer 2019-12-29 18:27:31 +01:00
Daniel Eklöf
67bacc2a94
main: use a single printf() when printing usage 2019-12-29 18:26:29 +01:00
Daniel Eklöf
8854ae134d
README: use triple quoted blocks for meson/ninja examples
This allows us to specify which syntax highlighting (sh) to use.
2019-12-29 15:37:35 +01:00
Daniel Eklöf
57956634e8
PKGBUILD: add 'wayland-protocols' to makedepends 2019-12-29 15:34:59 +01:00
Daniel Eklöf
135dbc301c
README: expand the 'install' section
* Talk about tllist + fcft
* Mention that the PKGBUILD requires tllist+fcft to be installed as
  system libraries
* Provide a short how-to-configure-and build with meson description
2019-12-29 15:28:34 +01:00
Daniel Eklöf
8a3fbf4419
README: remove combining character example that doesn't render in browsers 2019-12-29 14:53:45 +01:00
Daniel Eklöf
222b7c91e4
terminfo: set RGB flag in foot-direct 2019-12-26 17:57:45 +01:00
Daniel Eklöf
2667fdd877
csi: change DA3 reply to "FOOT", in hex 2019-12-21 20:35:55 +01:00
Daniel Eklöf
c91ef4c512
server: verify CWD string length matches the indicated length 2019-12-21 20:05:14 +01:00
Daniel Eklöf
cd382a467c
server: move forward the indicated number of TERM bytes 2019-12-21 20:05:00 +01:00
Daniel Eklöf
2a58fc27b7
server: bug: move forward 2 bytes, not whatever the client sent 2019-12-21 20:04:40 +01:00
Daniel Eklöf
39146fac5c
term: term_init: add 'cwd' argument
This is used when spawning the slave, to set its current working
directory just before we exec() the client.

In a regular foot instance, we set the cwd from getcwd().

In a foot server instance, each connecting client sends its cwd to the
server, and we use that.
2019-12-21 19:57:28 +01:00