Skip to content
An OpenGL based progress bar that lets you know when you should really go home after a long day 🕙
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets Create README and related files Jun 2, 2019
.golangci.yml Fix some linting issues Jun 2, 2019
.goreleaser.yml Start to use goreleaser Jun 1, 2019 Update changelog Jun 16, 2019 Improve wording Jun 2, 2019
Makefile Add Makefile for easy setup May 19, 2019
config.go Allow moving the window with Shift+<ArrowKey> Jun 16, 2019
go.mod Create README and related files Jun 2, 2019

Time to Go Home 🕙

Go Home is a small OpenGL based progress bar widget for your Desktop that displays for how long you have been working each day. This is helpful for people who tend to loose track of time and thus do overhours when they actually wanted to leave home. I made this to learn a bit about simple OpenGL programming using the Go programming language.


Precompiled binaries

You can find precompiled binaries at the releases page of the GitHub repository.

From Source

Go Home is packaged using Go modules. Since this is not a library but a runnable application within a main package you need to clone this repository first. Typically this should be done outside of the $GOPATH or Go will complain due Modules being enabled.

After you cloned the repo you should make sure to install the external dependencies (i.e. OpenGL bindings) as explained at the GLFW repository. There is a Makefile to install the requires libraries on RedHead/Fedora.

Afterwards you simply use go build or go install and Go will fetch the correct Go dependencies for you:

$ git clone
Cloning into 'go-home'...
remote: Enumerating objects: 122, done.
remote: Counting objects: 100% (122/122), done.
remote: Compressing objects: 100% (69/69), done.
remote: Total 122 (delta 62), reused 109 (delta 49), pack-reused 0
Receiving objects: 100% (122/122), 71.62 KiB | 601.00 KiB/s, done.
Resolving deltas: 100% (62/62), done.

$ cd go-home               
$ make setup

$ go install && go-home --debug
2019-06-16 13:16	DEBUG	go-home/config.go:50	Running in debug mode
2019-06-16 13:16	INFO	go-home/config.go:54	Loading configuration	{"path": "/home/fgrosse/.go-home.yml"}
2019-06-16 13:16	INFO	go-home/app.go:56	Starting application	{"config": {"check_in": "2019-06-16 12:18", "work_duration": "8h0m0s", "lunch_duration": "1h0m0s", "day_end": "20:00"}}


You can start the program without any arguments which will create an undecorated window that displays when you started the program the first time today and when its time to go home. The default configuration assumes you are working 8 hours a day and do 1 hour of lunch break.

As time goes by the progress bar will slowly fill up from green to red. If you are working overtime it will start to pulse red to catch your attention. At this point you should leave home and enjoy your free time with your family and friends ☺️.


Go Home reads configuration from $HOME/.go-home.yml. If this file does not exist on the first start it will be created using sensible default values. The available options in there should be pretty self explanatory.

Built With


Please read for details on the code of conduct and on the process for submitting pull requests to this repository.


This software uses SemVer for versioning. For the versions available, see the tags on this repository.


  • Friedrich Große - Initial work - fgrosse

See also the list of contributors who participated in this project.


This project is licensed under the BSD-3-Clause License - see the LICENSE file for details.

You can’t perform that action at this time.