Top Related Projects
A terminal based graphical activity monitor inspired by gtop and vtop
simple terminal UI for git commands
Golang terminal dashboard
Terminal-based CPU stress and monitoring utility
A monitor of resources
Glances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, Mac OS and Windows operating systems.
Quick Overview
WTF (What The Fork) is a personal information dashboard for your terminal, designed to display information from various sources such as calendar events, cryptocurrency prices, weather forecasts, and more. It's highly customizable and allows users to create a personalized dashboard tailored to their specific needs and preferences.
Pros
- Highly customizable with a wide range of modules and configuration options
- Easy to install and set up
- Actively maintained with regular updates and new features
- Supports multiple platforms (macOS, Linux, Windows)
Cons
- Requires some technical knowledge to configure and customize
- Limited graphical capabilities due to terminal-based nature
- Some modules may require additional setup or API keys
- Performance can be affected when using many modules simultaneously
Getting Started
- Install WTF using Homebrew (macOS) or Go:
# macOS
brew install wtfutil
# Using Go
go install github.com/wtfutil/wtf@latest
- Create a configuration file:
mkdir ~/.config/wtf
touch ~/.config/wtf/config.yml
- Add basic configuration to
config.yml
:
wtf:
colors:
border:
focusable: darkslateblue
focused: orange
normal: gray
grid:
columns: [40, 40]
rows: [13, 13, 4]
refreshInterval: 1
mods:
clocks:
colors:
rows:
even: "lightblue"
odd: "white"
enabled: true
locations:
- New York: "America/New York"
- London: "Europe/London"
- Tokyo: "Asia/Tokyo"
position:
top: 0
left: 0
height: 1
width: 1
refreshInterval: 15
sort: "alphabetical"
title: "Clocks"
type: "clocks"
textfile:
enabled: true
filePath: "~/.config/wtf/config.yml"
format: true
position:
top: 0
left: 1
height: 1
width: 1
refreshInterval: 30
title: "Config"
type: "textfile"
- Run WTF:
wtfutil
Competitor Comparisons
A terminal based graphical activity monitor inspired by gtop and vtop
Pros of gotop
- Lightweight and focused solely on system monitoring
- Simpler interface, easier to understand at a glance
- Lower resource usage due to its focused functionality
Cons of gotop
- Limited to system monitoring, lacks the versatility of WTF
- Fewer customization options and modules
- Less active development and community support
Code Comparison
gotop:
func (p *Proc) update() error {
cmd := exec.Command("ps", "-axo", "pid,comm,pcpu,pmem,args")
out, err := cmd.Output()
if err != nil {
return err
}
// ... (parsing logic)
}
WTF:
func (widget *Widget) Refresh() {
widget.display()
}
func (widget *Widget) display() {
widget.Redraw(widget.content)
}
gotop focuses on efficient system data collection, while WTF emphasizes modularity and display flexibility. gotop's code directly interacts with system commands, whereas WTF's structure allows for diverse data sources and display methods.
simple terminal UI for git commands
Pros of lazygit
- Focused specifically on Git operations, providing a more streamlined and specialized interface for Git users
- Offers interactive staging, allowing users to easily select and stage specific parts of files
- Provides a visual representation of Git branches and commit history, making it easier to understand repository structure
Cons of lazygit
- Limited to Git functionality, lacking the broader system monitoring capabilities of WTF
- May have a steeper learning curve for users not familiar with Git concepts
- Doesn't offer customizable dashboard layouts or widgets for non-Git related information
Code Comparison
WTF:
cfg := config.NewConfig()
app := tview.NewApplication()
pages := tview.NewPages()
wtf.DisplayMode = cfg.UString("wtf.displayMode", "grid")
wtf.OpenFileUtil = cfg.UString("wtf.openFileUtil", "open")
lazygit:
type App struct {
closers []io.Closer
Config config.AppConfig
OSCommand *commands.OSCommand
GitCommand *commands.GitCommand
Gui *gui.Gui
}
Both projects use Go and implement terminal-based user interfaces, but WTF focuses on a modular dashboard system, while lazygit specializes in Git operations with a more Git-centric structure.
Golang terminal dashboard
Pros of termui
- More flexible and customizable for building terminal UIs
- Lower-level library, offering finer control over UI components
- Suitable for a wider range of terminal-based applications
Cons of termui
- Requires more coding effort to create a functional dashboard
- Less out-of-the-box functionality for system monitoring
- Steeper learning curve for beginners
Code Comparison
WTF:
wtf.Run(func() {
w := wtf.New(config)
w.Run()
})
termui:
ui.Init()
defer ui.Close()
p := widgets.NewParagraph()
p.Text = "Hello World!"
ui.Render(p)
Summary
WTF is a pre-built personal dashboard for your terminal, offering a quick setup for system monitoring and information display. It's ideal for users who want a ready-to-use solution with minimal configuration.
termui, on the other hand, is a library for building custom terminal user interfaces. It provides more flexibility and control, making it suitable for developers who want to create tailored terminal applications beyond just dashboards.
While WTF offers convenience and immediate functionality, termui gives developers the tools to build more diverse and specialized terminal UIs, albeit with a higher initial investment of time and effort.
Terminal-based CPU stress and monitoring utility
Pros of s-tui
- Focused specifically on system monitoring and stress testing
- Lightweight and runs in the terminal, ideal for servers without GUI
- Real-time graphs for CPU frequency, utilization, temperature, and power
Cons of s-tui
- Limited to system monitoring, lacks broader functionality
- Less customizable and extensible compared to WTF
- Fewer integrations with external services and data sources
Code Comparison
s-tui (Python):
def get_cpu_freq(self):
cpu_freq = psutil.cpu_freq()
return cpu_freq.current if cpu_freq else None
WTF (Go):
func (widget *Widget) Refresh() {
widget.Data = wtf.NewTextWidget(widget.CommonSettings(), widget.View)
widget.Data.Refresh()
}
Summary
s-tui is a specialized tool for system monitoring and stress testing, offering real-time graphs in the terminal. It's lightweight and ideal for server environments. However, it lacks the broader functionality and customization options of WTF.
WTF is a more comprehensive personal information dashboard with various modules and integrations. It offers greater flexibility and extensibility but may be overkill for simple system monitoring tasks.
The choice between the two depends on specific needs: s-tui for focused system monitoring, WTF for a more versatile information dashboard.
A monitor of resources
Pros of btop
- More focused on system monitoring and resource usage
- Offers a visually appealing and customizable interface
- Provides real-time updates and detailed process information
Cons of btop
- Limited to system monitoring functionality
- Less extensible compared to WTF's modular approach
- May consume more system resources due to its graphical nature
Code Comparison
btop (C++):
void Draw::draw_clock(int x, int y, int width, int height) {
auto now = std::chrono::system_clock::now();
auto time = std::chrono::system_clock::to_time_t(now);
auto local = std::localtime(&time);
// ... (drawing logic)
}
WTF (Go):
func (widget *Widget) Refresh() {
widget.Time = time.Now().Local()
widget.Date = widget.Time.Format(widget.dateFormat)
widget.TimeStr = widget.Time.Format(widget.timeFormat)
}
Summary
btop is a resource-intensive system monitor with a rich graphical interface, while WTF is a more versatile, modular dashboard for various information sources. btop excels in detailed system monitoring, whereas WTF offers greater extensibility for different types of data display. The code snippets highlight their different approaches: btop focuses on drawing a clock, while WTF updates time-related information in a more data-centric manner.
Glances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, Mac OS and Windows operating systems.
Pros of Glances
- Cross-platform support (Linux, macOS, Windows)
- More comprehensive system monitoring, including network, disk I/O, and processes
- Supports both CLI and web-based interfaces
Cons of Glances
- Less customizable dashboard layout
- Focused primarily on system monitoring, lacking integration with external services
- Steeper learning curve for configuration and customization
Code Comparison
Glances configuration (glances.conf):
[cpu]
careful=50
warning=70
critical=90
[memory]
careful=50
warning=70
critical=90
WTF configuration (config.yml):
wtf:
colors:
border:
focusable: darkslateblue
focused: orange
normal: gray
grid:
columns: [40, 40]
rows: [13, 13, 4]
Summary
Glances is a more comprehensive system monitoring tool with cross-platform support, while WTF offers a highly customizable dashboard for various information sources. Glances excels in detailed system metrics, whereas WTF provides a broader range of integrations with external services. The choice between the two depends on whether you prioritize in-depth system monitoring or a customizable information dashboard.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
WTF (aka 'wtfutil') is the personal information dashboard for your terminal, providing at-a-glance access to your very important but infrequently-needed stats and data.
Used by thousands of developers and tech people around the world, WTF is free and open-source. To support the continued use and development of WTF, please consider sponsoring WTF via GitHub Sponsors.
Are you a contributor or sponsor?
Awesome! See here for how you can change the exit message, the message WTF shows when quitting, to something special just for you.
Sponsored by
Warp.dev
|
Robusta.dev
|
Airbrake
|
- Installation
- Communication
- Documentation
- Modules
- Getting Bugs Fixed or Features Added
- Contributing to the Source Code
- Contributing to the Documentation
- Contributors
- Acknowledgements
Installation
Installing via Homebrew
The simplest way from Homebrew:
brew install wtfutil
wtfutil
That version can sometimes lag a bit, as recipe updates take time to get accepted into homebrew-core
. If you always want the bleeding edge of releases, you can tap it:
brew tap wtfutil/wtfutil
brew install wtfutil
wtfutil
Installing via MacPorts
You can also install via MacPorts:
sudo port selfupdate
sudo port install wtfutil
wtfutil
Installing a Binary
Download the latest binary from GitHub.
WTF is a stand-alone binary. Once downloaded, copy it to a location you can run executables from (ie: /usr/local/bin/
), and set the permissions accordingly:
chmod a+x /usr/local/bin/wtfutil
and you should be good to go.
Installing from Source
If you want to run the build command from within your $GOPATH
:
# Set the Go proxy
export GOPROXY="https://proxy.golang.org,direct"
# Disable the Go checksum database
export GOSUMDB=off
# Enable Go modules
export GO111MODULE=on
go get -u github.com/wtfutil/wtf
cd $GOPATH/src/github.com/wtfutil/wtf
make install
make run
If you want to run the build command from a folder that is not in your $GOPATH
:
# Set the Go proxy
export GOPROXY="https://proxy.golang.org,direct"
go get -u github.com/wtfutil/wtf
cd $GOPATH/src/github.com/wtfutil/wtf
make install
make run
Installing from Source using Docker
All building is done inside a docker container. You can then copy the binary to your local machine.
curl -o Dockerfile.build https://raw.githubusercontent.com/wtfutil/wtf/master/Dockerfile.build
docker build -f Dockerfile.build -t wtfutil --build-arg=version=master .
docker create --name wtf_build wtfutil
docker cp wtf_build:/usr/local/bin/wtfutil ~/.local/bin
docker rm wtf_build
Note: WTF is only compatible with Go versions 1.16.0 or later (due to the use of Go modules and newer standard library functions). If you would like to use gccgo
to compile, you must use gccgo-9
or later which introduces support for Go modules.
Installing via Arch User Repository
Arch Linux users can utilise the wtfutil package to build it from source, or wtfutil-bin to install pre-built binaries.
Running via Docker
You can run wtf
inside a docker container:
# download or create the Dockerfile
curl -o Dockerfile https://raw.githubusercontent.com/wtfutil/wtf/master/Dockerfile
# build the docker container
docker build -t wtfutil .
# or for a particular tag or branch
docker build --build-arg=version=v0.25.0 -t wtfutil .
# run the container
docker run -it wtfutil
# run container with a local config file
docker run -it -v path/to/config.yml:/config/config.yml wtfutil --config=/config/config.yml
Communication
GitHub Discussions
Conversations, ideas, discussions are done on GitHub Discussions.
Formerly they were on Slack; that channel has been deprecated.
Also, follow on Twitter for news and latest updates.
Documentation
See https://wtfutil.com for the definitive documentation. Here's some short-cuts:
Modules
Modules are the chunks of functionality that make WTF useful. Modules are added and configured by including their configuration values in your config.yml
file. The documentation for each module describes how to configure them.
Some interesting modules you might consider adding to get you started:
- DigitalOcean
- GitHub
- Google Calendar
- HackerNews
- Have I Been Pwned
- NewRelic
- OpsGenie
- Security
- Transmission
- Trello
Getting Bugs Fixed or Features Added
WTF is open-source software, informally maintained by a small collection of volunteers who come and go at their leisure. There are absolutely no guarantees that, even if an issue is opened for them, bugs will be fixed or features added.
If there is a bug that you really need to have fixed or a feature you really want to have implemented, you can greatly increase your chances of that happening by creating a bounty on BountySource to provide an incentive for someone to tackle it.
Contributing to the Source Code
First, kindly read Talk, then code by Dave Cheney. It's great advice and will often save a lot of time and effort.
Next, kindly read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests.
Then create your branch, write your code, submit your PR, and join the rest of the awesome people who've contributed their time and effort towards WTF. Without their contributors, WTF wouldn't be possible.
Don't worry if you've never written Go before, or never contributed to an open source project before, or that your code won't be good enough. For a surprising number of people WTF has been their first Go project, or first open source contribution. If you're here, and you've read this far, you're the right stuff.
Contributing to the Documentation
Documentation now lives in its own repository here: https://github.com/wtfutil/wtfdocs.
Please make all additions and updates to documentation in that repository.
Adding Dependencies
Dependency management in WTF is handled by Go modules. Please check out that page for more details on how Go modules work.
Contributors
Acknowledgments
The inspiration for WTF
came from Monica Dinculescu's
tiny-care-terminal.
WTF is built atop tcell and tview, fantastic projects both. WTF is built, packaged, and deployed via GoReleaser.
Top Related Projects
A terminal based graphical activity monitor inspired by gtop and vtop
simple terminal UI for git commands
Golang terminal dashboard
Terminal-based CPU stress and monitoring utility
A monitor of resources
Glances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, Mac OS and Windows operating systems.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot