What the h*ll is happening with Shoes?

A long time without a post! Indeed. I could apologize I could explain. I could make up a story. What to do? What to do? Make up an explanation and explain too much?

There is a shoes 3.3.7 beta in the usual place. There is also a shoes 3.3.8 beta. What’s the story with that? 3.3.7 has one nasty bug for some situations – you can’t manual resize the window down after expanding it. I rarely do that myself and it only happens if the window has menus. I spent so much time trying to find that bug that I created a user layout feature for Shoes 3.3.8 which took way more time than I thought, there much more that can be done and there we are.

Menus? Shoes has menus now? It does in 3.3.7 and I love typing ^Q to quit Shoes apps. I do that a lot. I like it so much I replaced the cobbler buttons with menus. There are likely to be edge cases like that resize bug. Of course you can create and change menus for your app.

You can write shoes apps that use multiple monitors. You wouldn’t do this for machines that don’t have multiple monitors, of course.

You can (try) to provide a Gtk3 theme for Linux and Windows. I say try because it’s a lot harder that you think. Themes are often tied to ‘theme-engines’. There are several engines, not available everywhere, each with multiple versions and bugs. For Shoes we can’t depend on a theme engine so the theme has to be engine free – good luck finding one of those on the internet. Also many themes depends on the version of Gtk3. My version of GTK3 is not going to be the same as yours. Future versions of Shoes will use a newer Gtk3 version. But, if you want to write your own Shoes theme, you can do it.

There is a new settings class. Themes and monitors and menu enabling have to happen very early when shoes gets initialized so they are part of anew settings class that reads a startup.yaml file (if you have one). Note there are two user fields that someone clever could use to prevent theft or …

Merge packaging is provided from a Wizard in Cobbler. This used to be 3 scripts that only a few people knew about. It merges your app with Shoes and hides Shoes. It is NOT platform independent. Shoes Windows can merge Shoes Windows. OSX for OSX. Linux x86 for Linux x86. Each one has very unique requirements for installers. Yes, they use installers. Shoes provides some help with the installers but you’ll need to learn them. Just like a real application developer.

You might detect a theme for Shoes 3.3.7 — writing real applications. Menus, themes, installers – It’s all in the manual and see the wiki.

Everybody hits the wall on using Flows and Stacks to do layout. Your complaints (mine too) have been heard. Shoes 3.3.8 provides a general ‘layout’ class. See the wiki article and this github issue. It lets you write your own layout manager. You could do something similar with Shoes Widget class. Almost. Mostly for proof of concept, two new user layouts are provided – written in Shoes/Ruby, a simple Grid (GridBag) and something close to the AutoLayout used by Apple and some JavaScript frameworks. These are good enough to play with. AutoLayout is non-trivial – it uses the Cassowary-ruby gem to solve a group of constraints. There’s even a Visual Format Language (VFL) parser available.

That’s what I’ve been doing.

Leave a Reply

Your email address will not be published. Required fields are marked *