Not working with wayland
There is no sound in wayland. System is Ubuntu 23.10 with wayland. I tried installing it as an snap package and with apt. Workaround is starting the gnome session with X11.
I have bucklespring sound in Wayland, but only in the Vivaldi browser. Not in the terminal, text editor, file manager, LibreOffice, or Firefox. I'm listening to it now while typing this comment, but haven't heard it outside of Vivaldi yet.
Fedora 40, KDE Plasma 6.0.4, window manager Kwin, bucklespring installed via Snap
This is a known issue with wayland, as wayland does not offer any mechanisms for globally sniffing keyboard events. The X11 API for capturing keystrokes is operational, but no events are generated for other windows. This of course makes sense, as sniffing keystrokes from another application is a potential security issue.
As an alternative, you can build bucklespring with the libinput backend instead, as this will capture keystrokes directly as they are reported from the kernel to userspace:
make libinput=1
This will require some twiddling with permissions though, as regular users typically do not have access to the devices in /dev/input. On debian/ubuntu-based systems adding your user to the input group should suffice.
As a normal user using Ubuntu Desktop 24.04 on Wayland:
git clone https://github.com/zevv/bucklespring && cd ./bucklespring/sudo apt-get install libopenal-dev libalure-dev libxtst-devsudo apt-get install libinput-devmake libinput=1sudo -E -g input -u $(whoami) ./buckle
so I tried using this and this still has the issue of [ALSOFT] (EE) Failed to connect PipeWire event context (errno: 112) unable to open default device I had got the things neccessary for make in archlinux
doas pacman -S openal alure li
then make libinput=1
then sudo ./buckle
[ALSOFT] (EE) Failed to connect PipeWire event context (errno: 112)
unable to open default device
Just a comment to warn people that use the bucklespring-libinput-git AUR package on Arch.
Make sure to run buckle and NOT bucklespring:
sudo -E -g input -u $(whoami) buckle
I wasted some time on the same "Failed to connect PipeWire event context" error only to realize that /usr/bin/bucklespring is a script that uses pkexec to launch the original buckle program as a background task, but doing so cancels the args passed to sudo.
Be careful and have fun! :]
This is a known issue with wayland, as wayland does not offer any mechanisms for globally sniffing keyboard events. The X11 API for capturing keystrokes is operational, but no events are generated for other windows. This of course makes sense, as sniffing keystrokes from another application is a potential security issue.
As an alternative, you can build bucklespring with the
libinputbackend instead, as this will capture keystrokes directly as they are reported from the kernel to userspace:make libinput=1This will require some twiddling with permissions though, as regular users typically do not have access to the devices in
/dev/input. On debian/ubuntu-based systems adding your user to theinputgroup should suffice.
can you pls say me the steps of solving this issue, i want every app typing should output the keystroke sound. can you help me
i try to add myself to user group input so i don't need to specify -g input:
sudo usermod -aG input $USER
but when i run either bucklespring or sudo buckle it crash:
[ALSOFT] (EE) Failed to connect PipeWire event context (errno: 112)
it works fine if i inherit the environment variables like this:
sudo -E buckle
so what is the required environment variable for running buckle?
As a normal user using Ubuntu Desktop 24.04 on Wayland:
* `git clone https://github.com/zevv/bucklespring && cd ./bucklespring/` * `sudo apt-get install libopenal-dev libalure-dev libxtst-dev` * `sudo apt-get install libinput-dev` * `make libinput=1` * `sudo -E -g input -u $(whoami) ./buckle`
works on kde debian trixie on wayland 😸 Thank you!
P.S: minor tip, the last command is running buckle already and you don't need to wait for it to finish "installing", the make step is the last build step. to start buckle run the input command mentioned in a terminal or start script for example.
i cant get this to compile on arch steamOS
(127)(deck@steamdeck` tmp)$ git clone https://github.com/zevv/bucklespring && cd ./bucklespring/
Cloning into 'bucklespring'...
remote: Enumerating objects: 1826, done.
remote: Counting objects: 100% (160/160), done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 1826 (delta 152), reused 136 (delta 136), pack-reused 1666 (from 2)
Receiving objects: 100% (1826/1826), 16.97 MiB | 26.69 MiB/s, done.
Resolving deltas: 100% (688/688), done.
(deck@steamdeck bucklespring)$ pwd
/tmp/bucklespring
(deck@steamdeck bucklespring)$ make libinput=1
Package libudev was not found in the pkg-config search path.
Perhaps you should add the directory containing `libudev.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libudev' not found
cc -O3 -g -Wall -Werror -DVERSION=\"1.5.1\" -DPATH_AUDIO=\""./wav"\" -c main.c -o main.o
Package libudev was not found in the pkg-config search path.
Perhaps you should add the directory containing `libudev.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libudev' not found
cc -O3 -g -Wall -Werror -DVERSION=\"1.5.1\" -DPATH_AUDIO=\""./wav"\" -c scan-libinput.c -o scan-libinput.o
In file included from scan-libinput.c:8:
/usr/include/libinput.h:35:10: fatal error: libudev.h: No such file or directory
35 | #include <libudev.h>
| ^~~~~~~~~~~
compilation terminated.
make: *** [Makefile:53: scan-libinput.o] Error 1
im p sure i have the dependency's needed but i could be wrong