Adding new configs. - dotfiles - These are my dotfiles. There are many like it, but these are mine.
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
       ---
 (DIR) commit 78aac95cb0a506bae5acfb01a92d30b599fc9dca
 (DIR) parent 58414aeee16c5b89b06b5437a4bcb346041c830b
 (HTM) Author: Jay Scott <me@jay.scot>
       Date:   Thu, 28 Sep 2023 19:29:15 +0100
       
       Adding new configs.
       
       Diffstat:
         M bin/fet.sh                          |     221 +++++++++++++++++--------------
         R bin/game_select.sh -> bin/old/game… |       0 
         R bin/offline.sh -> bin/old/offline.… |       0 
         M bin/sway-run.sh                     |       3 +--
         M bootstrap.sh                        |       2 +-
         D newsboat/config                     |      29 -----------------------------
         D newsboat/gruvbox                    |      20 --------------------
         D newsboat/urls                       |     103 -------------------------------
         A newsraft/config                     |       7 +++++++
         A newsraft/feeds                      |      92 +++++++++++++++++++++++++++++++
       
       10 files changed, 219 insertions(+), 258 deletions(-)
       ---
 (DIR) diff --git a/bin/fet.sh b/bin/fet.sh
       @@ -7,10 +7,10 @@
        # supress errors
        exec 2>/dev/null
        set --
       -eq() {  # equals  |  [ a = b ] with globbing
       +eq() { # equals  |  [ a = b ] with globbing
                case $1 in
       -                $2) ;;
       -                *) return 1;;
       +        $2) ;;
       +        *) return 1 ;;
                esac
        }
        
       @@ -33,23 +33,23 @@ if [ -e /proc/$$/comm ]; then
                        # then save that to a variable and exit the file
                        while read -r line; do
                                eq "$line" 'PPid*' && ppid=${line##*:?} && break
       -                done < "/proc/${ppid:-$PPID}/status"
       +                done <"/proc/${ppid:-$PPID}/status"
        
                        # Make sure not to do an infinite loop
                        [ "$pppid" = "$ppid" ] && break
                        pppid=$ppid
        
                        # get name of binary
       -                read -r name < "/proc/$ppid/comm"
       +                read -r name <"/proc/$ppid/comm"
        
                        case $name in
       -                        *sh|"${0##*/}") ;;  # skip shells
       -                        *[Ll]ogin*|*init|*systemd*) break;;  # exit when the top is reached
       -                        # anything else can be assumed to be the terminal
       -                        # this has the side affect of catching tmux, but tmux
       -                        # detaches from the terminal and therefore ignoring that
       -                        # will just make the init the term
       -                        *) term=$name
       +                *sh | "${0##*/}") ;;                     # skip shells
       +                *[Ll]ogin* | *init | *systemd*) break ;; # exit when the top is reached
       +                # anything else can be assumed to be the terminal
       +                # this has the side affect of catching tmux, but tmux
       +                # detaches from the terminal and therefore ignoring that
       +                # will just make the init the term
       +                *) term=$name ;;
                        esac
                done
        
       @@ -57,10 +57,13 @@ if [ -e /proc/$$/comm ]; then
                [ "$wm" ] ||
                        # loop over all processes and check the binary name
                        for i in /proc/*/comm; do
       -                        read -r c < "$i"
       +                        read -r c <"$i"
                                case $c in
       -                                *bar*|*rc) ;;
       -                                awesome|xmonad*|qtile|sway|i3|[bfo]*box|*wm*) wm=${c%%-*}; break;;
       +                        *bar* | *rc) ;;
       +                        awesome | xmonad* | qtile | sway | i3 | [bfo]*box | *wm*)
       +                                wm=${c%%-*}
       +                                break
       +                                ;;
                                esac
                        done
        
       @@ -69,38 +72,42 @@ if [ -e /proc/$$/comm ]; then
                # then convert the amount (second word) from KB to MB
                while read -r line; do
                        eq "$line" 'MemTotal*' && set -- $line && break
       -        done < /proc/meminfo
       -        mem="$(( $2 / 1000 ))MB"
       +        done </proc/meminfo
       +        mem="$(($2 / 1000))MB"
        
                ## Processor
                while read -r line; do
                        case $line in
       -                        vendor_id*) vendor="${line##*: } ";;
       -                        model\ name*) cpu=${line##*: }; break;;
       +                vendor_id*) vendor="${line##*: } " ;;
       +                model\ name*)
       +                        cpu=${line##*: }
       +                        break
       +                        ;;
                        esac
       -        done < /proc/cpuinfo
       +        done </proc/cpuinfo
        
                ## Uptime
                # the simple math is shamefully stolen from aosync
       -        IFS=. read -r uptime _ < /proc/uptime
       +        IFS=. read -r uptime _ </proc/uptime
                d=$((uptime / 60 / 60 / 24))
                up=$(printf %02d:%02d $((uptime / 60 / 60 % 24)) $((uptime / 60 % 60)))
                [ "$d" -gt 0 ] && up="${d}d $up"
        
                ## Kernel
       -        read -r _ _ version _ < /proc/version
       +        read -r _ _ version _ </proc/version
                kernel=${version%%-*}
                eq "$version" '*Microsoft*' && ID="fake $ID"
        
                ## Motherboard // laptop
       -        read -r model < /sys/devices/virtual/dmi/id/product_name
       +        read -r model </sys/devices/virtual/dmi/id/product_name
                # invalid model handling
                case $model in
       -                # alternate file with slightly different info
       -                # on my laptop it has the device model (instead of 'hp notebook')
       -                # on my desktop it has the extended motherboard model
       -                'System '*|'Default '*|'To Be Filled'*)
       -                        read -r model < /sys/devices/virtual/dmi/id/board_name
       +        # alternate file with slightly different info
       +        # on my laptop it has the device model (instead of 'hp notebook')
       +        # on my desktop it has the extended motherboard model
       +        'System '* | 'Default '* | 'To Be Filled'*)
       +                read -r model </sys/devices/virtual/dmi/id/board_name
       +                ;;
                esac
        
                ## Packages
       @@ -108,45 +115,48 @@ if [ -e /proc/$$/comm ]; then
                # then save the argument count to $pkgs
                set --
                # kiss, arch, debian, void, gentoo
       -        for i in '/var/db/kiss/installed/*'  '/var/lib/pacman/local/[0-9a-z]*' \
       -        '/var/lib/dpkg/info/*.list'  '/var/db/xbps/.*'  '/var/db/pkg/*/*'; do
       +        for i in '/var/db/kiss/installed/*' '/var/lib/pacman/local/[0-9a-z]*' \
       +                '/var/lib/dpkg/info/*.list' '/var/db/xbps/.*' '/var/db/pkg/*/*'; do
                        set -- $i
                        [ $# -gt 1 ] && pkgs=$# && break
                done
        
       -        read -r host < /proc/sys/kernel/hostname
       +        read -r host </proc/sys/kernel/hostname
        elif [ -f /var/run/dmesg.boot ]; then
                # Both OpenBSD and FreeBSD use this file, however they're formatted differently
       -        read -r bsd < /var/run/dmesg.boot
       +        read -r bsd </var/run/dmesg.boot
                case $bsd in
                Open*)
                        ## OpenBSD cpu/mem/name
                        while read -r line; do
                                case $line in
       -                                'real mem'*)
       -                                        # use the pre-formatted value which is in brackets
       -                                        mem=${line##*\(}
       -                                        mem=${mem%\)*}
       +                        'real mem'*)
       +                                # use the pre-formatted value which is in brackets
       +                                mem=${line##*\(}
       +                                mem=${mem%\)*}
                                        ;;
       -                                # set $cpu to everything before a comma and after the field name
       -                                cpu0:*)
       -                                        cpu=${line#cpu0: }
       -                                        # Remove excess info after the actual CPU name
       -                                        cpu=${cpu%%,*}
       -                                        # Set the CPU Manufacturer to the first word of the cpu
       -                                        # variable [separated by '(' or ' ']
       -                                        vendor=${cpu%%[\( ]*}
       -                                        # We got all the info we want, stop reading
       -                                        break
       +                        # set $cpu to everything before a comma and after the field name
       +                        cpu0:*)
       +                                cpu=${line#cpu0: }
       +                                # Remove excess info after the actual CPU name
       +                                cpu=${cpu%%,*}
       +                                # Set the CPU Manufacturer to the first word of the cpu
       +                                # variable [separated by '(' or ' ']
       +                                vendor=${cpu%%[\( ]*}
       +                                # We got all the info we want, stop reading
       +                                break
                                        ;;
       -                                # First 2 words in the file are OpenBSD <version>
       -                                *) [ "$ID" ] || { set -- $line; ID="$1 $2"; }
       +                        # First 2 words in the file are OpenBSD <version>
       +                        *) [ "$ID" ] || {
       +                                set -- $line
       +                                ID="$1 $2"
       +                        } ;;
                                esac
       -                done < /var/run/dmesg.boot
       +                done </var/run/dmesg.boot
                        [ -d /var/db/pkg ] && set -- /var/db/pkg/* && pkgs=$#
       -                read -r host < /etc/myname
       +                read -r host </etc/myname
                        host=${host%.*}
       -        ;;
       +                ;;
                # Everything else, assume FreeBSD (first line is ---<<BOOT>> or something)
                *)
                        # shellcheck source=/dev/null
       @@ -156,56 +166,61 @@ elif [ -f /var/run/dmesg.boot ]; then
        
                        while read -r line; do
                                case $line in
       -                                # os version
       -                                FreeBSD*)
       -                                        # If the OS is already set, no need to set it again
       -                                        [ "$ID" ] && continue
       -                                        ID=${line%%-R*}
       +                        # os version
       +                        FreeBSD*)
       +                                # If the OS is already set, no need to set it again
       +                                [ "$ID" ] && continue
       +                                ID=${line%%-R*}
                                        ;;
        
       -                                CPU:*)
       -                                        cpu=${cpu#CPU: }
       -                                        # Remove excess info from after the actual CPU name
       -                                        cpu=${line%\(*}
       +                        CPU:*)
       +                                cpu=${cpu#CPU: }
       +                                # Remove excess info from after the actual CPU name
       +                                cpu=${line%\(*}
                                        ;;
       -                                *Origin=*)
       -                                        # CPU Manufacturer
       -                                        vendor=${line#*Origin=\"}
       -                                        vendor="${vendor%%\"*} "
       +                        *Origin=*)
       +                                # CPU Manufacturer
       +                                vendor=${line#*Origin=\"}
       +                                vendor="${vendor%%\"*} "
                                        ;;
        
       -                                'real memory'*)
       -                                        # Get the pre-formatted amount which is inside brackets
       -                                        mem=${line##*\(}
       -                                        mem=${mem%\)*}
       -                                        # This appears to be the final thing we need from the file,
       -                                        # no need to read it more.
       -                                        break
       +                        'real memory'*)
       +                                # Get the pre-formatted amount which is inside brackets
       +                                mem=${line##*\(}
       +                                mem=${mem%\)*}
       +                                # This appears to be the final thing we need from the file,
       +                                # no need to read it more.
       +                                break
       +                                ;;
                                esac
       -                done < /var/run/dmesg.boot
       -        ;;
       +                done </var/run/dmesg.boot
       +                ;;
                esac
       -elif v=/System/Library/CoreServices/SystemVersion.plist; [ -f "$v" ]; then
       +elif
       +        v=/System/Library/CoreServices/SystemVersion.plist
       +        [ -f "$v" ]
       +then
                ## Macos
                # make sure this variable is empty as to not break the following loop
                temp=
                while read -r line; do
                        case $line in
       -                        # set a variable so the script knows it's on the correct line
       -                        # (the line after this one is the important one)
       -                        *ProductVersion*) temp=.;;
       -                        *)
       -                                # check if the script is reading the derired line, if not
       -                                # don't do anything
       -                                [ "$temp" ] || continue
       -                                # Remove everything before and including the first '>'
       -                                ID=${line#*>}
       -                                # Remove the other side of the XML tag, and insert the actual OS name
       -                                ID="MacOS ${ID%<*}"
       -                                # We got the info we want, end the loop.
       -                                break
       +                # set a variable so the script knows it's on the correct line
       +                # (the line after this one is the important one)
       +                *ProductVersion*) temp=. ;;
       +                *)
       +                        # check if the script is reading the derired line, if not
       +                        # don't do anything
       +                        [ "$temp" ] || continue
       +                        # Remove everything before and including the first '>'
       +                        ID=${line#*>}
       +                        # Remove the other side of the XML tag, and insert the actual OS name
       +                        ID="MacOS ${ID%<*}"
       +                        # We got the info we want, end the loop.
       +                        break
       +                        ;;
                        esac
       -        done < "$v"
       +        done <"$v"
        fi
        
        eq "$0" '*fetish' && printf 'Step on me daddy\n' && exit
       @@ -216,7 +231,7 @@ eq "$wm" '*[Gg][Nn][Oo][Mm][Ee]*' && wm='foot DE'
        ## GTK
        while read -r line; do
                eq "$line" 'gtk-theme*' && gtk=${line##*=} && break
       -done < "${XDG_CONFIG_HOME:=$HOME/.config}/gtk-3.0/settings.ini"
       +done <"${XDG_CONFIG_HOME:=$HOME/.config}/gtk-3.0/settings.ini"
        
        # Shorten $cpu and $vendor
        # this is so messy due to so many inconsistencies in the model names
       @@ -248,19 +263,19 @@ print() {
        
        for i in $info; do
                case $i in
       -                n) echo;;
       -                os) print os "$ID";;
       -                sh) print sh "${SHELL##*/}";;
       -                wm) print wm "${wm##*/}";;
       -                up) print up "$up";;
       -                gtk) print gtk "${gtk# }";;
       -                cpu) print cpu "$vendor$cpu";;
       -                mem) print mem "$mem";;
       -                host) print host "$model";;
       -                kern) print kern "$kernel";;
       -                pkgs) print pkgs "$pkgs";;
       -                term) print term "$term";;
       -                user) printf '%7s@%s\n' "$USER" "$host";;
       -                col) col;;
       +        n) echo ;;
       +        os) print os "$ID" ;;
       +        sh) print sh "${SHELL##*/}" ;;
       +        wm) print wm "${wm##*/}" ;;
       +        up) print up "$up" ;;
       +        gtk) print gtk "${gtk# }" ;;
       +        cpu) print cpu "$vendor$cpu" ;;
       +        mem) print mem "$mem" ;;
       +        host) print host "$model" ;;
       +        kern) print kern "$kernel" ;;
       +        pkgs) print pkgs "$pkgs" ;;
       +        term) print term "$term" ;;
       +        user) printf '%7s@%s\n' "$USER" "$host" ;;
       +        col) col ;;
                esac
        done
 (DIR) diff --git a/bin/game_select.sh b/bin/old/game_select.sh
 (DIR) diff --git a/bin/offline.sh b/bin/old/offline.sh
 (DIR) diff --git a/bin/sway-run.sh b/bin/sway-run.sh
       @@ -13,8 +13,7 @@ export XDG_PICTURES_DIR="$HOME/tmp"
        export XDG_VIDEOS_DIR="$HOME/tmp"
        export XDG_CURRENT_DESKTOP=sway
        
       -if [ -z "$XDG_RUNTIME_DIR" ]
       -then
       +if [ -z "$XDG_RUNTIME_DIR" ]; then
                mkdir -p /tmp/runtime/jay
                chmod 700 /tmp/runtime/jay
                export XDG_RUNTIME_DIR=/tmp/runtime/jay
 (DIR) diff --git a/bootstrap.sh b/bootstrap.sh
       @@ -4,7 +4,7 @@ DOTFILES=$(pwd)
        
        FILES='ashrc castgetrc profile vimrc'
        ROOT='bin'
       -CONFIG='foot git isync lynx mpd mutt ncmpcpp newsboat qutebrowser senpai slrn sway'
       +CONFIG='foot git isync lynx mpd mutt ncmpcpp newsraft qutebrowser senpai slrn sway'
        
        link() {
                for f in $FILES; do ln -sfn "$DOTFILES/$f" "$HOME/.$f"; done
 (DIR) diff --git a/newsboat/config b/newsboat/config
       @@ -1,29 +0,0 @@
       -# Default applications
       -player mpv
       -browser "~/bin/link_handler.sh"
       -
       -# Reload
       -auto-reload no
       -reload-time 30
       -reload-threads 8
       -
       -prepopulate-query-feeds yes
       -show-read-feeds no
       -scrolloff 5
       -
       -# Feed settings
       -show-read-articles no
       -show-title-bar no
       -download-full-page yes
       -text-width 72
       -
       -articlelist-format "%D %?T?| %-17T | ?%t"
       -
       -# Maintenace
       -confirm-mark-feed-read no
       -cleanup-on-quit yes
       -
       -# Macros
       -macro f set browser "qutebrowser %u" ; open-in-browser ; set browser "~/bin/link_handler.sh"
       -
       -include ~/.config/newsboat/gruvbox
 (DIR) diff --git a/newsboat/gruvbox b/newsboat/gruvbox
       @@ -1,20 +0,0 @@
       -# Newsboat colour scheme to work with the Gruvbox palette
       -# Inspired by the vim theme https://github.com/morhetz/gruvbox
       -# Tested with the Kitty gruvbox terminal colour scheme
       -# https://github.com/wdomitrz/kitty-gruvbox-theme
       -
       -color background          color223   color0
       -color listnormal          color223   color0
       -color listnormal_unread   color2     color0
       -color listfocus           color223   color237
       -color listfocus_unread    color223   color237
       -color info                color8     color0
       -color article             color223   color0
       -
       -# highlights
       -highlight article "^(Feed|Link):.*$" color11 default bold
       -highlight article "^(Title|Date|Author):.*$" color11 default bold
       -highlight article "https?://[^ ]+" color2 default underline
       -highlight article "\\[[0-9]+\\]" color2 default bold
       -highlight article "\\[image\\ [0-9]+\\]" color2 default bold
       -highlight feedlist "^─.*$" color6 color6 bold
 (DIR) diff --git a/newsboat/urls b/newsboat/urls
       @@ -1,103 +0,0 @@
       -"query:┌─Unread:unread = \"yes\""
       -"query:├─All:tags != \"\""
       -"query:│ ├─ Linux:tags # \"linux\""
       -"query:│ ├─ Media:tags # \"media\""
       -"query:│ ├─ Gaming:tags # \"gaming\""
       -"query:│ ├─ Apps:tags # \"apps\""
       -"query:│ ├─ People:tags # \"people\""
       -"query:│ ├─ Gemini:tags # \"gemini\""
       -"query:│ ├─ Podcast:tags # \"podcast\""
       -"query:│ ├─ Videos:tags # \"youtube\""
       -"query:│ ├─ Misc:tags # \"misc\""
       -
       -# LINUX
       -https://tilde.news/newest.rss ! "~Tilde News" linux
       -https://lwn.net/headlines/rss ! "~LWN" linux
       -https://rss.slashdot.org/Slashdot/slashdotMain ! "~Slashdot" linux
       -
       -# MISC
       -https://old.reddit.com/r/dumbphones/.rss ! "~R Dumbphones" misc
       -https://old.reddit.com/r/aberdeen/.rss ! "~R Aberdeen" misc
       -https://old.reddit.com/r/preppers/.rss ! "~R Preppers" misc
       -https://old.reddit.com/r/preppersuk/.rss ! "~R Preppers UK" misc
       -https://old.reddit.com/r/ukbike/.rss ! "~R UKBike" misc
       -
       -# MEDIA
       -https://showrss.info/other/all.rss ! "~TV Torrents" media
       -
       -# GAMING
       -https://www.gamingonlinux.com/article_rss.php ! "~Gaming On Linux" gaming
       -
       -# APPS
       -https://blog.qutebrowser.org/feeds/all.atom.xml ! "~Qutebrowser" apps
       -https://newsboat.org/news.atom ! "~Newsboat" apps
       -https://git.sr.ht/~taiite/senpai/log/master/rss.xml ! "~Senpai" apps
       -https://github.com/mlj/castget/commits.atom ! "~Castget" apps
       -https://status.hetzner.com/en.atom ! "~Hetzner" apps
       -https://gitlab.alpinelinux.org/alpine/aports/-/issues.atom ! "~aports issues" apps
       -
       -# PEOPLE
       -https://codemadness.org/atom.xml ! "~CodeMadness" people
       -https://drewdevault.com/blog/index.xml ! "~Drew DeVault" people
       -http://joeyh.name/blog/index.rss ! "~Joey H" people
       -https://unixsheikh.com/feed.rss ! "~Unix Sheikh" people
       -https://www.uninformativ.de/blog/feeds/en.atom ! "~Uninformativ" people
       -
       -# GEMINI
       -"exec:gemget tilde.team/~tomasino/atom.xml --output -" ! "~tomasino@tilde.team" gemini
       -"exec:gemget capsule.usebox.net/gemlog/atom.xml --output -" ! "~Juans Gemlog" gemini
       -"exec:gemget foobucket.xyz/gemlog/atom.xml --output -" ! "~Foobucket Gemlog" gemini
       -"exec:gemget midnight.pub/feed.xml --output -" ! "~Midnight Pub" gemini
       -"exec:gemget gemini://warmedal.se/~antenna/atom.xml --output -" ! "~Antenna" gemini
       -
       -# ODYSEE
       -https://odysee.com/$/rss/@AlphaNerd:8 ! "~Mental Outlaws" youtube
       -https://odysee.com/$/rss/@DistroTube:2 ! "~DistroTube" youtube
       -https://odysee.com/$/rss/@BrodieRobertson:5 ! "~Brodie Robertson" youtube
       -https://odysee.com/$/rss/@OfficialZaney:8 ! "~Zaney" youtube
       -https://odysee.com/$/rss/@thelinuxcast:4 ! "~Linux Cast" youtube
       -https://odysee.com/$/rss/@SystemCrafters:e ! "~System Crafters" youtube
       -https://odysee.com/$/rss/@tuxfoo:e ! "~Tuxfoo" youtube
       -https://odysee.com/$/rss/@hexdsl:7 ! "~HexDSL" youtube
       -
       -# YOUTUBE
       -https://www.youtube.com/feeds/videos.xml?channel_id=UC2I6Et1JkidnnbWgJFiMeHA ! youtube # Steve1989MREInfo
       -https://www.youtube.com/feeds/videos.xml?channel_id=UC7uO9V1Frl_wPd9d1qOm_RQ ! youtube # Dave Snider
       -https://www.youtube.com/feeds/videos.xml?channel_id=UC5k3Kc0avyDJ2nG9Kxm9JmQ ! youtube # Bright Sun Films
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCKr68ZJ4vv6VloNdnS2hjhA ! youtube # Harald Baldr
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCKygRpISlqs5TufcT3JtRng ! youtube # Dale Philip
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCQCrKxBj5Id79syQEsY2Qxg ! youtube # Simon Wilson
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCRvWwMPr2SmSG7rXXzeEUdA ! youtube # SideNote
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCVqpNG1R72i21jh-nAxEk4A ! youtube # c90adventures
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCXulruMI7BHj3kGyosNa0jA ! youtube # Indigo Traveller
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCnHEz9DZ6EAof1-DaQGD_Xw ! youtube # PPPeter
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCxDZs_ltFFvn0FDHT6kmoXA ! youtube # Bald and Bankrupt
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCXJL3ST-O0J3nqzQyPJtpNg ! youtube # PreachGaming
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCgNqlRGqHdxNRPR6ycynWhw ! youtube # Vagrant Holiday
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCHL9bfHTxCMi-7vfxQ-AYtg ! youtube # Abroad in Japan
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCB2GbNXOsy3VBksSD58NvhQ ! youtube # Daily Bald
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCwpHKudUkP5tNgmMdexB3ow ! youtube # Mentour Pilot
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCl7mAGnY4jh4Ps8rhhh8XZg ! youtube # Serpentza
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCpXwMqnXfJzazKS5fJ8nrVw ! youtube # Shiey
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCWm__g4cPmX-umorqM8VfWw ! youtube # LukeDamant
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCO8MMsO_XRjO7X4iGCuKdwg ! youtube # Vagabond
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCpiWxsm9Gt_HK7d-jqkU4MA ! youtube # Daly Life Outdoors
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCPqdx8N99fs4IDoK_XA1aew ! youtube # English Woodsman
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCI3mQP0kLxdZKhNtcHhExyA ! youtube # Paul Messer
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCdVEfdWcNwL5jWmwaNWEf1Q ! youtube # Bushman & Blue
       -https://www.youtube.com/feeds/videos.xml?channel_id=UC2O6HDtMOZf9FkUAepz9Atg ! youtube # Noel Phillips
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCdQ3VoDGjjl3NsfB3V0mPng ! youtube # clawd00d
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCpNBjjE8y8eFPhDU4YzYmKA ! youtube # Quin69
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCHugE6eRhqB9_AZQh4DDbIw ! youtube # Jupiter Broadcasting
       -https://www.youtube.com/feeds/videos.xml?channel_id=UC5UAwBUum7CPN5buc-_N1Fw ! youtube # Linux Experiment
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCf-5nkCm0Mldj5xwq8wca_g ! youtube # JokerTV
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCE-f0sqi-H7kuLT0YiW9rcA ! youtube # TheLazyPeon
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCKsTMxQP7HUCRTuNEEQWLww ! youtube # AlastairHumphreys
       -https://www.youtube.com/feeds/videos.xml?channel_id=UC7McxlM5qJVjqLBRYcHyylg ! youtube # BackpackerBen
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCb31gOY6OD8ES0zP8M0GhAw ! youtube # MaxFosh
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCqWFLuBLPiaeNzYAek6BOmA ! youtube # AutoAlex
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCSnqXeK94-iNmwqGO__eJ5g ! youtube # SteveWallis
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCQkKf5qwYKyJlyhZPbdAVmw ! youtube # HamsterWheelGaming
       -https://www.youtube.com/feeds/videos.xml?channel_id=UC2SMpy2oZV6BoyJEYShw9bw ! youtube # TA Outdoors
       -https://www.youtube.com/feeds/videos.xml?channel_id=UCDQ9L4eFHxSh0BM6z-SkZMw ! youtube # Ned in the Cloud
       -https://www.youtube.com/feeds/videos.xml?channel_id=UC3Vuq4Q1bKFtAiKYlwRv3oA ! youtube # Peter Santenello
 (DIR) diff --git a/newsraft/config b/newsraft/config
       @@ -0,0 +1,7 @@
       +# settings
       +set open-in-browser-command /home/jay/bin/link_handler.sh "%l"
       +#set send-user-agent-header false
       +set clean-database-on-startup  true
       +
       +# key bindings
       +bind f exec "~/bin/link_handler.sh %l"
 (DIR) diff --git a/newsraft/feeds b/newsraft/feeds
       @@ -0,0 +1,92 @@
       +@ LINUX
       +https://tilde.news/newest.rss "Tilde News"
       +https://lwn.net/headlines/rss "LWN"
       +https://rss.slashdot.org/Slashdot/slashdotMain "Slashdot"
       +
       +@ MISC
       +https://old.reddit.com/r/dumbphones/.rss "R Dumbphones"
       +https://old.reddit.com/r/aberdeen/.rss "R Aberdeen"
       +https://old.reddit.com/r/preppers/.rss "R Preppers"
       +https://old.reddit.com/r/preppersuk/.rss "R Preppers UK"
       +https://old.reddit.com/r/ukbike/.rss "R UKBike"
       +
       +@ MEDIA
       +https://showrss.info/other/all.rss "TV Torrents"
       +
       +@ GAMING
       +https://www.gamingonlinux.com/article_rss.php "Gaming On Linux"
       +
       +@ APPS
       +https://blog.qutebrowser.org/feeds/all.atom.xml "Qutebrowser"
       +https://newsboat.org/news.atom "Newsboat"
       +https://git.sr.ht/~taiite/senpai/log/master/rss.xml "Senpai"
       +https://github.com/mlj/castget/commits.atom "Castget"
       +https://status.hetzner.com/en.atom "Hetzner"
       +https://gitlab.alpinelinux.org/alpine/aports/-/issues.atom "aports issues"
       +
       +@ PEOPLE
       +https://codemadness.org/atom.xml "CodeMadness"
       +https://drewdevault.com/blog/index.xml "Drew DeVault"
       +http://joeyh.name/blog/index.rss "Joey H"
       +https://unixsheikh.com/feed.rss "Unix Sheikh"
       +https://www.uninformativ.de/blog/feeds/en.atom "Uninformativ"
       +
       +# GEMINI
       +#"exec:gemget tilde.team/~tomasino/atom.xml --output -" "~tomasino@tilde.team"
       +#"exec:gemget capsule.usebox.net/gemlog/atom.xml --output -" "~Juans Gemlog"
       +#"exec:gemget foobucket.xyz/gemlog/atom.xml --output -" "~Foobucket Gemlog"
       +#"exec:gemget midnight.pub/feed.xml --output -" "~Midnight Pub"
       +#"exec:gemget gemini://warmedal.se/~antenna/atom.xml --output -" "~Antenna"
       +
       +@ ODYSEE
       +https://odysee.com/$/rss/@AlphaNerd:8 "Mental Outlaws"
       +https://odysee.com/$/rss/@DistroTube:2 "DistroTube"
       +https://odysee.com/$/rss/@BrodieRobertson:5 "Brodie Robertson"
       +https://odysee.com/$/rss/@OfficialZaney:8 "Zaney"
       +https://odysee.com/$/rss/@thelinuxcast:4 "Linux Cast"
       +https://odysee.com/$/rss/@SystemCrafters:e "System Crafters"
       +https://odysee.com/$/rss/@tuxfoo:e "Tuxfoo"
       +https://odysee.com/$/rss/@hexdsl:7 "HexDSL"
       +
       +@ YOUTUBE {60}
       +https://www.youtube.com/feeds/videos.xml?channel_id=UC2I6Et1JkidnnbWgJFiMeHA # Steve1989MREInfo
       +https://www.youtube.com/feeds/videos.xml?channel_id=UC7uO9V1Frl_wPd9d1qOm_RQ # Dave Snider
       +https://www.youtube.com/feeds/videos.xml?channel_id=UC5k3Kc0avyDJ2nG9Kxm9JmQ # Bright Sun Films
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCKr68ZJ4vv6VloNdnS2hjhA # Harald Baldr
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCKygRpISlqs5TufcT3JtRng # Dale Philip
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCQCrKxBj5Id79syQEsY2Qxg # Simon Wilson
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCRvWwMPr2SmSG7rXXzeEUdA # SideNote
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCVqpNG1R72i21jh-nAxEk4A # c90adventures
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCXulruMI7BHj3kGyosNa0jA # Indigo Traveller
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCnHEz9DZ6EAof1-DaQGD_Xw # PPPeter
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCxDZs_ltFFvn0FDHT6kmoXA # Bald and Bankrupt
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCXJL3ST-O0J3nqzQyPJtpNg # PreachGaming
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCgNqlRGqHdxNRPR6ycynWhw # Vagrant Holiday
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCHL9bfHTxCMi-7vfxQ-AYtg # Abroad in Japan
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCwpHKudUkP5tNgmMdexB3ow # Mentour Pilot
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCl7mAGnY4jh4Ps8rhhh8XZg # Serpentza
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCpXwMqnXfJzazKS5fJ8nrVw # Shiey
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCWm__g4cPmX-umorqM8VfWw # LukeDamant
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCO8MMsO_XRjO7X4iGCuKdwg # Vagabond
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCpiWxsm9Gt_HK7d-jqkU4MA # Daly Life Outdoors
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCPqdx8N99fs4IDoK_XA1aew # English Woodsman
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCI3mQP0kLxdZKhNtcHhExyA # Paul Messer
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCdVEfdWcNwL5jWmwaNWEf1Q # Bushman & Blue
       +https://www.youtube.com/feeds/videos.xml?channel_id=UC2O6HDtMOZf9FkUAepz9Atg # Noel Phillips
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCdQ3VoDGjjl3NsfB3V0mPng # clawd00d
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCpNBjjE8y8eFPhDU4YzYmKA # Quin69
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCHugE6eRhqB9_AZQh4DDbIw # Jupiter Broadcasting
       +https://www.youtube.com/feeds/videos.xml?channel_id=UC5UAwBUum7CPN5buc-_N1Fw # Linux Experiment
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCf-5nkCm0Mldj5xwq8wca_g # JokerTV
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCE-f0sqi-H7kuLT0YiW9rcA # TheLazyPeon
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCKsTMxQP7HUCRTuNEEQWLww # AlastairHumphreys
       +https://www.youtube.com/feeds/videos.xml?channel_id=UC7McxlM5qJVjqLBRYcHyylg # BackpackerBen
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCb31gOY6OD8ES0zP8M0GhAw # MaxFosh
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCqWFLuBLPiaeNzYAek6BOmA # AutoAlex
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCSnqXeK94-iNmwqGO__eJ5g # SteveWallis
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCQkKf5qwYKyJlyhZPbdAVmw # HamsterWheelGaming
       +https://www.youtube.com/feeds/videos.xml?channel_id=UC2SMpy2oZV6BoyJEYShw9bw # TA Outdoors
       +https://www.youtube.com/feeds/videos.xml?channel_id=UCDQ9L4eFHxSh0BM6z-SkZMw # Ned in the Cloud
       +https://www.youtube.com/feeds/videos.xml?channel_id=UC3Vuq4Q1bKFtAiKYlwRv3oA # Peter Santenello
       +https://www.youtube.com/feeds/videos.xml?channel_id=UC67TJP9i84zbCi2h1aaSO6Q # Ringway Manchester
       +https://www.youtube.com/feeds/videos.xml?channel_id=UChY9Cgv-iyPDvf1Bkyx20OQ # My Mate Vince