A GUI toolkit written in pure Go.
This repository has been archived on 2023-08-08. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Sasha Koshka b08cbea320 Overhauled the element interfaces
Instead of the previous parenting model where parents would set
child callbacks during adoption by probing for callback setters,
child elements will instead probe their parents for notify methods
listed in the standard parent interfaces. This means that an
element cannot be half-parented to something, nor can it be
parented to two things at once. Parent elements may themselves
fulfill these interfaces, or they can pass a hook that fulfills
them to the child.
2023-03-14 17:08:39 -04:00
artist List and Piano do shattering properly 2023-03-12 01:47:58 -05:00
assets Added simple readme 2023-01-11 16:01:06 -05:00
backends/x X backend now follows API 2023-03-12 01:06:12 -05:00
canvas Default elements compile 2023-02-26 22:20:17 -05:00
config Cleaned out the old theme code and moved padding and margins to theme 2023-02-26 00:44:44 -05:00
data Atomized the functionality of the base tomo package 2023-02-02 01:47:01 -05:00
defaultfont
dirs Added thing to get standard directories 2023-02-03 17:06:51 -05:00
elements Overhauled the element interfaces 2023-03-14 17:08:39 -04:00
examples Added untested label collapse 2023-03-13 17:10:27 -04:00
fixedutil Added fixed precision point utilities 2023-02-15 18:41:03 -05:00
flow Added an example of how to use the flow 2023-01-12 15:33:50 -05:00
input Atomized the functionality of the base tomo package 2023-02-02 01:47:01 -05:00
layouts Removed references to flexible from layouts, x backend, core 2023-03-11 00:43:26 -05:00
popups Large icons in the default set! 2023-03-10 18:53:27 -05:00
shatter Added a shatter function to subtract rectangles from a rectangle 2023-02-11 21:07:35 -05:00
textdraw Quelled some of the strangeness 2023-03-11 18:27:16 -05:00
textmanip Keyboard text selection is now no longer broken lmao 2023-02-16 14:09:23 -05:00
theme Removed references to flexible from layouts, x backend, core 2023-03-11 00:43:26 -05:00
xcf Large icons in the default set! 2023-03-10 18:53:27 -05:00
backend.go Backends must now accept Config and Theme 2023-02-03 01:25:45 -05:00
go.mod We now have an untested lone scrollbar element 2023-03-09 18:15:52 -05:00
go.sum We now have an untested lone scrollbar element 2023-03-09 18:15:52 -05:00
LICENSE Added license 2023-01-11 17:57:29 -05:00
README.md Added link to github mirror 2023-02-02 17:57:56 -05:00
tomo.go im dumb as hell bruh 2023-03-08 21:05:56 -05:00

tomo

This repository is mirrored on GitHub.

Please note: Tomo is in early development. Some features may not work properly, and its API may change without notice.

Tomo is a retro-looking GUI toolkit written in pure Go. It is designed with these goals in mind:

  • Modularity: the core of Tomo is mostly composed of interfaces—and the overwhelming majority of its code resides in pluggable modules. If you don't need it, then dont import it—and you can be assured it won't be there.
  • Extendability: during the design of Tomo's API, use cases such as creating custom backends, elements, and layouts were given just as much importance as normal application building. Your custom element is a first-class citizen.
  • Independence: Tomo is minimally dependent on code outside of the Go standard library. Because of this, the file size of a compiled Tomo application is typically very small.
  • Frugality: Tomo foregoes things like animations and anti-aliasing in order to use a minimal amount of system resources without even having to touch the GPU.
  • Consistency: Tomo's design is not only consistent within itself, but also with the Go standard library. If you've worked with Go in the past, Tomo will feel pleasantly familliar.

You can find out more about how to use it by visiting the examples directory, or pull up its documentation by running godoc within the repository. You can also view it on the web on pkg.go.dev.