2025-12-08 13:35:13 -06:00

2026-04-08 11:24:25 -04:00
# ws4kp-linhanced
2020-11-01 22:13:41 -06:00
2026-04-08 11:24:25 -04:00
`ws4kp-linhanced` is a Linux-focused fork of [`netbymatt/ws4kp` ](https://github.com/netbymatt/ws4kp ) by `markmental` .
2020-11-01 22:13:41 -06:00
2026-04-09 15:59:23 -04:00
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` ](https://github.com/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.
2020-11-01 22:13:41 -06:00
2026-04-09 15:59:23 -04:00
This fork also explicitly embraces Slackware Linux / `weatherstar4k` branding as part of its mission. Broad platform neutrality is not a design goal here.
2020-11-01 22:13:41 -06:00
2026-04-09 15:59:23 -04:00
## What This Fork Is
2026-04-08 11:24:25 -04:00
2026-04-09 15:59:23 -04:00
`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.
2026-04-08 11:24:25 -04:00
2026-04-09 15:59:23 -04:00
This fork is built around a few priorities:
2026-04-08 11:24:25 -04:00
2026-04-09 15:59:23 -04:00
* 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
2026-04-08 11:24:25 -04:00
2026-04-09 15:59:23 -04:00
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 ](http://www.taiganet.com/ ).
2026-04-08 11:24:25 -04:00
2026-04-09 15:59:23 -04:00
## Why This Fork Exists
2020-11-01 22:13:41 -06:00
2026-04-09 15:59:23 -04:00
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.
2020-11-01 22:13:41 -06:00
2026-04-09 15:59:23 -04:00
This fork sits in the middle on purpose:
2026-04-08 11:24:25 -04:00
2026-04-09 15:59:23 -04:00
* more international than upstream `ws4kp`
* leaner and narrower in scope than `ws4kp-international`
* more explicitly Linux-focused than either
2026-04-08 15:16:20 -04:00
2026-04-09 15:59:23 -04:00
## Fork Lineage
2026-04-08 15:16:20 -04:00
2026-04-09 15:59:23 -04:00
This project builds on the work of:
2026-04-08 15:16:20 -04:00
2026-04-09 15:59:23 -04:00
* [`netbymatt/ws4kp` ](https://github.com/netbymatt/ws4kp ) for the core WeatherStar implementation and overall application structure
* [`mwood77/ws4kp-international` ](https://github.com/mwood77/ws4kp-international ) for Open-Meteo international weather direction and some global-map concepts
2026-04-08 15:16:20 -04:00
2026-04-09 15:59:23 -04:00
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.
2026-04-08 11:24:25 -04:00
2026-04-09 15:59:23 -04:00
## Current Features
2025-06-03 09:39:57 -05:00
2026-04-09 15:59:23 -04:00
Major features currently in this fork:
2025-06-03 09:39:57 -05:00
2026-04-09 15:59:23 -04:00
* 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` on the newer map stack
* Travel Forecast rebuilt around region buckets with a global fallback
* live theme switching with auto-discovered theme folders
* Server Observations powered by [fastfetch ](https://github.com/fastfetch-cli/fastfetch )
* server-side caching proxy for Open-Meteo, RainViewer metadata, and ArcGIS basemap tiles
* static-build path fixes for subdirectory deployment
2025-06-03 09:39:57 -05:00
2026-04-09 15:59:23 -04:00
Some NOAA-only products are still retained where they remain useful and there is no replacement yet:
2026-04-07 14:57:23 -04:00
* Hazards
* SPC Outlook
2026-04-08 11:24:25 -04:00
2026-04-09 15:59:23 -04:00
## Themes
2026-04-07 14:57:23 -04:00
2026-04-09 15:59:23 -04:00
`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.
2025-02-24 21:16:30 +01:00
2026-04-09 15:59:23 -04:00
Current themes include:
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
* `Default` : the standard WeatherStar 4000+ asset set
* `oceanview` : based on the Oceanview Weather Channel presentation from the Eventide Media Center analog horror series
* `slackware` : based on the Oceanview theme, but with the Slackware Linux badge/logo treatment
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
Current themed assets include:
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
* `logo-corner.png`
* `1.png`
* `1-chart.png`
* `2.png`
* `3.png`
* `4.png`
* `5.png`
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
Additional themes can be added by creating a subdirectory under `themes/` with matching override filenames.
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
## Quick Start
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
Ensure you have Node installed.
2025-06-26 20:39:18 -04:00
```bash
2026-04-09 15:59:23 -04:00
git clone <your fork url here>
cd ws4kp-linhanced
npm install
2025-06-26 20:39:18 -04:00
npm start
```
2026-04-09 15:59:23 -04:00
Then open:
2023-04-13 16:29:16 -06:00
2026-04-09 15:59:23 -04:00
```text
http://localhost:8080/
2025-06-26 20:39:18 -04:00
```
2026-04-09 15:59:23 -04:00
## Running Modes
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
This fork supports two main runtime styles.
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
### Server Mode
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
Recommended for normal use.
2025-06-26 17:17:17 -04:00
```bash
2026-04-09 15:59:23 -04:00
npm start
2025-06-26 17:17:17 -04:00
```
2026-04-09 15:59:23 -04:00
This mode includes:
2025-06-03 09:35:38 -04:00
2026-04-09 15:59:23 -04:00
* 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
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
### Static Mode
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
Useful if you want to serve the built files directly.
2025-06-26 20:39:18 -04:00
```bash
2025-06-13 09:04:39 -06:00
npm run build
2026-04-09 15:59:23 -04:00
STATIC=1 DIST=1 npm start
2025-06-03 09:39:57 -05:00
```
2020-11-01 22:13:41 -06:00
2026-04-09 15:59:23 -04:00
Or upload the generated `dist/` directory to your web server after running:
2025-06-26 20:39:18 -04:00
```bash
2026-04-09 15:59:23 -04:00
npm run build
2025-05-31 13:17:05 -05:00
```
2026-04-09 15:59:23 -04:00
The static build has been adjusted so frontend-generated paths no longer assume deployment at `/` , which makes subdirectory hosting more practical.
2020-11-01 22:13:41 -06:00
2026-04-09 15:59:23 -04:00
## International Support
2020-11-01 22:13:41 -06:00
2026-04-09 15:59:23 -04:00
Core forecast functionality works internationally.
2020-11-01 22:13:41 -06:00
2026-04-09 15:59:23 -04:00
That currently includes:
2025-06-13 14:33:06 -06:00
2026-04-09 15:59:23 -04:00
* Current Conditions
* Hourly Forecast
* Hourly Graph
* Local Forecast
* Extended Forecast
* Almanac
* Travel Forecast
* Local Radar
* Regional Observations
2025-07-02 08:40:42 -04:00
2026-04-09 15:59:23 -04:00
Legacy NOAA-only screens still remain US-specific where applicable.
2025-07-02 08:40:42 -04:00
2026-04-09 15:59:23 -04:00
## Settings And Customization
2025-07-02 08:40:42 -04:00
2026-04-09 15:59:23 -04:00
Important settings and customization features include:
2025-07-02 08:40:42 -04:00
2026-04-09 15:59:23 -04:00
* playback speed
* widescreen mode
* kiosk mode
* scan lines
* US vs metric units
* theme selection
* custom bottom scroll text
* display enable/disable checkboxes
2025-07-03 12:49:13 -04:00
2026-04-09 15:59:23 -04:00
### Permalinks
2025-07-02 08:40:42 -04:00
2026-04-09 15:59:23 -04:00
Display selections, location, and major settings can be shared or bookmarked through the built-in permalink feature.
2025-03-24 21:49:41 -05:00
2026-04-09 15:59:23 -04:00
### Kiosk Mode
2025-03-24 21:49:41 -05:00
2026-04-09 15:59:23 -04:00
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.
2025-06-03 09:39:57 -05:00
2026-04-09 15:59:23 -04:00
### Custom Scroll Text
2025-03-27 09:22:52 -06:00
2026-04-09 15:59:23 -04:00
The bottom text crawl can be customized using the built-in custom text setting.
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
Multiple messages can be separated with `|` to rotate randomly.
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
Example:
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
```text
Welcome to Weatherstar|Thanks for watching
2025-03-27 09:22:52 -06:00
```
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
### Custom Hook
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
A customization hook is available as:
2025-06-26 20:39:18 -04:00
2026-04-09 15:59:23 -04:00
```text
server/scripts/custom.js
2025-03-27 09:22:52 -06:00
```
2025-03-24 21:49:41 -05:00
2026-04-09 15:59:23 -04:00
A sample file exists at:
2025-03-24 21:49:41 -05:00
2026-04-09 15:59:23 -04:00
```text
server/scripts/custom.sample.js
2025-06-06 16:40:08 -05:00
```
2024-04-19 21:23:54 -05:00
2026-04-09 15:59:23 -04:00
## Music
2025-06-03 09:39:57 -05:00
2026-04-09 15:59:23 -04:00
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.
2020-11-01 22:13:41 -06:00
2026-04-09 15:59:23 -04:00
If you want to use your own music, place `.mp3` files in:
2025-02-23 23:29:39 -06:00
2026-04-09 15:59:23 -04:00
```text
server/music/
```
2025-08-10 20:05:07 -05:00
2026-04-09 15:59:23 -04:00
The application will build or serve a playlist from those files depending on the runtime mode.
2025-08-10 20:05:07 -05:00
2026-04-09 15:59:23 -04:00
## Build And Maintenance Notes
2025-11-10 13:19:15 -06:00
2026-04-09 15:59:23 -04:00
This fork tries to stay practical not only at runtime, but also in how it is maintained.
2025-11-10 13:19:15 -06:00
2026-04-09 15:59:23 -04:00
That includes:
2025-11-10 13:19:15 -06:00
2026-04-09 15:59:23 -04:00
* 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
2025-11-10 13:19:15 -06:00
2026-04-09 15:59:23 -04:00
Recent cleanup includes removing vulnerable build-only sourcemap tooling from the main build pipeline.
2025-05-20 18:02:25 -05:00
2026-04-09 15:59:23 -04:00
## Motivation
2025-05-20 18:02:25 -05:00
2026-04-09 15:59:23 -04:00
Part of the motivation is simple nostalgia: old Weather Channel presentation still has a very distinct charm.
2025-05-31 13:17:05 -05:00
2026-04-09 15:59:23 -04:00
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.
2025-05-31 13:17:05 -05:00
2025-06-03 09:39:57 -05:00
## Acknowledgements
2026-04-09 15:59:23 -04:00
This project builds on earlier work from the WeatherStar community and related forks.
Credits and thanks go to:
2025-06-03 09:39:57 -05:00
2026-04-09 15:59:23 -04:00
* [Mike Battaglia ](https://github.com/vbguyny/ws4kp ) for the original project lineage
* [`netbymatt/ws4kp` ](https://github.com/netbymatt/ws4kp ) for the upstream base this fork was built from
* [`mwood77/ws4kp-international` ](https://github.com/mwood77/ws4kp-international ) for proving out the Open-Meteo international direction
* [TWCClassics ](https://twcclassics.com/ ) for WeatherStar reference material, fonts, and icon resources
* the broader WeatherStar community for reference material and ongoing experimentation
2025-06-03 09:39:57 -05:00
2020-11-01 22:13:41 -06:00
## Disclaimer
2026-04-09 15:59:23 -04:00
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.
2020-11-01 22:13:41 -06:00
2026-04-09 15:59:23 -04:00
The WeatherSTAR 4000 name and original technology belong to The Weather Channel. This project is a fan-made, non-commercial recreation and reinterpretation.