chore: remove graphics modes and night light
This commit is contained in:
parent
c4224ff36f
commit
bed629563e
18 changed files with 122 additions and 678 deletions
|
|
@ -1,245 +0,0 @@
|
|||
// Copyright 2023 System76 <info@system76.com>
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
use super::{Message, NightLight};
|
||||
use crate::pages;
|
||||
use cosmic::iced_core::{Alignment, Length, Padding};
|
||||
use cosmic::prelude::CollectionWidget;
|
||||
use cosmic::widget::{button, column, icon, list_column, row, toggler};
|
||||
use cosmic::{Apply, Command, Element};
|
||||
use std::sync::Arc;
|
||||
|
||||
pub const INTEGRATED: &str = "integrated";
|
||||
pub const NVIDIA: &str = "nvidia";
|
||||
pub const HYBRID: &str = "hybrid";
|
||||
pub const COMPUTE: &str = "compute";
|
||||
|
||||
pub async fn fetch() -> Option<Arc<std::io::Result<Mode>>> {
|
||||
let switchable = tokio::process::Command::new("system76-power")
|
||||
.args(["graphics", "switchable"])
|
||||
.output()
|
||||
.await
|
||||
.map(|output| {
|
||||
std::str::from_utf8(&output.stdout).map_or(false, |text| text.trim() == "switchable")
|
||||
});
|
||||
|
||||
match switchable {
|
||||
Ok(false) => None,
|
||||
|
||||
Ok(true) => Some(Arc::new(
|
||||
tokio::process::Command::new("system76-power")
|
||||
.arg("graphics")
|
||||
.output()
|
||||
.await
|
||||
.and_then(|output| {
|
||||
if let Ok(mut mode) = std::str::from_utf8(&output.stdout) {
|
||||
mode = mode.trim();
|
||||
if mode == COMPUTE {
|
||||
Ok(Mode::Compute)
|
||||
} else if mode == HYBRID {
|
||||
Ok(Mode::Hybrid)
|
||||
} else if mode == INTEGRATED {
|
||||
Ok(Mode::Integrated)
|
||||
} else if mode == NVIDIA {
|
||||
Ok(Mode::Nvidia)
|
||||
} else {
|
||||
Err(std::io::Error::new(
|
||||
std::io::ErrorKind::InvalidData,
|
||||
"unknown graphics mode",
|
||||
))
|
||||
}
|
||||
} else {
|
||||
Err(std::io::Error::new(
|
||||
std::io::ErrorKind::InvalidData,
|
||||
"system76-power output was not UTF-8",
|
||||
))
|
||||
}
|
||||
}),
|
||||
)),
|
||||
|
||||
Err(why) => Some(Arc::new(Err(why))),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn view(
|
||||
mode: &'static str,
|
||||
description: &'static str,
|
||||
button: Option<(&'static str, Message)>,
|
||||
) -> Element<'static, Message> {
|
||||
let theme = cosmic::theme::active();
|
||||
let theme = theme.cosmic();
|
||||
let has_checkmark = button.is_none();
|
||||
|
||||
let content = column::with_capacity(3)
|
||||
.padding(Padding::from([theme.space_xxs(), theme.space_l()]))
|
||||
.push(cosmic::widget::text::body(mode))
|
||||
.push(cosmic::widget::text::caption(description))
|
||||
.push(cosmic::widget::Space::new(Length::Fill, 12))
|
||||
.push_maybe(button.map(|(text, message)| {
|
||||
button::text(text)
|
||||
.style(cosmic::theme::Button::Link)
|
||||
.trailing_icon(icon::from_name("go-next-symbolic").size(16))
|
||||
.padding(0)
|
||||
.on_press(message)
|
||||
}));
|
||||
|
||||
if has_checkmark {
|
||||
row::with_capacity(2)
|
||||
.align_items(Alignment::Center)
|
||||
.push(content)
|
||||
.push(icon::from_name("object-select-symbolic").size(24))
|
||||
.apply(Element::from)
|
||||
.apply(cosmic::widget::list::container)
|
||||
.into()
|
||||
} else {
|
||||
cosmic::widget::list::container(content).into()
|
||||
}
|
||||
}
|
||||
|
||||
/// Switchable graphics mode
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
pub enum Mode {
|
||||
Compute,
|
||||
Hybrid,
|
||||
Integrated,
|
||||
Nvidia,
|
||||
}
|
||||
|
||||
impl Mode {
|
||||
#[must_use]
|
||||
pub fn argument_str(self) -> &'static str {
|
||||
match self {
|
||||
Self::Compute => COMPUTE,
|
||||
Self::Hybrid => HYBRID,
|
||||
Self::Integrated => INTEGRATED,
|
||||
Self::Nvidia => NVIDIA,
|
||||
}
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn localized_str(self) -> &'static str {
|
||||
match self {
|
||||
Self::Compute => &super::text::GRAPHICS_MODE_COMPUTE,
|
||||
Self::Hybrid => &super::text::GRAPHICS_MODE_HYBRID,
|
||||
Self::Integrated => &super::text::GRAPHICS_MODE_INTEGRATED,
|
||||
Self::Nvidia => &super::text::GRAPHICS_MODE_NVIDIA,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl super::Page {
|
||||
pub fn graphics_mode_view(&self) -> Element<pages::Message> {
|
||||
let mut container = list_column();
|
||||
|
||||
if let Some(graphics_mode) = self.config.graphics_mode {
|
||||
// Displays the active graphics mode, and a button for configuring it.
|
||||
container = container.add(cosmic::widget::settings::item(
|
||||
&*super::text::GRAPHICS_MODE,
|
||||
row()
|
||||
.align_items(Alignment::Center)
|
||||
.push(cosmic::widget::text::body(graphics_mode.localized_str()))
|
||||
.push(
|
||||
button::icon(icon::from_name("go-next-symbolic"))
|
||||
.extra_small()
|
||||
.on_press(Message::GraphicsModeContext),
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
// Displays the night light status, and a button for configuring it.
|
||||
container = container.add(
|
||||
cosmic::widget::settings::item::builder(&*super::text::NIGHT_LIGHT)
|
||||
.description(&*super::text::NIGHT_LIGHT_DESCRIPTION)
|
||||
.control(
|
||||
row()
|
||||
.align_items(Alignment::Center)
|
||||
.push(toggler(None, self.config.night_light_enabled, |enable| {
|
||||
Message::NightLight(NightLight::Toggle(enable))
|
||||
}))
|
||||
.push(
|
||||
button::icon(icon::from_name("go-next-symbolic"))
|
||||
.extra_small()
|
||||
.on_press(Message::NightLightContext),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
container
|
||||
.apply(Element::from)
|
||||
.map(crate::pages::Message::Displays)
|
||||
}
|
||||
|
||||
pub fn graphics_mode_context_view(&self) -> Element<pages::Message> {
|
||||
let theme = cosmic::theme::active();
|
||||
let theme = theme.cosmic();
|
||||
|
||||
column::with_capacity(4)
|
||||
.spacing(theme.space_xs())
|
||||
.push(view(
|
||||
&super::text::GRAPHICS_MODE_INTEGRATED,
|
||||
&super::text::GRAPHICS_MODE_INTEGRATED_DESC,
|
||||
if let Some(Mode::Integrated) = self.config.graphics_mode {
|
||||
None
|
||||
} else {
|
||||
Some((
|
||||
&super::text::GRAPHICS_MODE_INTEGRATED_ENABLE,
|
||||
Message::GraphicsMode(Mode::Integrated),
|
||||
))
|
||||
},
|
||||
))
|
||||
.push(view(
|
||||
&super::text::GRAPHICS_MODE_NVIDIA,
|
||||
&super::text::GRAPHICS_MODE_NVIDIA_DESC,
|
||||
if let Some(Mode::Nvidia) = self.config.graphics_mode {
|
||||
None
|
||||
} else {
|
||||
Some((
|
||||
&super::text::GRAPHICS_MODE_NVIDIA_ENABLE,
|
||||
Message::GraphicsMode(Mode::Nvidia),
|
||||
))
|
||||
},
|
||||
))
|
||||
.push(view(
|
||||
&super::text::GRAPHICS_MODE_HYBRID,
|
||||
&super::text::GRAPHICS_MODE_HYBRID_DESC,
|
||||
if let Some(Mode::Hybrid) = self.config.graphics_mode {
|
||||
None
|
||||
} else {
|
||||
Some((
|
||||
&super::text::GRAPHICS_MODE_HYBRID_ENABLE,
|
||||
Message::GraphicsMode(Mode::Hybrid),
|
||||
))
|
||||
},
|
||||
))
|
||||
.push(view(
|
||||
&super::text::GRAPHICS_MODE_COMPUTE,
|
||||
&super::text::GRAPHICS_MODE_COMPUTE_DESC,
|
||||
if let Some(Mode::Compute) = self.config.graphics_mode {
|
||||
None
|
||||
} else {
|
||||
Some((
|
||||
&super::text::GRAPHICS_MODE_COMPUTE_ENABLE,
|
||||
Message::GraphicsMode(Mode::Compute),
|
||||
))
|
||||
},
|
||||
))
|
||||
.apply(Element::from)
|
||||
.map(pages::Message::Displays)
|
||||
}
|
||||
|
||||
/// Change the graphics mode.
|
||||
pub fn set_graphics_mode(&mut self, mode: Mode) -> Command<crate::app::Message> {
|
||||
self.config.graphics_mode = Some(mode);
|
||||
|
||||
// Runs `system76-power graphics {{mode}}`
|
||||
cosmic::command::future(async move {
|
||||
let result = tokio::process::Command::new("system76-power")
|
||||
.args(["graphics", mode.argument_str()])
|
||||
.status()
|
||||
.await;
|
||||
let page_message =
|
||||
crate::pages::Message::Displays(Message::GraphicsModeResult(Arc::new(result)));
|
||||
crate::app::Message::PageMessage(page_message)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
pub mod arrangement;
|
||||
pub mod graphics;
|
||||
// pub mod night_light;
|
||||
pub mod text;
|
||||
|
||||
use crate::{app, pages};
|
||||
|
|
@ -25,10 +25,9 @@ use std::{process::ExitStatus, sync::Arc};
|
|||
pub struct ColorDepth(usize);
|
||||
|
||||
/// Identifies the content to display in the context drawer
|
||||
pub enum ContextDrawer {
|
||||
GraphicsMode,
|
||||
NightLight,
|
||||
}
|
||||
// pub enum ContextDrawer {
|
||||
// NightLight,
|
||||
// }
|
||||
|
||||
/// Display mirroring options
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
|
|
@ -40,17 +39,17 @@ pub enum Mirroring {
|
|||
}
|
||||
|
||||
/// Night light preferences
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
pub enum NightLight {
|
||||
// #[derive(Clone, Copy, Debug)]
|
||||
// pub enum NightLight {
|
||||
/// Toggles night light's automatic scheduling.
|
||||
AutoSchedule(bool),
|
||||
// AutoSchedule(bool),
|
||||
/// Sets the night light schedule.
|
||||
ManualSchedule,
|
||||
// ManualSchedule,
|
||||
/// Changes the preferred night light temperature.
|
||||
Temperature(f32),
|
||||
// Temperature(f32),
|
||||
/// Toggles night light mode
|
||||
Toggle(bool),
|
||||
}
|
||||
// Toggle(bool),
|
||||
// }
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub enum Message {
|
||||
|
|
@ -64,18 +63,12 @@ pub enum Message {
|
|||
ColorProfile(usize),
|
||||
/// Toggles display on or off.
|
||||
DisplayToggle(bool),
|
||||
/// Changes the hybrid graphics mode.
|
||||
GraphicsMode(graphics::Mode),
|
||||
/// Shows the graphics mode context drawer.
|
||||
GraphicsModeContext,
|
||||
/// Status of an applied graphics mode change
|
||||
GraphicsModeResult(Arc<std::io::Result<ExitStatus>>),
|
||||
/// Configures mirroring status of a display.
|
||||
Mirroring(Mirroring),
|
||||
/// Handle night light preferences.
|
||||
NightLight(NightLight),
|
||||
// NightLight(NightLight),
|
||||
/// Show the night light mode context drawer.
|
||||
NightLightContext,
|
||||
// NightLightContext,
|
||||
/// Set the orientation of a display.
|
||||
Orientation(Transform),
|
||||
/// Status of an applied display change.
|
||||
|
|
@ -90,9 +83,6 @@ pub enum Message {
|
|||
Scale(usize),
|
||||
/// Refreshes display outputs.
|
||||
Update {
|
||||
/// The current graphics mode
|
||||
graphics: Option<Arc<std::io::Result<graphics::Mode>>>,
|
||||
|
||||
/// Available outputs from cosmic-randr.
|
||||
randr: Arc<Result<List, cosmic_randr_shell::Error>>,
|
||||
},
|
||||
|
|
@ -123,7 +113,7 @@ pub struct Page {
|
|||
background_service: Option<tokio::task::JoinHandle<()>>,
|
||||
config: Config,
|
||||
cache: ViewCache,
|
||||
context: Option<ContextDrawer>,
|
||||
// context: Option<ContextDrawer>,
|
||||
display_arrangement_scrollable: cosmic::widget::Id,
|
||||
}
|
||||
|
||||
|
|
@ -136,7 +126,7 @@ impl Default for Page {
|
|||
background_service: None,
|
||||
config: Config::default(),
|
||||
cache: ViewCache::default(),
|
||||
context: None,
|
||||
// context: None,
|
||||
display_arrangement_scrollable: cosmic::widget::Id::unique(),
|
||||
}
|
||||
}
|
||||
|
|
@ -145,8 +135,7 @@ impl Default for Page {
|
|||
#[derive(Default)]
|
||||
struct Config {
|
||||
/// Whether night light is enabled.
|
||||
night_light_enabled: bool,
|
||||
graphics_mode: Option<graphics::Mode>,
|
||||
// night_light_enabled: bool,
|
||||
refresh_rate: Option<u32>,
|
||||
resolution: Option<(u32, u32)>,
|
||||
scale: u32,
|
||||
|
|
@ -173,21 +162,16 @@ impl page::Page<crate::pages::Message> for Page {
|
|||
sections: &mut SlotMap<section::Entity, Section<crate::pages::Message>>,
|
||||
) -> Option<page::Content> {
|
||||
Some(vec![
|
||||
// Graphics switching and light mode
|
||||
sections.insert(
|
||||
Section::default()
|
||||
.descriptions(vec![
|
||||
text::GRAPHICS_MODE.as_str().into(),
|
||||
text::GRAPHICS_MODE_COMPUTE_DESC.as_str().into(),
|
||||
text::GRAPHICS_MODE_HYBRID_DESC.as_str().into(),
|
||||
text::GRAPHICS_MODE_INTEGRATED_DESC.as_str().into(),
|
||||
text::GRAPHICS_MODE_NVIDIA_DESC.as_str().into(),
|
||||
text::NIGHT_LIGHT.as_str().into(),
|
||||
text::NIGHT_LIGHT_AUTO.as_str().into(),
|
||||
text::NIGHT_LIGHT_DESCRIPTION.as_str().into(),
|
||||
])
|
||||
.view::<Page>(|_binder, page, _section| page.graphics_mode_view()),
|
||||
),
|
||||
// Night light
|
||||
// sections.insert(
|
||||
// Section::default()
|
||||
// .descriptions(vec![
|
||||
// text::NIGHT_LIGHT.as_str().into(),
|
||||
// text::NIGHT_LIGHT_AUTO.as_str().into(),
|
||||
// text::NIGHT_LIGHT_DESCRIPTION.as_str().into(),
|
||||
// ])
|
||||
// .view::<Page>(|_binder, page, _section| page.night_light_view()),
|
||||
// ),
|
||||
// Display arrangement
|
||||
sections.insert(
|
||||
Section::default()
|
||||
|
|
@ -309,21 +293,19 @@ impl page::Page<crate::pages::Message> for Page {
|
|||
});
|
||||
|
||||
crate::pages::Message::Displays(Message::Update {
|
||||
graphics: graphics::fetch().await,
|
||||
randr: Arc::new(Ok(randr)),
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// fn context_drawer(&self) -> Option<Element<pages::Message>> {
|
||||
// Some(match self.context {
|
||||
|
||||
fn context_drawer(&self) -> Option<Element<pages::Message>> {
|
||||
Some(match self.context {
|
||||
Some(ContextDrawer::GraphicsMode) => self.graphics_mode_context_view(),
|
||||
// Some(ContextDrawer::NightLight) => self.night_light_context_view(),
|
||||
|
||||
Some(ContextDrawer::NightLight) => self.night_light_context_view(),
|
||||
|
||||
None => return None,
|
||||
})
|
||||
}
|
||||
// None => return None,
|
||||
// })
|
||||
// }
|
||||
}
|
||||
|
||||
impl Page {
|
||||
|
|
@ -343,36 +325,21 @@ impl Page {
|
|||
|
||||
Message::DisplayToggle(enable) => return self.toggle_display(enable),
|
||||
|
||||
Message::GraphicsMode(mode) => return self.set_graphics_mode(mode),
|
||||
|
||||
Message::GraphicsModeContext => {
|
||||
self.context = Some(ContextDrawer::GraphicsMode);
|
||||
return cosmic::command::message(app::Message::OpenContextDrawer(
|
||||
text::GRAPHICS_MODE.clone().into(),
|
||||
));
|
||||
}
|
||||
|
||||
Message::GraphicsModeResult(result) => {
|
||||
if let Some(Err(why)) = Arc::into_inner(result) {
|
||||
tracing::error!(?why, "system76-power error");
|
||||
}
|
||||
}
|
||||
|
||||
Message::Mirroring(mirroring) => match mirroring {
|
||||
Mirroring::Disable => (),
|
||||
Mirroring::Mirror(target_display) => (),
|
||||
Mirroring::Project(target_display) => (),
|
||||
Mirroring::ProjectToAll => (),
|
||||
},
|
||||
|
||||
Message::NightLight(night_light) => {}
|
||||
|
||||
Message::NightLightContext => {
|
||||
self.context = Some(ContextDrawer::NightLight);
|
||||
return cosmic::command::message(app::Message::OpenContextDrawer(
|
||||
text::NIGHT_LIGHT.clone().into(),
|
||||
));
|
||||
}
|
||||
|
||||
// Message::NightLight(night_light) => {}
|
||||
//
|
||||
// Message::NightLightContext => {
|
||||
// self.context = Some(ContextDrawer::NightLight);
|
||||
// return cosmic::command::message(app::Message::OpenContextDrawer(
|
||||
// text::NIGHT_LIGHT.clone().into(),
|
||||
// ));
|
||||
// }
|
||||
|
||||
Message::Orientation(orientation) => return self.set_orientation(orientation),
|
||||
|
||||
|
|
@ -390,19 +357,7 @@ impl Page {
|
|||
|
||||
Message::Scale(scale) => return self.set_scale(scale),
|
||||
|
||||
Message::Update { graphics, randr } => {
|
||||
match graphics.and_then(Arc::into_inner) {
|
||||
Some(Ok(mode)) => {
|
||||
self.config.graphics_mode = Some(mode);
|
||||
}
|
||||
|
||||
Some(Err(why)) => {
|
||||
tracing::error!(?why, "error fetching graphics switching mode");
|
||||
}
|
||||
|
||||
None => (),
|
||||
}
|
||||
|
||||
Message::Update { randr } => {
|
||||
match Arc::into_inner(randr) {
|
||||
Some(Ok(outputs)) => self.update_displays(outputs),
|
||||
|
||||
|
|
@ -529,11 +484,11 @@ impl Page {
|
|||
.apply(Element::from)
|
||||
.map(pages::Message::Displays)
|
||||
}
|
||||
|
||||
|
||||
/// Displays the night light context drawer.
|
||||
pub fn night_light_context_view(&self) -> Element<pages::Message> {
|
||||
column().into()
|
||||
}
|
||||
// pub fn night_light_context_view(&self) -> Element<pages::Message> {
|
||||
// column().into()
|
||||
// }
|
||||
|
||||
/// Reloads the display list, and all information relevant to the active display.
|
||||
pub fn update_displays(&mut self, list: List) {
|
||||
|
|
@ -867,12 +822,10 @@ fn cache_rates(cached_rates: &mut Vec<String>, rates: &[u32]) {
|
|||
}
|
||||
|
||||
pub async fn on_enter() -> crate::pages::Message {
|
||||
let graphics_fut = graphics::fetch();
|
||||
let randr_fut = cosmic_randr_shell::list();
|
||||
let (graphics, randr) = futures::future::zip(graphics_fut, randr_fut).await;
|
||||
let randr = futures::future::ready(randr_fut).await;
|
||||
|
||||
crate::pages::Message::Displays(Message::Update {
|
||||
graphics,
|
||||
randr: Arc::new(randr),
|
||||
randr: Arc::new(randr.await),
|
||||
})
|
||||
}
|
||||
|
|
|
|||
73
cosmic-settings/src/pages/display/night_light.rs
Normal file
73
cosmic-settings/src/pages/display/night_light.rs
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
// Copyright 2023 System76 <info@system76.com>
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
use super::{Message, NightLight};
|
||||
use crate::pages;
|
||||
use cosmic::iced_core::{Alignment, Length, Padding};
|
||||
use cosmic::prelude::CollectionWidget;
|
||||
use cosmic::widget::{button, column, icon, list_column, row, toggler};
|
||||
use cosmic::{Apply, Command, Element};
|
||||
use std::sync::Arc;
|
||||
|
||||
pub fn view(
|
||||
mode: &'static str,
|
||||
description: &'static str,
|
||||
button: Option<(&'static str, Message)>,
|
||||
) -> Element<'static, Message> {
|
||||
let theme = cosmic::theme::active();
|
||||
let theme = theme.cosmic();
|
||||
let has_checkmark = button.is_none();
|
||||
|
||||
let content = column::with_capacity(3)
|
||||
.padding(Padding::from([theme.space_xxs(), theme.space_l()]))
|
||||
.push(cosmic::widget::text::body(mode))
|
||||
.push(cosmic::widget::text::caption(description))
|
||||
.push(cosmic::widget::Space::new(Length::Fill, 12))
|
||||
.push_maybe(button.map(|(text, message)| {
|
||||
button::text(text)
|
||||
.style(cosmic::theme::Button::Link)
|
||||
.trailing_icon(icon::from_name("go-next-symbolic").size(16))
|
||||
.padding(0)
|
||||
.on_press(message)
|
||||
}));
|
||||
|
||||
if has_checkmark {
|
||||
row::with_capacity(2)
|
||||
.align_items(Alignment::Center)
|
||||
.push(content)
|
||||
.push(icon::from_name("object-select-symbolic").size(24))
|
||||
.apply(Element::from)
|
||||
.apply(cosmic::widget::list::container)
|
||||
.into()
|
||||
} else {
|
||||
cosmic::widget::list::container(content).into()
|
||||
}
|
||||
}
|
||||
|
||||
impl super::Page {
|
||||
pub fn night_light_view(&self) -> Element<pages::Message> {
|
||||
let mut container = list_column();
|
||||
|
||||
// Displays the night light status, and a button for configuring it.
|
||||
container = container.add(
|
||||
cosmic::widget::settings::item::builder(&*super::text::NIGHT_LIGHT)
|
||||
.description(&*super::text::NIGHT_LIGHT_DESCRIPTION)
|
||||
.control(
|
||||
row()
|
||||
.align_items(Alignment::Center)
|
||||
.push(toggler(None, self.config.night_light_enabled, |enable| {
|
||||
Message::NightLight(NightLight::Toggle(enable))
|
||||
}))
|
||||
.push(
|
||||
button::icon(icon::from_name("go-next-symbolic"))
|
||||
.extra_small()
|
||||
.on_press(Message::NightLightContext),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
container
|
||||
.apply(Element::from)
|
||||
.map(crate::pages::Message::Displays)
|
||||
}
|
||||
}
|
||||
|
|
@ -19,35 +19,6 @@ crate::cache_dynamic_lazy! {
|
|||
pub static DISPLAY_RESOLUTION: String = fl!("display", "resolution");
|
||||
pub static DISPLAY_SCALE: String = fl!("display", "scale");
|
||||
|
||||
pub static GRAPHICS_MODE: String = fl!("graphics-mode");
|
||||
pub static GRAPHICS_MODE_COMPUTE: String =
|
||||
fl!("graphics-mode", "mode", mode = super::graphics::COMPUTE);
|
||||
pub static GRAPHICS_MODE_COMPUTE_ENABLE: String =
|
||||
fl!("graphics-mode", "enable", mode = super::graphics::COMPUTE);
|
||||
pub static GRAPHICS_MODE_COMPUTE_DESC: String =
|
||||
fl!("graphics-mode", "desc", mode = super::graphics::COMPUTE);
|
||||
pub static GRAPHICS_MODE_HYBRID: String =
|
||||
fl!("graphics-mode", "mode", mode = super::graphics::HYBRID);
|
||||
pub static GRAPHICS_MODE_HYBRID_ENABLE: String =
|
||||
fl!("graphics-mode", "enable", mode = super::graphics::HYBRID);
|
||||
pub static GRAPHICS_MODE_HYBRID_DESC: String =
|
||||
fl!("graphics-mode", "desc", mode = super::graphics::HYBRID);
|
||||
pub static GRAPHICS_MODE_INTEGRATED: String =
|
||||
fl!("graphics-mode", "mode", mode = super::graphics::INTEGRATED);
|
||||
pub static GRAPHICS_MODE_INTEGRATED_ENABLE: String = fl!(
|
||||
"graphics-mode",
|
||||
"enable",
|
||||
mode = super::graphics::INTEGRATED
|
||||
);
|
||||
pub static GRAPHICS_MODE_INTEGRATED_DESC: String =
|
||||
fl!("graphics-mode", "desc", mode = super::graphics::INTEGRATED);
|
||||
pub static GRAPHICS_MODE_NVIDIA: String =
|
||||
fl!("graphics-mode", "mode", mode = super::graphics::NVIDIA);
|
||||
pub static GRAPHICS_MODE_NVIDIA_ENABLE: String =
|
||||
fl!("graphics-mode", "enable", mode = super::graphics::NVIDIA);
|
||||
pub static GRAPHICS_MODE_NVIDIA_DESC: String =
|
||||
fl!("graphics-mode", "desc", mode = super::graphics::NVIDIA);
|
||||
|
||||
pub static MIRRORING: String = fl!("mirroring");
|
||||
|
||||
pub static NIGHT_LIGHT: String = fl!("night-light");
|
||||
|
|
|
|||
|
|
@ -92,28 +92,6 @@ display = Displays
|
|||
.resolution = Resolution
|
||||
.scale = Scale
|
||||
|
||||
graphics-mode = Graphics mode
|
||||
.mode = { $mode ->
|
||||
[compute] Compute
|
||||
*[hybrid] Hybrid
|
||||
[integrated] Integrated
|
||||
[nvidia] NVIDIA
|
||||
} graphics
|
||||
.enable = Enable { $mode ->
|
||||
[compute] compute
|
||||
*[hybrid] hybrid
|
||||
[integrated] integrated
|
||||
[nvidia] NVIDIA
|
||||
} graphics
|
||||
.desc = { $mode ->
|
||||
[compute] Uses dedicated graphics for computational workloads only. Disables external displays. { -requires-restart }.
|
||||
*[hybrid] Applications use integrated graphics unless explicitly requested to use dedicated graphics. { -requires-restart }.
|
||||
[integrated] Turns off dedicated graphics for a longer battery life and less fan noise.
|
||||
[nvidia] Better graphical experience and highest power usage. { -requires-restart }.
|
||||
}
|
||||
.restart = Restart and switch to { $mode }?
|
||||
.restart-desc = Switching to { $mode } will close all open applications
|
||||
|
||||
mirroring = Mirroring
|
||||
.id = Mirroring { $id }
|
||||
.dont = Don't mirror
|
||||
|
|
|
|||
|
|
@ -90,28 +90,6 @@ display = Écrans
|
|||
.resolution = Résolution
|
||||
.scale = Échelle
|
||||
|
||||
graphics-mode = Graphics mode
|
||||
.mode = { $mode ->
|
||||
[compute] Calcul
|
||||
*[hybrid] Hybride
|
||||
[integrated] Intégré
|
||||
[nvidia] NVIDIA
|
||||
} graphics
|
||||
.enable = Enable { $mode ->
|
||||
[compute] Calcul
|
||||
*[hybrid] Hybride
|
||||
[integrated] Intégré
|
||||
[nvidia] NVIDIA
|
||||
} graphics
|
||||
.desc = { $mode ->
|
||||
[compute] Utilise les graphiques dédies seulement pour les charges de calcul. Désactive les écrans externes. { -requires-restart }.
|
||||
*[hybrid] Les applications utilisent des graphiques intégrés, sauf s'il est explicitement demandé d'utiliser des graphiques dédiés. { -requires-restart }.
|
||||
[integrated] Désactive les graphiques dédiés pour une meilleure autonomie de la batterie et moins de bruit de ventilateur.
|
||||
[nvidia] Meilleure expérience graphique et plus grande consommation d'énergie. { -requires-restart }.
|
||||
}
|
||||
.restart = Redémarrer et basculer vers { $mode } ?
|
||||
.restart-desc = Basculer vers { $mode } fermera toutes les applications ouvertes
|
||||
|
||||
mirroring = Duplication de l'écran
|
||||
.id = Duplication de { $id }
|
||||
.dont = Ne pas dupliquer
|
||||
|
|
|
|||
|
|
@ -81,28 +81,6 @@ display = Schermi
|
|||
.resolution = Risoluzione
|
||||
.scale = Scala
|
||||
|
||||
graphics-mode = Modalità GPU
|
||||
.mode = { $mode ->
|
||||
[compute] Compute
|
||||
*[hybrid] Ibrida
|
||||
[integrated] Integrata
|
||||
[nvidia] NVIDIA
|
||||
}
|
||||
.enable = Abilita modalità { $mode ->
|
||||
[compute] compute
|
||||
*[hybrid] ibrida
|
||||
[integrated] integrata
|
||||
[nvidia] NVIDIA
|
||||
}
|
||||
.desc = { $mode ->
|
||||
[compute] Usa la GPU dedicata solo per l'elaborazione. Disabilita gli schermi esterni. { -requires-restart }.
|
||||
*[hybrid] Le applicazioni useranno la GPU integrata a meno che non venga richiesto esplicitamente l'uso della GPU dedicata. { -requires-restart }.
|
||||
[integrated] Disattiva la GPU dedicata per una maggior durata della batteria e meno rumore proveniente dalle ventole.
|
||||
[nvidia] Miglior esperienza grafica ma maggior consumo energetico. { -requires-restart }.
|
||||
}
|
||||
.restart = Riavviare in modalità { $mode }?
|
||||
.restart-desc = Il riavvio in modalità { $mode } chiuderà tutte le applicazioni aperte.
|
||||
|
||||
mirroring = Duplicazione
|
||||
.id = Duplicazione { $id }
|
||||
.dont = Non duplicare
|
||||
|
|
|
|||
|
|
@ -81,28 +81,6 @@ display = ディスプレイ
|
|||
.resolution = 解像度
|
||||
.scale = スケーリング
|
||||
|
||||
graphics-mode = グラフィックスモード
|
||||
.mode = { $mode ->
|
||||
[compute] 計算
|
||||
*[hybrid] ハイブリッド
|
||||
[integrated] 内蔵
|
||||
[nvidia] NVIDIA
|
||||
}モード
|
||||
.enable = { $mode ->
|
||||
[compute] 計算
|
||||
*[hybrid] ハイブリッド
|
||||
[integrated] 内蔵
|
||||
[nvidia] NVIDIA
|
||||
}モードを有効にする
|
||||
.desc = { $mode ->
|
||||
[compute] 計算の作業負荷だけで専用グラフィックスを使います。外付けディスプレイを無効にします。{ -requires-restart }
|
||||
*[hybrid] 専用グラフィックスを使用する要求がない限り、プログラムは統合グラフィックスを使用します。{ -requires-restart }
|
||||
[integrated] バッテリー寿命を強化してファン騒音を低減するように専用グラフィックスを無効にします。
|
||||
[nvidia] 改善されたグラッフィク体験と最高消費電力です。{ -requires-restart }
|
||||
}
|
||||
.restart = 再起動して{ $mode }に切り替えますか?
|
||||
.restart-desc = { $mode }に切り替えると全てのアプリケーションを閉じます。
|
||||
|
||||
mirroring = ミラーリング
|
||||
.id = { $id }をミラーリングしています
|
||||
.dont = ミラーリングしない
|
||||
|
|
|
|||
|
|
@ -90,28 +90,6 @@ display = Wyświetlacz
|
|||
.resolution = Rozdzielczość
|
||||
.scale = Skala
|
||||
|
||||
graphics-mode = Tryb Graficzny
|
||||
.mode = { $mode ->
|
||||
[compute] Obliczeniowy
|
||||
*[hybrid] Hybrydowy
|
||||
[integrated] Zintegrowany
|
||||
[nvidia] NVIDIA
|
||||
} graphics
|
||||
.enable = Włącz { $mode ->
|
||||
[compute] Obliczeniowy
|
||||
*[hybrid] Hybrydowy
|
||||
[integrated] Zintegrowany
|
||||
[nvidia] NVIDIA
|
||||
} graphics
|
||||
.desc = { $mode ->
|
||||
[compute] Używa dedykowanej karty graficznej tylko do pracy obliczeniowej. Wyłącza zewnętrzne ekrany. { -requires-restart }.
|
||||
*[hybrid] Aplikacje używają zintegrowanej karty graficznej, chyba że bezpośredio kazano im używać dedykowanej karty graficznej. { -requires-restart }.
|
||||
[integrated] Wyłącz dedykowaną kartę graficzną by zwiększyć czas pracy na baterii i zmniejszyć głośność wentylatorów.
|
||||
[nvidia] Najwydajniejszy tryb graficzny wiążący się z najwyższym zapotrzebowaniem na prąd. { -requires-restart }.
|
||||
}
|
||||
.restart = Uruchomić ponownie i zmienić na { $mode }?
|
||||
.restart-desc = Zmiana na { $mode } zamknie wszystkie otwarte aplikacje
|
||||
|
||||
mirroring = Lustrzane Odbicie
|
||||
.id = Lustrzane Odbicie { $id }
|
||||
.dont = Nie stosuj Lustrzanego Odbicia
|
||||
|
|
|
|||
|
|
@ -92,28 +92,6 @@ display = Ecrãs
|
|||
.resolution = Resolução
|
||||
.scale = Escala
|
||||
|
||||
graphics-mode = Modo gráfico
|
||||
.mode = { $mode ->
|
||||
[compute] Calcular
|
||||
*[hybrid] Híbrido
|
||||
[integrated] Integrado
|
||||
[nvidia] NVIDIA
|
||||
} graphics
|
||||
.enable = Ativar { $mode ->
|
||||
[compute] calcular
|
||||
*[hybrid] híbrido
|
||||
[integrated] integrado
|
||||
[nvidia] NVIDIA
|
||||
} graphics
|
||||
.desc = { $mode ->
|
||||
[compute] Utiliza gráficos dedicados apenas para cargas de trabalho computacionais. Desativa os ecrãs externos. { -requires-restart }.
|
||||
*[hybrid] As aplicações utilizam gráficos integrados, exceto se for explicitamente solicitada a utilização de gráficos dedicados. { -requires-restart }.
|
||||
[integrated] Desliga os gráficos dedicados para uma maior duração da bateria e menos ruído da ventoinha.
|
||||
[nvidia] Melhor experiência gráfica e maior consumo de energia. { -requires-restart }.
|
||||
}
|
||||
.restart = Reiniciar e mudar para { $mode }?
|
||||
.restart-desc = Mudar para { $mode } fechará todas as aplicações abertas
|
||||
|
||||
mirroring = Espelhar
|
||||
.id = Espelhar { $id }
|
||||
.dont = Não espelhar
|
||||
|
|
|
|||
|
|
@ -90,28 +90,6 @@ display = Monitores
|
|||
.resolution = Resolução
|
||||
.scale = Escala
|
||||
|
||||
graphics-mode = Graphics mode
|
||||
.mode = { $mode ->
|
||||
[compute] Calcular
|
||||
*[hybrid] Híbrido
|
||||
[integrated] Integrado
|
||||
[nvidia] NVIDIA
|
||||
} graphics
|
||||
.enable = Ativar { $mode ->
|
||||
[compute] calcular
|
||||
*[hybrid] híbrido
|
||||
[integrated] integrado
|
||||
[nvidia] NVIDIA
|
||||
} graphics
|
||||
.desc = { $mode ->
|
||||
[compute] Utiliza gráficos dedicados apenas para cargas de trabalho computacionais. Desativa monitores externos. { -requires-restart }.
|
||||
*[hybrid] Aplicativos usam os gráficos integrados, a menos que solicitado explicitamente para usar os gráficos dedicados. { -requires-restart }.
|
||||
[integrated] Desativa os gráficos integrados, exceto se for explicitamente solicitada a utilização de gráficos dedicados.
|
||||
[nvidia] Melhor experiência gráfica e maior consumo de energia. { -requires-restart }.
|
||||
}
|
||||
.restart = Reiniciar e alterar para { $mode }?
|
||||
.restart-desc = Alterar para { $mode } fechará todos as aplicações abertas
|
||||
|
||||
mirroring = Espelhar
|
||||
.id = Espelhar { $id }
|
||||
.dont = Não espelhar
|
||||
|
|
|
|||
|
|
@ -92,28 +92,6 @@ display = Ecrane
|
|||
.resolution = Rezoluție
|
||||
.scale = Scală
|
||||
|
||||
graphics-mode = Modul de grafică
|
||||
.mode = { $mode ->
|
||||
[compute] Compute
|
||||
*[hybrid] Hibrid
|
||||
[integrated] Integrat
|
||||
[nvidia] NVIDIA
|
||||
} graphics
|
||||
.enable = Activează { $mode ->
|
||||
[compute] compute
|
||||
*[hybrid] hibrid
|
||||
[integrated] integrat
|
||||
[nvidia] NVIDIA
|
||||
} graphics
|
||||
.desc = { $mode ->
|
||||
[compute] Folosește grafica dedicată doar pentru activități computaționale. { -requires-restart }.
|
||||
*[hybrid] Aplicațiile folosesc grafica integrată numai dacă nu cer folosirea graficii dedicate. { -requires-restart }.
|
||||
[integrated] Dezactivează grafica dedicată pentru o durată de viață mai lungă a bateriei și mai puțin zgomot.
|
||||
[nvidia] O experiență grafică superioară cu consum de energie ridicat. { -requires-restart }.
|
||||
}
|
||||
.restart = Reporniți și utilizați { $mode }?
|
||||
.restart-desc = Schimbarea la modul { $mode } va închide toate aplicațiile
|
||||
|
||||
mirroring = Oglindire
|
||||
.id = Oglindirea { $id }
|
||||
.dont = Nu oglindiți
|
||||
|
|
|
|||
|
|
@ -90,28 +90,6 @@ display = Мониторы
|
|||
.resolution = Разрешение
|
||||
.scale = Масштабирование
|
||||
|
||||
graphics-mode = Режим графики
|
||||
.mode = { $mode ->
|
||||
[compute] Вычислительная
|
||||
*[hybrid] Гибридная
|
||||
[integrated] Встроенная
|
||||
[nvidia] NVIDIA
|
||||
} графика
|
||||
.enable = Включить { $mode ->
|
||||
[compute] вычислительную
|
||||
*[hybrid] гибридную
|
||||
[integrated] встроенную
|
||||
[nvidia] NVIDIA
|
||||
} графику
|
||||
.desc = { $mode ->
|
||||
[compute] Выделенная графика используется только для вычислительных нагрузок. Отключает внешние мониторы. { -requires-restart }.
|
||||
*[hybrid] Приложения используют интегрированную графику, если только нет явного запроса на использование выделенной графики. { -requires-restart }.
|
||||
[integrated] Отключение выделенной графики для увеличения времени автономной работы и снижения шума вентилятора.
|
||||
[nvidia] Улучшенные графические возможности и максимальное энергопотребление. { -requires-restart }.
|
||||
}
|
||||
.restart = Перезапустить и переключиться на { $mode }?
|
||||
.restart-desc = Переключение на { $mode } приведет к закрытию всех открытых приложений
|
||||
|
||||
mirroring = Зеркальное отображение
|
||||
.id = Зеркальное отображение { $id }
|
||||
.dont = Не зеркалить
|
||||
|
|
|
|||
|
|
@ -81,28 +81,6 @@ display = Екрани
|
|||
.resolution = Резолуција
|
||||
.scale = Размера
|
||||
|
||||
graphics-mode = Графички режим
|
||||
.mode = { $mode ->
|
||||
[compute] Рачунска
|
||||
*[hybrid] Хибридна
|
||||
[integrated] Интегрисана
|
||||
[nvidia] NVIDIA
|
||||
} графика
|
||||
.enable = Омогући { $mode ->
|
||||
[compute] рачунску
|
||||
*[hybrid] хибридну
|
||||
[integrated] интегрисану
|
||||
[nvidia] NVIDIA
|
||||
} графику
|
||||
.desc = { $mode ->
|
||||
[compute] Користи наменску графику само за рачунска оптерећења. Исључује спољне екране. { -requires-restart }.
|
||||
*[hybrid] Апликације користе интегрисану графику осим ако се изричито не захтева коришћење наменске графике. { -requires-restart }.
|
||||
[integrated] Искључује наменску графику ради дужег трајања батерије и мање буке вентилатора.
|
||||
[nvidia] Боље графичко искуство и највећа потрошња енергије. { -requires-restart }.
|
||||
}
|
||||
.restart = Поново покрени и пребаци на { $mode }?
|
||||
.restart-desc = Пребацивање на { $mode } ће затворити све отворене апликације
|
||||
|
||||
mirroring = Пресликавање
|
||||
.id = Пресликавање { $id }
|
||||
.dont = Не пресликавај
|
||||
|
|
|
|||
|
|
@ -81,28 +81,6 @@ display = Ekrani
|
|||
.resolution = Rezolucija
|
||||
.scale = Razmera
|
||||
|
||||
graphics-mode = Grafički režim
|
||||
.mode = { $mode ->
|
||||
[compute] Računska
|
||||
*[hybrid] Hibridna
|
||||
[integrated] Integrisana
|
||||
[nvidia] NVIDIA
|
||||
} grafika
|
||||
.enable = Omogući { $mode ->
|
||||
[compute] računsku
|
||||
*[hybrid] hibridnu
|
||||
[integrated] integrisanu
|
||||
[nvidia] NVIDIA
|
||||
} grafiku
|
||||
.desc = { $mode ->
|
||||
[compute] Koristi namensku grafiku samo za računska opterećenja. Isljučuje spoljne ekrane. { -requires-restart }.
|
||||
*[hybrid] Aplikacije koriste integrisanu grafiku osim ako se izričito ne zahteva korišćenje namenske grafike. { -requires-restart }.
|
||||
[integrated] Isključuje namensku grafiku radi dužeg trajanja baterije i manje buke ventilatora.
|
||||
[nvidia] Bolje grafičko iskustvo i najveća potrošnja energije. { -requires-restart }.
|
||||
}
|
||||
.restart = Ponovo pokreni i prebaci na { $mode }?
|
||||
.restart-desc = Prebacivanje na { $mode } će zatvoriti sve otvorene aplikacije
|
||||
|
||||
mirroring = Preslikavanje
|
||||
.id = Preslikavanje { $id }
|
||||
.dont = Ne preslikavaj
|
||||
|
|
|
|||
|
|
@ -78,28 +78,6 @@ display = Skärmar
|
|||
.resolution = Upplösning
|
||||
.scale = Skala
|
||||
|
||||
graphics-mode = Grafikläge
|
||||
.mode = { $mode ->
|
||||
[compute] Beräkna
|
||||
*[hybrid] Hybrid
|
||||
[integrated] Integrerad
|
||||
[nvidia] NVIDIA
|
||||
} graphics
|
||||
.enable = Enable { $mode ->
|
||||
[compute] beräkna
|
||||
*[hybrid] hybrid
|
||||
[integrated] integrerad
|
||||
[nvidia] NVIDIA
|
||||
} graphics
|
||||
.desc = { $mode ->
|
||||
[compute] Använder dedikerad grafik endast för beräkningsarbete. Inaktiverar externa bildskärmar. { -requires-restart }.
|
||||
*[hybrid] Applikationer använder integrerad grafik om det inte uttryckligen uppmanas att använda dedikerad grafik. { -requires-restart }.
|
||||
[integrated] Stänger av dedikerad grafik för längre batteritid och mindre fläktljud.
|
||||
[nvidia] Bättre grafisk upplevelse och högsta strömförbrukning. { -requires-restart }.
|
||||
}
|
||||
.restart = Starta om och ändra till { $mode }?
|
||||
.restart-desc = Om du byter till { $mode } stängs alla öppna applikationer
|
||||
|
||||
mirroring = Spegling
|
||||
.id = Spegling { $id }
|
||||
.dont = Spegla inte
|
||||
|
|
|
|||
|
|
@ -92,28 +92,6 @@ display = 显示器
|
|||
.resolution = 分辨率
|
||||
.scale = 缩放
|
||||
|
||||
graphics-mode = 显示模式
|
||||
.mode = { $mode ->
|
||||
[compute] 计算
|
||||
*[hybrid] 混合
|
||||
[integrated] 集成
|
||||
[nvidia] NVIDIA
|
||||
} 图形
|
||||
.enable = 启用 { $mode ->
|
||||
[compute] 计算
|
||||
*[hybrid] 混合
|
||||
[integrated] 集成
|
||||
[nvidia] NVIDIA
|
||||
} 图形
|
||||
.desc = { $mode ->
|
||||
[compute] 仅将独立显卡用于计算工作负载。禁用外部显示器。 { -requires-restart }。
|
||||
*[hybrid] 应用程序使用集成显卡,除非明确要求使用独立显卡。 { -requires-restart }。
|
||||
[integrated] 关闭独立显卡以延长电池寿命并减少风扇噪音。
|
||||
[nvidia] 更好的显示体验和最高的功耗。 { -requires-restart }。
|
||||
}
|
||||
.restart = 重新启动并切换到 { $mode }?
|
||||
.restart-desc = 切换到 { $mode } 将关闭所有打开的应用程序
|
||||
|
||||
mirroring = 镜像显示
|
||||
.id = 镜像 { $id }
|
||||
.dont = 不镜像显示
|
||||
|
|
|
|||
|
|
@ -92,28 +92,6 @@ display = 螢幕
|
|||
.resolution = 解析度
|
||||
.scale = 縮放比例
|
||||
|
||||
graphics-mode = 顯卡運作模式
|
||||
.mode = { $mode ->
|
||||
[compute] 高效能模式
|
||||
*[hybrid] 混合模式
|
||||
[integrated] 省電模式
|
||||
[nvidia] NVIDIA 模式
|
||||
} graphics
|
||||
.enable = Enable { $mode ->
|
||||
[compute] 高效能模式
|
||||
*[hybrid] 混合模式
|
||||
[integrated] 省電模式
|
||||
[nvidia] NVIDIA 模式
|
||||
} graphics
|
||||
.desc = { $mode ->
|
||||
[compute] 只啟用獨立顯示卡獲得最好的運算效能,可能會關閉外接螢幕。{ -requires-restart }.
|
||||
*[hybrid] 應用程式預設使用整合式顯示卡,除非程式主動要求使用獨立顯示卡。{ -requires-restart }.
|
||||
[integrated] 關閉獨立顯示卡,只啟用整合式顯示卡以獲得更好的省電效果及更低的風扇噪音。
|
||||
[nvidia] Nvidia 顯示卡將消耗更多的電源來獲得更好的運算與顯示體驗。 { -requires-restart }.
|
||||
}
|
||||
.restart = 重啟並切換至 { $mode }?
|
||||
.restart-desc = 切換至 { $mode } 將關閉全部的應用程式
|
||||
|
||||
mirroring = 投影
|
||||
.id = 正在投影 { $id }
|
||||
.dont = 不要投影
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue