From 5225bc9e558cd87ed54271e47dcddaac2d5bcf62 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Tue, 5 Sep 2023 12:58:51 +0400 Subject: Add configuration file --- src/niri.rs | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'src/niri.rs') diff --git a/src/niri.rs b/src/niri.rs index 88a11e8f..23b8f3b1 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -56,6 +56,7 @@ use smithay::wayland::tablet_manager::TabletManagerState; use time::OffsetDateTime; use crate::backend::{Backend, Tty, Winit}; +use crate::config::Config; use crate::dbus::mutter_service_channel::ServiceChannel; use crate::frame_clock::FrameClock; use crate::layout::{MonitorRenderElement, MonitorSet}; @@ -115,12 +116,14 @@ pub struct OutputState { } pub struct State { + pub config: Config, pub backend: Backend, pub niri: Niri, } impl State { pub fn new( + config: Config, event_loop: LoopHandle<'static, LoopData>, stop_signal: LoopSignal, display: &mut Display, @@ -134,10 +137,20 @@ impl State { Backend::Tty(Tty::new(event_loop.clone())) }; - let mut niri = Niri::new(event_loop, stop_signal, display, backend.seat_name()); + let mut niri = Niri::new( + &config, + event_loop, + stop_signal, + display, + backend.seat_name(), + ); backend.init(&mut niri); - Self { backend, niri } + Self { + config, + backend, + niri, + } } pub fn move_cursor(&mut self, location: Point) { @@ -178,6 +191,7 @@ impl State { impl Niri { pub fn new( + config: &Config, event_loop: LoopHandle<'static, LoopData>, stop_signal: LoopSignal, display: &mut Display, @@ -202,11 +216,12 @@ impl Niri { PresentationState::new::(&display_handle, CLOCK_MONOTONIC as u32); let mut seat: Seat = seat_state.new_wl_seat(&display_handle, seat_name); - // FIXME: get Xkb and repeat interval from GNOME dconf. let xkb = XkbConfig { - layout: "us,ru", - options: Some("grp:win_space_toggle,compose:ralt,ctrl:nocaps".to_owned()), - ..Default::default() + rules: &config.input.keyboard.xkb.rules, + model: &config.input.keyboard.xkb.model, + layout: &config.input.keyboard.xkb.layout.as_deref().unwrap_or("us"), + variant: &config.input.keyboard.xkb.variant, + options: config.input.keyboard.xkb.options.clone(), }; seat.add_keyboard(xkb, 400, 30).unwrap(); seat.add_pointer(); -- cgit