Keep the dictation daemon config versioned with the rest of the setup. The file carries no secrets (local backend), but if a cloud backend with an API key is ever configured it must not be committed; whisrs accepts WHISRS_GROQ_API_KEY-style env vars instead.
146 lines
4.6 KiB
Markdown
146 lines
4.6 KiB
Markdown
Jeena's Hyprland setup
|
|
======================
|
|
|
|
This git repo hosts all the dotfiles I need for my hyprland setup. You
|
|
can use it to learn and to copy from it, but you probably don't want
|
|
to just use it as it is because it's very opinionated and hard coded.
|
|
|
|
Introduction Video
|
|
==================
|
|
|
|
[Jeena's Hyprland Demo](https://tube.jeena.net/w/2EpbXJnMrDokc3362oXSTQ)
|
|
|
|
Screenshots
|
|
===========
|
|
|
|
Hyprlock lockscreen with custom font and showing keyboard layout
|
|

|
|
|
|
Empty hyprland screen
|
|

|
|
|
|
Firefox and Kitty side by side, no margin on the outside
|
|

|
|
|
|
If only one window is visible, border is removed
|
|

|
|
|
|
Tofi as app menu
|
|

|
|
|
|
nmtui to edit network and tofi to choose I/O audio devices
|
|

|
|
|
|
wlogout menu
|
|

|
|
|
|
Install
|
|
=======
|
|
|
|
You need to clone this git repository to your computer, let's assume
|
|
you do:
|
|
|
|
```
|
|
mkdir -p ~/Projects/
|
|
cd ~/Projects/
|
|
git clone https://git.jeena.net/jeena/hypr-dotfiles.git
|
|
```
|
|
|
|
The next step is to set up a hostname config where you can overwrite
|
|
hyprland configs for a specific host:
|
|
|
|
```
|
|
cd ~/Projects/hypr-dotfiles/hypr/hosts/
|
|
touch $(hostname).conf
|
|
ln -s $(hostname).conf host.conf
|
|
```
|
|
|
|
|
|
Then you need to soft link the directories in this git repo to the
|
|
`~/.config/` directory, make sure that those directories don't exist
|
|
yet in your `~/.config`, you will need to delete or move them
|
|
before. In our example it would be:
|
|
|
|
```
|
|
cd ~/.config
|
|
ln -s ~/Projects/hypr-dotfiles/hypr hypr
|
|
ln -s ~/Projects/hypr-dotfiles/waybar waybar
|
|
ln -s ~/Projects/hypr-dotfiles/tofi tofi
|
|
ln -s ~/Projects/hypr-dotfiles/wlogout wlogout
|
|
ln -s ~/Projects/hypr-dotfiles/kitty kitty
|
|
ln -s ~/Projects/hypr-dotfiles/helix helix
|
|
ln -s ~/Projects/hypr-dotfiles/fcitx5 fcitx5
|
|
ln -s ~/Projects/hypr-dotfiles/whisrs whisrs
|
|
```
|
|
|
|
To enable the auto-mute/unmute timers (mutes at 21:00, unmutes at
|
|
07:00, only when idle-inhibit is active), link the systemd user units:
|
|
|
|
```
|
|
systemctl --user link ~/Projects/hypr-dotfiles/systemd/user/auto-mute.service
|
|
systemctl --user link ~/Projects/hypr-dotfiles/systemd/user/auto-mute.timer
|
|
systemctl --user link ~/Projects/hypr-dotfiles/systemd/user/auto-unmute.service
|
|
systemctl --user link ~/Projects/hypr-dotfiles/systemd/user/auto-unmute.timer
|
|
systemctl --user enable --now auto-mute.timer auto-unmute.timer
|
|
```
|
|
|
|
You also need to install all the dependencies:
|
|
|
|
- hyprland
|
|
- hypridle
|
|
- hyprlock
|
|
- wlogout
|
|
- tofi
|
|
- waybar
|
|
- swaybg
|
|
- nmtui
|
|
- kitty
|
|
- python3
|
|
- Curved Square font https://www.1001freefonts.com/curved-square.font
|
|
- FontAwesome
|
|
- ttf-jetbrains-mono-nerd (required for waybar icons)
|
|
- xdg-desktop-portal-hyprland
|
|
- xdg-desktop-portal-gtk
|
|
- uwsm (recommended; log in via the "Hyprland (uwsm-managed)" session so
|
|
systemd starts the portals before the autostart apps — otherwise apps like
|
|
waybar and chromium intermittently come up in light mode. Without uwsm the
|
|
portal startup script falls back to launching the portals manually.)
|
|
- fcitx5
|
|
- fcitx5-hangul
|
|
- pipewire-alsa (whisrs captures audio via raw ALSA; without it the default
|
|
PCM is the headset-jack mic, which is silent when nothing is plugged in)
|
|
- vulkan-intel and vulkan-icd-loader (iGPU decode; already standard on systems
|
|
with Intel graphics set up for Vulkan)
|
|
- whisrs-git (AUR; voice dictation daemon, see below)
|
|
|
|
There are probably more, I will update the list next time I'm
|
|
installing it on a new computer.
|
|
|
|
Voice dictation
|
|
===============
|
|
|
|
The Copilot key (on newer laptops this replaced the right Ctrl key; it
|
|
sends SUPER+SHIFT+F23) toggles voice dictation. Hold it to record and
|
|
release to transcribe: one whisrs toggle fires on press, another on
|
|
release. whisrs transcribes locally with a whisper.cpp model and types
|
|
the text at the cursor in any window, including terminals running the
|
|
dockerized agent harnesses. Text injection uses the Wayland
|
|
virtual-keyboard protocol on Hyprland, with a uinput fallback that the
|
|
package's udev rule grants access to.
|
|
|
|
The config lives in ~/.config/whisrs/config.toml (set [audio] device =
|
|
"pipewire" so capture goes through PipeWire) and the model in
|
|
~/.local/share/whisrs/models/. The daemon runs as the systemd user
|
|
service whisrs.service.
|
|
|
|
The stock AUR build decodes on the CPU with generic -march flags, which
|
|
makes dictation take around five seconds. On this machine the package
|
|
is rebuilt locally with -march=native plus the vulkan cargo feature so
|
|
decoding runs on the Intel iGPU instead; that drops latency to roughly
|
|
a second. After AUR updates, re-apply via
|
|
~/Projects/whisrs-local-build/build.sh.
|
|
|
|
License
|
|
=======
|
|
|
|
All scripts here are under the GPL-v3 or a later version.
|