fix: use cosmic config to load config
This commit is contained in:
parent
b9723dd5e0
commit
41d0893b49
2 changed files with 5 additions and 28 deletions
|
|
@ -11,8 +11,7 @@ use cctk::sctk::reexports::calloop::channel::Sender;
|
||||||
use cctk::toplevel_info::ToplevelInfo;
|
use cctk::toplevel_info::ToplevelInfo;
|
||||||
use cctk::wayland_client::protocol::wl_data_device_manager::DndAction;
|
use cctk::wayland_client::protocol::wl_data_device_manager::DndAction;
|
||||||
use cctk::wayland_client::protocol::wl_seat::WlSeat;
|
use cctk::wayland_client::protocol::wl_seat::WlSeat;
|
||||||
use cosmic::cosmic_config;
|
use cosmic::cosmic_config::{self, Config, CosmicConfigEntry};
|
||||||
use cosmic::cosmic_config::Config;
|
|
||||||
use cosmic::iced;
|
use cosmic::iced;
|
||||||
use cosmic::iced::subscription::events_with;
|
use cosmic::iced::subscription::events_with;
|
||||||
use cosmic::iced::wayland::actions::data_device::DataFromMimeType;
|
use cosmic::iced::wayland::actions::data_device::DataFromMimeType;
|
||||||
|
|
@ -376,7 +375,10 @@ impl cosmic::Application for CosmicAppList {
|
||||||
core: cosmic::app::Core,
|
core: cosmic::app::Core,
|
||||||
_flags: Self::Flags,
|
_flags: Self::Flags,
|
||||||
) -> (Self, iced::Command<cosmic::app::Message<Self::Message>>) {
|
) -> (Self, iced::Command<cosmic::app::Message<Self::Message>>) {
|
||||||
let config = config::AppListConfig::load().unwrap_or_default();
|
let config = Config::new(APP_ID, 1)
|
||||||
|
.ok()
|
||||||
|
.and_then(|c| AppListConfig::get_entry(&c).ok())
|
||||||
|
.unwrap_or_default();
|
||||||
let mut self_ = Self {
|
let mut self_ = Self {
|
||||||
core,
|
core,
|
||||||
favorite_list: desktop_info_for_app_ids(config.favorites.clone())
|
favorite_list: desktop_info_for_app_ids(config.favorites.clone())
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,7 @@
|
||||||
use anyhow::anyhow;
|
|
||||||
|
|
||||||
use cosmic::cosmic_config::cosmic_config_derive::CosmicConfigEntry;
|
use cosmic::cosmic_config::cosmic_config_derive::CosmicConfigEntry;
|
||||||
use cosmic::cosmic_config::{self, Config, CosmicConfigEntry};
|
use cosmic::cosmic_config::{self, Config, CosmicConfigEntry};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use std::fs::File;
|
|
||||||
use std::path::PathBuf;
|
|
||||||
use xdg::BaseDirectories;
|
|
||||||
pub const APP_ID: &str = "com.system76.CosmicAppList";
|
pub const APP_ID: &str = "com.system76.CosmicAppList";
|
||||||
pub const VERSION: &str = "0.1.0";
|
pub const VERSION: &str = "0.1.0";
|
||||||
|
|
||||||
|
|
@ -24,26 +19,6 @@ pub struct AppListConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AppListConfig {
|
impl AppListConfig {
|
||||||
// TODO async?
|
|
||||||
/// load config with the provided name
|
|
||||||
pub fn load() -> anyhow::Result<Self> {
|
|
||||||
let mut relative_path = PathBuf::from(APP_ID);
|
|
||||||
relative_path.push("config.ron");
|
|
||||||
let file = match BaseDirectories::new()
|
|
||||||
.ok()
|
|
||||||
.and_then(|dirs| dirs.find_config_file(relative_path))
|
|
||||||
.and_then(|p| File::open(p).ok())
|
|
||||||
{
|
|
||||||
Some(path) => path,
|
|
||||||
_ => {
|
|
||||||
anyhow::bail!("Failed to load config");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
ron::de::from_reader::<_, Self>(file)
|
|
||||||
.map_err(|err| anyhow!("Failed to parse config file: {}", err))
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn add_favorite(&mut self, id: String, config: &Config) {
|
pub fn add_favorite(&mut self, id: String, config: &Config) {
|
||||||
if !self.favorites.contains(&id) {
|
if !self.favorites.contains(&id) {
|
||||||
self.favorites.push(id);
|
self.favorites.push(id);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue