From cc8232e0efa36cd8e7d9c861aeb55cbd9498b72a Mon Sep 17 00:00:00 2001 From: chandanshyam Date: Mon, 10 Nov 2025 22:42:41 -0700 Subject: [PATCH] feature/hide-desktop-icons --- src/gui/src/UI/UIDesktop.js | 21 ++++++++++++++++++++- src/gui/src/globals.js | 1 + src/gui/src/helpers.js | 9 +++++++++ src/gui/src/i18n/translations/en.js | 2 ++ 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/gui/src/UI/UIDesktop.js b/src/gui/src/UI/UIDesktop.js index 6b9d619fb6..5731e211b5 100644 --- a/src/gui/src/UI/UIDesktop.js +++ b/src/gui/src/UI/UIDesktop.js @@ -708,6 +708,7 @@ async function UIDesktop(options){ // update local user preferences const user_preferences = { show_hidden_files: JSON.parse(await puter.kv.get('user_preferences.show_hidden_files')), + show_desktop_icons: JSON.parse(await puter.kv.get('user_preferences.show_desktop_icons')), language: await puter.kv.get('user_preferences.language'), clock_visible: await puter.kv.get('user_preferences.clock_visible'), }; @@ -944,6 +945,19 @@ async function UIDesktop(options){ } }, // ------------------------------------------- + // Show/Hide desktop icons + // ------------------------------------------- + { + html: window.user_preferences.show_desktop_icons ? i18n('hide_desktop_icons') : i18n('show_desktop_icons'), + icon: window.user_preferences.show_desktop_icons ? '✓' : '', + onClick: function(){ + window.mutate_user_preferences({ + show_desktop_icons : !window.user_preferences.show_desktop_icons, + }); + window.toggle_desktop_icons(); + } + }, + // ------------------------------------------- // - // ------------------------------------------- '-', @@ -1014,7 +1028,12 @@ async function UIDesktop(options){ if(!window.is_embedded && !window.is_fullpage_mode){ refresh_item_container(el_desktop, {fadeInItems: true}) - // Show welcome window if user hasn't already seen it and hasn't directly navigated to an app + // Apply initial desktop icon visibility state + setTimeout(() => { + window.toggle_desktop_icons(); + }, 100); + + // Show welcome window if user hasn't already seen it and hasn't directly navigated to an app if(!window.url_paths[0]?.toLocaleLowerCase() === 'app' || !window.url_paths[1]){ if(!isMobile.phone && !isMobile.tablet){ setTimeout(() => { diff --git a/src/gui/src/globals.js b/src/gui/src/globals.js index a6c0ad105b..cdfe004fbe 100644 --- a/src/gui/src/globals.js +++ b/src/gui/src/globals.js @@ -97,6 +97,7 @@ try { if (window.user_preferences === null) { window.user_preferences = { show_hidden_files: false, + show_desktop_icons: true, language: navigator.language.split("-")[0] || navigator.userLanguage || 'en', clock_visible: 'auto', } diff --git a/src/gui/src/helpers.js b/src/gui/src/helpers.js index f855fa62e6..9d153d4d9f 100644 --- a/src/gui/src/helpers.js +++ b/src/gui/src/helpers.js @@ -780,6 +780,15 @@ window.show_or_hide_files = (item_containers) => { .removeClass(class_to_remove).addClass(class_to_add); } +window.toggle_desktop_icons = () => { + const show_desktop_icons = window.user_preferences.show_desktop_icons; + const class_to_add = show_desktop_icons ? 'item-revealed' : 'item-hidden'; + const class_to_remove = show_desktop_icons ? 'item-hidden' : 'item-revealed'; + $('.desktop.item-container > .item') + .removeClass(class_to_remove) + .addClass(class_to_add); +} + window.create_folder = async(basedir, appendto_element)=>{ let dirname = basedir; let folder_name = 'New Folder'; diff --git a/src/gui/src/i18n/translations/en.js b/src/gui/src/i18n/translations/en.js index 613120afc0..21211b2fee 100644 --- a/src/gui/src/i18n/translations/en.js +++ b/src/gui/src/i18n/translations/en.js @@ -274,6 +274,8 @@ const en = { shortcut_to: "Shortcut to", show_all_windows: "Show All Windows", show_hidden: 'Show hidden', + show_desktop_icons: 'Show Desktop Icons', + hide_desktop_icons: 'Hide Desktop Icons', sign_in_with_puter: "Sign in with Puter", sign_up: "Sign Up", signing_in: "Signing in…",