Merge tag 'epoch-1.7.0' into local/yoda-main-1.3.0

Epoch 1.7.0

# Conflicts:
#	Cargo.lock
This commit is contained in:
Lionel DARNIS 2026-08-27 07:52:54 +02:00
commit 29ed971e64
38 changed files with 989 additions and 651 deletions

1257
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,20 +1,25 @@
cargo-target-dir := env('CARGO_TARGET_DIR', 'target')
# Compile with debug profile
[no-cd]
build-debug *args:
cargo build {{ args }}
cargo build {{args}}
# Compile with release profile
[no-cd]
build-release *args: (build-debug '--release' args)
# Compile with a vendored tarball
[no-cd]
build-vendored *args: vendor-extract (build-release '--frozen --offline' args)
# Check for errors and linter warnings
[no-cd]
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
[no-cd]
check-json: (check '--message-format=json')
# Remove Cargo build artifacts
@ -28,25 +33,38 @@ clean-dist: clean
rm -rf .cargo vendor vendor.tar target
# Run the application for testing purposes
[no-cd]
run *args:
env RUST_LOG=debug RUST_BACKTRACE=full cargo run {{ args }} --release
cargo run {{args}}
# Run `cargo test`
[no-cd]
test *args:
cargo test {{ args }}
cargo test {{args}}
# Vendor Cargo dependencies locally
[no-cd]
vendor:
#!/usr/bin/env bash
mkdir -p .cargo
cargo vendor --locked | head -n -1 > .cargo/config.toml
echo 'directory = "vendor"' >> .cargo/config.toml
tar pcf vendor.tar vendor
rm -rf vendor
echo >> .cargo/config.toml
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
[no-cd]
[private]
vendor-extract:
rm -rf vendor
tar pxf vendor.tar

View file

@ -1,6 +1,6 @@
[package]
name = "cosmic-settings"
version = "1.5.0"
version = "1.7.0"
edition = "2024"
license = "GPL-3.0-only"
publish = false

View file

@ -4,6 +4,7 @@ use cosmic::iced::stream;
use cosmic::theme::CosmicTheme;
use cosmic::widget::{dropdown, settings, text};
use cosmic::{Apply, Element, Task, surface};
use cosmic_comp_config::CosmicCompConfig;
pub use cosmic_comp_config::ZoomMovement;
use cosmic_config::CosmicConfigEntry;
use cosmic_settings_a11y_manager_subscription as cosmic_a11y_manager;
@ -36,11 +37,21 @@ pub struct Page {
daemon_helper: cosmic_config::Config,
dbus_sender: Option<UnboundedSender<a11y_bus::Request>>,
reader_enabled: bool,
comp_config: CosmicCompConfig,
comp_helper: cosmic_config::Config,
}
impl Default for Page {
fn default() -> Self {
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 {
dbus_sender: None,
entity: page::Entity::default(),
@ -65,6 +76,8 @@ impl Default for Page {
.unwrap_or_default(),
daemon_helper,
reader_enabled: false,
comp_config,
comp_helper,
}
}
}
@ -77,6 +90,7 @@ pub enum Message {
ProtocolUnavailable,
Return,
ScreenReaderEnabled(bool),
SetCursorShakeToFind(bool),
SetScreenFilterActive(bool),
SetScreenFilterSelection(ColorFilter),
SetScreenInverted(bool),
@ -187,6 +201,8 @@ pub fn vision() -> section::Section<crate::pages::Message> {
invert_colors = fl!("accessibility", "invert-colors");
color_filters = fl!("accessibility", "color-filters");
color_filter_type = fl!("color-filter");
shake_cursor = fl!("accessibility", "shake-cursor");
shake_cursor_desc = fl!("accessibility", "shake-cursor-desc");
});
Section::default()
@ -276,6 +292,13 @@ pub fn vision() -> section::Section<crate::pages::Message> {
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()
})
}
@ -416,6 +439,14 @@ impl Page {
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) => {
if let Err(err) = self
.daemon_config

View file

@ -12,7 +12,7 @@ use futures::channel::oneshot;
use futures::{SinkExt, StreamExt};
use slotmap::SlotMap;
use std::collections::{HashMap, HashSet};
use std::sync::Arc;
use std::sync::{Arc, LazyLock};
use std::time::Duration;
use zbus::zvariant::OwnedObjectPath;
@ -20,6 +20,8 @@ use zbus::zvariant::OwnedObjectPath;
use crate::service_manager::MockServiceManager;
use crate::service_manager::ServiceManagerHandle;
static BLUETOOTH_PAGE_LABEL: LazyLock<String> = LazyLock::new(|| fl!("bluetooth"));
enum Dialog {
RequestConfirmation {
device: String,
@ -173,6 +175,19 @@ impl page::Page<crate::pages::Message> for Page {
.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(
&self,
sections: &mut SlotMap<section::Entity, Section<crate::pages::Message>>,
@ -392,6 +407,30 @@ impl From<Event> for Message {
}
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> {
let span = tracing::span!(tracing::Level::INFO, "bluetooth::update");
let _span = span.enter();
@ -437,28 +476,7 @@ impl Page {
Event::SetAdapters(adapters) => {
let select_adapter = self.model.set_adapters(adapters);
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(", ")
);
}
self.update_heading();
if let Some(adapter) = select_adapter {
return cosmic::task::message(Message::SelectAdapter(Some(adapter)));
@ -741,6 +759,7 @@ impl Page {
Message::SelectAdapter(adapter_maybe) => {
tracing::debug!("Adapter selected: {adapter_maybe:?}");
self.model.selected_adapter = adapter_maybe;
self.update_heading();
self.model.update_status();
let Some(connection) = self.connection.as_ref() else {
tracing::error!("No DBus connection ready");
@ -1158,6 +1177,51 @@ impl Page {
#[cfg(test)]
mod tests {
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]
fn test_dbus_service_unknown_with_installed_service_queries_manager() {

View file

@ -1103,6 +1103,12 @@ impl Page {
.arg(itoa::Buffer::new().format(x))
.arg("--pos-y")
.arg(itoa::Buffer::new().format(y))
.arg("--refresh")
.arg(format!(
"{}.{:03}",
current.refresh_rate / 1000,
current.refresh_rate % 1000
))
.arg(name)
.arg(itoa::Buffer::new().format(current.size.0))
.arg(itoa::Buffer::new().format(current.size.1));

View file

@ -118,8 +118,8 @@ pub enum SourceContext {
MoveDown(DefaultKey),
MoveUp(DefaultKey),
Remove(DefaultKey),
Settings(DefaultKey),
ViewLayout(DefaultKey),
// Settings(DefaultKey),
// ViewLayout(DefaultKey),
}
pub type Locale = String;
@ -211,6 +211,7 @@ fn popover_menu_row(
id: DefaultKey,
label: String,
message: impl Fn(DefaultKey) -> SourceContext + 'static,
disabled: bool,
) -> cosmic::Element<'static, Message> {
let spacing = theme::spacing();
widget::text::body(label)
@ -219,37 +220,54 @@ fn popover_menu_row(
.padding([spacing.space_xxxs, spacing.space_xs])
.width(Length::Fill)
.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)
}
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([
popover_menu_row(
id,
fl!("keyboard-sources", "move-up"),
SourceContext::MoveUp,
is_first,
),
popover_menu_row(
id,
fl!("keyboard-sources", "move-down"),
SourceContext::MoveDown,
is_last,
),
widget::divider::horizontal::default()
.apply(widget::container)
.padding(8)
.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(
id,
fl!("keyboard-sources", "settings"),
SourceContext::Settings,
fl!("keyboard-sources", "remove"),
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))
.apply(widget::container)
@ -258,7 +276,12 @@ fn popover_menu(id: DefaultKey) -> cosmic::Element<'static, Message> {
.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 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 {
widget::popover(button)
.position(widget::popover::Position::Bottom)
.popup(popover_menu(id))
.popup(popover_menu(id, is_first, is_last))
.on_close(Message::ExpandInputSourcePopover(None))
.into()
} else {
@ -280,10 +303,12 @@ fn input_source(
id: DefaultKey,
description: &str,
expanded_source_popover: Option<DefaultKey>,
is_first: bool,
is_last: bool,
) -> cosmic::Element<'_, Message> {
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>(
@ -521,15 +546,13 @@ impl Page {
let _removed = self.active_layouts.remove(pos);
self.update_xkb_config();
}
}
} // SourceContext::Settings(_id) => {
// eprintln!("settings not implemented");
// }
SourceContext::Settings(_id) => {
eprintln!("settings not implemented");
}
SourceContext::ViewLayout(_id) => {
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
let mut section = settings::section().title(&section.title);
for id in &page.active_layouts {
for (position, id) in page.active_layouts.iter().enumerate() {
if let Some((_locale, _variant, description, _source)) =
page.keyboard_layouts.get(*id)
{
section =
section.add(input_source(*id, description, page.expanded_source_popover));
section = section.add(input_source(
*id,
description,
page.expanded_source_popover,
position == 0,
position + 1 == page.active_layouts.len(),
));
}
}

6
debian/changelog vendored
View file

@ -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
* release: 1.0.12

View file

@ -1,4 +1,6 @@
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=target

View file

@ -86,10 +86,10 @@ dock = Dok
## Desktop: 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
.dock-autohide = Automaticky skrýt dok
.position = Pozice na obrazovce
.position = Umístění na obrazovce
.display = Zobrazit na obrazovce
panel-top = Nahoře
panel-bottom = Dole
@ -215,7 +215,8 @@ sound-alerts = Upozornění
.volume = Hlasitost upozornění
.sound = Zvuk pro upozornění
sound-applications = Aplikace
.desc = Hlasitosti aplikací a nastavení
.desc = Hlasitosti a nastavení aplikací
.none = Žádné aplikace nepoužívají zvuk
## System
@ -369,8 +370,10 @@ accessibility = Přístupnost
.unavailable = Nedostupné
.screen-reader = Čtečka obrazovky
.high-contrast = Vysoký kontrast
.invert-colors = Převrátit barvy
.invert-colors = Inverze barev
.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
.mono = Přehrávat stereo zvuk jako mono
default = Výchozí
@ -462,13 +465,13 @@ container-background = Pozadí kontejneru
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
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
.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
invalid-username = Neplatné uživatelské jméno
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
window-management = Správa oken
window-tiling = Dlaždicový režim oken
@ -521,7 +524,7 @@ magnifier = Lupa
.show_overlay = Zobrazit překrytí lupy
.increment = Krok přiblíž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í
.continuous = Neustále s ukazatelem
.onedge = Když ukazatel dosáhne okraje
@ -529,9 +532,9 @@ magnifier = Lupa
color-filter = Typ barevného filtru
.unknown = Neznámý filtr aktivní
.greyscale = Stupně šedi
.deuteranopia = Zeleno/Červená (oslabení zelené, Deuteranopie)
.protanopia = Červeno/Zelená (oslabení červené, Protanopie)
.tritanopia = Modro/Žlutá (oslabení modré, Tritanopie)
.deuteranopia = Zelená/červená (oslabené vnímání zelené, deuteranopie)
.protanopia = Červená/zelená (oslabené vnímání červené, protanopie)
.tritanopia = Modrá/žlutá (oslabené vnímání modré, tritanopie)
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
experimental-settings = Experimentální nastavení
@ -552,13 +555,13 @@ style = Styl
.square = Hranatý
.frosted-glass = Efekt ledového skla
.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-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-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-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
.less = menší
.more = větší

View file

@ -514,7 +514,7 @@ show-extended-input-sources = Vis udvidede inputkilder
keyboard-shortcuts = Tastaturgenveje
.desc = Se og tilpas genveje
cancel = Annuller
cancel = Afbryd
command = Kommando
custom = Brugerdefineret
debug = Debug

View file

@ -124,6 +124,8 @@ accessibility = Barrierefreiheit
.high-contrast = Modus für hohen Kontrast
.invert-colors = Farben invertieren
.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
.mono = Stereo-Audio als Mono abspielen
default = Standard
@ -431,6 +433,7 @@ sound-alerts = Alarmsignale
.sound = Alarmsignalklang
sound-applications = Anwendungen
.desc = Lautstärken und Einstellungen von Anwendungen
.none = Keine Anwendungen verwenden einen Klang
## Energie

View file

@ -603,6 +603,7 @@ connected-devices = Συνδεδεμένες συσκευές
icons-and-toolkit = Εικονίδια και θέματα συνόλου εργαλείων
sound-applications = Εφαρμογές
.desc = Ένταση και ρυθμίσεις ήχου εφαρμογών
.none = Καμία εφαρμογή δεν χρησιμοποιεί ήχο
time-zone = Ζώνη ώρας
.auto = Αυτόματη ζώνη ώρας
.auto-info = Απαιτεί τη χρήση υπηρεσιών τοποθεσίας και πρόσβαση στο διαδίκτυο

View file

@ -275,6 +275,8 @@ accessibility = Accessibility
.high-contrast = High contrast mode
.invert-colors = Invert colors
.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
.mono = Play stereo audio as mono

View file

@ -791,6 +791,8 @@ accessibility = Esteettömyys
.high-contrast = Suurikontrastinen tila
.invert-colors = Käänteiset värit
.color-filters = Värisuodattimet
.shake-cursor = Ravista osoitinta paikantaaksesi sen
.shake-cursor-desc = Ravista nopeasti hiirtä suurentaaksesi osoittimen väliaikaisesti
debug = Vianjäljitys
system-shortcut = Järjestelmä
.app-library = Avaa sovelluskirjasto

View file

@ -441,6 +441,7 @@ sound-alerts = Alertes
.sound = Alertes sonores
sound-applications = Applications
.desc = Volumes et paramètres d'application
.none = Aucune application n'utilise le son
## Printers
@ -895,6 +896,8 @@ accessibility = Accessibilité
.high-contrast = Mode contraste élevé
.invert-colors = Inverser les 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
.unknown = Filtre inconnu actif
.greyscale = Niveaux de gris

View file

@ -211,7 +211,7 @@ bluetooth-display-pin = Emparellamento Bluetooth
.description = Introduce o seguinte PIN en { $device } e preme Intro
bluetooth-available = Dispositivos próximos
bluetooth-adapters = Adaptadores Bluetooth
accessibility = Accessibility
accessibility = Accessibilidade
.vision = Visión
.on = Activado
.off = Desactivado
@ -502,6 +502,7 @@ sound-alerts = Alertas
.sound = Son das alertas
sound-applications = Aplicacións
.desc = Volumes e configuracións das aplicacións
.none = Ningún aplicativo esta a soar
sound-device-port-unplugged = Desconectado
sound-hd-audio = Audio HD
sound-usb-audio = Audio USB

View file

@ -182,6 +182,8 @@ accessibility = Akadálymentesség
.high-contrast = Magas kontraszt mód
.invert-colors = Színek invertálása
.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
.mono = Sztereó hang lejátszása monóként
default = Alapértelmezett
@ -483,7 +485,8 @@ sound-alerts = Figyelmeztetések
.volume = Figyelmeztetések hangereje
.sound = Figyelmeztető hang
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

View file

@ -116,6 +116,8 @@ accessibility = Aksesibilitas
.high-contrast = Mode kontras tinggi
.invert-colors = Balikkan 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
.mono = Mainkan audio stereo sebagai mono
default = Bawaan
@ -397,6 +399,7 @@ sound-alerts = Peringatan
.sound = Suara peringatan
sound-applications = Aplikasi
.desc = Volume dan pengaturan aplikasi
.none = Tidak ada aplikasi yang menggunakan suara
sound-device-port-unplugged = Tercabut
sound-hd-audio = Audio HD
sound-usb-audio = Audio USB

View file

@ -116,6 +116,8 @@ accessibility = Арнайы мүмкіндіктер
.high-contrast = Жоғары контраст режимі
.invert-colors = Түстерді инверсиялау
.color-filters = Түс сүзгілері
.shake-cursor = Шайқаған кезде курсорды үлкейту
.shake-cursor-desc = Курсорды уақытша үлкейту үшін, тышқанды жылдам шайқаңыз
hearing = Есту қабілеті
.mono = Стерео аудионы моно ретінде ойнату
default = Әдепкі
@ -394,6 +396,7 @@ sound-alerts = Ескертулер
.sound = Ескертулер дыбысы
sound-applications = Қолданбалар
.desc = Қолданбалардың дыбыс деңгейі мен баптаулары
.none = Ешбір қолданба дыбысты қолданып жатқан жоқ
sound-device-port-unplugged = Ажыратылған
sound-hd-audio = HD аудио
sound-usb-audio = USB аудио

View file

@ -121,6 +121,8 @@ accessibility = Gihîştin
.high-contrast = Awayê berevajiya bilind
.invert-colors = Rengan berevajî bike
.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ê
.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
@ -561,6 +563,7 @@ connected-devices = Amûrên girêdayî
icons-and-toolkit = Rûkara îkon û amûran
sound-applications = Sepan
.desc = Dengê sepanan û sazkarî
.none = Tu sepan dengê bi kar nayîne
time-zone = Herêma demê
.auto = Herêma dema xweber
.auto-info = Pêdiviya wê bi rajekarên cîh û gihîştina înternetê heye

View file

@ -180,6 +180,8 @@ accessibility = Dostępność
.high-contrast = Tryb wysokiego kontrastu
.invert-colors = Odwróć kolory
.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
.mono = Odtwarzaj dźwięk stereo jako mono
default = Domyślne
@ -496,6 +498,7 @@ sound-alerts = Alerty
.sound = Dźwięk alertów
sound-applications = Aplikacje
.desc = Ustawienia i głośność aplikacji
.none = Żadna z aplikacji nie wydaje dźwięków
## Power

View file

@ -124,6 +124,8 @@ accessibility = Acessibilidade
.high-contrast = Modo de alto contraste
.invert-colors = Inverter cores
.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
.mono = Reproduzir áudio estéreo como mono
default = Padrão
@ -426,8 +428,9 @@ amplification = Amplificação
sound-alerts = Alertas
.volume = Volume dos alertas
.sound = Som dos alertas
sound-applications = Aplicações
.desc = Volume e configurações das aplicações
sound-applications = Aplicativos
.desc = Volumes e configurações de aplicativo
.none = Nenhum aplicativo está usando som
## Power

View file

@ -277,7 +277,8 @@ sound-alerts = Предупреждения
.volume = Громкость предупреждений
.sound = Звук предупреждений
sound-applications = Приложения
.desc = Громкость и настройки приложений
.desc = Громкость приложений и настройки
.none = Нет приложений, использующих звук
## System
@ -648,6 +649,8 @@ accessibility = Специальные возможности
.high-contrast = Режим высокой контрастности
.invert-colors = Инвертирование цвета
.color-filters = Цветовые фильтры
.shake-cursor = Увеличивать курсор при встряхивании
.shake-cursor-desc = Быстро встряхните мышь, чтобы временно увеличить курсор
hearing = Слух
.mono = Проигрывать стереозвук как монозвук
default = По умолчанию

View file

@ -206,6 +206,8 @@ accessibility = Tillgänglighet
.high-contrast = Högkontrastläge
.invert-colors = Invertera färger
.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
.mono = Spela stereoljud som mono
default = Standard
@ -490,6 +492,7 @@ sound-alerts = Larm
.sound = Larmljud
sound-applications = Program
.desc = Programvolym och inställningar
.none = Inga program använder ljud
## System

View file

@ -267,6 +267,7 @@ sound-alerts = Попередження
.sound = Звук попереджень
sound-applications = Застосунки
.desc = Гучність та налаштування для застосунків
.none = Жоден застосунок не відтворює звук
## Power
@ -652,8 +653,10 @@ accessibility = Доступність
.unavailable = Недоступно
.screen-reader = Екранний читач
.high-contrast = Висока контрастність
.invert-colors = Інвертація кольорів
.invert-colors = Інверсія кольорів
.color-filters = Фільтри кольорів
.shake-cursor = Потрусіть вказівником, щоб знайти його
.shake-cursor-desc = Швидко потрусіть мишею, щоби тимчасово збільшити вказівник
hearing = Слух
.mono = Відтворювати стерео звук у моно
default = Типовий

View file

@ -184,6 +184,8 @@ accessibility = 无障碍
.high-contrast = 高对比度模式
.invert-colors = 颜色反转
.color-filters = 色彩滤镜
.shake-cursor = 晃动指针来寻找它
.shake-cursor-desc = 快速晃动鼠标以暂时放大指标
hearing = 听觉
.mono = 播放立体声音频为单声道
default = 默认
@ -486,6 +488,7 @@ sound-alerts = 警告音
.sound = 警告音效
sound-applications = 应用程序
.desc = 应用程序音量和设置
.none = 没有任何应用程序正在使用声音
## Power

View file

@ -124,6 +124,8 @@ accessibility = 無障礙功能
.high-contrast = 高對比模式
.invert-colors = 反轉顏色
.color-filters = 色彩濾鏡
.shake-cursor = 晃動指標以能找到所在
.shake-cursor-desc = 快速晃動游標來暫時性地放大指標
hearing = 聽覺
.mono = 將立體聲播放為單聲道
default = 預設
@ -426,6 +428,7 @@ sound-alerts = 提示音
.sound = 提示音音效
sound-applications = 應用程式
.desc = 應用程式音量與設定
.none = 無應用程式使用音效
## Power

View file

@ -1,6 +1,6 @@
[package]
name = "cosmic-settings-page"
version = "1.0.7"
version = "1.7.0"
edition = "2024"
[dependencies]

View file

@ -1,6 +1,6 @@
[package]
name = "cosmic-settings-sound"
version = "0.1.0"
version = "1.7.0"
edition = "2024"
rust-version.workspace = true

View file

@ -1,6 +1,6 @@
[package]
name = "cosmic-settings-wallpaper"
version = "1.0.7"
version = "1.7.0"
edition = "2024"
rust-version.workspace = true

View file

@ -1,3 +1,3 @@
[toolchain]
channel = "1.93.0"
channel = "1.95.0"
components = ["clippy", "rustfmt"]

View file

@ -1,6 +1,6 @@
[package]
name = "cosmic-settings-a11y-manager-subscription"
version = "1.0.7"
version = "1.7.0"
edition = "2024"
license = "MPL-2.0"
rust-version.workspace = true

View file

@ -1,6 +1,6 @@
[package]
name = "cosmic-settings-accessibility-subscription"
version = "1.0.7"
version = "1.7.0"
edition = "2024"
license = "MPL-2.0"
rust-version.workspace = true

View file

@ -1,6 +1,6 @@
[package]
name = "cosmic-settings-airplane-mode-subscription"
version = "1.0.7"
version = "1.7.0"
edition = "2024"
license = "MPL-2.0"
rust-version.workspace = true

View file

@ -1,6 +1,6 @@
[package]
name = "cosmic-settings-bluetooth-subscription"
version = "1.0.7"
version = "1.7.0"
edition = "2024"
license = "MPL-2.0"
rust-version.workspace = true

View file

@ -1,6 +1,6 @@
[package]
name = "cosmic-settings-daemon-subscription"
version = "1.0.7"
version = "1.7.0"
edition = "2024"
rust-version.workspace = true
publish = true

View file

@ -1,6 +1,6 @@
[package]
name = "cosmic-settings-upower-subscription"
version = "1.0.7"
version = "1.7.0"
edition = "2024"
license = "MPL-2.0"
rust-version.workspace = true