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 @@ + + + + + + + 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 @@
- +
{#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 @@ + + +
+
+
+ +

{date}

+
+ +
+ {#if identity?.avatar} + + {:else} + + {/if} +
+

Locked

+

{displayName}

+
+
+ + +
+
+ + 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}