diff --git a/cosmic-settings/src/pages/applications/legacy_applications.rs b/cosmic-settings/src/pages/applications/legacy_applications.rs index a84a57a..d2cff93 100644 --- a/cosmic-settings/src/pages/applications/legacy_applications.rs +++ b/cosmic-settings/src/pages/applications/legacy_applications.rs @@ -7,7 +7,7 @@ use cosmic::{ iced::Length, widget::{self, text}, }; -use cosmic_comp_config::{EavesdroppingKeyboardMode, XwaylandEavesdropping}; +use cosmic_comp_config::{EavesdroppingKeyboardMode, XwaylandDescaling, XwaylandEavesdropping}; use cosmic_settings_page::Section; use cosmic_settings_page::{self as page, section}; use slab::Slab; @@ -16,14 +16,14 @@ use tracing::error; #[derive(Clone, Debug)] pub enum Message { - SetXwaylandDescaling(bool), + SetXwaylandDescaling(XwaylandDescaling), SetXwaylandKeyboardMode(EavesdroppingKeyboardMode), SetXwaylandMouseButtonMode(bool), } pub struct Page { comp_config: cosmic_config::Config, - comp_config_descale_xwayland: bool, + comp_config_descale_xwayland: XwaylandDescaling, comp_config_xwayland_eavesdropping: XwaylandEavesdropping, } @@ -36,7 +36,7 @@ impl Default for Page { error!(?err, "Failed to read config 'descale_xwayland'"); } - false + XwaylandDescaling::Disabled }); let comp_config_xwayland_eavesdropping = comp_config .get("xwayland_eavesdropping") @@ -192,10 +192,13 @@ pub fn legacy_application_global_shortcuts() -> Section { pub fn legacy_application_scaling() -> Section { 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")); + let gaming = descriptions.insert(fl!("legacy-app-scaling", "scaled-gaming")); + let gaming_desc = descriptions.insert(fl!("legacy-app-scaling", "gaming-description")); + let apps = descriptions.insert(fl!("legacy-app-scaling", "scaled-applications")); + let apps_desc = descriptions.insert(fl!("legacy-app-scaling", "applications-description")); + let compat = descriptions.insert(fl!("legacy-app-scaling", "scaled-compatibility")); + let compat_desc = descriptions.insert(fl!("legacy-app-scaling", "compatibility-description")); + let preferred_display = descriptions.insert(fl!("legacy-app-scaling", "preferred-display")); Section::default() .title(fl!("legacy-app-scaling")) @@ -207,9 +210,9 @@ pub fn legacy_application_scaling() -> Section { .add(widget::settings::item_row(vec![ widget::radio( widget::column() - .push(text::body(&descriptions[system])) - .push(text::caption(&descriptions[system_desc])), - false, + .push(text::body(&descriptions[gaming])) + .push(text::caption(&descriptions[gaming_desc])), + XwaylandDescaling::Fractional, Some(page.comp_config_descale_xwayland), Message::SetXwaylandDescaling, ) @@ -219,9 +222,21 @@ pub fn legacy_application_scaling() -> Section { .add(widget::settings::item_row(vec![ widget::radio( widget::column() - .push(text::body(&descriptions[native])) - .push(text::caption(&descriptions[native_desc])), - true, + .push(text::body(&descriptions[apps])) + .push(text::caption(&descriptions[apps_desc])), + XwaylandDescaling::Enabled, + 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[compat])) + .push(text::caption(&descriptions[compat_desc])), + XwaylandDescaling::Disabled, Some(page.comp_config_descale_xwayland), Message::SetXwaylandDescaling, ) diff --git a/i18n/en/cosmic_settings.ftl b/i18n/en/cosmic_settings.ftl index 31235e6..6266b8e 100644 --- a/i18n/en/cosmic_settings.ftl +++ b/i18n/en/cosmic_settings.ftl @@ -834,10 +834,14 @@ legacy-app-global-shortcuts = Global Shortcuts in X11 Applications .mouse = Mouse button events in X11 applications 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. + .scaled-gaming = Optimize for gaming and full-screen apps + .gaming-description = X11 applications may appear slightly larger/smaller compared to Wayland apps. + .scaled-applications = Optimize for applications + .applications-description = Games and full-screen X11 apps may not match your display resolution. + .scaled-compatibility = Maximum compatibility mode + .compatibility-description = X11 applications may appear blurry on HiDPI screens. + .preferred-display = Preferred display for games and full screen X11 applications + .no-display = ## System