mirror of
https://github.com/yusufipk/dikte.git
synced 2026-09-11 10:56:10 +00:00
Write down what installing on Fedora takes
The README has Arch and Ubuntu on it, and the two things that differ on Fedora are the two that decide whether anything works at all. The package names are its own, and `systemctl --user enable --now ydotool` has nothing to enable there: Fedora ships ydotool as a system service only, and its ydotoold holds a root-owned socket at mode 600. The unit is green, the daemon is up, and every paste is refused. The drop-in the README now spells out points ydotoold at $XDG_RUNTIME_DIR/.ydotool_socket and hands it over by uid, which is the path the client already looks at, so nothing has to carry YDOTOOL_SOCKET. Red Hat closed the same report as NOTABUG in 2023, so this stays a step the user takes rather than one a later package will take for them. install.sh was asking whether the unit was up, which is the question that answers wrongly here. It now asks whether the socket is one this user may write to, which is what auto-paste actually needs, and it names which of the three ways it failed: a socket handed to nobody, a daemon that put its socket somewhere else, or no daemon at all. On Arch and everywhere else the answer is the same one as before. ffmpeg-free out of Fedora's own repositories is enough, against the usual advice to reach for RPM Fusion. That build disables four video decoders, h264, hevc, vc1 and vvc, and keeps every audio decoder it has, AAC among them, while Dikte only ever asks a video file for its audio track. The models that run on this machine ask for nothing either, which is worth saying because it is now the way Dikte starts. The Ubuntu builds run on Fedora unchanged; whisper.cpp transcribed a clip here without a package being added, and llama.cpp came down in its Vulkan build and found the card. That last part is not luck: kwin-libs requires libvulkan.so.1, so the loader is on every Plasma desktop by way of the compositor, and it recommends the Mesa drivers alongside itself.
This commit is contained in:
@@ -30,6 +30,41 @@ systemctl --user enable --now ydotool # needed for auto-paste
|
|||||||
dikte # the settings window opens on first run
|
dikte # the settings window opens on first run
|
||||||
```
|
```
|
||||||
|
|
||||||
|
On Fedora KDE the packages are named differently, and `ydotool` takes one step
|
||||||
|
more:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo dnf install pipewire-utils wl-clipboard ydotool ffmpeg-free python3-pyqt6
|
||||||
|
```
|
||||||
|
|
||||||
|
Fedora ships `ydotool` as a system service rather than a user one, and
|
||||||
|
`ydotoold` then listens on a root-owned socket your session cannot write to, so
|
||||||
|
auto-paste fails with the daemon running. Point it instead at the path the
|
||||||
|
`ydotool` client already looks at, and hand the socket over:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo mkdir -p /etc/systemd/system/ydotool.service.d
|
||||||
|
printf '[Service]\nExecStart=\nExecStart=/usr/bin/ydotoold --socket-path=%s/.ydotool_socket --socket-own=%s:%s\n' \
|
||||||
|
"$XDG_RUNTIME_DIR" "$(id -u)" "$(id -g)" \
|
||||||
|
| sudo tee /etc/systemd/system/ydotool.service.d/override.conf >/dev/null
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable --now ydotool
|
||||||
|
```
|
||||||
|
|
||||||
|
That runtime directory belongs to your login session, so after a reboot the
|
||||||
|
service restarts until you are logged in and only then settles. `ffmpeg-free`
|
||||||
|
out of Fedora's own repositories is enough, RPM Fusion not needed: what the
|
||||||
|
free build leaves out is H.264 and HEVC video decoding, and Dikte only ever
|
||||||
|
takes the audio track of a video file, whose AAC, MP3 and Opus decoders are all
|
||||||
|
there.
|
||||||
|
|
||||||
|
The models that run on this machine need nothing added either. Those releases
|
||||||
|
are built on Ubuntu and run here as they are, and KWin links `libvulkan.so.1`
|
||||||
|
itself, so a Plasma desktop already has the loader that decides whether
|
||||||
|
llama.cpp arrives in its Vulkan build, with the Mesa drivers alongside it.
|
||||||
|
whisper.cpp publishes no GPU build for Linux at all and transcribes on the
|
||||||
|
processor wherever it runs.
|
||||||
|
|
||||||
On Ubuntu/GNOME X11, recording uses PulseAudio and clipboard/paste use the X11
|
On Ubuntu/GNOME X11, recording uses PulseAudio and clipboard/paste use the X11
|
||||||
tools instead:
|
tools instead:
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,39 @@ systemctl --user enable --now ydotool # otomatik yapıştırma için
|
|||||||
dikte # ilk açılışta ayarlar penceresi gelir
|
dikte # ilk açılışta ayarlar penceresi gelir
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Fedora KDE'de paket adları farklı, `ydotool` da bir adım fazla istiyor:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo dnf install pipewire-utils wl-clipboard ydotool ffmpeg-free python3-pyqt6
|
||||||
|
```
|
||||||
|
|
||||||
|
Fedora `ydotool`'u kullanıcı servisi değil sistem servisi olarak kuruyor;
|
||||||
|
`ydotoold` de root'a ait bir sokete bağlanıyor, oturumun oraya yazamadığı için
|
||||||
|
servis çalışırken bile otomatik yapıştırma tutmuyor. Soketi `ydotool`
|
||||||
|
istemcisinin zaten baktığı yola al ve sahipliğini devret:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo mkdir -p /etc/systemd/system/ydotool.service.d
|
||||||
|
printf '[Service]\nExecStart=\nExecStart=/usr/bin/ydotoold --socket-path=%s/.ydotool_socket --socket-own=%s:%s\n' \
|
||||||
|
"$XDG_RUNTIME_DIR" "$(id -u)" "$(id -g)" \
|
||||||
|
| sudo tee /etc/systemd/system/ydotool.service.d/override.conf >/dev/null
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable --now ydotool
|
||||||
|
```
|
||||||
|
|
||||||
|
O çalışma dizini oturumuna ait olduğu için yeniden başlatmanın ardından servis
|
||||||
|
sen giriş yapana kadar kendini yeniden deneyip ondan sonra oturuyor. Fedora'nın
|
||||||
|
kendi depolarındaki `ffmpeg-free` yetiyor, RPM Fusion gerekmiyor: özgür yapının
|
||||||
|
dışarıda bıraktığı şey H.264 ve HEVC video çözümü, Dikte ise video dosyasının
|
||||||
|
yalnızca ses izini alıyor; onun AAC, MP3 ve Opus çözücüleri yapının içinde.
|
||||||
|
|
||||||
|
Bu makinede koşan modeller için de eklenecek bir şey yok. O sürümler Ubuntu'da
|
||||||
|
derleniyor ve burada olduğu gibi çalışıyor; `libvulkan.so.1`'i KWin'in kendisi
|
||||||
|
bağladığı için Plasma masaüstünde llama.cpp'nin Vulkan yapısıyla gelip
|
||||||
|
gelmeyeceğini belirleyen yükleyici zaten kurulu, Mesa sürücüleri de onunla
|
||||||
|
birlikte geliyor. whisper.cpp ise Linux için hiç GPU yapısı yayımlamıyor,
|
||||||
|
nerede çalışırsa çalışsın işlemcide çeviriyor.
|
||||||
|
|
||||||
Ubuntu/GNOME X11 için kayıt PulseAudio üzerinden, pano ve yapıştırma ise X11
|
Ubuntu/GNOME X11 için kayıt PulseAudio üzerinden, pano ve yapıştırma ise X11
|
||||||
araçlarıyla çalışır:
|
araçlarıyla çalışır:
|
||||||
|
|
||||||
|
|||||||
+20
-3
@@ -42,19 +42,36 @@ if ((${#missing[@]})); then
|
|||||||
warn "Missing: ${missing[*]}"
|
warn "Missing: ${missing[*]}"
|
||||||
say "Ubuntu X11: sudo apt install pulseaudio-utils xclip xdotool ffmpeg"
|
say "Ubuntu X11: sudo apt install pulseaudio-utils xclip xdotool ffmpeg"
|
||||||
say "Arch Wayland: sudo pacman -S --needed pipewire-audio wl-clipboard ydotool ffmpeg python-pyqt6"
|
say "Arch Wayland: sudo pacman -S --needed pipewire-audio wl-clipboard ydotool ffmpeg python-pyqt6"
|
||||||
|
say "Fedora Wayland: sudo dnf install pipewire-utils wl-clipboard ydotool ffmpeg-free python3-pyqt6"
|
||||||
echo
|
echo
|
||||||
else
|
else
|
||||||
ok "All dependencies present"
|
ok "All dependencies present"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 2. ydotoold --------------------------------------------------------------
|
# 2. ydotoold --------------------------------------------------------------
|
||||||
|
# What auto-paste needs is a socket it may write to, which is not the same
|
||||||
|
# question as whether the unit is up: Fedora ships ydotool as a system service
|
||||||
|
# only, and its socket stays root-owned at mode 600, so there the daemon can be
|
||||||
|
# running while every paste is refused.
|
||||||
if [[ "${XDG_SESSION_TYPE:-}" != "x11" ]] && command -v ydotool >/dev/null; then
|
if [[ "${XDG_SESSION_TYPE:-}" != "x11" ]] && command -v ydotool >/dev/null; then
|
||||||
if systemctl --user is-active --quiet ydotool 2>/dev/null \
|
socket="${YDOTOOL_SOCKET:-${XDG_RUNTIME_DIR:-/tmp}/.ydotool_socket}"
|
||||||
|| systemctl --user is-active --quiet ydotoold 2>/dev/null; then
|
if [[ -w "$socket" ]]; then
|
||||||
ok "ydotoold is running (auto-paste ready)"
|
ok "ydotoold is running (auto-paste ready)"
|
||||||
|
elif systemctl is-active --quiet ydotool 2>/dev/null; then
|
||||||
|
warn "ydotoold runs as a system service, whose socket is not yours to"
|
||||||
|
say "write to. Hand it over in /etc/systemd/system/ydotool.service.d/"
|
||||||
|
say "override.conf, which is what the README's Fedora section does:"
|
||||||
|
say " [Service]"
|
||||||
|
say " ExecStart="
|
||||||
|
say " ExecStart=/usr/bin/ydotoold --socket-path=$socket --socket-own=$(id -u):$(id -g)"
|
||||||
|
say "then sudo systemctl daemon-reload && sudo systemctl restart ydotool"
|
||||||
|
elif systemctl --user is-active --quiet ydotool 2>/dev/null \
|
||||||
|
|| systemctl --user is-active --quiet ydotoold 2>/dev/null; then
|
||||||
|
warn "ydotoold is running, but it did not put its socket at $socket"
|
||||||
|
say "Point Dikte at the one it did make: export YDOTOOL_SOCKET=..."
|
||||||
else
|
else
|
||||||
warn "ydotoold is not running, auto-paste will not work"
|
warn "ydotoold is not running, auto-paste will not work"
|
||||||
say "systemctl --user enable --now ydotool"
|
say "systemctl --user enable --now ydotool (on Fedora: see the README)"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user