Commit graph

60 commits

Author SHA1 Message Date
Daniel Eklöf
5a6cbb8c3e
dcs: initial handling of DCS in general
Add data structure to term->vt. This structure tracks the free-form
data that is passed-through, and the handler to call at the end.

Intermediates and parameters are collected by the normal VT
parser. Then, when we enter the passthrough state, we call dcs_hook().

This function checks the intermediate(s) and parameters, and selects
the appropriate unhook handler (and optionally does some execution
already).

In passthrough mode, we simply append strings to an internal
buffer. This might have to be changed in the future, if we need to
support a DCS that needs to execute as we go.

In unhook (i.e. when the DCS is terminated), we execute the unhook
handler.

As a proof-of-concept, handlers for BSU/ESU (Begin/End Synchronized
Update) has been added (but are left unimplemented).
2020-01-12 11:55:22 +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
0e2219daa9
PKGBUILD/meson: bump version to 1.0.0 2019-12-15 12:43:46 +01:00
Daniel Eklöf
5cd8af44c6
meson: we now require -lm 2019-12-05 19:35:54 +01:00
Daniel Eklöf
cbef66ac07
meson: require fcft 0.4.x 2019-12-05 19:33:31 +01:00
Daniel Eklöf
d179287fb0
meson: we don't need -lm anymore 2019-12-03 21:40:32 +01:00
Daniel Eklöf
6c817d309e
meson: we don't need -lm anymore 2019-12-03 21:16:41 +01:00
Daniel Eklöf
0f15f0ba43
fcft: update to 0.3.0
fcft now calculates the underline and strikeout integer positions,
making our rendering code much simpler.
2019-12-03 21:03:52 +01:00
Daniel Eklöf
198529525c
selection: break out isword() to a new file 2019-12-03 19:16:58 +01:00
Daniel Eklöf
b3334444bb
meson: require fcft 0.2.0 2019-12-01 19:25:15 +01:00
Daniel Eklöf
c92746203a
meson: fcft: version must be 0.1.x 2019-12-01 18:47:39 +01:00
Daniel Eklöf
1307f61da1
PKGBUILD/meson: add version requirements to tllist+fcft 2019-12-01 17:50:27 +01:00
Daniel Eklöf
fcea49920f
meson: tllist/fcft: use system dependency first, fallback to subprojects 2019-12-01 16:11:35 +01:00
Daniel Eklöf
ba56379055
meson/PKGBUILD: we no longer depend directly on fontconfig/freetype 2019-12-01 15:42:28 +01:00
Daniel Eklöf
30f58bac56
meson: tllist/fcft: oops, forgot to set 'required: false' 2019-12-01 13:54:18 +01:00
Daniel Eklöf
fd9c28464d
fcft: use fcft instead of local copy of font.c/font.h 2019-12-01 13:43:51 +01:00
Daniel Eklöf
3c939f76e3
meson: tllist: try subproject first, then fallback to system dependency 2019-12-01 13:40:19 +01:00
Daniel Eklöf
310ead65ec
meson: add 'version' dependency to footclient
footclient (`client.c`, to be precise) includes `version.h`, which is
a generated file.
2019-11-18 17:01:34 +01:00
Daniel Eklöf
dd7058d368
tllist: use tllist from external git repository 2019-11-17 19:10:35 +01:00
Daniel Eklöf
9ae5c311d1
async: add async_write(), a write primitive to write to a NONBLOCK:ing FD 2019-11-04 13:46:30 +01:00
Daniel Eklöf
6637c8aeda
client: a standalone binary that connects to a foot --server 2019-11-01 20:39:34 +01:00
Daniel Eklöf
a1efd65746
server: implement a --server mode
In this mode, foot listens on a UNIX socket and creates terminal
windows when clients connect.

A connecting client sends argc/argv to the server, and the server
instantiates a new terminal window.

