diff options
-rw-r--r-- | README.bg.md | 7 | ||||
-rw-r--r-- | README.de.md | 9 | ||||
-rw-r--r-- | README.el.md | 2 | ||||
-rw-r--r-- | README.fr.md | 8 | ||||
-rw-r--r-- | README.it.md | 9 | ||||
-rw-r--r-- | README.ja.md | 3 | ||||
-rw-r--r-- | README.md | 8 | ||||
-rw-r--r-- | README.pt.md | 6 | ||||
-rw-r--r-- | README.ru.md | 8 | ||||
-rw-r--r-- | README.uk.md | 10 | ||||
-rw-r--r-- | completions/bash/swaybar | 2 | ||||
-rw-r--r-- | completions/zsh/_sway | 4 | ||||
-rw-r--r-- | completions/zsh/_swaybar | 13 | ||||
-rw-r--r-- | completions/zsh/_swayidle | 22 | ||||
-rw-r--r-- | completions/zsh/_swaylock | 40 | ||||
-rw-r--r-- | completions/zsh/_swaymsg | 12 | ||||
-rw-r--r-- | include/sway/commands.h | 1 | ||||
-rw-r--r-- | include/sway/config.h | 2 | ||||
-rw-r--r-- | include/sway/input/seat.h | 4 | ||||
-rw-r--r-- | sway/commands.c | 1 | ||||
-rw-r--r-- | sway/commands/tiling_drag_threshold.c | 22 | ||||
-rw-r--r-- | sway/config.c | 1 | ||||
-rw-r--r-- | sway/input/cursor.c | 40 | ||||
-rw-r--r-- | sway/input/seat.c | 11 | ||||
-rw-r--r-- | sway/meson.build | 1 | ||||
-rw-r--r-- | sway/sway-output.5.scd | 12 | ||||
-rw-r--r-- | sway/sway.5.scd | 21 |
27 files changed, 217 insertions, 62 deletions
diff --git a/README.bg.md b/README.bg.md index efc99f15..87a15bed 100644 --- a/README.bg.md +++ b/README.bg.md | |||
@@ -1,8 +1,9 @@ | |||
1 | # sway | 1 | # sway |
2 | 2 | ||
3 | "**S**irCmpwn's **Way**land compositor" е в процес на разработка, съвместим с i3, [Wayland](http://wayland.freedesktop.org/) композитор. | 3 | Sway е в процес на разработка, съвместим с i3, |
4 | Прочетете [FAQ](https://github.com/swaywm/sway/wiki). Присъединете се в | 4 | [Wayland](http://wayland.freedesktop.org/) композитор. Прочетете |
5 | [IRC канала](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway на | 5 | [FAQ](https://github.com/swaywm/sway/wiki). Присъединете се в [IRC |
6 | канала](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway на | ||
6 | irc.freenode.net). | 7 | irc.freenode.net). |
7 | 8 | ||
8 | [![](https://sr.ht/ICd5.png)](https://sr.ht/ICd5.png) | 9 | [![](https://sr.ht/ICd5.png)](https://sr.ht/ICd5.png) |
diff --git a/README.de.md b/README.de.md index 2c2e14e8..bf92b196 100644 --- a/README.de.md +++ b/README.de.md | |||
@@ -3,10 +3,11 @@ | |||
3 | Der Fortschritt dieser Übersetzung kann [hier](https://github.com/swaywm/sway/issues/1318) | 3 | Der Fortschritt dieser Übersetzung kann [hier](https://github.com/swaywm/sway/issues/1318) |
4 | eingesehen werden. | 4 | eingesehen werden. |
5 | 5 | ||
6 | "**S**irCmpwn's **Way**land compositor" ist ein i3-kompatibler | 6 | Sway ist ein i3-kompatibler |
7 | [Wayland](http://wayland.freedesktop.org/)-Kompositor. Lies die | 7 | [Wayland](http://wayland.freedesktop.org/)-Kompositor. Lies die |
8 | [FAQ](https://github.com/swaywm/sway/wiki#faq). Tritt dem | 8 | [FAQ](https://github.com/swaywm/sway/wiki#faq). Tritt dem |
9 | [IRC-Channel](http://webchat.freenode.net/?channels=sway&uio=d4) bei (#sway in irc.freenode.net). | 9 | [IRC-Channel](http://webchat.freenode.net/?channels=sway&uio=d4) bei (#sway in |
10 | irc.freenode.net). | ||
10 | 11 | ||
11 | [![](https://sr.ht/ICd5.png)](https://sr.ht/ICd5.png) | 12 | [![](https://sr.ht/ICd5.png)](https://sr.ht/ICd5.png) |
12 | 13 | ||
diff --git a/README.el.md b/README.el.md index 3c9d65c9..79acd422 100644 --- a/README.el.md +++ b/README.el.md | |||
@@ -1,6 +1,6 @@ | |||
1 | # sway | 1 | # sway |
2 | 2 | ||
3 | "Ο Sway (**S**irCmpwn's **Way**land) είναι ένας **υπό ανάπτυξη** [Wayland](http://wayland.freedesktop.org/) διαχειριστής παραθύρων συμβατός με τον αντίστοιχο διαχειριστή παραθύρων i3 για τον X11. | 3 | Sway είναι ένας **υπό ανάπτυξη** [Wayland](http://wayland.freedesktop.org/) διαχειριστής παραθύρων συμβατός με τον αντίστοιχο διαχειριστή παραθύρων i3 για τον X11. |
4 | Διαβάστε τις [Συνήθεις Ερωτήσεις](https://github.com/swaywm/sway/wiki). Συνδεθείτε στο [κανάλι μας στο IRC](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway στο | 4 | Διαβάστε τις [Συνήθεις Ερωτήσεις](https://github.com/swaywm/sway/wiki). Συνδεθείτε στο [κανάλι μας στο IRC](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway στο |
5 | irc.freenode.net). | 5 | irc.freenode.net). |
6 | 6 | ||
diff --git a/README.fr.md b/README.fr.md index 935d288f..8ad4d3b6 100644 --- a/README.fr.md +++ b/README.fr.md | |||
@@ -1,9 +1,9 @@ | |||
1 | # sway | 1 | # sway |
2 | 2 | ||
3 | "**S**irCmpwn's **Way**land compositor" est un compositeur [Wayland](http://wayland.freedesktop.org/) | 3 | Sway est un compositeur [Wayland](http://wayland.freedesktop.org/) compatible |
4 | compatible avec i3, **en cours de développement**. | 4 | avec i3, **en cours de développement**. Lisez la |
5 | Lisez la [FAQ](https://github.com/swaywm/sway/wiki). Rejoignez le | 5 | [FAQ](https://github.com/swaywm/sway/wiki). Rejoignez le [canal |
6 | [canal IRC](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway sur | 6 | IRC](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway sur |
7 | irc.freenode.net). | 7 | irc.freenode.net). |
8 | 8 | ||
9 | [![](https://sr.ht/ICd5.png)](https://sr.ht/ICd5.png) | 9 | [![](https://sr.ht/ICd5.png)](https://sr.ht/ICd5.png) |
diff --git a/README.it.md b/README.it.md index af986844..8a83bc78 100644 --- a/README.it.md +++ b/README.it.md | |||
@@ -1,10 +1,9 @@ | |||
1 | # sway | 1 | # sway |
2 | 2 | ||
3 | "**S**irCmpwn's **Way**land compositor" è un compositor | 3 | Sway è un compositor [Wayland](http://wayland.freedesktop.org/) **in via di |
4 | [Wayland](http://wayland.freedesktop.org/) **in via di sviluppo** | 4 | sviluppo** compatibile con i3. Leggi le [FAQ (in |
5 | compatibile con i3. | 5 | Inglese)](https://github.com/swaywm/sway/wiki). Unisciti al [canale IRC (in |
6 | Leggi le [FAQ (in Inglese)](https://github.com/swaywm/sway/wiki). Unisciti al | 6 | Inglese)](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway on |
7 | [canale IRC (in Inglese)](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway on | ||
8 | irc.freenode.net). | 7 | irc.freenode.net). |
9 | 8 | ||
10 | [![](https://sr.ht/ICd5.png)](https://sr.ht/ICd5.png) | 9 | [![](https://sr.ht/ICd5.png)](https://sr.ht/ICd5.png) |
diff --git a/README.ja.md b/README.ja.md index b9e541f0..d82e78b2 100644 --- a/README.ja.md +++ b/README.ja.md | |||
@@ -1,7 +1,6 @@ | |||
1 | # sway | 1 | # sway |
2 | 2 | ||
3 | "**S**irCmpwn's **Way**land compositor"は**開発中**の | 3 | Swayは**開発中**のi3互換な[Wayland](http://wayland.freedesktop.org/)コンポジタです。 |
4 | i3互換な[Wayland](http://wayland.freedesktop.org/)コンポジタです。 | ||
5 | [FAQ](https://github.com/swaywm/sway/wiki)も合わせてご覧ください。 | 4 | [FAQ](https://github.com/swaywm/sway/wiki)も合わせてご覧ください。 |
6 | [IRC チャンネル](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway on irc.freenode.net)もあります。 | 5 | [IRC チャンネル](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway on irc.freenode.net)もあります。 |
7 | 6 | ||
@@ -3,10 +3,10 @@ | |||
3 | [**English**](https://github.com/swaywm/sway/blob/master/README.md#sway--) - [日本語](https://github.com/swaywm/sway/blob/master/README.ja.md#sway--) - [Deutsch](https://github.com/swaywm/sway/blob/master/README.de.md#sway--) - [Ελληνικά](https://github.com/swaywm/sway/blob/master/README.el.md#sway--) - [Français](https://github.com/swaywm/sway/blob/master/README.fr.md#sway--) - [Українська](https://github.com/swaywm/sway/blob/master/README.uk.md#sway--) - [Italiano](https://github.com/swaywm/sway/blob/master/README.it.md#sway--) - [Português](https://github.com/swaywm/sway/blob/master/README.pt.md#sway--) - | 3 | [**English**](https://github.com/swaywm/sway/blob/master/README.md#sway--) - [日本語](https://github.com/swaywm/sway/blob/master/README.ja.md#sway--) - [Deutsch](https://github.com/swaywm/sway/blob/master/README.de.md#sway--) - [Ελληνικά](https://github.com/swaywm/sway/blob/master/README.el.md#sway--) - [Français](https://github.com/swaywm/sway/blob/master/README.fr.md#sway--) - [Українська](https://github.com/swaywm/sway/blob/master/README.uk.md#sway--) - [Italiano](https://github.com/swaywm/sway/blob/master/README.it.md#sway--) - [Português](https://github.com/swaywm/sway/blob/master/README.pt.md#sway--) - |
4 | [Русский](https://github.com/swaywm/sway/blob/master/README.ru.md#sway--) - [Български](https://github.com/swaywm/sway/blob/master/README.bg.md#sway--) | 4 | [Русский](https://github.com/swaywm/sway/blob/master/README.ru.md#sway--) - [Български](https://github.com/swaywm/sway/blob/master/README.bg.md#sway--) |
5 | 5 | ||
6 | "**S**irCmpwn's **Way**land compositor" is a **work in progress** | 6 | sway is a **work in progress** i3-compatible |
7 | i3-compatible [Wayland](http://wayland.freedesktop.org/) compositor. | 7 | [Wayland](http://wayland.freedesktop.org/) compositor. Read the |
8 | Read the [FAQ](https://github.com/swaywm/sway/wiki). Join the | 8 | [FAQ](https://github.com/swaywm/sway/wiki). Join the [IRC |
9 | [IRC channel](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway on | 9 | channel](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway on |
10 | irc.freenode.net). | 10 | irc.freenode.net). |
11 | 11 | ||
12 | If you'd like to support sway development, please contribute to [SirCmpwn's | 12 | If you'd like to support sway development, please contribute to [SirCmpwn's |
diff --git a/README.pt.md b/README.pt.md index 91e709c1..8cdfa548 100644 --- a/README.pt.md +++ b/README.pt.md | |||
@@ -1,8 +1,8 @@ | |||
1 | # sway | 1 | # sway |
2 | 2 | ||
3 | "**S**irCmpwn's **Way**land compositor" é um compositor [Wayland](http://wayland.freedesktop.org/) | 3 | Sway é um compositor [Wayland](http://wayland.freedesktop.org/) compatível com o |
4 | compatível com o i3. Leia o [FAQ](https://github.com/swaywm/sway/wiki). Participe do | 4 | i3. Leia o [FAQ](https://github.com/swaywm/sway/wiki). Participe do [canal |
5 | [canal IRC](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway no | 5 | IRC](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway no |
6 | irc.freenode.net). | 6 | irc.freenode.net). |
7 | 7 | ||
8 | [![](https://sr.ht/ICd5.png)](https://sr.ht/ICd5.png) | 8 | [![](https://sr.ht/ICd5.png)](https://sr.ht/ICd5.png) |
diff --git a/README.ru.md b/README.ru.md index 4b34dc2d..255e36aa 100644 --- a/README.ru.md +++ b/README.ru.md | |||
@@ -1,9 +1,9 @@ | |||
1 | # sway | 1 | # sway |
2 | 2 | ||
3 | "**S**irCmpwn's **Way**land compositor" на данный момент **(в разработке)** | 3 | Sway на данный момент **(в разработке)** i3-совместимый |
4 | i3-совместимый [Wayland](http://wayland.freedesktop.org/) композитор. | 4 | [Wayland](http://wayland.freedesktop.org/) композитор. Прочитайте |
5 | Прочитайте [FAQ](https://github.com/swaywm/sway/wiki). Присоединяйтесь к | 5 | [FAQ](https://github.com/swaywm/sway/wiki). Присоединяйтесь к [IRC |
6 | [IRC каналу](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway на | 6 | каналу](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway на |
7 | irc.freenode.net). | 7 | irc.freenode.net). |
8 | 8 | ||
9 | [![](https://sr.ht/ICd5.png)](https://sr.ht/ICd5.png) | 9 | [![](https://sr.ht/ICd5.png)](https://sr.ht/ICd5.png) |
diff --git a/README.uk.md b/README.uk.md index 9ae7425a..5e9345b3 100644 --- a/README.uk.md +++ b/README.uk.md | |||
@@ -1,10 +1,10 @@ | |||
1 | # sway | 1 | # sway |
2 | 2 | ||
3 | **Sway** ("**S**irCmpwn's **Way**land compositor") це сумісний з i3 композитор | 3 | **Sway** це сумісний з i3 композитор [Wayland](http://wayland.freedesktop.org/) |
4 | [Wayland](http://wayland.freedesktop.org/) (**у стані розробки**). | 4 | (**у стані розробки**). Ознайомтесь з |
5 | Ознайомтесь з [ЧаПами](https://github.com/swaywm/sway/wiki). | 5 | [ЧаПами](https://github.com/swaywm/sway/wiki). Приєднуйтесь до [спільноти в |
6 | Приєднуйтесь до [спільноти в IRC](http://webchat.freenode.net/?channels=sway&uio=d4) | 6 | IRC](http://webchat.freenode.net/?channels=sway&uio=d4) (#sway на |
7 | (#sway на irc.freenode.net). | 7 | irc.freenode.net). |
8 | 8 | ||
9 | [![](https://sr.ht/ICd5.png)](https://sr.ht/ICd5.png) | 9 | [![](https://sr.ht/ICd5.png)](https://sr.ht/ICd5.png) |
10 | 10 | ||
diff --git a/completions/bash/swaybar b/completions/bash/swaybar index 504588f1..1e085c65 100644 --- a/completions/bash/swaybar +++ b/completions/bash/swaybar | |||
@@ -27,7 +27,7 @@ _swaybar() | |||
27 | return | 27 | return |
28 | ;; | 28 | ;; |
29 | -b|--bar_id) | 29 | -b|--bar_id) |
30 | bars=($(swaymsg -t get_bar_config | sed -e '/^\[/,/\]$/{//d;s/^ *"\(.*\)",\?.*$/\1/}')) | 30 | bars=($(swaymsg -t get_bar_config | jq -r '.[]')) |
31 | COMPREPLY=($(compgen -W "${bars[*]}" -- "$cur")) | 31 | COMPREPLY=($(compgen -W "${bars[*]}" -- "$cur")) |
32 | return | 32 | return |
33 | ;; | 33 | ;; |
diff --git a/completions/zsh/_sway b/completions/zsh/_sway index 05112002..a7f55cc5 100644 --- a/completions/zsh/_sway +++ b/completions/zsh/_sway | |||
@@ -13,8 +13,8 @@ | |||
13 | # | 13 | # |
14 | # ------------------------------- | 14 | # ------------------------------- |
15 | _arguments -s \ | 15 | _arguments -s \ |
16 | '(-v --version)'{-v,--version}'[shows version]' \ | 16 | '(-v --version)'{-v,--version}'[Show the version number and quit]' \ |
17 | '(-h --help)'{-h,--help}'[shows help message]' \ | 17 | '(-h --help)'{-h,--help}'[Show help message and quit]' \ |
18 | '(-c --config)'{-c,--config}'[Specify a config file]:files:_files' \ | 18 | '(-c --config)'{-c,--config}'[Specify a config file]:files:_files' \ |
19 | '(-C --validate)'{-C,--validate}'[Check validity of the config file, then exit]' \ | 19 | '(-C --validate)'{-C,--validate}'[Check validity of the config file, then exit]' \ |
20 | '(-d --debug)'{-d,--debug}'[Enables full logging, including debug information]' \ | 20 | '(-d --debug)'{-d,--debug}'[Enables full logging, including debug information]' \ |
diff --git a/completions/zsh/_swaybar b/completions/zsh/_swaybar new file mode 100644 index 00000000..af2cee95 --- /dev/null +++ b/completions/zsh/_swaybar | |||
@@ -0,0 +1,13 @@ | |||
1 | #compdef swaybar | ||
2 | # | ||
3 | # Completion script for swaybar | ||
4 | # | ||
5 | |||
6 | local bars=($(swaymsg -t get_bar_config | jq -r '.[]')) | ||
7 | |||
8 | _arguments -s \ | ||
9 | '(-h --help)'{-h,--help}'[Show help message and quit]' \ | ||
10 | '(-v --version)'{-v,--version}'[Show version and quit]' \ | ||
11 | '(-s --socket)'{-s,--socket}'[Connect to sway via socket]:filename:_files' \ | ||
12 | '(-b --bar_id)'{-b,--bar-id}'[Bar ID for which to get the configuration]:filename:($bars)'\ | ||
13 | '(-d --debug)'{-d,--debug}'[Enable debugging]' | ||
diff --git a/completions/zsh/_swayidle b/completions/zsh/_swayidle new file mode 100644 index 00000000..b419bc2c --- /dev/null +++ b/completions/zsh/_swayidle | |||
@@ -0,0 +1,22 @@ | |||
1 | #compdef swayidle | ||
2 | # | ||
3 | # Completion script for swayidle | ||
4 | # | ||
5 | |||
6 | local events=('timeout:Execute timeout command if there is no activity for timeout seconds' | ||
7 | 'before-sleep:Execute before-sleep command before sleep') | ||
8 | local resume=('resume:Execute command when there is activity again') | ||
9 | |||
10 | if (($#words <= 2)); then | ||
11 | _arguments -C \ | ||
12 | '(-h --help)'{-h,--help}'[Show help message and quit]' \ | ||
13 | '(-d)'-d'[Enable debug output]' | ||
14 | _describe -t "events" 'swayidle' events | ||
15 | |||
16 | elif [[ "$words[-3]" == before-sleep || "$words[-3]" == resume ]]; then | ||
17 | _describe -t "events" 'swayidle' events | ||
18 | |||
19 | elif [[ "$words[-4]" == timeout ]]; then | ||
20 | _describe -t "events" 'swayidle' events | ||
21 | _describe -t "resume" 'swayidle' resume | ||
22 | fi | ||
diff --git a/completions/zsh/_swaylock b/completions/zsh/_swaylock index 8fb4834c..9bc84ec9 100644 --- a/completions/zsh/_swaylock +++ b/completions/zsh/_swaylock | |||
@@ -4,11 +4,37 @@ | |||
4 | # | 4 | # |
5 | 5 | ||
6 | _arguments -s \ | 6 | _arguments -s \ |
7 | '(-v --version)'{-v,--version}'[Show the version number and quit]' \ | 7 | '(-C --config)'{-C,--config}'[Path to the config file]:filename:_files' \ |
8 | '(-h --help)'{-h,--help}'[Show help message and quit]' \ | 8 | '(-c --color)'{-c,--color}'[Turn the screen into the given color instead of white]:color:' \ |
9 | '(-f --daemonize)'{-f,--daemonize}'[Detach from the controlling terminal]' \ | 9 | '(-e --ignore-empty-password)'{-e,--ignore-empty-password}'[When an empty password is provided, do not validate it]' \ |
10 | '(-c --color)'{-c,--color}'[Specify a color (rrggbb)]' \ | 10 | '(-f --daemonize)'{-f,--daemonize}'[Detach from the controlling terminal after locking]' \ |
11 | '(-i --image)'{-i,--image}'[Display an image]:files:_files' \ | 11 | '(-h --help)'{-h,--help}'[Show help message and quit]' \ |
12 | '(-s --scaling)'{-s,--scaling}'[Scaling mode]:mode:(stretch fill fit center tile)' \ | 12 | '(-i --image)'{-i,--image}'[Display an image]:filename:_files' \ |
13 | '(-s --scaling)'{-s,--scaling}'[Scaling mode]:mode:(stretch fill fit center tile)' \ | ||
14 | '(-t --tiling)'{-t,--tiling}'[Same as --scaling=tile]' \ | ||
13 | '(-u --no-unlock-indicator)'{-u,--no-unlock-indicator}'[Disable the unlock indicator]' \ | 15 | '(-u --no-unlock-indicator)'{-u,--no-unlock-indicator}'[Disable the unlock indicator]' \ |
14 | '(--socket)'--socket'[Use the specified socket path.]:files:_files' \ | 16 | '(-v --version)'{-v,--version}'[Show the version number and quit]' \ |
17 | '(--bs-hl-color)'--bs-hl-color'[Sets the color of backspace highlights segments]:color:' \ | ||
18 | '(--font)'--font'[Sets the font of the text]:font:' \ | ||
19 | '(--indicator-radius)'--indicator-radius'[Sets the indicator radius]:radius:' \ | ||
20 | '(--indicator-thickness)'--indicator-thickness'[Sets the indicator thickness]:thickness:' \ | ||
21 | '(--inside-color)'--inside-color'[Sets the color of the inside of the indicator]:color:' \ | ||
22 | '(--inside-clear-color)'--inside-clear-color'[Sets the color of the inside of the indicator when cleared]:color:' \ | ||
23 | '(--inside-clear-color)'--inside-clear-color'[Sets the color of the inside of the indicator when verifying]:color:' \ | ||
24 | '(--inside-wrong-color)'--inside-wrong-color'[Sets the color of the inside of the indicator when invalid]:color:' \ | ||
25 | '(--key-hl-color)'--key-hl-color'[Sets the color of the key press highlight segments]:color:' \ | ||
26 | '(--line-color)'--line-color'[Sets the color of the line between the inside and ring]:color:' \ | ||
27 | '(--line-clear-color)'--line-clear-color'[Sets the color of the line between the inside and ring when cleared]:color:' \ | ||
28 | '(--line-ver-color)'--line-ver-color'[Sets the color of the line between the inside and ring when verifying]:color:' \ | ||
29 | '(--line-wrong-color)'--line-wrong-color'[Sets the color of the line between the inside and ring when invalid]:color:' \ | ||
30 | '(-n --line-uses-inside)'{-n,--line-uses-inside}'[Use the inside color for the line between the inside and ring]' \ | ||
31 | '(-r --line-uses-ring)'{-r,--line--uses-ring}'[Use the ring color for the line between the inside and ring]' \ | ||
32 | '(--ring-color)'--ring-color'[Sets the color of the ring of the indicator]:color:' \ | ||
33 | '(--ring-clear-color)'--ring-clear-color'[Sets the color of the ring of the indicator when cleared]:color:' \ | ||
34 | '(--ring-ver-color)'--ring-ver-color'[Sets the color of the ring of the indicator when verifying]:color:' \ | ||
35 | '(--ring-wrong-color)'--ring-wrong-color'[Sets the color of the ring of the indicator when invalid]:color:' \ | ||
36 | '(--separator-color)'--separator-color'[Sets the color of the lines that separate highlight segments]:color:' \ | ||
37 | '(--text-color)'--text-color'[Sets the color of the text]:color:' \ | ||
38 | '(--text-clear-color)'--text-clear-color'[Sets the color of the text when cleared]:color:' \ | ||
39 | '(--text-ver-color)'--text-ver-color'[Sets the color of the text when verifying]:color:' \ | ||
40 | '(--text-wrong-color)'--text-wrong-color'[Sets the color of the text when invalid]:color:' \ No newline at end of file | ||
diff --git a/completions/zsh/_swaymsg b/completions/zsh/_swaymsg index a7a1c8e0..0ba45d4a 100644 --- a/completions/zsh/_swaymsg +++ b/completions/zsh/_swaymsg | |||
@@ -28,8 +28,10 @@ types=( | |||
28 | ) | 28 | ) |
29 | 29 | ||
30 | _arguments -s \ | 30 | _arguments -s \ |
31 | '(-v --version)'{-v,--version}'[Print the version (of swaymsg) and quit]' \ | 31 | '(-v --version)'{-v,--version}'[Show the version number and quit]' \ |
32 | '(-h --help)'{-h,--help}'[Shows help message]' \ | 32 | '(-m --monitor)'{-m,--monitor}'[Monitor until killed (-t SUBSCRIBE only)]' \ |
33 | '(-q --quiet)'{-q,--quiet}'[Sends the IPC message but does not print the response from sway]' \ | 33 | '(-h --help)'{-h,--help}'[Show help message and quit]' \ |
34 | '(-s --socket)'{-s,--socket}'[Use the specified socket path.]:files:_files' \ | 34 | '(-q --quiet)'{-q,--quiet}'[Be quiet]' \ |
35 | '(-t --type)'{-t,--type}'[Specify the type of IPC message.]:type:{_describe "type" types}' | 35 | '(-r --raw)'{-r,--raw}'[Use raw output even if using a tty]' \ |
36 | '(-s --socket)'{-s,--socket}'[Use the specified socket path]:files:_files' \ | ||
37 | '(-t --type)'{-t,--type}'[Specify the message type]:type:{_describe "type" types}' | ||
diff --git a/include/sway/commands.h b/include/sway/commands.h index 0e2d7931..7d0ff838 100644 --- a/include/sway/commands.h +++ b/include/sway/commands.h | |||
@@ -172,6 +172,7 @@ sway_cmd cmd_swaybg_command; | |||
172 | sway_cmd cmd_swaynag_command; | 172 | sway_cmd cmd_swaynag_command; |
173 | sway_cmd cmd_swap; | 173 | sway_cmd cmd_swap; |
174 | sway_cmd cmd_tiling_drag; | 174 | sway_cmd cmd_tiling_drag; |
175 | sway_cmd cmd_tiling_drag_threshold; | ||
175 | sway_cmd cmd_title_align; | 176 | sway_cmd cmd_title_align; |
176 | sway_cmd cmd_title_format; | 177 | sway_cmd cmd_title_format; |
177 | sway_cmd cmd_titlebar_border_thickness; | 178 | sway_cmd cmd_titlebar_border_thickness; |
diff --git a/include/sway/config.h b/include/sway/config.h index f604b054..ebf16e6a 100644 --- a/include/sway/config.h +++ b/include/sway/config.h | |||
@@ -426,7 +426,9 @@ struct sway_config { | |||
426 | bool auto_back_and_forth; | 426 | bool auto_back_and_forth; |
427 | bool show_marks; | 427 | bool show_marks; |
428 | enum alignment title_align; | 428 | enum alignment title_align; |
429 | |||
429 | bool tiling_drag; | 430 | bool tiling_drag; |
431 | int tiling_drag_threshold; | ||
430 | 432 | ||
431 | bool smart_gaps; | 433 | bool smart_gaps; |
432 | int gaps_inner; | 434 | int gaps_inner; |
diff --git a/include/sway/input/seat.h b/include/sway/input/seat.h index d665c86e..a3c20346 100644 --- a/include/sway/input/seat.h +++ b/include/sway/input/seat.h | |||
@@ -39,6 +39,7 @@ enum sway_seat_operation { | |||
39 | OP_NONE, | 39 | OP_NONE, |
40 | OP_DOWN, | 40 | OP_DOWN, |
41 | OP_MOVE_FLOATING, | 41 | OP_MOVE_FLOATING, |
42 | OP_MOVE_TILING_THRESHOLD, | ||
42 | OP_MOVE_TILING, | 43 | OP_MOVE_TILING, |
43 | OP_RESIZE_FLOATING, | 44 | OP_RESIZE_FLOATING, |
44 | OP_RESIZE_TILING, | 45 | OP_RESIZE_TILING, |
@@ -186,6 +187,9 @@ void seat_begin_down(struct sway_seat *seat, struct sway_container *con, | |||
186 | void seat_begin_move_floating(struct sway_seat *seat, | 187 | void seat_begin_move_floating(struct sway_seat *seat, |
187 | struct sway_container *con, uint32_t button); | 188 | struct sway_container *con, uint32_t button); |
188 | 189 | ||
190 | void seat_begin_move_tiling_threshold(struct sway_seat *seat, | ||
191 | struct sway_container *con, uint32_t button); | ||
192 | |||
189 | void seat_begin_move_tiling(struct sway_seat *seat, | 193 | void seat_begin_move_tiling(struct sway_seat *seat, |
190 | struct sway_container *con, uint32_t button); | 194 | struct sway_container *con, uint32_t button); |
191 | 195 | ||
diff --git a/sway/commands.c b/sway/commands.c index 927434bc..0883b57b 100644 --- a/sway/commands.c +++ b/sway/commands.c | |||
@@ -87,6 +87,7 @@ static struct cmd_handler handlers[] = { | |||
87 | { "smart_borders", cmd_smart_borders }, | 87 | { "smart_borders", cmd_smart_borders }, |
88 | { "smart_gaps", cmd_smart_gaps }, | 88 | { "smart_gaps", cmd_smart_gaps }, |
89 | { "tiling_drag", cmd_tiling_drag }, | 89 | { "tiling_drag", cmd_tiling_drag }, |
90 | { "tiling_drag_threshold", cmd_tiling_drag_threshold }, | ||
90 | { "title_align", cmd_title_align }, | 91 | { "title_align", cmd_title_align }, |
91 | { "titlebar_border_thickness", cmd_titlebar_border_thickness }, | 92 | { "titlebar_border_thickness", cmd_titlebar_border_thickness }, |
92 | { "titlebar_padding", cmd_titlebar_padding }, | 93 | { "titlebar_padding", cmd_titlebar_padding }, |
diff --git a/sway/commands/tiling_drag_threshold.c b/sway/commands/tiling_drag_threshold.c new file mode 100644 index 00000000..6b0531c3 --- /dev/null +++ b/sway/commands/tiling_drag_threshold.c | |||
@@ -0,0 +1,22 @@ | |||
1 | #include <string.h> | ||
2 | #include "sway/commands.h" | ||
3 | #include "sway/config.h" | ||
4 | #include "log.h" | ||
5 | |||
6 | struct cmd_results *cmd_tiling_drag_threshold(int argc, char **argv) { | ||
7 | struct cmd_results *error = NULL; | ||
8 | if ((error = checkarg(argc, "tiling_drag_threshold", EXPECTED_EQUAL_TO, 1))) { | ||
9 | return error; | ||
10 | } | ||
11 | |||
12 | char *inv; | ||
13 | int value = strtol(argv[0], &inv, 10); | ||
14 | if (*inv != '\0' || value < 0) { | ||
15 | return cmd_results_new(CMD_INVALID, "tiling_drag_threshold", | ||
16 | "Invalid threshold specified"); | ||
17 | } | ||
18 | |||
19 | config->tiling_drag_threshold = value; | ||
20 | |||
21 | return cmd_results_new(CMD_SUCCESS, NULL, NULL); | ||
22 | } | ||
diff --git a/sway/config.c b/sway/config.c index bb7f796d..5d631b7e 100644 --- a/sway/config.c +++ b/sway/config.c | |||
@@ -233,6 +233,7 @@ static void config_defaults(struct sway_config *config) { | |||
233 | config->show_marks = true; | 233 | config->show_marks = true; |
234 | config->title_align = ALIGN_LEFT; | 234 | config->title_align = ALIGN_LEFT; |
235 | config->tiling_drag = true; | 235 | config->tiling_drag = true; |
236 | config->tiling_drag_threshold = 9; | ||
236 | 237 | ||
237 | config->smart_gaps = false; | 238 | config->smart_gaps = false; |
238 | config->gaps_inner = 0; | 239 | config->gaps_inner = 0; |
diff --git a/sway/input/cursor.c b/sway/input/cursor.c index f8302ddf..66a9e435 100644 --- a/sway/input/cursor.c +++ b/sway/input/cursor.c | |||
@@ -384,6 +384,30 @@ static void handle_move_tiling_motion(struct sway_seat *seat, | |||
384 | desktop_damage_box(&seat->op_drop_box); | 384 | desktop_damage_box(&seat->op_drop_box); |
385 | } | 385 | } |
386 | 386 | ||
387 | static void handle_move_tiling_threshold_motion(struct sway_seat *seat, | ||
388 | struct sway_cursor *cursor) { | ||
389 | double cx = seat->cursor->cursor->x; | ||
390 | double cy = seat->cursor->cursor->y; | ||
391 | double sx = seat->op_ref_lx; | ||
392 | double sy = seat->op_ref_ly; | ||
393 | |||
394 | // Get the scaled threshold for the output. Even if the operation goes | ||
395 | // across multiple outputs of varying scales, just use the scale for the | ||
396 | // output that the cursor is currently on for simplicity. | ||
397 | struct wlr_output *wlr_output = wlr_output_layout_output_at( | ||
398 | root->output_layout, cx, cy); | ||
399 | double output_scale = wlr_output ? wlr_output->scale : 1; | ||
400 | double threshold = config->tiling_drag_threshold * output_scale; | ||
401 | threshold *= threshold; | ||
402 | |||
403 | // If the threshold has been exceeded, start the actual drag | ||
404 | if ((cx - sx) * (cx - sx) + (cy - sy) * (cy - sy) > threshold) { | ||
405 | seat->operation = OP_MOVE_TILING; | ||
406 | cursor_set_image(cursor, "grab", NULL); | ||
407 | handle_move_tiling_motion(seat, cursor); | ||
408 | } | ||
409 | } | ||
410 | |||
387 | static void calculate_floating_constraints(struct sway_container *con, | 411 | static void calculate_floating_constraints(struct sway_container *con, |
388 | int *min_width, int *max_width, int *min_height, int *max_height) { | 412 | int *min_width, int *max_width, int *min_height, int *max_height) { |
389 | if (config->floating_minimum_width == -1) { // no minimum | 413 | if (config->floating_minimum_width == -1) { // no minimum |
@@ -640,6 +664,9 @@ void cursor_send_pointer_motion(struct sway_cursor *cursor, | |||
640 | case OP_MOVE_FLOATING: | 664 | case OP_MOVE_FLOATING: |
641 | handle_move_floating_motion(seat, cursor); | 665 | handle_move_floating_motion(seat, cursor); |
642 | break; | 666 | break; |
667 | case OP_MOVE_TILING_THRESHOLD: | ||
668 | handle_move_tiling_threshold_motion(seat, cursor); | ||
669 | break; | ||
643 | case OP_MOVE_TILING: | 670 | case OP_MOVE_TILING: |
644 | handle_move_tiling_motion(seat, cursor); | 671 | handle_move_tiling_motion(seat, cursor); |
645 | break; | 672 | break; |
@@ -984,12 +1011,21 @@ void dispatch_cursor_button(struct sway_cursor *cursor, | |||
984 | if (config->tiling_drag && (mod_pressed || on_titlebar) && | 1011 | if (config->tiling_drag && (mod_pressed || on_titlebar) && |
985 | state == WLR_BUTTON_PRESSED && !is_floating_or_child && | 1012 | state == WLR_BUTTON_PRESSED && !is_floating_or_child && |
986 | cont && !cont->is_fullscreen) { | 1013 | cont && !cont->is_fullscreen) { |
987 | if (on_titlebar) { | 1014 | struct sway_container *focus = seat_get_focused_container(seat); |
1015 | bool focused = focus == cont || container_has_ancestor(focus, cont); | ||
1016 | if (on_titlebar && !focused) { | ||
988 | node = seat_get_focus_inactive(seat, &cont->node); | 1017 | node = seat_get_focus_inactive(seat, &cont->node); |
989 | seat_set_focus(seat, node); | 1018 | seat_set_focus(seat, node); |
990 | } | 1019 | } |
1020 | |||
991 | seat_pointer_notify_button(seat, time_msec, button, state); | 1021 | seat_pointer_notify_button(seat, time_msec, button, state); |
992 | seat_begin_move_tiling(seat, cont, button); | 1022 | |
1023 | // If moving a container by it's title bar, use a threshold for the drag | ||
1024 | if (!mod_pressed && config->tiling_drag_threshold > 0) { | ||
1025 | seat_begin_move_tiling_threshold(seat, cont, button); | ||
1026 | } else { | ||
1027 | seat_begin_move_tiling(seat, cont, button); | ||
1028 | } | ||
993 | return; | 1029 | return; |
994 | } | 1030 | } |
995 | 1031 | ||
diff --git a/sway/input/seat.c b/sway/input/seat.c index fa82c9ce..9422713d 100644 --- a/sway/input/seat.c +++ b/sway/input/seat.c | |||
@@ -1052,6 +1052,17 @@ void seat_begin_move_floating(struct sway_seat *seat, | |||
1052 | cursor_set_image(seat->cursor, "grab", NULL); | 1052 | cursor_set_image(seat->cursor, "grab", NULL); |
1053 | } | 1053 | } |
1054 | 1054 | ||
1055 | void seat_begin_move_tiling_threshold(struct sway_seat *seat, | ||
1056 | struct sway_container *con, uint32_t button) { | ||
1057 | seat->operation = OP_MOVE_TILING_THRESHOLD; | ||
1058 | seat->op_container = con; | ||
1059 | seat->op_button = button; | ||
1060 | seat->op_target_node = NULL; | ||
1061 | seat->op_target_edge = 0; | ||
1062 | seat->op_ref_lx = seat->cursor->cursor->x; | ||
1063 | seat->op_ref_ly = seat->cursor->cursor->y; | ||
1064 | } | ||
1065 | |||
1055 | void seat_begin_move_tiling(struct sway_seat *seat, | 1066 | void seat_begin_move_tiling(struct sway_seat *seat, |
1056 | struct sway_container *con, uint32_t button) { | 1067 | struct sway_container *con, uint32_t button) { |
1057 | seat->operation = OP_MOVE_TILING; | 1068 | seat->operation = OP_MOVE_TILING; |
diff --git a/sway/meson.build b/sway/meson.build index 7f739287..98676ce0 100644 --- a/sway/meson.build +++ b/sway/meson.build | |||
@@ -89,6 +89,7 @@ sway_sources = files( | |||
89 | 'commands/swaynag_command.c', | 89 | 'commands/swaynag_command.c', |
90 | 'commands/swap.c', | 90 | 'commands/swap.c', |
91 | 'commands/tiling_drag.c', | 91 | 'commands/tiling_drag.c', |
92 | 'commands/tiling_drag_threshold.c', | ||
92 | 'commands/title_align.c', | 93 | 'commands/title_align.c', |
93 | 'commands/title_format.c', | 94 | 'commands/title_format.c', |
94 | 'commands/titlebar_border_thickness.c', | 95 | 'commands/titlebar_border_thickness.c', |
diff --git a/sway/sway-output.5.scd b/sway/sway-output.5.scd index 9940d8e8..28524478 100644 --- a/sway/sway-output.5.scd +++ b/sway/sway-output.5.scd | |||
@@ -38,17 +38,20 @@ must be separated by one space. For example: | |||
38 | Places the specified output at the specific position in the global | 38 | Places the specified output at the specific position in the global |
39 | coordinate space. If scaling is active, it has to be considered when | 39 | coordinate space. If scaling is active, it has to be considered when |
40 | positioning. For example, if the scaling factor for the left output is 2, | 40 | positioning. For example, if the scaling factor for the left output is 2, |
41 | the relative position for the right output has to be divided by 2. | 41 | the relative position for the right output has to be divided by 2. The |
42 | reference point is the top left corner so if you want the bottoms aligned | ||
43 | this has to be considered as well. | ||
42 | 44 | ||
43 | Example: | 45 | Example: |
44 | 46 | ||
45 | output HDMI1 scale 2 | 47 | output HDMI1 scale 2 |
46 | 48 | ||
47 | output HDMI1 pos 0 0 res 3200x1800 | 49 | output HDMI1 pos 0 1020 res 3200x1800 |
48 | 50 | ||
49 | output eDP1 pos 1600 0 res 1920x1080 | 51 | output eDP1 pos 1600 0 res 1920x1080 |
50 | 52 | ||
51 | Note that the x-pos of eDP1 is 1600 = 3200/2. | 53 | Note that the left x-pos of eDP1 is 1600 = 3200/2 and the bottom y-pos is |
54 | 1020 + (1800 / 2) = 1920 = 0 + 1920 | ||
52 | 55 | ||
53 | *output* <name> scale <factor> | 56 | *output* <name> scale <factor> |
54 | Scales the specified output by the specified scale _factor_. An integer is | 57 | Scales the specified output by the specified scale _factor_. An integer is |
@@ -57,7 +60,8 @@ must be separated by one space. For example: | |||
57 | represent the contents of your windows - they will be rendered at the next | 60 | represent the contents of your windows - they will be rendered at the next |
58 | highest integral scale factor and downscaled. You may be better served by | 61 | highest integral scale factor and downscaled. You may be better served by |
59 | setting an integral scale factor and adjusting the font size of your | 62 | setting an integral scale factor and adjusting the font size of your |
60 | applications to taste. | 63 | applications to taste. HiDPI isn't supported with Xwayland clients (windows |
64 | will blur). | ||
61 | 65 | ||
62 | *output* <name> background|bg <file> <mode> [<fallback\_color>] | 66 | *output* <name> background|bg <file> <mode> [<fallback\_color>] |
63 | Sets the wallpaper for the given output to the specified file, using the | 67 | Sets the wallpaper for the given output to the specified file, using the |
diff --git a/sway/sway.5.scd b/sway/sway.5.scd index e6abef56..3757a097 100644 --- a/sway/sway.5.scd +++ b/sway/sway.5.scd | |||
@@ -327,7 +327,8 @@ runtime. | |||
327 | A view that does not have focus. | 327 | A view that does not have focus. |
328 | 328 | ||
329 | *client.urgent* | 329 | *client.urgent* |
330 | A view with an urgency hint. *Note*: This is not currently implemented. | 330 | A view with an urgency hint. *Note*: Native Wayland windows do not |
331 | support urgency. Urgency only works for Xwayland windows. | ||
331 | 332 | ||
332 | The meaning of each color is: | 333 | The meaning of each color is: |
333 | 334 | ||
@@ -431,7 +432,7 @@ The default colors are: | |||
431 | 432 | ||
432 | *focus\_follows\_mouse* yes|no|always | 433 | *focus\_follows\_mouse* yes|no|always |
433 | If set to _yes_, moving your mouse over a window will focus that window. If | 434 | If set to _yes_, moving your mouse over a window will focus that window. If |
434 | set to _always_, the window under the cursor will always be focused, even | 435 | set to _always_, the window under the cursor will always be focused, even |
435 | after switching between workspaces. | 436 | after switching between workspaces. |
436 | 437 | ||
437 | *focus\_wrapping* yes|no|force | 438 | *focus\_wrapping* yes|no|force |
@@ -450,11 +451,11 @@ The default colors are: | |||
450 | Thickness of the titlebar border in pixels | 451 | Thickness of the titlebar border in pixels |
451 | 452 | ||
452 | *titlebar\_padding* <horizontal> [<vertical>] | 453 | *titlebar\_padding* <horizontal> [<vertical>] |
453 | Padding of the text in the titlebar. _horizontal_ value affects horizontal | 454 | Padding of the text in the titlebar. _horizontal_ value affects horizontal |
454 | padding of the text while _vertical_ value affects vertical padding (space | 455 | padding of the text while _vertical_ value affects vertical padding (space |
455 | above and below text). Padding includes titlebar borders so their value | 456 | above and below text). Padding includes titlebar borders so their value |
456 | should be greater than titlebar\_border\_thickness. If _vertical_ value is | 457 | should be greater than titlebar\_border\_thickness. If _vertical_ value is |
457 | not specified it is set to the _horizontal_ value. | 458 | not specified it is set to the _horizontal_ value. |
458 | 459 | ||
459 | *for\_window* <criteria> <command> | 460 | *for\_window* <criteria> <command> |
460 | Whenever a window that matches _criteria_ appears, run list of commands. | 461 | Whenever a window that matches _criteria_ appears, run list of commands. |
@@ -572,6 +573,14 @@ The default colors are: | |||
572 | the _floating\_mod_ will also allow the container to be dragged. _toggle_ | 573 | the _floating\_mod_ will also allow the container to be dragged. _toggle_ |
573 | should not be used in the config file. | 574 | should not be used in the config file. |
574 | 575 | ||
576 | *tiling\_drag\_threshold* <threshold> | ||
577 | Sets the threshold that must be exceeded for a container to be dragged by | ||
578 | its titlebar. This has no effect if _floating\_mod_ is used or if | ||
579 | _tiling\_drag_ is set to _disable_. Once the threshold has been exceeded | ||
580 | once, the drag starts and the cursor can come back inside the threshold | ||
581 | without stopping the drag. _threshold_ is multiplied by the scale of the | ||
582 | output that the cursor on. The default is 9. | ||
583 | |||
575 | *title\_align* left|center|right | 584 | *title\_align* left|center|right |
576 | Sets the title alignment. If _right_ is selected and _show\_marks_ is set | 585 | Sets the title alignment. If _right_ is selected and _show\_marks_ is set |
577 | to _yes_, the marks will be shown on the _left_ side instead of the | 586 | to _yes_, the marks will be shown on the _left_ side instead of the |