Skip to content
MasRamaPublic

About

A dynamic island for the desktop: one small notch at the top of your screen for what's happening now, out of the way until you need it. Open source. GNOME today, Windows and macOS next.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Nokta

A dynamic island for the desktop: one small notch at the top of your screen for what's happening now, out of the way until you need it. Open source. GNOME and Windows today, macOS next. Hover over it to open it, or press Super+Alt+N (Win+Alt+N on Windows).

The open notch playing a song, with its lyric line The lyrics view, the sung part of the line lit up

Home: the date, the weather, the next events marked in their calendars' colors, files on the shelf, quick toggles and tiles The clipboard history opened from home

The closed notch while a song plays The notch showing the volume

The notch showing connected earbuds and their battery A focus session counting down while a song plays

A notification in the notch A build running as a live activity

The glass theme The paper theme

The picture theme: a picture of your own behind the open player The song's cover, blurred, behind the open player

Full-screen lyrics as a player: the cover, title and artist, Korean and Japanese lines with their pronunciation under them, the seek bar and playback controls

Features

  • Music. The cover, play controls, a seek bar, and shuffle and repeat when the player has them. With several players open, the arrows under the title (or scrolling over the cover) switch between them. The speaker button at the player's top right switches the sound output, for example from the speakers to your headphones. With [media] real_equalizer on, the bars follow the music's bass, mids and highs instead of a pattern. When the song changes, the closed notch widens for 3 s with its title and artist; on pause the bars settle and the cover dims.
  • Synced lyrics, karaoke style. The line being sung lights up from left to right, with the next line under it. Click it to follow the lyrics around it. Lyrics come from LRCLIB, or from your own .lrc files. When they run ahead of the song or behind it, the − and + under the lyrics view move them a quarter second later or earlier; Nokta remembers that for the song, and a click on the label between them puts it back. A Korean or Japanese line gets its pronunciation in Latin letters under it (사랑해 → saranghae, きって → kitte), worked out on your computer; kanji stay as they are. The button in the corner of the lyrics view puts them full screen, karaoke style: the cover, the title and the lines around the one being sung, over the cover's colors drifting slowly. Moving the pointer shows the seek bar and the play buttons; Space plays or pauses, and Escape, × or a click elsewhere closes it.
  • System popups. Volume, brightness, the microphone, Caps Lock, Num Lock and the keyboard layout show in the notch instead of GNOME's popup. A muted speaker or microphone says so.
  • Devices. The notch tells you when Bluetooth headphones connect (with their battery), when the charger is plugged in or out, and when the battery is low or full.
  • Home. When nothing plays, hovering opens home: the date and the weather (see Settings), the next events from GNOME's calendar (a meeting gets a Join button), running activities, timers, the files on the shelf, quick toggles for Do Not Disturb, Caffeine (the screen stays on) and the dark style, and tiles for the notification list, focus, timers, the clipboard and Settings. While a song plays, the grid button at the player's top right opens it. Choose its toggles and tiles and their order on the settings window's Home page: Night Light and a Screenshot tile are there too.
  • Notifications show in the notch instead of GNOME's banner. Hover to keep one open, click it to open the app. Its buttons (Reply, Archive, up to three) show in a row under it, and × closes it while it stays in GNOME's message list. A new one from the same app replaces it and counts on its icon (2, 3, … 9+). GNOME has no inline reply, so neither does the notch.
  • Focus timer. Start it from Quick Settings or with Super+Alt+F. It counts down in the notch and starts a break when the session ends.
  • Timers, stopwatches and alarms. Start one from home or with nokta timer 10m Tea; it counts in the notch and rings when it is done.
  • Live activities. A build, a download or a backup shows in the notch while it runs, and then says how it ended.
  • File shelf. Drop files on the notch to keep them there, then drag them into another app.
  • Screenshots. After a screenshot, the notch shows it with buttons to open it, show it in Files or keep it on the shelf. A screen recording shows how long it runs, with a stop button in home.
  • Downloads. When a file finishes downloading, the notch shows it with buttons to open it, show it in Files or keep it on the shelf.
  • Clipboard history. What you copy, text and pictures, ready to search and copy again from home.
  • System monitor. CPU, memory, temperature and network a tap away in home, and an alert naming the app that uses the most memory when it is almost full.
  • Updates. Home says when a new Nokta is out, and its Update button installs it.
  • Privacy dots. A green dot while an app uses the camera, an orange one for the microphone or screen sharing.
  • Calls. While an app uses the microphone, the notch shows a microphone and how long it has been on (red while muted). Home names the app, with a button to mute the microphone and one to hide the call until the microphone goes off.
  • Progress line. A thin line along the bottom of the closed notch fills up with the focus timer, a countdown, an activity's progress or, beside the cover, the song.
  • Alerts that pop. When an alert opens (a device, a timer, an activity, an event or a notification), the notch bounces a little wider and glows underneath: red when urgent, green when something finished or the charger is in, in a timer's own color, else in the accent. Each alert also moves its own way: a finished timer rings its icon like a bell, a finished activity pops its icon and a failed one shakes the notch, the charger fills the battery from empty, a full battery sweeps it once, a low battery's glow beats three times and a Bluetooth device slides in.
  • Over fullscreen apps. The notch hides while a video or a game is fullscreen, and still comes up for what matters: a low battery, the focus timer, a timer or alarm that is done and a calendar reminder. Choose all alerts or none with fullscreen_alerts.
  • Themes. Midnight, graphite, glass, aurora (tinted with the cover's color), paper, a picture of your own, or your own colors. The song's cover, blurred, can sit behind the open player in any of them. The notch sits flat on the wallpaper; depth adds a soft shadow and a light rim along its edge. Its buttons press in and spring back. Between views the song's cover flies from the closed notch into the open player and back, a running timer or activity flies into its row in home, and an opening view's rows come in one after the other.
  • Keyboard. Super+Alt+N opens the notch on the monitor you are working on, ready for Tab, Enter and Escape. Or have it open on a click instead of on hover.
  • Every monitor has its own notch, and alerts show on the one you are working on.

Install

Linux (GNOME)

You need:

  • GNOME Shell 46 to 51: Ubuntu 24.04 and 26.04, Zorin OS 18, Debian 13, Fedora 43 to 45, RHEL and AlmaLinux 10, Arch and others. GNOME 45 and older are not supported.
  • An x86_64 machine for the prebuilt daemon. On other architectures, build from source.
  • A music player that supports MPRIS. Spotify, Rhythmbox, Lollypop, VLC, mpv (with mpv-mpris), Firefox and Chromium all do.

Then:

  1. Download noktad-<version>-x86_64-linux.tar.gz from the latest release. From 0.11 on, the release also has SHA256SUMS; download it next to the tarball and check it with sha256sum -c --ignore-missing SHA256SUMS.

  2. Unpack it and run the installer:

    tar xf noktad-*-x86_64-linux.tar.gz
    cd noktad-*-x86_64-linux
    ./install.sh

    It installs into your home directory only and never uses sudo: ~/.local/bin/noktad, the ~/.local/bin/nokta command, a systemd user unit, a D-Bus activation file and the GNOME extension.

  3. Log out and log back in. GNOME on Wayland loads new extensions only at login.

  4. Turn the extension on:

    gnome-extensions enable nokta@nokta.io

The daemon starts by itself the first time the extension needs it. A moment after you turn the extension on, the notch opens on a four-step tour: what Nokta is, how to open it, home, and where the settings are. Press Next or Enter to go on, Skip or Escape to close it. It shows once; Show the tour again on the settings window's Behavior page brings it back. To update, see Updating.

Just Perfection users: Nokta moves the GNOME clock to the right side of the top bar so the notch does not cover it. When Just Perfection is enabled, Nokta leaves the clock alone so the two don't fight over it. Set Just Perfection's Clock Menu Position to Right instead.

Windows

You need Windows 10 or 11, 64-bit (x64).

  1. Download Nokta_<version>_x64-setup.exe and SHA256SUMS from the latest release. To check the download, run this in PowerShell in that folder; it prints True:

    $setup = Get-Item .\Nokta_*_x64-setup.exe
    (Select-String -SimpleMatch $setup.Name .\SHA256SUMS).Line.Split(' ')[0] -eq (Get-FileHash $setup).Hash
  2. Run the setup. It is not signed yet, so SmartScreen may say Windows protected your PC: click More info, then Run anyway. It installs for your user only, without admin rights, into %LOCALAPPDATA%\Nokta, brings Microsoft's WebView2 if Windows lacks it, starts Nokta at login (Task Manager's Startup apps can turn that off) and puts the nokta command on your Path for new terminals.

  3. Nokta starts at once and opens on the same tour as on GNOME. The tray icon has Settings and Quit Nokta; starting Nokta again also opens the settings.

Windows keeps showing its own banner for a notification that Nokta shows too. To have only Nokta's, open Windows' Settings → System → Notifications, pick the app and turn off Show notification banners; its notifications stay in Windows' notification centre.

Windows has no system calendar Nokta can read, so give it the calendars yourself: in the settings window's Behavior page, under Calendar, add up to five secret iCal addresses. In Google Calendar it is in the calendar's settings under Integrate calendar → Secret address in iCal format; in Outlook, Settings → Calendar → Shared calendars → Publish a calendar, the ICS link; in iCloud, share the calendar as a public calendar. Treat the address like a password: anyone who has it can read the calendar. Nokta reads it every 15 minutes and shows only its host.

Most of Nokta works the same on Windows. What differs, as Windows offers no way to do it:

  • No Do Not Disturb or Night Light toggles, and a shared screen gets no privacy dot.
  • Windows 11's own volume and brightness popup still shows beside the notch's.
  • A call shows no app icon, Bluetooth devices show no battery, and the System page shows no CPU temperature (Windows gives it to administrators only).
  • Activities come only from the nokta command; nothing starts one by itself, as system updates or apps do on GNOME.
  • Clicking a notification opens its app or its link, not the exact item.
  • The tray's items stay in English.

Updating

From 0.11 on, noktad asks GitHub once a day whether a newer Nokta is out (the first time 30 seconds after it starts). When one is, home shows Nokta 0.12.0 is available: click the text to read what is new, or press Update. The notch shows the update as an activity while it downloads and installs; then home asks you to log out and back in, since GNOME loads the new extension only at login.

The same from a terminal:

nokta update --check   # only say whether there is a newer one
nokta update           # ask, then install it
nokta update --yes     # install without asking

nokta update downloads the release's tarball and its SHA256SUMS into ~/.cache/nokta/update/, and installs nothing unless the tarball's SHA-256 is the one listed there. It then runs the tarball's own install.sh, which restarts noktad. Prebuilt releases are for x86_64; elsewhere, build from source. [updates] check = false stops the daily check; home's button and nokta update still work when you ask.

From 0.10 or older, update by hand once: download the new release and run its install.sh as in Install.

On Windows, home's Update and nokta update work the same way. They download Nokta_<version>_x64-setup.exe and SHA256SUMS into %LOCALAPPDATA%\nokta\cache\update\, check the setup's SHA-256 and run it quietly: Nokta closes, updates and starts again by itself a few seconds later, with no logging out. Running a newer setup by hand does the same.

Using Nokta

Keyboard

Super+Alt+N opens the notch on the monitor you are working on (the player while a song plays, else home) and gives it the keyboard: the first button has a focus ring, Tab and Shift+Tab or the arrow keys move it, and Enter or Space press it. The notch stays open while the pointer comes and goes. Escape, the shortcut again or a click outside close it. Change the keys with open_shortcut.

With open_on = "click", resting the pointer on the notch no longer opens it; click it instead. It still closes when the pointer leaves.

Gestures

On the notch, open or closed:

  • Scroll up or down to change the volume by 5 %, shown in the notch.
  • Swipe sideways with two fingers (or tilt the wheel) to skip to the next song (left) or go back (right), one song per swipe.
  • Middle click to play or pause.

Lists and the cover keep their own scrolling. Turn this off with gestures = false.

Live activities

Any program can show what it is doing in the notch. The nokta command makes it a one-liner for scripts:

nokta run -- cargo build --release          # shows "cargo build" while it runs, then ✓ or ✗
nokta activity set backup --title "Backup" --detail "Photos" --progress 40
nokta activity end backup --message "1 204 files"
nokta activity end backup --failed --message "Disk full"

nokta run passes the command's exit code through, and the command still runs when Nokta does not. nokta --help lists every option. Programs can also call io.nokta.Activities1 on the session bus (see ARCHITECTURE.md). The newest activity shows in the closed notch, with its percentage when it reports one. Hover to see up to three.

On Windows the same nokta works in PowerShell or Command Prompt and talks to the running Nokta. nokta run starts programs, not scripts: run a .cmd or .bat file through cmd /c (nokta run -- cmd /c build.cmd) and a PowerShell script through powershell -File.

Apps that show progress on the dock (Firefox and Chromium-based browsers downloading, Files copying, and others) show it in the notch on their own, once it has lasted a second and a half, and end as done when the dock's bar goes. System updates and installs through PackageKit (GNOME Software, pkcon) show too: what is being installed, what it is doing and how far it is, then whether it worked. Nokta only listens while PackageKit runs; it never starts it. auto_progress = false turns both off.

Timers, stopwatches and alarms

Home's Timer tile starts a countdown of 1 to 30 minutes, or a stopwatch. The nokta command starts any length, a label and alarms:

nokta timer 10m Tea            # also 1h30m, 45s, or 25 for minutes
nokta stopwatch Run
nokta alarm 07:30 Wake up      # the next 07:30 on your clock, today or tomorrow
nokta timer clear              # removes them all

The closed notch shows the countdown that ends first, else a stopwatch. An alarm shows there in its last hour. Home lists them with buttons to pause and remove. When a countdown or an alarm ends, the notch says so with a sound ([timer] sound) and stays up twice as long as other alerts. Up to six run at once. They run in the daemon and follow the wall clock, so an alarm due while the laptop slept rings when it wakes.

File shelf

Drag files from Files, a browser or any other app to the notch. It opens with Drop to keep here, and the files you drop stay on its shelf. The closed notch shows how many there are. The open notch lists them, newest first, after a stack that holds them all; pictures show a thumbnail.

Drag a file (or the stack, for all of them) into another app, for example a chat, to send it. It leaves the shelf once the app takes it. Click a file to open it, or its × to take it off. The shelf keeps up to 30 files, forgets one that is moved or deleted, and is empty again after you log out. Nokta never copies the files.

GNOME Shell cannot take a drop from an app, so the extension starts a small helper window (gjs, a GTK 4 window that draws nothing) under the notch while you drag. It is not in Alt+Tab or the overview.

Screenshots

After a screenshot, the notch shows it instead of GNOME's Screenshot captured banner, with Open, Show in Files and Keep on shelf. A click on the picture opens it too. Keep on shelf puts the file on the file shelf, ready to drag into a chat.

The preview shows only for screenshots taken with the screenshot UI (Print Screen): GNOME does not say which file the direct shortcuts (Shift+Print Screen, Alt+Print Screen) saved. With saving to disk turned off in GNOME, the preview has no buttons.

While the screenshot UI records the screen, the notch shows a red dot and how long it has been recording, and home has a row with a stop button. When the recording is saved, the notch shows the same preview with a video icon instead of GNOME's Screencast recorded banner.

Downloads

When a file finishes downloading into your Downloads folder, the notch shows it like a screenshot: a picture for an image, else the icon for its kind, its name and size, and Open, Show in Files and Keep on shelf. A click on the picture opens it. It stays as long as a notification ([notifications] duration_ms), and over a fullscreen app only with fullscreen_alerts = "all".

noktad watches the folder, not its subfolders, and shows a file once it has its final name (browsers rename it from .part or .crdownload at the end) and nothing has written to it for a moment. Hidden files and empty ones are left out. It watches the folder your session names in ~/.config/user-dirs.dirs, or the one you set in [downloads] folder.

Clipboard history

The Clipboard tile in home opens what you copied, newest first: text with its first line, pictures with a thumbnail. Click an entry to copy it again, ready to paste. Its pin keeps it when the history is full or cleared, and its × takes it out. Scroll over the list for older entries.

The magnifier in the header searches: type to filter the list (case and accents do not matter, and picture finds pictures), press Enter to copy the first match, or Escape to close the search. The other buttons pause the history (copies are not kept until you resume) and clear it. The notch's right-click menu has Pause clipboard too. Nokta skips what a password manager marks as secret, and pictures larger than 8 MB. The history is kept in memory only, so it is empty again after you log out.

System monitor

The System tile in home opens four rows: CPU use with a line of the last minute, memory as a bar with used / total, the CPU's temperature, and how fast the network downloads and uploads. The temperature is in °F when [weather] units = "fahrenheit", and shows – where the computer has no CPU sensor that Linux knows. noktad reads these every 2 seconds while the page is open and not at all otherwise.

When memory runs so short that apps wait for it, the notch shows a red Memory is almost full alert with the name of the app using the most, at most once in 10 minutes. The kernel tells noktad (memory pressure, on kernels that let users watch it), so nothing polls. Turn it off with [system] memory_alert = false. Over a fullscreen app it shows only with fullscreen_alerts = "all".

Settings

The Settings tile in home opens a page in the notch with the themes, switches for the cover's color, the progress line and the alert glow, and how fast the notch moves. Its All settings row opens the settings window, as do the menu a right click on the notch opens, nokta settings and the Extensions app. A change shows in the notch right away. The window is dark whatever your system style, and its Appearance page starts with a preview of the notch in the theme you pick.

The settings page in the notch: the themes, three switches and the motion speed

The settings window: a sidebar of pages, a preview of the notch, the theme gallery and the theme switches

The window saves to ~/.config/nokta/config.toml. You can edit that file by hand too, and your comments are kept either way. The daemon writes a commented copy with the defaults on first start, and applies changes as soon as you save. If the file has a mistake, Nokta keeps the last working settings and logs the line and column of the error (journalctl --user -u nokta); the window says what to fix before it saves anything.

Every key, by table:

[appearance]: theme, colors and sizes
Key Default What it does
theme "midnight" "midnight" (black), "graphite" (dark grey with a fine edge), "glass" (see-through), "aurora" (tinted with the cover's color), "paper" (light), "picture" (a picture of your own behind the notch), or "custom" for the colors below
follow_system_style false Use theme while the system's style is dark and light_theme while it is light, switching as it changes
light_theme "paper" The theme for the light style, with follow_system_style = true; any value theme takes
height 32 Height of the closed notch in pixels
idle_width 180 Width of the closed notch when nothing plays
playing_width 260 Width of the closed notch while music plays
expanded_width 420 Width of the open notch
expanded_height 150 Height of the open notch
corner_radius 14 Radius of the bottom corners
ear_radius 8 Radius of the inward curves where the notch meets the top edge
background "#000000" Notch color, with theme = "custom"
gradient "none" "down", "across" or "diagonal" runs the notch from background to background_end that way; "none" is flat; with theme = "custom"
background_end "#1c1c1e" Where the gradient ends, with theme = "custom" and a gradient
background_opacity 1.0 0.0 makes the notch background see-through, 1.0 solid; text and icons stay solid; with theme = "custom"
foreground "#ffffff" Text and icon color, with theme = "custom"
accent "#ffffff" Color of the seek bar, the play button, the equalizer and the volume bar when the cover's color is not used, with theme = "custom"
picture "" The picture shown with theme = "picture", a PNG, JPEG or WebP path; ~/ is your home. The closed notch shows the top middle of it and opening shows more
picture_darken 0.35 How much darker the picture is drawn so text stays readable, 0.0 to 0.8
picture_blur 0 Blurs the picture by this many pixels, 0 to 40
cover_backdrop false Shows the song's cover, blurred and darkened, behind the open player, with white text
use_album_accent true Color the seek bar, the play button and the equalizer with the cover's color, in every theme; a very dark cover is lightened on a dark notch and a light one darkened on paper, so they still show
animation_speed 1.0 0.5 is twice as fast, 2.0 twice as slow
morph true The cover flies between the closed notch and the player, a timer or activity into its row in home, and rows come in one by one; false keeps a plain fade
osd_width 300 Width of the notch while it shows volume, brightness or Caps Lock
progress_line true A thin line along the bottom of the closed notch for the focus timer, a countdown, an activity's progress or the song
alert_glow true A glow under the notch in an alert's color; the bounce stays either way, unless GNOME's animations are off
alert_motion true Each alert moves its own way (a timer rings, a failed activity shakes); false gives every alert the bounce
depth false A soft shadow under the notch and a light rim along its bottom edge
[behavior]: what the notch shows and when
Key Default What it does
open_on "hover" "hover" opens the notch when the pointer rests on it, "click" only when you click it
open_delay_ms 120 How long the pointer must rest on the notch before it opens
close_delay_ms 300 How long the notch stays open after the pointer leaves
open_shortcut "<Super><Alt>n" Keys that open the notch for the keyboard (see Keyboard), written like GNOME's keyboard shortcuts; "" means no shortcut
gestures true Scroll for volume, swipe sideways for the next or previous song and middle click to play or pause (see Gestures)
move_clock true Move the GNOME clock to the right side of the top bar
track_peek true When the song changes, the closed notch shows its title and artist for 3 s
show_lyrics true Show the current lyric line in the open notch
replace_osd true Show volume, brightness and other system popups in the notch instead of GNOME's popup
osd_duration_ms 1500 How long the notch shows the volume or brightness after the last change
show_caps_lock true Show a message in the notch when Caps Lock turns on or off
show_num_lock false Show a message in the notch when Num Lock turns on or off
show_input_source true Show the new keyboard layout when you switch layouts
all_monitors true Show a notch on every monitor; false shows it only on the primary monitor
device_alerts true Show Bluetooth audio, charger and battery alerts in the notch
alert_duration_ms 3000 How long a device alert stays
show_clock true Show the time in the notch while nothing plays
clock_format "system" "24h" (17:00), "12h" (5:00), or "system" to follow GNOME's setting
privacy_dots true A green dot while the camera is on and an orange one while the microphone or screen sharing is in use
call_indicator true While the microphone is on: the app and how long in the notch, with a mute button in home
live_activities true Show live activities in the notch; false shows none, and scripts that report them keep working
file_shelf true Drop files on the notch to park them, then drag them out again (see File shelf)
fullscreen_alerts "important" Which alerts show over a fullscreen app, where the notch is otherwise hidden: "important" (battery low or critical, the focus timer, a timer or alarm done, a calendar reminder), "all" (also the other device alerts, activities ending, and volume, brightness and the lock keys) or "none". Notifications wait for GNOME either way
screenshot_preview true After a screenshot or a screen recording, a preview with Open, Show in Files and Keep on shelf instead of its banner (see Screenshots); needs [notifications] in_notch
[media]: the bars that follow the music
Key Default What it does
real_equalizer false The bars follow the music: while a player plays, noktad records what your speakers play with pw-record (PipeWire) and measures it. GNOME may show its microphone indicator meanwhile
[lyrics]: looking lyrics up
Key Default What it does
enabled true Look up lyrics on lrclib.net
romanize true Show Korean and Japanese lines in Latin letters under them, offline
[timer]: the focus timer

Start the timer with the Focus toggle in Quick Settings or with Super+Alt+F; the same keys stop it. The toggle's menu also starts a break, pauses and stops. After every few focus sessions the break is a long one; stopping the timer starts the count again. The timer runs in the daemon, so it keeps going while the screen is locked.

Key Default What it does
focus_minutes 25 Length of a focus session, 1 to 180
break_minutes 5 Break that starts after a focus session, 0 to 60; 0 means no break
long_break_minutes 15 Long break, 1 to 60
sessions_before_long_break 4 Focus sessions before a long break, 0 to 12; 0 means never
sound true Play a sound when a focus session, a break, a countdown or an alarm ends
quiet_notifications true Show no notification banners while a focus session runs; they still go to the message list. Banners you had turned off stay off
shortcut "<Super><Alt>f" Keys that start focus or stop the timer, written like GNOME's keyboard shortcuts (<Control><Shift>F12); "" means no shortcut
[activities]: live activities
Key Default What it does
stale_minutes 30 An activity not updated for this long ends as failed, 1 to 1440
auto_progress true Show the progress apps report to the dock (downloads, file copies) and PackageKit's installs and updates as activities
[weather]: the weather in home

Set a location and home shows the weather beside the date: the sky, the temperature, and the place with today's high and low. It comes from Open-Meteo, which needs no account. noktad asks again when the notch opens and the reading is more than 30 minutes old, or 5 minutes after a failed request.

Key Default What it does
enabled true Show the weather when a location is set
location "" A place like "Jakarta", or coordinates like "-6.2,106.8"; "" shows no weather
units "celsius" "celsius" or "fahrenheit"
[calendar]: the agenda, reminders and the countdown

Home lists the next events from GNOME's calendar (the same events as the date menu, including online accounts), each with a strip in its calendar's color and its time first; the first also says how soon, an event tomorrow says Tomorrow. A click opens your calendar app. Before an event starts the notch says Standup in 5 min, then the closed notch counts down in place of the clock (5 min ... 1 min, then Now for 5 minutes), and at the start it says Standup is starting. All-day events are left out. An event with a Google Meet, Zoom, Teams, Webex, Jitsi or Whereby link gets a Join button on its row and its reminder: it opens the meeting and ends the countdown.

Key Default What it does
enabled true Show the next events and their reminders
agenda_size 3 How many events home lists, 1 to 5
reminder_minutes 5 How long before an event to show it, 0 to 60; 0 shows only the start, with no countdown
countdown true Count down to the next event on the closed notch, from its reminder until 5 minutes after it starts
feeds [] Windows only: the secret iCal addresses (https:// or webcal://) of up to 5 calendars; on Linux Nokta reads GNOME's calendars
[notifications]: notifications in the notch
Key Default What it does
in_notch true Show the notifications GNOME would show as a banner in the notch instead. Critical ones, and any while an app is fullscreen, still use GNOME's banner. Do Not Disturb and each app's notification settings still apply
duration_ms 5000 How long a notification stays, 1000 to 30000; it stays while the pointer is on it
show_body true Show the message; false shows only the title and the app
[clipboard]: the clipboard history
Key Default What it does
enabled true Keep a history of what you copy. Turning it off forgets the whole history, pinned entries too
max_items 25 How many entries to keep, 5 to 100, besides the pinned ones
[downloads]: finished downloads
Key Default What it does
enabled true Show a file that finishes downloading. Off, noktad stops watching the folder
folder "" The folder to watch. Empty for the session's download folder (XDG_DOWNLOAD_DIR, else ~/Downloads)
[system]: the system monitor
Key Default What it does
memory_alert true Warn when memory is almost full, naming the app that uses the most
[updates]: new versions of Nokta
Key Default What it does
check true Ask GitHub once a day whether a newer Nokta is out, and say so in home
[home]: home's toggles and tiles
Key Default What it does
toggles ["do_not_disturb", "caffeine", "dark_style"] The quick toggles, in the order shown: at most 3 of these and night_light. Night Light shows only where GNOME has it. [] hides the row
tiles ["notifications", "focus", "timer", "clipboard", "system", "settings"] The tiles, in the order shown: at most 6 of these and screenshot, which opens GNOME's screenshot UI. [] hides the row

Languages

Nokta speaks English and Indonesian, and follows the language of your session: the notch, its alerts and the settings window all switch. Song titles, app names and what you type stay as they are. To add a language, see CONTRIBUTING.md.

Privacy

  • Lyrics. To find lyrics, noktad sends the artist, title, album and length of the song that is playing to LRCLIB, a free, open lyrics database. It sends nothing else, and nothing at all with [lyrics] enabled = false.
  • Weather. noktad sends the location you set to Open-Meteo: a place name to find its coordinates, then the coordinates for the forecast. With location = "", the default, it sends nothing.
  • Calendar. To find an event's meeting link, noktad reads that one event from Evolution Data Server on your computer, and its calendar's color from the calendar's settings there. It sends nothing anywhere; the link opens only when you press Join. On Windows, Nokta downloads the calendars you gave it from their addresses every 15 minutes and sends nothing with the request; the addresses stay in your config and never show in full or go to the log.
  • Notifications on Windows. While [notifications] in_notch is on, Nokta reads Windows' own notification database on your computer, read only, to show new notifications. It keeps only the app logos it shows, in its cache, and sends nothing.
  • Clipboard. The history never leaves your computer and is never written to disk, except small thumbnails of copied pictures in $XDG_RUNTIME_DIR/nokta/clipboard/ (memory, readable only by you, emptied when noktad starts and when an entry goes).
  • Downloads. noktad watches the names of the files in your download folder, and reads a file only to make a small thumbnail of a picture, in ~/.cache/nokta/downloads/ (the 20 newest are kept). It sends nothing anywhere.
  • Updates. With [updates] check = true, the default, noktad asks api.github.com for Nokta's latest release once a day. The request carries nothing about you but the usual IP address and a User-Agent naming Nokta's version. nokta update downloads from GitHub only when you install. With check = false nothing is sent until you ask.
  • System monitor. noktad reads the system's counters in /proc and /sys while the System page is open, and the names and memory of running processes only when memory is almost full, to name the app in the alert. It keeps and sends nothing.
  • Bars that follow the music. With [media] real_equalizer = true, noktad records what your speakers play while a player plays, never the microphone, and stops 2 seconds after the music does. The sound is only measured, four levels 25 times a second, and never stored or sent. GNOME counts any recording as the microphone in use, so its indicator may show meanwhile; Nokta's own dots and call view leave it out. On Windows Nokta does the same with Windows' own loopback recording of the speakers.
  • Caches. Cover art that a player offers as a web address is downloaded to ~/.cache/nokta/art/. Lyrics are cached in ~/.cache/nokta/lyrics/.
  • Lyric timing. The timing you set for a song is kept in ~/.local/share/nokta/lyrics-offsets.toml, one line per song: a hash of its artist, title, album and length, and the offset in milliseconds, so the file does not list what you listen to. A song set back to "On time" leaves the file. It stays after uninstall.sh --purge, like your own .lrc files next to it.

Troubleshooting

  • The notch shows only a clock while music plays. Check that the daemon runs: systemctl --user status nokta. Its log is in journalctl --user -u nokta.
  • No lyrics. LRCLIB does not know every song, and only time-synced lyrics are shown. A song that was not found is not looked up again for 7 days. Songs played on YouTube in a browser work too: Nokta drops "(Official Music Video)" and the like and reads the artist from the title.
  • Your own lyrics. Put a synced .lrc file next to a local music file with the same name (Song.flac and Song.lrc), or name it Artist - Title.lrc and put it in ~/.local/share/nokta/lyrics/. Your files always win over LRCLIB and show the next time the song plays.
  • The extension does not show up in gnome-extensions list. Log out and back in after installing.

Uninstall

On Linux, from the unpacked release folder:

./uninstall.sh          # keeps ~/.config/nokta and ~/.cache/nokta
./uninstall.sh --purge  # removes them too

On Windows, uninstall Nokta from Settings → Apps → Installed apps. It also stops Nokta starting at login and takes the nokta command off your Path. Your settings in %APPDATA%\nokta and the cache in %LOCALAPPDATA%\nokta stay; delete those folders to remove them too.

Build from source

You need Rust (stable), Node.js 22.13 or newer, and gnome-extensions (part of GNOME Shell).

git clone https://github.com/MasRama/nokta.git
cd nokta
cargo build --release
(cd extension && npm ci && npm run pack)
packaging/install.sh
gnome-extensions install --force build/nokta@nokta.io.shell-extension.zip

install.sh finds the binary in target/release when it runs from a checkout. Then log out, log back in and enable the extension as above. docs/testing.md shows how to try changes in a throwaway GNOME Shell without touching your session.

How it works

Nokta has two parts:

  • noktad, a small Rust daemon. It follows your media players (MPRIS), fetches lyrics and the weather, watches the battery (UPower), Bluetooth (BlueZ) and system updates (PackageKit), runs the focus timer, keeps the shelf and the clipboard history, and reads your settings.
  • A frontend that draws the notch and talks to the daemon. On Linux it is a GNOME Shell extension, and they talk over D-Bus. On Windows it is one app, Nokta.exe, that draws the notch in WebView2 and runs the daemon's core inside itself, with Windows' own media, device and notification sources.

The daemon does the work so the shell stays fast. It uses no CPU while nothing plays and about 10 MB of memory. ARCHITECTURE.md has the details.

Platform Status
Linux, GNOME 46 to 51 Works (47 is untested: no supported distribution ships it)
Linux, KDE Plasma, Hyprland, Sway Planned
Windows 10 and 11 (x64) Works, with the differences listed under Install
macOS Planned: the daemon's core builds and passes its tests there

The plan is one core for every platform, with a small frontend for each desktop that draws the notch. Today there are frontends for GNOME and Windows. CI builds and tests the core on Linux, macOS and Windows on every change, and installs and starts the Windows app on a real Windows.

Contributing

Bug reports and pull requests are welcome. Read CONTRIBUTING.md first, and ARCHITECTURE.md for how the pieces fit together. tools/devshell/readme-shots.sh takes the screenshots above again, in English.

License

GPL-3.0-or-later

About

A dynamic island for the desktop: one small notch at the top of your screen for what's happening now, out of the way until you need it. Open source. GNOME today, Windows and macOS next.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages