> This is the Danish translation of the siggy README. > Last updated against English commit: 8b5890e > The [English version](../README.md) is authoritative. If this translation has drifted, trust the English. > This translation is maintainer-provided and awaiting native-speaker review. Corrections welcome - see issue #353.

siggy

CI Release License: GPL-3.0 crates.io Docs Ko-fi Follow @siggyapp

English  |  Dansk  |  Deutsch  |  Español  |  Français  |  Italiano  |  Nederlands  |  Português  |  Suomi  |  Svenska  |  Русский  |  Українська  |  简体中文  |  Bidrag med en oversættelse

En terminalbaseret Signal-klient med IRC-æstetik. Bruger [signal-cli](https://github.com/AsamK/signal-cli) via JSON-RPC som beskedbackend. ![siggy skærmbillede](../screenshot.png) ## Installation ### Homebrew (macOS) ```sh brew tap johnsideserf/siggy brew install siggy ``` ### Forudbyggede binærfiler Hent den seneste udgivelse til din platform fra [Releases](https://github.com/johnsideserf/siggy/releases). **Linux / macOS** (one-liner): ```sh curl -fsSL https://raw.githubusercontent.com/johnsideserf/siggy/master/install.sh | bash ``` **Windows** (PowerShell): ```powershell irm https://raw.githubusercontent.com/johnsideserf/siggy/master/install.ps1 | iex ``` Begge scripts henter den seneste binærfil og tjekker, om signal-cli er installeret. ### Fra crates.io Kræver Rust 1.70+. ```sh cargo install siggy ``` ### Byg fra kildekode Eller klon projektet og byg det selv: ```sh git clone https://github.com/johnsideserf/siggy.git cd siggy cargo build --release # Binærfilen ligger i target/release/siggy ``` ## Forudsætninger - [signal-cli](https://github.com/AsamK/signal-cli) installeret og tilgængelig via PATH (eller angivet via `signal_cli_path`) - En Signal-konto tilknyttet som sekundær enhed (opsætningsguiden klarer dette) ## Brug ```sh siggy # Start (bruger konfigurationsfilen) siggy -a +15551234567 # Angiv konto siggy -c /path/to/config.toml # Brugerdefineret konfigurationssti siggy --setup # Kør førstegangsopsætningen igen siggy --demo # Start med testdata (kræver ikke signal-cli) siggy --incognito # Ingen lokal lagring af beskeder (kun i hukommelsen) ``` Ved første start hjælper opsætningsguiden dig med at finde signal-cli, indtaste dit telefonnummer og tilknytte din enhed via en QR-kode. ## Konfiguration Konfigurationen indlæses fra: - **Linux/macOS:** `~/.config/siggy/config.toml` - **Windows:** `%APPDATA%\siggy\config.toml` ```toml account = "+15551234567" signal_cli_path = "signal-cli" download_dir = "/home/user/signal-downloads" notify_direct = true notify_group = true desktop_notifications = false inline_images = true mouse_enabled = true send_read_receipts = true theme = "Default" proxy = "" ``` Alle felter er valgfrie. `signal_cli_path` er som standard `"signal-cli"` (findes via PATH), og `download_dir` er som standard `~/signal-downloads/`. På Windows skal du angive den fulde sti til `signal-cli.bat`, hvis den ikke ligger i din PATH. ### Inline-billeder i tmux Uden for tmux registrerer siggy automatisk Kitty / iTerm2 / WezTerm / Ghostty og viser vedhæftede filer som rigtige pixelbilleder. Inde i tmux skal to ting sættes op, fordi tmux skjuler den ydre terminal for siggy: 1. Bed tmux om at videresende ukendte escape-sekvenser. Kræver tmux 3.3+: ``` set -g allow-passthrough on ``` Ældre tmux-versioner bruger `set -g allow-passthrough all`. 2. Fortæl siggy, hvilken protokol den ydre terminal taler (autodetekteringen ser kun tmux): ```sh SIGGY_IMAGE_PROTOCOL=kitty siggy # eller iterm2 / sixel / halfblock ``` Hvis `SIGGY_IMAGE_PROTOCOL` ikke er sat, kører den almindelige autodetektering (korrekt uden for tmux, falder tilbage til halfblock indeni). Sixel passerer gennem tmux 3.4+ uden videre og behøver ikke miljøvariablen. ## Funktioner - **Beskeder** -- Send og modtag både 1:1- og gruppebeskeder - **Vedhæftede filer** -- Billeder forhåndsvises inline som halfblock-grafik; andre vedhæftede filer vises som `[attachment: filnavn]` - **Klikbare links** -- URL'er og filstier er OSC 8-hyperlinks (klikbare i terminaler som Windows Terminal, iTerm2 m.fl.) - **Skriveindikatorer** -- Viser, hvem der er ved at skrive, med opslag af kontaktnavn - **Beskedsynkronisering** -- Beskeder sendt fra din telefon dukker op i TUI'en - **Persistens** -- Beskederne gemmes i SQLite med WAL-tilstand; samtaler og læsemarkører overlever genstart - **Ulæste beskeder** -- Antal ulæste vises i sidepanelet med en "nye beskeder"-skillelinje i chatten - **Notifikationer** -- Terminalklokke ved nye beskeder (kan indstilles separat for direkte/gruppe og slås fra pr. samtale) samt skrivebordsnotifikationer på OS-niveau - **Kontaktopslag** -- Navne fra din Signal-adressebog; grupper indlæses automatisk ved opstart - **Reaktioner** -- Reagér med `r` i Normal-tilstand; emoji-vælger med badgevisning (`👍 2 ❤️ 1`) - **Svar / citat** -- Tryk på `q` på en fokuseret besked for at svare med citeret kontekst - **Redigér beskeder** -- Tryk på `e` for at redigere dine egne sendte beskeder - **Slet beskeder** -- Tryk på `d` for at slette lokalt eller hos modtageren (for dine egne beskeder) - **Slet samtaler** -- Brug `/delete` til at fjerne den aktuelle samtale lokalt (afviser ventende beskedanmodninger) - **Beskedsøgning** -- `/search ` med `n`/`N` til at hoppe mellem resultaterne - **@mentions** -- Skriv `@` i gruppechats for at nævne medlemmer med autofuldførelse - **Beskedvalg** -- Den fokuserede besked fremhæves under scroll; `J`/`K` hopper mellem beskeder - **Læsekvitteringer** -- Statussymboler på udgående beskeder (Sender → Sendt → Leveret → Læst → Set) - **Forsvindende beskeder** -- Respekterer Signals tidsgrænser for forsvindende beskeder; indstilles pr. samtale med `/disappearing` - **Gruppestyring** -- Opret grupper, tilføj/fjern medlemmer, omdøb og forlad grupper via `/group` - **Beskedanmodninger** -- Acceptér eller slet beskeder fra ukendte afsendere - **Blokér / fjern blokering** -- Blokér kontakter eller grupper med `/block` og `/unblock` - **Musestøtte** -- Klik på samtaler i sidepanelet, scroll i beskederne, klik for at placere markøren - **Farvetemaer** -- Vælg tema via `/theme` eller `/settings` - **Opsætningsguide** -- Førstegangsopsætning med enhedstilknytning via QR-kode - **Vim-tastebindinger** -- Modal redigering (Normal/Insert) med fuld markørnavigation - **Autofuldførelse af kommandoer** -- Tab-fuldførelse i en popup for slash-kommandoer - **Indstillingsoverlay** -- Slå notifikationer, sidepanel og inline-billeder til og fra inde fra appen - **Responsivt layout** -- Sidepanel, der kan ændres i størrelse og automatisk skjules på smalle terminaler (<60 kolonner) - **Inkognitotilstand** -- `--incognito` gemmer kun i hukommelsen; intet bevares efter afslutning - **Proxy-understøttelse** -- Konfigurér en Signal TLS-proxy via konfigurationsfeltet `proxy` til brug på begrænsede netværk - **Demotilstand** -- Prøv brugerfladen uden signal-cli (`--demo`) ## Kommandoer | Kommando | Alias | Beskrivelse | |---|---|---| | `/join ` | `/j` | Skift til en samtale via kontaktnavn, nummer eller gruppe | | `/part` | `/p` | Forlad den aktuelle samtale | | `/delete` | | Slet den aktuelle samtale (afviser ventende beskedanmodninger) | | `/attach` | `/a` | Åbn filbrowseren for at vedhæfte en fil | | `/search ` | `/s` | Søg i beskeder i den aktuelle samtale (eller alle samtaler) | | `/sidebar` | `/sb` | Vis/skjul sidepanelet | | `/bell [type]` | `/notify` | Slå notifikationer til/fra (`direct`, `group` eller begge) | | `/mute [duration]` | | Slå lyden fra/til for den aktuelle samtale (f.eks. `1h`, `8h`, `1d`, `1w`) | | `/block` | | Blokér den aktuelle kontakt eller gruppe | | `/unblock` | | Fjern blokeringen af den aktuelle kontakt eller gruppe | | `/disappearing ` | `/dm` | Indstil timer for forsvindende beskeder (`off`, `30s`, `5m`, `1h`, `1d`, `1w`) | | `/group` | `/g` | Åbn menuen for gruppestyring | | `/theme` | `/t` | Åbn temavælgeren | | `/contacts` | `/c` | Gennemse synkroniserede kontakter | | `/settings` | | Åbn indstillingsoverlayet | | `/lock` | | Lås sessionen | | `/lock-reset` | | Skift låsekodeordet (kræver det nuværende kodeord) | | `/help` | `/h` | Vis hjælpeoverlayet | | `/quit` | `/q` | Afslut siggy | Skriv `/` for at åbne autofuldførelses-popuppen. Brug `Tab` til at fuldføre og piletasterne til at navigere. Sådan skriver du til en ny kontakt: `/join +15551234567` (E.164-format). **Har du glemt dit låsekodeord?** Afslut siggy (eller dræb processen) og kør `siggy --reset-lock`. Kommandoen sletter den gemte kodeords-hash og udskriver stien, der blev fjernet. Næste `/lock` sætter et nyt kodeord. ## Tastaturgenveje Appen bruger modal redigering i vim-stil med to tilstande: **Insert** (standard) og **Normal**. ### Globalt (begge tilstande) | Tast | Handling | |---|---| | `Ctrl+C` | Afslut | | `Tab` / `Shift+Tab` | Næste / forrige samtale | | `PgUp` / `PgDn` | Scroll i beskederne (5 linjer) | | `Ctrl+Left` / `Ctrl+Right` | Skift størrelse på sidepanelet | ### Normal-tilstand Tryk på `Esc` for at skifte til Normal-tilstand. | Tast | Handling | |---|---| | `j` / `k` | Scroll ned / op 1 linje | | `J` / `K` | Hop til forrige / næste besked | | `Ctrl+D` / `Ctrl+U` | Scroll ned / op en halv side | | `g` / `G` | Scroll til top / bund | | `h` / `l` | Flyt markøren til venstre / højre | | `w` / `b` | Et ord frem / tilbage | | `0` / `$` | Start / slutning af linjen | | `x` | Slet tegnet under markøren | | `D` | Slet fra markøren til slutningen | | `y` / `Y` | Kopiér beskedteksten / hele linjen | | `r` | Reagér på den fokuserede besked | | `q` | Svar på / citér den fokuserede besked | | `e` | Redigér din egen sendte besked | | `d` | Slet besked (lokalt eller hos modtageren) | | `n` / `N` | Hop til næste / forrige søgeresultat | | `i` | Skift til Insert-tilstand | | `a` | Skift til Insert-tilstand (markøren 1 til højre) | | `I` / `A` | Skift til Insert-tilstand ved linjens start / slutning | | `o` | Skift til Insert-tilstand (ryd bufferen) | | `/` | Skift til Insert-tilstand med `/` allerede indtastet | ### Insert-tilstand (standard) | Tast | Handling | |---|---| | `Esc` | Skift til Normal-tilstand | | `Enter` | Send besked / udfør kommando | | `Shift+Enter` / `Alt+Enter` | Indsæt linjeskift (til beskeder over flere linjer) | | `Backspace` / `Delete` | Slet tegn | | `Up` / `Down` | Bladr i inputhistorikken | | `Left` / `Right` | Flyt markøren | | `Home` / `End` | Hop til linjens start / slutning | ## Arkitektur ``` Keyboard --> InputAction --> App state --> SignalClient (mpsc) --> signal-cli (JSON-RPC stdin/stdout) signal-cli --> JsonRpcResponse --> SignalEvent (mpsc) --> App state --> SQLite + Ratatui render ``` ``` +------------+ mpsc channels +----------------+ | TUI | <---------------> | Signal | | (main | SignalEvent | Backend | | thread) | UserCommand | (tokio task) | +------------+ +--------+-------+ | stdin/stdout | +--------v-------+ | signal-cli | | (child proc) | +----------------+ ``` Bygget med [Ratatui](https://ratatui.rs/) + [Crossterm](https://github.com/crossterm-rs/crossterm) oven på den asynkrone [Tokio](https://tokio.rs/)-runtime. ## Licens [GPL-3.0](../LICENSE)