first commit

This commit is contained in:
Vishakh Pradeep Kumar 2025-07-09 16:18:02 +04:00
commit 64d070411f
3 changed files with 258 additions and 0 deletions

BIN
config/.glance.yml.swp Normal file

Binary file not shown.

245
config/glance.yml Normal file
View File

@ -0,0 +1,245 @@
pages:
- name: Home
width: slim
hide-desktop-navigation: true
center-vertically: true
head-widgets:
- type: search
search-engine: duckduckgo
bangs:
- title: YouTube
shortcut: "!yt"
url: https://www.youtube.com/results?search_query={QUERY}
columns:
# - size: small
# widgets:
# - type: calendar
# first-day-of-week: monday
#
#
# - type: weather
# location: Dubai, United Arab Emirates
# units: metric # alternatively "imperial"
# hour-format: 12h # alternatively "24h"
#
# - type: twitch-channels
# channels:
# - hasanabi
# - f1nn5ter
# - ickystreams
# - EJ_SA
- size: full
widgets:
- type: monitor
cache: 1m
title: Services Monitor
sites:
- title: Jellyfin
url: https://jellyfin.grokkingstuff.org
icon: /assets/jellyfin-logo.png
- title: Gitea
url: https://gitea.grokkingstuff.org
icon: /assets/gitea-logo.png
- title: Immich
url: https://immich.yourdomain.com
icon: /assets/immich-logo.png
- title: AdGuard Home
url: https://adguard.yourdomain.com
icon: /assets/adguard-logo.png
- title: Vaultwarden
url: https://vault.yourdomain.com
icon: /assets/vaultwarden-logo.png
- type: custom-api
title: Tailscale Devices
title-url: https://login.tailscale.com/admin/machines
url: https://api.tailscale.com/api/v2/tailnet/-/devices
headers:
Authorization: Bearer tskey-api-k8dNQqtLD721CNTRL-moEnDQk5SjK5RVGH8tW5gKyadpquiS8pe
cache: 10m
template: |
{{/* User Variables */}}
{{/* Set to true if you'd like an indicator for online devices */}}
{{ $enableOnlineIndicator := false }}
<style>
.device-info-container {
position: relative;
overflow: hidden;
height: 1.5em;
}
.device-info {
display: flex;
transition: transform 0.2s ease, opacity 0.2s ease;
}
.device-ip {
position: absolute;
top: 0;
left: 0;
transform: translateY(-100%);
opacity: 0;
transition: transform 0.2s ease, opacity 0.2s ease;
}
.device-info-container:hover .device-info {
transform: translateY(100%);
opacity: 0;
}
.device-info-container:hover .device-ip {
transform: translateY(0);
opacity: 1;
}
.update-indicator {
width: 8px;
height: 8px;
border-radius: 50%;
background-color: var(--color-primary);
display: inline-block;
margin-left: 4px;
vertical-align: middle;
}
.offline-indicator {
width: 8px;
height: 8px;
border-radius: 50%;
background-color: var(--color-negative);
display: inline-block;
margin-left: 4px;
vertical-align: middle;
}
.online-indicator {
width: 8px;
height: 8px;
border-radius: 50%;
background-color: var(--color-positive);
display: inline-block;
margin-left: 4px;
vertical-align: middle;
}
.device-name-container {
display: flex;
align-items: center;
gap: 8px;
}
.indicators-container {
display: flex;
align-items: center;
gap: 4px;
}
</style>
<ul class="list list-gap-10 collapsible-container" data-collapse-after="4">
{{ range .JSON.Array "devices" }}
<li>
<div class="flex items-center gap-10">
<div class="device-name-container grow">
<span class="size-h4 block text-truncate color-primary">
{{ findMatch "^([^.]+)" (.String "name") }}
</span>
<div class="indicators-container">
{{ if (.Bool "updateAvailable") }}
<span class="update-indicator" data-popover-type="text" data-popover-text="Update Available"></span>
{{ end }}
{{ $lastSeen := .String "lastSeen" | parseTime "rfc3339" }}
{{ if not ($lastSeen.After (offsetNow "-10s")) }}
{{ $lastSeenTimezoned := $lastSeen.In now.Location }}
<span class="offline-indicator" data-popover-type="text"
data-popover-text="Offline - Last seen {{ $lastSeenTimezoned.Format " Jan 2 3:04pm" }}"></span>
{{ else if $enableOnlineIndicator }}
<span class="online-indicator" data-popover-type="text" data-popover-text="Online"></span>
{{ end }}
</div>
</div>
</div>
<div class="device-info-container">
<ul class="list-horizontal-text device-info">
<li>{{ .String "os" }}</li>
<li>{{ .String "user" }}</li>
</ul>
<div class="device-ip">
{{ .String "addresses.0"}}
</div>
</div>
</li>
{{ end }}
</ul>
# - type: group
# widgets:
# - type: hacker-news
# - type: lobsters
# - type: videos
# channels:
# - UCXuqSBlHAE6Xw-yeJA0Tunw # Linus Tech Tips
# - UCR-DXc1voovS8nhAvccRZhg # Jeff Geerling
# - UCsBjURrPoezykLs9EqgamOA # Fireship
# - UCBJycsmduvYEL83R_U4JriQ # Marques Brownlee
# - UCHnyfMqiRRG1u-2MsSQLbXA # Veritasium
# - size: small
# widgets:
#
# - type: markets
# markets:
# - symbol: SPY
# name: S&P 500
# - symbol: BTC-USD
# name: Bitcoin
# - symbol: NVDA
# name: NVIDIA
# - symbol: AAPL
# name: Apple
# - symbol: MSFT
# name: Microsoft
#
# - type: releases
# cache: 1d
# # Without authentication the Github API allows for up to 60 requests per hour. You can create a
# # read-only token from your Github account settings and use it here to increase the limit.
# # token: ...
# repositories:
# - glanceapp/glance
# - go-gitea/gitea
# - immich-app/immich
# - syncthing/syncthing
theme:
light: true
background-color: 220 23 95
contrast-multiplier: 1.0
primary-color: 220 91 54
positive-color: 109 58 40
negative-color: 347 87 44
# Add more pages here:
# - name: Your page name
# columns:
# - size: small
# widgets:
# # Add widgets here
# - size: full
# widgets:
# # Add widgets here
# - size: small
# widgets:
# # Add widgets here

13
docker-compose.yml Normal file
View File

@ -0,0 +1,13 @@
services:
glance:
container_name: glance
image: glanceapp/glance
restart: unless-stopped
volumes:
- ./config:/app/config
- ./assets:/app/assets
# Optionally, also mount docker socket if you want to use the docker containers widget
# - /var/run/docker.sock:/var/run/docker.sock:ro
ports:
- 9080:8080
#env_file: .env