foot/config.h
Daniel Eklöf 57f5cc1bf2
config: add support for appending a 'spawn' argument to key bindings
A key binding may now have an optional ':<cmd>' string appended to the
key.

This is intended to be used like so:

  pipe-scrollback:sh -c "cat > file"=Print

TODO: we still only allow one *action*. Meaning you still cannot
specify multiple pipe-scrollback bindings, for example.
2020-07-15 13:32:31 +02:00

100 lines
2.1 KiB
C

#pragma once
#include <stdint.h>
#include <stdbool.h>
#include <tllist.h>
#include "terminal.h"
struct config_font {
char *pattern;
double pt_size;
int px_size;
};
struct config {
char *term;
char *shell;
char *title;
char *app_id;
bool login_shell;
unsigned width;
unsigned height;
unsigned pad_x;
unsigned pad_y;
enum { STARTUP_WINDOWED, STARTUP_MAXIMIZED, STARTUP_FULLSCREEN } startup_mode;
tll(struct config_font) fonts;
int scrollback_lines;
struct {
uint32_t fg;
uint32_t bg;
uint32_t regular[8];
uint32_t bright[8];
uint16_t alpha;
} colors;
struct {
enum cursor_style style;
bool blink;
struct {
uint32_t text;
uint32_t cursor;
} color;
} cursor;
struct {
/* Bindings for "normal" mode */
char *key[BIND_ACTION_COUNT];
char *spawn[BIND_ACTION_COUNT];
struct mouse_binding mouse[BIND_ACTION_COUNT];
/*
* Special modes
*/
/* While searching (not - action to *start* a search is in the
* 'key' bindings above */
char *search[BIND_ACTION_SEARCH_COUNT];
} bindings;
struct {
enum { CONF_CSD_PREFER_SERVER, CONF_CSD_PREFER_CLIENT } preferred;
int title_height;
int border_width;
int button_width;
struct {
bool title_set;
bool minimize_set;
bool maximize_set;
bool close_set;
uint32_t title;
uint32_t minimize;
uint32_t maximize;
uint32_t close;
} color;
} csd;
size_t render_worker_count;
char *server_socket_path;
bool presentation_timings;
bool hold_at_exit;
struct {
uint64_t delayed_render_lower_ns;
uint64_t delayed_render_upper_ns;
off_t max_shm_pool_size;
} tweak;
};
bool config_load(struct config *conf, const char *path);
void config_free(struct config conf);
struct config_font config_font_parse(const char *pattern);
void config_font_destroy(struct config_font *font);