Toolkit duty matrix
Which backend implements which Toolkit duty (crates/day-spec/src/lib.rs). ✓ = the
backend defines the method; · = it inherits the day-spec default (a no-op or trivial
answer — day-spec documents each). Required duties have no default; every backend must
implement them, and this table proves it.
| duty | req | appkit | uikit | gtk | qt | xaml | android | arkui | dom | mock |
|---|---|---|---|---|---|---|---|---|---|---|
request_frame | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · |
capability | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
realize | yes | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
update | yes | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
release | yes | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
release_piece | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · |
insert | yes | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
remove | yes | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
move_child | yes | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
measure | yes | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
first_baseline | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
set_frame | yes | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
set_opacity | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
set_transform | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
set_selectable | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
set_input_traits | yes | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
set_cursor | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · | ✓ | ✓ |
set_scroll_content | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
scroll_bar_inset | · | · | · | · | ✓ | · | · | · | · | ✓ |
list_row_metrics | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · |
scroll_to | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
scroll_offset | · | · | · | · | · | ✓ | · | · | ✓ | ✓ |
set_event_sink | yes | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
enable_gesture | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
focus | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
set_focusable | · | ✓ | ✓ | ✓ | ✓ | · | ✓ | · | ✓ | · |
attach_list | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
attach_tree | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · | · | ✓ |
set_route | · | · | · | · | · | · | · | · | ✓ | · |
set_undo_state | · | ✓ | ✓ | · | · | · | · | · | · | · |
set_edit_state | · | ✓ | ✓ | · | · | · | · | · | · | · |
modifiers | · | ✓ | · | · | ✓ | · | · | · | ✓ | · |
set_drag_source | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · |
set_drop_target | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · |
set_context_menu_fn | · | ✓ | ✓ | ✓ | ✓ | · | · | · | ✓ | ✓ |
set_app_menu | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · | ✓ | ✓ |
set_context_menu | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · | ✓ | ✓ |
edit_toolbar | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
update_toolbar | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
supports_lifecycle | · | · | ✓ | · | · | · | ✓ | ✓ | ✓ | ✓ |
set_a11y | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
announce | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
read_native | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
replay | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
font_families | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
measure_text | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
decode_image | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
image_info | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
image_properties | · | ✓ | · | · | · | · | · | · | · | · |
encode_image | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
encode_formats | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
release_image | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
render_bitmap | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
render_pdf | · | ✓ | ✓ | ✓ | ✓ | · | ✓ | · | · | · |
snapshot_window | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · | ✓ |
snapshot_origin | · | · | · | · | · | ✓ | ✓ | · | · | · |
prepare_snapshot | · | · | · | ✓ | · | · | ✓ | ✓ | ✓ | · |
snapshot_window_chrome | · | ✓ | ✓ | ✓ | · | · | ✓ | · | · | · |
toggle_sidebar | · | ✓ | · | ✓ | ✓ | ✓ | · | · | ✓ | · |
native_back | · | · | ✓ | · | · | · | ✓ | · | · | · |
ui_idle | · | ✓ | ✓ | · | · | · | ✓ | ✓ | ✓ | ✓ |
present | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
dismiss | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
open_url | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
share_support | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · | ✓ | · |
share_url | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · | ✓ | · |
application_handlers | · | ✓ | · | · | · | · | · | · | · | · |
open_url_with_application | · | ✓ | · | · | · | · | · | · | · | · |
defer_system_gestures | · | · | ✓ | · | · | · | ✓ | · | · | ✓ |
set_status_bar_hidden | · | · | ✓ | · | · | · | ✓ | ✓ | · | ✓ |
dark_mode | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · |
reduce_motion | · | ✓ | ✓ | ✓ | · | ✓ | ✓ | ✓ | ✓ | ✓ |
set_appearance | · | ✓ | ✓ | ✓ | · | ✓ | ✓ | ✓ | ✓ | · |
set_app_badge | · | ✓ | ✓ | ✓ | ✓ | ✓ | · | ✓ | ✓ | · |
on_suspend | · | · | · | · | · | · | · | · | · | ✓ |
on_resume | · | · | · | · | · | · | · | · | · | ✓ |
on_memory_warning | · | · | · | · | · | · | · | · | · | ✓ |
adopt | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
open_window | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · | ✓ |
close_window | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · | ✓ |
quit_app | · | ✓ | · | ✓ | ✓ | ✓ | · | · | · | ✓ |
focus_window | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · | · | ✓ |
set_window_title | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | · | · | ✓ |
fit_window | · | ✓ | · | ✓ | ✓ | · | · | · | · | ✓ |
snapshot_window_of | · | ✓ | ✓ | ✓ | ✓ | ✓ | · | · | · | ✓ |
apply_window | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
native_window_tabs | · | ✓ | · | · | ✓ | · | · | · | · | ✓ |
native_document_tabs | · | · | ✓ | ✓ | ✓ | ✓ | ✓ | · | · | ✓ |
group_windows | · | ✓ | · | · | ✓ | · | · | · | · | ✓ |
window_tab_order | · | ✓ | · | · | ✓ | · | · | · | · | ✓ |
set_dock_menu | · | ✓ | · | · | · | · | · | · | · | ✓ |
set_drag_region | · | ✓ | · | ✓ | ✓ | ✓ | · | · | ✓ | ✓ |
set_status_items | · | ✓ | · | ✓ | ✓ | ✓ | · | · | · | ✓ |
set_app_progress | · | ✓ | · | ✓ | ✓ | ✓ | · | · | · | ✓ |
set_dock_visible | · | ✓ | · | · | · | · | · | · | · | ✓ |
set_keep_running | · | ✓ | · | ✓ | ✓ | ✓ | · | · | · | ✓ |
monitors | · | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
window_frame | · | ✓ | · | · | ✓ | ✓ | · | · | ✓ | ✓ |
set_launcher_shortcuts | · | ✓ | ✓ | · | · | ✓ | ✓ | · | · | ✓ |