From 78ed65fd76ca0fc12c6984596f384e643e46db25 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Sun, 28 Jun 2026 14:17:42 -0400 Subject: [PATCH] fix(config): remove old developer configs --- config/developer/left.yml | 13 - config/developer/main.yml | 22 - config/developer/right.yml | 6 - config/entertainment/movies.yml | 494 ++++++++++++++++++++++ config/entertainment/side.yml | 27 ++ config/entertainment/tv.yml | 494 ++++++++++++++++++++++ config/finance/header.yml | 74 ---- config/finance/left.yml | 13 - config/finance/main.yml | 10 - config/finance/right.yml | 6 - config/finance/widgets/fred.yml | 74 ---- config/finance/widgets/youtube.yml | 94 ---- config/glance.yml | 51 ++- config/headlines/header.yml | 21 + config/headlines/left.yml | 23 + config/headlines/main.yml | 39 ++ config/{news => headlines}/right.yml | 9 +- config/markets/left.yml | 47 ++ config/markets/main.yml | 66 +++ config/markets/right.yml | 36 ++ config/news/main.yml | 10 - config/news/widgets/headlines.yml | 51 --- config/news/widgets/reddit.yml | 41 -- config/news/widgets/youtube.yml | 94 ---- config/{news => schedule}/left.yml | 9 +- config/schedule/main.yml | 8 + config/schedule/right.yml | 9 + config/schedule/widgets/graph.yml | 19 + config/schedule/widgets/ical-personal.yml | 76 ++++ config/schedule/widgets/ical-work.yml | 76 ++++ config/shared/rates.yml | 62 +++ config/technology/left.yml | 30 ++ config/technology/main.yml | 80 ++++ config/technology/right.yml | 16 + 34 files changed, 1655 insertions(+), 545 deletions(-) delete mode 100644 config/developer/left.yml delete mode 100644 config/developer/main.yml delete mode 100644 config/developer/right.yml create mode 100644 config/entertainment/movies.yml create mode 100644 config/entertainment/side.yml create mode 100644 config/entertainment/tv.yml delete mode 100644 config/finance/header.yml delete mode 100644 config/finance/left.yml delete mode 100644 config/finance/main.yml delete mode 100644 config/finance/right.yml delete mode 100644 config/finance/widgets/fred.yml delete mode 100644 config/finance/widgets/youtube.yml create mode 100644 config/headlines/header.yml create mode 100644 config/headlines/left.yml create mode 100644 config/headlines/main.yml rename config/{news => headlines}/right.yml (55%) create mode 100644 config/markets/left.yml create mode 100644 config/markets/main.yml create mode 100644 config/markets/right.yml delete mode 100644 config/news/main.yml delete mode 100644 config/news/widgets/headlines.yml delete mode 100644 config/news/widgets/reddit.yml delete mode 100644 config/news/widgets/youtube.yml rename config/{news => schedule}/left.yml (64%) create mode 100644 config/schedule/main.yml create mode 100644 config/schedule/right.yml create mode 100644 config/schedule/widgets/graph.yml create mode 100644 config/schedule/widgets/ical-personal.yml create mode 100644 config/schedule/widgets/ical-work.yml create mode 100644 config/shared/rates.yml create mode 100644 config/technology/left.yml create mode 100644 config/technology/main.yml create mode 100644 config/technology/right.yml diff --git a/config/developer/left.yml b/config/developer/left.yml deleted file mode 100644 index 2aed5bc..0000000 --- a/config/developer/left.yml +++ /dev/null @@ -1,13 +0,0 @@ -- size: small - widgets: - - type: twitch-top-games - limit: 20 - collapse-after: 13 - exclude: - - just-chatting - - pools-hot-tubs-and-beaches - - music - - art - - asmr - - diff --git a/config/developer/main.yml b/config/developer/main.yml deleted file mode 100644 index 174b89a..0000000 --- a/config/developer/main.yml +++ /dev/null @@ -1,22 +0,0 @@ -- size: full - widgets: - - type: group - widgets: - - type: reddit - show-thumbnails: true - subreddit: commandline - - type: reddit - subreddit: selfhosted - - type: reddit - subreddit: tui - - - type: videos - style: grid-cards - collapse-after-rows: 3 - channels: - - UCNvzD7Z-g64bPXxGzaQaa4g # gameranx - - UCZ7AeeVbyslLM_8-nVy2B8Q # Skill Up - - UCHDxYLv8iovIbhrfl16CNyg # GameLinked - - UC9PBzalIcEQCsiIkq36PyUA # Digital Foundry - - diff --git a/config/developer/right.yml b/config/developer/right.yml deleted file mode 100644 index 7bbbdc7..0000000 --- a/config/developer/right.yml +++ /dev/null @@ -1,6 +0,0 @@ -- size: small - widgets: - - type: reddit - subreddit: gamingnews - limit: 7 - style: vertical-cards diff --git a/config/entertainment/movies.yml b/config/entertainment/movies.yml new file mode 100644 index 0000000..0e0fde4 --- /dev/null +++ b/config/entertainment/movies.yml @@ -0,0 +1,494 @@ +- size: full + widgets: + - type: custom-api + title: Latest Movies + frameless: true + cache: 5m + options: + base-url: http://umbrel.tail51ffca.ts.net:8096 + api-key: df9e869fec0b460bb6577302f5efd049 + user-name: "prad" + library-name: "Movies" + mode: "latest" + item-count: "10" + small-column: false + show-thumbnail: true + thumbnail-aspect-ratio: "default" + template: | + {{/* Required config options */}} + {{ $baseURL := .Options.StringOr "base-url" "" }} + {{ $apiKey := .Options.StringOr "api-key" "" }} + {{ $userName := .Options.StringOr "user-name" "" }} + + {{/* Required config options for "latest" mode */}} + {{ $libraryName := .Options.StringOr "library-name" "" }} + + {{/* Optional config options */}} + {{ $mode := .Options.StringOr "mode" "latest" }} + {{ $itemCount := .Options.StringOr "item-count" "10" }} + {{ $mediaTypes := .Options.StringOr "media-types" "Movie,Episode,MusicAlbum" }} + {{ $thumbAspectRatio := .Options.StringOr "thumbnail-aspect-ratio" "" }} + {{ $isSmallColumn:= .Options.BoolOr "small-column" false }} + {{ $showThumbnail := .Options.BoolOr "show-thumbnail" false }} + {{ $showProgressBar := .Options.BoolOr "progress-bar" true }} + + {{/* Error message template */}} + {{ define "errorMsg" }} +
+
ERROR
+ + + +
+

{{ . }}

+ {{ end }} + + {{/* Check required fields */}} + {{ if or (eq $baseURL "") (eq $apiKey "") (eq $userName "") (eq $mode "") (and (eq $mode "latest") (eq $libraryName "")) }} + {{ template "errorMsg" "Some required options are not set." }} + {{ else }} + + {{/* Fetch user ID */}} + {{ $userID := "" }} + {{ $usersCall := newRequest (print $baseURL "/Users") + | withParameter "api_key" $apiKey + | withHeader "Accept" "application/json" + | getResponse }} + + {{ range $i, $user := $usersCall.JSON.Array "" }} + {{ if eq ($user.String "Name") $userName }} + {{ $userID = $user.String "Id" }} + {{ break }} + {{ end }} + {{ end }} + {{ if eq $userID "" }} + {{ template "errorMsg" (printf "User '%s' not found." $userName) }} + {{ else }} + + {{ $items := "" }} + + {{ if eq $mode "latest" }} + + {{/* Fetch library ID */}} + {{ $libraryID := "" }} + {{ $userViewsCall := newRequest (print $baseURL "/UserViews") + | withParameter "api_key" $apiKey + | withParameter "userId" $userID + | withHeader "Accept" "application/json" + | getResponse }} + + {{ range $i, $item := $userViewsCall.JSON.Array "Items" }} + {{ if eq ($item.String "Name") $libraryName }} + {{ $libraryID = $item.String "Id" }} + {{ break }} + {{ end }} + {{ end }} + + {{ if eq $libraryID "" }} + {{ template "errorMsg" (printf "Library '%s' not found." $libraryName) }} + {{ else }} + {{/* Fetch latest items */}} + {{ $latestCall := newRequest (print $baseURL "/Users/" $userID "/Items/Latest") + | withParameter "api_key" $apiKey + | withParameter "Limit" $itemCount + | withParameter "ParentId" $libraryID + | withParameter "IncludeItemTypes" $mediaTypes + | withParameter "GroupItems" "true" + | withHeader "Accept" "application/json" + | getResponse }} + {{ $items = $latestCall.JSON.Array "" }} + {{ end }} + + {{ else if eq $mode "nextup" }} + + {{/* Fetch next up items */}} + {{ $nextUpCall := newRequest (print $baseURL "/Shows/NextUp") + | withParameter "api_key" $apiKey + | withParameter "UserId" $userID + | withParameter "Limit" $itemCount + | withParameter "EnableResumable" "true" + | withHeader "Accept" "application/json" + | getResponse }} + {{ $items = $nextUpCall.JSON.Array "Items" }} + + {{ else }} + {{ template "errorMsg" "Unknown mode, expected 'latest' or 'nextup'" }} + {{ end }} + + {{ if eq (len $items) 0 }} +

No items found, start streaming something!

+ {{ else }} + + {{/* Display the item carousel */}} + + {{ end }} + + {{ end }} + + {{ end }} + - type: custom-api + title: Up Next Movies + frameless: true + cache: 5m + options: + base-url: http://umbrel.tail51ffca.ts.net:8096 + api-key: df9e869fec0b460bb6577302f5efd049 + user-name: "prad" + library-name: "Movies" + mode: "nextup" + item-count: "10" + small-column: false + show-thumbnail: true + thumbnail-aspect-ratio: "default" + template: | + {{/* Required config options */}} + {{ $baseURL := .Options.StringOr "base-url" "" }} + {{ $apiKey := .Options.StringOr "api-key" "" }} + {{ $userName := .Options.StringOr "user-name" "" }} + + {{/* Required config options for "latest" mode */}} + {{ $libraryName := .Options.StringOr "library-name" "" }} + + {{/* Optional config options */}} + {{ $mode := .Options.StringOr "mode" "latest" }} + {{ $itemCount := .Options.StringOr "item-count" "10" }} + {{ $mediaTypes := .Options.StringOr "media-types" "Movie,Episode,MusicAlbum" }} + {{ $thumbAspectRatio := .Options.StringOr "thumbnail-aspect-ratio" "" }} + {{ $isSmallColumn:= .Options.BoolOr "small-column" false }} + {{ $showThumbnail := .Options.BoolOr "show-thumbnail" false }} + {{ $showProgressBar := .Options.BoolOr "progress-bar" true }} + + {{/* Error message template */}} + {{ define "errorMsg" }} +
+
ERROR
+ + + +
+

{{ . }}

+ {{ end }} + + {{/* Check required fields */}} + {{ if or (eq $baseURL "") (eq $apiKey "") (eq $userName "") (eq $mode "") (and (eq $mode "latest") (eq $libraryName "")) }} + {{ template "errorMsg" "Some required options are not set." }} + {{ else }} + + {{/* Fetch user ID */}} + {{ $userID := "" }} + {{ $usersCall := newRequest (print $baseURL "/Users") + | withParameter "api_key" $apiKey + | withHeader "Accept" "application/json" + | getResponse }} + + {{ range $i, $user := $usersCall.JSON.Array "" }} + {{ if eq ($user.String "Name") $userName }} + {{ $userID = $user.String "Id" }} + {{ break }} + {{ end }} + {{ end }} + {{ if eq $userID "" }} + {{ template "errorMsg" (printf "User '%s' not found." $userName) }} + {{ else }} + + {{ $items := "" }} + + {{ if eq $mode "latest" }} + + {{/* Fetch library ID */}} + {{ $libraryID := "" }} + {{ $userViewsCall := newRequest (print $baseURL "/UserViews") + | withParameter "api_key" $apiKey + | withParameter "userId" $userID + | withHeader "Accept" "application/json" + | getResponse }} + + {{ range $i, $item := $userViewsCall.JSON.Array "Items" }} + {{ if eq ($item.String "Name") $libraryName }} + {{ $libraryID = $item.String "Id" }} + {{ break }} + {{ end }} + {{ end }} + + {{ if eq $libraryID "" }} + {{ template "errorMsg" (printf "Library '%s' not found." $libraryName) }} + {{ else }} + {{/* Fetch latest items */}} + {{ $latestCall := newRequest (print $baseURL "/Users/" $userID "/Items/Latest") + | withParameter "api_key" $apiKey + | withParameter "Limit" $itemCount + | withParameter "ParentId" $libraryID + | withParameter "IncludeItemTypes" $mediaTypes + | withParameter "GroupItems" "true" + | withHeader "Accept" "application/json" + | getResponse }} + {{ $items = $latestCall.JSON.Array "" }} + {{ end }} + + {{ else if eq $mode "nextup" }} + + {{/* Fetch next up items */}} + {{ $nextUpCall := newRequest (print $baseURL "/Shows/NextUp") + | withParameter "api_key" $apiKey + | withParameter "UserId" $userID + | withParameter "Limit" $itemCount + | withParameter "EnableResumable" "true" + | withHeader "Accept" "application/json" + | getResponse }} + {{ $items = $nextUpCall.JSON.Array "Items" }} + + {{ else }} + {{ template "errorMsg" "Unknown mode, expected 'latest' or 'nextup'" }} + {{ end }} + + {{ if eq (len $items) 0 }} +

No items found, start streaming something!

+ {{ else }} + + {{/* Display the item carousel */}} + + {{ end }} + + {{ end }} + + {{ end }} + + diff --git a/config/entertainment/side.yml b/config/entertainment/side.yml new file mode 100644 index 0000000..c5377b0 --- /dev/null +++ b/config/entertainment/side.yml @@ -0,0 +1,27 @@ +# Entertainment side rail — gaming news, podcasts, gaming videos +- size: small + widgets: + - type: reddit + subreddit: gamingnews + limit: 7 + style: vertical-cards + - type: videos + style: vertical-list + collapse-after: 4 + title: Pop-Culture + channels: + - UCzQUP1qoWDoEbmsQxvdjxgQ # PowerfulJRE + - UCJIfeSCssxSC_Dhc5s7woww # Lex Clips + - UC5PstSsGrRwj2o6asQpC4Rg # Flagrant 2 + - UCKrpnfpTwncQ050VFXcVkuQ # Network State Podcast + - UC7oPkqeHTwuOZ5CZ-R9f-6w # Triggernometry + - UCIHdDJ0tjn_3j-FS7s_X1kQ # Valuetainment + - type: videos + style: vertical-list + collapse-after: 4 + title: Gaming + channels: + - UCNvzD7Z-g64bPXxGzaQaa4g # gameranx + - UCZ7AeeVbyslLM_8-nVy2B8Q # Skill Up + - UCHDxYLv8iovIbhrfl16CNyg # GameLinked + - UC9PBzalIcEQCsiIkq36PyUA # Digital Foundry diff --git a/config/entertainment/tv.yml b/config/entertainment/tv.yml new file mode 100644 index 0000000..c29ef1a --- /dev/null +++ b/config/entertainment/tv.yml @@ -0,0 +1,494 @@ +- size: full + widgets: + - type: custom-api + title: Latest TV + frameless: true + cache: 5m + options: + base-url: http://umbrel.tail51ffca.ts.net:8096 + api-key: df9e869fec0b460bb6577302f5efd049 + user-name: "prad" + library-name: "TV" + mode: "latest" + item-count: "10" + small-column: false + show-thumbnail: true + thumbnail-aspect-ratio: "default" + template: | + {{/* Required config options */}} + {{ $baseURL := .Options.StringOr "base-url" "" }} + {{ $apiKey := .Options.StringOr "api-key" "" }} + {{ $userName := .Options.StringOr "user-name" "" }} + + {{/* Required config options for "latest" mode */}} + {{ $libraryName := .Options.StringOr "library-name" "" }} + + {{/* Optional config options */}} + {{ $mode := .Options.StringOr "mode" "latest" }} + {{ $itemCount := .Options.StringOr "item-count" "10" }} + {{ $mediaTypes := .Options.StringOr "media-types" "Movie,Episode,MusicAlbum" }} + {{ $thumbAspectRatio := .Options.StringOr "thumbnail-aspect-ratio" "" }} + {{ $isSmallColumn:= .Options.BoolOr "small-column" false }} + {{ $showThumbnail := .Options.BoolOr "show-thumbnail" false }} + {{ $showProgressBar := .Options.BoolOr "progress-bar" true }} + + {{/* Error message template */}} + {{ define "errorMsg" }} +
+
ERROR
+ + + +
+

{{ . }}

+ {{ end }} + + {{/* Check required fields */}} + {{ if or (eq $baseURL "") (eq $apiKey "") (eq $userName "") (eq $mode "") (and (eq $mode "latest") (eq $libraryName "")) }} + {{ template "errorMsg" "Some required options are not set." }} + {{ else }} + + {{/* Fetch user ID */}} + {{ $userID := "" }} + {{ $usersCall := newRequest (print $baseURL "/Users") + | withParameter "api_key" $apiKey + | withHeader "Accept" "application/json" + | getResponse }} + + {{ range $i, $user := $usersCall.JSON.Array "" }} + {{ if eq ($user.String "Name") $userName }} + {{ $userID = $user.String "Id" }} + {{ break }} + {{ end }} + {{ end }} + {{ if eq $userID "" }} + {{ template "errorMsg" (printf "User '%s' not found." $userName) }} + {{ else }} + + {{ $items := "" }} + + {{ if eq $mode "latest" }} + + {{/* Fetch library ID */}} + {{ $libraryID := "" }} + {{ $userViewsCall := newRequest (print $baseURL "/UserViews") + | withParameter "api_key" $apiKey + | withParameter "userId" $userID + | withHeader "Accept" "application/json" + | getResponse }} + + {{ range $i, $item := $userViewsCall.JSON.Array "Items" }} + {{ if eq ($item.String "Name") $libraryName }} + {{ $libraryID = $item.String "Id" }} + {{ break }} + {{ end }} + {{ end }} + + {{ if eq $libraryID "" }} + {{ template "errorMsg" (printf "Library '%s' not found." $libraryName) }} + {{ else }} + {{/* Fetch latest items */}} + {{ $latestCall := newRequest (print $baseURL "/Users/" $userID "/Items/Latest") + | withParameter "api_key" $apiKey + | withParameter "Limit" $itemCount + | withParameter "ParentId" $libraryID + | withParameter "IncludeItemTypes" $mediaTypes + | withParameter "GroupItems" "true" + | withHeader "Accept" "application/json" + | getResponse }} + {{ $items = $latestCall.JSON.Array "" }} + {{ end }} + + {{ else if eq $mode "nextup" }} + + {{/* Fetch next up items */}} + {{ $nextUpCall := newRequest (print $baseURL "/Shows/NextUp") + | withParameter "api_key" $apiKey + | withParameter "UserId" $userID + | withParameter "Limit" $itemCount + | withParameter "EnableResumable" "true" + | withHeader "Accept" "application/json" + | getResponse }} + {{ $items = $nextUpCall.JSON.Array "Items" }} + + {{ else }} + {{ template "errorMsg" "Unknown mode, expected 'latest' or 'nextup'" }} + {{ end }} + + {{ if eq (len $items) 0 }} +

No items found, start streaming something!

+ {{ else }} + + {{/* Display the item carousel */}} + + {{ end }} + + {{ end }} + + {{ end }} + - type: custom-api + title: Up Next TV + frameless: true + cache: 5m + options: + base-url: http://umbrel.tail51ffca.ts.net:8096 + api-key: df9e869fec0b460bb6577302f5efd049 + user-name: "prad" + library-name: "TV" + mode: "nextup" + item-count: "10" + small-column: false + show-thumbnail: true + thumbnail-aspect-ratio: "default" + template: | + {{/* Required config options */}} + {{ $baseURL := .Options.StringOr "base-url" "" }} + {{ $apiKey := .Options.StringOr "api-key" "" }} + {{ $userName := .Options.StringOr "user-name" "" }} + + {{/* Required config options for "latest" mode */}} + {{ $libraryName := .Options.StringOr "library-name" "" }} + + {{/* Optional config options */}} + {{ $mode := .Options.StringOr "mode" "latest" }} + {{ $itemCount := .Options.StringOr "item-count" "10" }} + {{ $mediaTypes := .Options.StringOr "media-types" "Movie,Episode,MusicAlbum" }} + {{ $thumbAspectRatio := .Options.StringOr "thumbnail-aspect-ratio" "" }} + {{ $isSmallColumn:= .Options.BoolOr "small-column" false }} + {{ $showThumbnail := .Options.BoolOr "show-thumbnail" false }} + {{ $showProgressBar := .Options.BoolOr "progress-bar" true }} + + {{/* Error message template */}} + {{ define "errorMsg" }} +
+
ERROR
+ + + +
+

{{ . }}

+ {{ end }} + + {{/* Check required fields */}} + {{ if or (eq $baseURL "") (eq $apiKey "") (eq $userName "") (eq $mode "") (and (eq $mode "latest") (eq $libraryName "")) }} + {{ template "errorMsg" "Some required options are not set." }} + {{ else }} + + {{/* Fetch user ID */}} + {{ $userID := "" }} + {{ $usersCall := newRequest (print $baseURL "/Users") + | withParameter "api_key" $apiKey + | withHeader "Accept" "application/json" + | getResponse }} + + {{ range $i, $user := $usersCall.JSON.Array "" }} + {{ if eq ($user.String "Name") $userName }} + {{ $userID = $user.String "Id" }} + {{ break }} + {{ end }} + {{ end }} + {{ if eq $userID "" }} + {{ template "errorMsg" (printf "User '%s' not found." $userName) }} + {{ else }} + + {{ $items := "" }} + + {{ if eq $mode "latest" }} + + {{/* Fetch library ID */}} + {{ $libraryID := "" }} + {{ $userViewsCall := newRequest (print $baseURL "/UserViews") + | withParameter "api_key" $apiKey + | withParameter "userId" $userID + | withHeader "Accept" "application/json" + | getResponse }} + + {{ range $i, $item := $userViewsCall.JSON.Array "Items" }} + {{ if eq ($item.String "Name") $libraryName }} + {{ $libraryID = $item.String "Id" }} + {{ break }} + {{ end }} + {{ end }} + + {{ if eq $libraryID "" }} + {{ template "errorMsg" (printf "Library '%s' not found." $libraryName) }} + {{ else }} + {{/* Fetch latest items */}} + {{ $latestCall := newRequest (print $baseURL "/Users/" $userID "/Items/Latest") + | withParameter "api_key" $apiKey + | withParameter "Limit" $itemCount + | withParameter "ParentId" $libraryID + | withParameter "IncludeItemTypes" $mediaTypes + | withParameter "GroupItems" "true" + | withHeader "Accept" "application/json" + | getResponse }} + {{ $items = $latestCall.JSON.Array "" }} + {{ end }} + + {{ else if eq $mode "nextup" }} + + {{/* Fetch next up items */}} + {{ $nextUpCall := newRequest (print $baseURL "/Shows/NextUp") + | withParameter "api_key" $apiKey + | withParameter "UserId" $userID + | withParameter "Limit" $itemCount + | withParameter "EnableResumable" "true" + | withHeader "Accept" "application/json" + | getResponse }} + {{ $items = $nextUpCall.JSON.Array "Items" }} + + {{ else }} + {{ template "errorMsg" "Unknown mode, expected 'latest' or 'nextup'" }} + {{ end }} + + {{ if eq (len $items) 0 }} +

No items found, start streaming something!

+ {{ else }} + + {{/* Display the item carousel */}} + + {{ end }} + + {{ end }} + + {{ end }} + + diff --git a/config/finance/header.yml b/config/finance/header.yml deleted file mode 100644 index aeb15ff..0000000 --- a/config/finance/header.yml +++ /dev/null @@ -1,74 +0,0 @@ -- type: split-column - max-columns: 5 - widgets: - - type: custom-api - title: Secured Financing Rate - cache: 12h - url: https://api.stlouisfed.org/fred/series/observations?series_id=SOFR&api_key=46fd446049e6ad0cbd6e019584fe36bf&file_type=json&sort_order=desc&limit=2 - template: | - {{ $latest := .JSON.Float "observations.0.value" }} - {{ $previous := .JSON.Float "observations.1.value" }} - {{ $lastObserve := .JSON.String "observations.0.date" }} - {{ $change := sub $latest $previous }} -
-
- - {{ .JSON.String "observations.0.value" }}% - -
St. Louis Federal Reserve
-
-
-
- {{ printf "%+.2f" $change }}% -
-
-
-
-
- - - type: custom-api - title: Federal Funds Rate - cache: 12h - url: https://api.stlouisfed.org/fred/series/observations?series_id=FEDFUNDS&api_key=46fd446049e6ad0cbd6e019584fe36bf&file_type=json&sort_order=desc&limit=2 - template: | - {{ $latest := .JSON.Float "observations.0.value" }} - {{ $previous := .JSON.Float "observations.1.value" }} - {{ $lastObserve := .JSON.String "observations.0.date" }} - {{ $change := sub $latest $previous }} -
-
- - {{ .JSON.String "observations.0.value" }}% - -
St. Louis Federal Reserve
-
-
-
- {{ printf "%+.2f" $change }}% -
-
-
-
-
- - - type: custom-api - title: Real GDP - cache: 12h - url: https://api.stlouisfed.org/fred/series/observations?series_id=A191RL1Q225SBEA&api_key=46fd446049e6ad0cbd6e019584fe36bf&file_type=json&sort_order=desc&limit=2 - template: | - {{ $latest := .JSON.Float "observations.0.value" }} - {{ $previous := .JSON.Float "observations.1.value" }} - {{ $lastObserve := .JSON.String "observations.0.date" }} - {{ $change := sub $latest $previous }} -
-
- - {{ .JSON.String "observations.0.value" }}% - -
St. Louis Federal Reserve
-
-
-
- {{ printf "%+.2f" $change }}% -
- diff --git a/config/finance/left.yml b/config/finance/left.yml deleted file mode 100644 index 2aed5bc..0000000 --- a/config/finance/left.yml +++ /dev/null @@ -1,13 +0,0 @@ -- size: small - widgets: - - type: twitch-top-games - limit: 20 - collapse-after: 13 - exclude: - - just-chatting - - pools-hot-tubs-and-beaches - - music - - art - - asmr - - diff --git a/config/finance/main.yml b/config/finance/main.yml deleted file mode 100644 index ea79f62..0000000 --- a/config/finance/main.yml +++ /dev/null @@ -1,10 +0,0 @@ -- size: full - widgets: - - type: group - widgets: - - type: reddit - show-thumbnails: true - subreddit: technology - - type: reddit - show-thumbnails: true - subreddit: wallstreetbets diff --git a/config/finance/right.yml b/config/finance/right.yml deleted file mode 100644 index 7bbbdc7..0000000 --- a/config/finance/right.yml +++ /dev/null @@ -1,6 +0,0 @@ -- size: small - widgets: - - type: reddit - subreddit: gamingnews - limit: 7 - style: vertical-cards diff --git a/config/finance/widgets/fred.yml b/config/finance/widgets/fred.yml deleted file mode 100644 index aeb15ff..0000000 --- a/config/finance/widgets/fred.yml +++ /dev/null @@ -1,74 +0,0 @@ -- type: split-column - max-columns: 5 - widgets: - - type: custom-api - title: Secured Financing Rate - cache: 12h - url: https://api.stlouisfed.org/fred/series/observations?series_id=SOFR&api_key=46fd446049e6ad0cbd6e019584fe36bf&file_type=json&sort_order=desc&limit=2 - template: | - {{ $latest := .JSON.Float "observations.0.value" }} - {{ $previous := .JSON.Float "observations.1.value" }} - {{ $lastObserve := .JSON.String "observations.0.date" }} - {{ $change := sub $latest $previous }} -
-
- - {{ .JSON.String "observations.0.value" }}% - -
St. Louis Federal Reserve
-
-
-
- {{ printf "%+.2f" $change }}% -
-
-
-
-
- - - type: custom-api - title: Federal Funds Rate - cache: 12h - url: https://api.stlouisfed.org/fred/series/observations?series_id=FEDFUNDS&api_key=46fd446049e6ad0cbd6e019584fe36bf&file_type=json&sort_order=desc&limit=2 - template: | - {{ $latest := .JSON.Float "observations.0.value" }} - {{ $previous := .JSON.Float "observations.1.value" }} - {{ $lastObserve := .JSON.String "observations.0.date" }} - {{ $change := sub $latest $previous }} -
-
- - {{ .JSON.String "observations.0.value" }}% - -
St. Louis Federal Reserve
-
-
-
- {{ printf "%+.2f" $change }}% -
-
-
-
-
- - - type: custom-api - title: Real GDP - cache: 12h - url: https://api.stlouisfed.org/fred/series/observations?series_id=A191RL1Q225SBEA&api_key=46fd446049e6ad0cbd6e019584fe36bf&file_type=json&sort_order=desc&limit=2 - template: | - {{ $latest := .JSON.Float "observations.0.value" }} - {{ $previous := .JSON.Float "observations.1.value" }} - {{ $lastObserve := .JSON.String "observations.0.date" }} - {{ $change := sub $latest $previous }} -
-
- - {{ .JSON.String "observations.0.value" }}% - -
St. Louis Federal Reserve
-
-
-
- {{ printf "%+.2f" $change }}% -
- diff --git a/config/finance/widgets/youtube.yml b/config/finance/widgets/youtube.yml deleted file mode 100644 index f9afb48..0000000 --- a/config/finance/widgets/youtube.yml +++ /dev/null @@ -1,94 +0,0 @@ -- type: group - widgets: - # Podcasts & Commentary - - type: videos - style: grid-cards - collapse-after-rows: 2 - title: Pop-Culture - channels: - - UCzQUP1qoWDoEbmsQxvdjxgQ # PowerfulJRE - - UCJIfeSCssxSC_Dhc5s7woww # Lex Clips - - UC5PstSsGrRwj2o6asQpC4Rg # Flagrant 2 - - UCKrpnfpTwncQ050VFXcVkuQ # Network State Podcast - - UC7oPkqeHTwuOZ5CZ-R9f-6w # Triggernometry - - UCIHdDJ0tjn_3j-FS7s_X1kQ # Valuetainment - - # Programming & Tech - - type: videos - style: grid-cards - collapse-after-rows: 2 - title: Programming - channels: - - UCUyeluBRhGPCW4rPe_UvBZQ # ThePrimeTime - - UCjSEJkpGbcZhvo0lr-44X_w # TechHut - - UCXuqSBlHAE6Xw-yeJA0Tunw # Linus Tech Tips - - UCs6KfncB4OV6Vug4o_bzijg # Techlore - - UCTwxaBjziKfy6y_uWu30orAby # BugBytes - - UCYeiozh-4QwuC1sjgCmB92w # DevOps Toolbox - - UCsBjURrPoezykLs9EqgamOA # Angular Firebase - - UC-mTIBh__DzAqW495JHXy5A # The Coding Gopher - - UC2WHjPDvbE6O328n17ZGcfg # ForrestKnight - - UCsUalyRg43M8D60mtHe6YcAD # Honeypot - - UCgfe2ooZD3VJPB6aJAnuQng # cloud - - UCdjsUXJ3QawK4O5L1kqqsew # IPFS - - UC3Wn3dABlgESm8Bzn8Vamgg # Sideprojects - - UCtMVHI3AJD4Qk4hcbZnI9ZQ # SomeOrdinaryGamers - - UCNJ1Ymd5yFuUPtn21xtRbbw # AI Explained - - UCutCcajxhR33k9UR-DdLsAQ # Systems Innovation - - # Startups & Business - - type: videos - style: grid-cards - collapse-after-rows: 2 - title: Startups - channels: - - UCcefcZRL2oaA_uBNeo5UOWg # Y Combinator - - UCllx7jOjBL794FK67jtb5Og # Dalton + Michael - - UCxIJaCMEptJjxmmQgGFsnCg # How to Start a Startup - - UCQrZfl1FeCN9c71yjOzWVRw # Startup Archive - - UCtieZ1nS_tpjGEama6Kjxcg # Steve Jobs Archive - - UCm_WkN0wg49-eG4SymAQ_4g # Harvard Innovation Labs - - UCSGc7c1yKxo-Uhz5_oivrfg # The Startup Club by Slidebean - - UCGq-a57w-aPwyi3pW7XLiHw # The Diary Of A CEO - - # AI & Futurism - - type: videos - style: grid-cards - collapse-after-rows: 2 - title: Futurism - channels: - - UCawZsQWqfGSbCI5yjkdVkTA # Matthew Berman - - UCZFipeZtQM5CKUjx6grh54g # Isaac Arthur - - UCR9sFzaG9Ia_kXJhfxtFMB # melodysheep - - UCSeuZvDGosq1zC6NqgqGo-Q # merlin - # Finance - - type: videos - style: grid-cards - collapse-after-rows: 2 - title: Finance - channels: - - UCAeAB8ABXGoGMbXuYPmiu2A # The Swedish Investor - - UCvSXMi2LebwJEM1s4bz5IBA # New Money - - UCV6KDgJskWaEckne5aPA0aQ # Graham Stephan - - UCAzhpt9DmG6PnHXjmJTvRGQ # Federal Reserve - - - # Science, History & Education - - type: videos - style: grid-cards - collapse-after-rows: 2 - title: Education - channels: - - UCHnyfMqiRRG1u-2MsSQLbXA # Veritasium - - UCsXVk37bltHxD1rDPwtNM8QL # Kurzgesagt – In a Nutshell - - UCxqAWLTk1CmBvZFPzeZMd9A # Domain of Science - - UCR2uRTQ53V_egXKFflMMaaw # Artem Kirsanov - - UCeUJFQ0D9qs6aVNyUt9fkeQ # The Armchair Historian - - UC5Dw9TFdbPJoTDMSiJdIQT # Whatifalthist - - UC0NCSdGglnmdWg-qHALhu1w # History102 - - UCpCSAcbqs-sjEVfk_hMfY9w # MajorPrep - - UCmdugCMpC7BawYGwkRs5drQ # PhiloNautica - - UC4gHARRmw40kcLZgINlTK_g # Religion Camp - - UCPPrhcXtGR2aMoxrPJRKPLg # Para Bellum - - UCQUnqaW8Q33siyLYhisN7HQ # Antidote - - UCXzw-OdotBUcNA9yhuYQBw # Awesome diff --git a/config/glance.yml b/config/glance.yml index 79f1c74..e61aa57 100644 --- a/config/glance.yml +++ b/config/glance.yml @@ -1,15 +1,6 @@ server: assets-path: /app/assets -branding: - custom-footer: | -

Powered by Glance

- logo-url: /assets/logo.png - favicon-url: /assets/logo.png - app-name: "My Dashboard" - app-icon-url: "/assets/app-icon.png" - app-background-color: "#151519" - theme: custom-css-file: /assets/newspaper.css background-color: 240 27 11 @@ -19,30 +10,36 @@ theme: negative-color: 360 100 71 pages: - - name: News + - name: Headlines width: wide head-widgets: - - $include: ./news/header.yml + - $include: ./headlines/header.yml columns: - - $include: ./news/left.yml - - $include: ./news/main.yml - - $include: ./news/right.yml + - $include: ./headlines/left.yml + - $include: ./headlines/main.yml + - $include: ./headlines/right.yml - - name: Finance - head-widgets: - - $include: ./finance/header.yml + - name: Markets columns: - - $include: ./finance/left.yml - - $include: ./finance/main.yml - - $include: ./finance/right.yml + - $include: ./markets/left.yml + - $include: ./markets/main.yml + - $include: ./markets/right.yml - - name: Developer + - name: Technology + width: wide columns: - - $include: ./developer/left.yml - - $include: ./developer/main.yml - - $include: ./developer/right.yml + - $include: ./technology/left.yml + - $include: ./technology/main.yml + - $include: ./technology/right.yml - - name: Media + - name: Schedule columns: - - $include: ./media/movies.yml - - $include: ./media/tv.yml + - $include: ./schedule/left.yml + - $include: ./schedule/main.yml + - $include: ./schedule/right.yml + + - name: Entertainment + columns: + - $include: ./entertainment/side.yml + - $include: ./entertainment/movies.yml + - $include: ./entertainment/tv.yml diff --git a/config/headlines/header.yml b/config/headlines/header.yml new file mode 100644 index 0000000..e3555ae --- /dev/null +++ b/config/headlines/header.yml @@ -0,0 +1,21 @@ +# Masthead + markets ticker — the newspaper banner +- type: html + source: | +
+
+
The Daily Glance
+
Tech · Markets · Crypto
+
+
+ +- type: markets + hide-header: true + markets: + - symbol: BTC-USD + name: Bitcoin + - symbol: ETH-USD + name: Ethereum + - symbol: MAGS + name: Mag7 + - symbol: QQQ + name: Nasdaq diff --git a/config/headlines/left.yml b/config/headlines/left.yml new file mode 100644 index 0000000..3498789 --- /dev/null +++ b/config/headlines/left.yml @@ -0,0 +1,23 @@ +# Headlines left rail — weather, clocks, deals wire +- size: small + widgets: + - type: weather + location: Ashburn, Virginia, United States + units: imperial + hour-format: 12h + - type: clock + hour-format: 12h + timezones: + - timezone: America/Los_Angeles + label: Los Angeles + - timezone: Asia/Singapore + label: Singapore + - timezone: Europe/London + label: London + - type: rss + title: Deals + limit: 10 + collapse-after: 3 + feeds: + - url: https://rss.app/feeds/rb0smDdeyhIkusel.xml + title: Crypto Fundraising diff --git a/config/headlines/main.yml b/config/headlines/main.yml new file mode 100644 index 0000000..8d6fdd2 --- /dev/null +++ b/config/headlines/main.yml @@ -0,0 +1,39 @@ +# Headlines main — the front page, all cards (curated feeds only) +- size: full + widgets: + - type: rss + title: Top Stories + style: horizontal-cards + limit: 12 + feeds: + - url: https://www.techmeme.com/feed.xml + title: Techmeme + - url: https://www.coindesk.com/arc/outboundfeeds/rss + title: CoinDesk + - url: "https://rsshub.app/twitter/user/realdonaldtrump/readable=1&showRetweetTextInTitle=0&addLinkForPics=1&showQuotedInTitle=1&heightOfPics=150&includeRts=0&forceWebApi=true" + title: Donald Trump + + - type: rss + title: World & Business + style: detailed-list + limit: 20 + collapse-after: 8 + feeds: + - url: https://rss.app/feeds/adBHvrEfXuYMNzbH.xml + title: Stripe Newsroom + - url: https://rsshub.app/twitter/user/geiger_capital + title: Geiger Capital + - url: https://rss.app/feeds/z2Pt6cHtQq9aKZDy.xml + title: "@Polymarket" + - url: https://rss.app/feeds/gZnrKzLOWG8nhajs.xml + title: "@SenLummis" + + - type: rss + title: Crypto + style: horizontal-cards-2 + limit: 12 + feeds: + - url: https://rss.app/feeds/wiGtpLZuOjLgKlC4.xml + title: Watcher Guru + - url: https://rss.app/feeds/rb0smDdeyhIkusel.xml + title: Crypto Fundraising diff --git a/config/news/right.yml b/config/headlines/right.yml similarity index 55% rename from config/news/right.yml rename to config/headlines/right.yml index a22512f..02fb217 100644 --- a/config/news/right.yml +++ b/config/headlines/right.yml @@ -1,14 +1,11 @@ -# Right rail — datebook, macro rates box, and the news wire +# Headlines right rail — macro rates + crypto wire - size: small widgets: - - type: calendar - first-day-of-week: sunday - - $include: ./widgets/ical-personal.yml - - $include: ./widgets/rates.yml + - $include: ../shared/rates.yml - type: rss title: The Wire limit: 20 - collapse-after: 5 + collapse-after: 6 feeds: - url: https://rss.app/feeds/wiGtpLZuOjLgKlC4.xml title: Watcher Guru diff --git a/config/markets/left.yml b/config/markets/left.yml new file mode 100644 index 0000000..a708f80 --- /dev/null +++ b/config/markets/left.yml @@ -0,0 +1,47 @@ +# Markets left rail — tickers and macro rates +- size: small + widgets: + - type: markets + title: Indices + markets: + - symbol: SPY + name: S&P 500 + - symbol: QQQ + name: Nasdaq + - symbol: DX-Y.NYB + name: Dollar Index + + - type: markets + title: Crypto + markets: + - symbol: BTC-USD + name: Bitcoin + - symbol: ETH-USD + name: Ethereum + + - type: markets + title: Stocks + sort-by: absolute-change + markets: + - symbol: NVDA + name: NVIDIA + - symbol: AAPL + name: Apple + - symbol: MSFT + name: Microsoft + - symbol: GOOGL + name: Google + - symbol: AMD + name: AMD + - symbol: RDDT + name: Reddit + - symbol: AMZN + name: Amazon + - symbol: TSLA + name: Tesla + - symbol: INTC + name: Intel + - symbol: META + name: Meta + + - $include: ../shared/rates.yml diff --git a/config/markets/main.yml b/config/markets/main.yml new file mode 100644 index 0000000..e0337fc --- /dev/null +++ b/config/markets/main.yml @@ -0,0 +1,66 @@ +# Markets main — news cards, market communities, finance & startup videos +- size: full + widgets: + - type: rss + title: Markets News + style: horizontal-cards + limit: 12 + feeds: + - url: https://www.coindesk.com/arc/outboundfeeds/rss + title: CoinDesk + - url: https://rss.app/feeds/adBHvrEfXuYMNzbH.xml + title: Stripe Newsroom + - url: https://rss.app/feeds/jDOEbpJeIbZTukgR.xml + title: Web3 News + + - type: rss + title: Crypto & Web3 + style: detailed-list + limit: 25 + collapse-after: 8 + feeds: + - url: https://rss.app/feeds/wiGtpLZuOjLgKlC4.xml + title: Watcher Guru + - url: https://rss.app/feeds/FXaMUoJgdqhPAKaV.xml + title: "@AltcoinDaily" + - url: https://rss.app/feeds/pci0tnfa7vBgkJmm.xml + title: "@coinbureau" + - url: https://rss.app/feeds/BlE1VwSSmicg51Y7.xml + title: "@naruto11eth" + - url: https://rss.app/feeds/zpBYRBsqtN6cVBe7.xml + title: "@onechancefreedm" + - url: https://rss.app/feeds/DFPARMmEVkKY3q67.xml + title: "@Pirat_Nation" + + - type: group + widgets: + - type: reddit + show-thumbnails: true + subreddit: wallstreetbets + - type: reddit + show-thumbnails: true + subreddit: technology + + - type: videos + style: grid-cards + collapse-after-rows: 2 + title: Finance + channels: + - UCAeAB8ABXGoGMbXuYPmiu2A # The Swedish Investor + - UCvSXMi2LebwJEM1s4bz5IBA # New Money + - UCV6KDgJskWaEckne5aPA0aQ # Graham Stephan + - UCAzhpt9DmG6PnHXjmJTvRGQ # Federal Reserve + + - type: videos + style: grid-cards + collapse-after-rows: 2 + title: Startups + channels: + - UCcefcZRL2oaA_uBNeo5UOWg # Y Combinator + - UCllx7jOjBL794FK67jtb5Og # Dalton + Michael + - UCxIJaCMEptJjxmmQgGFsnCg # How to Start a Startup + - UCQrZfl1FeCN9c71yjOzWVRw # Startup Archive + - UCtieZ1nS_tpjGEama6Kjxcg # Steve Jobs Archive + - UCm_WkN0wg49-eG4SymAQ_4g # Harvard Innovation Labs + - UCSGc7c1yKxo-Uhz5_oivrfg # The Startup Club by Slidebean + - UCGq-a57w-aPwyi3pW7XLiHw # The Diary Of A CEO diff --git a/config/markets/right.yml b/config/markets/right.yml new file mode 100644 index 0000000..d7b05ef --- /dev/null +++ b/config/markets/right.yml @@ -0,0 +1,36 @@ +# Markets right rail — the financial press, chatter, and founder pods +- size: small + widgets: + - type: rss + title: Press + limit: 30 + collapse-after: 10 + feeds: + - url: https://www.ft.com/technology?format=rss + title: Financial Times + - url: https://feeds.a.dj.com/rss/RSSMarketsMain.xml + title: Wall Street Journal + - url: https://rss.app/feeds/adBHvrEfXuYMNzbH.xml + title: Stripe Newsroom + + - type: rss + title: Chatter + limit: 15 + collapse-after: 5 + feeds: + - url: https://rsshub.app/twitter/user/geiger_capital + title: Geiger Capital + - url: https://rsshub.app/twitter/user/autismcapital + title: "@autismcapital" + + - type: rss + title: Founder Pods + limit: 12 + collapse-after: 4 + feeds: + - url: https://rsshub.app/youtube/user/%40AcquiredFM + title: Acquired + - url: https://rsshub.app/youtube/user/@20vc + title: 20VC + - url: https://rsshub.app/youtube/user/@founderspodcast1 + title: Founders diff --git a/config/news/main.yml b/config/news/main.yml deleted file mode 100644 index 0aa9123..0000000 --- a/config/news/main.yml +++ /dev/null @@ -1,10 +0,0 @@ -- size: full - widgets: - # Top Headlines - - $include: ./widgets/headlines.yml - # Community Discussions - - $include: ./widgets/reddit.yml - # Videos - - $include: ./widgets/youtube.yml - - diff --git a/config/news/widgets/headlines.yml b/config/news/widgets/headlines.yml deleted file mode 100644 index 792b5c0..0000000 --- a/config/news/widgets/headlines.yml +++ /dev/null @@ -1,51 +0,0 @@ -# Front page — newspaper sections as clean tabs. -# detailed-list gives the headline + blurb + section look of a printed page. -- type: group - widgets: - - type: rss - title: Front Page - style: detailed-list - limit: 15 - collapse-after: 6 - feeds: - - url: https://www.techmeme.com/feed.xml - title: Techmeme - - url: https://www.ft.com/technology?format=rss - title: Financial Times - - url: https://feeds.a.dj.com/rss/RSSMarketsMain.xml - title: Wall Street Journal - - - type: rss - title: Tech - style: detailed-list - limit: 20 - collapse-after: 6 - feeds: - - url: https://www.techmeme.com/feed.xml - title: Techmeme - - url: https://terminaltrove.com/new.xml - title: Terminal Trove - - url: https://rss.app/feeds/_tBKt0Q2vzII4baWl.xml - title: Product Hunt - - - type: rss - title: Markets - style: detailed-list - limit: 20 - collapse-after: 6 - feeds: - - url: https://feeds.a.dj.com/rss/RSSMarketsMain.xml - title: Wall Street Journal - - url: https://www.ft.com/technology?format=rss - title: Financial Times - - - type: rss - title: Crypto - style: detailed-list - limit: 20 - collapse-after: 6 - feeds: - - url: https://rss.app/feeds/wiGtpLZuOjLgKlC4.xml - title: Watcher Guru - - url: https://rss.app/feeds/rb0smDdeyhIkusel.xml - title: Crypto Fundraising diff --git a/config/news/widgets/reddit.yml b/config/news/widgets/reddit.yml deleted file mode 100644 index a606e5d..0000000 --- a/config/news/widgets/reddit.yml +++ /dev/null @@ -1,41 +0,0 @@ -# Community Discussions -- type: split-column - max-columns: 3 - widgets: - - type: reddit - show-thumbnails: true - subreddit: commandline - - type: reddit - show-thumbnails: true - subreddit: ethereum - - type: reddit - show-thumbnails: true - subreddit: golang - - type: reddit - show-thumbnails: true - subreddit: hyprland - - type: reddit - show-thumbnails: true - subreddit: ipfs - - type: reddit - show-thumbnails: true - subreddit: libp2p - - type: reddit - show-thumbnails: true - subreddit: LinuxCirclejerk - - type: reddit - show-thumbnails: true - subreddit: niri - - type: reddit - show-thumbnails: true - subreddit: omarchy - - type: reddit - show-thumbnails: true - subreddit: selfhosted - - type: reddit - show-thumbnails: true - subreddit: termux - - type: reddit - show-thumbnails: true - subreddit: unixporn - diff --git a/config/news/widgets/youtube.yml b/config/news/widgets/youtube.yml deleted file mode 100644 index f9afb48..0000000 --- a/config/news/widgets/youtube.yml +++ /dev/null @@ -1,94 +0,0 @@ -- type: group - widgets: - # Podcasts & Commentary - - type: videos - style: grid-cards - collapse-after-rows: 2 - title: Pop-Culture - channels: - - UCzQUP1qoWDoEbmsQxvdjxgQ # PowerfulJRE - - UCJIfeSCssxSC_Dhc5s7woww # Lex Clips - - UC5PstSsGrRwj2o6asQpC4Rg # Flagrant 2 - - UCKrpnfpTwncQ050VFXcVkuQ # Network State Podcast - - UC7oPkqeHTwuOZ5CZ-R9f-6w # Triggernometry - - UCIHdDJ0tjn_3j-FS7s_X1kQ # Valuetainment - - # Programming & Tech - - type: videos - style: grid-cards - collapse-after-rows: 2 - title: Programming - channels: - - UCUyeluBRhGPCW4rPe_UvBZQ # ThePrimeTime - - UCjSEJkpGbcZhvo0lr-44X_w # TechHut - - UCXuqSBlHAE6Xw-yeJA0Tunw # Linus Tech Tips - - UCs6KfncB4OV6Vug4o_bzijg # Techlore - - UCTwxaBjziKfy6y_uWu30orAby # BugBytes - - UCYeiozh-4QwuC1sjgCmB92w # DevOps Toolbox - - UCsBjURrPoezykLs9EqgamOA # Angular Firebase - - UC-mTIBh__DzAqW495JHXy5A # The Coding Gopher - - UC2WHjPDvbE6O328n17ZGcfg # ForrestKnight - - UCsUalyRg43M8D60mtHe6YcAD # Honeypot - - UCgfe2ooZD3VJPB6aJAnuQng # cloud - - UCdjsUXJ3QawK4O5L1kqqsew # IPFS - - UC3Wn3dABlgESm8Bzn8Vamgg # Sideprojects - - UCtMVHI3AJD4Qk4hcbZnI9ZQ # SomeOrdinaryGamers - - UCNJ1Ymd5yFuUPtn21xtRbbw # AI Explained - - UCutCcajxhR33k9UR-DdLsAQ # Systems Innovation - - # Startups & Business - - type: videos - style: grid-cards - collapse-after-rows: 2 - title: Startups - channels: - - UCcefcZRL2oaA_uBNeo5UOWg # Y Combinator - - UCllx7jOjBL794FK67jtb5Og # Dalton + Michael - - UCxIJaCMEptJjxmmQgGFsnCg # How to Start a Startup - - UCQrZfl1FeCN9c71yjOzWVRw # Startup Archive - - UCtieZ1nS_tpjGEama6Kjxcg # Steve Jobs Archive - - UCm_WkN0wg49-eG4SymAQ_4g # Harvard Innovation Labs - - UCSGc7c1yKxo-Uhz5_oivrfg # The Startup Club by Slidebean - - UCGq-a57w-aPwyi3pW7XLiHw # The Diary Of A CEO - - # AI & Futurism - - type: videos - style: grid-cards - collapse-after-rows: 2 - title: Futurism - channels: - - UCawZsQWqfGSbCI5yjkdVkTA # Matthew Berman - - UCZFipeZtQM5CKUjx6grh54g # Isaac Arthur - - UCR9sFzaG9Ia_kXJhfxtFMB # melodysheep - - UCSeuZvDGosq1zC6NqgqGo-Q # merlin - # Finance - - type: videos - style: grid-cards - collapse-after-rows: 2 - title: Finance - channels: - - UCAeAB8ABXGoGMbXuYPmiu2A # The Swedish Investor - - UCvSXMi2LebwJEM1s4bz5IBA # New Money - - UCV6KDgJskWaEckne5aPA0aQ # Graham Stephan - - UCAzhpt9DmG6PnHXjmJTvRGQ # Federal Reserve - - - # Science, History & Education - - type: videos - style: grid-cards - collapse-after-rows: 2 - title: Education - channels: - - UCHnyfMqiRRG1u-2MsSQLbXA # Veritasium - - UCsXVk37bltHxD1rDPwtNM8QL # Kurzgesagt – In a Nutshell - - UCxqAWLTk1CmBvZFPzeZMd9A # Domain of Science - - UCR2uRTQ53V_egXKFflMMaaw # Artem Kirsanov - - UCeUJFQ0D9qs6aVNyUt9fkeQ # The Armchair Historian - - UC5Dw9TFdbPJoTDMSiJdIQT # Whatifalthist - - UC0NCSdGglnmdWg-qHALhu1w # History102 - - UCpCSAcbqs-sjEVfk_hMfY9w # MajorPrep - - UCmdugCMpC7BawYGwkRs5drQ # PhiloNautica - - UC4gHARRmw40kcLZgINlTK_g # Religion Camp - - UCPPrhcXtGR2aMoxrPJRKPLg # Para Bellum - - UCQUnqaW8Q33siyLYhisN7HQ # Antidote - - UCXzw-OdotBUcNA9yhuYQBw # Awesome diff --git a/config/news/left.yml b/config/schedule/left.yml similarity index 64% rename from config/news/left.yml rename to config/schedule/left.yml index 6b5a262..bcbdbbb 100644 --- a/config/news/left.yml +++ b/config/schedule/left.yml @@ -1,11 +1,12 @@ -# Left rail — weather corner, work agenda, world clocks +# Schedule left rail — the day at a glance - size: small widgets: + - type: calendar + first-day-of-week: sunday - type: weather location: Ashburn, Virginia, United States - units: imperial # alternatively "metric" - hour-format: 12h # alternatively "24h" - - $include: ./widgets/ical-work.yml + units: imperial + hour-format: 12h - type: clock hour-format: 12h timezones: diff --git a/config/schedule/main.yml b/config/schedule/main.yml new file mode 100644 index 0000000..4b37204 --- /dev/null +++ b/config/schedule/main.yml @@ -0,0 +1,8 @@ +# Schedule main — agenda side by side, then active project activity +- size: full + widgets: + - type: split-column + widgets: + - $include: ./widgets/ical-work.yml + - $include: ./widgets/ical-personal.yml + - $include: ./widgets/graph.yml diff --git a/config/schedule/right.yml b/config/schedule/right.yml new file mode 100644 index 0000000..d60fc6e --- /dev/null +++ b/config/schedule/right.yml @@ -0,0 +1,9 @@ +# Schedule right rail — running task lists +- size: small + widgets: + - type: to-do + title: Today + id: today + - type: to-do + title: Projects + id: projects diff --git a/config/schedule/widgets/graph.yml b/config/schedule/widgets/graph.yml new file mode 100644 index 0000000..83ab8f0 --- /dev/null +++ b/config/schedule/widgets/graph.yml @@ -0,0 +1,19 @@ +# GitHub contribution graph (served by the glance-github-graph compose service). +# ponytail: must use the service name, not localhost, from inside the container. +- type: extension + title: Active Projects + url: http://glance-github-graph:8080/graph/prdlk + allow-potentially-dangerous-html: true + parameters: + background-color: "#1d2025" # cell background + primary-color: "#f3afaf" # cell foreground + svg-height: 150 # height for graph svg + show-months: true # show months on the graph + show-weekdays: true # show weekdays on the graph + font-size: 9 # size of weekdays & months text on graph + + # if true, it will transition the hue from background + # to primary color per the number of commits. + # otherwise it will just use the background hue for + # 0 commits and the foreground hue for all others + transition-hue: false diff --git a/config/schedule/widgets/ical-personal.yml b/config/schedule/widgets/ical-personal.yml new file mode 100644 index 0000000..4d03496 --- /dev/null +++ b/config/schedule/widgets/ical-personal.yml @@ -0,0 +1,76 @@ +- type: custom-api + title: Personal Events + cache: 15m + url: http://glances-ical-api:8076/events + parameters: + url: https://calendar.google.com/calendar/ical/prnk28%40gmail.com/public/basic.ics + limit: 5 + template: | + {{ $events := .JSON.Array "events" }} + {{ $count := len $events }} + {{ $limit := 3 }} + + {{ if eq $count 0 }} +
+ No entries found. +
+ {{ end }} + + +
    + {{ range $i, $e := $events }} + {{ $ongoing := $e.Bool "ongoing" }} + {{ if $ongoing }} + {{ $start := $e.String "start" | parseTime "rfc3339" }} + {{ $end := $e.String "end" | parseTime "rfc3339" }} + {{ $name := $e.String "name" }} + {{ $url := $e.String "url" }} +
  • +
    + +
    + {{ if $url }} + {{ $name }} + {{ else }} + {{ $name }} + {{ end }} +
    {{ $start | formatTime "Mon, 02 Jan 2006" }}
    +
    + +
    + ends +
    +
    +
  • + {{ end }} + {{ end }} +
+ + + {{ $shown := 0 }} +
    + {{ range $i, $e := $events }} + {{ $ongoing := $e.Bool "ongoing" }} + {{ if not $ongoing }} + {{ $start := $e.String "start" | parseTime "rfc3339" }} + {{ $name := $e.String "name" }} + {{ $url := $e.String "url" }} +
  • +
    + +
    + {{ if $url }} + {{ $name }} + {{ else }} + {{ $name }} + {{ end }} +
    {{ $start | formatTime "Mon, 02 Jan 2006" }}
    +
    + +
    +
    +
  • + {{ $shown = add $shown 1 }} + {{ end }} + {{ end }} +
diff --git a/config/schedule/widgets/ical-work.yml b/config/schedule/widgets/ical-work.yml new file mode 100644 index 0000000..e3c3077 --- /dev/null +++ b/config/schedule/widgets/ical-work.yml @@ -0,0 +1,76 @@ +- type: custom-api + title: Work Schedule + cache: 15m + url: http://glances-ical-api:8076/events + parameters: + url: https://calendar.google.com/calendar/ical/prad%40sonr.io/public/basic.ics + limit: 5 + template: | + {{ $events := .JSON.Array "events" }} + {{ $count := len $events }} + {{ $limit := 3 }} + + {{ if eq $count 0 }} +
+ No entries found. +
+ {{ end }} + + +
    + {{ range $i, $e := $events }} + {{ $ongoing := $e.Bool "ongoing" }} + {{ if $ongoing }} + {{ $start := $e.String "start" | parseTime "rfc3339" }} + {{ $end := $e.String "end" | parseTime "rfc3339" }} + {{ $name := $e.String "name" }} + {{ $url := $e.String "url" }} +
  • +
    + +
    + {{ if $url }} + {{ $name }} + {{ else }} + {{ $name }} + {{ end }} +
    {{ $start | formatTime "Mon, 02 Jan 2006" }}
    +
    + +
    + ends +
    +
    +
  • + {{ end }} + {{ end }} +
