Commit graph

1719 commits

Author SHA1 Message Date
Daniel Eklöf
c10399694e
input: remove Sway 1.2 keyboard/pointer workarounds
Sway 1.4 is better than 1.2, in that we always have keyboard focus
when we get a keyboard_key() event.

That however is because it doesn't send keyboard_leave() on e.g. a TTY
switch.

Still, this is good enough - foot handles this and doesn't crash. We
are also able to process input without having to refocus the window.

And, Sway master (what will become Sway 1.5) has fixed this for real -
we now get a keyboard_leave() and pointer_leave() event on a TTY
switch. And the corresponding enter events when switching back.
2020-03-14 11:54:23 +01:00
Daniel Eklöf
53b681c6f4
input: add debug logs to all keyboard/pointer enter/leave/action events 2020-03-14 11:51:47 +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
62a5805d4b
input: maximize: unset fullscreen before toggling maximized state 2020-03-12 17:47:53 +01:00
Daniel Eklöf
a1ceb1f5ec
doc/foot.5: formatting fixes 2020-03-12 17:42:27 +01:00
Daniel Eklöf
7984b802b2
README: shortcuts (bindings) _can_ be changed 2020-03-12 17:33:52 +01:00
Daniel Eklöf
47fa91e02b
Merge branch 'bindings' 2020-03-12 17:26:02 +01:00
Daniel Eklöf
a7b90b514c
doc/foot.5: mention that *all* actions can be used in mouse bindings 2020-03-12 17:24:54 +01:00
Daniel Eklöf
0e00b6fa15
doc/foot.5: add an example that uses Shift 2020-03-12 17:21:48 +01:00
Daniel Eklöf
6657573866
Merge branch 'master' into bindings 2020-03-12 17:19:54 +01:00
Daniel Eklöf
5cbd0527d7
config: key-bindings: verify key combo isn't already mapped to another action 2020-03-12 17:19:09 +01:00
Daniel Eklöf
c58f9a9ef9
config: mouse-bindings: verify button isn't already mapped
A button may only be mapped to a single action. Detect when the user
tried to map the same button to multiple actions and error out.

To clear a binding (for example, to free up a button from the default
bindings), one can set the action it is bound to to
`NONE` (e.g. `primary-paste=NONE`).
2020-03-12 10:46:27 +01:00
Daniel Eklöf
60170f4738
changelog: user configurable key- and mouse bindings 2020-03-12 10:23:59 +01:00
Daniel Eklöf
45384839f0
config/input: implement mouse bindings
* New config section, "mouse-bindings", where bindings are defined on
  the form "action=BTN_<name>
* pointer_button() handler now scans the bindings list instead of
  hardcoding primary-paste to BTN_MIDDLE.
* The implementation handles single- double- and triple clicks in the
  bindings, but there is currently no way to define anything but a
  single-click binding in the configuration.
2020-03-12 10:20:05 +01:00
Daniel Eklöf
9fae38a4b2
config: 'invalid key' is always an error, not a warning 2020-03-12 10:19:21 +01:00
Daniel Eklöf
51a9ff6b04
quirks: weston_csd_{on,off}: don't do anything in fullscreen mode 2020-03-12 09:39:53 +01:00
Daniel Eklöf
65ff582358
bindings: add minimize/maximize/fullscreen actions
These actions are by default not bound to anything.
2020-03-12 09:34:09 +01:00
Daniel Eklöf
1f904fc257
quirks: weston_csd_{on,off}: don't do anything in fullscreen mode 2020-03-12 09:31:25 +01:00
Daniel Eklöf
7ed90e3ec4
changelog: mention fix for #5 2020-03-11 20:18:47 +01:00
Daniel Eklöf
acecab1c8b
term: use logical DPI+scale factor when scaling fonts
This fixes an issue where the fonts were rendered too small when the
output had fractional scaling.

For integral scaling, using the logical (scaled) DPI multiplied with
the scaling factor results in the same final DPI value as if we had
used the physical DPI.

But for fractional scaling, this works around the fact that the
compositor downscales the surface after we've rendered it.

Closes #5
2020-03-11 16:10:55 +01:00
Daniel Eklöf
5a89ac67eb
config: add str_to_bool() 2020-03-11 16:10:14 +01:00
Daniel Eklöf
2be999a752
Merge branch 'master' into bindings 2020-03-10 18:21:48 +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
aa1aa0c09d
terminal: appky scale factor when force-resizing on font reload
If we don't, we'll end up e.g. increasing the window size when moving
the window between outputs with different scaling.

