Skip to content
omacomPublic

About

No description, website, or topics provided.

Resources

Stars

145 stars

Watchers

0 watching

Forks

Latest commit

 

History

187 Commits

Folders and files

Repository files navigation

gliff

CI

gliff is a remote desktop for Hyprland. It shows the Hyprland session of another machine in a window on yours, and all it needs between the two is ssh: no open ports, no accounts, no relay.

Text stays sharp. Most remote desktops send video with halved colour resolution, which blurs coloured text; gliff sends full-resolution colour (4:4:4) through the H.264 hardware every GPU has. Video runs on the GPU at both ends, and falls back to the CPU on machines where it cannot.

A gliff window showing a terminal on a remote machine

What you get

  • Mirror any screen of the remote machine, or get a private screen that exists only for your session and follows the size of your window.
  • Your keyboard layout, not the remote's: keys map the same on both ends.
  • A shared clipboard in both directions: text, images, and copied files.
  • Quality that adapts to the link, giving up frame rate before sharpness.
  • Reconnection when the link drops.
  • A window that follows your Omarchy theme.

Requirements

  • Hyprland on both machines, with a session running on the remote one.
  • ssh access from your machine to the remote one.
  • For GPU video: an AMD or Intel GPU with its Vulkan and VA-API drivers (on Arch, vulkan-radeon and mesa for AMD, or vulkan-intel and intel-media-driver for Intel). Without them, and on NVIDIA, gliff uses the CPU and needs nothing extra.

Install

Install gliff on both machines: your machine runs gliff, the remote one runs gliff-server.

Install gliff from the Omarchy Package Repository (OPR):

omarchy pkg add gliff

Then open Gliff from the app launcher, or run gliff in a terminal.

On Arch without the OPR, build and install the package from a checkout:

bin/install

To build from source, see docs/development.md.

Use

gliff user@host

This mirrors the screen that has focus on the remote machine. To pick a screen, or to get a private one:

gliff --output DP-1 user@host   # mirror a named remote screen
gliff --headless user@host      # a private remote screen, sized and
                                # scaled to this window

A mirrored screen keeps its own size and is fitted into the window. A private screen follows the window as you resize it, and is removed when you disconnect.

Every machine you connect to gets a tab in the title bar. Click a tab to connect to that machine, or to switch to it: each connection keeps running while you look at another, so switching is instant. Hover a tab for its button: a stop square disconnects a running machine, and an X forgets one that is not running. Drag the tabs to reorder them. The + after the tabs opens the address bar; type user@host and press Enter to add a machine. A bare gliff opens the window with a tab for each machine you have used, and connects again to the ones that were connected when you closed it; with no machines yet, it opens with the address bar ready.

Keyboard. While the pointer is over the picture, everything you type goes to the remote machine, window-manager shortcuts included; move the pointer off it to get your own back. Press Shift+Esc to get your shortcuts back without moving the pointer. --release-hotkey changes that key (ctrl+alt+q, double-escape, or none).

Clipboard. Copy on one machine and paste on the other. Nothing is sent until you paste. A paste that takes more than a second shows its progress with a cancel button. Pasted files are kept in ~/.cache/gliff/clipboard.

Slow links. gliff measures the link and lowers the frame rate, then the colour detail, then the resolution, and raises them again when there is room. Two flags change the video, and you pass them to the server through --server-bin: --low-bandwidth sends 4:2:0 colour from the start, and --full-chroma keeps 4:4:4 on a server that encodes on the CPU.

gliff --server-bin 'gliff-server --low-bandwidth' user@host

If something does not work

  • Run gliff-probe all on each machine. It checks the compositor, the GPU drivers and both video paths, and prints PASS or FAIL for each.
  • If ssh cannot find gliff-server, give its path: gliff --server-bin /path/to/gliff-server user@host.
  • The server needs the remote user's running Hyprland session. If the ssh session does not have XDG_RUNTIME_DIR or WAYLAND_DISPLAY, set them through --server-bin 'env XDG_RUNTIME_DIR=/run/user/1000 gliff-server'.
  • To rule out a driver problem, force the CPU on your end with gliff --video cpu user@host.
  • Screens wider than 4096 pixels are streamed at a reduced size and scaled back up.

More

gliff is released under the MIT license.

About

No description, website, or topics provided.

Resources

Stars

145 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages