diff --git a/resources-linux/defguard-client.spec b/resources-linux/defguard-client.spec index 55391de0..002ad010 100644 --- a/resources-linux/defguard-client.spec +++ b/resources-linux/defguard-client.spec @@ -21,14 +21,8 @@ Desktop client for managing WireGuard VPN connections %{__mkdir} -p %{buildroot}/%{_datadir}/icons/hicolor/32x32/apps %{__install} -m 755 src-tauri/target/release/defguard-client %{buildroot}/%{_bindir}/ %{__install} -m 755 src-tauri/target/release/defguard-service %{buildroot}/%{_sbindir}/ -%{__install} -m 644 src-tauri/target/release/resources/icons/tray-32x32-black.png %{buildroot}/%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-black.png -%{__install} -m 644 src-tauri/target/release/resources/icons/tray-32x32-black-active.png %{buildroot}/%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-black-active.png -%{__install} -m 644 src-tauri/target/release/resources/icons/tray-32x32-color.png %{buildroot}/%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-color.png -%{__install} -m 644 src-tauri/target/release/resources/icons/tray-32x32-color-active.png %{buildroot}/%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-color-active.png -%{__install} -m 644 src-tauri/target/release/resources/icons/tray-32x32-gray.png %{buildroot}/%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-gray.png -%{__install} -m 644 src-tauri/target/release/resources/icons/tray-32x32-gray-active.png %{buildroot}/%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-gray-active.png -%{__install} -m 644 src-tauri/target/release/resources/icons/tray-32x32-white.png %{buildroot}/%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-white.png -%{__install} -m 644 src-tauri/target/release/resources/icons/tray-32x32-white-active.png %{buildroot}/%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-white-active.png +%{__install} -m 644 src-tauri/target/release/resources/icons/tray-32x32.png %{buildroot}/%{_prefix}/lib/defguard-client/resources/icons/tray-32x32.png +%{__install} -m 644 src-tauri/target/release/resources/icons/tray-32x32-active.png %{buildroot}/%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-active.png %{__install} -m 644 resources-linux/defguard-service.service %{buildroot}/%{_prefix}/lib/systemd/system/ %{__install} -m 644 resources-linux/defguard-client.desktop %{buildroot}/%{_datadir}/applications/defguard-client.desktop %{__install} -m 644 src-tauri/icons/128x128.png %{buildroot}/%{_datadir}/icons/hicolor/128x128/apps/defguard-client.png @@ -57,14 +51,8 @@ systemctl daemon-reload %files %{_bindir}/defguard-client %{_sbindir}/defguard-service -%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-black.png -%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-black-active.png -%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-color.png -%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-color-active.png -%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-gray.png -%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-gray-active.png -%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-white.png -%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-white-active.png +%{_prefix}/lib/defguard-client/resources/icons/tray-32x32.png +%{_prefix}/lib/defguard-client/resources/icons/tray-32x32-active.png %{_prefix}/lib/systemd/system/defguard-service.service %{_datadir}/applications/defguard-client.desktop %{_datadir}/icons/hicolor/128x128/apps/defguard-client.png diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png index aadd4c3a..a5fbf1b5 100644 Binary files a/src-tauri/icons/128x128.png and b/src-tauri/icons/128x128.png differ diff --git a/src-tauri/icons/128x128@2x.png b/src-tauri/icons/128x128@2x.png index 8ac9864d..d61c59bb 100644 Binary files a/src-tauri/icons/128x128@2x.png and b/src-tauri/icons/128x128@2x.png differ diff --git a/src-tauri/icons/32x32.png b/src-tauri/icons/32x32.png index 64246526..d572ac2f 100644 Binary files a/src-tauri/icons/32x32.png and b/src-tauri/icons/32x32.png differ diff --git a/src-tauri/icons/64x64.png b/src-tauri/icons/64x64.png new file mode 100644 index 00000000..83e4294c Binary files /dev/null and b/src-tauri/icons/64x64.png differ diff --git a/src-tauri/icons/Square107x107Logo.png b/src-tauri/icons/Square107x107Logo.png index d5a40dc7..2f31b3a4 100644 Binary files a/src-tauri/icons/Square107x107Logo.png and b/src-tauri/icons/Square107x107Logo.png differ diff --git a/src-tauri/icons/Square142x142Logo.png b/src-tauri/icons/Square142x142Logo.png index 9c5db8e7..0a13eef8 100644 Binary files a/src-tauri/icons/Square142x142Logo.png and b/src-tauri/icons/Square142x142Logo.png differ diff --git a/src-tauri/icons/Square150x150Logo.png b/src-tauri/icons/Square150x150Logo.png index c0bd24c9..17d391a7 100644 Binary files a/src-tauri/icons/Square150x150Logo.png and b/src-tauri/icons/Square150x150Logo.png differ diff --git a/src-tauri/icons/Square284x284Logo.png b/src-tauri/icons/Square284x284Logo.png index 3c4f099a..179d8651 100644 Binary files a/src-tauri/icons/Square284x284Logo.png and b/src-tauri/icons/Square284x284Logo.png differ diff --git a/src-tauri/icons/Square30x30Logo.png b/src-tauri/icons/Square30x30Logo.png index 3a8afb21..7e7b23fc 100644 Binary files a/src-tauri/icons/Square30x30Logo.png and b/src-tauri/icons/Square30x30Logo.png differ diff --git a/src-tauri/icons/Square310x310Logo.png b/src-tauri/icons/Square310x310Logo.png index 08e2174c..acaed3a8 100644 Binary files a/src-tauri/icons/Square310x310Logo.png and b/src-tauri/icons/Square310x310Logo.png differ diff --git a/src-tauri/icons/Square44x44Logo.png b/src-tauri/icons/Square44x44Logo.png index e74a882f..8271dd7a 100644 Binary files a/src-tauri/icons/Square44x44Logo.png and b/src-tauri/icons/Square44x44Logo.png differ diff --git a/src-tauri/icons/Square71x71Logo.png b/src-tauri/icons/Square71x71Logo.png index 2920aaa6..5bf859a4 100644 Binary files a/src-tauri/icons/Square71x71Logo.png and b/src-tauri/icons/Square71x71Logo.png differ diff --git a/src-tauri/icons/Square89x89Logo.png b/src-tauri/icons/Square89x89Logo.png index e449a4d5..abf26cac 100644 Binary files a/src-tauri/icons/Square89x89Logo.png and b/src-tauri/icons/Square89x89Logo.png differ diff --git a/src-tauri/icons/StoreLogo.png b/src-tauri/icons/StoreLogo.png index e2c596cb..1226ab8b 100644 Binary files a/src-tauri/icons/StoreLogo.png and b/src-tauri/icons/StoreLogo.png differ diff --git a/src-tauri/icons/icon.icns b/src-tauri/icons/icon.icns index d963baeb..49cb0086 100644 Binary files a/src-tauri/icons/icon.icns and b/src-tauri/icons/icon.icns differ diff --git a/src-tauri/icons/icon.ico b/src-tauri/icons/icon.ico index 20a0d9c3..464126c7 100644 Binary files a/src-tauri/icons/icon.ico and b/src-tauri/icons/icon.ico differ diff --git a/src-tauri/icons/icon.png b/src-tauri/icons/icon.png index 8ee5d77e..c17f374e 100644 Binary files a/src-tauri/icons/icon.png and b/src-tauri/icons/icon.png differ diff --git a/src-tauri/resources/icons/tray-32x32-active.png b/src-tauri/resources/icons/tray-32x32-active.png new file mode 100644 index 00000000..b9aa2784 Binary files /dev/null and b/src-tauri/resources/icons/tray-32x32-active.png differ diff --git a/src-tauri/resources/icons/tray-32x32-black-active.png b/src-tauri/resources/icons/tray-32x32-black-active.png deleted file mode 100644 index 69e37b71..00000000 Binary files a/src-tauri/resources/icons/tray-32x32-black-active.png and /dev/null differ diff --git a/src-tauri/resources/icons/tray-32x32-black.png b/src-tauri/resources/icons/tray-32x32-black.png deleted file mode 100644 index 62a64e76..00000000 Binary files a/src-tauri/resources/icons/tray-32x32-black.png and /dev/null differ diff --git a/src-tauri/resources/icons/tray-32x32-color-active.png b/src-tauri/resources/icons/tray-32x32-color-active.png deleted file mode 100644 index 5602c620..00000000 Binary files a/src-tauri/resources/icons/tray-32x32-color-active.png and /dev/null differ diff --git a/src-tauri/resources/icons/tray-32x32-color.png b/src-tauri/resources/icons/tray-32x32-color.png deleted file mode 100644 index 7a809fb8..00000000 Binary files a/src-tauri/resources/icons/tray-32x32-color.png and /dev/null differ diff --git a/src-tauri/resources/icons/tray-32x32-gray-active.png b/src-tauri/resources/icons/tray-32x32-gray-active.png deleted file mode 100644 index 9ab5bd44..00000000 Binary files a/src-tauri/resources/icons/tray-32x32-gray-active.png and /dev/null differ diff --git a/src-tauri/resources/icons/tray-32x32-gray.png b/src-tauri/resources/icons/tray-32x32-gray.png deleted file mode 100644 index 3352072f..00000000 Binary files a/src-tauri/resources/icons/tray-32x32-gray.png and /dev/null differ diff --git a/src-tauri/resources/icons/tray-32x32-white-active.png b/src-tauri/resources/icons/tray-32x32-white-active.png deleted file mode 100644 index f674c43b..00000000 Binary files a/src-tauri/resources/icons/tray-32x32-white-active.png and /dev/null differ diff --git a/src-tauri/resources/icons/tray-32x32-white.png b/src-tauri/resources/icons/tray-32x32-white.png deleted file mode 100644 index b7b2e5da..00000000 Binary files a/src-tauri/resources/icons/tray-32x32-white.png and /dev/null differ diff --git a/src-tauri/resources/icons/tray-32x32.png b/src-tauri/resources/icons/tray-32x32.png new file mode 100644 index 00000000..790c3dcd Binary files /dev/null and b/src-tauri/resources/icons/tray-32x32.png differ diff --git a/src-tauri/src/app_config.rs b/src-tauri/src/app_config.rs index 731b54e5..8c067573 100644 --- a/src-tauri/src/app_config.rs +++ b/src-tauri/src/app_config.rs @@ -6,7 +6,6 @@ use std::{ use log::LevelFilter; use serde::{Deserialize, Serialize}; use struct_patch::Patch; -use strum::{AsRefStr, EnumString}; use tauri::{AppHandle, Manager}; #[cfg(unix)] @@ -48,16 +47,6 @@ pub enum AppTheme { Dark, } -#[derive(AsRefStr, Clone, Copy, Debug, Deserialize, EnumString, PartialEq, Serialize)] -#[strum(serialize_all = "lowercase")] -#[serde(rename_all = "lowercase")] -pub enum AppTrayTheme { - Color, - White, - Black, - Gray, -} - // config stored in config.json in app data // config is loaded once at startup and saved when modified to the app data file // information's needed at startup of the application. @@ -65,7 +54,6 @@ pub enum AppTrayTheme { #[patch(attribute(derive(Debug, Deserialize, Serialize)))] pub struct AppConfig { pub theme: AppTheme, - pub tray_theme: AppTrayTheme, pub check_for_updates: bool, pub log_level: LevelFilter, /// In seconds. How much time after last network activity the connection is automatically dropped. @@ -80,7 +68,6 @@ impl Default for AppConfig { Self { theme: AppTheme::Light, check_for_updates: true, - tray_theme: AppTrayTheme::Color, log_level: LevelFilter::Info, peer_alive_period: 300, mtu: 0, diff --git a/src-tauri/src/commands.rs b/src-tauri/src/commands.rs index bdf0df35..9f5d24b8 100644 --- a/src-tauri/src/commands.rs +++ b/src-tauri/src/commands.rs @@ -1527,7 +1527,6 @@ pub async fn command_set_app_config( let app_state = app_handle.state::(); debug!("Command set app config received."); trace!("Command payload: {config_patch:?}"); - let tray_changed = config_patch.tray_theme.is_some(); let res = { let mut app_config = app_state.app_config.lock().unwrap(); app_config.apply(config_patch); @@ -1535,13 +1534,6 @@ pub async fn command_set_app_config( app_config.clone() }; info!("Config changed successfully"); - if tray_changed { - debug!("Tray theme included in config change, tray will be updated."); - match configure_tray_icon(&app_handle).await { - Ok(()) => debug!("Tray updated upon config change"), - Err(err) => error!("Tray change failed. Reason: {err}"), - } - } if emit_event { match app_handle.emit(EventKey::ApplicationConfigChanged.into(), ()) { Ok(()) => debug!("Config changed event emitted successfully"), diff --git a/src-tauri/src/tray.rs b/src-tauri/src/tray.rs index 5f941739..daa0bf0f 100644 --- a/src-tauri/src/tray.rs +++ b/src-tauri/src/tray.rs @@ -280,16 +280,12 @@ pub fn handle_tray_menu_event(app: &AppHandle, event: MenuEvent) { /// Show correct system tray icon, depending on the theme and connection status. pub async fn configure_tray_icon(app_handle: &AppHandle) -> Result<(), Error> { - let state = app_handle.state::(); - let theme = state.app_config.lock().unwrap().tray_theme; - let Some(tray_icon) = app_handle.tray_by_id(TRAY_ICON_ID) else { error!("System tray menu not initialized."); return Ok(()); }; - let mut resource_str = String::from("resources/icons/tray-32x32-"); - resource_str.push_str(theme.as_ref()); + let mut resource_str = String::from("resources/icons/tray-32x32"); let active_connections = ACTIVE_CONNECTIONS.lock().await; if !active_connections.is_empty() { resource_str.push_str("-active"); diff --git a/src/pages/client/clientAPI/types.ts b/src/pages/client/clientAPI/types.ts index b6439509..9b8f2670 100644 --- a/src/pages/client/clientAPI/types.ts +++ b/src/pages/client/clientAPI/types.ts @@ -43,10 +43,6 @@ export type SaveTunnelRequest = { response: CreateDeviceResponse; }; -export type TrayIconTheme = 'color' | 'white' | 'black' | 'gray'; - -export const availableTrayThemes: TrayIconTheme[] = ['color', 'white', 'gray', 'black']; - export type LogLevel = 'ERROR' | 'INFO' | 'DEBUG' | 'TRACE' | 'WARN'; export const availableLogLevels: LogLevel[] = ['ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE']; @@ -77,7 +73,6 @@ export type InterfaceLogsRequest = { export type AppConfig = { theme: ThemeKey; log_level: LogLevel; - tray_theme: TrayIconTheme; check_for_updates: boolean; peer_alive_period: number; mtu: number; diff --git a/src/pages/client/hooks/useClientStore.tsx b/src/pages/client/hooks/useClientStore.tsx index a722d8c5..fca2b30f 100644 --- a/src/pages/client/hooks/useClientStore.tsx +++ b/src/pages/client/hooks/useClientStore.tsx @@ -32,7 +32,6 @@ const defaultValues: StoreValues = { appConfig: { log_level: 'INFO', theme: 'light', - tray_theme: 'color', check_for_updates: true, peer_alive_period: 300, mtu: 0, diff --git a/src/pages/client/pages/ClientSettingsPage/components/GlobalSettingsTab/GlobalSettingsTab.tsx b/src/pages/client/pages/ClientSettingsPage/components/GlobalSettingsTab/GlobalSettingsTab.tsx index 8f2ff8a5..82497606 100644 --- a/src/pages/client/pages/ClientSettingsPage/components/GlobalSettingsTab/GlobalSettingsTab.tsx +++ b/src/pages/client/pages/ClientSettingsPage/components/GlobalSettingsTab/GlobalSettingsTab.tsx @@ -34,9 +34,7 @@ import { import { type AppConfig, availableLogLevels, - availableTrayThemes, type LogLevel, - type TrayIconTheme, } from '../../../../clientAPI/types'; import { useClientStore } from '../../../../hooks/useClientStore'; @@ -70,10 +68,6 @@ export const GlobalSettingsTab = () => { .string() .min(1, LL.form.errors.required()) .refine((v) => availableLogLevels.includes(v as LogLevel)), - tray_theme: z - .string() - .min(1, LL.form.errors.required()) - .refine((v) => availableTrayThemes.includes(v as TrayIconTheme)), check_for_updates: z.boolean(), peer_alive_period: z .number({ @@ -122,10 +116,6 @@ export const GlobalSettingsTab = () => {

{localLL.versionUpdate.title()}

-
-

{localLL.tray.title()}

- -

{localLL.logging.title()}

@@ -275,64 +265,6 @@ const LoggingLevelSelect = ({ controller }: FormMemberProps) => { ); }; -const TrayIconThemeSelect = ({ controller }: FormMemberProps) => { - const { LL } = useI18nContext(); - const localLL = LL.pages.client.pages.settingsPage.tabs.global; - - const trayThemeSelectOptions = useMemo((): SelectOption[] => { - const res: SelectOption[] = [ - { - label: localLL.tray.options.color(), - value: 'color', - key: 0, - }, - { - value: 'gray', - key: 1, - label: localLL.tray.options.gray(), - }, - { - value: 'white', - key: 2, - label: localLL.tray.options.white(), - }, - { - value: 'black', - key: 3, - label: localLL.tray.options.black(), - }, - ]; - return res; - }, [localLL.tray.options]); - - const renderSelectedTrayTheme = useCallback( - (theme: TrayIconTheme): SelectSelectedValue => { - const option = trayThemeSelectOptions.find((t) => t.value === theme); - if (option) { - return { - key: option.key, - displayValue: option.label, - }; - } - return { - key: 'color', - displayValue: 'color', - }; - }, - [trayThemeSelectOptions], - ); - - return ( - - ); -}; - const CheckForUpdatesOption = ({ controller }: FormMemberProps) => { const { LL } = useI18nContext(); const localLL = LL.pages.client.pages.settingsPage.tabs.global;