{"id":21323794,"url":"https://github.com/richinfante/fb-dashboard","last_synced_at":"2026-05-16T23:05:15.220Z","repository":{"id":250507024,"uuid":"834651432","full_name":"richinfante/fb-dashboard","owner":"richinfante","description":"Dashboard renderer designed for running on low-cost linux devices, like Raspberry pi","archived":false,"fork":false,"pushed_at":"2024-08-25T02:47:31.000Z","size":1522,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-22T12:12:40.419Z","etag":null,"topics":["dashboard","framebuffer","raspberry-pi"],"latest_commit_sha":null,"homepage":"https://richinfante.com/2024/07/29/monitoring-dashboard-with-linux-framebuffer","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/richinfante.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-27T23:45:57.000Z","updated_at":"2024-08-25T02:47:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"121ac15a-266a-436d-a78d-ed9b03766bae","html_url":"https://github.com/richinfante/fb-dashboard","commit_stats":null,"previous_names":["richinfante/aws-dash"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richinfante%2Ffb-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richinfante%2Ffb-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richinfante%2Ffb-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richinfante%2Ffb-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richinfante","download_url":"https://codeload.github.com/richinfante/fb-dashboard/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243801968,"owners_count":20350163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dashboard","framebuffer","raspberry-pi"],"created_at":"2024-11-21T20:27:20.152Z","updated_at":"2026-05-16T23:05:10.181Z","avatar_url":"https://github.com/richinfante.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fb-dashboard\n\n## Usage\n\nCopy `examples/example1.toml` -\u003e `config.toml` and edit to your desired configuration.\n\n```bash\n# install requirements\npip3 install -r requirements.txt\n\n# set graphics mode for the current screen's tty (usually tty1)\nsudo python3 gfxmode.py /dev/tty1 graphics\n\n# run the dashboard\npython3 -m fb_dashboard\n```\n\n## Basic config with Cloudwatch Dashboards\nConfig file, may need to customize the widget to the one you want to display. the `widget` is also eval()'ed like the x, y, w, and h variables, so you can dynamically specify the width and height of the image.\n\n```toml\n[widgets.cloudwatch]\nx = 0\ny = 0\nw = 'w'\nh = 'h'\ntype = 'CloudWatchMetricImage'\nwidget = '{\"metrics\": [[ \"AWS/CloudFront\", \"Requests\", \"Region\", \"Global\", \"DistributionId\", \"YOUR_DISTRIBUTION_ID_HERE\" ]],\"view\": \"timeSeries\",\"stacked\": false,\"stat\": \"Sum\",\"period\": 900, \"width\": w, \"height\": h,\"start\": \"-PT72H\", \"end\": \"P0D\", \"timezone\": \"-0400\"}'\n```\n\n## Examples\n[![example 1](examples/example1.toml.png)](examples/example1.toml)\n[![example 2](examples/example2.toml.png)](examples/example2.toml)\n\n## Config Options By Type\nFor usage examples, see the `examples/` folder for some starter templates.\n\n- all:\n  - `x` - x position on screen\n  - `y` - y position on screen\n  - `w` - width of the widget\n  - `h` - height of the widget\n  - `refresh_interval` - minimum time (in seconds), between widget refreshes\n- `CloudWatchMetricImage`\n  - `widget` - a JSON string from CloudWatch's metric image export function\n  - `aws_profile` - (optional) AWS profile name\n  - `aws_region` - (optional) AWS region name\n  - `invert_image` - (optional) invert metric image, to obtain dark mode\n- `Image`\n  - `path` - local path, http://, or https:// link to the image\n  - `auth_type` - (optional) `basic` (default), or `digest`. Only used if username and password are set.\n  - `username` - (optional) auth username\n  - `password` - (optional) auth password\n  - `invert_image` - (optional) invert image\n- `Clock`\n  - `clock_format` - (optional) clock format string, e.g. `%H:%M:%S` or `%I:%M %p`\n  - `date_format` - (optional) date format string, e.g. `%Y-%m-%d` or `%A, %B %d, %Y`\n  - `timezone` - (optional) e.g. America/New_York\n  - `bg_color` - bg color, in hex or `rgb()` format.\n  - `fg_color` - bg color, in hex or `rgb()` format.\n- `StockMarketCandlestick` - stock market data from Yahoo finance\n  - `symbol` - required, the symbol. e.g. `AAPL`.\n  - `plot_style` - (optional) [a mplfinance theme name](https://github.com/matplotlib/mplfinance/blob/master/examples/styles.ipynb), default nightclouds\n  - `up_color` - (optional) up candlestick color, default `#00FF00`\n  - `down_color` - (optional) down candlestick color, default `#FF0000`\n  - `time_period` - (optional) time period to show. default `1mo`\n    - allowed values: '1d', '5d', '1mo', '3mo', '6mo', '1y', '2y', '5y', '10y', 'ytd', 'max'\n  - `interval` = (optional) time interval for each candlestick. default:  `1d`\n    - allowed values: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo\n- `SatelliteMap` - satellite tracks via Celestrak\n  - `bg_color` - (optional) rgb/hex color, default `#000000`\n  - `map_color` - (optional) rgb/hex color for map outline, default `#404040`\n  - `map_fill_color` - (optional) rgb/hex color for map fill, default `#171717`\n  - `map_stroke_width` - (optional) integer stroke width in pixels, default 2\n  - `track_color` - (optional) rgb/hex color for tracks, default `#00bf00`, default `2`\n  - `track_width` - (optional) integer track width, in pixels\n  - `satellite_color` - (optional) rgb/hex color for satellite marker pins, default `#00ff00`\n  - `pin_radius` - (optional) integer size of pins. Is eval expression, can use `w` / `h` vars for computed widget size. Default `4`\n- `Metric` - a large metric that can pull from JSON APIs, and has a configurable subtitle label\n  - `url` - the url to load from.\n  - `bg_color` - bg color, in hex or `rgb()` format.\n  - `fg_color` - bg color, in hex or `rgb()` format.\n  - `label` - subtitle label\n  - `mode` - supported: `json`\n  - `json_path` - required - a dot notation keypath within the JSON loaded from to locate the number to display\n- `Weather` - a weather widget, currently integrated with the National Weather Service API\n  - `latitude` - a latitude for a location in the USA\n  - `longitude` - a longitude for a location in the usa\n\n- `Text` (experimental)\n  - `text` - text to display\n  - `size` - font size\n  - `bg_color` - bg color, in hex or `rgb()` format.\n  - `fg_color` - bg color, in hex or `rgb()` format.\n\n## Run at boot\n\nOn raspberry pi, `/etc/rc.local` is a pretty easy place to run scripts at boot. Add this line before `exit 0`:\n\nYou will likely need to change the username, path to the cloned repo, and any virtual env you might be using. This will run the graphics mode script as root, then run the main script as the normal user.\n\n```bash\npython3 /home/rich/aws-dash/gfxmode.py /dev/tty1 1\n\n# if using a virtualenv\nsudo -u rich bash -c 'cd /home/rich/fb-dashboard \u0026\u0026 source env/bin/activate \u0026\u0026 python3 -m fb_dashboard'\n```\n\nIf not using a virtual environment you replace the last line above with this:\n```bash\n# if not using a virtualenv\nsudo -u rich bash -c 'python3 cd /home/rich/fb-dashboard \u0026\u0026 python3 -m fb_dashboard'\n```\n\n## Debugging on non-linux system\n```\n# writes to `framebuffer.png` in current dir\npython3 -m fb_dashboard --no-framebuffer\n```\n\n## Security\nThis isn't designed to be used with untrusted data. The config file eval()'s several sections to allow for dynamic configuration. This is by design, so I do not recommend running this as root with untrusted images. Ensure you have the latest versions of the dependencies so they have the latest security patches.\n\n## Development\n\nThis project uses [black](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html) for formatting.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichinfante%2Ffb-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichinfante%2Ffb-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichinfante%2Ffb-dashboard/lists"}