README - sfeed_curses - sfeed curses UI (now part of sfeed, development is in sfeed)
 (HTM) git clone git://git.codemadness.org/sfeed_curses
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       README (4584B)
       ---
            1 sfeed_curses
            2 ------------
            3 
            4 sfeed_curses is a curses UI front-end for sfeed.
            5 
            6 It shows the TAB-separated feed items in a graphical command-line UI. The
            7 interface has a look inspired by the mutt mail client. It has a sidebar panel
            8 for the feeds, a panel with a listing of the items and a small statusbar for
            9 the selected item/URL. Some functions like searching and scrolling are
           10 integrated in the interface itself.
           11 
           12 
           13 Build and install
           14 -----------------
           15 
           16 $ make
           17 # make install
           18 
           19 
           20 Usage
           21 -----
           22 
           23 Like the format programs included in sfeed you can run it like this:
           24 
           25         sfeed_curses ~/.sfeed/feeds/*
           26 
           27 ... or by reading from stdin:
           28 
           29         sfeed_curses < ~/.sfeed/feeds/xkcd
           30 
           31 By default sfeed_curses marks the items of the last day as new/bold. To manage
           32 read/unread items in a different way a plain-text file with a list of the read
           33 URLs can be used. To enable this behaviour the path to this file can be
           34 specified by setting the environment variable $SFEED_URL_FILE to the URL file:
           35 
           36         export SFEED_URL_FILE="$HOME/.sfeed/urls"
           37         [ -f "$SFEED_URL_FILE" ] || touch "$SFEED_URL_FILE"
           38         sfeed_curses ~/.sfeed/feeds/*
           39 
           40 There is a shellscript "sfeed_markread" to process the read and unread items.
           41 See the man page for more detailed information.
           42 
           43 
           44 Dependencies
           45 ------------
           46 
           47 - C compiler (C99).
           48 - libc (recommended: C99 and POSIX >= 200809).
           49 - curses (typically ncurses), optional but recommended: but see minicurses.h.
           50 
           51 
           52 Optional dependencies
           53 ---------------------
           54 
           55 - POSIX make(1) for Makefile.
           56 - mandoc for documentation: https://mdocml.bsd.lv/
           57 
           58 
           59 Run-time dependencies
           60 ---------------------
           61 
           62 - A (POSIX) shell.
           63 - A terminal (emulator) supporting UTF-8 and the used capabilities.
           64 
           65 
           66 Optional run-time dependencies
           67 ------------------------------
           68 
           69 - xclip for yanking the URL or enclosure. See $SFEED_YANKER to change it.
           70 - xdg-open, used as a plumber by default. See $SFEED_PLUMBER to change it.
           71 - awk, used by the sfeed_content and sfeed_markread script.
           72   See the ENVIRONMENT VARIABLES section in the man page to change it.
           73 - lynx, used by the sfeed_content script to convert HTML content.
           74   See the ENVIRONMENT VARIABLES section in the man page to change it.
           75 
           76 
           77 OS tested
           78 ---------
           79 
           80 - Linux (compilers: clang, gcc, tcc, libc: glibc, musl).
           81 - OpenBSD (clang, gcc).
           82 - NetBSD
           83 - FreeBSD
           84 - DragonFlyBSD
           85 - Illumos (OpenIndiana).
           86 - Windows (cygwin gcc + mintty).
           87 - HaikuOS
           88 
           89 
           90 Known terminal issues
           91 ---------------------
           92 
           93 Below lists some bugs or missing features in terminals that are found while
           94 testing.  Some of them might be fixed already upstream:
           95 
           96 - cygwin + mintty: the xterm mouse-encoding of the mouse position is broken for
           97   scrolling.
           98 - HaikuOS terminal: the xterm mouse-encoding of the mouse button number of the
           99   middle-button, right-button is incorrect / reversed.
          100 - putty: the full reset attribute (ESC c, typically `rs1`) does not reset the
          101   window title.
          102 
          103 
          104 Color themes
          105 ------------
          106 
          107 To change the default theme you can set SFEED_THEME using make or in the
          108 Makefile or include the a header file in sfeed_curses.c. See also the themes/
          109 directory.
          110 
          111 
          112 Running custom commands inside the program
          113 ------------------------------------------
          114 
          115 Running commands inside the program can be useful for example to sync items or
          116 mark all items across all feeds as read. It can be comfortable to have a
          117 keybind for this inside the program to perform a scripted action and then
          118 reload the feeds by sending the signal SIGHUP.
          119 
          120 In the input handling code you can then add a case:
          121 
          122         case 'M':
          123                 forkexec((char *[]) { "markallread.sh", NULL }, 0);
          124                 break;
          125 
          126 or
          127 
          128         case 'S':
          129                 forkexec((char *[]) { "syncnews.sh", NULL }, 1);
          130                 break;
          131 
          132 The specified script should be in $PATH or an absolute path.
          133 
          134 Example of a `markallread.sh` shellscript to mark all URLs as read:
          135 
          136         #!/bin/sh
          137         # mark all items/URLs as read.
          138 
          139         tmp=$(mktemp)
          140         (cat ~/.sfeed/urls; cut -f 3 ~/.sfeed/feeds/*) | \
          141         awk '!x[$0]++' > "$tmp" &&
          142         mv "$tmp" ~/.sfeed/urls &&
          143         pkill -SIGHUP sfeed_curses # reload feeds.
          144 
          145 Example of a `syncnews.sh` shellscript to update the feeds and reload them:
          146 
          147         #!/bin/sh
          148         sfeed_update && pkill -SIGHUP sfeed_curses
          149 
          150 
          151 Open an URL directly in the same terminal
          152 -----------------------------------------
          153 
          154 To open an URL directly in the same terminal using the text-mode lynx browser:
          155 
          156         SFEED_PLUMBER=lynx SFEED_PLUMBER_INTERACTIVE=1 sfeed_curses ~/.sfeed/feeds/*
          157 
          158 
          159 Yank to tmux buffer
          160 -------------------
          161 
          162 This changes the yank command to set the tmux buffer, instead of X11 xclip:
          163 
          164         SFEED_YANKER="tmux set-buffer \`cat\`"
          165 
          166 
          167 License
          168 -------
          169 
          170 ISC, see LICENSE file.
          171 
          172 
          173 Author
          174 ------
          175 
          176 Hiltjo Posthuma <hiltjo@codemadness.org>