feat: add applications page
This commit is contained in:
parent
5f8e9d1327
commit
cc8586e380
15 changed files with 274 additions and 120 deletions
|
|
@ -4,6 +4,7 @@
|
||||||
use crate::config::Config;
|
use crate::config::Config;
|
||||||
#[cfg(feature = "page-accessibility")]
|
#[cfg(feature = "page-accessibility")]
|
||||||
use crate::pages::accessibility;
|
use crate::pages::accessibility;
|
||||||
|
use crate::pages::applications;
|
||||||
#[cfg(feature = "page-bluetooth")]
|
#[cfg(feature = "page-bluetooth")]
|
||||||
use crate::pages::bluetooth;
|
use crate::pages::bluetooth;
|
||||||
use crate::pages::desktop::{self, appearance};
|
use crate::pages::desktop::{self, appearance};
|
||||||
|
|
@ -84,12 +85,13 @@ impl SettingsApp {
|
||||||
#[cfg(feature = "page-about")]
|
#[cfg(feature = "page-about")]
|
||||||
PageCommands::About => self.pages.page_id::<system::about::Page>(),
|
PageCommands::About => self.pages.page_id::<system::about::Page>(),
|
||||||
PageCommands::Appearance => self.pages.page_id::<desktop::appearance::Page>(),
|
PageCommands::Appearance => self.pages.page_id::<desktop::appearance::Page>(),
|
||||||
|
PageCommands::Applications => self.pages.page_id::<applications::Page>(),
|
||||||
#[cfg(feature = "page-bluetooth")]
|
#[cfg(feature = "page-bluetooth")]
|
||||||
PageCommands::Bluetooth => self.pages.page_id::<bluetooth::Page>(),
|
PageCommands::Bluetooth => self.pages.page_id::<bluetooth::Page>(),
|
||||||
#[cfg(feature = "page-date")]
|
#[cfg(feature = "page-date")]
|
||||||
PageCommands::DateTime => self.pages.page_id::<time::date::Page>(),
|
PageCommands::DateTime => self.pages.page_id::<time::date::Page>(),
|
||||||
#[cfg(feature = "page-default-apps")]
|
#[cfg(feature = "page-default-apps")]
|
||||||
PageCommands::DefaultApps => self.pages.page_id::<system::default_apps::Page>(),
|
PageCommands::DefaultApps => self.pages.page_id::<applications::default_apps::Page>(),
|
||||||
PageCommands::Desktop => self.pages.page_id::<desktop::Page>(),
|
PageCommands::Desktop => self.pages.page_id::<desktop::Page>(),
|
||||||
#[cfg(feature = "page-display")]
|
#[cfg(feature = "page-display")]
|
||||||
PageCommands::Displays => self.pages.page_id::<display::Page>(),
|
PageCommands::Displays => self.pages.page_id::<display::Page>(),
|
||||||
|
|
@ -100,6 +102,9 @@ impl SettingsApp {
|
||||||
PageCommands::Input => self.pages.page_id::<input::Page>(),
|
PageCommands::Input => self.pages.page_id::<input::Page>(),
|
||||||
#[cfg(feature = "page-input")]
|
#[cfg(feature = "page-input")]
|
||||||
PageCommands::Keyboard => self.pages.page_id::<input::keyboard::Page>(),
|
PageCommands::Keyboard => self.pages.page_id::<input::keyboard::Page>(),
|
||||||
|
PageCommands::LegacyApplications => self
|
||||||
|
.pages
|
||||||
|
.page_id::<applications::legacy_applications::Page>(),
|
||||||
#[cfg(feature = "page-input")]
|
#[cfg(feature = "page-input")]
|
||||||
PageCommands::Mouse => self.pages.page_id::<input::mouse::Page>(),
|
PageCommands::Mouse => self.pages.page_id::<input::mouse::Page>(),
|
||||||
#[cfg(feature = "page-networking")]
|
#[cfg(feature = "page-networking")]
|
||||||
|
|
@ -214,6 +219,7 @@ impl cosmic::Application for SettingsApp {
|
||||||
app.insert_page::<power::Page>();
|
app.insert_page::<power::Page>();
|
||||||
#[cfg(feature = "page-input")]
|
#[cfg(feature = "page-input")]
|
||||||
app.insert_page::<input::Page>();
|
app.insert_page::<input::Page>();
|
||||||
|
app.insert_page::<applications::Page>();
|
||||||
app.insert_page::<time::Page>();
|
app.insert_page::<time::Page>();
|
||||||
app.insert_page::<system::Page>();
|
app.insert_page::<system::Page>();
|
||||||
|
|
||||||
|
|
@ -390,6 +396,10 @@ impl cosmic::Application for SettingsApp {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
crate::pages::Message::Applications(message) => {
|
||||||
|
page::update!(self.pages, message, applications::Page);
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(feature = "page-bluetooth")]
|
#[cfg(feature = "page-bluetooth")]
|
||||||
crate::pages::Message::Bluetooth(message) => {
|
crate::pages::Message::Bluetooth(message) => {
|
||||||
if let Some(page) = self.pages.page_mut::<bluetooth::Page>() {
|
if let Some(page) = self.pages.page_mut::<bluetooth::Page>() {
|
||||||
|
|
@ -406,7 +416,7 @@ impl cosmic::Application for SettingsApp {
|
||||||
|
|
||||||
#[cfg(feature = "page-default-apps")]
|
#[cfg(feature = "page-default-apps")]
|
||||||
crate::pages::Message::DefaultApps(message) => {
|
crate::pages::Message::DefaultApps(message) => {
|
||||||
if let Some(page) = self.pages.page_mut::<system::default_apps::Page>() {
|
if let Some(page) = self.pages.page_mut::<applications::default_apps::Page>() {
|
||||||
return page.update(message).map(Into::into);
|
return page.update(message).map(Into::into);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -478,6 +488,10 @@ impl cosmic::Application for SettingsApp {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
crate::pages::Message::LegacyApplications(message) => {
|
||||||
|
page::update!(self.pages, message, applications::legacy_applications::Page);
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(feature = "page-input")]
|
#[cfg(feature = "page-input")]
|
||||||
crate::pages::Message::ManageWindowShortcuts(message) => {
|
crate::pages::Message::ManageWindowShortcuts(message) => {
|
||||||
if let Some(page) = self
|
if let Some(page) = self
|
||||||
|
|
@ -614,7 +628,7 @@ impl cosmic::Application for SettingsApp {
|
||||||
}
|
}
|
||||||
|
|
||||||
crate::pages::Message::StartupApps(message) => {
|
crate::pages::Message::StartupApps(message) => {
|
||||||
if let Some(page) = self.pages.page_mut::<system::startup_apps::Page>() {
|
if let Some(page) = self.pages.page_mut::<applications::startup_apps::Page>() {
|
||||||
return page.update(message).map(Into::into);
|
return page.update(message).map(Into::into);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,8 @@ pub enum PageCommands {
|
||||||
About,
|
About,
|
||||||
/// Appearance settings page
|
/// Appearance settings page
|
||||||
Appearance,
|
Appearance,
|
||||||
|
/// Applications settings page
|
||||||
|
Applications,
|
||||||
/// Bluetooth settings page
|
/// Bluetooth settings page
|
||||||
#[cfg(feature = "page-bluetooth")]
|
#[cfg(feature = "page-bluetooth")]
|
||||||
Bluetooth,
|
Bluetooth,
|
||||||
|
|
@ -74,6 +76,8 @@ pub enum PageCommands {
|
||||||
/// Keyboard settings page
|
/// Keyboard settings page
|
||||||
#[cfg(feature = "page-input")]
|
#[cfg(feature = "page-input")]
|
||||||
Keyboard,
|
Keyboard,
|
||||||
|
/// Legacy Applications settings page
|
||||||
|
LegacyApplications,
|
||||||
/// Mouse settings page
|
/// Mouse settings page
|
||||||
#[cfg(feature = "page-input")]
|
#[cfg(feature = "page-input")]
|
||||||
Mouse,
|
Mouse,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
use cosmic::{
|
use cosmic::{
|
||||||
app,
|
|
||||||
cosmic_theme::{CosmicPalette, ThemeBuilder},
|
cosmic_theme::{CosmicPalette, ThemeBuilder},
|
||||||
iced_core::text::Wrapping,
|
iced_core::text::Wrapping,
|
||||||
theme::{self, CosmicTheme},
|
theme::{self, CosmicTheme},
|
||||||
|
|
|
||||||
121
cosmic-settings/src/pages/applications/legacy_applications.rs
Normal file
121
cosmic-settings/src/pages/applications/legacy_applications.rs
Normal file
|
|
@ -0,0 +1,121 @@
|
||||||
|
// Copyright 2023 System76 <info@system76.com>
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
|
||||||
|
use cosmic::{
|
||||||
|
cosmic_config::{self, ConfigGet, ConfigSet},
|
||||||
|
iced::Length,
|
||||||
|
widget::{self, text},
|
||||||
|
Apply, Element,
|
||||||
|
};
|
||||||
|
use cosmic_settings_page::Section;
|
||||||
|
use cosmic_settings_page::{self as page, section};
|
||||||
|
use slab::Slab;
|
||||||
|
use slotmap::SlotMap;
|
||||||
|
use tracing::error;
|
||||||
|
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
pub enum Message {
|
||||||
|
SetXwaylandDescaling(bool),
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Page {
|
||||||
|
comp_config: cosmic_config::Config,
|
||||||
|
comp_config_descale_xwayland: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for Page {
|
||||||
|
fn default() -> Self {
|
||||||
|
let comp_config = cosmic_config::Config::new("com.system76.CosmicComp", 1).unwrap();
|
||||||
|
let comp_config_descale_xwayland =
|
||||||
|
comp_config.get("descale_xwayland").unwrap_or_else(|err| {
|
||||||
|
if err.is_err() {
|
||||||
|
error!(?err, "Failed to read config 'descale_xwayland'");
|
||||||
|
}
|
||||||
|
|
||||||
|
false
|
||||||
|
});
|
||||||
|
Self {
|
||||||
|
comp_config,
|
||||||
|
comp_config_descale_xwayland,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl page::Page<crate::pages::Message> for Page {
|
||||||
|
fn content(
|
||||||
|
&self,
|
||||||
|
sections: &mut SlotMap<section::Entity, Section<crate::pages::Message>>,
|
||||||
|
) -> Option<page::Content> {
|
||||||
|
Some(vec![sections.insert(
|
||||||
|
// Xwayland scaling options
|
||||||
|
legacy_application_scaling(),
|
||||||
|
)])
|
||||||
|
}
|
||||||
|
|
||||||
|
fn info(&self) -> page::Info {
|
||||||
|
page::Info::new(
|
||||||
|
"legacy-applications",
|
||||||
|
"preferences-X11-applications-symbolic",
|
||||||
|
)
|
||||||
|
.title(fl!("legacy-applications"))
|
||||||
|
.description(fl!("legacy-applications", "desc"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl page::AutoBind<crate::pages::Message> for Page {}
|
||||||
|
|
||||||
|
impl Page {
|
||||||
|
pub fn update(&mut self, message: Message) {
|
||||||
|
match message {
|
||||||
|
Message::SetXwaylandDescaling(descale) => {
|
||||||
|
self.comp_config_descale_xwayland = descale;
|
||||||
|
if let Err(err) = self
|
||||||
|
.comp_config
|
||||||
|
.set("descale_xwayland", self.comp_config_descale_xwayland)
|
||||||
|
{
|
||||||
|
error!(?err, "Failed to set config 'descale_xwayland'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn legacy_application_scaling() -> Section<crate::pages::Message> {
|
||||||
|
let mut descriptions = Slab::new();
|
||||||
|
|
||||||
|
let system = descriptions.insert(fl!("legacy-app-scaling", "scaled-by-system"));
|
||||||
|
let system_desc = descriptions.insert(fl!("legacy-app-scaling", "system-description"));
|
||||||
|
let native = descriptions.insert(fl!("legacy-app-scaling", "scaled-natively"));
|
||||||
|
let native_desc = descriptions.insert(fl!("legacy-app-scaling", "native-description"));
|
||||||
|
|
||||||
|
Section::default()
|
||||||
|
.title(fl!("legacy-app-scaling"))
|
||||||
|
.descriptions(descriptions)
|
||||||
|
.view::<Page>(move |_binder, page, section| {
|
||||||
|
let descriptions = §ion.descriptions;
|
||||||
|
widget::settings::section()
|
||||||
|
.title(§ion.title)
|
||||||
|
.add(widget::settings::item_row(vec![widget::radio(
|
||||||
|
widget::column()
|
||||||
|
.push(text::body(&descriptions[system]))
|
||||||
|
.push(text::caption(&descriptions[system_desc])),
|
||||||
|
false,
|
||||||
|
Some(page.comp_config_descale_xwayland),
|
||||||
|
Message::SetXwaylandDescaling,
|
||||||
|
)
|
||||||
|
.width(Length::Fill)
|
||||||
|
.into()]))
|
||||||
|
.add(widget::settings::item_row(vec![widget::radio(
|
||||||
|
widget::column()
|
||||||
|
.push(text::body(&descriptions[native]))
|
||||||
|
.push(text::caption(&descriptions[native_desc])),
|
||||||
|
true,
|
||||||
|
Some(page.comp_config_descale_xwayland),
|
||||||
|
Message::SetXwaylandDescaling,
|
||||||
|
)
|
||||||
|
.width(Length::Fill)
|
||||||
|
.into()]))
|
||||||
|
.apply(Element::from)
|
||||||
|
.map(crate::pages::Message::LegacyApplications)
|
||||||
|
})
|
||||||
|
}
|
||||||
51
cosmic-settings/src/pages/applications/mod.rs
Normal file
51
cosmic-settings/src/pages/applications/mod.rs
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
// Copyright 2023 System76 <info@system76.com>
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
|
||||||
|
#[cfg(feature = "page-default-apps")]
|
||||||
|
pub mod default_apps;
|
||||||
|
|
||||||
|
pub mod startup_apps;
|
||||||
|
|
||||||
|
pub mod legacy_applications;
|
||||||
|
|
||||||
|
use cosmic_settings_page as page;
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct Page {
|
||||||
|
entity: page::Entity,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl page::Page<crate::pages::Message> for Page {
|
||||||
|
fn set_id(&mut self, entity: page::Entity) {
|
||||||
|
self.entity = entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn info(&self) -> page::Info {
|
||||||
|
page::Info::new("applications", "preferences-applications-symbolic")
|
||||||
|
.title(fl!("applications"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl page::AutoBind<crate::pages::Message> for Page {
|
||||||
|
fn sub_pages(
|
||||||
|
mut page: page::Insert<crate::pages::Message>,
|
||||||
|
) -> page::Insert<crate::pages::Message> {
|
||||||
|
#[cfg(feature = "page-default-apps")]
|
||||||
|
{
|
||||||
|
page = page.sub_page::<default_apps::Page>();
|
||||||
|
}
|
||||||
|
|
||||||
|
page = page.sub_page::<startup_apps::Page>();
|
||||||
|
|
||||||
|
page = page.sub_page::<legacy_applications::Page>();
|
||||||
|
|
||||||
|
page
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Copy, Clone, Debug)]
|
||||||
|
pub enum Message {}
|
||||||
|
|
||||||
|
impl Page {
|
||||||
|
pub fn update(&mut self, _message: Message) {}
|
||||||
|
}
|
||||||
|
|
@ -97,7 +97,7 @@ impl page::AutoBind<crate::pages::Message> for Page {}
|
||||||
|
|
||||||
impl page::Page<crate::pages::Message> for Page {
|
impl page::Page<crate::pages::Message> for Page {
|
||||||
fn info(&self) -> Info {
|
fn info(&self) -> Info {
|
||||||
page::Info::new("startup-apps", "preferences-default-applications-symbolic")
|
page::Info::new("startup-apps", "system-reboot-symbolic")
|
||||||
.title(fl!("startup-apps"))
|
.title(fl!("startup-apps"))
|
||||||
.description(fl!("startup-apps", "desc"))
|
.description(fl!("startup-apps", "desc"))
|
||||||
}
|
}
|
||||||
|
|
@ -12,7 +12,6 @@ use cosmic::widget::{
|
||||||
self, column, container, dropdown, list_column, segmented_button, tab_bar, text, toggler,
|
self, column, container, dropdown, list_column, segmented_button, tab_bar, text, toggler,
|
||||||
};
|
};
|
||||||
use cosmic::{surface, Apply, Element, Task};
|
use cosmic::{surface, Apply, Element, Task};
|
||||||
use cosmic_config::{ConfigGet, ConfigSet};
|
|
||||||
use cosmic_randr_shell::{
|
use cosmic_randr_shell::{
|
||||||
AdaptiveSyncAvailability, AdaptiveSyncState, List, Output, OutputKey, Transform,
|
AdaptiveSyncAvailability, AdaptiveSyncState, List, Output, OutputKey, Transform,
|
||||||
};
|
};
|
||||||
|
|
@ -23,7 +22,6 @@ use slotmap::{Key, SecondaryMap, SlotMap};
|
||||||
use std::sync::atomic::{AtomicBool, Ordering};
|
use std::sync::atomic::{AtomicBool, Ordering};
|
||||||
use std::{collections::BTreeMap, process::ExitStatus, sync::Arc};
|
use std::{collections::BTreeMap, process::ExitStatus, sync::Arc};
|
||||||
use tokio::sync::oneshot;
|
use tokio::sync::oneshot;
|
||||||
use tracing::error;
|
|
||||||
|
|
||||||
static DPI_SCALES: &[u32] = &[50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300];
|
static DPI_SCALES: &[u32] = &[50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300];
|
||||||
|
|
||||||
|
|
@ -107,7 +105,6 @@ pub enum Message {
|
||||||
/// Available outputs from cosmic-randr.
|
/// Available outputs from cosmic-randr.
|
||||||
randr: Arc<Result<List, cosmic_randr_shell::Error>>,
|
randr: Arc<Result<List, cosmic_randr_shell::Error>>,
|
||||||
},
|
},
|
||||||
SetXwaylandDescaling(bool),
|
|
||||||
Surface(surface::Action),
|
Surface(surface::Action),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -152,23 +149,11 @@ pub struct Page {
|
||||||
/// the instant the setting was changed.
|
/// the instant the setting was changed.
|
||||||
dialog_countdown: usize,
|
dialog_countdown: usize,
|
||||||
show_display_options: bool,
|
show_display_options: bool,
|
||||||
comp_config: cosmic_config::Config,
|
|
||||||
comp_config_descale_xwayland: bool,
|
|
||||||
adjusted_scale: u32,
|
adjusted_scale: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Page {
|
impl Default for Page {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
let comp_config = cosmic_config::Config::new("com.system76.CosmicComp", 1).unwrap();
|
|
||||||
let comp_config_descale_xwayland =
|
|
||||||
comp_config.get("descale_xwayland").unwrap_or_else(|err| {
|
|
||||||
if err.is_err() {
|
|
||||||
error!(?err, "Failed to read config 'descale_xwayland'");
|
|
||||||
}
|
|
||||||
|
|
||||||
false
|
|
||||||
});
|
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
refreshing_page: Arc::new(AtomicBool::new(false)),
|
refreshing_page: Arc::new(AtomicBool::new(false)),
|
||||||
list: List::default(),
|
list: List::default(),
|
||||||
|
|
@ -187,8 +172,6 @@ impl Default for Page {
|
||||||
dialog_countdown: 0,
|
dialog_countdown: 0,
|
||||||
show_display_options: true,
|
show_display_options: true,
|
||||||
adjusted_scale: 0,
|
adjusted_scale: 0,
|
||||||
comp_config,
|
|
||||||
comp_config_descale_xwayland,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -240,8 +223,6 @@ impl page::Page<crate::pages::Message> for Page {
|
||||||
sections.insert(display_arrangement()),
|
sections.insert(display_arrangement()),
|
||||||
// Display configuration
|
// Display configuration
|
||||||
sections.insert(display_configuration()),
|
sections.insert(display_configuration()),
|
||||||
// Xwayland scaling options
|
|
||||||
sections.insert(legacy_applications()),
|
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -618,16 +599,6 @@ impl Page {
|
||||||
self.refreshing_page.store(false, Ordering::SeqCst);
|
self.refreshing_page.store(false, Ordering::SeqCst);
|
||||||
}
|
}
|
||||||
|
|
||||||
Message::SetXwaylandDescaling(descale) => {
|
|
||||||
self.comp_config_descale_xwayland = descale;
|
|
||||||
if let Err(err) = self
|
|
||||||
.comp_config
|
|
||||||
.set("descale_xwayland", self.comp_config_descale_xwayland)
|
|
||||||
{
|
|
||||||
error!(?err, "Failed to set config 'descale_xwayland'");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Message::Surface(a) => {
|
Message::Surface(a) => {
|
||||||
return cosmic::task::message(crate::app::Message::Surface(a));
|
return cosmic::task::message(crate::app::Message::Surface(a));
|
||||||
}
|
}
|
||||||
|
|
@ -1378,46 +1349,6 @@ pub fn display_configuration() -> Section<crate::pages::Message> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn legacy_applications() -> Section<crate::pages::Message> {
|
|
||||||
let mut descriptions = Slab::new();
|
|
||||||
|
|
||||||
let system = descriptions.insert(fl!("legacy-applications", "scaled-by-system"));
|
|
||||||
let system_desc = descriptions.insert(fl!("legacy-applications", "system-description"));
|
|
||||||
let native = descriptions.insert(fl!("legacy-applications", "scaled-natively"));
|
|
||||||
let native_desc = descriptions.insert(fl!("legacy-applications", "native-description"));
|
|
||||||
|
|
||||||
Section::default()
|
|
||||||
.title(fl!("legacy-applications"))
|
|
||||||
.descriptions(descriptions)
|
|
||||||
.view::<Page>(move |_binder, page, section| {
|
|
||||||
let descriptions = §ion.descriptions;
|
|
||||||
widget::settings::section()
|
|
||||||
.title(§ion.title)
|
|
||||||
.add(widget::settings::item_row(vec![widget::radio(
|
|
||||||
widget::column()
|
|
||||||
.push(text::body(&descriptions[system]))
|
|
||||||
.push(text::caption(&descriptions[system_desc])),
|
|
||||||
false,
|
|
||||||
Some(page.comp_config_descale_xwayland),
|
|
||||||
Message::SetXwaylandDescaling,
|
|
||||||
)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into()]))
|
|
||||||
.add(widget::settings::item_row(vec![widget::radio(
|
|
||||||
widget::column()
|
|
||||||
.push(text::body(&descriptions[native]))
|
|
||||||
.push(text::caption(&descriptions[native_desc])),
|
|
||||||
true,
|
|
||||||
Some(page.comp_config_descale_xwayland),
|
|
||||||
Message::SetXwaylandDescaling,
|
|
||||||
)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into()]))
|
|
||||||
.apply(Element::from)
|
|
||||||
.map(crate::pages::Message::Displays)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
fn cache_rates(cached_rates: &mut Vec<String>, rates: &[u32]) {
|
fn cache_rates(cached_rates: &mut Vec<String>, rates: &[u32]) {
|
||||||
cached_rates.clear();
|
cached_rates.clear();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ use cosmic_settings_page::Entity;
|
||||||
|
|
||||||
#[cfg(feature = "page-accessibility")]
|
#[cfg(feature = "page-accessibility")]
|
||||||
pub mod accessibility;
|
pub mod accessibility;
|
||||||
|
pub mod applications;
|
||||||
#[cfg(feature = "page-bluetooth")]
|
#[cfg(feature = "page-bluetooth")]
|
||||||
pub mod bluetooth;
|
pub mod bluetooth;
|
||||||
pub mod desktop;
|
pub mod desktop;
|
||||||
|
|
@ -30,6 +31,7 @@ pub enum Message {
|
||||||
#[cfg(feature = "page-about")]
|
#[cfg(feature = "page-about")]
|
||||||
About(system::about::Message),
|
About(system::about::Message),
|
||||||
Appearance(desktop::appearance::Message),
|
Appearance(desktop::appearance::Message),
|
||||||
|
Applications(applications::Message),
|
||||||
#[cfg(feature = "page-bluetooth")]
|
#[cfg(feature = "page-bluetooth")]
|
||||||
Bluetooth(bluetooth::Message),
|
Bluetooth(bluetooth::Message),
|
||||||
#[cfg(feature = "page-input")]
|
#[cfg(feature = "page-input")]
|
||||||
|
|
@ -37,7 +39,7 @@ pub enum Message {
|
||||||
#[cfg(feature = "page-date")]
|
#[cfg(feature = "page-date")]
|
||||||
DateAndTime(time::date::Message),
|
DateAndTime(time::date::Message),
|
||||||
#[cfg(feature = "page-default-apps")]
|
#[cfg(feature = "page-default-apps")]
|
||||||
DefaultApps(system::default_apps::Message),
|
DefaultApps(applications::default_apps::Message),
|
||||||
Desktop(desktop::Message),
|
Desktop(desktop::Message),
|
||||||
DesktopWallpaper(desktop::wallpaper::Message),
|
DesktopWallpaper(desktop::wallpaper::Message),
|
||||||
#[cfg(feature = "page-workspaces")]
|
#[cfg(feature = "page-workspaces")]
|
||||||
|
|
@ -58,6 +60,7 @@ pub enum Message {
|
||||||
Keyboard(input::keyboard::Message),
|
Keyboard(input::keyboard::Message),
|
||||||
#[cfg(feature = "page-input")]
|
#[cfg(feature = "page-input")]
|
||||||
KeyboardShortcuts(input::keyboard::shortcuts::Message),
|
KeyboardShortcuts(input::keyboard::shortcuts::Message),
|
||||||
|
LegacyApplications(applications::legacy_applications::Message),
|
||||||
#[cfg(feature = "page-input")]
|
#[cfg(feature = "page-input")]
|
||||||
ManageWindowShortcuts(input::keyboard::shortcuts::ShortcutMessage),
|
ManageWindowShortcuts(input::keyboard::shortcuts::ShortcutMessage),
|
||||||
#[cfg(feature = "page-input")]
|
#[cfg(feature = "page-input")]
|
||||||
|
|
@ -77,7 +80,7 @@ pub enum Message {
|
||||||
Region(time::region::Message),
|
Region(time::region::Message),
|
||||||
#[cfg(feature = "page-sound")]
|
#[cfg(feature = "page-sound")]
|
||||||
Sound(sound::Message),
|
Sound(sound::Message),
|
||||||
StartupApps(system::startup_apps::Message),
|
StartupApps(applications::startup_apps::Message),
|
||||||
#[cfg(feature = "page-users")]
|
#[cfg(feature = "page-users")]
|
||||||
User(system::users::Message),
|
User(system::users::Message),
|
||||||
#[cfg(feature = "page-input")]
|
#[cfg(feature = "page-input")]
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,11 @@
|
||||||
|
|
||||||
#[cfg(feature = "page-about")]
|
#[cfg(feature = "page-about")]
|
||||||
pub mod about;
|
pub mod about;
|
||||||
#[cfg(feature = "page-default-apps")]
|
|
||||||
pub mod default_apps;
|
|
||||||
pub mod firmware;
|
pub mod firmware;
|
||||||
#[cfg(feature = "page-users")]
|
#[cfg(feature = "page-users")]
|
||||||
pub mod users;
|
pub mod users;
|
||||||
|
|
||||||
pub mod startup_apps;
|
|
||||||
|
|
||||||
use cosmic_settings_page as page;
|
use cosmic_settings_page as page;
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
|
|
@ -44,13 +41,6 @@ impl page::AutoBind<crate::pages::Message> for Page {
|
||||||
|
|
||||||
page = page.sub_page::<firmware::Page>();
|
page = page.sub_page::<firmware::Page>();
|
||||||
|
|
||||||
#[cfg(feature = "page-default-apps")]
|
|
||||||
{
|
|
||||||
page = page.sub_page::<default_apps::Page>();
|
|
||||||
}
|
|
||||||
|
|
||||||
page = page.sub_page::<startup_apps::Page>();
|
|
||||||
|
|
||||||
page
|
page
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
2
debian/install
vendored
2
debian/install
vendored
|
|
@ -3,6 +3,7 @@
|
||||||
/usr/share/applications/com.system76.CosmicSettings.About.desktop
|
/usr/share/applications/com.system76.CosmicSettings.About.desktop
|
||||||
/usr/share/applications/com.system76.CosmicSettings.Accessibility.desktop
|
/usr/share/applications/com.system76.CosmicSettings.Accessibility.desktop
|
||||||
/usr/share/applications/com.system76.CosmicSettings.Appearance.desktop
|
/usr/share/applications/com.system76.CosmicSettings.Appearance.desktop
|
||||||
|
/usr/share/applications/com.system76.CosmicSettings.Applications.desktop
|
||||||
/usr/share/applications/com.system76.CosmicSettings.Bluetooth.desktop
|
/usr/share/applications/com.system76.CosmicSettings.Bluetooth.desktop
|
||||||
/usr/share/applications/com.system76.CosmicSettings.DateTime.desktop
|
/usr/share/applications/com.system76.CosmicSettings.DateTime.desktop
|
||||||
/usr/share/applications/com.system76.CosmicSettings.DefaultApps.desktop
|
/usr/share/applications/com.system76.CosmicSettings.DefaultApps.desktop
|
||||||
|
|
@ -12,6 +13,7 @@
|
||||||
/usr/share/applications/com.system76.CosmicSettings.Firmware.desktop
|
/usr/share/applications/com.system76.CosmicSettings.Firmware.desktop
|
||||||
/usr/share/applications/com.system76.CosmicSettings.Input.desktop
|
/usr/share/applications/com.system76.CosmicSettings.Input.desktop
|
||||||
/usr/share/applications/com.system76.CosmicSettings.Keyboard.desktop
|
/usr/share/applications/com.system76.CosmicSettings.Keyboard.desktop
|
||||||
|
/usr/share/applications/com.system76.CosmicSettings.LegacyApplications.desktop
|
||||||
/usr/share/applications/com.system76.CosmicSettings.Mouse.desktop
|
/usr/share/applications/com.system76.CosmicSettings.Mouse.desktop
|
||||||
/usr/share/applications/com.system76.CosmicSettings.Network.desktop
|
/usr/share/applications/com.system76.CosmicSettings.Network.desktop
|
||||||
/usr/share/applications/com.system76.CosmicSettings.Notifications.desktop
|
/usr/share/applications/com.system76.CosmicSettings.Notifications.desktop
|
||||||
|
|
|
||||||
|
|
@ -428,12 +428,6 @@ dialog = Dialog
|
||||||
.change-prompt = Settings changes will automatically revert in { $time } seconds.
|
.change-prompt = Settings changes will automatically revert in { $time } seconds.
|
||||||
.revert-settings = Revert Settings
|
.revert-settings = Revert Settings
|
||||||
|
|
||||||
legacy-applications = X11 Window System Application Scaling
|
|
||||||
.scaled-by-system = Scale all X11 Applications
|
|
||||||
.system-description = X11 applications will appear blurry on HiDPI screens.
|
|
||||||
.scaled-natively = Render X11 Applications at native resolution
|
|
||||||
.native-description = X11 applications that don't support scaling will be small when HiDPI displays are in use. Enable for games to utilize the full monitor resolution.
|
|
||||||
|
|
||||||
## Sound
|
## Sound
|
||||||
|
|
||||||
sound = Sound
|
sound = Sound
|
||||||
|
|
@ -778,6 +772,47 @@ add-language = Add language
|
||||||
install-additional-languages = Install additional languages
|
install-additional-languages = Install additional languages
|
||||||
region = Region
|
region = Region
|
||||||
|
|
||||||
|
## Applications
|
||||||
|
|
||||||
|
applications = Applications
|
||||||
|
|
||||||
|
## Applications: Default Applications
|
||||||
|
|
||||||
|
default-apps = Default Applications
|
||||||
|
.desc = Default web browser, mail client, file browser, and other applications.
|
||||||
|
.web-browser = Web browser
|
||||||
|
.file-manager = File manager
|
||||||
|
.mail-client = Mail client
|
||||||
|
.music = Music
|
||||||
|
.video = Video
|
||||||
|
.photos = Photos
|
||||||
|
.calendar = Calendar
|
||||||
|
.terminal = Terminal
|
||||||
|
.other-associations = Other Associations
|
||||||
|
.text-editor = Text Editor
|
||||||
|
|
||||||
|
## Applications: Startup Applications
|
||||||
|
|
||||||
|
startup-apps = Startup Applications
|
||||||
|
.desc = Configure applications which run on login.
|
||||||
|
.add = Add app
|
||||||
|
.user = User specific applications
|
||||||
|
.user-description = These applications are launched when you log into your current user.
|
||||||
|
.remove-dialog-title = Remove { $name }?
|
||||||
|
.remove-dialog-description = Are you sure you want to remove this as a startup application?
|
||||||
|
.search-for-application = Search for application
|
||||||
|
|
||||||
|
## Applications: Legacy Applications
|
||||||
|
|
||||||
|
legacy-applications = X11 Applications Compatibility
|
||||||
|
.desc = X11 Window system application scaling and Global shortcuts.
|
||||||
|
|
||||||
|
legacy-app-scaling = X11 Window System Application Scaling
|
||||||
|
.scaled-by-system = Scale all X11 Applications
|
||||||
|
.system-description = X11 applications will appear blurry on HiDPI screens.
|
||||||
|
.scaled-natively = Render X11 Applications at native resolution
|
||||||
|
.native-description = X11 applications that don't support scaling will be small when HiDPI displays are in use. Enable for games to utilize the full monitor resolution.
|
||||||
|
|
||||||
## System
|
## System
|
||||||
|
|
||||||
system = System & Accounts
|
system = System & Accounts
|
||||||
|
|
@ -825,29 +860,3 @@ administrator = Administrator
|
||||||
add-user = Add user
|
add-user = Add user
|
||||||
remove-user = Remove user
|
remove-user = Remove user
|
||||||
full-name = Full name
|
full-name = Full name
|
||||||
|
|
||||||
## System: Default Applications
|
|
||||||
|
|
||||||
default-apps = Default Applications
|
|
||||||
.desc = Default web browser, mail client, file browser, and other applications.
|
|
||||||
.web-browser = Web browser
|
|
||||||
.file-manager = File manager
|
|
||||||
.mail-client = Mail client
|
|
||||||
.music = Music
|
|
||||||
.video = Video
|
|
||||||
.photos = Photos
|
|
||||||
.calendar = Calendar
|
|
||||||
.terminal = Terminal
|
|
||||||
.other-associations = Other Associations
|
|
||||||
.text-editor = Text Editor
|
|
||||||
|
|
||||||
## System: Startup Applications
|
|
||||||
|
|
||||||
startup-apps = Startup Applications
|
|
||||||
.desc = Configure applications which run on login.
|
|
||||||
.add = Add app
|
|
||||||
.user = User specific applications
|
|
||||||
.user-description = These applications are launched when you log into your current user.
|
|
||||||
.remove-dialog-title = Remove { $name }?
|
|
||||||
.remove-dialog-description = Are you sure you want to remove this as a startup application?
|
|
||||||
.search-for-application = Search for application
|
|
||||||
6
justfile
6
justfile
|
|
@ -34,6 +34,7 @@ entry-settings := appid + '.desktop'
|
||||||
entry-about := appid + '.About.desktop'
|
entry-about := appid + '.About.desktop'
|
||||||
entry-accessibility := appid + '.Accessibility.desktop'
|
entry-accessibility := appid + '.Accessibility.desktop'
|
||||||
entry-appear := appid + '.Appearance.desktop'
|
entry-appear := appid + '.Appearance.desktop'
|
||||||
|
entry-apps := appid + '.Applications.desktop'
|
||||||
entry-bluetooth := appid + '.Bluetooth.desktop'
|
entry-bluetooth := appid + '.Bluetooth.desktop'
|
||||||
entry-date-time := appid + '.DateTime.desktop'
|
entry-date-time := appid + '.DateTime.desktop'
|
||||||
entry-default-apps := appid + '.DefaultApps.desktop'
|
entry-default-apps := appid + '.DefaultApps.desktop'
|
||||||
|
|
@ -43,6 +44,7 @@ entry-dock := appid + '.Dock.desktop'
|
||||||
entry-firmware := appid + '.Firmware.desktop'
|
entry-firmware := appid + '.Firmware.desktop'
|
||||||
entry-input := appid + '.Input.desktop'
|
entry-input := appid + '.Input.desktop'
|
||||||
entry-keyboard := appid + '.Keyboard.desktop'
|
entry-keyboard := appid + '.Keyboard.desktop'
|
||||||
|
entry-legacy-apps := appid + '.LegacyApplications.desktop'
|
||||||
entry-mouse := appid + '.Mouse.desktop'
|
entry-mouse := appid + '.Mouse.desktop'
|
||||||
entry-network := appid + '.Network.desktop'
|
entry-network := appid + '.Network.desktop'
|
||||||
entry-notifications := appid + '.Notifications.desktop'
|
entry-notifications := appid + '.Notifications.desktop'
|
||||||
|
|
@ -71,6 +73,7 @@ install-desktop-entries:
|
||||||
install -Dm0644 'resources/{{entry-about}}' '{{appdir}}/{{entry-about}}'
|
install -Dm0644 'resources/{{entry-about}}' '{{appdir}}/{{entry-about}}'
|
||||||
install -Dm0644 'resources/{{entry-accessibility}}' '{{appdir}}/{{entry-accessibility}}'
|
install -Dm0644 'resources/{{entry-accessibility}}' '{{appdir}}/{{entry-accessibility}}'
|
||||||
install -Dm0644 'resources/{{entry-appear}}' '{{appdir}}/{{entry-appear}}'
|
install -Dm0644 'resources/{{entry-appear}}' '{{appdir}}/{{entry-appear}}'
|
||||||
|
install -Dm0644 'resources/{{entry-apps}}' '{{appdir}}/{{entry-apps}}'
|
||||||
install -Dm0644 'resources/{{entry-bluetooth}}' '{{appdir}}/{{entry-bluetooth}}'
|
install -Dm0644 'resources/{{entry-bluetooth}}' '{{appdir}}/{{entry-bluetooth}}'
|
||||||
install -Dm0644 'resources/{{entry-date-time}}' '{{appdir}}/{{entry-date-time}}'
|
install -Dm0644 'resources/{{entry-date-time}}' '{{appdir}}/{{entry-date-time}}'
|
||||||
install -Dm0644 'resources/{{entry-default-apps}}' '{{appdir}}/{{entry-default-apps}}'
|
install -Dm0644 'resources/{{entry-default-apps}}' '{{appdir}}/{{entry-default-apps}}'
|
||||||
|
|
@ -80,6 +83,7 @@ install-desktop-entries:
|
||||||
install -Dm0644 'resources/{{entry-firmware}}' '{{appdir}}/{{entry-firmware}}'
|
install -Dm0644 'resources/{{entry-firmware}}' '{{appdir}}/{{entry-firmware}}'
|
||||||
install -Dm0644 'resources/{{entry-input}}' '{{appdir}}/{{entry-input}}'
|
install -Dm0644 'resources/{{entry-input}}' '{{appdir}}/{{entry-input}}'
|
||||||
install -Dm0644 'resources/{{entry-keyboard}}' '{{appdir}}/{{entry-keyboard}}'
|
install -Dm0644 'resources/{{entry-keyboard}}' '{{appdir}}/{{entry-keyboard}}'
|
||||||
|
install -Dm0644 'resources/{{entry-legacy-apps}}' '{{appdir}}/{{entry-legacy-apps}}'
|
||||||
install -Dm0644 'resources/{{entry-mouse}}' '{{appdir}}/{{entry-mouse}}'
|
install -Dm0644 'resources/{{entry-mouse}}' '{{appdir}}/{{entry-mouse}}'
|
||||||
install -Dm0644 'resources/{{entry-network}}' '{{appdir}}/{{entry-network}}'
|
install -Dm0644 'resources/{{entry-network}}' '{{appdir}}/{{entry-network}}'
|
||||||
install -Dm0644 'resources/{{entry-notifications}}' '{{appdir}}/{{entry-notifications}}'
|
install -Dm0644 'resources/{{entry-notifications}}' '{{appdir}}/{{entry-notifications}}'
|
||||||
|
|
@ -122,6 +126,7 @@ uninstall:
|
||||||
'{{appdir}}/{{entry-about}}' \
|
'{{appdir}}/{{entry-about}}' \
|
||||||
'{{appdir}}/{{entry-accessibility}}' \
|
'{{appdir}}/{{entry-accessibility}}' \
|
||||||
'{{appdir}}/{{entry-appear}}' \
|
'{{appdir}}/{{entry-appear}}' \
|
||||||
|
'{{appdir}}/{{entry-apps}}' \
|
||||||
'{{appdir}}/{{entry-bluetooth}}' \
|
'{{appdir}}/{{entry-bluetooth}}' \
|
||||||
'{{appdir}}/{{entry-date-time}}' \
|
'{{appdir}}/{{entry-date-time}}' \
|
||||||
'{{appdir}}/{{entry-default-apps}}' \
|
'{{appdir}}/{{entry-default-apps}}' \
|
||||||
|
|
@ -131,6 +136,7 @@ uninstall:
|
||||||
'{{appdir}}/{{entry-firmware}}' \
|
'{{appdir}}/{{entry-firmware}}' \
|
||||||
'{{appdir}}/{{entry-input}}' \
|
'{{appdir}}/{{entry-input}}' \
|
||||||
'{{appdir}}/{{entry-keyboard}}' \
|
'{{appdir}}/{{entry-keyboard}}' \
|
||||||
|
'{{appdir}}/{{entry-legacy-apps}}' \
|
||||||
'{{appdir}}/{{entry-mouse}}' \
|
'{{appdir}}/{{entry-mouse}}' \
|
||||||
'{{appdir}}/{{entry-network}}' \
|
'{{appdir}}/{{entry-network}}' \
|
||||||
'{{appdir}}/{{entry-notifications}}' \
|
'{{appdir}}/{{entry-notifications}}' \
|
||||||
|
|
|
||||||
12
resources/com.system76.CosmicSettings.Applications.desktop
Normal file
12
resources/com.system76.CosmicSettings.Applications.desktop
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=Applications
|
||||||
|
Comment=Manage application settings.
|
||||||
|
Type=Settings
|
||||||
|
Exec=cosmic-settings applications
|
||||||
|
Terminal=false
|
||||||
|
Categories=COSMIC
|
||||||
|
Keywords=COSMIC
|
||||||
|
NoDisplay=true
|
||||||
|
OnlyShowIn=COSMIC
|
||||||
|
Icon=preferences-applications
|
||||||
|
StartupNotify=true
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=X11 Applications Compatibility
|
||||||
|
Comment=X11 Window system application scaling and Global shortcuts.
|
||||||
|
Type=Settings
|
||||||
|
Exec=cosmic-settings legacy-applications
|
||||||
|
Terminal=false
|
||||||
|
Categories=COSMIC
|
||||||
|
Keywords=COSMIC
|
||||||
|
NoDisplay=true
|
||||||
|
OnlyShowIn=COSMIC
|
||||||
|
Icon=preferences-x11-applications-compatibility
|
||||||
|
StartupNotify=true
|
||||||
Loading…
Add table
Add a link
Reference in a new issue