Merge branch 'master' into session-lock-input-fix

This commit is contained in:
Erik Reider 2025-10-08 18:04:14 +02:00 committed by GitHub
commit f4cbe3789d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
35 changed files with 77 additions and 70 deletions

View file

@ -29,12 +29,12 @@ sources:
tasks: tasks:
- wlroots: | - wlroots: |
cd wlroots cd wlroots
meson --prefix=/usr build -Dexamples=false meson setup --prefix=/usr build -Dexamples=false
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install
- setup: | - setup: |
cd sway cd sway
meson build --fatal-meson-warnings -Dauto_features=enabled -Dtray=disabled meson setup build --fatal-meson-warnings -Dauto_features=enabled -Dtray=disabled
- build: | - build: |
cd sway cd sway
ninja -C build ninja -C build
@ -52,5 +52,5 @@ tasks:
mkdir subprojects mkdir subprojects
ln -s ../../wlroots subprojects/wlroots ln -s ../../wlroots subprojects/wlroots
rm -rf build rm -rf build
meson build --fatal-meson-warnings --default-library=static --force-fallback-for=wlroots meson setup build --fatal-meson-warnings --default-library=static --force-fallback-for=wlroots
ninja -C build ninja -C build

View file

@ -26,12 +26,12 @@ sources:
tasks: tasks:
- wlroots: | - wlroots: |
cd wlroots cd wlroots
meson --prefix=/usr build -Dexamples=false meson setup --prefix=/usr build -Dexamples=false
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install
- setup: | - setup: |
cd sway cd sway
meson build --fatal-meson-warnings -Dauto_features=enabled -Dsd-bus-provider=libsystemd meson setup build --fatal-meson-warnings -Dauto_features=enabled -Dsd-bus-provider=libsystemd
- build: | - build: |
cd sway cd sway
ninja -C build ninja -C build

View file

@ -39,7 +39,7 @@ tasks:
cd subprojects cd subprojects
ln -s ../../wlroots wlroots ln -s ../../wlroots wlroots
cd .. cd ..
meson build --fatal-meson-warnings -Dtray=enabled -Dsd-bus-provider=basu meson setup build --fatal-meson-warnings -Dtray=enabled -Dsd-bus-provider=basu
- build: | - build: |
cd sway cd sway
ninja -C build ninja -C build

View file

@ -37,7 +37,7 @@ _\* Compile-time dep_
نفذ هذه الأوامر: نفذ هذه الأوامر:
meson build/ meson setup build/
ninja -C build/ ninja -C build/
sudo ninja -C build/ install sudo ninja -C build/ install

View file

@ -38,7 +38,7 @@ _\* Kompilyasiya asılılıqları_
Bu əmrləri icra edin: Bu əmrləri icra edin:
meson build/ meson setup build/
ninja -C build/ ninja -C build/
sudo ninja -C build/ install sudo ninja -C build/ install

View file

@ -39,7 +39,7 @@ _\* Závislost pouze pro kompilaci_
Spusťte tyto příkazy: Spusťte tyto příkazy:
meson build/ meson setup build/
ninja -C build/ ninja -C build/
sudo ninja -C build/ install sudo ninja -C build/ install

View file

