Set appid/wmclass for zed window (#10909)

fixes https://github.com/zed-industries/zed/issues/9132

By setting the app id, window managers like `sway` can apply custom
configuration like `for_window [app_id="zed"] floating enable`.
Tested using `wlprop`/`hyprctl activewindow` for wayland, `xprop` for
x11.


Release Notes:

- Zed now sets the window app id / class, which can be used e.g. in
window managers like `sway`/`i3` to define custom rules
This commit is contained in:
Jakob Hellermann 2024-04-29 18:27:25 +02:00 committed by GitHub
parent 5674ba2a49
commit 2386ae9f0e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 46 additions and 2 deletions

View file

@ -494,6 +494,21 @@ impl PlatformWindow for X11Window {
.unwrap();
}
fn set_app_id(&mut self, app_id: &str) {
let mut data = Vec::with_capacity(app_id.len() * 2 + 1);
data.extend(app_id.bytes()); // instance https://unix.stackexchange.com/a/494170
data.push(b'\0');
data.extend(app_id.bytes()); // class
self.0.xcb_connection.change_property8(
xproto::PropMode::REPLACE,
self.0.x_window,
xproto::AtomEnum::WM_CLASS,
xproto::AtomEnum::STRING,
&data,
);
}
// todo(linux)
fn set_edited(&mut self, edited: bool) {}