Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ A collection of custom widgets for <a href="https://github.com/glanceapp/glance"
## Custom API Widgets

### Newly added
* [Cloudflare Tunnel Status](widgets/cloudflare-tunnel-status/README.md) - cloudflare connector tunnel live health status and origin IP (by @kirolos-esmat)
* [Jellyfin Stats](widgets/jellyfin-stats/README.md) - live active playback streams (with dynamic highlight when sessions are active) and total movies & series counts (by @kirolos-esmat)
* [Netbird Peers Count](widgets/netbird-peers-count/README.md) - real-time total connected network peer count for your Netbird network (by @kirolos-esmat)
* [Plex Stats](widgets/plex-stats/README.md) - native Plex API active sessions (dynamic highlight), active streams list by user/title, and library movie/show counts (by @kirolos-esmat)
* [Radarr Stats](widgets/radarr-stats/README.md) - total movie library count, missing movies, and active download queue (by @kirolos-esmat)
* [Sonarr Stats](widgets/sonarr-stats/README.md) - total series library count, missing episodes, and active download queue (by @kirolos-esmat)
* [Tailscale Device Status](widgets/tailscale-device-status/README.md) - live IP address, relative last seen timestamp, and key expiry for a specific Tailscale device (by @kirolos-esmat)
* [TrueNAS Metrics](widgets/truenas-metrics/README.md) - system load average, live uptime, active TrueNAS alerts counter, and CPU model (by @kirolos-esmat)
* [Immich Styled Stats](widgets/immich-styled/README.md) - immich styled statistics taken straight out of the app. Beautiful, simple and useful (by @panonim)
* [GitHub Actions Status](widgets/github-actions-status/README.md) - displays the status of GitHub Actions workflows for a repository (by @unickq)
* [Overseerr Users Requests](widgets/overseerr-users-requests/README.md) - shows the list of users and their number of request made in Overseerr (by @GiamBoscaro)
Expand All @@ -39,6 +47,7 @@ A collection of custom widgets for <a href="https://github.com/glanceapp/glance"
* [Calibre-Web Stats](widgets/calibre-web-stats/README.md) - display a summary of books from your Calibre-Web server (by @rvelasq)
* [Cats As A Service Photos](widgets/cats-as-a-service-photos/README.md) - show a grid of cat photos from the Cat as a Service [API](https://cataas.com/) (by @gugugiyu)
* [Chess.com Daily Puzzle](widgets/chess-puzzle/README.md) - display daily chess puzzle from chess.com (by @panonim)
* [Cloudflare Tunnel Status](widgets/cloudflare-tunnel-status/README.md) - cloudflare connector tunnel live health status and origin IP (by @kirolos-esmat)
* [Cloudflare Tunnels](widgets/cloudflared-tunnels/README.md) - external and Local Cloudflare Tunnels links (by @drshajul)
* [Crafty Minecraft Server Stats](widgets/crafty-controller-minecraft-server/README.md) - show the status of Minecraft server managed by Crafty Controller (by @MartyX98)
* [Cryptopanic News](widgets/cryptopanic-news/README.md) - a real-time cryptocurrency news widget that displays filtered news from CryptoPanic.com with configurable filters for news type, regions, and currencies (by @herculosh)
Expand Down Expand Up @@ -67,6 +76,7 @@ A collection of custom widgets for <a href="https://github.com/glanceapp/glance"
* [Immich stats](widgets/immich-stats/README.md) - show the number of photos, videos and usage of your Immich server (by @svilenmarkov)
* [Jellyfin Latest/Next Up](widgets/jellyfin-latest/README.md) - display the newest additions to a Jellyfin library, and next up to watch for a given user (by @Nedra1998)
* [Jellyfin Stats](widgets/jellyfin-emby-stats/README.md) - show the number of movies, shows, episodes and songs in your Jellyfin or Emby server (by @lfvelosoh)
* [Jellyfin Stream Stats](widgets/jellyfin-stats/README.md) - live active playback streams (with dynamic highlight when sessions are active) and total movies & series counts (by @kirolos-esmat)
* [Karakeep Dashboard](widgets/karakeep-dashboard/README.md) - the widget returns statistics on the number of bookmarks and the number of tags and the most recently added bookmarks (by @razdnut)
* [Kavita Latest](widgets/kavita-latest/README.md) - show recently updated series and in progress series from your Kavita server (by @Nedra1998)
* [Komga Recently Added Series](widgets/komga-latest/README.md) - displays recently added comic/manga series to a defined Komga library (by @VictorMitr)
Expand Down Expand Up @@ -94,6 +104,7 @@ A collection of custom widgets for <a href="https://github.com/glanceapp/glance"
* [Nearby Aircraft](widgets/nearby-aircraft/README.md) - show nearby aircraft passing over your position using OpenSky network (by @cristiandiiorio)
* [NetAlertX Device Status](widgets/netalertx/README.md) - display the status of connected devices monitored by NetAlertX (by @razdnut)
* [Netbird devices](widgets/netbird-devices/README.md) - show all devices inside to a Netbird network along with their connection status, update availability and IP (by @menitz)
* [Netbird Peers Count](widgets/netbird-peers-count/README.md) - real-time total connected network peer count for your Netbird network (by @kirolos-esmat)
* [NextDNS Stats](widgets/nextdns-stats/README.md) - show the basics stats of your nextdns stats. Total queries, total blocked and percentage (by @ziritione85)
* [Nextcloud Deck](widgets/nextcloud-deck/README.md) - show deck board from Nextcloud (by @drakkein)
* [Nginx Proxy Manager](widgets/nginx-proxy-manager/README.md) - shows a summary of Nginx Proxy Configration and host links (by @saif191020)
Expand All @@ -104,6 +115,7 @@ A collection of custom widgets for <a href="https://github.com/glanceapp/glance"
* [Paperless NGX Stats](widgets/paperlessngx-stats/README.md) - show stats from your Paperless NGX (by @ralphocdol)
* [Papra Stats](widgets/papra-stats/README.md) - shows stats from your Papra application (by @Saisamarth21)
* [PeaNut UPS Stats](widgets/peanut-ups-status/README.md) - returns statistics from PeaNut to Monitor UPS (by @razdnut)
* [Plex Stats](widgets/plex-stats/README.md) - native Plex API active sessions (dynamic highlight), active streams list by user/title, and library movie/show counts (by @kirolos-esmat)
* [Portainer Dashboard](widgets/portainer-dashboard/README.md) - show docker containers from portainer (by @RealTong)
* [Prowlarr Indexers](widgets/prowlarr-indexers/README.md) - show list of indexers from prowlarr (by @mattiasghodsian)
* [Proxmox Backup Server Stats](widgets/proxmox-backup-server-stats/README.md) - shows Ressources, Datastore Usage and Last 3 Backup Jobs per VM (by @danielweeber)
Expand All @@ -113,12 +125,14 @@ A collection of custom widgets for <a href="https://github.com/glanceapp/glance"
* [Raindrop Bookmarks](widgets/raindrop-latest-links/README.md) - show your latest bookmarks from Raindrop.io (by @herculosh)
* [Random Bible Verse](widgets/random-bible-verse/README.md) - show a random bible verse (by @pypp)
* [Random fact](widgets/random-fact/README.md) - show a random fact (by @svilenmarkov)
* [Radarr Stats](widgets/radarr-stats/README.md) - total movie library count, missing movies, and active download queue (by @kirolos-esmat)
* [RetroAchievement](widgets/retroachievement-of-the-week/README.md) - displays the current RetroAchievements.org Achievement of the week (by @milktoastrat)
* [RomM Stats](widgets/romm-stats/README.md) - show the stats of your [RomM](https://github.com/rommapp/romm) instance (by @milktoastrat)
* [SABnzbd Status](widgets/sabnzbd-stats/README.md) - show SABnzbd status (by @Neo11Neo)
* [Scrutiny](widgets/scrutiny/README.md) - display drive S.M.A.R.T attributes from Scrutiny (by @SkyAllinott)
* [Should I Deploy Today](widgets/should-i-deploy-today/README.md) - remind to deploy today (by @hohaithuy)
* [Slack Status](widgets/slack-status/README.md) - show slack status from api (by @cartwatson)
* [Sonarr Stats](widgets/sonarr-stats/README.md) - total series library count, missing episodes, and active download queue (by @kirolos-esmat)
* [Speedtest Tracker](widgets/speedtest-tracker/README.md) - show the latest internet speed information from Speedtest Tracker (by @not-first)
* [Spotify Now Playing](widgets/spotify-now-playing/README.md) - show the currently playing Spotify song (by @needsadjustment)
* [Spotify Player](widgets/spotify-player/README.md) - show currently playing Spotify song along with the queue and ability to play/pause (by @anant-j)
Expand All @@ -131,6 +145,7 @@ A collection of custom widgets for <a href="https://github.com/glanceapp/glance"
* [Syncthing](widgets/syncthing/README.md) - show Syncthing folder status (by @JohnCannon97)
* [Synology Disk Station](widgets/synology-disk-station/README.md) - displays RAM and CPU usage and used storage of your Synology NAS (by @Chachigo)
* [Tailscale devices](widgets/tailscale-devices/README.md) - show all devices inside a Tailscale tailnet along with their connection status, owner, update availability and IP (by @not-first)
* [Tailscale Device Status](widgets/tailscale-device-status/README.md) - live IP address, relative last seen timestamp, and key expiry for a specific Tailscale device (by @kirolos-esmat)
* [Tautulli Stats](widgets/tautulli-stats/README.md) - show various home stats from Tautulli such as recently watched, top movies/shows, etc (by @SkyAllinott)
* [Technitium DNS Stats](widgets/technitium-dns-stats/README.md) - show stats from Technitium DNS Server (by @eribbey)
* [Time Bar](widgets/time-bar/README.md) - show percentage of day/month/year elapsed (by @anant-j)
Expand All @@ -139,6 +154,7 @@ A collection of custom widgets for <a href="https://github.com/glanceapp/glance"
* [Trending GitHub Repositories](widgets/trending-github-repositories/README.md) - daily trending GitHub repositories (by @jelkuweiss)
* [Trending Mastodon Links](widgets/trending-mastodon-links/README.md) - shows a list of trending links from a provided Mastodon instance (by @tomcasavant)
* [TrueNAS Scale Pools](widgets/truenas-scale-pools/README.md) - shows datasets with usage and health status (by @drakkein)
* [TrueNAS Metrics](widgets/truenas-metrics/README.md) - system load average, live uptime, active TrueNAS alerts counter, and CPU model (by @kirolos-esmat)
* [Tsumego Daily](widgets/tsumego-daily/README.md) - shows daily Go Problems (Tsumego) from goproblems.com (by @ccarpo)
* [Unifi](widgets/unifi/README.md) - unifi controller information (by @prozn)
* [Uptime Kuma](widgets/uptime-kuma/README.md) - show the status of Uptime Kuma monitors from a status page (by @not-first)
Expand Down
33 changes: 33 additions & 0 deletions widgets/cloudflare-tunnel-status/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Cloudflare Tunnel Status

Cloudflare connector tunnel live health status and origin IP.

![](preview.png)

```yaml
- type: custom-api
title: Cloudflare Tunnel
refresh-interval: 5s
cache: 2s
url: https://api.cloudflare.com/client/v4/accounts/${CF_ACCOUNT_ID}/cfd_tunnel/${CF_TUNNEL_ID}
headers:
Authorization: "Bearer ${CF_API_TOKEN}"
Content-Type: application/json
template: |
<ul class="list list-gap-10">
<li class="flex justify-between align-center">
<span class="size-h6 color-paragraph">STATUS</span>
<span class="size-h5 color-highlight">{{ .JSON.String "result.status" }}</span>
</li>
<li class="flex justify-between align-center">
<span class="size-h6 color-paragraph">ORIGIN IP</span>
<span class="size-h5 color-highlight">{{ $ip := .JSON.String "result.connections.0.origin_ip" }}{{ if eq $ip "" }}N/A{{ else }}{{ $ip }}{{ end }}</span>
</li>
</ul>
```

## Environment variables

- `CF_ACCOUNT_ID` - Your Cloudflare Account ID
- `CF_TUNNEL_ID` - The specific ID of the Cloudflare tunnel
- `CF_API_TOKEN` - Cloudflare API Token with `Account.Cloudflare Tunnel:Read` permission
3 changes: 3 additions & 0 deletions widgets/cloudflare-tunnel-status/meta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
title: Cloudflare Tunnel Status
description: Cloudflare connector tunnel live health status and origin IP
author: kirolos-esmat
Binary file added widgets/cloudflare-tunnel-status/preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
42 changes: 42 additions & 0 deletions widgets/jellyfin-stats/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Jellyfin Stats

Live active playback streams (with dynamic highlight when sessions are active) and total movies & series counts.

![](preview.png)

```yaml
- type: custom-api
refresh-interval: 5s
title: Jellyfin Stats
cache: 2s
url: ${JELLYFIN_URL}/Sessions?api_key=${JELLYFIN_API_KEY}
subrequests:
counts:
url: ${JELLYFIN_URL}/Items/Counts?api_key=${JELLYFIN_API_KEY}
template: |
{{- $activeStreams := 0 -}}
{{- range .JSON.Array "" -}}
{{- if .Exists "NowPlayingItem" -}}
{{- $activeStreams = add $activeStreams 1 -}}
{{- end -}}
{{- end -}}
<div class="flex justify-between text-center">
<div>
<div class="{{ if gt $activeStreams 0 }}color-positive{{ else }}color-highlight{{ end }} size-h3">{{ $activeStreams }}</div>
<div class="size-h6{{ if gt $activeStreams 0 }} color-positive{{ end }}">SESSIONS</div>
</div>
<div>
<div class="color-highlight size-h3">{{ (.Subrequest "counts").JSON.Int "MovieCount" }}</div>
<div class="size-h6">MOVIES</div>
</div>
<div>
<div class="color-highlight size-h3">{{ (.Subrequest "counts").JSON.Int "SeriesCount" }}</div>
<div class="size-h6">SERIES</div>
</div>
</div>
```

## Environment variables

- `JELLYFIN_URL` - The full URL of your Jellyfin server, e.g. `http://192.168.1.100:8096`
- `JELLYFIN_API_KEY` - Your Jellyfin API key, generated from Dashboard -> API Keys
3 changes: 3 additions & 0 deletions widgets/jellyfin-stats/meta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
title: Jellyfin Stats
description: Live active playback streams (dynamic highlight), total movies & series count
author: kirolos-esmat
Binary file added widgets/jellyfin-stats/preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 27 additions & 0 deletions widgets/netbird-peers-count/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Netbird Peers Count

Real-time total connected network peer count for your Netbird network.

![](preview.png)

```yaml
- type: custom-api
title: Netbird Peers
refresh-interval: 5s
cache: 2s
url: https://api.netbird.io/api/peers
headers:
Authorization: "Token ${NETBIRD_API_KEY}"
Content-Type: application/json
template: |
<ul class="list list-gap-10">
<li class="flex justify-between align-center">
<span class="size-h6 color-paragraph">TOTAL PEERS</span>
<span class="size-h5 color-highlight">{{ .JSON.Int "#" }}</span>
</li>
</ul>
```

## Environment variables

- `NETBIRD_API_KEY` - Your Netbird API Token (can be created in the NetBird dashboard under User settings)
3 changes: 3 additions & 0 deletions widgets/netbird-peers-count/meta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
title: Netbird Peers Count
description: Real-time total connected network peer count
author: kirolos-esmat
Binary file added widgets/netbird-peers-count/preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
67 changes: 67 additions & 0 deletions widgets/plex-stats/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Plex Stats

Native Plex API active sessions (dynamic highlight), active streams list by user/title, and library movie/show counts.

![](preview.png)

```yaml
- type: custom-api
refresh-interval: 5s
title: Plex Stats
cache: 2s
url: ${PLEX_URL}/status/sessions
headers:
Accept: application/json
X-Plex-Token: ${PLEX_TOKEN}
subrequests:
movies:
url: ${PLEX_URL}/library/sections/1/all?X-Plex-Container-Start=0&X-Plex-Container-Size=0
headers:
Accept: application/json
X-Plex-Token: ${PLEX_TOKEN}
shows:
url: ${PLEX_URL}/library/sections/2/all?X-Plex-Container-Start=0&X-Plex-Container-Size=0
headers:
Accept: application/json
X-Plex-Token: ${PLEX_TOKEN}
server:
url: ${PLEX_URL}/
headers:
Accept: application/json
X-Plex-Token: ${PLEX_TOKEN}
template: |
{{- $activeStreams := .JSON.Int "MediaContainer.size" -}}
<div class="flex justify-between text-center">
<div>
<div class="{{ if gt $activeStreams 0 }}color-positive{{ else }}color-highlight{{ end }} size-h3">{{ $activeStreams }}</div>
<div class="size-h6{{ if gt $activeStreams 0 }} color-positive{{ end }}">SESSIONS</div>
</div>
<div>
<div class="color-highlight size-h3">{{ (.Subrequest "movies").JSON.Int "MediaContainer.totalSize" }}</div>
<div class="size-h6">MOVIES</div>
</div>
<div>
<div class="color-highlight size-h3">{{ (.Subrequest "shows").JSON.Int "MediaContainer.totalSize" }}</div>
<div class="size-h6">SHOWS</div>
</div>
</div>
{{ if gt $activeStreams 0 }}
<div class="margin-top-10">
{{ range .JSON.Array "MediaContainer.Metadata" }}
<div class="flex justify-between align-center margin-top-5">
<span class="size-p color-highlight text-truncate" style="max-width: 65%;">{{ .String "title" }}</span>
<span class="size-h6 color-positive">{{ .String "User.title" }}</span>
</div>
{{ end }}
</div>
{{ else }}
<div class="text-center margin-top-10">
<span class="size-h6 color-subdue">{{ (.Subrequest "server").JSON.String "MediaContainer.friendlyName" }}</span>
</div>
{{ end }}
```

## Environment variables

- `PLEX_URL` - The full URL of your Plex server, e.g. `http://192.168.1.100:32400`
- `PLEX_TOKEN` - Your Plex token for authentication. See [Finding an authentication token / X-Plex-Token](https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/)
3 changes: 3 additions & 0 deletions widgets/plex-stats/meta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
title: Plex Stats
description: Native Plex API sessions, active streams list, and library counts
author: kirolos-esmat
Binary file added widgets/plex-stats/preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
38 changes: 38 additions & 0 deletions widgets/radarr-stats/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Radarr Stats

Total movie library count, missing movies, and active download queue.

![](preview.png)

```yaml
- type: custom-api
refresh-interval: 5s
title: Radarr Stats
cache: 2s
url: ${RADARR_URL}/api/v3/movie?apikey=${RADARR_API_KEY}
subrequests:
missing:
url: ${RADARR_URL}/api/v3/wanted/missing?apikey=${RADARR_API_KEY}
queue:
url: ${RADARR_URL}/api/v3/queue?apikey=${RADARR_API_KEY}
template: |
<div class="flex justify-between text-center">
<div>
<div class="color-highlight size-h3">{{ len (.JSON.Array "") }}</div>
<div class="size-h6">MOVIES</div>
</div>
<div>
<div class="color-highlight size-h3">{{ (.Subrequest "missing").JSON.Int "totalRecords" }}</div>
<div class="size-h6">MISSING</div>
</div>
<div>
<div class="color-highlight size-h3">{{ (.Subrequest "queue").JSON.Int "totalRecords" }}</div>
<div class="size-h6">QUEUED</div>
</div>
</div>
```

## Environment variables

- `RADARR_URL` - The full URL of your Radarr instance, e.g. `http://192.168.1.100:7878`
- `RADARR_API_KEY` - Your Radarr API key, found in Settings -> General -> Security
3 changes: 3 additions & 0 deletions widgets/radarr-stats/meta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
title: Radarr Stats
description: Total movie library count, missing movies, and active download queue
author: kirolos-esmat
Binary file added widgets/radarr-stats/preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
38 changes: 38 additions & 0 deletions widgets/sonarr-stats/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Sonarr Stats

Total series library count, missing episodes, and active download queue.

![](preview.png)

```yaml
- type: custom-api
refresh-interval: 5s
title: Sonarr Stats
cache: 2s
url: ${SONARR_URL}/api/v3/series?apikey=${SONARR_API_KEY}
subrequests:
missing:
url: ${SONARR_URL}/api/v3/wanted/missing?apikey=${SONARR_API_KEY}
queue:
url: ${SONARR_URL}/api/v3/queue?apikey=${SONARR_API_KEY}
template: |
<div class="flex justify-between text-center">
<div>
<div class="color-highlight size-h3">{{ len (.JSON.Array "") }}</div>
<div class="size-h6">SERIES</div>
</div>
<div>
<div class="color-highlight size-h3">{{ (.Subrequest "missing").JSON.Int "totalRecords" }}</div>
<div class="size-h6">MISSING</div>
</div>
<div>
<div class="color-highlight size-h3">{{ (.Subrequest "queue").JSON.Int "totalRecords" }}</div>
<div class="size-h6">QUEUED</div>
</div>
</div>
```

## Environment variables

- `SONARR_URL` - The full URL of your Sonarr instance, e.g. `http://192.168.1.100:8989`
- `SONARR_API_KEY` - Your Sonarr API key, found in Settings -> General -> Security
3 changes: 3 additions & 0 deletions widgets/sonarr-stats/meta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
title: Sonarr Stats
description: Total series library count, missing episodes, and active download queue
author: kirolos-esmat
Binary file added widgets/sonarr-stats/preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading