Focus is a fully featured productivity timer for the command line, based on the Pomodoro Technique. Supports Linux, Windows, and macOS.

Focus logo

Github Actions made-with-Go GoReportCard Go.mod version LICENCE Latest release

Focus on your task

Focus is a cross-platform productivity timer for the command line. It is based on the Pomodoro Technique, a time management method developed by Francesco Cirillo in the late 1980s.

🍅 How it works

  1. Pick a task you need to accomplish.
  2. Set a timer for 25 minutes and start working without interruptions.
  3. When the timer rings, take a short break for 5 minutes.
  4. Once you've completed four work sessions, you can take a longer 15 minute break.

Main features

  • Work and break session lengths are customisable.
  • You can pause and resume work sessions.
  • You can skip break sessions.
  • You can customise the number of sessions before a long break.
  • You can set a maximum number of sessions.
  • Desktop notifications are supported on all platforms.
  • You can customise the notification messages.
  • Detailed statistics for your work history are provided including charts.
  • Focus provides six built-in ambient sounds that you can play during a session, and you can add your own custom sounds.

💻 Screenshots

Focus first run

Focus statistics

Focus

Installation

Focus is written in Go, so you can install it through go install (requires Go 1.16 or later):

$ go install github.com/ayoisaiah/focus/cmd/focus@latest

On Linux, the libasound2-dev package is required to compile Focus. Ubuntu or Debian users can install it through the command below:

$ sudo apt install libasound2-dev

📦 NPM Package

You can also install Focus via through its NPM package:

With npm:

$ npm i @ayoisaiah/focus -g

With yarn:

$ yarn global add @ayoisaiah/focus

Other installation methods are available here.

🚀 Usage

Once Focus is installed, run it using the command below:

$ focus

Note: Only one instance of focus can be active at a time.

Configuration

When you run Focus for the first time, it will prompt you to set your preferred timer lengths, and how many sessions before a long break. Afterwards, you may change these values by using command-line options or editing the config.yml file which will be located in ~/.config/focus/ on Linux, %LOCALAPPDATA%\focus on Windows, and ~/Library/Application Support/focus on macOS.

Here's the default configuration settings:

work_mins: 25 # work session length

work_msg: Focus on your task # work session message (shown in terminal and notification)

short_break_mins: 5 # short break session length

short_break_msg: Take a breather # short break session message (shown in terminal and notification)

long_break_mins: 15 # long break session length

long_break_msg: Take a long break # # long break session message (shown in terminal and notification)

long_break_interval: 4 # number of sessions before long break

notify: true # show desktop notifications

auto_start_work: false # Automatically start the next work session

auto_start_break: true # Automatically start the next break session

24hr_clock: false # Show time in 24 hour format

sound: "" # name of ambient sound to play

sound_on_break: false # play ambient sound during break sessions

If you specify a command-line argument while running focus, it will override the corresponding value in the config file.

Sessions

Focus has 3 types of sessions: work, short break, and long break.

💼 Work sessions

  • Set to 25 minutes length by default. Use the --work or -w option to change the length, or change work_mins in the config.yml file.
  • Message displayed in the terminal and desktop notification can be changed using work_msg.
  • You can pause a work session by pressing Ctrl-C. Use focus resume to continue from where you stopped.
  • The focus resume command supports the --sound, --sound-on-break, and --disable-notification flags.
  • If auto_start_work is false, you will be prompted to start each work session manually. Otherwise if set to true, it will start without your intervention.
  • The maximum number of work sessions can be set using the --max-sessions or -max option. After that number is reached, focus will exit.
  • Use the --long-break-interval or -int option to set the number of work sessions before a long break, or change long_break_interval in your config.yml.

😎 Break sessions

  • Short break is 5 minutes by default. Use the --short-break or -s option to change the length, or setshort_break_mins in the config.yml file.
  • Long break is 15 minutes by default. Use the --long-break or -l option to change the length, or set long_break_mins in the config.yml file.
  • Message displayed in the terminal and desktop notification can be changed using short_break_msg and long_break_msg.
  • Pressing Ctrl-C during a break session will interrupt it. Run focus resume to skip to the next work session.
  • If auto_start_break is false, you will be prompted to start each break session manually. Otherwise if set to true, it will start without your intervention.

🔔 Notifications

Focus notification

Notifications are turned on by default. Set notify to false in your config file, or use the --disable-notification flag if you don't want notifications once a session ends.

🔊 Ambient sounds

Focus provides six ambient sounds by default: coffee_shop, playground, wind, rain, summer_night, and fireplace. You can play a sound using the --sound option, or set a default sound in your config file through the sound key.

