mirror of
https://github.com/swaywm/sway.git
synced 2024-11-23 08:21:28 +00:00
Merge branch 'master' into fix-stacked-layout
This commit is contained in:
commit
56ad148403
|
@ -107,7 +107,7 @@ int main(int argc, const char **argv) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int desired_output = atoi(argv[1]);
|
int desired_output = atoi(argv[1]);
|
||||||
sway_log(L_INFO, "Using output %d of %d", desired_output, registry->outputs->length);
|
sway_log(WLR_INFO, "Using output %d of %d", desired_output, registry->outputs->length);
|
||||||
int i;
|
int i;
|
||||||
struct output_state *output = registry->outputs->items[desired_output];
|
struct output_state *output = registry->outputs->items[desired_output];
|
||||||
struct window *window = window_setup(registry, 100, 100, false);
|
struct window *window = window_setup(registry, 100, 100, false);
|
||||||
|
|
|
@ -3,9 +3,9 @@
|
||||||
Use `sway_log(importance, fmt, ...)` to log. The following importances are
|
Use `sway_log(importance, fmt, ...)` to log. The following importances are
|
||||||
available:
|
available:
|
||||||
|
|
||||||
* `L_DEBUG`: Debug messages, only shows with `sway -d`
|
* `WLR_DEBUG`: Debug messages, only shows with `sway -d`
|
||||||
* `L_INFO`: Informational messages
|
* `WLR_INFO`: Informational messages
|
||||||
* `L_ERROR`: Error messages
|
* `WLR_ERROR`: Error messages
|
||||||
|
|
||||||
`sway_log` is a macro that calls `_sway_log` with the current filename and line
|
`sway_log` is a macro that calls `_sway_log` with the current filename and line
|
||||||
number, which are written into the log with your message.
|
number, which are written into the log with your message.
|
||||||
|
|
|
@ -18,7 +18,7 @@ enum background_mode parse_background_mode(const char *mode) {
|
||||||
} else if (strcmp(mode, "solid_color") == 0) {
|
} else if (strcmp(mode, "solid_color") == 0) {
|
||||||
return BACKGROUND_MODE_SOLID_COLOR;
|
return BACKGROUND_MODE_SOLID_COLOR;
|
||||||
}
|
}
|
||||||
wlr_log(L_ERROR, "Unsupported background mode: %s", mode);
|
wlr_log(WLR_ERROR, "Unsupported background mode: %s", mode);
|
||||||
return BACKGROUND_MODE_INVALID;
|
return BACKGROUND_MODE_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ cairo_surface_t *load_background_image(const char *path) {
|
||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(path, &err);
|
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(path, &err);
|
||||||
if (!pixbuf) {
|
if (!pixbuf) {
|
||||||
wlr_log(L_ERROR, "Failed to load background image (%s).",
|
wlr_log(WLR_ERROR, "Failed to load background image (%s).",
|
||||||
err->message);
|
err->message);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -38,11 +38,11 @@ cairo_surface_t *load_background_image(const char *path) {
|
||||||
image = cairo_image_surface_create_from_png(path);
|
image = cairo_image_surface_create_from_png(path);
|
||||||
#endif //HAVE_GDK_PIXBUF
|
#endif //HAVE_GDK_PIXBUF
|
||||||
if (!image) {
|
if (!image) {
|
||||||
wlr_log(L_ERROR, "Failed to read background image.");
|
wlr_log(WLR_ERROR, "Failed to read background image.");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (cairo_surface_status(image) != CAIRO_STATUS_SUCCESS) {
|
if (cairo_surface_status(image) != CAIRO_STATUS_SUCCESS) {
|
||||||
wlr_log(L_ERROR, "Failed to read background image: %s."
|
wlr_log(WLR_ERROR, "Failed to read background image: %s."
|
||||||
#ifndef HAVE_GDK_PIXBUF
|
#ifndef HAVE_GDK_PIXBUF
|
||||||
"\nSway was compiled without gdk_pixbuf support, so only"
|
"\nSway was compiled without gdk_pixbuf support, so only"
|
||||||
"\nPNG images can be loaded. This is the likely cause."
|
"\nPNG images can be loaded. This is the likely cause."
|
||||||
|
|
|
@ -97,7 +97,7 @@ struct ipc_response *ipc_recv_response(int socketfd) {
|
||||||
error_2:
|
error_2:
|
||||||
free(response);
|
free(response);
|
||||||
error_1:
|
error_1:
|
||||||
wlr_log(L_ERROR, "Unable to allocate memory for IPC response");
|
wlr_log(WLR_ERROR, "Unable to allocate memory for IPC response");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ void sway_terminate(int code);
|
||||||
void _sway_abort(const char *format, ...) {
|
void _sway_abort(const char *format, ...) {
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
_wlr_vlog(L_ERROR, format, args);
|
_wlr_vlog(WLR_ERROR, format, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
sway_terminate(EXIT_FAILURE);
|
sway_terminate(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ bool _sway_assert(bool condition, const char *format, ...) {
|
||||||
|
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
_wlr_vlog(L_ERROR, format, args);
|
_wlr_vlog(WLR_ERROR, format, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
|
|
|
@ -81,7 +81,7 @@ PangoLayout *get_pango_layout(cairo_t *cairo, const char *font,
|
||||||
pango_layout_set_markup(layout, buf, -1);
|
pango_layout_set_markup(layout, buf, -1);
|
||||||
free(buf);
|
free(buf);
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_ERROR, "pango_parse_markup '%s' -> error %s", text,
|
wlr_log(WLR_ERROR, "pango_parse_markup '%s' -> error %s", text,
|
||||||
error->message);
|
error->message);
|
||||||
g_error_free(error);
|
g_error_free(error);
|
||||||
markup = false; // fallback to plain text
|
markup = false; // fallback to plain text
|
||||||
|
|
|
@ -9,7 +9,7 @@ char *read_line(FILE *file) {
|
||||||
char *string = malloc(size);
|
char *string = malloc(size);
|
||||||
char lastChar = '\0';
|
char lastChar = '\0';
|
||||||
if (!string) {
|
if (!string) {
|
||||||
wlr_log(L_ERROR, "Unable to allocate memory for read_line");
|
wlr_log(WLR_ERROR, "Unable to allocate memory for read_line");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
while (1) {
|
while (1) {
|
||||||
|
@ -30,7 +30,7 @@ char *read_line(FILE *file) {
|
||||||
char *new_string = realloc(string, size *= 2);
|
char *new_string = realloc(string, size *= 2);
|
||||||
if (!new_string) {
|
if (!new_string) {
|
||||||
free(string);
|
free(string);
|
||||||
wlr_log(L_ERROR, "Unable to allocate memory for read_line");
|
wlr_log(WLR_ERROR, "Unable to allocate memory for read_line");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
string = new_string;
|
string = new_string;
|
||||||
|
|
|
@ -113,7 +113,7 @@ uint32_t parse_color(const char *color) {
|
||||||
|
|
||||||
int len = strlen(color);
|
int len = strlen(color);
|
||||||
if (len != 6 && len != 8) {
|
if (len != 6 && len != 8) {
|
||||||
wlr_log(L_DEBUG, "Invalid color %s, defaulting to color 0xFFFFFFFF", color);
|
wlr_log(WLR_DEBUG, "Invalid color %s, defaulting to color 0xFFFFFFFF", color);
|
||||||
return 0xFFFFFFFF;
|
return 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
uint32_t res = (uint32_t)strtoul(color, NULL, 16);
|
uint32_t res = (uint32_t)strtoul(color, NULL, 16);
|
||||||
|
|
|
@ -3,13 +3,19 @@
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <wlr/util/log.h>
|
#include <wlr/util/log.h>
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#define ATTRIB_PRINTF(start, end) __attribute__((format(printf, start, end)))
|
||||||
|
#else
|
||||||
|
#define ATTRIB_PRINTF(start, end)
|
||||||
|
#endif
|
||||||
|
|
||||||
void _sway_abort(const char *filename, ...) ATTRIB_PRINTF(1, 2);
|
void _sway_abort(const char *filename, ...) ATTRIB_PRINTF(1, 2);
|
||||||
#define sway_abort(FMT, ...) \
|
#define sway_abort(FMT, ...) \
|
||||||
_sway_abort("[%s:%d] " FMT, wlr_strip_path(__FILE__), __LINE__, ##__VA_ARGS__)
|
_sway_abort("[%s:%d] " FMT, _wlr_strip_path(__FILE__), __LINE__, ##__VA_ARGS__)
|
||||||
|
|
||||||
bool _sway_assert(bool condition, const char* format, ...) ATTRIB_PRINTF(2, 3);
|
bool _sway_assert(bool condition, const char* format, ...) ATTRIB_PRINTF(2, 3);
|
||||||
#define sway_assert(COND, FMT, ...) \
|
#define sway_assert(COND, FMT, ...) \
|
||||||
_sway_assert(COND, "[%s:%d] %s:" FMT, wlr_strip_path(__FILE__), __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__)
|
_sway_assert(COND, "[%s:%d] %s:" FMT, _wlr_strip_path(__FILE__), __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__)
|
||||||
|
|
||||||
void error_handler(int sig);
|
void error_handler(int sig);
|
||||||
|
|
||||||
|
|
|
@ -163,7 +163,7 @@ struct cmd_handler *find_handler(char *line, struct cmd_handler *cmd_handlers,
|
||||||
int handlers_size) {
|
int handlers_size) {
|
||||||
struct cmd_handler d = { .command=line };
|
struct cmd_handler d = { .command=line };
|
||||||
struct cmd_handler *res = NULL;
|
struct cmd_handler *res = NULL;
|
||||||
wlr_log(L_DEBUG, "find_handler(%s)", line);
|
wlr_log(WLR_DEBUG, "find_handler(%s)", line);
|
||||||
|
|
||||||
bool config_loading = config->reading || !config->active;
|
bool config_loading = config->reading || !config->active;
|
||||||
|
|
||||||
|
@ -248,10 +248,10 @@ struct cmd_results *execute_command(char *_exec, struct sway_seat *seat) {
|
||||||
cmd = argsep(&cmdlist, ",");
|
cmd = argsep(&cmdlist, ",");
|
||||||
cmd += strspn(cmd, whitespace);
|
cmd += strspn(cmd, whitespace);
|
||||||
if (strcmp(cmd, "") == 0) {
|
if (strcmp(cmd, "") == 0) {
|
||||||
wlr_log(L_INFO, "Ignoring empty command.");
|
wlr_log(WLR_INFO, "Ignoring empty command.");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
wlr_log(L_INFO, "Handling command '%s'", cmd);
|
wlr_log(WLR_INFO, "Handling command '%s'", cmd);
|
||||||
//TODO better handling of argv
|
//TODO better handling of argv
|
||||||
int argc;
|
int argc;
|
||||||
char **argv = split_args(cmd, &argc);
|
char **argv = split_args(cmd, &argc);
|
||||||
|
@ -355,7 +355,7 @@ struct cmd_results *config_command(char *exec) {
|
||||||
results = cmd_results_new(CMD_BLOCK_END, NULL, NULL);
|
results = cmd_results_new(CMD_BLOCK_END, NULL, NULL);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
wlr_log(L_INFO, "handling config command '%s'", exec);
|
wlr_log(WLR_INFO, "handling config command '%s'", exec);
|
||||||
struct cmd_handler *handler = find_handler(argv[0], NULL, 0);
|
struct cmd_handler *handler = find_handler(argv[0], NULL, 0);
|
||||||
if (!handler) {
|
if (!handler) {
|
||||||
char *input = argv[0] ? argv[0] : "(empty)";
|
char *input = argv[0] ? argv[0] : "(empty)";
|
||||||
|
@ -388,7 +388,7 @@ cleanup:
|
||||||
struct cmd_results *config_subcommand(char **argv, int argc,
|
struct cmd_results *config_subcommand(char **argv, int argc,
|
||||||
struct cmd_handler *handlers, size_t handlers_size) {
|
struct cmd_handler *handlers, size_t handlers_size) {
|
||||||
char *command = join_args(argv, argc);
|
char *command = join_args(argv, argc);
|
||||||
wlr_log(L_DEBUG, "Subcommand: %s", command);
|
wlr_log(WLR_DEBUG, "Subcommand: %s", command);
|
||||||
free(command);
|
free(command);
|
||||||
|
|
||||||
struct cmd_handler *handler = find_handler(argv[0], handlers,
|
struct cmd_handler *handler = find_handler(argv[0], handlers,
|
||||||
|
@ -479,7 +479,7 @@ struct cmd_results *config_commands_command(char *exec) {
|
||||||
}
|
}
|
||||||
policy->context = context;
|
policy->context = context;
|
||||||
|
|
||||||
wlr_log(L_INFO, "Set command policy for %s to %d",
|
wlr_log(WLR_INFO, "Set command policy for %s to %d",
|
||||||
policy->command, policy->context);
|
policy->command, policy->context);
|
||||||
|
|
||||||
results = cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
results = cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
|
@ -493,7 +493,7 @@ struct cmd_results *cmd_results_new(enum cmd_status status,
|
||||||
const char *input, const char *format, ...) {
|
const char *input, const char *format, ...) {
|
||||||
struct cmd_results *results = malloc(sizeof(struct cmd_results));
|
struct cmd_results *results = malloc(sizeof(struct cmd_results));
|
||||||
if (!results) {
|
if (!results) {
|
||||||
wlr_log(L_ERROR, "Unable to allocate command results");
|
wlr_log(WLR_ERROR, "Unable to allocate command results");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
results->status = status;
|
results->status = status;
|
||||||
|
|
|
@ -45,7 +45,7 @@ struct cmd_results *cmd_assign(int argc, char **argv) {
|
||||||
criteria->target = join_args(argv, target_len);
|
criteria->target = join_args(argv, target_len);
|
||||||
|
|
||||||
list_add(config->criteria, criteria);
|
list_add(config->criteria, criteria);
|
||||||
wlr_log(L_DEBUG, "assign: '%s' -> '%s' added", criteria->raw,
|
wlr_log(WLR_DEBUG, "assign: '%s' -> '%s' added", criteria->raw,
|
||||||
criteria->target);
|
criteria->target);
|
||||||
|
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
|
|
|
@ -63,13 +63,13 @@ struct cmd_results *cmd_bar(int argc, char **argv) {
|
||||||
for (int i = 0; i < config->bars->length; ++i) {
|
for (int i = 0; i < config->bars->length; ++i) {
|
||||||
struct bar_config *item = config->bars->items[i];
|
struct bar_config *item = config->bars->items[i];
|
||||||
if (strcmp(item->id, argv[0]) == 0) {
|
if (strcmp(item->id, argv[0]) == 0) {
|
||||||
wlr_log(L_DEBUG, "Selecting bar: %s", argv[0]);
|
wlr_log(WLR_DEBUG, "Selecting bar: %s", argv[0]);
|
||||||
bar = item;
|
bar = item;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!bar) {
|
if (!bar) {
|
||||||
wlr_log(L_DEBUG, "Creating bar: %s", argv[0]);
|
wlr_log(WLR_DEBUG, "Creating bar: %s", argv[0]);
|
||||||
bar = default_bar_config();
|
bar = default_bar_config();
|
||||||
if (!bar) {
|
if (!bar) {
|
||||||
return cmd_results_new(CMD_FAILURE, "bar",
|
return cmd_results_new(CMD_FAILURE, "bar",
|
||||||
|
@ -108,7 +108,7 @@ struct cmd_results *cmd_bar(int argc, char **argv) {
|
||||||
|
|
||||||
// Set current bar
|
// Set current bar
|
||||||
config->current_bar = bar;
|
config->current_bar = bar;
|
||||||
wlr_log(L_DEBUG, "Creating bar %s", bar->id);
|
wlr_log(WLR_DEBUG, "Creating bar %s", bar->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
return config_subcommand(argv, argc, bar_handlers, sizeof(bar_handlers));
|
return config_subcommand(argv, argc, bar_handlers, sizeof(bar_handlers));
|
||||||
|
|
|
@ -15,11 +15,11 @@ struct cmd_results *bar_cmd_binding_mode_indicator(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
if (strcasecmp("yes", argv[0]) == 0) {
|
if (strcasecmp("yes", argv[0]) == 0) {
|
||||||
config->current_bar->binding_mode_indicator = true;
|
config->current_bar->binding_mode_indicator = true;
|
||||||
wlr_log(L_DEBUG, "Enabling binding mode indicator on bar: %s",
|
wlr_log(WLR_DEBUG, "Enabling binding mode indicator on bar: %s",
|
||||||
config->current_bar->id);
|
config->current_bar->id);
|
||||||
} else if (strcasecmp("no", argv[0]) == 0) {
|
} else if (strcasecmp("no", argv[0]) == 0) {
|
||||||
config->current_bar->binding_mode_indicator = false;
|
config->current_bar->binding_mode_indicator = false;
|
||||||
wlr_log(L_DEBUG, "Disabling binding mode indicator on bar: %s",
|
wlr_log(WLR_DEBUG, "Disabling binding mode indicator on bar: %s",
|
||||||
config->current_bar->id);
|
config->current_bar->id);
|
||||||
}
|
}
|
||||||
return cmd_results_new(CMD_INVALID, "binding_mode_indicator",
|
return cmd_results_new(CMD_INVALID, "binding_mode_indicator",
|
||||||
|
|
|
@ -15,7 +15,7 @@ struct cmd_results *bar_cmd_font(int argc, char **argv) {
|
||||||
char *font = join_args(argv, argc);
|
char *font = join_args(argv, argc);
|
||||||
free(config->current_bar->font);
|
free(config->current_bar->font);
|
||||||
config->current_bar->font = font;
|
config->current_bar->font = font;
|
||||||
wlr_log(L_DEBUG, "Settings font '%s' for bar: %s",
|
wlr_log(WLR_DEBUG, "Settings font '%s' for bar: %s",
|
||||||
config->current_bar->font, config->current_bar->id);
|
config->current_bar->font, config->current_bar->id);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ struct cmd_results *bar_cmd_height(int argc, char **argv) {
|
||||||
"Invalid height value: %s", argv[0]);
|
"Invalid height value: %s", argv[0]);
|
||||||
}
|
}
|
||||||
config->current_bar->height = height;
|
config->current_bar->height = height;
|
||||||
wlr_log(L_DEBUG, "Setting bar height to %d on bar: %s",
|
wlr_log(WLR_DEBUG, "Setting bar height to %d on bar: %s",
|
||||||
height, config->current_bar->id);
|
height, config->current_bar->id);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ static struct cmd_results *bar_set_hidden_state(struct bar_config *bar,
|
||||||
if (!config->reading) {
|
if (!config->reading) {
|
||||||
ipc_event_barconfig_update(bar);
|
ipc_event_barconfig_update(bar);
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Setting hidden_state: '%s' for bar: %s",
|
wlr_log(WLR_DEBUG, "Setting hidden_state: '%s' for bar: %s",
|
||||||
bar->hidden_state, bar->id);
|
bar->hidden_state, bar->id);
|
||||||
}
|
}
|
||||||
// free old mode
|
// free old mode
|
||||||
|
|
|
@ -24,7 +24,7 @@ struct cmd_results *bar_cmd_id(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "Renaming bar: '%s' to '%s'", oldname, name);
|
wlr_log(WLR_DEBUG, "Renaming bar: '%s' to '%s'", oldname, name);
|
||||||
|
|
||||||
// free old bar id
|
// free old bar id
|
||||||
free(config->current_bar->id);
|
free(config->current_bar->id);
|
||||||
|
|
|
@ -28,7 +28,7 @@ static struct cmd_results *bar_set_mode(struct bar_config *bar, const char *mode
|
||||||
if (!config->reading) {
|
if (!config->reading) {
|
||||||
ipc_event_barconfig_update(bar);
|
ipc_event_barconfig_update(bar);
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Setting mode: '%s' for bar: %s", bar->mode, bar->id);
|
wlr_log(WLR_DEBUG, "Setting mode: '%s' for bar: %s", bar->mode, bar->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// free old mode
|
// free old mode
|
||||||
|
|
|
@ -30,7 +30,7 @@ struct cmd_results *bar_cmd_modifier(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
free_flat_list(split);
|
free_flat_list(split);
|
||||||
config->current_bar->modifier = mod;
|
config->current_bar->modifier = mod;
|
||||||
wlr_log(L_DEBUG,
|
wlr_log(WLR_DEBUG,
|
||||||
"Show/Hide the bar when pressing '%s' in hide mode.", argv[0]);
|
"Show/Hide the bar when pressing '%s' in hide mode.", argv[0]);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ struct cmd_results *bar_cmd_output(int argc, char **argv) {
|
||||||
|
|
||||||
if (add_output) {
|
if (add_output) {
|
||||||
list_add(outputs, strdup(output));
|
list_add(outputs, strdup(output));
|
||||||
wlr_log(L_DEBUG, "Adding bar: '%s' to output '%s'",
|
wlr_log(WLR_DEBUG, "Adding bar: '%s' to output '%s'",
|
||||||
config->current_bar->id, output);
|
config->current_bar->id, output);
|
||||||
}
|
}
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
|
|
|
@ -13,11 +13,11 @@ struct cmd_results *bar_cmd_pango_markup(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
if (strcasecmp("enabled", argv[0]) == 0) {
|
if (strcasecmp("enabled", argv[0]) == 0) {
|
||||||
config->current_bar->pango_markup = true;
|
config->current_bar->pango_markup = true;
|
||||||
wlr_log(L_DEBUG, "Enabling pango markup for bar: %s",
|
wlr_log(WLR_DEBUG, "Enabling pango markup for bar: %s",
|
||||||
config->current_bar->id);
|
config->current_bar->id);
|
||||||
} else if (strcasecmp("disabled", argv[0]) == 0) {
|
} else if (strcasecmp("disabled", argv[0]) == 0) {
|
||||||
config->current_bar->pango_markup = false;
|
config->current_bar->pango_markup = false;
|
||||||
wlr_log(L_DEBUG, "Disabling pango markup for bar: %s",
|
wlr_log(WLR_DEBUG, "Disabling pango markup for bar: %s",
|
||||||
config->current_bar->id);
|
config->current_bar->id);
|
||||||
} else {
|
} else {
|
||||||
error = cmd_results_new(CMD_INVALID, "pango_markup",
|
error = cmd_results_new(CMD_INVALID, "pango_markup",
|
||||||
|
|
|
@ -15,7 +15,7 @@ struct cmd_results *bar_cmd_position(int argc, char **argv) {
|
||||||
char *valid[] = { "top", "bottom", "left", "right" };
|
char *valid[] = { "top", "bottom", "left", "right" };
|
||||||
for (size_t i = 0; i < sizeof(valid) / sizeof(valid[0]); ++i) {
|
for (size_t i = 0; i < sizeof(valid) / sizeof(valid[0]); ++i) {
|
||||||
if (strcasecmp(valid[i], argv[0]) == 0) {
|
if (strcasecmp(valid[i], argv[0]) == 0) {
|
||||||
wlr_log(L_DEBUG, "Setting bar position '%s' for bar: %s",
|
wlr_log(WLR_DEBUG, "Setting bar position '%s' for bar: %s",
|
||||||
argv[0], config->current_bar->id);
|
argv[0], config->current_bar->id);
|
||||||
config->current_bar->position = strdup(argv[0]);
|
config->current_bar->position = strdup(argv[0]);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
|
|
|
@ -14,7 +14,7 @@ struct cmd_results *bar_cmd_separator_symbol(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
free(config->current_bar->separator_symbol);
|
free(config->current_bar->separator_symbol);
|
||||||
config->current_bar->separator_symbol = strdup(argv[0]);
|
config->current_bar->separator_symbol = strdup(argv[0]);
|
||||||
wlr_log(L_DEBUG, "Settings separator_symbol '%s' for bar: %s",
|
wlr_log(WLR_DEBUG, "Settings separator_symbol '%s' for bar: %s",
|
||||||
config->current_bar->separator_symbol, config->current_bar->id);
|
config->current_bar->separator_symbol, config->current_bar->id);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ struct cmd_results *bar_cmd_status_command(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
free(config->current_bar->status_command);
|
free(config->current_bar->status_command);
|
||||||
config->current_bar->status_command = join_args(argv, argc);
|
config->current_bar->status_command = join_args(argv, argc);
|
||||||
wlr_log(L_DEBUG, "Feeding bar with status command: %s",
|
wlr_log(WLR_DEBUG, "Feeding bar with status command: %s",
|
||||||
config->current_bar->status_command);
|
config->current_bar->status_command);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,11 +15,11 @@ struct cmd_results *bar_cmd_strip_workspace_numbers(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
if (strcasecmp("yes", argv[0]) == 0) {
|
if (strcasecmp("yes", argv[0]) == 0) {
|
||||||
config->current_bar->strip_workspace_numbers = true;
|
config->current_bar->strip_workspace_numbers = true;
|
||||||
wlr_log(L_DEBUG, "Stripping workspace numbers on bar: %s",
|
wlr_log(WLR_DEBUG, "Stripping workspace numbers on bar: %s",
|
||||||
config->current_bar->id);
|
config->current_bar->id);
|
||||||
} else if (strcasecmp("no", argv[0]) == 0) {
|
} else if (strcasecmp("no", argv[0]) == 0) {
|
||||||
config->current_bar->strip_workspace_numbers = false;
|
config->current_bar->strip_workspace_numbers = false;
|
||||||
wlr_log(L_DEBUG, "Enabling workspace numbers on bar: %s",
|
wlr_log(WLR_DEBUG, "Enabling workspace numbers on bar: %s",
|
||||||
config->current_bar->id);
|
config->current_bar->id);
|
||||||
} else {
|
} else {
|
||||||
return cmd_results_new(CMD_INVALID,
|
return cmd_results_new(CMD_INVALID,
|
||||||
|
|
|
@ -14,7 +14,7 @@ struct cmd_results *bar_cmd_swaybar_command(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
free(config->current_bar->swaybar_command);
|
free(config->current_bar->swaybar_command);
|
||||||
config->current_bar->swaybar_command = join_args(argv, argc);
|
config->current_bar->swaybar_command = join_args(argv, argc);
|
||||||
wlr_log(L_DEBUG, "Using custom swaybar command: %s",
|
wlr_log(WLR_DEBUG, "Using custom swaybar command: %s",
|
||||||
config->current_bar->swaybar_command);
|
config->current_bar->swaybar_command);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,11 +14,11 @@ struct cmd_results *bar_cmd_workspace_buttons(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
if (strcasecmp("yes", argv[0]) == 0) {
|
if (strcasecmp("yes", argv[0]) == 0) {
|
||||||
config->current_bar->workspace_buttons = true;
|
config->current_bar->workspace_buttons = true;
|
||||||
wlr_log(L_DEBUG, "Enabling workspace buttons on bar: %s",
|
wlr_log(WLR_DEBUG, "Enabling workspace buttons on bar: %s",
|
||||||
config->current_bar->id);
|
config->current_bar->id);
|
||||||
} else if (strcasecmp("no", argv[0]) == 0) {
|
} else if (strcasecmp("no", argv[0]) == 0) {
|
||||||
config->current_bar->workspace_buttons = false;
|
config->current_bar->workspace_buttons = false;
|
||||||
wlr_log(L_DEBUG, "Disabling workspace buttons on bar: %s",
|
wlr_log(WLR_DEBUG, "Disabling workspace buttons on bar: %s",
|
||||||
config->current_bar->id);
|
config->current_bar->id);
|
||||||
} else {
|
} else {
|
||||||
return cmd_results_new(CMD_INVALID, "workspace_buttons",
|
return cmd_results_new(CMD_INVALID, "workspace_buttons",
|
||||||
|
|
|
@ -13,11 +13,11 @@ struct cmd_results *bar_cmd_wrap_scroll(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
if (strcasecmp("yes", argv[0]) == 0) {
|
if (strcasecmp("yes", argv[0]) == 0) {
|
||||||
config->current_bar->wrap_scroll = true;
|
config->current_bar->wrap_scroll = true;
|
||||||
wlr_log(L_DEBUG, "Enabling wrap scroll on bar: %s",
|
wlr_log(WLR_DEBUG, "Enabling wrap scroll on bar: %s",
|
||||||
config->current_bar->id);
|
config->current_bar->id);
|
||||||
} else if (strcasecmp("no", argv[0]) == 0) {
|
} else if (strcasecmp("no", argv[0]) == 0) {
|
||||||
config->current_bar->wrap_scroll = false;
|
config->current_bar->wrap_scroll = false;
|
||||||
wlr_log(L_DEBUG, "Disabling wrap scroll on bar: %s",
|
wlr_log(WLR_DEBUG, "Disabling wrap scroll on bar: %s",
|
||||||
config->current_bar->id);
|
config->current_bar->id);
|
||||||
} else {
|
} else {
|
||||||
return cmd_results_new(CMD_INVALID,
|
return cmd_results_new(CMD_INVALID,
|
||||||
|
|
|
@ -184,7 +184,7 @@ static struct cmd_results *cmd_bindsym_or_bindcode(int argc, char **argv,
|
||||||
for (int i = 0; i < mode_bindings->length; ++i) {
|
for (int i = 0; i < mode_bindings->length; ++i) {
|
||||||
struct sway_binding *config_binding = mode_bindings->items[i];
|
struct sway_binding *config_binding = mode_bindings->items[i];
|
||||||
if (binding_key_compare(binding, config_binding)) {
|
if (binding_key_compare(binding, config_binding)) {
|
||||||
wlr_log(L_DEBUG, "overwriting old binding with command '%s'",
|
wlr_log(WLR_DEBUG, "overwriting old binding with command '%s'",
|
||||||
config_binding->command);
|
config_binding->command);
|
||||||
free_sway_binding(config_binding);
|
free_sway_binding(config_binding);
|
||||||
mode_bindings->items[i] = binding;
|
mode_bindings->items[i] = binding;
|
||||||
|
@ -196,7 +196,7 @@ static struct cmd_results *cmd_bindsym_or_bindcode(int argc, char **argv,
|
||||||
list_add(mode_bindings, binding);
|
list_add(mode_bindings, binding);
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "%s - Bound %s to command %s",
|
wlr_log(WLR_DEBUG, "%s - Bound %s to command %s",
|
||||||
bindtype, argv[0], binding->command);
|
bindtype, argv[0], binding->command);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ struct cmd_results *cmd_exec(int argc, char **argv) {
|
||||||
if (!config->active) return cmd_results_new(CMD_DEFER, "exec", NULL);
|
if (!config->active) return cmd_results_new(CMD_DEFER, "exec", NULL);
|
||||||
if (config->reloading) {
|
if (config->reloading) {
|
||||||
char *args = join_args(argv, argc);
|
char *args = join_args(argv, argc);
|
||||||
wlr_log(L_DEBUG, "Ignoring 'exec %s' due to reload", args);
|
wlr_log(WLR_DEBUG, "Ignoring 'exec %s' due to reload", args);
|
||||||
free(args);
|
free(args);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ struct cmd_results *cmd_exec_always(int argc, char **argv) {
|
||||||
|
|
||||||
char *tmp = NULL;
|
char *tmp = NULL;
|
||||||
if (strcmp((char*)*argv, "--no-startup-id") == 0) {
|
if (strcmp((char*)*argv, "--no-startup-id") == 0) {
|
||||||
wlr_log(L_INFO, "exec switch '--no-startup-id' not supported, ignored.");
|
wlr_log(WLR_INFO, "exec switch '--no-startup-id' not supported, ignored.");
|
||||||
if ((error = checkarg(argc - 1, "exec_always", EXPECTED_MORE_THAN, 0))) {
|
if ((error = checkarg(argc - 1, "exec_always", EXPECTED_MORE_THAN, 0))) {
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
@ -35,11 +35,11 @@ struct cmd_results *cmd_exec_always(int argc, char **argv) {
|
||||||
strncpy(cmd, tmp, sizeof(cmd) - 1);
|
strncpy(cmd, tmp, sizeof(cmd) - 1);
|
||||||
cmd[sizeof(cmd) - 1] = 0;
|
cmd[sizeof(cmd) - 1] = 0;
|
||||||
free(tmp);
|
free(tmp);
|
||||||
wlr_log(L_DEBUG, "Executing %s", cmd);
|
wlr_log(WLR_DEBUG, "Executing %s", cmd);
|
||||||
|
|
||||||
int fd[2];
|
int fd[2];
|
||||||
if (pipe(fd) != 0) {
|
if (pipe(fd) != 0) {
|
||||||
wlr_log(L_ERROR, "Unable to create pipe for fork");
|
wlr_log(WLR_ERROR, "Unable to create pipe for fork");
|
||||||
}
|
}
|
||||||
|
|
||||||
pid_t pid, child;
|
pid_t pid, child;
|
||||||
|
@ -73,7 +73,7 @@ struct cmd_results *cmd_exec_always(int argc, char **argv) {
|
||||||
// cleanup child process
|
// cleanup child process
|
||||||
waitpid(pid, NULL, 0);
|
waitpid(pid, NULL, 0);
|
||||||
if (child > 0) {
|
if (child > 0) {
|
||||||
wlr_log(L_DEBUG, "Child process created with pid %d", child);
|
wlr_log(WLR_DEBUG, "Child process created with pid %d", child);
|
||||||
// TODO: add PID to active workspace
|
// TODO: add PID to active workspace
|
||||||
} else {
|
} else {
|
||||||
return cmd_results_new(CMD_FAILURE, "exec_always",
|
return cmd_results_new(CMD_FAILURE, "exec_always",
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
#include <wlr/util/log.h>
|
#include <wlr/util/log.h>
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
#include "sway/commands.h"
|
||||||
#include "sway/input/input-manager.h"
|
#include "sway/input/input-manager.h"
|
||||||
#include "sway/input/seat.h"
|
#include "sway/input/seat.h"
|
||||||
|
#include "sway/tree/arrange.h"
|
||||||
#include "sway/tree/view.h"
|
#include "sway/tree/view.h"
|
||||||
#include "sway/commands.h"
|
#include "sway/tree/workspace.h"
|
||||||
|
|
||||||
static bool parse_movement_direction(const char *name,
|
static bool parse_movement_direction(const char *name,
|
||||||
enum movement_direction *out) {
|
enum movement_direction *out) {
|
||||||
|
@ -27,6 +29,21 @@ static bool parse_movement_direction(const char *name,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct cmd_results *focus_mode(struct sway_container *con,
|
||||||
|
struct sway_seat *seat, bool floating) {
|
||||||
|
struct sway_container *ws = con->type == C_WORKSPACE ?
|
||||||
|
con : container_parent(con, C_WORKSPACE);
|
||||||
|
struct sway_container *new_focus = ws;
|
||||||
|
if (floating) {
|
||||||
|
new_focus = ws->sway_workspace->floating;
|
||||||
|
if (new_focus->children->length == 0) {
|
||||||
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
seat_set_focus(seat, seat_get_active_child(seat, new_focus));
|
||||||
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
struct cmd_results *cmd_focus(int argc, char **argv) {
|
struct cmd_results *cmd_focus(int argc, char **argv) {
|
||||||
struct sway_container *con = config->handler_context.current_container;
|
struct sway_container *con = config->handler_context.current_container;
|
||||||
struct sway_seat *seat = config->handler_context.seat;
|
struct sway_seat *seat = config->handler_context.seat;
|
||||||
|
@ -40,11 +57,20 @@ struct cmd_results *cmd_focus(int argc, char **argv) {
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO mode_toggle
|
if (strcmp(argv[0], "floating") == 0) {
|
||||||
|
return focus_mode(con, seat, true);
|
||||||
|
} else if (strcmp(argv[0], "tiling") == 0) {
|
||||||
|
return focus_mode(con, seat, false);
|
||||||
|
} else if (strcmp(argv[0], "mode_toggle") == 0) {
|
||||||
|
return focus_mode(con, seat, !container_is_floating(con));
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: focus output <direction|name>
|
||||||
enum movement_direction direction = 0;
|
enum movement_direction direction = 0;
|
||||||
if (!parse_movement_direction(argv[0], &direction)) {
|
if (!parse_movement_direction(argv[0], &direction)) {
|
||||||
return cmd_results_new(CMD_INVALID, "focus",
|
return cmd_results_new(CMD_INVALID, "focus",
|
||||||
"Expected 'focus <direction|parent|child|mode_toggle>' or 'focus output <direction|name>'");
|
"Expected 'focus <direction|parent|child|mode_toggle|floating|tiling>' "
|
||||||
|
"or 'focus output <direction|name>'");
|
||||||
}
|
}
|
||||||
|
|
||||||
struct sway_container *next_focus = container_get_in_direction(
|
struct sway_container *next_focus = container_get_in_direction(
|
||||||
|
|
|
@ -24,7 +24,7 @@ struct cmd_results *cmd_for_window(int argc, char **argv) {
|
||||||
criteria->cmdlist = join_args(argv + 1, argc - 1);
|
criteria->cmdlist = join_args(argv + 1, argc - 1);
|
||||||
|
|
||||||
list_add(config->criteria, criteria);
|
list_add(config->criteria, criteria);
|
||||||
wlr_log(L_DEBUG, "for_window: '%s' -> '%s' added", criteria->raw, criteria->cmdlist);
|
wlr_log(WLR_DEBUG, "for_window: '%s' -> '%s' added", criteria->raw, criteria->cmdlist);
|
||||||
|
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ struct cmd_results *cmd_input(int argc, char **argv) {
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "entering input block: %s", argv[0]);
|
wlr_log(WLR_DEBUG, "entering input block: %s", argv[0]);
|
||||||
|
|
||||||
config->handler_context.input_config = new_input_config(argv[0]);
|
config->handler_context.input_config = new_input_config(argv[0]);
|
||||||
if (!config->handler_context.input_config) {
|
if (!config->handler_context.input_config) {
|
||||||
|
|
|
@ -16,7 +16,7 @@ struct cmd_results *input_cmd_events(int argc, char **argv) {
|
||||||
return cmd_results_new(CMD_FAILURE, "events",
|
return cmd_results_new(CMD_FAILURE, "events",
|
||||||
"No input device defined.");
|
"No input device defined.");
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "events for device: %s",
|
wlr_log(WLR_DEBUG, "events for device: %s",
|
||||||
current_input_config->identifier);
|
current_input_config->identifier);
|
||||||
struct input_config *new_config =
|
struct input_config *new_config =
|
||||||
new_input_config(current_input_config->identifier);
|
new_input_config(current_input_config->identifier);
|
||||||
|
|
|
@ -28,7 +28,7 @@ struct cmd_results *input_cmd_tap(int argc, char **argv) {
|
||||||
"Expected 'tap <enabled|disabled>'");
|
"Expected 'tap <enabled|disabled>'");
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "apply-tap for device: %s",
|
wlr_log(WLR_DEBUG, "apply-tap for device: %s",
|
||||||
current_input_config->identifier);
|
current_input_config->identifier);
|
||||||
apply_input_config(new_config);
|
apply_input_config(new_config);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
|
|
|
@ -19,7 +19,7 @@ struct cmd_results *input_cmd_xkb_layout(int argc, char **argv) {
|
||||||
|
|
||||||
new_config->xkb_layout = strdup(argv[0]);
|
new_config->xkb_layout = strdup(argv[0]);
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "apply-xkb_layout for device: %s layout: %s",
|
wlr_log(WLR_DEBUG, "apply-xkb_layout for device: %s layout: %s",
|
||||||
current_input_config->identifier, new_config->xkb_layout);
|
current_input_config->identifier, new_config->xkb_layout);
|
||||||
apply_input_config(new_config);
|
apply_input_config(new_config);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
|
|
|
@ -19,7 +19,7 @@ struct cmd_results *input_cmd_xkb_model(int argc, char **argv) {
|
||||||
|
|
||||||
new_config->xkb_model = strdup(argv[0]);
|
new_config->xkb_model = strdup(argv[0]);
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "apply-xkb_model for device: %s model: %s",
|
wlr_log(WLR_DEBUG, "apply-xkb_model for device: %s model: %s",
|
||||||
current_input_config->identifier, new_config->xkb_model);
|
current_input_config->identifier, new_config->xkb_model);
|
||||||
apply_input_config(new_config);
|
apply_input_config(new_config);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
|
|
|
@ -19,7 +19,7 @@ struct cmd_results *input_cmd_xkb_options(int argc, char **argv) {
|
||||||
|
|
||||||
new_config->xkb_options = strdup(argv[0]);
|
new_config->xkb_options = strdup(argv[0]);
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "apply-xkb_options for device: %s options: %s",
|
wlr_log(WLR_DEBUG, "apply-xkb_options for device: %s options: %s",
|
||||||
current_input_config->identifier, new_config->xkb_options);
|
current_input_config->identifier, new_config->xkb_options);
|
||||||
apply_input_config(new_config);
|
apply_input_config(new_config);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
|
|
|
@ -19,7 +19,7 @@ struct cmd_results *input_cmd_xkb_rules(int argc, char **argv) {
|
||||||
|
|
||||||
new_config->xkb_rules = strdup(argv[0]);
|
new_config->xkb_rules = strdup(argv[0]);
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "apply-xkb_rules for device: %s rules: %s",
|
wlr_log(WLR_DEBUG, "apply-xkb_rules for device: %s rules: %s",
|
||||||
current_input_config->identifier, new_config->xkb_rules);
|
current_input_config->identifier, new_config->xkb_rules);
|
||||||
apply_input_config(new_config);
|
apply_input_config(new_config);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
|
|
|
@ -19,7 +19,7 @@ struct cmd_results *input_cmd_xkb_variant(int argc, char **argv) {
|
||||||
|
|
||||||
new_config->xkb_variant = strdup(argv[0]);
|
new_config->xkb_variant = strdup(argv[0]);
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "apply-xkb_variant for device: %s variant: %s",
|
wlr_log(WLR_DEBUG, "apply-xkb_variant for device: %s variant: %s",
|
||||||
current_input_config->identifier, new_config->xkb_variant);
|
current_input_config->identifier, new_config->xkb_variant);
|
||||||
apply_input_config(new_config);
|
apply_input_config(new_config);
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
|
|
|
@ -65,7 +65,7 @@ struct cmd_results *cmd_mode(int argc, char **argv) {
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
if ((config->reading && argc > 1) || (!config->reading && argc == 1)) {
|
if ((config->reading && argc > 1) || (!config->reading && argc == 1)) {
|
||||||
wlr_log(L_DEBUG, "Switching to mode `%s' (pango=%d)",
|
wlr_log(WLR_DEBUG, "Switching to mode `%s' (pango=%d)",
|
||||||
mode->name, mode->pango);
|
mode->name, mode->pango);
|
||||||
}
|
}
|
||||||
// Set current mode
|
// Set current mode
|
||||||
|
|
|
@ -29,7 +29,7 @@ struct cmd_results *cmd_output(int argc, char **argv) {
|
||||||
|
|
||||||
struct output_config *output = new_output_config(argv[0]);
|
struct output_config *output = new_output_config(argv[0]);
|
||||||
if (!output) {
|
if (!output) {
|
||||||
wlr_log(L_ERROR, "Failed to allocate output config");
|
wlr_log(WLR_ERROR, "Failed to allocate output config");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
argc--; argv++;
|
argc--; argv++;
|
||||||
|
@ -71,7 +71,7 @@ struct cmd_results *cmd_output(int argc, char **argv) {
|
||||||
list_add(config->output_configs, output);
|
list_add(config->output_configs, output);
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "Config stored for output %s (enabled: %d) (%dx%d@%fHz "
|
wlr_log(WLR_DEBUG, "Config stored for output %s (enabled: %d) (%dx%d@%fHz "
|
||||||
"position %d,%d scale %f transform %d) (bg %s %s) (dpms %d)",
|
"position %d,%d scale %f transform %d) (bg %s %s) (dpms %d)",
|
||||||
output->name, output->enabled, output->width, output->height,
|
output->name, output->enabled, output->width, output->height,
|
||||||
output->refresh_rate, output->x, output->y, output->scale,
|
output->refresh_rate, output->x, output->y, output->scale,
|
||||||
|
@ -85,7 +85,7 @@ struct cmd_results *cmd_output(int argc, char **argv) {
|
||||||
struct sway_output *sway_output;
|
struct sway_output *sway_output;
|
||||||
wl_list_for_each(sway_output, &root_container.sway_root->outputs, link) {
|
wl_list_for_each(sway_output, &root_container.sway_root->outputs, link) {
|
||||||
output_get_identifier(identifier, sizeof(identifier), sway_output);
|
output_get_identifier(identifier, sizeof(identifier), sway_output);
|
||||||
wlr_log(L_DEBUG, "Checking identifier %s", identifier);
|
wlr_log(WLR_DEBUG, "Checking identifier %s", identifier);
|
||||||
if (all || strcmp(sway_output->wlr_output->name, output->name) == 0
|
if (all || strcmp(sway_output->wlr_output->name, output->name) == 0
|
||||||
|| strcmp(identifier, output->name) == 0) {
|
|| strcmp(identifier, output->name) == 0) {
|
||||||
if (!sway_output->swayc) {
|
if (!sway_output->swayc) {
|
||||||
|
|
|
@ -72,7 +72,7 @@ struct cmd_results *output_cmd_background(int argc, char **argv) {
|
||||||
src = strdup(p.we_wordv[0]);
|
src = strdup(p.we_wordv[0]);
|
||||||
wordfree(&p);
|
wordfree(&p);
|
||||||
if (!src) {
|
if (!src) {
|
||||||
wlr_log(L_ERROR, "Failed to duplicate string");
|
wlr_log(WLR_ERROR, "Failed to duplicate string");
|
||||||
return cmd_results_new(CMD_FAILURE, "output",
|
return cmd_results_new(CMD_FAILURE, "output",
|
||||||
"Unable to allocate resource");
|
"Unable to allocate resource");
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,7 @@ struct cmd_results *output_cmd_background(int argc, char **argv) {
|
||||||
|
|
||||||
char *conf = strdup(config->current_config);
|
char *conf = strdup(config->current_config);
|
||||||
if (!conf) {
|
if (!conf) {
|
||||||
wlr_log(L_ERROR, "Failed to duplicate string");
|
wlr_log(WLR_ERROR, "Failed to duplicate string");
|
||||||
free(src);
|
free(src);
|
||||||
return cmd_results_new(CMD_FAILURE, "output",
|
return cmd_results_new(CMD_FAILURE, "output",
|
||||||
"Unable to allocate resources");
|
"Unable to allocate resources");
|
||||||
|
@ -94,7 +94,7 @@ struct cmd_results *output_cmd_background(int argc, char **argv) {
|
||||||
if (!src) {
|
if (!src) {
|
||||||
free(rel_path);
|
free(rel_path);
|
||||||
free(conf);
|
free(conf);
|
||||||
wlr_log(L_ERROR, "Unable to allocate memory");
|
wlr_log(WLR_ERROR, "Unable to allocate memory");
|
||||||
return cmd_results_new(CMD_FAILURE, "output",
|
return cmd_results_new(CMD_FAILURE, "output",
|
||||||
"Unable to allocate resources");
|
"Unable to allocate resources");
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,7 @@ struct cmd_results *cmd_rename(int argc, char **argv) {
|
||||||
"Workspace already exists");
|
"Workspace already exists");
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "renaming workspace '%s' to '%s'", workspace->name, new_name);
|
wlr_log(WLR_DEBUG, "renaming workspace '%s' to '%s'", workspace->name, new_name);
|
||||||
free(workspace->name);
|
free(workspace->name);
|
||||||
workspace->name = new_name;
|
workspace->name = new_name;
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,7 @@ static void resize_tiled(int amount, enum resize_axis axis) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG,
|
wlr_log(WLR_DEBUG,
|
||||||
"Found the proper parent: %p. It has %d l conts, and %d r conts",
|
"Found the proper parent: %p. It has %d l conts, and %d r conts",
|
||||||
parent->parent, minor_weight, major_weight);
|
parent->parent, minor_weight, major_weight);
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ struct cmd_results *cmd_set(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argv[0][0] != '$') {
|
if (argv[0][0] != '$') {
|
||||||
wlr_log(L_INFO, "Warning: variable '%s' doesn't start with $", argv[0]);
|
wlr_log(WLR_INFO, "Warning: variable '%s' doesn't start with $", argv[0]);
|
||||||
|
|
||||||
size_t size = snprintf(NULL, 0, "$%s", argv[0]);
|
size_t size = snprintf(NULL, 0, "$%s", argv[0]);
|
||||||
tmp = malloc(size + 1);
|
tmp = malloc(size + 1);
|
||||||
|
|
|
@ -13,7 +13,7 @@ struct cmd_results *cmd_swaybg_command(int argc, char **argv) {
|
||||||
free(config->swaybg_command);
|
free(config->swaybg_command);
|
||||||
}
|
}
|
||||||
config->swaybg_command = join_args(argv, argc);
|
config->swaybg_command = join_args(argv, argc);
|
||||||
wlr_log(L_DEBUG, "Using custom swaybg command: %s",
|
wlr_log(WLR_DEBUG, "Using custom swaybg command: %s",
|
||||||
config->swaybg_command);
|
config->swaybg_command);
|
||||||
|
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
|
|
|
@ -51,7 +51,7 @@ struct cmd_results *cmd_workspace(int argc, char **argv) {
|
||||||
free(old); // workspaces can only be assigned to a single output
|
free(old); // workspaces can only be assigned to a single output
|
||||||
list_del(config->workspace_outputs, i);
|
list_del(config->workspace_outputs, i);
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Assigning workspace %s to output %s", wso->workspace, wso->output);
|
wlr_log(WLR_DEBUG, "Assigning workspace %s to output %s", wso->workspace, wso->output);
|
||||||
list_add(config->workspace_outputs, wso);
|
list_add(config->workspace_outputs, wso);
|
||||||
} else {
|
} else {
|
||||||
if (config->reading || !config->active) {
|
if (config->reading || !config->active) {
|
||||||
|
|
|
@ -276,12 +276,12 @@ static char *get_config_path(void) {
|
||||||
char *home = getenv("HOME");
|
char *home = getenv("HOME");
|
||||||
char *config_home = malloc(strlen(home) + strlen("/.config") + 1);
|
char *config_home = malloc(strlen(home) + strlen("/.config") + 1);
|
||||||
if (!config_home) {
|
if (!config_home) {
|
||||||
wlr_log(L_ERROR, "Unable to allocate $HOME/.config");
|
wlr_log(WLR_ERROR, "Unable to allocate $HOME/.config");
|
||||||
} else {
|
} else {
|
||||||
strcpy(config_home, home);
|
strcpy(config_home, home);
|
||||||
strcat(config_home, "/.config");
|
strcat(config_home, "/.config");
|
||||||
setenv("XDG_CONFIG_HOME", config_home, 1);
|
setenv("XDG_CONFIG_HOME", config_home, 1);
|
||||||
wlr_log(L_DEBUG, "Set XDG_CONFIG_HOME to %s", config_home);
|
wlr_log(WLR_DEBUG, "Set XDG_CONFIG_HOME to %s", config_home);
|
||||||
free(config_home);
|
free(config_home);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -308,11 +308,11 @@ const char *current_config_path;
|
||||||
|
|
||||||
static bool load_config(const char *path, struct sway_config *config) {
|
static bool load_config(const char *path, struct sway_config *config) {
|
||||||
if (path == NULL) {
|
if (path == NULL) {
|
||||||
wlr_log(L_ERROR, "Unable to find a config file!");
|
wlr_log(WLR_ERROR, "Unable to find a config file!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_INFO, "Loading config from %s", path);
|
wlr_log(WLR_INFO, "Loading config from %s", path);
|
||||||
current_config_path = path;
|
current_config_path = path;
|
||||||
|
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
|
@ -322,7 +322,7 @@ static bool load_config(const char *path, struct sway_config *config) {
|
||||||
|
|
||||||
FILE *f = fopen(path, "r");
|
FILE *f = fopen(path, "r");
|
||||||
if (!f) {
|
if (!f) {
|
||||||
wlr_log(L_ERROR, "Unable to open %s for reading", path);
|
wlr_log(WLR_ERROR, "Unable to open %s for reading", path);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -330,7 +330,7 @@ static bool load_config(const char *path, struct sway_config *config) {
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
if (!config_load_success) {
|
if (!config_load_success) {
|
||||||
wlr_log(L_ERROR, "Error(s) loading config!");
|
wlr_log(WLR_ERROR, "Error(s) loading config!");
|
||||||
}
|
}
|
||||||
|
|
||||||
current_config_path = NULL;
|
current_config_path = NULL;
|
||||||
|
@ -353,7 +353,7 @@ bool load_main_config(const char *file, bool is_active) {
|
||||||
|
|
||||||
config_defaults(config);
|
config_defaults(config);
|
||||||
if (is_active) {
|
if (is_active) {
|
||||||
wlr_log(L_DEBUG, "Performing configuration file reload");
|
wlr_log(WLR_DEBUG, "Performing configuration file reload");
|
||||||
config->reloading = true;
|
config->reloading = true;
|
||||||
config->active = true;
|
config->active = true;
|
||||||
}
|
}
|
||||||
|
@ -369,7 +369,7 @@ bool load_main_config(const char *file, bool is_active) {
|
||||||
/*
|
/*
|
||||||
DIR *dir = opendir(SYSCONFDIR "/sway/security.d");
|
DIR *dir = opendir(SYSCONFDIR "/sway/security.d");
|
||||||
if (!dir) {
|
if (!dir) {
|
||||||
wlr_log(L_ERROR,
|
wlr_log(WLR_ERROR,
|
||||||
"%s does not exist, sway will have no security configuration"
|
"%s does not exist, sway will have no security configuration"
|
||||||
" and will probably be broken", SYSCONFDIR "/sway/security.d");
|
" and will probably be broken", SYSCONFDIR "/sway/security.d");
|
||||||
} else {
|
} else {
|
||||||
|
@ -398,7 +398,7 @@ bool load_main_config(const char *file, bool is_active) {
|
||||||
if (stat(_path, &s) || s.st_uid != 0 || s.st_gid != 0 ||
|
if (stat(_path, &s) || s.st_uid != 0 || s.st_gid != 0 ||
|
||||||
(((s.st_mode & 0777) != 0644) &&
|
(((s.st_mode & 0777) != 0644) &&
|
||||||
(s.st_mode & 0777) != 0444)) {
|
(s.st_mode & 0777) != 0444)) {
|
||||||
wlr_log(L_ERROR,
|
wlr_log(WLR_ERROR,
|
||||||
"Refusing to load %s - it must be owned by root "
|
"Refusing to load %s - it must be owned by root "
|
||||||
"and mode 644 or 444", _path);
|
"and mode 644 or 444", _path);
|
||||||
success = false;
|
success = false;
|
||||||
|
@ -436,7 +436,7 @@ static bool load_include_config(const char *path, const char *parent_dir,
|
||||||
len = len + strlen(parent_dir) + 2;
|
len = len + strlen(parent_dir) + 2;
|
||||||
full_path = malloc(len * sizeof(char));
|
full_path = malloc(len * sizeof(char));
|
||||||
if (!full_path) {
|
if (!full_path) {
|
||||||
wlr_log(L_ERROR,
|
wlr_log(WLR_ERROR,
|
||||||
"Unable to allocate full path to included config");
|
"Unable to allocate full path to included config");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -449,7 +449,7 @@ static bool load_include_config(const char *path, const char *parent_dir,
|
||||||
free(full_path);
|
free(full_path);
|
||||||
|
|
||||||
if (real_path == NULL) {
|
if (real_path == NULL) {
|
||||||
wlr_log(L_DEBUG, "%s not found.", path);
|
wlr_log(WLR_DEBUG, "%s not found.", path);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -458,7 +458,7 @@ static bool load_include_config(const char *path, const char *parent_dir,
|
||||||
for (j = 0; j < config->config_chain->length; ++j) {
|
for (j = 0; j < config->config_chain->length; ++j) {
|
||||||
char *old_path = config->config_chain->items[j];
|
char *old_path = config->config_chain->items[j];
|
||||||
if (strcmp(real_path, old_path) == 0) {
|
if (strcmp(real_path, old_path) == 0) {
|
||||||
wlr_log(L_DEBUG,
|
wlr_log(WLR_DEBUG,
|
||||||
"%s already included once, won't be included again.",
|
"%s already included once, won't be included again.",
|
||||||
real_path);
|
real_path);
|
||||||
free(real_path);
|
free(real_path);
|
||||||
|
@ -512,7 +512,7 @@ bool load_include_configs(const char *path, struct sway_config *config) {
|
||||||
// restore wd
|
// restore wd
|
||||||
if (chdir(wd) < 0) {
|
if (chdir(wd) < 0) {
|
||||||
free(wd);
|
free(wd);
|
||||||
wlr_log(L_ERROR, "failed to restore working directory");
|
wlr_log(WLR_ERROR, "failed to restore working directory");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -527,13 +527,13 @@ static int detect_brace_on_following_line(FILE *file, char *line,
|
||||||
char *peeked = NULL;
|
char *peeked = NULL;
|
||||||
long position = 0;
|
long position = 0;
|
||||||
do {
|
do {
|
||||||
wlr_log(L_DEBUG, "Peeking line %d", line_number + lines + 1);
|
wlr_log(WLR_DEBUG, "Peeking line %d", line_number + lines + 1);
|
||||||
free(peeked);
|
free(peeked);
|
||||||
peeked = peek_line(file, lines, &position);
|
peeked = peek_line(file, lines, &position);
|
||||||
if (peeked) {
|
if (peeked) {
|
||||||
peeked = strip_whitespace(peeked);
|
peeked = strip_whitespace(peeked);
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Peeked line: `%s`", peeked);
|
wlr_log(WLR_DEBUG, "Peeked line: `%s`", peeked);
|
||||||
lines++;
|
lines++;
|
||||||
} while (peeked && strlen(peeked) == 0);
|
} while (peeked && strlen(peeked) == 0);
|
||||||
|
|
||||||
|
@ -552,7 +552,7 @@ static char *expand_line(const char *block, const char *line, bool add_brace) {
|
||||||
+ (add_brace ? 2 : 0) + 1;
|
+ (add_brace ? 2 : 0) + 1;
|
||||||
char *expanded = calloc(1, size);
|
char *expanded = calloc(1, size);
|
||||||
if (!expanded) {
|
if (!expanded) {
|
||||||
wlr_log(L_ERROR, "Cannot allocate expanded line buffer");
|
wlr_log(WLR_ERROR, "Cannot allocate expanded line buffer");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
snprintf(expanded, size, "%s%s%s%s", block ? block : "",
|
snprintf(expanded, size, "%s%s%s%s", block ? block : "",
|
||||||
|
@ -572,7 +572,7 @@ bool read_config(FILE *file, struct sway_config *config) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
line_number++;
|
line_number++;
|
||||||
wlr_log(L_DEBUG, "Read line %d: %s", line_number, line);
|
wlr_log(WLR_DEBUG, "Read line %d: %s", line_number, line);
|
||||||
line = strip_whitespace(line);
|
line = strip_whitespace(line);
|
||||||
if (line[0] == '#') {
|
if (line[0] == '#') {
|
||||||
free(line);
|
free(line);
|
||||||
|
@ -586,7 +586,7 @@ bool read_config(FILE *file, struct sway_config *config) {
|
||||||
line_number);
|
line_number);
|
||||||
if (brace_detected > 0) {
|
if (brace_detected > 0) {
|
||||||
line_number += brace_detected;
|
line_number += brace_detected;
|
||||||
wlr_log(L_DEBUG, "Detected open brace on line %d", line_number);
|
wlr_log(WLR_DEBUG, "Detected open brace on line %d", line_number);
|
||||||
}
|
}
|
||||||
char *expanded = expand_line(block, line, brace_detected > 0);
|
char *expanded = expand_line(block, line, brace_detected > 0);
|
||||||
if (!expanded) {
|
if (!expanded) {
|
||||||
|
@ -594,7 +594,7 @@ bool read_config(FILE *file, struct sway_config *config) {
|
||||||
list_free(stack);
|
list_free(stack);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Expanded line: %s", expanded);
|
wlr_log(WLR_DEBUG, "Expanded line: %s", expanded);
|
||||||
struct cmd_results *res;
|
struct cmd_results *res;
|
||||||
if (block && strcmp(block, "<commands>") == 0) {
|
if (block && strcmp(block, "<commands>") == 0) {
|
||||||
// Special case
|
// Special case
|
||||||
|
@ -606,23 +606,23 @@ bool read_config(FILE *file, struct sway_config *config) {
|
||||||
switch(res->status) {
|
switch(res->status) {
|
||||||
case CMD_FAILURE:
|
case CMD_FAILURE:
|
||||||
case CMD_INVALID:
|
case CMD_INVALID:
|
||||||
wlr_log(L_ERROR, "Error on line %i '%s': %s (%s)", line_number,
|
wlr_log(WLR_ERROR, "Error on line %i '%s': %s (%s)", line_number,
|
||||||
line, res->error, config->current_config);
|
line, res->error, config->current_config);
|
||||||
success = false;
|
success = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CMD_DEFER:
|
case CMD_DEFER:
|
||||||
wlr_log(L_DEBUG, "Deferring command `%s'", line);
|
wlr_log(WLR_DEBUG, "Deferring command `%s'", line);
|
||||||
list_add(config->cmd_queue, strdup(line));
|
list_add(config->cmd_queue, strdup(line));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CMD_BLOCK_COMMANDS:
|
case CMD_BLOCK_COMMANDS:
|
||||||
wlr_log(L_DEBUG, "Entering commands block");
|
wlr_log(WLR_DEBUG, "Entering commands block");
|
||||||
list_insert(stack, 0, "<commands>");
|
list_insert(stack, 0, "<commands>");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CMD_BLOCK:
|
case CMD_BLOCK:
|
||||||
wlr_log(L_DEBUG, "Entering block '%s'", res->input);
|
wlr_log(WLR_DEBUG, "Entering block '%s'", res->input);
|
||||||
list_insert(stack, 0, strdup(res->input));
|
list_insert(stack, 0, strdup(res->input));
|
||||||
if (strcmp(res->input, "bar") == 0) {
|
if (strcmp(res->input, "bar") == 0) {
|
||||||
config->current_bar = NULL;
|
config->current_bar = NULL;
|
||||||
|
@ -631,7 +631,7 @@ bool read_config(FILE *file, struct sway_config *config) {
|
||||||
|
|
||||||
case CMD_BLOCK_END:
|
case CMD_BLOCK_END:
|
||||||
if (!block) {
|
if (!block) {
|
||||||
wlr_log(L_DEBUG, "Unmatched '}' on line %i", line_number);
|
wlr_log(WLR_DEBUG, "Unmatched '}' on line %i", line_number);
|
||||||
success = false;
|
success = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -639,7 +639,7 @@ bool read_config(FILE *file, struct sway_config *config) {
|
||||||
config->current_bar = NULL;
|
config->current_bar = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "Exiting block '%s'", block);
|
wlr_log(WLR_DEBUG, "Exiting block '%s'", block);
|
||||||
list_del(stack, 0);
|
list_del(stack, 0);
|
||||||
free(block);
|
free(block);
|
||||||
memset(&config->handler_context, 0,
|
memset(&config->handler_context, 0,
|
||||||
|
@ -682,7 +682,7 @@ char *do_var_replacement(char *str) {
|
||||||
int vvlen = strlen(var->value);
|
int vvlen = strlen(var->value);
|
||||||
char *newstr = malloc(strlen(str) - vnlen + vvlen + 1);
|
char *newstr = malloc(strlen(str) - vnlen + vvlen + 1);
|
||||||
if (!newstr) {
|
if (!newstr) {
|
||||||
wlr_log(L_ERROR,
|
wlr_log(WLR_ERROR,
|
||||||
"Unable to allocate replacement "
|
"Unable to allocate replacement "
|
||||||
"during variable expansion");
|
"during variable expansion");
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -16,10 +16,10 @@
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
static void terminate_swaybar(pid_t pid) {
|
static void terminate_swaybar(pid_t pid) {
|
||||||
wlr_log(L_DEBUG, "Terminating swaybar %d", pid);
|
wlr_log(WLR_DEBUG, "Terminating swaybar %d", pid);
|
||||||
int ret = kill(-pid, SIGTERM);
|
int ret = kill(-pid, SIGTERM);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
wlr_log_errno(L_ERROR, "Unable to terminate swaybar %d", pid);
|
wlr_log_errno(WLR_ERROR, "Unable to terminate swaybar %d", pid);
|
||||||
} else {
|
} else {
|
||||||
int status;
|
int status;
|
||||||
waitpid(pid, &status, 0);
|
waitpid(pid, &status, 0);
|
||||||
|
@ -167,7 +167,7 @@ void invoke_swaybar(struct bar_config *bar) {
|
||||||
// Pipe to communicate errors
|
// Pipe to communicate errors
|
||||||
int filedes[2];
|
int filedes[2];
|
||||||
if (pipe(filedes) == -1) {
|
if (pipe(filedes) == -1) {
|
||||||
wlr_log(L_ERROR, "Pipe setup failed! Cannot fork into bar");
|
wlr_log(WLR_ERROR, "Pipe setup failed! Cannot fork into bar");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,17 +197,17 @@ void invoke_swaybar(struct bar_config *bar) {
|
||||||
execvp(cmd[0], cmd);
|
execvp(cmd[0], cmd);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Spawned swaybar %d", bar->pid);
|
wlr_log(WLR_DEBUG, "Spawned swaybar %d", bar->pid);
|
||||||
close(filedes[0]);
|
close(filedes[0]);
|
||||||
size_t len;
|
size_t len;
|
||||||
if (read(filedes[1], &len, sizeof(size_t)) == sizeof(size_t)) {
|
if (read(filedes[1], &len, sizeof(size_t)) == sizeof(size_t)) {
|
||||||
char *buf = malloc(len);
|
char *buf = malloc(len);
|
||||||
if(!buf) {
|
if(!buf) {
|
||||||
wlr_log(L_ERROR, "Cannot allocate error string");
|
wlr_log(WLR_ERROR, "Cannot allocate error string");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (read(filedes[1], buf, len)) {
|
if (read(filedes[1], buf, len)) {
|
||||||
wlr_log(L_ERROR, "%s", buf);
|
wlr_log(WLR_ERROR, "%s", buf);
|
||||||
}
|
}
|
||||||
free(buf);
|
free(buf);
|
||||||
}
|
}
|
||||||
|
@ -244,7 +244,7 @@ void load_swaybars() {
|
||||||
if (bar->pid != 0) {
|
if (bar->pid != 0) {
|
||||||
terminate_swaybar(bar->pid);
|
terminate_swaybar(bar->pid);
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Invoking swaybar for bar id '%s'", bar->id);
|
wlr_log(WLR_DEBUG, "Invoking swaybar for bar id '%s'", bar->id);
|
||||||
invoke_swaybar(bar);
|
invoke_swaybar(bar);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
struct input_config *new_input_config(const char* identifier) {
|
struct input_config *new_input_config(const char* identifier) {
|
||||||
struct input_config *input = calloc(1, sizeof(struct input_config));
|
struct input_config *input = calloc(1, sizeof(struct input_config));
|
||||||
if (!input) {
|
if (!input) {
|
||||||
wlr_log(L_DEBUG, "Unable to allocate input config");
|
wlr_log(WLR_DEBUG, "Unable to allocate input config");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "new_input_config(%s)", identifier);
|
wlr_log(WLR_DEBUG, "new_input_config(%s)", identifier);
|
||||||
if (!(input->identifier = strdup(identifier))) {
|
if (!(input->identifier = strdup(identifier))) {
|
||||||
free(input);
|
free(input);
|
||||||
wlr_log(L_DEBUG, "Unable to allocate input config");
|
wlr_log(WLR_DEBUG, "Unable to allocate input config");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ void merge_input_config(struct input_config *dst, struct input_config *src) {
|
||||||
struct input_config *copy_input_config(struct input_config *ic) {
|
struct input_config *copy_input_config(struct input_config *ic) {
|
||||||
struct input_config *copy = calloc(1, sizeof(struct input_config));
|
struct input_config *copy = calloc(1, sizeof(struct input_config));
|
||||||
if (copy == NULL) {
|
if (copy == NULL) {
|
||||||
wlr_log(L_ERROR, "could not allocate input config");
|
wlr_log(WLR_ERROR, "could not allocate input config");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
merge_input_config(copy, ic);
|
merge_input_config(copy, ic);
|
||||||
|
|
|
@ -90,7 +90,7 @@ static void set_mode(struct wlr_output *output, int width, int height,
|
||||||
float refresh_rate) {
|
float refresh_rate) {
|
||||||
int mhz = (int)(refresh_rate * 1000);
|
int mhz = (int)(refresh_rate * 1000);
|
||||||
if (wl_list_empty(&output->modes)) {
|
if (wl_list_empty(&output->modes)) {
|
||||||
wlr_log(L_DEBUG, "Assigning custom mode to %s", output->name);
|
wlr_log(WLR_DEBUG, "Assigning custom mode to %s", output->name);
|
||||||
wlr_output_set_custom_mode(output, width, height, mhz);
|
wlr_output_set_custom_mode(output, width, height, mhz);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -106,9 +106,9 @@ static void set_mode(struct wlr_output *output, int width, int height,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!best) {
|
if (!best) {
|
||||||
wlr_log(L_ERROR, "Configured mode for %s not available", output->name);
|
wlr_log(WLR_ERROR, "Configured mode for %s not available", output->name);
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_DEBUG, "Assigning configured mode to %s", output->name);
|
wlr_log(WLR_DEBUG, "Assigning configured mode to %s", output->name);
|
||||||
wlr_output_set_mode(output, best);
|
wlr_output_set_mode(output, best);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,7 @@ static void set_mode(struct wlr_output *output, int width, int height,
|
||||||
void terminate_swaybg(pid_t pid) {
|
void terminate_swaybg(pid_t pid) {
|
||||||
int ret = kill(pid, SIGTERM);
|
int ret = kill(pid, SIGTERM);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
wlr_log(L_ERROR, "Unable to terminate swaybg [pid: %d]", pid);
|
wlr_log(WLR_ERROR, "Unable to terminate swaybg [pid: %d]", pid);
|
||||||
} else {
|
} else {
|
||||||
int status;
|
int status;
|
||||||
waitpid(pid, &status, 0);
|
waitpid(pid, &status, 0);
|
||||||
|
@ -144,22 +144,22 @@ void apply_output_config(struct output_config *oc, struct sway_container *output
|
||||||
}
|
}
|
||||||
|
|
||||||
if (oc && oc->width > 0 && oc->height > 0) {
|
if (oc && oc->width > 0 && oc->height > 0) {
|
||||||
wlr_log(L_DEBUG, "Set %s mode to %dx%d (%f GHz)", oc->name, oc->width,
|
wlr_log(WLR_DEBUG, "Set %s mode to %dx%d (%f GHz)", oc->name, oc->width,
|
||||||
oc->height, oc->refresh_rate);
|
oc->height, oc->refresh_rate);
|
||||||
set_mode(wlr_output, oc->width, oc->height, oc->refresh_rate);
|
set_mode(wlr_output, oc->width, oc->height, oc->refresh_rate);
|
||||||
}
|
}
|
||||||
if (oc && oc->scale > 0) {
|
if (oc && oc->scale > 0) {
|
||||||
wlr_log(L_DEBUG, "Set %s scale to %f", oc->name, oc->scale);
|
wlr_log(WLR_DEBUG, "Set %s scale to %f", oc->name, oc->scale);
|
||||||
wlr_output_set_scale(wlr_output, oc->scale);
|
wlr_output_set_scale(wlr_output, oc->scale);
|
||||||
}
|
}
|
||||||
if (oc && oc->transform >= 0) {
|
if (oc && oc->transform >= 0) {
|
||||||
wlr_log(L_DEBUG, "Set %s transform to %d", oc->name, oc->transform);
|
wlr_log(WLR_DEBUG, "Set %s transform to %d", oc->name, oc->transform);
|
||||||
wlr_output_set_transform(wlr_output, oc->transform);
|
wlr_output_set_transform(wlr_output, oc->transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find position for it
|
// Find position for it
|
||||||
if (oc && (oc->x != -1 || oc->y != -1)) {
|
if (oc && (oc->x != -1 || oc->y != -1)) {
|
||||||
wlr_log(L_DEBUG, "Set %s position to %d, %d", oc->name, oc->x, oc->y);
|
wlr_log(WLR_DEBUG, "Set %s position to %d, %d", oc->name, oc->x, oc->y);
|
||||||
wlr_output_layout_add(output_layout, wlr_output, oc->x, oc->y);
|
wlr_output_layout_add(output_layout, wlr_output, oc->x, oc->y);
|
||||||
} else {
|
} else {
|
||||||
wlr_output_layout_add_auto(output_layout, wlr_output);
|
wlr_output_layout_add_auto(output_layout, wlr_output);
|
||||||
|
@ -187,7 +187,7 @@ void apply_output_config(struct output_config *oc, struct sway_container *output
|
||||||
terminate_swaybg(output->sway_output->bg_pid);
|
terminate_swaybg(output->sway_output->bg_pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "Setting background for output %d to %s",
|
wlr_log(WLR_DEBUG, "Setting background for output %d to %s",
|
||||||
output_i, oc->background);
|
output_i, oc->background);
|
||||||
|
|
||||||
size_t len = snprintf(NULL, 0, "%s %d %s %s",
|
size_t len = snprintf(NULL, 0, "%s %d %s %s",
|
||||||
|
@ -195,13 +195,13 @@ void apply_output_config(struct output_config *oc, struct sway_container *output
|
||||||
output_i, oc->background, oc->background_option);
|
output_i, oc->background, oc->background_option);
|
||||||
char *command = malloc(len + 1);
|
char *command = malloc(len + 1);
|
||||||
if (!command) {
|
if (!command) {
|
||||||
wlr_log(L_DEBUG, "Unable to allocate swaybg command");
|
wlr_log(WLR_DEBUG, "Unable to allocate swaybg command");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
snprintf(command, len + 1, "%s %d %s %s",
|
snprintf(command, len + 1, "%s %d %s %s",
|
||||||
config->swaybg_command ? config->swaybg_command : "swaybg",
|
config->swaybg_command ? config->swaybg_command : "swaybg",
|
||||||
output_i, oc->background, oc->background_option);
|
output_i, oc->background, oc->background_option);
|
||||||
wlr_log(L_DEBUG, "-> %s", command);
|
wlr_log(WLR_DEBUG, "-> %s", command);
|
||||||
|
|
||||||
char *const cmd[] = { "sh", "-c", command, NULL };
|
char *const cmd[] = { "sh", "-c", command, NULL };
|
||||||
output->sway_output->bg_pid = fork();
|
output->sway_output->bg_pid = fork();
|
||||||
|
@ -212,11 +212,11 @@ void apply_output_config(struct output_config *oc, struct sway_container *output
|
||||||
if (oc && oc->dpms_state != DPMS_IGNORE) {
|
if (oc && oc->dpms_state != DPMS_IGNORE) {
|
||||||
switch (oc->dpms_state) {
|
switch (oc->dpms_state) {
|
||||||
case DPMS_ON:
|
case DPMS_ON:
|
||||||
wlr_log(L_DEBUG, "Turning on screen");
|
wlr_log(WLR_DEBUG, "Turning on screen");
|
||||||
wlr_output_enable(wlr_output, true);
|
wlr_output_enable(wlr_output, true);
|
||||||
break;
|
break;
|
||||||
case DPMS_OFF:
|
case DPMS_OFF:
|
||||||
wlr_log(L_DEBUG, "Turning off screen");
|
wlr_log(WLR_DEBUG, "Turning off screen");
|
||||||
wlr_output_enable(wlr_output, false);
|
wlr_output_enable(wlr_output, false);
|
||||||
break;
|
break;
|
||||||
case DPMS_IGNORE:
|
case DPMS_IGNORE:
|
||||||
|
|
|
@ -7,11 +7,11 @@
|
||||||
struct seat_config *new_seat_config(const char* name) {
|
struct seat_config *new_seat_config(const char* name) {
|
||||||
struct seat_config *seat = calloc(1, sizeof(struct seat_config));
|
struct seat_config *seat = calloc(1, sizeof(struct seat_config));
|
||||||
if (!seat) {
|
if (!seat) {
|
||||||
wlr_log(L_DEBUG, "Unable to allocate seat config");
|
wlr_log(WLR_DEBUG, "Unable to allocate seat config");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "new_seat_config(%s)", name);
|
wlr_log(WLR_DEBUG, "new_seat_config(%s)", name);
|
||||||
seat->name = strdup(name);
|
seat->name = strdup(name);
|
||||||
if (!sway_assert(seat->name, "could not allocate name for seat")) {
|
if (!sway_assert(seat->name, "could not allocate name for seat")) {
|
||||||
free(seat);
|
free(seat);
|
||||||
|
@ -34,7 +34,7 @@ struct seat_attachment_config *seat_attachment_config_new() {
|
||||||
struct seat_attachment_config *attachment =
|
struct seat_attachment_config *attachment =
|
||||||
calloc(1, sizeof(struct seat_attachment_config));
|
calloc(1, sizeof(struct seat_attachment_config));
|
||||||
if (!attachment) {
|
if (!attachment) {
|
||||||
wlr_log(L_DEBUG, "cannot allocate attachment config");
|
wlr_log(WLR_DEBUG, "cannot allocate attachment config");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return attachment;
|
return attachment;
|
||||||
|
|
|
@ -507,7 +507,7 @@ struct criteria *criteria_parse(char *raw, char **error_arg) {
|
||||||
}
|
}
|
||||||
unescape(value);
|
unescape(value);
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Found pair: %s=%s", name, value);
|
wlr_log(WLR_DEBUG, "Found pair: %s=%s", name, value);
|
||||||
if (!parse_token(criteria, name, value)) {
|
if (!parse_token(criteria, name, value)) {
|
||||||
*error_arg = error;
|
*error_arg = error;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
static void handle_destroy(struct wl_listener *listener, void *data) {
|
static void handle_destroy(struct wl_listener *listener, void *data) {
|
||||||
struct sway_idle_inhibitor_v1 *inhibitor =
|
struct sway_idle_inhibitor_v1 *inhibitor =
|
||||||
wl_container_of(listener, inhibitor, destroy);
|
wl_container_of(listener, inhibitor, destroy);
|
||||||
wlr_log(L_DEBUG, "Sway idle inhibitor destroyed");
|
wlr_log(WLR_DEBUG, "Sway idle inhibitor destroyed");
|
||||||
wl_list_remove(&inhibitor->link);
|
wl_list_remove(&inhibitor->link);
|
||||||
wl_list_remove(&inhibitor->destroy.link);
|
wl_list_remove(&inhibitor->destroy.link);
|
||||||
idle_inhibit_v1_check_active(inhibitor->manager);
|
idle_inhibit_v1_check_active(inhibitor->manager);
|
||||||
|
@ -20,7 +20,7 @@ void handle_idle_inhibitor_v1(struct wl_listener *listener, void *data) {
|
||||||
struct wlr_idle_inhibitor_v1 *wlr_inhibitor = data;
|
struct wlr_idle_inhibitor_v1 *wlr_inhibitor = data;
|
||||||
struct sway_idle_inhibit_manager_v1 *manager =
|
struct sway_idle_inhibit_manager_v1 *manager =
|
||||||
wl_container_of(listener, manager, new_idle_inhibitor_v1);
|
wl_container_of(listener, manager, new_idle_inhibitor_v1);
|
||||||
wlr_log(L_DEBUG, "New sway idle inhibitor");
|
wlr_log(WLR_DEBUG, "New sway idle inhibitor");
|
||||||
|
|
||||||
struct sway_idle_inhibitor_v1 *inhibitor =
|
struct sway_idle_inhibitor_v1 *inhibitor =
|
||||||
calloc(1, sizeof(struct sway_idle_inhibitor_v1));
|
calloc(1, sizeof(struct sway_idle_inhibitor_v1));
|
||||||
|
|
|
@ -174,7 +174,7 @@ void arrange_layers(struct sway_output *output) {
|
||||||
|
|
||||||
if (memcmp(&usable_area, &output->usable_area,
|
if (memcmp(&usable_area, &output->usable_area,
|
||||||
sizeof(struct wlr_box)) != 0) {
|
sizeof(struct wlr_box)) != 0) {
|
||||||
wlr_log(L_DEBUG, "Usable area changed, rearranging output");
|
wlr_log(WLR_DEBUG, "Usable area changed, rearranging output");
|
||||||
memcpy(&output->usable_area, &usable_area, sizeof(struct wlr_box));
|
memcpy(&output->usable_area, &usable_area, sizeof(struct wlr_box));
|
||||||
arrange_and_commit(output->swayc);
|
arrange_and_commit(output->swayc);
|
||||||
}
|
}
|
||||||
|
@ -269,7 +269,7 @@ static void unmap(struct sway_layer_surface *sway_layer) {
|
||||||
static void handle_destroy(struct wl_listener *listener, void *data) {
|
static void handle_destroy(struct wl_listener *listener, void *data) {
|
||||||
struct sway_layer_surface *sway_layer =
|
struct sway_layer_surface *sway_layer =
|
||||||
wl_container_of(listener, sway_layer, destroy);
|
wl_container_of(listener, sway_layer, destroy);
|
||||||
wlr_log(L_DEBUG, "Layer surface destroyed (%s)",
|
wlr_log(WLR_DEBUG, "Layer surface destroyed (%s)",
|
||||||
sway_layer->layer_surface->namespace);
|
sway_layer->layer_surface->namespace);
|
||||||
if (sway_layer->layer_surface->mapped) {
|
if (sway_layer->layer_surface->mapped) {
|
||||||
unmap(sway_layer);
|
unmap(sway_layer);
|
||||||
|
@ -316,7 +316,7 @@ void handle_layer_shell_surface(struct wl_listener *listener, void *data) {
|
||||||
struct wlr_layer_surface *layer_surface = data;
|
struct wlr_layer_surface *layer_surface = data;
|
||||||
struct sway_server *server =
|
struct sway_server *server =
|
||||||
wl_container_of(listener, server, layer_shell_surface);
|
wl_container_of(listener, server, layer_shell_surface);
|
||||||
wlr_log(L_DEBUG, "new layer surface: namespace %s layer %d anchor %d "
|
wlr_log(WLR_DEBUG, "new layer surface: namespace %s layer %d anchor %d "
|
||||||
"size %dx%d margin %d,%d,%d,%d",
|
"size %dx%d margin %d,%d,%d,%d",
|
||||||
layer_surface->namespace, layer_surface->layer, layer_surface->layer,
|
layer_surface->namespace, layer_surface->layer, layer_surface->layer,
|
||||||
layer_surface->client_pending.desired_width,
|
layer_surface->client_pending.desired_width,
|
||||||
|
|
|
@ -525,7 +525,7 @@ struct sway_output *output_from_wlr_output(struct wlr_output *wlr_output) {
|
||||||
void handle_new_output(struct wl_listener *listener, void *data) {
|
void handle_new_output(struct wl_listener *listener, void *data) {
|
||||||
struct sway_server *server = wl_container_of(listener, server, new_output);
|
struct sway_server *server = wl_container_of(listener, server, new_output);
|
||||||
struct wlr_output *wlr_output = data;
|
struct wlr_output *wlr_output = data;
|
||||||
wlr_log(L_DEBUG, "New output %p: %s", wlr_output, wlr_output->name);
|
wlr_log(WLR_DEBUG, "New output %p: %s", wlr_output, wlr_output->name);
|
||||||
|
|
||||||
struct sway_output *output = calloc(1, sizeof(struct sway_output));
|
struct sway_output *output = calloc(1, sizeof(struct sway_output));
|
||||||
if (!output) {
|
if (!output) {
|
||||||
|
|
|
@ -175,7 +175,7 @@ void transaction_add_container(struct sway_transaction *transaction,
|
||||||
* Apply a transaction to the "current" state of the tree.
|
* Apply a transaction to the "current" state of the tree.
|
||||||
*/
|
*/
|
||||||
static void transaction_apply(struct sway_transaction *transaction) {
|
static void transaction_apply(struct sway_transaction *transaction) {
|
||||||
wlr_log(L_DEBUG, "Applying transaction %p", transaction);
|
wlr_log(WLR_DEBUG, "Applying transaction %p", transaction);
|
||||||
if (server.debug_txn_timings) {
|
if (server.debug_txn_timings) {
|
||||||
struct timespec now;
|
struct timespec now;
|
||||||
clock_gettime(CLOCK_MONOTONIC, &now);
|
clock_gettime(CLOCK_MONOTONIC, &now);
|
||||||
|
@ -186,7 +186,7 @@ static void transaction_apply(struct sway_transaction *transaction) {
|
||||||
float ms_waiting = (now.tv_sec - commit->tv_sec) * 1000 +
|
float ms_waiting = (now.tv_sec - commit->tv_sec) * 1000 +
|
||||||
(now.tv_nsec - commit->tv_nsec) / 1000000.0;
|
(now.tv_nsec - commit->tv_nsec) / 1000000.0;
|
||||||
float ms_total = ms_arranging + ms_waiting;
|
float ms_total = ms_arranging + ms_waiting;
|
||||||
wlr_log(L_DEBUG, "Transaction %p: %.1fms arranging, %.1fms waiting, "
|
wlr_log(WLR_DEBUG, "Transaction %p: %.1fms arranging, %.1fms waiting, "
|
||||||
"%.1fms total (%.1f frames if 60Hz)", transaction,
|
"%.1fms total (%.1f frames if 60Hz)", transaction,
|
||||||
ms_arranging, ms_waiting, ms_total, ms_total / (1000.0f / 60));
|
ms_arranging, ms_waiting, ms_total, ms_total / (1000.0f / 60));
|
||||||
}
|
}
|
||||||
|
@ -251,7 +251,7 @@ static void transaction_progress_queue() {
|
||||||
|
|
||||||
static int handle_timeout(void *data) {
|
static int handle_timeout(void *data) {
|
||||||
struct sway_transaction *transaction = data;
|
struct sway_transaction *transaction = data;
|
||||||
wlr_log(L_DEBUG, "Transaction %p timed out (%li waiting)",
|
wlr_log(WLR_DEBUG, "Transaction %p timed out (%li waiting)",
|
||||||
transaction, transaction->num_waiting);
|
transaction, transaction->num_waiting);
|
||||||
transaction->num_waiting = 0;
|
transaction->num_waiting = 0;
|
||||||
transaction_progress_queue();
|
transaction_progress_queue();
|
||||||
|
@ -286,7 +286,7 @@ static bool should_configure(struct sway_container *con,
|
||||||
}
|
}
|
||||||
|
|
||||||
void transaction_commit(struct sway_transaction *transaction) {
|
void transaction_commit(struct sway_transaction *transaction) {
|
||||||
wlr_log(L_DEBUG, "Transaction %p committing with %i instructions",
|
wlr_log(WLR_DEBUG, "Transaction %p committing with %i instructions",
|
||||||
transaction, transaction->instructions->length);
|
transaction, transaction->instructions->length);
|
||||||
transaction->num_waiting = 0;
|
transaction->num_waiting = 0;
|
||||||
for (int i = 0; i < transaction->instructions->length; ++i) {
|
for (int i = 0; i < transaction->instructions->length; ++i) {
|
||||||
|
@ -319,7 +319,7 @@ void transaction_commit(struct sway_transaction *transaction) {
|
||||||
} else {
|
} else {
|
||||||
// There are no other transactions in progress, and this one has nothing
|
// There are no other transactions in progress, and this one has nothing
|
||||||
// to wait for, so we can skip the queue.
|
// to wait for, so we can skip the queue.
|
||||||
wlr_log(L_DEBUG, "Transaction %p has nothing to wait for", transaction);
|
wlr_log(WLR_DEBUG, "Transaction %p has nothing to wait for", transaction);
|
||||||
transaction_apply(transaction);
|
transaction_apply(transaction);
|
||||||
transaction_destroy(transaction);
|
transaction_destroy(transaction);
|
||||||
idle_inhibit_v1_check_active(server.idle_inhibit_manager_v1);
|
idle_inhibit_v1_check_active(server.idle_inhibit_manager_v1);
|
||||||
|
@ -350,7 +350,7 @@ static void set_instruction_ready(
|
||||||
struct timespec *start = &transaction->commit_time;
|
struct timespec *start = &transaction->commit_time;
|
||||||
float ms = (now.tv_sec - start->tv_sec) * 1000 +
|
float ms = (now.tv_sec - start->tv_sec) * 1000 +
|
||||||
(now.tv_nsec - start->tv_nsec) / 1000000.0;
|
(now.tv_nsec - start->tv_nsec) / 1000000.0;
|
||||||
wlr_log(L_DEBUG, "Transaction %p: %li/%li ready in %.1fms (%s)",
|
wlr_log(WLR_DEBUG, "Transaction %p: %li/%li ready in %.1fms (%s)",
|
||||||
transaction,
|
transaction,
|
||||||
transaction->num_configures - transaction->num_waiting + 1,
|
transaction->num_configures - transaction->num_waiting + 1,
|
||||||
transaction->num_configures, ms,
|
transaction->num_configures, ms,
|
||||||
|
@ -362,7 +362,7 @@ static void set_instruction_ready(
|
||||||
// If the transaction has timed out then its num_waiting will be 0 already.
|
// If the transaction has timed out then its num_waiting will be 0 already.
|
||||||
if (transaction->num_waiting > 0 && --transaction->num_waiting == 0) {
|
if (transaction->num_waiting > 0 && --transaction->num_waiting == 0) {
|
||||||
#if !TRANSACTION_DEBUG
|
#if !TRANSACTION_DEBUG
|
||||||
wlr_log(L_DEBUG, "Transaction %p is ready", transaction);
|
wlr_log(WLR_DEBUG, "Transaction %p is ready", transaction);
|
||||||
wl_event_source_timer_update(transaction->timer, 0);
|
wl_event_source_timer_update(transaction->timer, 0);
|
||||||
transaction_progress_queue();
|
transaction_progress_queue();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -304,11 +304,11 @@ void handle_xdg_shell_surface(struct wl_listener *listener, void *data) {
|
||||||
struct wlr_xdg_surface *xdg_surface = data;
|
struct wlr_xdg_surface *xdg_surface = data;
|
||||||
|
|
||||||
if (xdg_surface->role == WLR_XDG_SURFACE_ROLE_POPUP) {
|
if (xdg_surface->role == WLR_XDG_SURFACE_ROLE_POPUP) {
|
||||||
wlr_log(L_DEBUG, "New xdg_shell popup");
|
wlr_log(WLR_DEBUG, "New xdg_shell popup");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "New xdg_shell toplevel title='%s' app_id='%s'",
|
wlr_log(WLR_DEBUG, "New xdg_shell toplevel title='%s' app_id='%s'",
|
||||||
xdg_surface->toplevel->title, xdg_surface->toplevel->app_id);
|
xdg_surface->toplevel->title, xdg_surface->toplevel->app_id);
|
||||||
wlr_xdg_surface_ping(xdg_surface);
|
wlr_xdg_surface_ping(xdg_surface);
|
||||||
|
|
||||||
|
|
|
@ -295,11 +295,11 @@ void handle_xdg_shell_v6_surface(struct wl_listener *listener, void *data) {
|
||||||
struct wlr_xdg_surface_v6 *xdg_surface = data;
|
struct wlr_xdg_surface_v6 *xdg_surface = data;
|
||||||
|
|
||||||
if (xdg_surface->role == WLR_XDG_SURFACE_V6_ROLE_POPUP) {
|
if (xdg_surface->role == WLR_XDG_SURFACE_V6_ROLE_POPUP) {
|
||||||
wlr_log(L_DEBUG, "New xdg_shell_v6 popup");
|
wlr_log(WLR_DEBUG, "New xdg_shell_v6 popup");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "New xdg_shell_v6 toplevel title='%s' app_id='%s'",
|
wlr_log(WLR_DEBUG, "New xdg_shell_v6 toplevel title='%s' app_id='%s'",
|
||||||
xdg_surface->toplevel->title, xdg_surface->toplevel->app_id);
|
xdg_surface->toplevel->title, xdg_surface->toplevel->app_id);
|
||||||
wlr_xdg_surface_v6_ping(xdg_surface);
|
wlr_xdg_surface_v6_ping(xdg_surface);
|
||||||
|
|
||||||
|
|
|
@ -119,7 +119,7 @@ static struct sway_xwayland_unmanaged *create_unmanaged(
|
||||||
struct sway_xwayland_unmanaged *surface =
|
struct sway_xwayland_unmanaged *surface =
|
||||||
calloc(1, sizeof(struct sway_xwayland_unmanaged));
|
calloc(1, sizeof(struct sway_xwayland_unmanaged));
|
||||||
if (surface == NULL) {
|
if (surface == NULL) {
|
||||||
wlr_log(L_ERROR, "Allocation failed");
|
wlr_log(WLR_ERROR, "Allocation failed");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -432,12 +432,12 @@ void handle_xwayland_surface(struct wl_listener *listener, void *data) {
|
||||||
|
|
||||||
if (wlr_xwayland_surface_is_unmanaged(xsurface) ||
|
if (wlr_xwayland_surface_is_unmanaged(xsurface) ||
|
||||||
xsurface->override_redirect) {
|
xsurface->override_redirect) {
|
||||||
wlr_log(L_DEBUG, "New xwayland unmanaged surface");
|
wlr_log(WLR_DEBUG, "New xwayland unmanaged surface");
|
||||||
create_unmanaged(xsurface);
|
create_unmanaged(xsurface);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "New xwayland surface title='%s' class='%s'",
|
wlr_log(WLR_DEBUG, "New xwayland surface title='%s' class='%s'",
|
||||||
xsurface->title, xsurface->class);
|
xsurface->title, xsurface->class);
|
||||||
|
|
||||||
struct sway_xwayland_view *xwayland_view =
|
struct sway_xwayland_view *xwayland_view =
|
||||||
|
@ -490,7 +490,7 @@ void handle_xwayland_ready(struct wl_listener *listener, void *data) {
|
||||||
xcb_connection_t *xcb_conn = xcb_connect(NULL, NULL);
|
xcb_connection_t *xcb_conn = xcb_connect(NULL, NULL);
|
||||||
int err = xcb_connection_has_error(xcb_conn);
|
int err = xcb_connection_has_error(xcb_conn);
|
||||||
if (err) {
|
if (err) {
|
||||||
wlr_log(L_ERROR, "XCB connect failed: %d", err);
|
wlr_log(WLR_ERROR, "XCB connect failed: %d", err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -509,7 +509,7 @@ void handle_xwayland_ready(struct wl_listener *listener, void *data) {
|
||||||
free(reply);
|
free(reply);
|
||||||
|
|
||||||
if (error != NULL) {
|
if (error != NULL) {
|
||||||
wlr_log(L_ERROR, "could not resolve atom %s, X11 error code %d",
|
wlr_log(WLR_ERROR, "could not resolve atom %s, X11 error code %d",
|
||||||
atom_map[i], error->error_code);
|
atom_map[i], error->error_code);
|
||||||
free(error);
|
free(error);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -474,7 +474,7 @@ static void handle_request_set_cursor(struct wl_listener *listener,
|
||||||
// TODO: check cursor mode
|
// TODO: check cursor mode
|
||||||
if (focused_client == NULL ||
|
if (focused_client == NULL ||
|
||||||
event->seat_client->client != focused_client) {
|
event->seat_client->client != focused_client) {
|
||||||
wlr_log(L_DEBUG, "denying request to set cursor from unfocused client");
|
wlr_log(WLR_DEBUG, "denying request to set cursor from unfocused client");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,7 @@ static char *get_device_identifier(struct wlr_input_device *device) {
|
||||||
int len = snprintf(NULL, 0, fmt, vendor, product, name) + 1;
|
int len = snprintf(NULL, 0, fmt, vendor, product, name) + 1;
|
||||||
char *identifier = malloc(len);
|
char *identifier = malloc(len);
|
||||||
if (!identifier) {
|
if (!identifier) {
|
||||||
wlr_log(L_ERROR, "Unable to allocate unique input device name");
|
wlr_log(WLR_ERROR, "Unable to allocate unique input device name");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,74 +104,74 @@ static void input_manager_libinput_config_pointer(
|
||||||
}
|
}
|
||||||
|
|
||||||
libinput_device = wlr_libinput_get_device_handle(wlr_device);
|
libinput_device = wlr_libinput_get_device_handle(wlr_device);
|
||||||
wlr_log(L_DEBUG, "input_manager_libinput_config_pointer(%s)",
|
wlr_log(WLR_DEBUG, "input_manager_libinput_config_pointer(%s)",
|
||||||
ic->identifier);
|
ic->identifier);
|
||||||
|
|
||||||
if (ic->accel_profile != INT_MIN) {
|
if (ic->accel_profile != INT_MIN) {
|
||||||
wlr_log(L_DEBUG, "libinput_config_pointer(%s) accel_set_profile(%d)",
|
wlr_log(WLR_DEBUG, "libinput_config_pointer(%s) accel_set_profile(%d)",
|
||||||
ic->identifier, ic->accel_profile);
|
ic->identifier, ic->accel_profile);
|
||||||
libinput_device_config_accel_set_profile(libinput_device,
|
libinput_device_config_accel_set_profile(libinput_device,
|
||||||
ic->accel_profile);
|
ic->accel_profile);
|
||||||
}
|
}
|
||||||
if (ic->click_method != INT_MIN) {
|
if (ic->click_method != INT_MIN) {
|
||||||
wlr_log(L_DEBUG, "libinput_config_pointer(%s) click_set_method(%d)",
|
wlr_log(WLR_DEBUG, "libinput_config_pointer(%s) click_set_method(%d)",
|
||||||
ic->identifier, ic->click_method);
|
ic->identifier, ic->click_method);
|
||||||
libinput_device_config_click_set_method(libinput_device,
|
libinput_device_config_click_set_method(libinput_device,
|
||||||
ic->click_method);
|
ic->click_method);
|
||||||
}
|
}
|
||||||
if (ic->drag_lock != INT_MIN) {
|
if (ic->drag_lock != INT_MIN) {
|
||||||
wlr_log(L_DEBUG,
|
wlr_log(WLR_DEBUG,
|
||||||
"libinput_config_pointer(%s) tap_set_drag_lock_enabled(%d)",
|
"libinput_config_pointer(%s) tap_set_drag_lock_enabled(%d)",
|
||||||
ic->identifier, ic->click_method);
|
ic->identifier, ic->click_method);
|
||||||
libinput_device_config_tap_set_drag_lock_enabled(libinput_device,
|
libinput_device_config_tap_set_drag_lock_enabled(libinput_device,
|
||||||
ic->drag_lock);
|
ic->drag_lock);
|
||||||
}
|
}
|
||||||
if (ic->dwt != INT_MIN) {
|
if (ic->dwt != INT_MIN) {
|
||||||
wlr_log(L_DEBUG, "libinput_config_pointer(%s) dwt_set_enabled(%d)",
|
wlr_log(WLR_DEBUG, "libinput_config_pointer(%s) dwt_set_enabled(%d)",
|
||||||
ic->identifier, ic->dwt);
|
ic->identifier, ic->dwt);
|
||||||
libinput_device_config_dwt_set_enabled(libinput_device, ic->dwt);
|
libinput_device_config_dwt_set_enabled(libinput_device, ic->dwt);
|
||||||
}
|
}
|
||||||
if (ic->left_handed != INT_MIN) {
|
if (ic->left_handed != INT_MIN) {
|
||||||
wlr_log(L_DEBUG,
|
wlr_log(WLR_DEBUG,
|
||||||
"libinput_config_pointer(%s) left_handed_set_enabled(%d)",
|
"libinput_config_pointer(%s) left_handed_set_enabled(%d)",
|
||||||
ic->identifier, ic->left_handed);
|
ic->identifier, ic->left_handed);
|
||||||
libinput_device_config_left_handed_set(libinput_device,
|
libinput_device_config_left_handed_set(libinput_device,
|
||||||
ic->left_handed);
|
ic->left_handed);
|
||||||
}
|
}
|
||||||
if (ic->middle_emulation != INT_MIN) {
|
if (ic->middle_emulation != INT_MIN) {
|
||||||
wlr_log(L_DEBUG,
|
wlr_log(WLR_DEBUG,
|
||||||
"libinput_config_pointer(%s) middle_emulation_set_enabled(%d)",
|
"libinput_config_pointer(%s) middle_emulation_set_enabled(%d)",
|
||||||
ic->identifier, ic->middle_emulation);
|
ic->identifier, ic->middle_emulation);
|
||||||
libinput_device_config_middle_emulation_set_enabled(libinput_device,
|
libinput_device_config_middle_emulation_set_enabled(libinput_device,
|
||||||
ic->middle_emulation);
|
ic->middle_emulation);
|
||||||
}
|
}
|
||||||
if (ic->natural_scroll != INT_MIN) {
|
if (ic->natural_scroll != INT_MIN) {
|
||||||
wlr_log(L_DEBUG,
|
wlr_log(WLR_DEBUG,
|
||||||
"libinput_config_pointer(%s) natural_scroll_set_enabled(%d)",
|
"libinput_config_pointer(%s) natural_scroll_set_enabled(%d)",
|
||||||
ic->identifier, ic->natural_scroll);
|
ic->identifier, ic->natural_scroll);
|
||||||
libinput_device_config_scroll_set_natural_scroll_enabled(
|
libinput_device_config_scroll_set_natural_scroll_enabled(
|
||||||
libinput_device, ic->natural_scroll);
|
libinput_device, ic->natural_scroll);
|
||||||
}
|
}
|
||||||
if (ic->pointer_accel != FLT_MIN) {
|
if (ic->pointer_accel != FLT_MIN) {
|
||||||
wlr_log(L_DEBUG, "libinput_config_pointer(%s) accel_set_speed(%f)",
|
wlr_log(WLR_DEBUG, "libinput_config_pointer(%s) accel_set_speed(%f)",
|
||||||
ic->identifier, ic->pointer_accel);
|
ic->identifier, ic->pointer_accel);
|
||||||
libinput_device_config_accel_set_speed(libinput_device,
|
libinput_device_config_accel_set_speed(libinput_device,
|
||||||
ic->pointer_accel);
|
ic->pointer_accel);
|
||||||
}
|
}
|
||||||
if (ic->scroll_method != INT_MIN) {
|
if (ic->scroll_method != INT_MIN) {
|
||||||
wlr_log(L_DEBUG, "libinput_config_pointer(%s) scroll_set_method(%d)",
|
wlr_log(WLR_DEBUG, "libinput_config_pointer(%s) scroll_set_method(%d)",
|
||||||
ic->identifier, ic->scroll_method);
|
ic->identifier, ic->scroll_method);
|
||||||
libinput_device_config_scroll_set_method(libinput_device,
|
libinput_device_config_scroll_set_method(libinput_device,
|
||||||
ic->scroll_method);
|
ic->scroll_method);
|
||||||
}
|
}
|
||||||
if (ic->send_events != INT_MIN) {
|
if (ic->send_events != INT_MIN) {
|
||||||
wlr_log(L_DEBUG, "libinput_config_pointer(%s) send_events_set_mode(%d)",
|
wlr_log(WLR_DEBUG, "libinput_config_pointer(%s) send_events_set_mode(%d)",
|
||||||
ic->identifier, ic->send_events);
|
ic->identifier, ic->send_events);
|
||||||
libinput_device_config_send_events_set_mode(libinput_device,
|
libinput_device_config_send_events_set_mode(libinput_device,
|
||||||
ic->send_events);
|
ic->send_events);
|
||||||
}
|
}
|
||||||
if (ic->tap != INT_MIN) {
|
if (ic->tap != INT_MIN) {
|
||||||
wlr_log(L_DEBUG, "libinput_config_pointer(%s) tap_set_enabled(%d)",
|
wlr_log(WLR_DEBUG, "libinput_config_pointer(%s) tap_set_enabled(%d)",
|
||||||
ic->identifier, ic->tap);
|
ic->identifier, ic->tap);
|
||||||
libinput_device_config_tap_set_enabled(libinput_device, ic->tap);
|
libinput_device_config_tap_set_enabled(libinput_device, ic->tap);
|
||||||
}
|
}
|
||||||
|
@ -187,7 +187,7 @@ static void handle_device_destroy(struct wl_listener *listener, void *data) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "removing device: '%s'",
|
wlr_log(WLR_DEBUG, "removing device: '%s'",
|
||||||
input_device->identifier);
|
input_device->identifier);
|
||||||
|
|
||||||
struct sway_seat *seat = NULL;
|
struct sway_seat *seat = NULL;
|
||||||
|
@ -217,7 +217,7 @@ static void handle_new_input(struct wl_listener *listener, void *data) {
|
||||||
input_device->identifier = get_device_identifier(device);
|
input_device->identifier = get_device_identifier(device);
|
||||||
wl_list_insert(&input->devices, &input_device->link);
|
wl_list_insert(&input->devices, &input_device->link);
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "adding device: '%s'",
|
wlr_log(WLR_DEBUG, "adding device: '%s'",
|
||||||
input_device->identifier);
|
input_device->identifier);
|
||||||
|
|
||||||
if (input_device->wlr_device->type == WLR_INPUT_DEVICE_POINTER) {
|
if (input_device->wlr_device->type == WLR_INPUT_DEVICE_POINTER) {
|
||||||
|
@ -229,7 +229,7 @@ static void handle_new_input(struct wl_listener *listener, void *data) {
|
||||||
|
|
||||||
struct sway_seat *seat = NULL;
|
struct sway_seat *seat = NULL;
|
||||||
if (!input_has_seat_configuration(input)) {
|
if (!input_has_seat_configuration(input)) {
|
||||||
wlr_log(L_DEBUG, "no seat configuration, using default seat");
|
wlr_log(WLR_DEBUG, "no seat configuration, using default seat");
|
||||||
seat = input_manager_get_seat(input, default_seat);
|
seat = input_manager_get_seat(input, default_seat);
|
||||||
seat_add_device(seat, input_device);
|
seat_add_device(seat, input_device);
|
||||||
return;
|
return;
|
||||||
|
@ -259,7 +259,7 @@ static void handle_new_input(struct wl_listener *listener, void *data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!added) {
|
if (!added) {
|
||||||
wlr_log(L_DEBUG,
|
wlr_log(WLR_DEBUG,
|
||||||
"device '%s' is not configured on any seats",
|
"device '%s' is not configured on any seats",
|
||||||
input_device->identifier);
|
input_device->identifier);
|
||||||
}
|
}
|
||||||
|
@ -282,7 +282,7 @@ static void handle_inhibit_deactivate(struct wl_listener *listener, void *data)
|
||||||
seat_set_exclusive_client(seat, NULL);
|
seat_set_exclusive_client(seat, NULL);
|
||||||
struct sway_container *previous = seat_get_focus(seat);
|
struct sway_container *previous = seat_get_focus(seat);
|
||||||
if (previous) {
|
if (previous) {
|
||||||
wlr_log(L_DEBUG, "Returning focus to %p %s '%s'", previous,
|
wlr_log(WLR_DEBUG, "Returning focus to %p %s '%s'", previous,
|
||||||
container_type_to_str(previous->type), previous->name);
|
container_type_to_str(previous->type), previous->name);
|
||||||
// Hack to get seat to re-focus the return value of get_focus
|
// Hack to get seat to re-focus the return value of get_focus
|
||||||
seat_set_focus(seat, previous->parent);
|
seat_set_focus(seat, previous->parent);
|
||||||
|
@ -359,7 +359,7 @@ void input_manager_apply_input_config(struct sway_input_manager *input,
|
||||||
|
|
||||||
void input_manager_apply_seat_config(struct sway_input_manager *input,
|
void input_manager_apply_seat_config(struct sway_input_manager *input,
|
||||||
struct seat_config *seat_config) {
|
struct seat_config *seat_config) {
|
||||||
wlr_log(L_DEBUG, "applying new seat config for seat %s",
|
wlr_log(WLR_DEBUG, "applying new seat config for seat %s",
|
||||||
seat_config->name);
|
seat_config->name);
|
||||||
struct sway_seat *seat = input_manager_get_seat(input, seat_config->name);
|
struct sway_seat *seat = input_manager_get_seat(input, seat_config->name);
|
||||||
if (!seat) {
|
if (!seat) {
|
||||||
|
|
|
@ -108,7 +108,7 @@ static void get_active_binding(const struct sway_shortcut_state *state,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*current_binding && *current_binding != binding) {
|
if (*current_binding && *current_binding != binding) {
|
||||||
wlr_log(L_DEBUG, "encountered duplicate bindings %d and %d",
|
wlr_log(WLR_DEBUG, "encountered duplicate bindings %d and %d",
|
||||||
(*current_binding)->order, binding->order);
|
(*current_binding)->order, binding->order);
|
||||||
} else {
|
} else {
|
||||||
*current_binding = binding;
|
*current_binding = binding;
|
||||||
|
@ -122,12 +122,12 @@ static void get_active_binding(const struct sway_shortcut_state *state,
|
||||||
*/
|
*/
|
||||||
static void keyboard_execute_command(struct sway_keyboard *keyboard,
|
static void keyboard_execute_command(struct sway_keyboard *keyboard,
|
||||||
struct sway_binding *binding) {
|
struct sway_binding *binding) {
|
||||||
wlr_log(L_DEBUG, "running command for binding: %s",
|
wlr_log(WLR_DEBUG, "running command for binding: %s",
|
||||||
binding->command);
|
binding->command);
|
||||||
config->handler_context.seat = keyboard->seat_device->sway_seat;
|
config->handler_context.seat = keyboard->seat_device->sway_seat;
|
||||||
struct cmd_results *results = execute_command(binding->command, NULL);
|
struct cmd_results *results = execute_command(binding->command, NULL);
|
||||||
if (results->status != CMD_SUCCESS) {
|
if (results->status != CMD_SUCCESS) {
|
||||||
wlr_log(L_DEBUG, "could not run command for binding: %s (%s)",
|
wlr_log(WLR_DEBUG, "could not run command for binding: %s (%s)",
|
||||||
binding->command, results->error);
|
binding->command, results->error);
|
||||||
}
|
}
|
||||||
free_cmd_results(results);
|
free_cmd_results(results);
|
||||||
|
@ -386,7 +386,7 @@ void sway_keyboard_configure(struct sway_keyboard *keyboard) {
|
||||||
xkb_keymap_new_from_names(context, &rules, XKB_KEYMAP_COMPILE_NO_FLAGS);
|
xkb_keymap_new_from_names(context, &rules, XKB_KEYMAP_COMPILE_NO_FLAGS);
|
||||||
|
|
||||||
if (!keymap) {
|
if (!keymap) {
|
||||||
wlr_log(L_DEBUG, "cannot configure keyboard: keymap does not exist");
|
wlr_log(WLR_DEBUG, "cannot configure keyboard: keymap does not exist");
|
||||||
xkb_context_unref(context);
|
xkb_context_unref(context);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,7 @@ static void seat_send_activate(struct sway_container *con,
|
||||||
struct sway_seat *seat) {
|
struct sway_seat *seat) {
|
||||||
if (con->type == C_VIEW) {
|
if (con->type == C_VIEW) {
|
||||||
if (!seat_is_input_allowed(seat, con->sway_view->surface)) {
|
if (!seat_is_input_allowed(seat, con->sway_view->surface)) {
|
||||||
wlr_log(L_DEBUG, "Refusing to set focus, input is inhibited");
|
wlr_log(WLR_DEBUG, "Refusing to set focus, input is inhibited");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
view_set_activated(con->sway_view, true);
|
view_set_activated(con->sway_view, true);
|
||||||
|
@ -219,7 +219,7 @@ static struct sway_seat_container *seat_container_from_container(
|
||||||
|
|
||||||
seat_con = calloc(1, sizeof(struct sway_seat_container));
|
seat_con = calloc(1, sizeof(struct sway_seat_container));
|
||||||
if (seat_con == NULL) {
|
if (seat_con == NULL) {
|
||||||
wlr_log(L_ERROR, "could not allocate seat container");
|
wlr_log(WLR_ERROR, "could not allocate seat container");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,7 +301,7 @@ static void handle_new_drag_icon(struct wl_listener *listener, void *data) {
|
||||||
|
|
||||||
struct sway_drag_icon *icon = calloc(1, sizeof(struct sway_drag_icon));
|
struct sway_drag_icon *icon = calloc(1, sizeof(struct sway_drag_icon));
|
||||||
if (icon == NULL) {
|
if (icon == NULL) {
|
||||||
wlr_log(L_ERROR, "Allocation failed");
|
wlr_log(WLR_ERROR, "Allocation failed");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
icon->seat = seat;
|
icon->seat = seat;
|
||||||
|
@ -391,7 +391,7 @@ static void seat_apply_input_config(struct sway_seat *seat,
|
||||||
struct input_config *ic = input_device_get_config(
|
struct input_config *ic = input_device_get_config(
|
||||||
sway_device->input_device);
|
sway_device->input_device);
|
||||||
if (ic != NULL) {
|
if (ic != NULL) {
|
||||||
wlr_log(L_DEBUG, "Applying input config to %s",
|
wlr_log(WLR_DEBUG, "Applying input config to %s",
|
||||||
sway_device->input_device->identifier);
|
sway_device->input_device->identifier);
|
||||||
|
|
||||||
mapped_to_output = ic->mapped_to_output;
|
mapped_to_output = ic->mapped_to_output;
|
||||||
|
@ -401,7 +401,7 @@ static void seat_apply_input_config(struct sway_seat *seat,
|
||||||
mapped_to_output = sway_device->input_device->wlr_device->output_name;
|
mapped_to_output = sway_device->input_device->wlr_device->output_name;
|
||||||
}
|
}
|
||||||
if (mapped_to_output != NULL) {
|
if (mapped_to_output != NULL) {
|
||||||
wlr_log(L_DEBUG, "Mapping input device %s to output %s",
|
wlr_log(WLR_DEBUG, "Mapping input device %s to output %s",
|
||||||
sway_device->input_device->identifier, mapped_to_output);
|
sway_device->input_device->identifier, mapped_to_output);
|
||||||
struct sway_container *output = NULL;
|
struct sway_container *output = NULL;
|
||||||
for (int i = 0; i < root_container.children->length; ++i) {
|
for (int i = 0; i < root_container.children->length; ++i) {
|
||||||
|
@ -415,7 +415,7 @@ static void seat_apply_input_config(struct sway_seat *seat,
|
||||||
wlr_cursor_map_input_to_output(seat->cursor->cursor,
|
wlr_cursor_map_input_to_output(seat->cursor->cursor,
|
||||||
sway_device->input_device->wlr_device,
|
sway_device->input_device->wlr_device,
|
||||||
output->sway_output->wlr_output);
|
output->sway_output->wlr_output);
|
||||||
wlr_log(L_DEBUG, "Mapped to output %s", output->name);
|
wlr_log(WLR_DEBUG, "Mapped to output %s", output->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -495,7 +495,7 @@ void seat_configure_device(struct sway_seat *seat,
|
||||||
seat_configure_tablet_tool(seat, seat_device);
|
seat_configure_tablet_tool(seat, seat_device);
|
||||||
break;
|
break;
|
||||||
case WLR_INPUT_DEVICE_TABLET_PAD:
|
case WLR_INPUT_DEVICE_TABLET_PAD:
|
||||||
wlr_log(L_DEBUG, "TODO: configure tablet pad");
|
wlr_log(WLR_DEBUG, "TODO: configure tablet pad");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -510,11 +510,11 @@ void seat_add_device(struct sway_seat *seat,
|
||||||
struct sway_seat_device *seat_device =
|
struct sway_seat_device *seat_device =
|
||||||
calloc(1, sizeof(struct sway_seat_device));
|
calloc(1, sizeof(struct sway_seat_device));
|
||||||
if (!seat_device) {
|
if (!seat_device) {
|
||||||
wlr_log(L_DEBUG, "could not allocate seat device");
|
wlr_log(WLR_DEBUG, "could not allocate seat device");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "adding device %s to seat %s",
|
wlr_log(WLR_DEBUG, "adding device %s to seat %s",
|
||||||
input_device->identifier, seat->wlr_seat->name);
|
input_device->identifier, seat->wlr_seat->name);
|
||||||
|
|
||||||
seat_device->sway_seat = seat;
|
seat_device->sway_seat = seat;
|
||||||
|
@ -533,7 +533,7 @@ void seat_remove_device(struct sway_seat *seat,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "removing device %s from seat %s",
|
wlr_log(WLR_DEBUG, "removing device %s from seat %s",
|
||||||
input_device->identifier, seat->wlr_seat->name);
|
input_device->identifier, seat->wlr_seat->name);
|
||||||
|
|
||||||
seat_device_destroy(seat_device);
|
seat_device_destroy(seat_device);
|
||||||
|
@ -752,7 +752,7 @@ void seat_set_focus_layer(struct sway_seat *seat,
|
||||||
struct sway_container *previous =
|
struct sway_container *previous =
|
||||||
seat_get_focus_inactive(seat, &root_container);
|
seat_get_focus_inactive(seat, &root_container);
|
||||||
if (previous) {
|
if (previous) {
|
||||||
wlr_log(L_DEBUG, "Returning focus to %p %s '%s'", previous,
|
wlr_log(WLR_DEBUG, "Returning focus to %p %s '%s'", previous,
|
||||||
container_type_to_str(previous->type), previous->name);
|
container_type_to_str(previous->type), previous->name);
|
||||||
// Hack to get seat to re-focus the return value of get_focus
|
// Hack to get seat to re-focus the return value of get_focus
|
||||||
seat_set_focus(seat, previous->parent);
|
seat_set_focus(seat, previous->parent);
|
||||||
|
|
|
@ -138,32 +138,32 @@ struct sockaddr_un *ipc_user_sockaddr(void) {
|
||||||
int ipc_handle_connection(int fd, uint32_t mask, void *data) {
|
int ipc_handle_connection(int fd, uint32_t mask, void *data) {
|
||||||
(void) fd;
|
(void) fd;
|
||||||
struct sway_server *server = data;
|
struct sway_server *server = data;
|
||||||
wlr_log(L_DEBUG, "Event on IPC listening socket");
|
wlr_log(WLR_DEBUG, "Event on IPC listening socket");
|
||||||
assert(mask == WL_EVENT_READABLE);
|
assert(mask == WL_EVENT_READABLE);
|
||||||
|
|
||||||
int client_fd = accept(ipc_socket, NULL, NULL);
|
int client_fd = accept(ipc_socket, NULL, NULL);
|
||||||
if (client_fd == -1) {
|
if (client_fd == -1) {
|
||||||
wlr_log_errno(L_ERROR, "Unable to accept IPC client connection");
|
wlr_log_errno(WLR_ERROR, "Unable to accept IPC client connection");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int flags;
|
int flags;
|
||||||
if ((flags = fcntl(client_fd, F_GETFD)) == -1
|
if ((flags = fcntl(client_fd, F_GETFD)) == -1
|
||||||
|| fcntl(client_fd, F_SETFD, flags|FD_CLOEXEC) == -1) {
|
|| fcntl(client_fd, F_SETFD, flags|FD_CLOEXEC) == -1) {
|
||||||
wlr_log_errno(L_ERROR, "Unable to set CLOEXEC on IPC client socket");
|
wlr_log_errno(WLR_ERROR, "Unable to set CLOEXEC on IPC client socket");
|
||||||
close(client_fd);
|
close(client_fd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if ((flags = fcntl(client_fd, F_GETFL)) == -1
|
if ((flags = fcntl(client_fd, F_GETFL)) == -1
|
||||||
|| fcntl(client_fd, F_SETFL, flags|O_NONBLOCK) == -1) {
|
|| fcntl(client_fd, F_SETFL, flags|O_NONBLOCK) == -1) {
|
||||||
wlr_log_errno(L_ERROR, "Unable to set NONBLOCK on IPC client socket");
|
wlr_log_errno(WLR_ERROR, "Unable to set NONBLOCK on IPC client socket");
|
||||||
close(client_fd);
|
close(client_fd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ipc_client *client = malloc(sizeof(struct ipc_client));
|
struct ipc_client *client = malloc(sizeof(struct ipc_client));
|
||||||
if (!client) {
|
if (!client) {
|
||||||
wlr_log(L_ERROR, "Unable to allocate ipc client");
|
wlr_log(WLR_ERROR, "Unable to allocate ipc client");
|
||||||
close(client_fd);
|
close(client_fd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -179,12 +179,12 @@ int ipc_handle_connection(int fd, uint32_t mask, void *data) {
|
||||||
client->write_buffer_len = 0;
|
client->write_buffer_len = 0;
|
||||||
client->write_buffer = malloc(client->write_buffer_size);
|
client->write_buffer = malloc(client->write_buffer_size);
|
||||||
if (!client->write_buffer) {
|
if (!client->write_buffer) {
|
||||||
wlr_log(L_ERROR, "Unable to allocate ipc client write buffer");
|
wlr_log(WLR_ERROR, "Unable to allocate ipc client write buffer");
|
||||||
close(client_fd);
|
close(client_fd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "New client: fd %d", client_fd);
|
wlr_log(WLR_DEBUG, "New client: fd %d", client_fd);
|
||||||
list_add(ipc_client_list, client);
|
list_add(ipc_client_list, client);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -195,22 +195,22 @@ int ipc_client_handle_readable(int client_fd, uint32_t mask, void *data) {
|
||||||
struct ipc_client *client = data;
|
struct ipc_client *client = data;
|
||||||
|
|
||||||
if (mask & WL_EVENT_ERROR) {
|
if (mask & WL_EVENT_ERROR) {
|
||||||
wlr_log(L_ERROR, "IPC Client socket error, removing client");
|
wlr_log(WLR_ERROR, "IPC Client socket error, removing client");
|
||||||
ipc_client_disconnect(client);
|
ipc_client_disconnect(client);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mask & WL_EVENT_HANGUP) {
|
if (mask & WL_EVENT_HANGUP) {
|
||||||
wlr_log(L_DEBUG, "Client %d hung up", client->fd);
|
wlr_log(WLR_DEBUG, "Client %d hung up", client->fd);
|
||||||
ipc_client_disconnect(client);
|
ipc_client_disconnect(client);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "Client %d readable", client->fd);
|
wlr_log(WLR_DEBUG, "Client %d readable", client->fd);
|
||||||
|
|
||||||
int read_available;
|
int read_available;
|
||||||
if (ioctl(client_fd, FIONREAD, &read_available) == -1) {
|
if (ioctl(client_fd, FIONREAD, &read_available) == -1) {
|
||||||
wlr_log_errno(L_INFO, "Unable to read IPC socket buffer size");
|
wlr_log_errno(WLR_INFO, "Unable to read IPC socket buffer size");
|
||||||
ipc_client_disconnect(client);
|
ipc_client_disconnect(client);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -232,13 +232,13 @@ int ipc_client_handle_readable(int client_fd, uint32_t mask, void *data) {
|
||||||
// Should be fully available, because read_available >= ipc_header_size
|
// Should be fully available, because read_available >= ipc_header_size
|
||||||
ssize_t received = recv(client_fd, buf, ipc_header_size, 0);
|
ssize_t received = recv(client_fd, buf, ipc_header_size, 0);
|
||||||
if (received == -1) {
|
if (received == -1) {
|
||||||
wlr_log_errno(L_INFO, "Unable to receive header from IPC client");
|
wlr_log_errno(WLR_INFO, "Unable to receive header from IPC client");
|
||||||
ipc_client_disconnect(client);
|
ipc_client_disconnect(client);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (memcmp(buf, ipc_magic, sizeof(ipc_magic)) != 0) {
|
if (memcmp(buf, ipc_magic, sizeof(ipc_magic)) != 0) {
|
||||||
wlr_log(L_DEBUG, "IPC header check failed");
|
wlr_log(WLR_DEBUG, "IPC header check failed");
|
||||||
ipc_client_disconnect(client);
|
ipc_client_disconnect(client);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -272,7 +272,7 @@ static void ipc_send_event(const char *json_string, enum ipc_command_type event)
|
||||||
}
|
}
|
||||||
client->current_command = event;
|
client->current_command = event;
|
||||||
if (!ipc_send_reply(client, json_string, (uint32_t) strlen(json_string))) {
|
if (!ipc_send_reply(client, json_string, (uint32_t) strlen(json_string))) {
|
||||||
wlr_log_errno(L_INFO, "Unable to send reply to IPC client");
|
wlr_log_errno(WLR_INFO, "Unable to send reply to IPC client");
|
||||||
/* ipc_send_reply destroys client on error, which also
|
/* ipc_send_reply destroys client on error, which also
|
||||||
* removes it from the list, so we need to process
|
* removes it from the list, so we need to process
|
||||||
* current index again */
|
* current index again */
|
||||||
|
@ -286,7 +286,7 @@ void ipc_event_workspace(struct sway_container *old,
|
||||||
if (!ipc_has_event_listeners(IPC_EVENT_WORKSPACE)) {
|
if (!ipc_has_event_listeners(IPC_EVENT_WORKSPACE)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Sending workspace::%s event", change);
|
wlr_log(WLR_DEBUG, "Sending workspace::%s event", change);
|
||||||
json_object *obj = json_object_new_object();
|
json_object *obj = json_object_new_object();
|
||||||
json_object_object_add(obj, "change", json_object_new_string(change));
|
json_object_object_add(obj, "change", json_object_new_string(change));
|
||||||
if (strcmp("focus", change) == 0) {
|
if (strcmp("focus", change) == 0) {
|
||||||
|
@ -314,7 +314,7 @@ void ipc_event_window(struct sway_container *window, const char *change) {
|
||||||
if (!ipc_has_event_listeners(IPC_EVENT_WINDOW)) {
|
if (!ipc_has_event_listeners(IPC_EVENT_WINDOW)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Sending window::%s event", change);
|
wlr_log(WLR_DEBUG, "Sending window::%s event", change);
|
||||||
json_object *obj = json_object_new_object();
|
json_object *obj = json_object_new_object();
|
||||||
json_object_object_add(obj, "change", json_object_new_string(change));
|
json_object_object_add(obj, "change", json_object_new_string(change));
|
||||||
json_object_object_add(obj, "container", ipc_json_describe_container_recursive(window));
|
json_object_object_add(obj, "container", ipc_json_describe_container_recursive(window));
|
||||||
|
@ -328,7 +328,7 @@ void ipc_event_barconfig_update(struct bar_config *bar) {
|
||||||
if (!ipc_has_event_listeners(IPC_EVENT_BARCONFIG_UPDATE)) {
|
if (!ipc_has_event_listeners(IPC_EVENT_BARCONFIG_UPDATE)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Sending barconfig_update event");
|
wlr_log(WLR_DEBUG, "Sending barconfig_update event");
|
||||||
json_object *json = ipc_json_describe_bar_config(bar);
|
json_object *json = ipc_json_describe_bar_config(bar);
|
||||||
|
|
||||||
const char *json_string = json_object_to_json_string(json);
|
const char *json_string = json_object_to_json_string(json);
|
||||||
|
@ -340,7 +340,7 @@ void ipc_event_mode(const char *mode, bool pango) {
|
||||||
if (!ipc_has_event_listeners(IPC_EVENT_MODE)) {
|
if (!ipc_has_event_listeners(IPC_EVENT_MODE)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Sending mode::%s event", mode);
|
wlr_log(WLR_DEBUG, "Sending mode::%s event", mode);
|
||||||
json_object *obj = json_object_new_object();
|
json_object *obj = json_object_new_object();
|
||||||
json_object_object_add(obj, "change", json_object_new_string(mode));
|
json_object_object_add(obj, "change", json_object_new_string(mode));
|
||||||
json_object_object_add(obj, "pango_markup",
|
json_object_object_add(obj, "pango_markup",
|
||||||
|
@ -355,13 +355,13 @@ int ipc_client_handle_writable(int client_fd, uint32_t mask, void *data) {
|
||||||
struct ipc_client *client = data;
|
struct ipc_client *client = data;
|
||||||
|
|
||||||
if (mask & WL_EVENT_ERROR) {
|
if (mask & WL_EVENT_ERROR) {
|
||||||
wlr_log(L_ERROR, "IPC Client socket error, removing client");
|
wlr_log(WLR_ERROR, "IPC Client socket error, removing client");
|
||||||
ipc_client_disconnect(client);
|
ipc_client_disconnect(client);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mask & WL_EVENT_HANGUP) {
|
if (mask & WL_EVENT_HANGUP) {
|
||||||
wlr_log(L_DEBUG, "Client %d hung up", client->fd);
|
wlr_log(WLR_DEBUG, "Client %d hung up", client->fd);
|
||||||
ipc_client_disconnect(client);
|
ipc_client_disconnect(client);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -370,14 +370,14 @@ int ipc_client_handle_writable(int client_fd, uint32_t mask, void *data) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "Client %d writable", client->fd);
|
wlr_log(WLR_DEBUG, "Client %d writable", client->fd);
|
||||||
|
|
||||||
ssize_t written = write(client->fd, client->write_buffer, client->write_buffer_len);
|
ssize_t written = write(client->fd, client->write_buffer, client->write_buffer_len);
|
||||||
|
|
||||||
if (written == -1 && errno == EAGAIN) {
|
if (written == -1 && errno == EAGAIN) {
|
||||||
return 0;
|
return 0;
|
||||||
} else if (written == -1) {
|
} else if (written == -1) {
|
||||||
wlr_log_errno(L_INFO, "Unable to send data from queue to IPC client");
|
wlr_log_errno(WLR_INFO, "Unable to send data from queue to IPC client");
|
||||||
ipc_client_disconnect(client);
|
ipc_client_disconnect(client);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -400,7 +400,7 @@ void ipc_client_disconnect(struct ipc_client *client) {
|
||||||
|
|
||||||
shutdown(client->fd, SHUT_RDWR);
|
shutdown(client->fd, SHUT_RDWR);
|
||||||
|
|
||||||
wlr_log(L_INFO, "IPC Client %d disconnected", client->fd);
|
wlr_log(WLR_INFO, "IPC Client %d disconnected", client->fd);
|
||||||
wl_event_source_remove(client->event_source);
|
wl_event_source_remove(client->event_source);
|
||||||
if (client->writable_event_source) {
|
if (client->writable_event_source) {
|
||||||
wl_event_source_remove(client->writable_event_source);
|
wl_event_source_remove(client->writable_event_source);
|
||||||
|
@ -461,7 +461,7 @@ void ipc_client_handle_command(struct ipc_client *client) {
|
||||||
|
|
||||||
char *buf = malloc(client->payload_length + 1);
|
char *buf = malloc(client->payload_length + 1);
|
||||||
if (!buf) {
|
if (!buf) {
|
||||||
wlr_log_errno(L_INFO, "Unable to allocate IPC payload");
|
wlr_log_errno(WLR_INFO, "Unable to allocate IPC payload");
|
||||||
ipc_client_disconnect(client);
|
ipc_client_disconnect(client);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -470,7 +470,7 @@ void ipc_client_handle_command(struct ipc_client *client) {
|
||||||
ssize_t received = recv(client->fd, buf, client->payload_length, 0);
|
ssize_t received = recv(client->fd, buf, client->payload_length, 0);
|
||||||
if (received == -1)
|
if (received == -1)
|
||||||
{
|
{
|
||||||
wlr_log_errno(L_INFO, "Unable to receive payload from IPC client");
|
wlr_log_errno(WLR_INFO, "Unable to receive payload from IPC client");
|
||||||
ipc_client_disconnect(client);
|
ipc_client_disconnect(client);
|
||||||
free(buf);
|
free(buf);
|
||||||
return;
|
return;
|
||||||
|
@ -533,7 +533,7 @@ void ipc_client_handle_command(struct ipc_client *client) {
|
||||||
struct json_object *request = json_tokener_parse(buf);
|
struct json_object *request = json_tokener_parse(buf);
|
||||||
if (request == NULL) {
|
if (request == NULL) {
|
||||||
client_valid = ipc_send_reply(client, "{\"success\": false}", 18);
|
client_valid = ipc_send_reply(client, "{\"success\": false}", 18);
|
||||||
wlr_log_errno(L_INFO, "Failed to read request");
|
wlr_log_errno(WLR_INFO, "Failed to read request");
|
||||||
goto exit_cleanup;
|
goto exit_cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -556,7 +556,7 @@ void ipc_client_handle_command(struct ipc_client *client) {
|
||||||
client_valid =
|
client_valid =
|
||||||
ipc_send_reply(client, "{\"success\": false}", 18);
|
ipc_send_reply(client, "{\"success\": false}", 18);
|
||||||
json_object_put(request);
|
json_object_put(request);
|
||||||
wlr_log_errno(L_INFO, "Failed to parse request");
|
wlr_log_errno(WLR_INFO, "Failed to parse request");
|
||||||
goto exit_cleanup;
|
goto exit_cleanup;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -668,7 +668,7 @@ void ipc_client_handle_command(struct ipc_client *client) {
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
wlr_log(L_INFO, "Unknown IPC command type %i", client->current_command);
|
wlr_log(WLR_INFO, "Unknown IPC command type %i", client->current_command);
|
||||||
goto exit_cleanup;
|
goto exit_cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -696,14 +696,14 @@ bool ipc_send_reply(struct ipc_client *client, const char *payload, uint32_t pay
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client->write_buffer_size > 4e6) { // 4 MB
|
if (client->write_buffer_size > 4e6) { // 4 MB
|
||||||
wlr_log(L_ERROR, "Client write buffer too big, disconnecting client");
|
wlr_log(WLR_ERROR, "Client write buffer too big, disconnecting client");
|
||||||
ipc_client_disconnect(client);
|
ipc_client_disconnect(client);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *new_buffer = realloc(client->write_buffer, client->write_buffer_size);
|
char *new_buffer = realloc(client->write_buffer, client->write_buffer_size);
|
||||||
if (!new_buffer) {
|
if (!new_buffer) {
|
||||||
wlr_log(L_ERROR, "Unable to reallocate ipc client write buffer");
|
wlr_log(WLR_ERROR, "Unable to reallocate ipc client write buffer");
|
||||||
ipc_client_disconnect(client);
|
ipc_client_disconnect(client);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -720,6 +720,6 @@ bool ipc_send_reply(struct ipc_client *client, const char *payload, uint32_t pay
|
||||||
ipc_client_handle_writable, client);
|
ipc_client_handle_writable, client);
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "Added IPC reply to client %d queue: %s", client->fd, payload);
|
wlr_log(WLR_DEBUG, "Added IPC reply to client %d queue: %s", client->fd, payload);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
50
sway/main.c
50
sway/main.c
|
@ -129,7 +129,7 @@ static void log_env() {
|
||||||
"SWAYSOCK"
|
"SWAYSOCK"
|
||||||
};
|
};
|
||||||
for (size_t i = 0; i < sizeof(log_vars) / sizeof(char *); ++i) {
|
for (size_t i = 0; i < sizeof(log_vars) / sizeof(char *); ++i) {
|
||||||
wlr_log(L_INFO, "%s=%s", log_vars[i], getenv(log_vars[i]));
|
wlr_log(WLR_INFO, "%s=%s", log_vars[i], getenv(log_vars[i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,14 +144,14 @@ static void log_distro() {
|
||||||
for (size_t i = 0; i < sizeof(paths) / sizeof(char *); ++i) {
|
for (size_t i = 0; i < sizeof(paths) / sizeof(char *); ++i) {
|
||||||
FILE *f = fopen(paths[i], "r");
|
FILE *f = fopen(paths[i], "r");
|
||||||
if (f) {
|
if (f) {
|
||||||
wlr_log(L_INFO, "Contents of %s:", paths[i]);
|
wlr_log(WLR_INFO, "Contents of %s:", paths[i]);
|
||||||
while (!feof(f)) {
|
while (!feof(f)) {
|
||||||
char *line;
|
char *line;
|
||||||
if (!(line = read_line(f))) {
|
if (!(line = read_line(f))) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (*line) {
|
if (*line) {
|
||||||
wlr_log(L_INFO, "%s", line);
|
wlr_log(WLR_INFO, "%s", line);
|
||||||
}
|
}
|
||||||
free(line);
|
free(line);
|
||||||
}
|
}
|
||||||
|
@ -163,7 +163,7 @@ static void log_distro() {
|
||||||
static void log_kernel() {
|
static void log_kernel() {
|
||||||
FILE *f = popen("uname -a", "r");
|
FILE *f = popen("uname -a", "r");
|
||||||
if (!f) {
|
if (!f) {
|
||||||
wlr_log(L_INFO, "Unable to determine kernel version");
|
wlr_log(WLR_INFO, "Unable to determine kernel version");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
while (!feof(f)) {
|
while (!feof(f)) {
|
||||||
|
@ -172,7 +172,7 @@ static void log_kernel() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (*line) {
|
if (*line) {
|
||||||
wlr_log(L_INFO, "%s", line);
|
wlr_log(WLR_INFO, "%s", line);
|
||||||
}
|
}
|
||||||
free(line);
|
free(line);
|
||||||
}
|
}
|
||||||
|
@ -183,14 +183,14 @@ static void security_sanity_check() {
|
||||||
// TODO: Notify users visually if this has issues
|
// TODO: Notify users visually if this has issues
|
||||||
struct stat s;
|
struct stat s;
|
||||||
if (stat("/proc", &s)) {
|
if (stat("/proc", &s)) {
|
||||||
wlr_log(L_ERROR,
|
wlr_log(WLR_ERROR,
|
||||||
"!! DANGER !! /proc is not available - sway CANNOT enforce security rules!");
|
"!! DANGER !! /proc is not available - sway CANNOT enforce security rules!");
|
||||||
}
|
}
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
cap_flag_value_t v;
|
cap_flag_value_t v;
|
||||||
cap_t cap = cap_get_proc();
|
cap_t cap = cap_get_proc();
|
||||||
if (!cap || cap_get_flag(cap, CAP_SYS_PTRACE, CAP_PERMITTED, &v) != 0 || v != CAP_SET) {
|
if (!cap || cap_get_flag(cap, CAP_SYS_PTRACE, CAP_PERMITTED, &v) != 0 || v != CAP_SET) {
|
||||||
wlr_log(L_ERROR,
|
wlr_log(WLR_ERROR,
|
||||||
"!! DANGER !! Sway does not have CAP_SYS_PTRACE and cannot enforce security rules for processes running as other users.");
|
"!! DANGER !! Sway does not have CAP_SYS_PTRACE and cannot enforce security rules for processes running as other users.");
|
||||||
}
|
}
|
||||||
if (cap) {
|
if (cap) {
|
||||||
|
@ -206,13 +206,13 @@ static void executable_sanity_check() {
|
||||||
stat(exe, &sb);
|
stat(exe, &sb);
|
||||||
// We assume that cap_get_file returning NULL implies ENODATA
|
// We assume that cap_get_file returning NULL implies ENODATA
|
||||||
if (sb.st_mode & (S_ISUID|S_ISGID) && cap_get_file(exe)) {
|
if (sb.st_mode & (S_ISUID|S_ISGID) && cap_get_file(exe)) {
|
||||||
wlr_log(L_ERROR,
|
wlr_log(WLR_ERROR,
|
||||||
"sway executable has both the s(g)uid bit AND file caps set.");
|
"sway executable has both the s(g)uid bit AND file caps set.");
|
||||||
wlr_log(L_ERROR,
|
wlr_log(WLR_ERROR,
|
||||||
"This is strongly discouraged (and completely broken).");
|
"This is strongly discouraged (and completely broken).");
|
||||||
wlr_log(L_ERROR,
|
wlr_log(WLR_ERROR,
|
||||||
"Please clear one of them (either the suid bit, or the file caps).");
|
"Please clear one of them (either the suid bit, or the file caps).");
|
||||||
wlr_log(L_ERROR,
|
wlr_log(WLR_ERROR,
|
||||||
"If unsure, strip the file caps.");
|
"If unsure, strip the file caps.");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
@ -223,16 +223,16 @@ static void executable_sanity_check() {
|
||||||
static void drop_permissions(bool keep_caps) {
|
static void drop_permissions(bool keep_caps) {
|
||||||
if (getuid() != geteuid() || getgid() != getegid()) {
|
if (getuid() != geteuid() || getgid() != getegid()) {
|
||||||
if (setgid(getgid()) != 0) {
|
if (setgid(getgid()) != 0) {
|
||||||
wlr_log(L_ERROR, "Unable to drop root");
|
wlr_log(WLR_ERROR, "Unable to drop root");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
if (setuid(getuid()) != 0) {
|
if (setuid(getuid()) != 0) {
|
||||||
wlr_log(L_ERROR, "Unable to drop root");
|
wlr_log(WLR_ERROR, "Unable to drop root");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (setuid(0) != -1) {
|
if (setuid(0) != -1) {
|
||||||
wlr_log(L_ERROR, "Root privileges can be restored.");
|
wlr_log(WLR_ERROR, "Root privileges can be restored.");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
|
@ -240,11 +240,11 @@ static void drop_permissions(bool keep_caps) {
|
||||||
// Drop every cap except CAP_SYS_PTRACE
|
// Drop every cap except CAP_SYS_PTRACE
|
||||||
cap_t caps = cap_init();
|
cap_t caps = cap_init();
|
||||||
cap_value_t keep = CAP_SYS_PTRACE;
|
cap_value_t keep = CAP_SYS_PTRACE;
|
||||||
wlr_log(L_INFO, "Dropping extra capabilities");
|
wlr_log(WLR_INFO, "Dropping extra capabilities");
|
||||||
if (cap_set_flag(caps, CAP_PERMITTED, 1, &keep, CAP_SET) ||
|
if (cap_set_flag(caps, CAP_PERMITTED, 1, &keep, CAP_SET) ||
|
||||||
cap_set_flag(caps, CAP_EFFECTIVE, 1, &keep, CAP_SET) ||
|
cap_set_flag(caps, CAP_EFFECTIVE, 1, &keep, CAP_SET) ||
|
||||||
cap_set_proc(caps)) {
|
cap_set_proc(caps)) {
|
||||||
wlr_log(L_ERROR, "Failed to drop extra capabilities");
|
wlr_log(WLR_ERROR, "Failed to drop extra capabilities");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -335,22 +335,22 @@ int main(int argc, char **argv) {
|
||||||
|
|
||||||
// TODO: switch logging over to wlroots?
|
// TODO: switch logging over to wlroots?
|
||||||
if (debug) {
|
if (debug) {
|
||||||
wlr_log_init(L_DEBUG, NULL);
|
wlr_log_init(WLR_DEBUG, NULL);
|
||||||
} else if (verbose || validate) {
|
} else if (verbose || validate) {
|
||||||
wlr_log_init(L_INFO, NULL);
|
wlr_log_init(WLR_INFO, NULL);
|
||||||
} else {
|
} else {
|
||||||
wlr_log_init(L_ERROR, NULL);
|
wlr_log_init(WLR_ERROR, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (optind < argc) { // Behave as IPC client
|
if (optind < argc) { // Behave as IPC client
|
||||||
if(optind != 1) {
|
if(optind != 1) {
|
||||||
wlr_log(L_ERROR, "Don't use options with the IPC client");
|
wlr_log(WLR_ERROR, "Don't use options with the IPC client");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
drop_permissions(false);
|
drop_permissions(false);
|
||||||
char *socket_path = getenv("SWAYSOCK");
|
char *socket_path = getenv("SWAYSOCK");
|
||||||
if (!socket_path) {
|
if (!socket_path) {
|
||||||
wlr_log(L_ERROR, "Unable to retrieve socket path");
|
wlr_log(WLR_ERROR, "Unable to retrieve socket path");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
char *command = join_args(argv + optind, argc - optind);
|
char *command = join_args(argv + optind, argc - optind);
|
||||||
|
@ -369,7 +369,7 @@ int main(int argc, char **argv) {
|
||||||
if (getuid() != geteuid() || getgid() != getegid()) {
|
if (getuid() != geteuid() || getgid() != getegid()) {
|
||||||
// Retain capabilities after setuid()
|
// Retain capabilities after setuid()
|
||||||
if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0)) {
|
if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0)) {
|
||||||
wlr_log(L_ERROR, "Cannot keep caps after setuid()");
|
wlr_log(WLR_ERROR, "Cannot keep caps after setuid()");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
suid = true;
|
suid = true;
|
||||||
|
@ -390,7 +390,7 @@ int main(int argc, char **argv) {
|
||||||
// prevent ipc from crashing sway
|
// prevent ipc from crashing sway
|
||||||
signal(SIGPIPE, SIG_IGN);
|
signal(SIGPIPE, SIG_IGN);
|
||||||
|
|
||||||
wlr_log(L_INFO, "Starting sway version " SWAY_VERSION);
|
wlr_log(WLR_INFO, "Starting sway version " SWAY_VERSION);
|
||||||
|
|
||||||
layout_init();
|
layout_init();
|
||||||
|
|
||||||
|
@ -423,7 +423,7 @@ int main(int argc, char **argv) {
|
||||||
char *line = config->cmd_queue->items[0];
|
char *line = config->cmd_queue->items[0];
|
||||||
struct cmd_results *res = execute_command(line, NULL);
|
struct cmd_results *res = execute_command(line, NULL);
|
||||||
if (res->status != CMD_SUCCESS) {
|
if (res->status != CMD_SUCCESS) {
|
||||||
wlr_log(L_ERROR, "Error on line '%s': %s", line, res->error);
|
wlr_log(WLR_ERROR, "Error on line '%s': %s", line, res->error);
|
||||||
}
|
}
|
||||||
free_cmd_results(res);
|
free_cmd_results(res);
|
||||||
free(line);
|
free(line);
|
||||||
|
@ -434,7 +434,7 @@ int main(int argc, char **argv) {
|
||||||
server_run(&server);
|
server_run(&server);
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_INFO, "Shutting down sway");
|
wlr_log(WLR_INFO, "Shutting down sway");
|
||||||
|
|
||||||
server_fini(&server);
|
server_fini(&server);
|
||||||
|
|
||||||
|
|
|
@ -29,20 +29,20 @@
|
||||||
#include "sway/xwayland.h"
|
#include "sway/xwayland.h"
|
||||||
|
|
||||||
bool server_privileged_prepare(struct sway_server *server) {
|
bool server_privileged_prepare(struct sway_server *server) {
|
||||||
wlr_log(L_DEBUG, "Preparing Wayland server initialization");
|
wlr_log(WLR_DEBUG, "Preparing Wayland server initialization");
|
||||||
server->wl_display = wl_display_create();
|
server->wl_display = wl_display_create();
|
||||||
server->wl_event_loop = wl_display_get_event_loop(server->wl_display);
|
server->wl_event_loop = wl_display_get_event_loop(server->wl_display);
|
||||||
server->backend = wlr_backend_autocreate(server->wl_display, NULL);
|
server->backend = wlr_backend_autocreate(server->wl_display, NULL);
|
||||||
|
|
||||||
if (!server->backend) {
|
if (!server->backend) {
|
||||||
wlr_log(L_ERROR, "Unable to create backend");
|
wlr_log(WLR_ERROR, "Unable to create backend");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool server_init(struct sway_server *server) {
|
bool server_init(struct sway_server *server) {
|
||||||
wlr_log(L_DEBUG, "Initializing Wayland server");
|
wlr_log(WLR_DEBUG, "Initializing Wayland server");
|
||||||
|
|
||||||
struct wlr_renderer *renderer = wlr_backend_get_renderer(server->backend);
|
struct wlr_renderer *renderer = wlr_backend_get_renderer(server->backend);
|
||||||
assert(renderer);
|
assert(renderer);
|
||||||
|
@ -116,7 +116,7 @@ bool server_init(struct sway_server *server) {
|
||||||
|
|
||||||
server->socket = wl_display_add_socket_auto(server->wl_display);
|
server->socket = wl_display_add_socket_auto(server->wl_display);
|
||||||
if (!server->socket) {
|
if (!server->socket) {
|
||||||
wlr_log(L_ERROR, "Unable to open wayland socket");
|
wlr_log(WLR_ERROR, "Unable to open wayland socket");
|
||||||
wlr_backend_destroy(server->backend);
|
wlr_backend_destroy(server->backend);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -141,10 +141,10 @@ void server_fini(struct sway_server *server) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void server_run(struct sway_server *server) {
|
void server_run(struct sway_server *server) {
|
||||||
wlr_log(L_INFO, "Running compositor on wayland display '%s'",
|
wlr_log(WLR_INFO, "Running compositor on wayland display '%s'",
|
||||||
server->socket);
|
server->socket);
|
||||||
if (!wlr_backend_start(server->backend)) {
|
if (!wlr_backend_start(server->backend)) {
|
||||||
wlr_log(L_ERROR, "Failed to start backend");
|
wlr_log(WLR_ERROR, "Failed to start backend");
|
||||||
wlr_backend_destroy(server->backend);
|
wlr_backend_destroy(server->backend);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,6 +92,12 @@ They are expected to be used with *bindsym* or at runtime through *swaymsg*(1).
|
||||||
*focus* output <name>
|
*focus* output <name>
|
||||||
Moves focus to the named output.
|
Moves focus to the named output.
|
||||||
|
|
||||||
|
*focus tiling*
|
||||||
|
Sets focus to the last focused tiling container.
|
||||||
|
|
||||||
|
*focus floating*
|
||||||
|
Sets focus to the last focused floating container.
|
||||||
|
|
||||||
*focus* mode\_toggle
|
*focus* mode\_toggle
|
||||||
Moves focus between the floating and tiled layers.
|
Moves focus between the floating and tiled layers.
|
||||||
|
|
||||||
|
|
|
@ -47,11 +47,11 @@ static void apply_horiz_layout(struct sway_container *parent) {
|
||||||
double scale = parent->width / total_width;
|
double scale = parent->width / total_width;
|
||||||
|
|
||||||
// Resize windows
|
// Resize windows
|
||||||
wlr_log(L_DEBUG, "Arranging %p horizontally", parent);
|
wlr_log(WLR_DEBUG, "Arranging %p horizontally", parent);
|
||||||
double child_x = parent->x;
|
double child_x = parent->x;
|
||||||
for (size_t i = 0; i < num_children; ++i) {
|
for (size_t i = 0; i < num_children; ++i) {
|
||||||
struct sway_container *child = parent->children->items[i];
|
struct sway_container *child = parent->children->items[i];
|
||||||
wlr_log(L_DEBUG,
|
wlr_log(WLR_DEBUG,
|
||||||
"Calculating arrangement for %p:%d (will scale %f by %f)",
|
"Calculating arrangement for %p:%d (will scale %f by %f)",
|
||||||
child, child->type, child->width, scale);
|
child, child->type, child->width, scale);
|
||||||
child->x = child_x;
|
child->x = child_x;
|
||||||
|
@ -99,11 +99,11 @@ static void apply_vert_layout(struct sway_container *parent) {
|
||||||
double scale = parent_height / total_height;
|
double scale = parent_height / total_height;
|
||||||
|
|
||||||
// Resize
|
// Resize
|
||||||
wlr_log(L_DEBUG, "Arranging %p vertically", parent);
|
wlr_log(WLR_DEBUG, "Arranging %p vertically", parent);
|
||||||
double child_y = parent->y + parent_offset;
|
double child_y = parent->y + parent_offset;
|
||||||
for (size_t i = 0; i < num_children; ++i) {
|
for (size_t i = 0; i < num_children; ++i) {
|
||||||
struct sway_container *child = parent->children->items[i];
|
struct sway_container *child = parent->children->items[i];
|
||||||
wlr_log(L_DEBUG,
|
wlr_log(WLR_DEBUG,
|
||||||
"Calculating arrangement for %p:%d (will scale %f by %f)",
|
"Calculating arrangement for %p:%d (will scale %f by %f)",
|
||||||
child, child->type, child->height, scale);
|
child, child->type, child->height, scale);
|
||||||
child->x = parent->x;
|
child->x = parent->x;
|
||||||
|
@ -179,7 +179,7 @@ static void arrange_children_of(struct sway_container *parent,
|
||||||
if (config->reloading) {
|
if (config->reloading) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Arranging layout for %p %s %fx%f+%f,%f", parent,
|
wlr_log(WLR_DEBUG, "Arranging layout for %p %s %fx%f+%f,%f", parent,
|
||||||
parent->name, parent->width, parent->height, parent->x, parent->y);
|
parent->name, parent->width, parent->height, parent->x, parent->y);
|
||||||
|
|
||||||
// Calculate x, y, width and height of children
|
// Calculate x, y, width and height of children
|
||||||
|
@ -226,7 +226,7 @@ static void arrange_workspace(struct sway_container *workspace,
|
||||||
}
|
}
|
||||||
struct sway_container *output = workspace->parent;
|
struct sway_container *output = workspace->parent;
|
||||||
struct wlr_box *area = &output->sway_output->usable_area;
|
struct wlr_box *area = &output->sway_output->usable_area;
|
||||||
wlr_log(L_DEBUG, "Usable area for ws: %dx%d@%d,%d",
|
wlr_log(WLR_DEBUG, "Usable area for ws: %dx%d@%d,%d",
|
||||||
area->width, area->height, area->x, area->y);
|
area->width, area->height, area->x, area->y);
|
||||||
remove_gaps(workspace);
|
remove_gaps(workspace);
|
||||||
workspace->width = area->width;
|
workspace->width = area->width;
|
||||||
|
@ -235,7 +235,7 @@ static void arrange_workspace(struct sway_container *workspace,
|
||||||
workspace->y = output->y + area->y;
|
workspace->y = output->y + area->y;
|
||||||
add_gaps(workspace);
|
add_gaps(workspace);
|
||||||
transaction_add_container(transaction, workspace);
|
transaction_add_container(transaction, workspace);
|
||||||
wlr_log(L_DEBUG, "Arranging workspace '%s' at %f, %f", workspace->name,
|
wlr_log(WLR_DEBUG, "Arranging workspace '%s' at %f, %f", workspace->name,
|
||||||
workspace->x, workspace->y);
|
workspace->x, workspace->y);
|
||||||
arrange_floating(workspace->sway_workspace->floating, transaction);
|
arrange_floating(workspace->sway_workspace->floating, transaction);
|
||||||
arrange_children_of(workspace, transaction);
|
arrange_children_of(workspace, transaction);
|
||||||
|
@ -254,7 +254,7 @@ static void arrange_output(struct sway_container *output,
|
||||||
output->width = output_box->width;
|
output->width = output_box->width;
|
||||||
output->height = output_box->height;
|
output->height = output_box->height;
|
||||||
transaction_add_container(transaction, output);
|
transaction_add_container(transaction, output);
|
||||||
wlr_log(L_DEBUG, "Arranging output '%s' at %f,%f",
|
wlr_log(WLR_DEBUG, "Arranging output '%s' at %f,%f",
|
||||||
output->name, output->x, output->y);
|
output->name, output->x, output->y);
|
||||||
for (int i = 0; i < output->children->length; ++i) {
|
for (int i = 0; i < output->children->length; ++i) {
|
||||||
struct sway_container *workspace = output->children->items[i];
|
struct sway_container *workspace = output->children->items[i];
|
||||||
|
@ -315,7 +315,7 @@ void arrange_and_commit(struct sway_container *container) {
|
||||||
|
|
||||||
void remove_gaps(struct sway_container *c) {
|
void remove_gaps(struct sway_container *c) {
|
||||||
if (c->current_gaps == 0) {
|
if (c->current_gaps == 0) {
|
||||||
wlr_log(L_DEBUG, "Removing gaps: not gapped: %p", c);
|
wlr_log(WLR_DEBUG, "Removing gaps: not gapped: %p", c);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -326,12 +326,12 @@ void remove_gaps(struct sway_container *c) {
|
||||||
|
|
||||||
c->current_gaps = 0;
|
c->current_gaps = 0;
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "Removing gaps %p", c);
|
wlr_log(WLR_DEBUG, "Removing gaps %p", c);
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_gaps(struct sway_container *c) {
|
void add_gaps(struct sway_container *c) {
|
||||||
if (c->current_gaps > 0 || c->type == C_CONTAINER) {
|
if (c->current_gaps > 0 || c->type == C_CONTAINER) {
|
||||||
wlr_log(L_DEBUG, "Not adding gaps: %p", c);
|
wlr_log(WLR_DEBUG, "Not adding gaps: %p", c);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -348,5 +348,5 @@ void add_gaps(struct sway_container *c) {
|
||||||
c->height -= 2 * gaps;
|
c->height -= 2 * gaps;
|
||||||
c->current_gaps = gaps;
|
c->current_gaps = gaps;
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "Adding gaps: %p", c);
|
wlr_log(WLR_DEBUG, "Adding gaps: %p", c);
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ static list_t *get_bfs_queue() {
|
||||||
if (!bfs_queue) {
|
if (!bfs_queue) {
|
||||||
bfs_queue = create_list();
|
bfs_queue = create_list();
|
||||||
if (!bfs_queue) {
|
if (!bfs_queue) {
|
||||||
wlr_log(L_ERROR, "could not allocate list for bfs queue");
|
wlr_log(WLR_ERROR, "could not allocate list for bfs queue");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -213,7 +213,7 @@ static struct sway_container *container_workspace_destroy(
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "destroying workspace '%s'", workspace->name);
|
wlr_log(WLR_DEBUG, "destroying workspace '%s'", workspace->name);
|
||||||
|
|
||||||
struct sway_container *parent = workspace->parent;
|
struct sway_container *parent = workspace->parent;
|
||||||
if (!workspace_is_empty(workspace) && output) {
|
if (!workspace_is_empty(workspace) && output) {
|
||||||
|
@ -226,7 +226,7 @@ static struct sway_container *container_workspace_destroy(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "moving children to different workspace '%s' -> '%s'",
|
wlr_log(WLR_DEBUG, "moving children to different workspace '%s' -> '%s'",
|
||||||
workspace->name, new_workspace->name);
|
workspace->name, new_workspace->name);
|
||||||
for (int i = 0; i < workspace->children->length; i++) {
|
for (int i = 0; i < workspace->children->length; i++) {
|
||||||
container_move_to(workspace->children->items[i], new_workspace);
|
container_move_to(workspace->children->items[i], new_workspace);
|
||||||
|
@ -292,7 +292,7 @@ static struct sway_container *container_output_destroy(
|
||||||
output->sway_output->swayc = NULL;
|
output->sway_output->swayc = NULL;
|
||||||
output->sway_output = NULL;
|
output->sway_output = NULL;
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "OUTPUT: Destroying output '%s'", output->name);
|
wlr_log(WLR_DEBUG, "OUTPUT: Destroying output '%s'", output->name);
|
||||||
|
|
||||||
return &root_container;
|
return &root_container;
|
||||||
}
|
}
|
||||||
|
@ -319,7 +319,7 @@ static struct sway_container *container_destroy_noreaping(
|
||||||
// Workspaces will refuse to be destroyed if they're the last workspace
|
// Workspaces will refuse to be destroyed if they're the last workspace
|
||||||
// on their output.
|
// on their output.
|
||||||
if (!container_workspace_destroy(con)) {
|
if (!container_workspace_destroy(con)) {
|
||||||
wlr_log(L_ERROR, "workspace doesn't want to destroy");
|
wlr_log(WLR_ERROR, "workspace doesn't want to destroy");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -346,7 +346,7 @@ bool container_reap_empty(struct sway_container *con) {
|
||||||
break;
|
break;
|
||||||
case C_WORKSPACE:
|
case C_WORKSPACE:
|
||||||
if (!workspace_is_visible(con) && workspace_is_empty(con)) {
|
if (!workspace_is_visible(con) && workspace_is_empty(con)) {
|
||||||
wlr_log(L_DEBUG, "Destroying workspace via reaper");
|
wlr_log(WLR_DEBUG, "Destroying workspace via reaper");
|
||||||
container_destroy_noreaping(con);
|
container_destroy_noreaping(con);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -439,7 +439,7 @@ struct sway_container *container_view_create(struct sway_container *sibling,
|
||||||
}
|
}
|
||||||
const char *title = view_get_title(sway_view);
|
const char *title = view_get_title(sway_view);
|
||||||
struct sway_container *swayc = container_create(C_VIEW);
|
struct sway_container *swayc = container_create(C_VIEW);
|
||||||
wlr_log(L_DEBUG, "Adding new view %p:%s to container %p %d %s",
|
wlr_log(WLR_DEBUG, "Adding new view %p:%s to container %p %d %s",
|
||||||
swayc, title, sibling, sibling ? sibling->type : 0, sibling->name);
|
swayc, title, sibling, sibling ? sibling->type : 0, sibling->name);
|
||||||
// Setup values
|
// Setup values
|
||||||
swayc->sway_view = sway_view;
|
swayc->sway_view = sway_view;
|
||||||
|
@ -702,7 +702,7 @@ void container_for_each_descendant_bfs(struct sway_container *con,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (queue == NULL) {
|
if (queue == NULL) {
|
||||||
wlr_log(L_ERROR, "could not allocate list");
|
wlr_log(WLR_ERROR, "could not allocate list");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -101,7 +101,7 @@ void container_insert_child(struct sway_container *parent,
|
||||||
if (old_parent) {
|
if (old_parent) {
|
||||||
container_remove_child(child);
|
container_remove_child(child);
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Inserting id:%zd at index %d", child->id, i);
|
wlr_log(WLR_DEBUG, "Inserting id:%zd at index %d", child->id, i);
|
||||||
list_insert(parent->children, i, child);
|
list_insert(parent->children, i, child);
|
||||||
child->parent = parent;
|
child->parent = parent;
|
||||||
container_handle_fullscreen_reparent(child, old_parent);
|
container_handle_fullscreen_reparent(child, old_parent);
|
||||||
|
@ -127,7 +127,7 @@ struct sway_container *container_add_sibling(struct sway_container *fixed,
|
||||||
|
|
||||||
void container_add_child(struct sway_container *parent,
|
void container_add_child(struct sway_container *parent,
|
||||||
struct sway_container *child) {
|
struct sway_container *child) {
|
||||||
wlr_log(L_DEBUG, "Adding %p (%d, %fx%f) to %p (%d, %fx%f)",
|
wlr_log(WLR_DEBUG, "Adding %p (%d, %fx%f) to %p (%d, %fx%f)",
|
||||||
child, child->type, child->width, child->height,
|
child, child->type, child->width, child->height,
|
||||||
parent, parent->type, parent->width, parent->height);
|
parent, parent->type, parent->width, parent->height);
|
||||||
struct sway_container *old_parent = child->parent;
|
struct sway_container *old_parent = child->parent;
|
||||||
|
@ -319,13 +319,13 @@ static void move_out_of_tabs_stacks(struct sway_container *container,
|
||||||
int offs) {
|
int offs) {
|
||||||
if (container->parent == current->parent
|
if (container->parent == current->parent
|
||||||
&& current->parent->children->length == 1) {
|
&& current->parent->children->length == 1) {
|
||||||
wlr_log(L_DEBUG, "Changing layout of %zd", current->parent->id);
|
wlr_log(WLR_DEBUG, "Changing layout of %zd", current->parent->id);
|
||||||
current->parent->layout = move_dir ==
|
current->parent->layout = move_dir ==
|
||||||
MOVE_LEFT || move_dir == MOVE_RIGHT ? L_HORIZ : L_VERT;
|
MOVE_LEFT || move_dir == MOVE_RIGHT ? L_HORIZ : L_VERT;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "Moving out of tab/stack into a split");
|
wlr_log(WLR_DEBUG, "Moving out of tab/stack into a split");
|
||||||
bool is_workspace = current->parent->type == C_WORKSPACE;
|
bool is_workspace = current->parent->type == C_WORKSPACE;
|
||||||
struct sway_container *new_parent = container_split(current->parent,
|
struct sway_container *new_parent = container_split(current->parent,
|
||||||
move_dir == MOVE_LEFT || move_dir == MOVE_RIGHT ? L_HORIZ : L_VERT);
|
move_dir == MOVE_LEFT || move_dir == MOVE_RIGHT ? L_HORIZ : L_VERT);
|
||||||
|
@ -370,7 +370,7 @@ void container_move(struct sway_container *container,
|
||||||
}
|
}
|
||||||
|
|
||||||
parent = current->parent;
|
parent = current->parent;
|
||||||
wlr_log(L_DEBUG, "Visiting %p %s '%s'", current,
|
wlr_log(WLR_DEBUG, "Visiting %p %s '%s'", current,
|
||||||
container_type_to_str(current->type), current->name);
|
container_type_to_str(current->type), current->name);
|
||||||
|
|
||||||
int index = index_child(current);
|
int index = index_child(current);
|
||||||
|
@ -388,12 +388,12 @@ void container_move(struct sway_container *container,
|
||||||
root_container.sway_root->output_layout, wlr_dir,
|
root_container.sway_root->output_layout, wlr_dir,
|
||||||
current->sway_output->wlr_output, ref_lx, ref_ly);
|
current->sway_output->wlr_output, ref_lx, ref_ly);
|
||||||
if (!next) {
|
if (!next) {
|
||||||
wlr_log(L_DEBUG, "Hit edge of output, nowhere else to go");
|
wlr_log(WLR_DEBUG, "Hit edge of output, nowhere else to go");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
struct sway_output *next_output = next->data;
|
struct sway_output *next_output = next->data;
|
||||||
current = next_output->swayc;
|
current = next_output->swayc;
|
||||||
wlr_log(L_DEBUG, "Selected next output (%s)", current->name);
|
wlr_log(WLR_DEBUG, "Selected next output (%s)", current->name);
|
||||||
// Select workspace and get outta here
|
// Select workspace and get outta here
|
||||||
current = seat_get_focus_inactive(
|
current = seat_get_focus_inactive(
|
||||||
config->handler_context.seat, current);
|
config->handler_context.seat, current);
|
||||||
|
@ -406,20 +406,20 @@ void container_move(struct sway_container *container,
|
||||||
case C_WORKSPACE:
|
case C_WORKSPACE:
|
||||||
if (!is_parallel(current->layout, move_dir)) {
|
if (!is_parallel(current->layout, move_dir)) {
|
||||||
if (current->children->length >= 2) {
|
if (current->children->length >= 2) {
|
||||||
wlr_log(L_DEBUG, "Rejiggering the workspace (%d kiddos)",
|
wlr_log(WLR_DEBUG, "Rejiggering the workspace (%d kiddos)",
|
||||||
current->children->length);
|
current->children->length);
|
||||||
workspace_rejigger(current, container, move_dir);
|
workspace_rejigger(current, container, move_dir);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_DEBUG, "Selecting output");
|
wlr_log(WLR_DEBUG, "Selecting output");
|
||||||
current = current->parent;
|
current = current->parent;
|
||||||
}
|
}
|
||||||
} else if (current->layout == L_TABBED
|
} else if (current->layout == L_TABBED
|
||||||
|| current->layout == L_STACKED) {
|
|| current->layout == L_STACKED) {
|
||||||
wlr_log(L_DEBUG, "Rejiggering out of tabs/stacks");
|
wlr_log(WLR_DEBUG, "Rejiggering out of tabs/stacks");
|
||||||
workspace_rejigger(current, container, move_dir);
|
workspace_rejigger(current, container, move_dir);
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_DEBUG, "Selecting output");
|
wlr_log(WLR_DEBUG, "Selecting output");
|
||||||
current = current->parent;
|
current = current->parent;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -435,11 +435,11 @@ void container_move(struct sway_container *container,
|
||||||
move_dir, offs);
|
move_dir, offs);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_DEBUG, "Hit limit, selecting parent");
|
wlr_log(WLR_DEBUG, "Hit limit, selecting parent");
|
||||||
current = current->parent;
|
current = current->parent;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_DEBUG, "Hit limit, "
|
wlr_log(WLR_DEBUG, "Hit limit, "
|
||||||
"promoting descendant to sibling");
|
"promoting descendant to sibling");
|
||||||
// Special case
|
// Special case
|
||||||
container_insert_child(current->parent, container,
|
container_insert_child(current->parent, container,
|
||||||
|
@ -449,14 +449,14 @@ void container_move(struct sway_container *container,
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
sibling = parent->children->items[index + offs];
|
sibling = parent->children->items[index + offs];
|
||||||
wlr_log(L_DEBUG, "Selecting sibling id:%zd", sibling->id);
|
wlr_log(WLR_DEBUG, "Selecting sibling id:%zd", sibling->id);
|
||||||
}
|
}
|
||||||
} else if (parent->layout == L_TABBED
|
} else if (parent->layout == L_TABBED
|
||||||
|| parent->layout == L_STACKED) {
|
|| parent->layout == L_STACKED) {
|
||||||
move_out_of_tabs_stacks(container, current, move_dir, offs);
|
move_out_of_tabs_stacks(container, current, move_dir, offs);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_DEBUG, "Moving up to find a parallel container");
|
wlr_log(WLR_DEBUG, "Moving up to find a parallel container");
|
||||||
current = current->parent;
|
current = current->parent;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -475,11 +475,11 @@ void container_move(struct sway_container *container,
|
||||||
switch (sibling->type) {
|
switch (sibling->type) {
|
||||||
case C_VIEW:
|
case C_VIEW:
|
||||||
if (sibling->parent == container->parent) {
|
if (sibling->parent == container->parent) {
|
||||||
wlr_log(L_DEBUG, "Swapping siblings");
|
wlr_log(WLR_DEBUG, "Swapping siblings");
|
||||||
sibling->parent->children->items[index + offs] = container;
|
sibling->parent->children->items[index + offs] = container;
|
||||||
sibling->parent->children->items[index] = sibling;
|
sibling->parent->children->items[index] = sibling;
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_DEBUG, "Promoting to sibling of cousin");
|
wlr_log(WLR_DEBUG, "Promoting to sibling of cousin");
|
||||||
container_insert_child(sibling->parent, container,
|
container_insert_child(sibling->parent, container,
|
||||||
index_child(sibling) + (offs > 0 ? 0 : 1));
|
index_child(sibling) + (offs > 0 ? 0 : 1));
|
||||||
container->width = container->height = 0;
|
container->width = container->height = 0;
|
||||||
|
@ -490,31 +490,31 @@ void container_move(struct sway_container *container,
|
||||||
case C_CONTAINER:
|
case C_CONTAINER:
|
||||||
if (is_parallel(sibling->layout, move_dir)) {
|
if (is_parallel(sibling->layout, move_dir)) {
|
||||||
int limit = container_limit(sibling, invert_movement(move_dir));
|
int limit = container_limit(sibling, invert_movement(move_dir));
|
||||||
wlr_log(L_DEBUG, "limit: %d", limit);
|
wlr_log(WLR_DEBUG, "limit: %d", limit);
|
||||||
wlr_log(L_DEBUG,
|
wlr_log(WLR_DEBUG,
|
||||||
"Reparenting container (parallel) to index %d "
|
"Reparenting container (parallel) to index %d "
|
||||||
"(move dir: %d)", limit, move_dir);
|
"(move dir: %d)", limit, move_dir);
|
||||||
container_insert_child(sibling, container, limit);
|
container_insert_child(sibling, container, limit);
|
||||||
container->width = container->height = 0;
|
container->width = container->height = 0;
|
||||||
sibling = NULL;
|
sibling = NULL;
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_DEBUG, "Reparenting container (perpendicular)");
|
wlr_log(WLR_DEBUG, "Reparenting container (perpendicular)");
|
||||||
struct sway_container *focus_inactive = seat_get_focus_inactive(
|
struct sway_container *focus_inactive = seat_get_focus_inactive(
|
||||||
config->handler_context.seat, sibling);
|
config->handler_context.seat, sibling);
|
||||||
if (focus_inactive && focus_inactive != sibling) {
|
if (focus_inactive && focus_inactive != sibling) {
|
||||||
while (focus_inactive->parent != sibling) {
|
while (focus_inactive->parent != sibling) {
|
||||||
focus_inactive = focus_inactive->parent;
|
focus_inactive = focus_inactive->parent;
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Focus inactive: id:%zd",
|
wlr_log(WLR_DEBUG, "Focus inactive: id:%zd",
|
||||||
focus_inactive->id);
|
focus_inactive->id);
|
||||||
sibling = focus_inactive;
|
sibling = focus_inactive;
|
||||||
continue;
|
continue;
|
||||||
} else if (sibling->children->length) {
|
} else if (sibling->children->length) {
|
||||||
wlr_log(L_DEBUG, "No focus-inactive, adding arbitrarily");
|
wlr_log(WLR_DEBUG, "No focus-inactive, adding arbitrarily");
|
||||||
container_remove_child(container);
|
container_remove_child(container);
|
||||||
container_add_sibling(sibling->children->items[0], container);
|
container_add_sibling(sibling->children->items[0], container);
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_DEBUG, "No kiddos, adding container alone");
|
wlr_log(WLR_DEBUG, "No kiddos, adding container alone");
|
||||||
container_remove_child(container);
|
container_remove_child(container);
|
||||||
container_add_child(sibling, container);
|
container_add_child(sibling, container);
|
||||||
}
|
}
|
||||||
|
@ -611,7 +611,7 @@ static struct sway_container *get_swayc_in_output_direction(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ws == NULL) {
|
if (ws == NULL) {
|
||||||
wlr_log(L_ERROR, "got an output without a workspace");
|
wlr_log(WLR_ERROR, "got an output without a workspace");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -783,7 +783,7 @@ struct sway_container *container_get_in_direction(
|
||||||
} else {
|
} else {
|
||||||
struct sway_container *desired_con =
|
struct sway_container *desired_con =
|
||||||
parent->children->items[desired];
|
parent->children->items[desired];
|
||||||
wlr_log(L_DEBUG,
|
wlr_log(WLR_DEBUG,
|
||||||
"cont %d-%p dir %i sibling %d: %p", idx,
|
"cont %d-%p dir %i sibling %d: %p", idx,
|
||||||
container, dir, desired, desired_con);
|
container, dir, desired, desired_con);
|
||||||
return seat_get_focus_inactive_view(seat, desired_con);
|
return seat_get_focus_inactive_view(seat, desired_con);
|
||||||
|
@ -848,7 +848,7 @@ struct sway_container *container_split(struct sway_container *child,
|
||||||
|
|
||||||
struct sway_container *cont = container_create(C_CONTAINER);
|
struct sway_container *cont = container_create(C_CONTAINER);
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "creating container %p around %p", cont, child);
|
wlr_log(WLR_DEBUG, "creating container %p around %p", cont, child);
|
||||||
|
|
||||||
remove_gaps(child);
|
remove_gaps(child);
|
||||||
|
|
||||||
|
@ -896,7 +896,7 @@ struct sway_container *container_split(struct sway_container *child,
|
||||||
void container_recursive_resize(struct sway_container *container,
|
void container_recursive_resize(struct sway_container *container,
|
||||||
double amount, enum resize_edge edge) {
|
double amount, enum resize_edge edge) {
|
||||||
bool layout_match = true;
|
bool layout_match = true;
|
||||||
wlr_log(L_DEBUG, "Resizing %p with amount: %f", container, amount);
|
wlr_log(WLR_DEBUG, "Resizing %p with amount: %f", container, amount);
|
||||||
if (edge == RESIZE_EDGE_LEFT || edge == RESIZE_EDGE_RIGHT) {
|
if (edge == RESIZE_EDGE_LEFT || edge == RESIZE_EDGE_RIGHT) {
|
||||||
container->width += amount;
|
container->width += amount;
|
||||||
layout_match = container->layout == L_HORIZ;
|
layout_match = container->layout == L_HORIZ;
|
||||||
|
@ -986,7 +986,7 @@ void container_swap(struct sway_container *con1, struct sway_container *con2) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "Swapping containers %zu and %zu", con1->id, con2->id);
|
wlr_log(WLR_DEBUG, "Swapping containers %zu and %zu", con1->id, con2->id);
|
||||||
|
|
||||||
int fs1 = con1->type == C_VIEW && con1->sway_view->is_fullscreen;
|
int fs1 = con1->type == C_VIEW && con1->sway_view->is_fullscreen;
|
||||||
int fs2 = con2->type == C_VIEW && con2->sway_view->is_fullscreen;
|
int fs2 = con2->type == C_VIEW && con2->sway_view->is_fullscreen;
|
||||||
|
|
|
@ -43,11 +43,11 @@ struct sway_container *output_create(
|
||||||
|
|
||||||
if (strcasecmp(name, cur->name) == 0 ||
|
if (strcasecmp(name, cur->name) == 0 ||
|
||||||
strcasecmp(identifier, cur->name) == 0) {
|
strcasecmp(identifier, cur->name) == 0) {
|
||||||
wlr_log(L_DEBUG, "Matched output config for %s", name);
|
wlr_log(WLR_DEBUG, "Matched output config for %s", name);
|
||||||
oc = cur;
|
oc = cur;
|
||||||
}
|
}
|
||||||
if (strcasecmp("*", cur->name) == 0) {
|
if (strcasecmp("*", cur->name) == 0) {
|
||||||
wlr_log(L_DEBUG, "Matched wildcard output config for %s", name);
|
wlr_log(WLR_DEBUG, "Matched wildcard output config for %s", name);
|
||||||
all = cur;
|
all = cur;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ struct sway_container *output_create(
|
||||||
if (!output->children->length) {
|
if (!output->children->length) {
|
||||||
// Create workspace
|
// Create workspace
|
||||||
char *ws_name = workspace_next_name(output->name);
|
char *ws_name = workspace_next_name(output->name);
|
||||||
wlr_log(L_DEBUG, "Creating default workspace %s", ws_name);
|
wlr_log(WLR_DEBUG, "Creating default workspace %s", ws_name);
|
||||||
struct sway_container *ws = workspace_create(output, ws_name);
|
struct sway_container *ws = workspace_create(output, ws_name);
|
||||||
// Set each seat's focus if not already set
|
// Set each seat's focus if not already set
|
||||||
struct sway_seat *seat = NULL;
|
struct sway_seat *seat = NULL;
|
||||||
|
|
|
@ -462,17 +462,17 @@ void view_execute_criteria(struct sway_view *view) {
|
||||||
list_t *criterias = criteria_for_view(view, CT_COMMAND);
|
list_t *criterias = criteria_for_view(view, CT_COMMAND);
|
||||||
for (int i = 0; i < criterias->length; i++) {
|
for (int i = 0; i < criterias->length; i++) {
|
||||||
struct criteria *criteria = criterias->items[i];
|
struct criteria *criteria = criterias->items[i];
|
||||||
wlr_log(L_DEBUG, "Checking criteria %s", criteria->raw);
|
wlr_log(WLR_DEBUG, "Checking criteria %s", criteria->raw);
|
||||||
if (view_has_executed_criteria(view, criteria)) {
|
if (view_has_executed_criteria(view, criteria)) {
|
||||||
wlr_log(L_DEBUG, "Criteria already executed");
|
wlr_log(WLR_DEBUG, "Criteria already executed");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "for_window '%s' matches view %p, cmd: '%s'",
|
wlr_log(WLR_DEBUG, "for_window '%s' matches view %p, cmd: '%s'",
|
||||||
criteria->raw, view, criteria->cmdlist);
|
criteria->raw, view, criteria->cmdlist);
|
||||||
list_add(view->executed_criteria, criteria);
|
list_add(view->executed_criteria, criteria);
|
||||||
struct cmd_results *res = execute_command(criteria->cmdlist, NULL);
|
struct cmd_results *res = execute_command(criteria->cmdlist, NULL);
|
||||||
if (res->status != CMD_SUCCESS) {
|
if (res->status != CMD_SUCCESS) {
|
||||||
wlr_log(L_ERROR, "Command '%s' failed: %s", res->input, res->error);
|
wlr_log(WLR_ERROR, "Command '%s' failed: %s", res->input, res->error);
|
||||||
}
|
}
|
||||||
free_cmd_results(res);
|
free_cmd_results(res);
|
||||||
// view must be focused for commands to affect it,
|
// view must be focused for commands to affect it,
|
||||||
|
@ -601,7 +601,7 @@ static void view_subsurface_create(struct sway_view *view,
|
||||||
struct wlr_subsurface *subsurface) {
|
struct wlr_subsurface *subsurface) {
|
||||||
struct sway_view_child *child = calloc(1, sizeof(struct sway_view_child));
|
struct sway_view_child *child = calloc(1, sizeof(struct sway_view_child));
|
||||||
if (child == NULL) {
|
if (child == NULL) {
|
||||||
wlr_log(L_ERROR, "Allocation failed");
|
wlr_log(WLR_ERROR, "Allocation failed");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
view_child_init(child, NULL, view, subsurface->surface);
|
view_child_init(child, NULL, view, subsurface->surface);
|
||||||
|
@ -721,7 +721,7 @@ struct sway_view *view_from_wlr_surface(struct wlr_surface *wlr_surface) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "Surface of unknown type (role %s): %p",
|
wlr_log(WLR_DEBUG, "Surface of unknown type (role %s): %p",
|
||||||
wlr_surface->role, wlr_surface);
|
wlr_surface->role, wlr_surface);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -789,7 +789,7 @@ static char *escape_title(char *buffer) {
|
||||||
char *escaped_title = calloc(length + 1, sizeof(char));
|
char *escaped_title = calloc(length + 1, sizeof(char));
|
||||||
int result = escape_markup_text(buffer, escaped_title, length);
|
int result = escape_markup_text(buffer, escaped_title, length);
|
||||||
if (result != length) {
|
if (result != length) {
|
||||||
wlr_log(L_ERROR, "Could not escape title: %s", buffer);
|
wlr_log(WLR_ERROR, "Could not escape title: %s", buffer);
|
||||||
free(escaped_title);
|
free(escaped_title);
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,7 @@ struct sway_container *workspace_create(struct sway_container *output,
|
||||||
output = get_workspace_initial_output(name);
|
output = get_workspace_initial_output(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "Added workspace %s for output %s", name, output->name);
|
wlr_log(WLR_DEBUG, "Added workspace %s for output %s", name, output->name);
|
||||||
struct sway_container *workspace = container_create(C_WORKSPACE);
|
struct sway_container *workspace = container_create(C_WORKSPACE);
|
||||||
|
|
||||||
workspace->x = output->x;
|
workspace->x = output->x;
|
||||||
|
@ -107,7 +107,7 @@ static bool workspace_valid_on_output(const char *output_name,
|
||||||
}
|
}
|
||||||
|
|
||||||
char *workspace_next_name(const char *output_name) {
|
char *workspace_next_name(const char *output_name) {
|
||||||
wlr_log(L_DEBUG, "Workspace: Generating new workspace name for output %s",
|
wlr_log(WLR_DEBUG, "Workspace: Generating new workspace name for output %s",
|
||||||
output_name);
|
output_name);
|
||||||
// Scan all workspace bindings to find the next available workspace name,
|
// Scan all workspace bindings to find the next available workspace name,
|
||||||
// if none are found/available then default to a number
|
// if none are found/available then default to a number
|
||||||
|
@ -135,7 +135,7 @@ char *workspace_next_name(const char *output_name) {
|
||||||
while (isspace(*_target)) {
|
while (isspace(*_target)) {
|
||||||
memmove(_target, _target+1, strlen(_target+1));
|
memmove(_target, _target+1, strlen(_target+1));
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Got valid workspace command for target: '%s'",
|
wlr_log(WLR_DEBUG, "Got valid workspace command for target: '%s'",
|
||||||
_target);
|
_target);
|
||||||
|
|
||||||
// Make sure that the command references an actual workspace
|
// Make sure that the command references an actual workspace
|
||||||
|
@ -161,7 +161,7 @@ char *workspace_next_name(const char *output_name) {
|
||||||
temp[length - 1] = '\0';
|
temp[length - 1] = '\0';
|
||||||
free(_target);
|
free(_target);
|
||||||
_target = temp;
|
_target = temp;
|
||||||
wlr_log(L_DEBUG, "Isolated name from workspace number: '%s'", _target);
|
wlr_log(WLR_DEBUG, "Isolated name from workspace number: '%s'", _target);
|
||||||
|
|
||||||
// Make sure the workspace number doesn't already exist
|
// Make sure the workspace number doesn't already exist
|
||||||
if (workspace_by_number(_target)) {
|
if (workspace_by_number(_target)) {
|
||||||
|
@ -190,7 +190,7 @@ char *workspace_next_name(const char *output_name) {
|
||||||
order = binding->order;
|
order = binding->order;
|
||||||
free(target);
|
free(target);
|
||||||
target = _target;
|
target = _target;
|
||||||
wlr_log(L_DEBUG, "Workspace: Found free name %s", _target);
|
wlr_log(WLR_DEBUG, "Workspace: Found free name %s", _target);
|
||||||
} else {
|
} else {
|
||||||
free(_target);
|
free(_target);
|
||||||
}
|
}
|
||||||
|
@ -387,7 +387,7 @@ bool workspace_switch(struct sway_container *workspace) {
|
||||||
free(prev_workspace_name);
|
free(prev_workspace_name);
|
||||||
prev_workspace_name = malloc(strlen(active_ws->name) + 1);
|
prev_workspace_name = malloc(strlen(active_ws->name) + 1);
|
||||||
if (!prev_workspace_name) {
|
if (!prev_workspace_name) {
|
||||||
wlr_log(L_ERROR, "Unable to allocate previous workspace name");
|
wlr_log(WLR_ERROR, "Unable to allocate previous workspace name");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
strcpy(prev_workspace_name, active_ws->name);
|
strcpy(prev_workspace_name, active_ws->name);
|
||||||
|
@ -409,7 +409,7 @@ bool workspace_switch(struct sway_container *workspace) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "Switching to workspace %p:%s",
|
wlr_log(WLR_DEBUG, "Switching to workspace %p:%s",
|
||||||
workspace, workspace->name);
|
workspace, workspace->name);
|
||||||
struct sway_container *next = seat_get_focus_inactive(seat, workspace);
|
struct sway_container *next = seat_get_focus_inactive(seat, workspace);
|
||||||
if (next == NULL) {
|
if (next == NULL) {
|
||||||
|
|
|
@ -46,7 +46,7 @@ static void swaybar_output_free(struct swaybar_output *output) {
|
||||||
if (!output) {
|
if (!output) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Removing output %s", output->name);
|
wlr_log(WLR_DEBUG, "Removing output %s", output->name);
|
||||||
zwlr_layer_surface_v1_destroy(output->layer_surface);
|
zwlr_layer_surface_v1_destroy(output->layer_surface);
|
||||||
wl_surface_destroy(output->surface);
|
wl_surface_destroy(output->surface);
|
||||||
wl_output_destroy(output->output);
|
wl_output_destroy(output->output);
|
||||||
|
|
|
@ -31,7 +31,7 @@ static bool i3bar_parse_json(struct status_line *status, const char *text) {
|
||||||
status_error(status, "[failed to parse i3bar json]");
|
status_error(status, "[failed to parse i3bar json]");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Got i3bar json: '%s'", text);
|
wlr_log(WLR_DEBUG, "Got i3bar json: '%s'", text);
|
||||||
for (size_t i = 0; i < json_object_array_length(results); ++i) {
|
for (size_t i = 0; i < json_object_array_length(results); ++i) {
|
||||||
json_object *full_text, *short_text, *color, *min_width, *align, *urgent;
|
json_object *full_text, *short_text, *color, *min_width, *align, *urgent;
|
||||||
json_object *name, *instance, *separator, *separator_block_width;
|
json_object *name, *instance, *separator, *separator_block_width;
|
||||||
|
@ -193,7 +193,7 @@ bool i3bar_handle_readable(struct status_line *status) {
|
||||||
|
|
||||||
void i3bar_block_send_click(struct status_line *status,
|
void i3bar_block_send_click(struct status_line *status,
|
||||||
struct i3bar_block *block, int x, int y, uint32_t button) {
|
struct i3bar_block *block, int x, int y, uint32_t button) {
|
||||||
wlr_log(L_DEBUG, "block %s clicked", block->name ? block->name : "(nil)");
|
wlr_log(WLR_DEBUG, "block %s clicked", block->name ? block->name : "(nil)");
|
||||||
if (!block->name || !status->i3bar_state.click_events) {
|
if (!block->name || !status->i3bar_state.click_events) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -327,7 +327,7 @@ bool handle_ipc_readable(struct swaybar *bar) {
|
||||||
json_object *result = json_tokener_parse(resp->payload);
|
json_object *result = json_tokener_parse(resp->payload);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
free_ipc_response(resp);
|
free_ipc_response(resp);
|
||||||
wlr_log(L_ERROR, "failed to parse payload as json");
|
wlr_log(WLR_ERROR, "failed to parse payload as json");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
json_object *json_change, *json_pango_markup;
|
json_object *json_change, *json_pango_markup;
|
||||||
|
@ -340,7 +340,7 @@ bool handle_ipc_readable(struct swaybar *bar) {
|
||||||
bar->config->mode = strdup(change);
|
bar->config->mode = strdup(change);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_ERROR, "failed to parse response");
|
wlr_log(WLR_ERROR, "failed to parse response");
|
||||||
json_object_put(result);
|
json_object_put(result);
|
||||||
free_ipc_response(resp);
|
free_ipc_response(resp);
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -75,13 +75,13 @@ int main(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debug) {
|
if (debug) {
|
||||||
wlr_log_init(L_DEBUG, NULL);
|
wlr_log_init(WLR_DEBUG, NULL);
|
||||||
} else {
|
} else {
|
||||||
wlr_log_init(L_ERROR, NULL);
|
wlr_log_init(WLR_ERROR, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!bar_id) {
|
if (!bar_id) {
|
||||||
wlr_log(L_ERROR, "No bar_id passed. "
|
wlr_log(WLR_ERROR, "No bar_id passed. "
|
||||||
"Provide --bar_id or let sway start swaybar");
|
"Provide --bar_id or let sway start swaybar");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ int main(int argc, char **argv) {
|
||||||
if (!socket_path) {
|
if (!socket_path) {
|
||||||
socket_path = get_socketpath();
|
socket_path = get_socketpath();
|
||||||
if (!socket_path) {
|
if (!socket_path) {
|
||||||
wlr_log(L_ERROR, "Unable to retrieve socket path");
|
wlr_log(WLR_ERROR, "Unable to retrieve socket path");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,14 +49,14 @@ bool status_handle_readable(struct status_line *status) {
|
||||||
json_object *version;
|
json_object *version;
|
||||||
if (json_object_object_get_ex(proto, "version", &version)
|
if (json_object_object_get_ex(proto, "version", &version)
|
||||||
&& json_object_get_int(version) == 1) {
|
&& json_object_get_int(version) == 1) {
|
||||||
wlr_log(L_DEBUG, "Switched to i3bar protocol.");
|
wlr_log(WLR_DEBUG, "Switched to i3bar protocol.");
|
||||||
status->protocol = PROTOCOL_I3BAR;
|
status->protocol = PROTOCOL_I3BAR;
|
||||||
}
|
}
|
||||||
json_object *click_events;
|
json_object *click_events;
|
||||||
if (json_object_object_get_ex(
|
if (json_object_object_get_ex(
|
||||||
proto, "click_events", &click_events)
|
proto, "click_events", &click_events)
|
||||||
&& json_object_get_boolean(click_events)) {
|
&& json_object_get_boolean(click_events)) {
|
||||||
wlr_log(L_DEBUG, "Enabled click events.");
|
wlr_log(WLR_DEBUG, "Enabled click events.");
|
||||||
status->i3bar_state.click_events = true;
|
status->i3bar_state.click_events = true;
|
||||||
const char *events_array = "[\n";
|
const char *events_array = "[\n";
|
||||||
ssize_t len = strlen(events_array);
|
ssize_t len = strlen(events_array);
|
||||||
|
@ -91,7 +91,7 @@ struct status_line *status_line_init(char *cmd) {
|
||||||
int pipe_read_fd[2];
|
int pipe_read_fd[2];
|
||||||
int pipe_write_fd[2];
|
int pipe_write_fd[2];
|
||||||
if (pipe(pipe_read_fd) != 0 || pipe(pipe_write_fd) != 0) {
|
if (pipe(pipe_read_fd) != 0 || pipe(pipe_write_fd) != 0) {
|
||||||
wlr_log(L_ERROR, "Unable to create pipes for status_command fork");
|
wlr_log(WLR_ERROR, "Unable to create pipes for status_command fork");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ struct swaybg_state {
|
||||||
bool is_valid_color(const char *color) {
|
bool is_valid_color(const char *color) {
|
||||||
int len = strlen(color);
|
int len = strlen(color);
|
||||||
if (len != 7 || color[0] != '#') {
|
if (len != 7 || color[0] != '#') {
|
||||||
wlr_log(L_ERROR, "%s is not a valid color for swaybg. "
|
wlr_log(WLR_ERROR, "%s is not a valid color for swaybg. "
|
||||||
"Color should be specified as #rrggbb (no alpha).", color);
|
"Color should be specified as #rrggbb (no alpha).", color);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -185,10 +185,10 @@ int main(int argc, const char **argv) {
|
||||||
struct swaybg_args args = {0};
|
struct swaybg_args args = {0};
|
||||||
struct swaybg_state state = {0};
|
struct swaybg_state state = {0};
|
||||||
state.args = &args;
|
state.args = &args;
|
||||||
wlr_log_init(L_DEBUG, NULL);
|
wlr_log_init(WLR_DEBUG, NULL);
|
||||||
|
|
||||||
if (argc != 4) {
|
if (argc != 4) {
|
||||||
wlr_log(L_ERROR, "Do not run this program manually. "
|
wlr_log(WLR_ERROR, "Do not run this program manually. "
|
||||||
"See man 5 sway and look for output options.");
|
"See man 5 sway and look for output options.");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,24 +59,24 @@ static void cmd_exec(void *data) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
char *param = (char *)data;
|
char *param = (char *)data;
|
||||||
wlr_log(L_DEBUG, "Cmd exec %s", param);
|
wlr_log(WLR_DEBUG, "Cmd exec %s", param);
|
||||||
pid_t pid = fork();
|
pid_t pid = fork();
|
||||||
if (pid == 0) {
|
if (pid == 0) {
|
||||||
pid = fork();
|
pid = fork();
|
||||||
if (pid == 0) {
|
if (pid == 0) {
|
||||||
char *const cmd[] = { "sh", "-c", param, NULL, };
|
char *const cmd[] = { "sh", "-c", param, NULL, };
|
||||||
execvp(cmd[0], cmd);
|
execvp(cmd[0], cmd);
|
||||||
wlr_log_errno(L_ERROR, "execve failed!");
|
wlr_log_errno(WLR_ERROR, "execve failed!");
|
||||||
exit(1);
|
exit(1);
|
||||||
} else if (pid < 0) {
|
} else if (pid < 0) {
|
||||||
wlr_log_errno(L_ERROR, "fork failed");
|
wlr_log_errno(WLR_ERROR, "fork failed");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
exit(0);
|
exit(0);
|
||||||
} else if (pid < 0) {
|
} else if (pid < 0) {
|
||||||
wlr_log_errno(L_ERROR, "fork failed");
|
wlr_log_errno(WLR_ERROR, "fork failed");
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_DEBUG, "Spawned process %s", param);
|
wlr_log(WLR_DEBUG, "Spawned process %s", param);
|
||||||
waitpid(pid, NULL, 0);
|
waitpid(pid, NULL, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,7 @@ static int lock_fd = -1;
|
||||||
static int ongoing_fd = -1;
|
static int ongoing_fd = -1;
|
||||||
|
|
||||||
static int release_lock(void *data) {
|
static int release_lock(void *data) {
|
||||||
wlr_log(L_INFO, "Releasing sleep lock %d", ongoing_fd);
|
wlr_log(WLR_INFO, "Releasing sleep lock %d", ongoing_fd);
|
||||||
if (ongoing_fd >= 0) {
|
if (ongoing_fd >= 0) {
|
||||||
close(ongoing_fd);
|
close(ongoing_fd);
|
||||||
}
|
}
|
||||||
|
@ -101,7 +101,7 @@ void acquire_sleep_lock() {
|
||||||
int ret = sd_bus_default_system(&bus);
|
int ret = sd_bus_default_system(&bus);
|
||||||
|
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
wlr_log(L_ERROR, "Failed to open D-Bus connection: %s",
|
wlr_log(WLR_ERROR, "Failed to open D-Bus connection: %s",
|
||||||
strerror(-ret));
|
strerror(-ret));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -112,17 +112,17 @@ void acquire_sleep_lock() {
|
||||||
&error, &msg, "ssss", "sleep", "swayidle",
|
&error, &msg, "ssss", "sleep", "swayidle",
|
||||||
"Setup Up Lock Screen", "delay");
|
"Setup Up Lock Screen", "delay");
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
wlr_log(L_ERROR, "Failed to send Inhibit signal: %s",
|
wlr_log(WLR_ERROR, "Failed to send Inhibit signal: %s",
|
||||||
strerror(-ret));
|
strerror(-ret));
|
||||||
} else {
|
} else {
|
||||||
ret = sd_bus_message_read(msg, "h", &lock_fd);
|
ret = sd_bus_message_read(msg, "h", &lock_fd);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
wlr_log(L_ERROR,
|
wlr_log(WLR_ERROR,
|
||||||
"Failed to parse D-Bus response for Inhibit: %s",
|
"Failed to parse D-Bus response for Inhibit: %s",
|
||||||
strerror(-ret));
|
strerror(-ret));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wlr_log(L_INFO, "Got sleep lock: %d", lock_fd);
|
wlr_log(WLR_INFO, "Got sleep lock: %d", lock_fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int prepare_for_sleep(sd_bus_message *msg, void *userdata,
|
static int prepare_for_sleep(sd_bus_message *msg, void *userdata,
|
||||||
|
@ -131,10 +131,10 @@ static int prepare_for_sleep(sd_bus_message *msg, void *userdata,
|
||||||
int going_down = 1;
|
int going_down = 1;
|
||||||
int ret = sd_bus_message_read(msg, "b", &going_down);
|
int ret = sd_bus_message_read(msg, "b", &going_down);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
wlr_log(L_ERROR, "Failed to parse D-Bus response for Inhibit: %s",
|
wlr_log(WLR_ERROR, "Failed to parse D-Bus response for Inhibit: %s",
|
||||||
strerror(-ret));
|
strerror(-ret));
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "PrepareForSleep signal received %d", going_down);
|
wlr_log(WLR_DEBUG, "PrepareForSleep signal received %d", going_down);
|
||||||
if (!going_down) {
|
if (!going_down) {
|
||||||
acquire_sleep_lock();
|
acquire_sleep_lock();
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -151,7 +151,7 @@ static int prepare_for_sleep(sd_bus_message *msg, void *userdata,
|
||||||
wl_event_loop_add_timer(state.event_loop, release_lock, NULL);
|
wl_event_loop_add_timer(state.event_loop, release_lock, NULL);
|
||||||
wl_event_source_timer_update(source, 1000);
|
wl_event_source_timer_update(source, 1000);
|
||||||
}
|
}
|
||||||
wlr_log(L_DEBUG, "Prepare for sleep done");
|
wlr_log(WLR_DEBUG, "Prepare for sleep done");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,7 +168,7 @@ void setup_sleep_listener() {
|
||||||
|
|
||||||
int ret = sd_bus_default_system(&bus);
|
int ret = sd_bus_default_system(&bus);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
wlr_log(L_ERROR, "Failed to open D-Bus connection: %s",
|
wlr_log(WLR_ERROR, "Failed to open D-Bus connection: %s",
|
||||||
strerror(-ret));
|
strerror(-ret));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -183,7 +183,7 @@ void setup_sleep_listener() {
|
||||||
"/org/freedesktop/login1");
|
"/org/freedesktop/login1");
|
||||||
ret = sd_bus_add_match(bus, NULL, str, prepare_for_sleep, NULL);
|
ret = sd_bus_add_match(bus, NULL, str, prepare_for_sleep, NULL);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
wlr_log(L_ERROR, "Failed to add D-Bus match: %s", strerror(-ret));
|
wlr_log(WLR_ERROR, "Failed to add D-Bus match: %s", strerror(-ret));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
acquire_sleep_lock();
|
acquire_sleep_lock();
|
||||||
|
@ -214,7 +214,7 @@ static const struct wl_registry_listener registry_listener = {
|
||||||
|
|
||||||
static void handle_idle(void *data, struct org_kde_kwin_idle_timeout *timer) {
|
static void handle_idle(void *data, struct org_kde_kwin_idle_timeout *timer) {
|
||||||
struct swayidle_timeout_cmd *cmd = data;
|
struct swayidle_timeout_cmd *cmd = data;
|
||||||
wlr_log(L_DEBUG, "idle state");
|
wlr_log(WLR_DEBUG, "idle state");
|
||||||
if (cmd && cmd->idle_cmd && cmd->idle_cmd->callback) {
|
if (cmd && cmd->idle_cmd && cmd->idle_cmd->callback) {
|
||||||
cmd->idle_cmd->callback(cmd->idle_cmd->param);
|
cmd->idle_cmd->callback(cmd->idle_cmd->param);
|
||||||
}
|
}
|
||||||
|
@ -222,7 +222,7 @@ static void handle_idle(void *data, struct org_kde_kwin_idle_timeout *timer) {
|
||||||
|
|
||||||
static void handle_resume(void *data, struct org_kde_kwin_idle_timeout *timer) {
|
static void handle_resume(void *data, struct org_kde_kwin_idle_timeout *timer) {
|
||||||
struct swayidle_timeout_cmd *cmd = data;
|
struct swayidle_timeout_cmd *cmd = data;
|
||||||
wlr_log(L_DEBUG, "active state");
|
wlr_log(WLR_DEBUG, "active state");
|
||||||
if (cmd && cmd->resume_cmd && cmd->resume_cmd->callback) {
|
if (cmd && cmd->resume_cmd && cmd->resume_cmd->callback) {
|
||||||
cmd->resume_cmd->callback(cmd->resume_cmd->param);
|
cmd->resume_cmd->callback(cmd->resume_cmd->param);
|
||||||
}
|
}
|
||||||
|
@ -235,12 +235,12 @@ static const struct org_kde_kwin_idle_timeout_listener idle_timer_listener = {
|
||||||
|
|
||||||
struct swayidle_cmd *parse_command(int argc, char **argv) {
|
struct swayidle_cmd *parse_command(int argc, char **argv) {
|
||||||
if (argc < 1) {
|
if (argc < 1) {
|
||||||
wlr_log(L_ERROR, "Too few parameters for command in parse_command");
|
wlr_log(WLR_ERROR, "Too few parameters for command in parse_command");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct swayidle_cmd *cmd = calloc(1, sizeof(struct swayidle_cmd));
|
struct swayidle_cmd *cmd = calloc(1, sizeof(struct swayidle_cmd));
|
||||||
wlr_log(L_DEBUG, "Command: %s", argv[0]);
|
wlr_log(WLR_DEBUG, "Command: %s", argv[0]);
|
||||||
cmd->callback = cmd_exec;
|
cmd->callback = cmd_exec;
|
||||||
cmd->param = argv[0];
|
cmd->param = argv[0];
|
||||||
return cmd;
|
return cmd;
|
||||||
|
@ -248,7 +248,7 @@ struct swayidle_cmd *parse_command(int argc, char **argv) {
|
||||||
|
|
||||||
int parse_timeout(int argc, char **argv) {
|
int parse_timeout(int argc, char **argv) {
|
||||||
if (argc < 3) {
|
if (argc < 3) {
|
||||||
wlr_log(L_ERROR, "Too few parameters to timeout command. "
|
wlr_log(WLR_ERROR, "Too few parameters to timeout command. "
|
||||||
"Usage: timeout <seconds> <command>");
|
"Usage: timeout <seconds> <command>");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
@ -256,7 +256,7 @@ int parse_timeout(int argc, char **argv) {
|
||||||
char *endptr;
|
char *endptr;
|
||||||
int seconds = strtoul(argv[1], &endptr, 10);
|
int seconds = strtoul(argv[1], &endptr, 10);
|
||||||
if (errno != 0 || *endptr != '\0') {
|
if (errno != 0 || *endptr != '\0') {
|
||||||
wlr_log(L_ERROR, "Invalid timeout parameter '%s', it should be a "
|
wlr_log(WLR_ERROR, "Invalid timeout parameter '%s', it should be a "
|
||||||
"numeric value representing seconds", optarg);
|
"numeric value representing seconds", optarg);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
@ -264,13 +264,13 @@ int parse_timeout(int argc, char **argv) {
|
||||||
calloc(1, sizeof(struct swayidle_timeout_cmd));
|
calloc(1, sizeof(struct swayidle_timeout_cmd));
|
||||||
cmd->timeout = seconds * 1000;
|
cmd->timeout = seconds * 1000;
|
||||||
|
|
||||||
wlr_log(L_DEBUG, "Register idle timeout at %d ms", cmd->timeout);
|
wlr_log(WLR_DEBUG, "Register idle timeout at %d ms", cmd->timeout);
|
||||||
wlr_log(L_DEBUG, "Setup idle");
|
wlr_log(WLR_DEBUG, "Setup idle");
|
||||||
cmd->idle_cmd = parse_command(argc - 2, &argv[2]);
|
cmd->idle_cmd = parse_command(argc - 2, &argv[2]);
|
||||||
|
|
||||||
int result = 3;
|
int result = 3;
|
||||||
if (argc >= 5 && !strcmp("resume", argv[3])) {
|
if (argc >= 5 && !strcmp("resume", argv[3])) {
|
||||||
wlr_log(L_DEBUG, "Setup resume");
|
wlr_log(WLR_DEBUG, "Setup resume");
|
||||||
cmd->resume_cmd = parse_command(argc - 4, &argv[4]);
|
cmd->resume_cmd = parse_command(argc - 4, &argv[4]);
|
||||||
result = 5;
|
result = 5;
|
||||||
}
|
}
|
||||||
|
@ -280,14 +280,14 @@ int parse_timeout(int argc, char **argv) {
|
||||||
|
|
||||||
int parse_sleep(int argc, char **argv) {
|
int parse_sleep(int argc, char **argv) {
|
||||||
if (argc < 2) {
|
if (argc < 2) {
|
||||||
wlr_log(L_ERROR, "Too few parameters to before-sleep command. "
|
wlr_log(WLR_ERROR, "Too few parameters to before-sleep command. "
|
||||||
"Usage: before-sleep <command>");
|
"Usage: before-sleep <command>");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
lock_cmd = parse_command(argc - 1, &argv[1]);
|
lock_cmd = parse_command(argc - 1, &argv[1]);
|
||||||
if (lock_cmd) {
|
if (lock_cmd) {
|
||||||
wlr_log(L_DEBUG, "Setup sleep lock: %s", lock_cmd->param);
|
wlr_log(WLR_DEBUG, "Setup sleep lock: %s", lock_cmd->param);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
|
@ -314,10 +314,10 @@ int parse_args(int argc, char *argv[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debug) {
|
if (debug) {
|
||||||
wlr_log_init(L_DEBUG, NULL);
|
wlr_log_init(WLR_DEBUG, NULL);
|
||||||
wlr_log(L_DEBUG, "Loglevel debug");
|
wlr_log(WLR_DEBUG, "Loglevel debug");
|
||||||
} else {
|
} else {
|
||||||
wlr_log_init(L_INFO, NULL);
|
wlr_log_init(WLR_INFO, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -326,13 +326,13 @@ int parse_args(int argc, char *argv[]) {
|
||||||
int i = optind;
|
int i = optind;
|
||||||
while (i < argc) {
|
while (i < argc) {
|
||||||
if (!strcmp("timeout", argv[i])) {
|
if (!strcmp("timeout", argv[i])) {
|
||||||
wlr_log(L_DEBUG, "Got timeout");
|
wlr_log(WLR_DEBUG, "Got timeout");
|
||||||
i += parse_timeout(argc - i, &argv[i]);
|
i += parse_timeout(argc - i, &argv[i]);
|
||||||
} else if (!strcmp("before-sleep", argv[i])) {
|
} else if (!strcmp("before-sleep", argv[i])) {
|
||||||
wlr_log(L_DEBUG, "Got before-sleep");
|
wlr_log(WLR_DEBUG, "Got before-sleep");
|
||||||
i += parse_sleep(argc - i, &argv[i]);
|
i += parse_sleep(argc - i, &argv[i]);
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_ERROR, "Unsupported command '%s'", argv[i]);
|
wlr_log(WLR_ERROR, "Unsupported command '%s'", argv[i]);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -358,7 +358,7 @@ static int display_event(int fd, uint32_t mask, void *data) {
|
||||||
sway_terminate(0);
|
sway_terminate(0);
|
||||||
}
|
}
|
||||||
if (wl_display_dispatch(state.display) < 0) {
|
if (wl_display_dispatch(state.display) < 0) {
|
||||||
wlr_log_errno(L_ERROR, "wl_display_dispatch failed, exiting");
|
wlr_log_errno(WLR_ERROR, "wl_display_dispatch failed, exiting");
|
||||||
sway_terminate(0);
|
sway_terminate(0);
|
||||||
};
|
};
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -367,7 +367,7 @@ static int display_event(int fd, uint32_t mask, void *data) {
|
||||||
void register_idle_timeout(void *item) {
|
void register_idle_timeout(void *item) {
|
||||||
struct swayidle_timeout_cmd *cmd = item;
|
struct swayidle_timeout_cmd *cmd = item;
|
||||||
if (cmd == NULL || !cmd->timeout) {
|
if (cmd == NULL || !cmd->timeout) {
|
||||||
wlr_log(L_ERROR, "Invalid idle cmd, will not register");
|
wlr_log(WLR_ERROR, "Invalid idle cmd, will not register");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
state.idle_timer =
|
state.idle_timer =
|
||||||
|
@ -376,7 +376,7 @@ void register_idle_timeout(void *item) {
|
||||||
org_kde_kwin_idle_timeout_add_listener(state.idle_timer,
|
org_kde_kwin_idle_timeout_add_listener(state.idle_timer,
|
||||||
&idle_timer_listener, cmd);
|
&idle_timer_listener, cmd);
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_ERROR, "Could not create idle timer");
|
wlr_log(WLR_ERROR, "Could not create idle timer");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -390,7 +390,7 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
state.display = wl_display_connect(NULL);
|
state.display = wl_display_connect(NULL);
|
||||||
if (state.display == NULL) {
|
if (state.display == NULL) {
|
||||||
wlr_log(L_ERROR, "Failed to create display");
|
wlr_log(WLR_ERROR, "Failed to create display");
|
||||||
return -3;
|
return -3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -401,11 +401,11 @@ int main(int argc, char *argv[]) {
|
||||||
state.event_loop = wl_event_loop_create();
|
state.event_loop = wl_event_loop_create();
|
||||||
|
|
||||||
if (idle_manager == NULL) {
|
if (idle_manager == NULL) {
|
||||||
wlr_log(L_ERROR, "Display doesn't support idle protocol");
|
wlr_log(WLR_ERROR, "Display doesn't support idle protocol");
|
||||||
return -4;
|
return -4;
|
||||||
}
|
}
|
||||||
if (seat == NULL) {
|
if (seat == NULL) {
|
||||||
wlr_log(L_ERROR, "Seat error");
|
wlr_log(WLR_ERROR, "Seat error");
|
||||||
return -5;
|
return -5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -417,7 +417,7 @@ int main(int argc, char *argv[]) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (!should_run) {
|
if (!should_run) {
|
||||||
wlr_log(L_INFO, "No command specified! Nothing to do, will exit");
|
wlr_log(WLR_INFO, "No command specified! Nothing to do, will exit");
|
||||||
sway_terminate(0);
|
sway_terminate(0);
|
||||||
}
|
}
|
||||||
list_foreach(state.timeout_cmds, register_idle_timeout);
|
list_foreach(state.timeout_cmds, register_idle_timeout);
|
||||||
|
|
|
@ -34,7 +34,7 @@ void sway_terminate(int exit_code) {
|
||||||
static void daemonize() {
|
static void daemonize() {
|
||||||
int fds[2];
|
int fds[2];
|
||||||
if (pipe(fds) != 0) {
|
if (pipe(fds) != 0) {
|
||||||
wlr_log(L_ERROR, "Failed to pipe");
|
wlr_log(WLR_ERROR, "Failed to pipe");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (fork() == 0) {
|
if (fork() == 0) {
|
||||||
|
@ -58,7 +58,7 @@ static void daemonize() {
|
||||||
close(fds[1]);
|
close(fds[1]);
|
||||||
uint8_t success;
|
uint8_t success;
|
||||||
if (read(fds[0], &success, 1) != 1 || !success) {
|
if (read(fds[0], &success, 1) != 1 || !success) {
|
||||||
wlr_log(L_ERROR, "Failed to daemonize");
|
wlr_log(WLR_ERROR, "Failed to daemonize");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
close(fds[0]);
|
close(fds[0]);
|
||||||
|
@ -238,7 +238,7 @@ static void handle_xdg_output_logical_position(void *data,
|
||||||
|
|
||||||
static void handle_xdg_output_name(void *data, struct zxdg_output_v1 *output,
|
static void handle_xdg_output_name(void *data, struct zxdg_output_v1 *output,
|
||||||
const char *name) {
|
const char *name) {
|
||||||
wlr_log(L_DEBUG, "output name is %s", name);
|
wlr_log(WLR_DEBUG, "output name is %s", name);
|
||||||
struct swaylock_surface *surface = data;
|
struct swaylock_surface *surface = data;
|
||||||
surface->xdg_output = output;
|
surface->xdg_output = output;
|
||||||
surface->output_name = strdup(name);
|
surface->output_name = strdup(name);
|
||||||
|
@ -354,10 +354,10 @@ static void load_image(char *arg, struct swaylock_state *state) {
|
||||||
}
|
}
|
||||||
if (exists) {
|
if (exists) {
|
||||||
if (image->output_name) {
|
if (image->output_name) {
|
||||||
wlr_log(L_ERROR, "Multiple images defined for output %s",
|
wlr_log(WLR_ERROR, "Multiple images defined for output %s",
|
||||||
image->output_name);
|
image->output_name);
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_ERROR, "Multiple default images defined");
|
wlr_log(WLR_ERROR, "Multiple default images defined");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -377,7 +377,7 @@ static void load_image(char *arg, struct swaylock_state *state) {
|
||||||
}
|
}
|
||||||
wl_list_insert(&state->images, &image->link);
|
wl_list_insert(&state->images, &image->link);
|
||||||
state->args.mode = BACKGROUND_MODE_FILL;
|
state->args.mode = BACKGROUND_MODE_FILL;
|
||||||
wlr_log(L_DEBUG, "Loaded image %s for output %s",
|
wlr_log(WLR_DEBUG, "Loaded image %s for output %s",
|
||||||
image->path, image->output_name ? image->output_name : "*");
|
image->path, image->output_name ? image->output_name : "*");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -416,7 +416,7 @@ int main(int argc, char **argv) {
|
||||||
};
|
};
|
||||||
wl_list_init(&state.images);
|
wl_list_init(&state.images);
|
||||||
|
|
||||||
wlr_log_init(L_DEBUG, NULL);
|
wlr_log_init(WLR_DEBUG, NULL);
|
||||||
|
|
||||||
int c;
|
int c;
|
||||||
while (1) {
|
while (1) {
|
||||||
|
@ -480,13 +480,13 @@ int main(int argc, char **argv) {
|
||||||
wl_display_roundtrip(state.display);
|
wl_display_roundtrip(state.display);
|
||||||
assert(state.compositor && state.layer_shell && state.shm);
|
assert(state.compositor && state.layer_shell && state.shm);
|
||||||
if (!state.input_inhibit_manager) {
|
if (!state.input_inhibit_manager) {
|
||||||
wlr_log(L_ERROR, "Compositor does not support the input inhibitor "
|
wlr_log(WLR_ERROR, "Compositor does not support the input inhibitor "
|
||||||
"protocol, refusing to run insecurely");
|
"protocol, refusing to run insecurely");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wl_list_empty(&state.surfaces)) {
|
if (wl_list_empty(&state.surfaces)) {
|
||||||
wlr_log(L_DEBUG, "Exiting - no outputs to show on.");
|
wlr_log(WLR_DEBUG, "Exiting - no outputs to show on.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -502,7 +502,7 @@ int main(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
wl_display_roundtrip(state.display);
|
wl_display_roundtrip(state.display);
|
||||||
} else {
|
} else {
|
||||||
wlr_log(L_INFO, "Compositor does not support zxdg output manager, "
|
wlr_log(WLR_INFO, "Compositor does not support zxdg output manager, "
|
||||||
"images assigned to named outputs will not work");
|
"images assigned to named outputs will not work");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,15 +53,15 @@ static bool attempt_password(struct swaylock_password *pw) {
|
||||||
// TODO: only call pam_start once. keep the same handle the whole time
|
// TODO: only call pam_start once. keep the same handle the whole time
|
||||||
if ((pam_err = pam_start("swaylock", username,
|
if ((pam_err = pam_start("swaylock", username,
|
||||||
&local_conversation, &local_auth_handle)) != PAM_SUCCESS) {
|
&local_conversation, &local_auth_handle)) != PAM_SUCCESS) {
|
||||||
wlr_log(L_ERROR, "PAM returned error %d", pam_err);
|
wlr_log(WLR_ERROR, "PAM returned error %d", pam_err);
|
||||||
}
|
}
|
||||||
if ((pam_err = pam_authenticate(local_auth_handle, 0)) != PAM_SUCCESS) {
|
if ((pam_err = pam_authenticate(local_auth_handle, 0)) != PAM_SUCCESS) {
|
||||||
wlr_log(L_ERROR, "pam_authenticate failed");
|
wlr_log(WLR_ERROR, "pam_authenticate failed");
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
// TODO: only call pam_end once we succeed at authing. refresh tokens beforehand
|
// TODO: only call pam_end once we succeed at authing. refresh tokens beforehand
|
||||||
if ((pam_err = pam_end(local_auth_handle, pam_err)) != PAM_SUCCESS) {
|
if ((pam_err = pam_end(local_auth_handle, pam_err)) != PAM_SUCCESS) {
|
||||||
wlr_log(L_ERROR, "pam_end failed");
|
wlr_log(WLR_ERROR, "pam_end failed");
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
clear_password_buffer(pw);
|
clear_password_buffer(pw);
|
||||||
|
|
|
@ -12,13 +12,13 @@ static void keyboard_keymap(void *data, struct wl_keyboard *wl_keyboard,
|
||||||
struct swaylock_state *state = data;
|
struct swaylock_state *state = data;
|
||||||
if (format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1) {
|
if (format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1) {
|
||||||
close(fd);
|
close(fd);
|
||||||
wlr_log(L_ERROR, "Unknown keymap format %d, aborting", format);
|
wlr_log(WLR_ERROR, "Unknown keymap format %d, aborting", format);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
char *map_shm = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);
|
char *map_shm = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);
|
||||||
if (map_shm == MAP_FAILED) {
|
if (map_shm == MAP_FAILED) {
|
||||||
close(fd);
|
close(fd);
|
||||||
wlr_log(L_ERROR, "Unable to initialize keymap shm, aborting");
|
wlr_log(WLR_ERROR, "Unable to initialize keymap shm, aborting");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
struct xkb_keymap *keymap = xkb_keymap_new_from_string(
|
struct xkb_keymap *keymap = xkb_keymap_new_from_string(
|
||||||
|
|
|
@ -323,7 +323,7 @@ int main(int argc, char **argv) {
|
||||||
char *socket_path = NULL;
|
char *socket_path = NULL;
|
||||||
char *cmdtype = NULL;
|
char *cmdtype = NULL;
|
||||||
|
|
||||||
wlr_log_init(L_INFO, NULL);
|
wlr_log_init(WLR_INFO, NULL);
|
||||||
|
|
||||||
static struct option long_options[] = {
|
static struct option long_options[] = {
|
||||||
{"help", no_argument, NULL, 'h'},
|
{"help", no_argument, NULL, 'h'},
|
||||||
|
|
Loading…
Reference in a new issue