{"id":43200280,"url":"https://github.com/exaroth/i3-news","last_synced_at":"2026-02-01T06:03:42.347Z","repository":{"id":314469683,"uuid":"911416155","full_name":"exaroth/i3-news","owner":"exaroth","description":"Interactive  RSS/Atom news headlines plugin  for i3wm and sway - compatible with i3status, i3blocks, polybar and waybar","archived":false,"fork":false,"pushed_at":"2025-12-02T23:06:45.000Z","size":3786,"stargazers_count":19,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-12-04T18:18:33.464Z","etag":null,"topics":["i3","i3blocks","i3status","news","polybar","rss","sway","waybar","zig"],"latest_commit_sha":null,"homepage":"","language":"Zig","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/exaroth.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-03T01:05:08.000Z","updated_at":"2025-12-02T22:56:14.000Z","dependencies_parsed_at":"2025-09-12T18:18:27.224Z","dependency_job_id":"6d3d1f83-5a41-4f81-bcc7-650f177fbc8a","html_url":"https://github.com/exaroth/i3-news","commit_stats":null,"previous_names":["exaroth/i3-news"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/exaroth/i3-news","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exaroth%2Fi3-news","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exaroth%2Fi3-news/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exaroth%2Fi3-news/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exaroth%2Fi3-news/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exaroth","download_url":"https://codeload.github.com/exaroth/i3-news/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exaroth%2Fi3-news/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28970194,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T05:48:53.985Z","status":"ssl_error","status_checked_at":"2026-02-01T05:47:55.855Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["i3","i3blocks","i3status","news","polybar","rss","sway","waybar","zig"],"created_at":"2026-02-01T06:03:42.259Z","updated_at":"2026-02-01T06:03:42.334Z","avatar_url":"https://github.com/exaroth.png","language":"Zig","funding_links":[],"categories":["Zig"],"sub_categories":[],"readme":"# I3 News [![Licence](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Zig-0.14.1](https://img.shields.io/badge/zig-0.14.1%2B-orange.svg)](Zig-0.14.1)\n\n\u003cimg align=\"left\" width=\"600\" src=\"assets/i3blocks.gif\"\u003e\u003cbr/\u003e\u003cbr/\u003e\n\n\u003cimg align=\"left\" width=\"600\" src=\"assets/waybar.gif\"\u003e\u003cbr/\u003e\u003cbr/\u003e\n\n\u003cimg align=\"left\" width=\"600\" src=\"assets/polybar.gif\"\u003e\u003cbr/\u003e\u003cbr/\u003e\n\n\n__I3 News__ let's you create interactive news headline snippets compatible with various i3/sway bar plugins, based on user defined RSS/Atom feeds. \n\nCompatibility list:\n\n- i3blocks\n- polybar\n- i3status\n- waybar\n \n#### Table of Contents\n\u003c!--toc:start--\u003e\n- [Installation](#installation)\n    - [Building from source](#building-from-source)\n- [Usage](#usage)\n    - [i3blocks](#i3blocks)\n    - [i3status](#i3status)\n    - [Polybar](#polybar)\n    - [Waybar](#waybar)\n- [Dynamic headlines](#headline-tick-scroll-and-paginate-commands)\n    - [i3blocks](#i3blocks-integration)\n    - [Polybar](#polybar-integration)\n\t- [Waybar](#waybar-integration)\n\t- [Dynamic headline options](#dynamic-headline-options)\n- [Configuration](#configuration)\n\u003c!--toc:end--\u003e\n### Installation\n\u003e [!NOTE]\n\u003e i3 news requires `fuse`/`libfuse` libraries installed in the system\n\nI3 news ships with 2 versions available:\n\n- __Light__ - Includes only i3 news binary and supplementary scripts, it does not contain [Newsboat](https://newsboat.org/) RSS reader required for retrieval of RSS data, you will need to install Newsboat package system wide (Note: Snapcraft version is not supported) (__Recommended__)\n \n \nTo install this version execute:\n``` bash\nsh -c \"$(curl -fsSL https://raw.githubusercontent.com/exaroth/i3-news/master/install.sh)\"\n```\n- __Self Contained__  - this is the same as above but ships with Newsboat app and all required shared libraries included. To install run:\n \n``` bash\nsh -c \"$(curl -fsSL https://raw.githubusercontent.com/exaroth/i3-news/master/install_full.sh)\"\n```\n\nYou can also download `i3-news` executables from [releases](https://github.com/exaroth/i3-news/releases) page.\n\nFollowing the installation update your crontab to set up regular RSS feed reloads , eg to update feeds every 20 minutes:\n\n\n`crontab -e`\n\n``` crontab\n*/20 * * * * /usr/local/bin/i3-news reload\n```\n \n#### Building from source\n\n__Note__: Supported zig versions - `0.14.1`/`0.15.0`\n\nClone the repository and run `make build-appimage` to compile the source and build AppImage for the executable.\n\n### Usage\n\n```\nUsage: i3-news ?\u003ccommand\u003e \u003coptions\u003e\n\nCommands: open|reload|tick|scroll|paginate|version\n\nOptions:\n  -c, --configs       Snippet configuration or configurations to use\n  -s, --i3status      I3status output\n  -b, --i3blocks      I3blocks output\n  -p, --polybar       Polybar output\n  -w, --waybar        Waybar output\n  -a, --add-config    Add new i3-news configuration\n  -r, --rm-config     Remove existing configuration\n  -e, --edit-config   Edit urls for given configuration\n      --get-url       Retrieve url for currently displayed headline\n      --plain         Plain output\n      --random        Retrieve headlines using random strategy\n      --latest        Retrieve headlines prioritising latest articles\n      --debug         Print debug info\n  -h, --help          Print help\n```\n\n### Creating new snippet\n\nIn order to create new I3 news snippet execute:\n\n``` sh\ni3-news -a \u003csnippet_name\u003e\n```\n\nYou will be prompted to enter list of RSS/Atom urls which will be tracked by the snippet.\n\nUse \n```\ni3-news -e \u003csnippet_name\u003e\n```\nTo edit snippet urls, or\n```\ni3-news -r \u003csnippet_name\u003e\n```\nto remove existing one.\n\nSnippet configurations are stored at `$HOME/.config/i3_news/`.\n\n### Integration with i3 bar plugins.\n\n#### Static headllines\n\n#### i3blocks\nIn order to add i3 news snippet to i3blocks bar edit existing configuration (typically stored at `~/.i3blocks`) adding following entry:\n\n```\n[News]\ncommand=/usr/local/bin/i3-news -b -c \u003csnippet_name\u003e\ninterval=30\n```\n(`interval` value will determine how often headlines will be refreshed)\n\nAdditionally in order to customize browser command to use when opening headline url you can use `I3_NEWS_BROWSER_CMD` env variable, for example to open url in new firefox tab use:\n\n```\ncommand=I3_NEWS_BROWSER_CMD=\"/usr/bin/firefox --new-tab\" /usr/local/bin/i3-news -b -c \u003csnippet_name\u003e\n```\n\n#### i3status\n\n\u003e [!NOTE]\n\u003e i3status plugin is non-interactive, thus clicking on headline wont result in opening of the url in the browser\n \nEdit `i3` configuration (typically stored at `~/.config/i3/config`) and locate `bar { ... }` block containing\n```\nstatus_command  i3status\n```\n\nentry, replace it with:\n\n```\nstatus_command  i3status | /usr/local/bin/i3-news -s -c \u003csnippet_name\u003e\n```\n\nYou can also output more than 1 snippet by passing comma delimited list of snippet names as part of `-c` parameter.\n\n#### polybar\n\nEdit polybar configuration file (usually stored at `~/.config/polybar/config.ini`), add following entry:\n\n``` ini\n    [module/i3-news]\n    type = custom/script\n    exec = /usr/local/bin/i3-news -p -c \u003csnippet_name\u003e\n    tail = true\n    interval = 10\n    click-left = /usr/local/bin/i3-news open -c \u003csnippet_name\u003e\n```\nthen update either `modules-left` or `modules-right` entry with `i3-news`.\n\nSimilarly to `i3blocks` integration you can customize browser used for opening headline urls by adding `I3_NEWS_BROWSER_CMD` env when executing `click-left` handler.\n\n\n#### waybar\n\nEdit waybar configuraton (typically stored at `~/.config/waybar/config`), add following entry\n\n``` json\n    \"custom/i3-news\": {\n        \"exec\": \"/usr/local/bin/i3-news -w -c \u003csnippet_name\u003e\",\n        \"return-type\": \"json\",\n        \"interval\": 10,\n        \"tooltip\": false,\n        \"on-click\": \"/usr/local/bin/i3-news open -c \u003csnippet_name\u003e\"\n    }\n```\n\nand update `modules-right`, `modules-left` or `modules-center` with `custom/i3-news` entry.\n\nYou can customize color rendering by editing `~/.config/waybar/style.css` and adding\n\n``` css\n#custom-i3-news.\u003csnippet_name\u003e {\n    color: white;\n}\n```\n\n### Headline tick, scroll and paginate commands\n\n__I3 News__ ships supplied with commands for outputting dynamic text headlines, these are useful particularly if your bar setup requires constant widget width. Dynamic headlines are not available for `i3status` integration.\n\nAvailable commands:\n\n#### ticker\n\u003cimg align=\"left\" width=\"400\" src=\"assets/tick.gif\"\u003e\u003cbr/\u003e\u003cbr/\u003e\n\n`tick` command will output infinite feed of scrolling headlines, new headlines will be retrieved and inserted automatically.\n\n#### scroll\n\u003cimg align=\"left\" width=\"400\" src=\"assets/scroll.gif\"\u003e\u003cbr/\u003e\u003cbr/\u003e\n\n`scroll` command will scroll single headline if it exceeds widget width, otherwise it will output static text.\n\n#### paginate\n\u003cimg align=\"left\" width=\"400\" src=\"assets/paginate.gif\"\u003e\u003cbr/\u003e\u003cbr/\u003e\n\n`paginate` command will split text into multiple pages if it exceeds widget width, otherwise headline text will be displayed as is.\n\n#### Usage\n\nUsage for dynamic headline commands is as simple as calling:\n\n```\ni3-news \u003ccommand\u003e -c \u003csnippet_name\u003e\n```\nwhere `\u003ccommand\u003e` is `tick`/`scroll`/`paginate`, you can also pass arguments which modify headline retrieval strategy such as `--latest` or `--random`\n\n##### I3blocks integration\n\nExample usage in i3blocks config (`markup=pango` and `interval=persist` settings are required), also pass `I3_NEWS_OUTPUT_PANGO` env variable to ensure that output text is rendered with monospace font.\n\n```\n    [NEWS]\n    command=I3_NEWS_OUTPUT_PANGO=1 /usr/local/bin/i3-news \u003ctick/scroll/paginate\u003e -c \u003csnippet_name\u003e\n    markup=pango\n    color=#FEC925\n    interval=persist\n```\n\n##### Polybar integration\n\nReference configuration, note there's no need to include `interval` field for scrolling snippets.\n```\n    [module/i3-news-scroll]\n    type = custom/script\n    exec = /usr/local/bin/i3-news \u003ctick/scroll/paginate\u003e -c \u003csnippet_name\u003e\n    click-left = /usr/local/bin/i3-news open -c \u003csnippet_name\u003e\n    tail = true\n```\n\u003e [!NOTE]\n\u003e If you pass any additional arguments to the dynamic headline command such as `--latest` or `--random`\n\u003e make sure to pass same set of commands to `open` as well, this also applies to Waybar integration.\n\n##### Waybar integration\n\n``` json\n    \"custom/i3-news-scroll\": {\n        \"escape\": \"true\",\n        \"exec\": \"/usr/local/bin/i3-news \u003ctick/scroll/paginate\u003e -c \u003csnippet_name\u003e\",\n        \"max-length\": 50,\n        \"min-length\": 50,\n        \"on-click\": \"/usr/local/bin/i3-news open -c \u003csnippet_name\u003e\"\n    }\n```\n\n#### Dynamic headline options\n\nDynamic headlines can be configured by passing various env vars to `i3-news` executable , most straightforward way to do it is to pass them as a prefix when calling the executable, eg.\n\n``` bash\nENV_VAR=val `i3-news` \u003cargs\u003e\n```\nAvailable settings:\n\n- `I3_NEWS_INTERVAL` - (`scroll`/`paginate` only) Defines how often to swap headlines (in seconds)\n- `I3_NEWS_DELAY` - Refresh interval when outputting text, will determine scrolling speed for `tick` and `scroll` commands and speed of changing pages for `paginate` command\n- `I3_NEWS_WIDTH` - Width of the snippet\n- `I3_NEWS_ALIGN` - (`paginate` command only) Set text alignment when outputting text, available values: `left`, `right`, `center`\n- `I3_NEWS_OUTPUT_PANGO` - Output text in `pango` format (with monospace font set).\n\n\n### Configuration\n\nConfiguration for each snippet is stored at `~/.config/i3_news/\u003csnippet_name\u003e/config` with following options available:\n\n- `max-article-age` - amount of hours in the past for which to display headlines for\n- `output-color` - text color for given snippet (hex based)\n- `refresh-interval` - (i3status only) refresh rate when displaying the headlines\n\n### License\nSee `LICENSE` file for details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexaroth%2Fi3-news","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexaroth%2Fi3-news","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexaroth%2Fi3-news/lists"}