ws4kp-linhanced is a Linux-focused fork of https://github.com/netbymatt/ws4kp. Weather Channel WeatherStar 4000 simulator https://mentalnet.xyz/ws4kp-linhanced-alpine/
Find a file
mrkmntal 66a642f953
Some checks are pending
build-docker / Build Image (push) Waiting to run
Add classic twc theme
2026-04-14 21:34:22 -04:00
.github Rebrand for linhanced 0.1 2026-04-14 13:47:51 -04:00
.vscode gulp now publishes sourcemaps 2025-11-30 04:16:02 +00:00
datagenerators Rebrand for linhanced 0.1 2026-04-14 13:47:51 -04:00
dist Updates for default folder 2025-03-24 18:24:49 -05:00
gulp Add Ground View screen for server edition, powered by the Windy API https://api.windy.com/ 2026-04-14 12:17:42 -04:00
proxy Rebrand for linhanced 0.1 2026-04-14 13:47:51 -04:00
server Replace social banner 2026-04-14 14:09:39 -04:00
src Add Ground View screen for server edition, powered by the Windy API https://api.windy.com/ 2026-04-14 12:17:42 -04:00
tests update dependencies 2026-03-26 14:12:38 -05:00
themes Add classic twc theme 2026-04-14 21:34:22 -04:00
views Rebrand for linhanced 0.1 2026-04-14 13:47:51 -04:00
.dockerignore Updates for default folder 2025-03-24 18:24:49 -05:00
.gitattributes add mjs to git attributes 2023-09-19 08:21:00 -05:00
.gitignore Add Ground View screen for server edition, powered by the Windy API https://api.windy.com/ 2026-04-14 12:17:42 -04:00
.npmrc update eslint via compatability layer with airbnb-base 2025-06-14 11:35:33 -05:00
DEVLOG.md Add LWN News section 2026-04-06 18:50:03 -04:00
Dockerfile env workaround for static build 2025-06-13 14:51:06 -06:00
Dockerfile.server fix Dockerfile.server build close #142 2025-09-09 20:06:54 -05:00
eslint.config.mjs Add rule to allow devDependencies in dev-related config files 2025-07-07 12:51:09 -04:00
gulpfile.mjs Remove basic-ftp and other Amazon S3 deployment related build dependencies 2026-04-11 18:33:00 -04:00
index.mjs Add Ground View screen for server edition, powered by the Windy API https://api.windy.com/ 2026-04-14 12:17:42 -04:00
LICENSE permalink coloring, readme additions close #88 2025-05-31 13:20:35 -05:00
nginx.conf fix: nginx query parameter redirect works like node.js 2025-10-20 11:42:42 -06:00
package-lock.json Rebrand for linhanced 0.1 2026-04-14 13:47:51 -04:00
package.json Add build step to npm start script because it's very short and needed when adding new assets 2026-04-14 14:41:55 -04:00
README.md Add classic twc theme 2026-04-14 21:34:22 -04:00
static-env-handler.sh fix(static builds): duplicate query params 2025-10-20 13:28:45 -06:00
ws4kp.code-workspace add volume control slider and overhaul settings close #109 2025-11-10 12:54:54 -06:00

ws4kp-linhanced

ws4kp-linhanced is a Linux-focused fork of netbymatt/ws4kp by markmental.

It keeps the stronger, more stable foundation of the original ws4kp project while selectively incorporating international weather support and global map ideas from mwood77/ws4kp-international. The goal is not to become a kitchen-sink weather platform. The goal is a leaner, maintainable, Linux-oriented WeatherStar fork with a clear identity.

This fork also explicitly embraces Slackware Linux / weatherstar4k branding as part of its mission. Broad platform neutrality is not a design goal here.

What This Fork Is

ws4kp-linhanced is a retro weather display project that preserves the classic WeatherStar-style feel while updating the data sources and map stack for modern use.

This fork is built around a few priorities:

  • keep the classic WeatherStar presentation and pacing intact where practical
  • support international locations without dragging in unnecessary feature creep
  • prefer a stable, understandable codebase over maximum feature count
  • lean into Linux-oriented branding and integrations where they add character and usefulness

It is not intended to be a perfect hardware emulation of the original WeatherStar 4000. If you want a project aimed more directly at hardware-faithful behavior, see the WS4000 Simulator.

Why This Fork Exists

This fork exists because the original ws4kp codebase provided the best overall base to keep working from, but it remained too tightly tied to US-only weather sources. At the same time, ws4kp-international proved that Open-Meteo and global map support were viable, but it grew in directions that felt heavier and harder to maintain.

This fork sits in the middle on purpose:

  • more international than upstream ws4kp
  • leaner and narrower in scope than ws4kp-international
  • more explicitly Linux-focused than either

Fork Lineage

This project builds on the work of:

This fork intentionally diverges from ws4kp-international. It selectively adapts the parts that fit this project and leaves behind the parts that would make the codebase harder to keep stable.

Current Features

Major features currently in this fork:

  • Open-Meteo-based international weather for the core forecast screens
  • ArcGIS-powered international location search and reverse geocoding
  • global RainViewer radar on a cached world basemap
  • global Regional Observations and nearby-city displays backed by expanded worldwide city coverage
  • Latest Observations screen for nearby city temperatures, conditions, and wind
  • Ground View screen powered by nearby Windy webcams (requires API key, see below)
  • Travel Forecast rebuilt around region buckets with a global fallback
  • optional screen-specific audio playback for supported displays
  • wind/gust-based condition inference for better condition names and icon matches when upstream data is too generic
  • live theme switching with auto-discovered theme folders
  • Server Observations powered by fastfetch
  • server-side caching proxy for Open-Meteo, RainViewer metadata, and ArcGIS basemap tiles
  • static-build path fixes for subdirectory deployment

Some NOAA-only products are still retained where they remain useful and there is no replacement yet:

  • Hazards (US only)
  • SPC Outlook (US only)

For locations outside the US, a derived alert system provides best-effort hazard warnings based on available meteorological data when official NOAA products do not apply.

Themes

ws4kp-linhanced supports live asset theme swapping from the main page. Themes are discovered automatically from the themes/ directory and can be changed from the Theme selector under the More information link without reloading the page.

Current themes include:

  • Default
  • azazel
  • debian
  • linhanced
  • linhanced-retro
  • oceanview
  • slackware
  • twc-linhanced
  • twc-classic
  • twc-stockholm

Currently supported themed assets include:

These filenames represent the standard override set used by the built-in themes.

  • logo-corner.png
  • 1.png
  • 1-chart.png
  • 2.png
  • 3.png
  • 4.png
  • 5.png
  • 6.png

Additional themes can be added by creating a subdirectory under themes/ with matching override filenames.

Quick Start

Ensure you have Node installed.

git clone <repourlgoeshere>
cd ws4kp-linhanced
npm install
npm start

Then open:

http://localhost:8080/

API Keys

Windy Webcams (Ground View)

The Ground View screen requires a Windy Webcams API key. Create a file named windy-api-key.txt in the project root and paste your API key as plain text. If this file is missing, the Ground View screen will not work.

You can obtain a free API key from Windy Webcams API.

Running Modes

This fork supports two main runtime styles.

Server Mode

Recommended for normal use.

npm start

This mode includes:

  • Express server entry point
  • proxying and caching for weather/map requests
  • Fastfetch-backed Server Observations
  • better shared performance when multiple clients use the same instance

Static Mode

Useful if you want to serve the built files directly.

npm run build
STATIC=1 DIST=1 npm start

Or upload the generated dist/ directory to your web server after running:

npm run build

The static build has been adjusted so frontend-generated paths no longer assume deployment at /, which makes subdirectory hosting more practical. Also, features that require a backend server like the on-disk cache, Fastfetch-backed Server Observations, LWN Linux News, and Ground View will not work when running the static build by itself.

The public demo at https://mentalnet.xyz/ws4kp-linhanced-demo/ is intentionally served as a static build, so the Linux News, Server Observations, and Ground View screens will not work there.

International Support

Core forecast functionality works internationally.

That currently includes:

  • Current Conditions
  • Latest Observations
  • Hourly Forecast
  • Hourly Graph
  • Local Forecast
  • Extended Forecast
  • Almanac
  • Travel Forecast
  • Local Radar
  • Regional Observations

Legacy NOAA-only screens still remain US-specific where applicable.

Settings And Customization

Important settings and customization features include:

  • playback speed
  • widescreen mode
  • kiosk mode
  • scan lines
  • US vs metric units
  • theme selection
  • optional screen audio toggle
  • custom bottom scroll text
  • display enable/disable checkboxes

Display selections, location, and major settings can be shared or bookmarked through the built-in permalink feature.

Kiosk Mode

Kiosk mode hides the surrounding controls and maximizes the display area for dedicated setups. It can be triggered from the UI or via permalink parameters.

Custom Scroll Text

The bottom text crawl can be customized using the built-in custom text setting.

Multiple messages can be separated with | to rotate randomly.

Example:

Welcome to Weatherstar|Thanks for watching

Custom Hook

A customization hook is available as:

server/scripts/custom.js

A sample file exists at:

server/scripts/custom.sample.js

Audio

The original WeatherStar atmosphere depended heavily on background music. This repo includes a small set of WeatherStar-inspired tracks, while keeping the total size manageable.

If you want to use your own music, place .mp3 files in:

server/music/

The application will build or serve a playlist from those files depending on the runtime mode.

Alert and screen-specific audio clips live in:

server/alert/

tone.mp3 is used for alert playback, and supported displays can also use matching screen-specific audio clips from the same directory. Screen audio is optional and can be disabled from the Settings UI.

Build And Maintenance Notes

This fork tries to stay practical not only at runtime, but also in how it is maintained.

That includes:

  • keeping the codebase relatively small and understandable
  • avoiding unnecessary build complexity where possible
  • trimming or replacing dependencies when the benefit is low
  • addressing build-step vulnerabilities instead of ignoring them

Recent cleanup includes removing vulnerable build-only sourcemap tooling from the main build pipeline.

Motivation

Part of the motivation is simple nostalgia: old Weather Channel presentation still has a very distinct charm.

The other part is more practical. A Linux-friendly, self-hostable retro weather display is still a fun and useful thing to have around, especially when it stays light enough to keep hacking on without turning into an enormous platform project.

Acknowledgements

This project builds on earlier work from the WeatherStar community and related forks.

Credits and thanks go to:

  • Mike Battaglia for the original project lineage
  • netbymatt/ws4kp for the upstream base this fork was built from
  • mwood77/ws4kp-international for proving out the Open-Meteo international direction
  • TWCClassics for WeatherStar reference material, fonts, and icon resources
  • the broader WeatherStar community for reference material and ongoing experimentation

Disclaimer

This project should not be relied upon in life-threatening weather situations or as a mission-critical public weather information source.

Internet services fail, upstream data can be delayed, and browser-based applications are not a substitute for dedicated alerting systems.

The WeatherSTAR 4000 name, Weather Channel logo and original technology belong to The Weather Channel. This project is a fan-made, non-commercial recreation and reinterpretation and is not affiliated with or run by the Weather Channel.