14 comments

[ 2.7 ms ] story [ 36.2 ms ] thread
Why? I use the terminal but i have no idea how cli commands would get so distracting you have to parental lock yourself out of them like its entertainment or social media
Why have a dependency on Zenity instead of displaying the message in the terminal? Seems weirdly limiting to have a GUI dependency for a terminal application thus making this unusable on headless systems. I think you could make it optional and use STDERR if Zenity's not around.
So, I love that the README is nearly as long as the code itself.

Shorthand:

    PATH=$HOME/.bans:$PATH  # (prefix path with "banned" cmd-dir)
    printf "echo 'bad!'" > "$HOME/bans/some-cmd"  # (make `some-cmd` run `echo 'bad!'`)
...and then some goodies around tracking, reasons, etc... some niftiness around "auto-expiring" the banned command (self-deletes the "bad" shell script that's shadowing the actual command usage).

As to the sibling "why?" ... it's trivial to circumvent: `ban ls "I run it too much..."`, `/bin/ls` is still unaffected, `rm ~/.bans/ls`, etc... but I _do_ like the pause to allow a return to rationality, eg: "Hey, maybe I do run `ls` too much..." and then deciding how to proceed.

It'd probably be nicer if it did something like `(Bad) Chrome.app/*` on OSX, but as an exercise in shell gymnastics, I'm kindof all here for it! :-)

I wrote a similar piece of software but it just limits time spent on certain web sites per day.

It's amazing how much something so simple can change your life if you have a problem with that. I'd highly recommend everyone enable it. I think iOS has something like that built in too so you don't even need my stuff unless you're on eg Linux.

Frog put the cookies in a box. “There,” he said. “Now we will not any more cookies.”

“But we can open the box,” said Toad.

“That is true,” said Frog.

wish the README showed an example of what trying to use a banned command looked like.

rather than this being useful to stop "distracting" commands i see this being useful in stopping agents from calling `rm` for example

Yeah I’ve used this strategy simply to avoid accidents. If not for me, but also for others. On an old source control server, backed up of course, avoiding an errant “rm” or something else stupid can still save me hours of restore work, the outage and the RCA.
Woah thanks for all the comments everyone! To answer a recurring question: this is to prevent things from being called from bemenu (and its ilk) - definitely could have made that clearer in the README. Hopefully that clears up a lot of things.
(comment deleted)