Sloom Sloum Sluom IV
Reviewed-on: #24 Looks great! Thanks @jlxip. Approved/merging in now.
|4 months ago|
|completions||4 months ago|
|.gitignore||4 years ago|
|README.md||4 months ago|
|SPECIFICATION.md||2 years ago|
|gab||1 year ago|
|gab.1.gz||2 years ago|
This is the second version of gab. The original existed as a bash script and opperated off of a single chat log. This updated version creates individual logs in each users home directory. The permissions for these logs should be set up to be world readable but writable only by the user. The way the script is set up, writing to another user's log should be impossible.
gab with no arguments will show the most recent n messages where n is the system default number of messages to show.
-h, --help, help
Print the help message and exit
-m, --msg, msg
Follow this with quoted text to add a message to the chat log
gab msg is run without a message then your
$EDITOR will be opened for you to type in your message. Be aware that each line will be a separate message in the chat log. Try not to spam
gab -m "This is a message"
-n, --new, new
This will report any channels that have new messages since you last viewed the channel.
This only shows channels you have previously contributed to, i.e. where you have a ~/.gab-channelname file in your home directory.
Put this line in your shell startup file and you will be notified on each login if there are new messages.
-N, --new-verbose, new-verbose
This is the same as -n, but also produces output even when no new messages exist.
-l, --list, list
View the chat log. Pass an integer for the number of recent posts you would like to view (defaults to 5)
gab -l 20
-b, --block, block
Block a user (you will not see their messages) by passing the user's name
gab -b some-spammy-user
-u, --unblock, unblock
Unblock a previously blocked user by passing the user's name
gab -u some-cool-user
-c, --channel, channel
Run without any further arguments, will list the available channels
Run with a channel name, will switch to that channel (creating it if it doesn't exist)
Creating a channel that ends in ! will create an unlisted channel that users can only join if they know it exists
gab -c my-channel
gab -c my-secret-channel!
Gab comes with a man page. To install it, copy it to your man path. As an example:
$ sudo cp ./gab.1.gz /usr/local/share/man/man1/gab.1.gz $ man gab
There are two shell completion scripts for gab. To install them, just copy:
$ sudo cp ./completions/bash /usr/share/bash-completion/completions/gab $ sudo cp ./completions/zsh /usr/share/zsh/functions/Completion/Unix/_gab
In order to keep gab reasonably snappy and reduce unneccessary file bloat, individual user chatlogs are limited to ~12kb in size. This is generally enough to have a solid backlog of text while letting ancient conversation naturally get forgotten (at least as far as the computer is concerned).
You may think to yourself: "hey, can I just edit my chatlog directly?" The answer is: yes. But in most cases you shouldnt. The program knows that it should not display any lines that are not formatted the way it expects. It also knows that the future has not happened yet and so you could not have said anything in the future. However, you could in theory get a timestamp for a future time to essentially schedule a comment, sort of? Times that it could be appropriate to edit a chat log include: correcting spelling from a previous post, changing what you said to either provide more accuracy or annoy your friends and win an argument of some form, or to delete a message. I think the best part about gab is that it is decentralized: you own your log and it is independent of program execution. As such, you have the right to remove stuff from it. You can unsay things, sort of (not from people's ears/eyes, but from being seen in the log again). This ability to be forgotten or to decide you no longer want something representing you has largely been lost on the internet and I am happy to have created something with this ability. Just remember, with great ability comes great responsibility (dont be a jerk and try not to be weird about how you edit your log).
Blocking/unblocking has been added in version 2.1. The hope is that on larger systems or systems with varried users that do not all get along harmoniously a user can prevent spam or aggressive (or otherwise obnoxious) users from appearing in their chatlog. This blocking can be undone at any time by issuing the
unblock command. When a user gets unblocked any messages that were missed while they were blocked (that have not been wiped out by the ~12k file limit) will be viewable.