Compare commits
13 commits
fc630ae795
...
29ed971e64
| Author | SHA1 | Date | |
|---|---|---|---|
| 29ed971e64 | |||
|
|
fffa4f26cb | ||
|
|
2c2dc485aa | ||
|
|
98bc6ee32e | ||
|
|
d5da6a476d | ||
|
|
6a9b711a22 | ||
|
|
50f85d0f2d | ||
|
|
6612193d74 | ||
|
|
81f973cb26 | ||
|
|
72f366d8db | ||
|
|
c7481ba336 | ||
|
|
6e5b09c0d7 | ||
|
|
2b43c925a0 |
38 changed files with 989 additions and 651 deletions
1257
Cargo.lock
generated
1257
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
32
cargo.just
32
cargo.just
|
|
@ -1,20 +1,25 @@
|
||||||
cargo-target-dir := env('CARGO_TARGET_DIR', 'target')
|
cargo-target-dir := env('CARGO_TARGET_DIR', 'target')
|
||||||
|
|
||||||
# Compile with debug profile
|
# Compile with debug profile
|
||||||
|
[no-cd]
|
||||||
build-debug *args:
|
build-debug *args:
|
||||||
cargo build {{ args }}
|
cargo build {{args}}
|
||||||
|
|
||||||
# Compile with release profile
|
# Compile with release profile
|
||||||
|
[no-cd]
|
||||||
build-release *args: (build-debug '--release' args)
|
build-release *args: (build-debug '--release' args)
|
||||||
|
|
||||||
# Compile with a vendored tarball
|
# Compile with a vendored tarball
|
||||||
|
[no-cd]
|
||||||
build-vendored *args: vendor-extract (build-release '--frozen --offline' args)
|
build-vendored *args: vendor-extract (build-release '--frozen --offline' args)
|
||||||
|
|
||||||
# Check for errors and linter warnings
|
# Check for errors and linter warnings
|
||||||
|
[no-cd]
|
||||||
check *args:
|
check *args:
|
||||||
cargo clippy --all-features {{ args }} -- -W clippy::pedantic
|
cargo clippy --all-features {{args}} -- -W clippy::pedantic
|
||||||
|
|
||||||
# Runs a check with JSON message format for IDE integration
|
# Runs a check with JSON message format for IDE integration
|
||||||
|
[no-cd]
|
||||||
check-json: (check '--message-format=json')
|
check-json: (check '--message-format=json')
|
||||||
|
|
||||||
# Remove Cargo build artifacts
|
# Remove Cargo build artifacts
|
||||||
|
|
@ -28,25 +33,38 @@ clean-dist: clean
|
||||||
rm -rf .cargo vendor vendor.tar target
|
rm -rf .cargo vendor vendor.tar target
|
||||||
|
|
||||||
# Run the application for testing purposes
|
# Run the application for testing purposes
|
||||||
|
[no-cd]
|
||||||
run *args:
|
run *args:
|
||||||
env RUST_LOG=debug RUST_BACKTRACE=full cargo run {{ args }} --release
|
cargo run {{args}}
|
||||||
|
|
||||||
# Run `cargo test`
|
# Run `cargo test`
|
||||||
|
[no-cd]
|
||||||
test *args:
|
test *args:
|
||||||
cargo test {{ args }}
|
cargo test {{args}}
|
||||||
|
|
||||||
# Vendor Cargo dependencies locally
|
# Vendor Cargo dependencies locally
|
||||||
[no-cd]
|
[no-cd]
|
||||||
vendor:
|
vendor:
|
||||||
|
#!/usr/bin/env bash
|
||||||
mkdir -p .cargo
|
mkdir -p .cargo
|
||||||
cargo vendor --locked | head -n -1 > .cargo/config.toml
|
cargo vendor --locked | head -n -1 > .cargo/config.toml
|
||||||
echo 'directory = "vendor"' >> .cargo/config.toml
|
echo 'directory = "vendor"' >> .cargo/config.toml
|
||||||
tar pcf vendor.tar vendor
|
echo >> .cargo/config.toml
|
||||||
rm -rf vendor
|
echo '[env]' >> .cargo/config.toml
|
||||||
|
if [ -n "${SOURCE_DATE_EPOCH}" ]
|
||||||
|
then
|
||||||
|
source_date="$(date -d "@${SOURCE_DATE_EPOCH}" "+%Y-%m-%d")"
|
||||||
|
echo "VERGEN_GIT_COMMIT_DATE = \"${source_date}\"" >> .cargo/config.toml
|
||||||
|
fi
|
||||||
|
if [ -n "${SOURCE_GIT_HASH}" ]
|
||||||
|
then
|
||||||
|
echo "VERGEN_GIT_SHA = \"${SOURCE_GIT_HASH}\"" >> .cargo/config.toml
|
||||||
|
fi
|
||||||
|
tar pcf vendor.tar .cargo vendor
|
||||||
|
rm -rf .cargo vendor
|
||||||
|
|
||||||
# Extracts vendored dependencies
|
# Extracts vendored dependencies
|
||||||
[no-cd]
|
[no-cd]
|
||||||
[private]
|
|
||||||
vendor-extract:
|
vendor-extract:
|
||||||
rm -rf vendor
|
rm -rf vendor
|
||||||
tar pxf vendor.tar
|
tar pxf vendor.tar
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "cosmic-settings"
|
name = "cosmic-settings"
|
||||||
version = "1.5.0"
|
version = "1.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "GPL-3.0-only"
|
license = "GPL-3.0-only"
|
||||||
publish = false
|
publish = false
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ use cosmic::iced::stream;
|
||||||
use cosmic::theme::CosmicTheme;
|
use cosmic::theme::CosmicTheme;
|
||||||
use cosmic::widget::{dropdown, settings, text};
|
use cosmic::widget::{dropdown, settings, text};
|
||||||
use cosmic::{Apply, Element, Task, surface};
|
use cosmic::{Apply, Element, Task, surface};
|
||||||
|
use cosmic_comp_config::CosmicCompConfig;
|
||||||
pub use cosmic_comp_config::ZoomMovement;
|
pub use cosmic_comp_config::ZoomMovement;
|
||||||
use cosmic_config::CosmicConfigEntry;
|
use cosmic_config::CosmicConfigEntry;
|
||||||
use cosmic_settings_a11y_manager_subscription as cosmic_a11y_manager;
|
use cosmic_settings_a11y_manager_subscription as cosmic_a11y_manager;
|
||||||
|
|
@ -36,11 +37,21 @@ pub struct Page {
|
||||||
daemon_helper: cosmic_config::Config,
|
daemon_helper: cosmic_config::Config,
|
||||||
dbus_sender: Option<UnboundedSender<a11y_bus::Request>>,
|
dbus_sender: Option<UnboundedSender<a11y_bus::Request>>,
|
||||||
reader_enabled: bool,
|
reader_enabled: bool,
|
||||||
|
comp_config: CosmicCompConfig,
|
||||||
|
comp_helper: cosmic_config::Config,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Page {
|
impl Default for Page {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
let daemon_helper = CosmicSettingsDaemonConfig::config().unwrap();
|
let daemon_helper = CosmicSettingsDaemonConfig::config().unwrap();
|
||||||
|
let comp_helper = cosmic_config::Config::new("com.system76.CosmicComp", 1).unwrap();
|
||||||
|
let comp_config =
|
||||||
|
CosmicCompConfig::get_entry(&comp_helper).unwrap_or_else(|(errs, config)| {
|
||||||
|
for err in errs {
|
||||||
|
tracing::warn!(?err, "error while reading cosmic-comp config");
|
||||||
|
}
|
||||||
|
config
|
||||||
|
});
|
||||||
Page {
|
Page {
|
||||||
dbus_sender: None,
|
dbus_sender: None,
|
||||||
entity: page::Entity::default(),
|
entity: page::Entity::default(),
|
||||||
|
|
@ -65,6 +76,8 @@ impl Default for Page {
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
daemon_helper,
|
daemon_helper,
|
||||||
reader_enabled: false,
|
reader_enabled: false,
|
||||||
|
comp_config,
|
||||||
|
comp_helper,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -77,6 +90,7 @@ pub enum Message {
|
||||||
ProtocolUnavailable,
|
ProtocolUnavailable,
|
||||||
Return,
|
Return,
|
||||||
ScreenReaderEnabled(bool),
|
ScreenReaderEnabled(bool),
|
||||||
|
SetCursorShakeToFind(bool),
|
||||||
SetScreenFilterActive(bool),
|
SetScreenFilterActive(bool),
|
||||||
SetScreenFilterSelection(ColorFilter),
|
SetScreenFilterSelection(ColorFilter),
|
||||||
SetScreenInverted(bool),
|
SetScreenInverted(bool),
|
||||||
|
|
@ -187,6 +201,8 @@ pub fn vision() -> section::Section<crate::pages::Message> {
|
||||||
invert_colors = fl!("accessibility", "invert-colors");
|
invert_colors = fl!("accessibility", "invert-colors");
|
||||||
color_filters = fl!("accessibility", "color-filters");
|
color_filters = fl!("accessibility", "color-filters");
|
||||||
color_filter_type = fl!("color-filter");
|
color_filter_type = fl!("color-filter");
|
||||||
|
shake_cursor = fl!("accessibility", "shake-cursor");
|
||||||
|
shake_cursor_desc = fl!("accessibility", "shake-cursor-desc");
|
||||||
});
|
});
|
||||||
|
|
||||||
Section::default()
|
Section::default()
|
||||||
|
|
@ -276,6 +292,13 @@ pub fn vision() -> section::Section<crate::pages::Message> {
|
||||||
|
|
||||||
settings::item::builder(&descriptions[color_filter_type]).control(dropdown)
|
settings::item::builder(&descriptions[color_filter_type]).control(dropdown)
|
||||||
})
|
})
|
||||||
|
.add(
|
||||||
|
settings::item::builder(&descriptions[shake_cursor])
|
||||||
|
.description(&descriptions[shake_cursor_desc])
|
||||||
|
.toggler(page.comp_config.cursor_shake_to_find, |enabled| {
|
||||||
|
Message::SetCursorShakeToFind(enabled).into()
|
||||||
|
}),
|
||||||
|
)
|
||||||
.into()
|
.into()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -416,6 +439,14 @@ impl Page {
|
||||||
Message::Surface(a) => {
|
Message::Surface(a) => {
|
||||||
return cosmic::task::message(crate::app::Message::Surface(a));
|
return cosmic::task::message(crate::app::Message::Surface(a));
|
||||||
}
|
}
|
||||||
|
Message::SetCursorShakeToFind(enabled) => {
|
||||||
|
if let Err(err) = self
|
||||||
|
.comp_config
|
||||||
|
.set_cursor_shake_to_find(&self.comp_helper, enabled)
|
||||||
|
{
|
||||||
|
tracing::error!(?err, "failed to set cursor_shake_to_find");
|
||||||
|
}
|
||||||
|
}
|
||||||
Message::SetSoundMono(active) => {
|
Message::SetSoundMono(active) => {
|
||||||
if let Err(err) = self
|
if let Err(err) = self
|
||||||
.daemon_config
|
.daemon_config
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ use futures::channel::oneshot;
|
||||||
use futures::{SinkExt, StreamExt};
|
use futures::{SinkExt, StreamExt};
|
||||||
use slotmap::SlotMap;
|
use slotmap::SlotMap;
|
||||||
use std::collections::{HashMap, HashSet};
|
use std::collections::{HashMap, HashSet};
|
||||||
use std::sync::Arc;
|
use std::sync::{Arc, LazyLock};
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use zbus::zvariant::OwnedObjectPath;
|
use zbus::zvariant::OwnedObjectPath;
|
||||||
|
|
||||||
|
|
@ -20,6 +20,8 @@ use zbus::zvariant::OwnedObjectPath;
|
||||||
use crate::service_manager::MockServiceManager;
|
use crate::service_manager::MockServiceManager;
|
||||||
use crate::service_manager::ServiceManagerHandle;
|
use crate::service_manager::ServiceManagerHandle;
|
||||||
|
|
||||||
|
static BLUETOOTH_PAGE_LABEL: LazyLock<String> = LazyLock::new(|| fl!("bluetooth"));
|
||||||
|
|
||||||
enum Dialog {
|
enum Dialog {
|
||||||
RequestConfirmation {
|
RequestConfirmation {
|
||||||
device: String,
|
device: String,
|
||||||
|
|
@ -173,6 +175,19 @@ impl page::Page<crate::pages::Message> for Page {
|
||||||
.description(fl!("xdg-entry-bluetooth-comment"))
|
.description(fl!("xdg-entry-bluetooth-comment"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn header(&self) -> Option<Element<'_, crate::pages::Message>> {
|
||||||
|
if self.model.adapters.len() > 1 {
|
||||||
|
let (_, adapter) = self.model.get_selected_adapter()?;
|
||||||
|
return Some(crate::widget::sub_page_header(
|
||||||
|
&adapter.alias,
|
||||||
|
BLUETOOTH_PAGE_LABEL.as_str(),
|
||||||
|
Message::SelectAdapter(None).into(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
fn content(
|
fn content(
|
||||||
&self,
|
&self,
|
||||||
sections: &mut SlotMap<section::Entity, Section<crate::pages::Message>>,
|
sections: &mut SlotMap<section::Entity, Section<crate::pages::Message>>,
|
||||||
|
|
@ -392,6 +407,30 @@ impl From<Event> for Message {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Page {
|
impl Page {
|
||||||
|
fn update_heading(&mut self) {
|
||||||
|
self.heading = if let Some((_, adapter)) = self.model.get_selected_adapter() {
|
||||||
|
fl!(
|
||||||
|
"bluetooth",
|
||||||
|
"status",
|
||||||
|
aliases = format!("“{}”", adapter.alias)
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
fl!(
|
||||||
|
"bluetooth",
|
||||||
|
"status",
|
||||||
|
aliases = self
|
||||||
|
.model
|
||||||
|
.adapters
|
||||||
|
.values()
|
||||||
|
.map(|adapter| format!("“{}”", adapter.alias))
|
||||||
|
.collect::<HashSet<String>>()
|
||||||
|
.into_iter()
|
||||||
|
.collect::<Vec<String>>()
|
||||||
|
.join(", ")
|
||||||
|
)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
pub fn update(&mut self, message: Message) -> cosmic::Task<crate::Message> {
|
pub fn update(&mut self, message: Message) -> cosmic::Task<crate::Message> {
|
||||||
let span = tracing::span!(tracing::Level::INFO, "bluetooth::update");
|
let span = tracing::span!(tracing::Level::INFO, "bluetooth::update");
|
||||||
let _span = span.enter();
|
let _span = span.enter();
|
||||||
|
|
@ -437,28 +476,7 @@ impl Page {
|
||||||
|
|
||||||
Event::SetAdapters(adapters) => {
|
Event::SetAdapters(adapters) => {
|
||||||
let select_adapter = self.model.set_adapters(adapters);
|
let select_adapter = self.model.set_adapters(adapters);
|
||||||
|
self.update_heading();
|
||||||
if let Some((_, adapter)) = self.model.get_selected_adapter() {
|
|
||||||
self.heading = fl!(
|
|
||||||
"bluetooth",
|
|
||||||
"status",
|
|
||||||
aliases = format!("“{}”", adapter.alias)
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
self.heading = fl!(
|
|
||||||
"bluetooth",
|
|
||||||
"status",
|
|
||||||
aliases = self
|
|
||||||
.model
|
|
||||||
.adapters
|
|
||||||
.values()
|
|
||||||
.map(|adapter| format!("“{}”", adapter.alias))
|
|
||||||
.collect::<HashSet<String>>()
|
|
||||||
.into_iter()
|
|
||||||
.collect::<Vec<String>>()
|
|
||||||
.join(", ")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if let Some(adapter) = select_adapter {
|
if let Some(adapter) = select_adapter {
|
||||||
return cosmic::task::message(Message::SelectAdapter(Some(adapter)));
|
return cosmic::task::message(Message::SelectAdapter(Some(adapter)));
|
||||||
|
|
@ -741,6 +759,7 @@ impl Page {
|
||||||
Message::SelectAdapter(adapter_maybe) => {
|
Message::SelectAdapter(adapter_maybe) => {
|
||||||
tracing::debug!("Adapter selected: {adapter_maybe:?}");
|
tracing::debug!("Adapter selected: {adapter_maybe:?}");
|
||||||
self.model.selected_adapter = adapter_maybe;
|
self.model.selected_adapter = adapter_maybe;
|
||||||
|
self.update_heading();
|
||||||
self.model.update_status();
|
self.model.update_status();
|
||||||
let Some(connection) = self.connection.as_ref() else {
|
let Some(connection) = self.connection.as_ref() else {
|
||||||
tracing::error!("No DBus connection ready");
|
tracing::error!("No DBus connection ready");
|
||||||
|
|
@ -1158,6 +1177,51 @@ impl Page {
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use cosmic_settings_page::Page as _;
|
||||||
|
|
||||||
|
fn adapter(path: &str, alias: &str) -> (OwnedObjectPath, Adapter) {
|
||||||
|
(
|
||||||
|
OwnedObjectPath::try_from(path).unwrap(),
|
||||||
|
Adapter {
|
||||||
|
alias: alias.to_owned(),
|
||||||
|
..Adapter::default()
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn page_with_two_adapters() -> Page {
|
||||||
|
let mut page = Page::default();
|
||||||
|
let adapters = [
|
||||||
|
adapter("/org/bluez/hci0", "Adapter 0"),
|
||||||
|
adapter("/org/bluez/hci1", "Adapter 1"),
|
||||||
|
]
|
||||||
|
.into_iter()
|
||||||
|
.collect();
|
||||||
|
let _task = page.update(Message::BluetoothEvent(Event::SetAdapters(adapters)));
|
||||||
|
page
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn bluetooth_header_is_absent_at_adapter_chooser() {
|
||||||
|
let page = page_with_two_adapters();
|
||||||
|
|
||||||
|
assert!(page.header().is_none());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn bluetooth_header_tracks_adapter_selection_and_clearing() {
|
||||||
|
let mut page = page_with_two_adapters();
|
||||||
|
let selected = OwnedObjectPath::try_from("/org/bluez/hci1").unwrap();
|
||||||
|
|
||||||
|
let _task = page.update(Message::SelectAdapter(Some(selected)));
|
||||||
|
assert!(page.header().is_some());
|
||||||
|
assert!(page.heading.contains("Adapter 1"));
|
||||||
|
|
||||||
|
let _task = page.update(Message::SelectAdapter(None));
|
||||||
|
assert!(page.header().is_none());
|
||||||
|
assert!(page.heading.contains("Adapter 0"));
|
||||||
|
assert!(page.heading.contains("Adapter 1"));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_dbus_service_unknown_with_installed_service_queries_manager() {
|
fn test_dbus_service_unknown_with_installed_service_queries_manager() {
|
||||||
|
|
|
||||||
|
|
@ -1103,6 +1103,12 @@ impl Page {
|
||||||
.arg(itoa::Buffer::new().format(x))
|
.arg(itoa::Buffer::new().format(x))
|
||||||
.arg("--pos-y")
|
.arg("--pos-y")
|
||||||
.arg(itoa::Buffer::new().format(y))
|
.arg(itoa::Buffer::new().format(y))
|
||||||
|
.arg("--refresh")
|
||||||
|
.arg(format!(
|
||||||
|
"{}.{:03}",
|
||||||
|
current.refresh_rate / 1000,
|
||||||
|
current.refresh_rate % 1000
|
||||||
|
))
|
||||||
.arg(name)
|
.arg(name)
|
||||||
.arg(itoa::Buffer::new().format(current.size.0))
|
.arg(itoa::Buffer::new().format(current.size.0))
|
||||||
.arg(itoa::Buffer::new().format(current.size.1));
|
.arg(itoa::Buffer::new().format(current.size.1));
|
||||||
|
|
|
||||||
|
|
@ -118,8 +118,8 @@ pub enum SourceContext {
|
||||||
MoveDown(DefaultKey),
|
MoveDown(DefaultKey),
|
||||||
MoveUp(DefaultKey),
|
MoveUp(DefaultKey),
|
||||||
Remove(DefaultKey),
|
Remove(DefaultKey),
|
||||||
Settings(DefaultKey),
|
// Settings(DefaultKey),
|
||||||
ViewLayout(DefaultKey),
|
// ViewLayout(DefaultKey),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type Locale = String;
|
pub type Locale = String;
|
||||||
|
|
@ -211,6 +211,7 @@ fn popover_menu_row(
|
||||||
id: DefaultKey,
|
id: DefaultKey,
|
||||||
label: String,
|
label: String,
|
||||||
message: impl Fn(DefaultKey) -> SourceContext + 'static,
|
message: impl Fn(DefaultKey) -> SourceContext + 'static,
|
||||||
|
disabled: bool,
|
||||||
) -> cosmic::Element<'static, Message> {
|
) -> cosmic::Element<'static, Message> {
|
||||||
let spacing = theme::spacing();
|
let spacing = theme::spacing();
|
||||||
widget::text::body(label)
|
widget::text::body(label)
|
||||||
|
|
@ -219,37 +220,54 @@ fn popover_menu_row(
|
||||||
.padding([spacing.space_xxxs, spacing.space_xs])
|
.padding([spacing.space_xxxs, spacing.space_xs])
|
||||||
.width(Length::Fill)
|
.width(Length::Fill)
|
||||||
.class(theme::Button::MenuItem)
|
.class(theme::Button::MenuItem)
|
||||||
.on_press(Message::SourceContext(message(id)))
|
.on_press_maybe(if disabled {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
Some(Message::SourceContext(message(id)))
|
||||||
|
})
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn popover_menu(id: DefaultKey) -> cosmic::Element<'static, Message> {
|
fn popover_menu(
|
||||||
|
id: DefaultKey,
|
||||||
|
is_first: bool,
|
||||||
|
is_last: bool,
|
||||||
|
) -> cosmic::Element<'static, Message> {
|
||||||
widget::column::with_children([
|
widget::column::with_children([
|
||||||
popover_menu_row(
|
popover_menu_row(
|
||||||
id,
|
id,
|
||||||
fl!("keyboard-sources", "move-up"),
|
fl!("keyboard-sources", "move-up"),
|
||||||
SourceContext::MoveUp,
|
SourceContext::MoveUp,
|
||||||
|
is_first,
|
||||||
),
|
),
|
||||||
popover_menu_row(
|
popover_menu_row(
|
||||||
id,
|
id,
|
||||||
fl!("keyboard-sources", "move-down"),
|
fl!("keyboard-sources", "move-down"),
|
||||||
SourceContext::MoveDown,
|
SourceContext::MoveDown,
|
||||||
|
is_last,
|
||||||
),
|
),
|
||||||
widget::divider::horizontal::default()
|
widget::divider::horizontal::default()
|
||||||
.apply(widget::container)
|
.apply(widget::container)
|
||||||
.padding(8)
|
.padding(8)
|
||||||
.into(),
|
.into(),
|
||||||
|
// popover_menu_row(
|
||||||
|
// id,
|
||||||
|
// fl!("keyboard-sources", "settings"),
|
||||||
|
// SourceContext::Settings,
|
||||||
|
// false,
|
||||||
|
// ),
|
||||||
|
// popover_menu_row(
|
||||||
|
// id,
|
||||||
|
// fl!("keyboard-sources", "view-layout"),
|
||||||
|
// SourceContext::ViewLayout,
|
||||||
|
// false,
|
||||||
|
// ),
|
||||||
popover_menu_row(
|
popover_menu_row(
|
||||||
id,
|
id,
|
||||||
fl!("keyboard-sources", "settings"),
|
fl!("keyboard-sources", "remove"),
|
||||||
SourceContext::Settings,
|
SourceContext::Remove,
|
||||||
|
false,
|
||||||
),
|
),
|
||||||
popover_menu_row(
|
|
||||||
id,
|
|
||||||
fl!("keyboard-sources", "view-layout"),
|
|
||||||
SourceContext::ViewLayout,
|
|
||||||
),
|
|
||||||
popover_menu_row(id, fl!("keyboard-sources", "remove"), SourceContext::Remove),
|
|
||||||
])
|
])
|
||||||
.width(Length::Fixed(200.0))
|
.width(Length::Fixed(200.0))
|
||||||
.apply(widget::container)
|
.apply(widget::container)
|
||||||
|
|
@ -258,7 +276,12 @@ fn popover_menu(id: DefaultKey) -> cosmic::Element<'static, Message> {
|
||||||
.into()
|
.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn popover_button(id: DefaultKey, expanded: bool) -> cosmic::Element<'static, Message> {
|
fn popover_button(
|
||||||
|
id: DefaultKey,
|
||||||
|
expanded: bool,
|
||||||
|
is_first: bool,
|
||||||
|
is_last: bool,
|
||||||
|
) -> cosmic::Element<'static, Message> {
|
||||||
let on_press = Message::ExpandInputSourcePopover(if expanded { None } else { Some(id) });
|
let on_press = Message::ExpandInputSourcePopover(if expanded { None } else { Some(id) });
|
||||||
|
|
||||||
let button = button::icon(icon::from_name("view-more-symbolic"))
|
let button = button::icon(icon::from_name("view-more-symbolic"))
|
||||||
|
|
@ -268,7 +291,7 @@ fn popover_button(id: DefaultKey, expanded: bool) -> cosmic::Element<'static, Me
|
||||||
if expanded {
|
if expanded {
|
||||||
widget::popover(button)
|
widget::popover(button)
|
||||||
.position(widget::popover::Position::Bottom)
|
.position(widget::popover::Position::Bottom)
|
||||||
.popup(popover_menu(id))
|
.popup(popover_menu(id, is_first, is_last))
|
||||||
.on_close(Message::ExpandInputSourcePopover(None))
|
.on_close(Message::ExpandInputSourcePopover(None))
|
||||||
.into()
|
.into()
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -280,10 +303,12 @@ fn input_source(
|
||||||
id: DefaultKey,
|
id: DefaultKey,
|
||||||
description: &str,
|
description: &str,
|
||||||
expanded_source_popover: Option<DefaultKey>,
|
expanded_source_popover: Option<DefaultKey>,
|
||||||
|
is_first: bool,
|
||||||
|
is_last: bool,
|
||||||
) -> cosmic::Element<'_, Message> {
|
) -> cosmic::Element<'_, Message> {
|
||||||
let expanded = expanded_source_popover.is_some_and(|expanded_id| expanded_id == id);
|
let expanded = expanded_source_popover.is_some_and(|expanded_id| expanded_id == id);
|
||||||
|
|
||||||
settings::item(description, popover_button(id, expanded)).into()
|
settings::item(description, popover_button(id, expanded, is_first, is_last)).into()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn special_char_radio_row<'a>(
|
fn special_char_radio_row<'a>(
|
||||||
|
|
@ -521,15 +546,13 @@ impl Page {
|
||||||
let _removed = self.active_layouts.remove(pos);
|
let _removed = self.active_layouts.remove(pos);
|
||||||
self.update_xkb_config();
|
self.update_xkb_config();
|
||||||
}
|
}
|
||||||
}
|
} // SourceContext::Settings(_id) => {
|
||||||
|
// eprintln!("settings not implemented");
|
||||||
|
// }
|
||||||
|
|
||||||
SourceContext::Settings(_id) => {
|
// SourceContext::ViewLayout(_id) => {
|
||||||
eprintln!("settings not implemented");
|
// eprintln!("view layout not implemented");
|
||||||
}
|
// }
|
||||||
|
|
||||||
SourceContext::ViewLayout(_id) => {
|
|
||||||
eprintln!("view layout not implemented");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -747,12 +770,17 @@ fn input_sources() -> Section<crate::pages::Message> {
|
||||||
// TODO Need something more custom, with drag and drop
|
// TODO Need something more custom, with drag and drop
|
||||||
let mut section = settings::section().title(§ion.title);
|
let mut section = settings::section().title(§ion.title);
|
||||||
|
|
||||||
for id in &page.active_layouts {
|
for (position, id) in page.active_layouts.iter().enumerate() {
|
||||||
if let Some((_locale, _variant, description, _source)) =
|
if let Some((_locale, _variant, description, _source)) =
|
||||||
page.keyboard_layouts.get(*id)
|
page.keyboard_layouts.get(*id)
|
||||||
{
|
{
|
||||||
section =
|
section = section.add(input_source(
|
||||||
section.add(input_source(*id, description, page.expanded_source_popover));
|
*id,
|
||||||
|
description,
|
||||||
|
page.expanded_source_popover,
|
||||||
|
position == 0,
|
||||||
|
position + 1 == page.active_layouts.len(),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
6
debian/changelog
vendored
6
debian/changelog
vendored
|
|
@ -1,3 +1,9 @@
|
||||||
|
cosmic-settings (1.7.0) noble; urgency=medium
|
||||||
|
|
||||||
|
* Epoch 1.7.0 version update
|
||||||
|
|
||||||
|
-- Michael Murphy <michael@mmurphy.dev> Fri, 21 Aug 2026 20:44:57 +0200
|
||||||
|
|
||||||
cosmic-settings (1.0.12) noble; urgency=medium
|
cosmic-settings (1.0.12) noble; urgency=medium
|
||||||
|
|
||||||
* release: 1.0.12
|
* release: 1.0.12
|
||||||
|
|
|
||||||
6
debian/source/options
vendored
6
debian/source/options
vendored
|
|
@ -1,4 +1,6 @@
|
||||||
tar-ignore=.github
|
tar-ignore=.github
|
||||||
tar-ignore=.vscode
|
tar-ignore=target/.rustc_info.json
|
||||||
|
tar-ignore=target/CACHEDIR.TAG
|
||||||
|
tar-ignore=target/debug
|
||||||
|
tar-ignore=target/release
|
||||||
tar-ignore=vendor
|
tar-ignore=vendor
|
||||||
tar-ignore=target
|
|
||||||
31
i18n/cs/cosmic_settings.ftl
vendored
31
i18n/cs/cosmic_settings.ftl
vendored
|
|
@ -86,10 +86,10 @@ dock = Dok
|
||||||
## Desktop: Panel
|
## Desktop: Panel
|
||||||
|
|
||||||
panel = Panel
|
panel = Panel
|
||||||
panel-behavior-and-position = Chování a pozice
|
panel-behavior-and-position = Chování a umístění
|
||||||
.autohide = Automaticky skrýt panel
|
.autohide = Automaticky skrýt panel
|
||||||
.dock-autohide = Automaticky skrýt dok
|
.dock-autohide = Automaticky skrýt dok
|
||||||
.position = Pozice na obrazovce
|
.position = Umístění na obrazovce
|
||||||
.display = Zobrazit na obrazovce
|
.display = Zobrazit na obrazovce
|
||||||
panel-top = Nahoře
|
panel-top = Nahoře
|
||||||
panel-bottom = Dole
|
panel-bottom = Dole
|
||||||
|
|
@ -215,7 +215,8 @@ sound-alerts = Upozornění
|
||||||
.volume = Hlasitost upozornění
|
.volume = Hlasitost upozornění
|
||||||
.sound = Zvuk pro upozornění
|
.sound = Zvuk pro upozornění
|
||||||
sound-applications = Aplikace
|
sound-applications = Aplikace
|
||||||
.desc = Hlasitosti aplikací a nastavení
|
.desc = Hlasitosti a nastavení aplikací
|
||||||
|
.none = Žádné aplikace nepoužívají zvuk
|
||||||
|
|
||||||
## System
|
## System
|
||||||
|
|
||||||
|
|
@ -369,8 +370,10 @@ accessibility = Přístupnost
|
||||||
.unavailable = Nedostupné
|
.unavailable = Nedostupné
|
||||||
.screen-reader = Čtečka obrazovky
|
.screen-reader = Čtečka obrazovky
|
||||||
.high-contrast = Vysoký kontrast
|
.high-contrast = Vysoký kontrast
|
||||||
.invert-colors = Převrátit barvy
|
.invert-colors = Inverze barev
|
||||||
.color-filters = Barevné filtry
|
.color-filters = Barevné filtry
|
||||||
|
.shake-cursor = Nalezení ukazatele zatřesením
|
||||||
|
.shake-cursor-desc = Rychlým zatřesením myší se ukazatel dočasně zvětší
|
||||||
hearing = Sluch
|
hearing = Sluch
|
||||||
.mono = Přehrávat stereo zvuk jako mono
|
.mono = Přehrávat stereo zvuk jako mono
|
||||||
default = Výchozí
|
default = Výchozí
|
||||||
|
|
@ -462,13 +465,13 @@ container-background = Pozadí kontejneru
|
||||||
control-tint = Odstín ovládacích prvků
|
control-tint = Odstín ovládacích prvků
|
||||||
.desc = Používá se pro pozadí standardních tlačítek, vyhledávacích polí, textových vstupů a podobných komponent
|
.desc = Používá se pro pozadí standardních tlačítek, vyhledávacích polí, textových vstupů a podobných komponent
|
||||||
frosted = Efekt ledového skla na systémovém rozhraní
|
frosted = Efekt ledového skla na systémovém rozhraní
|
||||||
.desc = Použije rozmazané pozadí pro panel, dok, applety, spouštěč a knihovnu aplikací
|
.desc = Použít rozmazané pozadí pro panel, dok, applety, spouštěč a knihovnu aplikací
|
||||||
enable-export = Použít aktuální motiv v aplikacích GNOME
|
enable-export = Použít aktuální motiv v aplikacích GNOME
|
||||||
.desc = Ne všechny toolkity podporují automatické přepínání. Aplikace, které nejsou postaveny na COSMIC toolkitu mohou vyžadovat restart po změně motivu.
|
.desc = Ne všechny toolkity podporují automatické přepínání. Aplikace, které nejsou postaveny na COSMIC toolkitu mohou vyžadovat restart po změně motivu.
|
||||||
password-mismatch = Heslo a jeho potvrzení se musí shodovat
|
password-mismatch = Heslo a jeho potvrzení se musí shodovat
|
||||||
invalid-username = Neplatné uživatelské jméno
|
invalid-username = Neplatné uživatelské jméno
|
||||||
icon-theme = Motiv ikon
|
icon-theme = Motiv ikon
|
||||||
.desc = Použije jinou sadu ikon pro aplikace
|
.desc = Použít jinou sadu ikon pro aplikace
|
||||||
monospace-font = Písmo s pevnou šířkou
|
monospace-font = Písmo s pevnou šířkou
|
||||||
window-management = Správa oken
|
window-management = Správa oken
|
||||||
window-tiling = Dlaždicový režim oken
|
window-tiling = Dlaždicový režim oken
|
||||||
|
|
@ -521,7 +524,7 @@ magnifier = Lupa
|
||||||
.show_overlay = Zobrazit překrytí lupy
|
.show_overlay = Zobrazit překrytí lupy
|
||||||
.increment = Krok přiblížení
|
.increment = Krok přiblížení
|
||||||
.signin = Spustit lupu při přihlášení
|
.signin = Spustit lupu při přihlášení
|
||||||
.applet = Lupu lze přepnout v appletu na panelu
|
.applet = Lupu lze přepnout (zap/vyp) v nabídce zobrazené po kliknutí na applet přímo v panelu
|
||||||
.movement = Pohyb přiblíženého zobrazení
|
.movement = Pohyb přiblíženého zobrazení
|
||||||
.continuous = Neustále s ukazatelem
|
.continuous = Neustále s ukazatelem
|
||||||
.onedge = Když ukazatel dosáhne okraje
|
.onedge = Když ukazatel dosáhne okraje
|
||||||
|
|
@ -529,9 +532,9 @@ magnifier = Lupa
|
||||||
color-filter = Typ barevného filtru
|
color-filter = Typ barevného filtru
|
||||||
.unknown = Neznámý filtr aktivní
|
.unknown = Neznámý filtr aktivní
|
||||||
.greyscale = Stupně šedi
|
.greyscale = Stupně šedi
|
||||||
.deuteranopia = Zeleno/Červená (oslabení zelené, Deuteranopie)
|
.deuteranopia = Zelená/červená (oslabené vnímání zelené, deuteranopie)
|
||||||
.protanopia = Červeno/Zelená (oslabení červené, Protanopie)
|
.protanopia = Červená/zelená (oslabené vnímání červené, protanopie)
|
||||||
.tritanopia = Modro/Žlutá (oslabení modré, Tritanopie)
|
.tritanopia = Modrá/žlutá (oslabené vnímání modré, tritanopie)
|
||||||
text-tint = Odstín textu rozhraní
|
text-tint = Odstín textu rozhraní
|
||||||
.desc = Používá se k odvození barev textu rozhraní, které mají dostatečný kontrast na různých površích
|
.desc = Používá se k odvození barev textu rozhraní, které mají dostatečný kontrast na různých površích
|
||||||
experimental-settings = Experimentální nastavení
|
experimental-settings = Experimentální nastavení
|
||||||
|
|
@ -552,13 +555,13 @@ style = Styl
|
||||||
.square = Hranatý
|
.square = Hranatý
|
||||||
.frosted-glass = Efekt ledového skla
|
.frosted-glass = Efekt ledového skla
|
||||||
.frosted-system-interface = Rozhraní systému
|
.frosted-system-interface = Rozhraní systému
|
||||||
.frosted-system-interface-desc = Použije efekt ledového skla na spouštěč, knihovnu aplikací, přehled pracovních ploch a ovládací prvky na obrazovce
|
.frosted-system-interface-desc = Použít efekt ledového skla pro spouštěč, knihovnu aplikací, přehled pracovních ploch a ovládací prvky na obrazovce
|
||||||
.frosted-windows = Okna
|
.frosted-windows = Okna
|
||||||
.frosted-windows-desc = Použije efekt ledového skla na okna a dialogy
|
.frosted-windows-desc = Použít efekt ledového skla pro okna a dialogy
|
||||||
.frosted-panels = Panely
|
.frosted-panels = Panely
|
||||||
.frosted-panels-desc = Použije efekt ledového skla na dok a panel
|
.frosted-panels-desc = Použít efekt ledového skla pro dok a panel
|
||||||
.frosted-applets = Applety
|
.frosted-applets = Applety
|
||||||
.frosted-applets-desc = Použije efekt ledového skla na nabídky appletů v doku a na panelu
|
.frosted-applets-desc = Použít efekt ledového skla pro nabídky appletů na panelu a doku
|
||||||
.frosted-thickness = Tloušťka ledu
|
.frosted-thickness = Tloušťka ledu
|
||||||
.less = menší
|
.less = menší
|
||||||
.more = větší
|
.more = větší
|
||||||
|
|
|
||||||
2
i18n/da/cosmic_settings.ftl
vendored
2
i18n/da/cosmic_settings.ftl
vendored
|
|
@ -514,7 +514,7 @@ show-extended-input-sources = Vis udvidede inputkilder
|
||||||
|
|
||||||
keyboard-shortcuts = Tastaturgenveje
|
keyboard-shortcuts = Tastaturgenveje
|
||||||
.desc = Se og tilpas genveje
|
.desc = Se og tilpas genveje
|
||||||
cancel = Annuller
|
cancel = Afbryd
|
||||||
command = Kommando
|
command = Kommando
|
||||||
custom = Brugerdefineret
|
custom = Brugerdefineret
|
||||||
debug = Debug
|
debug = Debug
|
||||||
|
|
|
||||||
3
i18n/de/cosmic_settings.ftl
vendored
3
i18n/de/cosmic_settings.ftl
vendored
|
|
@ -124,6 +124,8 @@ 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
|
||||||
|
.shake-cursor = Mauszeiger schütteln, um ihn zu finden
|
||||||
|
.shake-cursor-desc = Schüttle die Maus kurz, um den Mauszeiger vorübergehend zu vergrößern
|
||||||
hearing = Hören
|
hearing = Hören
|
||||||
.mono = Stereo-Audio als Mono abspielen
|
.mono = Stereo-Audio als Mono abspielen
|
||||||
default = Standard
|
default = Standard
|
||||||
|
|
@ -431,6 +433,7 @@ sound-alerts = Alarmsignale
|
||||||
.sound = Alarmsignalklang
|
.sound = Alarmsignalklang
|
||||||
sound-applications = Anwendungen
|
sound-applications = Anwendungen
|
||||||
.desc = Lautstärken und Einstellungen von Anwendungen
|
.desc = Lautstärken und Einstellungen von Anwendungen
|
||||||
|
.none = Keine Anwendungen verwenden einen Klang
|
||||||
|
|
||||||
## Energie
|
## Energie
|
||||||
|
|
||||||
|
|
|
||||||
1
i18n/el/cosmic_settings.ftl
vendored
1
i18n/el/cosmic_settings.ftl
vendored
|
|
@ -603,6 +603,7 @@ connected-devices = Συνδεδεμένες συσκευές
|
||||||
icons-and-toolkit = Εικονίδια και θέματα συνόλου εργαλείων
|
icons-and-toolkit = Εικονίδια και θέματα συνόλου εργαλείων
|
||||||
sound-applications = Εφαρμογές
|
sound-applications = Εφαρμογές
|
||||||
.desc = Ένταση και ρυθμίσεις ήχου εφαρμογών
|
.desc = Ένταση και ρυθμίσεις ήχου εφαρμογών
|
||||||
|
.none = Καμία εφαρμογή δεν χρησιμοποιεί ήχο
|
||||||
time-zone = Ζώνη ώρας
|
time-zone = Ζώνη ώρας
|
||||||
.auto = Αυτόματη ζώνη ώρας
|
.auto = Αυτόματη ζώνη ώρας
|
||||||
.auto-info = Απαιτεί τη χρήση υπηρεσιών τοποθεσίας και πρόσβαση στο διαδίκτυο
|
.auto-info = Απαιτεί τη χρήση υπηρεσιών τοποθεσίας και πρόσβαση στο διαδίκτυο
|
||||||
|
|
|
||||||
2
i18n/en/cosmic_settings.ftl
vendored
2
i18n/en/cosmic_settings.ftl
vendored
|
|
@ -275,6 +275,8 @@ accessibility = Accessibility
|
||||||
.high-contrast = High contrast mode
|
.high-contrast = High contrast mode
|
||||||
.invert-colors = Invert colors
|
.invert-colors = Invert colors
|
||||||
.color-filters = Color filters
|
.color-filters = Color filters
|
||||||
|
.shake-cursor = Shake pointer to find it
|
||||||
|
.shake-cursor-desc = Quickly shake the mouse to temporarily enlarge the pointer
|
||||||
|
|
||||||
hearing = Hearing
|
hearing = Hearing
|
||||||
.mono = Play stereo audio as mono
|
.mono = Play stereo audio as mono
|
||||||
|
|
|
||||||
2
i18n/fi/cosmic_settings.ftl
vendored
2
i18n/fi/cosmic_settings.ftl
vendored
|
|
@ -791,6 +791,8 @@ accessibility = Esteettömyys
|
||||||
.high-contrast = Suurikontrastinen tila
|
.high-contrast = Suurikontrastinen tila
|
||||||
.invert-colors = Käänteiset värit
|
.invert-colors = Käänteiset värit
|
||||||
.color-filters = Värisuodattimet
|
.color-filters = Värisuodattimet
|
||||||
|
.shake-cursor = Ravista osoitinta paikantaaksesi sen
|
||||||
|
.shake-cursor-desc = Ravista nopeasti hiirtä suurentaaksesi osoittimen väliaikaisesti
|
||||||
debug = Vianjäljitys
|
debug = Vianjäljitys
|
||||||
system-shortcut = Järjestelmä
|
system-shortcut = Järjestelmä
|
||||||
.app-library = Avaa sovelluskirjasto
|
.app-library = Avaa sovelluskirjasto
|
||||||
|
|
|
||||||
3
i18n/fr/cosmic_settings.ftl
vendored
3
i18n/fr/cosmic_settings.ftl
vendored
|
|
@ -441,6 +441,7 @@ sound-alerts = Alertes
|
||||||
.sound = Alertes sonores
|
.sound = Alertes sonores
|
||||||
sound-applications = Applications
|
sound-applications = Applications
|
||||||
.desc = Volumes et paramètres d'application
|
.desc = Volumes et paramètres d'application
|
||||||
|
.none = Aucune application n'utilise le son
|
||||||
|
|
||||||
## Printers
|
## Printers
|
||||||
|
|
||||||
|
|
@ -895,6 +896,8 @@ accessibility = Accessibilité
|
||||||
.high-contrast = Mode contraste élevé
|
.high-contrast = Mode contraste élevé
|
||||||
.invert-colors = Inverser les couleurs
|
.invert-colors = Inverser les couleurs
|
||||||
.color-filters = Filtres de couleurs
|
.color-filters = Filtres de couleurs
|
||||||
|
.shake-cursor = Secouer le curseur pour le localiser
|
||||||
|
.shake-cursor-desc = Secouez rapidement la souris pour agrandir temporairement le curseur
|
||||||
color-filter = Type de filtre de couleurs
|
color-filter = Type de filtre de couleurs
|
||||||
.unknown = Filtre inconnu actif
|
.unknown = Filtre inconnu actif
|
||||||
.greyscale = Niveaux de gris
|
.greyscale = Niveaux de gris
|
||||||
|
|
|
||||||
3
i18n/gl/cosmic_settings.ftl
vendored
3
i18n/gl/cosmic_settings.ftl
vendored
|
|
@ -211,7 +211,7 @@ bluetooth-display-pin = Emparellamento Bluetooth
|
||||||
.description = Introduce o seguinte PIN en { $device } e preme Intro
|
.description = Introduce o seguinte PIN en { $device } e preme Intro
|
||||||
bluetooth-available = Dispositivos próximos
|
bluetooth-available = Dispositivos próximos
|
||||||
bluetooth-adapters = Adaptadores Bluetooth
|
bluetooth-adapters = Adaptadores Bluetooth
|
||||||
accessibility = Accessibility
|
accessibility = Accessibilidade
|
||||||
.vision = Visión
|
.vision = Visión
|
||||||
.on = Activado
|
.on = Activado
|
||||||
.off = Desactivado
|
.off = Desactivado
|
||||||
|
|
@ -502,6 +502,7 @@ sound-alerts = Alertas
|
||||||
.sound = Son das alertas
|
.sound = Son das alertas
|
||||||
sound-applications = Aplicacións
|
sound-applications = Aplicacións
|
||||||
.desc = Volumes e configuracións das aplicacións
|
.desc = Volumes e configuracións das aplicacións
|
||||||
|
.none = Ningún aplicativo esta a soar
|
||||||
sound-device-port-unplugged = Desconectado
|
sound-device-port-unplugged = Desconectado
|
||||||
sound-hd-audio = Audio HD
|
sound-hd-audio = Audio HD
|
||||||
sound-usb-audio = Audio USB
|
sound-usb-audio = Audio USB
|
||||||
|
|
|
||||||
5
i18n/hu/cosmic_settings.ftl
vendored
5
i18n/hu/cosmic_settings.ftl
vendored
|
|
@ -182,6 +182,8 @@ accessibility = Akadálymentesség
|
||||||
.high-contrast = Magas kontraszt mód
|
.high-contrast = Magas kontraszt mód
|
||||||
.invert-colors = Színek invertálása
|
.invert-colors = Színek invertálása
|
||||||
.color-filters = Színszűrők
|
.color-filters = Színszűrők
|
||||||
|
.shake-cursor = Mutató rázása a megtalálásához
|
||||||
|
.shake-cursor-desc = Az egér gyors megrázásával ideiglenesen megnövelhető a mutató mérete
|
||||||
hearing = Hallás
|
hearing = Hallás
|
||||||
.mono = Sztereó hang lejátszása monóként
|
.mono = Sztereó hang lejátszása monóként
|
||||||
default = Alapértelmezett
|
default = Alapértelmezett
|
||||||
|
|
@ -483,7 +485,8 @@ sound-alerts = Figyelmeztetések
|
||||||
.volume = Figyelmeztetések hangereje
|
.volume = Figyelmeztetések hangereje
|
||||||
.sound = Figyelmeztető hang
|
.sound = Figyelmeztető hang
|
||||||
sound-applications = Alkalmazások
|
sound-applications = Alkalmazások
|
||||||
.desc = Alkalmazások hangerejei és beállításai
|
.desc = Alkalmazások hangereje és beállításai
|
||||||
|
.none = Egyetlen alkalmazás sem használ hangot
|
||||||
|
|
||||||
## Power
|
## Power
|
||||||
|
|
||||||
|
|
|
||||||
3
i18n/id/cosmic_settings.ftl
vendored
3
i18n/id/cosmic_settings.ftl
vendored
|
|
@ -116,6 +116,8 @@ accessibility = Aksesibilitas
|
||||||
.high-contrast = Mode kontras tinggi
|
.high-contrast = Mode kontras tinggi
|
||||||
.invert-colors = Balikkan warna
|
.invert-colors = Balikkan warna
|
||||||
.color-filters = Filter warna
|
.color-filters = Filter warna
|
||||||
|
.shake-cursor = Goyangkan penunjuk untuk menemukannya
|
||||||
|
.shake-cursor-desc = Goyangkan tetikus dengan cepat untuk memperbesar penunjuk untuk sementara
|
||||||
hearing = Pendengaran
|
hearing = Pendengaran
|
||||||
.mono = Mainkan audio stereo sebagai mono
|
.mono = Mainkan audio stereo sebagai mono
|
||||||
default = Bawaan
|
default = Bawaan
|
||||||
|
|
@ -397,6 +399,7 @@ sound-alerts = Peringatan
|
||||||
.sound = Suara peringatan
|
.sound = Suara peringatan
|
||||||
sound-applications = Aplikasi
|
sound-applications = Aplikasi
|
||||||
.desc = Volume dan pengaturan aplikasi
|
.desc = Volume dan pengaturan aplikasi
|
||||||
|
.none = Tidak ada aplikasi yang menggunakan suara
|
||||||
sound-device-port-unplugged = Tercabut
|
sound-device-port-unplugged = Tercabut
|
||||||
sound-hd-audio = Audio HD
|
sound-hd-audio = Audio HD
|
||||||
sound-usb-audio = Audio USB
|
sound-usb-audio = Audio USB
|
||||||
|
|
|
||||||
3
i18n/kk/cosmic_settings.ftl
vendored
3
i18n/kk/cosmic_settings.ftl
vendored
|
|
@ -116,6 +116,8 @@ accessibility = Арнайы мүмкіндіктер
|
||||||
.high-contrast = Жоғары контраст режимі
|
.high-contrast = Жоғары контраст режимі
|
||||||
.invert-colors = Түстерді инверсиялау
|
.invert-colors = Түстерді инверсиялау
|
||||||
.color-filters = Түс сүзгілері
|
.color-filters = Түс сүзгілері
|
||||||
|
.shake-cursor = Шайқаған кезде курсорды үлкейту
|
||||||
|
.shake-cursor-desc = Курсорды уақытша үлкейту үшін, тышқанды жылдам шайқаңыз
|
||||||
hearing = Есту қабілеті
|
hearing = Есту қабілеті
|
||||||
.mono = Стерео аудионы моно ретінде ойнату
|
.mono = Стерео аудионы моно ретінде ойнату
|
||||||
default = Әдепкі
|
default = Әдепкі
|
||||||
|
|
@ -394,6 +396,7 @@ sound-alerts = Ескертулер
|
||||||
.sound = Ескертулер дыбысы
|
.sound = Ескертулер дыбысы
|
||||||
sound-applications = Қолданбалар
|
sound-applications = Қолданбалар
|
||||||
.desc = Қолданбалардың дыбыс деңгейі мен баптаулары
|
.desc = Қолданбалардың дыбыс деңгейі мен баптаулары
|
||||||
|
.none = Ешбір қолданба дыбысты қолданып жатқан жоқ
|
||||||
sound-device-port-unplugged = Ажыратылған
|
sound-device-port-unplugged = Ажыратылған
|
||||||
sound-hd-audio = HD аудио
|
sound-hd-audio = HD аудио
|
||||||
sound-usb-audio = USB аудио
|
sound-usb-audio = USB аудио
|
||||||
|
|
|
||||||
3
i18n/kmr/cosmic_settings.ftl
vendored
3
i18n/kmr/cosmic_settings.ftl
vendored
|
|
@ -121,6 +121,8 @@ accessibility = Gihîştin
|
||||||
.high-contrast = Awayê berevajiya bilind
|
.high-contrast = Awayê berevajiya bilind
|
||||||
.invert-colors = Rengan berevajî bike
|
.invert-colors = Rengan berevajî bike
|
||||||
.color-filters = Parzûnên rengan
|
.color-filters = Parzûnên rengan
|
||||||
|
.shake-cursor = Nîşanderê bihejîne da ku wê bibînî
|
||||||
|
.shake-cursor-desc = Ji bo ku nîşander demkî mezin bibe, mişkê bi lez bihejîne
|
||||||
container-background = Paşrûyê konteynirê
|
container-background = Paşrûyê konteynirê
|
||||||
.desc-detail = Rengê paşrûyêa konteynirê ji bo gerandina darika kêlekê, kaşoya alî, gotûbêj û alavokên wekhev tê bikaranîn. Bi berdestî, rengê paşrûya konteynirê xweber ji paşrûyê çarçoveyê tê girtin.
|
.desc-detail = Rengê paşrûyêa konteynirê ji bo gerandina darika kêlekê, kaşoya alî, gotûbêj û alavokên wekhev tê bikaranîn. Bi berdestî, rengê paşrûya konteynirê xweber ji paşrûyê çarçoveyê tê girtin.
|
||||||
.reset = Vegere awayê xweber
|
.reset = Vegere awayê xweber
|
||||||
|
|
@ -561,6 +563,7 @@ connected-devices = Amûrên girêdayî
|
||||||
icons-and-toolkit = Rûkara îkon û amûran
|
icons-and-toolkit = Rûkara îkon û amûran
|
||||||
sound-applications = Sepan
|
sound-applications = Sepan
|
||||||
.desc = Dengê sepanan û sazkarî
|
.desc = Dengê sepanan û sazkarî
|
||||||
|
.none = Tu sepan dengê bi kar nayîne
|
||||||
time-zone = Herêma demê
|
time-zone = Herêma demê
|
||||||
.auto = Herêma dema xweber
|
.auto = Herêma dema xweber
|
||||||
.auto-info = Pêdiviya wê bi rajekarên cîh û gihîştina înternetê heye
|
.auto-info = Pêdiviya wê bi rajekarên cîh û gihîştina înternetê heye
|
||||||
|
|
|
||||||
3
i18n/pl/cosmic_settings.ftl
vendored
3
i18n/pl/cosmic_settings.ftl
vendored
|
|
@ -180,6 +180,8 @@ accessibility = Dostępność
|
||||||
.high-contrast = Tryb wysokiego kontrastu
|
.high-contrast = Tryb wysokiego kontrastu
|
||||||
.invert-colors = Odwróć kolory
|
.invert-colors = Odwróć kolory
|
||||||
.color-filters = Filtry kolorów
|
.color-filters = Filtry kolorów
|
||||||
|
.shake-cursor = Porusz energicznie kursorem by go znaleźć
|
||||||
|
.shake-cursor-desc = Szybko ruszaj myszką by czasowo powiększyć kursor
|
||||||
hearing = Słuchanie
|
hearing = Słuchanie
|
||||||
.mono = Odtwarzaj dźwięk stereo jako mono
|
.mono = Odtwarzaj dźwięk stereo jako mono
|
||||||
default = Domyślne
|
default = Domyślne
|
||||||
|
|
@ -496,6 +498,7 @@ sound-alerts = Alerty
|
||||||
.sound = Dźwięk alertów
|
.sound = Dźwięk alertów
|
||||||
sound-applications = Aplikacje
|
sound-applications = Aplikacje
|
||||||
.desc = Ustawienia i głośność aplikacji
|
.desc = Ustawienia i głośność aplikacji
|
||||||
|
.none = Żadna z aplikacji nie wydaje dźwięków
|
||||||
|
|
||||||
## Power
|
## Power
|
||||||
|
|
||||||
|
|
|
||||||
7
i18n/pt-BR/cosmic_settings.ftl
vendored
7
i18n/pt-BR/cosmic_settings.ftl
vendored
|
|
@ -124,6 +124,8 @@ accessibility = Acessibilidade
|
||||||
.high-contrast = Modo de alto contraste
|
.high-contrast = Modo de alto contraste
|
||||||
.invert-colors = Inverter cores
|
.invert-colors = Inverter cores
|
||||||
.color-filters = Filtros de cor
|
.color-filters = Filtros de cor
|
||||||
|
.shake-cursor = Agite o ponteiro para encontrá-lo
|
||||||
|
.shake-cursor-desc = Agite rapidamente o mouse para ampliar temporariamente o ponteiro
|
||||||
hearing = Audição
|
hearing = Audição
|
||||||
.mono = Reproduzir áudio estéreo como mono
|
.mono = Reproduzir áudio estéreo como mono
|
||||||
default = Padrão
|
default = Padrão
|
||||||
|
|
@ -426,8 +428,9 @@ amplification = Amplificação
|
||||||
sound-alerts = Alertas
|
sound-alerts = Alertas
|
||||||
.volume = Volume dos alertas
|
.volume = Volume dos alertas
|
||||||
.sound = Som dos alertas
|
.sound = Som dos alertas
|
||||||
sound-applications = Aplicações
|
sound-applications = Aplicativos
|
||||||
.desc = Volume e configurações das aplicações
|
.desc = Volumes e configurações de aplicativo
|
||||||
|
.none = Nenhum aplicativo está usando som
|
||||||
|
|
||||||
## Power
|
## Power
|
||||||
|
|
||||||
|
|
|
||||||
5
i18n/ru/cosmic_settings.ftl
vendored
5
i18n/ru/cosmic_settings.ftl
vendored
|
|
@ -277,7 +277,8 @@ sound-alerts = Предупреждения
|
||||||
.volume = Громкость предупреждений
|
.volume = Громкость предупреждений
|
||||||
.sound = Звук предупреждений
|
.sound = Звук предупреждений
|
||||||
sound-applications = Приложения
|
sound-applications = Приложения
|
||||||
.desc = Громкость и настройки приложений
|
.desc = Громкость приложений и настройки
|
||||||
|
.none = Нет приложений, использующих звук
|
||||||
|
|
||||||
## System
|
## System
|
||||||
|
|
||||||
|
|
@ -648,6 +649,8 @@ accessibility = Специальные возможности
|
||||||
.high-contrast = Режим высокой контрастности
|
.high-contrast = Режим высокой контрастности
|
||||||
.invert-colors = Инвертирование цвета
|
.invert-colors = Инвертирование цвета
|
||||||
.color-filters = Цветовые фильтры
|
.color-filters = Цветовые фильтры
|
||||||
|
.shake-cursor = Увеличивать курсор при встряхивании
|
||||||
|
.shake-cursor-desc = Быстро встряхните мышь, чтобы временно увеличить курсор
|
||||||
hearing = Слух
|
hearing = Слух
|
||||||
.mono = Проигрывать стереозвук как монозвук
|
.mono = Проигрывать стереозвук как монозвук
|
||||||
default = По умолчанию
|
default = По умолчанию
|
||||||
|
|
|
||||||
3
i18n/sv/cosmic_settings.ftl
vendored
3
i18n/sv/cosmic_settings.ftl
vendored
|
|
@ -206,6 +206,8 @@ accessibility = Tillgänglighet
|
||||||
.high-contrast = Högkontrastläge
|
.high-contrast = Högkontrastläge
|
||||||
.invert-colors = Invertera färger
|
.invert-colors = Invertera färger
|
||||||
.color-filters = Färgfilter
|
.color-filters = Färgfilter
|
||||||
|
.shake-cursor = Skaka muspekaren för att hitta den
|
||||||
|
.shake-cursor-desc = Skaka musen snabbt för att tillfälligt förstora muspekaren
|
||||||
hearing = Hörsel
|
hearing = Hörsel
|
||||||
.mono = Spela stereoljud som mono
|
.mono = Spela stereoljud som mono
|
||||||
default = Standard
|
default = Standard
|
||||||
|
|
@ -490,6 +492,7 @@ sound-alerts = Larm
|
||||||
.sound = Larmljud
|
.sound = Larmljud
|
||||||
sound-applications = Program
|
sound-applications = Program
|
||||||
.desc = Programvolym och inställningar
|
.desc = Programvolym och inställningar
|
||||||
|
.none = Inga program använder ljud
|
||||||
|
|
||||||
## System
|
## System
|
||||||
|
|
||||||
|
|
|
||||||
5
i18n/uk/cosmic_settings.ftl
vendored
5
i18n/uk/cosmic_settings.ftl
vendored
|
|
@ -267,6 +267,7 @@ sound-alerts = Попередження
|
||||||
.sound = Звук попереджень
|
.sound = Звук попереджень
|
||||||
sound-applications = Застосунки
|
sound-applications = Застосунки
|
||||||
.desc = Гучність та налаштування для застосунків
|
.desc = Гучність та налаштування для застосунків
|
||||||
|
.none = Жоден застосунок не відтворює звук
|
||||||
|
|
||||||
## Power
|
## Power
|
||||||
|
|
||||||
|
|
@ -652,8 +653,10 @@ accessibility = Доступність
|
||||||
.unavailable = Недоступно
|
.unavailable = Недоступно
|
||||||
.screen-reader = Екранний читач
|
.screen-reader = Екранний читач
|
||||||
.high-contrast = Висока контрастність
|
.high-contrast = Висока контрастність
|
||||||
.invert-colors = Інвертація кольорів
|
.invert-colors = Інверсія кольорів
|
||||||
.color-filters = Фільтри кольорів
|
.color-filters = Фільтри кольорів
|
||||||
|
.shake-cursor = Потрусіть вказівником, щоб знайти його
|
||||||
|
.shake-cursor-desc = Швидко потрусіть мишею, щоби тимчасово збільшити вказівник
|
||||||
hearing = Слух
|
hearing = Слух
|
||||||
.mono = Відтворювати стерео звук у моно
|
.mono = Відтворювати стерео звук у моно
|
||||||
default = Типовий
|
default = Типовий
|
||||||
|
|
|
||||||
3
i18n/zh-CN/cosmic_settings.ftl
vendored
3
i18n/zh-CN/cosmic_settings.ftl
vendored
|
|
@ -184,6 +184,8 @@ accessibility = 无障碍
|
||||||
.high-contrast = 高对比度模式
|
.high-contrast = 高对比度模式
|
||||||
.invert-colors = 颜色反转
|
.invert-colors = 颜色反转
|
||||||
.color-filters = 色彩滤镜
|
.color-filters = 色彩滤镜
|
||||||
|
.shake-cursor = 晃动指针来寻找它
|
||||||
|
.shake-cursor-desc = 快速晃动鼠标以暂时放大指标
|
||||||
hearing = 听觉
|
hearing = 听觉
|
||||||
.mono = 播放立体声音频为单声道
|
.mono = 播放立体声音频为单声道
|
||||||
default = 默认
|
default = 默认
|
||||||
|
|
@ -486,6 +488,7 @@ sound-alerts = 警告音
|
||||||
.sound = 警告音效
|
.sound = 警告音效
|
||||||
sound-applications = 应用程序
|
sound-applications = 应用程序
|
||||||
.desc = 应用程序音量和设置
|
.desc = 应用程序音量和设置
|
||||||
|
.none = 没有任何应用程序正在使用声音
|
||||||
|
|
||||||
## Power
|
## Power
|
||||||
|
|
||||||
|
|
|
||||||
3
i18n/zh-TW/cosmic_settings.ftl
vendored
3
i18n/zh-TW/cosmic_settings.ftl
vendored
|
|
@ -124,6 +124,8 @@ accessibility = 無障礙功能
|
||||||
.high-contrast = 高對比模式
|
.high-contrast = 高對比模式
|
||||||
.invert-colors = 反轉顏色
|
.invert-colors = 反轉顏色
|
||||||
.color-filters = 色彩濾鏡
|
.color-filters = 色彩濾鏡
|
||||||
|
.shake-cursor = 晃動指標以能找到所在
|
||||||
|
.shake-cursor-desc = 快速晃動游標來暫時性地放大指標
|
||||||
hearing = 聽覺
|
hearing = 聽覺
|
||||||
.mono = 將立體聲播放為單聲道
|
.mono = 將立體聲播放為單聲道
|
||||||
default = 預設
|
default = 預設
|
||||||
|
|
@ -426,6 +428,7 @@ sound-alerts = 提示音
|
||||||
.sound = 提示音音效
|
.sound = 提示音音效
|
||||||
sound-applications = 應用程式
|
sound-applications = 應用程式
|
||||||
.desc = 應用程式音量與設定
|
.desc = 應用程式音量與設定
|
||||||
|
.none = 無應用程式使用音效
|
||||||
|
|
||||||
## Power
|
## Power
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "cosmic-settings-page"
|
name = "cosmic-settings-page"
|
||||||
version = "1.0.7"
|
version = "1.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "cosmic-settings-sound"
|
name = "cosmic-settings-sound"
|
||||||
version = "0.1.0"
|
version = "1.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "cosmic-settings-wallpaper"
|
name = "cosmic-settings-wallpaper"
|
||||||
version = "1.0.7"
|
version = "1.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
[toolchain]
|
[toolchain]
|
||||||
channel = "1.93.0"
|
channel = "1.95.0"
|
||||||
components = ["clippy", "rustfmt"]
|
components = ["clippy", "rustfmt"]
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "cosmic-settings-a11y-manager-subscription"
|
name = "cosmic-settings-a11y-manager-subscription"
|
||||||
version = "1.0.7"
|
version = "1.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MPL-2.0"
|
license = "MPL-2.0"
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "cosmic-settings-accessibility-subscription"
|
name = "cosmic-settings-accessibility-subscription"
|
||||||
version = "1.0.7"
|
version = "1.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MPL-2.0"
|
license = "MPL-2.0"
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "cosmic-settings-airplane-mode-subscription"
|
name = "cosmic-settings-airplane-mode-subscription"
|
||||||
version = "1.0.7"
|
version = "1.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MPL-2.0"
|
license = "MPL-2.0"
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "cosmic-settings-bluetooth-subscription"
|
name = "cosmic-settings-bluetooth-subscription"
|
||||||
version = "1.0.7"
|
version = "1.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MPL-2.0"
|
license = "MPL-2.0"
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "cosmic-settings-daemon-subscription"
|
name = "cosmic-settings-daemon-subscription"
|
||||||
version = "1.0.7"
|
version = "1.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
publish = true
|
publish = true
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "cosmic-settings-upower-subscription"
|
name = "cosmic-settings-upower-subscription"
|
||||||
version = "1.0.7"
|
version = "1.7.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MPL-2.0"
|
license = "MPL-2.0"
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue