├── .dockerignore ├── .gitattributes ├── .github ├── FUNDING.yml └── workflows │ └── github-actions.yml ├── .gitignore ├── .yarn ├── patches │ └── pkg-npm-5.8.1-db9700609f.patch └── releases │ └── yarn-4.5.0.cjs ├── .yarnrc.yml ├── LICENSE ├── README.md ├── docker ├── 10_nvidia.json ├── Dockerfile ├── build.sh ├── compositor-proxy-cli-build.sh ├── compositor-proxy-cli-install.sh └── docker-entrypoint.sh ├── docs ├── .gitignore ├── 404.html ├── CNAME ├── Gemfile ├── Gemfile.lock ├── _config.yml ├── hello.png ├── index.md └── pages │ ├── components │ ├── client-generator.md │ ├── client-protocol.md │ ├── common.md │ ├── compositor-generator.md │ ├── compositor-protocol.md │ ├── compositor-proxy-cli.md │ ├── compositor-proxy-generator.md │ ├── compositor-proxy.md │ ├── compositor-shell.md │ ├── compositor-wasm.md │ ├── compositor.md │ ├── ffmpeg-h264.md │ ├── index.md │ ├── libraries.md │ └── xtsb.md │ ├── design │ └── index.md │ ├── future_plans │ └── index.md │ ├── getting_started │ ├── img.png │ ├── img_1.png │ ├── img_1_small.jpg │ ├── img_2.png │ ├── img_2_small.jpg │ ├── img_3.png │ ├── img_3_small.jpg │ ├── img_small.jpg │ └── index.md │ └── sdk │ └── index.md ├── examples ├── compositor │ └── experimental-fullscreen │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── public │ │ ├── GTK_logo.svg │ │ └── app.webmanifest │ │ ├── src │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts ├── docker-compose │ ├── Dockerfile │ ├── applications.json │ └── docker-compose.yml ├── sdk │ ├── gtk4 │ │ ├── .gitignore │ │ ├── README.md │ │ ├── build-aux │ │ │ └── meson │ │ │ │ └── gen-demo-header.py │ │ ├── build.sh │ │ ├── demos │ │ │ ├── constraint-editor │ │ │ │ ├── constraint-editor-application.c │ │ │ │ ├── constraint-editor-application.h │ │ │ │ ├── constraint-editor-window.c │ │ │ │ ├── constraint-editor-window.h │ │ │ │ ├── constraint-editor-window.ui │ │ │ │ ├── constraint-editor.c │ │ │ │ ├── constraint-editor.css │ │ │ │ ├── constraint-editor.gresource.xml │ │ │ │ ├── constraint-editor.h │ │ │ │ ├── constraint-editor.ui │ │ │ │ ├── constraint-view-child.c │ │ │ │ ├── constraint-view-child.h │ │ │ │ ├── constraint-view.c │ │ │ │ ├── constraint-view.h │ │ │ │ ├── guide-editor.c │ │ │ │ ├── guide-editor.h │ │ │ │ ├── guide-editor.ui │ │ │ │ ├── main.c │ │ │ │ └── meson.build │ │ │ ├── gtk-demo │ │ │ │ ├── alias_cursor.png │ │ │ │ ├── alienplanet.glsl │ │ │ │ ├── all_scroll_cursor.png │ │ │ │ ├── alphatest.png │ │ │ │ ├── apple-red.png │ │ │ │ ├── application.c │ │ │ │ ├── application.ui │ │ │ │ ├── application_demo.c │ │ │ │ ├── assistant.c │ │ │ │ ├── background.glsl │ │ │ │ ├── background.jpg │ │ │ │ ├── bbb.png │ │ │ │ ├── blendmodes.ui │ │ │ │ ├── blends.png │ │ │ │ ├── bluroverlay.c │ │ │ │ ├── bluroverlay.h │ │ │ │ ├── brick.png │ │ │ │ ├── brick2.png │ │ │ │ ├── builder.c │ │ │ │ ├── cell_cursor.png │ │ │ │ ├── clipboard.c │ │ │ │ ├── clipboard.ui │ │ │ │ ├── cmy.jpg │ │ │ │ ├── cogs.glsl │ │ │ │ ├── cogs2.glsl │ │ │ │ ├── col_resize_cursor.png │ │ │ │ ├── color.names.txt │ │ │ │ ├── combobox.c │ │ │ │ ├── constraints.c │ │ │ │ ├── constraints_builder.c │ │ │ │ ├── constraints_builder.ui │ │ │ │ ├── constraints_interactive.c │ │ │ │ ├── constraints_vfl.c │ │ │ │ ├── context_menu_cursor.png │ │ │ │ ├── copy_cursor.png │ │ │ │ ├── crosshair_cursor.png │ │ │ │ ├── crosswarp.glsl │ │ │ │ ├── css_accordion.c │ │ │ │ ├── css_accordion.css │ │ │ │ ├── css_basics.c │ │ │ │ ├── css_basics.css │ │ │ │ ├── css_blendmodes.c │ │ │ │ ├── css_blendmodes.css │ │ │ │ ├── css_multiplebgs.c │ │ │ │ ├── css_multiplebgs.css │ │ │ │ ├── css_pixbufs.c │ │ │ │ ├── css_pixbufs.css │ │ │ │ ├── css_shadows.c │ │ │ │ ├── css_shadows.css │ │ │ │ ├── cssview.css │ │ │ │ ├── cursors.c │ │ │ │ ├── cursors.ui │ │ │ │ ├── data │ │ │ │ │ ├── scalable │ │ │ │ │ │ └── apps │ │ │ │ │ │ │ └── org.gtk.Demo4.svg │ │ │ │ │ └── symbolic │ │ │ │ │ │ └── apps │ │ │ │ │ │ └── org.gtk.Demo4-symbolic.svg │ │ │ │ ├── decor1.png │ │ │ │ ├── decor2.png │ │ │ │ ├── default_cursor.png │ │ │ │ ├── demo.gresource.xml │ │ │ │ ├── demo.ui │ │ │ │ ├── demo2layout.c │ │ │ │ ├── demo2layout.h │ │ │ │ ├── demo2widget.c │ │ │ │ ├── demo2widget.h │ │ │ │ ├── demo3widget.c │ │ │ │ ├── demo3widget.h │ │ │ │ ├── demo3widget.ui │ │ │ │ ├── demo4widget.c │ │ │ │ ├── demo4widget.h │ │ │ │ ├── demochild.c │ │ │ │ ├── demochild.h │ │ │ │ ├── demoimage.c │ │ │ │ ├── demoimage.h │ │ │ │ ├── demolayout.c │ │ │ │ ├── demolayout.h │ │ │ │ ├── demotaggedentry.c │ │ │ │ ├── demotaggedentry.h │ │ │ │ ├── demowidget.c │ │ │ │ ├── demowidget.h │ │ │ │ ├── dialog.c │ │ │ │ ├── dnd.c │ │ │ │ ├── dnd.css │ │ │ │ ├── drawingarea.c │ │ │ │ ├── dropdown.c │ │ │ │ ├── ducky.png │ │ │ │ ├── e_resize_cursor.png │ │ │ │ ├── editable_cells.c │ │ │ │ ├── entry_completion.c │ │ │ │ ├── entry_undo.c │ │ │ │ ├── errorstates.c │ │ │ │ ├── errorstates.ui │ │ │ │ ├── ew_resize_cursor.png │ │ │ │ ├── expander.c │ │ │ │ ├── filtermodel.c │ │ │ │ ├── filtermodel.ui │ │ │ │ ├── fishbowl.c │ │ │ │ ├── fishbowl.ui │ │ │ │ ├── fixed.c │ │ │ │ ├── fixed.css │ │ │ │ ├── floppybuddy.gif │ │ │ │ ├── flowbox.c │ │ │ │ ├── font_features.c │ │ │ │ ├── font_features.ui │ │ │ │ ├── fontify.c │ │ │ │ ├── fontify.h │ │ │ │ ├── fontplane.c │ │ │ │ ├── fontplane.h │ │ │ │ ├── fontrendering.c │ │ │ │ ├── fontrendering.ui │ │ │ │ ├── four_point_transform.c │ │ │ │ ├── four_point_transform.h │ │ │ │ ├── frames.c │ │ │ │ ├── frames.ui │ │ │ │ ├── gears.c │ │ │ │ ├── geninclude.py │ │ │ │ ├── gestures.c │ │ │ │ ├── glarea-gl.fs.glsl │ │ │ │ ├── glarea-gl.vs.glsl │ │ │ │ ├── glarea-gles.fs.glsl │ │ │ │ ├── glarea-gles.vs.glsl │ │ │ │ ├── glarea.c │ │ │ │ ├── glowingstars.glsl │ │ │ │ ├── gltransition.c │ │ │ │ ├── gnome-applets.png │ │ │ │ ├── gnome-calendar.png │ │ │ │ ├── gnome-foot.png │ │ │ │ ├── gnome-fs-directory.png │ │ │ │ ├── gnome-fs-regular.png │ │ │ │ ├── gnome-gimp.png │ │ │ │ ├── gnome-gmush.png │ │ │ │ ├── gnome-gsame.png │ │ │ │ ├── gnu-keys.png │ │ │ │ ├── grab_cursor.png │ │ │ │ ├── grabbing_cursor.png │ │ │ │ ├── gskshaderpaintable.c │ │ │ │ ├── gskshaderpaintable.h │ │ │ │ ├── gtk-logo.webm │ │ │ │ ├── gtk │ │ │ │ │ ├── gtkpagesetupunixdialog.h │ │ │ │ │ ├── gtkprinter.h │ │ │ │ │ ├── gtkprintjob.h │ │ │ │ │ ├── gtkprintunixdialog.h │ │ │ │ │ ├── gtkunixprint-autocleanups.h │ │ │ │ │ └── gtkunixprint.h │ │ │ │ ├── gtk_logo_cursor.png │ │ │ │ ├── gtkfishbowl.c │ │ │ │ ├── gtkfishbowl.h │ │ │ │ ├── gtkgears.c │ │ │ │ ├── gtkgears.h │ │ │ │ ├── gtkshaderbin.c │ │ │ │ ├── gtkshaderbin.h │ │ │ │ ├── gtkshaderstack.c │ │ │ │ ├── gtkshaderstack.h │ │ │ │ ├── gtkshadertoy.c │ │ │ │ ├── gtkshadertoy.h │ │ │ │ ├── hand_cursor.png │ │ │ │ ├── headerbar.c │ │ │ │ ├── help-overlay.ui │ │ │ │ ├── help_cursor.png │ │ │ │ ├── hsla.c │ │ │ │ ├── hsla.h │ │ │ │ ├── hypertext.c │ │ │ │ ├── icons │ │ │ │ │ ├── 16x16 │ │ │ │ │ │ ├── actions │ │ │ │ │ │ │ ├── application-exit.png │ │ │ │ │ │ │ ├── document-edit-symbolic.symbolic.png │ │ │ │ │ │ │ ├── document-new.png │ │ │ │ │ │ │ ├── document-open.png │ │ │ │ │ │ │ ├── document-save.png │ │ │ │ │ │ │ ├── edit-copy.png │ │ │ │ │ │ │ ├── edit-cut.png │ │ │ │ │ │ │ ├── edit-paste.png │ │ │ │ │ │ │ ├── go-home.png │ │ │ │ │ │ │ ├── go-up.png │ │ │ │ │ │ │ ├── mail-send-receive-symbolic.symbolic.png │ │ │ │ │ │ │ ├── process-stop.png │ │ │ │ │ │ │ └── view-fullscreen-symbolic.symbolic.png │ │ │ │ │ │ ├── categories │ │ │ │ │ │ │ └── applications-other.png │ │ │ │ │ │ ├── emotes │ │ │ │ │ │ │ ├── face-cool.png │ │ │ │ │ │ │ └── face-laugh-symbolic.symbolic.png │ │ │ │ │ │ └── status │ │ │ │ │ │ │ └── battery-caution-charging-symbolic.symbolic.png │ │ │ │ │ └── 48x48 │ │ │ │ │ │ └── status │ │ │ │ │ │ └── starred.png │ │ │ │ ├── iconscroll.c │ │ │ │ ├── iconscroll.ui │ │ │ │ ├── iconview.c │ │ │ │ ├── iconview_edit.c │ │ │ │ ├── images.c │ │ │ │ ├── infobar.c │ │ │ │ ├── kaleidoscope.glsl │ │ │ │ ├── language-names.c │ │ │ │ ├── language-names.h │ │ │ │ ├── layoutmanager.c │ │ │ │ ├── layoutmanager2.c │ │ │ │ ├── links.c │ │ │ │ ├── list_store.c │ │ │ │ ├── listbox.c │ │ │ │ ├── listbox.ui │ │ │ │ ├── listbox_controls.c │ │ │ │ ├── listbox_controls.ui │ │ │ │ ├── listview_applauncher.c │ │ │ │ ├── listview_clocks.c │ │ │ │ ├── listview_colors.c │ │ │ │ ├── listview_colors.css │ │ │ │ ├── listview_filebrowser.c │ │ │ │ ├── listview_filebrowser.css │ │ │ │ ├── listview_filebrowser.ui │ │ │ │ ├── listview_minesweeper.c │ │ │ │ ├── listview_minesweeper.ui │ │ │ │ ├── listview_minesweeper_cell.ui │ │ │ │ ├── listview_settings.c │ │ │ │ ├── listview_settings.ui │ │ │ │ ├── listview_ucd.c │ │ │ │ ├── listview_weather.c │ │ │ │ ├── listview_weather.txt │ │ │ │ ├── listview_words.c │ │ │ │ ├── main-listitem.ui │ │ │ │ ├── main.c │ │ │ │ ├── main.ui │ │ │ │ ├── mandelbrot.glsl │ │ │ │ ├── markup.c │ │ │ │ ├── markup.txt │ │ │ │ ├── mask.c │ │ │ │ ├── menu.c │ │ │ │ ├── menus.ui │ │ │ │ ├── meson.build │ │ │ │ ├── messages.txt │ │ │ │ ├── move_cursor.png │ │ │ │ ├── n_resize_cursor.png │ │ │ │ ├── ne_resize_cursor.png │ │ │ │ ├── neon.glsl │ │ │ │ ├── nesw_resize_cursor.png │ │ │ │ ├── no_drop_cursor.png │ │ │ │ ├── none_cursor.png │ │ │ │ ├── not_allowed_cursor.png │ │ │ │ ├── ns_resize_cursor.png │ │ │ │ ├── nw_resize_cursor.png │ │ │ │ ├── nwse_resize_cursor.png │ │ │ │ ├── open-type-layout.h │ │ │ │ ├── org.gtk.Demo4.appdata.xml.in │ │ │ │ ├── org.gtk.Demo4.desktop │ │ │ │ ├── org.gtk.Demo4.gschema.xml │ │ │ │ ├── org.gtk.gtk4.NodeEditor.Devel.svg │ │ │ │ ├── overlay.c │ │ │ │ ├── overlay_decorative.c │ │ │ │ ├── pagesetup.c │ │ │ │ ├── paint.c │ │ │ │ ├── paintable.c │ │ │ │ ├── paintable.h │ │ │ │ ├── paintable_animated.c │ │ │ │ ├── paintable_emblem.c │ │ │ │ ├── paintable_mediastream.c │ │ │ │ ├── paintable_svg.c │ │ │ │ ├── paintable_symbolic.c │ │ │ │ ├── panes.c │ │ │ │ ├── password_entry.c │ │ │ │ ├── peg_solitaire.c │ │ │ │ ├── pickers.c │ │ │ │ ├── pixbufpaintable.c │ │ │ │ ├── pixbufpaintable.h │ │ │ │ ├── pointer_cursor.png │ │ │ │ ├── portland-rose.jpg │ │ │ │ ├── printing.c │ │ │ │ ├── progress_cursor.png │ │ │ │ ├── puzzlepiece.c │ │ │ │ ├── puzzlepiece.h │ │ │ │ ├── radial.glsl │ │ │ │ ├── read_more.c │ │ │ │ ├── reset.css │ │ │ │ ├── revealer.c │ │ │ │ ├── revealer.ui │ │ │ │ ├── ripple.glsl │ │ │ │ ├── rotated_text.c │ │ │ │ ├── row_resize_cursor.png │ │ │ │ ├── s_resize_cursor.png │ │ │ │ ├── scale.c │ │ │ │ ├── scale.ui │ │ │ │ ├── script-names.c │ │ │ │ ├── script-names.h │ │ │ │ ├── se_resize_cursor.png │ │ │ │ ├── search_entry.c │ │ │ │ ├── search_entry2.c │ │ │ │ ├── shadertoy.c │ │ │ │ ├── shortcut_triggers.c │ │ │ │ ├── shortcuts-boxes.ui │ │ │ │ ├── shortcuts-builder.ui │ │ │ │ ├── shortcuts-clocks.ui │ │ │ │ ├── shortcuts-gedit.ui │ │ │ │ ├── shortcuts.c │ │ │ │ ├── shortcuts.ui │ │ │ │ ├── sidebar.c │ │ │ │ ├── singular_value_decomposition.c │ │ │ │ ├── singular_value_decomposition.h │ │ │ │ ├── sizegroup.c │ │ │ │ ├── sliding_puzzle.c │ │ │ │ ├── spinbutton.c │ │ │ │ ├── spinbutton.ui │ │ │ │ ├── spinner.c │ │ │ │ ├── stack.c │ │ │ │ ├── stack.ui │ │ │ │ ├── suggestionentry.c │ │ │ │ ├── suggestionentry.css │ │ │ │ ├── suggestionentry.h │ │ │ │ ├── svgpaintable.c │ │ │ │ ├── svgpaintable.h │ │ │ │ ├── sw_resize_cursor.png │ │ │ │ ├── tabs.c │ │ │ │ ├── tagged_entry.c │ │ │ │ ├── tagstyle.css │ │ │ │ ├── text_cursor.png │ │ │ │ ├── textmask.c │ │ │ │ ├── textscroll.c │ │ │ │ ├── textundo.c │ │ │ │ ├── textview.c │ │ │ │ ├── themes.c │ │ │ │ ├── themes.ui │ │ │ │ ├── theming.ui │ │ │ │ ├── theming_style_classes.c │ │ │ │ ├── transparent.c │ │ │ │ ├── tree_store.c │ │ │ │ ├── ucdnames.data │ │ │ │ ├── unicode-names.c │ │ │ │ ├── unicode-names.h │ │ │ │ ├── vertical_text_cursor.png │ │ │ │ ├── video_player.c │ │ │ │ ├── w_resize_cursor.png │ │ │ │ ├── wait_cursor.png │ │ │ │ ├── wind.glsl │ │ │ │ ├── zoom_in_cursor.png │ │ │ │ └── zoom_out_cursor.png │ │ │ ├── icon-browser │ │ │ │ ├── data │ │ │ │ │ ├── scalable │ │ │ │ │ │ └── apps │ │ │ │ │ │ │ └── org.gtk.IconBrowser4.svg │ │ │ │ │ └── symbolic │ │ │ │ │ │ └── apps │ │ │ │ │ │ └── org.gtk.IconBrowser4-symbolic.svg │ │ │ │ ├── icon.list │ │ │ │ ├── iconbrowser.gresource.xml │ │ │ │ ├── iconbrowserapp.c │ │ │ │ ├── iconbrowserapp.h │ │ │ │ ├── iconbrowsercontext.c │ │ │ │ ├── iconbrowsercontext.h │ │ │ │ ├── iconbrowsericon.c │ │ │ │ ├── iconbrowsericon.h │ │ │ │ ├── iconbrowserwin.c │ │ │ │ ├── iconbrowserwin.h │ │ │ │ ├── main.c │ │ │ │ ├── meson.build │ │ │ │ ├── org.gtk.IconBrowser4.appdata.xml.in │ │ │ │ ├── org.gtk.IconBrowser4.desktop │ │ │ │ └── window.ui │ │ │ ├── meson.build │ │ │ ├── node-editor │ │ │ │ ├── data │ │ │ │ │ ├── scalable │ │ │ │ │ │ └── apps │ │ │ │ │ │ │ ├── org.gtk.gtk4.NodeEditor.Devel.svg │ │ │ │ │ │ │ └── org.gtk.gtk4.NodeEditor.svg │ │ │ │ │ └── symbolic │ │ │ │ │ │ └── apps │ │ │ │ │ │ └── org.gtk.gtk4.NodeEditor-symbolic.svg │ │ │ │ ├── gsk │ │ │ │ │ ├── gskrendernode.h │ │ │ │ │ ├── gskrendernodeparserprivate.h │ │ │ │ │ └── gskrendernodeprivate.h │ │ │ │ ├── gtkrendererpaintable.c │ │ │ │ ├── gtkrendererpaintableprivate.h │ │ │ │ ├── help-window.ui │ │ │ │ ├── main.c │ │ │ │ ├── meson.build │ │ │ │ ├── node-editor-application.c │ │ │ │ ├── node-editor-application.h │ │ │ │ ├── node-editor-window.c │ │ │ │ ├── node-editor-window.h │ │ │ │ ├── node-editor-window.ui │ │ │ │ ├── node-editor.gresource.xml │ │ │ │ ├── node-format.md │ │ │ │ ├── org.gtk.gtk4.NodeEditor.appdata.xml.in │ │ │ │ └── org.gtk.gtk4.NodeEditor.desktop │ │ │ ├── print-editor │ │ │ │ ├── data │ │ │ │ │ ├── scalable │ │ │ │ │ │ └── apps │ │ │ │ │ │ │ ├── org.gtk.PrintEditor4.Devel.svg │ │ │ │ │ │ │ └── org.gtk.PrintEditor4.svg │ │ │ │ │ └── symbolic │ │ │ │ │ │ └── apps │ │ │ │ │ │ └── org.gtk.PrintEditor4-symbolic.svg │ │ │ │ ├── meson.build │ │ │ │ ├── org.gtk.PrintEditor4.appdata.xml │ │ │ │ ├── org.gtk.PrintEditor4.desktop │ │ │ │ └── print-editor.c │ │ │ └── widget-factory │ │ │ │ ├── beach.jpg │ │ │ │ ├── data │ │ │ │ ├── scalable │ │ │ │ │ └── apps │ │ │ │ │ │ └── org.gtk.WidgetFactory4.svg │ │ │ │ └── symbolic │ │ │ │ │ └── apps │ │ │ │ │ └── org.gtk.WidgetFactory4-symbolic.svg │ │ │ │ ├── gtk-logo.webm │ │ │ │ ├── help-overlay.ui │ │ │ │ ├── icons │ │ │ │ ├── 16x16 │ │ │ │ │ ├── actions │ │ │ │ │ │ ├── call-start-symbolic.symbolic.png │ │ │ │ │ │ ├── call-stop-symbolic.symbolic.png │ │ │ │ │ │ ├── document-new-symbolic.symbolic.png │ │ │ │ │ │ ├── document-new.png │ │ │ │ │ │ ├── document-save.png │ │ │ │ │ │ ├── document-send-symbolic.symbolic.png │ │ │ │ │ │ ├── edit-find.png │ │ │ │ │ │ ├── format-indent-less-symbolic-rtl.symbolic.png │ │ │ │ │ │ ├── format-indent-less-symbolic.symbolic.png │ │ │ │ │ │ ├── format-indent-more-symbolic-rtl.symbolic.png │ │ │ │ │ │ ├── format-indent-more-symbolic.symbolic.png │ │ │ │ │ │ ├── format-justify-center-symbolic.symbolic.png │ │ │ │ │ │ ├── format-justify-fill-symbolic.symbolic.png │ │ │ │ │ │ ├── format-justify-left-symbolic.symbolic.png │ │ │ │ │ │ ├── format-justify-right-symbolic.symbolic.png │ │ │ │ │ │ ├── insert-image.png │ │ │ │ │ │ ├── insert-link-symbolic.symbolic.png │ │ │ │ │ │ ├── send-to-symbolic.symbolic.png │ │ │ │ │ │ ├── star-new-symbolic.symbolic.png │ │ │ │ │ │ ├── view-continuous-symbolic.symbolic.png │ │ │ │ │ │ ├── view-dual-symbolic.symbolic.png │ │ │ │ │ │ ├── view-fullscreen-symbolic.symbolic.png │ │ │ │ │ │ ├── view-grid-symbolic.symbolic.png │ │ │ │ │ │ ├── view-paged-symbolic.symbolic.png │ │ │ │ │ │ ├── zoom-in-symbolic.symbolic.png │ │ │ │ │ │ ├── zoom-in.png │ │ │ │ │ │ ├── zoom-original-symbolic.symbolic.png │ │ │ │ │ │ ├── zoom-original.png │ │ │ │ │ │ ├── zoom-out-symbolic.symbolic.png │ │ │ │ │ │ └── zoom-out.png │ │ │ │ │ ├── apps │ │ │ │ │ │ └── preferences-desktop-locale-symbolic.symbolic.png │ │ │ │ │ ├── devices │ │ │ │ │ │ ├── audio-headphones-symbolic.symbolic.png │ │ │ │ │ │ ├── audio-input-microphone-symbolic.symbolic.png │ │ │ │ │ │ ├── audio-speakers-symbolic.symbolic.png │ │ │ │ │ │ ├── camera-photo-symbolic.symbolic.png │ │ │ │ │ │ ├── camera-web-symbolic.symbolic.png │ │ │ │ │ │ ├── drive-optical-symbolic.symbolic.png │ │ │ │ │ │ ├── network-wired-symbolic.symbolic.png │ │ │ │ │ │ ├── network-wireless-symbolic.symbolic.png │ │ │ │ │ │ └── phone-symbolic.symbolic.png │ │ │ │ │ ├── emblems │ │ │ │ │ │ ├── emblem-default-symbolic.symbolic.png │ │ │ │ │ │ └── emblem-shared-symbolic.symbolic.png │ │ │ │ │ ├── emotes │ │ │ │ │ │ └── face-monkey-symbolic.symbolic.png │ │ │ │ │ └── status │ │ │ │ │ │ ├── appointment-soon-symbolic.symbolic.png │ │ │ │ │ │ ├── microphone-sensitivity-high-symbolic.symbolic.png │ │ │ │ │ │ ├── microphone-sensitivity-low-symbolic.symbolic.png │ │ │ │ │ │ ├── microphone-sensitivity-medium-symbolic.symbolic.png │ │ │ │ │ │ ├── microphone-sensitivity-muted-symbolic.symbolic.png │ │ │ │ │ │ ├── weather-clear-night-symbolic.symbolic.png │ │ │ │ │ │ ├── weather-few-clouds-night-symbolic.symbolic.png │ │ │ │ │ │ ├── weather-fog-symbolic.symbolic.png │ │ │ │ │ │ ├── weather-overcast-symbolic.symbolic.png │ │ │ │ │ │ ├── weather-severe-alert-symbolic.symbolic.png │ │ │ │ │ │ ├── weather-showers-symbolic.symbolic.png │ │ │ │ │ │ └── weather-snow-symbolic.symbolic.png │ │ │ │ └── scalable │ │ │ │ │ ├── actions │ │ │ │ │ ├── call-start-symbolic.svg │ │ │ │ │ ├── call-stop-symbolic.svg │ │ │ │ │ ├── document-new-symbolic.svg │ │ │ │ │ ├── format-indent-less-symbolic-rtl.svg │ │ │ │ │ ├── format-indent-less-symbolic.svg │ │ │ │ │ ├── format-indent-more-symbolic-rtl.svg │ │ │ │ │ ├── format-indent-more-symbolic.svg │ │ │ │ │ ├── format-justify-center-symbolic.svg │ │ │ │ │ ├── format-justify-fill-symbolic.svg │ │ │ │ │ ├── format-justify-left-symbolic.svg │ │ │ │ │ ├── format-justify-right-symbolic.svg │ │ │ │ │ ├── insert-link-symbolic.svg │ │ │ │ │ ├── star-new-symbolic.svg │ │ │ │ │ ├── view-continuous-symbolic.svg │ │ │ │ │ ├── view-dual-symbolic.svg │ │ │ │ │ ├── view-fullscreen-symbolic.svg │ │ │ │ │ ├── view-grid-symbolic.svg │ │ │ │ │ ├── view-paged-symbolic.svg │ │ │ │ │ ├── zoom-in-symbolic.svg │ │ │ │ │ ├── zoom-original-symbolic.svg │ │ │ │ │ └── zoom-out-symbolic.svg │ │ │ │ │ ├── devices │ │ │ │ │ ├── audio-headphones-symbolic.svg │ │ │ │ │ ├── audio-input-microphone-symbolic.svg │ │ │ │ │ ├── audio-speakers-symbolic.svg │ │ │ │ │ ├── camera-photo-symbolic.svg │ │ │ │ │ ├── camera-web-symbolic.svg │ │ │ │ │ ├── drive-optical-symbolic.svg │ │ │ │ │ ├── network-wired-symbolic.svg │ │ │ │ │ ├── network-wireless-symbolic.svg │ │ │ │ │ └── phone-symbolic.svg │ │ │ │ │ └── status │ │ │ │ │ ├── weather-clear-night-symbolic.svg │ │ │ │ │ ├── weather-few-clouds-night-symbolic.svg │ │ │ │ │ ├── weather-fog-symbolic.svg │ │ │ │ │ ├── weather-overcast-symbolic.svg │ │ │ │ │ ├── weather-severe-alert-symbolic.svg │ │ │ │ │ ├── weather-showers-symbolic.svg │ │ │ │ │ └── weather-snow-symbolic.svg │ │ │ │ ├── meson.build │ │ │ │ ├── nyc.jpg │ │ │ │ ├── org.gtk.WidgetFactory4.appdata.xml.in │ │ │ │ ├── org.gtk.WidgetFactory4.desktop │ │ │ │ ├── portland-rose.jpg │ │ │ │ ├── sunset.jpg │ │ │ │ ├── widget-factory.c │ │ │ │ ├── widget-factory.css │ │ │ │ ├── widget-factory.gresource.xml │ │ │ │ └── widget-factory.ui │ │ ├── examples │ │ │ ├── README │ │ │ ├── action-namespace.c │ │ │ ├── application1 │ │ │ │ ├── Makefile.example │ │ │ │ ├── README │ │ │ │ ├── exampleapp.c │ │ │ │ ├── exampleapp.h │ │ │ │ ├── exampleapp.png │ │ │ │ ├── exampleappwin.c │ │ │ │ ├── exampleappwin.h │ │ │ │ ├── main.c │ │ │ │ ├── meson.build │ │ │ │ └── org.gtk.exampleapp.desktop │ │ │ ├── application2 │ │ │ │ ├── Makefile.example │ │ │ │ ├── README │ │ │ │ ├── exampleapp.c │ │ │ │ ├── exampleapp.gresource.xml │ │ │ │ ├── exampleapp.h │ │ │ │ ├── exampleappwin.c │ │ │ │ ├── exampleappwin.h │ │ │ │ ├── main.c │ │ │ │ ├── meson.build │ │ │ │ └── window.ui │ │ │ ├── application3 │ │ │ │ ├── Makefile.example │ │ │ │ ├── README │ │ │ │ ├── exampleapp.c │ │ │ │ ├── exampleapp.gresource.xml │ │ │ │ ├── exampleapp.h │ │ │ │ ├── exampleappwin.c │ │ │ │ ├── exampleappwin.h │ │ │ │ ├── main.c │ │ │ │ ├── meson.build │ │ │ │ └── window.ui │ │ │ ├── application4 │ │ │ │ ├── Makefile.example │ │ │ │ ├── README │ │ │ │ ├── exampleapp.c │ │ │ │ ├── exampleapp.gresource.xml │ │ │ │ ├── exampleapp.h │ │ │ │ ├── exampleappwin.c │ │ │ │ ├── exampleappwin.h │ │ │ │ ├── gears-menu.ui │ │ │ │ ├── main.c │ │ │ │ ├── meson.build │ │ │ │ └── window.ui │ │ │ ├── application5 │ │ │ │ ├── Makefile.example │ │ │ │ ├── exampleapp.c │ │ │ │ ├── exampleapp.gresource.xml │ │ │ │ ├── exampleapp.h │ │ │ │ ├── exampleappwin.c │ │ │ │ ├── exampleappwin.h │ │ │ │ ├── gears-menu.ui │ │ │ │ ├── main.c │ │ │ │ ├── meson.build │ │ │ │ ├── org.gtk.exampleapp.gschema.xml │ │ │ │ └── window.ui │ │ │ ├── application6 │ │ │ │ ├── Makefile.example │ │ │ │ ├── exampleapp.c │ │ │ │ ├── exampleapp.gresource.xml │ │ │ │ ├── exampleapp.h │ │ │ │ ├── exampleappprefs.c │ │ │ │ ├── exampleappprefs.h │ │ │ │ ├── exampleappwin.c │ │ │ │ ├── exampleappwin.h │ │ │ │ ├── gears-menu.ui │ │ │ │ ├── main.c │ │ │ │ ├── meson.build │ │ │ │ ├── org.gtk.exampleapp.gschema.xml │ │ │ │ ├── prefs.ui │ │ │ │ └── window.ui │ │ │ ├── application7 │ │ │ │ ├── Makefile.example │ │ │ │ ├── README │ │ │ │ ├── exampleapp.c │ │ │ │ ├── exampleapp.gresource.xml │ │ │ │ ├── exampleapp.h │ │ │ │ ├── exampleappprefs.c │ │ │ │ ├── exampleappprefs.h │ │ │ │ ├── exampleappwin.c │ │ │ │ ├── exampleappwin.h │ │ │ │ ├── gears-menu.ui │ │ │ │ ├── main.c │ │ │ │ ├── meson.build │ │ │ │ ├── org.gtk.exampleapp.gschema.xml │ │ │ │ ├── prefs.ui │ │ │ │ └── window.ui │ │ │ ├── application8 │ │ │ │ ├── Makefile.example │ │ │ │ ├── README │ │ │ │ ├── exampleapp.c │ │ │ │ ├── exampleapp.gresource.xml │ │ │ │ ├── exampleapp.h │ │ │ │ ├── exampleappprefs.c │ │ │ │ ├── exampleappprefs.h │ │ │ │ ├── exampleappwin.c │ │ │ │ ├── exampleappwin.h │ │ │ │ ├── gears-menu.ui │ │ │ │ ├── main.c │ │ │ │ ├── meson.build │ │ │ │ ├── org.gtk.exampleapp.gschema.xml │ │ │ │ ├── prefs.ui │ │ │ │ └── window.ui │ │ │ ├── application9 │ │ │ │ ├── Makefile.example │ │ │ │ ├── README │ │ │ │ ├── exampleapp.c │ │ │ │ ├── exampleapp.gresource.xml │ │ │ │ ├── exampleapp.h │ │ │ │ ├── exampleappprefs.c │ │ │ │ ├── exampleappprefs.h │ │ │ │ ├── exampleappwin.c │ │ │ │ ├── exampleappwin.h │ │ │ │ ├── gears-menu.ui │ │ │ │ ├── main.c │ │ │ │ ├── meson.build │ │ │ │ ├── org.gtk.exampleapp.gschema.xml │ │ │ │ ├── prefs.ui │ │ │ │ └── window.ui │ │ │ ├── bp │ │ │ │ ├── bloatpad.c │ │ │ │ ├── bloatpad.gresources.xml │ │ │ │ ├── gtk │ │ │ │ │ ├── help-overlay.ui │ │ │ │ │ └── menus.ui │ │ │ │ ├── icons │ │ │ │ │ └── 16x16 │ │ │ │ │ │ └── actions │ │ │ │ │ │ ├── format-justify-center-symbolic.symbolic.png │ │ │ │ │ │ ├── format-justify-left-symbolic.symbolic.png │ │ │ │ │ │ ├── format-justify-right-symbolic.symbolic.png │ │ │ │ │ │ ├── view-fullscreen-symbolic.symbolic.png │ │ │ │ │ │ └── view-restore-symbolic.symbolic.png │ │ │ │ └── meson.build │ │ │ ├── builder.c │ │ │ ├── builder.ui │ │ │ ├── drawing.c │ │ │ ├── grid-packing.c │ │ │ ├── hello │ │ │ │ ├── README.md │ │ │ │ ├── hello-world.c │ │ │ │ └── meson.build │ │ │ ├── labels.js │ │ │ ├── meson.build │ │ │ ├── plugman.c │ │ │ ├── search-bar.c │ │ │ ├── squares.py │ │ │ ├── sunny.c │ │ │ └── window-default.c │ │ ├── fonts │ │ │ └── inter │ │ │ │ ├── Inter-Black.otf │ │ │ │ ├── Inter-BlackItalic.otf │ │ │ │ ├── Inter-Bold.otf │ │ │ │ ├── Inter-BoldItalic.otf │ │ │ │ ├── Inter-ExtraBold.otf │ │ │ │ ├── Inter-ExtraBoldItalic.otf │ │ │ │ ├── Inter-ExtraLight.otf │ │ │ │ ├── Inter-ExtraLightItalic.otf │ │ │ │ ├── Inter-Italic.otf │ │ │ │ ├── Inter-Light.otf │ │ │ │ ├── Inter-LightItalic.otf │ │ │ │ ├── Inter-Medium.otf │ │ │ │ ├── Inter-MediumItalic.otf │ │ │ │ ├── Inter-Regular.otf │ │ │ │ ├── Inter-SemiBold.otf │ │ │ │ ├── Inter-SemiBoldItalic.otf │ │ │ │ ├── Inter-Thin.otf │ │ │ │ ├── Inter-ThinItalic.otf │ │ │ │ ├── InterDisplay-Black.otf │ │ │ │ ├── InterDisplay-BlackItalic.otf │ │ │ │ ├── InterDisplay-Bold.otf │ │ │ │ ├── InterDisplay-BoldItalic.otf │ │ │ │ ├── InterDisplay-ExtraBold.otf │ │ │ │ ├── InterDisplay-ExtraBoldItalic.otf │ │ │ │ ├── InterDisplay-ExtraLight.otf │ │ │ │ ├── InterDisplay-ExtraLightItalic.otf │ │ │ │ ├── InterDisplay-Italic.otf │ │ │ │ ├── InterDisplay-Light.otf │ │ │ │ ├── InterDisplay-LightItalic.otf │ │ │ │ ├── InterDisplay-Medium.otf │ │ │ │ ├── InterDisplay-MediumItalic.otf │ │ │ │ ├── InterDisplay-Regular.otf │ │ │ │ ├── InterDisplay-SemiBold.otf │ │ │ │ ├── InterDisplay-SemiBoldItalic.otf │ │ │ │ ├── InterDisplay-Thin.otf │ │ │ │ └── InterDisplay-ThinItalic.otf │ │ ├── meson.build │ │ └── meson_options.txt │ ├── simple-shm │ │ ├── .gitignore │ │ ├── build.sh │ │ └── src │ │ │ └── simple-shm.c │ └── weston │ │ ├── .gitignore │ │ ├── build.sh │ │ ├── clients │ │ ├── calibrator.c │ │ ├── cliptest.c │ │ ├── content_protection.c │ │ ├── dnd.c │ │ ├── editor.c │ │ ├── eventdemo.c │ │ ├── flower.c │ │ ├── fullscreen.c │ │ ├── image.c │ │ ├── keyboard.c │ │ ├── meson.build │ │ ├── multi-resource.c │ │ ├── presentation-shm.c │ │ ├── resizor.c │ │ ├── scaler.c │ │ ├── screenshot.c │ │ ├── simple-damage.c │ │ ├── simple-egl.c │ │ ├── simple-im.c │ │ ├── simple-shm.c │ │ ├── simple-touch.c │ │ ├── smoke.c │ │ ├── stacking.c │ │ ├── subsurfaces.c │ │ ├── terminal.c │ │ ├── transformed.c │ │ ├── window.c │ │ └── window.h │ │ ├── data │ │ ├── COPYING │ │ ├── background.png │ │ ├── border.png │ │ ├── fullscreen.png │ │ ├── home.png │ │ ├── icon_editor.png │ │ ├── icon_flower.png │ │ ├── icon_ivi_clickdot.png │ │ ├── icon_ivi_flower.png │ │ ├── icon_ivi_simple-egl.png │ │ ├── icon_ivi_simple-shm.png │ │ ├── icon_ivi_smoke.png │ │ ├── icon_terminal.png │ │ ├── icon_window.png │ │ ├── icons.svg │ │ ├── meson.build │ │ ├── panel.png │ │ ├── pattern.png │ │ ├── random.png │ │ ├── sidebyside.png │ │ ├── sign_close.png │ │ ├── sign_maximize.png │ │ ├── sign_minimize.png │ │ ├── terminal.png │ │ ├── tiling.png │ │ ├── wayland.png │ │ └── wayland.svg │ │ ├── fonts │ │ └── inter │ │ │ ├── Inter-Black.otf │ │ │ ├── Inter-BlackItalic.otf │ │ │ ├── Inter-Bold.otf │ │ │ ├── Inter-BoldItalic.otf │ │ │ ├── Inter-ExtraBold.otf │ │ │ ├── Inter-ExtraBoldItalic.otf │ │ │ ├── Inter-ExtraLight.otf │ │ │ ├── Inter-ExtraLightItalic.otf │ │ │ ├── Inter-Italic.otf │ │ │ ├── Inter-Light.otf │ │ │ ├── Inter-LightItalic.otf │ │ │ ├── Inter-Medium.otf │ │ │ ├── Inter-MediumItalic.otf │ │ │ ├── Inter-Regular.otf │ │ │ ├── Inter-SemiBold.otf │ │ │ ├── Inter-SemiBoldItalic.otf │ │ │ ├── Inter-Thin.otf │ │ │ ├── Inter-ThinItalic.otf │ │ │ ├── InterDisplay-Black.otf │ │ │ ├── InterDisplay-BlackItalic.otf │ │ │ ├── InterDisplay-Bold.otf │ │ │ ├── InterDisplay-BoldItalic.otf │ │ │ ├── InterDisplay-ExtraBold.otf │ │ │ ├── InterDisplay-ExtraBoldItalic.otf │ │ │ ├── InterDisplay-ExtraLight.otf │ │ │ ├── InterDisplay-ExtraLightItalic.otf │ │ │ ├── InterDisplay-Italic.otf │ │ │ ├── InterDisplay-Light.otf │ │ │ ├── InterDisplay-LightItalic.otf │ │ │ ├── InterDisplay-Medium.otf │ │ │ ├── InterDisplay-MediumItalic.otf │ │ │ ├── InterDisplay-Regular.otf │ │ │ ├── InterDisplay-SemiBold.otf │ │ │ ├── InterDisplay-SemiBoldItalic.otf │ │ │ ├── InterDisplay-Thin.otf │ │ │ └── InterDisplay-ThinItalic.otf │ │ ├── include │ │ ├── libweston │ │ │ ├── backend-drm.h │ │ │ ├── backend-headless.h │ │ │ ├── backend-rdp.h │ │ │ ├── backend-vnc.h │ │ │ ├── backend-wayland.h │ │ │ ├── backend-x11.h │ │ │ ├── config-parser.h │ │ │ ├── desktop.h │ │ │ ├── libweston.h │ │ │ ├── matrix.h │ │ │ ├── meson.build │ │ │ ├── pipewire-plugin.h │ │ │ ├── plugin-registry.h │ │ │ ├── remoting-plugin.h │ │ │ ├── version.h.in │ │ │ ├── weston-log.h │ │ │ ├── windowed-output-api.h │ │ │ ├── xwayland-api.h │ │ │ └── zalloc.h │ │ ├── linux │ │ │ └── input.h │ │ └── meson.build │ │ ├── meson.build │ │ ├── meson_options.txt │ │ ├── protocol │ │ └── meson.build │ │ ├── set_env.js │ │ └── shared │ │ ├── cairo-util.c │ │ ├── cairo-util.h │ │ ├── config-parser.c │ │ ├── fd-util.h │ │ ├── file-util.c │ │ ├── file-util.h │ │ ├── frame.c │ │ ├── helpers.h │ │ ├── image-loader.c │ │ ├── image-loader.h │ │ ├── matrix.c │ │ ├── meson.build │ │ ├── option-parser.c │ │ ├── os-compatibility.c │ │ ├── os-compatibility.h │ │ ├── platform.h │ │ ├── process-util.c │ │ ├── process-util.h │ │ ├── string-helpers.h │ │ ├── timespec-util.h │ │ ├── weston-drm-fourcc.h │ │ ├── weston-egl-ext.h │ │ ├── xalloc.h │ │ ├── xcb-xwayland.c │ │ └── xcb-xwayland.h └── webapps │ ├── gtk4 │ ├── .gitignore │ ├── README.md │ ├── package.json │ └── vite.config.ts │ ├── simple-shm │ ├── .gitignore │ ├── README.md │ ├── app.html │ ├── package.json │ ├── src │ │ └── index.ts │ ├── tsconfig.json │ └── vite.config.ts │ ├── webgl │ ├── .gitignore │ ├── README.md │ ├── app.html │ ├── package.json │ ├── src │ │ ├── demo.frag │ │ ├── demo.vert │ │ ├── glsl.d.ts │ │ ├── index.ts │ │ └── webgl-demo.ts │ ├── tsconfig.json │ └── vite.config.ts │ └── weston-clients │ ├── README.md │ ├── dist │ ├── package.json │ └── vite.config.mts ├── libs ├── client-generator │ ├── .gitignore │ ├── .npmignore │ ├── LICENSE │ ├── ProtocolArguments.mjs │ ├── ProtocolParser.mjs │ ├── index.mjs │ └── package.json ├── client-protocol │ ├── .eslintrc.js │ ├── .gitignore │ ├── .npmignore │ ├── .prettierrc.js │ ├── LICENSE │ ├── package.json │ ├── src │ │ ├── index.ts │ │ ├── protocol │ │ │ ├── index.ts │ │ │ ├── wayland.ts │ │ │ ├── web_bitmapbuf.ts │ │ │ └── xdg_shell.ts │ │ └── westfield-runtime-client.ts │ └── tsconfig.json ├── common │ ├── .eslintrc.js │ ├── .gitignore │ ├── .prettierrc.js │ ├── LICENSE │ ├── package.json │ ├── src │ │ ├── Connection.ts │ │ └── index.ts │ └── tsconfig.json ├── compositor-ffmpeg-h264 │ ├── .eslintrc.js │ ├── .gitignore │ ├── .prettierrc.js │ ├── LICENSE │ ├── README.md │ ├── build_wasm.sh │ ├── native │ │ ├── decoder.c │ │ └── decoder.h │ ├── package.json │ ├── src │ │ ├── H264Decoder.ts │ │ ├── H264Worker.ts │ │ ├── index.ts │ │ └── libav-h264.js │ └── tsconfig.json ├── compositor-generator │ ├── .gitignore │ ├── LICENSE │ ├── ProtocolArguments.mjs │ ├── ProtocolParser.mjs │ ├── index.mjs │ └── package.json ├── compositor-protocol │ ├── .eslintrc.js │ ├── .gitignore │ ├── .prettierrc.js │ ├── LICENSE │ ├── index.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ ├── protocol │ │ │ ├── index.ts │ │ │ ├── wayland.ts │ │ │ ├── web_bitmapbuf.ts │ │ │ └── xdg_shell.ts │ │ └── westfield-runtime-server.ts │ └── tsconfig.json ├── compositor-proxy-generator │ ├── .gitignore │ ├── LICENSE │ ├── package.json │ └── src │ │ ├── EndpointProtocolArguments.mjs │ │ ├── EndpointProtocolParser.mjs │ │ └── index.mjs ├── compositor-wasm │ ├── .eslintrc.js │ ├── .gitignore │ ├── .prettierrc.js │ ├── LICENSE │ ├── README.md │ ├── build_wasm.sh │ ├── emscripten-build.ini │ ├── package.json │ ├── pixman │ │ └── build.sh │ ├── src │ │ └── index.ts │ ├── tsconfig.json │ └── xkbcommon │ │ ├── build.sh │ │ └── changes.patch └── xtsb │ ├── .eslintrc.js │ ├── .gitignore │ ├── .prettierrc.js │ ├── LICENSE │ ├── README.md │ ├── package.json │ ├── protocol │ ├── composite.xml │ ├── render.xml │ ├── shape.xml │ ├── xfixes.xml │ └── xproto.xml │ ├── src │ ├── Protocol.ts │ ├── auth.ts │ ├── connection.ts │ ├── index.node.ts │ ├── index.ts │ ├── index.web.ts │ ├── nodeConnection.ts │ ├── struct.ts │ ├── webConnection.ts │ ├── xcb.ts │ ├── xcbComposite.ts │ ├── xcbRender.ts │ ├── xcbShape.ts │ ├── xcbXFixes.ts │ └── xjsbInternals.ts │ ├── test │ ├── 0.connection.spec.ts │ ├── setupXvfb.ts │ └── struct.spec.ts │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── xcbgen │ ├── __init__.py │ ├── align.py │ ├── error.py │ ├── expr.py │ ├── matcher.py │ ├── state.py │ ├── ts_client.py │ └── xtypes.py ├── package.json ├── packages ├── compositor-proxy-cli │ ├── .eslintrc.js │ ├── .gitignore │ ├── .prettierrc.js │ ├── example-applications.json │ ├── package.json │ ├── src │ │ ├── SessionProcess.ts │ │ ├── app-config-schema.json │ │ ├── app-config.d.ts │ │ ├── main-args.ts │ │ ├── main-controller.ts │ │ └── main.ts │ ├── tsconfig.json │ └── wait-until-ready.sh ├── compositor-proxy │ ├── .eslintrc.js │ ├── .gitignore │ ├── .prettierrc.js │ ├── CMakeLists.txt │ ├── native │ │ ├── encoding │ │ │ └── src │ │ │ │ ├── encoder.h │ │ │ │ ├── gst_frame_encoder.c │ │ │ │ ├── gst_frame_encoder_drm_formats.h │ │ │ │ ├── gst_main_loop.c │ │ │ │ └── node_encoder.c │ │ ├── node-api │ │ │ ├── LICENSE │ │ │ ├── js_native_api.h │ │ │ ├── js_native_api_types.h │ │ │ ├── node_api.h │ │ │ └── node_api_types.h │ │ ├── poll │ │ │ └── src │ │ │ │ ├── poll.c │ │ │ │ ├── uv.h │ │ │ │ └── uv │ │ │ │ ├── errno.h │ │ │ │ ├── linux.h │ │ │ │ ├── threadpool.h │ │ │ │ ├── unix.h │ │ │ │ └── version.h │ │ └── wayland │ │ │ ├── changes.diff │ │ │ ├── generate_patched_wayland_server.sh │ │ │ ├── generate_wayland_server_patch.sh │ │ │ └── src │ │ │ ├── addon.c │ │ │ ├── addon.h │ │ │ ├── drm-protocol.c │ │ │ ├── drm-protocol.h │ │ │ ├── drm_format_set.c │ │ │ ├── drm_format_set.h │ │ │ ├── linux-dmabuf-unstable-v1-protocol.c │ │ │ ├── linux-dmabuf-unstable-v1-protocol.h │ │ │ ├── node-addon │ │ │ └── wayland-server-addon.c │ │ │ ├── wayland-server │ │ │ ├── connection.c │ │ │ ├── event-loop.c │ │ │ ├── wayland-os.c │ │ │ ├── wayland-os.h │ │ │ ├── wayland-private.h │ │ │ ├── wayland-protocol.c │ │ │ ├── wayland-server-core.h │ │ │ ├── wayland-server-private.h │ │ │ ├── wayland-server-protocol.h │ │ │ ├── wayland-server.c │ │ │ ├── wayland-server.h │ │ │ ├── wayland-shm.c │ │ │ ├── wayland-util.c │ │ │ ├── wayland-util.h │ │ │ ├── wayland-version.h │ │ │ ├── westfield-wayland-server-extra.h │ │ │ └── westfield-wayland-server.h │ │ │ ├── wayland-upstream │ │ │ ├── connection.c │ │ │ ├── event-loop.c │ │ │ ├── wayland-os.c │ │ │ ├── wayland-os.h │ │ │ ├── wayland-private.h │ │ │ ├── wayland-protocol.c │ │ │ ├── wayland-server-core.h │ │ │ ├── wayland-server-protocol.h │ │ │ ├── wayland-server.c │ │ │ ├── wayland-server.h │ │ │ ├── wayland-shm.c │ │ │ ├── wayland-util.c │ │ │ ├── wayland-util.h │ │ │ └── wayland-version.h │ │ │ ├── westfield-buffer.c │ │ │ ├── westfield-buffer.h │ │ │ ├── westfield-dmabuf.c │ │ │ ├── westfield-dmabuf.h │ │ │ ├── westfield-egl.c │ │ │ ├── westfield-egl.h │ │ │ ├── westfield-fdutils.c │ │ │ ├── westfield-fdutils.h │ │ │ ├── westfield-surface.h │ │ │ ├── westfield-util.h │ │ │ ├── westfield-xwayland.c │ │ │ ├── westfield-xwayland.h │ │ │ ├── westfield.h │ │ │ ├── wlr_drm.c │ │ │ ├── wlr_drm.h │ │ │ ├── wlr_linux_dmabuf_v1.c │ │ │ └── wlr_linux_dmabuf_v1.h │ ├── package.json │ ├── src │ │ ├── Channel.ts │ │ ├── FrameFeedback.ts │ │ ├── Logger.ts │ │ ├── NativeAppContext.ts │ │ ├── NativeWaylandClientSession.ts │ │ ├── NativeWaylandCompositorSession.ts │ │ ├── ProxyBuffer.ts │ │ ├── Session.ts │ │ ├── SessionController.ts │ │ ├── SurfaceBufferEncoding.ts │ │ ├── XWaylandSession.ts │ │ ├── addons │ │ │ ├── proxy-encoding-addon.d.ts │ │ │ ├── proxy-encoding-addon.node │ │ │ ├── proxy-poll-addon.d.ts │ │ │ ├── proxy-poll-addon.node │ │ │ ├── wayland-server-addon.d.ts │ │ │ └── wayland-server-addon.node │ │ ├── config.ts │ │ ├── encoding │ │ │ └── Encoder.ts │ │ ├── index.ts │ │ ├── io │ │ │ ├── ProxyInputOutput.ts │ │ │ └── types.d.ts │ │ ├── kcp.ts │ │ ├── protocol │ │ │ ├── wl_buffer_interceptor.js │ │ │ ├── wl_buffer_interface.js │ │ │ ├── wl_callback_interceptor.js │ │ │ ├── wl_callback_interface.js │ │ │ ├── wl_compositor_interceptor.js │ │ │ ├── wl_compositor_interface.js │ │ │ ├── wl_data_device_interceptor.js │ │ │ ├── wl_data_device_interface.js │ │ │ ├── wl_data_device_manager_interceptor.js │ │ │ ├── wl_data_device_manager_interface.js │ │ │ ├── wl_data_offer_interceptor.js │ │ │ ├── wl_data_offer_interface.js │ │ │ ├── wl_data_source_interceptor.js │ │ │ ├── wl_data_source_interface.js │ │ │ ├── wl_display_interceptor.js │ │ │ ├── wl_display_interface.js │ │ │ ├── wl_drm_interceptor.js │ │ │ ├── wl_drm_interface.js │ │ │ ├── wl_keyboard_interceptor.js │ │ │ ├── wl_keyboard_interface.js │ │ │ ├── wl_output_interceptor.js │ │ │ ├── wl_output_interface.js │ │ │ ├── wl_pointer_interceptor.js │ │ │ ├── wl_pointer_interface.js │ │ │ ├── wl_region_interceptor.js │ │ │ ├── wl_region_interface.js │ │ │ ├── wl_registry_interceptor.js │ │ │ ├── wl_registry_interface.js │ │ │ ├── wl_seat_interceptor.js │ │ │ ├── wl_seat_interface.js │ │ │ ├── wl_shell_interceptor.js │ │ │ ├── wl_shell_interface.js │ │ │ ├── wl_shell_surface_interceptor.js │ │ │ ├── wl_shell_surface_interface.js │ │ │ ├── wl_shm_interceptor.js │ │ │ ├── wl_shm_interface.js │ │ │ ├── wl_shm_pool_interceptor.js │ │ │ ├── wl_shm_pool_interface.js │ │ │ ├── wl_subcompositor_interceptor.d.ts │ │ │ ├── wl_subcompositor_interceptor.js │ │ │ ├── wl_subcompositor_interface.js │ │ │ ├── wl_subsurface_interceptor.d.ts │ │ │ ├── wl_subsurface_interceptor.js │ │ │ ├── wl_subsurface_interface.js │ │ │ ├── wl_surface_interceptor.d.ts │ │ │ ├── wl_surface_interceptor.js │ │ │ ├── wl_surface_interface.js │ │ │ ├── wl_touch_interceptor.js │ │ │ ├── wl_touch_interface.js │ │ │ ├── xdg_popup_interceptor.js │ │ │ ├── xdg_popup_interface.js │ │ │ ├── xdg_positioner_interceptor.js │ │ │ ├── xdg_positioner_interface.js │ │ │ ├── xdg_surface_interceptor.js │ │ │ ├── xdg_surface_interface.js │ │ │ ├── xdg_toplevel_interceptor.js │ │ │ ├── xdg_toplevel_interface.js │ │ │ ├── xdg_wm_base_interceptor.js │ │ │ └── xdg_wm_base_interface.js │ │ └── wayland-server.ts │ └── tsconfig.json ├── compositor-shell │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── .prettierrc.cjs │ ├── index.html │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── simple-shm-web │ │ └── weston │ ├── src │ │ ├── App.tsx │ │ ├── AppBar.tsx │ │ ├── Icons.tsx │ │ ├── index.css │ │ └── index.ts │ ├── tailwind.config.js │ ├── tsconfig.json │ └── vite.config.ts └── compositor │ ├── .eslintrc.js │ ├── .gitignore │ ├── .prettierrc.js │ ├── openapitools.json │ ├── package.json │ ├── src │ ├── @types │ │ └── import-png.d.ts │ ├── AxisEvent.ts │ ├── BufferContents.ts │ ├── BufferImplementation.ts │ ├── ButtonEvent.ts │ ├── Callback.ts │ ├── Compositor.ts │ ├── DataDeviceManager.ts │ ├── DataOffer.ts │ ├── DataSource.ts │ ├── Globals.ts │ ├── ImageBitmapBuffer.ts │ ├── InputOutput.ts │ ├── InputQueue.ts │ ├── KeyEvent.ts │ ├── Keyboard.ts │ ├── Loop.ts │ ├── Output.ts │ ├── Pointer.ts │ ├── Region.ts │ ├── Seat.ts │ ├── Session.ts │ ├── Shell.ts │ ├── ShellSurface.ts │ ├── Shm.ts │ ├── Subcompositor.ts │ ├── Subsurface.ts │ ├── Surface.ts │ ├── SurfaceChild.ts │ ├── SurfaceRole.ts │ ├── Touch.ts │ ├── UserShellApi.ts │ ├── View.ts │ ├── WaylandDataSource.ts │ ├── XdgPopup.ts │ ├── XdgPositioner.ts │ ├── XdgSurface.ts │ ├── XdgToplevel.ts │ ├── XdgWmBase.ts │ ├── Xkb.ts │ ├── assets │ │ ├── e-resize.png │ │ ├── left_ptr.png │ │ ├── n-resize.png │ │ ├── ne-resize.png │ │ ├── nw-resize.png │ │ ├── s-resize.png │ │ ├── se-resize.png │ │ ├── sign_close.png │ │ ├── sign_maximize.png │ │ ├── sign_minimize.png │ │ ├── sw-resize.png │ │ └── w-resize.png │ ├── browser │ │ ├── BrowserDataSource.ts │ │ ├── BrowserTextDataSource.ts │ │ ├── attributes.ts │ │ ├── capabilities.ts │ │ ├── dnd.ts │ │ ├── input.ts │ │ ├── pointer.ts │ │ ├── selection.ts │ │ └── text-selection.ts │ ├── custom-typings.d.ts │ ├── desktop │ │ ├── AlwaysFullScreenDesktopSurface.ts │ │ ├── Desktop.ts │ │ └── FloatingDesktopSurface.ts │ ├── index.ts │ ├── math │ │ ├── Mat4.ts │ │ ├── Point.ts │ │ ├── Rect.ts │ │ ├── Size.ts │ │ ├── Transformations.ts │ │ └── Vec4.ts │ ├── polyfill │ │ └── createImageBitmap.js │ ├── remote │ │ ├── BufferStream.ts │ │ ├── Channel.ts │ │ ├── DecodedFrame.ts │ │ ├── EncodedFrame.ts │ │ ├── EncoderFeedback.ts │ │ ├── EncodingMimeTypes.ts │ │ ├── H264NALDecoder.worker.ts │ │ ├── RemoteAppLauncher.ts │ │ ├── RemoteInputOutput.ts │ │ ├── RemoteOutOfBandChannel.ts │ │ ├── StreamingBuffer.ts │ │ ├── api.ts │ │ ├── buffer-decoder.ts │ │ ├── kcp.ts │ │ ├── reconnecting-websocket.ts │ │ ├── wasm-buffer-decoder.ts │ │ ├── webcodec-buffer-decoder.ts │ │ ├── websocket-events.ts │ │ └── xwayland │ │ │ ├── CursorType.ts │ │ │ ├── XConstants.ts │ │ │ ├── XDataSource.ts │ │ │ ├── XDnDDataSource.ts │ │ │ ├── XWaylandShell.ts │ │ │ ├── XWaylandShellSurface.ts │ │ │ ├── XWindow.ts │ │ │ ├── XWindowFrame.ts │ │ │ ├── XWindowManager.ts │ │ │ └── XWindowManagerConnection.ts │ ├── render │ │ ├── Program.ts │ │ ├── RGBXandAToRGBA.ts │ │ ├── RGBandA2RGBAShader.ts │ │ ├── RenderState.ts │ │ ├── Renderer.ts │ │ ├── Scene.ts │ │ ├── SceneShader.ts │ │ ├── ShaderCompiler.ts │ │ ├── ShaderSources.ts │ │ ├── Texture.ts │ │ ├── YUV2RGBShader.ts │ │ ├── YUVA2RGBA.ts │ │ └── YUVA2RGBAShader.ts │ └── web │ │ ├── WebAppLauncher.ts │ │ ├── WebBuffersFactory.ts │ │ ├── WebConnectionHandler.ts │ │ └── WebInputOutput.ts │ └── tsconfig.json ├── protocol ├── wayland-drm.xml ├── wayland.xml ├── web-bitmapbuf-unstable-v1.xml └── xdg-shell.xml ├── publish.sh ├── sdk ├── .gitignore ├── README.md ├── build.sh ├── sdk_env.sh ├── sysrootlibs │ ├── .gitignore │ ├── cairo │ │ ├── .gitignore │ │ ├── build.sh │ │ └── changes.patch │ ├── cygepoll │ │ ├── .gitignore │ │ ├── build.sh │ │ └── changes.patch │ ├── egl-stub │ │ ├── .gitignore │ │ └── build.sh │ ├── emscripten-build.ini │ ├── epoxy-emscripten │ │ ├── .gitignore │ │ └── build.sh │ ├── expat │ │ ├── .gitignore │ │ └── build.sh │ ├── fontconfig │ │ ├── .gitignore │ │ ├── build.sh │ │ ├── changes.patch │ │ └── emscripten-build.ini │ ├── freetype │ │ ├── .gitignore │ │ └── build.sh │ ├── fribidi │ │ ├── .gitignore │ │ └── build.sh │ ├── gdk-pixbuf │ │ ├── .gitignore │ │ ├── build.sh │ │ └── changes.patch │ ├── glesv2-stub │ │ ├── .gitignore │ │ └── build.sh │ ├── glib │ │ ├── .gitignore │ │ ├── build.sh │ │ └── emscripten-build.ini │ ├── graphene │ │ ├── .gitignore │ │ └── build.sh │ ├── gtk4 │ │ ├── .gitignore │ │ ├── build.sh │ │ └── changes.patch │ ├── harfbuzz │ │ ├── .gitignore │ │ ├── build.sh │ │ ├── build_freetype_nocairo_noglib.sh │ │ └── build_nofreetype_nocairo_noglib.sh │ ├── icu │ │ ├── .gitignore │ │ └── build.sh │ ├── jpeg │ │ ├── .gitignore │ │ └── build.sh │ ├── jslibraries │ │ ├── app_template.html │ │ ├── library_unixsockfs.js │ │ └── pre-main.js │ ├── libffi │ │ ├── .gitignore │ │ └── build.sh │ ├── pango │ │ ├── .gitignore │ │ ├── build.sh │ │ ├── changes.patch │ │ └── emscripten-build.ini │ ├── pcre2 │ │ ├── .gitignore │ │ └── build.sh │ ├── pixman │ │ ├── .gitignore │ │ └── build.sh │ ├── png │ │ ├── .gitignore │ │ └── build.sh │ ├── sass │ │ ├── .gitignore │ │ └── build.sh │ ├── sassc │ │ ├── .gitignore │ │ └── build.sh │ ├── tiff4 │ │ ├── .gitignore │ │ └── build.sh │ ├── uapi-stub │ │ ├── .gitignore │ │ └── build.sh │ ├── upoll │ │ ├── .gitignore │ │ └── build.sh │ ├── wayland-protocols │ │ ├── .gitignore │ │ └── build.sh │ ├── wayland │ │ ├── .gitignore │ │ ├── build.sh │ │ └── changes.patch │ ├── xkbcommon │ │ ├── .gitignore │ │ ├── build.sh │ │ └── changes.patch │ ├── xml2 │ │ ├── .gitignore │ │ └── build.sh │ └── zlib │ │ ├── .gitignore │ │ └── build.sh └── toolkit │ ├── .gitignore │ ├── bin │ ├── gf++ │ ├── gf_file_packager │ ├── gfar │ ├── gfcc │ ├── gfnm │ ├── gfranlib │ └── wayland-scanner │ └── meson-gf-cross.ini └── yarn.lock /.gitattributes: -------------------------------------------------------------------------------- 1 | /.yarn/** linguist-vendored 2 | /.yarn/releases/* binary 3 | /.yarn/plugins/**/* binary 4 | /.pnp.* binary linguist-generated 5 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [Zubnix] 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .pnp.* 3 | .yarn/* 4 | !.yarn/patches 5 | !.yarn/plugins 6 | !.yarn/releases 7 | !.yarn/sdks 8 | !.yarn/versions 9 | node_modules 10 | token -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | compressionLevel: mixed 2 | 3 | enableGlobalCache: false 4 | 5 | nodeLinker: pnpm 6 | 7 | npmPublishAccess: public 8 | 9 | npmRegistryServer: "https://registry.npmjs.org/" 10 | 11 | yarnPath: .yarn/releases/yarn-4.5.0.cjs 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Greenfield 2 | == 3 | ### The in-browser wayland compositor 4 | 5 | Greenfield is the [Wayland compositor](https://en.wikipedia.org/wiki/Wayland_%28display_server_protocol%29) for the web. It runs native Linux applications remotely, 6 | or WebAssembly applications directly in your browser. 7 | 8 | Visit the [documentation](http://udev.be/greenfield), or have [a look on how it all began](https://wayouttheresoftware.blogspot.com/2023/07/some-history-about-greenfield.html) 9 | 10 | ![img_3.png](docs/hello.png) 11 | -------------------------------------------------------------------------------- /docker/10_nvidia.json: -------------------------------------------------------------------------------- 1 | { 2 | "file_format_version" : "1.0.0", 3 | "ICD" : { 4 | "library_path" : "libEGL_nvidia.so.0" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /docker/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | set -x 4 | 5 | tag_postfix=$(date +%Y%m%d) 6 | tag="docker.io/udevbe/compositor-proxy-cli:${tag_postfix}" 7 | 8 | docker build --pull .. -t "${tag}" -f Dockerfile 9 | printf "Build complete %s\n" "${tag}" 10 | -------------------------------------------------------------------------------- /docker/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/env bash 2 | set -e 3 | touch "$XAUTHORITY" 4 | xauth add "${HOST}":1 . "$(xxd -l 16 -p /dev/urandom)" 5 | 6 | BASEDIR=$(dirname "$0") 7 | "$BASEDIR"/compositor-proxy-cli "$@" 8 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | _site 2 | .sass-cache 3 | .jekyll-cache 4 | .jekyll-metadata 5 | vendor 6 | -------------------------------------------------------------------------------- /docs/404.html: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /404.html 3 | layout: default 4 | --- 5 | 6 | 19 | 20 |
21 |

404

22 | 23 |

Page not found :(

24 |

The requested page could not be found.

25 |
26 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | greenfield.app -------------------------------------------------------------------------------- /docs/hello.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/docs/hello.png -------------------------------------------------------------------------------- /docs/pages/components/client-generator.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Client Generator 4 | grand_parent: Components 5 | parent: Libraries 6 | nav_order: 1 7 | --- -------------------------------------------------------------------------------- /docs/pages/components/client-protocol.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Client Protocol 4 | grand_parent: Components 5 | parent: Libraries 6 | nav_order: 2 7 | --- -------------------------------------------------------------------------------- /docs/pages/components/common.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Common 4 | grand_parent: Components 5 | parent: Libraries 6 | nav_order: 3 7 | --- -------------------------------------------------------------------------------- /docs/pages/components/compositor-generator.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Compositor Generator 4 | grand_parent: Components 5 | parent: Libraries 6 | nav_order: 5 7 | --- -------------------------------------------------------------------------------- /docs/pages/components/compositor-protocol.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Compositor Protocol 4 | grand_parent: Components 5 | parent: Libraries 6 | nav_order: 6 7 | --- -------------------------------------------------------------------------------- /docs/pages/components/compositor-proxy-cli.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Compositor Proxy CLI 4 | parent: Components 5 | nav_order: 4 6 | --- -------------------------------------------------------------------------------- /docs/pages/components/compositor-proxy-generator.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Compositor Proxy Generator 4 | grand_parent: Components 5 | parent: Libraries 6 | nav_order: 7 7 | --- -------------------------------------------------------------------------------- /docs/pages/components/compositor-proxy.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Compositor Proxy 4 | parent: Components 5 | nav_order: 3 6 | --- -------------------------------------------------------------------------------- /docs/pages/components/compositor-shell.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Compositor Shell 4 | parent: Components 5 | nav_order: 2 6 | --- -------------------------------------------------------------------------------- /docs/pages/components/compositor-wasm.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: WebAssembly Ports 4 | grand_parent: Components 5 | parent: Libraries 6 | nav_order: 8 7 | --- -------------------------------------------------------------------------------- /docs/pages/components/compositor.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Compositor 4 | parent: Components 5 | nav_order: 1 6 | --- -------------------------------------------------------------------------------- /docs/pages/components/ffmpeg-h264.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: FFmpeg H.264 4 | grand_parent: Components 5 | parent: Libraries 6 | nav_order: 4 7 | --- -------------------------------------------------------------------------------- /docs/pages/components/libraries.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Libraries 4 | nav_order: 5 5 | has_children: true 6 | parent: Components 7 | has_toc: true 8 | --- 9 | 10 | Libraries 11 | ========= 12 | 13 | The core Greenfield components depend on a number of custom, purpose made libraries. 14 | Their goals, usage and build instructions can be found here. -------------------------------------------------------------------------------- /docs/pages/getting_started/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/docs/pages/getting_started/img.png -------------------------------------------------------------------------------- /docs/pages/getting_started/img_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/docs/pages/getting_started/img_1.png -------------------------------------------------------------------------------- /docs/pages/getting_started/img_1_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/docs/pages/getting_started/img_1_small.jpg -------------------------------------------------------------------------------- /docs/pages/getting_started/img_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/docs/pages/getting_started/img_2.png -------------------------------------------------------------------------------- /docs/pages/getting_started/img_2_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/docs/pages/getting_started/img_2_small.jpg -------------------------------------------------------------------------------- /docs/pages/getting_started/img_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/docs/pages/getting_started/img_3.png -------------------------------------------------------------------------------- /docs/pages/getting_started/img_3_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/docs/pages/getting_started/img_3_small.jpg -------------------------------------------------------------------------------- /docs/pages/getting_started/img_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/docs/pages/getting_started/img_small.jpg -------------------------------------------------------------------------------- /examples/compositor/experimental-fullscreen/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | -------------------------------------------------------------------------------- /examples/compositor/experimental-fullscreen/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | New Application 6 | 7 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /examples/compositor/experimental-fullscreen/public/GTK_logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /examples/compositor/experimental-fullscreen/public/app.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gtk4-demo", 3 | "display": "standalone", 4 | "start_url": ".", 5 | "icons": [ 6 | { 7 | "src": "GTK_logo.svg", 8 | "sizes": "any" 9 | } 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/compositor/experimental-fullscreen/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "Node16", 4 | "target": "es2018", 5 | "module": "esnext", 6 | "esModuleInterop": true, 7 | "strict": true, 8 | "sourceMap": true, 9 | "outDir": "dist", 10 | "lib": [ 11 | "dom", 12 | "dom.iterable", 13 | "esnext" 14 | ] 15 | }, 16 | "include": ["src"] 17 | } 18 | -------------------------------------------------------------------------------- /examples/compositor/experimental-fullscreen/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | 3 | export default defineConfig({ 4 | base: "./", 5 | server: { 6 | host: 'localhost', 7 | port: 8080, 8 | strictPort: true, 9 | cors: false, 10 | headers: { 11 | 'Cross-Origin-Opener-Policy': 'same-origin', 12 | 'Cross-Origin-Embedder-Policy': 'require-corp', 13 | }, 14 | } 15 | }); 16 | -------------------------------------------------------------------------------- /examples/docker-compose/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM udevbe/compositor-proxy-cli:20231106 2 | 3 | RUN apt-get update && apt-get install -y \ 4 | mesa-utils \ 5 | gtk-3-examples \ 6 | gtk-4-examples \ 7 | xterm \ 8 | && rm -rf /var/lib/apt/lists/* 9 | -------------------------------------------------------------------------------- /examples/docker-compose/applications.json: -------------------------------------------------------------------------------- 1 | { 2 | "/glxgears": { 3 | "name": "GLX Gears", 4 | "executable": "glxgears", 5 | "args": [], 6 | "env": {} 7 | }, 8 | "/gtk3demo": { 9 | "name": "GTK3 Demo", 10 | "executable": "gtk3-demo", 11 | "args": [], 12 | "env": {} 13 | }, 14 | "/gtk4demo": { 15 | "name": "GTK4 Demo", 16 | "executable": "gtk4-demo", 17 | "args": [], 18 | "env": {} 19 | }, 20 | "/xterm": { 21 | "name": "XTerm", 22 | "executable": "xterm", 23 | "args": [], 24 | "env": {} 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/.gitignore: -------------------------------------------------------------------------------- 1 | build -------------------------------------------------------------------------------- /examples/sdk/gtk4/README.md: -------------------------------------------------------------------------------- 1 | Currently broken because of a stack overflow bug. If you're feeling adventurous you can enable the gtk4 build in the sdk and gives this example a try. -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/constraint-editor/constraint-editor.css: -------------------------------------------------------------------------------- 1 | constraintview { 2 | background: black; 3 | color: white; 4 | } 5 | 6 | constraintview .child { 7 | background: red; 8 | } 9 | 10 | constraintview .guide { 11 | background: blue; 12 | } 13 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/constraint-editor/constraint-editor.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | constraint-editor-window.ui 5 | constraint-editor.ui 6 | guide-editor.ui 7 | constraint-editor.css 8 | 9 | 10 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/alias_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/alias_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/all_scroll_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/all_scroll_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/alphatest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/alphatest.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/apple-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/apple-red.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/background.jpg -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/bbb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/bbb.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/blends.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/blends.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/brick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/brick.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/brick2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/brick2.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/cell_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/cell_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/cmy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/cmy.jpg -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/col_resize_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/col_resize_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/context_menu_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/context_menu_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/copy_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/copy_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/crosshair_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/crosshair_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/decor1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/decor1.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/decor2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/decor2.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/default_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/default_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/demo2widget.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #define DEMO2_TYPE_WIDGET (demo2_widget_get_type ()) 6 | G_DECLARE_FINAL_TYPE (Demo2Widget, demo2_widget, DEMO2, WIDGET, GtkWidget) 7 | 8 | GtkWidget * demo2_widget_new (void); 9 | 10 | void demo2_widget_add_child (Demo2Widget *self, 11 | GtkWidget *child); 12 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/demo3widget.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #define DEMO3_TYPE_WIDGET (demo3_widget_get_type ()) 6 | G_DECLARE_FINAL_TYPE (Demo3Widget, demo3_widget, DEMO3, WIDGET, GtkWidget) 7 | 8 | GtkWidget * demo3_widget_new (const char *resource); 9 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/demo4widget.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #define DEMO4_TYPE_WIDGET (demo4_widget_get_type ()) 6 | G_DECLARE_FINAL_TYPE (Demo4Widget, demo4_widget, DEMO4, WIDGET, GtkWidget) 7 | 8 | GtkWidget * demo4_widget_new (void); 9 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/demochild.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #define DEMO_TYPE_CHILD (demo_child_get_type ()) 6 | G_DECLARE_FINAL_TYPE (DemoChild, demo_child, DEMO, CHILD, GtkWidget) 7 | 8 | GtkWidget * demo_child_new (const char *color); 9 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/demoimage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | G_BEGIN_DECLS 6 | 7 | #define DEMO_TYPE_IMAGE (demo_image_get_type ()) 8 | 9 | G_DECLARE_FINAL_TYPE(DemoImage, demo_image, DEMO, IMAGE, GtkWidget) 10 | 11 | GtkWidget * demo_image_new (const char *icon_name); 12 | 13 | G_END_DECLS 14 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/demolayout.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #define DEMO_TYPE_LAYOUT (demo_layout_get_type ()) 6 | 7 | G_DECLARE_FINAL_TYPE (DemoLayout, demo_layout, DEMO, LAYOUT, GtkLayoutManager) 8 | 9 | GtkLayoutManager * demo_layout_new (void); 10 | 11 | void demo_layout_set_position (DemoLayout *layout, 12 | float position); 13 | void demo_layout_shuffle (DemoLayout *layout); 14 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/demowidget.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #define DEMO_TYPE_WIDGET (demo_widget_get_type ()) 6 | G_DECLARE_FINAL_TYPE (DemoWidget, demo_widget, DEMO, WIDGET, GtkWidget) 7 | 8 | GtkWidget * demo_widget_new (void); 9 | 10 | void demo_widget_add_child (DemoWidget *self, 11 | GtkWidget *child); 12 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/ducky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/ducky.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/e_resize_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/e_resize_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/ew_resize_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/ew_resize_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/floppybuddy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/floppybuddy.gif -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/fontify.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | void fontify (const char *format, 6 | GtkTextBuffer *buffer); 7 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/four_point_transform.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | void perspective_3d (graphene_point3d_t *p1, 6 | graphene_point3d_t *p2, 7 | graphene_point3d_t *p3, 8 | graphene_point3d_t *p4, 9 | graphene_point3d_t *q1, 10 | graphene_point3d_t *q2, 11 | graphene_point3d_t *q3, 12 | graphene_point3d_t *q4, 13 | graphene_matrix_t *m); 14 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/glarea-gl.fs.glsl: -------------------------------------------------------------------------------- 1 | #version 330 2 | 3 | out vec4 outputColor; 4 | 5 | void main() { 6 | float lerpVal = gl_FragCoord.y / 500.0f; 7 | 8 | outputColor = mix(vec4(1.0f, 0.85f, 0.35f, 1.0f), vec4(0.2f, 0.2f, 0.2f, 1.0f), lerpVal); 9 | } 10 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/glarea-gl.vs.glsl: -------------------------------------------------------------------------------- 1 | #version 330 2 | 3 | layout(location = 0) in vec4 position; 4 | uniform mat4 mvp; 5 | 6 | void main() { 7 | gl_Position = mvp * position; 8 | } 9 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/glarea-gles.fs.glsl: -------------------------------------------------------------------------------- 1 | precision highp float; 2 | 3 | void main() { 4 | float lerpVal = gl_FragCoord.y / 500.0; 5 | 6 | gl_FragColor = mix(vec4(1.0, 0.85, 0.35, 1.0), vec4(0.2, 0.2, 0.2, 1.0), lerpVal); 7 | } 8 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/glarea-gles.vs.glsl: -------------------------------------------------------------------------------- 1 | attribute vec4 position; 2 | 3 | uniform mat4 mvp; 4 | 5 | void main() { 6 | gl_Position = mvp * position; 7 | } 8 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/gnome-applets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/gnome-applets.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/gnome-calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/gnome-calendar.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/gnome-foot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/gnome-foot.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/gnome-fs-directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/gnome-fs-directory.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/gnome-fs-regular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/gnome-fs-regular.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/gnome-gimp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/gnome-gimp.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/gnome-gmush.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/gnome-gmush.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/gnome-gsame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/gnome-gsame.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/gnu-keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/gnu-keys.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/grab_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/grab_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/grabbing_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/grabbing_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/gtk-logo.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/gtk-logo.webm -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/gtk_logo_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/gtk_logo_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/hand_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/hand_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/help_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/help_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/hsla.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | typedef struct _GdkHSLA GdkHSLA; 4 | 5 | struct _GdkHSLA { 6 | float hue; 7 | float saturation; 8 | float lightness; 9 | float alpha; 10 | }; 11 | 12 | void hsla_init_from_rgba (GdkHSLA *hsla, 13 | const GdkRGBA *rgba); 14 | void rgba_init_from_hsla (GdkRGBA *rgba, 15 | const GdkHSLA *hsla); 16 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/application-exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/application-exit.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/document-edit-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/document-edit-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/document-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/document-new.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/document-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/document-open.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/document-save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/document-save.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/edit-copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/edit-copy.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/edit-cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/edit-cut.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/edit-paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/edit-paste.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/go-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/go-home.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/go-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/go-up.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/mail-send-receive-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/mail-send-receive-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/process-stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/process-stop.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/view-fullscreen-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/actions/view-fullscreen-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/categories/applications-other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/categories/applications-other.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/emotes/face-cool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/emotes/face-cool.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/emotes/face-laugh-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/emotes/face-laugh-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/16x16/status/battery-caution-charging-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/16x16/status/battery-caution-charging-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/icons/48x48/status/starred.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/icons/48x48/status/starred.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/language-names.h: -------------------------------------------------------------------------------- 1 | #ifndef LANGUAGE_NAMES_H 2 | #define LANGUAGE_NAMES_H 3 | 4 | #include 5 | 6 | G_BEGIN_DECLS 7 | 8 | const char * get_language_name (PangoLanguage *language); 9 | const char * get_language_name_for_tag (guint32 tag); 10 | 11 | G_END_DECLS 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/listview_colors.css: -------------------------------------------------------------------------------- 1 | .view.compact > child { 2 | padding: 1px; 3 | } 4 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/listview_filebrowser.css: -------------------------------------------------------------------------------- 1 | listview.viewswitcher { 2 | border: 1px solid gray; 3 | } 4 | 5 | listview.viewswitcher > row { 6 | padding: 5px; 7 | } 8 | 9 | listview.viewswitcher row:selected { 10 | background: gray; 11 | } 12 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/listview_minesweeper_cell.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | 17 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/move_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/move_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/n_resize_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/n_resize_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/ne_resize_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/ne_resize_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/nesw_resize_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/nesw_resize_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/no_drop_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/no_drop_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/none_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/none_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/not_allowed_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/not_allowed_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/ns_resize_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/ns_resize_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/nw_resize_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/nw_resize_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/nwse_resize_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/nwse_resize_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/org.gtk.Demo4.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=GTK Demo 3 | Comment=GTK code examples and demonstrations 4 | Exec=gtk4-demo 5 | Icon=org.gtk.Demo4 6 | Terminal=false 7 | Type=Application 8 | StartupNotify=true 9 | Categories=Development;GTK; 10 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/pixbufpaintable.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | G_BEGIN_DECLS 6 | 7 | #define PIXBUF_TYPE_PAINTABLE (pixbuf_paintable_get_type ()) 8 | 9 | G_DECLARE_FINAL_TYPE(PixbufPaintable, pixbuf_paintable, PIXBUF, PAINTABLE, GObject) 10 | 11 | GdkPaintable * pixbuf_paintable_new_from_resource (const char *path); 12 | 13 | G_END_DECLS 14 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/pointer_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/pointer_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/portland-rose.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/portland-rose.jpg -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/progress_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/progress_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/reset.css: -------------------------------------------------------------------------------- 1 | /* @import this colorsheet to get the default values for every property. 2 | * This is useful when writing special CSS tests that should not be 3 | * inluenced by themes - not even the default ones. 4 | * Keep in mind that the output will be very ugly and not look like 5 | * anything GTK. 6 | * Also, when adding new style properties, please add them here. 7 | */ 8 | 9 | * { 10 | all: unset; 11 | } 12 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/row_resize_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/row_resize_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/s_resize_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/s_resize_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/script-names.h: -------------------------------------------------------------------------------- 1 | #ifndef SCRIPT_NAMES_H 2 | #define SCRIPT_NAMES_H 3 | 4 | #include 5 | 6 | G_BEGIN_DECLS 7 | 8 | const char * get_script_name (GUnicodeScript script); 9 | const char * get_script_name_for_tag (guint32 tag); 10 | 11 | G_END_DECLS 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/se_resize_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/se_resize_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/svgpaintable.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | G_BEGIN_DECLS 6 | 7 | #define SVG_TYPE_PAINTABLE (svg_paintable_get_type ()) 8 | 9 | G_DECLARE_FINAL_TYPE (SvgPaintable, svg_paintable, SVG, PAINTABLE, GObject) 10 | 11 | GdkPaintable * svg_paintable_new (GFile *file); 12 | 13 | G_END_DECLS 14 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/sw_resize_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/sw_resize_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/tagstyle.css: -------------------------------------------------------------------------------- 1 | tag { 2 | margin: 4px 0px; 3 | padding: 4px; 4 | border-radius: 4px; 5 | background: lightskyblue; 6 | } 7 | tag box { 8 | border-spacing: 4px; 9 | } 10 | tag label, 11 | tag image { 12 | color: white; 13 | } 14 | tag button { 15 | min-height: 0; 16 | min-width: 0; 17 | padding: 0; 18 | border: 1px solid white; 19 | } 20 | 21 | entry.tagged { 22 | border-spacing: 4px; 23 | } 24 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/text_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/text_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/ucdnames.data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/ucdnames.data -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/unicode-names.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | const char * get_unicode_type_name (GUnicodeType type); 6 | const char * get_break_type_name (GUnicodeBreakType type); 7 | const char * get_combining_class_name (int cclass); 8 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/vertical_text_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/vertical_text_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/w_resize_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/w_resize_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/wait_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/wait_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/zoom_in_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/zoom_in_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/gtk-demo/zoom_out_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/gtk-demo/zoom_out_cursor.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/icon-browser/iconbrowser.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | window.ui 5 | icon.list 6 | 7 | 8 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/icon-browser/iconbrowserapp.h: -------------------------------------------------------------------------------- 1 | #ifndef __ICON_BROWSER_APP_H 2 | #define __ICON_BROWSER_APP_H 3 | 4 | #include 5 | 6 | 7 | #define ICON_BROWSER_APP_TYPE (icon_browser_app_get_type ()) 8 | #define ICON_BROWSER_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ICON_BROWSER_APP_TYPE, IconBrowserApp)) 9 | 10 | 11 | typedef struct _IconBrowserApp IconBrowserApp; 12 | typedef struct _IconBrowserAppClass IconBrowserAppClass; 13 | 14 | 15 | GType icon_browser_app_get_type (void); 16 | IconBrowserApp *icon_browser_app_new (void); 17 | 18 | 19 | #endif /* __ICON_BROWSER_APP_H */ 20 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/icon-browser/iconbrowsercontext.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #define IB_TYPE_CONTEXT (ib_context_get_type ()) 6 | G_DECLARE_FINAL_TYPE (IbContext, ib_context, IB, CONTEXT, GObject) 7 | 8 | IbContext *ib_context_new (const char *id, 9 | const char *name, 10 | const char *description); 11 | 12 | const char *ib_context_get_id (IbContext *context); 13 | const char *ib_context_get_name (IbContext *context); 14 | const char *ib_context_get_description (IbContext *context); 15 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/icon-browser/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int 5 | main (int argc, char *argv[]) 6 | { 7 | return g_application_run (G_APPLICATION (icon_browser_app_new ()), argc, argv); 8 | } 9 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/icon-browser/org.gtk.IconBrowser4.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Icon Browser 3 | Comment=An application that shows themed icons 4 | Exec=gtk4-icon-browser 5 | Icon=org.gtk.IconBrowser4 6 | Terminal=false 7 | Type=Application 8 | StartupNotify=true 9 | Categories=Development;GTK; 10 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/node-editor/gsk/gskrendernodeparserprivate.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __GSK_RENDER_NODE_PARSER_PRIVATE_H__ 3 | #define __GSK_RENDER_NODE_PARSER_PRIVATE_H__ 4 | 5 | #include "gskrendernode.h" 6 | 7 | GskRenderNode * gsk_render_node_deserialize_from_bytes (GBytes *bytes, 8 | GskParseErrorFunc error_func, 9 | gpointer user_data); 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/node-editor/node-editor.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | node-editor-window.ui 5 | help-window.ui 6 | node-format.md 7 | data/scalable/apps/org.gtk.gtk4.NodeEditor.svg 8 | 9 | 10 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/node-editor/org.gtk.gtk4.NodeEditor.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Node Editor 3 | Comment=An application that edits render nodes 4 | Exec=gtk4-node-editor 5 | Icon=org.gtk.gtk4.NodeEditor 6 | Terminal=false 7 | Type=Application 8 | StartupNotify=true 9 | Categories=Development;GTK; 10 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/print-editor/org.gtk.PrintEditor4.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Print Editor 3 | Comment=A simple editor demonstrating GTK printing 4 | Exec=gtk4-print-editor %f 5 | Icon=org.gtk.PrintEditor4 6 | Terminal=false 7 | Type=Application 8 | StartupNotify=true 9 | Categories=Development;GTK; 10 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/beach.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/beach.jpg -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/gtk-logo.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/gtk-logo.webm -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/call-start-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/call-start-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/call-stop-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/call-stop-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/document-new-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/document-new-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/document-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/document-new.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/document-save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/document-save.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/document-send-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/document-send-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/edit-find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/edit-find.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-indent-less-symbolic-rtl.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-indent-less-symbolic-rtl.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-indent-less-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-indent-less-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-indent-more-symbolic-rtl.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-indent-more-symbolic-rtl.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-indent-more-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-indent-more-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-justify-center-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-justify-center-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-justify-fill-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-justify-fill-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-justify-left-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-justify-left-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-justify-right-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/format-justify-right-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/insert-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/insert-image.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/insert-link-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/insert-link-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/send-to-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/send-to-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/star-new-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/star-new-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/view-continuous-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/view-continuous-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/view-dual-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/view-dual-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/view-fullscreen-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/view-fullscreen-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/view-grid-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/view-grid-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/view-paged-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/view-paged-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/zoom-in-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/zoom-in-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/zoom-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/zoom-in.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/zoom-original-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/zoom-original-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/zoom-original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/zoom-original.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/zoom-out-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/zoom-out-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/zoom-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/actions/zoom-out.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/apps/preferences-desktop-locale-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/apps/preferences-desktop-locale-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/audio-headphones-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/audio-headphones-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/audio-input-microphone-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/audio-input-microphone-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/audio-speakers-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/audio-speakers-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/camera-photo-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/camera-photo-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/camera-web-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/camera-web-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/drive-optical-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/drive-optical-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/network-wired-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/network-wired-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/network-wireless-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/network-wireless-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/phone-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/devices/phone-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/emblems/emblem-default-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/emblems/emblem-default-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/emblems/emblem-shared-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/emblems/emblem-shared-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/emotes/face-monkey-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/emotes/face-monkey-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/appointment-soon-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/appointment-soon-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/microphone-sensitivity-high-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/microphone-sensitivity-high-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/microphone-sensitivity-low-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/microphone-sensitivity-low-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/microphone-sensitivity-medium-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/microphone-sensitivity-medium-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/microphone-sensitivity-muted-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/microphone-sensitivity-muted-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/weather-clear-night-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/weather-clear-night-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/weather-few-clouds-night-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/weather-few-clouds-night-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/weather-fog-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/weather-fog-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/weather-overcast-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/weather-overcast-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/weather-severe-alert-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/weather-severe-alert-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/weather-showers-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/weather-showers-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/weather-snow-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/icons/16x16/status/weather-snow-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/scalable/actions/format-indent-less-symbolic-rtl.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/scalable/actions/format-indent-more-symbolic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/scalable/actions/format-justify-center-symbolic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/scalable/actions/format-justify-fill-symbolic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/scalable/actions/format-justify-left-symbolic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/scalable/actions/format-justify-right-symbolic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/scalable/actions/star-new-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/scalable/actions/zoom-in-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/scalable/actions/zoom-original-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/scalable/actions/zoom-out-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/scalable/devices/audio-speakers-symbolic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/scalable/devices/camera-photo-symbolic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/icons/scalable/devices/camera-web-symbolic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/nyc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/nyc.jpg -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/org.gtk.WidgetFactory4.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Widget Factory 3 | Comment=A showcase for GTK widgets, designed for testing themes. 4 | Exec=gtk4-widget-factory 5 | Icon=org.gtk.WidgetFactory4 6 | Terminal=false 7 | Type=Application 8 | StartupNotify=true 9 | Categories=Development;GTK; 10 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/portland-rose.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/portland-rose.jpg -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/sunset.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/demos/widget-factory/sunset.jpg -------------------------------------------------------------------------------- /examples/sdk/gtk4/demos/widget-factory/widget-factory.css: -------------------------------------------------------------------------------- 1 | .small-button { 2 | padding: 0; 3 | outline-width: 0; 4 | } 5 | 6 | .toolbar { 7 | -gtk-icon-style: symbolic; 8 | } 9 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application1/Makefile.example: -------------------------------------------------------------------------------- 1 | CC ?= gcc 2 | PKGCONFIG = $(shell which pkg-config) 3 | CFLAGS = $(shell $(PKGCONFIG) --cflags gtk4) 4 | LIBS = $(shell $(PKGCONFIG) --libs gtk4) 5 | 6 | SRC = main.c exampleapp.c exampleappwin.c 7 | 8 | OBJS = $(SRC:.c=.o) 9 | 10 | all: exampleapp 11 | 12 | %.o: %.c 13 | $(CC) -c -o $(@F) $(CFLAGS) $< 14 | 15 | exampleapp: $(OBJS) 16 | $(CC) -o $(@F) $(OBJS) $(LIBS) 17 | 18 | clean: 19 | rm -f $(OBJS) 20 | rm -f exampleapp 21 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application1/README: -------------------------------------------------------------------------------- 1 | Step 1: A trivial application 2 | 3 | To make gnome-shell use the desktop file and icon for this example 4 | while running it uninstalled, do the following: 5 | 6 | mkdir -p ~/.local/share/applications 7 | sed -e "s#@bindir@#$PWD#" org.gtk.exampleapp.desktop \ 8 | > ~/.local/share/applications/org.gtk.exampleapp.desktop 9 | 10 | mkdir -p ~/.local/share/icons/hicolor/48x48/apps 11 | cp exampleapp.png ~/.local/share/icons/hicolor/48x48/apps 12 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application1/exampleapp.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPP_H 2 | #define __EXAMPLEAPP_H 3 | 4 | #include 5 | 6 | 7 | #define EXAMPLE_APP_TYPE (example_app_get_type ()) 8 | G_DECLARE_FINAL_TYPE (ExampleApp, example_app, EXAMPLE, APP, GtkApplication) 9 | 10 | ExampleApp *example_app_new (void); 11 | 12 | 13 | #endif /* __EXAMPLEAPP_H */ 14 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application1/exampleapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/examples/application1/exampleapp.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application1/exampleappwin.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPPWIN_H 2 | #define __EXAMPLEAPPWIN_H 3 | 4 | #include 5 | #include "exampleapp.h" 6 | 7 | 8 | #define EXAMPLE_APP_WINDOW_TYPE (example_app_window_get_type ()) 9 | G_DECLARE_FINAL_TYPE (ExampleAppWindow, example_app_window, EXAMPLE, APP_WINDOW, GtkApplicationWindow) 10 | 11 | 12 | ExampleAppWindow *example_app_window_new (ExampleApp *app); 13 | void example_app_window_open (ExampleAppWindow *win, 14 | GFile *file); 15 | 16 | 17 | #endif /* __EXAMPLEAPPWIN_H */ 18 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application1/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "exampleapp.h" 4 | 5 | int 6 | main (int argc, char *argv[]) 7 | { 8 | return g_application_run (G_APPLICATION (example_app_new ()), argc, argv); 9 | } 10 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application1/meson.build: -------------------------------------------------------------------------------- 1 | executable('exampleapp', 2 | 'exampleapp.c', 'exampleappwin.c', 'main.c', 3 | dependencies: libgtk_dep, 4 | c_args: common_cflags, 5 | name_suffix: 'html') 6 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application1/org.gtk.exampleapp.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Name=Example 4 | Icon=exampleapp 5 | StartupNotify=true 6 | Exec=@bindir@/exampleapp 7 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application2/README: -------------------------------------------------------------------------------- 1 | Step 2: Populating the window 2 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application2/exampleapp.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | window.ui 5 | 6 | 7 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application2/exampleapp.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPP_H 2 | #define __EXAMPLEAPP_H 3 | 4 | #include 5 | 6 | 7 | #define EXAMPLE_APP_TYPE (example_app_get_type ()) 8 | G_DECLARE_FINAL_TYPE (ExampleApp, example_app, EXAMPLE, APP, GtkApplication) 9 | 10 | 11 | ExampleApp *example_app_new (void); 12 | 13 | 14 | #endif /* __EXAMPLEAPP_H */ 15 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application2/exampleappwin.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPPWIN_H 2 | #define __EXAMPLEAPPWIN_H 3 | 4 | #include 5 | #include "exampleapp.h" 6 | 7 | 8 | #define EXAMPLE_APP_WINDOW_TYPE (example_app_window_get_type ()) 9 | G_DECLARE_FINAL_TYPE (ExampleAppWindow, example_app_window, EXAMPLE, APP_WINDOW, GtkApplicationWindow) 10 | 11 | 12 | ExampleAppWindow *example_app_window_new (ExampleApp *app); 13 | void example_app_window_open (ExampleAppWindow *win, 14 | GFile *file); 15 | 16 | 17 | #endif /* __EXAMPLEAPPWIN_H */ 18 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application2/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "exampleapp.h" 4 | 5 | int 6 | main (int argc, char *argv[]) 7 | { 8 | return g_application_run (G_APPLICATION (example_app_new ()), argc, argv); 9 | } 10 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application2/meson.build: -------------------------------------------------------------------------------- 1 | app2_resources = gnome.compile_resources('exampleapp2_resources', 2 | 'exampleapp.gresource.xml', 3 | source_dir: meson.current_source_dir()) 4 | 5 | executable('exampleapp2', 6 | 'exampleapp.c', 'exampleappwin.c', 'main.c', app2_resources, 7 | dependencies: libgtk_dep, 8 | c_args: common_cflags, 9 | name_suffix: 'html') 10 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application2/window.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | 17 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application3/README: -------------------------------------------------------------------------------- 1 | Step 3: Opening files, add a stack switcher 2 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application3/exampleapp.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | window.ui 5 | 6 | 7 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application3/exampleapp.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPP_H 2 | #define __EXAMPLEAPP_H 3 | 4 | #include 5 | 6 | 7 | #define EXAMPLE_APP_TYPE (example_app_get_type ()) 8 | G_DECLARE_FINAL_TYPE (ExampleApp, example_app, EXAMPLE, APP, GtkApplication) 9 | 10 | 11 | ExampleApp *example_app_new (void); 12 | 13 | 14 | #endif /* __EXAMPLEAPP_H */ 15 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application3/exampleappwin.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPPWIN_H 2 | #define __EXAMPLEAPPWIN_H 3 | 4 | #include 5 | #include "exampleapp.h" 6 | 7 | 8 | #define EXAMPLE_APP_WINDOW_TYPE (example_app_window_get_type ()) 9 | G_DECLARE_FINAL_TYPE (ExampleAppWindow, example_app_window, EXAMPLE, APP_WINDOW, GtkApplicationWindow) 10 | 11 | 12 | ExampleAppWindow *example_app_window_new (ExampleApp *app); 13 | void example_app_window_open (ExampleAppWindow *win, 14 | GFile *file); 15 | 16 | 17 | #endif /* __EXAMPLEAPPWIN_H */ 18 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application3/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "exampleapp.h" 4 | 5 | int 6 | main (int argc, char *argv[]) 7 | { 8 | return g_application_run (G_APPLICATION (example_app_new ()), argc, argv); 9 | } 10 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application3/meson.build: -------------------------------------------------------------------------------- 1 | app3_resources = gnome.compile_resources('exampleapp3_resources', 2 | 'exampleapp.gresource.xml', 3 | source_dir: meson.current_source_dir()) 4 | 5 | executable('exampleapp3', 6 | 'exampleapp.c', 'exampleappwin.c', 'main.c', app3_resources, 7 | dependencies: libgtk_dep, 8 | c_args: common_cflags, 9 | name_suffix: 'html') 10 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application4/README: -------------------------------------------------------------------------------- 1 | Step 4: Add a menu 2 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application4/exampleapp.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | window.ui 5 | gears-menu.ui 6 | 7 | 8 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application4/exampleapp.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPP_H 2 | #define __EXAMPLEAPP_H 3 | 4 | #include 5 | 6 | 7 | #define EXAMPLE_APP_TYPE (example_app_get_type ()) 8 | G_DECLARE_FINAL_TYPE (ExampleApp, example_app, EXAMPLE, APP, GtkApplication) 9 | 10 | 11 | ExampleApp *example_app_new (void); 12 | 13 | 14 | #endif /* __EXAMPLEAPP_H */ 15 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application4/exampleappwin.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPPWIN_H 2 | #define __EXAMPLEAPPWIN_H 3 | 4 | #include 5 | #include "exampleapp.h" 6 | 7 | 8 | #define EXAMPLE_APP_WINDOW_TYPE (example_app_window_get_type ()) 9 | G_DECLARE_FINAL_TYPE (ExampleAppWindow, example_app_window, EXAMPLE, APP_WINDOW, GtkApplicationWindow) 10 | 11 | 12 | ExampleAppWindow *example_app_window_new (ExampleApp *app); 13 | void example_app_window_open (ExampleAppWindow *win, 14 | GFile *file); 15 | 16 | 17 | #endif /* __EXAMPLEAPPWIN_H */ 18 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application4/gears-menu.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | _Preferences 7 | app.preferences 8 | 9 |
10 |
11 | 12 | _Quit 13 | app.quit 14 | 15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application4/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "exampleapp.h" 4 | 5 | int 6 | main (int argc, char *argv[]) 7 | { 8 | return g_application_run (G_APPLICATION (example_app_new ()), argc, argv); 9 | } 10 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application4/meson.build: -------------------------------------------------------------------------------- 1 | app4_resources = gnome.compile_resources('exampleapp4_resources', 2 | 'exampleapp.gresource.xml', 3 | source_dir: meson.current_source_dir()) 4 | 5 | executable('exampleapp4', 6 | 'exampleapp.c', 'exampleappwin.c', 'main.c', app4_resources, 7 | dependencies: libgtk_dep, 8 | c_args: common_cflags, 9 | name_suffix: 'html') 10 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application5/exampleapp.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | window.ui 5 | gears-menu.ui 6 | 7 | 8 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application5/exampleapp.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPP_H 2 | #define __EXAMPLEAPP_H 3 | 4 | #include 5 | 6 | 7 | #define EXAMPLE_APP_TYPE (example_app_get_type ()) 8 | G_DECLARE_FINAL_TYPE (ExampleApp, example_app, EXAMPLE, APP, GtkApplication) 9 | 10 | 11 | ExampleApp *example_app_new (void); 12 | 13 | 14 | #endif /* __EXAMPLEAPP_H */ 15 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application5/exampleappwin.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPPWIN_H 2 | #define __EXAMPLEAPPWIN_H 3 | 4 | #include 5 | #include "exampleapp.h" 6 | 7 | 8 | #define EXAMPLE_APP_WINDOW_TYPE (example_app_window_get_type ()) 9 | G_DECLARE_FINAL_TYPE (ExampleAppWindow, example_app_window, EXAMPLE, APP_WINDOW, GtkApplicationWindow) 10 | 11 | 12 | ExampleAppWindow *example_app_window_new (ExampleApp *app); 13 | void example_app_window_open (ExampleAppWindow *win, 14 | GFile *file); 15 | 16 | 17 | #endif /* __EXAMPLEAPPWIN_H */ 18 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application5/gears-menu.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | _Preferences 7 | app.preferences 8 | 9 |
10 |
11 | 12 | _Quit 13 | app.quit 14 | 15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application5/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "exampleapp.h" 4 | 5 | int 6 | main (int argc, char *argv[]) 7 | { 8 | /* Since this example is running uninstalled, 9 | * we have to help it find its schema. This 10 | * is *not* necessary in properly installed 11 | * application. 12 | */ 13 | g_setenv ("GSETTINGS_SCHEMA_DIR", ".", FALSE); 14 | 15 | return g_application_run (G_APPLICATION (example_app_new ()), argc, argv); 16 | } 17 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application5/meson.build: -------------------------------------------------------------------------------- 1 | app5_resources = gnome.compile_resources('exampleapp5_resources', 2 | 'exampleapp.gresource.xml', 3 | source_dir: meson.current_source_dir()) 4 | 5 | app5_schemas = gnome.compile_schemas() 6 | 7 | executable('exampleapp5', 8 | 'exampleapp.c', 'exampleappwin.c', 'main.c', app5_resources, app5_schemas, 9 | dependencies: libgtk_dep, 10 | c_args: common_cflags, 11 | name_suffix: 'html') 12 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application6/exampleapp.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | window.ui 5 | gears-menu.ui 6 | prefs.ui 7 | 8 | 9 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application6/exampleapp.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPP_H 2 | #define __EXAMPLEAPP_H 3 | 4 | #include 5 | 6 | 7 | #define EXAMPLE_APP_TYPE (example_app_get_type ()) 8 | G_DECLARE_FINAL_TYPE (ExampleApp, example_app, EXAMPLE, APP, GtkApplication) 9 | 10 | 11 | ExampleApp *example_app_new (void); 12 | 13 | 14 | #endif /* __EXAMPLEAPP_H */ 15 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application6/exampleappprefs.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPPPREFS_H 2 | #define __EXAMPLEAPPPREFS_H 3 | 4 | #include 5 | #include "exampleappwin.h" 6 | 7 | 8 | #define EXAMPLE_APP_PREFS_TYPE (example_app_prefs_get_type ()) 9 | G_DECLARE_FINAL_TYPE (ExampleAppPrefs, example_app_prefs, EXAMPLE, APP_PREFS, GtkDialog) 10 | 11 | 12 | ExampleAppPrefs *example_app_prefs_new (ExampleAppWindow *win); 13 | 14 | 15 | #endif /* __EXAMPLEAPPPREFS_H */ 16 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application6/gears-menu.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | _Preferences 7 | app.preferences 8 | 9 |
10 |
11 | 12 | _Quit 13 | app.quit 14 | 15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application6/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "exampleapp.h" 4 | 5 | int 6 | main (int argc, char *argv[]) 7 | { 8 | /* Since this example is running uninstalled, 9 | * we have to help it find its schema. This 10 | * is *not* necessary in properly installed 11 | * application. 12 | */ 13 | g_setenv ("GSETTINGS_SCHEMA_DIR", ".", FALSE); 14 | 15 | return g_application_run (G_APPLICATION (example_app_new ()), argc, argv); 16 | } 17 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application6/meson.build: -------------------------------------------------------------------------------- 1 | app6_resources = gnome.compile_resources('exampleapp6_resources', 2 | 'exampleapp.gresource.xml', 3 | source_dir: meson.current_source_dir()) 4 | 5 | app6_schemas = gnome.compile_schemas() 6 | 7 | executable('exampleapp6', 8 | 'exampleapp.c', 9 | 'exampleappwin.c', 10 | 'main.c', 11 | 'exampleappprefs.c', 12 | app6_resources, 13 | app6_schemas, 14 | dependencies: libgtk_dep, 15 | c_args: common_cflags, 16 | name_suffix: 'html') 17 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application7/README: -------------------------------------------------------------------------------- 1 | Step 7: A search bar 2 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application7/exampleapp.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | window.ui 5 | gears-menu.ui 6 | prefs.ui 7 | 8 | 9 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application7/exampleapp.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPP_H 2 | #define __EXAMPLEAPP_H 3 | 4 | #include 5 | 6 | 7 | #define EXAMPLE_APP_TYPE (example_app_get_type ()) 8 | G_DECLARE_FINAL_TYPE (ExampleApp, example_app, EXAMPLE, APP, GtkApplication) 9 | 10 | 11 | ExampleApp *example_app_new (void); 12 | 13 | 14 | #endif /* __EXAMPLEAPP_H */ 15 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application7/exampleappprefs.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPPPREFS_H 2 | #define __EXAMPLEAPPPREFS_H 3 | 4 | #include 5 | #include "exampleappwin.h" 6 | 7 | 8 | #define EXAMPLE_APP_PREFS_TYPE (example_app_prefs_get_type ()) 9 | G_DECLARE_FINAL_TYPE (ExampleAppPrefs, example_app_prefs, EXAMPLE, APP_PREFS, GtkDialog) 10 | 11 | 12 | ExampleAppPrefs *example_app_prefs_new (ExampleAppWindow *win); 13 | 14 | 15 | #endif /* __EXAMPLEAPPPREFS_H */ 16 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application7/gears-menu.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | _Preferences 7 | app.preferences 8 | 9 |
10 |
11 | 12 | _Quit 13 | app.quit 14 | 15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application7/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "exampleapp.h" 4 | 5 | int 6 | main (int argc, char *argv[]) 7 | { 8 | /* Since this example is running uninstalled, 9 | * we have to help it find its schema. This 10 | * is *not* necessary in properly installed 11 | * application. 12 | */ 13 | g_setenv ("GSETTINGS_SCHEMA_DIR", ".", FALSE); 14 | 15 | return g_application_run (G_APPLICATION (example_app_new ()), argc, argv); 16 | } 17 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application7/meson.build: -------------------------------------------------------------------------------- 1 | app7_resources = gnome.compile_resources('exampleapp7_resources', 2 | 'exampleapp.gresource.xml', 3 | source_dir: meson.current_source_dir()) 4 | 5 | app7_schemas = gnome.compile_schemas() 6 | 7 | executable('exampleapp7', 8 | 'main.c', 9 | 'exampleapp.c', 10 | 'exampleappwin.c', 11 | 'exampleappprefs.c', 12 | app7_resources, 13 | app7_schemas, 14 | dependencies: libgtk_dep, 15 | c_args: common_cflags, 16 | name_suffix: 'html') 17 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application8/README: -------------------------------------------------------------------------------- 1 | Step 8: Adding a sidebar 2 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application8/exampleapp.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | window.ui 5 | gears-menu.ui 6 | prefs.ui 7 | 8 | 9 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application8/exampleapp.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPP_H 2 | #define __EXAMPLEAPP_H 3 | 4 | #include 5 | 6 | 7 | #define EXAMPLE_APP_TYPE (example_app_get_type ()) 8 | G_DECLARE_FINAL_TYPE (ExampleApp, example_app, EXAMPLE, APP, GtkApplication) 9 | 10 | 11 | ExampleApp *example_app_new (void); 12 | 13 | 14 | #endif /* __EXAMPLEAPP_H */ 15 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application8/exampleappprefs.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPPPREFS_H 2 | #define __EXAMPLEAPPPREFS_H 3 | 4 | #include 5 | #include "exampleappwin.h" 6 | 7 | 8 | #define EXAMPLE_APP_PREFS_TYPE (example_app_prefs_get_type ()) 9 | G_DECLARE_FINAL_TYPE (ExampleAppPrefs, example_app_prefs, EXAMPLE, APP_PREFS, GtkDialog) 10 | 11 | 12 | ExampleAppPrefs *example_app_prefs_new (ExampleAppWindow *win); 13 | 14 | 15 | #endif /* __EXAMPLEAPPPREFS_H */ 16 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application8/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "exampleapp.h" 4 | 5 | int 6 | main (int argc, char *argv[]) 7 | { 8 | /* Since this example is running uninstalled, 9 | * we have to help it find its schema. This 10 | * is *not* necessary in properly installed 11 | * application. 12 | */ 13 | g_setenv ("GSETTINGS_SCHEMA_DIR", ".", FALSE); 14 | 15 | return g_application_run (G_APPLICATION (example_app_new ()), argc, argv); 16 | } 17 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application8/meson.build: -------------------------------------------------------------------------------- 1 | app8_resources = gnome.compile_resources('exampleapp8 resources', 2 | 'exampleapp.gresource.xml', 3 | source_dir: meson.current_source_dir()) 4 | 5 | app8_schemas = gnome.compile_schemas() 6 | 7 | executable('exampleapp8', 8 | 'main.c', 9 | 'exampleapp.c', 10 | 'exampleappwin.c', 11 | 'exampleappprefs.c', 12 | app8_resources, 13 | app8_schemas, 14 | dependencies: libgtk_dep, 15 | c_args: common_cflags, 16 | name_suffix: 'html') 17 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application9/README: -------------------------------------------------------------------------------- 1 | Step 9: Using properties 2 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application9/exampleapp.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | window.ui 5 | gears-menu.ui 6 | prefs.ui 7 | 8 | 9 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application9/exampleapp.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPP_H 2 | #define __EXAMPLEAPP_H 3 | 4 | #include 5 | 6 | 7 | #define EXAMPLE_APP_TYPE (example_app_get_type ()) 8 | G_DECLARE_FINAL_TYPE (ExampleApp, example_app, EXAMPLE, APP, GtkApplication) 9 | 10 | 11 | ExampleApp *example_app_new (void); 12 | 13 | 14 | #endif /* __EXAMPLEAPP_H */ 15 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application9/exampleappprefs.h: -------------------------------------------------------------------------------- 1 | #ifndef __EXAMPLEAPPPREFS_H 2 | #define __EXAMPLEAPPPREFS_H 3 | 4 | #include 5 | #include "exampleappwin.h" 6 | 7 | 8 | #define EXAMPLE_APP_PREFS_TYPE (example_app_prefs_get_type ()) 9 | G_DECLARE_FINAL_TYPE (ExampleAppPrefs, example_app_prefs, EXAMPLE, APP_PREFS, GtkDialog) 10 | 11 | 12 | ExampleAppPrefs *example_app_prefs_new (ExampleAppWindow *win); 13 | 14 | 15 | #endif /* __EXAMPLEAPPPREFS_H */ 16 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application9/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "exampleapp.h" 4 | 5 | int 6 | main (int argc, char *argv[]) 7 | { 8 | /* Since this example is running uninstalled, 9 | * we have to help it find its schema. This 10 | * is *not* necessary in properly installed 11 | * application. 12 | */ 13 | g_setenv ("GSETTINGS_SCHEMA_DIR", ".", FALSE); 14 | 15 | return g_application_run (G_APPLICATION (example_app_new ()), argc, argv); 16 | } 17 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/application9/meson.build: -------------------------------------------------------------------------------- 1 | app9_resources = gnome.compile_resources('exampleapp9_resources', 2 | 'exampleapp.gresource.xml', 3 | source_dir: meson.current_source_dir()) 4 | 5 | app9_schemas = gnome.compile_schemas() 6 | 7 | executable('exampleapp9', 8 | 'main.c', 9 | 'exampleapp.c', 10 | 'exampleappwin.c', 11 | 'exampleappprefs.c', 12 | app9_resources, 13 | app9_schemas, 14 | dependencies: libgtk_dep, 15 | c_args: common_cflags, 16 | name_suffix: 'html') 17 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/bp/icons/16x16/actions/format-justify-center-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/examples/bp/icons/16x16/actions/format-justify-center-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/bp/icons/16x16/actions/format-justify-left-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/examples/bp/icons/16x16/actions/format-justify-left-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/bp/icons/16x16/actions/format-justify-right-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/examples/bp/icons/16x16/actions/format-justify-right-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/bp/icons/16x16/actions/view-fullscreen-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/examples/bp/icons/16x16/actions/view-fullscreen-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/bp/icons/16x16/actions/view-restore-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/examples/bp/icons/16x16/actions/view-restore-symbolic.symbolic.png -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/bp/meson.build: -------------------------------------------------------------------------------- 1 | bp_resources = gnome.compile_resources('bloatpad_resources', 2 | 'bloatpad.gresources.xml', 3 | source_dir: meson.current_source_dir()) 4 | 5 | executable('bloatpad', 'bloatpad.c', bp_resources, dependencies: libgtk_dep, c_args: common_cflags,name_suffix: 'html') 6 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/hello/README.md: -------------------------------------------------------------------------------- 1 | A trivial example 2 | ================= 3 | 4 | This is a very minimal example of an app that can be built against GTK. 5 | We use this in CI to test that building against the installed GTK works. 6 | 7 | That is why there is a standalone meson.build in this subdirectory. 8 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/examples/hello/meson.build: -------------------------------------------------------------------------------- 1 | project('hello', 'c', 2 | version: '4.3.0', 3 | meson_version: '>= 0.50.0', 4 | ) 5 | 6 | executable('hello', 7 | [ 'hello-world.c' ], 8 | dependencies: [ dependency('gtk4') ], 9 | install: false, 10 | name_suffix: 'html' 11 | ) 12 | -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-Black.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-Black.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-BlackItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-BlackItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-Bold.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-BoldItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-BoldItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-ExtraBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-ExtraBold.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-ExtraBoldItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-ExtraBoldItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-ExtraLight.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-ExtraLight.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-ExtraLightItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-ExtraLightItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-Italic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-Italic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-Light.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-LightItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-LightItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-Medium.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-MediumItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-MediumItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-Regular.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-SemiBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-SemiBold.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-SemiBoldItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-SemiBoldItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-Thin.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-Thin.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/Inter-ThinItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/Inter-ThinItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-Black.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-Black.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-BlackItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-BlackItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-Bold.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-BoldItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-BoldItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-ExtraBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-ExtraBold.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-ExtraBoldItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-ExtraBoldItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-ExtraLight.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-ExtraLight.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-ExtraLightItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-ExtraLightItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-Italic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-Italic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-Light.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-LightItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-LightItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-Medium.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-MediumItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-MediumItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-Regular.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-SemiBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-SemiBold.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-SemiBoldItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-SemiBoldItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-Thin.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-Thin.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/fonts/inter/InterDisplay-ThinItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/gtk4/fonts/inter/InterDisplay-ThinItalic.otf -------------------------------------------------------------------------------- /examples/sdk/gtk4/meson_options.txt: -------------------------------------------------------------------------------- 1 | option('demos', 2 | type: 'boolean', 3 | value: true, 4 | description : 'Build demo programs') 5 | 6 | option('profile', 7 | type: 'combo', 8 | choices: [ 'default', 'devel' ], 9 | value: 'default', 10 | description : 'Profile to use for demos') 11 | 12 | option('build-examples', 13 | type: 'boolean', 14 | value: true, 15 | description : 'Build examples') 16 | -------------------------------------------------------------------------------- /examples/sdk/simple-shm/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /src/glue.js 3 | /src/xdg-shell-client-protocol.c 4 | /src/xdg-shell-client-protocol.h 5 | -------------------------------------------------------------------------------- /examples/sdk/weston/.gitignore: -------------------------------------------------------------------------------- 1 | build -------------------------------------------------------------------------------- /examples/sdk/weston/data/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/background.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/border.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/fullscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/fullscreen.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/home.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/icon_editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/icon_editor.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/icon_flower.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/icon_flower.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/icon_ivi_clickdot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/icon_ivi_clickdot.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/icon_ivi_flower.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/icon_ivi_flower.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/icon_ivi_simple-egl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/icon_ivi_simple-egl.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/icon_ivi_simple-shm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/icon_ivi_simple-shm.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/icon_ivi_smoke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/icon_ivi_smoke.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/icon_terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/icon_terminal.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/icon_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/icon_window.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/panel.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/pattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/pattern.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/random.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/random.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/sidebyside.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/sidebyside.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/sign_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/sign_close.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/sign_maximize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/sign_maximize.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/sign_minimize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/sign_minimize.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/terminal.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/tiling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/tiling.png -------------------------------------------------------------------------------- /examples/sdk/weston/data/wayland.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/data/wayland.png -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-Black.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-Black.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-BlackItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-BlackItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-Bold.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-BoldItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-BoldItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-ExtraBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-ExtraBold.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-ExtraBoldItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-ExtraBoldItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-ExtraLight.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-ExtraLight.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-ExtraLightItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-ExtraLightItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-Italic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-Italic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-Light.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-LightItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-LightItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-Medium.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-MediumItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-MediumItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-Regular.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-SemiBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-SemiBold.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-SemiBoldItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-SemiBoldItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-Thin.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-Thin.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/Inter-ThinItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/Inter-ThinItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-Black.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-Black.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-BlackItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-BlackItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-Bold.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-BoldItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-BoldItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-ExtraBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-ExtraBold.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-ExtraBoldItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-ExtraBoldItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-ExtraLight.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-ExtraLight.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-ExtraLightItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-ExtraLightItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-Italic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-Italic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-Light.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-LightItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-LightItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-Medium.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-MediumItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-MediumItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-Regular.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-SemiBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-SemiBold.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-SemiBoldItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-SemiBoldItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-Thin.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-Thin.otf -------------------------------------------------------------------------------- /examples/sdk/weston/fonts/inter/InterDisplay-ThinItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/examples/sdk/weston/fonts/inter/InterDisplay-ThinItalic.otf -------------------------------------------------------------------------------- /examples/sdk/weston/include/meson.build: -------------------------------------------------------------------------------- 1 | subdir('libweston') 2 | -------------------------------------------------------------------------------- /examples/sdk/weston/set_env.js: -------------------------------------------------------------------------------- 1 | 2 | var setEnv = function() { 3 | ENV.WESTON_DATA_DIR = "/data" 4 | } 5 | 6 | Module.preRun = Module.preRun ? [...Module.preRun, setEnv] : [setEnv] 7 | -------------------------------------------------------------------------------- /examples/webapps/gtk4/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | -------------------------------------------------------------------------------- /examples/webapps/gtk4/README.md: -------------------------------------------------------------------------------- 1 | Web Assembly build of Weston's demo client 'eventdemo'. 2 | 3 | - `yarn preview` 4 | 5 | The demo-compositor will now be able to launch this demo webapp. 6 | 7 | Type `web://localhost:9003` in the compositor URL bar and press enter to launch it 8 | -------------------------------------------------------------------------------- /examples/webapps/gtk4/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | 3 | export default defineConfig({ 4 | base: "./", 5 | }); 6 | -------------------------------------------------------------------------------- /examples/webapps/simple-shm/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | -------------------------------------------------------------------------------- /examples/webapps/simple-shm/README.md: -------------------------------------------------------------------------------- 1 | JavaScript port of Weston's demo client "simple-shm". 2 | 3 | - `yarn install` 4 | - `yarn start` 5 | 6 | The demo-compositor will now be able to launch this demo webapp. 7 | 8 | Type `web://localhost:9002` in the compositor URL bar and press enter to launch it 9 | 10 | -------------------------------------------------------------------------------- /examples/webapps/simple-shm/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Greenfield WebApp Demo 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /examples/webapps/simple-shm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "Node16", 4 | "target": "es2018", 5 | "module": "esnext", 6 | "esModuleInterop": true, 7 | "strict": true, 8 | "sourceMap": true, 9 | "outDir": "dist", 10 | "lib": [ 11 | "dom", 12 | "dom.iterable", 13 | "esnext", 14 | ] 15 | }, 16 | "include": ["src"] 17 | } 18 | -------------------------------------------------------------------------------- /examples/webapps/simple-shm/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | 3 | export default defineConfig({ 4 | base: "./", 5 | build: { 6 | rollupOptions: { 7 | input: { 8 | app: './app.html' 9 | } 10 | } 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /examples/webapps/webgl/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules 3 | -------------------------------------------------------------------------------- /examples/webapps/webgl/README.md: -------------------------------------------------------------------------------- 1 | - `yarn install` 2 | - `yarn start` 3 | 4 | The demo-compositor will now be able to launch this demo webapp. -------------------------------------------------------------------------------- /examples/webapps/webgl/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Greenfield WebApp Demo 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /examples/webapps/webgl/src/demo.frag: -------------------------------------------------------------------------------- 1 | varying lowp vec4 vColor; 2 | 3 | void main(void) { 4 | gl_FragColor = vColor; 5 | } 6 | -------------------------------------------------------------------------------- /examples/webapps/webgl/src/demo.vert: -------------------------------------------------------------------------------- 1 | attribute vec4 aVertexPosition; 2 | attribute vec4 aVertexColor; 3 | 4 | uniform mat4 uModelViewMatrix; 5 | uniform mat4 uProjectionMatrix; 6 | 7 | varying lowp vec4 vColor; 8 | 9 | void main(void) { 10 | gl_Position = uProjectionMatrix * uModelViewMatrix * aVertexPosition; 11 | vColor = aVertexColor; 12 | } 13 | -------------------------------------------------------------------------------- /examples/webapps/webgl/src/glsl.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vert' { 2 | const value: string 3 | export default value 4 | } 5 | 6 | declare module '*.frag' { 7 | const value: string 8 | export default value 9 | } 10 | -------------------------------------------------------------------------------- /examples/webapps/webgl/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "Node16", 4 | "target": "es2018", 5 | "module": "esnext", 6 | "esModuleInterop": true, 7 | "strict": true, 8 | "sourceMap": true, 9 | "outDir": "dist", 10 | "lib": [ 11 | "dom", 12 | "dom.iterable", 13 | "esnext", 14 | ] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /examples/webapps/webgl/vite.config.ts: -------------------------------------------------------------------------------- 1 | import glsl from 'vite-plugin-glsl' 2 | import { defineConfig } from 'vite' 3 | 4 | export default defineConfig({ 5 | plugins: [glsl()], 6 | base: "./", 7 | build: { 8 | rollupOptions: { 9 | input: { 10 | app: './app.html' 11 | } 12 | } 13 | } 14 | }) 15 | -------------------------------------------------------------------------------- /examples/webapps/weston-clients/README.md: -------------------------------------------------------------------------------- 1 | Web Assembly build of Weston's demo client 'eventdemo'. 2 | 3 | - `yarn preview` 4 | 5 | The demo-compositor will now be able to launch this demo webapp. 6 | 7 | Type `web://localhost:9003` in the compositor URL bar and press enter to launch it 8 | -------------------------------------------------------------------------------- /examples/webapps/weston-clients/dist: -------------------------------------------------------------------------------- 1 | ../../sdk/weston/build/clients -------------------------------------------------------------------------------- /examples/webapps/weston-clients/vite.config.mts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | 3 | export default defineConfig({ 4 | preview: { 5 | port: 9003, 6 | strictPort: true, 7 | headers: { 8 | "Cross-Origin-Opener-Policy": "same-origin", 9 | "Cross-Origin-Embedder-Policy": "require-corp", 10 | "Cross-Origin-Resource-Policy": "same-origin" 11 | } 12 | } 13 | }); 14 | -------------------------------------------------------------------------------- /libs/client-generator/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /libs/client-generator/.npmignore: -------------------------------------------------------------------------------- 1 | index.spec.xml -------------------------------------------------------------------------------- /libs/client-protocol/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | types 3 | node_modules 4 | -------------------------------------------------------------------------------- /libs/client-protocol/.npmignore: -------------------------------------------------------------------------------- 1 | spec 2 | westfield-client-core.spec.js -------------------------------------------------------------------------------- /libs/client-protocol/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | semi: false, 3 | trailingComma: 'all', 4 | singleQuote: true, 5 | printWidth: 120, 6 | } 7 | -------------------------------------------------------------------------------- /libs/client-protocol/src/protocol/index.ts: -------------------------------------------------------------------------------- 1 | export * from './wayland' 2 | export * from './xdg_shell' 3 | export * from './web_bitmapbuf' 4 | -------------------------------------------------------------------------------- /libs/common/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | types 3 | node_modules 4 | -------------------------------------------------------------------------------- /libs/common/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | semi: false, 3 | trailingComma: 'all', 4 | singleQuote: true, 5 | printWidth: 120, 6 | } 7 | -------------------------------------------------------------------------------- /libs/common/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Connection' 2 | -------------------------------------------------------------------------------- /libs/compositor-ffmpeg-h264/.gitignore: -------------------------------------------------------------------------------- 1 | ffmpeg-build 2 | emsdk 3 | dist 4 | types 5 | ffmpeg 6 | node_modules 7 | 8 | -------------------------------------------------------------------------------- /libs/compositor-ffmpeg-h264/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | semi: false, 3 | trailingComma: 'all', 4 | singleQuote: true, 5 | printWidth: 120, 6 | } 7 | -------------------------------------------------------------------------------- /libs/compositor-ffmpeg-h264/README.md: -------------------------------------------------------------------------------- 1 | Port of ffmpeg's h264 decoder, all other functionality is removed. After decoding you get I420 planes back, see demo for a full working example. 2 | 3 | - `yarn install` 4 | - `yarn build-wasm` 5 | - `yarn build` -------------------------------------------------------------------------------- /libs/compositor-ffmpeg-h264/src/index.ts: -------------------------------------------------------------------------------- 1 | export { init } from './H264Worker' 2 | export type FfmpegH264Frame = { 3 | ptr: number 4 | yPlane: Uint8Array 5 | uPlane: Uint8Array 6 | vPlane: Uint8Array 7 | stride: number 8 | } 9 | -------------------------------------------------------------------------------- /libs/compositor-generator/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /libs/compositor-protocol/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | types 3 | node_modules 4 | -------------------------------------------------------------------------------- /libs/compositor-protocol/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | semi: false, 3 | trailingComma: 'all', 4 | singleQuote: true, 5 | printWidth: 120, 6 | } 7 | -------------------------------------------------------------------------------- /libs/compositor-protocol/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './westfield-runtime-server' 2 | export * from './protocol' 3 | -------------------------------------------------------------------------------- /libs/compositor-protocol/src/protocol/index.ts: -------------------------------------------------------------------------------- 1 | export * from './wayland' 2 | export * from './web_bitmapbuf' 3 | export * from './xdg_shell' 4 | -------------------------------------------------------------------------------- /libs/compositor-proxy-generator/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /libs/compositor-wasm/.gitignore: -------------------------------------------------------------------------------- 1 | emsdk 2 | pixman/repo 3 | xkbcommon/repo 4 | xkbcommon/repo-xkeyboard-config 5 | xkbcommon/repo-xml2 6 | dist 7 | types 8 | node_modules 9 | src/libpixman.js 10 | src/libxkbcommon.js 11 | emscripten-toolchain.ini 12 | -------------------------------------------------------------------------------- /libs/compositor-wasm/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | semi: false, 3 | trailingComma: 'all', 4 | singleQuote: true, 5 | printWidth: 120, 6 | } 7 | -------------------------------------------------------------------------------- /libs/compositor-wasm/README.md: -------------------------------------------------------------------------------- 1 | # Usage 2 | - `yarn install` 3 | - `yarn build` 4 | 5 | To build on Mac you'll need `bison` >=3.8 6 | -------------------------------------------------------------------------------- /libs/compositor-wasm/build_wasm.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e 3 | 4 | PACKAGE_DIR=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")") 5 | export PACKAGE_DIR 6 | 7 | EMSDK_VERSION="3.1.46" 8 | git -C emsdk pull || git clone https://github.com/emscripten-core/emsdk.git emsdk 9 | pushd 'emsdk' 10 | ./emsdk install ${EMSDK_VERSION} 11 | ./emsdk activate ${EMSDK_VERSION} 12 | source ./emsdk_env.sh 13 | popd 14 | 15 | printf '%s\n' "[constants]" "toolchain = '$PACKAGE_DIR/emsdk/upstream/emscripten'" > "$PACKAGE_DIR/emscripten-toolchain.ini" 16 | 17 | ./xkbcommon/build.sh 18 | ./pixman/build.sh 19 | -------------------------------------------------------------------------------- /libs/xtsb/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | coverage 3 | node_modules 4 | xcbgen/__pycache__/ 5 | -------------------------------------------------------------------------------- /libs/xtsb/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | semi: false, 3 | trailingComma: 'all', 4 | singleQuote: true, 5 | printWidth: 120, 6 | } 7 | -------------------------------------------------------------------------------- /libs/xtsb/src/Protocol.ts: -------------------------------------------------------------------------------- 1 | import { XConnection } from './connection' 2 | 3 | export default class Protocol { 4 | constructor( 5 | public xConnection: XConnection, 6 | public readonly majorOpcode: number, 7 | public readonly firstEvent: number, 8 | public readonly firstError: number, 9 | ) {} 10 | } 11 | -------------------------------------------------------------------------------- /libs/xtsb/src/index.node.ts: -------------------------------------------------------------------------------- 1 | export * from './xcb' 2 | export { getRender } from './xcbRender' 3 | export * as Render from './xcbRender' 4 | export { getShape } from './xcbShape' 5 | export * as Shape from './xcbShape' 6 | export { getXFixes } from './xcbXFixes' 7 | export * as XFixes from './xcbXFixes' 8 | export { getComposite } from './xcbComposite' 9 | export * as Composite from './xcbComposite' 10 | export * from './connection' 11 | export * from './nodeConnection' 12 | -------------------------------------------------------------------------------- /libs/xtsb/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './xcb' 2 | export { getRender } from './xcbRender' 3 | export * as Render from './xcbRender' 4 | export { getShape } from './xcbShape' 5 | export * as Shape from './xcbShape' 6 | export { getXFixes } from './xcbXFixes' 7 | export * as XFixes from './xcbXFixes' 8 | export { getComposite } from './xcbComposite' 9 | export * as Composite from './xcbComposite' 10 | export * from './connection' 11 | export * from './webConnection' 12 | export * from './nodeConnection' 13 | -------------------------------------------------------------------------------- /libs/xtsb/src/index.web.ts: -------------------------------------------------------------------------------- 1 | export * from './xcb' 2 | export { getRender } from './xcbRender' 3 | export * as Render from './xcbRender' 4 | export { getShape } from './xcbShape' 5 | export * as Shape from './xcbShape' 6 | export { getXFixes } from './xcbXFixes' 7 | export * as XFixes from './xcbXFixes' 8 | export { getComposite } from './xcbComposite' 9 | export * as Composite from './xcbComposite' 10 | export * from './connection' 11 | export * from './webConnection' 12 | -------------------------------------------------------------------------------- /libs/xtsb/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/node18/tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./dist/main", 5 | "resolveJsonModule": true, 6 | "allowJs": true, 7 | "declaration": true, 8 | "declarationDir": "dist/types", 9 | "pretty": true 10 | }, 11 | "include": [ 12 | "src", 13 | "src/index.d.ts" 14 | ], 15 | "exclude": [ 16 | ".eslintrc.js", 17 | ".prettierrc.js", 18 | "jest.config.js", 19 | "**/*.spec.ts", 20 | "test", 21 | "**/webConnection.ts", 22 | "**/index.web.ts" 23 | ], 24 | "ts-node": { 25 | "files": true 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /libs/xtsb/xcbgen/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /libs/xtsb/xcbgen/error.py: -------------------------------------------------------------------------------- 1 | class ResolveException(Exception): 2 | ''' 3 | Gets thrown when a type doesn't resolve in the XML. 4 | ''' 5 | pass 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "workspaces": [ 3 | "libs/*", 4 | "packages/*", 5 | "examples/webapps/*", 6 | "examples/compositor/*" 7 | ], 8 | "packageManager": "yarn@4.5.0", 9 | "resolutions": { 10 | "pkg@^5.8.1": "patch:pkg@npm%3A5.8.1#./.yarn/patches/pkg-npm-5.8.1-db9700609f.patch" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/compositor-proxy-cli/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | package/ 4 | -------------------------------------------------------------------------------- /packages/compositor-proxy-cli/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | semi: false, 3 | trailingComma: 'all', 4 | singleQuote: true, 5 | printWidth: 120, 6 | } 7 | -------------------------------------------------------------------------------- /packages/compositor-proxy-cli/example-applications.json: -------------------------------------------------------------------------------- 1 | { 2 | "/gtk4-demo": { 3 | "name": "GTK Demo", 4 | "executable": "gtk4-demo", 5 | "args": [], 6 | "env": {} 7 | }, 8 | "/kwrite": { 9 | "name": "KWrite", 10 | "executable": "kwrite", 11 | "args": [ 12 | "-platform", 13 | "wayland" 14 | ], 15 | "env": {} 16 | }, 17 | "/xterm": { 18 | "name": "XTerm", 19 | "executable": "xterm", 20 | "args": [], 21 | "env": {} 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/compositor-proxy-cli/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/node18/tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./dist", 5 | "resolveJsonModule": true, 6 | "allowJs": true, 7 | "rootDirs": ["src"], 8 | "pretty": true, 9 | "sourceMap": true 10 | }, 11 | "exclude": [".eslintrc.js", ".prettierrc.js"] 12 | } 13 | -------------------------------------------------------------------------------- /packages/compositor-proxy-cli/wait-until-ready.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # If the file is already deleted, the inotify command will exit with an error code, resulting in a k8s pod restart. We add an || true to mitigate this. 4 | inotifywait /var/run/compositor-proxy/starting || true 5 | -------------------------------------------------------------------------------- /packages/compositor-proxy/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | dist 3 | types 4 | node_modules 5 | src/encoding/proxy-encoding-addon.node 6 | src/encoding/libproxy-encoding.so 7 | src/proxy-poll-addon.node 8 | src/cli/app-config.d.ts 9 | ../compositor-proxy-cli/package/compositor-proxy 10 | ../compositor-proxy-cli/package/libproxy-encoding.so 11 | ../compositor-proxy-cli/package/libwayland-server.so.0 12 | ../compositor-proxy-cli/package/libwestfield.so 13 | -------------------------------------------------------------------------------- /packages/compositor-proxy/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | semi: false, 3 | trailingComma: 'all', 4 | singleQuote: true, 5 | printWidth: 120, 6 | } 7 | -------------------------------------------------------------------------------- /packages/compositor-proxy/native/wayland/src/wayland-server/westfield-wayland-server.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by erik on 24/05/22. 3 | // 4 | 5 | #ifndef WESTFIELD_WESTFIELD_WAYLAND_SERVER_H 6 | #define WESTFIELD_WESTFIELD_WAYLAND_SERVER_H 7 | #include "wayland-server.h" 8 | #include "westfield-wayland-server-extra.h" 9 | 10 | #endif //WESTFIELD_WESTFIELD_WAYLAND_SERVER_H 11 | -------------------------------------------------------------------------------- /packages/compositor-proxy/native/wayland/src/westfield-fdutils.h: -------------------------------------------------------------------------------- 1 | #ifndef WESTFIELD_WESTFIELD_FDUTILS_H 2 | #define WESTFIELD_WESTFIELD_FDUTILS_H 3 | 4 | #include 5 | 6 | int 7 | westfield_os_create_anonymous_file(size_t size); 8 | 9 | #endif //WESTFIELD_WESTFIELD_FDUTILS_H -------------------------------------------------------------------------------- /packages/compositor-proxy/native/wayland/src/westfield-surface.h: -------------------------------------------------------------------------------- 1 | #ifndef WESTFIELD_WESTFIELD_SURFACE_H 2 | #define WESTFIELD_WESTFIELD_SURFACE_H 3 | #include "addon.h" 4 | 5 | struct westfield_surface { 6 | struct addon_set addons; 7 | void *data; 8 | }; 9 | 10 | #endif //WESTFIELD_WESTFIELD_SURFACE_H 11 | -------------------------------------------------------------------------------- /packages/compositor-proxy/native/wayland/src/westfield-util.h: -------------------------------------------------------------------------------- 1 | #ifndef WESTFIELD_WESTFIELD_UTIL_H 2 | #define WESTFIELD_WESTFIELD_UTIL_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #define wfl_log(std, fmt, ...) \ 10 | fprintf(std, fmt "\n", ##__VA_ARGS__) 11 | 12 | #define wfl_log_errno(std, fmt, ...) \ 13 | wfl_log(std, fmt ": %s", ##__VA_ARGS__, strerror(errno)) 14 | 15 | 16 | #endif //WESTFIELD_WESTFIELD_UTIL_H 17 | -------------------------------------------------------------------------------- /packages/compositor-proxy/native/wayland/src/westfield.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by erik on 23/05/22. 3 | // 4 | 5 | #ifndef WESTFIELD_WESTFIELD_H 6 | #define WESTFIELD_WESTFIELD_H 7 | 8 | #include "westfield-fdutils.h" 9 | #include "westfield-egl.h" 10 | #include "westfield-xwayland.h" 11 | #include "wayland-server/westfield-wayland-server.h" 12 | 13 | #endif //WESTFIELD_WESTFIELD_H 14 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/addons/proxy-encoding-addon.node: -------------------------------------------------------------------------------- 1 | ../../dist/addons/proxy-encoding-addon.node -------------------------------------------------------------------------------- /packages/compositor-proxy/src/addons/proxy-poll-addon.d.ts: -------------------------------------------------------------------------------- 1 | declare namespace nodePoll { 2 | export type PollHandle = unknown 3 | 4 | export function startPoll(fd: number, handlePollEvent: (status: number, events: number) => void): PollHandle 5 | 6 | export function stopPoll(pollHandle: PollHandle) 7 | } 8 | 9 | export = nodePoll 10 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/addons/proxy-poll-addon.node: -------------------------------------------------------------------------------- 1 | ../../dist/addons/proxy-poll-addon.node -------------------------------------------------------------------------------- /packages/compositor-proxy/src/addons/wayland-server-addon.node: -------------------------------------------------------------------------------- 1 | ../../dist/addons/wayland-server-addon.node -------------------------------------------------------------------------------- /packages/compositor-proxy/src/index.ts: -------------------------------------------------------------------------------- 1 | export { createLogger } from './Logger.js' 2 | export { initSurfaceBufferEncoding } from './SurfaceBufferEncoding.js' 3 | export { createSessionController, SessionController } from './SessionController.js' 4 | export { createSession, Session } from './Session.js' 5 | export { launchApplication, NativeAppContext, RemoteAppContextAttributes } from './NativeAppContext.js' 6 | export { Configschema } from './config.js' 7 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_buffer_interceptor.js: -------------------------------------------------------------------------------- 1 | const { createWlResource, unmarshallArgs } = require('../wayland-server') 2 | 3 | class wl_buffer_interceptor { 4 | constructor (wlClient, interceptors, version, wlResource, userData, creationArgs, id) { 5 | this.wlClient = wlClient 6 | this.wlResource = wlResource 7 | this.userData = userData 8 | this.creationArgs = creationArgs 9 | this.id = id 10 | this.requestHandlers = { 11 | } 12 | this.eventHandlers = { 13 | } 14 | } 15 | 16 | } 17 | module.exports = wl_buffer_interceptor 18 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_buffer_interface.js: -------------------------------------------------------------------------------- 1 | const { createWlInterface, createWlMessage, initWlInterface } = require('../wayland-server') 2 | 3 | const wlInterface = createWlInterface() 4 | module.exports = wlInterface 5 | const requests = [ 6 | createWlMessage('destroy', '', []) 7 | ] 8 | 9 | const events = [ 10 | createWlMessage('release', '', []) 11 | ] 12 | 13 | initWlInterface(wlInterface, 'wl_buffer', 1, requests, events) 14 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_callback_interceptor.js: -------------------------------------------------------------------------------- 1 | const { createWlResource, unmarshallArgs } = require('../wayland-server') 2 | 3 | class wl_callback_interceptor { 4 | constructor (wlClient, interceptors, version, wlResource, userData, creationArgs, id) { 5 | this.wlClient = wlClient 6 | this.wlResource = wlResource 7 | this.userData = userData 8 | this.creationArgs = creationArgs 9 | this.id = id 10 | this.requestHandlers = { 11 | } 12 | this.eventHandlers = { 13 | } 14 | } 15 | 16 | } 17 | module.exports = wl_callback_interceptor 18 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_callback_interface.js: -------------------------------------------------------------------------------- 1 | const { createWlInterface, createWlMessage, initWlInterface } = require('../wayland-server') 2 | 3 | const wlInterface = createWlInterface() 4 | module.exports = wlInterface 5 | const requests = [ 6 | 7 | ] 8 | 9 | const events = [ 10 | createWlMessage('done', 'u', [null]) 11 | ] 12 | 13 | initWlInterface(wlInterface, 'wl_callback', 1, requests, events) 14 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_compositor_interface.js: -------------------------------------------------------------------------------- 1 | const { createWlInterface, createWlMessage, initWlInterface } = require('../wayland-server') 2 | 3 | const wlInterface = createWlInterface() 4 | module.exports = wlInterface 5 | const requests = [ 6 | createWlMessage('create_surface', 'n', [require('./wl_surface_interface')]), 7 | createWlMessage('create_region', 'n', [require('./wl_region_interface')]) 8 | ] 9 | 10 | const events = [ 11 | 12 | ] 13 | 14 | initWlInterface(wlInterface, 'wl_compositor', 4, requests, events) 15 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_data_device_manager_interface.js: -------------------------------------------------------------------------------- 1 | const { createWlInterface, createWlMessage, initWlInterface } = require('../wayland-server') 2 | 3 | const wlInterface = createWlInterface() 4 | module.exports = wlInterface 5 | const requests = [ 6 | createWlMessage('create_data_source', 'n', [require('./wl_data_source_interface')]), 7 | createWlMessage('get_data_device', 'no', [require('./wl_data_device_interface'), require('./wl_seat_interface')]) 8 | ] 9 | 10 | const events = [ 11 | 12 | ] 13 | 14 | initWlInterface(wlInterface, 'wl_data_device_manager', 3, requests, events) 15 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_data_offer_interceptor.js: -------------------------------------------------------------------------------- 1 | const { createWlResource, unmarshallArgs } = require('../wayland-server') 2 | 3 | class wl_data_offer_interceptor { 4 | constructor (wlClient, interceptors, version, wlResource, userData, creationArgs, id) { 5 | this.wlClient = wlClient 6 | this.wlResource = wlResource 7 | this.userData = userData 8 | this.creationArgs = creationArgs 9 | this.id = id 10 | this.requestHandlers = { 11 | } 12 | this.eventHandlers = { 13 | } 14 | } 15 | 16 | } 17 | module.exports = wl_data_offer_interceptor 18 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_data_source_interceptor.js: -------------------------------------------------------------------------------- 1 | const { createWlResource, unmarshallArgs } = require('../wayland-server') 2 | 3 | class wl_data_source_interceptor { 4 | constructor (wlClient, interceptors, version, wlResource, userData, creationArgs, id) { 5 | this.wlClient = wlClient 6 | this.wlResource = wlResource 7 | this.userData = userData 8 | this.creationArgs = creationArgs 9 | this.id = id 10 | this.requestHandlers = { 11 | } 12 | this.eventHandlers = { 13 | } 14 | } 15 | 16 | } 17 | module.exports = wl_data_source_interceptor 18 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_display_interface.js: -------------------------------------------------------------------------------- 1 | const { createWlInterface, createWlMessage, initWlInterface } = require('../wayland-server') 2 | 3 | const wlInterface = createWlInterface() 4 | module.exports = wlInterface 5 | const requests = [ 6 | createWlMessage('sync', 'n', [require('./wl_callback_interface')]), 7 | createWlMessage('get_registry', 'n', [require('./wl_registry_interface')]) 8 | ] 9 | 10 | const events = [ 11 | createWlMessage('error', 'ous', [null, null, null]), 12 | createWlMessage('delete_id', 'u', [null]) 13 | ] 14 | 15 | initWlInterface(wlInterface, 'wl_display', 1, requests, events) 16 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_keyboard_interceptor.js: -------------------------------------------------------------------------------- 1 | const { createWlResource, unmarshallArgs } = require('../wayland-server') 2 | 3 | class wl_keyboard_interceptor { 4 | constructor (wlClient, interceptors, version, wlResource, userData, creationArgs, id) { 5 | this.wlClient = wlClient 6 | this.wlResource = wlResource 7 | this.userData = userData 8 | this.creationArgs = creationArgs 9 | this.id = id 10 | this.requestHandlers = { 11 | } 12 | this.eventHandlers = { 13 | } 14 | } 15 | 16 | } 17 | module.exports = wl_keyboard_interceptor 18 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_output_interceptor.js: -------------------------------------------------------------------------------- 1 | const { createWlResource, unmarshallArgs } = require('../wayland-server') 2 | 3 | class wl_output_interceptor { 4 | constructor (wlClient, interceptors, version, wlResource, userData, creationArgs, id) { 5 | this.wlClient = wlClient 6 | this.wlResource = wlResource 7 | this.userData = userData 8 | this.creationArgs = creationArgs 9 | this.id = id 10 | this.requestHandlers = { 11 | } 12 | this.eventHandlers = { 13 | } 14 | } 15 | 16 | } 17 | module.exports = wl_output_interceptor 18 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_output_interface.js: -------------------------------------------------------------------------------- 1 | const { createWlInterface, createWlMessage, initWlInterface } = require('../wayland-server') 2 | 3 | const wlInterface = createWlInterface() 4 | module.exports = wlInterface 5 | const requests = [ 6 | createWlMessage('release', '', []) 7 | ] 8 | 9 | const events = [ 10 | createWlMessage('geometry', 'iiiiissi', [null, null, null, null, null, null, null, null]), 11 | createWlMessage('mode', 'uiii', [null, null, null, null]), 12 | createWlMessage('done', '', []), 13 | createWlMessage('scale', 'i', [null]) 14 | ] 15 | 16 | initWlInterface(wlInterface, 'wl_output', 3, requests, events) 17 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_pointer_interceptor.js: -------------------------------------------------------------------------------- 1 | const { createWlResource, unmarshallArgs } = require('../wayland-server') 2 | 3 | class wl_pointer_interceptor { 4 | constructor (wlClient, interceptors, version, wlResource, userData, creationArgs, id) { 5 | this.wlClient = wlClient 6 | this.wlResource = wlResource 7 | this.userData = userData 8 | this.creationArgs = creationArgs 9 | this.id = id 10 | this.requestHandlers = { 11 | } 12 | this.eventHandlers = { 13 | } 14 | } 15 | 16 | } 17 | module.exports = wl_pointer_interceptor 18 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_region_interceptor.js: -------------------------------------------------------------------------------- 1 | const { createWlResource, unmarshallArgs } = require('../wayland-server') 2 | 3 | class wl_region_interceptor { 4 | constructor (wlClient, interceptors, version, wlResource, userData, creationArgs, id) { 5 | this.wlClient = wlClient 6 | this.wlResource = wlResource 7 | this.userData = userData 8 | this.creationArgs = creationArgs 9 | this.id = id 10 | this.requestHandlers = { 11 | } 12 | this.eventHandlers = { 13 | } 14 | } 15 | 16 | } 17 | module.exports = wl_region_interceptor 18 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_region_interface.js: -------------------------------------------------------------------------------- 1 | const { createWlInterface, createWlMessage, initWlInterface } = require('../wayland-server') 2 | 3 | const wlInterface = createWlInterface() 4 | module.exports = wlInterface 5 | const requests = [ 6 | createWlMessage('destroy', '', []), 7 | createWlMessage('add', 'iiii', [null, null, null, null]), 8 | createWlMessage('subtract', 'iiii', [null, null, null, null]) 9 | ] 10 | 11 | const events = [ 12 | 13 | ] 14 | 15 | initWlInterface(wlInterface, 'wl_region', 1, requests, events) 16 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_registry_interface.js: -------------------------------------------------------------------------------- 1 | const { createWlInterface, createWlMessage, initWlInterface } = require('../wayland-server') 2 | 3 | const wlInterface = createWlInterface() 4 | module.exports = wlInterface 5 | const requests = [ 6 | createWlMessage('bind', 'un', [null, null]) 7 | ] 8 | 9 | const events = [ 10 | createWlMessage('global', 'usu', [null, null, null]), 11 | createWlMessage('global_remove', 'u', [null]) 12 | ] 13 | 14 | initWlInterface(wlInterface, 'wl_registry', 1, requests, events) 15 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_shell_interface.js: -------------------------------------------------------------------------------- 1 | const { createWlInterface, createWlMessage, initWlInterface } = require('../wayland-server') 2 | 3 | const wlInterface = createWlInterface() 4 | module.exports = wlInterface 5 | const requests = [ 6 | createWlMessage('get_shell_surface', 'no', [require('./wl_shell_surface_interface'), require('./wl_surface_interface')]) 7 | ] 8 | 9 | const events = [ 10 | 11 | ] 12 | 13 | initWlInterface(wlInterface, 'wl_shell', 1, requests, events) 14 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_shell_surface_interceptor.js: -------------------------------------------------------------------------------- 1 | const { createWlResource, unmarshallArgs } = require('../wayland-server') 2 | 3 | class wl_shell_surface_interceptor { 4 | constructor (wlClient, interceptors, version, wlResource, userData, creationArgs, id) { 5 | this.wlClient = wlClient 6 | this.wlResource = wlResource 7 | this.userData = userData 8 | this.creationArgs = creationArgs 9 | this.id = id 10 | this.requestHandlers = { 11 | } 12 | this.eventHandlers = { 13 | } 14 | } 15 | 16 | } 17 | module.exports = wl_shell_surface_interceptor 18 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_shm_interface.js: -------------------------------------------------------------------------------- 1 | const { createWlInterface, createWlMessage, initWlInterface } = require('../wayland-server') 2 | 3 | const wlInterface = createWlInterface() 4 | module.exports = wlInterface 5 | const requests = [ 6 | createWlMessage('create_pool', 'nhi', [require('./wl_shm_pool_interface'), null, null]) 7 | ] 8 | 9 | const events = [ 10 | createWlMessage('format', 'u', [null]) 11 | ] 12 | 13 | initWlInterface(wlInterface, 'wl_shm', 1, requests, events) 14 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_shm_pool_interface.js: -------------------------------------------------------------------------------- 1 | const { createWlInterface, createWlMessage, initWlInterface } = require('../wayland-server') 2 | 3 | const wlInterface = createWlInterface() 4 | module.exports = wlInterface 5 | const requests = [ 6 | createWlMessage('create_buffer', 'niiiiu', [require('./wl_buffer_interface'), null, null, null, null, null]), 7 | createWlMessage('destroy', '', []), 8 | createWlMessage('resize', 'i', [null]) 9 | ] 10 | 11 | const events = [ 12 | 13 | ] 14 | 15 | initWlInterface(wlInterface, 'wl_shm_pool', 1, requests, events) 16 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_subcompositor_interface.js: -------------------------------------------------------------------------------- 1 | const { createWlInterface, createWlMessage, initWlInterface } = require('../wayland-server') 2 | 3 | const wlInterface = createWlInterface() 4 | module.exports = wlInterface 5 | const requests = [ 6 | createWlMessage('destroy', '', []), 7 | createWlMessage('get_subsurface', 'noo', [require('./wl_subsurface_interface'), require('./wl_surface_interface'), require('./wl_surface_interface')]) 8 | ] 9 | 10 | const events = [ 11 | 12 | ] 13 | 14 | initWlInterface(wlInterface, 'wl_subcompositor', 1, requests, events) 15 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_subsurface_interceptor.js: -------------------------------------------------------------------------------- 1 | const { createWlResource, unmarshallArgs } = require('../wayland-server') 2 | 3 | class wl_subsurface_interceptor { 4 | constructor (wlClient, interceptors, version, wlResource, userData, creationArgs, id) { 5 | this.wlClient = wlClient 6 | this.wlResource = wlResource 7 | this.userData = userData 8 | this.creationArgs = creationArgs 9 | this.id = id 10 | this.requestHandlers = { 11 | } 12 | this.eventHandlers = { 13 | } 14 | } 15 | 16 | } 17 | module.exports = wl_subsurface_interceptor 18 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/wl_touch_interceptor.js: -------------------------------------------------------------------------------- 1 | const { createWlResource, unmarshallArgs } = require('../wayland-server') 2 | 3 | class wl_touch_interceptor { 4 | constructor (wlClient, interceptors, version, wlResource, userData, creationArgs, id) { 5 | this.wlClient = wlClient 6 | this.wlResource = wlResource 7 | this.userData = userData 8 | this.creationArgs = creationArgs 9 | this.id = id 10 | this.requestHandlers = { 11 | } 12 | this.eventHandlers = { 13 | } 14 | } 15 | 16 | } 17 | module.exports = wl_touch_interceptor 18 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/xdg_popup_interceptor.js: -------------------------------------------------------------------------------- 1 | const { createWlResource, unmarshallArgs } = require('../wayland-server') 2 | 3 | class xdg_popup_interceptor { 4 | constructor (wlClient, interceptors, version, wlResource, userData, creationArgs, id) { 5 | this.wlClient = wlClient 6 | this.wlResource = wlResource 7 | this.userData = userData 8 | this.creationArgs = creationArgs 9 | this.id = id 10 | this.requestHandlers = { 11 | } 12 | this.eventHandlers = { 13 | } 14 | } 15 | 16 | } 17 | module.exports = xdg_popup_interceptor 18 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/xdg_popup_interface.js: -------------------------------------------------------------------------------- 1 | const { createWlInterface, createWlMessage, initWlInterface } = require('../wayland-server') 2 | 3 | const wlInterface = createWlInterface() 4 | module.exports = wlInterface 5 | const requests = [ 6 | createWlMessage('destroy', '', []), 7 | createWlMessage('grab', 'ou', [require('./wl_seat_interface'), null]) 8 | ] 9 | 10 | const events = [ 11 | createWlMessage('configure', 'iiii', [null, null, null, null]), 12 | createWlMessage('popup_done', '', []) 13 | ] 14 | 15 | initWlInterface(wlInterface, 'xdg_popup', 1, requests, events) 16 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/xdg_positioner_interceptor.js: -------------------------------------------------------------------------------- 1 | const { createWlResource, unmarshallArgs } = require('../wayland-server') 2 | 3 | class xdg_positioner_interceptor { 4 | constructor (wlClient, interceptors, version, wlResource, userData, creationArgs, id) { 5 | this.wlClient = wlClient 6 | this.wlResource = wlResource 7 | this.userData = userData 8 | this.creationArgs = creationArgs 9 | this.id = id 10 | this.requestHandlers = { 11 | } 12 | this.eventHandlers = { 13 | } 14 | } 15 | 16 | } 17 | module.exports = xdg_positioner_interceptor 18 | -------------------------------------------------------------------------------- /packages/compositor-proxy/src/protocol/xdg_toplevel_interceptor.js: -------------------------------------------------------------------------------- 1 | const { createWlResource, unmarshallArgs } = require('../wayland-server') 2 | 3 | class xdg_toplevel_interceptor { 4 | constructor (wlClient, interceptors, version, wlResource, userData, creationArgs, id) { 5 | this.wlClient = wlClient 6 | this.wlResource = wlResource 7 | this.userData = userData 8 | this.creationArgs = creationArgs 9 | this.id = id 10 | this.requestHandlers = { 11 | } 12 | this.eventHandlers = { 13 | } 14 | } 15 | 16 | } 17 | module.exports = xdg_toplevel_interceptor 18 | -------------------------------------------------------------------------------- /packages/compositor-proxy/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/node18/tsconfig.json", 3 | "compilerOptions": { 4 | "resolveJsonModule": true, 5 | "allowJs": true, 6 | "rootDirs": ["src"], 7 | "pretty": true, 8 | "declarationDir": "types", 9 | "outDir": "dist", 10 | "declaration": true, 11 | "sourceMap": true, 12 | }, 13 | "exclude": [".eslintrc.js", ".prettierrc.js"] 14 | } 15 | -------------------------------------------------------------------------------- /packages/compositor-shell/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | types 3 | node_modules 4 | -------------------------------------------------------------------------------- /packages/compositor-shell/.prettierrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | semi: false, 3 | trailingComma: 'all', 4 | singleQuote: true, 5 | printWidth: 120, 6 | plugins: [], 7 | pluginSearchDirs: false 8 | } 9 | -------------------------------------------------------------------------------- /packages/compositor-shell/postcss.config.js: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/no-var-requires 2 | import { join, dirname } from 'node:path' 3 | import { fileURLToPath } from 'node:url' 4 | const __filename = fileURLToPath(import.meta.url) 5 | const __dirname = dirname(__filename) 6 | 7 | export default { 8 | plugins: { 9 | tailwindcss: { 10 | config: join(__dirname, 'tailwind.config.js'), 11 | }, 12 | autoprefixer: {}, 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /packages/compositor-shell/public/simple-shm-web: -------------------------------------------------------------------------------- 1 | ../../../examples/webapps/simple-shm/dist -------------------------------------------------------------------------------- /packages/compositor-shell/public/weston: -------------------------------------------------------------------------------- 1 | ../../../examples/sdk/weston/build/clients/ -------------------------------------------------------------------------------- /packages/compositor-shell/src/index.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; -------------------------------------------------------------------------------- /packages/compositor-shell/src/index.ts: -------------------------------------------------------------------------------- 1 | import './index.css' 2 | import { main } from './App' 3 | 4 | window.onload = () => { 5 | main() 6 | } 7 | -------------------------------------------------------------------------------- /packages/compositor-shell/tailwind.config.js: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/no-var-requires 2 | import { join, dirname } from 'node:path' 3 | import { fileURLToPath } from 'node:url' 4 | const __filename = fileURLToPath(import.meta.url) 5 | const __dirname = dirname(__filename) 6 | 7 | export default { 8 | content: [join(__dirname, '/index.html'), join(__dirname, '/src/**/*.{js,ts,jsx,tsx}')], 9 | theme: { 10 | extend: {}, 11 | }, 12 | plugins: [require('@tailwindcss/typography')], 13 | } 14 | -------------------------------------------------------------------------------- /packages/compositor-shell/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import preact from '@preact/preset-vite' 3 | 4 | export default defineConfig({ 5 | plugins: [preact()], 6 | server: { 7 | host: 'localhost', 8 | port: 8080, 9 | strictPort: true, 10 | cors: false, 11 | headers: { 12 | 'Cross-Origin-Opener-Policy': 'same-origin', 13 | 'Cross-Origin-Embedder-Policy': 'require-corp', 14 | }, 15 | }, 16 | }) 17 | -------------------------------------------------------------------------------- /packages/compositor/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | types 3 | node_modules 4 | -------------------------------------------------------------------------------- /packages/compositor/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | semi: false, 3 | trailingComma: 'all', 4 | singleQuote: true, 5 | printWidth: 120, 6 | } 7 | -------------------------------------------------------------------------------- /packages/compositor/openapitools.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json", 3 | "spaces": 2, 4 | "generator-cli": { 5 | "version": "5.4.0", 6 | "generators": { 7 | "webfs": { 8 | "additionalProperties": { 9 | "typescriptThreePlus": true, 10 | "supportsES6": true, 11 | "npmVersion": "16.0.0" 12 | }, 13 | "glob": "./compositor-proxy-api.yaml", 14 | "output": "src/api", 15 | "generatorName": "typescript-fetch" 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/compositor/src/@types/import-png.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.png' { 2 | const value: any 3 | export default value 4 | } 5 | -------------------------------------------------------------------------------- /packages/compositor/src/Loop.ts: -------------------------------------------------------------------------------- 1 | export function queueCancellableMicrotask(handler: () => void): () => void { 2 | let canceled = false 3 | setTimeout(() => { 4 | if (canceled) { 5 | return 6 | } 7 | handler() 8 | }) 9 | return () => { 10 | canceled = true 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/compositor/src/assets/e-resize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/packages/compositor/src/assets/e-resize.png -------------------------------------------------------------------------------- /packages/compositor/src/assets/left_ptr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/packages/compositor/src/assets/left_ptr.png -------------------------------------------------------------------------------- /packages/compositor/src/assets/n-resize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/packages/compositor/src/assets/n-resize.png -------------------------------------------------------------------------------- /packages/compositor/src/assets/ne-resize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/packages/compositor/src/assets/ne-resize.png -------------------------------------------------------------------------------- /packages/compositor/src/assets/nw-resize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/packages/compositor/src/assets/nw-resize.png -------------------------------------------------------------------------------- /packages/compositor/src/assets/s-resize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/packages/compositor/src/assets/s-resize.png -------------------------------------------------------------------------------- /packages/compositor/src/assets/se-resize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/packages/compositor/src/assets/se-resize.png -------------------------------------------------------------------------------- /packages/compositor/src/assets/sign_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/packages/compositor/src/assets/sign_close.png -------------------------------------------------------------------------------- /packages/compositor/src/assets/sign_maximize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/packages/compositor/src/assets/sign_maximize.png -------------------------------------------------------------------------------- /packages/compositor/src/assets/sign_minimize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/packages/compositor/src/assets/sign_minimize.png -------------------------------------------------------------------------------- /packages/compositor/src/assets/sw-resize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/packages/compositor/src/assets/sw-resize.png -------------------------------------------------------------------------------- /packages/compositor/src/assets/w-resize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevbe/greenfield/20b31ad63c3f9e130887fce435e2d6fcc40e0abd/packages/compositor/src/assets/w-resize.png -------------------------------------------------------------------------------- /packages/compositor/src/browser/attributes.ts: -------------------------------------------------------------------------------- 1 | export const hasTouch = 'ontouchstart' in document.documentElement 2 | export const userAgent = window.navigator.userAgent 3 | 4 | export const orientation = () => { 5 | const { angle, type, unlock } = window.screen.orientation 6 | return { 7 | angle, 8 | type, 9 | unlock, 10 | } 11 | } 12 | export const clientWidth = () => window.document.body.clientWidth 13 | export const clientHeight = () => window.document.body.clientHeight 14 | -------------------------------------------------------------------------------- /packages/compositor/src/custom-typings.d.ts: -------------------------------------------------------------------------------- 1 | import { InputOutput } from './InputOutput' 2 | import { ClientEncodersFeedback } from './remote/EncoderFeedback' 3 | 4 | declare module '@gfld/compositor-protocol' { 5 | export interface ClientUserData { 6 | readonly baseURL?: string 7 | readonly clientEncodersFeedback?: ClientEncodersFeedback 8 | readonly inputOutput: InputOutput 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/compositor/src/remote/xwayland/CursorType.ts: -------------------------------------------------------------------------------- 1 | export enum CursorType { 2 | XWM_CURSOR_TOP, 3 | XWM_CURSOR_BOTTOM, 4 | XWM_CURSOR_LEFT, 5 | XWM_CURSOR_RIGHT, 6 | XWM_CURSOR_TOP_LEFT, 7 | XWM_CURSOR_TOP_RIGHT, 8 | XWM_CURSOR_BOTTOM_LEFT, 9 | XWM_CURSOR_BOTTOM_RIGHT, 10 | XWM_CURSOR_LEFT_PTR, 11 | } 12 | -------------------------------------------------------------------------------- /publish.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | printf "\n!!! Make sure you are logged in by running 'yarn npm login' first !!!\n\n" 4 | 5 | export TOKEN="$(cat token)" 6 | yarn workspaces foreach -vA --exclude root-workspace* --exclude @gfld/example* --exclude @gfld/compositor-proxy-cli --exclude @gfld/compositor-shell npm publish --tolerate-republish -------------------------------------------------------------------------------- /sdk/.gitignore: -------------------------------------------------------------------------------- 1 | emsdk 2 | build-sysroot 3 | sysroot 4 | -------------------------------------------------------------------------------- /sdk/sdk_env.sh: -------------------------------------------------------------------------------- 1 | CURRENT_SCRIPT= 2 | _SDK_DIR="." 3 | 4 | if [ -n "${BASH_SOURCE-}" ]; then 5 | CURRENT_SCRIPT="$BASH_SOURCE" 6 | elif [ -n "${ZSH_VERSION-}" ]; then 7 | CURRENT_SCRIPT="${(%):-%x}" 8 | elif [ -n "${KSH_VERSION-}" ]; then 9 | CURRENT_SCRIPT=${.sh.file} 10 | fi 11 | 12 | _SDK_DIR=$(dirname "$(readlink -f "$CURRENT_SCRIPT")") 13 | export PKG_CONFIG_LIBDIR="$_SDK_DIR/sysroot/lib/pkgconfig:$_SDK_DIR/sysroot/share/pkgconfig:$_SDK_DIR/build-sysroot/lib/pkgconfig" 14 | 15 | export _SDK_DIR 16 | export PATH="$_SDK_DIR/toolkit/bin:$PATH" 17 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/.gitignore: -------------------------------------------------------------------------------- 1 | emscripten-toolchain.ini 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/cairo/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/cairo/changes.patch: -------------------------------------------------------------------------------- 1 | diff --git a/src/cairo-ft.h b/src/cairo-ft.h 2 | index a23e032..921a96e 100644 3 | --- a/src/cairo-ft.h 4 | +++ b/src/cairo-ft.h 5 | @@ -45,6 +45,7 @@ 6 | 7 | #include 8 | #include FT_FREETYPE_H 9 | +#include FT_COLOR_H 10 | 11 | #if CAIRO_HAS_FC_FONT 12 | #include 13 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/cygepoll/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/egl-stub/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/epoxy-emscripten/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/expat/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/fontconfig/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/freetype/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/fribidi/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/gdk-pixbuf/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/gdk-pixbuf/changes.patch: -------------------------------------------------------------------------------- 1 | diff --git a/gdk-pixbuf/meson.build b/gdk-pixbuf/meson.build 2 | index 8c944ba..f88168f 100644 3 | --- a/gdk-pixbuf/meson.build 4 | +++ b/gdk-pixbuf/meson.build 5 | @@ -289,9 +289,9 @@ if native_windows_loaders 6 | endif 7 | 8 | gdkpixbuf_bin = [ 9 | - [ 'gdk-pixbuf-csource' ], 10 | - [ 'gdk-pixbuf-pixdata' ], 11 | - [ 'gdk-pixbuf-query-loaders', [ 'queryloaders.c' ] ], 12 | +# [ 'gdk-pixbuf-csource' ], 13 | +# [ 'gdk-pixbuf-pixdata' ], 14 | +# [ 'gdk-pixbuf-query-loaders', [ 'queryloaders.c' ] ], 15 | ] 16 | 17 | foreach bin: gdkpixbuf_bin 18 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/glesv2-stub/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/glib/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/graphene/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/gtk4/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/harfbuzz/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/icu/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/jpeg/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/jslibraries/app_template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Unnamed App 4 | 5 | 6 | 16 | {{{ SCRIPT }}} 17 | 18 | 19 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/libffi/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/pango/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/pango/changes.patch: -------------------------------------------------------------------------------- 1 | diff --git a/meson.build b/meson.build 2 | index ed878ef..6643e31 100644 3 | --- a/meson.build 4 | +++ b/meson.build 5 | @@ -577,7 +577,6 @@ pango_inc = include_directories('pango') 6 | subdir('pango') 7 | subdir('utils') 8 | subdir('examples') 9 | -subdir('tests') 10 | subdir('tools') 11 | 12 | if get_option('gtk_doc') 13 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/pcre2/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/pixman/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/png/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/sass/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/sassc/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/tiff4/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/uapi-stub/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/upoll/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/wayland-protocols/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/wayland/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/xkbcommon/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/xml2/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/sysrootlibs/zlib/.gitignore: -------------------------------------------------------------------------------- 1 | repo 2 | -------------------------------------------------------------------------------- /sdk/toolkit/.gitignore: -------------------------------------------------------------------------------- 1 | meson-gf-toolchain.ini 2 | -------------------------------------------------------------------------------- /sdk/toolkit/bin/gf_file_packager: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | "$_SDK_DIR"/emsdk/upstream/emscripten/tools/file_packager "$@" 4 | -------------------------------------------------------------------------------- /sdk/toolkit/bin/gfar: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | _SDK_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")/../.." 4 | "$_SDK_DIR"/emsdk/upstream/emscripten/emar "$@" 5 | -------------------------------------------------------------------------------- /sdk/toolkit/bin/gfnm: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | _SDK_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")/../.." 4 | "$_SDK_DIR"/emsdk/upstream/emscripten/emnm "$@" -------------------------------------------------------------------------------- /sdk/toolkit/bin/gfranlib: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | _SDK_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")/../.." 4 | "$_SDK_DIR"/emsdk/upstream/emscripten/emranlib "$@" -------------------------------------------------------------------------------- /sdk/toolkit/bin/wayland-scanner: -------------------------------------------------------------------------------- 1 | ../../build-sysroot/bin/wayland-scanner --------------------------------------------------------------------------------