cli: allow configuring the simple IM
This commit is contained in:
parent
2f22a61710
commit
9ac4fea594
5 changed files with 78 additions and 2 deletions
|
|
@ -83,6 +83,28 @@ pub enum SeatCommand {
|
||||||
UseHardwareCursor(UseHardwareCursorArgs),
|
UseHardwareCursor(UseHardwareCursorArgs),
|
||||||
/// Set the size of the cursor.
|
/// Set the size of the cursor.
|
||||||
SetCursorSize(SetCursorSizeArgs),
|
SetCursorSize(SetCursorSizeArgs),
|
||||||
|
/// Configure the simple, XCompose based input method.
|
||||||
|
SimpleIm(SimpleImArgs),
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Args, Debug, Clone)]
|
||||||
|
pub struct SimpleImArgs {
|
||||||
|
#[clap(subcommand)]
|
||||||
|
pub command: SimpleImCommand,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Subcommand, Debug, Clone)]
|
||||||
|
pub enum SimpleImCommand {
|
||||||
|
/// Enable the simple IM.
|
||||||
|
///
|
||||||
|
/// Even if the IM is enabled, it will not be used if an external IM is running.
|
||||||
|
Enable,
|
||||||
|
/// Disable the simple IM.
|
||||||
|
Disable,
|
||||||
|
/// Reload the simple IM.
|
||||||
|
///
|
||||||
|
/// This is useful if you change the XCompose files after starting the compositor.
|
||||||
|
Reload,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for SeatCommand {
|
impl Default for SeatCommand {
|
||||||
|
|
@ -460,6 +482,27 @@ impl Input {
|
||||||
size: a.size,
|
size: a.size,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
SeatCommand::SimpleIm(a) => match a.command {
|
||||||
|
SimpleImCommand::Enable | SimpleImCommand::Disable => {
|
||||||
|
self.handle_error(input, |e| {
|
||||||
|
eprintln!("Could not enable/disable the simple IM: {}", e);
|
||||||
|
});
|
||||||
|
tc.send(jay_input::SetSimpleImEnabled {
|
||||||
|
self_id: input,
|
||||||
|
seat: &args.seat,
|
||||||
|
enabled: matches!(a.command, SimpleImCommand::Enable) as _,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
SimpleImCommand::Reload => {
|
||||||
|
self.handle_error(input, |e| {
|
||||||
|
eprintln!("Could not reload the simple IM: {}", e);
|
||||||
|
});
|
||||||
|
tc.send(jay_input::ReloadSimpleIm {
|
||||||
|
self_id: input,
|
||||||
|
seat: &args.seat,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
tc.round_trip().await;
|
tc.round_trip().await;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ impl Global for JayCompositorGlobal {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn version(&self) -> u32 {
|
fn version(&self) -> u32 {
|
||||||
21
|
22
|
||||||
}
|
}
|
||||||
|
|
||||||
fn required_caps(&self) -> ClientCaps {
|
fn required_caps(&self) -> ClientCaps {
|
||||||
|
|
|
||||||
|
|
@ -515,6 +515,30 @@ impl JayInputRequestHandler for JayInput {
|
||||||
Ok(())
|
Ok(())
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn set_simple_im_enabled(
|
||||||
|
&self,
|
||||||
|
req: SetSimpleImEnabled<'_>,
|
||||||
|
_slf: &Rc<Self>,
|
||||||
|
) -> Result<(), Self::Error> {
|
||||||
|
self.or_error(|| {
|
||||||
|
let seat = self.seat(req.seat)?;
|
||||||
|
seat.set_simple_im_enabled(req.enabled != 0);
|
||||||
|
Ok(())
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fn reload_simple_im(
|
||||||
|
&self,
|
||||||
|
req: ReloadSimpleIm<'_>,
|
||||||
|
_slf: &Rc<Self>,
|
||||||
|
) -> Result<(), Self::Error> {
|
||||||
|
self.or_error(|| {
|
||||||
|
let seat = self.seat(req.seat)?;
|
||||||
|
seat.reload_simple_im();
|
||||||
|
Ok(())
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object_base! {
|
object_base! {
|
||||||
|
|
|
||||||
|
|
@ -335,7 +335,7 @@ impl ToolClient {
|
||||||
self_id: s.registry,
|
self_id: s.registry,
|
||||||
name: s.jay_compositor.0,
|
name: s.jay_compositor.0,
|
||||||
interface: JayCompositor.name(),
|
interface: JayCompositor.name(),
|
||||||
version: s.jay_compositor.1.min(21),
|
version: s.jay_compositor.1.min(22),
|
||||||
id: id.into(),
|
id: id.into(),
|
||||||
});
|
});
|
||||||
self.jay_compositor.set(Some(id));
|
self.jay_compositor.set(Some(id));
|
||||||
|
|
|
||||||
|
|
@ -134,6 +134,15 @@ request set_middle_button_emulation (since = 19) {
|
||||||
enabled: u32,
|
enabled: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
request set_simple_im_enabled (since = 22) {
|
||||||
|
seat: str,
|
||||||
|
enabled: u32,
|
||||||
|
}
|
||||||
|
|
||||||
|
request reload_simple_im (since = 22) {
|
||||||
|
seat: str,
|
||||||
|
}
|
||||||
|
|
||||||
# events
|
# events
|
||||||
|
|
||||||
event seat {
|
event seat {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue