Neptune is versatile application that produces a sound when keys are pressed. It offers the advantage of providing a realistic typing experience without disturbing those around you. With its superior speed, minimal almost no CPU usage, and low memory footprint (6-17MB), Neptune is an efficient solution for whether you want to simulate a mechanical keyboard, turn it into a piano, or experiment with other sounds. Developed using Go, Neptune ensures optimal performance and responsiveness.
Supported
[X] Linux (Works in both X11/Wayland)
[X] Windows (Works)
[-] MacOs (Works)
[-] BSD (Untested)
Screenshot // Demo (Sound on)
Installation. By default i provide pre-built binaries for both Linux and Windows, I'd include MacOS as well if i had a MacOs machine to build the app, although it is possible to cross-compile from Linux to MacOs its very troublesome and requires building a toolchain and whatnot.
** Runtime dependencies (Linux Only). There's few runtime dependencies required in order to run/build Neptune (cli or gui). If you're running Ubuntu/Debian based, there's a high change you won't need to install any of the following dependencies.
apt install libx11-6 libxtst6 libx11-xcb1 libxcb-xkb1 libxkbcommon0 libxkbcommon-x11-0 libasound2 libayatana-appindicator3-1 libxxf86vm1 libgl1
ARCH use the AUR to install the dependencies and the package. ** Binaries (CLI / GUI). Both Windows And Linux built binaries are for x86_64 (amd64) architecture only more to come soon. Headover to the [[https://github.com/M1ndo/Neptune/releases/tag/v1.0.2][Releases]] and download the appropriate build for your machine. * Linux ** Arch Linux (AUR)
yay -S realneptune # (BINARY) yay -S realneptune-cli # (BINARY)
yay -S realneptune-git yay -S realneptune-cli-git
**** Ubuntu/Debian
sudo dpkg -i Neptune-1.0.2-1.deb
sudo dpkg -i Neptune-Cli-1.0.2-1.deb
** Other distros. *** GUI To install Neptune your Linux distribution (make sure you have download the latest release)
mkdir Neptune && tar -xf Neptune.tar.xz -C Neptune/ && cd Neptune; sudo make install
***** CLI
sudo wget https://github.com/M1ndo/Neptune/releases/download/v1.0.2/Neptune-Cli -O /usr/bin/Neptune && chmod +x /usr/bin/Neptune
Windows Important Notice Windows Defender will mistakenly flag the executable as malicious. But its not malicious because i don't own a signing certificate (This issue should disappear later) If you get a defender smart screen just click on Show and Run this file . MacOs Unavailable at the moment (Soon)
Use TAGS="nosystray" if you don't wanna build with a systray (Mandatory for MacOs "systray broken"). Use PKG=fyne to package/build with fyne.
To change architecture and compiler, use eg.
GOARCH=arm CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ make linux # windows , darwin
** Linux Make sure you have all runtime dependencies installed.
make linux
make linux-cli
** Windows
make windows
** MacOs
TAGS="nosystray" make darwin
TAGS="nosystray" make darwin-cli
Neptune -cli -download # (Downloads Missing sounds "First time run")
Neptune -cli -soundkey "Alpacas" # Use Alpacas Soundkey
Neptune -lst # List Available installed sound keys.
** CLI Options
Usage of Neptune: -cli Run in CLI instead of GUI -download Download all other soundkeys -lst List all available sounds -sounddir string Sounds directory -soundkey string Soundkey to use default (nk-cream) -verbose Verbose output (Debugging) -volume float Set volume (0 to 1) (default 1)
Setting/Creating a custom keys is very simple and doesn't require to write any configurations. Be in the following folder
fallback.wav fallback2.wav fallback3.ogg fallbackgg.wav
** Key Events (up and down) Neptune supports keyevents. so that when you click on a key it will play a sound and when u release that key it will play another sound.
To define a multi event keysound. just append the keyword -up to the soundfile.
Let's say you have a soundfile for key "shift", like =shift.wav= this will be played when the key is pressed. For when its released that soundfile should be =shift-up.wav=.
Edit config.json in soundkey directory you created and add this (name is optional).
{ "name": "blabla", "support-events": true }