Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
c2414db
Add Sixel rendering support
nbritton Sep 29, 2025
97f133c
Merge pull request #1 from Qubitdyne/codex/add-tier-1-support-for-six…
nbritton Sep 29, 2025
626cc65
Adjust sixel mode defaults and fix color comment
nbritton Sep 29, 2025
ee1fca9
Merge pull request #2 from Qubitdyne/codex/fix-sixel-rendering-positi…
nbritton Sep 29, 2025
6eecb74
Default to sixel rendering with scrolling
nbritton Sep 29, 2025
23ccb5a
Merge pull request #3 from Qubitdyne/codex/set-sixel-rendering-as-def…
nbritton Sep 29, 2025
696b842
Improve Sixel rendering geometry and options
nbritton Sep 29, 2025
83f6847
Merge pull request #4 from Qubitdyne/codex/fix-sixel-rendering-to-ful…
nbritton Sep 29, 2025
7541891
Default to sixel rendering
nbritton Sep 29, 2025
3c10ba5
Merge pull request #6 from Qubitdyne/codex/refactor-to-use-sixel-only…
nbritton Sep 29, 2025
b09b0d5
Fix warnings in window update logic
nbritton Sep 29, 2025
a241843
Merge pull request #7 from Qubitdyne/codex/fix-warnings-in-carbonyl-b…
nbritton Sep 29, 2025
e438b48
Scale SIXEL frames to terminal geometry
nbritton Sep 29, 2025
0cbd0c9
Merge pull request #8 from Qubitdyne/codex/fix-sixel-scaling-to-termi…
nbritton Sep 29, 2025
b134ceb
Fix sixel rendering resolution and palette issues
nbritton Sep 29, 2025
3194c34
Merge pull request #9 from Qubitdyne/codex/fix-sixel-rendering-issues…
nbritton Sep 29, 2025
5be51b1
Fix sixel diffusion method for new crate version
nbritton Sep 29, 2025
5efa3dc
Merge pull request #10 from Qubitdyne/codex/fix-diffusionmethod-varia…
nbritton Sep 29, 2025
b3b7118
Fix sixel dithering and enforce integer DSF
nbritton Sep 29, 2025
a78d22c
Merge pull request #11 from Qubitdyne/codex/fix-invalid-dithering-met…
nbritton Sep 29, 2025
a0e389c
Wire DSF and zoom through bridge
nbritton Sep 30, 2025
9d94dd7
Merge pull request #12 from Qubitdyne/codex/wire-dsf-through-to-chrom…
nbritton Sep 30, 2025
d8a4a69
Make bridge FFI optional at runtime
nbritton Sep 30, 2025
22a65a3
Merge pull request #13 from Qubitdyne/codex/fix-linking-issues-after-…
nbritton Sep 30, 2025
c318d87
Fix Chromium patch hunk lengths for zoom integration
nbritton Sep 30, 2025
7420c02
Merge pull request #14 from Qubitdyne/codex/fix-font-size-increase-issue
nbritton Sep 30, 2025
545d60b
Clean up git am state before applying patches
nbritton Sep 30, 2025
8cb02ac
Merge pull request #15 from Qubitdyne/codex/fix-font-size-in-ui
nbritton Sep 30, 2025
e334c32
Fix bridge component dependencies
nbritton Sep 30, 2025
07fd655
Merge pull request #16 from Qubitdyne/codex/fix-font-size-in-ui-wwxze2
nbritton Sep 30, 2025
cb9c682
Fix default zoom without zoom component
nbritton Sep 30, 2025
f475030
Merge pull request #17 from Qubitdyne/codex/increase-font-size-in-ui
nbritton Sep 30, 2025
6fc51f3
Decouple bridge state from content dependencies
nbritton Sep 30, 2025
192787f
Merge pull request #18 from Qubitdyne/codex/fix-font-size-adjustment-…
nbritton Sep 30, 2025
4206486
Remove legacy rendering modes
nbritton Sep 30, 2025
7e10f2b
Merge pull request #19 from Qubitdyne/codex/increase-font-size-and-re…
nbritton Sep 30, 2025
05324fc
Restore repository state to PR #11 (a78d22c)
nbritton Sep 30, 2025
3e29dec
Merge pull request #21 from Qubitdyne/codex/revert-changes-to-pr-#11
nbritton Sep 30, 2025
40927c4
add vpython3 script
nbritton Sep 30, 2025
9c503d8
Remove unnecessary sixel resize path
nbritton Sep 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 98 additions & 28 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ libc = "0.2"
unicode-width = "0.1.10"
unicode-segmentation = "1.10.0"
chrono = "0.4.23"
sixel-bytes = "0.2"

