From 53e4549dc919c540077336589117cc67f80fa0e3 Mon Sep 17 00:00:00 2001 From: Antoine C Date: Wed, 4 Sep 2024 16:23:55 +0100 Subject: [PATCH] feat(Workspace): add missing settings and update design --- Cargo.lock | 2 +- .../src/pages/desktop/workspaces.rs | 400 ++++++++++++++++-- cosmic-settings/src/pages/input/mod.rs | 21 +- cosmic-settings/src/utils.rs | 19 + i18n/en/cosmic_settings.ftl | 15 + i18n/fr/cosmic_settings.ftl | 15 + .../trackpad-gesture-swipe-down-dark.svg | 9 + .../trackpad-gesture-swipe-down-light.svg | 9 + ...trackpad-gesture-swipe-horizontal-dark.svg | 10 + ...rackpad-gesture-swipe-horizontal-light.svg | 10 + .../trackpad-gesture-swipe-left-dark.svg | 9 + .../trackpad-gesture-swipe-left-light.svg | 9 + .../trackpad-gesture-swipe-right-dark.svg | 9 + .../trackpad-gesture-swipe-right-light.svg | 9 + .../assets/trackpad-gesture-swipe-up-dark.svg | 9 + .../trackpad-gesture-swipe-up-light.svg | 9 + .../trackpad-gesture-swipe-vertical-dark.svg | 10 + .../trackpad-gesture-swipe-vertical-light.svg | 10 + .../workspace-orientation-bottom-dark.svg | 11 + .../workspace-orientation-bottom-light.svg | 10 + .../workspace-orientation-left-dark.svg | 11 + .../workspace-orientation-left-light.svg | 10 + .../workspace-orientation-right-dark.svg | 11 + .../workspace-orientation-right-light.svg | 10 + .../assets/workspace-orientation-top-dark.svg | 11 + .../workspace-orientation-top-light.svg | 10 + .../workspace-separate-display-dark.svg | 39 ++ .../workspace-separate-display-light.svg | 27 ++ .../assets/workspace-span-display-dark.svg | 61 +++ .../assets/workspace-span-display-light.svg | 36 ++ 30 files changed, 771 insertions(+), 60 deletions(-) create mode 100644 resources/assets/trackpad-gesture-swipe-down-dark.svg create mode 100644 resources/assets/trackpad-gesture-swipe-down-light.svg create mode 100644 resources/assets/trackpad-gesture-swipe-horizontal-dark.svg create mode 100644 resources/assets/trackpad-gesture-swipe-horizontal-light.svg create mode 100644 resources/assets/trackpad-gesture-swipe-left-dark.svg create mode 100644 resources/assets/trackpad-gesture-swipe-left-light.svg create mode 100644 resources/assets/trackpad-gesture-swipe-right-dark.svg create mode 100644 resources/assets/trackpad-gesture-swipe-right-light.svg create mode 100644 resources/assets/trackpad-gesture-swipe-up-dark.svg create mode 100644 resources/assets/trackpad-gesture-swipe-up-light.svg create mode 100644 resources/assets/trackpad-gesture-swipe-vertical-dark.svg create mode 100644 resources/assets/trackpad-gesture-swipe-vertical-light.svg create mode 100644 resources/assets/workspace-orientation-bottom-dark.svg create mode 100644 resources/assets/workspace-orientation-bottom-light.svg create mode 100644 resources/assets/workspace-orientation-left-dark.svg create mode 100644 resources/assets/workspace-orientation-left-light.svg create mode 100644 resources/assets/workspace-orientation-right-dark.svg create mode 100644 resources/assets/workspace-orientation-right-light.svg create mode 100644 resources/assets/workspace-orientation-top-dark.svg create mode 100644 resources/assets/workspace-orientation-top-light.svg create mode 100644 resources/assets/workspace-separate-display-dark.svg create mode 100644 resources/assets/workspace-separate-display-light.svg create mode 100644 resources/assets/workspace-span-display-dark.svg create mode 100644 resources/assets/workspace-span-display-light.svg diff --git a/Cargo.lock b/Cargo.lock index 0e0a49e0..55b0ba95 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1462,7 +1462,7 @@ dependencies = [ [[package]] name = "cosmic-comp-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-comp#90883c6ab12533da08a31da338881c38aa773634" +source = "git+https://github.com/pop-os/cosmic-comp#641bb75eb1a6449752d14b9776381a823999b85e" dependencies = [ "cosmic-config", "input", diff --git a/cosmic-settings/src/pages/desktop/workspaces.rs b/cosmic-settings/src/pages/desktop/workspaces.rs index c66c6c5c..5cc8de21 100644 --- a/cosmic-settings/src/pages/desktop/workspaces.rs +++ b/cosmic-settings/src/pages/desktop/workspaces.rs @@ -5,21 +5,27 @@ use cosmic::{ cosmic_config::{self, ConfigGet, ConfigSet}, - iced::Length, - widget::{radio, settings, text}, + iced::{widget, Alignment, Length}, + widget::{icon, radio, settings, text, ListColumn}, Apply, Element, }; -use cosmic_comp_config::workspace::{WorkspaceConfig, WorkspaceLayout, WorkspaceMode}; +use cosmic_comp_config::workspace::{ + WorkspaceConfig, WorkspaceLayout, WorkspaceMode, WorkspaceThumbnailPlacement, +}; use cosmic_settings_page::Section; use cosmic_settings_page::{self as page, section}; use slab::Slab; use slotmap::SlotMap; use tracing::error; +use crate::utils::system_has_touchpad; + #[derive(Clone, Debug)] pub enum Message { SetWorkspaceMode(WorkspaceMode), - SetWorkspaceLayout(WorkspaceLayout), + SetWorkspaceLayout(cosmic::widget::segmented_button::Entity), + SetWorkspaceThumbnailPlacement(usize), + ShowTrackpadGestureInfo(bool), SetShowName(bool), SetShowNumber(bool), } @@ -30,8 +36,56 @@ pub struct Page { comp_workspace_config: WorkspaceConfig, show_workspace_name: bool, show_workspace_number: bool, + show_trackpad_gesture: bool, + workspace_thumbnail_placement_options: Vec, + workspace_layout_model: cosmic::widget::segmented_button::SingleSelectModel, + selected_workspace_thumbnail_placement: usize, +} + +struct ThemedAsset { + light: &'static [u8], + dark: &'static [u8], +} + +impl ThemedAsset { + const fn new(light: &'static [u8], dark: &'static [u8]) -> Self { + Self { + light, + dark, + } + } +} + +impl From for widget::svg::Handle { + fn from(val: ThemedAsset) -> Self { + if cosmic::theme::active().cosmic().is_dark { + cosmic::iced_core::svg::Handle::from_memory(val.dark) + } else { + cosmic::iced_core::svg::Handle::from_memory(val.light) + } + } +} + +macro_rules! themed_asset { + ($slug:literal) => { + ThemedAsset::new(include_bytes!(concat!("../../../../resources/assets/", $slug, "-light.svg")), include_bytes!(concat!("../../../../resources/assets/", $slug, "-dark.svg"))) + } } +const WORKSPACE_SPAN_DISPLAY: ThemedAsset = themed_asset!("workspace-span-display"); +const WORKSPACE_SEPARATE_DISPLAY: ThemedAsset = themed_asset!("workspace-separate-display"); +const WORKSPACE_ORIENTATION_LEFT: ThemedAsset = themed_asset!("workspace-orientation-left"); +const WORKSPACE_ORIENTATION_RIGHT: ThemedAsset = themed_asset!("workspace-orientation-right"); +const WORKSPACE_ORIENTATION_TOP: ThemedAsset = themed_asset!("workspace-orientation-top"); +const WORKSPACE_ORIENTATION_BOTTOM: ThemedAsset = themed_asset!("workspace-orientation-bottom"); +const TRACKPAD_GESTURE_SWIPE_VERTICAL: ThemedAsset = themed_asset!("trackpad-gesture-swipe-vertical"); +const TRACKPAD_GESTURE_SWIPE_HORIZONTAL: ThemedAsset = themed_asset!("trackpad-gesture-swipe-horizontal"); +const TRACKPAD_GESTURE_SWIPE_LEFT: ThemedAsset = themed_asset!("trackpad-gesture-swipe-left"); +const TRACKPAD_GESTURE_SWIPE_UP: ThemedAsset = themed_asset!("trackpad-gesture-swipe-up"); +const TRACKPAD_GESTURE_SWIPE_RIGHT: ThemedAsset = themed_asset!("trackpad-gesture-swipe-right"); +const TRACKPAD_GESTURE_SWIPE_DOWN: ThemedAsset = themed_asset!("trackpad-gesture-swipe-down"); + + impl Default for Page { fn default() -> Self { let comp_config = cosmic_config::Config::new("com.system76.CosmicComp", 1).unwrap(); @@ -57,12 +111,44 @@ impl Default for Page { false }); + let workspace_thumbnail_placement_options = match comp_workspace_config.workspace_layout { + WorkspaceLayout::Horizontal => vec![ + fl!("workspaces-orientation", "top"), + fl!("workspaces-orientation", "bottom"), + ], + WorkspaceLayout::Vertical => vec![ + fl!("workspaces-orientation", "left"), + fl!("workspaces-orientation", "right"), + ], + }; + let mut workspace_layout_model = + cosmic::widget::segmented_button::SingleSelectModel::builder() + .insert(|b| { + b.text(fl!("workspaces-orientation", "vertical")) + .data(WorkspaceLayout::Vertical) + }) + .insert(|b| { + b.text(fl!("workspaces-orientation", "horizontal")) + .data(WorkspaceLayout::Horizontal) + }) + .build(); + workspace_layout_model.activate_position(match comp_workspace_config.workspace_layout { + WorkspaceLayout::Vertical => 0, + WorkspaceLayout::Horizontal => 1, + }); + let selected_workspace_thumbnail_placement = + comp_workspace_config.workspace_thumbnail_placement as usize % 2; + let show_trackpad_gesture = false; Self { config, comp_config, comp_workspace_config, show_workspace_name, show_workspace_number, + show_trackpad_gesture, + workspace_thumbnail_placement_options, + workspace_layout_model, + selected_workspace_thumbnail_placement, } } } @@ -75,6 +161,7 @@ impl page::Page for Page { Some(vec![ sections.insert(multi_behavior()), sections.insert(workspace_orientation()), + sections.insert(workspace_overview()), ]) } @@ -104,7 +191,65 @@ impl Page { self.save_comp_config(); } Message::SetWorkspaceLayout(value) => { - self.comp_workspace_config.workspace_layout = value; + self.comp_workspace_config.workspace_layout = *self + .workspace_layout_model + .data::(value) + .unwrap_or(&WorkspaceLayout::Vertical); + self.workspace_layout_model.activate_position( + match self.comp_workspace_config.workspace_layout { + WorkspaceLayout::Vertical => 0, + WorkspaceLayout::Horizontal => 1, + }, + ); + self.workspace_thumbnail_placement_options = + match self.comp_workspace_config.workspace_layout { + WorkspaceLayout::Horizontal => vec![ + fl!("workspaces-orientation", "top"), + fl!("workspaces-orientation", "bottom"), + ], + WorkspaceLayout::Vertical => vec![ + fl!("workspaces-orientation", "left"), + fl!("workspaces-orientation", "right"), + ], + }; + self.comp_workspace_config.workspace_thumbnail_placement = + match self.comp_workspace_config.workspace_layout { + WorkspaceLayout::Vertical => { + if self.selected_workspace_thumbnail_placement == 0 { + WorkspaceThumbnailPlacement::Left + } else { + WorkspaceThumbnailPlacement::Right + } + } + WorkspaceLayout::Horizontal => { + if self.selected_workspace_thumbnail_placement == 0 { + WorkspaceThumbnailPlacement::Top + } else { + WorkspaceThumbnailPlacement::Bottom + } + } + }; + self.save_comp_config(); + } + Message::SetWorkspaceThumbnailPlacement(value) => { + self.comp_workspace_config.workspace_thumbnail_placement = + match self.comp_workspace_config.workspace_layout { + WorkspaceLayout::Vertical => { + if value == 0 { + WorkspaceThumbnailPlacement::Left + } else { + WorkspaceThumbnailPlacement::Right + } + } + WorkspaceLayout::Horizontal => { + if value == 0 { + WorkspaceThumbnailPlacement::Top + } else { + WorkspaceThumbnailPlacement::Bottom + } + } + }; + self.selected_workspace_thumbnail_placement = value; self.save_comp_config(); } Message::SetShowName(value) => { @@ -119,6 +264,9 @@ impl Page { error!(?err, "Failed to set config 'show_workspace_number'"); } } + Message::ShowTrackpadGestureInfo(value) => { + self.show_trackpad_gesture = value; + } } } } @@ -134,58 +282,232 @@ fn multi_behavior() -> Section { .descriptions(descriptions) .view::(move |_binder, page, section| { let descriptions = §ion.descriptions; - settings::section() + cosmic::widget::settings::section::with_column( + ListColumn::default() + .add( + cosmic::iced::widget::column!( + widget::vertical_space().height(1), + settings::item_row(vec![radio( + text::body(&descriptions[span]), + WorkspaceMode::Global, + Some(page.comp_workspace_config.workspace_mode), + Message::SetWorkspaceMode, + ) + .width(Length::Fill) + .into()]), + cosmic::iced::widget::svg(WORKSPACE_SPAN_DISPLAY) + ) + .spacing(cosmic::theme::active().cosmic().space_s()) + .align_x(Alignment::Center), + ) + .add( + cosmic::iced::widget::column!( + widget::vertical_space().height(1), + settings::item_row(vec![radio( + text::body(&descriptions[separate]), + WorkspaceMode::OutputBound, + Some(page.comp_workspace_config.workspace_mode), + Message::SetWorkspaceMode, + ) + .width(Length::Fill) + .into()]), + cosmic::iced::widget::svg( + WORKSPACE_SEPARATE_DISPLAY + ) + ) + .spacing(cosmic::theme::active().cosmic().space_s()) + .align_x(Alignment::Center), + ) + .spacing(0), + ) + .title(§ion.title) + .apply(Element::from) + .map(crate::pages::Message::DesktopWorkspaces) + }) +} + +fn workspace_orientation() -> Section { + let mut descriptions = Slab::new(); + + let thumbnail_placement_label = + descriptions.insert(fl!("workspaces-orientation", "thumbnail-placement")); + let trackpad_gestures = descriptions.insert(fl!("workspaces-orientation", "trackpad-gestures")); + + let switch_workspace = descriptions.insert(fl!("workspaces-orientation", "switch-workspace")); + let open_workspaces = descriptions.insert(fl!("workspaces-orientation", "open-workspaces")); + let open_applications = descriptions.insert(fl!("workspaces-orientation", "open-applications")); + + let swipe_horizontal = descriptions.insert(fl!("workspaces-orientation", "swipe-horizontal")); + let swipe_vertical = descriptions.insert(fl!("workspaces-orientation", "swipe-vertical")); + let swipe_up = descriptions.insert(fl!("workspaces-orientation", "swipe-up")); + let swipe_down = descriptions.insert(fl!("workspaces-orientation", "swipe-down")); + let swipe_left = descriptions.insert(fl!("workspaces-orientation", "swipe-left")); + let swipe_right = descriptions.insert(fl!("workspaces-orientation", "swipe-right")); + + Section::default() + .title(fl!("workspaces-orientation")) + .descriptions(descriptions) + .view::(move |_binder, page, section| { + let descriptions = §ion.descriptions; + + let thumbnail_placement = cosmic::widget::dropdown( + &page.workspace_thumbnail_placement_options, + Some(page.selected_workspace_thumbnail_placement), + Message::SetWorkspaceThumbnailPlacement, + ); + let mut section = settings::section() .title(§ion.title) - .add(settings::item_row(vec![radio( - text::body(&descriptions[span]), - WorkspaceMode::Global, - Some(page.comp_workspace_config.workspace_mode), - Message::SetWorkspaceMode, - ) - .width(Length::Fill) - .into()])) - .add(settings::item_row(vec![radio( - text::body(&descriptions[separate]), - WorkspaceMode::OutputBound, - Some(page.comp_workspace_config.workspace_mode), - Message::SetWorkspaceMode, + .add( + cosmic::iced::widget::column!( + cosmic::iced::widget::svg( + match page.comp_workspace_config.workspace_thumbnail_placement { + WorkspaceThumbnailPlacement::Left => + WORKSPACE_ORIENTATION_LEFT, + WorkspaceThumbnailPlacement::Right => + WORKSPACE_ORIENTATION_RIGHT, + WorkspaceThumbnailPlacement::Top => + WORKSPACE_ORIENTATION_TOP, + WorkspaceThumbnailPlacement::Bottom => + WORKSPACE_ORIENTATION_BOTTOM, + } + ), + cosmic::iced::widget::container( + cosmic::widget::segmented_control::horizontal( + &page.workspace_layout_model + ) + .minimum_button_width(0) + .on_activate(Message::SetWorkspaceLayout) + ) + .width(320.0) + .height(32.0), + ) + .spacing(cosmic::theme::active().cosmic().space_m()) + .align_x(Alignment::Center), ) - .width(Length::Fill) - .into()])) + .add(settings::item( + &descriptions[thumbnail_placement_label], + thumbnail_placement, + )); + if system_has_touchpad() { + section = section + .add( + cosmic::iced::widget::MouseArea::new(settings::item( + &descriptions[trackpad_gestures], + cosmic::iced::widget::container( + icon::from_name(if page.show_trackpad_gesture { + "go-up-symbolic" + } else { + "go-down-symbolic" + }) + .size(16), + ) + .width(Length::Shrink), + )) + .on_press(Message::ShowTrackpadGestureInfo( + !page.show_trackpad_gesture, + )), + ); + if page.show_trackpad_gesture { + let (switch_ws, open_ws, open_app) = + match page.comp_workspace_config.workspace_layout { + WorkspaceLayout::Vertical => ( + TRACKPAD_GESTURE_SWIPE_VERTICAL, + TRACKPAD_GESTURE_SWIPE_LEFT, + TRACKPAD_GESTURE_SWIPE_RIGHT, + ), + WorkspaceLayout::Horizontal => ( + TRACKPAD_GESTURE_SWIPE_HORIZONTAL, + TRACKPAD_GESTURE_SWIPE_UP, + TRACKPAD_GESTURE_SWIPE_DOWN, + ), + }; + let (switch_ws_label, open_ws_label, open_app_label) = + match page.comp_workspace_config.workspace_layout { + WorkspaceLayout::Vertical => (swipe_vertical, swipe_left, swipe_right), + WorkspaceLayout::Horizontal => (swipe_horizontal, swipe_up, swipe_down), + }; + section = section.add( + cosmic::widget::list_column() + .padding([0, 32]) + .add( + cosmic::iced::widget::row!( + text(&descriptions[switch_workspace]), + cosmic::iced::widget::horizontal_space().width(2), + text(&descriptions[switch_ws_label]).font(cosmic::font::bold()), + cosmic::iced::widget::horizontal_space().width(Length::Fill), + cosmic::iced::widget::container(cosmic::iced::widget::svg( + switch_ws + )) + .width(115) + .height(92) + ) + .width(Length::Fill) + .align_y(Alignment::Center) + .padding([0, 16]), + ) + .add( + cosmic::iced::widget::row!( + text(&descriptions[open_workspaces]), + cosmic::iced::widget::horizontal_space().width(2), + text(&descriptions[open_ws_label]).font(cosmic::font::bold()), + cosmic::iced::widget::horizontal_space().width(Length::Fill), + cosmic::iced::widget::container(cosmic::iced::widget::svg(open_ws)) + .width(115) + .height(92) + ) + .width(Length::Fill) + .align_y(Alignment::Center) + .padding([0, 16]), + ) + .add( + cosmic::widget::list_column().add( + cosmic::iced::widget::row!( + text(&descriptions[open_applications]), + cosmic::iced::widget::horizontal_space().width(2), + text(&descriptions[open_app_label]).font(cosmic::font::bold()), + cosmic::iced::widget::horizontal_space().width(Length::Fill), + cosmic::iced::widget::container(cosmic::iced::widget::svg( + open_app + )) + .width(115) + .height(92) + ) + .width(Length::Fill) + .align_y(Alignment::Center) + .padding([0, 16]), + ), + ), + ); + } + } + + section .apply(Element::from) .map(crate::pages::Message::DesktopWorkspaces) }) } -fn workspace_orientation() -> Section { +fn workspace_overview() -> Section { let mut descriptions = Slab::new(); - let vertical = descriptions.insert(fl!("workspaces-orientation", "vertical")); - let horizontal = descriptions.insert(fl!("workspaces-orientation", "horizontal")); + let show_number = descriptions.insert(fl!("workspaces-overview-thumbnails", "show-number")); + let show_name = descriptions.insert(fl!("workspaces-overview-thumbnails", "show-name")); Section::default() - .title(fl!("workspaces-orientation")) + .title(fl!("workspaces-overview-thumbnails")) .descriptions(descriptions) .view::(move |_binder, page, section| { let descriptions = §ion.descriptions; settings::section() .title(§ion.title) - .add(settings::item_row(vec![radio( - text::body(&descriptions[vertical]), - WorkspaceLayout::Vertical, - Some(page.comp_workspace_config.workspace_layout), - Message::SetWorkspaceLayout, + .add( + settings::item::builder(&descriptions[show_number]) + .toggler(page.show_workspace_name, Message::SetShowName), ) - .width(Length::Fill) - .into()])) - .add(settings::item_row(vec![radio( - text::body(&descriptions[horizontal]), - WorkspaceLayout::Horizontal, - Some(page.comp_workspace_config.workspace_layout), - Message::SetWorkspaceLayout, + .add( + settings::item::builder(&descriptions[show_name]) + .toggler(page.show_workspace_number, Message::SetShowNumber), ) - .width(Length::Fill) - .into()])) .apply(Element::from) .map(crate::pages::Message::DesktopWorkspaces) }) diff --git a/cosmic-settings/src/pages/input/mod.rs b/cosmic-settings/src/pages/input/mod.rs index e1573907..a0663b30 100644 --- a/cosmic-settings/src/pages/input/mod.rs +++ b/cosmic-settings/src/pages/input/mod.rs @@ -1,4 +1,4 @@ -use crate::app; +use crate::{app, utils::system_has_touchpad}; use cosmic::{ cosmic_config::{self, ConfigGet, ConfigSet}, Task, @@ -200,22 +200,3 @@ impl page::AutoBind for Page { } } } - -/// Uses `udev` to check if a touchpad device exists on the system. -fn system_has_touchpad() -> bool { - let Ok(mut enumerator) = udev::Enumerator::new() else { - return false; - }; - - let _res = enumerator.match_subsystem("input"); - - let Ok(mut devices) = enumerator.scan_devices() else { - return false; - }; - - devices.any(|device| { - device - .property_value("ID_INPUT_TOUCHPAD") - .map_or(false, |value| value == "1") - }) -} diff --git a/cosmic-settings/src/utils.rs b/cosmic-settings/src/utils.rs index 7fe5c186..e917c58d 100644 --- a/cosmic-settings/src/utils.rs +++ b/cosmic-settings/src/utils.rs @@ -58,6 +58,25 @@ pub fn map_stderr_output(result: io::Result) -> Result<(), Stri }) } +/// Uses `udev` to check if a touchpad device exists on the system. +pub fn system_has_touchpad() -> bool { + let Ok(mut enumerator) = udev::Enumerator::new() else { + return false; + }; + + let _res = enumerator.match_subsystem("input"); + + let Ok(mut devices) = enumerator.scan_devices() else { + return false; + }; + + devices.any(|device| { + device + .property_value("ID_INPUT_TOUCHPAD") + .map_or(false, |value| value == "1") + }) +} + /// Creates a slab with predefined items #[macro_export] macro_rules! slab { diff --git a/i18n/en/cosmic_settings.ftl b/i18n/en/cosmic_settings.ftl index 575ed7e0..8456408c 100644 --- a/i18n/en/cosmic_settings.ftl +++ b/i18n/en/cosmic_settings.ftl @@ -335,6 +335,21 @@ workspaces-overview-thumbnails = Workspace Overview Thumbnails workspaces-orientation = Workspaces Orientation .vertical = Vertical .horizontal = Horizontal + .thumbnail-placement = Thumbnail placement + .left = Left + .right = Right + .top = Top + .bottom = Bottom + .trackpad-gestures = Trackpad gestures + .switch-workspace = Switch Workspace with Four-Finger + .open-workspaces = Open Workspaces with Four-Finger + .open-applications = Open Applications with Four-Finger + .swipe-horizontal = Swipe Left/Right + .swipe-vertical = Swipe Up/Down + .swipe-up = Swipe Up + .swipe-down = Swipe Down + .swipe-left = Swipe Left + .swipe-right = Swipe Right hot-corner = Hot Corner .top-left-corner = Enable top-left hot corner for Workspaces diff --git a/i18n/fr/cosmic_settings.ftl b/i18n/fr/cosmic_settings.ftl index fe4965b9..0ea5d547 100644 --- a/i18n/fr/cosmic_settings.ftl +++ b/i18n/fr/cosmic_settings.ftl @@ -302,6 +302,21 @@ workspaces-overview-thumbnails = Vignettes de l'aperçu des espaces de travail workspaces-orientation = Orientation des espaces de travail .vertical = Verticale .horizontal = Horizontale + .thumbnail-placement = Positionnement des aperçus + .left = Gauche + .right = Droite + .top = Haut + .bottom = Bas + .trackpad-gestures = Gestes sur le pavé tactile + .switch-workspace = Changement de l'espace de travail avec quatre doigts + .open-workspaces = Overture des espaces de travails avec quatre doigts + .open-applications = Overture des applications avec quatre doigts + .swipe-horizontal = Balayage à Gauche/Droite + .swipe-vertical = Balayage en Haut/Bas + .swipe-up = Balayage en Haut + .swipe-down = Balayage en Bas + .swipe-left = Balayage à Gauche + .swipe-right = Balayage à Droite hot-corner = Coin actif .top-left-corner = Activer le coin actif en haut à gauche pour les espaces de travail diff --git a/resources/assets/trackpad-gesture-swipe-down-dark.svg b/resources/assets/trackpad-gesture-swipe-down-dark.svg new file mode 100644 index 00000000..471c6119 --- /dev/null +++ b/resources/assets/trackpad-gesture-swipe-down-dark.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/trackpad-gesture-swipe-down-light.svg b/resources/assets/trackpad-gesture-swipe-down-light.svg new file mode 100644 index 00000000..109cd636 --- /dev/null +++ b/resources/assets/trackpad-gesture-swipe-down-light.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/trackpad-gesture-swipe-horizontal-dark.svg b/resources/assets/trackpad-gesture-swipe-horizontal-dark.svg new file mode 100644 index 00000000..d61ddd0c --- /dev/null +++ b/resources/assets/trackpad-gesture-swipe-horizontal-dark.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/trackpad-gesture-swipe-horizontal-light.svg b/resources/assets/trackpad-gesture-swipe-horizontal-light.svg new file mode 100644 index 00000000..7d548d24 --- /dev/null +++ b/resources/assets/trackpad-gesture-swipe-horizontal-light.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/trackpad-gesture-swipe-left-dark.svg b/resources/assets/trackpad-gesture-swipe-left-dark.svg new file mode 100644 index 00000000..09c315c9 --- /dev/null +++ b/resources/assets/trackpad-gesture-swipe-left-dark.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/trackpad-gesture-swipe-left-light.svg b/resources/assets/trackpad-gesture-swipe-left-light.svg new file mode 100644 index 00000000..858124a5 --- /dev/null +++ b/resources/assets/trackpad-gesture-swipe-left-light.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/trackpad-gesture-swipe-right-dark.svg b/resources/assets/trackpad-gesture-swipe-right-dark.svg new file mode 100644 index 00000000..87fb19f4 --- /dev/null +++ b/resources/assets/trackpad-gesture-swipe-right-dark.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/trackpad-gesture-swipe-right-light.svg b/resources/assets/trackpad-gesture-swipe-right-light.svg new file mode 100644 index 00000000..c8dc2d08 --- /dev/null +++ b/resources/assets/trackpad-gesture-swipe-right-light.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/trackpad-gesture-swipe-up-dark.svg b/resources/assets/trackpad-gesture-swipe-up-dark.svg new file mode 100644 index 00000000..c198c2ea --- /dev/null +++ b/resources/assets/trackpad-gesture-swipe-up-dark.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/trackpad-gesture-swipe-up-light.svg b/resources/assets/trackpad-gesture-swipe-up-light.svg new file mode 100644 index 00000000..d2295307 --- /dev/null +++ b/resources/assets/trackpad-gesture-swipe-up-light.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/trackpad-gesture-swipe-vertical-dark.svg b/resources/assets/trackpad-gesture-swipe-vertical-dark.svg new file mode 100644 index 00000000..65ee0f5f --- /dev/null +++ b/resources/assets/trackpad-gesture-swipe-vertical-dark.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/trackpad-gesture-swipe-vertical-light.svg b/resources/assets/trackpad-gesture-swipe-vertical-light.svg new file mode 100644 index 00000000..75ff564a --- /dev/null +++ b/resources/assets/trackpad-gesture-swipe-vertical-light.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/workspace-orientation-bottom-dark.svg b/resources/assets/workspace-orientation-bottom-dark.svg new file mode 100644 index 00000000..bd0e707e --- /dev/null +++ b/resources/assets/workspace-orientation-bottom-dark.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/workspace-orientation-bottom-light.svg b/resources/assets/workspace-orientation-bottom-light.svg new file mode 100644 index 00000000..03dc6ee1 --- /dev/null +++ b/resources/assets/workspace-orientation-bottom-light.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/resources/assets/workspace-orientation-left-dark.svg b/resources/assets/workspace-orientation-left-dark.svg new file mode 100644 index 00000000..32608cd9 --- /dev/null +++ b/resources/assets/workspace-orientation-left-dark.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/workspace-orientation-left-light.svg b/resources/assets/workspace-orientation-left-light.svg new file mode 100644 index 00000000..4f40ef9e --- /dev/null +++ b/resources/assets/workspace-orientation-left-light.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/resources/assets/workspace-orientation-right-dark.svg b/resources/assets/workspace-orientation-right-dark.svg new file mode 100644 index 00000000..72fe697e --- /dev/null +++ b/resources/assets/workspace-orientation-right-dark.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/workspace-orientation-right-light.svg b/resources/assets/workspace-orientation-right-light.svg new file mode 100644 index 00000000..427555e2 --- /dev/null +++ b/resources/assets/workspace-orientation-right-light.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/workspace-orientation-top-dark.svg b/resources/assets/workspace-orientation-top-dark.svg new file mode 100644 index 00000000..54954f8e --- /dev/null +++ b/resources/assets/workspace-orientation-top-dark.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/workspace-orientation-top-light.svg b/resources/assets/workspace-orientation-top-light.svg new file mode 100644 index 00000000..59debe6c --- /dev/null +++ b/resources/assets/workspace-orientation-top-light.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/resources/assets/workspace-separate-display-dark.svg b/resources/assets/workspace-separate-display-dark.svg new file mode 100644 index 00000000..320c8e00 --- /dev/null +++ b/resources/assets/workspace-separate-display-dark.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/workspace-separate-display-light.svg b/resources/assets/workspace-separate-display-light.svg new file mode 100644 index 00000000..e5b789c7 --- /dev/null +++ b/resources/assets/workspace-separate-display-light.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/workspace-span-display-dark.svg b/resources/assets/workspace-span-display-dark.svg new file mode 100644 index 00000000..092c0372 --- /dev/null +++ b/resources/assets/workspace-span-display-dark.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/workspace-span-display-light.svg b/resources/assets/workspace-span-display-light.svg new file mode 100644 index 00000000..7ccd3cd6 --- /dev/null +++ b/resources/assets/workspace-span-display-light.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file