+ + + {{ $shown := 0 }} +
    + {{ range $i, $e := $events }} + {{ $ongoing := $e.Bool "ongoing" }} + {{ if not $ongoing }} + {{ $start := $e.String "start" | parseTime "rfc3339" }} + {{ $name := $e.String "name" }} + {{ $url := $e.String "url" }} +
  • +
    + +
    + {{ if $url }} + {{ $name }} + {{ else }} + {{ $name }} + {{ end }} +
    {{ $start | formatTime "Mon, 02 Jan 2006" }}
    +
    + +
    +
    +
  • + {{ $shown = add $shown 1 }} + {{ end }} + {{ end }} +
diff --git a/config/shared/rates.yml b/config/shared/rates.yml new file mode 100644 index 0000000..7aa5a88 --- /dev/null +++ b/config/shared/rates.yml @@ -0,0 +1,62 @@ +# Macro rates box (St. Louis Fed / FRED). +# ponytail: an $include'd file must be a bare YAML sequence, so no shared anchor +# here — the three widgets repeat a static template. Don't add a `define:` key. +- type: custom-api + title: Secured Financing Rate + cache: 12h + url: https://api.stlouisfed.org/fred/series/observations?series_id=SOFR&api_key=${FRED_API_KEY}&file_type=json&sort_order=desc&limit=2 + template: | + {{ $latest := .JSON.Float "observations.0.value" }} + {{ $previous := .JSON.Float "observations.1.value" }} + {{ $lastObserve := .JSON.String "observations.0.date" }} + {{ $change := sub $latest $previous }} +
+
+ {{ .JSON.String "observations.0.value" }}% +
St. Louis Federal Reserve
+
+
+
{{ printf "%+.2f" $change }}%
+
+
+
+ +- type: custom-api + title: Federal Funds Rate + cache: 12h + url: https://api.stlouisfed.org/fred/series/observations?series_id=FEDFUNDS&api_key=${FRED_API_KEY}&file_type=json&sort_order=desc&limit=2 + template: | + {{ $latest := .JSON.Float "observations.0.value" }} + {{ $previous := .JSON.Float "observations.1.value" }} + {{ $lastObserve := .JSON.String "observations.0.date" }} + {{ $change := sub $latest $previous }} +
+
+ {{ .JSON.String "observations.0.value" }}% +
St. Louis Federal Reserve
+
+
+
{{ printf "%+.2f" $change }}%
+
+
+
+ +- type: custom-api + title: Real GDP + cache: 12h + url: https://api.stlouisfed.org/fred/series/observations?series_id=A191RL1Q225SBEA&api_key=${FRED_API_KEY}&file_type=json&sort_order=desc&limit=2 + template: | + {{ $latest := .JSON.Float "observations.0.value" }} + {{ $previous := .JSON.Float "observations.1.value" }} + {{ $lastObserve := .JSON.String "observations.0.date" }} + {{ $change := sub $latest $previous }} +
+
+ {{ .JSON.String "observations.0.value" }}% +
St. Louis Federal Reserve
+
+
+
{{ printf "%+.2f" $change }}%
+
+
+
diff --git a/config/technology/left.yml b/config/technology/left.yml new file mode 100644 index 0000000..5566342 --- /dev/null +++ b/config/technology/left.yml @@ -0,0 +1,30 @@ +# Technology left rail — tools & launches +- size: small + widgets: + - type: rss + title: Terminal Trove + limit: 15 + collapse-after: 6 + feeds: + - url: https://terminaltrove.com/new.xml + title: Terminal Trove + - type: rss + title: Product Hunt + limit: 15 + collapse-after: 6 + feeds: + - url: https://rss.app/feeds/_tBKt0Q2vzII4baWl.xml + title: Product Hunt + - type: rss + title: Dev Blogs + limit: 15 + collapse-after: 6 + feeds: + - url: https://github.blog/feed/ + title: GitHub Blog + - url: https://rsshub.app/anthropic/research + title: Anthropic Research + - url: https://openai.com/news/rss.xml + title: OpenAI News + - url: https://rss.app/feeds/Q5ElsNVbwLHZhUPm.xml + title: Cloudflare Blog diff --git a/config/technology/main.yml b/config/technology/main.yml new file mode 100644 index 0000000..ef52112 --- /dev/null +++ b/config/technology/main.yml @@ -0,0 +1,80 @@ +# Technology main — Techmeme cards, community tabs, programming videos +- size: full + widgets: + - type: rss + title: Techmeme + style: horizontal-cards + limit: 12 + feeds: + - url: https://www.techmeme.com/feed.xml + title: Techmeme + hide-description: true + + - type: rss + title: Ship Log + style: detailed-list + limit: 20 + collapse-after: 6 + feeds: + - url: https://hnrss.org/show + title: Show HN + - url: https://rsshub.app/github/trending/daily/any + title: GitHub Trending + - url: https://rss.app/feeds/y4Wby7sxFhCINQvr.xml + title: Starred Repos + - url: https://rss.app/feeds/Nw0aq77nQjy57K2X.xml + title: "@thdxr" + + - type: group + define: &sub + type: reddit + show-thumbnails: true + collapse-after: 8 + widgets: + - subreddit: commandline + <<: *sub + - subreddit: golang + <<: *sub + - subreddit: selfhosted + <<: *sub + - subreddit: tui + <<: *sub + - subreddit: hyprland + <<: *sub + - subreddit: niri + <<: *sub + - subreddit: omarchy + <<: *sub + - subreddit: unixporn + <<: *sub + - subreddit: termux + <<: *sub + - subreddit: LinuxCirclejerk + <<: *sub + - subreddit: ethereum + <<: *sub + - subreddit: ipfs + <<: *sub + - subreddit: libp2p + <<: *sub + + - type: videos + style: grid-cards + collapse-after-rows: 2 + title: Programming + channels: + - UCUyeluBRhGPCW4rPe_UvBZQ # ThePrimeTime + - UCjSEJkpGbcZhvo0lr-44X_w # TechHut + - UCXuqSBlHAE6Xw-yeJA0Tunw # Linus Tech Tips + - UCs6KfncB4OV6Vug4o_bzijg # Techlore + - UCTwxaBjziKfy6y_uWu30orAby # BugBytes + - UCYeiozh-4QwuC1sjgCmB92w # DevOps Toolbox + - UCsBjURrPoezykLs9EqgamOA # Angular Firebase + - UC-mTIBh__DzAqW495JHXy5A # The Coding Gopher + - UC2WHjPDvbE6O328n17ZGcfg # ForrestKnight + - UCsUalyRg43M8D60mtHe6YcAD # Honeypot + - UCgfe2ooZD3VJPB6aJAnuQng # cloud + - UCdjsUXJ3QawK4O5L1kqqsew # IPFS + - UC3Wn3dABlgESm8Bzn8Vamgg # Sideprojects + - UCNJ1Ymd5yFuUPtn21xtRbbw # AI Explained + - UCutCcajxhR33k9UR-DdLsAQ # Systems Innovation diff --git a/config/technology/right.yml b/config/technology/right.yml new file mode 100644 index 0000000..6f551d4 --- /dev/null +++ b/config/technology/right.yml @@ -0,0 +1,16 @@ +# Technology right rail — self-hosting board + futurism deep dives +- size: small + widgets: + - type: reddit + subreddit: selfhosted + limit: 7 + style: vertical-cards + - type: videos + style: vertical-list + collapse-after: 4 + title: Futurism + channels: + - UCawZsQWqfGSbCI5yjkdVkTA # Matthew Berman + - UCZFipeZtQM5CKUjx6grh54g # Isaac Arthur + - UCR9sFzaG9Ia_kXJhfxtFMB # melodysheep + - UCSeuZvDGosq1zC6NqgqGo-Q # merlin