[lib]
name = "carbonyl"
Expand Down
20 changes: 16 additions & 4 deletions build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,14 @@ fn link_sysroot() {
"cargo:rustc-link-arg=--sysroot=./chromium/src/build/linux/debian_bullseye_amd64-sysroot"
);
} else {
println!("cargo:warning={}", "x86_64 debian sysroot provided by chromium was not found!");
println!("cargo:warning={}", "carbonyl may fail to link against a proper libc!");
println!(
"cargo:warning={}",
"x86_64 debian sysroot provided by chromium was not found!"
);
println!(
"cargo:warning={}",
"carbonyl may fail to link against a proper libc!"
);
}
}

Expand All @@ -29,8 +35,14 @@ fn link_sysroot() {
"cargo:rustc-link-arg=--sysroot=./chromium/src/build/linux/debian_bullseye_i386-sysroot"
);
} else {
println!("cargo:warning={}", "x86 debian sysroot provided by chromium was not found!");
println!("cargo:warning={}", "carbonyl may fail to link against a proper libc!");
println!(
"cargo:warning={}",
"x86 debian sysroot provided by chromium was not found!"
);
println!(
"cargo:warning={}",
"carbonyl may fail to link against a proper libc!"
);
}
}

Expand Down
4 changes: 4 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ $ carbonyl https://github.com
</tbody>
</table>

## Rendering

Carbonyl now prefers Sixel graphics for page rendering whenever the terminal reports support. Legacy character-based rendering is automatically used as a fallback if Sixel frames cannot be sent. Sixel scrolling is enabled by default so web content can be browsed normally; set `CARBONYL_SIXEL_SCROLL=off` (or `0`) to opt back into the legacy non-scrolling behaviour.

## Known issues

- Fullscreen mode not supported yet
Expand Down
3 changes: 3 additions & 0 deletions scripts/python3
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/usr/bin/env bash

exec "$HOME/carbonyl/chromium/depot_tools/vpython3" "$@"
14 changes: 11 additions & 3 deletions src/browser/bridge.rs
Original file line number Diff line number Diff line change
Expand Up @@ -187,12 +187,15 @@ pub extern "C" fn carbonyl_renderer_resize(bridge: RendererPtr) {
let mut bridge = bridge.unwrap().lock().unwrap();
let window = bridge.window.update();
let cells = window.cells.clone();
// Use the full terminal pixel geometry for SIXEL frames.
let geometry = window.graphics_px;

log::debug!("resizing renderer, terminal window: {:?}", window);

bridge
.renderer
.render(move |renderer| renderer.set_size(cells));
bridge.renderer.render(move |renderer| {
renderer.set_size(cells);
renderer.update_sixel_geometry(geometry);
});
}

#[no_mangle]
Expand Down Expand Up @@ -411,6 +414,11 @@ pub extern "C" fn carbonyl_renderer_listen(bridge: RendererPtr, delegate: *mut B
Terminal(terminal) => match terminal {
TerminalEvent::Name(name) => log::debug!("terminal name: {name}"),
TerminalEvent::TrueColorSupported => renderer.enable_true_color(),
TerminalEvent::SixelSupported { .. } => {
let geometry = bridge.lock().unwrap().window.graphics_px;

renderer.enable_sixel(geometry)
}
},
}
}
Expand Down
Loading