{"id":15893097,"url":"https://github.com/smerrony/fbinfogrid","last_synced_at":"2026-05-09T15:13:24.748Z","repository":{"id":90283272,"uuid":"262278893","full_name":"SMerrony/fbinfogrid","owner":"SMerrony","description":"Display a configurable grid of information and images on the framebuffer","archived":false,"fork":false,"pushed_at":"2020-05-28T08:23:15.000Z","size":2490,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-02-28T00:52:28.308Z","etag":null,"topics":["dashboard","digital-signage","framebuffer","go","golang-application","linux","raspberry-pi"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SMerrony.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2020-05-08T09:16:41.000Z","updated_at":"2024-06-19T08:12:54.049Z","dependencies_parsed_at":null,"dependency_job_id":"91e5015d-04ed-4d0e-b44e-3064d06ed196","html_url":"https://github.com/SMerrony/fbinfogrid","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SMerrony%2Ffbinfogrid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SMerrony%2Ffbinfogrid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SMerrony%2Ffbinfogrid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SMerrony%2Ffbinfogrid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SMerrony","download_url":"https://codeload.github.com/SMerrony/fbinfogrid/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246863584,"owners_count":20846279,"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","digital-signage","framebuffer","go","golang-application","linux","raspberry-pi"],"created_at":"2024-10-06T08:07:27.913Z","updated_at":"2026-05-09T15:13:24.684Z","avatar_url":"https://github.com/SMerrony.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fbinfogrid\nDisplay a configurable grid of information and images on a Raspberry Pi (or other GNU/Linux) framebuffer.\n\n## Screenshots\nClock, image carousel, and updating webcam snapshots...\n![fbinfogrid screenshot 1](screenshots/demo02.png) \n\nSimple network device monitoring...\n![fbinfogrid network monitoring](screenshots/hostmon1.png) \n\nA copy of the information grid may optionally be made available via HTTP which will refresh every minute.\n\n*fbinfogrid* builds and runs successfully on an original [Raspberry  Pi Model A](https://elinux.org/RPi_HardwareHistory#Raspberry_Pi_Model_A_Full_Production_Board) from 2013, so it should run fine on all modern \nplatforms.  It should work fine on any other GNU/Linux platorm that supports a standard framebuffer\ndevice and the [Go](https://golang.org/) language.\n\n## Usage\nType ```./fbinfogrid -h``` for help.  \n\nE.g. ```./fbinfogrid -config configs/demoSpans.json -http 8080```\n\nYou may supply a ```config.json``` file in the working directory or you can use the ```-config``` option \nto specify a grid configuration file.\n\nIf any cell has \"refreshsecs\" defined to be \u003e 0 then the program will not exit until it is killed, \notherwise the program will end once the grid has been drawn unless there are multiple pages (see below).\n\n## Configuration\nSee the included JSON files in the [configs](configs) folder for configuration examples.\n\nNote that _fbinfogrid_ takes the pixel dimensions of the specified framebuffer and uses them to calculate\nthe layout (i.e. cell sizes) by simple division.\nThere is no attempt made to intelligently 'flow' or fit the grid; you must ensure that the configuration you specify makes sense for your current framebuffer settings.\nYou can use the standard ```fbset``` program to check and alter the characteristics of the framebuffer.\nAlso, the image in the HTTP copy of the grid will have the same pixel dimensions as the framebuffer.\n\nA configuration describes page(s) of cells... \n\n### Page\nPage attributes are...\n\n| Type     | Compulsory | Description |\n|----------| :--------: |-------------|\n| name     |     N      | Page description, not displayed |\n| rows     |     Y      | No. of rows |\n| cols     |     Y      | No. of columns |\n| fontfile |     N      | Path of a TTF font, defaults to supplied LeagueMono-Regular.ttf |\n| durationmins | N      | How many minutes to wait before moving to the next page (no default) |\n\nSee [demoTwoPages.json](configs/demoTwoPages.json) for a multiple-page example.\n\n### Cells\n\nEvery cell **must** have ```row```, ```col```, and ```celltype``` specified.\n\nYou **may** also specify ```rowspan``` and ```colspan``` for any cell;\nsee [demoSpans.json](configs/demoSpans.json) for an example.\nNote that the behaviour of overlapping cells is currently undefined.\n\nCurrently defined information cell types and associated attributes are...\n\n|   Type      |  Description                   | fontpts | refreshsecs | scaling | source | text |\n|-------------|--------------------------------| :-----: | :---------: | :-----: | :----: | :--: |\n| carousel    | Slideshow of images            |    N    |      Y*     |    Y    |    **  |   N  |\n| datemonth   | eg. \"2 Jan\"                    |    Y    |      Y      |    N    |    N   |   N  |\n| day         | eg. \"Mon\"                      |    Y    |      Y      |    N    |    N   |   N  |\n| daydatemonth | eg. \"Mon 2 Jan\"               |    Y    |      Y      |    N    |    N   |   N  |\n| hostname    | eg. \"raspipi01\"                |    Y    |      N      |    N    |    N   |   N  |\n| isalive     | Is a host reachable via TCP?   |    Y    |      Y*     |    N    |    Y*  |   Y  |\n| localimage  | An image stored locally        |    N    |      Y      |    Y    |    Y*  |   N  |\n| text        | Text that is never updated     |    Y    |      N      |    N    |    N   |   Y* |\n| time        | eg. \"15:04\"                    |    Y    |      Y      |    N    |    N   |   N  |\n| urlimage    | An image (JPEG/PNG) from a URL |    N    |      Y      |    Y    |    Y*  |   N  |\n\n(* these attributes **must** be specified)\n\n(** **must** specify a ```sources``` array - see [demoCarousel.json](configs/demoCarousel.json))  \n\nImage cells that refresh (i.e. have a non-zero ```refreshsecs```) reload the image on each refresh, \nso if the underlying file changes that change will appear on the next refresh.\n\nScaling may be one of \"fill\", \"fit\", or \"resize\" (default).  Fill and fit maintain the aspect\nratio of the image, so there may be some cropping or borders apparent; resize scales the image to exactly \nfit the cell, so there may be some distortion.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmerrony%2Ffbinfogrid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmerrony%2Ffbinfogrid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmerrony%2Ffbinfogrid/lists"}