
WTF: A personal information dashboard for your terminal - rbanffy
https://github.com/senorprogrammer/wtf
======
helb
Anyone remembers NetBSD's wtf?

[http://netbsd.gw.com/cgi-bin/man-cgi/man?wtf+6+NetBSD-
curren...](http://netbsd.gw.com/cgi-bin/man-cgi/man?wtf+6+NetBSD-current)

    
    
        $ wtf wtf          
        WTF: {what,when,where,who,why} the fuck                                                    
        $ wtf bsd          
        BSD: berkeley software distribution                                                        
        $ wtf linux        
        wtf: I don't know what linux means!

~~~
lgeorget
As a non-native English speaker, I need it all the time to follow
conversations on Internet. I've also made a a personal acronyms database to
read GCC's internals documentation and another to translate errno codes to
their constant name and vice-versa:
[https://github.com/lgeorget/acronymdb?files=1](https://github.com/lgeorget/acronymdb?files=1)

~~~
y4mi
> _As a non-native English speaker, I need it all the time to follow
> conversations on Internet_

I found that installing the google dictionary extension[1] for chrome solved
that problem for me entirely.

you just doubleclick on the word and a popup opens with its definition.

This extension is the primary reason I'd loath to ever to switch browsers.

[1] [https://chrome.google.com/webstore/detail/google-
dictionary-...](https://chrome.google.com/webstore/detail/google-dictionary-
by-goog/mgijmajocgfcbeboacabfgobmjgjcoja?hl=en)

~~~
Nannooskeeska
I'm trying out switching over to Firefox and this is 100% the biggest thing I
miss about Chrome. I keep double-clicking words and waiting a few seconds just
for nothing to pop up.

~~~
rationaloutlook
There are many extensions for Firefox that provide the same functionality.
Here's one: [https://addons.mozilla.org/en-US/firefox/addon/dictionary-
ex...](https://addons.mozilla.org/en-US/firefox/addon/dictionary-extension/)

Also, if you're using Windows, you can use WordWeb (which is a full-fledged
app).

~~~
y4mi
The firefox extension is incompatible with the current firefox version, and
the UX of WordWeb is ... incomparably bad.

------
minionslave
I don't know any go. I was able to read everything, like I wrote the code. Is
go usually that easy? If yes, I think I should learn it.

~~~
danielvf
Yes. One of go's strengths is that there are very few tricks and the language
is heavily biased towards easy reading over compact code.

~~~
brink
I'm also a Go noob. I tried writing a basic web server in Go yesterday to
handle Twilio SMS callbacks. Trying to inspect the requests I was receiving
was such a pain, I gave up and wrote the server with Sinatra. Am I missing
something that's making this more difficult than it should be?

~~~
dcardoza
I love Go specifically for this purpose. I wrote a simple server doing exactly
that with Twilio:
[https://github.com/dang3r/jenophone/](https://github.com/dang3r/jenophone/)

~~~
brink
Thanks! I'll check it out.

------
amelius
Can't this be made more general and modular by creating a windowing system for
terminals first, and then write little programs that operate in that system?

~~~
monkeynotes
At what point do we just say why not 'install a modern GUI'?

~~~
Jtsummers
I use TMUX to essentially create what this person has made. It's much more
versatile than a GUI for me because I can kill any "widget" and reopen it with
altered command line parameters. It's an incredibly useful and productive way
to work. And if I realize that I want data that isn't present, I can just
split a TMUX pane (or start a new TMUX window) and display it there.

~~~
JdeBP
There was a point where it was that simple to run GUI widgets on a desktop,
too. The likes of xman and xclock were just that, programs that one could just
run and stop.

~~~
earenndil
Such things are not dead! I still use one for my clock (buici-clock) and
another to show battery life (xbattbar).

------
PostOnce
I love this particular type of software, I have been considering doing the
same in python/urwid, but I have had trouble thinking up which modules would
be useful and/or interesting.

I would welcome suggestions of similar software, or modules that would be
useful if implemented for this, just for something to read or think about.

~~~
dspillett
_> but I have had trouble thinking up which modules would be useful and/or
interesting_

Anything interactive with a readable API: mail inboxes and IM services.

Calendar entries and other notifications published via online calendars.

Other online resources: RSS feeds, TV/film listings - modules to simply
display static data and/or filter & highlight specific items of interest.

Anything normally monitored by tools such as cacti/collectd/similar: disk IO,
connections, CPU use, memory, application status, ...

Remote versions of the above (either the core module supporting remote calls
or a generic server that allows modules to be run and their results read
remotely.

 _Though the key to writing software to scratch an itch is to make sure it
supports the things that would be useful and /or interesting to you._

------
sourceless
Really like it. My only criticisms are:

    
    
        * I'd love to be able to write my own modules for it
        * When a module's config is bad it just doesn't show -- no errors are produced (that I can find) so I don't know what in my config is bad.

~~~
senorprogrammer
You can write your own modules, you'll just need to fork the repo and write
them in Go. There's no DSL for it.

Good idea about the config. I'll create a feature issue for it.

~~~
ben509
Go uses less CPU and is less crashy, both of which are nice in a dashboard.

It also seems like more generic modules may handle the use cases you'd want a
DSL for.

For instance, there's already a text module; if a similar module can listen to
a FIFO or even listen on a socket, you can just throw whatever you need into
it from any language that can write to a filehandle.

If it can handle ANSI escapes, most commands that can write to a terminal
would work with it. So `{clear; ls --color=always} > /whatever/fifo` or `>
/dev/tcp/whatever/1234` could stick to my dashboard.

~~~
senorprogrammer
Both very interesting ideas indeed.

------
digitalsushi
Wednesday-Thursday-Friday looks like an excellent permanent pane for my tmux
to have a hotkey assigned to. I'm always resentful at myself that I haven't
figured out a way to replace ~/todo after 20 years of using (almost) the same
environment.

------
shmerl

       ~/.wtf/...
    

Doesn't follow XDG base directory spec.

~~~
senorprogrammer
Got a good pointer to more details? I don't know anything about that spec.

~~~
shmerl
See [https://specifications.freedesktop.org/basedir-
spec/basedir-...](https://specifications.freedesktop.org/basedir-spec/basedir-
spec-latest.html)

The main idea. You read $XDG_* variables, and use them if defined, and use
spec defaults if not. It declutters $HOME from dot directories.

~~~
senorprogrammer
I'll take a look, thanks.

------
Sir_Cmpwn
I'm not sure I would find all of this terribly useful, but it does remind me
of a little addition I made to my status script - the time in UTC as well as
local time. If you use a system where you are easily able to add arbitrary
text to your status bar, I highly recommend this addition. If you do not use
such a system, I highly recommend a change ;)

~~~
senorprogrammer
Anyone wanting to do something like you describe in the menubar should check
out Hammerspoon. Brilliant stuff.

~~~
philsnow
I am decidedly not a Mac person, but hammerspoon is one of my favorite pieces
of software in any category.

For people who don't know, it is a service you run on a Mac that has all of
Cocoa bound to Lua. You can script aaaaaaanything on your Mac in Lua. Don't
like the way Mac does window management? Treat yoself! Want to control
anything at all on your Mac with just keystrokes instead of endless pointy
clicky? Treat yoself!

------
flippyhead
Just like in the movies!

~~~
welly
It's a unix system! I know this!

~~~
kchr
That quote actually made me decide I wanted to know computers, at an early
stage.

She was so cool - AND saved the day with UNIX magic! :-)

~~~
ams6110
Except she used that wacky 3D file browser instead of ls, find, grep, etc...

~~~
Fnoord
> used that wacky 3D file browser

FSN [1] on a SGI running IRIX.

Didn't they use that one in Hackers as well?

[1] [http://www.siliconbunny.com/fsn-the-irix-3d-file-system-
tool...](http://www.siliconbunny.com/fsn-the-irix-3d-file-system-tool-from-
jurassic-park/)

------
SrslyJosh
I want this, but with more of a focus on running arbitrary commands and
formatting the output nicely.

------
dzhiurgis
Nice. Maybe it can replace my macOS dashboard if I keep one fullscreen space
with iTerm open.

~~~
senorprogrammer
Yep, that's exactly how I work with it.

------
stochastic_monk
The documentation seems insufficient. I can’t figure out how to switch between
panes, e.g., to modify the todo list. Once it’s selected, I expect to be able
to use it, but without knowing how, it is unusable.

~~~
senorprogrammer
Tab key to move between selectable panes. Forward-slash (/) on any selectable
pane to open the help.

Note that not all panes are selectable and quite possibly not all selectable
panes have help (they should but...)

------
ocdtrekkie
This is pretty neat. A dashboard screen isn't my style, but I've taught my
assistant program to answer a lot of the same questions.

~~~
TeMPOraL
Could you tell us more about your assistant program?

~~~
ocdtrekkie
It's a (bad) Visual Basic program that also runs my house and logs the GPS in
my car. And while it's meant to have voice recognition, it doesn't, because I
haven't found a good solution yet that meets my needs. It has a significant
number of half-implemented features, because I only invest time in it when
inspired to and only so far as it makes my life easier. There is no machine
learning of any kind and the command structure is quite static.

For instance, I found I was often asking my house a couple times throughout
the day for the thermostat status when I was at work (I have a fairly
temperature sensitive pet). This week I went ahead and just told it to go
ahead and wrote a little 'status report' email, and then call for it a couple
times a day in Windows Task Scheduler.

[https://github.com/ocdtrekkie/HAController](https://github.com/ocdtrekkie/HAController)

------
cybersol
I have used conky to do a lot of similar things in the past. It has a GUI
window, but is configured and displays mostly in text.

~~~
tkjef
yup, conky is what crunchbang used to use, too.

------
numbers
Kinda off topic but what font are you using in the screenshots? It's nice!

~~~
senorprogrammer
Roboto Mono Medium for Powerline 14pt

------
jackallis
how does a beginner learn how to do all this, not how to instal but LEARN from
beginnning. i am looking at this and i am like WTF is this.

~~~
vthallam
This is written in Go. I'm not sure this uses cobra, but you could start
easily by writing basic CLI tools using cobra[0]

[0] - [https://github.com/spf13/cobra](https://github.com/spf13/cobra)

------
batteryhorse
Whenever I see the letters WTF, the first thing that always comes to mind is
Web Template Framework

------
amelius
Does it also work on small terminals (e.g. 80x24)?

~~~
senorprogrammer
In the config.yml file can define the column and row sizes to whichever screen
size you like. No reason it couldn't work with those dimensions. Take a look
at simple_config.yml in the repo.

------
arthurcolle
This is the most amazing thing I've ever seen in my life

------
kchr
Brilliant project!

------
senatorobama
Isnt this org mode?

~~~
Jtsummers
No. Some of the information, yes, but otherwise no. Org-mode doesn't display
like this unless you go into the agenda and then it's only kind of like this.

You could probably use org to help you generate a lot of this though. You can
have code blocks which run arbitrary code and generate a report that another
utility like this (or another part of emacs) could monitor for display.

