This page permanently redirects to gemini://gemini.techrights.org/git/tr-git/Desktop-Utils/.

Git browser: Desktop-Utils/

This page presents code associated with the module/unit named above.

=> Summary of changes
=> Back to Git index
=> Licence (AGPLv3)

Desktop-Utils/feedlist.py

# -*- coding: utf-8 -*-
""" An rss to html converter """

__version__ = "0.0.1"
__author__ = "Roy Schestowitz"

try:
    import StringIO
except ImportError:
    from io import StringIO
from feedparser import parse as parsefeed
import feedparser
from datetime import datetime
import time
import dateutil.parser as dp
import dateutil.tz as dtz


# feedlist = ['https://planet.mozilla.org/rss20.xml', 'https://blog.mozilla.org/feed/', 'http://planet.ubuntu.com/rss20.xml', 'https://www.tecmint.com/feed/', 'https://itsfoss.com/rss', 'http://fedoraplanet.org/rss20.xml']


feedlist =[
    'http://alien.slackbook.org/blog/feed/',
    'http://allanmcrae.com/feed/',
    'http://anniemachon.ch/feed',
    'http://blog.cretaria.com/rss.xml',
    'http://blog.diasporafoundation.org/feed',
    'http://blog.hypriot.com/index.xml',
    'http://blog.linuxmint.com/?feed=rss2',
    'http://blog.lxde.org/?feed=rss2',
    'http://blog.netbsd.org/tnf/feed/entries/rss',
    'http://blogs.perl.org/atom.xml',
    'http://blogs.zdnet.com/open-source/wp-rss2.php',
    'http://design.canonical.com/feed',
    'http://devconnected.com/feed/',
    'http://distrowatch.com/news/dwd.xml',
    'http://distrowatch.com/news/dww.xml',
    'http://elementopie.com/feeds/geekrant/feed.xml',
    'http://elinuxbook.com/feed',
    'http://eqe-c.blogspot.com/feeds/posts/default',
    'http://esr.ibiblio.org/?feed=rss2',
    'http://fedoraplanet.org/rss20.xml',
    'http://feed.jupiter.zone/allshows',
    'http://feed.jupiter.zone/bsdnow',
    'http://feedpress.me/unixtutorial',
    'http://feeds2.feedburner.com/Command-line-fu',
    'http://feeds2.feedburner.com/linuxbsdos',
    'http://feeds2.feedburner.com/webupd8',
    'http://feeds.arstechnica.com/arstechnica/open-source',
    'http://feeds.cyberciti.biz/Nixcraft-LinuxFreebsdSolarisTipsTricks',
    'http://feeds.feedburner.com/bkerensa',
    'http://feeds.feedburner.com/BsdNowMp3',
    'http://feeds.feedburner.com/d0od',
    'http://feeds.feedburner.com/FreedomPenguin?format=xml',
    'http://feeds.feedburner.com/gimpuserscom?format=xml',
    'http://feeds.feedburner.com/henriquemachadoLXDE',
    'http://feeds.feedburner.com/Ipwatchdog',
    'http://feeds.feedburner.com/ItsFoss',
    'http://feeds.feedburner.com/LinuxBsdAndEverythingElseThatsFun',
    'http://feeds.feedburner.com/Linuxg',
    'http://feeds.feedburner.com/linux-news/feeds',
    'http://feeds.feedburner.com/linuxrig',
    'http://feeds.feedburner.com/LnuxTech-lb',
    'http://feeds.feedburner.com/martenssonsmeningarse',
    'http://feeds.feedburner.com/noobslab',
    'http://feeds.feedburner.com/Open',
    'http://feeds.feedburner.com/oshogbo?format=xml',
    'http://feeds.feedburner.com/PatentDocs',
    'http://feeds.feedburner.com/PenDriveLinux',
    'http://feeds.feedburner.com/RaphaelHertzogCom',
    'http://feeds.feedburner.com/SimplyJun',
    'http://feeds.feedburner.com/TechCrunch/',
    'http://feeds.feedburner.com/tecmint',
    'http://feeds.feedburner.com/tecosystems',
    'http://feeds.feedburner.com/TheLinuxLinkTechShowOgg-vorbisFeed',
    'http://feeds.feedburner.com/UbuntuGeek',
    'http://feeds.feedburner.com/ubuntu-news',
    'http://feeds.feedburner.com/ubuntuportal',
    'http://feeds.twit.tv/floss.xml',
    'http://fossforce.com/feed/',
    'http://gnuworldorder.info/ogg.xml',
    'http://goinglinux.com/oggpodcast.xml',
    'http://grokthelaw.freeforums.net/rss/public',
    'http://identi.ca/group/fsf/rss',
    'http://ifthisbetreason.com/feed/',
    'http://insights.ubuntu.com/feed',
    'http://ipkitten.blogspot.com/feeds/comments/default?alt=rss',
    'http://ipkitten.blogspot.com/feeds/posts/default',
    'http://iptarget.blogspot.com/feeds/posts/default?alt=rss',
    'http://irregulators.org/feed/',
    'http://jackofkent.com/feed/',
    'http://japanip.blogspot.com/feeds/posts/default',
    'http://jhurani.com/feed.xml',
    'http://kennyvn.com/feed',
    'http://knowledgebasement.com/feed/',
    'http://lcorg.blogspot.com/feeds/posts/default',
    'http://lhspodcast.info/category/podcast-ogg/feed/',
    'http://linoxide.com/feed',
    'http://linuxblog.darkduck.com/feeds/posts/default',
    'http://linux.blognotions.com/feed',
    'http://linux.com/news/featured-blogs?format=feed&type=rss',
    'http://linuxfoundation.org/feed',
    'http://linuxgizmos.com/feed',
    'http://linuxiumcomau.blogspot.com/feeds/posts/default?alt=rss',
    'http://linuxlock.blogspot.com/feeds/posts/default?alt=rss',
    'http://linuxroutes.com/feed',
    'http://linuxscoop.com/feed/rss',
    'http://liquidat.wordpress.com/feed/',
    'http://lxer.com/module/newswire/headlines.rss',
    'http://mab.nu/feed/',
    'http://major.io/feed/',
    'http://manchester.openrightsgroup.org/feed/',
    'http://mandrivachronicles.blogspot.com/feeds/posts/default?alt=rss',
    'http://mate-desktop.com/rss.xml',
    'http://mate-desktop.org/rss.xml',
    'http://mjg59.dreamwidth.org/data/rss',
    'http://news.softpedia.com/newsRSS/Linux-7.xml',
    'http://nomadbsd.org/rss.xml',
    'http://openbytes.wordpress.com/feed/',
    'http://patentblog.kluweriplaw.com/feed',
    'http://patentlyo.com/feed',
    'http://patenttrolls.org/feed/',
    'http://pitivi.org/planet/rss20.xml',
    'http://planet.fsfe.org/en/rss20.xml',
    'http://planet.gnome.org/rss20.xml',
    'http://planet.gnu.org/rss20.xml',
    'http://planetkde.org/rss20.xml',
    'http://planet.kernel.org/rss20.xml',
    'http://planet.mageia.org/en/atom.php',
    'http://planet.opensu.se/rss10.xml',
    'http://planet.slackware-id.org/atom.xml',
    'http://planet.ubuntu.com/rss20.xml',
    'http://quiterss.org/en/rss.xml',
    'http://rhelblog.redhat.com/feed',
    'http://rip-kat.blogspot.com/feeds/posts/default',
    'http://rss.slashdot.org/Slashdot/slashdotLinux',
    'https://access.redhat.com/blogs/766093/feed',
    'https://admin.cw.no/rss.xml',
    'https://afhub.dev/feed.xml',
    'https://alpinelinux.org/atom.xml',
    'https://anchor.fm/s/d5999dc/podcast/rss',
    'https://anticipat.wordpress.com/feed',
    'https://antixlinux.com/feed/',
    'https://anto.online/feed/',
    'https://arcolinux.com/feed/',
    'https://ariadne.space/feed/',
    'https://arjenwiersma.nl/posts/rss.xml',
    'https://asktogrow.com/feed/',
    'https://audaciousamateur.blogspot.com/feeds/posts/default',
    'https://baronhk.wordpress.com/feed',
    'https://betanews.com/topic/linux/feed/',
    'https://bkhome.org/news/feed.rss',
    'https://blog.centos.org/feed/',
    'https://blog.chromium.org/feeds/posts/default?alt=rss',
    'https://blog.documentfoundation.org/feed/',
    'https://blog.elementary.io/feed.xml',
    'https://blog.ipfire.org/feed.xml',
    'https://blog.irvingwb.com/blog/rss.xml',
    'https://blog.ivnilv.com/posts/index.xml',
    'https://blog.jolla.com/feed/',
    'https://blog.mageia.org/en/feed/',
    'https://blog.mozilla.org/feed/',
    'https://blog.openshift.com/feed/',
    'https://blog.patentology.com.au/feeds/posts/default',
    'https://blog.rust-lang.org/inside-rust/feed.xml',
    'https://blogs.apache.org/foundation/feed/entries/rss',
    'https://blogs.coreboot.org/feed/',
    'https://blogs.oracle.com/linux/compendium/rss',
    'https://blogs.oracle.com/linux/greg-marsden/rss',
    'https://blog.supertuxkart.net/feeds/posts/default?alt=rss',
    'https://blog.ubuntu.com/feed',
    'https://blog.xfce.org/feed/',
    'https://bluesabre.org/rss/',
    'https://bootlin.com/feed/',
    'https://bugzilla.mindrot.org/buglist.cgi?chfieldfrom=14d&query_format=advanced&title=Bug List&ctype=atom',
    'https://buildvirtual.net/feed/',
    'https://bytexd.com/feed/',
    'https://cerebralab.com/feed.xml',
    'http://schestowitz.com/Weblog/feed/',
    'https://cissar.com/feed/',
    'https://citizen.typepad.com/eyesontrade/atom.xml',
    'https://citizix.com/feed/',
    'https://codesposts.com/feed',
    'https://containerjournal.com/feed/',
    'https://couponmonkus.blogspot.com/feeds/posts/default?alt=rss',
    'https://couragefound.org/feed',
    'https://creativecommons.org/blog/feed/',
    'http://scribblesandsnaps.com/feed/',
    'https://daemonfc.wordpress.com/feed/',
    'https://darryldias.me/feed/',
    'https://datapocalypse.net/feed.xml',
    'https://dbaxps.blogspot.com/feeds/posts/default?alt=rss',
    'https://debian.community/feed.xml',
    'https://dekisoft.com/feed/',
    'https://demandprogress.org/home-portfolio-eye-candy/feed/',
    'https://design.blog.documentfoundation.org/feed/',
    'https://design.canonical.com/feed',
    'https://destinationlinux.org/feed/mp3',
    'https://devconnected.com/feed/',
    'https://developer.ibm.com/feed/',
    'https://developers.redhat.com/blog/feed/',
    'https://devopsmyway.com/feed/',
    'https://directory.fsf.org/wiki/Special:Ask/-5B-5BLast-20review-20date::%2B-5D-5D/mainlabel%3D/limit%3D50/order%3Ddescending/sort%3DLast-20review-20date/offset%3D0/format%3Drss/searchlabel%3DRecent-20updates-20RSS-20feed/title%3DFree-20Software-20Directory/description%3DRecent-20updates-20to-20Free-20Software-20Directory-20(directory.fsf.org)',
    'https://discourse.ardour.org/t/ardour-6-0-is-released/103912.rss',
    'https://distrowatch.com/news/dw.xml',
    'https://draculaservers.com/tutorials/feed/',
    'https://dt.iki.fi/feed',
    'https://dwaves.org/feed/',
    'http://segfault.linuxmint.com/feed/',
    'https://elliehuxtable.com/rss/',
    'https://elpais.com/rss/elpais/inenglish.xml',
    'https://endeavouros.com/feed/',
    'https://ericwbailey.design/feed/feed.xml',
    'https://extinction.fyi/',
    'https://fasterland.net/feed',
    'https://feed.infoq.com/Linux/',
    'https://feeds.feedburner.com/johnpilger',
    'https://feeds.feedburner.com/kerneltalks',
    'https://feeds.feedburner.com/linuxadminio',
    'https://feeds.feedburner.com/linuxroutesFeed',
    'https://feeds.feedburner.com/LinuxUprising',
    'https://feeds.feedburner.com/speedysense',
    'https://feeds.feedburner.com/tipsonunix',
    'https://feeds.feedburner.com/TroyHunt',
    'https://feeds.fireside.fm/linuxuserspace/rss',
    'https://feed.theregister.com/atom?a=Liam Proven',
    'https://feed.theregister.com/atom?a=Steven J. Vaughan-Nichols',
    'https://firejaildns.wordpress.com/feed/',
    'https://fitzcarraldoblog.wordpress.com/feed/',
    'https://forum.manjaro.org/t/manjaro-21-3-0-ruah-released/114220.rss',
    'https://fosspost.org/feed',
    'https://freenode.net/news/atom.xml',
    'https://frontpagelinux.com/feed/',
    'https://fsfellowship.eu/feed.xml',
    'https://fsfe.org/news/news.en.rss',
    'https://godotengine.org/rss.xml',
    'https://googleprojectzero.blogspot.com/feeds/posts/default?alt=rss',
    'https://gottcode.org/feed.atom',
    'https://gravitational.com/blog/index.xml',
    'https://gstreamer.freedesktop.org/planet/rss20.xml',
    'https://guix.gnu.org/feeds/blog.atom',
    'https://hackwarenews.com/feed/',
    'http://shallowsky.com/blog/index.rss',
    'https://heathermeeker.com/feed/',
    'https://howiehawkins.us/feed/',
    'https://hunden.linuxkompis.se/feed.xml',
    'https://hund.tty1.se/feed.xml',
    'https://idroot.us/feed/',
    'https://inkscape.org/news/feed/',
    'https://insights.sei.cmu.edu/cert/atom.xml',
    'https://internetfreedom.in/rss/',
    'https://iridakos.com/feed.xml',
    'https://istio.io/latest/news/feed.xml',
    'https://itsfoss.com/feed',
    'https://itsubuntu.com/feed/',
    'http://sixgun.org/feed/gnr/',
    'https://kdenlive.org/en/feed/',
    'https://kerneltalks.com/feed',
    'https://kifarunix.com/feed/',
    'https://konstantin.blog/feed/',
    'https://koutoupis.com/feed/',
    'https://kparal.wordpress.com/feed/',
    'https://kubernetes.io/feed.xml',
    'https://labs.unit221b.com/feed/',
    'http://slated.org/rss.xml',
    'https://latenightlinux.com/feed/mp3',
    'https://lateweb.info/feed/',
    'https://learnlinuxandlibreoffice.org/news?format=feed&type=rss',
    'https://liam-on-linux.dreamwidth.org/rss',
    'https://librearts.org/categories/education/index.xml',
    'https://librearts.org/categories/interviews/index.xml',
    'https://librearts.org/categories/podcast/index.xml',
    'https://librearts.org/categories/reviews/index.xml',
    'https://librearts.org/categories/showcases/index.xml',
    'https://librearts.org/categories/weekly/index.xml',
    'https://libreboot.org/feed.xml',
    'https://libreelec.tv/feed/',
    'https://liliputing.com/tag/linux/feed',
    'https://linmob.net/feed.xml',
    'https://linoxide.com/feed/',
    'https://linuxadmin.io/feed',
    'https://linuxadmin.io/feed/',
    'https://linuxbuz.com/feed',
    'https://linuxconcept.com/feed/',
    'https://linuxconfig.org/feed',
    'https://linuxh2o.com/feed/',
    'https://linuxhandbook.com/rss',
    'https://linuxhint.com/feed',
    'https://linuxhostsupport.com/blog/feed/',
    'https://linuxiac.com/feed/',
    'https://linuxinsider.com/feed/',
    'https://linuxize.com/index.xml',
    'https://linuxize.com/series/install-lamp-stack-on-centos-8/index.xml',
    'https://linuxnewbieguide.org/feed',
    'https://linuxnewbieguide.org/feed/',
    'https://linuxnightly.com/feed/',
    'https://linuxreviews.org/feed.rss',
    'https://linuxsecurityblog.com/feed',
    'https://linuxsecurityblog.com/feed/',
    'https://linuxsecurity.com/linuxsecurity_articles.xml',
    'https://linuxstans.com/feed/',
    'https://linuxstoney.com/feed/',
    'https://linuxtechlab.com/feed/',
    'https://linuxtechmore.blogspot.com/feeds/posts/default?alt=rss',
    'https://linuxtldr.com/rss',
    'https://linux-video-tutorials.blogspot.com/feeds/posts/default?alt=rss',
    'https://linuxwebdevelopment.com/feed/',
    'https://linuxwizardry.com/feed/',
    'https://lwn.net/headlines/newrss',
    'https://medevel.com/rss/',
    'https://media.libreplanet.org/atom/',
    'https://mightygadget.co.uk/search/linux/feed/rss2/',
    'https://mindplusplus.wordpress.com/feed/',
    'https://mintcast.org/category/ogg/feed/',
    'http://smlr.us/?feed=smlr-ogg',
    'https://nardasev.wordpress.com/feed/',
    'https://nbshare.io/blog/rss/',
    'https://net2.com/feed/',
    'https://news.itsfoss.com/feed/',
    'https://news.netcraft.com/feed',
    'https://news.opensuse.org/feed',
    'https://nextgentips.com/feed/',
    'https://nixos.org/news-rss.xml',
    'https://onepagezen.com/feed/',
    'https://opensourcesecurity.io/blog/feed',
    'https://openwrt.org/feed.php?mode=list&ns=',
    'https://osmc.tv/rss/',
    'https://osnote.com/feed/',
    'https://ostechnix.com/feed/',
    'https://owlhowto.com/rss/',
    'https://people.kernel.org/brauner/feed/',
    'https://peppe8o.com/feed/',
    'https://petapixel.com/tag/opensource/feed/',
    'https://phandroid.com/guide/linux/feed/',
    'https://phandroid.com/guide/linux-handheld/feed/',
    'https://pitivi.wordpress.com/feed/',
    'https://pixls.us/feed.xml',
    'https://pl6anet.org/atom.xml',
    'https://planet.archlinux.org/rss20.xml',
    'https://planet.debian.org/rss20.xml',
    'https://planet.documentfoundation.org/atom.xml',
    'https://planet.freedesktop.org/rss20.xml',
    'https://planet.gentoo.org/rss20.xml',
    'https://planet.gnu.org/atom.xml',
    'https://planet.mageia.org/en/?type=atom10',
    'https://planet.mozilla.org/rss20.xml',
    'https://planet.opensuse.org/en/rss20.xml',
    'https://poolp.org/feeds/all.atom.xml',
    'https://portswigger.net/daily-swig/rss',
    'https://postmarketos.org/blog/feed.atom',
    'https://provos.org/index.php?/feeds/index.rss2',
    'https://publicdomainreview.org/rss.xml',
    'https://publicknowledge.org/feed/',
    'https://puri.sm/feed/',
    'https://qmacro.org/autodidactics/feed.xml',
    'https://rafaelc.org/index.xml',
    'https://rasp.io/feed/',
    'https://redhatstackblog.redhat.com/feed/',
    'https://rich0gentoo.wordpress.com/feed/',
    'https://rk.edu.pl/rss/',
    'https://sequoia-pgp.org/index.xml',
    'https://sfconservancy.org/feeds/news/',
    'https://sfconservancy.org/feeds/omnibus/',
    'https://softwarefreedom.org/feeds/blog/',
    'https://solus-project.com/categories/budgie/index.xml',
    'https://sparkylinux.org/feed',
    'https://sysdfree.wordpress.com/rss',
    'https://systemoverlord.com/atom.xml',
    'https://tdarb.org/feed.xml',
    'https://tecadmin.net/feed/',
    'https://technastic.com/category/linux/feed/',
    'https://techtutorialsite.com/feed/',
    'https://thelinuxgurus.com/feed/',
    'https://thenewstack.io/author/agam-shah/feed',
    'https://thenewstack.io/author/jack-wallen/feed/',
    'https://therecord.media/tag/linux/feed/',
    'https://thisdavej.com/feed/',
    'https://thishosting.rocks/feed',
    'https://thishosting.rocks/feed/',
    'https://trendoceans.com/feed/',
    'https://tuxdigital.com/feed/',
    'https://tuxdigital.com/feed/thisweekinlinux-ogg',
    'https://tuxphones.com/rss/',
    'https://ubuntu-mate.org/rss.xml',
    'https://ubuntu-mm.net/feed/',
    'http://suepo.org/public-full-rss-feed',
    'https://unixcop.com/feed/',
    'https://unlimitedhangout.com/feed/',
    'https://us4.campaign-archive.com/feed?u=3bc51216ccfb4ed04928c0608&id=e02609f840',
    'https://us-cert.cisa.gov/ics/advisories/advisories.xml',
    'https://us-cert.cisa.gov/ncas/current-activity.xml',
    'https://venturebeat.com/author/sean-michael-kerner/feed/',
    'https://vitux.com/feed',
    'https://wemakefedora.org/rss20.xml',
    'https://wordpress.org/news/feed/',
    'https://writtendescription.blogspot.com/feeds/posts/default',
    'https://www.2daygeek.com/feed/',
    'https://www.accessnow.org/feed/',
    'https://www.admin-magazine.com/HPC/rss/feed/news',
    'https://www.archlinux.org/feeds/news',
    'https://www.atechtown.com/feed/',
    'https://www.badvoltage.org/feed/ogg/',
    'https://www.binaryemotions.com/feed/',
    'https://www.bitchmedia.org/topic/113/feed',
    'https://www.blackmoreops.com/feed',
    'https://www.blogger.com/feeds/5398236625900904090/posts/default',
    'https://www.claws-mail.org/releases.rss',
    'https://www.cloudbooklet.com/feed/',
    'https://www.cloudlinux.com/component/easyblog/?format=feed&type=rss&Itemid=292/feed',
    'https://www.cnx-software.com/feed/?3',
    'https://www.collabora.com/feed',
    'https://www.consortiuminfo.org/consfeed.php',
    'https://www.consortiuminfo.org/feed/',
    'https://www.coreinfrastructure.org/feed/',
    'https://www.ctrl.blog/feed/rss2',
    'https://www.cyberciti.biz/atom/atom.xml',
    'https://www.cyberciti.com/faq/feed/',
    'https://www.cyberciti.com/feed/',
    'https://www.cyberpratibha.com/feed/',
    'https://www.datafix.com.au/BASHing/BASHing_data.xml',
    'https://www.debian.org/News/news',
    'https://www.defectivebydesign.org/blog/feed',
    'https://www.dignited.com/feed//?s=linux',
    'https://www.dnsknowledge.com/feed/',
    'https://www.elinux.co.in/feed',
    'https://www.elivecd.org/feed/',
    'https://www.facethecompany.de/en/feed/',
    'https://www.fairphone.com/en/feed/',
    'https://www.forbes.com/sites/jasonevangelho/feed/',
    'https://www.fosslicious.com/feeds/posts/default?alt=rss',
    'https://www.fosslife.org/rss.xml',
    'https://www.fosslinux.com/feed',
    'https://www.fossmint.com/rss',
    'https://www.freebsdfoundation.org/feed/',
    'https://www.freebsd.org/news/rss.xml',
    'https://www.fsfla.org/ikiwiki/blogs/lxo/index.en.rss',
    'https://www.geeky-gadgets.com/category/linux/feed/',
    'https://www.ghacks.net/category/linux/feed/',
    'https://www.gimp.org/feeds/rss.xml',
    'https://www.how2shout.com/linux/feed/',
    'https://www.howtodojo.com/feed/',
    'https://www.if-not-true-then-false.com/feed/',
    'https://www.indidea.org/gael/blog/feed/',
    'https://www.internetsociety.org/feed/',
    'https://www.iottechtrends.com/feed/',
    'https://www.itjungle.com/feed/',
    'https://www.itprotoday.com/taxonomy/term/246/feed/rss.xml',
    'https://www.itsfoss.net/feed/',
    'https://www.itwire.com/journalist/sam-varghese.html?format=feed',
    'https://www.iwocl.org/feed/',
    'https://www.janes.com/defence/platforms/air-platforms/rss',
    'https://www.jupiterbroadcasting.com/feed/',
    'https://www.juve-patent.com/feed/',
    'https://www.kali.org/feed',
    'https://www.kdab.com/category/blogs/feed/',
    'https://www.kernel.org/feeds/all.atom.xml',
    'https://www.laquadrature.net/en/feed/',
    'https://www.librebyte.net/en/feed',
    'https://www.linuxcapable.com/feed/',
    'https://www.linuxcloudvps.com/blog/feed',
    'https://www.linuxcloudvps.com/blog/feed/',
    'https://www.linuxforfreshers.com/feeds/posts/default',
    'https://www.linuxformat.com/rss.xml',
    'https://www.linuxjournal.com/news/feed',
    'https://www.linuxjournal.com/node/feed',
    'https://www.linuxlinks.com/feed/',
    'https://www.linuxmadesimple.info/feeds/posts/default',
    'https://www.linux.org/articles/index.rss',
    'https://www.linuxschools.com/wordpress/feed/',
    'https://www.linuxshelltips.com/feed/',
    'https://www.linuxtechi.com/feed',
    'https://www.linuxtechnews.com/feed/',
    'https://www.linuxteck.com/feed/',
    'https://www.linuxtrainingacademy.com/blog/feed/',
    'https://www.linuxtrainingacademy.com/feed/',
    'https://www.linuxtuto.com/feed/',
    'https://www.lisenet.com/feed',
    'https://www.lumendatabase.org/blog_feed.rss',
    'https://www.maketecheasier.com/category/linux-tips/feed/',
    'https://www.makeuseof.com/feed/category/linux/',
    'https://www.managingip.com/rss.xml',
    'https://www.markaicode.com/en/feed/',
    'https://www.neowin.net/news/rss/linux',
    'https://www.nextplatform.com/author/tpmn/feed/',
    'https://www.openmandriva.org/spip.php?page=backend',
    'https://www.openshot.org/blog/feeds/',
    'https://www.ostechnix.com/feed',
    'https://www.paritybit.ca/feeds/sitewide-feed.xml',
    'https://www.pclinuxos.com/?feed=rss2',
    'https://www.pendrivelinux.com/feed/atom/',
    'https://www.pentestpartners.com/feed/',
    'https://www.perl.com/article/index.xml',
    'https://www.pirateparty.org.uk/rss.xml',
    'https://www.postgresql.org/news.rss',
    'https://www.pragmaticlinux.com/feed/',
    'https://www.project-disco.org/category/competition/feed/',
    'https://www.putorius.net/feed',
    'https://www.qt.io/blog/rss.xml',
    'https://www.qubes-os.org/feed.xml',
    'https://www.raspberrypi.org/weekly/feed/',
    'https://www.reallinuxuser.com/feed/',
    'https://www.reddit.com/domain/techrights.org/.rss',
    'https://www.redhat.com/en/rss/blog',
    'https://www.redhat.com//sysadmin/rss.xml',
    'https://www.repair.org/blog?format=rss',
    'https://www.rosehosting.com/blog/feed/',
    'https://www.ruby-lang.org/en/feeds/news.rss',
    'https://www.schneier.com/feed/',
    'https://www.scummvm.org/feeds/rss/',
    'https://www.softwarefreedom.org/feeds/blog/',
    'https://www.softwarefreedom.org/feeds/news/',
    'https://www.suse.com/communities/blog/feed',
    'https://www.techdrivein.com/feeds/posts/default?alt=rss',
    'https://www.techrepublic.com/rssfeeds/topic/open-source/',
    'https://www.tecmint.com/feed/',
    'https://www.telesurenglish.net/rss/analysis.xml',
    'https://www.tfir.io/rss',
    'https://www.theatlantic.com/feed/all/',
    'https://www.the-diy-life.com/rss',
    'https://www.thegeekstuff.com/feed',
    'https://www.ubuntupit.com/feed/',
    'https://www.unifiedpatents.com/insights?format=rss',
    'https://www.unixmen.com/feed',
    'https://www.wine-reviews.net/feeds/posts/default?alt=rss',
    'https://www.xda-developers.com/tag/linux/feed/',
    'https://www.youtube.com/feeds/videos.xml?channel_id=UC3jSNmKWYA04R47fDcc1ImA',
    'https://www.youtube.com/feeds/videos.xml?channel_id=UC5UAwBUum7CPN5buc-_N1Fw',
    'https://www.youtube.com/feeds/videos.xml?channel_id=UCBsltZiJ0ACdbizilpCqscA',
    'https://www.youtube.com/feeds/videos.xml?channel_id=UCd4XwUn2Lure2NHHjukoCwA',
    'https://www.youtube.com/feeds/videos.xml?channel_id=UCEU9D6KIShdLeTRyH3IdSvw',
    'https://www.youtube.com/feeds/videos.xml?channel_id=UCg6gPGh8HU2U01vaFCAsvmQ',
    'https://www.youtube.com/feeds/videos.xml?channel_id=UCld68syR8Wi-GY_n4CaoJGA',
    'https://www.youtube.com/feeds/videos.xml?channel_id=UCS25Y-2DUke9uOU5OtLwwgg',
    'https://www.youtube.com/feeds/videos.xml?channel_id=UCTfabOKD7Yty6sDF4POBVqA',
    'https://www.youtube.com/feeds/videos.xml?channel_id=UCv1Kcz-CuGM6mxzL3B1_Eiw',
    'https://www.youtube.com/feeds/videos.xml?channel_id=UCvA_wgsX6eFAOXI8Rbg_WiQ',
    'https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg',
    'https://www.youtube.com/feeds/videos.xml?channel_id=UCvVE91c-TvmGJj4RW_Ep5JA',
    'https://www.youtube.com/feeds/videos.xml?user=Jakejw93',
    'https://www.youtube.com/feeds/videos.xml?user=JtheLinuxguy',
    'https://www.youtube.com/feeds/videos.xml?user=TheRibalinux',
    'https://xenproject.org/feed/',
    'https://xfce.org/feed?lang=en',
    'https://xkcd.com/atom.xml',
    'http://techrights.org/wiki//index.php?title=Special:RecentChanges&feed=atom',
    'http://thatlinuxthing.blogspot.com/feeds/posts/default',
    'http://thettablog.blogspot.com/feeds/posts/default?alt=rss',
    'http://tipsonubuntu.com/feed/',
    'http://tirania.org/blog/miguel.rss2',
    'http://ubuntuhak.blogspot.com/feeds/posts/default',
    'http://ubuntuhandbook.org/index.php/feed',
    'http://ubuntu-news.org/feed/',
    'http://ubuntunext.com/feed',
    'http://ubuntupodcast.org/feed',
    'http://ubuntupodcast.org/feed/podcast/',
    'http://ultimateedition.info/feed/',
    'http://www.2daygeek.com/feed',
    'http://www.bristowsupc.com/feed.ashx?id=2955624a-9860-4f57-acdf-2c3deb5b514a',
    'http://www.consortiuminfo.org/feed.php',
    'http://www.cyberciti.biz/feed/',
    'http://www.datamation.com/rss.xml',
    'http://www.debugpoint.com/feed/rss/',
    'http://www.dedoimedo.com/rss_feed.xml',
    'http://www.drydeadfish.co.uk/feed/',
    'http://www.elinuxbook.com/feed',
    'http://www.enterprisersproject.com/rss',
    'http://www.epo.org/rss/news.xml',
    'http://www.ericmhuffman.com/feeds/posts/default?alt=rss',
    'http://www.fosspatents.com/feeds/posts/default',
    'http://www.fsf.org/news/RSS',
    'http://www.goodbyemicrosoft.net/e107_plugins/rss_menu/rss.php?news.2',
    'http://www.hecticgeek.com/feed/',
    'http://www.ip-watch.org/feed/',
    'http://www.jonobacon.org/feed/',
    'http://www.kalitutorials.net/feeds/posts/default',
    'http://www.kde.org/dotkdeorg.rdf',
    'http://www.linuxandubuntu.com/feed/rss',
    'http://www.linuxbuzz.com/rss',
    'http://www.linux.com/rss/feeds.php',
    'http://www.linuxforfreshers.com/feeds/posts/default?alt=rss',
    'http://www.linuxinsider.com/perl/syndication/rssfull.pl',
    'http://www.linux-magazine.com/rss/feed/lmi_full',
    'http://www.linuxquestions.org/syndicate/lqnews.rss',
    'http://www.linuxtechi.com/feed',
    'http://www.linuxtechi.com/feed/',
    'http://www.linuxvoice.com/podcast_ogg.rss',
    'http://www.makululinux.com/wp/feed/',
    'http://www.managingip.com/RSS.aspx?FeedID=2859',
    'http://www.montanalinux.org/rss.xml',
    'http://www.ocsmag.com/feed/',
    'http://www.opensource.org/blog/feed',
    'http://www.patentprogress.org/feed/',
    'http://www.phoronix.com/rss.php',
    'http://www.prwatch.org/node/feed',
    'http://www.softwarefreedom.org/feeds/blog/',
    'http://www.stephankinsella.com/feed/kinsella-on-liberty/',
    'http://www.trinitydesktop.org/rss.php',
    'http://www.ubuntubuzz.com/feeds/posts/default',
    'http://www.ubuntugeek.com/feed/',
    'http://www.webupd8.org/feeds/posts/default',
    'http://www.zdnet.com/topic/linux/rss.xml',
    'http://www.zenwalk.org/feeds/posts/default?alt=rss',
    'http://xmodulo.com/feed',
    'http://xubuntu.org/blog/feed',
]

print ("        Starting ☞ ", end = '')
print(datetime.now())
for feed in feedlist:
    try:
        feed = feedparser.parse(feed)
    except:
        print('skipping')
    try:
        print ("       ███████ ███████ ███████ ☞ ", end = '')
        print(feed.href)
    except:
        print('no title')
    # print(feed.entries[0].keys())
    for entry in feed.entries:
        if 'title' in entry:
            title = entry.title
        else:
            title = feed.feed.title
        if 'description' in entry:
            content = entry.description
        else:
            # content = feed.feed.description
            content =  'null'
        if 'link' in entry:
            link = entry.link
        else:
            link = feed.feed.link
        if 'published' in entry:
            published = entry.published
        else:
            # published = feed.feed.published
            published = 'null'
        # adatetime=dp.parse(published)
        # print(adatetime)
        # convertedtime = time.strftime ("%s",adatetime)
        # print(convertedtime)
        # t = time.strptime(print(adatetime),"%Y-%B-%D %H:%M:%S%z")
        try:
            current = time.strftime ("%s",time.localtime())
            present = datetime.now()
            try:
                t = time.strptime(published,"%a, %d %b %Y %H:%M:%S %z")
            except:
                t = time.strptime(published,"%a, %d %b %Y %H:%M:%S %Z")
            sevendays = 86400*2
            if int(current) - time.mktime(t) < sevendays:
                # print("less than 7 days")
                # print(present
                # print(t)
                # print(current)
                print('')
                print('█████ ', end = '')
                print(feed.href, end = '')
                print('                 ██████████████████████ ', end = '')
                print(published, end = '')
                print('     ███████   ', end = '')
                print(title)
                print('')
                print(title, end = '')
                print (" ☞ ", end = '')
                print(link)
                print ("
  • ", end = '') print(title, end = '') print ("
    ", end = '') print(content) print ("
  • ", end = '') print (" ") print (" ") print (" ") except: # print("Cannot process feed") print('')

    Desktop-Utils/mp4-to-gif.sh

    VIDEO_FILE='ipfs-lights-sbc'
    echo Processing $VIDEO_FILE
    cd ~
    rm ~/intermediate.gif
    rm ~/intermediate2.gif
    rm $VIDEO_FILE.gif
    
    ffmpeg \
    	-ss 0 \
    	-t 10 \
    	-i $VIDEO_FILE.mp4 \
    	-vf "select=not(mod(n\,10)),fps=2,scale=480:-1:\
    	flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \
    	-r 16 -filter:v "setpts=0.1*PTS"  \
    	-loop 0 ~/intermediate.gif 
    #           sleep 2
    
    ffmpeg \
    	-i ~/intermediate.gif \
    	-i ~/videos-techrights/mogz-video-poster-4-small.png  \
    	-filter_complex "[1]format=rgba,colorchannelmixer=aa=0.7[logo];\
    		[0][logo]overlay=0:H-h--1:format=auto" \
    	-codec:a copy \
    	~/intermediate2.gif 
    
    date=$(date +%d-%m-%Y)
    ffmpeg \
    	-i ~/intermediate2.gif  \
    	-vf "drawtext=fontfile=/home/roy/Main/Misc/Work/Sirius/sirius_site/templates/fonts/DroidSerif-BoldItalic-webfont.ttf:text='$date':x=520:y=446:fontsize=20:fontcolor=black:box=1:boxcolor=white@0.2: boxborderw=5,drawtext=fontfile=/home/roy/Main/Misc/Work/Sirius/sirius_site/templates/fonts/distth_-webfont.ttf:text='$VIDEO_FILE':x=30:y=0+20*t::fontsize=34:fontcolor=white:box=1:boxcolor=black@0.6: boxborderw=5, drawtext=text='timestamp: %{pts \: hms}': x=490: y=30: fontsize=16:fontcolor=yellow@0.9: box=1: boxcolor=black@0.6: boxborderw=5" \
    	-c:a copy $VIDEO_FILE.gif 
    

    Desktop-Utils/view_irc-news.sh

    # clear
    tail  -n 150 irc-status.txt \
    	| cut -c18-100 \
    	| GREP_COLOR='01;36'  grep --color=always 'techrights-news\|$'  \
    	| grep -i --color=always 'schestowitz\|$'   \
    	| grep -v '<=='   \
    	| sed 's/>	/ /' \
            | grep techrights-news  \
            | uniq \
    | perl -e 'print reverse <>' \
    | sed 's/techrights-news/TR/' \
    | sed 's/● NEWS ●/N/'
    

    Desktop-Utils/monitor_irc-news.sh

    watch -n 7  --color ./view_irc-news.sh
    

    Desktop-Utils/flatten.sh

    grep "date" 09.html  | sort -u  | sed -e "s/a hre/li>
    /<\/a><\/h5><\/li>/" >> feedoutline.html

    Desktop-Utils/decruft.sh

    sed ~/rss-tools/feedlist2.html \
        -e 's/?bia_source=rss//' \
        -e 's/?utm_source=h2v&utm_medium=rss_feed&utm_campaign=rss//' \
        -e 's/?utm_source=h2v&utm_medium=rss_feed&utm_campaign=rss//' \
        -e 's/?utm_source=social&utm_medium=feed&utm_campaign=rssfeed//' \
        -e 's/?ref=rss&utm_medium=rss&utm_source=rss_feed//' \
        -e 's/?utm_source=rss&utm_campaign=rss&utm_medium=links//' \
        -e 's/?bia_source=rss//' \
        -e 's/?origin=rss//' \
        -e 's/#ftag=RSSbaffb68//' \
        -e 's/#ref=rss//' \
        -e 's/?cmp=rss//' \
        -e 's/?utm_source=rss&utm_medium=feed&utm_campaign=rss_feed//' \
        -e 's/?maca=en-rss-en-all-1573-xml-atom//' \
        -e 's/?src=rss//' \
        -e 's/?utm_medium=rss&utm_source=site-feed&utm_campaign=rss//' \
        -e 's/?utm_source=feed//' \
        -e 's/?icid=rss//' \
     >> ~/rss-tools/RSS.html
    

    Desktop-Utils/intro.list

    file intro-sketch-new.mp4
    file intro-beach-new.mp4
    file intro-purple-new.mp4
    file techrights-sunrise-new.mp4
    file intro-new.mp4
    file intro-waves-new.mp4
    file intro-swoosh-new.mp4
    file intro-night-new.mp4
    file skyline-intro-new.mp4
    file art-intro-new.mp4
    file monitoring-intro-new.mp4
    file bridge-intro-new.mp4
    file sky-intro-new.mp4
    file paper-intro-new.mp4
    file road-intro-new.mp4
    file seashore-intro-new.mp4
    file top-down-intro-new.mp4
    file shoes-intro-new.mp4
    file sparkle-intro-new.mp4
    file running-intro-new.mp4
    file computer-intro-new.mp4
    file water-intro-new.mp4
    file car-intro-new.mp4
    file dirty-beach-intro-new.mp4
    file bridges-intro-new.mp4
    file mills-intro-new.mp4
    file router-intro-new.mp4
    file walking-intro-new.mp4
    file floor-intro-new.mp4
    file rocks-intro-new.mp4
    file narwal-intro-new.mp4
    file newspaper-intro-new.mp4
    file red-new.mp4
    file horror-new.mp4
    file amber-new.mp4
    file bench-new.mp4
    file people-new.mp4
    file letters-new.mp4
    file trees-new.mp4
    file man-sitting-new.mp4
    file indie-new.mp4
    file Techrights-new.mp4
    

    Desktop-Utils/clean-irc-logs.sh

    # Techrights-specific, free up disk space/clutter by removing stale/old files
    # Author: Roy Schestowitz
    # Note: run MANUALLY to check nothing gets lumped in
    
    ls irc-log-social-*
    rm irc-log-social-*
    
    ls irc-log-techrights-*
    rm irc-log-techrights-*
    
    ls  irc-log-techbytes-*
    rm  irc-log-techbytes-*
    
    ls  irc-log-0*
    rm  irc-log-0*
    
    ls  irc-log-1*
    rm  irc-log-1*
    
    ls  irc-log-2*
    rm  irc-log-2*
    
    ls  irc-log-3*
    rm  irc-log-3*
    
    ls techrights-20*
    rm techrights-20*
    
    ls 2022*.txt
    rm 2022*.txt
    

    Desktop-Utils/outro.list

    file outro-palawan-new.mp4
    file outro-new.mp4
    file outro-space-new.mp4
    file outro-office-new.mp4
    file outro-island-new.mp4
    file outro-thank-you-new.mp4
    file outro-subway-new.mp4
    file Techrights-Arrows-new.mp4
    file retro-outro-new.mp4
    file space-outro-new.mp4
    file techno-outro-new.mp4
    file clouds-outro-new.mp4
    file industrial-outro-new.mp4
    file blobs-outro-new.mp4
    file leaves-outro-new.mp4
    file keyboard-outro-new.mp4
    file circle-outro-new.mp4
    file terrain-outro-new.mp4
    file white-circle-outro-new.mp4
    file mechanics-outro-new.mp4
    file travel-outro-new.mp4
    file forest-outro-new.mp4
    

    Desktop-Utils/search-news.sh

    #!/bin/bash
    # Licence: Public Domain, feel free to share as you see fit
    #
    # Author: Roy Schestowitz
    
    echo
    echo
    echo             ====================================== Input string: $1
    echo
    echo
    STRING=$1
    
    grep -A0 -B0 --ignore-case  --no-group-separator  -- $STRING /home/roy/rss-tools/outlines.html
    

    Desktop-Utils/process-latest-post.sh

    #!/bin/bash
    
    # 2021-11-26
    
    
    # Old, crude version:
     LATESTURL=$(curl -s http://techrights.org/?stories | grep "post-" | cut -d \" -f 2,3 | tr -d post- | cut -d \" -f 1 | head -n 1 )
    
    # LATESTURL=$(curl -s http://techrights.org/?stories \
    #         | awk '$2~/post-/{
    #                 sub(/^.*post-/,"",$2);
    #                 sub(/".*$/,"",$2);
    #                 print $2;
    #                 exit}')
    
    LATEST="http://techrights.org/?p="$LATESTURL
    
    Old, crude version:
    RAW=$(curl -i $LATEST -L | egrep -A 10 '301 Moved Permanently|302 Found' | grep 'Location' | awk -F': ' '{print $2}' | tail -1)
    
    # RAW=$(curl --silent --head "http://techrights.org/?p=$LATEST" \
    #        | awk '/Location/ { print $2 } ')
    
    # sanitise the input, just in case:
    
    # FINAL=${RAW//[^a-zA-Z0-9]/}
    FINAL="${RAW/_/}" && \
    FINAL="${FINAL// /_}" && \
    FINAL="${FINAL,,}"
    
    # go to correct workspace again, just in case
    qdbus org.kde.KWin /KWin setCurrentDesktop 3
    
    # open in the Web browser
    falkon $FINAL
    
    echo -n 'Progressing with URL '
    echo $FINAL
    #echo -n '"' > ~/latest-blog.txt
    echo -n $FINAL > ~/latest-blog.txt  # keep in file also
    # echo -n '"' >> ~/latest-blog.txt
    # echo -n $FINAL | xclip
    #cat  ~/latest-blog.txt | tr -d '\n' | xclip
    tail -n 1 ~/latest-blog.txt | tr -d '\r' | xclip
    # cat  ~/latest-blog.txt | tr -d '\n' | xclip  -selection clipboard
    # sleep 2
    
    # bash /home/roy/url.sh
    
    
    
    URL=$(xclip -o)
    GEM=$(echo $URL | sed 's|http://|gemini://gemini.|')
    echo '' > ~/clip.html       #clear file
    TITLE=$(wget -qO- $URL | perl  -0777 -ne 'print $1 if /\s*(.*?)\s*<\/title/si')
    
    echo -n '
  • ' >> ~/clip.html \ && echo -n $TITLE >> ~/clip.html \ && echo -n '
    ' >> ~/clip.html echo '\n--------' >> ~/clip.html # printf '%(/%Y/%m/%d/)T' >> ~/clip.html echo -n $TITLE >> ~/clip.html \ && echo -n ' ⚓ ' >> ~/clip.html \ && echo -n $URL >> ~/clip.html \ >> ~/clip.html echo -n ' | ♾ Gemini address: ' >> ~/clip.html \ && echo -n $GEM >> ~/clip.html tail -n1 ~/clip.html \ | sed -e 's/#tuxmachines/#GNU #Linux #TuxMachines/' \ -e 's/—/ - /' \ -e 's/—/ - /' \ -e 's/—/ - /' \ -e 's/'/’/' \ -e 's/'/’/' \ -e 's/–/ - /' \ -e 's/–/ - /' \ -e 's/»/ - /' \ -e 's/'/’/' \ -e 's/"/"/' \ -e 's/"/"/' \ -e 's/&/&/' \ -e 's/&/&/' \ -e 's/'/’/' \ -e 's/’/’/' \ -e 's/’/’/' \ -e 's/‘/’/' \ -e 's/–/ - /' \ -e 's/–/ - /' \ -e 's/»/ - /' \ -e 's/'/’/' \ -e 's/"/"/' \ -e 's/—/"/' \ -e 's/&/\&/' \ -e 's/&/\&/'\ -e 's/…/.../'\ | xclip IRC=$(xclip -o) #echo $IRC echo $IRC > ~/Desktop/Text_Workspace/images/ii-1.8/techrights3/irc.techrights.org/#boycottnovell-social/in echo $IRC > ~/Desktop/Text_Workspace/images/ii-1.8/techrights3/irc.techrights.org/#techrights/in echo $IRC > ~/Desktop/Text_Workspace/images/ii-1.8/techrights3/irc.techrights.org/#tuxmachines/in # tests/stale: # # echo -n 'Progressing with URL ' # echo $FINAL # #echo -n '"' > ~/latest-blog.txt # echo -n $FINAL > ~/latest-blog.txt # keep in file also # # echo -n '"' >> ~/latest-blog.txt # # echo -n $FINAL | xclip # #cat ~/latest-blog.txt | tr -d '\n' | xclip # echo -n "$(<~/latest-blog.txt)" | tail -n1 | tr -d '\r' | xclip # # cat ~/latest-blog.txt | tr -d '\n' | xclip -selection clipboard # # sleep 2 # bash /home/roy/url.sh
  • Desktop-Utils/search-news-inverted.sh

    #!/bin/bash
    # Licence: Public Domain, feel free to share as you see fit
    #
    # Author: Roy Schestowitz
    #
    # echo Input string: $1
    STRING=$1
    
    grep -A0 -B0 --ignore-case  --no-group-separator -v  -- $STRING /home/roy/rss-tools/outlines-subset.html
    

    Desktop-Utils/feedlist.sh

    python3 ./feedlist.py > feedlist2.html
    

    Desktop-Utils/outlines.sh

    date >> outlines.html
    cat feedoutline.html | sort -u | uniq |  \
         sed  -e 's/?bia_source=rss//' \
        -e 's/?utm_source=h2v&utm_medium=rss_feed&utm_campaign=rss//' \
        -e 's/?utm_source=h2v&utm_medium=rss_feed&utm_campaign=rss//' \
        -e 's/?utm_source=social&utm_medium=feed&utm_campaign=rssfeed//' \
        -e 's/?ref=rss&utm_medium=rss&utm_source=rss_feed//' \
        -e 's/?utm_source=rss&utm_campaign=rss&utm_medium=links//' \
        -e 's/?bia_source=rss//' \
        -e 's/?origin=rss//' \
        -e 's/#ftag=RSSbaffb68//' \
        -e 's/#ref=rss//' \
        -e 's/?cmp=rss//' \
        -e 's/?maca=en-rss-en-all-1573-xml-atom//' \
        -e 's/?src=rss//' \
        -e "s/   //" \
        -e 's/?utm_medium=rss&utm_source=site-feed&utm_campaign=rss//' \
        -e 's/?utm_source=feed//' \
        -e 's/?icid=rss//'  \
        -e 's#https://www.youtube.com#https://www.yewtu.be#' | \
        -e 's## [Older] #' |  \
         sed 's/  / /g' |  \
        grep -v  'https://news.google.com' | \
        grep -v  'https://news.tuxmach' | \
        grep -v  'media.libreplanet' | \
        grep -v 'rssfeeds.usatoday' | \
        grep -v 'www.sydsvenska' | \
        grep -v 'www.svd.se' | \
        grep -v 'oshogbo.vexillium' | \
        grep -v 'nrk.no' | \
        grep -v 'polarhive.ml' | \
        grep -v 'libreboot.org' | \
        grep -v 'sirupsen.com' | \
        grep -v 'www.hd.se' | \
        grep -v 'www.digi.no'  \
     >> outlines.html
    

    Desktop-Utils/url.sh

    # !/bin/bash
    # mouse-attached function to help with Daily Links
    # Public Domain, Roy Schestowitz
     
    URL=$(xclip -o)
    
    # alternatives and tests below
    #  URL=$(cat  ~/latest-blog.txt | tr -d '\n' )
    #  URL=$(sed 1!d ~/latest-blog.txt)
    #  URL=$(printf "%s" $(sed 1!d ~/latest-blog.txt))
    #  URL=$(echo -n "http://techrights.org/2021/11/26/whonix-16-0-3-7/
    # " )
    
    # process URLs/aliases
    
    #gemini URL
    GEM=$(echo $URL | sed 's|http://|gemini://gemini.|')
    
    # youtube
    VIDEO=$(echo $URL | sed 's|https://www\.youtube\.com|https://yewtu.be|')
    URL=$(echo $VIDEO | sed 's|https://youtube\.com|https://yewtu.be|')
    
    # youtube shortcut
    VIDEO=$(echo $URL | sed 's|https://www\.youtu\.be|https://yewtu.be|')
    URL=$(echo $VIDEO | sed 's|https://youtu\.be|https://yewtu.be|')
    
    # twitter
    TWEET=$(echo $URL | sed 's|https://www\.twitter\.com|https://nitter.eu|')
    URL=$(echo $TWEET | sed 's|https://twitter\.com|https://nitter.eu|')
    
    echo '' > ~/clip.html       #clear file
    
    # debugging:
    # echo $URL
    # wget $URL
    
    TITLE=$(wget -qO- $URL | \
        perl  -0777 -ne 'print $1 if /\s*(.*?)\s*<\/title/si' | \
        sed -e 's/–/-/'  -e  's/̵/-/'  -e  's/'/’/'  -e  's/·/-/'   -e   's/»/-/'   -e   's/"/"/'    -e  's/&/-/'      -e  "s/“/'/"    -e  "s/–/-/"    -e  "s/”/'/"     -e  "s/'/'/"      -e  's/«/-/'      -e  's/-/-/'      -e  "s/’/'/"      -e  "s/‘/'/"      -e  "s/'/'/")
    
    DOMAIN=$(echo -n "$URL" | \
    	sed -e 's|[^/]*//\([^@]*@\)\?\([^:/]*\).*|\2|' \
    	    -e 's/www.//' \
    	    -e 's/blogs.//' \
    	    -e 's/blog.//' \
    	| awk -F. '{print $1}')
    
    echo -n '
  • ' >> ~/clip.html \ && echo -n $TITLE >> ~/clip.html \ && echo '
    ' >> ~/clip.html echo '\n--------' >> ~/clip.html # printf '%(/%Y/%m/%d/)T' >> ~/clip.html SITENAME=$(grep $DOMAIN ~/lib/Links/CamelCase.pm | cut -d\" -f4 | tail -n 1) if [ "$DOMAIN" = "yewtu" ]; then echo -n '' >> ~/clip.html else echo -n $TITLE >> ~/clip.html \ && echo -n ' ⚓ ' >> ~/clip.html \ && echo -n $URL >> ~/clip.html \ && echo -n ' ䷉ Source: ' >> ~/clip.html \ && echo -n $SITENAME >> ~/clip.html \ && echo -n " | ♾ Gemini address: gemini://gemi.dev/cgi-bin/waffle.cgi/view?" >> ~/clip.html \ && echo -n "${URL/:/"%3A"}" >> ~/clip.html fi if [ "$DOMAIN" = "techrights" ]; then echo -n ' | ♾ Gemini address: ' >> ~/clip.html \ && echo -n $GEM >> ~/clip.html else # echo -n ' | more in http://schestowitz.com' >> ~/clip.html \ # && echo -n $(date +"/%Y/%m/%d/") >> ~/clip.html \ # && echo -n '#latest' >> ~/clip.html echo -n '' >> ~/clip.html fi if [ "$DOMAIN" = "yewtu" ]; then echo -n $TITLE >> ~/clip.html \ && echo -n ' ⚓ ' >> ~/clip.html \ && echo -n $URL >> ~/clip.html \ && echo -n ' | ♾ Gemini address: ' >> ~/clip.html \ && echo -n 'gemini://auragem.space/youtube/video/' >> ~/clip.html \ && echo -n ${URL#*=} >> ~/clip.html else echo -n '' >> ~/clip.html fi # echo '\n--------' >> ~/clip.html head -n2 ~/clip.html | xclip -selection clipboard tail -n1 ~/clip.html \ | sed -e 's/#tuxmachines/#GNU | Linux | TuxMachines/' \ -e 's/ phoronix/ Phoronix | Kernel | Linux 🐧/' \ -e 's/ fsf / FSF | GNU | FreeSW | Software Freedom /' \ -e 's/ gamingonlinux/ Gaming On Linux | GNU | Linux | Games/' \ -e 's/ gnu/ FSF | GNU | FreeSW | SoftwareFreedom/' \ -e 's/ cnx-software/ Linux | GNU | Hardware | cnxsoftware/' \ -e 's/ linuxlinks/ LinuxLinks | GNU | Linux | FreeSW /' \ -e 's/ linuxhint/ LinuxHint | GNU | Linux | FreeSW 🐧/' \ -e 's/ documentfoundation/ Documentfoundation | OpenDocument | freesw | libreoffice | odf/' \ -e 's/ techrights/ Techrights | GNU | Linux | FreeSW/' \ -e 's/ itsfoss/ ItsFOSS | GNU | Linux | Freesw/' \ -e 's/ gnome/ GNOME | GNU | Linux | GTK/' \ -e 's/ redhat/ Red Hat | ICBM | GNU | Linux/' \ -e 's/ lwn/ LWN | Kernel | Linux/' \ -e 's/LWN.net/LWN/' \ -e 's/The IPKat/ IPKat/' \ -e 's/• The Register/- El Reg/' \ -e 's/ FOSS Patents: / Florian Müller: /' \ -e 's/ fedora/ Fedora | RedHat | IBM | GNU | Linux/'\ -e 's/ opensource/ FreeSW | RedHat | IBM | GNU | Linux/'\ -e 's/ omgubuntu/ OMGUbuntu | GNU | Linux/' \ -e 's/ youtube/ Video | Google | YouTube/' \ -e 's/ debian/ Debian | GNU | Linux | FreeSW 🐧/' \ -e 's/ how to/#HowTo/' \ -e 's/ How To/#HowTo/' \ -e 's/ arduino/ Arduino | Hardware | OpenHardware | Hacking/' \ -e 's/ linuxjournal/ LinuxJournal | GNU | Linux/' \ -e 's/ linuxreviews/ LinuxReviews | GNU | Linux/' \ -e 's/ ubuntupit/ UbuntuPIT | GNU | Linux/' \ -e 's/ linuxconfig/ LinuxConfig | GNU | Linux/' \ -e 's/ ubuntuhandbook/ UbuntuHandbook | FreeSW | GNU | Linux/' \ -e 's/ linux-magazine/ LinuxMagazine | FreeSW | GNU | Linux/' \ -e 's/ tecmint/ TecMint FreeSW | GNU | Linux/' \ -e 's/ howtoforge/ HowToForge | GNU | Linux/' \ -e 's/ ostechnix/ OSTechNix | GNU | Linux | FreeSW /' \ -e 's/ linuxhandbook/ LinuxHandbook | GNU | Linux/' \ -e 's/ debugpoint/ DebugPoint | GNU | Linux/' \ -e 's/ tuxdigital/ TuxDigital | GNU | Linux/' \ -e 's/ itsubuntu/ ItsUbuntu | GNU | Linux/' \ -e 's/ linuxgizmos/ LinuxGizmos | Hardware | Devices | GNU | Linux/' \ -e 's/ linuxuprising/ LinuxUprising | FreeSW | GNU | Linux/' \ -e 's/ ubuntubuzz/ UbuntuBuzz | GNU | Linux/' \ -e 's/ linuxsmartphones/ | LinuxSmartphones | Mobile | GNU | Linux/' \ -e 's/—/ - /' \ -e 's/—/ - /' \ -e 's/—/ - /' \ -e 's/ fossbytes/ #FossBytes | GNU | Linux/' \ -e 's/ mozilla/ Mozilla | WWW | FreeSW | Firefox | Internet/' \ -e 's/How to/How to/' \ -e 's/ yewtu/ Video | Invidious | Multimedia /' \ -e 's/'/’/' \ -e 's/'/’/' \ -e 's/–/ - /' \ -e 's/–/ - /' \ -e 's/»/ - /' \ -e 's/'/’/' \ -e 's/"/"/' \ -e 's/"/"/' \ -e 's/&/&/' \ -e 's/&/&/' \ -e 's/today’s howtos/Today’s HowTos | UNIX /' \ -e 's/Opensource.com//' \ -e 's/today’s leftovers/Today’s Tux Machines Leftovers/' \ -e 's/Android Leftovers/Google Android Leftovers/' \ -e 's/Today in Techrights/Today in #Techrights/' \ -e 's/'/’/' \ -e 's/’/’/' \ -e 's/’/’/' \ -e 's/‘/’/' \ -e 's/–/ - /' \ -e 's/–/ - /' \ -e 's/»/ - /' \ -e 's/'/’/' \ -e 's/"/"/' \ -e 's/—/"/' \ -e 's/&/\&/' \ -e 's/&/\&/'\ -e 's/…/.../'\ -e 's/Programming Leftovers/Programming Leftovers/'\ -e 's/IRC Proceedings/𝘛𝘦𝘤𝘩𝘳𝘪𝘨𝘩𝘵𝘴 IRC Proceedings/'\ -e 's/| Tux Machines /• Tux Machines /'\ -e 's/| Techrights /• Techrights /' \ | xclip notify-send --app-name=konversation -t 3500 -u low $DOMAIN SUMMARY=$(wget -O- -q $URL | xmllint --html --xpath 'string(/html/head/meta[@name="description"]/@content)' - 2>/dev/null) # mousepad ~/clip.html if [ -z "$SUMMARY" ]; then notify-send --app-name=konversation -t 5500 \ -u low '•●• •●• •●• •●• ● EMPTY SUMMARY!!!' else sleep 5 notify-send --app-name=konversation -t 5500 \ -u low 'SUMMARY READY!!! ●●●' echo -n $SUMMARY | xclip -selection clipboard fi # now we make a template for TuxMachines, just in case it comes in handy # start with clean file: echo $TITLE | sed \ -e 's/—/ - /' \ -e 's/—/ - /' \ -e 's/—/ - /' \ -e 's/'/’/' \ -e 's/'/’/' \ -e 's/–/ - /' \ -e 's/–/ - /' \ -e 's/»/ - /' \ -e 's/'/’/' \ -e 's/"/"/' \ -e 's/"/"/' \ -e 's/&/&/' \ -e 's/&/&/' \ -e 's/'/’/' \ -e 's/’/’/' \ -e 's/’/’/' \ -e 's/‘/’/' \ -e 's/–/ - /' \ -e 's/–/ - /' \ -e 's/»/ - /' \ -e 's/'/’/' \ -e 's/"/"/' \ -e 's/—/"/' \ -e 's/&/\&/' \ -e 's/&/\&/'\ -e 's/…/.../'\ > ~/tux-text.txt # append the rest as follows: echo "" >> ~/tux-text.txt # echo '

    > ~/tux-text.txt # echo 'width="" height="" alt="" /> ' \ # >> ~/tux-text.txt echo "" >> ~/tux-text.txt echo '

    ' >> ~/tux-text.txt echo "" >> ~/tux-text.txt echo -n '> ~/tux-text.txt echo -n ' title="' >> ~/tux-text.txt echo -n $SITENAME >> ~/tux-text.txt echo -n '" href="' >> ~/tux-text.txt echo -n $URL >> ~/tux-text.txt echo -n '">Read on' >> ~/tux-text.txt cat ~/tux-text.txt | xclip

  • Desktop-Utils/daily-links.sh

    # !/bin/bash
    # Keep up to date with Git repos (TuxMachines, Techrights)
    # and Links
    #
    # Public Domain, Roy Schestowitz
    
    # ssh-agent bash
    # ssh-add /home/roy/.ssh/tr-links
    
    # Run real-time notifier, before even pulling anything
    killall mosquitto_sub
    ~/Desktop/Text_Workspace/images/roy-monitor-git-with-mqtt/roy-monitor-git-with-mqtt/monitor-git.sh | grep -v 'updated'  >> ~/remote-status.txt &
    
    # Also go in a loop, showing status
    while :
    do
    	echo -n " ┃ Links: " >> ~/remote-status.txt
    # Deprecated parsing:
    #	ssh  links@ipfs.techrights.org "ls -la Links/m2022-09" | tail -n 1 | cut -b30-79 | cut -f5 -d" "  | cut -f3-5 -d"-" >> ~/remote-status.txt
    # 	ssh  links@ipfs.techrights.org "ls -la Links/m2022-09" | tail -n 1 | cut -b10-79 | cut -f15 -d" " >> ~/remote-status.txt
    ssh  links@ipfs.techrights.org "ls -la Links/m2022-09/other*" | tail -n 1 |  cut -f3 -d"/"  >> ~/remote-status.txt
    	sleep 300 # pause specified for polling
    # Deprecated approach:
    #	ssh git@git-tr "git-upload-pack '/home/git/tr-git'"
    	cd ~/Git  # to be sure correct directory
            echo -n "Git TR: " >> ~/remote-status.txt
    	git pull  --log -n --stat | grep -v "Already up to date." >> ~/remote-status.txt
    	git log -1 --format="%at" | xargs -I{} date -d @{} +"%F %H:%M" | sed -z "s/\n//g" >> ~/remote-status.txt
            cd ~/Git-TM/tuxmachines.org/tuxmachines.org  # to be sure again again
            echo -n " ┃ Git TM: " >> ~/remote-status.txt
            git pull  --log -n --stat | grep -v "Already up to date." >> ~/remote-status.txt
            git log -1 --format="%at" | xargs -I{} date -d @{} +"%F %H:%M" | sed -z "s/\n//g" >> ~/remote-status.txt
    done
    

    Desktop-Utils/post-ff.sh

    # !/bin/bash
    
    # Post-FF: Used to be Firefox, now used with Konqueror
    # (named this way for legacy reasons) though can be adapted for
    # any Web browser
    #
    # Summary: Post to social control media.
    # Licence: Public Domain, 2018-2021.
    #
    # Note: Very much if not most of the below code (scripts/bash)
    # is commented out and deprecated due to changes in sites.
    # Preserved for legacy purposes or examples to be potentially reused.
    #
    # Why it's shared: The automation is limited to making local copies,
    # relaying to IRC, and posting in legitimate sites. It's all done
    # manually, but the distribution to several sources is better off
    # streamlined. Others might find it useful.
    #
    # Some file paths may be specific to the sole (known) user of the
    # program, which is attached to a mouse button using xbindkeys.
    # The screen layout assumed is two 1080px monitors, one on top of
    # the other.
    # There is room for refactoring in the future, but that depends
    # on how many people actually use such programs
    
    # ===============================================================
    
    # Old Pleroma:
    #
    # sleep 4
    # # # sleep 2
    # xdotool search "plerom" windowactivate --sync key -delay 250 ctrl+l
    # # sleep 2
    
    # xdotool search "plerom" windowactivate --sync key
    # xdotool search "plerom" windowactivate --sync key  Tab
    
    # # sleep 2
    # xdotool search "plerom" windowactivate --sync key  Tab
    # xdotool search "plerom" windowactivate --sync key  Tab
    # xdotool search "plerom" windowactivate --sync key  Tab
    
    # # sleep 2
    # xdotool search "plerom" windowactivate --sync key  Tab
    # xdotool search "plerom" windowactivate --sync key  Tab
    # xdotool search "plerom" windowactivate --sync key  Tab
    
    
    # # sleep 2
    # xdotool search "plerom" windowactivate --sync key -delay 250
    
    
    #  xdotool search "plerom" windowactivate --sync key  Tab
    #  xdotool search "plerom" windowactivate --sync key  Tab
    #  xdotool search "plerom" windowactivate --sync key  Tab
    #
    #  search "plerom" windowactivate --sync key -delay 250
    
    
    # xdotool search "plerom" windowactivate --sync key -delay 250
    # # # sleep 2
    #   # # sleep 1
    #   xdotool search "Join" windowactivate --sync key  tech
    #   # # sleep 2
    #   xdotool search "Join" windowactivate --sync key
    #
    #   xdotool search "Join" windowactivate --sync key  ctrl+v
    
    # ===============================================================
    
    xd=18
    
    qdbus org.kde.KWin /KWin setCurrentDesktop 1  # go to correct workspace, just in case
    
    xdotool getmouselocation --shell
    eval $(xdotool getmouselocation --shell)
    # echo $X $Y
    # Uncomment the above to debug
    
    xinput disable ${xd}
    # Turn off external mouse or mousing to avoid conflict
    
    tmp=$(mktemp --suffix "-post") || exit 1
    awk -F',' '{printf("%s\t%d\n",$1,$2+1)}' ~/file1.txt \
        > ${tmp} && cp ${tmp} ~/file1.txt
    rm ${tmp}
    
    export number=$(wc -w < ~/file1.txt)
    export remainder=$(( number % 10 ))
    export remainderbig=$(( number % 3 ))
    # Dirty hacks to keep running tallies
    
    #
    #                     if ((remainder))
    #                     then
    #                             echo ''
    #                     else
    #
    #                     #        sleep 1.0
    #                     #        xdotool  mousemove 1800 0
    #                     #        xdotool click 1
    #                         xdotool mousemove 1800 5
    #                         xdotool click 1
    #                         xdotool key --delay 1 F5
    #
    #                         if ((remainderbig))
    #                             then
    #                             #        xdotool mousemove 0 1070
    #                             #        xdotool click 1
    #                                     xdotool mousemove 10 1070
    #                                     xdotool click 1
    #                                     xdotool key --delay 1 F5
    #
    #                                     xdotool  mousemove 1800 1000
    #                                     xdotool click 1
    #                             #        xdotool key --delay 1 F5
    #                                     sleep 3.0
    #                             fi
    #
    #                             sleep 3.0
    #
    #                             xdotool  mousemove 1800 0
    #                             xdotool click 1
    #                             xdotool  mousemove 1800 50
    #                             xdotool click 1
    #                             xdotool  mousemove 1721 123
    #                             xdotool click 1
    #                             xdotool  mousemove 1747 123
    #                             xdotool click 1
    #
    #                     #        sleep 1.0
    #                     fi
    
    
    # ===============================================================
    # Do MINDS site:
    #
    #                             xdotool mousemove 200 1050
    #                             xdotool click 1
    #                             sleep 1.4
    #                             xdotool mousemove 100 970
    #                             xdotool click 1
    #                             sleep 1
    #                             xdotool key --delay 400 ctrl+v
    # sleep 2.4
    # OLD SECTION for pause for card:
    
    #xinput disable ${xd}
    
    #xdotool mousemove 0 1070
    # xdotool click 1
    # sleep 0.4
    # sleep 1
    # xinput disable ${xd}
    
    # xdotool mousemove 175 1070
    # xdotool key --delay 500 Tab
    # xdotool click 1
    # xdotool mousemove 180 1030
    # xdotool click 1
    # xdotool mousemove 165 880
    # xdotool click 1
    
    
    # ===============================================================
    # Save to personal site, used to be for Pleroma/Fediverse
    
    xinput disable ${xd}
    
    xdotool  mousemove 1910 1050
     # sleep 0.4
    
    # xdotool  mousemove 1910 1050
     # sleep 0.4
    
    # xdotool  mousemove 1910 1050
    xdotool click --delay 200 1
    # xdotool  mousemove 1910 1050
    # sleep 0.4
    
    # xdotool  mousemove 1910 1050
    # sleep 1.4
    
    # xdotool  mousemove 1810 1050
    # xdotool click 1
    # xdotool click 1
    xdotool key --delay 0 ctrl+v
    # xdotool click 2
    # sleep 0.4
    xdotool type "   

    posted $(date '+%A, %B %d, %Y at %T')


    Desktop-Utils/tuxurl-new.sh

    # !/bin/bash
    # mouse-attached function to help with Tux Machines
    # Public Domain, Roy Schestowitz
    
    while :
    do
    	# echo ''
    	# echo ''
    	cp ~/newtuxurl.txt  ~/newtuxurl-old.txt
    
    	curl --insecure  --silent "http://news.tuxmachines.org/feed.xml" \
                    | grep -E '//' \
                      -e 's|||'  \
    		  -e 's/    |" />|' \
                    | head -n40 \
                    | tail -n39 > ~/newtuxurl.txt
    
    	cat ~/newtuxurl.txt ~/newtuxurl-old.txt ~/newtuxurl-old.txt \
                    | sort \
                    | uniq -u  > ~/newtuxdiff.txt #list of diffs
    
    # cat ~/tuxdiff.txt ~/tuxurl-old.txt | sort -r | uniq -u  > ~/tuxdiff2.txt #list of old diffs
    # cat ~/tuxurl.txt ~/tuxdiff2.txt | sort -r | uniq -u  > ~/tuxdiff3.txt
    
    	while read p; do
    		echo ''
    		cat ~/newtuxtime.txt
    		notify-send \
                            --app-name=konversation \
                            -t 3500 \
                            -u low 'New TUX MACHINES UPDATES READY!!!!!'
    
    		URL=$(echo $p | sed 's|https://news.|http://news.|')
                    #gemini URL
                    PROTOCOL=$(echo $URL | sed 's|http://news.|gemini://gemini.|')
                    GEM=$(echo $PROTOCOL  | sed 's|.shtml|.gmi|')
    
    		echo '' > ~/clip.html       #clear file
    
    		TITLE=$(wget --no-check-certificate  -qO- $URL \
                             | perl  -0777 -ne 'print $1 if /\s*(.*?)\s*<\/title/si')
    
    		DOMAIN=$(echo -n "$URL" \
                            | sed -e 's/[^/]*\/\/\([^@]*@\)\?\([^:/]*\).*/\2/' \
                            -e 's/www.//' \
                            -e 's/blogs.//' \
                            -e 's/blog.//' \
                            | awk -F. '{print $1}')
    
    # echo -n '
  • ' >> ~/clip.html && echo -n $TITLE >> ~/clip.html && echo -n '
    ' >> ~/clip.html echo '\n--------' >> ~/clip.html # printf '%(/%Y/%m/%d/)T' >> ~/clip.html # && echo '---------------------' >> ~/clip.html \ echo -n $TITLE >> ~/clip.html \ && echo -n ' ⇨ ' >> ~/clip.html \ && echo -n $URL >> ~/clip.html \ && echo -n ' | ♾ Gemini address: ' >> ~/clip.html \ && echo -n $GEM >> ~/clip.html \ && echo -n " ∎" >> ~/clip.html # && echo -n ' #' >> ~/clip.html \ # && echo -n $DOMAIN >> ~/clip.html # && gemini://gemi.dev/cgi-bin/waffle.cgi/view?" >> ~/clip.html \ # && echo -n "${URL/:/"%3A"}" >> ~/clip.html # echo '\n--------' >> ~/clip.html # head -n2 ~/clip.html tail -n1 ~/clip.html \ | sed -e 's/#tuxmachines//' \ -e 's/#phoronix/#Phoronix #Kernel #Linux 🐧/' \ -e 's/#fsf /#FSF #GNU #FreeSW #SoftwareFreedom /' \ -e 's/#gamingonlinux/#GamingOnLinux #GNU #Linux #Games #Gaming 🐧/' \ -e 's/#gnu/#FSF #GNU #FreeSW #SoftwareFreedom/' \ -e 's/#cnx-software/#Linux #GNU #Hardware #cnxsoftware/' \ -e 's/#linuxlinks/#LinuxLinks #GNU #Linux/' \ -e 's/#linuxhint/#LinuxHint #GNU #Linux 🐧/' \ -e 's/#documentfoundation/#documentfoundation #opendocument #freesw #libreoffice #odf/' \ -e 's/#techrights/#Techrights #GNU #Linux #FreeSW/' \ -e 's/#itsfoss/#ItsFOSS #GNU #Linux #Freesw/' \ -e 's/#gnome/#GNOME #GNU #Linux #GTK/' \ -e 's/#redhat/#RedHat #IBM #GNU #Linux/' \ -e 's/#lwn/#LWN #GNU #Linux/' \ -e 's/#fedora/#Fedora #RedHat #IBM #GNU #Linux/' \ -e 's/#opensource/#FreeSW #RedHat #IBM #GNU #Linux/' \ -e 's/#omgubuntu/#OMGUbuntu #GNU #Linux/' \ -e 's/#youtube/#Video #Google #YouTube/' \ -e 's/#debian/#Debian #GNU #Linux #FreeSW 🐧/' \ -e 's/how to/#HowTo/' \ -e 's/How To/#HowTo/' \ -e 's/#arduino/#Arduino #Hardware #OpenHardware #Hacking/' \ -e 's/#linuxjournal/#LinuxJournal #GNU #Linux/' \ -e 's/#linuxreviews/#LinuxReviews #GNU #Linux/' \ -e 's/#ubuntupit/#UbuntuPIT #GNU #Linux/' \ -e 's/#linuxconfig/#LinuxConfig #GNU #Linux/' \ -e 's/#ubuntuhandbook/#UbuntuHandbook #FreeSW #GNU #Linux/' \ -e 's/#linux-magazine/#LinuxMagazine #FreeSW #GNU #Linux/' \ -e 's/#tecmint/#TecMint #FreeSW #GNU #Linux/' \ -e 's/#howtoforge/#HowToForge #GNU #Linux/' \ -e 's/#ostechnix/#OSTechNix #GNU #Linux/' \ -e 's/#linuxhandbook/#LinuxHandbook #GNU #Linux/' \ -e 's/#debugpoint/#DebugPoint #GNU #Linux/' \ -e 's/#tuxdigital/#TuxDigital #GNU #Linux/' \ -e 's/#itsubuntu/#ItsUbuntu #GNU #Linux/' \ -e 's/#linuxgizmos/#LinuxGizmos #Hardware #Devices #GNU #Linux/' \ -e 's/#linuxuprising/#LinuxUprising #FreeSW #GNU #Linux/' \ -e 's/#ubuntubuzz/#UbuntuBuzz #GNU #Linux/' \ -e 's/#linuxsmartphones/#LinuxSmartphones #Mobile #GNU #Linux/' \ -e 's/#fossbytes/#FossBytes #GNU #Linux/' \ -e 's/#mozilla/#Mozilla #WWW #FreeSW #Firefox #Internet/' \ -e 's/How to/#HowTo/' \ -e 's/'/’/' \ -e 's/'/’/' \ -e 's/–/ - /' \ -e 's/–/ - /' \ -e 's/»/ - /' \ -e 's/'/’/' \ -e 's/'/’/' \ -e 's/'/’/' \ -e 's/"/"/' \ -e 's/&/&/' \ -e "s/today's howtos/Today's 𝘛𝘶𝘹 𝘔𝘢𝘤𝘩𝘪𝘯𝘦𝘴 HowTos /" \ -e 's/Opensource.com//' \ -e "s/today's leftovers/Today's 𝘛𝘶𝘹 𝘔𝘢𝘤𝘩𝘪𝘯𝘦𝘴 Leftovers/" \ -e 's/Android Leftovers/𝘛𝘶𝘹 𝘔𝘢𝘤𝘩𝘪𝘯𝘦𝘴: Google Android Leftovers/' \ -e 's/Today in Techrights/Today in Techrights/' \ -e 's/'/’/' \ -e 's/’/’/' \ -e 's/’/’/' \ -e 's/‘/’/' \ -e 's/–/ - /' \ -e 's/»/ - /' \ -e 's/'/’/' \ -e 's/"/"/' \ -e 's/Tux Machines —/➲ 𝕿𝖚𝖝 𝕸𝖆𝖈𝖍𝖎𝖓𝖊𝖘 ⨦ (NEW): /' \ -e 's/—/–/' \ -e 's/—/–/' \ -e 's/&/\&/' \ -e 's/&/\&/' \ -e 's/…/.../' \ -e 's/Programming Leftovers/𝘛𝘶𝘹 𝘔𝘢𝘤𝘩𝘪𝘯𝘦𝘴 Programming Leftovers/' \ -e 's/IRC Proceedings/IRC Proceedings/' \ -e 's/| Tux Machines /• Tux Machines /' \ -e 's/| Techrights /• тє¢няιﻭнтѕ / ' echo '' # echo '' # Deprecated below, for option without hashes # # tail -n1 ~/clip.html | sed -e 's/#tuxmachines//' | sed -e 's/#phoronix/#Phoronix #Kernel #Linux 🐧/' | sed -e 's/#fsf /#FSF #GNU #FreeSW #SoftwareFreedom /' | sed -e 's/#gamingonlinux/#GamingOnLinux #GNU #Linux #Games #Gaming 🐧/' | sed -e 's/#gnu/#FSF #GNU #FreeSW #SoftwareFreedom/' | sed -e 's/#cnx-software/#Linux #GNU #Hardware #cnxsoftware/' | sed -e 's/#linuxlinks/#LinuxLinks #GNU #Linux/' | sed -e 's/#linuxhint/#LinuxHint #GNU #Linux 🐧/' | sed -e 's/#documentfoundation/#documentfoundation #opendocument #freesw #libreoffice #odf/' | sed -e 's/#techrights/#Techrights #GNU #Linux #FreeSW/' | sed -e 's/#itsfoss/#ItsFOSS #GNU #Linux #Freesw/' | sed -e 's/#gnome/#GNOME #GNU #Linux #GTK/' | sed -e 's/#redhat/#RedHat #IBM #GNU #Linux/' | sed -e 's/#lwn/#LWN #GNU #Linux/' | sed -e 's/#fedora/#Fedora #RedHat #IBM #GNU #Linux/'| sed -e 's/#opensource/#FreeSW #RedHat #IBM #GNU #Linux/'| sed -e 's/#omgubuntu/#OMGUbuntu #GNU #Linux/' | sed -e 's/#youtube/#Video #Google #YouTube/' | sed -e 's/#debian/#Debian #GNU #Linux #FreeSW 🐧/' | sed -e 's/how to/#HowTo/' | sed -e 's/How To/#HowTo/' | sed -e 's/#arduino/#Arduino #Hardware #OpenHardware #Hacking/' | sed -e 's/#linuxjournal/#LinuxJournal #GNU #Linux/' | sed -e 's/#linuxreviews/#LinuxReviews #GNU #Linux/' | sed -e 's/#ubuntupit/#UbuntuPIT #GNU #Linux/' | sed -e 's/#linuxconfig/#LinuxConfig #GNU #Linux/' | sed -e 's/#ubuntuhandbook/#UbuntuHandbook #FreeSW #GNU #Linux/' | sed -e 's/#linux-magazine/#LinuxMagazine #FreeSW #GNU #Linux/' | sed -e 's/#tecmint/#TecMint #FreeSW #GNU #Linux/' | sed -e 's/#howtoforge/#HowToForge #GNU #Linux/' | sed -e 's/#ostechnix/#OSTechNix #GNU #Linux/' | sed -e 's/#linuxhandbook/#LinuxHandbook #GNU #Linux/' | sed -e 's/#debugpoint/#DebugPoint #GNU #Linux/' | sed -e 's/#tuxdigital/#TuxDigital #GNU #Linux/' | sed -e 's/#itsubuntu/#ItsUbuntu #GNU #Linux/' | sed -e 's/#linuxgizmos/#LinuxGizmos #Hardware #Devices #GNU #Linux/' | sed -e 's/#linuxuprising/#LinuxUprising #FreeSW #GNU #Linux/' | sed -e 's/#ubuntubuzz/#UbuntuBuzz #GNU #Linux/' | sed -e 's/#linuxsmartphones/#LinuxSmartphones #Mobile #GNU #Linux/' | sed -e 's/#fossbytes/#FossBytes #GNU #Linux/' | sed -e 's/#mozilla/#Mozilla #WWW #FreeSW #Firefox #Internet/' | sed -e 's/How to/#HowTo/' | sed -e 's/'/’/' | sed -e 's/–/ - /' | sed -e 's/»/ - /' | sed -e 's/'/’/' | sed -e 's/"/"/' | sed -e 's/&/&/' | sed -e 's/today’s howtos/Today’s #HowTos | #UNIX /' | sed -e 's/Opensource.com//' | sed -e 's/today’s leftovers/Today’s 𝘛𝘶𝘹 𝘔𝘢𝘤𝘩𝘪𝘯𝘦𝘴 Leftovers/' | sed -e 's/Android Leftovers/Google #Android Leftovers/' | sed -e 's/Today in Techrights/𝕋𝕖𝕔𝕙𝕣𝕚𝕘𝕙𝕥𝕤: Today in #Techrights/' | sed -e 's/'/’/' | sed -e 's/’/’/' | sed -e 's/’/’/' | sed -e 's/‘/’/' | sed -e 's/–/ - /' | sed -e 's/»/ - /' | sed -e 's/'/’/' | sed -e 's/"/"/' | sed -e 's/—/"/' | sed -e 's/&/\&/' | sed -e 's/&/\&/'| sed -e 's/…/.../'| sed -e 's/Programming Leftovers/Programming Leftovers/'| sed -e 's/IRC Proceedings/#IRC Proceedings/'| sed -e 's/| Tux Machines /• Tux Machines /'| sed -e 's/| Techrights /• тє¢няιﻭнтѕ / ' echo '' # echo '' # echo '' echo -n -e "\e[5;45;3$(( $RANDOM * 6 / 32767 + 1 ))mUPDATE UPDATE UPDATE UPDATE UPDATE UPDATE" echo -e "\e[7;47;3$(( $RANDOM * 6 / 32767 + 1 ))m" done < ~/newtuxdiff.txt # Add colours below echo -n -e "\e[6;45;3$(( $RANDOM * 6 / 32767 + 1 ))m" \ > ~/newtuxtime.txt echo -n -e "\e[7;47;3$(( $RANDOM * 6 / 32767 + 1 ))m" \ >> ~/newtuxtime.txt echo -n -e "\e[3$(( $RANDOM * 6 / 32767 + 1 ))m$(date): | " \ > ~/tuxtime.txt sleep 100 done
  • Desktop-Utils/check_murmur.sh

    tail -F --retry /var/log/mumble-server/mumble-server.log
    

    Desktop-Utils/view_irc.sh

    # clear
    
    # Notes:
    #
    # explanation of exclusions (grep -v), in order:
    #
    # extra cruft
    # less racism in view
    # bot activity
    # no need to see these 
    
    # explanation of sed, in order:
    #
    # tighten layout
    # indent news and self
    # shorten lines
    # limit output
    
    tail -n 400  irc-status.txt \
    	| cut -c18-135 \
    	| GREP_COLOR='01;36' grep --color=always 'techrights-news\|$' \
    	| grep -i --color=always 'schestowitz\|$' \
    	| grep -v -e '<==' \
                -e 'Daemon' \
                -e 'techrights-ipfs-bot' \
                -e 'IRC logs ready' \
    	    -e 'Binary file' \
    	| sed -e 's/>	/ /' \
    	    -e 's/techrights-news/         TR/' \
                -e 's/schestowitz/  RS/' \
            | uniq  \
    	| sed -e 's/☞.*$//' \
    	    -e 's/•.*$//' \
    	| tail -n55 
    

    Desktop-Utils/tuxurl.sh

    # !/bin/bash
    # mouse-attached function to help with Tux Machines
    # Public Domain, Roy Schestowitz
    
    while :
    do
    
    	# echo ''
    	# echo ''
    	cp ~/tuxurl.txt  ~/tuxurl-old.txt
    
    	curl --silent "http://www.tuxmachines.org/node/feed" \
                    | grep -E '(link>|link>)' \
                    | sed -e "s/ //" -e "s/<\/link>//" \
                    | head -n20 \
                    | tail -n19 > ~/tuxurl.txt
    
    	cat ~/tuxurl.txt ~/tuxurl-old.txt ~/tuxurl-old.txt \
                    | sort \
                    | uniq -u  > ~/tuxdiff.txt #list of diffs
    
    # cat ~/tuxdiff.txt ~/tuxurl-old.txt | sort -r | uniq -u  > ~/tuxdiff2.txt #list of old diffs
    # cat ~/tuxurl.txt ~/tuxdiff2.txt | sort -r | uniq -u  > ~/tuxdiff3.txt
    
    	while read p; do
    		echo ''
    		cat ~/tuxtime.txt
    		notify-send \
                            --app-name=konversation \
                            -t 3500 \
                            -u low 'TUX MACHINES UPDATES READY!!!!!'
    
    		URL=$p
    
    		#gemini URL
    
    #		PROTOCOL=$(echo $URL | sed 's|https://news.|gemini://gemini.|')
    #		GEM=$(echo $PROTOCOL  | sed 's|.shtml|.gmi|')
    
    		echo '' > ~/clip.html       #clear file
    
    		TITLE=$(wget -qO- $URL \
                            | perl  -0777 -ne 'print $1 if /\s*(.*?)\s*<\/title/si')
    
    		DOMAIN=$(echo -n "$URL" \
                            | sed -e 's/[^/]*\/\/\([^@]*@\)\?\([^:/]*\).*/\2/' \
                            -e 's/www.//' \
                            -e 's/blogs.//' \
                            -e 's/blog.//' \
                            | awk -F. '{print $1}')
    
    # echo -n '
  • ' >> ~/clip.html && echo -n $TITLE >> ~/clip.html && echo -n '
    ' >> ~/clip.html echo '\n--------' >> ~/clip.html # printf '%(/%Y/%m/%d/)T' >> ~/clip.html echo -n $TITLE >> ~/clip.html \ && echo -n ' ⇨ ' >> ~/clip.html \ && echo -n $URL >> ~/clip.html \ && echo -n ' #' >> ~/clip.html \ && echo -n $DOMAIN >> ~/clip.html # && gemini://gemi.dev/cgi-bin/waffle.cgi/view?" >> ~/clip.html \ # && echo -n "${URL/:/"%3A"}" >> ~/clip.html # echo '\n--------' >> ~/clip.html # head -n2 ~/clip.html tail -n1 ~/clip.html \ | sed -e 's/#tuxmachines//' \ -e 's/#phoronix/#Phoronix #Kernel #Linux 🐧/' \ -e 's/#fsf /#FSF #GNU #FreeSW #SoftwareFreedom /' \ -e 's/#gamingonlinux/#GamingOnLinux #GNU #Linux #Games #Gaming 🐧/' \ -e 's/#gnu/#FSF #GNU #FreeSW #SoftwareFreedom/' \ -e 's/#cnx-software/#Linux #GNU #Hardware #cnxsoftware/' \ -e 's/#linuxlinks/#LinuxLinks #GNU #Linux/' \ -e 's/#linuxhint/#LinuxHint #GNU #Linux 🐧/' \ -e 's/#documentfoundation/#documentfoundation #opendocument #freesw #libreoffice #odf/' \ -e 's/#techrights/#Techrights #GNU #Linux #FreeSW/' \ -e 's/#itsfoss/#ItsFOSS #GNU #Linux #Freesw/' \ -e 's/#gnome/#GNOME #GNU #Linux #GTK/' \ -e 's/#redhat/#RedHat #IBM #GNU #Linux/' \ -e 's/#lwn/#LWN #GNU #Linux/' \ -e 's/#fedora/#Fedora #RedHat #IBM #GNU #Linux/' \ -e 's/#opensource/#FreeSW #RedHat #IBM #GNU #Linux/' \ -e 's/#omgubuntu/#OMGUbuntu #GNU #Linux/' \ -e 's/#youtube/#Video #Google #YouTube/' \ -e 's/#debian/#Debian #GNU #Linux #FreeSW 🐧/' \ -e 's/how to/#HowTo/' \ -e 's/How To/#HowTo/' \ -e 's/#arduino/#Arduino #Hardware #OpenHardware #Hacking/' \ -e 's/#linuxjournal/#LinuxJournal #GNU #Linux/' \ -e 's/#linuxreviews/#LinuxReviews #GNU #Linux/' \ -e 's/#ubuntupit/#UbuntuPIT #GNU #Linux/' \ -e 's/#linuxconfig/#LinuxConfig #GNU #Linux/' \ -e 's/#ubuntuhandbook/#UbuntuHandbook #FreeSW #GNU #Linux/' \ -e 's/#linux-magazine/#LinuxMagazine #FreeSW #GNU #Linux/' \ -e 's/#tecmint/#TecMint #FreeSW #GNU #Linux/' \ -e 's/#howtoforge/#HowToForge #GNU #Linux/' \ -e 's/#ostechnix/#OSTechNix #GNU #Linux/' \ -e 's/#linuxhandbook/#LinuxHandbook #GNU #Linux/' \ -e 's/#debugpoint/#DebugPoint #GNU #Linux/' \ -e 's/#tuxdigital/#TuxDigital #GNU #Linux/' \ -e 's/#itsubuntu/#ItsUbuntu #GNU #Linux/' \ -e 's/#linuxgizmos/#LinuxGizmos #Hardware #Devices #GNU #Linux/' \ -e 's/#linuxuprising/#LinuxUprising #FreeSW #GNU #Linux/' \ -e 's/#ubuntubuzz/#UbuntuBuzz #GNU #Linux/' \ -e 's/#linuxsmartphones/#LinuxSmartphones #Mobile #GNU #Linux/' \ -e 's/#fossbytes/#FossBytes #GNU #Linux/' \ -e 's/#mozilla/#Mozilla #WWW #FreeSW #Firefox #Internet/' \ -e 's/How to/#HowTo/' \ -e 's/'/’/' \ -e 's/–/ - /' \ -e 's/»/ - /' \ -e 's/'/’/' \ -e 's/"/"/' \ -e 's/&/&/' \ -e 's/today’s howtos/Today’s 𝘛𝘶𝘹 𝘔𝘢𝘤𝘩𝘪𝘯𝘦𝘴 HowTos /' \ -e 's/Opensource.com//' \ -e 's/today’s leftovers/Today’s 𝘛𝘶𝘹 𝘔𝘢𝘤𝘩𝘪𝘯𝘦𝘴 Leftovers/' \ -e 's/Android Leftovers/𝘛𝘶𝘹 𝘔𝘢𝘤𝘩𝘪𝘯𝘦𝘴: Google #Android Leftovers/' \ -e 's/Today in Techrights/Today in Techrights/' \ -e 's/'/’/' \ -e 's/’/’/' \ -e 's/’/’/' \ -e 's/‘/’/' \ -e 's/–/ - /' \ -e 's/»/ - /' \ -e 's/'/’/' \ -e 's/"/"/' \ -e 's/—/"/' \ -e 's/&/\&/' \ -e 's/&/\&/' \ -e 's/…/.../' \ -e 's/Programming Leftovers/𝘛𝘶𝘹 𝘔𝘢𝘤𝘩𝘪𝘯𝘦𝘴 Programming Leftovers/' \ -e 's/IRC Proceedings/#IRC Proceedings/' \ -e 's/| Tux Machines /• Tux Machines /' \ -e 's/| Techrights /• тє¢няιﻭнтѕ / ' echo '' # echo '' # Deprecated below, for option without hashes # # tail -n1 ~/clip.html | sed -e 's/#tuxmachines//' | sed -e 's/#phoronix/#Phoronix #Kernel #Linux 🐧/' | sed -e 's/#fsf /#FSF #GNU #FreeSW #SoftwareFreedom /' | sed -e 's/#gamingonlinux/#GamingOnLinux #GNU #Linux #Games #Gaming 🐧/' | sed -e 's/#gnu/#FSF #GNU #FreeSW #SoftwareFreedom/' | sed -e 's/#cnx-software/#Linux #GNU #Hardware #cnxsoftware/' | sed -e 's/#linuxlinks/#LinuxLinks #GNU #Linux/' | sed -e 's/#linuxhint/#LinuxHint #GNU #Linux 🐧/' | sed -e 's/#documentfoundation/#documentfoundation #opendocument #freesw #libreoffice #odf/' | sed -e 's/#techrights/#Techrights #GNU #Linux #FreeSW/' | sed -e 's/#itsfoss/#ItsFOSS #GNU #Linux #Freesw/' | sed -e 's/#gnome/#GNOME #GNU #Linux #GTK/' | sed -e 's/#redhat/#RedHat #IBM #GNU #Linux/' | sed -e 's/#lwn/#LWN #GNU #Linux/' | sed -e 's/#fedora/#Fedora #RedHat #IBM #GNU #Linux/'| sed -e 's/#opensource/#FreeSW #RedHat #IBM #GNU #Linux/'| sed -e 's/#omgubuntu/#OMGUbuntu #GNU #Linux/' | sed -e 's/#youtube/#Video #Google #YouTube/' | sed -e 's/#debian/#Debian #GNU #Linux #FreeSW 🐧/' | sed -e 's/how to/#HowTo/' | sed -e 's/How To/#HowTo/' | sed -e 's/#arduino/#Arduino #Hardware #OpenHardware #Hacking/' | sed -e 's/#linuxjournal/#LinuxJournal #GNU #Linux/' | sed -e 's/#linuxreviews/#LinuxReviews #GNU #Linux/' | sed -e 's/#ubuntupit/#UbuntuPIT #GNU #Linux/' | sed -e 's/#linuxconfig/#LinuxConfig #GNU #Linux/' | sed -e 's/#ubuntuhandbook/#UbuntuHandbook #FreeSW #GNU #Linux/' | sed -e 's/#linux-magazine/#LinuxMagazine #FreeSW #GNU #Linux/' | sed -e 's/#tecmint/#TecMint #FreeSW #GNU #Linux/' | sed -e 's/#howtoforge/#HowToForge #GNU #Linux/' | sed -e 's/#ostechnix/#OSTechNix #GNU #Linux/' | sed -e 's/#linuxhandbook/#LinuxHandbook #GNU #Linux/' | sed -e 's/#debugpoint/#DebugPoint #GNU #Linux/' | sed -e 's/#tuxdigital/#TuxDigital #GNU #Linux/' | sed -e 's/#itsubuntu/#ItsUbuntu #GNU #Linux/' | sed -e 's/#linuxgizmos/#LinuxGizmos #Hardware #Devices #GNU #Linux/' | sed -e 's/#linuxuprising/#LinuxUprising #FreeSW #GNU #Linux/' | sed -e 's/#ubuntubuzz/#UbuntuBuzz #GNU #Linux/' | sed -e 's/#linuxsmartphones/#LinuxSmartphones #Mobile #GNU #Linux/' | sed -e 's/#fossbytes/#FossBytes #GNU #Linux/' | sed -e 's/#mozilla/#Mozilla #WWW #FreeSW #Firefox #Internet/' | sed -e 's/How to/#HowTo/' | sed -e 's/'/’/' | sed -e 's/–/ - /' | sed -e 's/»/ - /' | sed -e 's/'/’/' | sed -e 's/"/"/' | sed -e 's/&/&/' | sed -e 's/today’s howtos/Today’s #HowTos | #UNIX /' | sed -e 's/Opensource.com//' | sed -e 's/today’s leftovers/Today’s 𝘛𝘶𝘹 𝘔𝘢𝘤𝘩𝘪𝘯𝘦𝘴 Leftovers/' | sed -e 's/Android Leftovers/Google #Android Leftovers/' | sed -e 's/Today in Techrights/𝕋𝕖𝕔𝕙𝕣𝕚𝕘𝕙𝕥𝕤: Today in #Techrights/' | sed -e 's/'/’/' | sed -e 's/’/’/' | sed -e 's/’/’/' | sed -e 's/‘/’/' | sed -e 's/–/ - /' | sed -e 's/»/ - /' | sed -e 's/'/’/' | sed -e 's/"/"/' | sed -e 's/—/"/' | sed -e 's/&/\&/' | sed -e 's/&/\&/'| sed -e 's/…/.../'| sed -e 's/Programming Leftovers/Programming Leftovers/'| sed -e 's/IRC Proceedings/#IRC Proceedings/'| sed -e 's/| Tux Machines /• Tux Machines /'| sed -e 's/| Techrights /• тє¢няιﻭнтѕ / ' echo '' # echo '' # echo '' # echo -n -e "\e[5;45;3$(( $RANDOM * 6 / 32767 + 1 ))mUPDATE UPDATE UPDATE UPDATE UPDATE UPDATE" echo -e "\e[7;47;3$(( $RANDOM * 6 / 32767 + 1 ))m" done < ~/tuxdiff.txt echo -n -e "\e[6;45;3$(( $RANDOM * 6 / 32767 + 1 ))m" > ~/tuxtime.txt echo -n -e "\e[7;47;3$(( $RANDOM * 6 / 32767 + 1 ))m" >> ~/tuxtime.txt #echo -n -e "\e[3$(( $RANDOM * 6 / 32767 + 1 ))m$(date): | " > ~/tuxtime.txt sleep 200 done
  • Desktop-Utils/xbindkeysrc

              "konsole  --fullscreen -e '/home/roy/menu.sh '"
              control+alt+9
    
              "konsole &"
               control+alt+8
    
              "xchat &"
              control+alt+shift+x
    
              "bash /home/roy/url.sh &"
              b:8
    #          control+alt+shift+a
    
              "sleep 0.2 && xdotool click 1 && xdotool click 1 && xdotool click 1 && xdotool key --delay 1 ctrl+c && bash  ~/post-ff.sh  &"
              b:9
    #          control+alt+shift+t
    
    #          "konsole -e 'sh /home/roy/boycottn.sh '"
    #          control+alt+shift+b
    
              "jpilot &"
              control+alt+shift+j
    
              "vlc &"
              control+alt+shift+z
    
    #          "nagstamon &"
    #          control+alt+shift+n
    
              "konversation &"
              control+alt+shift+k
    
    #          "pidgin &"
    #          control+alt+shift+p
    
    #          "quicksynergy &"
    #          control+alt+shift+q
    
    #          "konsole &"
    #          control+alt+shift+a
    
    #          "kfmclient openProfile filemanagement &"
    #          control+alt+s
    
    #          "kfmclient openProfile filepreview &"
    #          control+alt+u
    
    #          "kfmclient openProfile webbrowsing &"
    #          control+alt+h
    
    #          "kfmclient openProfile midnightcommander &"
    #          control+alt+t
    
    #          "kmail &"
    #          control+alt+o
    
    #          "knode &"
    #          control+alt+n
    
    #          "kssh &"
    #          control+alt+j
    
    #          "qupzilla &"
            "falkon &"
              control+alt+j
    
              "kcalc &"
              control+alt+f
    
              "gimp &"
              control+alt+g
    
              "dolphin &"
              control+alt+d
    
    #          "kedit &"
    #          control+alt+e
    
    #          "/usr/local/mozilla/mozilla &"
    #          control+alt+m
    
    #          "soundwrapper xmms &"
    #          control+alt+z
    
              "/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=librewolf --file-forwarding io.gitlab.librewolf-community  &"
              control+alt+b
    
    #          "/opt/OpenOffice.org/program/soffice &"
    #          control+alt+i
    
    #          "kcontrol &"
    #          control+alt+c
    
              "systemsettings5  &"
              control+alt+c
    
    #          "kcontrol &"
    #          control+alt+c
    
    #          "kwrite &"
    #          control+alt+w
    
              "kate &"
              control+alt+w
    
    #          "/home/roy/Main/Programs/rssowl/run.sh &"
    #          control+alt+q
    
              "quiterss &"
              control+alt+q
    
              "chromium-browser &"
              control+alt+shift+c
    
    #          "ark &"
    #          control+alt+p
    
              "~/tr-remote-gemini-cron-updater &"
              control+alt+p
    
    #          "xlock -mode ball -delay 10&"
    #          control+alt+l
    
    #          "thunderbird &"
    #          control+alt+0
    
    #          "kdf &"
    #          control+alt+1
    
    #          "kfmclient openProfile Reports &"
    #          control+alt+2
    
    #          "konsole -e ssh -l root -X baine.smb.man.ac.uk &"
    #  control+alt+3
    
        "ksnapshot &"
        control+alt+shift+4
    
    #  "minirok &"
    #  control+alt+m
    
              "flameshot gui &"
              control+alt+5
    
              "bash  ~/post-ff.sh  &"
              control+alt+6
    
    #          "xdotool click 1 && xdotool click 1 && xdotool click 1 && xdotool key --delay 10 ctrl+x   && bash  ~/post-ff.sh  &"
    #          control+alt+5
    
              "sleep 2 && bash  ~/post-ff.sh  &"
              control+alt+7
    
    #          "/home/roy/Main/Programs/Scripts/indent.sh &"
    #          control+alt+7
    
    #          "kfmclient openProfile Photos &"
    #          control+alt+8
    
    #          "pixie &"
    #          control+alt+9
    
    #          "choqok &"
    #          control+alt+9
    
    #          "perl ~/Main/Programs/Scripts/unlink.pl &"
    #          control+alt+shift+q
    
    #          "kpager &"
    #          control+alt+shift+1
    
    #        "mv ~/32423432343425 ~/.bashrc"
    #        control+alt+shift+m
    
    #          "mv ~/.bashrc ~/32423432343425"
    #          control+alt+shift+v
    

    Desktop-Utils/git-show.sh

    cd ~/Git-TM/tuxmachines.org/tuxmachines.org/ && git show && cd ~/Git && git show
    

    Desktop-Utils/tr-refresh-video-gallery.sh

    #!/bin/sh
    
    # run via INCRON
    # /var/www/techrights.org/htdocs/videos   IN_CREATE,recursive=false       /usr/local/bin/tr-refresh-video-gallery.sh
    
    # Simple script to create or refresh the listing of Techrights videos
    # Public Domain, Roy Schestowitz
    # See Git for change history
    # Some notes/TODO at the bottom
    
    PATH=/usr/local/bin:/usr/bin:/bin
    
    if [ ${UID} -eq 0 && ${EUID} -eq 0 ]; then
    	echo "Cannot run as root!"
    	echo "Aborting"
    	exit 1
    fi
    
    sleep 2
    month=$(date +'%B-%Y')
    date > /tmp/foo
    
    set -e
    
    documentroot=/var/www/techrights.org/htdocs
    tmpdir=$(mktemp -d /tmp/videos-tmp.XXXXXX)
    tmpfile1=$(mktemp -p ${tmpdir} videos-tmp.XXXXXXX)
    tmpfile2=$(mktemp -p ${tmpdir} videos-tmp.XXXXXXX)
    
    trap "rm -f -- $tmpfile1; rm -f -- $tmpfile2; rmdir -- ${tmpdir}" EXIT
    
    cd /var/www/techrights.org/htdocs/videos/
    
    #monthly mode below
    # find *.gif -newermt "01-$month -1 sec" -and -not -newermt \
    #  "01-$month +1 month -1 sec" > ${tmpfile1}
    
    find *.gif \
    	-mtime -7 \
    	-printf '%T@ %p\0' \
    | sort -zk 1nr \
    | sed -z 's/^[^ ]* //' \
    | tr '\0' '\n' \
    > ${tmpfile1}
    
    # (Save as 'gif', progress onwards)
    sed 's/.gif//' ${tmpfile1} > ${tmpfile2}
    
    # make genric slugs; note that videos without animated previews won't be listed
    echo '' > ${documentroot}/videos/index-body.html
    
    # flush down file
    while IFS= read -r line; do
    	echo -n "\
     \"$line\"> ${documentroot}/videos/index-body.html
    	date -r $line.webm -u \
    	>> ${documentroot}/videos/index-body.html
    	echo "\" />" \
    	>> ${documentroot}/videos/index-body.html
    done < ${tmpfile2}
    
    cat \
    	${documentroot}/videos/index-top.html \
    	${documentroot}/videos/index-body.html \
    	${documentroot}/videos/index-bottom.html \
    > ${documentroot}/videos/index.html
    
    exit 0
    
    
    # IMPORTANT: Change month at top of file! 3-letter-month-format
    # (This will send output to ~/public_html/videos/index.html
    #	i.e. default page to serve to visitors)
    # change month at top, then change to month mode
    # run script
    # (rename file for old archive, at end of each month, 'mv index.html some file'
    # e.g. cp ~/public_html/videos/index.html ~/public_html/videos/index-July-2021.html
    # add any additional index-template bits (if needed)
    # add correct month as >>both<< title and header, set footer date
    # (if unsuitable), e.g. "Techrights Videos - August 2023"
    # (change back to weekly mode, rerun and test is OK after changes;
    #  test both monthly index and new page, then weekly at ~/video)
    # Update archives index:
    #  nano ${documentroot}/videos/archive/index.html
    #  (at end of year change date at bottom as well)
    # Push any changes to this file to Git
    

    Desktop-Utils/text-upload.sh

    #!/bin/bash
    
    
    for IRCAGE in {1..1}
        do
        url='http://techrights.org/feed/'
        d=$(date  --date="$IRCAGE days ago" +'%m/%d/')
        echo "Checking for date: ${d}"
    
        wget -q -O- ${url} |\
        grep "#comments" |\
        grep "techrights" |\
        grep "${d}" |\
        sort | uniq      | sed 's///' | sed 's/<\/comments>//' > ~/daily_articles.txt
    
        dailylinksurl='http://techrights.org/category/news-roundup/feed/'
    
        wget -q -O- ${dailylinksurl} |\
        grep "#comments" |\
        grep  "techrights" |\
        grep  "${d}" |\
        sort | uniq      | sed 's///' | sed 's/<\/comments>//' > ~/daily_links.txt
    
        grep -Fvx -f ~/daily_links.txt ~/daily_articles.txt  > ~/remaining.list &&
        mv ~/remaining.list  ~/daily_articles.txt
    
    
        IRCFULLDATE=$(date --date="$IRCAGE days ago" "+%A, %B %d, %Y")
        IRCDATEFILE=techrights-$(date --date="$IRCAGE days ago" +"%Y-%m-%d").txt
    
        echo 𝕿𝖊𝖈𝖍𝖗𝖎𝖌𝖍𝖙𝖘 Bulletin for $IRCFULLDATE > $IRCDATEFILE 
        echo ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ >> $IRCDATEFILE
        echo Generated $(date) >> $IRCDATEFILE
        seconds1=$(date +%s)
        echo Created by Dr. Roy Schestowitz \(𝚛𝚘𝚢 \(at\) 𝚜𝚌𝚑𝚎𝚜𝚝𝚘𝚠𝚒𝚝𝚣 \(dot\) 𝚌𝚘𝚖\) >> $IRCDATEFILE
        echo Full hyperlinks for navigation omitted but are fully available in the originals >>  $IRCDATEFILE
        echo The corresponding HTML versions are at 𝒕𝒆𝒄𝒉𝒓𝒊𝒈𝒉𝒕𝒔.𝒐𝒓𝒈 >> $IRCDATEFILE
        echo 'Latest in 𝒉𝒕𝒕𝒑://𝒕𝒆𝒄𝒉𝒓𝒊𝒈𝒉𝒕𝒔.𝒐𝒓𝒈/𝒕𝒙𝒕 and older bulletins can be found at 𝒉𝒕𝒕𝒑://𝒕𝒆𝒄𝒉𝒓𝒊𝒈𝒉𝒕𝒔.𝒐𝒓𝒈/𝒕𝒙𝒕-𝒂𝒓𝒄𝒉𝒊𝒗𝒆𝒔' >> $IRCDATEFILE
        echo 'Full IPFS index in 𝒉𝒕𝒕𝒑://𝒕𝒆𝒄𝒉𝒓𝒊𝒈𝒉𝒕𝒔.𝒐𝒓𝒈/𝒊𝒑𝒇𝒔 and as plain text in 𝒉𝒕𝒕𝒑://𝒕𝒆𝒄𝒉𝒓𝒊𝒈𝒉𝒕𝒔.𝒐𝒓𝒈/𝒊𝒑𝒇𝒔/𝒕𝒙𝒕' >> $IRCDATEFILE
        echo -n "Gemini index for the day: " >> $IRCDATEFILE
        date -d "-1 days"  +"gemini://gemini.techrights.org/%Y/%m/%d/"  >> $IRCDATEFILE
    
        
        echo '' >> $IRCDATEFILE
        echo '' >> $IRCDATEFILE
    
        echo '╒═══════════════════ 𝐑𝐄𝐂𝐄𝐍𝐓 𝐁𝐔𝐋𝐋𝐄𝐓𝐈𝐍𝐒 ════════════════════════════════════╕' >> $IRCDATEFILE
        echo '  Previous bulletins in IPFS (past 21 days, in chronological order):'  >> $IRCDATEFILE
        echo '' >> $IRCDATEFILE
    	 wget -q -O-  http://techrights.org/ipfs/txt | grep bulletin | cut -d ' ' -f 1 | tail -n21   >> $IRCDATEFILE
        echo '' >> $IRCDATEFILE
        echo '' >> $IRCDATEFILE
        echo '╒═══════════════════ 𝐈𝐍𝐃𝐄𝐗 ═══════════════════════════════════════════════════╕' >> $IRCDATEFILE
        echo '' >> $IRCDATEFILE
        input="daily_articles.txt"
        while IFS= read -r line
            do
                echo -n '⦿ ' >> $IRCDATEFILE
                wget -qO- $line | perl  -0777 -ne 'print $1 if /\s*(.*?)\s*<\/title/si' |  sed -e 's/'/’/' |  sed -e 's/–/ - /' | sed -e 's/»/ - /' | sed -e 's/'/’/' | sed -e 's/"/"/' | sed -e 's/&/&/' | sed -e 's/'/’/' | sed -e 's/’/’/' | sed -e 's/’/’/' | sed -e 's/‘/’/' | sed -e 's/–/ - /' | sed -e 's/»/ - /' | sed -e 's/'/’/' | sed -e 's/'/’/' | sed -e 's/'/’/' | sed -e 's/"/"/' | sed -e 's/—/"/' | sed -e 's/—/ - /' | sed -e 's/—/ - /' | sed -e 's/&/\&/' | sed -e 's/&/\&/'|  sed -e 's/…/.../' >> $IRCDATEFILE
                echo '' >> $IRCDATEFILE
                echo '' >> $IRCDATEFILE
        done < "$input"
        
        echo ' ䷼ Bulletin articles (as HTML) to comment on (requires login):' >> $IRCDATEFILE
        cat ~/daily_articles.txt >> $IRCDATEFILE
        echo '' >> $IRCDATEFILE
    
        echo ' ䷞ Followed by Daily Links (assorted news picks curated and categorised):' >> $IRCDATEFILE
        cat ~/daily_links.txt >> $IRCDATEFILE
        
        input="daily_articles.txt"
        while IFS= read -r line
        do
    	echo $line
            echo '' >> $IRCDATEFILE
            echo -n '                    ䷩ 𝚕𝚒𝚗𝚎 ' >> $IRCDATEFILE
            wc -l < $IRCDATEFILE >> $IRCDATEFILE
            echo '' >> $IRCDATEFILE
            echo '╒═══════════════════ 𝐀𝐑𝐓𝐈𝐂𝐋𝐄 ═════════════════════════════════════════════════╕' >> $IRCDATEFILE
            echo "" >> $IRCDATEFILE
            echo -n "(ℹ) Images, hyperlinks and comments at " >> $IRCDATEFILE
            echo $line >> $IRCDATEFILE
            echo -n "    Gemini version at " >> $IRCDATEFILE
            GEM=$(echo $line | sed 's/http:\/\//gemini:\/\/gemini./' | sed 's/#comments//')
            echo $GEM >> $IRCDATEFILE
            echo "" >> $IRCDATEFILE
            wget  -O- -q $line | html2text  | awk '/⌧/ {p=1}; p==1 {print}'  | awk '{print; if (match($0,"Share in other sites")) exit}' | head -n -1 >>  $IRCDATEFILE
            if [[ $line != *"irc-log-"* ]] ;
            then
                wget  -O- -q $line | awk '/endif/ {p=1}; p==1 {print}'  | awk '{print; if (match($0,"Share in other sites")) exit}' | sed -n '/>  $IRCDATEFILE
            fi    
        done < "$input"
    
        input="daily_links.txt"
        while IFS= read -r line
        do
    	echo 'Links:'
    	echo $line
            echo '' >> $IRCDATEFILE
            echo -n '                    ䷩ 𝚕𝚒𝚗𝚎 ' >> $IRCDATEFILE
            wc -l < $IRCDATEFILE >> $IRCDATEFILE
            echo '' >> $IRCDATEFILE
            echo '╒═══════════════════ 𝐃𝐀𝐈𝐋𝐘 𝐋𝐈𝐍𝐊𝐒 ═════════════════════════════════════════════╕' >> $IRCDATEFILE
            echo "" >> $IRCDATEFILE
            wget  -O- -q $line | html2text  | awk '/⌧/ {p=1}; p==1 {print}'  | awk '{print; if (match($0,"Share in other sites")) exit}' | head -n -1 >>  $IRCDATEFILE
        done < "$input"
    
        echo '╘══════════════════════════════════════════════════════════════════════════════╛' >> $IRCDATEFILE
        echo -n '                       ¶ Lines in total: ' >> $IRCDATEFILE
            wc -l < $IRCDATEFILE >> $IRCDATEFILE
        echo -n '    ➮ ' >> $IRCDATEFILE
        echo -n Generation completed at $(date +%R) >> $IRCDATEFILE
        seconds2=$(date +%s )
        delta=$((seconds2 - seconds1))
        echo ", i.e. $delta seconds to (re)generate ⟲" >> $IRCDATEFILE
        echo ""
        echo "Done generating. Upload next."
        echo "" 
    
    
    echo '========= Sending Bulletin to Techrights ========= '
    
    [redacted]
    
    
    echo '========= Sending Bulletin to Raspi ========= '
    
    [redacted]
    
    
    echo ""
    echo Techrights Bulletin for $IRCFULLDATE http://techrights.org/txt full archive: http://techrights.org/txt-archives
    echo ""
    echo 'Techrights full IPFS index updated just now http://techrights.org/ipfs available as plain text @ http://techrights.org/ipfs/txt'
    echo ""
    
    echo "✩░▒▓▆▅▃▂▁𝐁𝐔𝐋𝐋𝐄𝐓𝐈𝐍▁▂▃▅▆▓▒░✩ Yesterday's bulletin is now ready! 🅷🆃🆃🅿: http://techrights.org/txt-archives/$IRCDATEFILE | 🅶🅴🅼🅸🅽🅸 gemini://gemini.techrights.org/tr_text_version/$IRCDATEFILE (tentative address, to work an hour from now)"  > ~/ii//techrights3/irc.techrights.org/#boycottnovell-social/in
    echo "✩░▒▓▆▅▃▂▁𝐁𝐔𝐋𝐋𝐄𝐓𝐈𝐍▁▂▃▅▆▓▒░✩ Yesterday's bulletin is now ready! 🅷🆃🆃🅿: http://techrights.org/txt-archives/$IRCDATEFILE | 🅶🅴🅼🅸🅽🅸 gemini://gemini.techrights.org/tr_text_version/$IRCDATEFILE (tentative address, to work an hour from now)"  > ~/ii/techrights3/irc.techrights.org/#techrights/in
        
    done
    DISPLAY=:0.0  falkon http://techrights.org/txt
    sleep 20
    

    Desktop-Utils/.directory-listing-ok

    Desktop-Utils/track-apache-logs-host-documents.sh

    #!/bin/sh
    
    # 2021-06-25
    
    # follow the Apache logs
    # and show only legit requests for host
    # main documents
    tail -F /var/log/httpd/techrights.org-access_log \
    | awk '
    	$9=="200" &&
    	$6~/GET/ && 
    	$7!~/\.jpe?g$/ && \
    	$7!~/\.png$/ && \
    	$7!~/\.gif$/ {\
    		print
    	}; 
    	
    	{
    		fflush();
    	}'
    
    

    Desktop-Utils/tweets.sh

    # curl -4 http://wttr.in/Manchester
     feh --bg-fill --randomize /media/roy/c3fd5b6e-794f-4f24-b3e7-b4ead3722f11/home/roy/Main/Graphics/Wallpapers/Single\ Head/natgeo/* &
    
    while [ 1 ] 
    do
    echo '█████████████████████████████████████████████████████████████'
     tail -n 5000 ~/.xchat2/xchatlogs/FreeNode-#boycottnovell-social.log | cut -c 30-190 | sed s/11\#/\#/ | sed 's/13\@/___________________________TWEET_TO_/' | sed 's/02 \@schestowitz/RT_OF__________________________\@schestowitz_RT_/' |    grep -a -B1 -A2  --color=auto @schest |grep -a -v "@schest"  
    # tail -n 5000 ~/.xchat2/xchatlogs/FreeNode-#boycottnovell-social.log | cut -c 30-190 | sed s/11\#/\#/ | sed 's/13\@/___________________________TWEET_TO_/' | sed 's/02 \@schestowitz/RT_OF__________________________\@schestowitz_RT_/' |    grep -B1 -A2 -c2 --color=auto @schest |grep -v "@schest" | sed 'N;s/\n/ /' | sed 'N;s/\-\-/ /'
    # tail -n 5000 ~/.xchat2/xchatlogs/FreeNode-#boycottnovell-social.log | cut -c 45-190 | sed s/11\#/\#/ | sed 's/13\@/___________________________TWEET_TO_/' | sed 's/02 \@schestowitz/RT_OF__________________________\@schestowitz_RT_/' |    grep -A2 --color=auto @schest |grep -v "@schest" | sed 'N;s/\n/ /' | sed 'N;s/\-\-/ /'
    # tail -n 5000 ~/.xchat2/scrollback/FreeNode/#boycottnovell-social.txt  | sed s/11\#/\#/ |  grep --color=auto schestowitz | grep -v  "twitter.com"
    # tail -n 10000 ~/.xchat2/xchatlogs/FreeNode-#boycottnovell-social.log
    echo '█████████████████████████████████████████████████████████████'
     tail -n 5000 ~/.xchat2/xchatlogs/FreeNode-#boycottnovell-social.log | cut -c 30-190  | sed 's/\.\.\.*/_________!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/' | grep --color=auto joindia
    # echo '█████████████████████████████████████████████████████████████'
    # date
    sleep 1900
    clear 
    # feh --bg-fill --randomize /media/roy/c3fd5b6e-794f-4f24-b3e7-b4ead3722f11/home/roy/Main/Graphics/Wallpapers/Single\ Head/natgeo/* &
    done
    ]
    

    Desktop-Utils/compress-links.sh

    awk '!seen[$0]++'  RSS.html  | sed 's/█████ http/\n\n\n\n█████ http/' >> RSS2.html
    

    Desktop-Utils/tail-irc.sh

    # tail -f ~/.xchat2/xchatlogs/FreeNode-*
    # tail -f ~/.xchat2/xchatlogs/FreeNode-#*  | grep "<"  # | sed "s/\=\=> \/home\/roy\/.xchat2\/xchatlogs\/FreeNode-/          /"
    # tail -f ~/.xchat2/xchatlogs/FreeNode-#*     | sed "s/aaa/ /"
    # tail -f ~/.xchat2/xchatlogs/FreeNode-#*   | sed "s/\=\=> \/home\/roy\/.xchat2\/xchatlogs\/FreeNode-/          /"
    # tail -f ~/.xchat2/xchatlogs/FreeNode-#* # |  sed "s/home\/roy\/.xchat2\/xchatlogs\/FreeNode-/ /" | grep "<"   
    
    
    
    tail -n 0  -F ~/.xchat2/xchatlogs/FreeNode-#* \
    | sed -n -u  "/ /home/roy/.xchat2/xchatlogs/FreeNode-|                                                                      |;p}" >> ~/irc-status.txt
    
    

    Desktop-Utils/dents.sh

     rsstail -u https://joindiaspora.com/public/schestowitz.atom  -d -1 | grep -v 'Title:' | html2text -width 1000 | sed 's/'Description:'/➬/'
    

    Desktop-Utils/timeline.sh

    #!/bin/sh
    
    # Timeline (an outdated name) deals with Daily Links.
    # It processes or pre-processes batches of links for
    # Posting and tidying up.
    #
    # A lot of the below bits are commented out because
    # (for legacy reasons) it was optimised somewhat
    # for social control media.
    
    cd ~
    find ./Links/ -type f -name '*-merged.html' -print | sort -r | head -n 1
    
    # Get the latest file in the batch
    
    Date=$(date +"%F")
    YEAR=$(date -d "${Date}" +"%Y")
    MONTH=$(date -d "${Date}" +"%m")
    DAY=$(date -d "${Date}" +"%d")
    
    # sed -e 's///;' ~/Desktop/Text_Workspace/images/$YEAR-$MONTH-$DAY-merged.html > ~/Desktop/Text_Workspace/images/timeline.html && kate  ~/Desktop/Text_Workspace/images/timeline.html
    # sed -e 's///;' \
    # DATE=$(date -d "$D" '+%F')
    
    ls -la  ~/Links/m$YEAR-$MONTH/$YEAR-$MONTH-$DAY-merged.html 
    
    # Display details such as size
    
    echo 'Loading in 0.5 secs' # Vary a bit to debug the above, see "sleep" below
    echo 'Retreiving technical/supplementary feeds'
    daily-supplementary-feeds.sh    # This could be done as a background job, but then there's no guarantee
                                    # it'll finish on time (race condition)
    
    sleep 0.5
    cat  ~/Links/m$YEAR-$MONTH/$YEAR-$MONTH-$DAY-merged.html  ~/$YEAR-$MONTH-$DAY.supplementary.html  >  ~/Desktop/Text_Workspace/images/timeline-mix.html && \
    perl ~/add-lines-for-irc.pl ~/Desktop/Text_Workspace/images/timeline-mix.html | \
    sed -Ee 's//"" ☛\1/' \
        > ~/Desktop/Text_Workspace/images/timeline.html && \
    sed -Ee 's|
    | |' \ -e 's|

    | |' \ ~/Desktop/Text_Workspace/images/timeline.html \ > ~/Desktop/Text_Workspace/images/timeline2.html && \ sed -e '1,21d' ~/Desktop/Text_Workspace/images/timeline2.html > ~/Desktop/Text_Workspace/images/timeline.html && \ head -n -3 ~/Desktop/Text_Workspace/images/timeline.html > ~/Desktop/Text_Workspace/images/timeline2.html && \ sed 's/<\/ul><\/li>/ /' ~/Desktop/Text_Workspace/images/timeline2.html > ~/Desktop/Text_Workspace/images/timeline.html && \ # sed 's/#Meduza/#meduza #ru #russia/' ~/Desktop/Text_Workspace/images/timeline.html > ~/Desktop/Text_Workspace/images/timeline2.html && \ sed 's/<\/ul>/ /' ~/Desktop/Text_Workspace/images/timeline.html > ~/Desktop/Text_Workspace/images/timeline2.html && \ perl -0777 -pe 's/

    \n <\/p>\n //g' ~/Desktop/Text_Workspace/images/timeline2.html > ~/Desktop/Text_Workspace/images/timeline.html && \ # sed 's/#TorrentFreak/#TorrentFreak #copyright #copyrights/' ~/Desktop/Text_Workspace/images/timeline2.html > ~/Desktop/Text_Workspace/images/timeline.html && \ sed 's/ - CounterPunch.org//' ~/Desktop/Text_Workspace/images/timeline.html > ~/Desktop/Text_Workspace/images/timeline2.html && \ sed 's/


    /\n\n\n/' ~/Desktop/Text_Workspace/images/timeline2.html > ~/Desktop/Text_Workspace/images/timeline.html && \ sed 's/Source: 0//' ~/Desktop/Text_Workspace/images/timeline.html > ~/Desktop/Text_Workspace/images/timeline2.html && \ perl -0777 -pe 's/
    \n<\/blockquote>/\n/g' ~/Desktop/Text_Workspace/images/timeline2.html > ~/Desktop/Text_Workspace/images/timeline.html && \ sed 's/<\/blockquote><\/li>/<\/blockquote><\/li>\n/' ~/Desktop/Text_Workspace/images/timeline.html > ~/Desktop/Text_Workspace/images/timeline2.html && \ sed 's/
    /\n\n\n\n/' ~/Desktop/Text_Workspace/images/timeline2.html > ~/Desktop/Text_Workspace/images/timeline.html && \ sed 's/\n\n\n/\n/' ~/Desktop/Text_Workspace/images/timeline.html > ~/Desktop/Text_Workspace/images/timeline2.html && \ sed 's/

    Desktop-Utils/tr-remote-gemini-cron-updater

    #!/bin/sh
    
    # 2021-02-19
    
    PATH=/usr/local/bin:/usr/bin:/bin
    
    qdbus org.kde.KWin /KWin setCurrentDesktop 3  # go to correct workspace, just in case
    
    falkon https://validator.w3.org/check?uri=http%3A%2F%2Ftechrights.org%2F%3Fstoriesd&charset=%28detect+automatically%29&doctype=Inline&group=0&user-agent=W3C_Validator%2F1.3+http%3A%2F%2Fvalidator.w3.org%2Fservices
    
    bash ./process-latest-post.sh 
    
    # falkon http://techrights.org/?stories
    
    tmp=$(mktemp) || exit 1
    trap "rm -f -- \"$tmp\"" EXIT
    
    # this key is locked at the other end and not good for anything else
    # it will only run the cron updater script
    # there appears to no longer be a way to either embed a key
    # or embed a script within a key
    cat << EOK > $tmp
    [Key deprecated or outdated]
    EOK
    
    echo Updating Gemini via RSS
    ssh \
    	-o IdentitiesOnly=yes \
            -o IdentityFile="$tmp" \
    	-o RequestTTY=no \
    	gemini@gemini.techrights.org
    
    if test 0 -eq $?
    then
    	echo Success
    else
    	echo Failure of some kind
    fi
    
    rm -f -- "$tmp"
    notify-send --app-name=konversation -t 3500 -u low 'Done updating'
    
    # trap - EXIT
    
    # read -p 'Press Return to Exit' a
    # exit 0
    

    Desktop-Utils/check-remote-status.sh

    watch -t -n 620  --color 'tail -n200  remote-status.txt  | \
    	uniq && echo "                   ____________" \
    	&& echo -n "                    " && \
    	date +"%F" && \
    	echo "                   ▔▔▔▔▔▔▔▔▔▔▔▔"'
    

    Desktop-Utils/rrrrr.sh

    #!/bin/sh
    
    PATH=${HOME}/bin:/usr/local/bin:/usr/bin:/bin
    style="${XDG_RUNTIME_DIR}/rrrrr.css"
    html="${XDG_RUNTIME_DIR}/rrrrr.html"
    
    umask 0027
    
    set -e 
    
    read -p 'Press Enter to start .. may take 3 to 6 minutes ...' a
    
    test -f ${style} \
            || rrrrr.py --css > ${style} 
    
    echo "Runnning"
    
    time rrrrr.py > ${html}
    
    echo "Completed."
    
    DISPLAY=:0.0 firefox ${html} &
    
    read -p 'Press Enter to close this window' a
    
    exit 0
    

    Desktop-Utils/monitor_irc.sh

    watch -n 7  --color ./view_irc.sh
    

    Desktop-Utils/preview.sh

    #!/bin/bash
    # Licence: Public Domain, feel free to share as you see fit
    #
    # Author: Roy Schestowitz and others
    #
    # Purpose: Converts mp4 (downloaded) or webM (typically produced
    # locally) into a Techrights-branded video while
    # automating much of the workflow, including upload and I/O
    #
    # Note: Merged videos must be strictly compatible in terms of their
    # sampling rate, codec type, and a few other factors.
    # This is a common issue for a lot of people who use ffmpeg and it
    # took them many hours to overcome (many trials and errors).
    # We thus suggest converting the files accordingly, upfront.
    #
    # For 48k on mute (no sound) pre-process as follows:
    # ffmpeg -i "outro.mp4" -f lavfi  -i anullsrc=cl=mono:r=48000 \
    #   -shortest -y "outro-new.mp4"
    #
    # Another sample rate (44k) on mute, less typical:
    # ffmpeg -i "outro.mp4" -f lavfi  -i anullsrc=cl=mono:r=44000 \
    # -shortest -y "outro-44k.mp4"
    #
    # Background music at 48k:
    # ffmpeg -i "techrights-sunrise.mp4" \
    #    -i Desktop/Text_Workspace/images/techbytes-music/keep-calm-and-podcast/Balearic-Paradox.mp3 \
    #    -map 0:v:0 -map 1:a:0 -ar 48000  -shortest -y "techrights-sunrise-new.mp4"
    #
    # Another track/s:
    # ffmpeg -i "art-intro.mp4" -i Desktop/Text_Workspace/images/techbytes-music/keep-calm-and-podcast/Raining-Again.mp3 -map 0:v:0 -map 1:a:0 -ar 48000  -shortest -y "art-intro-new.mp4"
    # ffmpeg -i "art-intro.mp4" -i Desktop/Text_Workspace/images/techbytes-music/keep-calm-and-podcast/Let-The-Sunshine.mp3 -map 0:v:0 -map 1:a:0 -ar 48000  -shortest -y "art-intro-new.mp4"
    # ffmpeg -i "art-intro.mp4" -i Desktop/Text_Workspace/images/techbytes-music/keep-calm-and-podcast/Step-To-The-Beat.mp3 -map 0:v:0 -map 1:a:0 -ar 48000  -shortest -y "art-intro-new.mp4"
    #
    # Change recorded file (see settings/screenshots)
    #
    # Simpler transition for video covers (known as posters):
    # ffmpeg -ss 41 -t 3 -i $VIDEO_FILE.webm -vf \
    #   "select=mod(n\,2),fps=10,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 ~/intermediate.gif
    
    # Prepare the inputs and map these onto better variable name
    echo Input file $1
    VIDEO_FILE=$1
    VIDEO_START=$2
    VIDEO_NAME=$3
    echo Processing $VIDEO_FILE
    
    # By default we work in the home directory (many of the residual files
    # will end up dicarded anyway)
    cd ~
    rm ~/intermediate.gif       # purge to avoid nagging (in case of multiple runs)
    rm ~/intermediate2.gif
    rm $VIDEO_FILE.gif
    
    # Render frame 'numbers'
    ffmpeg \
    	-ss $VIDEO_START \
    	-t 20 \
    	-i $VIDEO_FILE.webm \
    	-vf "select=not(mod(n\,10)),fps=2,scale=480:-1:\
    	flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \
    	-r 16 -filter:v "setpts=0.1*PTS"  \
    	-loop 0 ~/intermediate.gif
    # sleep 2
    
    # Add logo to the preview/poster
    ffmpeg \
    	-i ~/intermediate.gif \
    	-i ~/videos-techrights/mogz-video-poster-4-small.png  \
    	-filter_complex "[1]format=rgba,colorchannelmixer=aa=0.7[logo];\
    		[0][logo]overlay=0:H-h--1:format=auto" \
    	-codec:a copy \
    	~/intermediate2.gif
    
    # Display additional stuff (text)
    date=$(date +%d-%m-%Y)
    ffmpeg \
    	-i ~/intermediate2.gif  \
    	-vf "drawtext=fontfile=/home/roy/Main/Misc/Work/Sirius/sirius_site/templates/fonts/DroidSerif-BoldItalic-webfont.ttf:text='$date':x=520:y=446:fontsize=20:fontcolor=black:box=1:boxcolor=white@0.2: boxborderw=5,drawtext=fontfile=/home/roy/Main/Misc/Work/Sirius/sirius_site/templates/fonts/distth_-webfont.ttf:text='$VIDEO_NAME':x=30:y=0+20*t::fontsize=34:fontcolor=white:box=1:boxcolor=black@0.6: boxborderw=5, drawtext=text='timestamp: %{pts \: hms}': x=490: y=30: fontsize=16:fontcolor=yellow@0.9: box=1: boxcolor=black@0.6: boxborderw=5" \
    	-c:a copy $VIDEO_FILE.gif
    # sleep 2
    
    # Now preview and show file size (for the poster to be uploaded later)
    
    gwenview $VIDEO_FILE.gif # choose image viewer of choice here
    ls -la $VIDEO_FILE.gif # just to show the size is 'sane'
    
    # Prepare post template for Techrights (handy for convenient copy-paste)
    
    echo '_____________________________________' && echo "" && echo ""
    echo "Video download link | md5sum " && echo "$VIDEO_NAME" && echo "Creative Commons Attribution-No Derivative Works 4.0" && echo '' && echo "[video width=\"480\" height=\"340\" webm=\"http://techrights.org/videos/$VIDEO_FILE.webm\" poster=\"http://techrights.org/videos/$VIDEO_FILE.gif\"][/video]"
    echo "" && echo "Summary: "
    echo "" && echo ""
    echo "T2"
    echo "

    T

    " echo "" && echo "" echo "" echo "" && echo "" && echo '_____________________________________' trap - EXIT # Prompt to proceed, only if happy with the poster image (otherwise, change and rerun) read -p 'Press Return to convert full video to MP4 with label' a # By all means comment out the lines below if the video is # already in mp4 format (e.g. downloaded from the Web) nice ffmpeg -i $VIDEO_FILE.webm \ -i ~/videos-techrights/mogz-video-poster-4-short.png \ -filter_complex "[1]format=rgba,colorchannelmixer=aa=0.7[logo];[0][logo]overlay=0:H-h--1:format=auto" \ -c:v libx264 -preset slow \ $VIDEO_FILE.mp4 notify-send --app-name=konversation -t 3500 -u low \ 'WebM -> MP4 processing now done! Merging in 10 seconds.' sleep 10 mv $VIDEO_FILE.webm $VIDEO_FILE.orig.webm # keep safe the original file, just in case something goes wrong # upload the .gif file upfront to save time and parallelise notify-send --app-name=konversation -t 3500 -u low 'Uploading gif, creating webM' # load functions here, AWK will also have to do this to access functions . ./video-uploads.sh echo "First upload: GIF file uploaded in the background" uploadgif $VIDEO_FILE & echo "Done upload of GIF file" echo '' > ./recipe.txt # just to be sure (if no information or no file exists) # Choose at random, or pick manually by uncommenting from the list below shuf -n 1 intro.list > ./recipe.txt # -- Or uncomment one of the following -- # # For intro (grouped in fives) # (Old): # # echo 'file intro-sketch-new.mp4' > ./recipe.txt # echo 'file intro-beach-new.mp4' > ./recipe.txt # echo 'file intro-purple-new.mp4' > ./recipe.txt # echo 'file techrights-sunrise-new.mp4' > ./recipe.txt # echo 'file intro-new.mp4' > ./recipe.txt # echo 'file intro-waves-new.mp4' > ./recipe.txt # echo 'file intro-swoosh-new.mp4' > ./recipe.txt # echo 'file intro-night-new.mp4' > ./recipe.txt # # June 2021: # # echo 'file skyline-intro-new.mp4' > ./recipe.txt # echo 'file art-intro-new.mp4' > ./recipe.txt # echo 'file monitoring-intro-new.mp4' > ./recipe.txt # echo 'file bridge-intro-new.mp4' > ./recipe.txt # echo 'file sky-intro-new.mp4' > ./recipe.txt # echo 'file paper-intro-new.mp4' > ./recipe.txt # echo 'file road-intro-new.mp4' > ./recipe.txt # echo 'file seashore-intro-new.mp4' > ./recipe.txt # echo 'file top-down-intro-new.mp4' > ./recipe.txt # echo 'file shoes-intro-new.mp4' > ./recipe.txt # echo 'file sparkle-intro-new.mp4' > ./recipe.txt # echo 'file running-intro-new.mp4' > ./recipe.txt # echo 'file computer-intro-new.mp4' > ./recipe.txt # echo 'file water-intro-new.mp4' > ./recipe.txt # echo 'file car-intro-new.mp4' > ./recipe.txt # echo 'file dirty-beach-intro-new.mp4' > ./recipe.txt # echo 'file bridges-intro-new.mp4' > ./recipe.txt # echo 'file mills-intro-new.mp4' > ./recipe.txt # echo 'file router-intro-new.mp4' > ./recipe.txt # echo 'file walking-intro-new.mp4' > ./recipe.txt # echo 'file floor-intro-new.mp4' > ./recipe.txt # echo 'file rocks-intro-new.mp4' > ./recipe.txt # echo 'file narwal-intro-new.mp4' > ./recipe.txt # echo 'file newspaper-intro-new.mp4' > ./recipe.txt # # Sept. 2021: # # echo 'file red-new.mp4' > ./recipe.txt # echo 'file horror-new.mp4' > ./recipe.txt # echo 'file amber-new.mp4' > ./recipe.txt # echo 'file bench-new.mp4' > ./recipe.txt # echo 'file people-new.mp4' > ./recipe.txt # echo 'file letters-new.mp4' > ./recipe.txt # echo 'file trees-new.mp4' > ./recipe.txt # echo 'file man-sitting-new.mp4' > ./recipe.txt # echo 'file indie-new.mp4' > ./recipe.txt # echo 'file Techrights-new.mp4' > ./recipe.txt # 44k, mute (no sound): # echo 'file intro-44k.mp4' > ./recipe.txt echo file $VIDEO_FILE.mp4 >> ./recipe.txt # the key content to be 'sandwiched' shuf -n 1 outro.list >> ./recipe.txt # -- Or uncomment one (or more) of the following -- # # Outro # # echo 'file outro-palawan-new.mp4' >> ./recipe.txt # echo 'file outro-new.mp4' >> ./recipe.txt # echo 'file outro-space-new.mp4' >> ./recipe.txt # echo 'file outro-office-new.mp4' >> ./recipe.txt # echo 'file outro-island-new.mp4' >> ./recipe.txt # # echo 'file outro-thank-you-new.mp4' >> ./recipe.txt # echo 'file outro-subway-new.mp4' >> ./recipe.txt # # June 2021: # # echo 'file Techrights-Arrows-new.mp4' >> ./recipe.txt # echo 'file retro-outro-new.mp4' >> ./recipe.txt # echo 'file space-outro-new.mp4' >> ./recipe.txt # echo 'file techno-outro-new.mp4' >> ./recipe.txt # echo 'file clouds-outro-new.mp4' >> ./recipe.txt # echo 'file industrial-outro-new.mp4' >> ./recipe.txt # echo 'file blobs-outro-new.mp4' >> ./recipe.txt # echo 'file leaves-outro-new.mp4' >> ./recipe.txt # echo 'file keyboard-outro-new.mp4' >> ./recipe.txt # echo 'file circle-outro-new.mp4' >> ./recipe.txt # echo 'file terrain-outro-new.mp4' >> ./recipe.txt # echo 'file white-circle-outro-new.mp4' >> ./recipe.txt # echo 'file mechanics-outro-new.mp4' >> ./recipe.txt # echo 'file travel-outro-new.mp4' >> ./recipe.txt # echo 'file forest-outro-new.mp4' >> ./recipe.txt # # BAD compatibility (at 48k for audio): # echo 'file outro-car-48k.mp4' >> ./recipe.txt # 44k mute: # echo 'file outro-44k.mp4' >> ./recipe.txt # BAD compatibility (at 44k for audio): # echo 'file outro-car-44k.mp4' >> ./recipe.txt # # Audio extraction (if needed; removing the video part): # ffmpeg -i "[FILENAME].webm" -vn -c:a copy "$(basename "[FILENAME]" .webm)".ogg # # Quick video clipping, if needed: # ffmpeg -i Video-input.webm -ss 00:00:00 -to 00:27:14 -c:v copy -c:a copy output.webm echo ' ===================== Recipe: ===================' cat ./recipe.txt echo ' =================================================' # debugging mode (uncomment the below to make I/O quieter): # set -x # set -v # set -e # estimate final video size filesize=$( awk ' /^file/ { cmd="stat -c \"%s\" " $2; cmd | getline s; close(cmd); size=size+s } END { print size }' ./recipe.txt ); nice ffmpeg -y -progress - -nostats \ -f concat \ -i ./recipe.txt \ -metadata title="$VIDEO_NAME" \ -metadata creator="Techrights" \ -metadata \ license="Creative Commons Attribution-No Derivative Works 4.0" \ -metadata author="Roy Schestowitz" \ -metadata date="$(stat --printf='%y' $VIDEO_FILE.orig.webm \ | cut -d ' ' -f1)" $VIDEO_FILE.webm 2>/dev/null \ | perl -s -n -a -e ' BEGIN { $/="progress=continue\n"; # input record separator $cutoff=int($f/3); print("Start uploading at ",$cutoff,"\n"); } if (! $skip) { @size=split(/=/,$F[5]); print($size[1]," - "); if ($size[1]>=$cutoff) { $skip++; $cmd="sh -c \". ./video-uploads.sh; \ uploadvideo $v &\""; system($cmd) == 0 or warn("cmd failed\n"); } }' -- -f=$filesize -v=$VIDEO_FILE # send a global alert notify-send \ --app-name=konversation \ -t 3500 -u low 'Video processing and conversion done! Uploading webM file!' echo '' md5sum $VIDEO_FILE.webm echo '' echo "Video upload (main file)" uploadvideofast $VIDEO_FILE echo "Done upload (main file)" echo '' echo '' echo -n 'md5sum ' echo -n $VIDEO_FILE echo '.webm' echo "Checksum remotely checked " checksum $VIDEO_FILE mv /home/roy/$VIDEO_FILE.mp4 /tmp notify-send --app-name=konversation -t 3500 -u low 'DONE Uploading' # Show space taken up by stale MP4 files du -ch /tmp/*.mp4 | tail -n1 # Enable quick testing below echo 'Test file by running:' echo -n 'vlc ' echo -n $VIDEO_FILE echo '.webm' trap - EXIT read -p 'Press Return to play the video' a mpv $VIDEO_FILE.webm # For convenience, put the checksum in the system clipboard md5sum $VIDEO_FILE.webm | cut -f 1 -d " " | xclip -selection clipboard

    => Back to main index

    Proxy Information
    Original URL
    gemini://gemini.techrights.org/git/tr-git/Desktop-Utils
    Status Code
    Success (20)
    Meta
    text/gemini;lang=en-GB
    Capsule Response Time
    385.571708 milliseconds
    Gemini-to-HTML Time
    4.766455 milliseconds

    This content has been proxied by September (ba2dc).