Commit graph

7121 commits

Author SHA1 Message Date
Brian Ashworth 12876932a9 Allow multiple outputs for workspace output
`i3 4.16` allows users to list multiple outputs for a workspace and the
first available will be used. The syntax is as follows:
`workspace <workspace> output <outputs...>`

Additionally when the workspace is created, the outputs get added to the
output priority list in the order specified. This ensures that if a higher
output gets connected, the workspace will move to the higher output. This
works the same way as if the user had a workspace on an output, disconnected
the output, and then later reconnected the output.
2018-11-11 11:22:38 -05:00
Brian Ashworth b277000601 Alter config variable replacement process
Currently, variables cannot contain commands and cannot span more than
one argument. This is due to variable replacement happening after
determining the handler and after splitting the config line into
arguments.

This changes the process to:
0. Check for empty lines and block boundaries
1. Split the arguments as before
2. Verify that the first argument is not a variable. If needed the
following occurs
    a. Perform variable replacement on just the first argument
    b. Join the arguments back together then split the arguments again. This is needed when the variable
contains the command and arguments for the command.
3. Determine the handler
4. If the handler is cmd_set, escape the variable name so that it does
not get replaced
5. Join the arguments back together, do variable replacement on the full
command, and split the arguments again
6. Perform any needed quote stripping or unescaping on arguments
7. Run the command handler

This allows for config snippets such as:

```
set $super bindsym Mod4
$super+a exec some-command
```

and

```
set $bg bg #ffffff solid_color
output * $bg
```
2018-11-10 21:53:10 -05:00
emersion 528f129c98
Render software cursors with wlr_output_render_software_cursors 2018-11-10 19:22:32 +01:00
Drew DeVault 80a1c340a9
Merge pull request #3098 from c-edw/feature/RefactorArgParse
Use parse_boolean where possible.
2018-11-10 08:06:11 -05:00
Connor E b865dabeba Use parse_boolean where possible. 2018-11-10 12:55:06 +00:00
Drew DeVault 7fa7f4f48d
Merge pull request #3085 from 7415963987456321/master
Remove extra line.
2018-11-08 20:07:41 -05:00
7415963987456321 965abe077a Remove extra line 2018-11-09 00:57:09 +00:00
Brian Ashworth cfcedfca71
Merge pull request #3091 from c-edw/feature/FocusFollowsMouseDoc
Update documentation for focus_follows_mouse.
2018-11-08 15:53:02 -05:00
Connor E 78d07f5be4 Update documentation for focus_follows_mouse. 2018-11-08 20:38:50 +00:00
Drew DeVault 5880478fb1
Merge pull request #3090 from RedSoxFan/resize-set-improved
resize set: implement width and height keywords
2018-11-08 14:39:20 -05:00
Brian Ashworth c248e96b84 resize set: implement width and height keywords
This implements the following syntaxes from `i3 4.16`:
* `resize set [width] <width> [px|ppt]`
* `resize set height <height> [px|ppt]`
* `resize set [width] <width> [px|ppt] [height] <height> [px|ppt]`

Additionally, a bug was fixed that caused setting the height of a tiled
container to change the width instead due to a typo.
2018-11-08 14:17:49 -05:00
emersion 0bc819dd8b
Merge pull request #3089 from sghctoma/fix-clang-build
Fix building with clang
2018-11-08 14:28:37 +01:00
sghctoma 7ead20bfcf Fix building with clang
The "struct sway_container *other" variable in swap.c was potentially
used uninitialized, depending on an "if" statement.
2018-11-08 13:57:04 +01:00
Ryan Dwyer aad2f444f0
Merge pull request #3087 from RedSoxFan/side-gaps
Implement per side and per direction outer gaps
2018-11-08 22:41:14 +10:00
Drew DeVault e53b4813fe
Merge pull request #3086 from RedSoxFan/fix-dup-inner-gaps
gaps: remove duplicate inner gaps
2018-11-08 07:06:41 -05:00
Brian Ashworth 9e8aa39530 Implement per side and per direction outer gaps
This introduces the following command extensions from `i3-gaps`:
* `gaps horizontal|vertical|top|right|bottom|left <amount>`
* `gaps horizontal|vertical|top|right|bottom|left all|current
set|plus|minus <amount>`
* `workspace <ws> gaps horizontal|vertical|top|right|bottom|left
<amount>`

`inner` and `outer` are also still available as options for all three
of the above commands. `outer` now acts as a shorthand to set/alter
all sides.

Additionally, this fixes two bugs with the prevention of invalid gap
configurations for workspace configs:
1. If outer gaps were not set and inner gaps were, the outer gaps
would be snapped to the negation of the inner gaps due to `INT_MIN`
being less than the negation. This took precedence over the default
outer gaps.
2. Similarly, if inner gaps were not set and outer gaps were, inner
gaps would be set to zero, which would take precedence over the
default inner gaps.

