summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorLines
2019-05-16bar: fix segfault with missing or invalid bar id1.1-rc3Furkan Sahin-83/+27
Prior to this patch, if I ran something like this, sway would crash: swaymsg bar height 50 or swaymsg bar not-a-bar-id color bg #ff0000 This was in contrast to other bar subcommands, like status_command, which would exit with a "No bar defined" message. The difference between the subcommands that crashed and the ones that exited was that some subcommands had a check to see if a bar was specified, while others just assumed that it had been and carried on until they segfaulted. Because this check was identical in every subcommand it was present in, and I couldn't think of a case where it would be valid to run a bar subcommand without specifying which bar to apply it to, I moved this check from individual subcommands into the bar command, which is already responsible for actually setting the specified bar. This reduced code duplication, and fixed the crash for the subcommands that were missing this check.
2019-05-13input/keyboard: attempt default keymap on failureFurkan Sahin-29/+23
This attempts to use the default keymap when the one defined in the input config fails to compile. The goal is to make it so the keyboard is always in a usable state, even if it is not the user's requested settings as usability is more important. This also removes the calls to `getenv` for the `XKB_DEFAULT_*` family of environment variables. The reasoning is libxkbcommon will fallback to using those (and then the system defaults) when any of the rule names are `NULL` or an empty string anyway so there is no need for sway to duplicate the efforts.
2019-05-09config/output: fix typo in merge_id_on_name1.1-rc2Furkan Sahin-1/+1
This fixes a typo in `merge_id_on_name` for output configs that resulted in incorrect id-on-name output configs being generated. Instead of using the output that matched the name or identifier, the first output in the list was being used instead. This could cause merging across unrelated output configs and preventing output configs from being applied correctly
2019-05-03Destroy swaybg client on reloadFurkan Sahin-3/+9
When reloading, this destroys the old config's swaybg client before spawning the new config's swaybg. This fixes a race condition where the old config's swaybg client's destroy was being called after the new config's swaybg client was being spawned. This was causing the reference to the new swaybg client to be removed and never destroyed. This also modifies handle_swaybg_client_destroy to grab the config reference using wl_container_of on the listener since the swaybg client may be the old config swaybg client and should be used instead of the global config instance
2019-05-04Fix xdg-decoration unconfigured if set before first commitFurkan Sahin-0/+2
In case a set_mode/unset_mode request is sent before the first commit, we need to handle the value and send our preference accordingly. This fixes xdg-decoration support for Qt apps.
2019-05-03Bump required wlroots version1.1-rc1Furkan Sahin-1/+1
2019-05-03swaymsg: fix quiet error reportingFurkan Sahin-20/+32
This makes it so swaymsg still returns the correct successful or failed error code when in quiet mode
2019-04-30sway.5.scd: clarify workspace config commandsFurkan Sahin-0/+8
This clarifies that `workspace <name> output <outputs...>` and `workspace <name> gaps ...` do not operate on existing workspaces. Additionally, alternate commands/solutions that operate on existing workspaces are listed.
2019-04-30cmd_move: add support for output currentFurkan Sahin-3/+12
This adds support for the following commands for i3 compatibility: - `move [window|container] [to] output current` - `move workspace to [output] current` - `move workspace [to] output current` The above commands are only useful when used with criteria.
2019-04-26Fix a silly mistakeFurkan Sahin-1/+1
2019-04-25Don't send pointer motion when rebasing the cursorFurkan Sahin-2/+3
2019-04-19Clear pointer focus during move and resize seatopsFurkan Sahin-12/+10
2019-04-27Remove extra inclusion of stdio.hFurkan Sahin-1/+0
2019-04-28Add link to i3 in first mention of READMEFurkan Sahin-8/+8
2019-04-26Add German translation of the READMEFurkan Sahin-1/+52
2019-04-27Don't submit too much damageFurkan Sahin-5/+12
2019-04-20config: fix clang warningFurkan Sahin-4/+2
2019-03-05bindsym: change xkb_rule_names initializationFurkan Sahin-17/+14
2019-02-20bindsym: consider xkb_rule_names for --to-codeFurkan Sahin-31/+40
2019-02-18bindsym: update the man page to include --to-codeFurkan Sahin-1/+5
2019-02-19bindsym: change default keymap for --to-codeFurkan Sahin-10/+3
Replace XKB_DEFAULT_LAYOUT with NULL as the default layout.
2019-02-19config: simplify keysym translation fieldsFurkan Sahin-26/+15
Do not store `xkb_keymap` since it can be retrieved from `xkb_state`.
2019-02-17Implement bindsym --to-codeFurkan Sahin-26/+274
* `bindsym --to-code` enables keysym to keycode translation. * If there are no `xkb_layout` commands in the config file, the translation uses the XKB_DEFAULT_LAYOUT value. * It there is one or more `xkb_layout` command, the translation uses the first one. * If the translation is unsuccessful, a message is logged and the binding is stored as BINDING_KEYSYM. * The binding keysyms are stored and re-translated when a change in the input configuration may affect the translated bindings.
2019-04-25ci: enable all featuresFurkan Sahin-2/+2
If unspecified, feature options are set to "auto", which means enabled only if the required dependencies are found. In CI we don't want to miss compilation errors because a dependency hasn't been found and code isn't built. Leave FreeBSD out for now because it uses a subproject (haven't found a way to make auto_features=enabled only apply to the toplevel project).
2019-04-25swaybg: split into standalone projectFurkan Sahin-738/+107
The new upstream is https://github.com/swaywm/swaybg This commit also refactors our use of gdk-pixbuf a bit, since the only remaining reverse dependency is swaybar tray support.
2019-04-25Remove obsolete README translationsFurkan Sahin-498/+1
Everything which still mentioned wlc has been removed.
2019-04-25Set the correct version for wlroots dependencyFurkan Sahin-1/+1
2019-04-24cmd_move: respect workspace layout when insertingFurkan Sahin-2/+7
When moving a container to become a direct child of the workspace and the workspace's layout is tabbed or stacked, wrap it in a container with the same layout. This allows for the following: - Run `layout tabbed|stacked` on an empty workspace (or use `workspace_layout tabbed|stacked` in the config) - Open some views - Move one of the views in any direction - Open another view - The new container should also be `tabbed`/`stacked`
2019-04-23swaybar: add multiseat supportFurkan Sahin-57/+131
This just adds multiseat support to swaybar
2019-04-24swaybar: hide mode visibility improvementsFurkan Sahin-1/+12
This allows swaybar to become visible when the mode changes (to any mode other than the default). swaybar will be hidden again when the modifier is pressed and released or when switching back to the default mode. This also applies the same logic to visible by urgency to hide swaybar when the modifier is pressed and released. These changes are to match i3's behavior.
2019-04-23Update for wlroots#1660Furkan Sahin-4/+6
2019-04-21Fix uninitialized read for wlr_surface_send_frameFurkan Sahin-2/+3
2019-04-20Validate icon_struct in read_theme_fileFurkan Sahin-2/+6
The read_theme_file function used to return an invalid icon_struct in some cases, for example when an empty index.theme file was read. This makes sure the struct we're returning is always valid as per the Icon Theme specification. Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-04-19swaynag: revamp type configsFurkan Sahin-51/+59
This revamps the type configs for swaynag. All sizing attributes for swaynag are now `ssize_t` instead of `uint32_t` to allow for a default value of `-1`, which allows for `0` to be a valid value. Additionally, the initialization of the type configs has been changed from a simple calloc to use a new function `swaynag_type_new`. `swaynag_type_new` calloc's the memory, checks for an allocation failure, sets the name, and all sizes to -1. The layering order has also been changed to default, general config, type config, and as highest priority command line arguments. Finally, `swaynag_type_merge` has been modified to handle the layering and sizing changes.
2019-04-19ipc: fix criteria for emitting bar_state_updateFurkan Sahin-5/+12
This fixes the criteria for emitting a `bar_state_update` event to notify swaybar (and any other bars utilizing the event) on whether the bar is visible by modifier. It is not enough to only emit the event when both the bar mode and bar hidden state are `hide` since it is possible to release the modifier while hidden state is `show` and then change hidden state to `hide` without pressing the modifier. This also emits the event whenever visible by modifier is set and should no longer be regardless of the mode and state to ensure that it gets properly cleared. If visible by modifier is not set and the bar is not in `hide`/`hide`, then no events will be sent and visible by modifier will not be set
2019-04-19cmd_move: allow for all i3 syntax optionsFurkan Sahin-93/+120
This modifies cmd_move to allow for the syntax options allowed by i3. The following syntaxes are supported: - `move left|right|up|down [<amount> [px]]` - `move [--no-auto-back-and-forth] [window|container] [to] workspace <name>|next|prev|next_on_output|prev_on_output|current|number <num>` - `move [window|container] [to] output <name/id>|left|right|up|down` - `move [window|container] [to] mark <mark>` - `move workspace to [output] <name/id>|left|right|up|down` - `move [window|container] [to] [absolute] position <x> [px] <y> [px]` - `move [window|container] [to] [absolute] position center` - `move [window|container] [to] position mouse|cursor|pointer` This also allows retains the following syntax option that is not supported by i3, but is supported in sway 1.0: - `move workspace [to] output <name/id>|left|right|up|down` The changes are: - `window` and `container` are now optional - `output` is now optional for `move workspace` when `to` is given There is also stricter command checking now. If `absolute` or `--no-auto-back-and-forth` are given for commands that do not support them, it will be treated as invalid syntax instead of being silently ignored.
2019-04-18hide_edge_borders.c: add missing case for --i3Furkan Sahin-0/+2
Disable the i3-compatible behavior if the option '--i3' is not given. Previously it was only possible to disable it by changing the config file. Now it also works via swaymsg.
2019-04-12Add unbindsym/unbindcode command for swaybarFurkan Sahin-29/+87
2019-04-12Add unbindswitch commandFurkan Sahin-54/+103
2019-04-12Create unbindsym and unbindcode commandsFurkan Sahin-35/+91
2019-04-17swaymsg: add timeout and type checksFurkan Sahin-1/+26
This adds a 3 second timeout to the initial reply in swaymsg. This prevents swaymsg from hanging when `swaymsg -t get_{inputs,seats}` is used in i3. The timeout is removed when waiting for a subscribed event or monitoring for subscribed events. This also adds type checks to commands where i3 does not reply with all of the properties that sway does (such as `modes` in `get_outputs`). This is mostly just a behavioral adjustment since swaymsg should run on i3. When running under i3, some command reply's (such as the one for `get_outputs) may have more useful information in the raw json than the pretty printed version.
2019-04-16Fix the payload type returned by IPCFurkan Sahin-64/+72
If a client is subscribed and sends a subsequent ipc command which causes event updates, then those event updates override the `client->current_command` and send the incorrect type for the payload associated with the command. Example: SUBSCRIBE {window} RUN_COMMAND focus -> PAYLOAD_TYPE is 0x80000002 for window events Therefore, we decouple the `client->current_command` by passing it as an argument to the ipc_send_reply function, avoiding a data race. The same is done for the `client->payload_length` as a precautionary measure for the same reason.
2019-04-16Don't apply hide_edge_borders to floating windowsFurkan Sahin-18/+18
This change matches i3's behavior.
2019-04-16view.c: refactor view_autoconfigure()Furkan Sahin-13/+11
2019-04-16Add documentation for rename workspaceFurkan Sahin-0/+3
2019-04-15Send disabled output available modes on IPC get_outputsFurkan Sahin-2/+16
- Also fix missing trailing newline on pretty print Signed-off-by: Ranieri Althoff <1993083+ranisalt@users.noreply.github.com>
2019-04-15Add deprecation warnings for new_float, new_window, and force_focus_wrapping.Furkan Sahin-9/+40
2019-03-25Implement input type configs (#3784)Furkan Sahin-6/+109
Add support for configurations that apply to a type of inputs (i.e. natural scrolling on all touchpads). A type config is differentiated by a `type:` prefix followed by the type it corresponds to. When new devices appear, the device config is merged on top of its type config (if it exists). New type configs are applied on top of existing configs.
2019-03-12Add heuristics to differentiate touchpadsFurkan Sahin-19/+38
Use libinput_device_config_tap_get_finger_count to determine whether a pointer is a touchpad. swaymsg is also updated to reflect the new touchpad type.
2019-04-14Spawn swaynag as a wayland clientFurkan Sahin-71/+147
This spawns swaynag as a wayland client similar to how swaybar and swaybg are already done