mirror of
https://github.com/swaywm/sway.git
synced 2024-11-15 20:53:17 +00:00
Move bar config into its own file
This commit is contained in:
parent
bf7a4cd0eb
commit
569b2bfd5d
|
@ -12,6 +12,8 @@
|
||||||
#include "container.h"
|
#include "container.h"
|
||||||
#include "wlr-layer-shell-unstable-v1-protocol.h"
|
#include "wlr-layer-shell-unstable-v1-protocol.h"
|
||||||
|
|
||||||
|
// TODO: Refactor this shit
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Describes a variable created via the `set` command.
|
* Describes a variable created via the `set` command.
|
||||||
*/
|
*/
|
||||||
|
@ -407,11 +409,6 @@ void merge_output_config(struct output_config *dst, struct output_config *src);
|
||||||
void apply_output_config(struct output_config *oc, swayc_t *output);
|
void apply_output_config(struct output_config *oc, swayc_t *output);
|
||||||
void free_output_config(struct output_config *oc);
|
void free_output_config(struct output_config *oc);
|
||||||
|
|
||||||
/**
|
|
||||||
* Updates the list of active bar modifiers
|
|
||||||
*/
|
|
||||||
void update_active_bar_modifiers(void);
|
|
||||||
|
|
||||||
int workspace_output_cmp_workspace(const void *a, const void *b);
|
int workspace_output_cmp_workspace(const void *a, const void *b);
|
||||||
|
|
||||||
int sway_binding_cmp(const void *a, const void *b);
|
int sway_binding_cmp(const void *a, const void *b);
|
||||||
|
@ -420,27 +417,16 @@ int sway_binding_cmp_keys(const void *a, const void *b);
|
||||||
void free_sway_binding(struct sway_binding *sb);
|
void free_sway_binding(struct sway_binding *sb);
|
||||||
struct sway_binding *sway_binding_dup(struct sway_binding *sb);
|
struct sway_binding *sway_binding_dup(struct sway_binding *sb);
|
||||||
|
|
||||||
int sway_mouse_binding_cmp(const void *a, const void *b);
|
/* Bar stuff */
|
||||||
int sway_mouse_binding_cmp_qsort(const void *a, const void *b);
|
|
||||||
int sway_mouse_binding_cmp_buttons(const void *a, const void *b);
|
|
||||||
void free_sway_mouse_binding(struct sway_mouse_binding *smb);
|
|
||||||
|
|
||||||
void load_swaybars();
|
void load_swaybars();
|
||||||
void terminate_swaybg(pid_t pid);
|
void terminate_swaybg(pid_t pid);
|
||||||
|
|
||||||
/**
|
|
||||||
* Allocate and initialize default bar configuration.
|
|
||||||
*/
|
|
||||||
struct bar_config *default_bar_config(void);
|
struct bar_config *default_bar_config(void);
|
||||||
|
void free_bar_config(struct bar_config *bar);
|
||||||
|
|
||||||
/**
|
/* Global config singleton. */
|
||||||
* Global config singleton.
|
|
||||||
*/
|
|
||||||
extern struct sway_config *config;
|
extern struct sway_config *config;
|
||||||
|
|
||||||
/**
|
/* Config file currently being read */
|
||||||
* Config file currently being read.
|
|
||||||
*/
|
|
||||||
extern const char *current_config_path;
|
extern const char *current_config_path;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
127
sway/config.c
127
sway/config.c
|
@ -110,48 +110,6 @@ void free_config(struct sway_config *config) {
|
||||||
free(config);
|
free(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void free_bar(struct bar_config *bar) {
|
|
||||||
if (!bar) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
free(bar->mode);
|
|
||||||
free(bar->position);
|
|
||||||
free(bar->hidden_state);
|
|
||||||
free(bar->status_command);
|
|
||||||
free(bar->font);
|
|
||||||
free(bar->separator_symbol);
|
|
||||||
// TODO: Free mouse bindings
|
|
||||||
list_free(bar->bindings);
|
|
||||||
if (bar->outputs) {
|
|
||||||
free_flat_list(bar->outputs);
|
|
||||||
}
|
|
||||||
if (bar->pid != 0) {
|
|
||||||
// TODO terminate_swaybar(bar->pid);
|
|
||||||
}
|
|
||||||
free(bar->colors.background);
|
|
||||||
free(bar->colors.statusline);
|
|
||||||
free(bar->colors.separator);
|
|
||||||
free(bar->colors.focused_background);
|
|
||||||
free(bar->colors.focused_statusline);
|
|
||||||
free(bar->colors.focused_separator);
|
|
||||||
free(bar->colors.focused_workspace_border);
|
|
||||||
free(bar->colors.focused_workspace_bg);
|
|
||||||
free(bar->colors.focused_workspace_text);
|
|
||||||
free(bar->colors.active_workspace_border);
|
|
||||||
free(bar->colors.active_workspace_bg);
|
|
||||||
free(bar->colors.active_workspace_text);
|
|
||||||
free(bar->colors.inactive_workspace_border);
|
|
||||||
free(bar->colors.inactive_workspace_bg);
|
|
||||||
free(bar->colors.inactive_workspace_text);
|
|
||||||
free(bar->colors.urgent_workspace_border);
|
|
||||||
free(bar->colors.urgent_workspace_bg);
|
|
||||||
free(bar->colors.urgent_workspace_text);
|
|
||||||
free(bar->colors.binding_mode_border);
|
|
||||||
free(bar->colors.binding_mode_bg);
|
|
||||||
free(bar->colors.binding_mode_text);
|
|
||||||
free(bar);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void destroy_removed_seats(struct sway_config *old_config,
|
static void destroy_removed_seats(struct sway_config *old_config,
|
||||||
struct sway_config *new_config) {
|
struct sway_config *new_config) {
|
||||||
struct seat_config *seat_config;
|
struct seat_config *seat_config;
|
||||||
|
@ -281,91 +239,6 @@ cleanup:
|
||||||
sway_abort("Unable to allocate config structures");
|
sway_abort("Unable to allocate config structures");
|
||||||
}
|
}
|
||||||
|
|
||||||
struct bar_config *default_bar_config(void) {
|
|
||||||
struct bar_config *bar = NULL;
|
|
||||||
bar = malloc(sizeof(struct bar_config));
|
|
||||||
if (!bar) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (!(bar->mode = strdup("dock"))) goto cleanup;
|
|
||||||
if (!(bar->hidden_state = strdup("hide"))) goto cleanup;
|
|
||||||
bar->outputs = NULL;
|
|
||||||
bar->position = strdup("bottom");
|
|
||||||
if (!(bar->bindings = create_list())) goto cleanup;
|
|
||||||
if (!(bar->status_command = strdup("while :; do date +'%Y-%m-%d %l:%M:%S %p'; sleep 1; done"))) goto cleanup;
|
|
||||||
bar->pango_markup = false;
|
|
||||||
bar->swaybar_command = NULL;
|
|
||||||
bar->font = NULL;
|
|
||||||
bar->height = -1;
|
|
||||||
bar->workspace_buttons = true;
|
|
||||||
bar->wrap_scroll = false;
|
|
||||||
bar->separator_symbol = NULL;
|
|
||||||
bar->strip_workspace_numbers = false;
|
|
||||||
bar->binding_mode_indicator = true;
|
|
||||||
bar->verbose = false;
|
|
||||||
bar->pid = 0;
|
|
||||||
// set default colors
|
|
||||||
if (!(bar->colors.background = strndup("#000000ff", 9))) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (!(bar->colors.statusline = strndup("#ffffffff", 9))) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (!(bar->colors.separator = strndup("#666666ff", 9))) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (!(bar->colors.focused_workspace_border = strndup("#4c7899ff", 9))) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (!(bar->colors.focused_workspace_bg = strndup("#285577ff", 9))) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (!(bar->colors.focused_workspace_text = strndup("#ffffffff", 9))) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (!(bar->colors.active_workspace_border = strndup("#333333ff", 9))) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (!(bar->colors.active_workspace_bg = strndup("#5f676aff", 9))) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (!(bar->colors.active_workspace_text = strndup("#ffffffff", 9))) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (!(bar->colors.inactive_workspace_border = strndup("#333333ff", 9))) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (!(bar->colors.inactive_workspace_bg = strndup("#222222ff", 9))) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (!(bar->colors.inactive_workspace_text = strndup("#888888ff", 9))) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (!(bar->colors.urgent_workspace_border = strndup("#2f343aff", 9))) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (!(bar->colors.urgent_workspace_bg = strndup("#900000ff", 9))) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (!(bar->colors.urgent_workspace_text = strndup("#ffffffff", 9))) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
// if the following colors stay undefined, they fall back to background,
|
|
||||||
// statusline, separator and urgent_workspace_*.
|
|
||||||
bar->colors.focused_background = NULL;
|
|
||||||
bar->colors.focused_statusline = NULL;
|
|
||||||
bar->colors.focused_separator = NULL;
|
|
||||||
bar->colors.binding_mode_border = NULL;
|
|
||||||
bar->colors.binding_mode_bg = NULL;
|
|
||||||
bar->colors.binding_mode_text = NULL;
|
|
||||||
|
|
||||||
list_add(config->bars, bar);
|
|
||||||
return bar;
|
|
||||||
cleanup:
|
|
||||||
free_bar(bar);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool file_exists(const char *path) {
|
static bool file_exists(const char *path) {
|
||||||
return path && access(path, R_OK) != -1;
|
return path && access(path, R_OK) != -1;
|
||||||
}
|
}
|
||||||
|
|
143
sway/config/bar.c
Normal file
143
sway/config/bar.c
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
#define _POSIX_C_SOURCE 200809L
|
||||||
|
#define _XOPEN_SOURCE 700
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <wordexp.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <strings.h>
|
||||||
|
#include "sway/config.h"
|
||||||
|
#include "stringop.h"
|
||||||
|
#include "list.h"
|
||||||
|
#include "log.h"
|
||||||
|
|
||||||
|
void free_bar_config(struct bar_config *bar) {
|
||||||
|
if (!bar) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
free(bar->mode);
|
||||||
|
free(bar->position);
|
||||||
|
free(bar->hidden_state);
|
||||||
|
free(bar->status_command);
|
||||||
|
free(bar->font);
|
||||||
|
free(bar->separator_symbol);
|
||||||
|
// TODO: Free mouse bindings
|
||||||
|
list_free(bar->bindings);
|
||||||
|
if (bar->outputs) {
|
||||||
|
free_flat_list(bar->outputs);
|
||||||
|
}
|
||||||
|
if (bar->pid != 0) {
|
||||||
|
// TODO terminate_swaybar(bar->pid);
|
||||||
|
}
|
||||||
|
free(bar->colors.background);
|
||||||
|
free(bar->colors.statusline);
|
||||||
|
free(bar->colors.separator);
|
||||||
|
free(bar->colors.focused_background);
|
||||||
|
free(bar->colors.focused_statusline);
|
||||||
|
free(bar->colors.focused_separator);
|
||||||
|
free(bar->colors.focused_workspace_border);
|
||||||
|
free(bar->colors.focused_workspace_bg);
|
||||||
|
free(bar->colors.focused_workspace_text);
|
||||||
|
free(bar->colors.active_workspace_border);
|
||||||
|
free(bar->colors.active_workspace_bg);
|
||||||
|
free(bar->colors.active_workspace_text);
|
||||||
|
free(bar->colors.inactive_workspace_border);
|
||||||
|
free(bar->colors.inactive_workspace_bg);
|
||||||
|
free(bar->colors.inactive_workspace_text);
|
||||||
|
free(bar->colors.urgent_workspace_border);
|
||||||
|
free(bar->colors.urgent_workspace_bg);
|
||||||
|
free(bar->colors.urgent_workspace_text);
|
||||||
|
free(bar->colors.binding_mode_border);
|
||||||
|
free(bar->colors.binding_mode_bg);
|
||||||
|
free(bar->colors.binding_mode_text);
|
||||||
|
free(bar);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct bar_config *default_bar_config(void) {
|
||||||
|
struct bar_config *bar = NULL;
|
||||||
|
bar = malloc(sizeof(struct bar_config));
|
||||||
|
if (!bar) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if (!(bar->mode = strdup("dock"))) goto cleanup;
|
||||||
|
if (!(bar->hidden_state = strdup("hide"))) goto cleanup;
|
||||||
|
bar->outputs = NULL;
|
||||||
|
bar->position = strdup("bottom");
|
||||||
|
if (!(bar->bindings = create_list())) goto cleanup;
|
||||||
|
if (!(bar->status_command = strdup("while :; do date +'%Y-%m-%d %l:%M:%S %p'; sleep 1; done"))) goto cleanup;
|
||||||
|
bar->pango_markup = false;
|
||||||
|
bar->swaybar_command = NULL;
|
||||||
|
bar->font = NULL;
|
||||||
|
bar->height = -1;
|
||||||
|
bar->workspace_buttons = true;
|
||||||
|
bar->wrap_scroll = false;
|
||||||
|
bar->separator_symbol = NULL;
|
||||||
|
bar->strip_workspace_numbers = false;
|
||||||
|
bar->binding_mode_indicator = true;
|
||||||
|
bar->verbose = false;
|
||||||
|
bar->pid = 0;
|
||||||
|
// set default colors
|
||||||
|
if (!(bar->colors.background = strndup("#000000ff", 9))) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
if (!(bar->colors.statusline = strndup("#ffffffff", 9))) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
if (!(bar->colors.separator = strndup("#666666ff", 9))) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
if (!(bar->colors.focused_workspace_border = strndup("#4c7899ff", 9))) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
if (!(bar->colors.focused_workspace_bg = strndup("#285577ff", 9))) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
if (!(bar->colors.focused_workspace_text = strndup("#ffffffff", 9))) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
if (!(bar->colors.active_workspace_border = strndup("#333333ff", 9))) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
if (!(bar->colors.active_workspace_bg = strndup("#5f676aff", 9))) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
if (!(bar->colors.active_workspace_text = strndup("#ffffffff", 9))) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
if (!(bar->colors.inactive_workspace_border = strndup("#333333ff", 9))) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
if (!(bar->colors.inactive_workspace_bg = strndup("#222222ff", 9))) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
if (!(bar->colors.inactive_workspace_text = strndup("#888888ff", 9))) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
if (!(bar->colors.urgent_workspace_border = strndup("#2f343aff", 9))) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
if (!(bar->colors.urgent_workspace_bg = strndup("#900000ff", 9))) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
if (!(bar->colors.urgent_workspace_text = strndup("#ffffffff", 9))) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
// if the following colors stay undefined, they fall back to background,
|
||||||
|
// statusline, separator and urgent_workspace_*.
|
||||||
|
bar->colors.focused_background = NULL;
|
||||||
|
bar->colors.focused_statusline = NULL;
|
||||||
|
bar->colors.focused_separator = NULL;
|
||||||
|
bar->colors.binding_mode_border = NULL;
|
||||||
|
bar->colors.binding_mode_bg = NULL;
|
||||||
|
bar->colors.binding_mode_text = NULL;
|
||||||
|
|
||||||
|
list_add(config->bars, bar);
|
||||||
|
return bar;
|
||||||
|
cleanup:
|
||||||
|
free_bar_config(bar);
|
||||||
|
return NULL;
|
||||||
|
}
|
|
@ -186,7 +186,7 @@ void apply_output_config(struct output_config *oc, swayc_t *output) {
|
||||||
output_id[bufsize-1] = 0;
|
output_id[bufsize-1] = 0;
|
||||||
|
|
||||||
char *const cmd[] = {
|
char *const cmd[] = {
|
||||||
"./swaybg/swaybg",
|
"swaybg",
|
||||||
output_id,
|
output_id,
|
||||||
oc->background,
|
oc->background,
|
||||||
oc->background_option,
|
oc->background_option,
|
||||||
|
|
|
@ -64,6 +64,7 @@ sway_sources = files(
|
||||||
'commands/reload.c',
|
'commands/reload.c',
|
||||||
'commands/workspace.c',
|
'commands/workspace.c',
|
||||||
'config.c',
|
'config.c',
|
||||||
|
'config/bar.c',
|
||||||
'config/output.c',
|
'config/output.c',
|
||||||
'config/seat.c',
|
'config/seat.c',
|
||||||
'config/input.c',
|
'config/input.c',
|
||||||
|
|
Loading…
Reference in a new issue