Nexa Coffee icon

Nexa Coffee User Guide

Based on v0.1.2 Last updated 2026-10-12

Overview

Nexa Coffee is a tray (menu bar) timer that keeps your PC awake for a set period. Pick a duration from the menu, and for that time it prevents the screen saver, display turn-off, sleep, and hibernation, while the tray icon shows the remaining time as a number and a ring. When the time is up, it releases the sleep prevention on its own and returns to idle.

It is a tool for those moments when you “just want to keep the PC awake for a while” — long downloads or builds, presentations, remote sessions — without changing your power settings.

  • Three operating systems — works on Windows, macOS, and Linux with the same menu and the same icon.
  • Extremely lightweight — written in pure C (Objective-C on macOS only) with no external libraries. As of v0.1.2, the Windows x64 executable is about 30KB (30,208 bytes) and needs no .NET or VC++ redistributable.
  • No windows — just a tray icon and a menu; a small input window appears briefly only when you enter a time manually.
  • Four languages — English · 한국어 · 日本語 · 中文. It follows the OS language at first.
  • Free and open source — MIT license. It collects no personal data and makes no network connections.

Note The app introduction page is at /apps/nexa-coffee. Source code and releases are in the GitHub repository.

System requirements

OSRequirementsNotes
WindowsWindows 10 or later · x64 or x86 (32-bit)No additional runtime needed
macOSmacOS 11 Big Sur or later (for Homebrew installs) · universal for Intel and Apple SiliconShown only in the menu bar; no Dock icon
Linuxx86_64 · a desktop with a system tray (StatusNotifierItem) hostStatic executable that does not depend on the distribution

Additional requirements on Linux

  • A tray host is required. KDE Plasma supports it out of the box; on GNOME, the AppIndicator extension (e.g. Ubuntu’s default AppIndicator extension) must be enabled for the icon to appear.
  • The “Custom…” input window requires one of yad, zenity, or kdialog to be installed (they are looked up in this order). If none is present, a notification asking you to install one appears instead of the input window. Preset durations (Unlimited, 12 hours, etc.) work without these tools.

Installation and removal

All installation files are on GitHub Releases, and you can verify downloaded files with the accompanying SHA256SUMS.txt.

Caution The current version is not code-signed. If you download and run it directly, Windows SmartScreen or macOS Gatekeeper may show a warning. Follow the OS-specific instructions below.

Installation channel status

Based on the repository documentation and a check of each channel (2026-10-12).

ChannelCommandStatus
Chocolatey (Windows)choco install nexa-coffee0.1.2 approved
Homebrew Cask (macOS)brew install --cask kiros33/tap/nexa-coffee0.1.2
APT · DNF repository (Linux)sudo apt install nexa-coffee / sudo dnf install nexa-coffee0.1.2 (repository registration required)
Homebrew Formula (Linux)brew install kiros33/tap/nexa-coffee-portable0.1.2
winget (Windows)winget install SosomLab.NexaCoffeeNot yet listed — awaiting review (PR)

Note winget will only find the package once the initial submission review is complete. Until then, use Chocolatey or the zip install on Windows.

Windows

Install with Chocolatey (recommended) — run in PowerShell with administrator privileges.

choco install nexa-coffee -y
  • The executable matching your PC’s architecture is installed; on 64-bit Windows, you can launch it with the nexa-coffee-x64 command.
  • Upgrade: choco upgrade nexa-coffee -y · Uninstall: choco uninstall nexa-coffee -y
  • A running Nexa Coffee is closed automatically before upgrading or uninstalling.

Install from zip

  1. Download nexa-coffee-<version>-windows-x64.zip from Releases (-windows-x86.zip for 32-bit Windows).
  2. Extract it to any folder. It contains only nexa-coffee-x64.exe and LICENSE.
  3. Run nexa-coffee-x64.exe. If a SmartScreen warning appears, click More info → Run anyway.

It is a portable program with no installation step, so to remove it, quit from the tray menu and delete the exe. To remove the settings as well, also delete the %APPDATA%\nexa-coffee folder.

winget (available once listed)

winget install SosomLab.NexaCoffee

Once listed, you will be able to launch it with the nexa-coffee command. To uninstall, use winget uninstall SosomLab.NexaCoffee.

macOS

Install with Homebrew (recommended)

brew install --cask kiros33/tap/nexa-coffee
  • Because the app is unsigned, the Cask removes the macOS quarantine flag (com.apple.quarantine) right after installation, so it launches without a warning.
  • Launch Nexa Coffee from the Applications folder and its icon appears in the menu bar.
  • Upgrade: brew upgrade --cask nexa-coffee
  • Uninstall: brew uninstall --cask nexa-coffee — to remove the settings folder too, use brew uninstall --zap --cask nexa-coffee

Install from zip

  1. Download nexa-coffee-<version>-macos-universal.zip from Releases and extract it.
  2. Remove the quarantine flag in Terminal.
xattr -dr com.apple.quarantine "Nexa Coffee.app"
  1. Move Nexa Coffee.app to the Applications folder and launch it.

To uninstall, move the app to the Trash and, if needed, delete the ~/Library/Application Support/nexa-coffee folder.

Linux

APT repository (Debian · Ubuntu) — register the repository once, and from then on sudo apt upgrade keeps it updated.

sudo curl -fsSLo /usr/share/keyrings/sosomlab-archive-keyring.gpg https://pkg.sosomlab.com/sosomlab-archive-keyring.gpg
sudo curl -fsSLo /etc/apt/sources.list.d/sosomlab.sources https://pkg.sosomlab.com/apt/sosomlab.sources
sudo apt update
sudo apt install nexa-coffee

DNF repository (Fedora · RHEL · Rocky · AlmaLinux) — when the first installation asks whether to import the signing key, check that the fingerprint matches the one listed on pkg.sosomlab.com before accepting.

sudo curl -fsSLo /etc/yum.repos.d/sosomlab.repo https://pkg.sosomlab.com/rpm/sosomlab.repo
sudo dnf install nexa-coffee

When installed as a package, the executable goes to /usr/bin/nexa-coffee, and an app menu entry and icon are installed as well. To uninstall, use sudo apt remove nexa-coffee or sudo dnf remove nexa-coffee.

Note You can also install without the repository by downloading nexa-coffee_<version>_amd64.deb or nexa-coffee-<version>-1.x86_64.rpm from Releases and running sudo apt install ./filename.deb / sudo dnf install ./filename.rpm. In this case, it will not be updated automatically.

Homebrew (Linux)

brew install kiros33/tap/nexa-coffee-portable

Install from tar.gz (for your account only, no administrator privileges needed)

  1. Download nexa-coffee-<version>-linux-x64.tar.gz from Releases and extract it.
  2. Run the install script in the extracted folder.
./install.sh              # install under ~/.local
./install.sh --autostart  # install + launch automatically at login

The executable goes to ~/.local/bin/nexa-coffee and the app menu entry to ~/.local/share/applications/. To uninstall, run ./uninstall.sh in the same folder; it also removes the autostart entry but keeps the settings folder (~/.config/nexa-coffee).

Getting started

  1. Launch Nexa Coffee. No window opens; only an icon appears in the tray (the menu bar on macOS).
  2. It starts in the idle state. It does nothing, and your PC follows its usual power settings.
  3. Click the icon to open the menu and choose a duration (e.g. 2 hours).
  4. The icon changes to a colored ring and a number, and your PC stays awake for that time.
  5. When the time is up, it releases sleep prevention without any notification and returns to the idle icon. To stop early, choose Off from the menu.

Note Only one instance of Nexa Coffee runs at a time. If you launch it again while it is already running, the new instance simply exits.

Note Windows 11 puts new tray icons in the hidden overflow area (^) at the right of the taskbar. To keep it always visible, turn on nexa-coffee under Settings → Personalization → Taskbar → Other system tray icons.

Reading the tray icon

StateIcon appearanceMeaning
IdleA single-color ring shaped like the app iconDoing nothing (sleep prevention off)
ActiveThin outer border + a thick arc proportional to the remaining time + a number in the centerPreventing sleep. The arc shortens as time passes, and its end fades
UnlimitedBlue ∞Prevents sleep until you turn it off

The number in the center is colored by unit. It is rounded down, with no decimals.

ColorUnitShown whenExample
PurpleDays24 hours or more remaining2 days 5 hours left → 2
GreenHours1 hour or more but less than 24 hours11 hours 59 minutes left → 11
OrangeMinutes1 minute or more but less than 1 hour45 minutes 30 seconds left → 45
RedSecondsLess than 1 minute30 seconds left → 30
BlueUnlimitedWhen Unlimited is selected∞

Hovering over the icon shows the status in a tooltip, such as Nexa Coffee — 2 hours left (Nexa Coffee — Idle while idle). The exact remaining time is shown on the top line of the menu.

Using the timer

Starting with a preset duration

Choose one of Unlimited · 12 hours · 6 hours · 2 hours · 1 hour · 30 minutes from the menu to start right away. The currently running item has a check mark.

  • If you choose a different duration while running, it starts over with that duration (it is not added to the remaining time).
  • Unlimited continues until you click Off or quit the app.

Starting with a custom duration (Custom…)

  1. Choose Custom… from the menu.
  2. Enter days · hours · minutes in the single-line input window and click Start.
  3. The values you enter are remembered and prefilled the next time you open the input window. While running, the menu item shows the duration you set, e.g. Custom… (1d 2h 30m).
FieldRange
Days0 – 99
Hours0 – 23
Minutes0 – 59
  • Out-of-range values are clamped to the range (e.g. entering 30 for hours gives 23).
  • If all three fields are 0, the timer does not start.
  • The input window looks different on each OS: a small dialog on Windows, a panel window on macOS, and on Linux the window of whichever of yad/zenity/kdialog is installed.

Stopping and quitting

  • Off — stops the timer and releases sleep prevention immediately. The app stays in the tray.
  • Quit — releases sleep prevention and exits the app completely.

Note A running timer does not resume when you relaunch the app. If you want the PC kept awake for a set time as soon as the app starts, use Auto-start on launch below.

Left- or right-clicking the tray icon opens the same menu (on macOS, click the menu bar icon).

Menu itemDescription
(Top line) Remaining timeShows the remaining time in the format 0 days 12 hours 50 minutes 3 seconds. Updates every second while the menu is open. Shows Idle while idle, and Unlimited · preventing sleep when unlimited
Unlimited · 12 hours · 6 hours · 2 hours · 1 hour · 30 minutesStarts sleep prevention for that duration immediately
Custom…Starts with days, hours, and minutes you enter
OffStops the timer
Auto-start on launch ▸Off / Custom… — sets whether the timer starts automatically when the app launches
Language ▸English / 한국어 / 日本語 / 中文
About Nexa Coffee…Shows the version and license
QuitExits the app

Auto-start on launch

Choosing Auto-start on launch ▸ Custom… opens the same days/hours/minutes input window, with the button changed to Save. Once saved, the timer starts immediately with that duration every time the app launches from then on. While it is set, the menu shows it, e.g. Auto-start on launch (2h).

  • To turn it off, choose Auto-start on launch ▸ Off (saving 0 days 0 hours 0 minutes has the same effect).
  • This option “turns on the timer when the app launches.” To launch the app itself at login, you need to set up Launch at login separately. Using both together gives you “keep the PC awake for N hours automatically after logging in.”

Language

At first, the app follows the OS language (Korean, Japanese, or Chinese; English otherwise). Choosing one under Language ▸ changes the menu, tooltip, and input window immediately, and the choice is saved in the settings.

Note Chinese is shown in Simplified Chinese only. In the English menu, the remaining time uses the plural only for values greater than 1 (e.g. 0 days 2 hours 1 minute 5 seconds).

Keyboard shortcuts

There are no global shortcuts. Everything is done from the tray (menu bar) menu.

Settings and data location

Settings are stored in a single text file (config). The lock file in the same folder is used to prevent multiple instances (macOS and Linux).

OSSettings file
Windows%APPDATA%\nexa-coffee\config
macOS~/Library/Application Support/nexa-coffee/config
Linux~/.config/nexa-coffee/config (if XDG_CONFIG_HOME is set, nexa-coffee/config under it)

Only three things are stored.

auto=0,2,0
custom=1,2,30
lang=ko
KeyMeaning
autoAuto-start on launch duration (days,hours,minutes). 0,0,0 means off
customThe last custom duration you entered (days,hours,minutes)
langThe language chosen in the menu (en, ko, ja, zh). If you have never chosen a language, this line is absent and the OS language is used

Nothing is written to the Windows registry. To reset the settings, quit the app, delete this file, and launch it again.

Launch at login

Nexa Coffee does not register itself to launch at login. If you need it, set it up once for your OS.

Windows

  1. Press Win+R and enter shell:startup to open the Startup folder.
  2. Put a shortcut to nexa-coffee-x64.exe (right-click the exe → Create shortcut) in this folder.

If you installed with Chocolatey, the target file is %ChocolateyInstall%\lib\nexa-coffee\tools\nexa-coffee-x64.exe. To disable it, delete the shortcut you added.

macOS

Add Nexa Coffee.app under System Settings → General → Login Items.

Linux

  • If you installed from tar.gz, ./install.sh --autostart creates ~/.config/autostart/nexa-coffee.desktop for you. To disable it, delete that file or run ./uninstall.sh.
  • If you installed the APT or DNF package, copy the app menu entry into the autostart folder.
mkdir -p ~/.config/autostart
cp /usr/share/applications/nexa-coffee.desktop ~/.config/autostart/

Note It is fine if Nexa Coffee starts before the tray host (a GNOME extension, etc.) right after login. When the host appears later or restarts, the app registers its icon again (from v0.1.2). In v0.1.1 and earlier, the app crashed in this situation, so please use the latest version.

Troubleshooting

The tray icon doesn’t appear

  • Windows 11: it may be in the hidden overflow area (^). Turn it on under Other system tray icons as described in Getting started.
  • Linux GNOME: the icon is not shown if the AppIndicator extension is disabled. Enabling the extension makes the icon of the running app reappear (v0.1.2 or later).
  • If it is already running, a second launch exits silently. Check whether it is running with Task Manager or ps.

My PC sleeps when I close the lid, even though time is left

Each OS handles closing the lid (the laptop cover) differently.

OSWhen the lid is closedTo prevent it
WindowsNexa Coffee cannot prevent it (the power policy takes precedence)Change the “When I close the lid” action in Power Options, or run the administrator command powercfg /setacvalueindex SCHEME_CURRENT SUB_BUTTONS LIDACTION 0 (when plugged in · apply with powercfg /setactive SCHEME_CURRENT)
macOSCannot be prevented (the OS forces sleep)sudo pmset -a disablesleep 1 — this is a system-wide setting, so revert it with sudo pmset -a disablesleep 0 when you are done
LinuxPrevented (requests logind to block the lid switch)No extra setup needed

Caution The Windows and macOS commands above change the system power settings themselves, independently of Nexa Coffee. Use them only when needed and restore the original settings afterward.

On Linux, clicking “Custom…” doesn’t open the input window

The input window uses whichever is installed, in the order yad → zenity → kdialog. If none is installed, only a “no tool available to show the input window” notification appears. Install one from your distribution’s packages (e.g. sudo apt install zenity). If you installed the APT or DNF package, one is usually installed along with it as a recommended dependency (Recommends).

Antivirus blocks the executable on Windows

There was a case where the 32-bit (x86) zip of v0.1.0 was falsely flagged (Trojan:Win32/Tecabans.STV!cl) by Microsoft Defender’s cloud scan. Starting with v0.1.1, version information was added to the executable to mitigate this. Use the latest version, and if it is still blocked, check with SHA256SUMS.txt that the file matches the official release, then add it to your antivirus exceptions.

On macOS, an “unidentified developer” warning appears

This happens because of the quarantine flag when you download the zip directly. Run xattr -dr com.apple.quarantine "/Applications/Nexa Coffee.app" in Terminal and open the app again. Installing with Homebrew handles this automatically.

I want to check that sleep prevention is actually in effect

OSCommand to checkWhat you see while active
Windowspowercfg /requests (administrator command prompt)nexa-coffee under the DISPLAY and SYSTEM entries
macOSpmset -g assertionsPreventUserIdleSystemSleep · PreventUserIdleDisplaySleep
Linuxsystemd-inhibit --listA sleep:idle:handle-lid-switch inhibitor entry

Version history

Version summary

  • v0.1.2 (2026-09-26) — Linux stability fix (crash when the tray host restarted) · launch at login on Linux · handling display scale changes on Windows
  • v0.1.1 (2026-09-17) — Version information added to the Windows executable (mitigates antivirus false positives)
  • v0.1.0 (2026-09-13) — First public release

v0.1.2 — 2026-09-26

Fixed

  • Linux: crash when the tray host started later than the app — occurred when auto-launching right after login, restarting GNOME Shell, or enabling the AppIndicator extension later (v0.1.0, v0.1.1). The app now registers its icon again when the host appears or restarts.
  • Linux: app not appearing in the app menu after installation — install.sh now writes the executable path as an absolute path and refreshes the existing icon cache if there is one.
  • Windows: tray icon stayed at the old size when the display scale was changed while idle — the icon is now redrawn for the current scale when the scale or display changes.

Improved

  • Linux: sharper numbers in the GNOME panel — a 16px icon is now sent as well, so it is not blurred by downscaling.
  • Linux: launch at login — register with ./install.sh --autostart; ./uninstall.sh removes it as well.

Changed

  • Added Linux .deb and .rpm packages to the release, and the app can now also be installed from the APT and DNF repository (pkg.sosomlab.com) (added 2026-10-09; the program itself is the same).

v0.1.1 — 2026-09-17

Improved

  • Added version information (the version in file properties) to the Windows executable — mitigates the issue where the 32-bit zip of v0.1.0 was falsely flagged by Microsoft Defender’s cloud scan. No functional changes.

v0.1.0 — 2026-09-13

Added

  • Sleep prevention timer — Unlimited · 12 hours · 6 hours · 2 hours · 1 hour · 30 minutes · Custom (days, hours, minutes). While running, it prevents the screen saver, display turn-off, sleep, and hibernation, and releases automatically when the time is up.
  • Remaining-time icon — an arc proportional to the remaining time and a number colored by unit (days purple · hours green · minutes orange · seconds red · unlimited blue ∞). Drawn pixel-identically on all three OSes.
  • Remaining time on the top line of the menu — in the format 0 days 12 hours 50 minutes 3 seconds, updated every second.
  • Auto-start on launch — starts the timer with a saved duration as soon as the app launches.
  • Language selection — English · 한국어 · 日本語 · 中文, defaulting to the OS language.
  • About window and duplicate-instance prevention.
  • Installation channels — GitHub Releases (Windows x64 and x86 zip, macOS universal zip, Linux x64 tar.gz), Homebrew, Chocolatey.

Known limitations

  • No code signing — Windows SmartScreen and macOS Gatekeeper warnings may appear.
  • Closing the lid — Nexa Coffee alone cannot prevent sleep on Windows and macOS (see Troubleshooting).
  • Not listed on winget — winget install will not work until the initial submission review is complete.
  • No menu option to launch at login — you need to register it yourself for each OS (see Launch at login).
  • Timer state is not resumed — relaunching the app starts in the idle state (or with the “Auto-start on launch” duration).
  • No notification at the end — when the time is up, it quietly returns to idle.
  • Linux — only x86_64 is provided, and the icon is not shown in environments without a tray host (such as GNOME with the AppIndicator extension disabled). Verification on a real KDE Plasma environment is not yet complete.
  • Languages — Chinese is Simplified only, and the Japanese and Chinese text has not yet been reviewed by native speakers.
  • macOS screen saver — the screen saver is prevented by signaling user activity, and testing across all screen saver settings is still in progress.

↑ Back to top