Compare commits
11 commits
3639bafcfa
...
52ce463a59
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
52ce463a59 | ||
|
|
48eae39858 | ||
|
|
ba5fb65b44 | ||
|
|
95a82c0d69 | ||
|
|
c06b184ecf | ||
|
|
d0fa882596 | ||
|
|
2b7fd9b8e2 | ||
|
|
eb55cd020f | ||
|
|
96ce377ebf | ||
|
|
09c4d04b49 | ||
|
|
f4e8a920ff |
46 changed files with 1712 additions and 1406 deletions
14
.github/workflows/ci.yml
vendored
14
.github/workflows/ci.yml
vendored
|
|
@ -15,9 +15,9 @@ jobs:
|
||||||
name: Rustfmt
|
name: Rustfmt
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v6
|
||||||
- name: install toolchain
|
- name: install toolchain
|
||||||
run: rustup toolchain install 1.80.1 --component rustfmt
|
run: rustup toolchain install 1.90.0 --component rustfmt
|
||||||
- name: fmt
|
- name: fmt
|
||||||
run: cargo fmt --all --check
|
run: cargo fmt --all --check
|
||||||
|
|
||||||
|
|
@ -27,9 +27,9 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- name: install system dependencies
|
- name: install system dependencies
|
||||||
run: sudo apt-get update && sudo apt-get install lld cmake libclang-dev libexpat1-dev libfontconfig-dev libfreetype-dev libpipewire-0.3-dev libpulse-dev pkg-config libxkbcommon-dev libudev-dev libinput-dev libwayland-dev
|
run: sudo apt-get update && sudo apt-get install lld cmake libclang-dev libexpat1-dev libfontconfig-dev libfreetype-dev libpipewire-0.3-dev libpulse-dev pkg-config libxkbcommon-dev libudev-dev libinput-dev libwayland-dev
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v6
|
||||||
- name: install toolchain
|
- name: install toolchain
|
||||||
run: rustup toolchain install 1.80.1 --component clippy
|
run: rustup toolchain install 1.90.0 --component clippy
|
||||||
- name: clippy
|
- name: clippy
|
||||||
run: cargo clippy --all-features
|
run: cargo clippy --all-features
|
||||||
|
|
||||||
|
|
@ -39,7 +39,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- name: install system dependencies
|
- name: install system dependencies
|
||||||
run: sudo apt-get update && sudo apt-get install lld cmake libclang-dev libexpat1-dev libfontconfig-dev libfreetype-dev libpipewire-0.3-dev libpulse-dev pkg-config libxkbcommon-dev libudev-dev libinput-dev libwayland-dev
|
run: sudo apt-get update && sudo apt-get install lld cmake libclang-dev libexpat1-dev libfontconfig-dev libfreetype-dev libpipewire-0.3-dev libpulse-dev pkg-config libxkbcommon-dev libudev-dev libinput-dev libwayland-dev
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v6
|
||||||
- name: install toolchain
|
- name: install toolchain
|
||||||
run: rustup show
|
run: rustup show
|
||||||
- name: test
|
- name: test
|
||||||
|
|
@ -51,8 +51,8 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- name: install system dependencies
|
- name: install system dependencies
|
||||||
run: sudo apt-get update && sudo apt-get install lld cmake libclang-dev libexpat1-dev libfontconfig-dev libfreetype-dev libpipewire-0.3-dev libpulse-dev pkg-config libxkbcommon-dev libudev-dev libinput-dev libwayland-dev just
|
run: sudo apt-get update && sudo apt-get install lld cmake libclang-dev libexpat1-dev libfontconfig-dev libfreetype-dev libpipewire-0.3-dev libpulse-dev pkg-config libxkbcommon-dev libudev-dev libinput-dev libwayland-dev just
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v6
|
||||||
- name: install toolchain
|
- name: install toolchain
|
||||||
run: rustup show
|
run: rustup show
|
||||||
- name: check features
|
- name: check features
|
||||||
run: just check-features
|
run: just check-features
|
||||||
|
|
|
||||||
2
.github/workflows/validate-desktop-files.yml
vendored
2
.github/workflows/validate-desktop-files.yml
vendored
|
|
@ -18,7 +18,7 @@ jobs:
|
||||||
image: ubuntu:25.10
|
image: ubuntu:25.10
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Install desktop-file-utils
|
- name: Install desktop-file-utils
|
||||||
run: |
|
run: |
|
||||||
|
|
|
||||||
406
Cargo.lock
generated
406
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
22
Cargo.toml
22
Cargo.toml
|
|
@ -70,16 +70,18 @@ cosmic-client-toolkit = { git = "https://github.com/pop-os/cosmic-protocols//",
|
||||||
# cosmic-settings-config = { git = "https://github.com/pop-os/cosmic-settings-daemon//", branch = "input_nobuild" }
|
# cosmic-settings-config = { git = "https://github.com/pop-os/cosmic-settings-daemon//", branch = "input_nobuild" }
|
||||||
|
|
||||||
# For development and testing purposes
|
# For development and testing purposes
|
||||||
# [patch.'https://github.com/pop-os/libcosmic']
|
[patch.'https://github.com/pop-os/libcosmic']
|
||||||
# libcosmic = { path = "../libcosmic" }
|
libcosmic = { path = "../libcosmic" }
|
||||||
# cosmic-config = { path = "../libcosmic/cosmic-config" }
|
cosmic-config = { path = "../libcosmic/cosmic-config" }
|
||||||
# cosmic-theme = { path = "../libcosmic/cosmic-theme" }
|
cosmic-theme = { path = "../libcosmic/cosmic-theme" }
|
||||||
# iced_futures = { path = "../libcosmic/iced/futures" }
|
iced_futures = { path = "../libcosmic/iced/futures" }
|
||||||
#
|
iced_winit = { path = "../libcosmic/iced/winit" }
|
||||||
#iced_futures = { git = "https://github.com/pop-os/libcosmic//" }
|
|
||||||
#libcosmic = { git = "https://github.com/pop-os/libcosmic//" }
|
# libcosmic = { git = "https://github.com/pop-os/libcosmic//" }
|
||||||
#cosmic-config = { git = "https://github.com/pop-os/libcosmic//" }
|
# cosmic-config = { git = "https://github.com/pop-os/libcosmic//" }
|
||||||
#cosmic-theme = { git = "https://github.com/pop-os/libcosmic//" }
|
# cosmic-theme = { git = "https://github.com/pop-os/libcosmic//" }
|
||||||
|
# iced_futures = { git = "https://github.com/pop-os/libcosmic//" }
|
||||||
|
# iced_winit = { git = "https://github.com/pop-os/libcosmic//" }
|
||||||
|
|
||||||
# [patch.'https://github.com/pop-os/dbus-settings-bindings']
|
# [patch.'https://github.com/pop-os/dbus-settings-bindings']
|
||||||
# cosmic-dbus-networkmanager = { path = "../dbus-settings-bindings/networkmanager" }
|
# cosmic-dbus-networkmanager = { path = "../dbus-settings-bindings/networkmanager" }
|
||||||
|
|
|
||||||
|
|
@ -219,19 +219,18 @@ pub fn magnifier(
|
||||||
.add(
|
.add(
|
||||||
settings::item::builder(&descriptions[magnifier])
|
settings::item::builder(&descriptions[magnifier])
|
||||||
.description(&descriptions[controls])
|
.description(&descriptions[controls])
|
||||||
.control(
|
.toggler(page.magnifier_state, Message::SetMagnifier),
|
||||||
widget::toggler(page.magnifier_state).on_toggle(Message::SetMagnifier),
|
)
|
||||||
),
|
.add(
|
||||||
|
settings::item::builder(&descriptions[scroll_controls]).toggler(
|
||||||
|
page.zoom_config.enable_mouse_zoom_shortcuts,
|
||||||
|
Message::SetMouseShortcuts,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.add(
|
||||||
|
settings::item::builder(&descriptions[show_overlay])
|
||||||
|
.toggler(page.zoom_config.show_overlay, Message::SetOverlay),
|
||||||
)
|
)
|
||||||
.add(settings::item(
|
|
||||||
&descriptions[scroll_controls],
|
|
||||||
widget::toggler(page.zoom_config.enable_mouse_zoom_shortcuts)
|
|
||||||
.on_toggle(Message::SetMouseShortcuts),
|
|
||||||
))
|
|
||||||
.add(settings::item(
|
|
||||||
&descriptions[show_overlay],
|
|
||||||
widget::toggler(page.zoom_config.show_overlay).on_toggle(Message::SetOverlay),
|
|
||||||
))
|
|
||||||
.add(settings::item(
|
.add(settings::item(
|
||||||
&descriptions[increment],
|
&descriptions[increment],
|
||||||
widget::dropdown::popup_dropdown(
|
widget::dropdown::popup_dropdown(
|
||||||
|
|
@ -247,10 +246,10 @@ pub fn magnifier(
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
))
|
))
|
||||||
.add(settings::item(
|
.add(
|
||||||
&descriptions[signin],
|
settings::item::builder(&descriptions[signin])
|
||||||
widget::toggler(page.zoom_config.start_on_login).on_toggle(Message::SetSignin),
|
.toggler(page.zoom_config.start_on_login, Message::SetSignin),
|
||||||
))
|
)
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
.map(crate::pages::Message::AccessibilityMagnifier)
|
.map(crate::pages::Message::AccessibilityMagnifier)
|
||||||
})
|
})
|
||||||
|
|
@ -300,36 +299,21 @@ pub fn view_movement() -> section::Section<crate::pages::Message> {
|
||||||
|
|
||||||
settings::section()
|
settings::section()
|
||||||
.title(§ion.title)
|
.title(§ion.title)
|
||||||
.add(widget::settings::item_row(vec![
|
.add(settings::item::builder(&descriptions[continuous]).radio(
|
||||||
widget::radio(
|
ZoomMovement::Continuously,
|
||||||
text::body(&descriptions[continuous]),
|
Some(page.zoom_config.view_moves),
|
||||||
ZoomMovement::Continuously,
|
Message::SetMovement,
|
||||||
Some(page.zoom_config.view_moves),
|
))
|
||||||
Message::SetMovement,
|
.add(settings::item::builder(&descriptions[onedge]).radio(
|
||||||
)
|
ZoomMovement::OnEdge,
|
||||||
.width(Length::Fill)
|
Some(page.zoom_config.view_moves),
|
||||||
.into(),
|
Message::SetMovement,
|
||||||
]))
|
))
|
||||||
.add(widget::settings::item_row(vec![
|
.add(settings::item::builder(&descriptions[centered]).radio(
|
||||||
widget::radio(
|
ZoomMovement::Centered,
|
||||||
text::body(&descriptions[onedge]),
|
Some(page.zoom_config.view_moves),
|
||||||
ZoomMovement::OnEdge,
|
Message::SetMovement,
|
||||||
Some(page.zoom_config.view_moves),
|
))
|
||||||
Message::SetMovement,
|
|
||||||
)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into(),
|
|
||||||
]))
|
|
||||||
.add(widget::settings::item_row(vec![
|
|
||||||
widget::radio(
|
|
||||||
text::body(&descriptions[centered]),
|
|
||||||
ZoomMovement::Centered,
|
|
||||||
Some(page.zoom_config.view_moves),
|
|
||||||
Message::SetMovement,
|
|
||||||
)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into(),
|
|
||||||
]))
|
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
.map(crate::pages::Message::AccessibilityMagnifier)
|
.map(crate::pages::Message::AccessibilityMagnifier)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
use cosmic::{
|
use cosmic::{
|
||||||
Task,
|
Apply, Element, Task,
|
||||||
cosmic_theme::{CosmicPalette, ThemeBuilder},
|
cosmic_theme::{CosmicPalette, ThemeBuilder},
|
||||||
iced::core::text::Wrapping,
|
iced::core::text::Wrapping,
|
||||||
iced::stream,
|
iced::stream,
|
||||||
surface,
|
surface,
|
||||||
theme::CosmicTheme,
|
theme::CosmicTheme,
|
||||||
widget::{dropdown, settings, text, toggler},
|
widget::{dropdown, settings, text},
|
||||||
};
|
};
|
||||||
pub use cosmic_comp_config::ZoomMovement;
|
pub use cosmic_comp_config::ZoomMovement;
|
||||||
use cosmic_config::CosmicConfigEntry;
|
use cosmic_config::CosmicConfigEntry;
|
||||||
|
|
@ -200,6 +200,22 @@ pub fn vision() -> section::Section<crate::pages::Message> {
|
||||||
.view::<Page>(move |binder, page, section| {
|
.view::<Page>(move |binder, page, section| {
|
||||||
let descriptions = §ion.descriptions;
|
let descriptions = §ion.descriptions;
|
||||||
|
|
||||||
|
let (magnifier_entity, _magnifier_info) = binder
|
||||||
|
.info
|
||||||
|
.iter()
|
||||||
|
.find(|(_, v)| v.id == "accessibility_magnifier")
|
||||||
|
.expect("magnifier page not found");
|
||||||
|
|
||||||
|
let status_text = if page.wayland_available.is_some() {
|
||||||
|
if page.magnifier_state {
|
||||||
|
&descriptions[on]
|
||||||
|
} else {
|
||||||
|
&descriptions[off]
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
&descriptions[unavailable]
|
||||||
|
};
|
||||||
|
|
||||||
settings::section()
|
settings::section()
|
||||||
.title(§ion.title)
|
.title(§ion.title)
|
||||||
.add(
|
.add(
|
||||||
|
|
@ -210,31 +226,13 @@ pub fn vision() -> section::Section<crate::pages::Message> {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.add({
|
.add(crate::widget::go_next_with_item(
|
||||||
let (magnifier_entity, _magnifier_info) = binder
|
&descriptions[magnifier],
|
||||||
.info
|
text::body(status_text).wrapping(Wrapping::Word),
|
||||||
.iter()
|
page.wayland_available
|
||||||
.find(|(_, v)| v.id == "accessibility_magnifier")
|
.is_some()
|
||||||
.expect("magnifier page not found");
|
.then_some(crate::pages::Message::Page(magnifier_entity)),
|
||||||
|
))
|
||||||
let status_text = if page.wayland_available.is_some() {
|
|
||||||
if page.magnifier_state {
|
|
||||||
&descriptions[on]
|
|
||||||
} else {
|
|
||||||
&descriptions[off]
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
&descriptions[unavailable]
|
|
||||||
};
|
|
||||||
|
|
||||||
crate::widget::go_next_with_item(
|
|
||||||
&descriptions[magnifier],
|
|
||||||
text::body(status_text).wrapping(Wrapping::Word),
|
|
||||||
page.wayland_available
|
|
||||||
.is_some()
|
|
||||||
.then_some(crate::pages::Message::Page(magnifier_entity)),
|
|
||||||
)
|
|
||||||
})
|
|
||||||
.add(
|
.add(
|
||||||
settings::item::builder(&descriptions[high_contrast])
|
settings::item::builder(&descriptions[high_contrast])
|
||||||
.toggler(page.theme.is_high_contrast, |enable| {
|
.toggler(page.theme.is_high_contrast, |enable| {
|
||||||
|
|
@ -242,21 +240,19 @@ pub fn vision() -> section::Section<crate::pages::Message> {
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
.add(
|
.add(
|
||||||
settings::item::builder(&descriptions[invert_colors]).control(
|
settings::item::builder(&descriptions[invert_colors]).toggler_maybe(
|
||||||
toggler(page.screen_inverted).on_toggle_maybe(
|
page.screen_inverted,
|
||||||
page.wayland_available
|
page.wayland_available
|
||||||
.is_some_and(|ver| ver >= 2)
|
.is_some_and(|ver| ver >= 2)
|
||||||
.then_some(|set| Message::SetScreenInverted(set).into()),
|
.then_some(|set| Message::SetScreenInverted(set).into()),
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.add(
|
.add(
|
||||||
settings::item::builder(&descriptions[color_filters]).control(
|
settings::item::builder(&descriptions[color_filters]).toggler_maybe(
|
||||||
toggler(page.screen_filter_active).on_toggle_maybe(
|
page.screen_filter_active,
|
||||||
page.wayland_available
|
page.wayland_available
|
||||||
.is_some_and(|ver| ver >= 2)
|
.is_some_and(|ver| ver >= 2)
|
||||||
.then_some(|set| Message::SetScreenFilterActive(set).into()),
|
.then_some(|set| Message::SetScreenFilterActive(set).into()),
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.add({
|
.add({
|
||||||
|
|
@ -304,13 +300,11 @@ pub fn hearing() -> section::Section<crate::pages::Message> {
|
||||||
settings::section()
|
settings::section()
|
||||||
.title(§ion.title)
|
.title(§ion.title)
|
||||||
.add(
|
.add(
|
||||||
cosmic::Element::from(
|
settings::item::builder(&descriptions[mono])
|
||||||
settings::item::builder(&descriptions[mono])
|
.toggler(page.daemon_config.mono_sound, Message::SetSoundMono),
|
||||||
.toggler(page.daemon_config.mono_sound, Message::SetSoundMono),
|
|
||||||
)
|
|
||||||
.map(crate::pages::Message::Accessibility),
|
|
||||||
)
|
)
|
||||||
.into()
|
.apply(Element::from)
|
||||||
|
.map(crate::pages::Message::Accessibility)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,9 @@ use std::{
|
||||||
use cosmic::{
|
use cosmic::{
|
||||||
Apply, Element, Task,
|
Apply, Element, Task,
|
||||||
cosmic_config::{self, ConfigGet, ConfigSet},
|
cosmic_config::{self, ConfigGet, ConfigSet},
|
||||||
iced::{Length, stream},
|
iced::stream,
|
||||||
surface,
|
surface,
|
||||||
widget::{self, dropdown, text},
|
widget::{self, dropdown, settings, text},
|
||||||
};
|
};
|
||||||
use cosmic_comp_config::{EavesdroppingKeyboardMode, XwaylandDescaling, XwaylandEavesdropping};
|
use cosmic_comp_config::{EavesdroppingKeyboardMode, XwaylandDescaling, XwaylandEavesdropping};
|
||||||
use cosmic_randr_shell::List;
|
use cosmic_randr_shell::List;
|
||||||
|
|
@ -277,61 +277,46 @@ pub fn legacy_application_global_shortcuts() -> Section<crate::pages::Message> {
|
||||||
.title(fl!("legacy-app-global-shortcuts"))
|
.title(fl!("legacy-app-global-shortcuts"))
|
||||||
.descriptions(descriptions)
|
.descriptions(descriptions)
|
||||||
.view::<Page>(move |_binder, page, section| {
|
.view::<Page>(move |_binder, page, section| {
|
||||||
let title = widget::text::body(§ion.title).font(cosmic::font::bold());
|
let title = text::body(§ion.title).font(cosmic::font::bold());
|
||||||
let description = widget::text::body(§ion.descriptions[desc]);
|
let description = text::body(§ion.descriptions[desc]);
|
||||||
|
|
||||||
let content = widget::settings::section::<'_, crate::pages::Message>()
|
let content = settings::section::<'_, crate::pages::Message>()
|
||||||
.add(widget::settings::item_row(vec![
|
.add(settings::item::builder(§ion.descriptions[none]).radio(
|
||||||
widget::radio(
|
EavesdroppingKeyboardMode::None,
|
||||||
text::body(§ion.descriptions[none]),
|
Some(page.comp_config_xwayland_eavesdropping.keyboard),
|
||||||
EavesdroppingKeyboardMode::None,
|
|t| Message::SetXwaylandKeyboardMode(t).into(),
|
||||||
Some(page.comp_config_xwayland_eavesdropping.keyboard),
|
))
|
||||||
|t| Message::SetXwaylandKeyboardMode(t).into(),
|
.add(
|
||||||
)
|
settings::item::builder(§ion.descriptions[modifiers]).radio(
|
||||||
.width(Length::Fill)
|
|
||||||
.into(),
|
|
||||||
]))
|
|
||||||
.add(widget::settings::item_row(vec![
|
|
||||||
widget::radio(
|
|
||||||
text::body(§ion.descriptions[modifiers]),
|
|
||||||
EavesdroppingKeyboardMode::Modifiers,
|
EavesdroppingKeyboardMode::Modifiers,
|
||||||
Some(page.comp_config_xwayland_eavesdropping.keyboard),
|
Some(page.comp_config_xwayland_eavesdropping.keyboard),
|
||||||
|t| Message::SetXwaylandKeyboardMode(t).into(),
|
|t| Message::SetXwaylandKeyboardMode(t).into(),
|
||||||
)
|
),
|
||||||
.width(Length::Fill)
|
)
|
||||||
.into(),
|
.add(
|
||||||
]))
|
settings::item::builder(§ion.descriptions[combination]).radio(
|
||||||
.add(widget::settings::item_row(vec![
|
|
||||||
widget::radio(
|
|
||||||
text::body(§ion.descriptions[combination]),
|
|
||||||
EavesdroppingKeyboardMode::Combinations,
|
EavesdroppingKeyboardMode::Combinations,
|
||||||
Some(page.comp_config_xwayland_eavesdropping.keyboard),
|
Some(page.comp_config_xwayland_eavesdropping.keyboard),
|
||||||
|t| Message::SetXwaylandKeyboardMode(t).into(),
|
|t| Message::SetXwaylandKeyboardMode(t).into(),
|
||||||
)
|
),
|
||||||
.width(Length::Fill)
|
)
|
||||||
.into(),
|
.add(settings::item::builder(§ion.descriptions[all]).radio(
|
||||||
]))
|
EavesdroppingKeyboardMode::All,
|
||||||
.add(widget::settings::item_row(vec![
|
Some(page.comp_config_xwayland_eavesdropping.keyboard),
|
||||||
widget::radio(
|
|t| Message::SetXwaylandKeyboardMode(t).into(),
|
||||||
text::body(§ion.descriptions[all]),
|
))
|
||||||
EavesdroppingKeyboardMode::All,
|
.add(
|
||||||
Some(page.comp_config_xwayland_eavesdropping.keyboard),
|
settings::item::builder(§ion.descriptions[mouse])
|
||||||
|t| Message::SetXwaylandKeyboardMode(t).into(),
|
.toggler(page.comp_config_xwayland_eavesdropping.pointer, |t| {
|
||||||
)
|
Message::SetXwaylandMouseButtonMode(t).into()
|
||||||
.width(Length::Fill)
|
}),
|
||||||
.into(),
|
);
|
||||||
]))
|
|
||||||
.add(widget::settings::item(
|
|
||||||
§ion.descriptions[mouse],
|
|
||||||
widget::toggler(page.comp_config_xwayland_eavesdropping.pointer)
|
|
||||||
.on_toggle(|t| Message::SetXwaylandMouseButtonMode(t).into()),
|
|
||||||
));
|
|
||||||
|
|
||||||
widget::column::with_capacity(3)
|
widget::column::with_capacity(3)
|
||||||
.push(title)
|
.push(title)
|
||||||
.push(description)
|
.push(description)
|
||||||
.push(content)
|
.push(content)
|
||||||
.spacing(cosmic::theme::active().cosmic().spacing.space_xxs)
|
.spacing(cosmic::theme::spacing().space_xxs)
|
||||||
.apply(cosmic::Element::from)
|
.apply(cosmic::Element::from)
|
||||||
.map(Into::into)
|
.map(Into::into)
|
||||||
})
|
})
|
||||||
|
|
@ -356,42 +341,33 @@ pub fn legacy_application_scaling() -> Section<crate::pages::Message> {
|
||||||
let descriptions = §ion.descriptions;
|
let descriptions = §ion.descriptions;
|
||||||
widget::settings::section()
|
widget::settings::section()
|
||||||
.title(§ion.title)
|
.title(§ion.title)
|
||||||
.add(widget::settings::item_row(vec![
|
.add(
|
||||||
widget::radio(
|
widget::settings::item::builder(&descriptions[gaming])
|
||||||
widget::column::with_capacity(2)
|
.description(&descriptions[gaming_desc])
|
||||||
.push(text::body(&descriptions[gaming]))
|
.radio(
|
||||||
.push(text::caption(&descriptions[gaming_desc])),
|
XwaylandDescaling::Fractional,
|
||||||
XwaylandDescaling::Fractional,
|
Some(page.comp_config_descale_xwayland),
|
||||||
Some(page.comp_config_descale_xwayland),
|
Message::SetXwaylandDescaling,
|
||||||
Message::SetXwaylandDescaling,
|
),
|
||||||
)
|
)
|
||||||
.width(Length::Fill)
|
.add(
|
||||||
.into(),
|
widget::settings::item::builder(&descriptions[apps])
|
||||||
]))
|
.description(&descriptions[apps_desc])
|
||||||
.add(widget::settings::item_row(vec![
|
.radio(
|
||||||
widget::radio(
|
XwaylandDescaling::Enabled,
|
||||||
widget::column::with_capacity(2)
|
Some(page.comp_config_descale_xwayland),
|
||||||
.push(text::body(&descriptions[apps]))
|
Message::SetXwaylandDescaling,
|
||||||
.push(text::caption(&descriptions[apps_desc])),
|
),
|
||||||
XwaylandDescaling::Enabled,
|
)
|
||||||
Some(page.comp_config_descale_xwayland),
|
.add(
|
||||||
Message::SetXwaylandDescaling,
|
widget::settings::item::builder(&descriptions[compat])
|
||||||
)
|
.description(&descriptions[compat_desc])
|
||||||
.width(Length::Fill)
|
.radio(
|
||||||
.into(),
|
XwaylandDescaling::Disabled,
|
||||||
]))
|
Some(page.comp_config_descale_xwayland),
|
||||||
.add(widget::settings::item_row(vec![
|
Message::SetXwaylandDescaling,
|
||||||
widget::radio(
|
),
|
||||||
widget::column::with_capacity(2)
|
)
|
||||||
.push(text::body(&descriptions[compat]))
|
|
||||||
.push(text::caption(&descriptions[compat_desc])),
|
|
||||||
XwaylandDescaling::Disabled,
|
|
||||||
Some(page.comp_config_descale_xwayland),
|
|
||||||
Message::SetXwaylandDescaling,
|
|
||||||
)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into(),
|
|
||||||
]))
|
|
||||||
.add(widget::settings::item(
|
.add(widget::settings::item(
|
||||||
&descriptions[preferred_display],
|
&descriptions[preferred_display],
|
||||||
dropdown::popup_dropdown(
|
dropdown::popup_dropdown(
|
||||||
|
|
|
||||||
|
|
@ -772,12 +772,10 @@ fn status() -> Section<crate::pages::Message> {
|
||||||
}
|
}
|
||||||
|
|
||||||
widget::list_column()
|
widget::list_column()
|
||||||
.add(
|
.add(bluetooth_toggle.toggler(
|
||||||
bluetooth_toggle.control(
|
matches!(status, Active::Enabling | Active::Enabled),
|
||||||
widget::toggler(matches!(status, Active::Enabling | Active::Enabled))
|
|active| Message::SetActive(active).into(),
|
||||||
.on_toggle(|active| Message::SetActive(active).into()),
|
))
|
||||||
),
|
|
||||||
)
|
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,17 @@
|
||||||
// Copyright 2024 System76 <info@system76.com>
|
// Copyright 2024 System76 <info@system76.com>
|
||||||
// SPDX-License-Identifier: GPL-3.0-only
|
// SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
|
||||||
use std::rc::Rc;
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use cosmic::{
|
use cosmic::{
|
||||||
Apply, Element, Task,
|
Apply, Element, Task,
|
||||||
config::{CosmicTk, FontConfig},
|
config::{CosmicTk, FontConfig},
|
||||||
iced::core::text::Wrapping,
|
widget,
|
||||||
widget::{self, settings, space::horizontal as horizontal_space, svg},
|
|
||||||
};
|
};
|
||||||
use cosmic_config::ConfigSet;
|
use cosmic_config::ConfigSet;
|
||||||
|
|
||||||
use crate::app;
|
use crate::app;
|
||||||
|
use crate::widget::selection_context_item;
|
||||||
|
|
||||||
use super::{ContextView, Message, drawer};
|
use super::{ContextView, Message, drawer};
|
||||||
|
|
||||||
|
|
@ -177,10 +176,6 @@ impl Model {
|
||||||
context_view: &ContextView,
|
context_view: &ContextView,
|
||||||
callback: impl Fn(Arc<str>) -> super::Message,
|
callback: impl Fn(Arc<str>) -> super::Message,
|
||||||
) -> Element<'_, super::Message> {
|
) -> Element<'_, super::Message> {
|
||||||
let svg_accent = Rc::new(|theme: &cosmic::Theme| svg::Style {
|
|
||||||
color: Some(theme.cosmic().accent_text_color().into()),
|
|
||||||
});
|
|
||||||
|
|
||||||
let (mut families, current_font) = match *context_view {
|
let (mut families, current_font) = match *context_view {
|
||||||
ContextView::MonospaceFont => {
|
ContextView::MonospaceFont => {
|
||||||
(&self.monospace_font_families, &self.monospace_font.family)
|
(&self.monospace_font_families, &self.monospace_font.family)
|
||||||
|
|
@ -193,36 +188,17 @@ impl Model {
|
||||||
families = &self.font_filter;
|
families = &self.font_filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
let list = families.iter().fold(widget::list_column(), |list, family| {
|
let list = families.iter().fold(
|
||||||
let selected = &**family == current_font;
|
widget::list_column::with_capacity(families.len()),
|
||||||
list.add(
|
|list, family| {
|
||||||
settings::item_row(vec![
|
let selected = &**family == current_font;
|
||||||
widget::text::body(&**family)
|
list.add(selection_context_item(
|
||||||
.class(if selected {
|
family,
|
||||||
cosmic::theme::Text::Accent
|
selected,
|
||||||
} else {
|
callback(family.clone()),
|
||||||
cosmic::theme::Text::Default
|
))
|
||||||
})
|
},
|
||||||
.wrapping(Wrapping::Word)
|
);
|
||||||
.width(cosmic::iced::Length::Fill)
|
|
||||||
.into(),
|
|
||||||
if selected {
|
|
||||||
widget::icon::from_name("object-select-symbolic")
|
|
||||||
.size(16)
|
|
||||||
.icon()
|
|
||||||
.class(cosmic::theme::Svg::Custom(svg_accent.clone()))
|
|
||||||
.into()
|
|
||||||
} else {
|
|
||||||
horizontal_space().width(16.).into()
|
|
||||||
},
|
|
||||||
])
|
|
||||||
.apply(widget::container)
|
|
||||||
.class(cosmic::theme::Container::List)
|
|
||||||
.apply(widget::button::custom)
|
|
||||||
.class(cosmic::theme::Button::Transparent)
|
|
||||||
.on_press(callback(family.clone())),
|
|
||||||
)
|
|
||||||
});
|
|
||||||
list.into()
|
list.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,7 @@ use cosmic::dialog::file_chooser::{self, FileFilter};
|
||||||
use cosmic::iced::Subscription;
|
use cosmic::iced::Subscription;
|
||||||
use cosmic::iced::core::{Alignment, Length};
|
use cosmic::iced::core::{Alignment, Length};
|
||||||
use cosmic::widget::{
|
use cosmic::widget::{
|
||||||
button, color_picker::ColorPickerUpdate, container, radio, row, settings,
|
button, color_picker::ColorPickerUpdate, container, row, settings, space::horizontal, text,
|
||||||
space::horizontal as horizontal_space, text,
|
|
||||||
};
|
};
|
||||||
use cosmic::{Apply, Element, Task, widget};
|
use cosmic::{Apply, Element, Task, widget};
|
||||||
#[cfg(feature = "wayland")]
|
#[cfg(feature = "wayland")]
|
||||||
|
|
@ -790,36 +789,21 @@ pub fn interface_density() -> Section<crate::pages::Message> {
|
||||||
|
|
||||||
settings::section()
|
settings::section()
|
||||||
.title(§ion.title)
|
.title(§ion.title)
|
||||||
.add(settings::item_row(vec![
|
.add(settings::item::builder(&descriptions[compact]).radio(
|
||||||
radio(
|
Density::Compact,
|
||||||
text::body(&descriptions[compact]),
|
Some(page.density),
|
||||||
Density::Compact,
|
Message::Density,
|
||||||
Some(page.density),
|
))
|
||||||
Message::Density,
|
.add(settings::item::builder(&descriptions[comfortable]).radio(
|
||||||
)
|
Density::Standard,
|
||||||
.width(Length::Fill)
|
Some(page.density),
|
||||||
.into(),
|
Message::Density,
|
||||||
]))
|
))
|
||||||
.add(settings::item_row(vec![
|
.add(settings::item::builder(&descriptions[spacious]).radio(
|
||||||
radio(
|
Density::Spacious,
|
||||||
text::body(&descriptions[comfortable]),
|
Some(page.density),
|
||||||
Density::Standard,
|
Message::Density,
|
||||||
Some(page.density),
|
))
|
||||||
Message::Density,
|
|
||||||
)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into(),
|
|
||||||
]))
|
|
||||||
.add(settings::item_row(vec![
|
|
||||||
radio(
|
|
||||||
text::body(&descriptions[spacious]),
|
|
||||||
Density::Spacious,
|
|
||||||
Some(page.density),
|
|
||||||
Message::Density,
|
|
||||||
)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into(),
|
|
||||||
]))
|
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
.map(crate::pages::Message::Appearance)
|
.map(crate::pages::Message::Appearance)
|
||||||
})
|
})
|
||||||
|
|
@ -933,7 +917,7 @@ pub fn reset_button() -> Section<crate::pages::Message> {
|
||||||
.on_press(Message::Reset)
|
.on_press(Message::Reset)
|
||||||
.into()
|
.into()
|
||||||
} else {
|
} else {
|
||||||
horizontal_space().width(1.).apply(Element::from)
|
horizontal().width(1.).apply(Element::from)
|
||||||
}
|
}
|
||||||
.map(crate::pages::Message::Appearance)
|
.map(crate::pages::Message::Appearance)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ use cosmic::cosmic_theme::palette::Srgba;
|
||||||
use cosmic::iced::ContentFit;
|
use cosmic::iced::ContentFit;
|
||||||
use cosmic::iced::core::{Alignment, Length};
|
use cosmic::iced::core::{Alignment, Length};
|
||||||
use cosmic::widget::icon::{from_name, icon};
|
use cosmic::widget::icon::{from_name, icon};
|
||||||
use cosmic::widget::{self, button, container, settings, text};
|
use cosmic::widget::{self, button, container, list, settings, text};
|
||||||
use cosmic::{Apply, Element};
|
use cosmic::{Apply, Element};
|
||||||
use cosmic_settings_page::Section;
|
use cosmic_settings_page::Section;
|
||||||
use cosmic_settings_wallpaper as wallpaper;
|
use cosmic_settings_wallpaper as wallpaper;
|
||||||
|
|
@ -64,105 +64,117 @@ fn container_background<'a>(
|
||||||
page: &Page,
|
page: &Page,
|
||||||
section: &'a Section<crate::pages::Message>,
|
section: &'a Section<crate::pages::Message>,
|
||||||
labels: &HashMap<String, usize>,
|
labels: &HashMap<String, usize>,
|
||||||
) -> impl Into<Element<'a, Message>> {
|
) -> list::ListButton<'a, Message> {
|
||||||
let descriptions = §ion.descriptions;
|
let descriptions = §ion.descriptions;
|
||||||
let go_next_icon = from_name("go-next-symbolic").handle();
|
let go_next_icon = from_name("go-next-symbolic").handle();
|
||||||
|
|
||||||
settings::item::builder(&descriptions[labels["container_bg"]])
|
list::button(
|
||||||
.description(&descriptions[labels["container_bg_desc"]])
|
settings::item::builder(&descriptions[labels["container_bg"]])
|
||||||
.control(
|
.description(&descriptions[labels["container_bg_desc"]])
|
||||||
if page
|
.control(
|
||||||
.drawer
|
if page
|
||||||
.container_background
|
.drawer
|
||||||
.get_applied_color()
|
.container_background
|
||||||
.is_some()
|
.get_applied_color()
|
||||||
{
|
.is_some()
|
||||||
Element::from(
|
{
|
||||||
page.drawer
|
Element::from(
|
||||||
.container_background
|
page.drawer
|
||||||
.picker_button(
|
.container_background
|
||||||
|_| Message::DrawerOpen(ContextView::ContainerBackground),
|
.picker_button(
|
||||||
Some(24),
|
|_| Message::DrawerOpen(ContextView::ContainerBackground),
|
||||||
)
|
Some(24),
|
||||||
.width(Length::Fixed(48.0))
|
)
|
||||||
.height(Length::Fixed(24.0)),
|
.width(Length::Fixed(48.0))
|
||||||
)
|
.height(Length::Fixed(24.0)),
|
||||||
} else {
|
)
|
||||||
container(
|
} else {
|
||||||
button::text(&descriptions[labels["auto"]])
|
container(
|
||||||
.trailing_icon(go_next_icon.clone())
|
button::text(&descriptions[labels["auto"]])
|
||||||
.on_press(Message::DrawerOpen(ContextView::ContainerBackground)),
|
.trailing_icon(go_next_icon.clone())
|
||||||
)
|
.on_press(Message::DrawerOpen(ContextView::ContainerBackground)),
|
||||||
.into()
|
)
|
||||||
},
|
.into()
|
||||||
)
|
},
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.on_press(Message::DrawerOpen(ContextView::ContainerBackground))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn application_background<'a>(
|
fn application_background<'a>(
|
||||||
page: &Page,
|
page: &Page,
|
||||||
section: &'a Section<crate::pages::Message>,
|
section: &'a Section<crate::pages::Message>,
|
||||||
labels: &HashMap<String, usize>,
|
labels: &HashMap<String, usize>,
|
||||||
) -> impl Into<Element<'a, Message>> {
|
) -> list::ListButton<'a, Message> {
|
||||||
let descriptions = §ion.descriptions;
|
let descriptions = §ion.descriptions;
|
||||||
|
|
||||||
settings::item::builder(&descriptions[labels["app_bg"]]).control(
|
list::button(
|
||||||
page.drawer
|
settings::item::builder(&descriptions[labels["app_bg"]]).control(
|
||||||
.application_background
|
page.drawer
|
||||||
.picker_button(
|
.application_background
|
||||||
|_| Message::DrawerOpen(ContextView::ApplicationBackground),
|
.picker_button(
|
||||||
Some(24),
|
|_| Message::DrawerOpen(ContextView::ApplicationBackground),
|
||||||
)
|
Some(24),
|
||||||
.width(Length::Fixed(48.0))
|
)
|
||||||
.height(Length::Fixed(24.0)),
|
.width(Length::Fixed(48.0))
|
||||||
|
.height(Length::Fixed(24.0)),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
.on_press(Message::DrawerOpen(ContextView::ApplicationBackground))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn control_tint<'a>(
|
fn control_tint<'a>(
|
||||||
page: &Page,
|
page: &Page,
|
||||||
section: &'a Section<crate::pages::Message>,
|
section: &'a Section<crate::pages::Message>,
|
||||||
labels: &HashMap<String, usize>,
|
labels: &HashMap<String, usize>,
|
||||||
) -> impl Into<Element<'a, Message>> {
|
) -> list::ListButton<'a, Message> {
|
||||||
let descriptions = §ion.descriptions;
|
let descriptions = §ion.descriptions;
|
||||||
|
|
||||||
settings::item::builder(&descriptions[labels["control_tint"]])
|
list::button(
|
||||||
.description(&descriptions[labels["control_tint_desc"]])
|
settings::item::builder(&descriptions[labels["control_tint"]])
|
||||||
.control(
|
.description(&descriptions[labels["control_tint_desc"]])
|
||||||
page.drawer
|
.control(
|
||||||
.control_component
|
page.drawer
|
||||||
.picker_button(
|
.control_component
|
||||||
|_| Message::DrawerOpen(ContextView::ControlComponent),
|
.picker_button(
|
||||||
Some(24),
|
|_| Message::DrawerOpen(ContextView::ControlComponent),
|
||||||
)
|
Some(24),
|
||||||
.width(Length::Fixed(48.0))
|
)
|
||||||
.height(Length::Fixed(24.0)),
|
.width(Length::Fixed(48.0))
|
||||||
)
|
.height(Length::Fixed(24.0)),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.on_press(Message::DrawerOpen(ContextView::ControlComponent))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn interface_text<'a>(
|
fn interface_text<'a>(
|
||||||
page: &Page,
|
page: &Page,
|
||||||
section: &'a Section<crate::pages::Message>,
|
section: &'a Section<crate::pages::Message>,
|
||||||
labels: &HashMap<String, usize>,
|
labels: &HashMap<String, usize>,
|
||||||
) -> impl Into<Element<'a, Message>> {
|
) -> list::ListButton<'a, Message> {
|
||||||
let descriptions = §ion.descriptions;
|
let descriptions = §ion.descriptions;
|
||||||
|
|
||||||
settings::item::builder(&descriptions[labels["text_tint"]])
|
list::button(
|
||||||
.description(&descriptions[labels["text_tint_desc"]])
|
settings::item::builder(&descriptions[labels["text_tint"]])
|
||||||
.control(
|
.description(&descriptions[labels["text_tint_desc"]])
|
||||||
page.drawer
|
.control(
|
||||||
.interface_text
|
page.drawer
|
||||||
.picker_button(
|
.interface_text
|
||||||
|_| Message::DrawerOpen(ContextView::InterfaceText),
|
.picker_button(
|
||||||
Some(24),
|
|_| Message::DrawerOpen(ContextView::InterfaceText),
|
||||||
)
|
Some(24),
|
||||||
.width(Length::Fixed(48.0))
|
)
|
||||||
.height(Length::Fixed(24.0)),
|
.width(Length::Fixed(48.0))
|
||||||
)
|
.height(Length::Fixed(24.0)),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.on_press(Message::DrawerOpen(ContextView::InterfaceText))
|
||||||
}
|
}
|
||||||
fn auto_switch<'a>(
|
fn auto_switch<'a>(
|
||||||
page: &Page,
|
page: &Page,
|
||||||
section: &'a Section<crate::pages::Message>,
|
section: &'a Section<crate::pages::Message>,
|
||||||
labels: &HashMap<String, usize>,
|
labels: &HashMap<String, usize>,
|
||||||
) -> impl Into<Element<'a, Message>> {
|
) -> list::ListButton<'a, Message> {
|
||||||
let descriptions = §ion.descriptions;
|
let descriptions = §ion.descriptions;
|
||||||
|
|
||||||
settings::item::builder(&descriptions[labels["auto_switch"]])
|
settings::item::builder(&descriptions[labels["auto_switch"]])
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ use cosmic::Apply;
|
||||||
use cosmic::{
|
use cosmic::{
|
||||||
Element, Task,
|
Element, Task,
|
||||||
cosmic_config::{ConfigSet, CosmicConfigEntry},
|
cosmic_config::{ConfigSet, CosmicConfigEntry},
|
||||||
widget::{settings, text, toggler},
|
widget::{settings, text},
|
||||||
};
|
};
|
||||||
use cosmic_panel_config::{CosmicPanelConfig, CosmicPanelContainerConfig};
|
use cosmic_panel_config::{CosmicPanelConfig, CosmicPanelContainerConfig};
|
||||||
use cosmic_settings_page::{self as page, Section, section};
|
use cosmic_settings_page::{self as page, Section, section};
|
||||||
|
|
@ -170,16 +170,15 @@ pub(crate) fn enable() -> Section<crate::pages::Message> {
|
||||||
};
|
};
|
||||||
settings::section()
|
settings::section()
|
||||||
.title(§ion.title)
|
.title(§ion.title)
|
||||||
.add(settings::item(
|
.add(
|
||||||
&descriptions[dock],
|
settings::item::builder(&descriptions[dock]).toggler(
|
||||||
toggler(
|
|
||||||
container_config
|
container_config
|
||||||
.config_list
|
.config_list
|
||||||
.iter()
|
.iter()
|
||||||
.any(|e| e.name.as_str() == "Dock"),
|
.any(|e| e.name.as_str() == "Dock"),
|
||||||
)
|
Message::EnableDock,
|
||||||
.on_toggle(Message::EnableDock),
|
),
|
||||||
))
|
)
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
.map(crate::pages::Message::Dock)
|
.map(crate::pages::Message::Dock)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,8 @@ use cosmic::{
|
||||||
cosmic_config::{self, CosmicConfigEntry},
|
cosmic_config::{self, CosmicConfigEntry},
|
||||||
cosmic_theme::Density,
|
cosmic_theme::Density,
|
||||||
iced::{Alignment, Length},
|
iced::{Alignment, Length},
|
||||||
surface, theme,
|
surface,
|
||||||
widget::{
|
widget::{button, container, dropdown, row, settings, slider, space, text},
|
||||||
button, container, dropdown, icon, row, settings, slider,
|
|
||||||
space::horizontal as horizontal_space, text, toggler,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
use cosmic::Apply;
|
use cosmic::Apply;
|
||||||
|
|
@ -25,6 +22,7 @@ use crate::pages::desktop::appearance::Roundness;
|
||||||
pub struct PageInner {
|
pub struct PageInner {
|
||||||
pub(crate) config_helper: Option<cosmic_config::Config>,
|
pub(crate) config_helper: Option<cosmic_config::Config>,
|
||||||
pub(crate) panel_config: Option<CosmicPanelConfig>,
|
pub(crate) panel_config: Option<CosmicPanelConfig>,
|
||||||
|
pub size: Option<PanelSize>,
|
||||||
pub opacity: f32,
|
pub opacity: f32,
|
||||||
pub opacity_changing: bool,
|
pub opacity_changing: bool,
|
||||||
pub outputs: Vec<String>,
|
pub outputs: Vec<String>,
|
||||||
|
|
@ -42,6 +40,7 @@ impl Default for PageInner {
|
||||||
Self {
|
Self {
|
||||||
config_helper: Option::default(),
|
config_helper: Option::default(),
|
||||||
panel_config: Option::default(),
|
panel_config: Option::default(),
|
||||||
|
size: Option::default(),
|
||||||
opacity: 0.0,
|
opacity: 0.0,
|
||||||
opacity_changing: false,
|
opacity_changing: false,
|
||||||
outputs: vec![fl!("all-displays")],
|
outputs: vec![fl!("all-displays")],
|
||||||
|
|
@ -119,10 +118,10 @@ pub(crate) fn behavior_and_position<
|
||||||
};
|
};
|
||||||
settings::section()
|
settings::section()
|
||||||
.title(§ion.title)
|
.title(§ion.title)
|
||||||
.add(settings::item(
|
.add(
|
||||||
&descriptions[autohide_label],
|
settings::item::builder(&descriptions[autohide_label])
|
||||||
toggler(panel_config.autohide.is_some()).on_toggle(Message::AutoHidePanel),
|
.toggler(panel_config.autohide.is_some(), Message::AutoHidePanel),
|
||||||
))
|
)
|
||||||
.add(settings::item(
|
.add(settings::item(
|
||||||
&descriptions[position],
|
&descriptions[position],
|
||||||
dropdown::popup_dropdown(
|
dropdown::popup_dropdown(
|
||||||
|
|
@ -180,14 +179,14 @@ pub(crate) fn style<
|
||||||
};
|
};
|
||||||
settings::section()
|
settings::section()
|
||||||
.title(§ion.title)
|
.title(§ion.title)
|
||||||
.add(settings::item(
|
.add(
|
||||||
&descriptions[gap_label],
|
settings::item::builder(&descriptions[gap_label])
|
||||||
toggler(panel_config.anchor_gap).on_toggle(Message::AnchorGap),
|
.toggler(panel_config.anchor_gap, Message::AnchorGap),
|
||||||
))
|
)
|
||||||
.add(settings::item(
|
.add(
|
||||||
&descriptions[extend_label],
|
settings::item::builder(&descriptions[extend_label])
|
||||||
toggler(panel_config.expand_to_edges).on_toggle(Message::ExtendToEdge),
|
.toggler(panel_config.expand_to_edges, Message::ExtendToEdge),
|
||||||
))
|
)
|
||||||
.add(settings::item(
|
.add(settings::item(
|
||||||
&descriptions[appearance],
|
&descriptions[appearance],
|
||||||
dropdown::popup_dropdown(
|
dropdown::popup_dropdown(
|
||||||
|
|
@ -210,7 +209,9 @@ pub(crate) fn style<
|
||||||
text::body(fl!("small")).into(),
|
text::body(fl!("small")).into(),
|
||||||
slider(
|
slider(
|
||||||
0..=4,
|
0..=4,
|
||||||
match panel_config.size {
|
match inner.size.as_ref().expect(
|
||||||
|
"PageInner.size is None even though PageInner.panel_config is Some",
|
||||||
|
) {
|
||||||
PanelSize::XS => 0,
|
PanelSize::XS => 0,
|
||||||
PanelSize::S => 1,
|
PanelSize::S => 1,
|
||||||
PanelSize::M => 2,
|
PanelSize::M => 2,
|
||||||
|
|
@ -232,6 +233,7 @@ pub(crate) fn style<
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
.on_release(Message::PanelSizeCommit)
|
||||||
.width(Length::Fill)
|
.width(Length::Fill)
|
||||||
.apply(cosmic::widget::container)
|
.apply(cosmic::widget::container)
|
||||||
.max_width(250)
|
.max_width(250)
|
||||||
|
|
@ -292,24 +294,10 @@ pub(crate) fn configuration<P: page::Page<crate::pages::Message> + PanelPage>(
|
||||||
.iter()
|
.iter()
|
||||||
.find(|(_, v)| v.id == page.applets_page_id())
|
.find(|(_, v)| v.id == page.applets_page_id())
|
||||||
{
|
{
|
||||||
let control = row::with_children(vec![
|
settings.add(crate::widget::go_next_item(
|
||||||
horizontal_space().into(),
|
&descriptions[applets_label],
|
||||||
icon::from_name("go-next-symbolic").size(16).into(),
|
crate::pages::Message::Page(panel_applets_entity),
|
||||||
]);
|
))
|
||||||
|
|
||||||
settings.add(
|
|
||||||
settings::item::builder(&*descriptions[applets_label])
|
|
||||||
.control(control)
|
|
||||||
.spacing(16)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.apply(container)
|
|
||||||
.class(theme::Container::List)
|
|
||||||
.apply(button::custom)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.class(theme::Button::Transparent)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.on_press(crate::pages::Message::Page(panel_applets_entity)),
|
|
||||||
)
|
|
||||||
} else {
|
} else {
|
||||||
settings
|
settings
|
||||||
};
|
};
|
||||||
|
|
@ -358,7 +346,7 @@ pub fn reset_button<
|
||||||
let descriptions = §ion.descriptions;
|
let descriptions = §ion.descriptions;
|
||||||
let inner = page.inner();
|
let inner = page.inner();
|
||||||
if inner.system_default == inner.panel_config {
|
if inner.system_default == inner.panel_config {
|
||||||
Element::from(horizontal_space().width(1.))
|
Element::from(space())
|
||||||
} else {
|
} else {
|
||||||
button::standard(&descriptions[reset_to_default])
|
button::standard(&descriptions[reset_to_default])
|
||||||
.on_press(Message::ResetPanel)
|
.on_press(Message::ResetPanel)
|
||||||
|
|
@ -437,6 +425,7 @@ pub enum Message {
|
||||||
Output(usize),
|
Output(usize),
|
||||||
AnchorGap(bool),
|
AnchorGap(bool),
|
||||||
PanelSize(PanelSize),
|
PanelSize(PanelSize),
|
||||||
|
PanelSizeCommit,
|
||||||
Appearance(usize),
|
Appearance(usize),
|
||||||
ExtendToEdge(bool),
|
ExtendToEdge(bool),
|
||||||
OpacityRequest(f32),
|
OpacityRequest(f32),
|
||||||
|
|
@ -517,6 +506,7 @@ impl PageInner {
|
||||||
if let Err(err) = default.write_entry(config) {
|
if let Err(err) = default.write_entry(config) {
|
||||||
tracing::error!(?err, "Error resetting panel config.");
|
tracing::error!(?err, "Error resetting panel config.");
|
||||||
}
|
}
|
||||||
|
self.size = Some(default.size.clone());
|
||||||
self.system_default = Some(default.clone());
|
self.system_default = Some(default.clone());
|
||||||
self.panel_config.clone_from(&self.system_default);
|
self.panel_config.clone_from(&self.system_default);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -615,7 +605,16 @@ impl PageInner {
|
||||||
_ = panel_config.set_border_radius(helper, new_radius).unwrap();
|
_ = panel_config.set_border_radius(helper, new_radius).unwrap();
|
||||||
}
|
}
|
||||||
Message::PanelSize(size) => {
|
Message::PanelSize(size) => {
|
||||||
_ = panel_config.set_size(helper, size);
|
self.size = Some(size);
|
||||||
|
}
|
||||||
|
Message::PanelSizeCommit => {
|
||||||
|
_ = panel_config.set_size(
|
||||||
|
helper,
|
||||||
|
self.size
|
||||||
|
.as_ref()
|
||||||
|
.expect("PageInner.size is None even though it should be Some, since PageInner.panel_config is Some")
|
||||||
|
.clone()
|
||||||
|
);
|
||||||
// Reset any size overrides the user might have set
|
// Reset any size overrides the user might have set
|
||||||
_ = panel_config.set_size_center(helper, None);
|
_ = panel_config.set_size_center(helper, None);
|
||||||
_ = panel_config.set_size_wings(helper, None);
|
_ = panel_config.set_size_wings(helper, None);
|
||||||
|
|
@ -678,6 +677,7 @@ impl PageInner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Message::PanelConfig(c) => {
|
Message::PanelConfig(c) => {
|
||||||
|
self.size = Some(c.size.clone());
|
||||||
self.panel_config = Some(*c);
|
self.panel_config = Some(*c);
|
||||||
return Task::none();
|
return Task::none();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,7 @@ impl Default for Page {
|
||||||
// If the config is not present, it will be created with the default values and the name will not match
|
// If the config is not present, it will be created with the default values and the name will not match
|
||||||
(panel_config.name == "Panel").then_some(panel_config)
|
(panel_config.name == "Panel").then_some(panel_config)
|
||||||
});
|
});
|
||||||
|
let size = panel_config.as_ref().map(|c| c.size.clone());
|
||||||
let system_default = cosmic::cosmic_config::Config::system(
|
let system_default = cosmic::cosmic_config::Config::system(
|
||||||
&format!("{}.Panel", cosmic_panel_config::NAME),
|
&format!("{}.Panel", cosmic_panel_config::NAME),
|
||||||
CosmicPanelConfig::VERSION,
|
CosmicPanelConfig::VERSION,
|
||||||
|
|
@ -98,6 +99,7 @@ impl Default for Page {
|
||||||
inner: PageInner {
|
inner: PageInner {
|
||||||
config_helper,
|
config_helper,
|
||||||
panel_config,
|
panel_config,
|
||||||
|
size,
|
||||||
container_config,
|
container_config,
|
||||||
outputs_map: HashMap::new(),
|
outputs_map: HashMap::new(),
|
||||||
system_default,
|
system_default,
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ use cosmic::{
|
||||||
segmented_button::{self, SingleSelectModel},
|
segmented_button::{self, SingleSelectModel},
|
||||||
settings,
|
settings,
|
||||||
space::horizontal as horizontal_space,
|
space::horizontal as horizontal_space,
|
||||||
tab_bar, text, toggler,
|
tab_bar, text,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
use cosmic::{
|
use cosmic::{
|
||||||
|
|
@ -1275,18 +1275,17 @@ pub fn settings() -> Section<crate::pages::Message> {
|
||||||
|
|
||||||
children.push({
|
children.push({
|
||||||
let mut column = list_column()
|
let mut column = list_column()
|
||||||
.add(settings::item(
|
.add(settings::item::builder(&descriptions[same_label]).toggler(
|
||||||
&descriptions[same_label],
|
page.wallpaper_service_config.same_on_all,
|
||||||
toggler(page.wallpaper_service_config.same_on_all)
|
Message::SameWallpaper,
|
||||||
.on_toggle(Message::SameWallpaper),
|
|
||||||
))
|
))
|
||||||
.add(settings::item(&descriptions[fit_label], wallpaper_fit));
|
.add(settings::item(&descriptions[fit_label], wallpaper_fit));
|
||||||
|
|
||||||
if show_slideshow_toggle {
|
if show_slideshow_toggle {
|
||||||
column = column.add(settings::item(
|
column = column.add(
|
||||||
&descriptions[slide_label],
|
settings::item::builder(&descriptions[slide_label])
|
||||||
toggler(slideshow_enabled).on_toggle(Message::Slideshow),
|
.toggler(slideshow_enabled, Message::Slideshow),
|
||||||
));
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// The rotation frequency dropdown should only be shown when the slideshow is enabled.
|
// The rotation frequency dropdown should only be shown when the slideshow is enabled.
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
use super::Message;
|
use super::Message;
|
||||||
use cosmic::iced::Radius;
|
use cosmic::iced::Radius;
|
||||||
use cosmic::iced::core::Border;
|
use cosmic::iced::core::Border;
|
||||||
use cosmic::iced::core::{self, Background, Color, Degrees, Length, gradient::Linear};
|
use cosmic::iced::core::{Background, Color, Degrees, Length, gradient::Linear};
|
||||||
use cosmic::iced::runtime::core::image::Handle as ImageHandle;
|
use cosmic::iced::runtime::core::image::Handle as ImageHandle;
|
||||||
use cosmic::prelude::*;
|
use cosmic::prelude::*;
|
||||||
use cosmic::widget::{Space, button, container};
|
use cosmic::widget::{Space, button, container};
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@
|
||||||
|
|
||||||
use cosmic::{
|
use cosmic::{
|
||||||
Apply, Element,
|
Apply, Element,
|
||||||
iced::{Alignment, Length},
|
iced::Length,
|
||||||
surface,
|
surface,
|
||||||
widget::{self, settings, toggler},
|
widget::{self, settings},
|
||||||
};
|
};
|
||||||
|
|
||||||
use cosmic_comp_config::CosmicCompConfig;
|
use cosmic_comp_config::CosmicCompConfig;
|
||||||
|
|
@ -27,6 +27,7 @@ pub enum Message {
|
||||||
ShowActiveWindowHint(bool),
|
ShowActiveWindowHint(bool),
|
||||||
ShowMaximizeButton(bool),
|
ShowMaximizeButton(bool),
|
||||||
ShowMinimizeButton(bool),
|
ShowMinimizeButton(bool),
|
||||||
|
WindowControlsPositionStart(bool),
|
||||||
SetEdgeSnapThreshold(u32),
|
SetEdgeSnapThreshold(u32),
|
||||||
Surface(surface::Action),
|
Surface(surface::Action),
|
||||||
}
|
}
|
||||||
|
|
@ -177,6 +178,19 @@ impl Page {
|
||||||
.set_show_minimize(&config, value);
|
.set_show_minimize(&config, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Message::WindowControlsPositionStart(left) => {
|
||||||
|
if let Ok(config) = cosmic::config::CosmicTk::config() {
|
||||||
|
let position = if left {
|
||||||
|
cosmic::widget::WindowControlsPosition::Start
|
||||||
|
} else {
|
||||||
|
cosmic::widget::WindowControlsPosition::End
|
||||||
|
};
|
||||||
|
let _res = cosmic::config::COSMIC_TK
|
||||||
|
.write()
|
||||||
|
.unwrap()
|
||||||
|
.set_window_controls_position(&config, position);
|
||||||
|
}
|
||||||
|
}
|
||||||
Message::ShowActiveWindowHint(value) => {
|
Message::ShowActiveWindowHint(value) => {
|
||||||
self.show_active_hint = value;
|
self.show_active_hint = value;
|
||||||
if let Err(err) = self.comp_config.set("active_hint", value) {
|
if let Err(err) = self.comp_config.set("active_hint", value) {
|
||||||
|
|
@ -259,13 +273,10 @@ pub fn window_management() -> Section<crate::pages::Message> {
|
||||||
),
|
),
|
||||||
))
|
))
|
||||||
.add(
|
.add(
|
||||||
settings::flex_item(
|
settings::item::builder(&descriptions[edge_gravity])
|
||||||
&descriptions[edge_gravity],
|
.toggler(page.edge_snap_threshold != 0, |is_enabled| {
|
||||||
toggler(page.edge_snap_threshold != 0).on_toggle(|is_enabled| {
|
|
||||||
Message::SetEdgeSnapThreshold(if is_enabled { 10 } else { 0 })
|
Message::SetEdgeSnapThreshold(if is_enabled { 10 } else { 0 })
|
||||||
}),
|
}),
|
||||||
)
|
|
||||||
.align_items(Alignment::Center),
|
|
||||||
)
|
)
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
.map(crate::pages::Message::WindowManagement)
|
.map(crate::pages::Message::WindowManagement)
|
||||||
|
|
@ -277,6 +288,7 @@ pub fn window_controls() -> Section<crate::pages::Message> {
|
||||||
maximize = fl!("window-controls", "maximize");
|
maximize = fl!("window-controls", "maximize");
|
||||||
minimize = fl!("window-controls", "minimize");
|
minimize = fl!("window-controls", "minimize");
|
||||||
active_window_hint = fl!("window-controls", "active-window-hint");
|
active_window_hint = fl!("window-controls", "active-window-hint");
|
||||||
|
position_start = fl!("window-controls", "position-start");
|
||||||
});
|
});
|
||||||
|
|
||||||
Section::default()
|
Section::default()
|
||||||
|
|
@ -287,17 +299,24 @@ pub fn window_controls() -> Section<crate::pages::Message> {
|
||||||
|
|
||||||
settings::section()
|
settings::section()
|
||||||
.title(§ion.title)
|
.title(§ion.title)
|
||||||
.add(settings::item(
|
.add(
|
||||||
&descriptions[active_window_hint],
|
settings::item::builder(&descriptions[active_window_hint])
|
||||||
toggler(page.show_active_hint).on_toggle(Message::ShowActiveWindowHint),
|
.toggler(page.show_active_hint, Message::ShowActiveWindowHint),
|
||||||
))
|
)
|
||||||
.add(settings::item(
|
.add(
|
||||||
&descriptions[maximize],
|
settings::item::builder(&descriptions[maximize])
|
||||||
toggler(cosmic::config::show_maximize()).on_toggle(Message::ShowMaximizeButton),
|
.toggler(cosmic::config::show_maximize(), Message::ShowMaximizeButton),
|
||||||
))
|
)
|
||||||
.add(settings::item(
|
.add(
|
||||||
&descriptions[minimize],
|
settings::item::builder(&descriptions[minimize])
|
||||||
toggler(cosmic::config::show_minimize()).on_toggle(Message::ShowMinimizeButton),
|
.toggler(cosmic::config::show_minimize(), Message::ShowMinimizeButton),
|
||||||
|
)
|
||||||
|
.add(settings::item::builder(&descriptions[position_start]).toggler(
|
||||||
|
matches!(
|
||||||
|
cosmic::config::window_controls_position(),
|
||||||
|
cosmic::widget::WindowControlsPosition::Start
|
||||||
|
),
|
||||||
|
Message::WindowControlsPositionStart,
|
||||||
))
|
))
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
.map(crate::pages::Message::WindowManagement)
|
.map(crate::pages::Message::WindowManagement)
|
||||||
|
|
@ -319,10 +338,10 @@ pub fn focus_navigation() -> Section<crate::pages::Message> {
|
||||||
|
|
||||||
settings::section()
|
settings::section()
|
||||||
.title(§ion.title)
|
.title(§ion.title)
|
||||||
.add(settings::item(
|
.add(
|
||||||
&descriptions[focus_follows_cursor],
|
settings::item::builder(&descriptions[focus_follows_cursor])
|
||||||
toggler(page.focus_follows_cursor).on_toggle(Message::SetFocusFollowsCursor),
|
.toggler(page.focus_follows_cursor, Message::SetFocusFollowsCursor),
|
||||||
))
|
)
|
||||||
.add(settings::item(
|
.add(settings::item(
|
||||||
&descriptions[focus_follows_cursor_delay],
|
&descriptions[focus_follows_cursor_delay],
|
||||||
widget::editable_input("", &page.focus_delay_text, false, |editing| {
|
widget::editable_input("", &page.focus_delay_text, false, |editing| {
|
||||||
|
|
@ -333,10 +352,10 @@ pub fn focus_navigation() -> Section<crate::pages::Message> {
|
||||||
.on_submit(|_| Message::SaveFocusFollowsCursorDelay(true))
|
.on_submit(|_| Message::SaveFocusFollowsCursorDelay(true))
|
||||||
.width(Length::Fixed(80.0)),
|
.width(Length::Fixed(80.0)),
|
||||||
))
|
))
|
||||||
.add(settings::item(
|
.add(
|
||||||
&descriptions[cursor_follows_focus],
|
settings::item::builder(&descriptions[cursor_follows_focus])
|
||||||
toggler(page.cursor_follows_focus).on_toggle(Message::SetCursorFollowsFocus),
|
.toggler(page.cursor_follows_focus, Message::SetCursorFollowsFocus),
|
||||||
))
|
)
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
.map(crate::pages::Message::WindowManagement)
|
.map(crate::pages::Message::WindowManagement)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,8 @@
|
||||||
use cosmic::{
|
use cosmic::{
|
||||||
Apply, Element,
|
Apply, Element,
|
||||||
cosmic_config::{self, ConfigGet, ConfigSet},
|
cosmic_config::{self, ConfigGet, ConfigSet},
|
||||||
iced::Length,
|
|
||||||
surface,
|
surface,
|
||||||
widget::{self, radio, settings, text},
|
widget::{self, settings},
|
||||||
};
|
};
|
||||||
use cosmic_comp_config::workspace::{Action, WorkspaceConfig, WorkspaceLayout, WorkspaceMode};
|
use cosmic_comp_config::workspace::{Action, WorkspaceConfig, WorkspaceLayout, WorkspaceMode};
|
||||||
use cosmic_settings_page::Section;
|
use cosmic_settings_page::Section;
|
||||||
|
|
@ -21,6 +20,7 @@ pub enum Message {
|
||||||
SetActionOnTyping(usize),
|
SetActionOnTyping(usize),
|
||||||
SetWorkspaceMode(WorkspaceMode),
|
SetWorkspaceMode(WorkspaceMode),
|
||||||
SetWorkspaceLayout(WorkspaceLayout),
|
SetWorkspaceLayout(WorkspaceLayout),
|
||||||
|
SetWorkspaceWraparound(bool),
|
||||||
SetShowName(bool),
|
SetShowName(bool),
|
||||||
SetShowNumber(bool),
|
SetShowNumber(bool),
|
||||||
Surface(surface::Action),
|
Surface(surface::Action),
|
||||||
|
|
@ -88,6 +88,7 @@ impl page::Page<crate::pages::Message> for Page {
|
||||||
sections.insert(action_on_typing()),
|
sections.insert(action_on_typing()),
|
||||||
sections.insert(multi_behavior()),
|
sections.insert(multi_behavior()),
|
||||||
sections.insert(workspace_orientation()),
|
sections.insert(workspace_orientation()),
|
||||||
|
sections.insert(workspace_navigation()),
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -126,6 +127,10 @@ impl Page {
|
||||||
into_active_selection(&self.comp_workspace_config.action_on_typing);
|
into_active_selection(&self.comp_workspace_config.action_on_typing);
|
||||||
self.save_comp_config();
|
self.save_comp_config();
|
||||||
}
|
}
|
||||||
|
Message::SetWorkspaceWraparound(value) => {
|
||||||
|
self.comp_workspace_config.workspace_wraparound = value;
|
||||||
|
self.save_comp_config();
|
||||||
|
}
|
||||||
Message::SetShowName(value) => {
|
Message::SetShowName(value) => {
|
||||||
self.show_workspace_name = value;
|
self.show_workspace_name = value;
|
||||||
if let Err(err) = self.config.set("show_workspace_name", value) {
|
if let Err(err) = self.config.set("show_workspace_name", value) {
|
||||||
|
|
@ -209,26 +214,16 @@ fn multi_behavior() -> Section<crate::pages::Message> {
|
||||||
let descriptions = §ion.descriptions;
|
let descriptions = §ion.descriptions;
|
||||||
settings::section()
|
settings::section()
|
||||||
.title(§ion.title)
|
.title(§ion.title)
|
||||||
.add(settings::item_row(vec![
|
.add(settings::item::builder(&descriptions[span]).radio(
|
||||||
radio(
|
WorkspaceMode::Global,
|
||||||
text::body(&descriptions[span]),
|
Some(page.comp_workspace_config.workspace_mode),
|
||||||
WorkspaceMode::Global,
|
Message::SetWorkspaceMode,
|
||||||
Some(page.comp_workspace_config.workspace_mode),
|
))
|
||||||
Message::SetWorkspaceMode,
|
.add(settings::item::builder(&descriptions[separate]).radio(
|
||||||
)
|
WorkspaceMode::OutputBound,
|
||||||
.width(Length::Fill)
|
Some(page.comp_workspace_config.workspace_mode),
|
||||||
.into(),
|
Message::SetWorkspaceMode,
|
||||||
]))
|
))
|
||||||
.add(settings::item_row(vec![
|
|
||||||
radio(
|
|
||||||
text::body(&descriptions[separate]),
|
|
||||||
WorkspaceMode::OutputBound,
|
|
||||||
Some(page.comp_workspace_config.workspace_mode),
|
|
||||||
Message::SetWorkspaceMode,
|
|
||||||
)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into(),
|
|
||||||
]))
|
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
.map(crate::pages::Message::DesktopWorkspaces)
|
.map(crate::pages::Message::DesktopWorkspaces)
|
||||||
})
|
})
|
||||||
|
|
@ -247,26 +242,37 @@ fn workspace_orientation() -> Section<crate::pages::Message> {
|
||||||
let descriptions = §ion.descriptions;
|
let descriptions = §ion.descriptions;
|
||||||
settings::section()
|
settings::section()
|
||||||
.title(§ion.title)
|
.title(§ion.title)
|
||||||
.add(settings::item_row(vec![
|
.add(settings::item::builder(&descriptions[vertical]).radio(
|
||||||
radio(
|
WorkspaceLayout::Vertical,
|
||||||
text::body(&descriptions[vertical]),
|
Some(page.comp_workspace_config.workspace_layout),
|
||||||
WorkspaceLayout::Vertical,
|
Message::SetWorkspaceLayout,
|
||||||
Some(page.comp_workspace_config.workspace_layout),
|
))
|
||||||
Message::SetWorkspaceLayout,
|
.add(settings::item::builder(&descriptions[horizontal]).radio(
|
||||||
)
|
WorkspaceLayout::Horizontal,
|
||||||
.width(Length::Fill)
|
Some(page.comp_workspace_config.workspace_layout),
|
||||||
.into(),
|
Message::SetWorkspaceLayout,
|
||||||
]))
|
))
|
||||||
.add(settings::item_row(vec![
|
.apply(Element::from)
|
||||||
radio(
|
.map(crate::pages::Message::DesktopWorkspaces)
|
||||||
text::body(&descriptions[horizontal]),
|
})
|
||||||
WorkspaceLayout::Horizontal,
|
}
|
||||||
Some(page.comp_workspace_config.workspace_layout),
|
|
||||||
Message::SetWorkspaceLayout,
|
fn workspace_navigation() -> Section<crate::pages::Message> {
|
||||||
)
|
crate::slab!(descriptions {
|
||||||
.width(Length::Fill)
|
description = fl!("workspaces-navigation", "wraparound");
|
||||||
.into(),
|
});
|
||||||
]))
|
|
||||||
|
Section::default()
|
||||||
|
.title(fl!("workspaces-navigation"))
|
||||||
|
.descriptions(descriptions)
|
||||||
|
.view::<Page>(move |_binder, page, section| {
|
||||||
|
let descriptions = §ion.descriptions;
|
||||||
|
settings::section()
|
||||||
|
.title(§ion.title)
|
||||||
|
.add(settings::item::builder(&descriptions[description]).toggler(
|
||||||
|
page.comp_workspace_config.workspace_wraparound,
|
||||||
|
Message::SetWorkspaceWraparound,
|
||||||
|
))
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
.map(crate::pages::Message::DesktopWorkspaces)
|
.map(crate::pages::Message::DesktopWorkspaces)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ use cosmic::iced::core::text::{Ellipsize, EllipsizeHeightLimit};
|
||||||
use cosmic::iced::widget::scrollable::RelativeOffset;
|
use cosmic::iced::widget::scrollable::RelativeOffset;
|
||||||
use cosmic::iced::{Alignment, Length, stream, time};
|
use cosmic::iced::{Alignment, Length, stream, time};
|
||||||
use cosmic::widget::{
|
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,
|
||||||
};
|
};
|
||||||
use cosmic::{Apply, Element, Task, surface};
|
use cosmic::{Apply, Element, Task, surface};
|
||||||
use cosmic_randr_shell::{
|
use cosmic_randr_shell::{
|
||||||
|
|
@ -1370,10 +1370,10 @@ pub fn display_configuration() -> Section<crate::pages::Message> {
|
||||||
|| !active_output.enabled
|
|| !active_output.enabled
|
||||||
{
|
{
|
||||||
list_column()
|
list_column()
|
||||||
.add(widget::settings::item(
|
.add(
|
||||||
&descriptions[enable_label],
|
widget::settings::item::builder(&descriptions[enable_label])
|
||||||
toggler(active_output.enabled).on_toggle(Message::DisplayToggle),
|
.toggler(active_output.enabled, Message::DisplayToggle),
|
||||||
))
|
)
|
||||||
.add(widget::settings::item(
|
.add(widget::settings::item(
|
||||||
&descriptions[mirroring_label],
|
&descriptions[mirroring_label],
|
||||||
widget::dropdown::multi::dropdown(
|
widget::dropdown::multi::dropdown(
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ use cosmic::{
|
||||||
cosmic_config::{self, ConfigSet},
|
cosmic_config::{self, ConfigSet},
|
||||||
iced::{Alignment, Length},
|
iced::{Alignment, Length},
|
||||||
theme,
|
theme,
|
||||||
widget::{self, ListColumn, button, container, icon, radio, row, settings},
|
widget::{self, ListColumn, button, container, icon, list, row, settings},
|
||||||
};
|
};
|
||||||
use cosmic_comp_config::{KeyboardConfig, NumlockState, XkbConfig};
|
use cosmic_comp_config::{KeyboardConfig, NumlockState, XkbConfig};
|
||||||
use cosmic_settings_page::{self as page, Section, section};
|
use cosmic_settings_page::{self as page, Section, section};
|
||||||
|
|
@ -48,6 +48,7 @@ static CAPS_LOCK_OPTIONS: &[(&str, &str)] = &[
|
||||||
("Backspace", "caps:backspace"),
|
("Backspace", "caps:backspace"),
|
||||||
("Super", "caps:super"),
|
("Super", "caps:super"),
|
||||||
("Control", "caps:ctrl_modifier"),
|
("Control", "caps:ctrl_modifier"),
|
||||||
|
("Swap with Control", "ctrl:swapcaps"),
|
||||||
];
|
];
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
|
|
@ -151,11 +152,11 @@ impl SpecialKey {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn prefix(self) -> &'static str {
|
pub fn prefixes(self) -> &'static [&'static str] {
|
||||||
match self {
|
match self {
|
||||||
Self::Compose => "compose:",
|
Self::Compose => &["compose:"],
|
||||||
Self::AlternateCharacters => "lv3:",
|
Self::AlternateCharacters => &["lv3:"],
|
||||||
Self::CapsLock => "caps:",
|
Self::CapsLock => &["caps:", "ctrl:"],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -243,15 +244,10 @@ fn special_char_radio_row<'a>(
|
||||||
desc: &'a str,
|
desc: &'a str,
|
||||||
value: Option<&'static str>,
|
value: Option<&'static str>,
|
||||||
current_value: Option<&'a str>,
|
current_value: Option<&'a str>,
|
||||||
) -> cosmic::Element<'a, Message> {
|
) -> list::ListButton<'a, Message> {
|
||||||
settings::item_row(vec![
|
settings::item::builder(desc).radio(value, Some(current_value), |_| {
|
||||||
radio(desc, value, Some(current_value), |_| {
|
Message::SpecialCharacterSelect(value)
|
||||||
Message::SpecialCharacterSelect(value)
|
})
|
||||||
})
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into(),
|
|
||||||
])
|
|
||||||
.into()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl page::Page<crate::pages::Message> for Page {
|
impl page::Page<crate::pages::Message> for Page {
|
||||||
|
|
@ -513,10 +509,10 @@ impl Page {
|
||||||
Message::SpecialCharacterSelect(id) => {
|
Message::SpecialCharacterSelect(id) => {
|
||||||
if let Some(Context::SpecialCharacter(special_key)) = self.context {
|
if let Some(Context::SpecialCharacter(special_key)) = self.context {
|
||||||
let options = self.xkb.options.as_deref().unwrap_or_default();
|
let options = self.xkb.options.as_deref().unwrap_or_default();
|
||||||
let prefix = special_key.prefix();
|
let prefixes = special_key.prefixes();
|
||||||
let new_options = options
|
let new_options = options
|
||||||
.split(',')
|
.split(',')
|
||||||
.filter(|x| !x.starts_with(prefix))
|
.filter(|x| !prefixes.iter().any(|prefix| x.starts_with(prefix)))
|
||||||
.chain(id)
|
.chain(id)
|
||||||
.join(",");
|
.join(",");
|
||||||
|
|
||||||
|
|
@ -552,9 +548,11 @@ impl Page {
|
||||||
pub fn add_input_source_view(&self) -> Element<'_, crate::pages::Message> {
|
pub fn add_input_source_view(&self) -> Element<'_, crate::pages::Message> {
|
||||||
let space_l = theme::spacing().space_l;
|
let space_l = theme::spacing().space_l;
|
||||||
|
|
||||||
let toggler = settings::item::builder(fl!("show-extended-input-sources")).toggler(
|
let toggler = settings::section().add(
|
||||||
self.show_extended_input_sources,
|
settings::item::builder(fl!("show-extended-input-sources")).toggler(
|
||||||
Message::SetShowExtendedInputSources,
|
self.show_extended_input_sources,
|
||||||
|
Message::SetShowExtendedInputSources,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut list = widget::list_column();
|
let mut list = widget::list_column();
|
||||||
|
|
@ -610,13 +608,13 @@ impl Page {
|
||||||
SpecialKey::AlternateCharacters => (ALTERNATE_CHARACTER_OPTIONS, None),
|
SpecialKey::AlternateCharacters => (ALTERNATE_CHARACTER_OPTIONS, None),
|
||||||
SpecialKey::CapsLock => (CAPS_LOCK_OPTIONS, None),
|
SpecialKey::CapsLock => (CAPS_LOCK_OPTIONS, None),
|
||||||
};
|
};
|
||||||
let prefix = special_key.prefix();
|
let prefixes = special_key.prefixes();
|
||||||
let current = self
|
let current = self
|
||||||
.xkb
|
.xkb
|
||||||
.options
|
.options
|
||||||
.iter()
|
.iter()
|
||||||
.flat_map(|x| x.split(','))
|
.flat_map(|x| x.split(','))
|
||||||
.find(|x| x.starts_with(prefix));
|
.find(|x| prefixes.iter().any(|prefix| x.starts_with(prefix)));
|
||||||
|
|
||||||
// TODO layout default
|
// TODO layout default
|
||||||
|
|
||||||
|
|
@ -653,16 +651,11 @@ impl Page {
|
||||||
|
|
||||||
let mut list = cosmic::widget::list_column();
|
let mut list = cosmic::widget::list_column();
|
||||||
for (desc, state) in options {
|
for (desc, state) in options {
|
||||||
list = list.add(settings::item_row(vec![
|
list = list.add(settings::item::builder(desc).radio(
|
||||||
radio(
|
Some(state),
|
||||||
cosmic::widget::text(desc),
|
Some(Some(current)),
|
||||||
Some(state),
|
|_| Message::SetNumlockState(state),
|
||||||
Some(Some(current)),
|
));
|
||||||
|_| Message::SetNumlockState(state),
|
|
||||||
)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into(),
|
|
||||||
]));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
list.into()
|
list.into()
|
||||||
|
|
|
||||||
|
|
@ -779,10 +779,7 @@ fn context_drawer<'a>(
|
||||||
show_action: bool,
|
show_action: bool,
|
||||||
) -> Element<'a, ShortcutMessage> {
|
) -> Element<'a, ShortcutMessage> {
|
||||||
let cosmic::cosmic_theme::Spacing {
|
let cosmic::cosmic_theme::Spacing {
|
||||||
space_xxs,
|
space_xs, space_l, ..
|
||||||
space_xs,
|
|
||||||
space_l,
|
|
||||||
..
|
|
||||||
} = theme::spacing();
|
} = theme::spacing();
|
||||||
|
|
||||||
let model = &shortcuts[id];
|
let model = &shortcuts[id];
|
||||||
|
|
@ -798,7 +795,7 @@ fn context_drawer<'a>(
|
||||||
});
|
});
|
||||||
|
|
||||||
let bindings = model.bindings.iter().enumerate().fold(
|
let bindings = model.bindings.iter().enumerate().fold(
|
||||||
widget::list_column().spacing(space_xxs),
|
widget::list_column(),
|
||||||
|section, (_, (bind_id, shortcut))| {
|
|section, (_, (bind_id, shortcut))| {
|
||||||
let editing = editing == Some(bind_id);
|
let editing = editing == Some(bind_id);
|
||||||
let text: Cow<'_, str> = if !editing && shortcut.binding.is_set() {
|
let text: Cow<'_, str> = if !editing && shortcut.binding.is_set() {
|
||||||
|
|
|
||||||
|
|
@ -452,7 +452,7 @@ impl Page {
|
||||||
.padding([16, 24]);
|
.padding([16, 24]);
|
||||||
|
|
||||||
let keys = self.add_shortcut.keys.iter().fold(
|
let keys = self.add_shortcut.keys.iter().fold(
|
||||||
widget::list_column().spacing(0),
|
widget::list_column(),
|
||||||
|column, (id, (text, widget_id))| {
|
|column, (id, (text, widget_id))| {
|
||||||
let key_combination = widget::editable_input(
|
let key_combination = widget::editable_input(
|
||||||
fl!("type-key-combination"),
|
fl!("type-key-combination"),
|
||||||
|
|
@ -474,7 +474,7 @@ impl Page {
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
let controls = widget::list_column().add(input_fields).add(keys).spacing(0);
|
let controls = widget::list_column().add(input_fields).add(keys);
|
||||||
|
|
||||||
let add_keybinding_button = widget::button::standard(fl!("add-another-keybinding"))
|
let add_keybinding_button = widget::button::standard(fl!("add-another-keybinding"))
|
||||||
.on_press(Message::AddShortcut)
|
.on_press(Message::AddShortcut)
|
||||||
|
|
|
||||||
|
|
@ -166,27 +166,17 @@ fn click_behavior() -> Section<crate::pages::Message> {
|
||||||
settings::section()
|
settings::section()
|
||||||
.title(&*section.title)
|
.title(&*section.title)
|
||||||
// Secondary click via two fingers, and middle-click via three fingers
|
// Secondary click via two fingers, and middle-click via three fingers
|
||||||
.add(settings::item_row(vec![
|
.add(settings::item::builder(&descriptions[click_finger]).radio(
|
||||||
widget::radio(
|
ClickMethod::Clickfinger,
|
||||||
text::body(&descriptions[click_finger]),
|
page.input_touchpad.click_method,
|
||||||
ClickMethod::Clickfinger,
|
|option| Message::SetSecondaryClickBehavior(Some(option), true),
|
||||||
page.input_touchpad.click_method,
|
))
|
||||||
|option| Message::SetSecondaryClickBehavior(Some(option), true),
|
|
||||||
)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into(),
|
|
||||||
]))
|
|
||||||
// Secondary and middle-click via button areas.
|
// Secondary and middle-click via button areas.
|
||||||
.add(settings::item_row(vec![
|
.add(settings::item::builder(&descriptions[button_areas]).radio(
|
||||||
widget::radio(
|
ClickMethod::ButtonAreas,
|
||||||
text::body(&descriptions[button_areas]),
|
page.input_touchpad.click_method,
|
||||||
ClickMethod::ButtonAreas,
|
|option| Message::SetSecondaryClickBehavior(Some(option), true),
|
||||||
page.input_touchpad.click_method,
|
))
|
||||||
|option| Message::SetSecondaryClickBehavior(Some(option), true),
|
|
||||||
)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into(),
|
|
||||||
]))
|
|
||||||
.add(
|
.add(
|
||||||
settings::item::builder(&descriptions[tap_to_click]).toggler(
|
settings::item::builder(&descriptions[tap_to_click]).toggler(
|
||||||
page.input_touchpad
|
page.input_touchpad
|
||||||
|
|
@ -222,33 +212,27 @@ fn scrolling() -> Section<crate::pages::Message> {
|
||||||
settings::section()
|
settings::section()
|
||||||
.title(§ion.title)
|
.title(§ion.title)
|
||||||
// Two-finger scrolling toggle
|
// Two-finger scrolling toggle
|
||||||
.add(settings::item_row(vec![
|
.add(
|
||||||
widget::radio(
|
settings::item::builder(&descriptions[two_finger]).radio(
|
||||||
text::body(&descriptions[two_finger]),
|
|
||||||
ScrollMethod::TwoFinger,
|
ScrollMethod::TwoFinger,
|
||||||
page.input_touchpad
|
page.input_touchpad
|
||||||
.scroll_config
|
.scroll_config
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.and_then(|x| x.method),
|
.and_then(|x| x.method),
|
||||||
|option| Message::SetScrollMethod(Some(option), true),
|
|option| Message::SetScrollMethod(Some(option), true),
|
||||||
)
|
),
|
||||||
.width(Length::Fill)
|
)
|
||||||
.into(),
|
|
||||||
]))
|
|
||||||
// Edge scrolling toggle
|
// Edge scrolling toggle
|
||||||
.add(settings::item_row(vec![
|
.add(
|
||||||
widget::radio(
|
settings::item::builder(&descriptions[edge]).radio(
|
||||||
text::body(&descriptions[edge]),
|
|
||||||
ScrollMethod::Edge,
|
ScrollMethod::Edge,
|
||||||
page.input_touchpad
|
page.input_touchpad
|
||||||
.scroll_config
|
.scroll_config
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.and_then(|x| x.method),
|
.and_then(|x| x.method),
|
||||||
|option| Message::SetScrollMethod(Some(option), true),
|
|option| Message::SetScrollMethod(Some(option), true),
|
||||||
)
|
),
|
||||||
.width(Length::Fill)
|
)
|
||||||
.into(),
|
|
||||||
]))
|
|
||||||
// Scroll speed slider
|
// Scroll speed slider
|
||||||
.add(settings::item(&descriptions[scroll_speed], {
|
.add(settings::item(&descriptions[scroll_speed], {
|
||||||
let value = page
|
let value = page
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ use cosmic::{
|
||||||
iced::core::text::Wrapping,
|
iced::core::text::Wrapping,
|
||||||
iced::{Alignment, Length, widget::operation::focus_next},
|
iced::{Alignment, Length, widget::operation::focus_next},
|
||||||
task,
|
task,
|
||||||
widget::{self, column, icon, space::horizontal as horizontal_space, text_input::focus},
|
widget::{self, column, icon, space::horizontal, text_input::focus},
|
||||||
};
|
};
|
||||||
use cosmic_settings_network_manager_subscription::{
|
use cosmic_settings_network_manager_subscription::{
|
||||||
self as network_manager, NetworkManagerState,
|
self as network_manager, NetworkManagerState,
|
||||||
|
|
@ -195,7 +195,7 @@ impl page::Page<crate::pages::Message> for Page {
|
||||||
widget::button::standard(fl!("cancel")).on_press(Message::CancelDialog);
|
widget::button::standard(fl!("cancel")).on_press(Message::CancelDialog);
|
||||||
|
|
||||||
let control: Element<_> = if let Some(identity) = identity {
|
let control: Element<_> = if let Some(identity) = identity {
|
||||||
widget::Column::new()
|
column::with_capacity(2)
|
||||||
.spacing(8)
|
.spacing(8)
|
||||||
.push(
|
.push(
|
||||||
widget::text_input::text_input(fl!("identity"), identity)
|
widget::text_input::text_input(fl!("identity"), identity)
|
||||||
|
|
@ -883,7 +883,7 @@ fn devices_view() -> Section<crate::pages::Message> {
|
||||||
let spacing = cosmic::theme::spacing();
|
let spacing = cosmic::theme::spacing();
|
||||||
|
|
||||||
let wifi_enable = widget::settings::item::builder(§ion.descriptions[wifi_txt])
|
let wifi_enable = widget::settings::item::builder(§ion.descriptions[wifi_txt])
|
||||||
.control(widget::toggler(state.wifi_enabled).on_toggle(Message::WiFiEnable));
|
.toggler(state.wifi_enabled, Message::WiFiEnable);
|
||||||
|
|
||||||
let mut view = widget::column::with_capacity(4)
|
let mut view = widget::column::with_capacity(4)
|
||||||
.push(widget::list_column().add(wifi_enable))
|
.push(widget::list_column().add(wifi_enable))
|
||||||
|
|
@ -1019,7 +1019,7 @@ fn devices_view() -> Section<crate::pages::Message> {
|
||||||
|
|
||||||
let item = widget::settings::item_row(vec![
|
let item = widget::settings::item_row(vec![
|
||||||
identifier.into(),
|
identifier.into(),
|
||||||
horizontal_space().into(),
|
horizontal().into(),
|
||||||
controls.into(),
|
controls.into(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
@ -1124,7 +1124,7 @@ fn devices_view() -> Section<crate::pages::Message> {
|
||||||
|
|
||||||
let item = widget::settings::item_row(vec![
|
let item = widget::settings::item_row(vec![
|
||||||
identifier.into(),
|
identifier.into(),
|
||||||
horizontal_space().into(),
|
horizontal().into(),
|
||||||
controls.into(),
|
controls.into(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
@ -1234,7 +1234,7 @@ fn devices_view() -> Section<crate::pages::Message> {
|
||||||
|
|
||||||
let item = widget::settings::item_row(vec![
|
let item = widget::settings::item_row(vec![
|
||||||
identifier.into(),
|
identifier.into(),
|
||||||
horizontal_space().into(),
|
horizontal().into(),
|
||||||
connect,
|
connect,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ use cosmic::Task;
|
||||||
use cosmic::iced::core::text::{Ellipsize, EllipsizeHeightLimit};
|
use cosmic::iced::core::text::{Ellipsize, EllipsizeHeightLimit};
|
||||||
use cosmic::iced::widget::{column, row};
|
use cosmic::iced::widget::{column, row};
|
||||||
use cosmic::iced::{self, Alignment, Length, stream};
|
use cosmic::iced::{self, Alignment, Length, stream};
|
||||||
use cosmic::widget::{self, radio, settings, space::horizontal as horizontal_space, text};
|
use cosmic::widget::{self, settings, space, text};
|
||||||
use cosmic::{Apply, surface};
|
use cosmic::{Apply, surface};
|
||||||
use cosmic_config::{Config, CosmicConfigEntry};
|
use cosmic_config::{Config, CosmicConfigEntry};
|
||||||
use cosmic_idle_config::CosmicIdleConfig;
|
use cosmic_idle_config::CosmicIdleConfig;
|
||||||
|
|
@ -508,12 +508,8 @@ fn connected_devices() -> Section<crate::pages::Message> {
|
||||||
.map(|mut device_row| {
|
.map(|mut device_row| {
|
||||||
cosmic::Element::from(
|
cosmic::Element::from(
|
||||||
row!(
|
row!(
|
||||||
device_row.next().unwrap_or(
|
device_row.next().unwrap_or(space::horizontal().into()),
|
||||||
horizontal_space().width(Length::Fill).into()
|
device_row.next().unwrap_or(space::horizontal().into()),
|
||||||
),
|
|
||||||
device_row.next().unwrap_or(
|
|
||||||
horizontal_space().width(Length::Fill).into()
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
.spacing(8),
|
.spacing(8),
|
||||||
)
|
)
|
||||||
|
|
@ -543,18 +539,9 @@ fn profiles() -> Section<crate::pages::Message> {
|
||||||
section = profiles
|
section = profiles
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|profile| {
|
.map(|profile| {
|
||||||
settings::item_row(vec![
|
settings::item::builder(profile.title())
|
||||||
radio(
|
.description(profile.description())
|
||||||
widget::column::with_capacity(2)
|
.radio(profile, Some(current_profile), Message::PowerProfileChange)
|
||||||
.push(text::body(profile.title()))
|
|
||||||
.push(text::caption(profile.description())),
|
|
||||||
profile,
|
|
||||||
Some(current_profile),
|
|
||||||
Message::PowerProfileChange,
|
|
||||||
)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into(),
|
|
||||||
])
|
|
||||||
})
|
})
|
||||||
.fold(section, settings::Section::add);
|
.fold(section, settings::Section::add);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -320,10 +320,9 @@ fn input() -> Section<crate::pages::Message> {
|
||||||
controls = controls.add(
|
controls = controls.add(
|
||||||
settings::item::builder(&*section.descriptions[amplification])
|
settings::item::builder(&*section.descriptions[amplification])
|
||||||
.description(&*section.descriptions[amplification_desc])
|
.description(&*section.descriptions[amplification_desc])
|
||||||
.control(
|
.toggler(page.amplification_source, |t| {
|
||||||
widget::toggler(page.amplification_source)
|
Message::ToggleOverAmplificationSource(t).into()
|
||||||
.on_toggle(|t| Message::ToggleOverAmplificationSource(t).into()),
|
}),
|
||||||
),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
Element::from(controls)
|
Element::from(controls)
|
||||||
|
|
@ -435,10 +434,9 @@ fn output() -> Section<crate::pages::Message> {
|
||||||
controls = controls.add(
|
controls = controls.add(
|
||||||
settings::item::builder(&*section.descriptions[amplification])
|
settings::item::builder(&*section.descriptions[amplification])
|
||||||
.description(&*section.descriptions[amplification_desc])
|
.description(&*section.descriptions[amplification_desc])
|
||||||
.control(
|
.toggler(page.amplification_sink, |t| {
|
||||||
widget::toggler(page.amplification_sink)
|
Message::ToggleOverAmplificationSink(t).into()
|
||||||
.on_toggle(|t| Message::ToggleOverAmplificationSink(t).into()),
|
}),
|
||||||
),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
Element::from(controls)
|
Element::from(controls)
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ use cosmic::{
|
||||||
Apply, Element,
|
Apply, Element,
|
||||||
dialog::file_chooser,
|
dialog::file_chooser,
|
||||||
iced::{Alignment, Length},
|
iced::{Alignment, Length},
|
||||||
widget::{self, column, icon, row, settings, space::horizontal as horizontal_space, text},
|
widget::{self, column, icon, list, row, settings, space::horizontal, text},
|
||||||
};
|
};
|
||||||
use cosmic_settings_page::{self as page, Section, section};
|
use cosmic_settings_page::{self as page, Section, section};
|
||||||
use image::GenericImageView;
|
use image::GenericImageView;
|
||||||
|
|
@ -322,7 +322,7 @@ impl page::Page<crate::pages::Message> for Page {
|
||||||
)))
|
)))
|
||||||
.width(Length::Fill),
|
.width(Length::Fill),
|
||||||
)
|
)
|
||||||
.push(horizontal_space().width(5.))
|
.push(horizontal().width(5.))
|
||||||
.push(admin_toggler)
|
.push(admin_toggler)
|
||||||
.align_y(Alignment::Center),
|
.align_y(Alignment::Center),
|
||||||
),
|
),
|
||||||
|
|
@ -785,16 +785,13 @@ fn user_list() -> Section<crate::pages::Message> {
|
||||||
.descriptions(descriptions)
|
.descriptions(descriptions)
|
||||||
.view::<Page>(move |_binder, page, section| {
|
.view::<Page>(move |_binder, page, section| {
|
||||||
let descriptions = §ion.descriptions;
|
let descriptions = §ion.descriptions;
|
||||||
|
let space_xxs = cosmic::theme::spacing().space_xxs;
|
||||||
let cosmic::cosmic_theme::Spacing {
|
|
||||||
space_xxs, space_m, ..
|
|
||||||
} = cosmic::theme::active().cosmic().spacing;
|
|
||||||
|
|
||||||
let users_list = page
|
let users_list = page
|
||||||
.users
|
.users
|
||||||
.iter()
|
.iter()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.flat_map(|(idx, user)| {
|
.map(|(idx, user)| {
|
||||||
let expanded =
|
let expanded =
|
||||||
matches!(page.selected_user_idx, Some(user_idx) if user_idx == idx);
|
matches!(page.selected_user_idx, Some(user_idx) if user_idx == idx);
|
||||||
|
|
||||||
|
|
@ -832,37 +829,6 @@ fn user_list() -> Section<crate::pages::Message> {
|
||||||
&descriptions[user_type_standard]
|
&descriptions[user_type_standard]
|
||||||
});
|
});
|
||||||
|
|
||||||
let expanded_details = expanded.then(|| {
|
|
||||||
let mut details_list = widget::list_column()
|
|
||||||
.add(settings::item(&page.fullname_label, fullname))
|
|
||||||
.add(settings::item(&page.username_label, username))
|
|
||||||
.add(settings::item(&page.password_label, password))
|
|
||||||
.add(settings::item_row(vec![
|
|
||||||
column::with_capacity(2)
|
|
||||||
.push(text::body(crate::fl!("administrator")))
|
|
||||||
.push(text::caption(crate::fl!("administrator", "desc")))
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into(),
|
|
||||||
horizontal_space().width(5.).into(),
|
|
||||||
widget::toggler(user.is_admin)
|
|
||||||
.on_toggle(|enabled| {
|
|
||||||
Message::SelectedUserSetAdmin(user.id, enabled)
|
|
||||||
})
|
|
||||||
.into(),
|
|
||||||
]));
|
|
||||||
|
|
||||||
if page.users.len() > 1 {
|
|
||||||
details_list = details_list.add(settings::item_row(vec![
|
|
||||||
horizontal_space().width(Length::Fill).into(),
|
|
||||||
widget::button::destructive(crate::fl!("remove-user"))
|
|
||||||
.on_press(Message::SelectedUserDelete(user.id))
|
|
||||||
.into(),
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
|
|
||||||
details_list.apply(Element::from)
|
|
||||||
});
|
|
||||||
|
|
||||||
let profile_icon_handle = user
|
let profile_icon_handle = user
|
||||||
.profile_icon
|
.profile_icon
|
||||||
.clone()
|
.clone()
|
||||||
|
|
@ -884,8 +850,8 @@ fn user_list() -> Section<crate::pages::Message> {
|
||||||
)
|
)
|
||||||
.align_y(Alignment::Center)
|
.align_y(Alignment::Center)
|
||||||
.spacing(space_xxs)
|
.spacing(space_xxs)
|
||||||
|
.width(Length::Fill)
|
||||||
.into(),
|
.into(),
|
||||||
horizontal_space().width(Length::Fill).into(),
|
|
||||||
icon::from_name(if expanded {
|
icon::from_name(if expanded {
|
||||||
"go-up-symbolic"
|
"go-up-symbolic"
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -896,28 +862,49 @@ fn user_list() -> Section<crate::pages::Message> {
|
||||||
.into(),
|
.into(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
let account_details = Some(
|
let mut user_list = widget::list_column().add(
|
||||||
widget::button::custom(account_details_content)
|
list::button(account_details_content)
|
||||||
.padding([space_xxs, space_m])
|
|
||||||
.on_press(Message::SelectUser(idx))
|
|
||||||
.class(cosmic::theme::Button::ListItem)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.selected(expanded)
|
.selected(expanded)
|
||||||
.apply(Element::from),
|
.on_press(Message::SelectUser(idx)),
|
||||||
);
|
);
|
||||||
|
|
||||||
vec![account_details, expanded_details]
|
if expanded {
|
||||||
|
user_list = user_list
|
||||||
|
.add(settings::item(&page.fullname_label, fullname))
|
||||||
|
.add(settings::item(&page.username_label, username))
|
||||||
|
.add(settings::item(&page.password_label, password))
|
||||||
|
.add(settings::item_row(vec![
|
||||||
|
column::with_capacity(2)
|
||||||
|
.push(text::body(crate::fl!("administrator")))
|
||||||
|
.push(text::caption(crate::fl!("administrator", "desc")))
|
||||||
|
.width(Length::Fill)
|
||||||
|
.into(),
|
||||||
|
horizontal().width(5.).into(),
|
||||||
|
widget::toggler(user.is_admin)
|
||||||
|
.on_toggle(|enabled| {
|
||||||
|
Message::SelectedUserSetAdmin(user.id, enabled)
|
||||||
|
})
|
||||||
|
.into(),
|
||||||
|
]));
|
||||||
|
|
||||||
|
if page.users.len() > 1 {
|
||||||
|
user_list = user_list.add(settings::item_row(vec![
|
||||||
|
horizontal().width(Length::Fill).into(),
|
||||||
|
widget::button::destructive(crate::fl!("remove-user"))
|
||||||
|
.on_press(Message::SelectedUserDelete(user.id))
|
||||||
|
.into(),
|
||||||
|
]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Element::from(user_list)
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.fold(
|
.fold(
|
||||||
widget::list_column()
|
widget::column::with_capacity(page.users.len()),
|
||||||
.spacing(0)
|
|col, user| col.push(user),
|
||||||
.padding([8, 0])
|
|
||||||
.divider_padding(0)
|
|
||||||
.list_item_padding(0),
|
|
||||||
widget::ListColumn::add,
|
|
||||||
)
|
)
|
||||||
.apply(|list| Element::from(settings::section::with_column(list)));
|
.spacing(space_xxs)
|
||||||
|
.width(Length::Fill);
|
||||||
|
|
||||||
let add_user = widget::button::standard(crate::fl!("add-user"))
|
let add_user = widget::button::standard(crate::fl!("add-user"))
|
||||||
.on_press(Message::Dialog(Some(Dialog::AddNewUser(User::default()))))
|
.on_press(Message::Dialog(Some(Dialog::AddNewUser(User::default()))))
|
||||||
|
|
@ -928,7 +915,7 @@ fn user_list() -> Section<crate::pages::Message> {
|
||||||
widget::column::with_capacity(2)
|
widget::column::with_capacity(2)
|
||||||
.push(users_list)
|
.push(users_list)
|
||||||
.push(add_user)
|
.push(add_user)
|
||||||
.spacing(space_m)
|
.spacing(space_xxs)
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
.map(crate::pages::Message::User)
|
.map(crate::pages::Message::User)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,14 @@
|
||||||
// Copyright 2023 System76 <info@system76.com>
|
// Copyright 2023 System76 <info@system76.com>
|
||||||
// SPDX-License-Identifier: GPL-3.0-only
|
// SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
|
||||||
|
use crate::widget::selection_context_item;
|
||||||
use cosmic::{
|
use cosmic::{
|
||||||
Apply, Element, Task,
|
Apply, Element, Task,
|
||||||
app::ContextDrawer,
|
app::ContextDrawer,
|
||||||
cosmic_config::{self, ConfigGet, ConfigSet},
|
cosmic_config::{self, ConfigGet, ConfigSet},
|
||||||
iced::core::text::Wrapping,
|
iced::core::text::Wrapping,
|
||||||
surface,
|
surface,
|
||||||
widget::{self, dropdown, settings, space::horizontal as horizontal_space},
|
widget::{self, dropdown, list, settings},
|
||||||
};
|
};
|
||||||
use cosmic_settings_page::{self as page, Section, section};
|
use cosmic_settings_page::{self as page, Section, section};
|
||||||
use icu::{
|
use icu::{
|
||||||
|
|
@ -20,7 +21,6 @@ use icu::{
|
||||||
locale::{Locale, preferences::extensions::unicode::keywords::HourCycle},
|
locale::{Locale, preferences::extensions::unicode::keywords::HourCycle},
|
||||||
};
|
};
|
||||||
use slotmap::{Key, SlotMap};
|
use slotmap::{Key, SlotMap};
|
||||||
use std::rc::Rc;
|
|
||||||
pub use timedate_zbus::TimeDateProxy;
|
pub use timedate_zbus::TimeDateProxy;
|
||||||
use tracing::error;
|
use tracing::error;
|
||||||
|
|
||||||
|
|
@ -335,7 +335,11 @@ impl Page {
|
||||||
|
|
||||||
for (id, timezone) in self.timezone_list.iter().enumerate() {
|
for (id, timezone) in self.timezone_list.iter().enumerate() {
|
||||||
if search_input.is_empty() || timezone.to_lowercase().contains(search_input) {
|
if search_input.is_empty() || timezone.to_lowercase().contains(search_input) {
|
||||||
list = list.add(self.timezone_context_item(id, timezone));
|
list = list.add(selection_context_item(
|
||||||
|
timezone,
|
||||||
|
Some(id) == self.timezone,
|
||||||
|
Message::Timezone(id),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -343,40 +347,6 @@ impl Page {
|
||||||
.map(crate::pages::Message::DateAndTime)
|
.map(crate::pages::Message::DateAndTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn timezone_context_item<'a>(&self, id: usize, timezone: &'a str) -> Element<'a, Message> {
|
|
||||||
let svg_accent = Rc::new(|theme: &cosmic::Theme| cosmic::widget::svg::Style {
|
|
||||||
color: Some(theme.cosmic().accent_text_color().into()),
|
|
||||||
});
|
|
||||||
let selected = Some(id) == self.timezone;
|
|
||||||
|
|
||||||
widget::settings::item_row(vec![
|
|
||||||
widget::text::body(timezone)
|
|
||||||
.class(if selected {
|
|
||||||
cosmic::theme::Text::Accent
|
|
||||||
} else {
|
|
||||||
cosmic::theme::Text::Default
|
|
||||||
})
|
|
||||||
.wrapping(Wrapping::Word)
|
|
||||||
.width(cosmic::iced::Length::Fill)
|
|
||||||
.into(),
|
|
||||||
if selected {
|
|
||||||
widget::icon::from_name("object-select-symbolic")
|
|
||||||
.size(16)
|
|
||||||
.icon()
|
|
||||||
.class(cosmic::theme::Svg::Custom(svg_accent.clone()))
|
|
||||||
.into()
|
|
||||||
} else {
|
|
||||||
horizontal_space().width(16.).into()
|
|
||||||
},
|
|
||||||
])
|
|
||||||
.apply(widget::container)
|
|
||||||
.class(cosmic::theme::Container::List)
|
|
||||||
.apply(widget::button::custom)
|
|
||||||
.class(cosmic::theme::Button::Transparent)
|
|
||||||
.on_press(Message::Timezone(id))
|
|
||||||
.into()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn update_local_time(&mut self) {
|
fn update_local_time(&mut self) {
|
||||||
self.local_time = Some(update_local_time());
|
self.local_time = Some(update_local_time());
|
||||||
|
|
||||||
|
|
@ -498,30 +468,19 @@ fn timezone() -> Section<crate::pages::Message> {
|
||||||
.title(fl!("time-zone"))
|
.title(fl!("time-zone"))
|
||||||
.descriptions(descriptions)
|
.descriptions(descriptions)
|
||||||
.view::<Page>(move |_binder, page, section| {
|
.view::<Page>(move |_binder, page, section| {
|
||||||
let timezone_context_button = widget::row::with_capacity(2)
|
settings::section()
|
||||||
.spacing(12)
|
.title(§ion.title)
|
||||||
.push(
|
// Time zone select
|
||||||
|
.add(crate::widget::go_next_with_item(
|
||||||
|
§ion.descriptions[time_zone],
|
||||||
widget::text::body(
|
widget::text::body(
|
||||||
page.timezone
|
page.timezone
|
||||||
.map(|id| &*page.timezone_list[id])
|
.map(|id| &*page.timezone_list[id])
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
)
|
)
|
||||||
.wrapping(Wrapping::Word),
|
.wrapping(Wrapping::Word),
|
||||||
)
|
Message::TimezoneContext,
|
||||||
.push(widget::icon::from_name("go-next-symbolic").size(16).icon())
|
))
|
||||||
.apply(widget::container)
|
|
||||||
.class(cosmic::theme::Container::List)
|
|
||||||
.apply(widget::button::custom)
|
|
||||||
.class(cosmic::theme::Button::Transparent)
|
|
||||||
.on_press(Message::TimezoneContext);
|
|
||||||
|
|
||||||
settings::section()
|
|
||||||
.title(§ion.title)
|
|
||||||
// Time zone select
|
|
||||||
.add(
|
|
||||||
settings::item::builder(&*section.descriptions[time_zone])
|
|
||||||
.control(timezone_context_button),
|
|
||||||
)
|
|
||||||
.apply(cosmic::Element::from)
|
.apply(cosmic::Element::from)
|
||||||
.map(crate::pages::Message::DateAndTime)
|
.map(crate::pages::Message::DateAndTime)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,12 @@
|
||||||
// SPDX-License-Identifier: GPL-3.0-only
|
// SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
|
||||||
use std::collections::{BTreeMap, BTreeSet};
|
use std::collections::{BTreeMap, BTreeSet};
|
||||||
use std::rc::Rc;
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
use crate::widget::selection_context_item;
|
||||||
use cosmic::app::{ContextDrawer, context_drawer};
|
use cosmic::app::{ContextDrawer, context_drawer};
|
||||||
use cosmic::iced::core::text::Wrapping;
|
|
||||||
use cosmic::iced::{Alignment, Length};
|
use cosmic::iced::{Alignment, Length};
|
||||||
use cosmic::widget::{self, button, space::horizontal as horizontal_space};
|
use cosmic::widget::{self, button, list};
|
||||||
use cosmic::{Apply, Element};
|
use cosmic::{Apply, Element};
|
||||||
use cosmic_config::{ConfigGet, ConfigSet};
|
use cosmic_config::{ConfigGet, ConfigSet};
|
||||||
use cosmic_settings_page::Section;
|
use cosmic_settings_page::Section;
|
||||||
|
|
@ -361,14 +360,9 @@ impl Page {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn add_language_view(&self) -> cosmic::Element<'_, crate::pages::Message> {
|
fn add_language_view(&self) -> cosmic::Element<'_, crate::pages::Message> {
|
||||||
let mut list = widget::list_column();
|
let mut list = widget::list_column::with_capacity(self.available_languages.len());
|
||||||
|
|
||||||
let search_input = &self.add_language_search.trim().to_lowercase();
|
let search_input = &self.add_language_search.trim().to_lowercase();
|
||||||
|
|
||||||
let svg_accent = Rc::new(|theme: &cosmic::Theme| cosmic::widget::svg::Style {
|
|
||||||
color: Some(theme.cosmic().accent_text_color().into()),
|
|
||||||
});
|
|
||||||
|
|
||||||
for (id, available_language) in &self.available_languages {
|
for (id, available_language) in &self.available_languages {
|
||||||
if search_input.is_empty()
|
if search_input.is_empty()
|
||||||
|| available_language
|
|| available_language
|
||||||
|
|
@ -381,37 +375,15 @@ impl Page {
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.is_some_and(|(_, locales)| locales.contains(&available_language.lang_code));
|
.is_some_and(|(_, locales)| locales.contains(&available_language.lang_code));
|
||||||
|
|
||||||
let button = widget::settings::item_row(vec![
|
list = list.add(selection_context_item(
|
||||||
widget::text::body(&available_language.display_name)
|
&available_language.display_name,
|
||||||
.class(if is_installed {
|
is_installed,
|
||||||
cosmic::theme::Text::Accent
|
|
||||||
} else {
|
|
||||||
cosmic::theme::Text::Default
|
|
||||||
})
|
|
||||||
.wrapping(Wrapping::Word)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into(),
|
|
||||||
if is_installed {
|
if is_installed {
|
||||||
widget::icon::from_name("object-select-symbolic")
|
Message::RemoveLanguage(id)
|
||||||
.size(16)
|
|
||||||
.icon()
|
|
||||||
.class(cosmic::theme::Svg::Custom(svg_accent.clone()))
|
|
||||||
.into()
|
|
||||||
} else {
|
} else {
|
||||||
horizontal_space().width(16.).into()
|
Message::AddLanguage(id)
|
||||||
},
|
},
|
||||||
])
|
))
|
||||||
.apply(widget::container)
|
|
||||||
.class(cosmic::theme::Container::List)
|
|
||||||
.apply(widget::button::custom)
|
|
||||||
.class(cosmic::theme::Button::Transparent)
|
|
||||||
.on_press(if is_installed {
|
|
||||||
Message::RemoveLanguage(id)
|
|
||||||
} else {
|
|
||||||
Message::AddLanguage(id)
|
|
||||||
});
|
|
||||||
|
|
||||||
list = list.add(button)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -492,12 +464,7 @@ impl Page {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn region_view(&self) -> cosmic::Element<'_, crate::pages::Message> {
|
fn region_view(&self) -> cosmic::Element<'_, crate::pages::Message> {
|
||||||
let svg_accent = Rc::new(|theme: &cosmic::Theme| {
|
let mut list = widget::list_column::with_capacity(self.available_languages.len());
|
||||||
let color = theme.cosmic().accent_text_color().into();
|
|
||||||
cosmic::widget::svg::Style { color: Some(color) }
|
|
||||||
});
|
|
||||||
|
|
||||||
let mut list = widget::list_column();
|
|
||||||
|
|
||||||
let search_input = &self.add_language_search.trim().to_lowercase();
|
let search_input = &self.add_language_search.trim().to_lowercase();
|
||||||
|
|
||||||
|
|
@ -509,37 +476,15 @@ impl Page {
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.is_some_and(|l| l.lang_code == locale.lang_code);
|
.is_some_and(|l| l.lang_code == locale.lang_code);
|
||||||
|
|
||||||
let button = widget::settings::item_row(vec![
|
list = list.add(selection_context_item(
|
||||||
widget::text::body(&locale.region_name)
|
&locale.region_name,
|
||||||
.class(if is_selected {
|
is_selected,
|
||||||
cosmic::theme::Text::Accent
|
|
||||||
} else {
|
|
||||||
cosmic::theme::Text::Default
|
|
||||||
})
|
|
||||||
.wrapping(Wrapping::Word)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.into(),
|
|
||||||
if is_selected {
|
if is_selected {
|
||||||
widget::icon::from_name("object-select-symbolic")
|
None
|
||||||
.size(16)
|
|
||||||
.icon()
|
|
||||||
.class(cosmic::theme::Svg::Custom(svg_accent.clone()))
|
|
||||||
.into()
|
|
||||||
} else {
|
} else {
|
||||||
horizontal_space().width(16.).into()
|
Some(Message::SelectRegion(id))
|
||||||
},
|
},
|
||||||
])
|
))
|
||||||
.apply(widget::container)
|
|
||||||
.class(cosmic::theme::Container::List)
|
|
||||||
.apply(widget::button::custom)
|
|
||||||
.class(cosmic::theme::Button::Transparent)
|
|
||||||
.on_press_maybe(if is_selected {
|
|
||||||
None
|
|
||||||
} else {
|
|
||||||
Some(Message::SelectRegion(id))
|
|
||||||
});
|
|
||||||
|
|
||||||
list = list.add(button)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,15 @@
|
||||||
// SPDX-License-Identifier: GPL-3.0-only
|
// SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
|
use std::rc::Rc;
|
||||||
|
|
||||||
use cosmic::cosmic_theme::Spacing;
|
use cosmic::cosmic_theme::Spacing;
|
||||||
use cosmic::iced::core::text::Wrapping;
|
use cosmic::iced::core::text::Wrapping;
|
||||||
use cosmic::iced::{Alignment, Length};
|
use cosmic::iced::{Alignment, Length};
|
||||||
use cosmic::widget::color_picker::ColorPickerUpdate;
|
use cosmic::widget::color_picker::ColorPickerUpdate;
|
||||||
use cosmic::widget::{
|
use cosmic::widget::{
|
||||||
self, ColorPickerModel, button, column, container, divider, icon, row, settings,
|
self, ColorPickerModel, button, column, container, divider, icon, list, row, settings,
|
||||||
space::{horizontal as horizontal_space, vertical as vertical_space},
|
space::{horizontal, vertical},
|
||||||
text,
|
text,
|
||||||
};
|
};
|
||||||
use cosmic::{Apply, Element, theme};
|
use cosmic::{Apply, Element, theme};
|
||||||
|
|
@ -75,7 +76,7 @@ pub fn search_header<Message>(
|
||||||
.into(),
|
.into(),
|
||||||
);
|
);
|
||||||
|
|
||||||
column_children.push(vertical_space().height(Length::Fixed(8.)).into());
|
column_children.push(vertical().height(Length::Fixed(8.)).into());
|
||||||
column_children.push(divider::horizontal::heavy().into());
|
column_children.push(divider::horizontal::heavy().into());
|
||||||
|
|
||||||
column::with_children(column_children).into()
|
column::with_children(column_children).into()
|
||||||
|
|
@ -89,12 +90,12 @@ pub fn search_page_link<Message: 'static>(title: &str) -> button::TextButton<'_,
|
||||||
pub fn page_title<Message: 'static>(page: &page::Info) -> Element<'_, Message> {
|
pub fn page_title<Message: 'static>(page: &page::Info) -> Element<'_, Message> {
|
||||||
row::with_capacity(2)
|
row::with_capacity(2)
|
||||||
.push(text::title3(page.title.as_str()))
|
.push(text::title3(page.title.as_str()))
|
||||||
.push(horizontal_space())
|
.push(horizontal())
|
||||||
.into()
|
.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn unimplemented_page<Message: 'static>() -> Element<'static, Message> {
|
pub fn unimplemented_page<Message: Clone + 'static>() -> Element<'static, Message> {
|
||||||
settings::section().title("")
|
settings::section().title("")
|
||||||
.add(text::body("We haven't created that panel yet, and/or it is using a similar idea as current Pop! designs."))
|
.add(text::body("We haven't created that panel yet, and/or it is using a similar idea as current Pop! designs."))
|
||||||
.into()
|
.into()
|
||||||
|
|
@ -184,50 +185,69 @@ pub fn sub_page_header<'a, Message: 'static + Clone>(
|
||||||
.into()
|
.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn go_next_item<Msg: Clone + 'static>(
|
pub fn go_next_item<Msg: 'static>(
|
||||||
description: &str,
|
description: &str,
|
||||||
msg_opt: impl Into<Option<Msg>>,
|
msg_opt: impl Into<Option<Msg>>,
|
||||||
) -> cosmic::Element<'_, Msg> {
|
) -> list::ListButton<'_, Msg> {
|
||||||
settings::item_row(vec![
|
settings::item_row(vec![
|
||||||
text::body(description).wrapping(Wrapping::Word).into(),
|
text::body(description)
|
||||||
horizontal_space().into(),
|
.width(Length::Fill)
|
||||||
|
.wrapping(Wrapping::Word)
|
||||||
|
.into(),
|
||||||
icon::from_name("go-next-symbolic").size(16).icon().into(),
|
icon::from_name("go-next-symbolic").size(16).icon().into(),
|
||||||
])
|
])
|
||||||
.width(Length::Fill)
|
.apply(list::button)
|
||||||
.apply(widget::container)
|
|
||||||
.class(cosmic::theme::Container::List)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.apply(button::custom)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.padding(0)
|
|
||||||
.class(theme::Button::Transparent)
|
|
||||||
.on_press_maybe(msg_opt.into())
|
.on_press_maybe(msg_opt.into())
|
||||||
.into()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn go_next_with_item<'a, Msg: Clone + 'static>(
|
pub fn go_next_with_item<'a, Msg: 'static>(
|
||||||
description: &'a str,
|
description: &'a str,
|
||||||
item: impl Into<cosmic::Element<'a, Msg>>,
|
item: impl Into<cosmic::Element<'a, Msg>>,
|
||||||
msg_opt: impl Into<Option<Msg>>,
|
msg_opt: impl Into<Option<Msg>>,
|
||||||
) -> cosmic::Element<'a, Msg> {
|
) -> list::ListButton<'a, Msg> {
|
||||||
settings::item_row(vec![
|
settings::item_row(vec![
|
||||||
text::body(description).wrapping(Wrapping::Word).into(),
|
text::body(description).wrapping(Wrapping::Word).into(),
|
||||||
horizontal_space().into(),
|
horizontal().into(),
|
||||||
widget::row::with_capacity(2)
|
row::with_capacity(2)
|
||||||
.push(item)
|
.push(item)
|
||||||
.push(icon::from_name("go-next-symbolic").size(16).icon())
|
.push(icon::from_name("go-next-symbolic").size(16).icon())
|
||||||
.align_y(Alignment::Center)
|
.align_y(Alignment::Center)
|
||||||
.spacing(cosmic::theme::spacing().space_s)
|
.spacing(theme::spacing().space_s)
|
||||||
.into(),
|
.into(),
|
||||||
])
|
])
|
||||||
.width(Length::Fill)
|
.apply(list::button)
|
||||||
.apply(widget::container)
|
.on_press_maybe(msg_opt.into())
|
||||||
.class(cosmic::theme::Container::List)
|
}
|
||||||
.width(Length::Fill)
|
|
||||||
.apply(button::custom)
|
pub fn selection_context_item<'a, Msg: 'static>(
|
||||||
.padding(0)
|
name: &'a str,
|
||||||
.width(Length::Fill)
|
selected: bool,
|
||||||
.class(theme::Button::Transparent)
|
msg_opt: impl Into<Option<Msg>>,
|
||||||
|
) -> list::ListButton<'a, Msg> {
|
||||||
|
let svg_accent = Rc::new(|theme: &cosmic::Theme| widget::svg::Style {
|
||||||
|
color: Some(theme.cosmic().accent_text_color().into()),
|
||||||
|
});
|
||||||
|
|
||||||
|
settings::item_row(vec![
|
||||||
|
text::body(name)
|
||||||
|
.class(if selected {
|
||||||
|
theme::Text::Accent
|
||||||
|
} else {
|
||||||
|
theme::Text::Default
|
||||||
|
})
|
||||||
|
.wrapping(Wrapping::Word)
|
||||||
|
.width(Length::Fill)
|
||||||
|
.into(),
|
||||||
|
if selected {
|
||||||
|
icon::from_name("object-select-symbolic")
|
||||||
|
.size(16)
|
||||||
|
.icon()
|
||||||
|
.class(theme::Svg::Custom(svg_accent.clone()))
|
||||||
|
.into()
|
||||||
|
} else {
|
||||||
|
horizontal().width(16.).into()
|
||||||
|
},
|
||||||
|
])
|
||||||
|
.apply(list::button)
|
||||||
.on_press_maybe(msg_opt.into())
|
.on_press_maybe(msg_opt.into())
|
||||||
.into()
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
4
i18n/ar/cosmic_settings.ftl
vendored
4
i18n/ar/cosmic_settings.ftl
vendored
|
|
@ -20,7 +20,7 @@ xdg-entry-desktop-comment = إعدادات خلفية الشاشة والمظه
|
||||||
xdg-entry-displays = شاشات العرض
|
xdg-entry-displays = شاشات العرض
|
||||||
xdg-entry-displays-comment = أدِر إعدادات تضبيط العرض
|
xdg-entry-displays-comment = أدِر إعدادات تضبيط العرض
|
||||||
xdg-entry-dock = الإرساء
|
xdg-entry-dock = الإرساء
|
||||||
xdg-entry-dock-comment = شريط اختياري للتطبيقات والبريمجات
|
xdg-entry-dock-comment = شريط إختياري للتطبيقات والبُريمجات
|
||||||
xdg-entry-input = أجهزة الإدخال
|
xdg-entry-input = أجهزة الإدخال
|
||||||
xdg-entry-input-comment = لوحة المفاتيح، المؤشر، إلخ
|
xdg-entry-input-comment = لوحة المفاتيح، المؤشر، إلخ
|
||||||
xdg-entry-keyboard = لوحة المفاتيح
|
xdg-entry-keyboard = لوحة المفاتيح
|
||||||
|
|
@ -208,7 +208,7 @@ desktop = سطح المكتب
|
||||||
|
|
||||||
## Desktop: Wallpaper
|
## Desktop: Wallpaper
|
||||||
|
|
||||||
wallpaper = خلفية
|
wallpaper = الخلفية
|
||||||
.change = غيِّر الصورة كل
|
.change = غيِّر الصورة كل
|
||||||
.fit = ملاءمة الخلفية
|
.fit = ملاءمة الخلفية
|
||||||
.folder-dialog = اختر مجلد الخلفية
|
.folder-dialog = اختر مجلد الخلفية
|
||||||
|
|
|
||||||
10
i18n/cs/cosmic_settings.ftl
vendored
10
i18n/cs/cosmic_settings.ftl
vendored
|
|
@ -634,12 +634,12 @@ long = Dlouhé
|
||||||
keyboard-typing-assist = Psaní
|
keyboard-typing-assist = Psaní
|
||||||
.repeat-rate = Frekvence opakování
|
.repeat-rate = Frekvence opakování
|
||||||
.repeat-delay = Zpoždění opakování
|
.repeat-delay = Zpoždění opakování
|
||||||
keyboard-numlock-boot = Numlock
|
keyboard-numlock-boot = Num Lock
|
||||||
.boot-state = Stav při spuštění systému
|
.boot-state = Stav klávesy při spuštění systému
|
||||||
.last-boot = Poslední spuštění systému
|
.last-boot = Poslední spuštění systému
|
||||||
.on = Zapnuto
|
.on = Zapnutý
|
||||||
.off = Vypnuto
|
.off = Vypnutý
|
||||||
.set = Nastavit stav numlock při spuštění systému
|
.set = Num Lock při spuštění systému
|
||||||
added = Přidáno
|
added = Přidáno
|
||||||
type-to-search = Pište pro vyhledávání...
|
type-to-search = Pište pro vyhledávání...
|
||||||
show-extended-input-sources = Zobrazit rozšířené vstupní zdroje
|
show-extended-input-sources = Zobrazit rozšířené vstupní zdroje
|
||||||
|
|
|
||||||
48
i18n/de/cosmic_settings.ftl
vendored
48
i18n/de/cosmic_settings.ftl
vendored
|
|
@ -1,4 +1,4 @@
|
||||||
app = COSMIC Einstellungen
|
app = COSMIC-Einstellungen
|
||||||
dbus-connection-error = Verbindung zum DBus ist fehlgeschlagen
|
dbus-connection-error = Verbindung zum DBus ist fehlgeschlagen
|
||||||
ok = OK
|
ok = OK
|
||||||
unknown = Unbekannt
|
unknown = Unbekannt
|
||||||
|
|
@ -114,7 +114,7 @@ bluetooth-adapters = Bluetooth-Adapter
|
||||||
## Accessibility
|
## Accessibility
|
||||||
|
|
||||||
accessibility = Barrierefreiheit
|
accessibility = Barrierefreiheit
|
||||||
.vision = Sehkraft
|
.vision = Sehen
|
||||||
.on = Ein
|
.on = Ein
|
||||||
.off = Aus
|
.off = Aus
|
||||||
.unavailable = Nicht verfügbar
|
.unavailable = Nicht verfügbar
|
||||||
|
|
@ -122,7 +122,7 @@ accessibility = Barrierefreiheit
|
||||||
.high-contrast = Modus für hohen Kontrast
|
.high-contrast = Modus für hohen Kontrast
|
||||||
.invert-colors = Farben invertieren
|
.invert-colors = Farben invertieren
|
||||||
.color-filters = Farbfilter
|
.color-filters = Farbfilter
|
||||||
hearing = Gehör
|
hearing = Hören
|
||||||
.mono = Stereo-Audio als Mono abspielen
|
.mono = Stereo-Audio als Mono abspielen
|
||||||
default = Standard
|
default = Standard
|
||||||
magnifier = Vergrößerungsglas
|
magnifier = Vergrößerungsglas
|
||||||
|
|
@ -221,7 +221,7 @@ container-background = Container-Hintergrund
|
||||||
.reset = Auf automatisch zurücksetzen
|
.reset = Auf automatisch zurücksetzen
|
||||||
.desc = Wird für die Navigationsseitenleiste, Seitenschublade, Dialoge und ähnliche Widgets verwendet
|
.desc = Wird für die Navigationsseitenleiste, Seitenschublade, Dialoge und ähnliche Widgets verwendet
|
||||||
control-tint = Komponententönung steuern
|
control-tint = Komponententönung steuern
|
||||||
.desc = Wird für Hintergründe von Standardschaltflächen, Sucheingaben, Texteingaben und ähnlichen Komponenten verwendet.
|
.desc = Wird für Hintergründe von Standardschaltflächen, Sucheingaben, Texteingaben und ähnlichen Komponenten verwendet
|
||||||
frosted = Milchglaseffekt bei der Systemoberfläche
|
frosted = Milchglaseffekt bei der Systemoberfläche
|
||||||
.desc = Wendet Hintergrundunschärfe auf Panel, Dock, Applets, Starter und Anwendungsbibliothek an
|
.desc = Wendet Hintergrundunschärfe auf Panel, Dock, Applets, Starter und Anwendungsbibliothek an
|
||||||
enable-export = Aktuelles Thema auf GNOME-Apps anwenden
|
enable-export = Aktuelles Thema auf GNOME-Apps anwenden
|
||||||
|
|
@ -351,7 +351,6 @@ color = Farbe
|
||||||
.sidebar = Farbprofile
|
.sidebar = Farbprofile
|
||||||
.temperature = Farbtemperatur
|
.temperature = Farbtemperatur
|
||||||
display = Bildschirme
|
display = Bildschirme
|
||||||
.desc = Bildschirme, Grafikumschaltung und Nachtlicht verwalten
|
|
||||||
.arrangement = Bildschirmanordnung
|
.arrangement = Bildschirmanordnung
|
||||||
.arrangement-desc = Bildschirme ziehen, um sie neu anzuordnen.
|
.arrangement-desc = Bildschirme ziehen, um sie neu anzuordnen.
|
||||||
.enable = Bildschirm aktivieren
|
.enable = Bildschirm aktivieren
|
||||||
|
|
@ -413,8 +412,8 @@ sound-input = Eingang
|
||||||
.device = Eingabegerät
|
.device = Eingabegerät
|
||||||
.level = Eingangspegel
|
.level = Eingangspegel
|
||||||
sound-alerts = Alarmsignale
|
sound-alerts = Alarmsignale
|
||||||
.volume = Lautstärke von Alarmsignalen.
|
.volume = Lautstärke von Alarmsignalen
|
||||||
.sound = Alarmsignalklang.
|
.sound = Alarmsignalklang
|
||||||
sound-applications = Anwendungen
|
sound-applications = Anwendungen
|
||||||
.desc = Lautstärken und Einstellungen von Anwendungen
|
.desc = Lautstärken und Einstellungen von Anwendungen
|
||||||
|
|
||||||
|
|
@ -462,7 +461,7 @@ power-saving = Energiesparoptionen
|
||||||
|
|
||||||
## Input
|
## Input
|
||||||
|
|
||||||
acceleration-desc = Passt die Tracking-Empfindlichkeit automatisch an die Geschwindigkeit an.
|
acceleration-desc = Passt die Tracking-Empfindlichkeit automatisch an die Geschwindigkeit an
|
||||||
disable-while-typing = Während dem Tippen deaktivieren
|
disable-while-typing = Während dem Tippen deaktivieren
|
||||||
input-devices = Eingabegeräte
|
input-devices = Eingabegeräte
|
||||||
primary-button = Primäre Taste
|
primary-button = Primäre Taste
|
||||||
|
|
@ -494,6 +493,7 @@ keyboard-sources = Eingabequellen
|
||||||
keyboard-special-char = Eingabe von Sonderzeichen
|
keyboard-special-char = Eingabe von Sonderzeichen
|
||||||
.alternate = Taste für alternative Zeichen
|
.alternate = Taste für alternative Zeichen
|
||||||
.compose = Compose-Taste
|
.compose = Compose-Taste
|
||||||
|
.compose-desc = Mit der Compose-Taste kannst du viele verschiedene Zeichen eingeben. Drück einfach die Compose-Taste und dann die Zeichen, die du brauchst. Wenn du zum Beispiel die Compose-Taste und dann C und o drückst, kommt ©, und wenn du die Compose-Taste und dann a und ' drückst, kommt á.
|
||||||
.caps = Feststelltaste
|
.caps = Feststelltaste
|
||||||
keyboard-typing-assist = Tippen
|
keyboard-typing-assist = Tippen
|
||||||
.repeat-rate = Wiederholungsrate
|
.repeat-rate = Wiederholungsrate
|
||||||
|
|
@ -512,7 +512,7 @@ show-extended-input-sources = Erweiterte Eingabequellen anzeigen
|
||||||
|
|
||||||
keyboard-shortcuts = Tastenkombinationen
|
keyboard-shortcuts = Tastenkombinationen
|
||||||
.desc = Tastenkombinationen anzeigen und anpassen
|
.desc = Tastenkombinationen anzeigen und anpassen
|
||||||
add-another-keybinding = Weitere Tastenkombination hinzufügen
|
add-another-keybinding = Weitere Tastenbelegung hinzufügen
|
||||||
cancel = Abbrechen
|
cancel = Abbrechen
|
||||||
command = Befehl
|
command = Befehl
|
||||||
custom = Benutzerdefiniert
|
custom = Benutzerdefiniert
|
||||||
|
|
@ -605,6 +605,7 @@ system-shortcut = System
|
||||||
.app-library = App-Bibliothek öffnen
|
.app-library = App-Bibliothek öffnen
|
||||||
.brightness-down = Bildschirmhelligkeit verringern
|
.brightness-down = Bildschirmhelligkeit verringern
|
||||||
.brightness-up = Bildschirmhelligkeit erhöhen
|
.brightness-up = Bildschirmhelligkeit erhöhen
|
||||||
|
.display-toggle = Internen Bildschirm umschalten
|
||||||
.home-folder = Persönlichen Ordner öffnen
|
.home-folder = Persönlichen Ordner öffnen
|
||||||
.keyboard-brightness-down = Tastaturhelligkeit verringern
|
.keyboard-brightness-down = Tastaturhelligkeit verringern
|
||||||
.keyboard-brightness-up = Tastaturhelligkeit erhöhen
|
.keyboard-brightness-up = Tastaturhelligkeit erhöhen
|
||||||
|
|
@ -618,7 +619,9 @@ system-shortcut = System
|
||||||
.play-prev = Vorheriger Titel
|
.play-prev = Vorheriger Titel
|
||||||
.poweroff = System ausschalten
|
.poweroff = System ausschalten
|
||||||
.screenshot = Bildschirmfoto machen
|
.screenshot = Bildschirmfoto machen
|
||||||
|
.suspend = Bereitschaft
|
||||||
.terminal = Terminal öffnen
|
.terminal = Terminal öffnen
|
||||||
|
.touchpad-toggle = Touchpad umschalten
|
||||||
.volume-lower = Lautstärke der Audioausgabe verringern
|
.volume-lower = Lautstärke der Audioausgabe verringern
|
||||||
.volume-raise = Lautstärke der Audioausgabe erhöhen
|
.volume-raise = Lautstärke der Audioausgabe erhöhen
|
||||||
.web-browser = Webbrowser öffnen
|
.web-browser = Webbrowser öffnen
|
||||||
|
|
@ -650,7 +653,7 @@ click-behavior = Klickverhalten
|
||||||
.click-finger = Sekundärklick mit zwei Fingern und Mittelklick mit drei Fingern
|
.click-finger = Sekundärklick mit zwei Fingern und Mittelklick mit drei Fingern
|
||||||
.button-areas = Sekundärklick in der unteren rechten Ecke und Mittelklick in der unteren Mitte
|
.button-areas = Sekundärklick in der unteren rechten Ecke und Mittelklick in der unteren Mitte
|
||||||
pinch-to-zoom = Zwei-Finger-Zoom
|
pinch-to-zoom = Zwei-Finger-Zoom
|
||||||
.desc = Mit zwei Fingern in den Inhalt zoomen, wenn die Anwendung den Zoom unterstützt.
|
.desc = Mit zwei Fingern in den Inhalt zoomen, wenn die Anwendung den Zoom unterstützt
|
||||||
tap-to-click = Tippen zum Klicken
|
tap-to-click = Tippen zum Klicken
|
||||||
.desc = Ermöglicht das Tippen mit einem Finger für den Primärklick, das Tippen mit zwei Fingern für den Sekundärklick und das Tippen mit drei Fingern für den Mittelklick
|
.desc = Ermöglicht das Tippen mit einem Finger für den Primärklick, das Tippen mit zwei Fingern für den Sekundärklick und das Tippen mit drei Fingern für den Mittelklick
|
||||||
touchpad = Touchpad
|
touchpad = Touchpad
|
||||||
|
|
@ -692,7 +695,7 @@ time-format = Datums- & Uhrzeitformat
|
||||||
.monday = Montag
|
.monday = Montag
|
||||||
time-region = Region & Sprache
|
time-region = Region & Sprache
|
||||||
formatting = Formatierung
|
formatting = Formatierung
|
||||||
.dates = Daten
|
.dates = Datum
|
||||||
.time = Uhrzeit
|
.time = Uhrzeit
|
||||||
.date-and-time = Datum & Uhrzeit
|
.date-and-time = Datum & Uhrzeit
|
||||||
.numbers = Zahlen
|
.numbers = Zahlen
|
||||||
|
|
@ -739,10 +742,14 @@ startup-apps = Startanwendungen
|
||||||
legacy-applications = Kompatibilität mit X11-Anwendungen
|
legacy-applications = Kompatibilität mit X11-Anwendungen
|
||||||
# This is still work in progress, as I didn't have enough time. Therefore, I left this here temporarily.
|
# This is still work in progress, as I didn't have enough time. Therefore, I left this here temporarily.
|
||||||
legacy-app-scaling = Anwendungsskalierung des X11-Fenstersystems
|
legacy-app-scaling = Anwendungsskalierung des X11-Fenstersystems
|
||||||
.scaled-by-system = Alle X11-Anwendungen skalieren
|
.scaled-gaming = Für Spiele und Vollbild-Apps optimieren
|
||||||
.system-description = X11-Anwendungen werden auf HiDPI-Bildschirmen unscharf dargestellt.
|
.gaming-description = X11-Anwendungen können im Vergleich zu Wayland-Anwendungen etwas größer/kleiner erscheinen
|
||||||
.scaled-natively = X11-Anwendungen in nativer Auflösung rendern
|
.scaled-applications = Für Anwendungen optimieren
|
||||||
.native-description = X11-Anwendungen, die keine Skalierung unterstützen, werden klein dargestellt, wenn HiDPI-Bildschirme verwendet werden. Für Spiele aktivieren, um die volle Monitorauflösung auszunutzen.
|
.applications-description = Spiele und Vollbild-X11-Anwendungen passen möglicherweise nicht zu deiner Bildschirmauflösung
|
||||||
|
.scaled-compatibility = Modus für maximale Kompatibilität
|
||||||
|
.compatibility-description = X11-Anwendungen können auf HiDPI-Bildschirmen unscharf erscheinen
|
||||||
|
.preferred-display = Bevorzugte Anzeige für Spiele und Vollbild-X11-Anwendungen
|
||||||
|
.no-display = Keine
|
||||||
|
|
||||||
## System
|
## System
|
||||||
|
|
||||||
|
|
@ -894,3 +901,14 @@ invalid-username = Ungültiger Benutzername
|
||||||
change-password = Passwort ändern
|
change-password = Passwort ändern
|
||||||
xdg-entry-about-comment = Gerätename, Hardware-Informationen, Betriebssystem-Standardeinstellungen
|
xdg-entry-about-comment = Gerätename, Hardware-Informationen, Betriebssystem-Standardeinstellungen
|
||||||
no-search-results = Es wurden keine Netzwerke gefunden, die deiner Suche entsprechen.
|
no-search-results = Es wurden keine Netzwerke gefunden, die deiner Suche entsprechen.
|
||||||
|
legacy-app-global-shortcuts = Globale Tastenkombinationen in X11-Anwendungen
|
||||||
|
.desc = Globale Tastenkombinationen ermöglichen es, dass in Anwendungen ausgeführte Tastenanschläge und Mausklicks von anderen Anwendungen für Funktionen wie Push-to-Talk oder Push-to-Mute erkannt werden. Standardmäßig sind globale Tastenkombinationen in X11-Anwendungen deaktiviert, um sicherzustellen, dass andere Anwendungen keine Tastatur- und Mausereignisse überwachen können, die sensible Informationen enthalten.
|
||||||
|
.none = Keine Tasten
|
||||||
|
.modifiers = Modifikatortasten (Super, Umschalt, Steuerung, Alt)
|
||||||
|
.combination = Alle Tasten, während die Modifikatortasten Super, Steuerung oder Alt gedrückt werden
|
||||||
|
.all = Alle Tasten
|
||||||
|
.mouse = Maustasten-Ereignisse in X11-Anwendungen
|
||||||
|
xdg-entry-desktop-keywords = COSMIC;Desktop;
|
||||||
|
xdg-entry-desktop = Desktop
|
||||||
|
xdg-entry-a11y-keywords = COSMIC;Barrierefreiheit;A11y;Bildschirm;Leser;Vergrößerungsglas;Kontrast;Farbe;
|
||||||
|
xdg-entry-a11y-comment = Bildschirmleser, Vergrößerungsglas, hoher Kontrast und Farbfilter
|
||||||
|
|
|
||||||
4
i18n/en/cosmic_settings.ftl
vendored
4
i18n/en/cosmic_settings.ftl
vendored
|
|
@ -484,6 +484,7 @@ window-controls = Window controls
|
||||||
.maximize = Show maximize button
|
.maximize = Show maximize button
|
||||||
.minimize = Show minimize button
|
.minimize = Show minimize button
|
||||||
.active-window-hint = Show active window hint
|
.active-window-hint = Show active window hint
|
||||||
|
.position-start = Place buttons on the left (macOS style)
|
||||||
|
|
||||||
focus-navigation = Focus navigation
|
focus-navigation = Focus navigation
|
||||||
.focus-follows-cursor = Focus follows cursor
|
.focus-follows-cursor = Focus follows cursor
|
||||||
|
|
@ -521,6 +522,9 @@ workspaces-orientation = Workspaces orientation
|
||||||
hot-corner = Hot Corner
|
hot-corner = Hot Corner
|
||||||
.top-left-corner = Enable top-left hot corner for Workspaces
|
.top-left-corner = Enable top-left hot corner for Workspaces
|
||||||
|
|
||||||
|
workspaces-navigation = Navigation
|
||||||
|
.wraparound = Move between first and last workspace using keyboard shortcuts and gestures
|
||||||
|
|
||||||
## Displays
|
## Displays
|
||||||
|
|
||||||
-requires-restart = Requires restart
|
-requires-restart = Requires restart
|
||||||
|
|
|
||||||
3
i18n/es-419/cosmic_settings.ftl
vendored
3
i18n/es-419/cosmic_settings.ftl
vendored
|
|
@ -802,3 +802,6 @@ full-name = Nombre completo
|
||||||
invalid-username = Nombre de usuario inválido.
|
invalid-username = Nombre de usuario inválido.
|
||||||
password-mismatch = Las contraseñas no coinciden.
|
password-mismatch = Las contraseñas no coinciden.
|
||||||
save = Guardar
|
save = Guardar
|
||||||
|
xdg-entry-applications = Aplicaciones
|
||||||
|
xdg-entry-appearance = Apariencia
|
||||||
|
xdg-entry-a11y = Accesibilidad
|
||||||
|
|
|
||||||
0
i18n/eu/cosmic_settings.ftl
vendored
Normal file
0
i18n/eu/cosmic_settings.ftl
vendored
Normal file
13
i18n/fr/cosmic_settings.ftl
vendored
13
i18n/fr/cosmic_settings.ftl
vendored
|
|
@ -322,6 +322,7 @@ window-controls = Contrôles des fenêtres
|
||||||
.maximize = Afficher le bouton maximiser
|
.maximize = Afficher le bouton maximiser
|
||||||
.minimize = Afficher le bouton minimiser
|
.minimize = Afficher le bouton minimiser
|
||||||
.active-window-hint = Afficher l'indice de la fenêtre active
|
.active-window-hint = Afficher l'indice de la fenêtre active
|
||||||
|
.position-start = Placer les boutons à gauche (style macOS)
|
||||||
focus-navigation = Navigation par le focus
|
focus-navigation = Navigation par le focus
|
||||||
.focus-follows-cursor = Le focus suit le curseur
|
.focus-follows-cursor = Le focus suit le curseur
|
||||||
.focus-follows-cursor-delay = Délai de suivi du focus en ms
|
.focus-follows-cursor-delay = Délai de suivi du focus en ms
|
||||||
|
|
@ -854,11 +855,11 @@ sound-hd-audio = Audio HD
|
||||||
sound-usb-audio = Audio USB
|
sound-usb-audio = Audio USB
|
||||||
sound-device-profiles = Profils des périphériques
|
sound-device-profiles = Profils des périphériques
|
||||||
shadows-floating = Fenêtres flottantes
|
shadows-floating = Fenêtres flottantes
|
||||||
.clip = Aligner les coins du système et appliquer des ombres
|
.clip = Aligner avec les coins système et appliquer les ombres
|
||||||
shadows-tiling = Fenêtres ajustées
|
shadows-tiling = Fenêtres agencées
|
||||||
.clip = Aligner les coins du système
|
.clip = Aligner avec les coins système
|
||||||
.shadow = Appliquer des ombres
|
.shadow = Appliquer les ombres
|
||||||
shadow-and-corners = Les ombres et coins des fenêtres
|
shadow-and-corners = Ombres et arrondis des fenêtres
|
||||||
workspaces-overview = Aperçu des espaces de travail
|
workspaces-overview = Aperçu des espaces de travail
|
||||||
.action-on-typing = Action lors de la saisie
|
.action-on-typing = Action lors de la saisie
|
||||||
.none = Aucun
|
.none = Aucun
|
||||||
|
|
@ -899,6 +900,6 @@ xdg-entry-keywords = COSMIC;Paramètres;
|
||||||
xdg-entry-region-language-keywords = COSMIC;Région;Langue;Date;Format;Heure;Paramètres régionaux;Localisation;
|
xdg-entry-region-language-keywords = COSMIC;Région;Langue;Date;Format;Heure;Paramètres régionaux;Localisation;
|
||||||
xdg-entry-applications-keywords = COSMIC;Défaut;Application;Démarrage;X11;Compatibilité
|
xdg-entry-applications-keywords = COSMIC;Défaut;Application;Démarrage;X11;Compatibilité
|
||||||
xdg-entry-keyboard-keywords = COSMIC;Clavier;Saisie;Source;Raccourcis;
|
xdg-entry-keyboard-keywords = COSMIC;Clavier;Saisie;Source;Raccourcis;
|
||||||
xdg-entry-window-management-keywords = COSMIC;Fenêtre;Gestion;Ajustement;Super;Touche;
|
xdg-entry-window-management-keywords = COSMIC;Fenêtre;Gestion;Agencement;Super;Touche;
|
||||||
xdg-entry-displays-keywords = COSMIC;Écran;
|
xdg-entry-displays-keywords = COSMIC;Écran;
|
||||||
no-search-results = Aucun réseau ne correspond à votre recherche.
|
no-search-results = Aucun réseau ne correspond à votre recherche.
|
||||||
|
|
|
||||||
37
i18n/ga/cosmic_settings.ftl
vendored
37
i18n/ga/cosmic_settings.ftl
vendored
|
|
@ -265,8 +265,8 @@ end-segment = Deighleog deireadh
|
||||||
large = Mór
|
large = Mór
|
||||||
no-applets-found = Níor aimsíodh feidhmchláiríní...
|
no-applets-found = Níor aimsíodh feidhmchláiríní...
|
||||||
panel-bottom = Bun
|
panel-bottom = Bun
|
||||||
panel-left = Clé
|
panel-left = Ar chlé
|
||||||
panel-right = Deas
|
panel-right = Ar dheis
|
||||||
panel-top = Barr
|
panel-top = Barr
|
||||||
search-applets = Cuardach feidhmchláiríní...
|
search-applets = Cuardach feidhmchláiríní...
|
||||||
small = Beag
|
small = Beag
|
||||||
|
|
@ -518,8 +518,8 @@ migrate-workspace-next = Aistrigh spás oibre go dtí an chéad aschur eile
|
||||||
migrate-workspace =
|
migrate-workspace =
|
||||||
Imirce spás oibre chuig aschur { $direction ->
|
Imirce spás oibre chuig aschur { $direction ->
|
||||||
*[down] síos
|
*[down] síos
|
||||||
[left] clé
|
[left] ar chlé
|
||||||
[right] deas
|
[right] ar dheis
|
||||||
[up] suas
|
[up] suas
|
||||||
}
|
}
|
||||||
navigate = Nascleanúint
|
navigate = Nascleanúint
|
||||||
|
|
@ -541,19 +541,19 @@ nav-shortcuts = Nascleanúint
|
||||||
.prev-workspace = Fócas ar spás oibre roimhe seo
|
.prev-workspace = Fócas ar spás oibre roimhe seo
|
||||||
.next-workspace = Fócas ar an gcéad spás oibre eile
|
.next-workspace = Fócas ar an gcéad spás oibre eile
|
||||||
.focus =
|
.focus =
|
||||||
Fuinneog fócais { $direction ->
|
Fócas fuinneog { $direction ->
|
||||||
*[down] síos
|
*[down] síos
|
||||||
[in] isteach
|
[in] isteach
|
||||||
[left] clé
|
[left] ar chlé
|
||||||
[out] amach
|
[out] amach
|
||||||
[right] deas
|
[right] ar dheis
|
||||||
[up] suas
|
[up] suas
|
||||||
}
|
}
|
||||||
.output =
|
.output =
|
||||||
Athraigh chuig aschur { $direction ->
|
Athraigh chuig aschur { $direction ->
|
||||||
*[down] síos
|
*[down] síos
|
||||||
[left] clé
|
[left] ar chlé
|
||||||
[right] deas
|
[right] ar dheis
|
||||||
[up] suas
|
[up] suas
|
||||||
}
|
}
|
||||||
.workspace = Athraigh go spás oibre { $num }
|
.workspace = Athraigh go spás oibre { $num }
|
||||||
|
|
@ -567,24 +567,24 @@ manage-windows = Bainistigh fuinneoga
|
||||||
.toggle-sticky = Scoránaigh an fhuinneog greamaitheach
|
.toggle-sticky = Scoránaigh an fhuinneog greamaitheach
|
||||||
move-windows = Bog fuinneoga
|
move-windows = Bog fuinneoga
|
||||||
.direction =
|
.direction =
|
||||||
Bog Fuinneog { $direction ->
|
Bog an fhuinneog { $direction ->
|
||||||
*[down] síos
|
*[down] síos
|
||||||
[left] clé
|
[left] ar chlé
|
||||||
[right] deas
|
[right] ar dheis
|
||||||
[up] suas
|
[up] suas
|
||||||
}
|
}
|
||||||
.display =
|
.display =
|
||||||
Bog fuinneog monatóir amháin { $direction ->
|
Bog an fhuinneog monatóir amháin { $direction ->
|
||||||
*[down] síos
|
*[down] síos
|
||||||
[left] clé
|
[left] ar chlé
|
||||||
[right] deas
|
[right] ar dheis
|
||||||
[up] suas
|
[up] suas
|
||||||
}
|
}
|
||||||
.workspace =
|
.workspace =
|
||||||
Bog fuinneog spás oibre amháin { $direction ->
|
Bog an fhuinneog spás oibre amháin { $direction ->
|
||||||
*[below] thíos
|
*[below] thíos
|
||||||
[left] clé
|
[left] ar chlé
|
||||||
[right] deas
|
[right] ar dheis
|
||||||
[above] thuas
|
[above] thuas
|
||||||
}
|
}
|
||||||
.workspace-num = Bog an fhuinneog go spás oibre { $num }
|
.workspace-num = Bog an fhuinneog go spás oibre { $num }
|
||||||
|
|
@ -910,3 +910,4 @@ xdg-entry-date-time-comment = Crios ama, socruithe uathoibríocha cloig, agus fo
|
||||||
xdg-entry-x11-applications = Comhoiriúnacht Feidhmchláir X11
|
xdg-entry-x11-applications = Comhoiriúnacht Feidhmchláir X11
|
||||||
xdg-entry-window-management-comment = Gníomh na sár-eochrach, roghanna rialaithe fuinneoige, agus roghanna breise tíleála fuinneoige
|
xdg-entry-window-management-comment = Gníomh na sár-eochrach, roghanna rialaithe fuinneoige, agus roghanna breise tíleála fuinneoige
|
||||||
xdg-entry-wired-comment = Naisc sreangaithe agus próifílí nasc
|
xdg-entry-wired-comment = Naisc sreangaithe agus próifílí nasc
|
||||||
|
no-search-results = Níl aon líonra ag teacht leis an gcuardach seo.
|
||||||
|
|
|
||||||
26
i18n/hu/cosmic_settings.ftl
vendored
26
i18n/hu/cosmic_settings.ftl
vendored
|
|
@ -70,9 +70,9 @@ add-vpn = VPN hozzáadása
|
||||||
airplane-on = A repülőgép üzemmód be van kapcsolva
|
airplane-on = A repülőgép üzemmód be van kapcsolva
|
||||||
cable-unplugged = Kábel kihúzva
|
cable-unplugged = Kábel kihúzva
|
||||||
connect = Csatlakozás
|
connect = Csatlakozás
|
||||||
connected = Csatlakozva
|
connected = Csatlakoztatva
|
||||||
connecting = Csatlakozás…
|
connecting = Csatlakozás…
|
||||||
disconnect = Leválasztás
|
disconnect = Bontás
|
||||||
forget = Elfelejtés
|
forget = Elfelejtés
|
||||||
known-networks = Ismert hálózatok
|
known-networks = Ismert hálózatok
|
||||||
network-and-wireless = Hálózat és Wi-Fi
|
network-and-wireless = Hálózat és Wi-Fi
|
||||||
|
|
@ -91,14 +91,14 @@ auth-dialog = Azonosítás szükséges
|
||||||
forget-dialog = El akarod felejteni ezt a Wi-Fi hálózatot?
|
forget-dialog = El akarod felejteni ezt a Wi-Fi hálózatot?
|
||||||
.description = A jelszót ismét meg kell adnod, ha újra csatlakozni szeretnél.
|
.description = A jelszót ismét meg kell adnod, ha újra csatlakozni szeretnél.
|
||||||
network-device-state =
|
network-device-state =
|
||||||
.activated = Csatlakozva
|
.activated = Csatlakoztatva
|
||||||
.config = Csatlakozás…
|
.config = Csatlakozás…
|
||||||
.deactivating = Leválasztás…
|
.deactivating = Bontás…
|
||||||
.disconnected = Leválasztva
|
.disconnected = Kapcsolat bontva
|
||||||
.failed = Csatlakozás sikertelen
|
.failed = Csatlakozás sikertelen
|
||||||
.ip-check = Kapcsolat ellenőrzése
|
.ip-check = Kapcsolat ellenőrzése
|
||||||
.ip-config = IP és router információk lekérése
|
.ip-config = IP és router információk lekérése
|
||||||
.need-auth = Azonosítás szükséges
|
.need-auth = Hitelesítés szükséges
|
||||||
.prepare = Felkészülés a kapcsolódáshoz
|
.prepare = Felkészülés a kapcsolódáshoz
|
||||||
.secondaries = Várakozás másodlagos kapcsolatra
|
.secondaries = Várakozás másodlagos kapcsolatra
|
||||||
.unavailable = Nem elérhető
|
.unavailable = Nem elérhető
|
||||||
|
|
@ -151,11 +151,11 @@ confirm = Megerősítés
|
||||||
enable = Engedélyezés
|
enable = Engedélyezés
|
||||||
bluetooth = Bluetooth
|
bluetooth = Bluetooth
|
||||||
.status = Ez a rendszer { $aliases } néven látható, amíg a Bluetooth beállítások vannak megnyitva.
|
.status = Ez a rendszer { $aliases } néven látható, amíg a Bluetooth beállítások vannak megnyitva.
|
||||||
.connected = Csatlakozva
|
.connected = Csatlakoztatva
|
||||||
.connecting = Csatlakozás…
|
.connecting = Csatlakozás…
|
||||||
.disconnecting = Leválasztás…
|
.disconnecting = Bontás…
|
||||||
.connect = Csatlakozás
|
.connect = Csatlakozás
|
||||||
.disconnect = Leválasztás
|
.disconnect = Bontás
|
||||||
.forget = Elfelejtés
|
.forget = Elfelejtés
|
||||||
.dbus-error = Hiba történt a DBus-szal való kommunikáció során: { $why }
|
.dbus-error = Hiba történt a DBus-szal való kommunikáció során: { $why }
|
||||||
.disabled = A Bluetooth szolgáltatás le van tiltva
|
.disabled = A Bluetooth szolgáltatás le van tiltva
|
||||||
|
|
@ -865,10 +865,10 @@ sound-hd-audio = HD-hang
|
||||||
sound-usb-audio = USB-hang
|
sound-usb-audio = USB-hang
|
||||||
sound-device-profiles = Eszközprofilok
|
sound-device-profiles = Eszközprofilok
|
||||||
shadows-floating = Lebegő ablakok
|
shadows-floating = Lebegő ablakok
|
||||||
.clip = A rendszer sarkainak követése és árnyék alkalmazása
|
.clip = Rendszersarkokhoz illeszkedés és árnyékok alkalmazása
|
||||||
shadows-tiling = Csempézett ablakok
|
shadows-tiling = Csempézett ablakok
|
||||||
.clip = A rendszer sarkainak követése
|
.clip = Rendszersarkokhoz illeszkedés
|
||||||
.shadow = Árnyék alkalmazása
|
.shadow = Árnyékok alkalmazása
|
||||||
shadow-and-corners = Ablakok árnyéka és sarkai
|
shadow-and-corners = Ablakok árnyéka és sarkai
|
||||||
workspaces-overview = Munkaterületek áttekintése
|
workspaces-overview = Munkaterületek áttekintése
|
||||||
.action-on-typing = Művelet gépeléskor
|
.action-on-typing = Művelet gépeléskor
|
||||||
|
|
@ -877,7 +877,7 @@ workspaces-overview = Munkaterületek áttekintése
|
||||||
.applications = Alkalmazások megnyitása
|
.applications = Alkalmazások megnyitása
|
||||||
xdg-entry-mouse-keywords = COSMIC;Egér;Gyorsítás;Görgetés;
|
xdg-entry-mouse-keywords = COSMIC;Egér;Gyorsítás;Görgetés;
|
||||||
xdg-entry-notifications-keywords = COSMIC;Értesítés;Zárolás;Ne zavarjanak;
|
xdg-entry-notifications-keywords = COSMIC;Értesítés;Zárolás;Ne zavarjanak;
|
||||||
xdg-entry-startup-apps-keywords = COSMIC;Indítási;Alkalmazás;
|
xdg-entry-startup-apps-keywords = COSMIC;Automatikus;Indítási alkalmazás;
|
||||||
xdg-entry-appearance-keywords = COSMIC;Kiemelő;Szín;Ikon;Betűkészlet;Téma;
|
xdg-entry-appearance-keywords = COSMIC;Kiemelő;Szín;Ikon;Betűkészlet;Téma;
|
||||||
xdg-entry-dock-keywords = COSMIC;Dokk;Panel;Kisalkalmazás;
|
xdg-entry-dock-keywords = COSMIC;Dokk;Panel;Kisalkalmazás;
|
||||||
xdg-entry-panel-keywords = COSMIC;Panel;Kisalkalmazás;
|
xdg-entry-panel-keywords = COSMIC;Panel;Kisalkalmazás;
|
||||||
|
|
|
||||||
317
i18n/kab/cosmic_settings.ftl
vendored
317
i18n/kab/cosmic_settings.ftl
vendored
|
|
@ -316,3 +316,320 @@ number = { $number }
|
||||||
unknown = Arussin
|
unknown = Arussin
|
||||||
ok = IH
|
ok = IH
|
||||||
dbus-connection-error = Ur izmir ara ad yeqqen ɣer DBus
|
dbus-connection-error = Ur izmir ara ad yeqqen ɣer DBus
|
||||||
|
zoom-out = Simẓi
|
||||||
|
zoom-in = Semɣeṛ
|
||||||
|
replace-shortcut-dialog = Semselsi anegzum?
|
||||||
|
.desc = { $shortcut } yettwaseqdec sɣur { $name }. Ma tsemselsiḍ-t, { $name } ad yettwsens.
|
||||||
|
window-tiling = Afser n yisfuyla
|
||||||
|
.horizontal = Sbadu taɣda taglawant
|
||||||
|
.vertical = Sbadu taɣda tubdidt
|
||||||
|
.swap-window = Asfaylu n usemmeskel
|
||||||
|
.toggle-tiling = Qluqel afsar n usfaylu
|
||||||
|
.toggle-stacking = Qluqel asettef n usfaylu
|
||||||
|
.toggle-floating = Qluqel asfaylu yettifliwen
|
||||||
|
.toggle-orientation = Qluqel taɣda
|
||||||
|
manage-windows = Sefrek isfuyla
|
||||||
|
.close = Mdel asfaylu
|
||||||
|
.maximize = Semɣer asfaylu
|
||||||
|
.fullscreen = Asfaylu n ugdil aččuran
|
||||||
|
.minimize = Semẓi asfaylu
|
||||||
|
.resize-inwards = Ales tiddi n usfaylu ɣer daxel
|
||||||
|
.resize-outwards = Ales tiddit n usfaylu ɣer berra
|
||||||
|
.toggle-sticky = Rmed/Sens asfaylu usbiḍ
|
||||||
|
modified = { $count } ttwasniflen
|
||||||
|
custom-shortcuts = Inegzumen yugnen
|
||||||
|
.add = Rnu anegzum
|
||||||
|
.context = Rnu anegzum yugnen
|
||||||
|
.none = Ulac inegzumen yugnen
|
||||||
|
type-key-combination = Aru asuddes n tsarut
|
||||||
|
toggle-stacking = Rmed/Sens asettef n isfuyla
|
||||||
|
terminate = Egg tagara
|
||||||
|
system-controls = Isenqaden n unagraw
|
||||||
|
shortcut-name = Isem n unegzum
|
||||||
|
navigate = Inig
|
||||||
|
migrate-workspace =
|
||||||
|
Inig tallunt n umahil ɣer tuffɣa { $direction ->
|
||||||
|
*[down] ukessar
|
||||||
|
[left] uzelmaḍ
|
||||||
|
[right] uyeffus
|
||||||
|
[up] usawen
|
||||||
|
}
|
||||||
|
migrate-workspace-next = Inig tallunt n umahil ɣer tuffɣa tuḍfirt
|
||||||
|
migrate-workspace-prev = Inig tallunt n umahil ɣer tuffɣa tuzwirt
|
||||||
|
input-source-switch = Beddel tutlayt n usekcem n unasiw
|
||||||
|
disabled = Insa
|
||||||
|
debug = Seɣti
|
||||||
|
custom = Yugnen
|
||||||
|
command = Taladna
|
||||||
|
add-another-keybinding = Rnu yiwen n unegzum n unasiw nniḍen
|
||||||
|
keyboard-shortcuts = Inegzumen n unasiw
|
||||||
|
.desc = Wali sakin sagen inegzumen
|
||||||
|
show-extended-input-sources = Sken tiɣbula n unekcum leqqayen
|
||||||
|
type-to-search = Aru iwakken ad tnadiḍ…
|
||||||
|
added = Yettwarna
|
||||||
|
keyboard-sources = Iɣbula n unekcum
|
||||||
|
.desc = Iɣbula n unekcum zemren ad ttwasneflen s useqdec n usuddes n tsarut Super+Space. Ayagi yezmer ad yettuwennez deg yiɣewwaṛen n unegzum n unasiw..
|
||||||
|
.move-up = Ddu d asawen
|
||||||
|
.move-down = Ddu d akessar
|
||||||
|
.settings = Iɣewwaṛen
|
||||||
|
.view-layout = Wali taneɣruft n unasiw
|
||||||
|
.remove = Kkes
|
||||||
|
.add = Rnu aɣbalu n unekcum
|
||||||
|
keyboard = Anasiw
|
||||||
|
long = Aɣezfan
|
||||||
|
short = Awezlan
|
||||||
|
fast = Arurad
|
||||||
|
slow = Ẓẓay
|
||||||
|
scrolling = Adrurem
|
||||||
|
.two-finger = Drurem s sin iḍudan
|
||||||
|
.edge = Drurem arma d iri s yiwen uḍad
|
||||||
|
.speed = Arured n udrurem
|
||||||
|
.natural = Adrurem agaman
|
||||||
|
.natural-desc = Drurem agbur, deg wadeg n tmeẓri
|
||||||
|
primary-button = Taqeffalt tagejdant
|
||||||
|
.desc = Ad yesbadu amizzwer n tqeffalin tifekkanin
|
||||||
|
.left = Azelmaḍ
|
||||||
|
.right = Ayeffus
|
||||||
|
input-devices = ibenkan n unekcum
|
||||||
|
disable-while-typing = Sens ticki tettaruḍ
|
||||||
|
acceleration-desc = Seggem s wudem awurman aḥulfu n uneḍfar ilmend n urured
|
||||||
|
power-saving = Tinefrunin n uḥraz n tnezmart
|
||||||
|
.turn-off-screen-after = Sexsi agdil seld
|
||||||
|
.auto-suspend = Aseḥbes deg leɛḍil s wudem awurman
|
||||||
|
.auto-suspend-ac = Aseḥbes deg leɛḍil s wudem awurman mi ara yeqqen
|
||||||
|
.auto-suspend-battery = Aseḥbes deg leɛḍil s wudem awurman ɣef tezmer n uẓru
|
||||||
|
power-mode = Askar n tezmart
|
||||||
|
.battery = Asiɣzef n tudert n uẓru
|
||||||
|
.battery-desc = Aḥraz n tezmart d tmellit tasusamt
|
||||||
|
.balanced = Awliwal
|
||||||
|
.balanced-desc = Timellit tasussamt akked useqdec alemmas n tezmert
|
||||||
|
.performance = Timellit tafellayt
|
||||||
|
.performance-desc = Taqacuct useqdec n tmellit d tezmert
|
||||||
|
.no-backend = Ameẓlu n deffir ur yettwaf ara. Sbedd system76-power neɣ power-profiles-daemon.
|
||||||
|
connected-devices = Ibenkan yeqqnen
|
||||||
|
.unknown = Ibenk arussin
|
||||||
|
battery = Aẓru
|
||||||
|
.minute =
|
||||||
|
{ $value } { $value ->
|
||||||
|
[one] tasdat
|
||||||
|
*[other] n tesdatin
|
||||||
|
}
|
||||||
|
.hour =
|
||||||
|
{ $value } { $value ->
|
||||||
|
[one] asrag
|
||||||
|
*[other] n yisragen
|
||||||
|
}
|
||||||
|
.day =
|
||||||
|
{ $value } { $value ->
|
||||||
|
[one] wass
|
||||||
|
*[other] n wussan
|
||||||
|
}
|
||||||
|
.less-than-minute = Ur tettaweḍ ara tesdat
|
||||||
|
.and = akked
|
||||||
|
.remaining-time =
|
||||||
|
{ $time } alamma { $action ->
|
||||||
|
[full] yeččur
|
||||||
|
*[other] ifuk
|
||||||
|
}
|
||||||
|
power = Tazmert d uẓru
|
||||||
|
sound-device-profiles = Imuɣna n yibenk
|
||||||
|
sound-usb-audio = Imesli USB
|
||||||
|
sound-hd-audio = Imesli HD
|
||||||
|
amplification = Asedfu
|
||||||
|
.desc = Ad yesireg ableɣ alama d 150%
|
||||||
|
sound-input = Anekcam
|
||||||
|
.volume = Ableɣ n unekcum
|
||||||
|
.device = Ibenk n unekcum
|
||||||
|
.level = Aswir n unekcum
|
||||||
|
sound-output = Tuffɣa
|
||||||
|
.volume = Ableɣ n tuffɣa
|
||||||
|
.device = Ibenk n tuffɣa
|
||||||
|
.level = Aswir n tuffɣa
|
||||||
|
.config = Twila
|
||||||
|
.balance = Awliwel
|
||||||
|
.left = Azelmaḍ
|
||||||
|
.right = Ayeffus
|
||||||
|
sound = Imesli
|
||||||
|
dialog = Tanaka n udiwenni
|
||||||
|
.title = Eǧǧ iɣewwaren-agi n ubeqqeḍ?
|
||||||
|
.keep-changes = Eǧǧ ibeddilen
|
||||||
|
.change-prompt = Isenfal n yiɣewwaṛen ad ttwasfesxen s wudem awurman deg { $time } n tsinin.
|
||||||
|
.revert-settings = Err-d iɣewwaṛen
|
||||||
|
scheduling = Asɣiwes
|
||||||
|
.manual = Asɣiwes s ufus
|
||||||
|
vrr = Atug n usismeḍ n umutti
|
||||||
|
.enabled = Yettwarmed
|
||||||
|
.force = Yal tikelt
|
||||||
|
.auto = S wudem awarman
|
||||||
|
.disabled = Ittwarermed
|
||||||
|
orientation = Taɣda
|
||||||
|
.standard = Tizeɣt
|
||||||
|
.rotate-90 = Zzi s 90°
|
||||||
|
.rotate-180 = Zzi s 180°
|
||||||
|
.rotate-270 = Zzi s 270°
|
||||||
|
night-light = Tafat n yiḍ
|
||||||
|
.auto = Awurman (seg uɣelluy ɣer walluy)
|
||||||
|
.desc = Senqes tafat tazegzawt s yiniten yeḥman
|
||||||
|
-requires-restart = Yesra asenker tikelt-nniḍen
|
||||||
|
workspaces-multi-behavior = Tiddin n uget n yigdilen
|
||||||
|
.span = Tallunin n umahil tteddunt ɣef ddeqs n yigdilen
|
||||||
|
.separate = Igdilen sɛan tallunin n umahil i yiman-nsent
|
||||||
|
workspaces-behavior = Tiddin n tallunt n umahil
|
||||||
|
.dynamic = Tallunin n umahil s wudem asmussaw
|
||||||
|
.dynamic-desc = Kkes s wudem awurman tallunin n umahil tilmawin
|
||||||
|
.fixed = Amḍan usbiḍ n tallunin n umahil
|
||||||
|
.fixed-desc = Rnu neɣ kkes tallunin n umahil deg teskant.
|
||||||
|
workspaces-overview = Taskant n tallunin n umahil
|
||||||
|
.action-on-typing = Tigawt deg tira
|
||||||
|
.none = Ula yiwen
|
||||||
|
.launcher = Ldi Amsekkar
|
||||||
|
.applications = Ldi Isnasen
|
||||||
|
workspaces = Tallunin n umahil
|
||||||
|
focus-navigation = Asaḍas n yinig
|
||||||
|
.focus-follows-cursor = Asaḍas i uḍfar n teḥnaccaḍt
|
||||||
|
.focus-follows-cursor-delay = Asaḍas i uḍfar n teḥnaccaḍt s usmezger s mili-tasint
|
||||||
|
.cursor-follows-focus = Taḥnaccaṭ teḍfer asaḍas
|
||||||
|
window-controls = Isenqaden n usfaylu
|
||||||
|
.maximize = Sken taqeffalt n usemɣer
|
||||||
|
.minimize = Sken taqeffalt n usemẓi
|
||||||
|
.active-window-hint = Sken amatar n usfaylu urmid
|
||||||
|
edge-gravity = Ajbad n yisfuyla yettifliwen ɣer yiran iqerben
|
||||||
|
super-key = Tigawt n tsarut Super
|
||||||
|
.launcher = Ldi amsekkar
|
||||||
|
.workspaces = Ldi tallunin n umahil
|
||||||
|
.applications = Ldi isnasen
|
||||||
|
.disable = Sens
|
||||||
|
window-management = Amsefrak n yisfuyla
|
||||||
|
panel-missing = Tawila n ugalis ulac-itt
|
||||||
|
.desc = Afaylu n twila n ugalis ulac-it ɣef sebba n useqdec n twila yugnen neɣ yexṣer.
|
||||||
|
.fix = Ales awennez ɣer umezwer
|
||||||
|
panel-applets = Tawila
|
||||||
|
.dock-desc = Swel tiplaḍin n udekkan
|
||||||
|
.desc = Swel tiplaḍin n ugalis
|
||||||
|
panel-style = Aɣanib
|
||||||
|
.anchor-gap = Ilem gar ugalis d yiran n ugdil
|
||||||
|
.dock-anchor-gap = Ilem gar udekkan d yiran n ugdil
|
||||||
|
.extend = Seɣzef agalis ɣer yiran n ugdil
|
||||||
|
.dock-extend = Seɣzef adekkan ɣer yiran n ugdil
|
||||||
|
.appearance = Timeẓriwt
|
||||||
|
.size = Teɣzi
|
||||||
|
.background-opacity = Tiḍullest n ugilal
|
||||||
|
panel-behavior-and-position = Tiddin akked wadigen
|
||||||
|
.autohide = Ffer s wudem awurman agalis
|
||||||
|
.dock-autohide = Ffer s wudem awurman adekkan
|
||||||
|
.position = Ideg deg ugdil
|
||||||
|
.display = Sken deg ubeqqeḍ
|
||||||
|
panel-appearance = Timeẓriwt
|
||||||
|
.match = Amṣada d tnarit
|
||||||
|
.light = Aceɛlal
|
||||||
|
.dark = Aɣmayan
|
||||||
|
start-segment = Aḥric n tazwara
|
||||||
|
small = Ameẓyan
|
||||||
|
search-applets = Nadi tiplaḍin…
|
||||||
|
panel-top = Uksawen
|
||||||
|
panel-right = Ayeffus
|
||||||
|
panel-left = Azelmaḍ
|
||||||
|
panel-bottom = Ukessar
|
||||||
|
no-applets-found = Ulac tiplaḍin yettwafen...
|
||||||
|
large = Meqqer
|
||||||
|
end-segment = Aḥric n taggara
|
||||||
|
place-here = Sers tiplaḍin dagi
|
||||||
|
center-segment = Aḥric alemmas
|
||||||
|
no-search-results = Ulac ifuyla inmeɣran akked unadi-ik·im.
|
||||||
|
password-mismatch = Awal uffir akked usentem ilaq ad mṣadan
|
||||||
|
invalid-username = Isem n useqdac d armeɣtu
|
||||||
|
full-name = Isem ummid
|
||||||
|
remove-user = Kkes aseqdac
|
||||||
|
change-password = Asnifel n wawal uffir
|
||||||
|
add-user = Rnu aseqdac
|
||||||
|
administrator = Anedbal
|
||||||
|
.desc = Inedbalen zemren ad beddlen iɣewwaṛen i yiseqdacen meṛṛa, ad rnun neɣ ad kksen iseqdacen-nniḍen
|
||||||
|
users = Iseqdacen
|
||||||
|
.admin = Anedbal
|
||||||
|
.standard = Tizeɣt
|
||||||
|
.profile-add = Fren tugna n umaɣnu
|
||||||
|
firmware = Afreɣẓan
|
||||||
|
about-related = Iɣewwaṛen icudden
|
||||||
|
.support = Awi-d tallelt
|
||||||
|
about-os = Anagraw n wammud
|
||||||
|
.os = Anagraw n wammud
|
||||||
|
.os-architecture = Tasegda n unagraw n wammud
|
||||||
|
.kernel = Lqem n yiɣes
|
||||||
|
.desktop-environment = Twennaḍt n tnarit
|
||||||
|
.windowing-system = Anagraw n yisfuyla
|
||||||
|
about-hardware = Arrum
|
||||||
|
.model = Tamudemt n warrum
|
||||||
|
.memory = Takatut
|
||||||
|
.processor = Asekkar
|
||||||
|
.graphics = Udlifen
|
||||||
|
.disk-capacity = Akettur n uḍebsi
|
||||||
|
about-device = Isem n yibenk
|
||||||
|
.desc = Isem-agi yettban-d deg ibenkan-nniḍen n uẓeṭṭa neɣ n Bluetooth
|
||||||
|
about = Ɣef
|
||||||
|
system = Anagraw akked imiḍanen
|
||||||
|
legacy-applications = Amṣada n yisnasen X11
|
||||||
|
startup-apps = Isnasen n usekker
|
||||||
|
.add = Rnu asnas
|
||||||
|
.user = Isnasen ttwasnekren mi ara tkecmeḍ
|
||||||
|
.none = Ulac isnasen n usekker yettwarnan
|
||||||
|
.remove-dialog-title = Kkes { $name }?
|
||||||
|
.remove-dialog-description = Kkes asnas-agi n usekker?
|
||||||
|
.add-startup-app = Rnu asnas n usekker
|
||||||
|
default-apps = Isnasen imezwar
|
||||||
|
.web-browser = Iminig n web
|
||||||
|
.file-manager = Amsefrak n ifuyla
|
||||||
|
.mail-client = Amsaɣ n yimayl
|
||||||
|
.music = Aẓawan
|
||||||
|
.video = Tavidyut
|
||||||
|
.photos = Tiwlafin
|
||||||
|
.calendar = Awitay
|
||||||
|
.terminal = Ixef
|
||||||
|
.other-associations = Tidukliwin-nniḍen
|
||||||
|
.text-editor = Amaẓrag n uḍris
|
||||||
|
.not-installed = Ur yettusbedd ara
|
||||||
|
applications = Isnasen
|
||||||
|
region = Tamnaḍt
|
||||||
|
install-additional-languages = Sbedd tutlayin nniḍen
|
||||||
|
add-language = Rnu tutlayt
|
||||||
|
.context = Rnu tutlayt
|
||||||
|
preferred-languages = Tutlayin timenyafin
|
||||||
|
.desc = Amizzwer n tutlayin yemmal-d anta tutlayt i yettwasqedcen i ugrudem n useqdac. Isenfal ad ddun deg tuqqna tuḍfirt.
|
||||||
|
formatting = Amsal
|
||||||
|
.dates = Izemzen
|
||||||
|
.time = Akud
|
||||||
|
.date-and-time = Azemz & akud
|
||||||
|
.numbers = Uṭṭunen
|
||||||
|
.measurement = Akat
|
||||||
|
.paper = Lkaɣeḍ
|
||||||
|
time-region = Tamnaḍt akked tutlayt
|
||||||
|
time-format = Amasal n uzemz akked usrag
|
||||||
|
.twenty-four = akud n 24 n yisragen
|
||||||
|
.show-seconds = Sken tasinin
|
||||||
|
.first = Ass amezwaru n dduṛt
|
||||||
|
.show-date = Sken azemz deg tappleṭ n wakud
|
||||||
|
.friday = Sem
|
||||||
|
.saturday = Sed
|
||||||
|
.sunday = Acer
|
||||||
|
.monday = Arim
|
||||||
|
time-zone = Tamnaḍt n wakud
|
||||||
|
.auto = Tamnaḍt n wakud tawurmant
|
||||||
|
.auto-info = Yesra imeẓla n wadig akked unekcum ɣer internet
|
||||||
|
time-date = Azemz akked wakud
|
||||||
|
.auto = Sbadu s wudem awurman
|
||||||
|
.auto-ntp = Azemz akked wakud ad ttwaleqqmen s wudem awurman ticki ara tesbaduḍ tamnaḍt n wakud
|
||||||
|
time = Akkud akked tutlayt
|
||||||
|
open-workspaces-view = Taskant n tallunin n umahil yeldin
|
||||||
|
open-application-library = Ldi tamkarḍit n yisnasen
|
||||||
|
switch-between-windows = Senfel gar isfuyla
|
||||||
|
switch-workspaces = Senfel tallunin n umahil
|
||||||
|
.horizontal = Aḍummu n kuẓ n yiḍudan ɣer zelmaḍ/yefus
|
||||||
|
.vertical = Aḍummu n kuẓ n yiḍudan ɣer usawen/ukessar
|
||||||
|
touchpad = Talwiḥt n unnal
|
||||||
|
.acceleration = Rmed tasɣiwelt n telwiḥt n unnal
|
||||||
|
.speed = Arurad n telwiḥt n unnal
|
||||||
|
click-behavior = Tiddin n usiti
|
||||||
|
.click-finger = Asiti wis sin s sin iḍudan akked d usiti alemmas s kraḍ n yiḍudan
|
||||||
|
.button-areas = Asiti wis sin deg teɣmert tayeffust n wadda akked usiti alemmas di tlemmast n wadda
|
||||||
|
mouse = Taɣerdayt
|
||||||
|
.speed = Arured n tɣerdayt
|
||||||
|
.acceleration = Rmed asɣiwel n tɣerdayt
|
||||||
|
|
|
||||||
107
i18n/ko/cosmic_settings.ftl
vendored
107
i18n/ko/cosmic_settings.ftl
vendored
|
|
@ -2,7 +2,6 @@ app = COSMIC 설정
|
||||||
desktop = 데스크톱
|
desktop = 데스크톱
|
||||||
dbus-connection-error = DBus 연결에 실패했습니다
|
dbus-connection-error = DBus 연결에 실패했습니다
|
||||||
time-region = 지역 & 언어
|
time-region = 지역 & 언어
|
||||||
.desc = 사용자 지역 기반 날짜 형식, 시간, 숫자
|
|
||||||
panel-left = 좌측
|
panel-left = 좌측
|
||||||
connect = 연결
|
connect = 연결
|
||||||
super-key = Super 키 동작
|
super-key = Super 키 동작
|
||||||
|
|
@ -17,13 +16,11 @@ vrr = 가변 주사율
|
||||||
.auto = 자동
|
.auto = 자동
|
||||||
.disabled = 비활성화
|
.disabled = 비활성화
|
||||||
window-hint-accent = 활성 창 강조 색상
|
window-hint-accent = 활성 창 강조 색상
|
||||||
power = 전원 및 배터리
|
power = 전원 & 배터리
|
||||||
.desc = 전원 설정 관리
|
|
||||||
fit-to-screen = 화면 채우기
|
fit-to-screen = 화면 채우기
|
||||||
control-tint = 컨트롤 컴포넌트 색조
|
control-tint = 컨트롤 컴포넌트 색조
|
||||||
.desc = 표준 버튼, 검색 입력란, 텍스트 입력란 및 유사한 컴포넌트의 배경에 사용됩니다
|
.desc = 표준 버튼, 검색 입력란, 텍스트 입력란 및 유사한 컴포넌트의 배경에 사용됩니다
|
||||||
time-date = 날짜 및 시간
|
time-date = 날짜 및 시간
|
||||||
.desc = 시간대, 자동 시계 설정 및 시간 형식
|
|
||||||
.auto = 자동으로 설정
|
.auto = 자동으로 설정
|
||||||
.auto-ntp = 시간대가 설정되면 날짜 및 시간이 자동으로 업데이트됩니다
|
.auto-ntp = 시간대가 설정되면 날짜 및 시간이 자동으로 업데이트됩니다
|
||||||
save = 저장
|
save = 저장
|
||||||
|
|
@ -74,7 +71,7 @@ cable-unplugged = 케이블 분리됨
|
||||||
color-picker = 색상 추출기
|
color-picker = 색상 추출기
|
||||||
interface-font = 시스템 글꼴
|
interface-font = 시스템 글꼴
|
||||||
forget-dialog = 이 Wi-Fi 네트워크를 지우시겠습니까?
|
forget-dialog = 이 Wi-Fi 네트워크를 지우시겠습니까?
|
||||||
.description = 나중에 이 Wi-Fi 네트워크를 다시 사용하려면 비밀번호를 다시 입력해야 합니다.
|
.description = 나중에 이 Wi-Fi 네트워크를 다시 사용하려면 암호를 다시 입력해야 합니다.
|
||||||
remove = 제거
|
remove = 제거
|
||||||
default = 기본
|
default = 기본
|
||||||
zoom-out = 축소
|
zoom-out = 축소
|
||||||
|
|
@ -85,7 +82,6 @@ keyboard-typing-assist = 입력
|
||||||
.repeat-delay = 반복 지연
|
.repeat-delay = 반복 지연
|
||||||
edge-gravity = 플로팅 창이 인접한 가장자리에 붙음
|
edge-gravity = 플로팅 창이 인접한 가장자리에 붙음
|
||||||
bluetooth = 블루투스
|
bluetooth = 블루투스
|
||||||
.desc = 블루투스 장치 관리
|
|
||||||
.status = 블루투스 설정이 열려있는 동안 시스템이 { $aliases }(으)로 표시됩니다.
|
.status = 블루투스 설정이 열려있는 동안 시스템이 { $aliases }(으)로 표시됩니다.
|
||||||
.connected = 연결됨
|
.connected = 연결됨
|
||||||
.connecting = 연결 중
|
.connecting = 연결 중
|
||||||
|
|
@ -96,7 +92,7 @@ bluetooth = 블루투스
|
||||||
.dbus-error = D-Bus 통신 중 오류가 발생했습니다: { $why }
|
.dbus-error = D-Bus 통신 중 오류가 발생했습니다: { $why }
|
||||||
.disabled = 블루투스 서비스가 비활성화 되었습니다.
|
.disabled = 블루투스 서비스가 비활성화 되었습니다.
|
||||||
.inactive = 블루투스 서비스가 시작되지 않았습니다.
|
.inactive = 블루투스 서비스가 시작되지 않았습니다.
|
||||||
.unknown = 블루투스 서비스를 시작할 수 없습니다. BlueZ가 설치됐는지 확인하세요.
|
.unknown = 블루투스 서비스를 시작할 수 없습니다. BlueZ가 설치됐나요?
|
||||||
amplification = 증폭
|
amplification = 증폭
|
||||||
.desc = 음량을 150%까지 올릴 수 있게 합니다.
|
.desc = 음량을 150%까지 올릴 수 있게 합니다.
|
||||||
recent-colors = 최근 색상
|
recent-colors = 최근 색상
|
||||||
|
|
@ -124,7 +120,6 @@ accessibility = 접근성
|
||||||
.invert-colors = 색상 반전
|
.invert-colors = 색상 반전
|
||||||
.color-filters = 색상 필터
|
.color-filters = 색상 필터
|
||||||
firmware = 펌웨어
|
firmware = 펌웨어
|
||||||
.desc = 펌웨어 세부 정보
|
|
||||||
container-background = 컨테이너 배경
|
container-background = 컨테이너 배경
|
||||||
.desc-detail = 컨테이너 배경색은 탐색 사이드바, 사이드 드로어, 대화 상자 및 유사한 위젯에 사용됩니다. 기본적으로 컨테이너 배경색은 창 배경색에서 자동으로 파생됩니다.
|
.desc-detail = 컨테이너 배경색은 탐색 사이드바, 사이드 드로어, 대화 상자 및 유사한 위젯에 사용됩니다. 기본적으로 컨테이너 배경색은 창 배경색에서 자동으로 파생됩니다.
|
||||||
.reset = 자동으로 재설정
|
.reset = 자동으로 재설정
|
||||||
|
|
@ -188,7 +183,6 @@ battery = 배터리
|
||||||
search-applets = 애플릿 검색...
|
search-applets = 애플릿 검색...
|
||||||
export = 내보내기
|
export = 내보내기
|
||||||
window-management = 창 관리
|
window-management = 창 관리
|
||||||
.desc = Super 키 동작, 창 제어 및 추가적인 창 타일링 옵션
|
|
||||||
pinch-to-zoom = 핀치하여 확대/축소
|
pinch-to-zoom = 핀치하여 확대/축소
|
||||||
.desc = 확대/축소를 지원하는 앱에서 두 손가락을 사용하여 콘텐츠를 확대하거나 축소합니다
|
.desc = 확대/축소를 지원하는 앱에서 두 손가락을 사용하여 콘텐츠를 확대하거나 축소합니다
|
||||||
wifi = Wi-Fi
|
wifi = Wi-Fi
|
||||||
|
|
@ -205,13 +199,10 @@ full-name = 성명
|
||||||
app-background = 창 배경
|
app-background = 창 배경
|
||||||
panel-right = 우측
|
panel-right = 우측
|
||||||
appearance = 외관
|
appearance = 외관
|
||||||
.desc = 강조 색상 및 꾸미기
|
|
||||||
mouse = 마우스
|
mouse = 마우스
|
||||||
.desc = 마우스 속도, 가속, 자연스러운 스크롤
|
|
||||||
.speed = 마우스 속도
|
.speed = 마우스 속도
|
||||||
.acceleration = 마우스 가속 활성화
|
.acceleration = 마우스 가속 활성화
|
||||||
dock = 독
|
dock = 독
|
||||||
.desc = 앱과 애플릿을 위한 추가적인 바
|
|
||||||
keyboard-sources = 입력 소스
|
keyboard-sources = 입력 소스
|
||||||
.desc = Super+Space 키 조합을 사용하여 입력 소스를 전환할 수 있습니다. 이는 키보드 단축키 설정에서 사용자 지정할 수 있습니다.
|
.desc = Super+Space 키 조합을 사용하여 입력 소스를 전환할 수 있습니다. 이는 키보드 단축키 설정에서 사용자 지정할 수 있습니다.
|
||||||
.move-up = 위로 이동
|
.move-up = 위로 이동
|
||||||
|
|
@ -248,7 +239,6 @@ hearing = 청각
|
||||||
preferred-languages = 선호하는 언어
|
preferred-languages = 선호하는 언어
|
||||||
.desc = 언어 순서에 따라 사용자 인터페이스에 표시될 언어가 결정됩니다. 변경 사항은 다음 로그인 후에 적용됩니다.
|
.desc = 언어 순서에 따라 사용자 인터페이스에 표시될 언어가 결정됩니다. 변경 사항은 다음 로그인 후에 적용됩니다.
|
||||||
display = 디스플레이
|
display = 디스플레이
|
||||||
.desc = 디스플레이 및 야간 조명 관리
|
|
||||||
.arrangement = 디스플레이 배치
|
.arrangement = 디스플레이 배치
|
||||||
.arrangement-desc = 디스플레이를 드래그하여 다시 배치하세요
|
.arrangement-desc = 디스플레이를 드래그하여 다시 배치하세요
|
||||||
.enable = 디스플레이 사용
|
.enable = 디스플레이 사용
|
||||||
|
|
@ -286,7 +276,6 @@ disconnect = 연결 해제
|
||||||
ok = 확인
|
ok = 확인
|
||||||
debug = 디버그
|
debug = 디버그
|
||||||
sound = 소리
|
sound = 소리
|
||||||
.desc = N/A
|
|
||||||
number = { $number }
|
number = { $number }
|
||||||
shortcut-name = 단축키 이름
|
shortcut-name = 단축키 이름
|
||||||
style = 스타일
|
style = 스타일
|
||||||
|
|
@ -299,7 +288,6 @@ panel-applets = 구성
|
||||||
qr-code-unavailable = QR 코드를 사용할 수 없음
|
qr-code-unavailable = QR 코드를 사용할 수 없음
|
||||||
small = 작게
|
small = 작게
|
||||||
notifications = 알림
|
notifications = 알림
|
||||||
.desc = 방해 금지, 잠금 화면 알림 및 앱 별 설정
|
|
||||||
window-tiling = 창 타일링
|
window-tiling = 창 타일링
|
||||||
.horizontal = 가로 방향 설정
|
.horizontal = 가로 방향 설정
|
||||||
.vertical = 세로 방향 설정
|
.vertical = 세로 방향 설정
|
||||||
|
|
@ -315,7 +303,6 @@ copied-to-clipboard = 클립보드로 복사됨
|
||||||
bluetooth-confirm-pin = 블루투스 PIN 확인
|
bluetooth-confirm-pin = 블루투스 PIN 확인
|
||||||
.description = { $device }에 표시된 PIN 번호가 다음과 일치하는지 확인하세요
|
.description = { $device }에 표시된 PIN 번호가 다음과 일치하는지 확인하세요
|
||||||
startup-apps = 시작 앱
|
startup-apps = 시작 앱
|
||||||
.desc = 로그인 시 실행되는 앱을 설정합니다
|
|
||||||
.add = 앱 추가
|
.add = 앱 추가
|
||||||
.user = 로그인 시 실행되는 앱
|
.user = 로그인 시 실행되는 앱
|
||||||
.none = 추가된 시작 앱이 없습니다
|
.none = 추가된 시작 앱이 없습니다
|
||||||
|
|
@ -335,9 +322,7 @@ night-light = 야간 조명
|
||||||
.auto = 자동 (일몰부터 일출까지)
|
.auto = 자동 (일몰부터 일출까지)
|
||||||
.desc = 따뜻한 색을 사용하여 블루라이트를 줄입니다
|
.desc = 따뜻한 색을 사용하여 블루라이트를 줄입니다
|
||||||
about = 정보
|
about = 정보
|
||||||
.desc = 장치 이름, 하드웨어 정보, 운영체제 기본
|
|
||||||
input-devices = 입력 장치
|
input-devices = 입력 장치
|
||||||
.desc = 입력 장치
|
|
||||||
custom-shortcuts = 사용자 정의 단축키
|
custom-shortcuts = 사용자 정의 단축키
|
||||||
.add = 단축키 추가
|
.add = 단축키 추가
|
||||||
.context = 사용자 정의 단축키 추가
|
.context = 사용자 정의 단축키 추가
|
||||||
|
|
@ -346,7 +331,7 @@ visible-networks = 사용 가능한 네트워크
|
||||||
applets = 애플릿
|
applets = 애플릿
|
||||||
terminate = 종료
|
terminate = 종료
|
||||||
window-hint-accent-toggle = 활성 창 강조에 테마 강조 색상 사용
|
window-hint-accent-toggle = 활성 창 강조에 테마 강조 색상 사용
|
||||||
type-to-search = 입력하여 검색...
|
type-to-search = 입력하여 검색…
|
||||||
workspaces-behavior = 작업 공간 동작
|
workspaces-behavior = 작업 공간 동작
|
||||||
.dynamic = 동적 작업 공간
|
.dynamic = 동적 작업 공간
|
||||||
.dynamic-desc = 비어있는 작업 공간을 자동으로 제거합니다.
|
.dynamic-desc = 비어있는 작업 공간을 자동으로 제거합니다.
|
||||||
|
|
@ -355,10 +340,9 @@ workspaces-behavior = 작업 공간 동작
|
||||||
wireguard-dialog = WireGuard 장치 추가
|
wireguard-dialog = WireGuard 장치 추가
|
||||||
.description = WireGuard 설정을 위해 사용할 장치 이름을 지정하세요.
|
.description = WireGuard 설정을 위해 사용할 장치 이름을 지정하세요.
|
||||||
remove-connection-dialog = 연결 프로필을 제거할까요?
|
remove-connection-dialog = 연결 프로필을 제거할까요?
|
||||||
.vpn-description = 나중에 이 네트워크를 다시 사용하려면 비밀번호를 다시 입력해야 합니다.
|
.vpn-description = 나중에 이 네트워크를 다시 사용하려면 암호를 다시 입력해야 합니다.
|
||||||
.wired-description = 나중에 다시 사용하려면 프로필을 다시 생성해야 합니다.
|
.wired-description = 나중에 다시 사용하려면 프로필을 다시 생성해야 합니다.
|
||||||
workspaces = 작업 공간
|
workspaces = 작업 공간
|
||||||
.desc = 작업 공간 방향 및 동작
|
|
||||||
password-confirm = 암호 확인
|
password-confirm = 암호 확인
|
||||||
move-windows = 창 이동
|
move-windows = 창 이동
|
||||||
.direction =
|
.direction =
|
||||||
|
|
@ -423,7 +407,6 @@ slow = 느리게
|
||||||
network-name = 네트워크 이름
|
network-name = 네트워크 이름
|
||||||
large = 크게
|
large = 크게
|
||||||
panel = 패널
|
panel = 패널
|
||||||
.desc = 메뉴와 애플릿을 위한 기본 시스템 바
|
|
||||||
confirm = 확인
|
confirm = 확인
|
||||||
auth-dialog = 인증 필요
|
auth-dialog = 인증 필요
|
||||||
.vpn-description = VPN 서비스를 위해 사용자 이름과 암호를 입력하세요.
|
.vpn-description = VPN 서비스를 위해 사용자 이름과 암호를 입력하세요.
|
||||||
|
|
@ -445,7 +428,6 @@ add-applet = 애플릿 추가
|
||||||
show-extended-input-sources = 확장 입력 소스 표시
|
show-extended-input-sources = 확장 입력 소스 표시
|
||||||
mode-and-colors = 모드 및 색상
|
mode-and-colors = 모드 및 색상
|
||||||
users = 사용자
|
users = 사용자
|
||||||
.desc = 인증 및 사용자 계정
|
|
||||||
.admin = 관리자
|
.admin = 관리자
|
||||||
.standard = 기본
|
.standard = 기본
|
||||||
.profile-add = 프로필 이미지 선택
|
.profile-add = 프로필 이미지 선택
|
||||||
|
|
@ -474,7 +456,6 @@ auto = 자동
|
||||||
end-segment = 끝 영역
|
end-segment = 끝 영역
|
||||||
bluetooth-adapters = 블루투스 어댑터
|
bluetooth-adapters = 블루투스 어댑터
|
||||||
legacy-applications = X11 앱 호환성
|
legacy-applications = X11 앱 호환성
|
||||||
.desc = X11 창 시스템 앱 스케일링 및 전역 단축키
|
|
||||||
time-format = 날짜 & 시간 형식
|
time-format = 날짜 & 시간 형식
|
||||||
.twenty-four = 24시간 형식
|
.twenty-four = 24시간 형식
|
||||||
.show-seconds = 초 표시
|
.show-seconds = 초 표시
|
||||||
|
|
@ -506,7 +487,6 @@ window-management-appearance = 창 관리
|
||||||
.gaps = 타일링된 창 간 간격
|
.gaps = 타일링된 창 간 간격
|
||||||
migrate-workspace-prev = 작업 공간을 이전 디스플레이로 이동
|
migrate-workspace-prev = 작업 공간을 이전 디스플레이로 이동
|
||||||
keyboard = 키보드
|
keyboard = 키보드
|
||||||
.desc = 입력 소스, 전환, 특수 문자 입력 및 단축키 설정
|
|
||||||
legacy-app-global-shortcuts = X11 앱의 전역 단축키
|
legacy-app-global-shortcuts = X11 앱의 전역 단축키
|
||||||
.desc = 전역 단축키를 사용하면 눌러서 말하기 또는 눌러서 음소거와 같은 기능을 위해, 특정 앱에서 수행된 키 입력 및 마우스 버튼 이벤트를 다른 앱이 인식할 수 있습니다. 기본적으로 X11 앱에서는 다른 앱이 민감한 정보가 포함된 키보드 및 마우스 이벤트를 감시하지 못하도록 전역 단축키 기능이 비활성화되어 있습니다.
|
.desc = 전역 단축키를 사용하면 눌러서 말하기 또는 눌러서 음소거와 같은 기능을 위해, 특정 앱에서 수행된 키 입력 및 마우스 버튼 이벤트를 다른 앱이 인식할 수 있습니다. 기본적으로 X11 앱에서는 다른 앱이 민감한 정보가 포함된 키보드 및 마우스 이벤트를 감시하지 못하도록 전역 단축키 기능이 비활성화되어 있습니다.
|
||||||
.none = 키 없음
|
.none = 키 없음
|
||||||
|
|
@ -531,7 +511,6 @@ add-network = 네트워크 추가
|
||||||
.profile = 프로필 추가
|
.profile = 프로필 추가
|
||||||
touchpad = 터치패드
|
touchpad = 터치패드
|
||||||
.acceleration = 터치패드 가속 활성화
|
.acceleration = 터치패드 가속 활성화
|
||||||
.desc = 터치패드 속도, 클릭 옵션, 제스처
|
|
||||||
.speed = 터치패드 속도
|
.speed = 터치패드 속도
|
||||||
command = 명령
|
command = 명령
|
||||||
gestures = 제스처
|
gestures = 제스처
|
||||||
|
|
@ -547,7 +526,6 @@ panel-bottom = 하단
|
||||||
share = 네트워크 공유
|
share = 네트워크 공유
|
||||||
add = 추가
|
add = 추가
|
||||||
time = 시간 & 언어
|
time = 시간 & 언어
|
||||||
.desc = N/A
|
|
||||||
fill = 채우기
|
fill = 채우기
|
||||||
custom = 사용자 정의
|
custom = 사용자 정의
|
||||||
bluetooth-paired = 이전에 연결된 장치
|
bluetooth-paired = 이전에 연결된 장치
|
||||||
|
|
@ -660,12 +638,11 @@ vpn-error = VPN 에러
|
||||||
.with-password =
|
.with-password =
|
||||||
nmcli를 통한 VPN { $field ->
|
nmcli를 통한 VPN { $field ->
|
||||||
*[username] 사용자 이름
|
*[username] 사용자 이름
|
||||||
[password] 비밀번호
|
[password] 암호
|
||||||
[password-flags] 비밀번호 플래그
|
[password-flags] 암호 플래그
|
||||||
} 설정 실패
|
} 설정 실패
|
||||||
wallpaper = 배경화면
|
wallpaper = 배경화면
|
||||||
.change = 이미지 변경 주기
|
.change = 이미지 변경 주기
|
||||||
.desc = 배경화면 이미지, 색상 및 슬라이드쇼 옵션
|
|
||||||
.fit = 배경화면 맞춤 방식
|
.fit = 배경화면 맞춤 방식
|
||||||
.folder-dialog = 배경화면 폴더 선택
|
.folder-dialog = 배경화면 폴더 선택
|
||||||
.image-dialog = 배경화면 이미지 선택
|
.image-dialog = 배경화면 이미지 선택
|
||||||
|
|
@ -692,7 +669,6 @@ click-behavior = 클릭 동작
|
||||||
.click-finger = 두 손가락으로 보조 클릭, 세 손가락으로 중앙 클릭
|
.click-finger = 두 손가락으로 보조 클릭, 세 손가락으로 중앙 클릭
|
||||||
.button-areas = 오른쪽 아래 모서리에서 보조 클릭, 하단 중앙에서 중앙 클릭
|
.button-areas = 오른쪽 아래 모서리에서 보조 클릭, 하단 중앙에서 중앙 클릭
|
||||||
default-apps = 기본 앱
|
default-apps = 기본 앱
|
||||||
.desc = 기본 웹 브라우저, 메일 클라이언트, 파일 관리자 및 기타 앱을 설정합니다.
|
|
||||||
.web-browser = 웹 브라우저
|
.web-browser = 웹 브라우저
|
||||||
.file-manager = 파일 관리자
|
.file-manager = 파일 관리자
|
||||||
.mail-client = 메일 클라이언트
|
.mail-client = 메일 클라이언트
|
||||||
|
|
@ -703,6 +679,7 @@ default-apps = 기본 앱
|
||||||
.terminal = 터미널
|
.terminal = 터미널
|
||||||
.other-associations = 기타 연결 프로그램
|
.other-associations = 기타 연결 프로그램
|
||||||
.text-editor = 텍스트 편집기
|
.text-editor = 텍스트 편집기
|
||||||
|
.not-installed = 설치되지 않음
|
||||||
power-saving = 절전 옵션
|
power-saving = 절전 옵션
|
||||||
.turn-off-screen-after = 다음 시간 후 화면 끄기
|
.turn-off-screen-after = 다음 시간 후 화면 끄기
|
||||||
.auto-suspend = 자동 절전 모드
|
.auto-suspend = 자동 절전 모드
|
||||||
|
|
@ -719,3 +696,71 @@ keyboard-special-char = 특수 문자 입력
|
||||||
.compose = 조합 키
|
.compose = 조합 키
|
||||||
.compose-desc = 조합 키를 사용하면 매우 다양한 특수 문자를 입력할 수 있습니다. 조합 키를 먼저 누른 다음, 정해진 순서대로 문자들을 입력하세요. 예를 들어, 조합 키를 누른 후 C와 o를 차례로 누르면 ©가 입력되고, a와 '를 누르면 á가 입력됩니다.
|
.compose-desc = 조합 키를 사용하면 매우 다양한 특수 문자를 입력할 수 있습니다. 조합 키를 먼저 누른 다음, 정해진 순서대로 문자들을 입력하세요. 예를 들어, 조합 키를 누른 후 C와 o를 차례로 누르면 ©가 입력되고, a와 '를 누르면 á가 입력됩니다.
|
||||||
.caps = Caps Lock 키
|
.caps = Caps Lock 키
|
||||||
|
xdg-entry-wired = 유선
|
||||||
|
xdg-entry-mouse-keywords = COSMIC;마우스;가속;스크롤;
|
||||||
|
xdg-entry-bluetooth-comment = 블루투스 장치 관리
|
||||||
|
xdg-entry-notifications-keywords = COSMIC;알림;잠금;
|
||||||
|
xdg-entry-default-apps-comment = 기본 웹 브라우저와 메일 클라이언트, 파일 탐색기 및 다른 앱
|
||||||
|
xdg-entry-keyboard-comment = 입력 소스, 전환, 특수 문자 모음, 단축키
|
||||||
|
xdg-entry-wired-keywords = COSMIC;유선;LAN;네트워크;연결;
|
||||||
|
xdg-entry-power = 전원 & 배터리
|
||||||
|
xdg-entry-appearance-keywords = COSMIC;강조;색상;아이콘;글꼴;테마
|
||||||
|
xdg-entry-mouse = 마우스
|
||||||
|
xdg-entry-dock-keywords = COSMIC;독;패널;애플릿
|
||||||
|
xdg-entry-mouse-comment = 마우스 속도와 가속 및 자연스러운 스크롤
|
||||||
|
xdg-entry-panel-keywords = COSMIC;패널;애플릿
|
||||||
|
xdg-entry-window-management = 창 관리
|
||||||
|
xdg-entry-a11y = 접근성
|
||||||
|
xdg-entry-desktop-keywords = COSMIC;데스크톱;
|
||||||
|
xdg-entry-x11-applications-keywords = COSMIC;X11;앱;게임;호환성;
|
||||||
|
xdg-entry-displays-comment = 표시 구성 관리 설정
|
||||||
|
xdg-entry-default-apps = 기본 앱
|
||||||
|
xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;네트워크;연결;
|
||||||
|
xdg-entry-applications-comment = 기본 앱과 시작 앱 및 X11 앱 호환성 설정
|
||||||
|
xdg-entry-about-keywords = COSMIC;정보
|
||||||
|
xdg-entry-panel = 패널
|
||||||
|
xdg-entry-notifications = 알림
|
||||||
|
xdg-entry-a11y-keywords = COSMIC;접근성;접근성;스크린;리더;돋보기;대비;색상;
|
||||||
|
xdg-entry-wireless-comment = Wi-Fi 연결 및 연결 프로필
|
||||||
|
xdg-entry-desktop = 데스크톱
|
||||||
|
xdg-entry-date-time-keywords = COSMIC;시간;대;
|
||||||
|
xdg-entry-desktop-comment = 바탕화면과 외관, 패널, 독, 창 관리 및 작업 공간 설정
|
||||||
|
xdg-entry-wallpaper = 배경화면
|
||||||
|
xdg-entry-keyboard = 키보드
|
||||||
|
xdg-entry-a11y-comment = 스크린 리더, 돋보기, 고대비, 색상 필터
|
||||||
|
xdg-entry-displays = 표시
|
||||||
|
xdg-entry-network = 네트워크 & 무선
|
||||||
|
xdg-entry-date-time = 날짜 & 시간
|
||||||
|
xdg-entry-input-comment = 키보드와 마우스 설정
|
||||||
|
xdg-entry-bluetooth-keywords = COSMIC;블루투스;
|
||||||
|
xdg-entry-dock-comment = 앱과 애플릿을 위한 선택적 바
|
||||||
|
xdg-entry-network-keywords = COSMIC;네트워크;무선;WiFi;VPN;
|
||||||
|
xdg-entry-dock = 독
|
||||||
|
xdg-entry-wireless = Wi-Fi
|
||||||
|
xdg-entry-workspaces-keywords = COSMIC;작업 공간;방향;개요;모니터;
|
||||||
|
xdg-entry-users-keywords = COSMIC;사용자;계정;
|
||||||
|
xdg-entry-about-comment = 장치 이름, 하드웨어 정보, 운영체제 기본값
|
||||||
|
xdg-entry-vpn-keywords = COSMIC;VPN;네트워크;연결;OpenVPN;OpenConnect;
|
||||||
|
xdg-entry-appearance-comment = 강조 색상과 테마
|
||||||
|
xdg-entry-input-keywords = COSMIC;입력;키보드;마우스;마우스;
|
||||||
|
xdg-entry-comment = COSMIC 데스크톱을 위한 설정 앱
|
||||||
|
xdg-entry-notifications-comment = 방해 금지와 잠금 화면 알림 및 애플리케이션별 설정
|
||||||
|
xdg-entry-applications = 앱
|
||||||
|
xdg-entry-power-keywords = COSMIC;전원;배터리
|
||||||
|
xdg-entry-default-apps-keywords = COSMIC;기본;앱
|
||||||
|
xdg-entry-keywords = COSMIC;설정;
|
||||||
|
xdg-entry-about = 정보
|
||||||
|
xdg-entry-input = 입력 장치
|
||||||
|
xdg-entry-applications-keywords = COSMIC;기본;앱;시작;X11;호환성
|
||||||
|
xdg-entry-keyboard-keywords = COSMIC;키보드;입력;소스;단축키;
|
||||||
|
xdg-entry-vpn-comment = VPN 연결 및 연결 프로필
|
||||||
|
xdg-entry-appearance = 외관
|
||||||
|
xdg-entry-window-management-keywords = COSMIC;창;관리;타일링;Super;키;
|
||||||
|
xdg-entry-workspaces-comment = 작업 공간 방향과 개요 및 다중 모니터 동작
|
||||||
|
xdg-entry-network-comment = 네트워크 연결 관리
|
||||||
|
xdg-entry-power-comment = 전원 모드 및 절전 옵션
|
||||||
|
xdg-entry-displays-keywords = COSMIC;표시;
|
||||||
|
xdg-entry-workspaces = 작업 공간
|
||||||
|
xdg-entry-date-time-comment = 시간대와 자동 시계 설정 및 시간 형식
|
||||||
|
xdg-entry-x11-applications = X11 앱 호환성
|
||||||
|
xdg-entry-wired-comment = 유선 연결 및 연결 프로필
|
||||||
|
|
|
||||||
1
i18n/lt/cosmic_settings.ftl
vendored
1
i18n/lt/cosmic_settings.ftl
vendored
|
|
@ -813,3 +813,4 @@ xdg-entry-workspaces = Darbo sritys
|
||||||
xdg-entry-date-time-comment = Laiko juosta, automatiniai laikrodžio nustatymai ir laiko formatavimas
|
xdg-entry-date-time-comment = Laiko juosta, automatiniai laikrodžio nustatymai ir laiko formatavimas
|
||||||
xdg-entry-x11-applications = X11 Aplikacijų Suderinamumas
|
xdg-entry-x11-applications = X11 Aplikacijų Suderinamumas
|
||||||
xdg-entry-wired-comment = Laidiniai ryšiai ir ryšių profiliai
|
xdg-entry-wired-comment = Laidiniai ryšiai ir ryšių profiliai
|
||||||
|
no-search-results = Joks tinklas neatitinka jūsų paieškos.
|
||||||
|
|
|
||||||
100
i18n/pt-BR/cosmic_settings.ftl
vendored
100
i18n/pt-BR/cosmic_settings.ftl
vendored
|
|
@ -70,7 +70,7 @@ vpn-error = Erro de VPN
|
||||||
[password] a senha
|
[password] a senha
|
||||||
[password-flags] os sinalizadores da senha
|
[password-flags] os sinalizadores da senha
|
||||||
} da VPN com nmcli
|
} da VPN com nmcli
|
||||||
wired = Rede Cabeada
|
wired = Rede cabeada
|
||||||
.adapter = Adaptador de rede cabeada { $id }
|
.adapter = Adaptador de rede cabeada { $id }
|
||||||
.connections = Conexões de rede cabeada
|
.connections = Conexões de rede cabeada
|
||||||
.devices = Dispositivos de rede cabeada
|
.devices = Dispositivos de rede cabeada
|
||||||
|
|
@ -83,8 +83,8 @@ wireguard-dialog = Adicionar Dispositivo WireGuard
|
||||||
|
|
||||||
## Networking: Online Accounts
|
## Networking: Online Accounts
|
||||||
|
|
||||||
online-accounts = Contas Online
|
online-accounts = Contas online
|
||||||
.desc = Adicionar contas, IMAP e SMTP, logins empresariais
|
.desc = Adicionar contas, IMAP e SMTP, sessões corporativas
|
||||||
|
|
||||||
# Bluetooth
|
# Bluetooth
|
||||||
|
|
||||||
|
|
@ -304,7 +304,7 @@ dock = Dock
|
||||||
window-management = Gerenciamento de janelas
|
window-management = Gerenciamento de janelas
|
||||||
super-key = Ação da tecla Super (Windows)
|
super-key = Ação da tecla Super (Windows)
|
||||||
.launcher = Abrir o lançador
|
.launcher = Abrir o lançador
|
||||||
.workspaces = Abrir a visão geral das áreas de trabalho
|
.workspaces = Abrir a visão geral dos espaços de trabalho
|
||||||
.applications = Abrir o menu de aplicativos
|
.applications = Abrir o menu de aplicativos
|
||||||
.disable = Desabilitar
|
.disable = Desabilitar
|
||||||
edge-gravity = Janelas flutuantes gravitam em direção às bordas próximas
|
edge-gravity = Janelas flutuantes gravitam em direção às bordas próximas
|
||||||
|
|
@ -319,23 +319,23 @@ focus-navigation = Navegação de foco
|
||||||
|
|
||||||
## Desktop: Workspaces
|
## Desktop: Workspaces
|
||||||
|
|
||||||
workspaces = Áreas de trabalho
|
workspaces = Espaços de trabalho
|
||||||
workspaces-behavior = Comportamento das áreas de trabalho
|
workspaces-behavior = Comportamento dos espaços de trabalho
|
||||||
.dynamic = Áreas de trabalho dinâmicas
|
.dynamic = Espaços de trabalho dinâmicos
|
||||||
.dynamic-desc = Remove automaticamente áreas de trabalho vazias.
|
.dynamic-desc = Remove automaticamente espaços de trabalho vazios.
|
||||||
.fixed = Número fixo de áreas de trabalho
|
.fixed = Número fixo de espaços de trabalho
|
||||||
.fixed-desc = Adicionar ou remover áreas de trabalho na visão geral.
|
.fixed-desc = Adiciona ou remove espaços de trabalho na visão geral.
|
||||||
workspaces-multi-behavior = Comportamento de vários monitores
|
workspaces-multi-behavior = Comportamento de vários monitores
|
||||||
.span = Áreas de trabalho se expandem a todas as telas
|
.span = Espaços de trabalho se expandem a todas as telas
|
||||||
.separate = Telas têm áreas de trabalho separadas
|
.separate = Telas têm espaços de trabalho separados
|
||||||
workspaces-overview-thumbnails = Miniaturas da visão geral das áreas de trabalho
|
workspaces-overview-thumbnails = Miniaturas da visão geral dos espaços de trabalho
|
||||||
.show-number = Mostrar o número da área de trabalho
|
.show-number = Mostrar o número do espaço de trabalho
|
||||||
.show-name = Mostrar o nome da área de trabalho
|
.show-name = Mostrar o nome do espaço de trabalho
|
||||||
workspaces-orientation = Orientação das áreas de trabalho
|
workspaces-orientation = Orientação dos espaços de trabalho
|
||||||
.vertical = Vertical
|
.vertical = Vertical
|
||||||
.horizontal = Horizontal
|
.horizontal = Horizontal
|
||||||
hot-corner = Canto ativo
|
hot-corner = Canto ativo
|
||||||
.top-left-corner = Habilitar o canto superior esquerdo para exibir as áreas de trabalho
|
.top-left-corner = Habilitar o canto superior esquerdo para exibir os espaços de trabalho
|
||||||
|
|
||||||
## Displays
|
## Displays
|
||||||
|
|
||||||
|
|
@ -479,7 +479,7 @@ fast = Rápido
|
||||||
short = Curto
|
short = Curto
|
||||||
long = Longo
|
long = Longo
|
||||||
keyboard = Teclado
|
keyboard = Teclado
|
||||||
keyboard-sources = Fontes de Entrada
|
keyboard-sources = Fontes de entrada
|
||||||
.desc = As fontes de entrada podem ser alternadas usando a combinação de teclas Super+Espaço. Isso pode ser personalizado nas configurações de atalho de teclado.
|
.desc = As fontes de entrada podem ser alternadas usando a combinação de teclas Super+Espaço. Isso pode ser personalizado nas configurações de atalho de teclado.
|
||||||
.move-up = Mover para cima
|
.move-up = Mover para cima
|
||||||
.move-down = Mover para baixo
|
.move-down = Mover para baixo
|
||||||
|
|
@ -515,10 +515,10 @@ custom = Personalizado
|
||||||
debug = Debug
|
debug = Debug
|
||||||
disabled = Desativado
|
disabled = Desativado
|
||||||
input-source-switch = Alterar fonte de entrada de idioma do teclado
|
input-source-switch = Alterar fonte de entrada de idioma do teclado
|
||||||
migrate-workspace-prev = Migrar a área de trabalho para a saída anterior
|
migrate-workspace-prev = Migrar o espaço de trabalho para a saída anterior
|
||||||
migrate-workspace-next = Migrar a área de trabalho para a próxima saída
|
migrate-workspace-next = Migrar o espaço de trabalho para a próxima saída
|
||||||
migrate-workspace =
|
migrate-workspace =
|
||||||
Migrar a área de trabalho para a saída { $direction ->
|
Migrar o espaço de trabalho para a saída { $direction ->
|
||||||
*[down] abaixo
|
*[down] abaixo
|
||||||
[left] à esquerda
|
[left] à esquerda
|
||||||
[right] à direita
|
[right] à direita
|
||||||
|
|
@ -539,9 +539,9 @@ modified = { $count } modificado(s)
|
||||||
nav-shortcuts = Navegação
|
nav-shortcuts = Navegação
|
||||||
.prev-output = Focar a saída anterior
|
.prev-output = Focar a saída anterior
|
||||||
.next-output = Focar a próxima saída
|
.next-output = Focar a próxima saída
|
||||||
.last-workspace = Focar a última área de trabalho
|
.last-workspace = Focar o último espaço de trabalho
|
||||||
.prev-workspace = Focar a área de trabalho anterior
|
.prev-workspace = Focar o espaço de trabalho anterior
|
||||||
.next-workspace = Focar a próxima área de trabalho
|
.next-workspace = Focar o próximo espaço de trabalho
|
||||||
.focus =
|
.focus =
|
||||||
Focar a janela { $direction ->
|
Focar a janela { $direction ->
|
||||||
*[down] abaixo
|
*[down] abaixo
|
||||||
|
|
@ -558,7 +558,7 @@ nav-shortcuts = Navegação
|
||||||
[right] à direita
|
[right] à direita
|
||||||
[up] acima
|
[up] acima
|
||||||
}
|
}
|
||||||
.workspace = Alternar para a área de trabalho { $num }
|
.workspace = Alternar para o espaço de trabalho { $num }
|
||||||
manage-windows = Gerenciamento de Janelas
|
manage-windows = Gerenciamento de Janelas
|
||||||
.close = Fechar janela
|
.close = Fechar janela
|
||||||
.maximize = Maximizar janela
|
.maximize = Maximizar janela
|
||||||
|
|
@ -583,20 +583,20 @@ move-windows = Mover janelas
|
||||||
[up] acima
|
[up] acima
|
||||||
}
|
}
|
||||||
.workspace =
|
.workspace =
|
||||||
Mover janela uma área de trabalho { $direction ->
|
Mover janela um espaço de trabalho { $direction ->
|
||||||
*[below] abaixo
|
*[below] abaixo
|
||||||
[left] à esquerda
|
[left] à esquerda
|
||||||
[right] à direita
|
[right] à direita
|
||||||
[above] acima
|
[above] acima
|
||||||
}
|
}
|
||||||
.workspace-num = Mover janela para a área de trabalho { $num }
|
.workspace-num = Mover janela para o espaço de trabalho { $num }
|
||||||
.prev-workspace = Mover janela para a área de trabalho anterior
|
.prev-workspace = Mover janela para o espaço de trabalho anterior
|
||||||
.next-workspace = Mover janela para a próxima área de trabalho
|
.next-workspace = Mover janela para o próximo espaço de trabalho
|
||||||
.last-workspace = Mover janela para a última área de trabalho
|
.last-workspace = Mover janela para o último espaço de trabalho
|
||||||
.next-display = Mover janela para a próxima tela
|
.next-display = Mover janela para a próxima tela
|
||||||
.prev-display = Mover janela para a tela anterior
|
.prev-display = Mover janela para a tela anterior
|
||||||
.send-to-prev-workspace = Mover janela para a área de trabalho anterior
|
.send-to-prev-workspace = Mover janela para o espaço de trabalho anterior
|
||||||
.send-to-next-workspace = Mover janela para a próxima área de trabalho
|
.send-to-next-workspace = Mover janela para o próximo espaço de trabalho
|
||||||
system-shortcut = Sistema
|
system-shortcut = Sistema
|
||||||
.app-library = Abrir a biblioteca de aplicativos
|
.app-library = Abrir a biblioteca de aplicativos
|
||||||
.brightness-down = Reduzir o brilho da tela
|
.brightness-down = Reduzir o brilho da tela
|
||||||
|
|
@ -623,7 +623,7 @@ system-shortcut = Sistema
|
||||||
.web-browser = Abrir um navegador web
|
.web-browser = Abrir um navegador web
|
||||||
.window-switcher = Alternar entre as janelas abertas
|
.window-switcher = Alternar entre as janelas abertas
|
||||||
.window-switcher-previous = Alternar entre as janelas abertas na ordem inversa
|
.window-switcher-previous = Alternar entre as janelas abertas na ordem inversa
|
||||||
.workspace-overview = Abrir a visão geral das áreas de trabalho
|
.workspace-overview = Abrir a visão geral dos espaços de trabalho
|
||||||
window-tiling = Janelas lado a lado
|
window-tiling = Janelas lado a lado
|
||||||
.horizontal = Definir orientação horizontal
|
.horizontal = Definir orientação horizontal
|
||||||
.vertical = Definir orientação vertical
|
.vertical = Definir orientação vertical
|
||||||
|
|
@ -664,12 +664,12 @@ gestures = Gestos
|
||||||
.four-finger-right = Deslizar quatro dedos para a direita
|
.four-finger-right = Deslizar quatro dedos para a direita
|
||||||
.four-finger-up = Deslizar quatro dedos para cima
|
.four-finger-up = Deslizar quatro dedos para cima
|
||||||
.three-finger-any = Deslizar três dedos para qualquer direção
|
.three-finger-any = Deslizar três dedos para qualquer direção
|
||||||
switch-workspaces = Alternar entre áreas de trabalho
|
switch-workspaces = Alternar entre espaços de trabalho
|
||||||
.horizontal = Deslizar quatro dedos para a direita ou esquerda
|
.horizontal = Deslizar quatro dedos para a direita ou esquerda
|
||||||
.vertical = Deslizar quatro dedos para cima ou para baixo
|
.vertical = Deslizar quatro dedos para cima ou para baixo
|
||||||
switch-between-windows = Alternar entre janelas
|
switch-between-windows = Alternar entre janelas
|
||||||
open-application-library = Abrir o menu de aplicativos
|
open-application-library = Abrir o menu de aplicativos
|
||||||
open-workspaces-view = Abrir a visão geral das áreas de trabalho
|
open-workspaces-view = Abrir a visão geral dos espaços de trabalho
|
||||||
|
|
||||||
## Time & Language
|
## Time & Language
|
||||||
|
|
||||||
|
|
@ -697,8 +697,8 @@ formatting = Formatação
|
||||||
.numbers = Números
|
.numbers = Números
|
||||||
.measurement = Medidas
|
.measurement = Medidas
|
||||||
.paper = Papel
|
.paper = Papel
|
||||||
preferred-languages = Idiomas Preferidos
|
preferred-languages = Idiomas preferidos
|
||||||
.desc = A ordem dos idiomas determina qual idioma será usado para a tradução do desktop. As alterações entram em vigor no próximo login.
|
.desc = A ordem dos idiomas determina qual idioma será usado para a tradução do desktop. As alterações entram em vigor no próximo início de sessão.
|
||||||
add-language = Adicionar idioma
|
add-language = Adicionar idioma
|
||||||
.context = Adicionar Idioma
|
.context = Adicionar Idioma
|
||||||
install-additional-languages = Instalar idiomas adicionais
|
install-additional-languages = Instalar idiomas adicionais
|
||||||
|
|
@ -727,7 +727,7 @@ default-apps = Aplicativos Padrão
|
||||||
|
|
||||||
startup-apps = Aplicativos de inicialização
|
startup-apps = Aplicativos de inicialização
|
||||||
.add = Adicionar aplicativo
|
.add = Adicionar aplicativo
|
||||||
.user = Aplicativos que serão iniciados ao fazer login no sistema
|
.user = Aplicativos que serão iniciados ao iniciar sessão
|
||||||
.none = Não há aplicativos de inicialização adicionados
|
.none = Não há aplicativos de inicialização adicionados
|
||||||
.remove-dialog-title = Remover { $name }?
|
.remove-dialog-title = Remover { $name }?
|
||||||
.remove-dialog-description = Remover esse aplicativo de inicialização?
|
.remove-dialog-description = Remover esse aplicativo de inicialização?
|
||||||
|
|
@ -797,13 +797,13 @@ invalid-username = Nome de usuário inválido
|
||||||
password-mismatch = A senha e a confirmação devem ser iguais
|
password-mismatch = A senha e a confirmação devem ser iguais
|
||||||
save = Salvar
|
save = Salvar
|
||||||
add-another-keybinding = Adicionar outra tecla de atalho
|
add-another-keybinding = Adicionar outra tecla de atalho
|
||||||
qr-code-unavailable = QR code inválido
|
qr-code-unavailable = Código QR não disponível
|
||||||
network-name = Nome da rede
|
network-name = Nome da rede
|
||||||
share = Compartilhar rede
|
share = Compartilhar rede
|
||||||
scan-to-connect-description = Escaneie o QR code para se conectar a esta rede.
|
scan-to-connect-description = Leia o código QR para se conectar a esta rede.
|
||||||
place-here = Colocar miniaplicativos aqui
|
place-here = Colocar miniaplicativos aqui
|
||||||
sound-device-port-unplugged = Desplugado
|
sound-device-port-unplugged = Desplugado
|
||||||
sound-hd-audio = Áudio HD
|
sound-hd-audio = Áudio de alta definição
|
||||||
sound-usb-audio = Áudio USB
|
sound-usb-audio = Áudio USB
|
||||||
sound-device-profiles = Perfis de dispositivo
|
sound-device-profiles = Perfis de dispositivo
|
||||||
shadows-floating = Janelas flutuantes
|
shadows-floating = Janelas flutuantes
|
||||||
|
|
@ -812,21 +812,21 @@ shadows-tiling = Janelas lado a lado
|
||||||
.clip = Corresponder com os cantos do sistema
|
.clip = Corresponder com os cantos do sistema
|
||||||
.shadow = Aplicar sombras
|
.shadow = Aplicar sombras
|
||||||
shadow-and-corners = Cantos e sombras de janelas
|
shadow-and-corners = Cantos e sombras de janelas
|
||||||
workspaces-overview = Visão geral das áreas de trabalho
|
workspaces-overview = Visão geral dos espaços de trabalho
|
||||||
.action-on-typing = Ação ao digitar
|
.action-on-typing = Ação ao digitar
|
||||||
.none = Nenhuma
|
.none = Nenhuma
|
||||||
.launcher = Abrir lançador
|
.launcher = Abrir lançador
|
||||||
.applications = Abrir aplicativos
|
.applications = Abrir aplicativos
|
||||||
xdg-entry-touchpad = Touchpad
|
xdg-entry-touchpad = Touchpad
|
||||||
xdg-entry-wired = Rede Cabeada
|
xdg-entry-wired = Rede cabeada
|
||||||
xdg-entry-startup-apps-comment = Configurar aplicativos que serão executados na inicialização do sistema
|
xdg-entry-startup-apps-comment = Configurar aplicativos que serão executados ao iniciar sessão
|
||||||
xdg-entry-region-language = Região e Idioma
|
xdg-entry-region-language = Região e Idioma
|
||||||
xdg-entry-mouse-keywords = COSMIC;Mouse;Aceleração;Rolagem;
|
xdg-entry-mouse-keywords = COSMIC;Mouse;Aceleração;Rolagem;
|
||||||
xdg-entry-bluetooth-comment = Gerenciar dispositivos Bluetooth
|
xdg-entry-bluetooth-comment = Gerenciar dispositivos Bluetooth
|
||||||
xdg-entry-notifications-keywords = COSMIC;Notificação;Bloqueio;
|
xdg-entry-notifications-keywords = COSMIC;Notificação;Bloqueio;
|
||||||
xdg-entry-startup-apps-keywords = COSMIC;Iniciar;Inicialização;Aplicativo;
|
xdg-entry-startup-apps-keywords = COSMIC;Iniciar;Inicialização;Aplicativo;
|
||||||
xdg-entry-default-apps-comment = Navegador padrão, cliente de email, navegador de arquivos e outros aplicativos
|
xdg-entry-default-apps-comment = Navegador padrão, cliente de email, navegador de arquivos e outros aplicativos
|
||||||
xdg-entry-keyboard-comment = Dispositivos de entrada, alternância, entrada de caracteres especiais, atalhos
|
xdg-entry-keyboard-comment = Fontes de entrada, alternância, entrada de caracteres especiais, atalhos
|
||||||
xdg-entry-wired-keywords = COSMIC;Wired;Cabeada;LAN;Rede;Conexão;
|
xdg-entry-wired-keywords = COSMIC;Wired;Cabeada;LAN;Rede;Conexão;
|
||||||
xdg-entry-power = Energia e bateria
|
xdg-entry-power = Energia e bateria
|
||||||
xdg-entry-appearance-keywords = COSMIC;Destaque;Accent;Cor;Ícone;Fonte;Tema
|
xdg-entry-appearance-keywords = COSMIC;Destaque;Accent;Cor;Ícone;Fonte;Tema
|
||||||
|
|
@ -855,7 +855,7 @@ xdg-entry-a11y-keywords = COSMIC;Acessibilidade;A11y;Tela;Leitor;Lupa;Ampliador;
|
||||||
xdg-entry-wireless-comment = Conexões Wi-Fi e perfis de conexão
|
xdg-entry-wireless-comment = Conexões Wi-Fi e perfis de conexão
|
||||||
xdg-entry-desktop = Área de trabalho
|
xdg-entry-desktop = Área de trabalho
|
||||||
xdg-entry-date-time-keywords = COSMIC;Hora;Fuso;
|
xdg-entry-date-time-keywords = COSMIC;Hora;Fuso;
|
||||||
xdg-entry-desktop-comment = Plano de fundo, aparência, painel, dock, gerenciamento de janelas e configurações de áreas de trabalho
|
xdg-entry-desktop-comment = Plano de fundo, aparência, painel, dock, gerenciamento de janelas e configurações de espaços de trabalho
|
||||||
xdg-entry-wallpaper = Plano de fundo
|
xdg-entry-wallpaper = Plano de fundo
|
||||||
xdg-entry-keyboard = Teclado
|
xdg-entry-keyboard = Teclado
|
||||||
xdg-entry-a11y-comment = Leitor de tela, ampliador de tela, alto contraste e filtros de cor
|
xdg-entry-a11y-comment = Leitor de tela, ampliador de tela, alto contraste e filtros de cor
|
||||||
|
|
@ -871,7 +871,7 @@ xdg-entry-wallpaper-comment = Imagens do plano de fundo, cores e opções de tra
|
||||||
xdg-entry-dock = Dock
|
xdg-entry-dock = Dock
|
||||||
xdg-entry-startup-apps = Aplicativos de Inicialização
|
xdg-entry-startup-apps = Aplicativos de Inicialização
|
||||||
xdg-entry-wireless = Wi-Fi
|
xdg-entry-wireless = Wi-Fi
|
||||||
xdg-entry-workspaces-keywords = COSMIC;Área;Espaço;Trabalho;Orientação;Visão;Geral;Monitor;Tela;
|
xdg-entry-workspaces-keywords = COSMIC;Espaço;Trabalho;Orientação;Visão;Geral;Monitor;Tela;
|
||||||
xdg-entry-system-comment = Informações do sistema, contas e atualizações de firmware
|
xdg-entry-system-comment = Informações do sistema, contas e atualizações de firmware
|
||||||
xdg-entry-x11-applications-comment = Escalonamento de aplicativos com sistema de janelas X11, tela primária e atalhos globais
|
xdg-entry-x11-applications-comment = Escalonamento de aplicativos com sistema de janelas X11, tela primária e atalhos globais
|
||||||
xdg-entry-region-language-comment = Formatação de datas, horas e números baseados em sua região
|
xdg-entry-region-language-comment = Formatação de datas, horas e números baseados em sua região
|
||||||
|
|
@ -898,14 +898,14 @@ xdg-entry-touchpad-comment = Velocidade do touchpad, opções do clique e gestos
|
||||||
xdg-entry-keyboard-keywords = COSMIC;Teclado;Entrada;Dispositivos;Atalhos;
|
xdg-entry-keyboard-keywords = COSMIC;Teclado;Entrada;Dispositivos;Atalhos;
|
||||||
xdg-entry-vpn-comment = Conexões VPN e perfis de conexão
|
xdg-entry-vpn-comment = Conexões VPN e perfis de conexão
|
||||||
xdg-entry-appearance = Aparência
|
xdg-entry-appearance = Aparência
|
||||||
xdg-entry-window-management-keywords = COSMIC;Janela;Gerenciamento;Tiling;Lado a lado;Super;Key;
|
xdg-entry-window-management-keywords = COSMIC;Janela;Gerenciamento;Tiling;Lado;Super;Tecla;
|
||||||
xdg-entry-workspaces-comment = Orientação da área de trabalho, visão geral e comportamento com monitores múltiplos
|
xdg-entry-workspaces-comment = Orientação dos espaços de trabalho, visão geral e comportamento com monitores múltiplos
|
||||||
xdg-entry-network-comment = Gerenciar conexões de rede
|
xdg-entry-network-comment = Gerenciar conexões de rede
|
||||||
xdg-entry-panel-comment = Barra de sistema primária para menus e miniaplicativos
|
xdg-entry-panel-comment = Barra de sistema primária para menus e miniaplicativos
|
||||||
xdg-entry-sound = Som
|
xdg-entry-sound = Som
|
||||||
xdg-entry-power-comment = Modos de energia e opções de economia de energia
|
xdg-entry-power-comment = Modos de energia e opções de economia de energia
|
||||||
xdg-entry-displays-keywords = COSMIC;Tela;Monitor;
|
xdg-entry-displays-keywords = COSMIC;Tela;Monitor;
|
||||||
xdg-entry-workspaces = Áreas de Trabalho
|
xdg-entry-workspaces = Espaços de trabalho
|
||||||
xdg-entry-date-time-comment = Fuso horário, configurações de relógio e formatação de hora
|
xdg-entry-date-time-comment = Fuso horário, configurações de relógio e formatação de hora
|
||||||
xdg-entry-x11-applications = Compatibilidade com aplicativos X11
|
xdg-entry-x11-applications = Compatibilidade com aplicativos X11
|
||||||
xdg-entry-window-management-comment = Ação da tecla Super, opções de controle de janela e opções de janelas lado a lado (tiling)
|
xdg-entry-window-management-comment = Ação da tecla Super, opções de controle de janela e opções de janelas lado a lado (tiling)
|
||||||
|
|
|
||||||
37
i18n/pt/cosmic_settings.ftl
vendored
37
i18n/pt/cosmic_settings.ftl
vendored
|
|
@ -54,7 +54,7 @@ xdg-entry-wired = Rede Cabeada
|
||||||
xdg-entry-wired-comment = Conexões de rede cabeada e perfis de conexão
|
xdg-entry-wired-comment = Conexões de rede cabeada e perfis de conexão
|
||||||
xdg-entry-wireless-comment = Conexões de rede sem fio e perfis de conexão
|
xdg-entry-wireless-comment = Conexões de rede sem fio e perfis de conexão
|
||||||
xdg-entry-workspaces = Áreas de Trabalho
|
xdg-entry-workspaces = Áreas de Trabalho
|
||||||
xdg-entry-workspaces-comment = Orientação e comportamento da área de trabalho
|
xdg-entry-workspaces-comment = Orientação das áreas de trabalho, visão geral e comportamento com vários monitores
|
||||||
xdg-entry-x11-applications = Compatibilidade com aplicativos X11.
|
xdg-entry-x11-applications = Compatibilidade com aplicativos X11.
|
||||||
xdg-entry-x11-applications-comment = Dimensionamento de aplicativos com sistema de janelas X11 e atalhos globais
|
xdg-entry-x11-applications-comment = Dimensionamento de aplicativos com sistema de janelas X11 e atalhos globais
|
||||||
|
|
||||||
|
|
@ -213,10 +213,10 @@ dock = Doca
|
||||||
|
|
||||||
window-management = Gestão de Janelas
|
window-management = Gestão de Janelas
|
||||||
.desc = Ação da tecla Super, opções de controlo de janelas, e opções adicionais de alinhamento de janelas.
|
.desc = Ação da tecla Super, opções de controlo de janelas, e opções adicionais de alinhamento de janelas.
|
||||||
super-key = Tecla Super
|
super-key = Ação da tecla Super
|
||||||
.launcher = Abrir Lançador
|
.launcher = Abrir lançador
|
||||||
.workspaces = Abrir Áreas de trabalho
|
.workspaces = Abrir áreas de trabalho
|
||||||
.applications = Abrir Aplicações
|
.applications = Abrir aplicações
|
||||||
.disable = Desativar
|
.disable = Desativar
|
||||||
window-controls = Controlos de janela
|
window-controls = Controlos de janela
|
||||||
.maximize = Mostrar o botão de maximizar
|
.maximize = Mostrar o botão de maximizar
|
||||||
|
|
@ -226,23 +226,22 @@ window-controls = Controlos de janela
|
||||||
## Desktop: Workspaces
|
## Desktop: Workspaces
|
||||||
|
|
||||||
workspaces = Áreas de trabalho
|
workspaces = Áreas de trabalho
|
||||||
.desc = Definir número, comportamento e posição da área de trabalho.
|
workspaces-behavior = Comportamento das áreas de trabalho
|
||||||
workspaces-behavior = Comportamento da área de trabalho
|
|
||||||
.dynamic = Áreas de trabalho dinâmicas
|
.dynamic = Áreas de trabalho dinâmicas
|
||||||
.dynamic-desc = Remove automaticamente áreas de trabalho vazias.
|
.dynamic-desc = Remove automaticamente áreas de trabalho vazias.
|
||||||
.fixed = Número fixo de áreas de trabalho
|
.fixed = Número fixo de áreas de trabalho
|
||||||
.fixed-desc = Adiciona ou remove áreas de trabalho na visão geral.
|
.fixed-desc = Adiciona ou remove áreas de trabalho na visão geral.
|
||||||
workspaces-multi-behavior = Comportamento de vários monitores
|
workspaces-multi-behavior = Comportamento de vários monitores
|
||||||
.span = Áreas de trabalho expandem os ecrãs
|
.span = Áreas de trabalho se expandem a todos os ecrãs
|
||||||
.separate = Ecrãs têm áreas de trabalho separadas
|
.separate = Ecrãs têm áreas de trabalho separadas
|
||||||
workspaces-overview-thumbnails = Miniaturas da visão geral da área de trabalho
|
workspaces-overview-thumbnails = Miniaturas da visão geral das áreas de trabalho
|
||||||
.show-number = Mostrar número da área de trabalho
|
.show-number = Mostrar o número da área de trabalho
|
||||||
.show-name = Mostrar nome da área de trabalho
|
.show-name = Mostrar o nome da área de trabalho
|
||||||
workspaces-orientation = Orientação das áreas de trabalho
|
workspaces-orientation = Orientação das áreas de trabalho
|
||||||
.vertical = Vertical
|
.vertical = Vertical
|
||||||
.horizontal = Horizontal
|
.horizontal = Horizontal
|
||||||
hot-corner = Canto ativo
|
hot-corner = Canto ativo
|
||||||
.top-left-corner = Ativar o canto superior esquerdo para as áreas de trabalho
|
.top-left-corner = Ativar o canto superior esquerdo para exibir as áreas de trabalho
|
||||||
|
|
||||||
## Desktop: Display
|
## Desktop: Display
|
||||||
|
|
||||||
|
|
@ -456,7 +455,7 @@ manage-windows = Gerir janelas
|
||||||
.resize-inwards = Redimensionar janela para dentro
|
.resize-inwards = Redimensionar janela para dentro
|
||||||
.resize-outwards = Redimensionar janela para fora
|
.resize-outwards = Redimensionar janela para fora
|
||||||
.toggle-sticky = Tornar janela fixa
|
.toggle-sticky = Tornar janela fixa
|
||||||
move-windows = Mover Janelas
|
move-windows = Mover janelas
|
||||||
.direction =
|
.direction =
|
||||||
Mover janela { $direction ->
|
Mover janela { $direction ->
|
||||||
*[down] para baixo
|
*[down] para baixo
|
||||||
|
|
@ -481,7 +480,7 @@ move-windows = Mover Janelas
|
||||||
.workspace-num = Mover janela para a área de trabalho { $num }
|
.workspace-num = Mover janela para a área de trabalho { $num }
|
||||||
.prev-workspace = Mover janela para a área de trabalho anterior
|
.prev-workspace = Mover janela para a área de trabalho anterior
|
||||||
.next-workspace = Mover janela para a área de trabalho seguinte
|
.next-workspace = Mover janela para a área de trabalho seguinte
|
||||||
.last-workspace = Mover janela para a última área de trabalho
|
.last-workspace = Mover janela para o última área de trabalho
|
||||||
.next-display = Mover janela para o ecrã seguinte
|
.next-display = Mover janela para o ecrã seguinte
|
||||||
.prev-display = Mover janela para o ecrã anterior
|
.prev-display = Mover janela para o ecrã anterior
|
||||||
.send-to-prev-workspace = Mover janela para a área de trabalho anterior
|
.send-to-prev-workspace = Mover janela para a área de trabalho anterior
|
||||||
|
|
@ -504,8 +503,9 @@ system-shortcut = Sistema
|
||||||
.play-prev = Faixa anterior
|
.play-prev = Faixa anterior
|
||||||
.poweroff = Desligar
|
.poweroff = Desligar
|
||||||
.screenshot = Tirar uma captura de ecrã
|
.screenshot = Tirar uma captura de ecrã
|
||||||
|
.suspend = Suspender
|
||||||
.terminal = Abrir o terminal
|
.terminal = Abrir o terminal
|
||||||
.touchpad-toggle = Ativar painel tátil
|
.touchpad-toggle = Ativar ou desativar o painel tátil
|
||||||
.volume-lower = Diminuir o volume da saída do áudio
|
.volume-lower = Diminuir o volume da saída do áudio
|
||||||
.volume-raise = Aumentar o volume da saída do áudio
|
.volume-raise = Aumentar o volume da saída do áudio
|
||||||
.web-browser = Abrir um navegador de Internet
|
.web-browser = Abrir um navegador de Internet
|
||||||
|
|
@ -852,3 +852,10 @@ full-name = Nome completo
|
||||||
invalid-username = Nome de utilizador inválido.
|
invalid-username = Nome de utilizador inválido.
|
||||||
password-mismatch = A palavra-passe e a confirmação devem ser iguais.
|
password-mismatch = A palavra-passe e a confirmação devem ser iguais.
|
||||||
save = Guardar
|
save = Guardar
|
||||||
|
xdg-entry-desktop-comment = Papel de parede, aparência, painel, doca, gestão de janelas e definições de áreas de trabalho
|
||||||
|
xdg-entry-workspaces-keywords = COSMIC;Área;Trabalho;Orientação;Visão;Geral;Monitor;Ecrã;
|
||||||
|
workspaces-overview = Visão geral das áreas de trabalho
|
||||||
|
.action-on-typing = Ação ao digitar
|
||||||
|
.none = Nenhuma
|
||||||
|
.launcher = Abrir lançador
|
||||||
|
.applications = Abrir aplicações
|
||||||
|
|
|
||||||
620
i18n/zh-TW/cosmic_settings.ftl
vendored
620
i18n/zh-TW/cosmic_settings.ftl
vendored
File diff suppressed because it is too large
Load diff
|
|
@ -40,7 +40,7 @@ pub struct Section<Message> {
|
||||||
pub search_ignore: bool,
|
pub search_ignore: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<Message: 'static> Default for Section<Message> {
|
impl<Message: Clone + 'static> Default for Section<Message> {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self {
|
Self {
|
||||||
title: String::new(),
|
title: String::new(),
|
||||||
|
|
@ -120,7 +120,7 @@ impl<Message: Clone + 'static> Section<Message> {
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn unimplemented<'a, Message: 'static>(
|
pub fn unimplemented<'a, Message: Clone + 'static>(
|
||||||
_binder: &'a Binder<Message>,
|
_binder: &'a Binder<Message>,
|
||||||
_page: &'a dyn Page<Message>,
|
_page: &'a dyn Page<Message>,
|
||||||
_section: &'a Section<Message>,
|
_section: &'a Section<Message>,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue