sfeed_curses-ui.html - www.codemadness.org - www.codemadness.org saait content files
(HTM) git clone git://git.codemadness.org/www.codemadness.org
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
sfeed_curses-ui.html (7965B)
---
1 <!DOCTYPE html>
2 <html dir="ltr" lang="en">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5 <meta http-equiv="Content-Language" content="en" />
6 <meta name="viewport" content="width=device-width" />
7 <meta name="keywords" content="sfeed, sfeed_curses, curses, UI, front-end, RSS, atom, reader" />
8 <meta name="description" content="Sfeed_curses is a curses UI front-end for the sfeed RSS/Atom parser" />
9 <meta name="author" content="Hiltjo" />
10 <meta name="generator" content="Static content generated using saait: https://codemadness.org/saait.html" />
11 <title>Sfeed_curses: a curses UI front-end for sfeed - Codemadness</title>
12 <link rel="stylesheet" href="style.css" type="text/css" media="screen" />
13 <link rel="stylesheet" href="print.css" type="text/css" media="print" />
14 <link rel="alternate" href="atom.xml" type="application/atom+xml" title="Codemadness Atom Feed" />
15 <link rel="alternate" href="atom_content.xml" type="application/atom+xml" title="Codemadness Atom Feed with content" />
16 <link rel="icon" href="/favicon.png" type="image/png" />
17 </head>
18 <body>
19 <nav id="menuwrap">
20 <table id="menu" width="100%" border="0">
21 <tr>
22 <td id="links" align="left">
23 <a href="index.html">Blog</a> |
24 <a href="/git/" title="Git repository with some of my projects">Git</a> |
25 <a href="/releases/">Releases</a> |
26 <a href="gopher://codemadness.org">Gopherhole</a>
27 </td>
28 <td id="links-contact" align="right">
29 <span class="hidden"> | </span>
30 <a href="feeds.html">Feeds</a> |
31 <a href="pgp.asc">PGP</a> |
32 <a href="mailto:hiltjo@AT@codemadness.DOT.org">Mail</a>
33 </td>
34 </tr>
35 </table>
36 </nav>
37 <hr class="hidden" />
38 <main id="mainwrap">
39 <div id="main">
40 <article>
41 <header>
42 <h1>Sfeed_curses: a curses UI front-end for sfeed</h1>
43 <p>
44 <strong>Last modification on </strong> <time>2025-07-24</time>
45 </p>
46 </header>
47
48 <p>sfeed_curses is a curses UI front-end for <a href="sfeed.html">sfeed</a>.
49 It is now part of sfeed.</p>
50 <p>It shows the TAB-separated feed items in a graphical command-line UI. The
51 interface has a look inspired by the <a href="http://www.mutt.org/">mutt mail client</a>. It has a sidebar
52 panel for the feeds, a panel with a listing of the items and a small statusbar
53 for the selected item/URL. Some functions like searching and scrolling are
54 integrated in the interface itself.</p>
55 <h2>Features</h2>
56 <ul>
57 <li>Relatively few LOC, about 2.5K lines of C.</li>
58 <li>Few dependencies: a C compiler and a curses library (typically ncurses).
59 It also requires a terminal (emulator) which supports UTF-8.
60 <ul>
61 <li>xterm-compatible shim <a href="https://git.codemadness.org/sfeed/file/minicurses.h.html">minicurses.h</a></li>
62 </ul>
63 </li>
64 <li>Easy to customize by modifying the small source-code and shellscripts.</li>
65 <li>Plumb support: open the URL or an enclosure URL directly with any program.</li>
66 <li>Pipe support: pipe the selected Tab-Separated Value line to a program for
67 scripting purposes. Like viewing the content in any way you like.</li>
68 <li>Yank support: copy the URL or an enclosure URL to the clipboard.</li>
69 <li>Familiar keybinds: supports both vi-like, emacs-like and arrow keys for
70 actions.</li>
71 <li>Mouse support: it supports xterm X10 and extended SGR encoding.</li>
72 <li>Support two ways of managing read/unread items.
73 By default sfeed_curses marks the feed items of the last day as new/bold.
74 Alternatively a simple plain-text list with the read URLs can be used.</li>
75 <li>UI layouts: supports vertical, horizontal and monocle (full-screen) layouts.
76 Useful for different kind of screen sizes.</li>
77 <li>Auto-execute keybind commands at startup to automate setting a preferred
78 layout, toggle showing new items or other actions.</li>
79 </ul>
80 <p>Like the format programs included in sfeed you can run it by giving the feed
81 files as arguments like this:</p>
82 <pre><code>sfeed_curses ~/.sfeed/feeds/*
83 </code></pre>
84 <p>... or by reading directly from stdin:</p>
85 <pre><code>sfeed_curses < ~/.sfeed/feeds/xkcd
86 </code></pre>
87 <p>It will show a sidebar if one or more files are specified as parameters. It
88 will not show the sidebar by default when reading from stdin.</p>
89 <p><a href="downloads/screenshots/sfeed_curses_screenshot.png"><img src="downloads/screenshots/sfeed_curses_screenshot.png" alt="Screenshot showing what the UI looks" width="480" height="270" loading="lazy" /></a></p>
90 <p>On pressing the 'o' or ENTER keybind it will open the link URL of an item with
91 the plumb program. On pressing the 'a', 'e' or '@' keybind it will open the
92 enclosure URL if there is one. The default plumb program is set to <a href="https://portland.freedesktop.org/doc/xdg-open.html">xdg-open</a>,
93 but can be modified by setting the environment variable $SFEED_PLUMBER. The
94 plumb program receives the URL as a command-line argument.</p>
95 <p>The TAB-Separated-Value line of the current selected item in the feed file can
96 be piped to a program by pressing the 'c', 'p' or '|' keybind. This allows much
97 flexibility to make a content formatter or write other custom actions or views.
98 This line is in the exact same format as described in the sfeed(5) man page.</p>
99 <p>The pipe program can be changed by setting the environment variable
100 $SFEED_PIPER.</p>
101 <p><a href="downloads/screenshots/sfeed_curses_pipe_screenshot.png"><img src="downloads/screenshots/sfeed_curses_pipe_screenshot.png" alt="Screenshot showing the output of the pipe content script" width="480" height="270" loading="lazy" /></a></p>
102 <p>The above screenshot shows the included <a href="https://git.codemadness.org/sfeed/file/sfeed_content.html">sfeed_content</a> shellscript which uses
103 the <a href="https://invisible-island.net/lynx/">lynx text-browser</a> to convert HTML to plain-text. It pipes the formatted
104 plain-text to the user $PAGER (or "less").</p>
105 <p>Of course the script can be easily changed to use a different browser or
106 HTML-to-text converter like:</p>
107 <ul>
108 <li><a href="https://www.dillo.org/">dillo</a></li>
109 <li><a href="http://www.jikos.cz/~mikulas/links/">links</a></li>
110 <li><a href="http://w3m.sourceforge.net/">w3m</a></li>
111 <li><a href="https://git.codemadness.org/webdump/file/README.html">webdump</a></li>
112 </ul>
113 <p>It's easy to modify the color-theme by changing the macros in the source-code
114 or set a predefined theme at compile-time. The README file contains information
115 how to set a theme. On the left a <a href="https://templeos.org/">TempleOS</a>-like color-theme on the right a
116 <a href="https://newsboat.org/">newsboat</a>-like colorscheme.</p>
117 <p><a href="downloads/screenshots/sfeed_curses_theme_screenshot.png"><img src="downloads/screenshots/sfeed_curses_theme_screenshot.png" alt="Screenshot showing a custom colorscheme" width="480" height="270" loading="lazy" /></a></p>
118 <p>It supports a vertical layout, horizontal and monocle (full-screen) layout.
119 This can be useful for different kind of screen sizes. The keybinds '1', '2'
120 and '3' can be used to switch between these layouts.</p>
121 <p><a href="downloads/screenshots/sfeed_curses_horizontal_screenshot.png"><img src="downloads/screenshots/sfeed_curses_horizontal_screenshot.png" alt="Screenshot showing the horizontal layout" width="480" height="270" loading="lazy" /></a></p>
122 <h2>Clone</h2>
123 <pre><code>git clone git://git.codemadness.org/sfeed
124 </code></pre>
125 <h2>Browse</h2>
126 <p>You can browse the source-code at:</p>
127 <ul>
128 <li><a href="https://git.codemadness.org/sfeed/">https://git.codemadness.org/sfeed/</a></li>
129 <li><a href="gopher://codemadness.org/1/git/sfeed">gopher://codemadness.org/1/git/sfeed</a></li>
130 </ul>
131 <h2>Download releases</h2>
132 <p>Releases are available at:</p>
133 <ul>
134 <li><a href="https://codemadness.org/releases/sfeed/">https://codemadness.org/releases/sfeed/</a></li>
135 <li><a href="gopher://codemadness.org/1/releases/sfeed">gopher://codemadness.org/1/releases/sfeed</a></li>
136 </ul>
137 <h2>Build and install</h2>
138 <pre><code>$ make
139 # make install
140 </code></pre>
141
142 </article>
143 </div>
144 </main>
145 </body>
146 </html>