mirror of
https://github.com/swaywm/sway.git
synced 2025-11-20 06:59:46 -05:00
Write to swaynag pipe fd directly on config errors
This commit is contained in:
parent
f9a6407111
commit
a7f7d4a488
12 changed files with 227 additions and 110 deletions
|
|
@ -150,6 +150,7 @@ sway_cmd cmd_splitt;
|
|||
sway_cmd cmd_splitv;
|
||||
sway_cmd cmd_sticky;
|
||||
sway_cmd cmd_swaybg_command;
|
||||
sway_cmd cmd_swaynag_command;
|
||||
sway_cmd cmd_swap;
|
||||
sway_cmd cmd_title_format;
|
||||
sway_cmd cmd_unmark;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
#include <wlr/types/wlr_box.h>
|
||||
#include <xkbcommon/xkbcommon.h>
|
||||
#include "list.h"
|
||||
#include "swaynag.h"
|
||||
#include "tree/layout.h"
|
||||
#include "tree/container.h"
|
||||
#include "wlr-layer-shell-unstable-v1-protocol.h"
|
||||
|
|
@ -308,7 +309,8 @@ enum focus_wrapping_mode {
|
|||
* The configuration struct. The result of loading a config file.
|
||||
*/
|
||||
struct sway_config {
|
||||
pid_t swaynag_pid;
|
||||
char *swaynag_command;
|
||||
struct swaynag_instance swaynag_config_errors;
|
||||
list_t *symbols;
|
||||
list_t *modes;
|
||||
list_t *bars;
|
||||
|
|
@ -346,6 +348,7 @@ struct sway_config {
|
|||
bool failed;
|
||||
bool reloading;
|
||||
bool reading;
|
||||
bool validating;
|
||||
bool auto_back_and_forth;
|
||||
bool show_marks;
|
||||
|
||||
|
|
@ -404,18 +407,19 @@ struct sway_config {
|
|||
* Loads the main config from the given path. is_active should be true when
|
||||
* reloading the config.
|
||||
*/
|
||||
bool load_main_config(const char *path, bool is_active, char **errors);
|
||||
bool load_main_config(const char *path, bool is_active, bool validating);
|
||||
|
||||
/**
|
||||
* Loads an included config. Can only be used after load_main_config.
|
||||
*/
|
||||
bool load_include_configs(const char *path, struct sway_config *config,
|
||||
char **errors);
|
||||
struct swaynag_instance *swaynag);
|
||||
|
||||
/**
|
||||
* Reads the config from the given FILE.
|
||||
*/
|
||||
bool read_config(FILE *file, struct sway_config *config, char **errors);
|
||||
bool read_config(FILE *file, struct sway_config *config,
|
||||
struct swaynag_instance *swaynag);
|
||||
|
||||
/**
|
||||
* Free config struct
|
||||
|
|
@ -424,8 +428,6 @@ void free_config(struct sway_config *config);
|
|||
|
||||
void free_sway_variable(struct sway_variable *var);
|
||||
|
||||
void spawn_swaynag_config_errors(struct sway_config *config, char *errors);
|
||||
|
||||
/**
|
||||
* Does variable replacement for a string based on the config's currently loaded variables.
|
||||
*/
|
||||
|
|
|
|||
33
include/sway/swaynag.h
Normal file
33
include/sway/swaynag.h
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
#ifndef _SWAY_SWAYNAG_H
|
||||
#define _SWAY_SWAYNAG_H
|
||||
|
||||
struct swaynag_instance {
|
||||
const char *args;
|
||||
pid_t pid;
|
||||
int fd[2];
|
||||
bool detailed;
|
||||
};
|
||||
|
||||
// Copy all fields of one instance to another
|
||||
void swaynag_clone(struct swaynag_instance *dest,
|
||||
struct swaynag_instance *src);
|
||||
|
||||
// Spawn swaynag. If swaynag->detailed, then swaynag->fd[1] will left open
|
||||
// so it can be written to. Call swaynag_show when done writing. This will
|
||||
// be automatically called by swaynag_log if the instance is not spawned and
|
||||
// swaynag->detailed is true.
|
||||
bool swaynag_spawn(const char *swaynag_command,
|
||||
struct swaynag_instance *swaynag);
|
||||
|
||||
// Kill the swaynag instance
|
||||
void swaynag_kill(struct swaynag_instance *swaynag);
|
||||
|
||||
// Write a log message to swaynag->fd[1]. This will fail when swaynag->detailed
|
||||
// is false.
|
||||
void swaynag_log(const char *swaynag_command, struct swaynag_instance *swaynag,
|
||||
const char *fmt, ...);
|
||||
|
||||
// If swaynag->detailed, close swaynag->fd[1] so swaynag displays
|
||||
void swaynag_show(struct swaynag_instance *swaynag);
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue