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:
- wlroots: |
cd wlroots
meson --prefix=/usr build -Dexamples=false
meson setup --prefix=/usr build -Dexamples=false
ninja -C build
sudo ninja -C build install
- setup: |
cd sway
meson build --fatal-meson-warnings -Dauto_features=enabled -Dtray=disabled
meson setup build --fatal-meson-warnings -Dauto_features=enabled -Dtray=disabled
- build: |
cd sway
ninja -C build
@ -52,5 +52,5 @@ tasks:
mkdir subprojects
ln -s ../../wlroots subprojects/wlroots
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

View file

@ -26,12 +26,12 @@ sources:
tasks:
- wlroots: |
cd wlroots
meson --prefix=/usr build -Dexamples=false
meson setup --prefix=/usr build -Dexamples=false
ninja -C build
sudo ninja -C build install
- setup: |
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: |
cd sway
ninja -C build

View file

@ -39,7 +39,7 @@ tasks:
cd subprojects
ln -s ../../wlroots wlroots
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: |
cd sway
ninja -C build

View file

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

View file

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

View file

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

View file

@ -1,21 +1,21 @@
# 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
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
### Ü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
sway benötigt die folgenden Pakete:
* meson\*
* [wlroots](https://gitlab.freedesktop.org/wlroots/wlroots)
* meson \*
* [wlroots]
* wayland
* wayland-protocols\*
* pcre2
@ -23,21 +23,34 @@ sway benötigt die folgenden Pakete:
* pango
* cairo
* 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)\*
_\*Werden nur während des Kompilierens benötigt_
_\*Werden nur für das Kompilieren benötigt_
Führe die folgenden Befehle aus:
meson build
ninja -C build
sudo ninja -C build install
meson setup build/
ninja -C build/
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
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 kann einfach mit dem Befehl `sway` vom TTY gestartet werden.
Display-Manager werden nicht offiziell unterstützt. Es gibt aber durchaus einige, die mit Sway funktionieren (z.B. gdm).
Sway kann einfach mit dem Befehl `sway` vom TTY oder mithilfe eines Displaymanagers gestartet werden.
[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:
meson build
meson setup build
ninja -C build
sudo ninja -C build install

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,7 +1,7 @@
# sway
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
@ -38,7 +38,7 @@ _\* Dipendenza necessaria per la compilazione_
Esegui questi comandi:
meson build/
meson setup build/
ninja -C build/
sudo ninja -C build/ install
@ -52,13 +52,12 @@ configurazione.
## Esecuzione
Lancia `sway` da un TTY. Alcuni gestori d'accesso potrebbero funzionare ma non
sono supportati da sway (gdm funziona abbastanza bene).
Lancia `sway` da un TTY o da un display manager.
[i3]: https://i3wm.org/
[Wayland]: http://wayland.freedesktop.org/
[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
[GitHub releases]: https://github.com/swaywm/sway/releases
[Development setup]: https://github.com/swaywm/sway/wiki/Development-Setup

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -578,6 +578,7 @@ static void handle_tablet_tool_position(struct sway_cursor *cursor,
} else {
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);
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) {
return;
}
struct wlr_input_method_v2 *context = data;
assert(context == relay->input_method);
if (context->current.preedit.text) {
if (relay->input_method->current.preedit.text) {
wlr_text_input_v3_send_preedit_string(text_input->input,
context->current.preedit.text,
context->current.preedit.cursor_begin,
context->current.preedit.cursor_end);
relay->input_method->current.preedit.text,
relay->input_method->current.preedit.cursor_begin,
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,
context->current.commit_text);
relay->input_method->current.commit_text);
}
if (context->current.delete.before_length
|| context->current.delete.after_length) {
if (relay->input_method->current.delete.before_length
|| relay->input_method->current.delete.after_length) {
wlr_text_input_v3_send_delete_surrounding_text(text_input->input,
context->current.delete.before_length,
context->current.delete.after_length);
relay->input_method->current.delete.before_length,
relay->input_method->current.delete.after_length);
}
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) {
struct sway_input_method_relay *relay = wl_container_of(listener, relay,
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;
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) {
struct sway_input_method_relay *relay = wl_container_of(listener, relay,
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_grab_keyboard.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) {
struct sway_text_input *text_input = wl_container_of(listener, text_input,
pending_focused_surface_destroy);
struct wlr_surface *surface = data;
assert(text_input->pending_focused_surface == surface);
text_input->pending_focused_surface = NULL;
wl_list_remove(&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_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 = {
.parametric = true,
.set_mastering_display_primaries = true,
@ -479,6 +480,7 @@ bool server_init(struct sway_server *server) {
.primaries = primaries,
.primaries_len = sizeof(primaries) / sizeof(primaries[0]),
});
wlr_scene_set_color_manager_v1(root->root_scene, cm);
}
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_workspace *ws = con->pending.workspace;
if (con->pending.fullscreen_mode == FULLSCREEN_GLOBAL && !con->pending.workspace) {
// If the container was made fullscreen global while in the scratchpad,
// it should be shown until fullscreen has been disabled
if (!con->pending.workspace) {
return;
}