Workbench icon indicating copy to clipboard operation
Workbench copied to clipboard

Code playground for GNOME πŸ› οΈ

Workbench

Learn and prototype with GNOME technologies

Download on Flathub

Workbench goal is to let you experiment with GNOME technologies, no matter if tinkering for the first time or building and testing a GTK user interface.

Among other things, Workbench comes with

  • realtime GTK/CSS preview
  • library of examples
  • 1000+ icons
  • JavaScript and Vala support
  • XML and Blueprint for describing user interface
  • syntax highlighting, undo/redo, autosave, session restore
  • code formatter
  • console logs

Testimonials

β€œ It is an essential tool for those who develop applications with GTK ” β€’ β€œ as someone who is learning GTK, Workbench is definitely a must have! ” β€’ β€œ created a simple mockup using the amazing Workbench app ” β€’ β€œ It used to be hard but Workbench helps me learn GTK. ” β€’ β€œ I recommend it even to those who are new to GTK ” β€’ β€œ This tool has simplified my life by saving my time drastically. ” β€’ β€œ Gone too wild playing with Workbench ”

Tips and tricks

Disable code formatting

Workbench uses the prettier code formatter. If you need to exclude some code you can use special comments.

JavaScript

// prettier-ignore
matrix(
  1, 0, 0,
  0, 1, 0,
  0, 0, 1
);

CSS

/* prettier-ignore */
.my    ugly rule
{

}
Turn a prototype made in Workbench into an application

Use GNOME Builder to start a new project using the appropriate GNOME Application template and copy paste your Workbench code.

Translation

If you'd like to help translating Workbench into your language, please head over to Weblate.

Translation status

Thank you for your help!

Development

  1. Install GNOME Builder
  2. Open Builder and select "Clone Repository..."
  3. Clone https://github.com/sonnyp/Workbench.git (or your fork)
  4. Press the Run β–Ά button

If you used an other method, don't forget to fetch the submodules.

cd Workbench
git submodule update

Feel free to come by #workbench:matrix.org.

Packaging

Please do not attempt to package Workbench any other way than as a Flatpak application.

It is unsupported and may put users at risk.

Credits

Workbench would not be possible without

GTK, GLib, Flatpak, GtkSourceView, libadwaita, VTE, GJS, Blueprint, icon-development-kit, Vala

and the GNOME community πŸ–€

Copyright

Β© 2022 Sonny Piers and contributors

License

GPLv3. Please see COPYING file.

Except for everything under src/Library/demos which is in the public domain under the terms of CC0 1.0.

Maintainers

Release

$V = 45

# Pull translatons
git merge --squash l10n
git commit -m 'Update translations'

# Update version
# bump version in meson.build
git add meson.build

git commit -m '$V'
git tag '$V'
git push
git push origin $V

Update icons

cd icon-development-kit-www
git pull
cd ..
cp -r icon-development-kit-www/img/symbolic/**/*.svg data/icons/hicolor/scalable/actions/
cat icon-development-kit-www/_data/icons.yaml | python -c 'import sys, yaml, json; print(json.dumps(yaml.safe_load(sys.stdin.read())))' > src/icon-development-kit.json
Testimonials

From Mirko Brombin creator of Bottles

My favorite tool is definitely Workbench, an application that allows me to compose GTK interfaces with XML/Blueprint, JavaScript, and CSS, seeing the results in real-time. This tool has simplified my life by reducing my time drastically. It is an essential tool for those who develop applications with GTK and I recommend it even to those who are new to GTK.

https://console.substack.com/p/console-112


From Marco Melorio creator of Telgrand

GSoC coding period started on Monday, so this is a good time to blog about what I’ve started working on and what’s my milestone to finish the project. First off, I’ve created a simple mockup using Sonny Piers’ amazing Workbench app. This is the first step in knowing how we want the UI to look like, at least in the first iteration.

https://melix99.wordpress.com/2022/06/17/gsoc-update-1-planning/


Workbench has been great! It used to be hard to mess around with GTK but Workbench helps me to learn GTK.

https://twitter.com/synthesizedecho/status/1528958932911280129

Gone too wild playing with Workbench and Blueprint.

https://mastodon.online/@waimus/108582108701889960

as someone who is learning GTK, I can confirm that Workbench is definitely a must have for me!

https://fosstodon.org/@TheEvilSkeleton/108598098682948266