1
0
Fork 0
forked from wry/wry

config: allow configuring the simple IM

This commit is contained in:
Julian Orth 2025-10-16 01:48:47 +02:00
parent 58b9830aaa
commit 2f22a61710
15 changed files with 367 additions and 7 deletions

View file

@ -1026,6 +1026,20 @@ impl ConfigClient {
self.send(&ClientMessage::SeatCopyMark { seat, src, dst });
}
pub fn seat_set_simple_im_enabled(&self, seat: Seat, enabled: bool) {
self.send(&ClientMessage::SeatSetSimpleImEnabled { seat, enabled });
}
pub fn seat_get_simple_im_enabled(&self, seat: Seat) -> bool {
let res = self.send_with_response(&ClientMessage::SeatGetSimpleImEnabled { seat });
get_response!(res, false, SeatGetSimpleImEnabled { enabled });
enabled
}
pub fn seat_reload_simple_im(&self, seat: Seat) {
self.send(&ClientMessage::SeatReloadSimpleIm { seat });
}
pub fn set_show_float_pin_icon(&self, show: bool) {
self.send(&ClientMessage::SetShowFloatPinIcon { show });
}

View file

@ -788,6 +788,16 @@ pub enum ClientMessage<'a> {
workspace: Workspace,
connector: Connector,
},
SeatSetSimpleImEnabled {
seat: Seat,
enabled: bool,
},
SeatGetSimpleImEnabled {
seat: Seat,
},
SeatReloadSimpleIm {
seat: Seat,
},
}
#[derive(Serialize, Deserialize, Debug)]
@ -1020,6 +1030,9 @@ pub enum Response {
GetShowBar {
show: bool,
},
SeatGetSimpleImEnabled {
enabled: bool,
},
}
#[derive(Serialize, Deserialize, Debug)]

View file

@ -603,6 +603,34 @@ impl Seat {
pub fn copy_mark(self, src: u32, dst: u32) {
get!().seat_copy_mark(self, src, dst);
}
/// Sets whether the simple, XCompose based input method is enabled.
///
/// Regardless of this setting, this input method is not used if an external input
/// method is running.
///
/// The default is `true`.
pub fn set_simple_im_enabled(self, enabled: bool) {
get!().seat_set_simple_im_enabled(self, enabled);
}
/// Returns whether the simple, XCompose based input method is enabled.
pub fn simple_im_enabled(self) -> bool {
get!(true).seat_get_simple_im_enabled(self)
}
/// Toggles whether the simple, XCompose based input method is enabled.
pub fn toggle_simple_im_enabled(self) {
let get = get!();
get.seat_set_simple_im_enabled(self, !get.seat_get_simple_im_enabled(self));
}
/// Reloads the simple, XCompose based input method.
///
/// This is useful if you change the XCompose files after starting the compositor.
pub fn reload_simple_im(self) {
get!().seat_reload_simple_im(self);
}
}
/// A focus-follows-mouse mode.