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 &lt; ~/.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>