aboutsummaryrefslogtreecommitdiff
path: root/sway/commands.c
AgeCommit message (Collapse)Author
2015-11-29Merge pull request #278 from christophgysin/mergeDrew DeVault
cmd_output: Merge instead of replace output config
2015-11-29cmd_output: Merge instead of replace output configChristoph Gysin
2015-11-29config: Store 'enabled' as intChristoph Gysin
2015-11-29cmd_output: check for missing subcommand argumentsChristoph Gysin
2015-11-29Merge pull request #274 from sce/fix_stray_floatsDrew DeVault
cmd_floating: Don't add non-float as sibling to float.
2015-11-29cmd_output: Log enable/disable stateChristoph Gysin
2015-11-29cmd_output: Use list_seq_find() to find matching configChristoph Gysin
2015-11-29cmd_output: Cleanup cmd_output argument handlingChristoph Gysin
2015-11-29cmd_floating: Don't add non-float as sibling to float.S. Christoffer Eliesen
When turning a float to a non-float, `get_focused_container` might return another floating view, causing the active view to be inserted into the floating list on its workspace instead of the normal child list which it should. (Since it has `is_floating` as false the resulting discrepency triggered other bad behaviour eventually leading sway to crash.) This patch fixes that by simply checking floating status before making it a sibling.
2015-11-28Add warnings about invalid output commandsMikkel Oscar Lyderik
This handles some cases where sway will crash if an output command is invalid/missing an argument.
2015-11-27workspace: Learn sticky.S. Christoffer Eliesen
A floating window that's sticky will move to the new active workspace whenever the workspace on the same output changes.
2015-11-27commands: code formatting: Sort list of commands by alphabet.S. Christoffer Eliesen
2015-11-27cmd_floating: Support `enable` and `disable` commands too.S. Christoffer Eliesen
This is especially relevant in combination with `for_window`, e.g.: `for_window [title="Terminal"] floating enable`.
2015-11-25swaybg: implement scaling mode "fit"Christoph Gysin
2015-11-25criteria: Add. Learn for_window command.S. Christoffer Eliesen
A criteria is a string in the form of `[class="regex.*" title="str"]`. It is stored in a struct with a list of *tokens* which is a attribute/value pair (stored as a `crit_token` struct). Most tokens will also have a precompiled regex stored that will be used during criteria matching. for_window command: When a new view is created its metadata is tested against all stored criteria, and if a match is found the associated command list is executed. Unfortunately some metadata is not available in sway at the moment (specifically `instance`, `window_role` and `urgent`). Any criteria string that tries to match an unsupported attribute will fail. (Note that while the criteria code can be used to parse any criteria string it is currently only used by the `for_window` command.)
2015-11-24handle_command: Skip commands that has a criteria string.S. Christoffer Eliesen
We can't handle them currently (the criteria needs to e.g. be passed to each command handler which then needs to do the right thing), so it's better to just do nothing than to create unexpected results (because the command was executed on the wrong view). (Before this patch any command list with a criteria string would simply fail to parse, so this is at least a step in the right direction.)
2015-11-24fix list sortingtaiyu
2015-11-22cmd_bindsym: Detect/handle duplicates.S. Christoffer Eliesen
Also replace `bindsym_sort` with function `sway_binding_cmp` that takes all data into account when comparing.
2015-11-22commands: Comment/doc for config_command.S. Christoffer Eliesen
2015-11-22cmd_workspace: Don't fill up config->workspace_outputs with duplicates.S. Christoffer Eliesen
This also fixes a bug where issuing a new "workspace a output b" command for an already assigned workspace would not work (the old config would be found first and used instead).
2015-11-19Add all documented scaling modes to config parserDrew DeVault
Note that not all scaling modes are actually supported by swaybg yet.
2015-11-19Parse output background configDrew DeVault
2015-11-16Track pid of child process from execDrew DeVault
This will allow us to eventually open that process on the current view. Requires support from @Cloudef.
2015-11-16output: Support multiple adjacent outputs.S. Christoffer Eliesen
When querying for an adjacent output we now need an absolute position in order to know which adjacent output that matches. (The position is either the current mouse position or the center of the currently focused container, depending on context.) If two outputs have one edge each that at least partially align with each other they now count as adjacent. Seamless mouse is affected by this and now properly moves and positions itself between outputs with "uneven" placement (as long as they have at least some part of the edge adjacent to each other). When focusing or moving a container in a specified direction the center of the current focused container decides where to look for an adjacent output. So if e.g. an output has two adjacent outputs to the right and a "focus right" command is issued then it's the placement of the currently focused container that decides which output actually gets focused. Also, if an output has at least one output adjacent in some direction but the entire edge is not covered (ie. it has "holes" with no outputs), then the algorithm will choose the output that is closest to the currently focused container (this does not apply to seamless mouse, the pointer will just stop at the edge in that case).
2015-11-16cmd_output: Replace existing config if called multiple times.S. Christoffer Eliesen
2015-11-04Learn "gaps edge_gaps <on|off|toggle>".S. Christoffer Eliesen
When yes, the old behaviour of adding half the inner gap around each view is used. When no, don't add any gap when an edge of the view aligns with the workspace. The result is inner gap only between views, not against the workspace edge. The algorithm is not perfect because it means the extra space is distributed amongst edge-aligned views only, but it's simple, looks good and it works.
2015-11-04commands: gaps: Re-arrange windows after changing default gaps.S. Christoffer Eliesen
2015-11-04commands: gaps: Always apply default gaps config.S. Christoffer Eliesen
2015-11-04commands: gaps: Accept zero value.S. Christoffer Eliesen
2015-11-04commands: gaps: Refactor, expected_syntax.S. Christoffer Eliesen
2015-11-03commands: Learn 'move workspace to output <direction|name>'.S. Christoffer Eliesen
2015-11-03commands: Learn 'move <container|window> to output <direction|name>'.S. Christoffer Eliesen
2015-10-29commands: Learn mouse_warping.S. Christoffer Eliesen
Place mouse at center of focused view when changing to a workspace on a different output, if option is enabled. (This replicates existing i3 option.) This can be triggered in multiple ways: A) via `workspace <name>` which changes output B) via `focus <direction>` which changes output C) via `focus output <name>` which (obviously) changes output
2015-10-28commands: Learn 'focus output <direction|name>'S. Christoffer Eliesen
2015-10-27commands: Learn 'debuglog'.S. Christoffer Eliesen
Replicates i3 option. Verbosity level given as command line argument becomes default log level, and using 'debuglog toggle' switches back and forth between default and debug (or L_ERROR and debug if default is also L_DEBUG).
2015-10-25commands: cmd_move: Fix "move container to workspace _number_ n"S. Christoffer Eliesen
This is an undocumented feature (the word "number" is just ignored anyway), but it exists to be compatible with i3 config syntax. Plus some code cleanup at the same time.
2015-10-23commands: cmd_results->input is duplicated/freed.S. Christoffer Eliesen
2015-10-23commands: Code formatting.S. Christoffer Eliesen
2015-10-23commands: Allow 'floating_modifier' & 'focus_follows_mouse' at runtime.S. Christoffer Eliesen
2015-10-22ipc,commands,config: Replace cmd_status enum with cmd_results struct.S. Christoffer Eliesen
In i3 the ipc reply will contain a human readable error message, and this patch replicates that behaviour. However, that error message is also useful for logging, which this patch takes advantage of. E.g. instead of logging errors directly in commands.c/checkargs, it is fed back to the caller which eventually ends up logging everything with maximum context available (config.c/read_config). So instead of logging e.g. "Error on line 'exit'" it will now log: "Error on line 'exit': Can't execute from config."
2015-10-22config: Add "seamless_mouse" to decide if pointer crosses output edges.S. Christoffer Eliesen
2015-10-22commands: Allow changing resolution outside config load.S. Christoffer Eliesen
2015-10-21config: Apply output config also during config reload.S. Christoffer Eliesen
2015-10-21commands,container: Tweak debug output to better reflect reality.S. Christoffer Eliesen
2015-10-19commands: Gracefully handle empty commands.S. Christoffer Eliesen
Before this patch sway would proceed into find_handler which would cause a crash trying to parse a NULL string. This could be triggered via e.g. `i3-msg -s $(sway --get-socketpath)`.
2015-10-18commands: Catch empty exec with --no-startup-id cases.S. Christoffer Eliesen
2015-10-17commands: Ignore exec switch "--no-startup-id".S. Christoffer Eliesen
When using an i3 config verbatim in sway this switch to exec or exec_always might appear. Before this patch the switch would be passed to /bin/sh, causing an error, and the command would not be run.
2015-10-08#187, let init handle child processestaiyu
2015-09-18dont log empty config linestaiyu
2015-09-18merge + no c_extensionstaiyu