Closes #3
2020-03-10 18:07:12 +01:00
Daniel Eklöf
9049488acc
client: log path we actually tried to connect to (and failed) 2020-03-10 18:06:10 +01:00
Daniel Eklöf
1c42fadcf7
client: update --server-socket usage to mention XDG_SESSION_ID 2020-03-10 18:06:10 +01:00
Daniel Eklöf
270604b318
wayland: remove empty line 2020-03-10 18:06:10 +01:00
Daniel Eklöf
8a6cfb738b
shm: we don't really handle SHM failures, so just abort() 2020-03-10 18:06:10 +01:00
Daniel Eklöf
cf5da1039f
shm: mmap returns MAP_FAILED, so use that as guard value 2020-03-10 18:06:10 +01:00
Daniel Eklöf
867dc836ab
shm: set pool_fd=1 after closing it, to avoid double-closing on error 2020-03-10 18:06:10 +01:00
Daniel Eklöf
7efe2c6c97
shm: try to mmap with MAP_UNINITIALIZED
This flag is expected to be ignored on most systems, but can't hurt to
try.
2020-03-10 18:06:10 +01:00
Daniel Eklöf
1581143b0b
shm: log errno error message too 2020-03-10 18:06:09 +01:00
Daniel Eklöf
39571a32c6
changelog: update 2020-03-09 21:11:41 +01:00
Daniel Eklöf
214ef146a2
doc/foot.1: keyboard shortcuts: add pointer to foot(5) 2020-03-09 20:32:15 +01:00
Daniel Eklöf
dba880a088
doc/foot.5: document key bindings 2020-03-09 20:22:04 +01:00
Daniel Eklöf
c993148635
main: free config if we fail to load the config 2020-03-09 20:04:25 +01:00
Daniel Eklöf
048edc58f1
config: load custom key bindings
This adds parsing of a new section - "key-bindings" - where the user
can configure the key bindings on the form "action=combo1 .. comboN"

The validity of the key combinations are checked with the default XKB
keymap.
2020-03-09 20:03:04 +01:00
Daniel Eklöf
0c72128405
input: parse_key_binding_for_action: export function 2020-03-09 19:47:22 +01:00
Daniel Eklöf
f78a8a77ed
input: parse_key_binding_for_action: repair LOG_DBG statement 2020-03-09 19:47:01 +01:00
Daniel Eklöf
fc7b3b2d85
Merge branch 'master' into bindings 2020-03-09 18:49:44 +01:00
Daniel Eklöf
25792a7e8c
server/client: add XDG_SESSION_ID to the default socket path
This allows multiple foot servers to run in multiple sessions.
2020-03-09 18:47:10 +01:00
Daniel Eklöf
6c6e3da7e2
term: init: no need to roundtrip 2020-03-09 18:46:50 +01:00
Daniel Eklöf
3e5f011f75
wayland: make a missing presentation time interface an error
If the user wanted to do presentation timing, and the interface isn't
there, then this is an error.
2020-03-09 18:46:09 +01:00
Daniel Eklöf
404365ec56
wayland: register FDM hook early, to avoid unregister errors when failing 2020-03-09 18:45:43 +01:00
Daniel Eklöf
217f16e434
.desktop: 'terminal' is not a common icon name
Not all icon themes have a 'terminal' icon. 'utilities-terminal' on
the other hand is a standardized icon name.
2020-03-09 18:44:43 +01:00
Daniel Eklöf
9e985cc358
footrc: add default key bindings
Note that we still don't parse this section.
2020-03-08 15:36:30 +01:00
Daniel Eklöf
cb21ede020
wayland: free 'search' key bindings on destroy 2020-03-08 15:30:05 +01:00
Daniel Eklöf
0d188895c3
search: add support for user configurable key bindings
No default bindings defined yet, though.
2020-03-08 15:28:47 +01:00
Daniel Eklöf
fcf4832775
input: convert the rest of the normal key bindings to configurable bindings
New actions defined and implemented:

* scrollback up/down
* font size up/down/reset
* spawn terminal

Break out key combo parsing to a new function,
parse_key_binding_for_action(). This function parses a string
containing one or more space separated key combo definitions on the
form (mod1+mod2+...+key), where key is a XKB key name (e.g. KP_Add).

Convert all hardcoded key bindings to configuration based
bindings. These still cannot actually be configured by the user, but
at least lives in the conf struct.
2020-03-08 15:17:57 +01:00