@ -1,21 +1,21 @@
# Sway # Sway
Sway ist ein [i3](https://i3wm.org/)-kompatibler [Wayland](http://wayland.freedesktop.org/)-Compositor. Lies die [FAQ](https://github.com/swaywm/sway/wiki). Tritt dem [IRC Channel](https://web.libera.chat/gamja/?channels=#sway) bei (#sway on irc.libera.chat; Englisch). Sway ist ein [i3]-kompatibler [Wayland]-Compositor. Lies die [FAQ]. Tritt dem [IRC Channel] bei (#sway on irc.libera.chat; Englisch).
## Signaturen ## Signaturen
Jedes Release wird mit dem PGP-Schlüssel [E88F5E48](https://keys.openpgp.org/search?q=34FF9526CFEF0E97A340E2E40FDE7BE0E88F5E48) signiert und [auf GitHub](https://github.com/swaywm/sway/releases) veröffentlicht. Jeder Release wird mit dem PGP-Schlüssel [E88F5E48] signiert und [auf GitHub][GitHub releases] veröffentlicht.
## Installation ## Installation
### Über die Paketverwaltung ### Über die Paketverwaltung
Sway kann in vielen Distributionen direkt durch die Paketverwaltung installiert werden. Versuche einfach das Packet "sway" zu installieren. Sway kann in vielen Distributionen direkt durch die Paketverwaltung installiert werden. Versuche einfach das Paket "sway" zu installieren.
### Quellcode selbst kompilieren ### Quellcode selbst kompilieren
sway benötigt die folgenden Pakete: sway benötigt die folgenden Pakete:
* meson\* * meson \*
* [wlroots](https://gitlab.freedesktop.org/wlroots/wlroots) * [wlroots]
* wayland * wayland
* wayland-protocols\* * wayland-protocols\*
* pcre2 * pcre2
@ -23,21 +23,34 @@ sway benötigt die folgenden Pakete:
* pango * pango
* cairo * cairo
* gdk-pixbuf2 (Optional, wird für das Benachrichtigungsfeld (System Tray) benötigt) * gdk-pixbuf2 (Optional, wird für das Benachrichtigungsfeld (System Tray) benötigt)
* [scdoc](https://git.sr.ht/~sircmpwn/scdoc) (Optional, wird für die Dokumentation (Man Pages) benötigt)\* * [swaybg] (Optional, wird für das Setzen von Desktophintergrundbildern benötigt)
* [scdoc] (Optional, wird für die Dokumentation (Man Pages) benötigt)\*
* git (Optional: Versionsinfo)\* * git (Optional: Versionsinfo)\*
_\*Werden nur während des Kompilierens benötigt_ _\*Werden nur für das Kompilieren benötigt_
Führe die folgenden Befehle aus: Führe die folgenden Befehle aus:
meson build meson setup build/
ninja -C build ninja -C build/
sudo ninja -C build install sudo ninja -C build/ install
Schaue in das [Wiki][Development setup] (Englisch) für Informationen, falls du zum Testen oder Entwickeln den neuesten Stand (HEAD) von sway und wlroots kompilieren willst.
## Konfiguration ## Konfiguration
Falls du von i3 migrierst, kannst du deine Konfigurationsdatei nach `~/.config/sway/config` kopieren und die Einstellungen sollten ohne Weiteres funktionieren. Ansonsten kannst du die Beispielkonfiguration, die normalerweise in `/etc/sway/config` liegt, nach `~/.config/sway/config` kopieren. Die Dokumentation zur Konfigurationsdatei findest du in `man 5 sway`. Falls du von i3 migrierst, kannst du deine Konfigurationsdatei nach `~/.config/sway/config` kopieren und die Einstellungen sollten ohne Weiteres funktionieren. Ansonsten kannst du die Beispielkonfiguration, die normalerweise in `/etc/sway/config` liegt, nach `~/.config/sway/config` kopieren. Die Dokumentation zur Konfigurationsdatei findest du in `man 5 sway`.
## Sway starten ## Sway starten
Sway kann einfach mit dem Befehl `sway` vom TTY gestartet werden. Sway kann einfach mit dem Befehl `sway` vom TTY oder mithilfe eines Displaymanagers gestartet werden.
Display-Manager werden nicht offiziell unterstützt. Es gibt aber durchaus einige, die mit Sway funktionieren (z.B. gdm).
[i3]: https://i3wm.org/
[Wayland]: http://wayland.freedesktop.org/
[FAQ]: https://github.com/swaywm/sway/wiki
[IRC channel]: https://web.libera.chat/gamja/?channels=#sway
[E88F5E48]: https://keys.openpgp.org/search?q=34FF9526CFEF0E97A340E2E40FDE7BE0E88F5E48
[GitHub releases]: https://github.com/swaywm/sway/releases
[Development setup]: https://github.com/swaywm/sway/wiki/Development-Setup
[wlroots]: https://gitlab.freedesktop.org/wlroots/wlroots
[swaybg]: https://github.com/swaywm/swaybg
[scdoc]: https://git.sr.ht/~sircmpwn/scdoc

View file

@ -41,7 +41,7 @@ _\*Kompileringsafhængighed_
Kør følgende kommandoer: Kør følgende kommandoer:
meson build meson setup build
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install

View file

@ -40,7 +40,7 @@ _\*Compile-time dep_
Desde su consola, ejecute las órdenes: Desde su consola, ejecute las órdenes:
meson build meson setup build
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install

View file

@ -47,7 +47,7 @@ _\* Requis uniquement pour la compilation_
Exécutez ces commandes : Exécutez ces commandes :
meson build meson setup build
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install

View file

@ -35,7 +35,7 @@ _\* Compile-time dep_
გაუშვით ეს ბრძანებები: გაუშვით ეს ბრძანებები:
meson build/ meson setup build/
ninja -C build/ ninja -C build/
sudo ninja -C build/ install sudo ninja -C build/ install

View file

@ -40,7 +40,7 @@ _\*Compile-time dep_
Τρέξτε αυτά τα commands: Τρέξτε αυτά τα commands:
meson build/ meson setup build/
ninja -C build/ ninja -C build/
sudo ninja -C build/ install sudo ninja -C build/ install

View file

@ -44,7 +44,7 @@ _\* Compilation के समय आवश्यक_
ये commands चलाएं: ये commands चलाएं:
meson build/ meson setup build/
ninja -C build/ ninja -C build/
sudo ninja -C build/ install sudo ninja -C build/ install

View file

@ -40,7 +40,7 @@ _\*Fordításidejű függőség_
Futtasd ezeket a parancsokat: Futtasd ezeket a parancsokat:
meson build meson setup build
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install

View file

@ -41,7 +41,7 @@ _\*نیازمندی‌های زمان کامپایل برنامه_
این فرمان‌ها را اجرا کنید: این فرمان‌ها را اجرا کنید:
meson build meson setup build
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install

View file

@ -1,7 +1,7 @@
# sway # sway
sway è un compositore di [Wayland] compatibile con [i3]. Leggi le [FAQ]. sway è un compositore di [Wayland] compatibile con [i3]. Leggi le [FAQ].
Unisciti al [canale di IRC] \(#sway su irc.libera.chat). Unisciti al [canale IRC] \(#sway su irc.libera.chat).
## Firma delle versioni ## Firma delle versioni
@ -38,7 +38,7 @@ _\* Dipendenza necessaria per la compilazione_
Esegui questi comandi: Esegui questi comandi:
meson build/ meson setup build/
ninja -C build/ ninja -C build/
sudo ninja -C build/ install sudo ninja -C build/ install
@ -52,13 +52,12 @@ configurazione.
## Esecuzione ## Esecuzione
Lancia `sway` da un TTY. Alcuni gestori d'accesso potrebbero funzionare ma non Lancia `sway` da un TTY o da un display manager.
sono supportati da sway (gdm funziona abbastanza bene).
[i3]: https://i3wm.org/ [i3]: https://i3wm.org/
[Wayland]: http://wayland.freedesktop.org/ [Wayland]: http://wayland.freedesktop.org/
[FAQ]: https://github.com/swaywm/sway/wiki [FAQ]: https://github.com/swaywm/sway/wiki
[canale di IRC]: https://web.libera.chat/gamja/?channels=#sway [canale IRC]: https://web.libera.chat/gamja/?channels=#sway
[E88F5E48]: https://keys.openpgp.org/search?q=34FF9526CFEF0E97A340E2E40FDE7BE0E88F5E48 [E88F5E48]: https://keys.openpgp.org/search?q=34FF9526CFEF0E97A340E2E40FDE7BE0E88F5E48
[GitHub releases]: https://github.com/swaywm/sway/releases [GitHub releases]: https://github.com/swaywm/sway/releases
[Development setup]: https://github.com/swaywm/sway/wiki/Development-Setup [Development setup]: https://github.com/swaywm/sway/wiki/Development-Setup

View file

@ -42,7 +42,7 @@ _\*コンパイル時の依存_
次のコマンドを実行してください: 次のコマンドを実行してください:
meson build meson setup build
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install

View file

@ -39,7 +39,7 @@ _\*컴파일 떄 필요_
다음 명령을 실행하세요: 다음 명령을 실행하세요:
meson build meson setup build
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install

View file

@ -40,7 +40,7 @@ _\* Compile-time dep_
Run these commands: Run these commands:
meson build/ meson setup build/
ninja -C build/ ninja -C build/
sudo ninja -C build/ install sudo ninja -C build/ install

View file

@ -40,7 +40,7 @@ _\* Compileerafhankelijkheden_
Voer deze opdrachten uit: Voer deze opdrachten uit:
meson build meson setup build
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install

View file

@ -38,7 +38,7 @@ _\* Kompileringsavhengigheter_
Kjør følgende kommandoer: Kjør følgende kommandoer:
meson build/ meson setup build/
ninja -C build/ ninja -C build/
sudo ninja -C build/ install sudo ninja -C build/ install

View file

@ -40,7 +40,7 @@ _\*zależności kompilacji_
Wykonaj następujące polecenia: Wykonaj następujące polecenia:
meson build meson setup build
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install

View file

@ -42,7 +42,7 @@ _\*Dependência de tempo de compilação_
Execute esses comandos: Execute esses comandos:
meson build meson setup build
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install

View file

@ -38,7 +38,7 @@ Dependențe pentru instalare:
Rulați aceste comenzi: Rulați aceste comenzi:
``` ```
meson build meson setup build
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install
``` ```

View file

@ -41,7 +41,7 @@ _\*Зависимости для сборки_
Выполните эти команды: Выполните эти команды:
meson build meson setup build
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install

View file

@ -38,7 +38,7 @@ _\* Потребно само за компајлирање_
Покрените следеће команде: Покрените следеће команде:
meson build/ meson setup build/
ninja -C build/ ninja -C build/
sudo ninja -C build/ install sudo ninja -C build/ install

View file

@ -35,7 +35,7 @@ _\* Krav för kompilering_
Kör dessa kommandon: Kör dessa kommandon:
meson build/ meson setup build/
ninja -C build/ ninja -C build/
sudo ninja -C build/ install sudo ninja -C build/ install

View file

@ -38,7 +38,7 @@ _\*Derleme-anı bağımlılıkları_
Şu komutları çalıştırın: Şu komutları çalıştırın:
meson build meson setup build
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install

View file

@ -51,7 +51,7 @@ _\*Лише для компіляції_
Виконайте ці команди: Виконайте ці команди:
meson build meson setup build
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install

View file

@ -35,7 +35,7 @@ _\*编译时依赖_
运行如下命令: 运行如下命令:
meson build/ meson setup build/
ninja -C build/ ninja -C build/
sudo ninja -C build/ install sudo ninja -C build/ install

View file

@ -40,7 +40,7 @@ _\*編譯時相依_
執行這些指令: 執行這些指令:
meson build meson setup build
ninja -C build ninja -C build
sudo ninja -C build install sudo ninja -C build install

View file

@ -578,6 +578,7 @@ static void handle_tablet_tool_position(struct sway_cursor *cursor,
} else { } else {
wlr_tablet_v2_tablet_tool_notify_proximity_out(tool->tablet_v2_tool); wlr_tablet_v2_tablet_tool_notify_proximity_out(tool->tablet_v2_tool);
pointer_motion(cursor, time_msec, input_device->wlr_device, dx, dy, dx, dy); pointer_motion(cursor, time_msec, input_device->wlr_device, dx, dy, dx, dy);
wlr_seat_pointer_notify_frame(cursor->seat->wlr_seat);
} }
} }

View file

@ -42,23 +42,21 @@ static void handle_im_commit(struct wl_listener *listener, void *data) {
if (!text_input) { if (!text_input) {
return; return;
} }
struct wlr_input_method_v2 *context = data; if (relay->input_method->current.preedit.text) {
assert(context == relay->input_method);
if (context->current.preedit.text) {
wlr_text_input_v3_send_preedit_string(text_input->input, wlr_text_input_v3_send_preedit_string(text_input->input,
context->current.preedit.text, relay->input_method->current.preedit.text,
context->current.preedit.cursor_begin, relay->input_method->current.preedit.cursor_begin,
context->current.preedit.cursor_end); relay->input_method->current.preedit.cursor_end);
} }
if (context->current.commit_text) { if (relay->input_method->current.commit_text) {
wlr_text_input_v3_send_commit_string(text_input->input, wlr_text_input_v3_send_commit_string(text_input->input,
context->current.commit_text); relay->input_method->current.commit_text);
} }
if (context->current.delete.before_length if (relay->input_method->current.delete.before_length
|| context->current.delete.after_length) { || relay->input_method->current.delete.after_length) {
wlr_text_input_v3_send_delete_surrounding_text(text_input->input, wlr_text_input_v3_send_delete_surrounding_text(text_input->input,
context->current.delete.before_length, relay->input_method->current.delete.before_length,
context->current.delete.after_length); relay->input_method->current.delete.after_length);
} }
wlr_text_input_v3_send_done(text_input->input); wlr_text_input_v3_send_done(text_input->input);
} }
@ -66,7 +64,7 @@ static void handle_im_commit(struct wl_listener *listener, void *data) {
static void handle_im_keyboard_grab_destroy(struct wl_listener *listener, void *data) { static void handle_im_keyboard_grab_destroy(struct wl_listener *listener, void *data) {
struct sway_input_method_relay *relay = wl_container_of(listener, relay, struct sway_input_method_relay *relay = wl_container_of(listener, relay,
input_method_keyboard_grab_destroy); input_method_keyboard_grab_destroy);
struct wlr_input_method_keyboard_grab_v2 *keyboard_grab = data; struct wlr_input_method_keyboard_grab_v2 *keyboard_grab = relay->input_method->keyboard_grab;
struct wlr_seat *wlr_seat = keyboard_grab->input_method->seat; struct wlr_seat *wlr_seat = keyboard_grab->input_method->seat;
wl_list_remove(&relay->input_method_keyboard_grab_destroy.link); wl_list_remove(&relay->input_method_keyboard_grab_destroy.link);
@ -110,8 +108,6 @@ static void text_input_set_pending_focused_surface(
static void handle_im_destroy(struct wl_listener *listener, void *data) { static void handle_im_destroy(struct wl_listener *listener, void *data) {
struct sway_input_method_relay *relay = wl_container_of(listener, relay, struct sway_input_method_relay *relay = wl_container_of(listener, relay,
input_method_destroy); input_method_destroy);
struct wlr_input_method_v2 *context = data;
assert(context == relay->input_method);
wl_list_remove(&relay->input_method_commit.link); wl_list_remove(&relay->input_method_commit.link);
wl_list_remove(&relay->input_method_grab_keyboard.link); wl_list_remove(&relay->input_method_grab_keyboard.link);
wl_list_remove(&relay->input_method_destroy.link); wl_list_remove(&relay->input_method_destroy.link);
@ -322,8 +318,6 @@ static void handle_pending_focused_surface_destroy(struct wl_listener *listener,
void *data) { void *data) {
struct sway_text_input *text_input = wl_container_of(listener, text_input, struct sway_text_input *text_input = wl_container_of(listener, text_input,
pending_focused_surface_destroy); pending_focused_surface_destroy);
struct wlr_surface *surface = data;
assert(text_input->pending_focused_surface == surface);
text_input->pending_focused_surface = NULL; text_input->pending_focused_surface = NULL;
wl_list_remove(&text_input->pending_focused_surface_destroy.link); wl_list_remove(&text_input->pending_focused_surface_destroy.link);
wl_list_init(&text_input->pending_focused_surface_destroy.link); wl_list_init(&text_input->pending_focused_surface_destroy.link);

View file

@ -467,7 +467,8 @@ bool server_init(struct sway_server *server) {
WP_COLOR_MANAGER_V1_PRIMARIES_SRGB, WP_COLOR_MANAGER_V1_PRIMARIES_SRGB,
WP_COLOR_MANAGER_V1_PRIMARIES_BT2020, WP_COLOR_MANAGER_V1_PRIMARIES_BT2020,
}; };
wlr_color_manager_v1_create(server->wl_display, 1, &(struct wlr_color_manager_v1_options){ struct wlr_color_manager_v1 *cm = wlr_color_manager_v1_create(
server->wl_display, 1, &(struct wlr_color_manager_v1_options){
.features = { .features = {
.parametric = true, .parametric = true,
.set_mastering_display_primaries = true, .set_mastering_display_primaries = true,
@ -479,6 +480,7 @@ bool server_init(struct sway_server *server) {
.primaries = primaries, .primaries = primaries,
.primaries_len = sizeof(primaries) / sizeof(primaries[0]), .primaries_len = sizeof(primaries) / sizeof(primaries[0]),
}); });
wlr_scene_set_color_manager_v1(root->root_scene, cm);
} }
wl_list_init(&server->pending_launcher_ctxs); wl_list_init(&server->pending_launcher_ctxs);

View file

@ -214,9 +214,7 @@ void root_scratchpad_hide(struct sway_container *con) {
struct sway_node *focus = seat_get_focus_inactive(seat, &root->node); struct sway_node *focus = seat_get_focus_inactive(seat, &root->node);
struct sway_workspace *ws = con->pending.workspace; struct sway_workspace *ws = con->pending.workspace;
if (con->pending.fullscreen_mode == FULLSCREEN_GLOBAL && !con->pending.workspace) { if (!con->pending.workspace) {
// If the container was made fullscreen global while in the scratchpad,
// it should be shown until fullscreen has been disabled
return; return;
} }