diff --git a/src/lib/components/GnomeMenuBar.svelte b/src/lib/components/GnomeMenuBar.svelte new file mode 100644 index 0000000..b35cf3f --- /dev/null +++ b/src/lib/components/GnomeMenuBar.svelte @@ -0,0 +1,155 @@ + + + + + + Applications + + + + Places + + Collections + {#if repoBrowser.collections.length > 0} + {#each repoBrowser.collections.slice(0, 10) as collection (collection.name)} + + accountSetup.identity && repoBrowser.selectCollection(accountSetup.identity, collection.name)}> + + {collection.name} + + {/each} + {:else} + Collections appear here after setup. + {/if} + + + + + System + + {#if accountSetup.identity} + Signed in as @{accountSetup.identity.handle} + {/if} + desktopSession.lock()}> + + Lock Screen + + + + Change Account… + + + + + + + + diff --git a/src/lib/components/GnomePanel.svelte b/src/lib/components/GnomePanel.svelte index b8bf799..7d3d42a 100644 --- a/src/lib/components/GnomePanel.svelte +++ b/src/lib/components/GnomePanel.svelte @@ -1,61 +1,16 @@ - - - - Applications - - - - Places - - Collections - {#if repoBrowser.collections.length > 0} - {#each repoBrowser.collections.slice(0, 10) as collection (collection.name)} - - accountSetup.identity && repoBrowser.selectCollection(accountSetup.identity, collection.name)}> - - {collection.name} - - {/each} - {:else} - Collections appear here after setup. - {/if} - - - - - System - - {#if accountSetup.identity} - Signed in as @{accountSetup.identity.handle} - {/if} - - - Change Account… - - - - + {#each launchers as launcher (launcher.label)} @@ -79,28 +34,12 @@ {/each} - - diff --git a/src/lib/components/LockScreen.svelte b/src/lib/components/LockScreen.svelte new file mode 100644 index 0000000..ea726d9 --- /dev/null +++ b/src/lib/components/LockScreen.svelte @@ -0,0 +1,154 @@ + + + + + + {time} + {date} + + + + {#if identity?.avatar} + + {:else} + + {/if} + + Locked + {displayName} + + + + Unlock + + + + diff --git a/src/lib/desktop-session.svelte.ts b/src/lib/desktop-session.svelte.ts new file mode 100644 index 0000000..60ed9c0 --- /dev/null +++ b/src/lib/desktop-session.svelte.ts @@ -0,0 +1,13 @@ +class DesktopSessionState { + isLocked = $state(false); + + lock() { + this.isLocked = true; + } + + unlock() { + this.isLocked = false; + } +} + +export const desktopSession = new DesktopSessionState(); diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index f15ea5d..57d3f89 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -4,6 +4,7 @@ import { repoBrowser } from '$lib/atproto/repo.svelte'; import { accountSetup } from '$lib/atproto/setup.svelte'; import favicon from '$lib/assets/favicon.svg'; + import { desktopSession } from '$lib/desktop-session.svelte'; import { getDatabase, resetLocalDatabase, runMigrations } from '$lib/db'; import { errorMessage } from '$lib/utils/errors'; import { windowManager } from '$lib/window-manager.svelte'; @@ -13,6 +14,7 @@ import DesktopIcon from '$lib/components/DesktopIcon.svelte'; import Gedit from '$lib/components/Gedit.svelte'; import GnomePanel from '$lib/components/GnomePanel.svelte'; + import LockScreen from '$lib/components/LockScreen.svelte'; import NativeWindow from '$lib/components/NativeWindow.svelte'; import SetupDialog from '$lib/components/SetupDialog.svelte'; import '$lib/styles/style.css'; @@ -68,7 +70,11 @@ showAboutComputer = windowManager.getWindow('about-computer')?.isOpen ?? false; if (repoBrowser.selectedRecord) { - windowManager.setTitle('gedit', `${repoBrowser.selectedRecord.rkey}.json - gedit`, repoBrowser.selectedRecord.icon); + windowManager.setTitle( + 'gedit', + `${repoBrowser.selectedRecord.rkey}.json - gedit`, + repoBrowser.selectedRecord.icon + ); } }); @@ -117,6 +123,8 @@ } async function waitForMinimumBootTime(startedAt: number) { + // TODO: this should be configurable/off after migrations are done + // We probably need to track app version const remaining = 2500 - (performance.now() - startedAt); if (remaining > 0) { @@ -212,6 +220,10 @@ {/if} + + {#if desktopSession.isLocked} + desktopSession.unlock()} /> + {/if} {/if}
Collections
Signed in as @{accountSetup.identity.handle}
{date}
Locked