When the terminal window is closed, the exit code is sent back to the
client.
2019-11-01 20:39:09 +01:00
Daniel Eklöf
c9455d5f21
kbd: move into wayland 2019-10-27 17:10:32 +01:00
Daniel Eklöf
061bbd7049
kbd: break out XKB kbd struct to a separate file 2019-10-27 16:21:19 +01:00
Daniel Eklöf
942ff566a2
wayland: implement wayl_destroy() 2019-10-27 15:57:23 +01:00
Daniel Eklöf
0120c57ed5
wayland: move wayland struct definitions to a separate file 2019-10-27 13:06:39 +01:00
Daniel Eklöf
5fefb950b3
fdm: use the FDM's poll loop 2019-10-27 11:46:18 +01:00
Daniel Eklöf
6643fe5456
completions: add zsh completions 2019-10-20 11:54:58 +02:00
Daniel Eklöf
286db002f8
meson: fix version generation from git
run_command() was only run at configure time, meaning the generated
version (that was passed on to the sources via -DFUZZEL_VERSION)
became stale.

Fix by implementing a shell script that generates a header file, and
wrap this in a custom target that is run every time (but the generated
file is only updated when the version changes)
2019-10-19 22:09:52 +02:00
Daniel Eklöf
4cf39e5c42
meson: install footrc example file to $datadir/foot/footrc 2019-09-20 18:12:58 +02:00
Daniel Eklöf
47da5b4086
main: request server-side decorations 2019-08-30 17:55:45 +02:00
Daniel Eklöf
61cabdac13
search: wip: re-direct input while searching, and build a search buffer
This adds a new state, 'is_searching'. While active, input is
re-directed, and stored in a search buffer. In the future, we'll use
this buffer and search for its content in the scrollback buffer, and
move the view and create a selection on matches.

When rendering in 'is_searching', everything is dimmed. In the future,
we'll render the current search buffer on-top of the dimmed "regular"
terminal output.
2019-08-27 17:23:28 +02:00
Daniel Eklöf
3d6bbf0fe8
meson: remove unused wayland protocols 2019-08-17 12:02:05 +02:00
Daniel Eklöf
f45e5c6aef
Remove all references to cairo; we now use pixman only 2019-08-16 22:11:22 +02:00
Daniel Eklöf
9259696b18
meson: add pixman dependency 2019-08-16 18:07:04 +02:00
Daniel Eklöf
74f723e0cf
output: initial support for output scaling
* Not updated run-time; only scale at start up used
* Multiple monitors (outputs) not supported, as we can't track which
  output we're on (yet).
2019-08-12 21:33:24 +02:00
Daniel Eklöf
d405c7022f
doc: add foot.1 man page 2019-08-11 20:54:28 +02:00
Daniel Eklöf
1060c8e892
main: add -h,--help and -v,--version command line options 2019-08-11 16:03:29 +02:00
Daniel Eklöf
4302d3eb68
font: set FT load and render flags from FontConfig properties 2019-07-29 20:10:55 +02:00
Daniel Eklöf
175dc9cf94
cairo-ft: remove all usages of cairo-ft 2019-07-28 12:45:01 +02:00
Daniel Eklöf
838738a04a
terminfo: add XM (mouse initialization) 2019-07-21 20:46:17 +02:00
Daniel Eklöf
2096753b52
dcs: we have no parent terminal to pass through to 2019-07-21 18:22:26 +02:00
Daniel Eklöf
bb8a733758
base64: initial base64 decode implementation 2019-07-19 11:11:25 +02:00
Daniel Eklöf
b953326768
dcs: sort of implement DCS passthrough
We now store the passthrough characters in a buffer, and call
dcs_passthrough() on unhook.

However, dcs_passthrough() doesn't do anything.
2019-07-19 09:55:07 +02:00
Daniel Eklöf
0c565d1558
terminfo: intitial terminfo specification 2019-07-18 14:00:33 +02:00
Daniel Eklöf
2046dc0fbd
slave: break out command line tokenizer 2019-07-17 09:46:45 +02:00
Daniel Eklöf
0d1b4449b9
conf: initial support for configuration file
* Look for configuration file in (in this order):
  - XDG_CONFIG_HOME/footrc
  - ~/.config/footrc
* Currently supports setting the font
2019-07-16 11:52:22 +02:00
Daniel Eklöf
433c81f54b
meson: install foot.desktop 2019-07-15 15:47:45 +02:00
Daniel Eklöf
6077b57ca5
rename project to 'foot' 2019-07-11 20:10:59 +02:00
Daniel Eklöf
703aeecb95
selection: add support for pasting *from* primary 2019-07-11 17:38:03 +02:00