aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ISSUE_TEMPLATE.md27
-rw-r--r--completions/fish/swayidle.fish3
-rw-r--r--completions/fish/swaylock.fish38
-rw-r--r--completions/fish/swaynag.fish29
-rw-r--r--include/sway/output.h2
-rw-r--r--meson.build2
-rw-r--r--sway/desktop/output.c13
-rw-r--r--sway/input/input-manager.c1
-rw-r--r--sway/input/seat.c2
-rw-r--r--sway/ipc-json.c23
-rw-r--r--sway/tree/output.c15
-rw-r--r--sway/tree/workspace.c10
-rw-r--r--swaylock/swaylock.1.scd26
13 files changed, 152 insertions, 39 deletions
diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md
new file mode 100644
index 00000000..21f0a36e
--- /dev/null
+++ b/ISSUE_TEMPLATE.md
@@ -0,0 +1,27 @@
+Please include the following four components in your bug report: sway version, debug log, configuration (if applicable), and an explanation of steps taken to reproduce the issue.
+
+Obtain your version like so:
+
+ swaymsg -t get_version
+
+If this doesn't work, use:
+
+ sway -v
+
+* Sway Version:
+
+Obtain a debug log like so:
+
+ sway -d 2> ~/sway.log
+
+This will record information about sway's activity when it's running. Briefly reproduce your problem and exit sway. When preparing a debug log, brevity is important - start up sway, do the minimum work necessary to reproduce the error, then close sway.
+
+Upload the debug log to a pastebin service such as [gist.github.com](https://gist.github.com), and link to it below.
+
+* Debug Log:
+
+You should try to reproduce the issue with the default configuration. If you cannot, please reproduce with a minimal configuration, upload the config to a pastebin service, and link to it below.
+
+* Configuration File:
+
+Finally, explain the steps you took in plain English to reproduce the problem below.
diff --git a/completions/fish/swayidle.fish b/completions/fish/swayidle.fish
new file mode 100644
index 00000000..71279925
--- /dev/null
+++ b/completions/fish/swayidle.fish
@@ -0,0 +1,3 @@
+# swayidle
+complete -c swayidle -s h --description 'show help'
+complete -c swayidle -s d --description 'debug'
diff --git a/completions/fish/swaylock.fish b/completions/fish/swaylock.fish
index 965a22d2..99dff48f 100644
--- a/completions/fish/swaylock.fish
+++ b/completions/fish/swaylock.fish
@@ -1,11 +1,39 @@
# swaylock(1) completion
+complete -c swaylock -s C -l config --description 'The config file to use. Default: $HOME/.swaylock/config, $XDG_CONFIG_HOME/swaylock/config, and SYSCONFDIR/swaylock/config.'
complete -c swaylock -s h -l help --description "Show help message and quit."
-complete -c swaylock -s c -l color --description "Turn the screen into the given color. If -i is used, this sets the background of the image into the given color. Defaults to white (ffffff), or transparent (00000000) if an image is in use."
complete -c swaylock -s f -l daemonize --description "Fork into the background after spawning. Note: this is the default bahavior of i3lock."
+complete -c swaylock -s v -l version --description "Show the version number and quit."
+complete -c swaylock -s s -l socket --description "Use the specified socket path. Otherwise, swaymsg will as sway where the socket is (which is the value of $SWAYSOCK, then of $I350CK)."
+complete -c swaylock -s e -l ignore-empty-password --description 'When an empty password is provided by the user, do not validate it.'
+
+# Appearance
+complete -c swaylock -s u -l no-unlock-indicator --description "Disable the unlock indicator."
complete -c swaylock -s i -l image --description "Display the given image, optionally on the given output. Use -c to set a background color."
-complete -c swaylock -l scaling --description "Scaling mode for images: stretch, fill, fit, center, or tile."
+complete -c swaylock -s s -l scaling --description "Scaling mode for images: stretch, fill, fit, center, or tile."
complete -c swaylock -s t -l tiling --description "Same as --scaling=tile."
-complete -c swaylock -s u -l no-unlock-indicator --description "Disable the unlock indicator."
-complete -c swaylock -s v -l version --description "Show the version number and quit."
-complete -c swaylock -l socket --description "Use the specified socket path. Othherwise, swaymsg will as sway where the socket is (which is the value of $SWAYSOCK, then of $I350CK)."
+complete -c swaylock -s c -l color --description "Turn the screen into the given color. If -i is used, this sets the background of the image into the given color. Defaults to white (ffffff), or transparent (00000000) if an image is in use."
+complete -c swaylock -l bs-hl-color --description 'Sets the color of backspace highlight segments.'
+complete -c swaylock -l font --description 'Sets the font of the text inside the indicator.'
+complete -c swaylock -l indicator-radius --description 'Sets the radius of the indicator to radius pixels. Default: 50'
+complete -c swaylock -l indicator-thickness --description 'Sets the thickness of the indicator to thickness pixels. Default: 10'
+complete -c swaylock -l inside-color --description 'Sets the color of the inside of the indicator when typing or idle.'
+complete -c swaylock -l inside-clear-color --description 'Sets the color of the inside of the indicator when cleared.'
+complete -c swaylock -l inside-ver-color --description 'Sets the color of the inside of the indicator when verifying.'
+complete -c swaylock -l inside-wrong-color --description 'Sets the color of the inside of the indicator when invalid.'
+complete -c swaylock -l key-hl-color --description 'Sets the color of key press highlight segments.'
+complete -c swaylock -l line-color --description 'Sets the color of the lines that separate the inside and outside of the indicator when typing or idle.'
+complete -c swaylock -l line-clear-color --description 'Sets the color of the lines that separate the inside and outside of the indicator when cleared.'
+complete -c swaylock -l line-ver-color --description 'Sets the color of the lines that separate the inside and outside of the indicator when verifying.'
+complete -c swaylock -l line-wrong-color --description 'Sets the color of the lines that separate the inside and outside of the indicator when invalid.'
+complete -c swaylock -s n -l line-uses-inside --description 'Use the color of the inside of the indicator for the line separating the inside and outside of the indicator.'
+complete -c swaylock -s r -l line-uses-ring --description 'Use the outer ring\'s color for the line separating the inside and outside of the indicator.'
+complete -c swaylock -l ring-color --description 'Sets the color of the outside of the indicator when typing or idle.'
+complete -c swaylock -l ring-clear-color --description 'Sets the color of the outside of the indicator when cleared.'
+complete -c swaylock -l ring-ver-color --description 'Sets the color of the outside of the indicator when verifying.'
+complete -c swaylock -l ring-wrong-color --description 'Sets the color of the outside of the indicator when invalid.'
+complete -c swaylock -l separator-color --description 'Sets the color of the lines that separate highlight segments.'
+complete -c swaylock -l text-color --description 'Sets the color of the text inside the indicator when typing or idle.'
+complete -c swaylock -l text-clear-color --description 'Sets the color of the text inside the indicator when cleared.'
+complete -c swaylock -l text-ver-color --description 'Sets the color of the text inside the indicator when verifying.'
+complete -c swaylock -l text-wrong-color --description 'Sets the color of the text inside the indicator when invalid.'
diff --git a/completions/fish/swaynag.fish b/completions/fish/swaynag.fish
new file mode 100644
index 00000000..784d7fad
--- /dev/null
+++ b/completions/fish/swaynag.fish
@@ -0,0 +1,29 @@
+# swaynag
+complete -c swaynag -s C -l config --description 'The config file to use. Default: $HOME/.swaylock/config, $XDG_CONFIG_HOME/swaylock/config, and SYSCONFDIR/swaylock/config.'
+complete -c swaynag -s d -l debug --description 'Enable debugging.'
+complete -c swaynag -s e -l edge --description 'Set the edge to use: top or bottom'
+complete -c swaynag -s f -l font --description 'Set the font to use.'
+complete -c swaynag -s h -l help --description 'Show help message and quit.'
+complete -c swaynag -s b -l button --description 'Create a button with a text and an action which is executed when pressed. Multiple buttons can be defined by providing the flag multiple times.'
+complete -c swaynag -s l -l detailed-message --description 'Read a detailed message from stdin. A button to toggle details will be added. Details are shown in a scrollable multi-line text area.'
+complete -c swaynag -s L -l detailed-button --description 'Set the text for the button that toggles details. This has no effect if there is not a detailed message. The default is "Toggle details".'
+complete -c swaynag -s m -l message --description 'Set the message text.'
+complete -c swaynag -s o -l output --description 'Set the output to use.'
+complete -c swaynag -s s -l dismiss-button --description 'Sets the text for the dismiss nagbar button. The default is "X".'
+complete -c swaynag -s t -l type --description 'Set the message type. Two types are created by default "error" and "warning". Custom types can be defined in the config file.'
+complete -c swaynag -s v -l version --description 'Show the version number and quit.'
+
+# Appearance
+complete -c swaynag -l background --description 'Set the color of the background.'
+complete -c swaynag -l border --description 'Set the color of the border.'
+complete -c swaynag -l border-bottom --description 'Set the color of the bottom border.'
+complete -c swaynag -l button-background --description 'Set the color for the background for buttons.'
+complete -c swaynag -l text --description 'Set the text color.'
+complete -c swaynag -l border-bottom-size --description 'Set the thickness of the bottom border.'
+complete -c swaynag -l message-padding --description 'Set the padding for the message.'
+complete -c swaynag -l details-border-size --description 'Set the thickness for the details border.'
+complete -c swaynag -l button-border-size --description 'Set the thickness for the button border.'
+complete -c swaynag -l button-gap --description 'Set the size of the gap between buttons.'
+complete -c swaynag -l button-dismiss-gap --description 'Set the size of the gap between the dismiss button and another button.'
+complete -c swaynag -l button-margin-right --description 'Set the margin from the right of the dismiss button to edge.'
+complete -c swaynag -l button-padding --description 'Set the padding for the button text.'
diff --git a/include/sway/output.h b/include/sway/output.h
index 369e62ce..22cb352a 100644
--- a/include/sway/output.h
+++ b/include/sway/output.h
@@ -86,6 +86,8 @@ void output_damage_whole_container(struct sway_output *output,
struct sway_output *output_by_name(const char *name);
+struct sway_output *output_by_identifier(const char *identifier);
+
void output_sort_workspaces(struct sway_output *output);
struct output_config *output_find_config(struct sway_output *output);
diff --git a/meson.build b/meson.build
index 1e2b53fa..6b23b4e3 100644
--- a/meson.build
+++ b/meson.build
@@ -244,8 +244,10 @@ endif
if (get_option('fish-completions'))
fish_files = files(
'completions/fish/sway.fish',
+ 'completions/fish/swayidle.fish',
'completions/fish/swaylock.fish',
'completions/fish/swaymsg.fish',
+ 'completions/fish/swaynag.fish',
)
fish_install_dir = datadir + '/fish/completions'
diff --git a/sway/desktop/output.c b/sway/desktop/output.c
index ed9300bb..4d6c0336 100644
--- a/sway/desktop/output.c
+++ b/sway/desktop/output.c
@@ -39,6 +39,19 @@ struct sway_output *output_by_name(const char *name) {
return NULL;
}
+struct sway_output *output_by_identifier(const char *identifier) {
+ for (int i = 0; i < root->outputs->length; ++i) {
+ struct sway_output *output = root->outputs->items[i];
+ char output_identifier[128];
+ snprintf(output_identifier, sizeof(output_identifier), "%s %s %s", output->wlr_output->make,
+ output->wlr_output->model, output->wlr_output->serial);
+ if (strcasecmp(output_identifier, identifier) == 0) {
+ return output;
+ }
+ }
+ return NULL;
+}
+
/**
* Rotate a child's position relative to a parent. The parent size is (pw, ph),
* the child position is (*sx, *sy) and its size is (sw, sh).
diff --git a/sway/input/input-manager.c b/sway/input/input-manager.c
index 91c45dd1..68445d68 100644
--- a/sway/input/input-manager.c
+++ b/sway/input/input-manager.c
@@ -431,6 +431,7 @@ void input_manager_set_focus(struct sway_node *node) {
struct sway_seat *seat;
wl_list_for_each(seat, &server.input->seats, link) {
seat_set_focus(seat, node);
+ seat_consider_warp_to_focus(seat);
}
}
diff --git a/sway/input/seat.c b/sway/input/seat.c
index 9d4dc7af..64419afa 100644
--- a/sway/input/seat.c
+++ b/sway/input/seat.c
@@ -948,7 +948,7 @@ struct sway_node *seat_get_focus(struct sway_seat *seat) {
if (!seat->has_focus) {
return NULL;
}
- if (wl_list_length(&seat->focus_stack) == 0) {
+ if (wl_list_empty(&seat->focus_stack)) {
return NULL;
}
struct sway_seat_node *current =
diff --git a/sway/ipc-json.c b/sway/ipc-json.c
index 2cd0cb2d..5c9b3e5a 100644
--- a/sway/ipc-json.c
+++ b/sway/ipc-json.c
@@ -229,10 +229,6 @@ static void ipc_json_describe_view(struct sway_container *c, json_object *object
json_object_object_add(object, "app_id",
app_id ? json_object_new_string(app_id) : NULL);
- const char *class = view_get_class(c->view);
- json_object_object_add(object, "class",
- class ? json_object_new_string(class) : NULL);
-
json_object *marks = json_object_new_array();
list_t *view_marks = c->view->marks;
for (int i = 0; i < view_marks->length; ++i) {
@@ -269,13 +265,17 @@ static void ipc_json_describe_view(struct sway_container *c, json_object *object
json_object *window_props = json_object_new_object();
- json_object_object_add(window_props, "class",
- class ? json_object_new_string(class) : NULL);
+ const char *class = view_get_class(c->view);
+ if (class) {
+ json_object_object_add(window_props, "class", json_object_new_string(class));
+ }
const char *instance = view_get_instance(c->view);
- json_object_object_add(window_props, "instance",
- instance ? json_object_new_string(instance) : NULL);
- json_object_object_add(window_props, "title",
- c->title ? json_object_new_string(c->title) : NULL);
+ if (instance) {
+ json_object_object_add(window_props, "instance", json_object_new_string(instance));
+ }
+ if (c->title) {
+ json_object_object_add(window_props, "title", json_object_new_string(c->title));
+ }
// the transient_for key is always present in i3's output
uint32_t parent_id = view_get_x11_parent_id(c->view);
@@ -284,8 +284,7 @@ static void ipc_json_describe_view(struct sway_container *c, json_object *object
const char *role = view_get_window_role(c->view);
if (role) {
- json_object_object_add(window_props, "window_role",
- json_object_new_string(role));
+ json_object_object_add(window_props, "window_role", json_object_new_string(role));
}
json_object_object_add(object, "window_properties", window_props);
diff --git a/sway/tree/output.c b/sway/tree/output.c
index 9d523997..632501e1 100644
--- a/sway/tree/output.c
+++ b/sway/tree/output.c
@@ -65,7 +65,14 @@ void output_enable(struct sway_output *output, struct output_config *oc) {
return;
}
struct wlr_output *wlr_output = output->wlr_output;
+ size_t len = sizeof(output->layers) / sizeof(output->layers[0]);
+ for (size_t i = 0; i < len; ++i) {
+ wl_list_init(&output->layers[i]);
+ }
+ wl_signal_init(&output->events.destroy);
+
output->enabled = true;
+ apply_output_config(oc, output);
list_add(root->outputs, output);
output->lx = wlr_output->lx;
@@ -91,14 +98,6 @@ void output_enable(struct sway_output *output, struct output_config *oc) {
ipc_event_workspace(NULL, ws, "init");
}
- size_t len = sizeof(output->layers) / sizeof(output->layers[0]);
- for (size_t i = 0; i < len; ++i) {
- wl_list_init(&output->layers[i]);
- }
- wl_signal_init(&output->events.destroy);
-
- apply_output_config(oc, output);
-
input_manager_configure_xcursor();
wl_signal_add(&wlr_output->events.mode, &output->mode);
diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c
index 27e9ac7a..05cda5c0 100644
--- a/sway/tree/workspace.c
+++ b/sway/tree/workspace.c
@@ -35,6 +35,10 @@ struct sway_output *workspace_get_initial_output(const char *name) {
struct workspace_config *wsc = workspace_find_config(name);
if (wsc && wsc->output) {
struct sway_output *output = output_by_name(wsc->output);
+ if (!output) {
+ output = output_by_identifier(wsc->output);
+ }
+
if (output) {
return output;
}
@@ -143,7 +147,11 @@ void workspace_consider_destroy(struct sway_workspace *ws) {
static bool workspace_valid_on_output(const char *output_name,
const char *ws_name) {
struct workspace_config *wsc = workspace_find_config(ws_name);
- return !wsc || !wsc->output || strcmp(wsc->output, output_name) == 0;
+ char identifier[128];
+ struct sway_output *output = output_by_name(output_name);
+ output_get_identifier(identifier, sizeof(identifier), output);
+
+ return !wsc || !wsc->output || strcmp(wsc->output, output_name) == 0 || strcasecmp(identifier, output_name) == 0;
}
static void workspace_name_from_binding(const struct sway_binding * binding,
diff --git a/swaylock/swaylock.1.scd b/swaylock/swaylock.1.scd
index 3107124f..8ddc7d3a 100644
--- a/swaylock/swaylock.1.scd
+++ b/swaylock/swaylock.1.scd
@@ -21,20 +21,25 @@ Locks your Wayland session.
All leading dashes should be omitted and the equals sign is required for
flags that take an argument.
-*-c, --color* <rrggbb[aa]>
- Turn the screen into the given color. If -i is used, this sets the
- background of the image to the given color. Defaults to white (FFFFFF), or
- transparent (00000000) if an image is in use.
-
*-e, --ignore-empty-password*
When an empty password is provided by the user, do not validate it.
*-f, --daemonize*
Detach from the controlling terminal after locking.
+ Note: this is the default bahavior of i3lock.
+
*-h, --help*
Show help message and quit.
+*-v, --version*
+ Show the version number and quit.
+
+# APPEARANCE
+
+*-u, --no-unlock-indicator*
+ Disable the unlock indicator.
+
*-i, --image* [<output>:]<path>
Display the given image, optionally only on the given output. Use -c to set
a background color.
@@ -45,13 +50,10 @@ Locks your Wayland session.
*-t, --tiling*
Same as --scaling=tile.
-*-u, --no-unlock-indicator*
- Disable the unlock indicator.
-
-*-v, --version*
- Show the version number and quit.
-
-# APPEARANCE
+*-c, --color* <rrggbb[aa]>
+ Turn the screen into the given color. If -i is used, this sets the
+ background of the image to the given color. Defaults to white (FFFFFF), or
+ transparent (00000000) if an image is in use.
*--bs-hl-color* <rrggbb[aa]>
Sets the color of backspace highlight segments.