#include "conf.h"
#include "shl_dlist.h"
+enum kmscon_conf_gpu_selection {
+ KMSCON_GPU_ALL,
+ KMSCON_GPU_AUX,
+ KMSCON_GPU_PRIMARY,
+};
+
struct kmscon_conf_t {
+ /* header information */
+ bool seat_config;
+
/* General Options */
/* show help/usage information */
bool help;
bool debug;
/* disable notices and warnings */
bool silent;
+ /* config directory name */
+ char *configdir;
+ /* listen mode */
+ bool listen;
/* Seat Options */
- /* VT number to run on on seat0 */
+ /* VT number to run on */
char *vt;
/* enter new VT directly */
bool switchvt;
/* seats */
char **seats;
- /* true if \seats is "all" */
- bool all_seats;
/* Session Options */
/* sessions */
unsigned int session_max;
+ /* allow keyboard session control */
+ bool session_control;
+ /* run terminal session */
+ bool terminal_session;
/* Terminal Options */
/* custom login process */
char **argv;
/* TERM value */
char *term;
+ /* reset environment */
+ bool reset_env;
/* color palette */
char *palette;
/* terminal scroll-back buffer size */
unsigned int sb_size;
/* Input Options */
+ /* input KBD model */
+ char *xkb_model;
/* input KBD layout */
char *xkb_layout;
/* input KBD variant */
char *xkb_variant;
/* input KBD options */
char *xkb_options;
+ /* input predefined KBD keymap */
+ char *xkb_keymap;
/* keyboard key-repeat delay */
unsigned int xkb_repeat_delay;
/* keyboard key-repeat rate */
struct conf_grab *grab_page_up;
/* page-down grab */
struct conf_grab *grab_page_down;
+ /* zoom-in grab */
+ struct conf_grab *grab_zoom_in;
+ /* zoom-out grab */
+ struct conf_grab *grab_zoom_out;
/* session-next grab */
struct conf_grab *grab_session_next;
/* session-prev grab */
struct conf_grab *grab_session_prev;
+ /* session-dummy grab */
+ struct conf_grab *grab_session_dummy;
/* session-close grab */
struct conf_grab *grab_session_close;
/* terminal-new grab */
struct conf_grab *grab_terminal_new;
/* Video Options */
- /* use framebuffers instead of DRM */
- bool fbdev;
- /* use dumb DRM devices */
- bool dumb;
- /* frame-rate limit */
- unsigned int fps;
+ /* use DRM if available */
+ bool drm;
+ /* use 3D hardware-acceleration if available */
+ bool hwaccel;
+ /* gpu selection mode */
+ unsigned int gpus;
/* render engine */
char *render_engine;
- /* print rendering engine timing information */
- bool render_timing;
/* Font Options */
/* font engine */
unsigned int font_ppi;
};
-extern struct kmscon_conf_t kmscon_conf;
-
-int kmscon_conf_new(struct conf_ctx **out, struct kmscon_conf_t *conf);
+int kmscon_conf_new(struct conf_ctx **out);
void kmscon_conf_free(struct conf_ctx *ctx);
int kmscon_conf_load_main(struct conf_ctx *ctx, int argc, char **argv);
int kmscon_conf_load_seat(struct conf_ctx *ctx, const struct conf_ctx *main,
const char *seat);
+static inline bool kmscon_conf_is_current_seat(struct kmscon_conf_t *conf)
+{
+ return conf && shl_string_list_is(conf->seats, "current");
+}
+
+static inline bool kmscon_conf_is_all_seats(struct kmscon_conf_t *conf)
+{
+ return conf && shl_string_list_is(conf->seats, "all");
+}
+
+static inline bool kmscon_conf_is_single_seat(struct kmscon_conf_t *conf)
+{
+ return conf && !kmscon_conf_is_all_seats(conf) &&
+ shl_string_list_count(conf->seats, true) == 1;
+}
+
#endif /* KMSCON_MAIN_H */