Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aminnairi/i3status
Library to create your own i3 status bar in Node.js using the Flux architecture
https://github.com/aminnairi/i3status
Last synced: about 5 hours ago
JSON representation
Library to create your own i3 status bar in Node.js using the Flux architecture
- Host: GitHub
- URL: https://github.com/aminnairi/i3status
- Owner: aminnairi
- License: gpl-3.0
- Created: 2021-12-18T10:09:06.000Z (almost 3 years ago)
- Default Branch: development
- Last Pushed: 2021-12-20T20:17:30.000Z (almost 3 years ago)
- Last Synced: 2024-10-28T22:40:43.504Z (18 days ago)
- Language: JavaScript
- Homepage:
- Size: 71.3 KB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# @aminnairi/i3status
[![NPM badge](https://badgen.net/badge/npm/1.1.0/blue)](https://www.npmjs.com/package/@aminnairi/i3status/v/1.1.0) [![Bundle size](https://badgen.net/bundlephobia/minzip/@aminnairi/[email protected])](https://bundlephobia.com/package/@aminnairi/[email protected]) [![Tree shaking support](https://badgen.net/bundlephobia/tree-shaking/@aminnairi/[email protected])](https://bundlephobia.com/package/@aminnairi/[email protected]) ![Vulnerabilities count](https://badgen.net/snyk/aminnairi/i3status)
Library to create your own i3 status bar in Node.js using the Flux architecture
![Status Bar](https://user-images.githubusercontent.com/18418459/146653832-246fe8e9-b680-47ac-8c90-6fe7fbf1a121.png)
## Why
- Because it is inspired by The Elm Architecture, Redux, and the Flux architecture.
- Because it is written using modern ECMAScript syntax.
- Because it is written using modern ECMAScript Modules.
- Because it is written with functional programming in mind.
- Because it is well documented with many examples (and many to come).
- Because it is tested from integration to end-to-end.
- Because it is powered by the Node.js platform and all of its operating system's API and ecosystem.
- Because it allows you to build complex, dynamic status bars with ease.
- Because it does not require any global installation (but you can if you want).
- Because it does not require any yaml, env files, and is just plain JavaScript, nothing else.
- Because it has full support for asynchronous updates through dispatches.
- Because it has full support for i3wm click events (buttons, modfiiers, coordinates, ...).
- Because it has full supports for i3wm blocks configuration (color, padding, separator, ...).
- Because it has no external dependencies.
- Because it has been made with love.## Instructions
### Recommended
#### Requirements
- [JavaScript](https://developer.mozilla.org/fr/docs/Web/JavaScript)
- [GNU/Linux](https://en.wikipedia.org/wiki/Linux)
- [Terminal emulator](https://en.wikipedia.org/wiki/Terminal_emulator)
- [Text editor](https://en.wikipedia.org/wiki/Text_editor)
- [Node](https://nodejs.org/en/)
- [NPM](https://www.npmjs.com/)
- [i3wm](https://i3wm.org/)#### Installation
Open a new terminal emulator and type the following commands.
```bash
mkdir ~/my-i3status
cd ~/my-i3status
touch index.mjs
npm install --save-exact --save @aminnairi/i3status
```Open the created file `index.mjs` and copy/paste the following block of code into it.
```javascript
import {createInterface} from "readline/promises";
import {stdin as input, stdout as output} from "process";
import {createRenderer} from "@aminnairi/i3status";const render = createRenderer({
createInterface,
input,
output
});render({
initialBlocks: [
{
full_text: "Hello, world!"
}
]
});
```Open the file `~/.config/i3/config` and replace the following option `status_command` if it already exists, or add it to the `bar` block.
```
bar {
status_command node ~/my-i3status/index.mjs
}
```In the same terminal emulator you just opened, type the following command.
```bash
i3-msg reload
```### Manual
#### Requirements
- [JavaScript](https://developer.mozilla.org/fr/docs/Web/JavaScript)
- [GNU/Linux](https://en.wikipedia.org/wiki/Linux)
- [Terminal emulator](https://en.wikipedia.org/wiki/Terminal_emulator)
- [Text editor](https://en.wikipedia.org/wiki/Text_editor)
- [Docker](https://www.docker.com/)
- [Docker Compose](https://docs.docker.com/compose/)
- [i3wm](https://i3wm.org/)#### Installation
Open a new terminal emulator and type the following commands
```bash
git clone https://github.com/aminnairi/i3status ~/my-i3status
cd ~/my-i3status
docker-compose run --rm npm install
docker-compose run --rm npm test
docker-compose run --rm npm run build
```Choose one of the example script (for instance, [`simple.mjs`](https://github.com/aminnairi/i3status/tree/production/examples/simple.mjs)) in the [`examples`](https://github.com/aminnairi/i3status/tree/production/examples) folder and replace the import path `@aminnairi/i3status` to `../build/index.mjs`. Then open the file `~/.config/i3/config` and replace the following option `status_command` if it already exists, or add it to the `bar` block.
```
bar {
status_command node ~/my-i3status/example/simple.mjs
}
```In the same terminal emulator you just opened, type the following command.
```bash
i3-msg reload
```## Examples
See [`examples`](https://github.com/aminnairi/i3status/tree/production/examples).
## Changelog
See [`CHANGELOG.md`](https://github.com/aminnairi/i3status/tree/production/CHANGELOG.md).
## Contributing
See [`CONTRIBUTING.md`](https://github.com/aminnairi/i3status/tree/production/CONTRIBUTING.md).
## Code of conduct
See [`CODE_OF_CONDUCT.md`](https://github.com/aminnairi/i3status/tree/production/CODE_OF_CONDUCT.md).
## License
See [`LICENSE`](https://github.com/aminnairi/i3status/tree/production/LICENSE).