Fixing both of the above items also requires checking the gaps again
when creating a workspace since the default outer gaps can be smaller
than the negation of the workspace specific inner gaps.
2018-11-07 22:44:11 -05:00
Brian Ashworth 6a42643784 gaps: remove duplicate inner gaps 2018-11-07 22:42:18 -05:00
Connor E 4a21981855 Add focus_follows_mouse always. (#3081)
* Add focus_follows_mouse_mode.

* Fail if focus_follows_mouse is invalid.

* Fix indentation.
2018-11-06 21:58:08 +01:00
emersion 001ec1f3fd
Merge pull request #3046 from tokyovigilante/relative-transform
Add relative output transform
2018-11-06 14:17:33 +01:00
Ryan Walklin 5032acb7a5 Add relative output transform
This commit enhances the output transform
command with options for a relative transform,
i.e. the provided transform will be applied as
an offset to the current transform. Append
`clockwise` to rotate clockwise from the current
rotation, or `anticlockwise` to rotate in the
opposite direction.

For example, if the output LVDS-1 is rotated
90 degrees clockwise, the command
`output LVDS-1 transform 90 clockwise`
will rotate the display to 180 degrees.
All transform options are supported,
including flipped transforms.

Relative transforms can only be applied to
a single output and cannot be used with
a wildcard (*) output specifier.
2018-11-05 22:58:27 +00:00
Drew DeVault 994c35e375
Merge pull request #3068 from emersion/effective-damage
Use wlr_surface_get_effective_damage
2018-11-05 21:31:22 +01:00
Drew DeVault 25bea8f6a5
Merge branch 'master' into effective-damage 2018-11-05 21:21:47 +01:00
Drew DeVault fbf1730557
Merge pull request #3078 from Emantor/fix/exec_always_double_load
Fix the double execution of exec_always commands on config reloads
2018-11-05 21:15:56 +01:00
Rouven Czerwinski f54287eaf3 config: mention that reload message is also printed on validation 2018-11-05 21:06:28 +01:00
Rouven Czerwinski 5fdffea99a commands/exec_always: defer command on config validation
The exec_always command was executed twice, since it was not checking for the
config->validating variable.
Fix this by defering the command if the configuration is validating.

Fixes #3072
2018-11-05 20:32:45 +01:00
emersion e9c77970fa
Merge pull request #3071 from RedSoxFan/fix-3064
Fix focus_wrapping yes
2018-11-05 18:59:44 +01:00
Brian Ashworth c8c1ecaf25 Fix focus_wrapping yes
It appears that the focus code that handles `focus_wrapping yes` was
removed during the conversion to type safety. This re-implements the
focus code for when `focus_wrapping` is set to `yes` (default). Neither
the `no` or `force` options appear to be effected and should be working.
2018-11-05 12:39:44 -05:00
Drew DeVault 77d581f144
Merge pull request #3075 from swaywm/revert-3073-swayidle_workaround
Revert "Work around swayidle never triggering on SIGUSR1"
2018-11-05 18:22:29 +01:00
Drew DeVault 9a3cd000a3
Revert "Work around swayidle never triggering on SIGUSR1" 2018-11-05 12:12:44 -05:00
Drew DeVault 0e985d6c8e
Merge pull request #3073 from oranenj/swayidle_workaround
Work around swayidle never triggering on SIGUSR1
2018-11-05 18:10:09 +01:00
Jarkko Oranen 4f21b6f670 Work around swayidle never triggering on SIGUSR1 2018-11-05 18:54:41 +02:00
emersion d0bb450681
Merge pull request #3066 from mwenzkowski/fix-gaps
Improvements to the runtime only part of the gaps command
2018-11-05 15:33:40 +01:00
emersion bcbd0a9b45
Merge pull request #3067 from madblobfish/three-trivial-fixes
Improve documentation and remove dead code
2018-11-04 23:30:57 +01:00
emersion 0e85b92250
Use wlr_surface_get_effective_damage 2018-11-04 23:21:37 +01:00
madblobfish e47b31c556 document swaymessage type for get_seats 2018-11-04 22:49:44 +01:00
mwenzkowski 67866dc378 gaps: Improve error reporting
Always raise an error if the runtime only gaps command is found in the
config file.
2018-11-04 20:40:14 +01:00
mwenzkowski 60df5cc9f8 Correct manpage regarding gaps command
The command 'gaps inner|outer all|current set|plus|minus <amount>'
is not valid in the configuration file, hence list it accordingly.
2018-11-04 20:10:41 +01:00
madblobfish 7d8ed7a3a7 added space after table in sway.5 manpage 2018-11-04 17:38:35 +01:00
madblobfish 417a10f477 removed unneeded code fragment 2018-11-04 17:38:13 +01:00
emersion d19648a304
Merge pull request #3061 from colemickens/output-current-mode
ipc: move refresh to current_mode
2018-11-03 23:44:04 +01:00
Cole Mickens ef888321ba ipc: move refresh from output to output->current_mode 2018-11-03 15:09:34 -07:00
Cole Mickens 71686ed0e7 fix: restore refresh to the modes_array 2018-11-03 15:09:34 -07:00
Drew DeVault c18cd9dd03
Merge pull request #3021 from Snaipe/singlekey-binding-trigger
binding: match single-key bindings if no multi-key binding matched
2018-11-03 17:57:59 +01:00
Drew DeVault baf4841d79
Merge pull request #3052 from colemickens/output-current-mode
Correct "Current mode" in `swaymsg -t get_outputs` for scaled outputs
2018-11-03 17:37:15 +01:00
Cole Mickens 1f486fe898 swaymsg: get_outputs: use output->current_mode for current mode display 2018-11-03 04:30:53 -07:00
Cole Mickens d05aeb77a0 sway-ipc: includes current_mode for each output 2018-11-03 04:30:49 -07:00
Drew DeVault 6297b757b1 Correction to dependency updates 2018-11-02 13:48:25 -04:00
Drew DeVault 842a555a2f Clean up dependencies in README.md 2018-11-02 13:47:52 -04:00
Drew DeVault b1aec1ef14
Merge pull request #3028 from emersion/disambiguate-drop-root-error
Make it clear that being able to restore root is a failure
2018-11-01 19:01:18 +01:00
emersion f90ff1210b
Teardown compositor when failing to drop permissions 2018-11-01 18:50:06 +01:00