diff options
-rw-r--r-- | README.de.md | 2 | ||||
-rw-r--r-- | README.el.md | 2 | ||||
-rw-r--r-- | README.fr.md | 2 | ||||
-rw-r--r-- | README.it.md | 2 | ||||
-rw-r--r-- | README.ja.md | 2 | ||||
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | README.pt.md | 2 | ||||
-rw-r--r-- | README.ru.md | 2 | ||||
-rw-r--r-- | README.uk.md | 2 | ||||
-rw-r--r-- | completions/zsh/_swaygrab | 23 | ||||
-rw-r--r-- | include/sway/input/keyboard.h | 3 | ||||
-rw-r--r-- | include/swaygrab/json.h | 10 | ||||
-rw-r--r-- | include/util.h | 1 | ||||
-rw-r--r-- | meson.build | 1 | ||||
-rw-r--r-- | security.d/00-defaults.in | 6 | ||||
-rw-r--r-- | sway/input/keyboard.c | 40 | ||||
-rw-r--r-- | sway/sway.1.scd | 2 | ||||
-rw-r--r-- | swayidle/swayidle.1.scd | 2 |
18 files changed, 46 insertions, 60 deletions
diff --git a/README.de.md b/README.de.md index 206a1040..a872e888 100644 --- a/README.de.md +++ b/README.de.md | |||
@@ -64,8 +64,6 @@ Abhängigkeiten: | |||
64 | * cairo | 64 | * cairo |
65 | * gdk-pixbuf2 * | 65 | * gdk-pixbuf2 * |
66 | * pam ** | 66 | * pam ** |
67 | * imagemagick (erforderlich für Bildaufnahme mit swaygrab) | ||
68 | * ffmpeg (erforderlich für Videoaufnahme swaygrab) | ||
69 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (erforderlich für man pages) | 67 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (erforderlich für man pages) |
70 | 68 | ||
71 | _\*Nur erforderlich für swaybar, swaybg, und swaylock_ | 69 | _\*Nur erforderlich für swaybar, swaybg, und swaylock_ |
diff --git a/README.el.md b/README.el.md index 5c70beff..6887fe8e 100644 --- a/README.el.md +++ b/README.el.md | |||
@@ -57,8 +57,6 @@ To username μου στο Freenode είναι kon14 και θα με βρείτ | |||
57 | * cairo | 57 | * cairo |
58 | * gdk-pixbuf2 * | 58 | * gdk-pixbuf2 * |
59 | * pam ** | 59 | * pam ** |
60 | * imagemagick (αναγκαίο για καταγραφή εικόνας μέσω του swaygrab) | ||
61 | * ffmpeg (αναγκαίο για καταγραφή video μέσω του swaygrab) | ||
62 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (required for man pages) | 60 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (required for man pages) |
63 | 61 | ||
64 | _\*Απαιτείται μόνο για swaybar, swaybg, and swaylock_ | 62 | _\*Απαιτείται μόνο για swaybar, swaybg, and swaylock_ |
diff --git a/README.fr.md b/README.fr.md index 0d2573f9..6ea4d14c 100644 --- a/README.fr.md +++ b/README.fr.md | |||
@@ -59,8 +59,6 @@ Installez les dépendances : | |||
59 | * cairo | 59 | * cairo |
60 | * gdk-pixbuf2 * | 60 | * gdk-pixbuf2 * |
61 | * pam ** | 61 | * pam ** |
62 | * imagemagick (requis pour la capture d'image avec swaygrab) | ||
63 | * ffmpeg (requis pour la capture vidéo avec swaygrab) | ||
64 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (requis pour les pages man) | 62 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (requis pour les pages man) |
65 | 63 | ||
66 | _\*Uniquement requis pour swaybar, swaybg, and swaylock_ | 64 | _\*Uniquement requis pour swaybar, swaybg, and swaylock_ |
diff --git a/README.it.md b/README.it.md index 0d81ea54..3b1b1ebc 100644 --- a/README.it.md +++ b/README.it.md | |||
@@ -60,8 +60,6 @@ Installa queste dipendenze: | |||
60 | * cairo | 60 | * cairo |
61 | * gdk-pixbuf2 * | 61 | * gdk-pixbuf2 * |
62 | * pam ** | 62 | * pam ** |
63 | * imagemagick (richiesto per catturare immagini con swaygrab) | ||
64 | * ffmpeg (rrichiesto per catturare video con swaygrab) | ||
65 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (rrichiesto per man pages) | 63 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (rrichiesto per man pages) |
66 | 64 | ||
67 | _\*Richiesto solo per swaybar, swaybg, e swaylock_ | 65 | _\*Richiesto solo per swaybar, swaybg, e swaylock_ |
diff --git a/README.ja.md b/README.ja.md index 476d7472..7b437966 100644 --- a/README.ja.md +++ b/README.ja.md | |||
@@ -50,8 +50,6 @@ Swayは沢山のディストリビューションで提供されています。" | |||
50 | * cairo | 50 | * cairo |
51 | * gdk-pixbuf2 * | 51 | * gdk-pixbuf2 * |
52 | * pam ** | 52 | * pam ** |
53 | * imagemagick (swaygrabでスクリーンショットを撮るのに必要です) | ||
54 | * ffmpeg (swaygrabで画面を録画するのに必要です) | ||
55 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (manで必要です) | 53 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (manで必要です) |
56 | 54 | ||
57 | _\*swaybar,swaybg,swaylockでのみ必要です_ | 55 | _\*swaybar,swaybg,swaylockでのみ必要です_ |
@@ -58,8 +58,6 @@ Install dependencies: | |||
58 | * gdk-pixbuf2 * | 58 | * gdk-pixbuf2 * |
59 | * pam ** | 59 | * pam ** |
60 | * dbus >= 1.10 *** | 60 | * dbus >= 1.10 *** |
61 | * imagemagick (required for image capture with swaygrab) | ||
62 | * ffmpeg (required for video capture with swaygrab) | ||
63 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (required for man pages) | 61 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (required for man pages) |
64 | 62 | ||
65 | _\*Only required for swaybar, swaybg, and swaylock_ | 63 | _\*Only required for swaybar, swaybg, and swaylock_ |
diff --git a/README.pt.md b/README.pt.md index d1ef245f..9089c8c6 100644 --- a/README.pt.md +++ b/README.pt.md | |||
@@ -66,8 +66,6 @@ Antes de iniciar a compilação, instale as dependências: | |||
66 | * cairo | 66 | * cairo |
67 | * gdk-pixbuf2 * | 67 | * gdk-pixbuf2 * |
68 | * pam ** | 68 | * pam ** |
69 | * imagemagick (capturar imagem com o swaygrab) | ||
70 | * ffmpeg (capturar vídeo com o swaygrab) | ||
71 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (man pages) | 69 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (man pages) |
72 | 70 | ||
73 | _\*Dependência apenas de swaybar, swaybg, e swaylock_ | 71 | _\*Dependência apenas de swaybar, swaybg, e swaylock_ |
diff --git a/README.ru.md b/README.ru.md index 3b3de19a..68675db3 100644 --- a/README.ru.md +++ b/README.ru.md | |||
@@ -62,8 +62,6 @@ Sway доступен во многих дистрибутивах и наход | |||
62 | * gdk-pixbuf2 * | 62 | * gdk-pixbuf2 * |
63 | * pam ** | 63 | * pam ** |
64 | * dbus >= 1.10 *** | 64 | * dbus >= 1.10 *** |
65 | * imagemagick (требуется для захвата изображений через swaygrab) | ||
66 | * ffmpeg (требуется для захвата видео через swaygrab) | ||
67 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (required for man pages) | 65 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (required for man pages) |
68 | 66 | ||
69 | _\*Требуется только для swaybar, swaybg и swaylock_ | 67 | _\*Требуется только для swaybar, swaybg и swaylock_ |
diff --git a/README.uk.md b/README.uk.md index 55698487..c31a3ea9 100644 --- a/README.uk.md +++ b/README.uk.md | |||
@@ -66,8 +66,6 @@ Sway доступний у багатьох дистрибутивах Linux (а | |||
66 | * cairo | 66 | * cairo |
67 | * gdk-pixbuf2 * | 67 | * gdk-pixbuf2 * |
68 | * pam ** | 68 | * pam ** |
69 | * imagemagick (для захоплення зображень за допомогою swaygrab) | ||
70 | * ffmpeg (для захоплення відео за допомогою swaygrab) | ||
71 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (required for man pages) | 69 | * [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (required for man pages) |
72 | 70 | ||
73 | _\*Лише для swaybar, swaybg та swaylock_ | 71 | _\*Лише для swaybar, swaybg та swaylock_ |
diff --git a/completions/zsh/_swaygrab b/completions/zsh/_swaygrab deleted file mode 100644 index 0f9846f4..00000000 --- a/completions/zsh/_swaygrab +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | #compdef swaygrab | ||
2 | #----------------- | ||
3 | # Description | ||
4 | # ----------- | ||
5 | # | ||
6 | # Completion script for swaygrab in sway wm (http://swaywm.org) | ||
7 | # | ||
8 | # ----------------------------------------------------- | ||
9 | # Author | ||
10 | # ------ | ||
11 | # | ||
12 | # * Seth Barberee <seth.barberee@gmail.com> | ||
13 | # | ||
14 | # ------------------------------------------ | ||
15 | |||
16 | _arguments -s \ | ||
17 | '(-h --help)'{-h,--help}'[Shows help message]' \ | ||
18 | '(-c --capture)'{-c,--capture}'[Captures multiple frames as video and passes them to ffmpeg]' \ | ||
19 | '(-o --output)'{-o,--output}'[Use the specified output. If not specified then current focused output will be used]' \ | ||
20 | '(-v --version)'{-v,--version}'[Print the version (of swaymsg) and quit]' \ | ||
21 | '(-s --socket)'{-s,--socket}'[Use the specified socket path.]:files:_files' \ | ||
22 | '(-r --rate)'{-r,--rate}'[Specify a framerate (in fps). Used in combination with -c. Default is 30 and must be an integer]' \ | ||
23 | '(--raw)--raw[Instead of ImageMagick or ffmpeg, dump raw rgba data to stdout]' | ||
diff --git a/include/sway/input/keyboard.h b/include/sway/input/keyboard.h index 6713398e..6d28454c 100644 --- a/include/sway/input/keyboard.h +++ b/include/sway/input/keyboard.h | |||
@@ -38,6 +38,9 @@ struct sway_keyboard { | |||
38 | struct sway_shortcut_state state_keysyms_raw; | 38 | struct sway_shortcut_state state_keysyms_raw; |
39 | struct sway_shortcut_state state_keycodes; | 39 | struct sway_shortcut_state state_keycodes; |
40 | struct sway_binding *held_binding; | 40 | struct sway_binding *held_binding; |
41 | |||
42 | struct wl_event_source *key_repeat_source; | ||
43 | struct sway_binding *repeat_binding; | ||
41 | }; | 44 | }; |
42 | 45 | ||
43 | struct sway_keyboard *sway_keyboard_create(struct sway_seat *seat, | 46 | struct sway_keyboard *sway_keyboard_create(struct sway_seat *seat, |
diff --git a/include/swaygrab/json.h b/include/swaygrab/json.h deleted file mode 100644 index c1093ef1..00000000 --- a/include/swaygrab/json.h +++ /dev/null | |||
@@ -1,10 +0,0 @@ | |||
1 | #include <json-c/json.h> | ||
2 | #include "wlc/wlc.h" | ||
3 | |||
4 | void init_json_tree(int socketfd); | ||
5 | void free_json_tree(); | ||
6 | char *get_focused_output(); | ||
7 | char *create_payload(const char *output, struct wlc_geometry *g); | ||
8 | struct wlc_geometry *get_container_geometry(json_object *container); | ||
9 | json_object *get_focused_container(); | ||
10 | json_object *get_output_container(const char *output); | ||
diff --git a/include/util.h b/include/util.h index bda941ce..9277fa6e 100644 --- a/include/util.h +++ b/include/util.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define _SWAY_UTIL_H | 2 | #define _SWAY_UTIL_H |
3 | 3 | ||
4 | #include <stdint.h> | 4 | #include <stdint.h> |
5 | #include <stdbool.h> | ||
5 | #include <unistd.h> | 6 | #include <unistd.h> |
6 | #include <sys/types.h> | 7 | #include <sys/types.h> |
7 | #include <xkbcommon/xkbcommon.h> | 8 | #include <xkbcommon/xkbcommon.h> |
diff --git a/meson.build b/meson.build index 5be1f8d2..05d334d2 100644 --- a/meson.build +++ b/meson.build | |||
@@ -183,7 +183,6 @@ endif | |||
183 | if (get_option('zsh_completions')) | 183 | if (get_option('zsh_completions')) |
184 | zsh_files = files( | 184 | zsh_files = files( |
185 | 'completions/zsh/_sway', | 185 | 'completions/zsh/_sway', |
186 | 'completions/zsh/_swaygrab', | ||
187 | 'completions/zsh/_swaylock', | 186 | 'completions/zsh/_swaylock', |
188 | 'completions/zsh/_swaymsg', | 187 | 'completions/zsh/_swaymsg', |
189 | ) | 188 | ) |
diff --git a/security.d/00-defaults.in b/security.d/00-defaults.in index e4626477..be7b9d06 100644 --- a/security.d/00-defaults.in +++ b/security.d/00-defaults.in | |||
@@ -12,7 +12,6 @@ | |||
12 | permit * fullscreen keyboard mouse | 12 | permit * fullscreen keyboard mouse |
13 | permit @prefix@/bin/swaylock lock | 13 | permit @prefix@/bin/swaylock lock |
14 | permit @prefix@/bin/swaybg background | 14 | permit @prefix@/bin/swaybg background |
15 | permit @prefix@/bin/swaygrab screenshot | ||
16 | permit @prefix@/bin/swaybar panel | 15 | permit @prefix@/bin/swaybar panel |
17 | 16 | ||
18 | # Configures enabled IPC features for specific programs | 17 | # Configures enabled IPC features for specific programs |
@@ -36,11 +35,6 @@ ipc @prefix@/bin/swaybar { | |||
36 | } | 35 | } |
37 | } | 36 | } |
38 | 37 | ||
39 | ipc @prefix@/bin/swaygrab { | ||
40 | outputs enabled | ||
41 | tree enabled | ||
42 | } | ||
43 | |||
44 | ipc @prefix@/bin/swaylock { | 38 | ipc @prefix@/bin/swaylock { |
45 | outputs enabled | 39 | outputs enabled |
46 | } | 40 | } |
diff --git a/sway/input/keyboard.c b/sway/input/keyboard.c index 8dc8239c..160ef10b 100644 --- a/sway/input/keyboard.c +++ b/sway/input/keyboard.c | |||
@@ -264,6 +264,7 @@ static void handle_keyboard_key(struct wl_listener *listener, void *data) { | |||
264 | } | 264 | } |
265 | 265 | ||
266 | // Identify and execute active pressed binding | 266 | // Identify and execute active pressed binding |
267 | struct sway_binding *next_repeat_binding = NULL; | ||
267 | if (event->state == WLR_KEY_PRESSED) { | 268 | if (event->state == WLR_KEY_PRESSED) { |
268 | struct sway_binding *binding_pressed = NULL; | 269 | struct sway_binding *binding_pressed = NULL; |
269 | get_active_binding(&keyboard->state_keycodes, | 270 | get_active_binding(&keyboard->state_keycodes, |
@@ -279,6 +280,21 @@ static void handle_keyboard_key(struct wl_listener *listener, void *data) { | |||
279 | if (binding_pressed) { | 280 | if (binding_pressed) { |
280 | seat_execute_command(seat, binding_pressed); | 281 | seat_execute_command(seat, binding_pressed); |
281 | handled = true; | 282 | handled = true; |
283 | next_repeat_binding = binding_pressed; | ||
284 | } | ||
285 | } | ||
286 | |||
287 | // Set up (or clear) keyboard repeat for a pressed binding | ||
288 | if (next_repeat_binding && wlr_device->keyboard->repeat_info.delay > 0) { | ||
289 | keyboard->repeat_binding = next_repeat_binding; | ||
290 | if (wl_event_source_timer_update(keyboard->key_repeat_source, | ||
291 | wlr_device->keyboard->repeat_info.delay) < 0) { | ||
292 | wlr_log(WLR_DEBUG, "failed to set key repeat timer"); | ||
293 | } | ||
294 | } else if (keyboard->repeat_binding) { | ||
295 | keyboard->repeat_binding = NULL; | ||
296 | if (wl_event_source_timer_update(keyboard->key_repeat_source, 0) < 0) { | ||
297 | wlr_log(WLR_DEBUG, "failed to disarm key repeat timer"); | ||
282 | } | 298 | } |
283 | } | 299 | } |
284 | 300 | ||
@@ -303,6 +319,26 @@ static void handle_keyboard_key(struct wl_listener *listener, void *data) { | |||
303 | transaction_commit_dirty(); | 319 | transaction_commit_dirty(); |
304 | } | 320 | } |
305 | 321 | ||
322 | static int handle_keyboard_repeat(void *data) { | ||
323 | struct sway_keyboard *keyboard = (struct sway_keyboard *)data; | ||
324 | struct wlr_keyboard *wlr_device = | ||
325 | keyboard->seat_device->input_device->wlr_device->keyboard; | ||
326 | if (keyboard->repeat_binding) { | ||
327 | if (wlr_device->repeat_info.rate > 0) { | ||
328 | // We queue the next event first, as the command might cancel it | ||
329 | if (wl_event_source_timer_update(keyboard->key_repeat_source, | ||
330 | 1000 / wlr_device->repeat_info.rate) < 0) { | ||
331 | wlr_log(WLR_DEBUG, "failed to update key repeat timer"); | ||
332 | } | ||
333 | } | ||
334 | |||
335 | seat_execute_command(keyboard->seat_device->sway_seat, | ||
336 | keyboard->repeat_binding); | ||
337 | transaction_commit_dirty(); | ||
338 | } | ||
339 | return 0; | ||
340 | } | ||
341 | |||
306 | static void handle_keyboard_modifiers(struct wl_listener *listener, | 342 | static void handle_keyboard_modifiers(struct wl_listener *listener, |
307 | void *data) { | 343 | void *data) { |
308 | struct sway_keyboard *keyboard = | 344 | struct sway_keyboard *keyboard = |
@@ -328,6 +364,9 @@ struct sway_keyboard *sway_keyboard_create(struct sway_seat *seat, | |||
328 | wl_list_init(&keyboard->keyboard_key.link); | 364 | wl_list_init(&keyboard->keyboard_key.link); |
329 | wl_list_init(&keyboard->keyboard_modifiers.link); | 365 | wl_list_init(&keyboard->keyboard_modifiers.link); |
330 | 366 | ||
367 | keyboard->key_repeat_source = wl_event_loop_add_timer(server.wl_event_loop, | ||
368 | handle_keyboard_repeat, keyboard); | ||
369 | |||
331 | return keyboard; | 370 | return keyboard; |
332 | } | 371 | } |
333 | 372 | ||
@@ -441,5 +480,6 @@ void sway_keyboard_destroy(struct sway_keyboard *keyboard) { | |||
441 | } | 480 | } |
442 | wl_list_remove(&keyboard->keyboard_key.link); | 481 | wl_list_remove(&keyboard->keyboard_key.link); |
443 | wl_list_remove(&keyboard->keyboard_modifiers.link); | 482 | wl_list_remove(&keyboard->keyboard_modifiers.link); |
483 | wl_event_source_remove(keyboard->key_repeat_source); | ||
444 | free(keyboard); | 484 | free(keyboard); |
445 | } | 485 | } |
diff --git a/sway/sway.1.scd b/sway/sway.1.scd index 5b770cce..0c2ee974 100644 --- a/sway/sway.1.scd +++ b/sway/sway.1.scd | |||
@@ -92,4 +92,4 @@ source contributors. For more information about sway development, see | |||
92 | 92 | ||
93 | # SEE ALSO | 93 | # SEE ALSO |
94 | 94 | ||
95 | *sway*(5) *swaymsg*(1) *swaygrab*(1) *sway-input*(5) *sway-bar*(5) | 95 | *sway*(5) *swaymsg*(1) *sway-input*(5) *sway-bar*(5) |
diff --git a/swayidle/swayidle.1.scd b/swayidle/swayidle.1.scd index 5cd4a7fd..7c1b138a 100644 --- a/swayidle/swayidle.1.scd +++ b/swayidle/swayidle.1.scd | |||
@@ -58,4 +58,4 @@ https://github.com/swaywm/sway. | |||
58 | 58 | ||
59 | # SEE ALSO | 59 | # SEE ALSO |
60 | 60 | ||
61 | *sway*(5) *swaymsg*(1) *swaygrab*(1) *sway-input*(5) *sway-bar*(5) | 61 | *sway*(5) *swaymsg*(1) *sway-input*(5) *sway-bar*(5) |