$ focus --sound 'coffee_shop'

If you want to play a custom sound instead, copy the file (supports MP3, FLAC, OGG, and WAV) to the appropriate directory for your operating system:

  • Linux: ~/.local/share/focus/static
  • Windows: %LOCALAPPDATA\focus\static
  • macOS: ~/Library/Application Support/focus/static

Afterwards, specify the name of the file in the sound key or --sound option. Note that custom sounds must include the file extension.

$ focus --sound 'university.mp3'
$ focus --sound 'subway.ogg'
$ focus --sound 'airplane.wav'
$ focus --sound 'stadium_noise.flac'

By default, ambient sounds are played only during work sessions. They are paused during break sessions, and resumed again in the next work session. If you'd like to retain the ambient sound during a break session, set the sound_on_break config option to true, or use the --sound-on-break or -sob flag.

📈 Statistics & History

$ focus stats

The above command will display your work history for the last 7 days by default. You'll see how many work sessions you completed, how many you abandoned, and how long you focused for overall. It also displays a break down by week, and hour to let you know what times you tend to be productive.

You can change the reporting period through the --period or -p option. It accepts the following values: today, yesterday, 7days, 14days, 30days, 90days, 180days, 365days, all-time.

$ focus stats -p 'today'
$ focus stats -p 'all-time'

You can also set a specific time period using the --start and --end options. The latter defaults to the current day if not specified. The acceptable formats are shown below:

$ focus stats --start '2021-08-06'
$ focus stats --start '2021-08-06' --end '2021-08-07'
$ focus stats --start '2021-07-23 12:00:05 PM' --end '2021-07-29 03:25:00 AM'

📃 Listing sessions

Use the --list option to display a table of your work sessions instead of aggregated statistics. Use the --period or --start and --end option to change the reporting period (defaults to 7 days).

$ focus stats --list --period 'today'
+---+-----------------------+-----------------------+-----------+
| # |      START DATE       |       END DATE        |  STATUS   |
+---+-----------------------+-----------------------+-----------+
| 1 | Aug 07, 2021 11:59 PM | Aug 08, 2021 12:00 AM | completed |
| 2 | Aug 08, 2021 04:31 PM | Aug 08, 2021 04:32 PM | completed |
| 3 | Aug 08, 2021 04:33 PM | Aug 08, 2021 04:34 PM | abandoned |
| 4 | Aug 08, 2021 05:56 PM | Aug 08, 2021 05:57 PM | completed |
| 5 | Aug 08, 2021 05:58 PM | Aug 08, 2021 05:59 PM | completed |
| 6 | Aug 08, 2021 06:00 PM | Aug 08, 2021 06:01 PM | completed |
| 7 | Aug 08, 2021 06:02 PM | Aug 08, 2021 06:03 PM | completed |
| 8 | Aug 08, 2021 06:11 PM |                       | abandoned |
| 9 | Aug 08, 2021 06:11 PM | Aug 08, 2021 06:11 PM | abandoned |
+---+-----------------------+-----------------------+-----------+

Note

  • Sessions that cross over to a new day will count towards that day's sessions as observed above.
  • A session with an empty end date indicates that the process was intin such a way that a graceful shutdown was not possible.

🔥 Deleting sessions

Deleting sessions is done in the same way as --list except that --delete is used instead. You will be prompted to confirm the deletion before it is carried out.

$ focus stats --delete --start '2021-08-08 06:11:00 PM'
+---+-----------------------+-----------------------+-----------+
| # |      START DATE       |       END DATE        |  STATUS   |
+---+-----------------------+-----------------------+-----------+
| 1 | Aug 08, 2021 06:11 PM |                       | abandoned |
| 2 | Aug 08, 2021 06:11 PM | Aug 08, 2021 06:11 PM | abandoned |
+---+-----------------------+-----------------------+-----------+
 WARNING  The above sessions will be deleted permanently. Press ENTER to proceed

🤝 Contribute

Bug reports and feature requests are much welcome! Please open an issue before creating a pull request.

Licence

Created by Ayooluwa Isaiah, and released under the terms of the MIT Licence.

