improv(input-sources): gracefully exit if keyboard layouts data could not be obtained
This commit is contained in:
parent
33cb23f04f
commit
b9308af4b7
3 changed files with 18 additions and 5 deletions
|
|
@ -9,6 +9,15 @@ mod localize;
|
||||||
mod window;
|
mod window;
|
||||||
pub fn run() -> cosmic::iced::Result {
|
pub fn run() -> cosmic::iced::Result {
|
||||||
localize::localize();
|
localize::localize();
|
||||||
|
|
||||||
|
let layouts = match xkb_data::keyboard_layouts() {
|
||||||
|
Ok(layouts) => layouts,
|
||||||
|
Err(why) => {
|
||||||
|
tracing::error!("could not get keyboard layouts data: {:?}", why);
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
let (config_handler, config) = match cosmic_config::Config::new(window::ID, CONFIG_VERSION) {
|
let (config_handler, config) = match cosmic_config::Config::new(window::ID, CONFIG_VERSION) {
|
||||||
Ok(config_handler) => {
|
Ok(config_handler) => {
|
||||||
let config = match Config::get_entry(&config_handler) {
|
let config = match Config::get_entry(&config_handler) {
|
||||||
|
|
@ -46,8 +55,9 @@ pub fn run() -> cosmic::iced::Result {
|
||||||
let flags = Flags {
|
let flags = Flags {
|
||||||
comp_config,
|
comp_config,
|
||||||
comp_config_handler,
|
comp_config_handler,
|
||||||
config_handler: config_handler,
|
config_handler,
|
||||||
config: config,
|
config,
|
||||||
|
layouts,
|
||||||
};
|
};
|
||||||
cosmic::applet::run::<Window>(true, flags)
|
cosmic::applet::run::<Window>(true, flags)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
fn main() -> cosmic::iced::Result {
|
fn main() -> cosmic::iced::Result {
|
||||||
|
tracing_subscriber::fmt::init();
|
||||||
|
let _ = tracing_log::LogTracer::init();
|
||||||
|
|
||||||
cosmic_applet_input_sources::run()
|
cosmic_applet_input_sources::run()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,12 +38,13 @@ pub enum Message {
|
||||||
SetActiveLayout(ActiveLayout),
|
SetActiveLayout(ActiveLayout),
|
||||||
KeyboardSettings,
|
KeyboardSettings,
|
||||||
}
|
}
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Debug)]
|
||||||
pub struct Flags {
|
pub struct Flags {
|
||||||
pub config_handler: Option<cosmic_config::Config>,
|
pub config_handler: Option<cosmic_config::Config>,
|
||||||
pub config: Config,
|
pub config: Config,
|
||||||
pub comp_config: CosmicCompConfig,
|
pub comp_config: CosmicCompConfig,
|
||||||
pub comp_config_handler: Option<cosmic_config::Config>,
|
pub comp_config_handler: Option<cosmic_config::Config>,
|
||||||
|
pub layouts: KeyboardLayouts,
|
||||||
}
|
}
|
||||||
impl cosmic::Application for Window {
|
impl cosmic::Application for Window {
|
||||||
type Executor = cosmic::SingleThreadExecutor;
|
type Executor = cosmic::SingleThreadExecutor;
|
||||||
|
|
@ -64,10 +65,9 @@ impl cosmic::Application for Window {
|
||||||
core: Core,
|
core: Core,
|
||||||
flags: Self::Flags,
|
flags: Self::Flags,
|
||||||
) -> (Self, Command<cosmic::app::Message<Self::Message>>) {
|
) -> (Self, Command<cosmic::app::Message<Self::Message>>) {
|
||||||
let layouts = xkb_data::keyboard_layouts().unwrap();
|
|
||||||
let window = Window {
|
let window = Window {
|
||||||
comp_config_handler: flags.comp_config_handler,
|
comp_config_handler: flags.comp_config_handler,
|
||||||
layouts,
|
layouts: flags.layouts,
|
||||||
core,
|
core,
|
||||||
config: flags.config,
|
config: flags.config,
|
||||||
config_handler: flags.config_handler,
|
config_handler: flags.config_handler,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue