Skip to content

Make surface capture and record flags match the server; allow negative scroll - #19

Open
mgasner wants to merge 1 commit into
fix/clipboard-plain-textfrom
fix/surface-capture-record-flags
Open

mgasner wants to merge 1 commit into
fix/clipboard-plain-textfrom
fix/surface-capture-record-flags

Conversation

@mgasner

@mgasner mgasner commented Sep 28, 2026 •

Copy link
Copy Markdown

Stacked on #18; the diff shows only this change.

Changes

  • capture --scale: implemented. It used to be rejected. It now sends a RESIZE carrying the RESIZE scale extension, which the server supports, and then captures. The resize uses the surface's current logical size, or --width/--height if given, at N/120. The default of 0 leaves the scale alone.
  • capture --quality: removed. Surface CAPTURE has no quality input.
  • record --codec h264-444 / av1-444: implemented. These used to be rejected. They now announce 4:4:4 through the view color-capabilities extension, the same way the browser does. The server still falls back to 4:2:0 unless its YAS_CHROMA setting and the encoder allow 4:4:4.
  • record default file: the help now names the real default: surface-ID.h264, or surface-ID.obu for AV1.
  • surface scroll: negative amounts are accepted (allow_negative_numbers). For example, yas surface scroll 1 -2 --horizontal scrolls left two notches, where 0.3.0 gave a clap error.

Testing

  • Unit tests (new):
    • record_codecs_announce_444_through_color_capabilities
    • capture_scale_rides_the_resize_scale_extension
    • surface_scroll_accepts_a_negative_amount
  • Live (private server, Chrome over Wayland):
    • negative scroll works;
    • a RESIZE carrying the scale extension is accepted;
    • OPEN_VIEW with h264-444 is accepted.
  • Not checked: the capture output itself. The sandbox has no Vulkan driver, and the server refuses CAPTURE without one.

View in Indent
Tag @indent to continue the conversation here.

- capture --scale now resizes the surface with the RESIZE scale extension
  before capturing instead of being rejected.
- capture --quality is removed: Surface CAPTURE has no quality input.
- record --codec h264-444/av1-444 announce 4:4:4 through the view color
  capabilities extension instead of being rejected.
- record help names the real default files (.h264, or .obu for AV1).
- surface scroll accepts a negative amount, as learn.md shows.
@github-actions

Copy link
Copy Markdown

Coverage

Crate Lines Functions Regions
alacritty-driver 85.6% (1081/1263) 89.4% (84/94) 89.3% (1746/1955)
browser 25.5% (309/1212) 30.4% (34/112) 27.7% (605/2183)
cli 34.9% (8332/23890) 35.8% (772/2155) 35.6% (12060/33910)
composite-transport 96.3% (526/546) 98.4% (60/61) 96.2% (884/919)
compositor 54.9% (11400/20760) 66.0% (832/1260) 54.8% (15790/28840)
desktop 78.4% (4460/5691) 71.6% (393/549) 75.1% (6211/8267)
edge 62.9% (798/1268) 50.9% (82/161) 57.7% (1038/1799)
fonts 77.3% (1257/1626) 82.7% (129/156) 78.9% (2424/3071)
fssync 85.3% (1597/1872) 84.4% (179/212) 86.4% (2813/3255)
git 70.4% (4462/6334) 68.5% (337/492) 67.3% (6313/9386)
guest 67.3% (6829/10148) 67.0% (488/728) 66.6% (8935/13416)
lsp 78.6% (3571/4542) 80.8% (336/416) 76.6% (5406/7054)
proxy 57.8% (1120/1937) 50.5% (104/206) 59.0% (1749/2965)
runtime-dir 93.6% (117/125) 100.0% (14/14) 94.8% (218/230)
sd-notify 73.9% (68/92) 100.0% (6/6) 83.2% (109/131)
server 68.6% (79650/116024) 70.4% (5703/8104) 66.3% (105408/159089)
ssh 42.6% (270/634) 51.5% (34/66) 42.9% (428/998)
terminal-model 49.9% (314/629) 62.3% (38/61) 50.3% (505/1004)
uplink 94.0% (581/618) 92.6% (50/54) 93.0% (1061/1141)
webrtc-forwarder 33.8% (1337/3961) 42.0% (136/324) 36.2% (2318/6409)
webserver 77.0% (1421/1846) 75.2% (179/238) 80.0% (2453/3067)
website 35.1% (355/1012) 34.4% (53/154) 35.8% (607/1694)
xtask 0.0% (0/5131) 0.0% (0/131) 0.0% (0/9124)
yas 87.8% (26447/30135) 93.2% (2030/2179) 82.7% (41656/50374)
Total 64.8% (156302/241296) 67.3% (12073/17933) 63.0% (220737/350281)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant