Known issues
The current rough edges of running DropTerm on COSMIC - each with the upstream link where it is tracked.
- Clipboard ownership vs. destroyed surfaces: on Wayland a copied selection lives only as long as the client connection that offered it, and libcosmic binds its runtime clipboard to the first window created — for a layer-shell-only app, the drop-down surface itself, which every hide destroys. Copying out of DropTerm therefore died the moment you focused another app to paste into it. DropTerm now opens a never-closed anchor window before the first layer surface, so the clipboard binding (and your last copy) survives every hide/show cycle. The anchor has two bodies (
show_in_dock): with the defaultfalseit is a 1×1 layer surface — invisible to the window switcher and dock because layer surfaces are not toplevels — and withtrueit is a mapped normal window, which is exactly why that mode shows a DropTerm entry in both. The compositor can still close the hidden body on its own when its output goes away (a monitor dropping off its link while asleep is the likely case), and libcosmic drops the clipboard binding with it; DropTerm logs awarnand reopens the anchor at the next show (at once if the terminal is up), so only the copy on the clipboard at that moment is lost. Before this, the binding fell to the drop-down surface for the rest of the session and every copy died on the next hide. - The focus-coupled clipboard write (fixed, lineage kept): libcosmic’s clipboard stack sets selections through the legacy
wl_data_device, which requires keyboard focus and a valid input serial at the instant of the copy — smithay-clipboard’s worker drops every store otherwise, silently at every layer. A drop-down terminal lives in exactly those states (surfaces recreated per hide, background shows without activation, focus lost to whatever you are about to paste into), so copies vanished with no error anywhere — the old escape was a restart, or hiding and re-showing so the re-map steals focus back. DropTerm now owns its terminal clipboard I/O over the data-control protocol (src/clipboard.rs), which needs neither focus nor serial; a data-control failure is never silent (awarnand one retry through the iced clipboard), and the OSC 52 query reply is finally answered. The coupling remains upstream’s to change; the investigation is clipboard-ownership. - The paste cache never sweeps: images pasted — clipboard bytes or a file copied in a file manager — land in
~/.cache/dropterm/paste/and stay until removed — the images panel’s Delete verb, or clearing the directory. A startup retention sweep is planned; until then the cache grows with your pastes (the files are0600, owner-only, and an image over 32 MiB — clipboard offer or named file alike — is refused before it lands). - The status band’s leading glyphs owe the font: the ten segment glyphs (
⎇branch,⊞grid,▤tab position,◉profile,⧗duration,◐progress,⌂path,⇕zoom,▦pasted images,◷clock) render as text in the terminal’s own configured font, so a family that lacks a shape leans on the text system’s fallback — a slightly mismatched glyph style is the worst case, tofu the rare one. The glyphs are constants insrc/status_bar.rs, retunable without touching anything else; everything structural about the band (layout, drop order, copies) is glyph-agnostic by construction. - Hiding a layer surface: DropTerm hides by destroying its layer surface and creates a fresh one on the next show, rather than unmapping/hiding it in place. This sidesteps a compositor-connection-drop bug some other layer-shell clients (via gtk4-layer-shell) have hit on cosmic-comp when a surface is updated after its role is destroyed (cosmic-comp#2159) - libcosmic’s own destroy path doesn’t do that.
- Custom shortcuts with Shift: some Shift-modified custom shortcuts can fail to fire on COSMIC (cosmic-epoch#2481). Prefer an unshifted key such as
F12for the toggle shortcut. - Ctrl chords dying after heavy toggling (modifier-state desync): a key press’s modifier flags and the keyboard state that shapes its text are tracked in different places, and the destroy/recreate churn of the hide/show cycle can leave them split — a Ctrl+C arrives as the byte
\x03intextwhile the flags claim no Ctrl, and plain typing keeps working, so the press dying silently read as “Ctrl+C stopped working until a restart”. The input arms now deliver whatevertextactually carries and log awarnnaming the disagreement when it happens; the old escape was a restart, a fresh press-and-release of Ctrl resyncs the flags, and opening a new tab in the same broken state tells the desync (dead there too) apart from a foreground program that left its PTY in raw mode (the new tab’s Ctrl+C works — that one is the program’s to fix, or the tab’s to close). - No GlobalShortcuts portal: COSMIC doesn’t yet implement the XDG
GlobalShortcutsportal, so there is no way for DropTerm to register its own hotkey - it must be bound as a COSMIC custom shortcut (above). - No Flatpak packaging: layer-shell and toplevel-management protocols aren’t exposed to sandboxed (Flatpak) clients on cosmic-comp, so a true drop-down terminal isn’t possible in a sandbox. This isn’t planned until COSMIC exposes those protocols to sandboxes.