Comments
  • Necessary requirement

    Necessary requirement

    I really love this application, It's the best Pomodoro app I have ever used, but there is one annoying problem.

    Add Notification Sound

    • after the Pomodoro finish the notification appears without any sound, How would we notice this notification
    • Many times I don't notice the notification (because there is no sound) while my study flow, after a while I go to the terminal and find that the Pomodoro is finished and the break is about to finish
  • flac music files do not play

    flac music files do not play

    I specified the flac file as config and started. However, an error was displayed. ERROR flac.decoder.Seek: not yet implemented

    I was able to play ogg and wav. It says flac is supported in the documentation, but is it not?

  • Install Error:

    Install Error: "alsa/asoundlib.h: No such file or directory"

    terry@zeus:~$ go install github.com/ayoisaiah/focus/cmd/focus@latest

    github.com/hajimehoshi/oto

    go/pkg/mod/github.com/hajimehoshi/[email protected]/driver_linux.go:23:10: fatal error: alsa/asoundlib.h: No such file or directory 23 | #include <alsa/asoundlib.h> | ^~~~~~~~~~~~~~~~~~ compilation terminated. terry@zeus:~$

  • Shows warnings when `go install`

    Shows warnings when `go install`

    Ran -

    go install github.com/ayoisaiah/focus/cmd/focus@latest
    

    Output -

    go: downloading github.com/ayoisaiah/focus v1.2.0
    go: downloading github.com/adrg/xdg v0.3.3
    go: downloading github.com/pterm/pterm v0.12.28
    go: downloading github.com/urfave/cli/v2 v2.3.0
    go: downloading github.com/faiface/beep v1.0.2
    go: downloading github.com/gen2brain/beeep v0.0.0-20210529141713-5586760f0cc1
    go: downloading github.com/olekukonko/tablewriter v0.0.5
    go: downloading go.etcd.io/bbolt v1.3.6
    go: downloading github.com/atomicgo/cursor v0.0.1
    go: downloading github.com/gookit/color v1.4.2
    go: downloading github.com/mattn/go-runewidth v0.0.13
    go: downloading golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b
    go: downloading github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778
    go: downloading github.com/rivo/uniseg v0.2.0
    go: downloading github.com/hajimehoshi/go-mp3 v0.1.1
    go: downloading github.com/mewkiz/flac v1.0.5
    go: downloading github.com/hajimehoshi/oto v0.3.1
    go: downloading github.com/jfreymuth/oggvorbis v1.0.0
    go: downloading github.com/pkg/errors v0.8.1
    go: downloading github.com/jfreymuth/vorbis v1.0.0
    # github.com/hajimehoshi/oto
    go/pkg/mod/github.com/hajimehoshi/[email protected]/driver_openal.go:35:22: warning: 'alcOpenDevice' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/alc.h:209:38: note: 'alcOpenDevice' has been explicitly marked deprecated here
    go/pkg/mod/github.com/hajimehoshi/[email protected]/driver_openal.go:39:11: warning: 'alcCloseDevice' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/alc.h:211:38: note: 'alcCloseDevice' has been explicitly marked deprecated here
    go/pkg/mod/github.com/hajimehoshi/[email protected]/driver_openal.go:43:22: warning: 'alcCreateContext' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/alc.h:191:38: note: 'alcCreateContext' has been explicitly marked deprecated here
    go/pkg/mod/github.com/hajimehoshi/[email protected]/driver_openal.go:47:11: warning: 'alcGetError' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/alc.h:218:38: note: 'alcGetError' has been explicitly marked deprecated here
    go/pkg/mod/github.com/hajimehoshi/[email protected]/driver_openal.go:51:4: warning: 'alcMakeContextCurrent' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/alc.h:193:38: note: 'alcMakeContextCurrent' has been explicitly marked deprecated here
    go/pkg/mod/github.com/hajimehoshi/[email protected]/driver_openal.go:55:4: warning: 'alcDestroyContext' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/alc.h:199:38: note: 'alcDestroyContext' has been explicitly marked deprecated here
    cgo-gcc-prolog:152:2: warning: 'alBufferData' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:601:25: note: 'alBufferData' has been explicitly marked deprecated here
    cgo-gcc-prolog:166:2: warning: 'alDeleteBuffers' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:595:25: note: 'alDeleteBuffers' has been explicitly marked deprecated here
    cgo-gcc-prolog:180:2: warning: 'alDeleteSources' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:501:25: note: 'alDeleteSources' has been explicitly marked deprecated here
    cgo-gcc-prolog:194:2: warning: 'alGenBuffers' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:592:25: note: 'alGenBuffers' has been explicitly marked deprecated here
    cgo-gcc-prolog:208:2: warning: 'alGenSources' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:498:25: note: 'alGenSources' has been explicitly marked deprecated here
    cgo-gcc-prolog:222:2: warning: 'alGetSourcei' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:530:25: note: 'alGetSourcei' has been explicitly marked deprecated here
    cgo-gcc-prolog:238:35: warning: 'alGetString' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:382:34: note: 'alGetString' has been explicitly marked deprecated here
    cgo-gcc-prolog:254:2: warning: 'alSourcePlay' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:558:25: note: 'alSourcePlay' has been explicitly marked deprecated here
    cgo-gcc-prolog:268:2: warning: 'alSourceQueueBuffers' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:572:25: note: 'alSourceQueueBuffers' has been explicitly marked deprecated here
    cgo-gcc-prolog:281:2: warning: 'alSourceRewind' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:564:25: note: 'alSourceRewind' has been explicitly marked deprecated here
    cgo-gcc-prolog:294:2: warning: 'alSourceStop' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:561:25: note: 'alSourceStop' has been explicitly marked deprecated here
    cgo-gcc-prolog:308:2: warning: 'alSourceUnqueueBuffers' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/al.h:574:25: note: 'alSourceUnqueueBuffers' has been explicitly marked deprecated here
    
  • Can't install using NPM

    Can't install using NPM

    Install using npm
    npm WARN deprecated [email protected]: this library is no longer supported
    npm WARN deprecated [email protected]: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
    npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
    npm WARN deprecated [email protected]: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.
    npm ERR! code 1
    npm ERR! path /Users/iamyuu/.volta/tmp/image/packages/.tmpM4vDM7/lib/node_modules/@ayoisaiah/focus
    npm ERR! command failed
    npm ERR! command sh -c go-npm install
    npm ERR! Downloading from URL: https://github.com/ayoisaiah/focus/releases/download/v1.2.0/focus_1.2.0_darwin_amd64.tar.gz
    npm ERR! Downloaded binary does not contain the binary specified in configuration - focus
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /Users/iamyuu/.npm/_logs/2021-12-09T03_49_54_338Z-debug.log
    
    Install using yarn
    yarn global v1.22.17
    [1/4] 🔍  Resolving packages...
    warning @ayoisaiah/focus > go-npm > [email protected]: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.
    warning @ayoisaiah/focus > go-npm > [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
    warning @ayoisaiah/focus > go-npm > request > [email protected]: this library is no longer supported
    warning @ayoisaiah/focus > go-npm > request > [email protected]: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
    [2/4] 🚚  Fetching packages...
    [3/4] 🔗  Linking dependencies...
    [4/4] 🔨  Building fresh packages...
    error /Users/iamyuu/.volta/tmp/image/packages/.tmpLPlMaF/lib/node_modules/@ayoisaiah/focus: Command failed.
    Exit code: 1
    Command: go-npm install
    Arguments:
    Directory: /Users/iamyuu/.volta/tmp/image/packages/.tmpLPlMaF/lib/node_modules/@ayoisaiah/focus
    Output:
    Downloading from URL: https://github.com/ayoisaiah/focus/releases/download/v1.2.0/focus_1.2.0_darwin_amd64.tar.gz
    Downloaded binary does not contain the binary specified in configuration - focus
    info Visit https://yarnpkg.com/en/docs/cli/global for documentation about this command.
    

    npx envinfo --system --binaries:

    System:
      OS: macOS 11.6
      CPU: (4) x64 Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
      Memory: 32.13 MB / 8.00 GB
      Shell: 5.8 - /bin/zsh
    Binaries:
      Node: 16.13.0 - ~/.volta/tools/image/node/16.13.0/bin/node
      Yarn: 1.22.17 - ~/.volta/tools/image/yarn/1.22.17/bin/yarn
      npm: 8.1.1 - ~/.volta/tools/image/npm/8.1.1/bin/npm
      Watchman: 2021.08.02.00 - /usr/local/bin/watchman
    
Go package for calculating the sunrise and sunset times for a given location

go-sunrise Go package for calculating the sunrise and sunset times for a given location based on this method. Usage To calculate sunrise and sunset ti

Dec 13, 2022
:clock1: Date and Time - Golang Formatting Library
:clock1: Date and Time - Golang Formatting Library

Kair Date and Time - Golang Formatting Library Setup To get Kair > Go CLI go get github.com/GuilhermeCaruso/kair > Go DEP dep ensure -add github.com/G

Sep 26, 2022
A simple, semantic and developer-friendly golang package for datetime

Carbon 中文 | English carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,支持链式调用和 gorm、xorm、zorm 等主流 orm。 如果您觉得不错,请给个 star 吧 github:github.com/golang-module/carbon g

Jan 9, 2023
Copy of stdlib's time.Duration, but ParseDuration accepts other bigger units such as days, weeks, months and years

duration Copy of stdlib's time.Duration, but ParseDuration accepts other units as well: d: days (7 * 24 * time.Hour) w: weeks (7 * Day) mo: months (30

Jun 21, 2022
Command-line tool to customize the official Spotify client. Supports Windows, MacOS and Linux.
Command-line tool to customize the official Spotify client. Supports Windows, MacOS and Linux.

Command-line tool to customize the official Spotify client. Supports Windows, MacOS and Linux. Features Change colors whole UI Inject CSS for advanced

Jan 2, 2023
Task Timer (tt) is a dead simple TUI task timer
Task Timer (tt) is a dead simple TUI task timer

tasktimer Task Timer (tt) is a dead simple TUI task timer Usage To get started, just run tt: tt You'll be presented with something like this: You can

Dec 21, 2022
📋 cross-platform clipboard package that supports accessing text and image in Go (macOS/Linux/Windows/Android/iOS)

clipboard Cross platform (macOS/Linux/Windows/Android/iOS) clipboard package in Go import "golang.design/x/clipboard" Features Cross platform supports

Dec 24, 2022
Graphical small-internet client for windows, linux, MacOS X and BSDs. Supports gemini, http, https, gopher, finger.
Graphical small-internet client for windows, linux, MacOS X and BSDs. Supports gemini, http, https, gopher, finger.

Graphical small-internet client for windows, linux, MacOS X and BSDs. Supports gemini, http, https, gopher, finger.

Jan 1, 2023
go-macos-pkg was built out of a desire to generate and sign macOS pkgs on non-macOS OSs.

About go-macos-pkg was built out of a desire to generate and sign macOS pkgs on non-macOS OSs. Caveats Right now most of the heavy lifting is done by

Aug 18, 2022
Flutter on Windows, MacOS and Linux - based on Flutter Embedding, Go and GLFW.
Flutter on Windows, MacOS and Linux - based on Flutter Embedding, Go and GLFW.

go-flutter - A package that brings Flutter to the desktop Purpose Flutter allows you to build beautiful native apps on iOS and Android from a single c

Jan 9, 2023
Fully featured Go (golang) command line option parser with built-in auto-completion support.

go-getoptions Go option parser inspired on the flexibility of Perl’s GetOpt::Long. Table of Contents Quick overview Examples Simple script Program wit

Dec 14, 2022
Fully featured Go (golang) command line option parser with built-in auto-completion support.

go-getoptions Go option parser inspired on the flexibility of Perl’s GetOpt::Long. Table of Contents Quick overview Examples Simple script Program wit

Dec 14, 2022
Microservice framework following best cloud practices with a focus on productivity.

patron Patron is a framework for creating microservices, originally created by Sotiris Mantzaris (https://github.com/mantzas). This fork is maintained

Dec 22, 2022
A simple Go library to toggle on and off pac(proxy auto configuration) for Windows, MacOS and Linux

pac pac is a simple Go library to toggle on and off pac(proxy auto configuration

Dec 26, 2021
Qt binding for Go (Golang) with support for Windows / macOS / Linux / FreeBSD / Android / iOS / Sailfish OS / Raspberry Pi / AsteroidOS / Ubuntu Touch / JavaScript / WebAssembly

Introduction Qt is a free and open-source widget toolkit for creating graphical user interfaces as well as cross-platform applications that run on var

Jan 2, 2023
ets2-dlc-repacker is a Windows / Linux / MacOS CLI util to automatically repack older DLC archives for compatibility with newer versions.
ets2-dlc-repacker is a Windows / Linux / MacOS CLI util to automatically repack older DLC archives for compatibility with newer versions.

ets2-dlc-repacker is a Windows / Linux / MacOS CLI util to automatically repack older DLC archives for compatibility with newer versions.

Dec 26, 2021
Test your command line interfaces on windows, linux and osx and nodes viá ssh and docker

Commander Define language independent tests for your command line scripts and programs in simple yaml files. It runs on windows, osx and linux It can

Dec 17, 2022
Automatically spawn a reverse shell fully interactive for Linux or Windows victim
Automatically spawn a reverse shell fully interactive for Linux or Windows victim

Girsh (Golang Interactive Reverse SHell) Who didn't get bored of manually typing the few lines to upgrade a reverse shell to a full interactive revers

Dec 14, 2022
An example desktop system tray application that can launch HTML5 windows. Go source with a build process for Windows, Mac and Linux.

ExampleTrayGUI An example cross-platform (Mac, Windows, Linux) system tray application that can launch HTML5 windows, developed in Go including functi

Dec 3, 2022
An example desktop system tray application that can launch HTML5 windows. Go source with a build process for Windows, Mac and Linux.

ExampleTrayGUI An example cross-platform (Mac, Windows, Linux) system tray application that can launch HTML5 windows, developed in Go including functi

Dec 3, 2022