{"id":13733406,"url":"https://github.com/ajrouvoet/positron-bar","last_synced_at":"2025-05-08T09:32:05.758Z","repository":{"id":150899202,"uuid":"52205693","full_name":"ajrouvoet/positron-bar","owner":"ajrouvoet","description":"Electron bar for your linux desktop!","archived":false,"fork":false,"pushed_at":"2016-04-09T21:27:19.000Z","size":846,"stargazers_count":58,"open_issues_count":4,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-24T10:03:42.893Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/ajrouvoet.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}},"created_at":"2016-02-21T12:35:55.000Z","updated_at":"2023-09-12T19:30:10.000Z","dependencies_parsed_at":"2023-07-07T08:02:06.397Z","dependency_job_id":null,"html_url":"https://github.com/ajrouvoet/positron-bar","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajrouvoet%2Fpositron-bar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajrouvoet%2Fpositron-bar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajrouvoet%2Fpositron-bar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajrouvoet%2Fpositron-bar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ajrouvoet","download_url":"https://codeload.github.com/ajrouvoet/positron-bar/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252804206,"owners_count":21806769,"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":[],"created_at":"2024-08-03T03:00:42.511Z","updated_at":"2025-05-08T09:32:04.268Z","avatar_url":"https://github.com/ajrouvoet.png","language":"JavaScript","funding_links":[],"categories":["System Tray"],"sub_categories":["Flexbox"],"readme":"# Positron Bar\n\n![Screenshot](./docs/screenshots/april.png)\n\n## Getting started\n\nThis will be streamlined in the near future, but for now:\n\n##### Install the dependencies\n\n```bash\nnpm install\n```\n\n##### External deps\n\n1. `wmctrl`\nTo query the dekstops, it uses `wmctrl`. Make sure it's installed on your system.\nYour WM should support EWMH in order for it to work (you can verify by checking whether `wmctrl -d` outputs your desktosp).\n\n2. `upower`\nFor battery info.\n\n3. `amixer`\nFor master volume info.\n\n##### ... build the js modules:\n\n```\nnpm run-script build\n```\n\n##### ... and run it:\n\n```\nnpm start\n```\n\n## Configuration\n\nYou configure the bar by modifying the javascript in `src/config/**`. \nIn `src/config/Bar.js` you can modify the fields that appear in your bar by modifying what gets returned from it's `render()` method.\nIn `src/config/providers.js` you can modify the data providers. E.g. if you don't use spotify, remove it from there and the bar won't try to subscribe to dbus events from spotify.\n\n## How it works\n\nThe bar is essentially just a browser window (powered by electron.js).\nElectron apps consist of 2 processes: the main process which creates the window and the renderer process that runs inside the browser.\nWe'll focus on the renderer process here, which runs `src/app.js`.\n\n### View Components \u0026 the Redux Store\n\nBecause we're running a browser, the elements of the view are just html components, styled with CSS.\nThe html i rendered by [React](https://facebook.github.io/react/index.html).\n\nThe components of course need some data to display.\nThis data is aggregated in a global [redux](http://redux.js.org/docs/introduction/index.html) store.\nEvery component is accompanied by a function that selects data from that store.\nThis selection is then injected into the component, which in turn just renders it.\nEverytime the store updates, the components update through the magic that is React.\n\n### Filling the Store\n\nTo fill the store with data, `src/app.js` runs \"providers\" in an interval.\nThese providers just gather some data and then fire some receive-action.\nThese actions are picked up by so-called \"reducers\", which update the store.\nThis design is the react-redux way of doing things and you can read more about it in their docs.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajrouvoet%2Fpositron-bar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fajrouvoet%2Fpositron-bar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajrouvoet%2Fpositron-bar/lists"}