{"id":13558520,"url":"https://github.com/mdom/txtnish","last_synced_at":"2025-04-03T13:31:26.753Z","repository":{"id":53108876,"uuid":"81689098","full_name":"mdom/txtnish","owner":"mdom","description":"A twtxt client with minimal dependencies","archived":true,"fork":false,"pushed_at":"2021-07-29T08:49:25.000Z","size":175,"stargazers_count":106,"open_issues_count":0,"forks_count":7,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-11-04T09:37:23.699Z","etag":null,"topics":["microblogging","posix","shellscript","twtxt","twtxt-client"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mdom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-02-11T23:13:53.000Z","updated_at":"2024-09-29T17:33:00.000Z","dependencies_parsed_at":"2022-09-08T22:20:52.913Z","dependency_job_id":null,"html_url":"https://github.com/mdom/txtnish","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdom%2Ftxtnish","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdom%2Ftxtnish/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdom%2Ftxtnish/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdom%2Ftxtnish/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdom","download_url":"https://codeload.github.com/mdom/txtnish/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247009612,"owners_count":20868578,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["microblogging","posix","shellscript","twtxt","twtxt-client"],"created_at":"2024-08-01T12:05:00.117Z","updated_at":"2025-04-03T13:31:26.469Z","avatar_url":"https://github.com/mdom.png","language":"Shell","funding_links":[],"categories":["Shell","others"],"sub_categories":[],"readme":"# txtnish\nA twtxt client with minimal dependencies\n\n# Unmaintained\n\nI haven't used txtnish for a long time now, so it's probably time to archive this project. Sorry.\n\n# Synopsis\n\n```sh\n$ txtnish follow bob http://example.com/twtxt.txt\n$ txtnish tweet 'Hello twtxt world'\n$ txtnish timeline\n```\n\n# Description\n\n*txtnish* is a client for [twtxt](https://github.com/buckket/twtxt)–the \ndecentralised, minimalist microblogging service for hackers.\n\nInstead of signing up at a closed and/or regulated microblogging platform,\ngetting your status updates out with twtxt is as easy as putting them in a\npublicly accessible text file. The URL pointing to this file is your identity,\nyour account. twtxt then tracks these text files, like a feedreader, and builds\nyour unique timeline out of them, depending on which files you track. The\nformat is simple, human readable, and integrates well with UNIX command line\nutilities.\n\nAll subcommands of *txtnish* provide extensive help, so don't hesitate\nto call them with the `-h` option.\n\nIf you are a new user, there is a quickstart command that will ask you some\nquestions and write a configuration file for you:\n\n```sh\n$ txtnish quickstart\n```\n\n# Installation\n\n*txtnish* only depends on tools you normally find in a POSIX environment:\n*awk*, *sort*, *cut* and *sh*. There are only two exceptions: you need *curl*\nto download twtxt files and a *xargs* that support parallel processing\nvia *-P*. You can use a *xargs* without, but then *txtnish* falls back to\ndownloading one url after another.\n\nInstallation itself is as easy as it gets: just copy the script somewhere\nin your *PATH*.\n\n# Subcommands\n\n## tweet\n\nAppends a new tweet to your twtxt file. There are three different ways\nto input tweets. You can either pipe them into tweet, or pass them along\nas arguments. When you call `txtnish tweet` without any arguments and\nit's not connected to a pipe, it will call `$EDITOR` for you and tweet\nany line as a separate tweet.\n\n## timeline\n\nRetrieves your personal timeline.\n\n## publish\n\nPublishes your twtfile. This is especially helpful after you changed your\n`post_tweet_hook`.\n\n## follow\n\nAdds a new source to your followings.\n\n## unfollow\n\nRemoves an existing source from your followings.\n\n## following\n\nPrints the list of the sources you're following.\n\n## reply\n\nDisplays an outcommented version of your timeline in `$EDITOR`. Every\nline that is not commented after you saved and exited the editor, will\nbe tweeted.\n\n# Search tweets\n\nYou can provide a search expression to filter your timeline with the flag\n`-S`. The search expression is an *awk* conditional with four predefined\nvariables:\n\n* msg: the message itself\n* url: the url of the twtfile\n* nick: this nick associated with the url\n* ts: the timestamp of the message\n\nExamples:\n\n```sh\ntxtnish timeline -S 'nick == \"mdom\" \u0026\u0026 msg ~ /#twtxt/'\n```\n\n# Configuration\n\nAt startup txtnish checks whether `~/.config/txtnish/config` exists and\nwill source it if it exists. The configuration file must be a valid\nshell script.\n\n## General\n\n### add\\_metadata\n\nAdd metadata to twtxt file. Default to 0 (false).\n\n### awk\n\nPath to the awk binary. Defaults to awk.\n\n### sed\n\nPath to the sed binary. Defaults to sed.\n\n### limit\n\nHow many tweets should be shown in timeline. Defaults to 20.\n\n### formatter\n\nDefined which command is used to wrap each tweet to fit on the screen. It\ndefaults to `fold -s`.\n\n### sort\\_order\n\nHow to sort tweets. This option can be either *ascending* or\n*descending*. ascending prints the oldest tweet first, descending the\nnewest. This value can be overridden with the `-d` and `-a` flags.\n\n### timeout\n\nMaximum time in seconds that each http connection can take. Defaults\nto zero.\n\n### use_color\n\nIf the output should be colorized with ANSI escape sequences. See the\nsection *COLORS* on how to change the color settings. Defaults to 1.\n\n### pager\n\nWhich pager to use if `use_pager` is enabled. Default to `less -R` in order\nto display colors. This can be toggled with `-p` or `-P` to enable or\ndisable  the pager. Defaults to 1.\n\n### disclose_identity\n\nIf set to 1, send your nick and twturl with every http request. This\nmakes only sense if you also set *twturl* and *nick*. Defaults to 0.\n\n### nick\n\nYour nick. This is used to collapse mentions of your *twturl* and is send to\nall feeds you're following if *disclose_identity* is set to 1.\nDefaults to the environment variable `$USER`.\n\n### twturl\n\nThe url of your feeds. This is used to collapse mentions and is send to\nall feeds you're following if *disclose_identity* is set to 1. Defaults\nto the environment variable `$USER`.\n\n### always_update\n\nAlways update all feeds before showing tweets. If you set this variable\nto 0, you need to update manually with the update command.\n\n### http_proxy\n\nSets the proxy server to use for HTTP.\n\n### https_proxy\n\nSets the proxy server to use for HTTPS.\n\n### sign_twtfile\n\nIf set to 1, sign the twtfile with pgp. Defaults to 0.\n\nIn case you are also overwriting the `post_tweet_hook` note that this\nwill create a signed file in a temporary directory and change the value of\n`twtfile` accordingly. Your twtfile will not be changed!\n\nSigning your twtfile might break some twtxt clients as lines without\na *TAB* are not allowed by a strict reading of the spec.\n\n### check_signature\n\nVerify pgp signatures and show the result in the timeline if set to 1. Defaults to 0.\n\n### sign_user\n\nSets a different local user to sign twtfile than what is the default. It will\nprint a message indicating an override is in place.\n\n### gpg_bin\n\nSets custom name of gpg executable.\n\n### ipfs_gateway\n\nWhen you subscribe to an `ipns://` address, txtnish will call this gateway to get\nthe users twtfile. Defaults to `http://localhost:8080` and falls back to\n`https://ipfs.io` if txtnish can't reach the gateway.\n\n## Publish with scp\n\n### scp_user\n\nUse the given username to connect to the remote server. Required to publish\nwith scp.\n\n### scp_host\n\nCopy twtfile to this host. Required to publish with scp.\n\n### scp_remote_name\n\nName of twtfile on remote host. Defaults to the basename of the twtfile.\n\n### sftp_over_scp\n\nUse SFTP instead of SCP if set to 1.\n\n## Publish with ftp\n\n### ftp_user\n\nUse the given username to connect to the remote server. Required to publish\nwith ftp.\n\n### ftp_host\nCopy twtfile to this host. Required to publish with ftp.\n\n### ftp_remote_name\nName of twtfile on remote host. Defaults to the basename of the twtfile.\n\n## Publish with IPFS\n\n### ipfs_publish\n\nPublish the twtfile with ipfs if set to 1. Defaults to 0.\n\nYou will need the ipfs tools and a running daemon to publish to ipfs.\n\n### ipfs_wrap_with_dir\n\nCall `ipfs add` with `--wrap-with-dir` if set to 1. Defaults to 0.\n\n### ipfs_recursive\n\nCall `ipfs add` with `--recursive` if set to 1. The complete directory of\nyour twtfile will be published. Defaults to 0.\n\n## Colors\n\nIf `use_color` is set to 1, the nick, timestamp, mentions and hashtags\nwill be colorized. txtnish recognizes black, red, green, yellow, blue,\nmagenta, cyan and white. You can set the background color with the prefix\n`on_`.\n\n```\ncolor_nick=\"yellow on_white\"\n```\n\nAdditional a color definiation can specify the attributes bold, bright,\nfaint, italic, underline, blink and fastblink if your terminal supports\nthem.\n\n```\ncolor_nick=\"yellow on_white blink\"\n```\n\nThe order of colors and attributes doesn't matter and multiple attributes can\nbe combined.\n\ntxtnish uses the following defaults.\n\n```sh\ncolor_nick=yellow\ncolor_time=blue\ncolor_mention=cyan\ncolor_hashtag=yellow\n```\n\n## Hooks\n\nTo customize the behaviour of *txtnish* the user can override functions.\n\n### pre_tweet_hook\n\nThis hook is called before a new tweet is appended to your twtfile. This can be\nuseful if you're using txtnish on multiple devices and want to update your\nlocal twtfile before appending to it. There's a predefined function\n`sync_twtfile` that does exactly that.\n\n```sh\npre_tweet_hook () {\n\tsync_twtfile\n}\n```\n\n### post_tweet_hook\n\npost_tweet_hook is called after txtnish has appended new tweets to your\ntwtfile. It's a good place to uploade your file somewhere.\n\n```sh\npost_tweet_hook () {\n\tgist -u ID -f \"$twtfile\"\n}\n```\n\n### filter_tweets_hook\n\n## See also\n\n[twtxt](https://github.com/buckket/twtxt), [we-are-twtxt](https://github.com/mdom/we-are-twtxt)\n\n# License\n\nCopyright 2017 Mario Domgoergen \u003cmario@domgoergen.com\u003e\n\nThis program is free software: you can redistribute it and/or modify it under\nthe terms of the GNU General Public License as published by the Free Software\nFoundation, either version 3 of the License, or (at your option) any later\nversion.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY\nWARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A\nPARTICULAR PURPOSE.  See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with\nthis program.  If not, see http://www.gnu.org/licenses/.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdom%2Ftxtnish","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmdom%2Ftxtnish","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdom%2Ftxtnish/lists"}