Design thoughts about new FVWM-Themes Center GUI

Hi Thomas,

I’ve done some tests last days with Glade3, GTK2, perl and FVWM’s perllib and all works without additional dependencies together :smiley:

The Themes Center GUI would look like KDE 3.5 Control Center - left side a tree, right side the options/configurations.

In this GUI I combined the following GUIs in one:

  • Themes Center GUI
  • Global Feel GUI
  • Theme Settings (form)

Here’s an overview what I thought how to sort the different parts to an intuitive tree:

[code]+ Theme Manager
- Theme Selection (with Picture)

  • Background
    • No picture (from Theme-Center GUI -> General Settings -> Variants: Disabled)
    • Picture (default: background from selected Theme)
      -> list of all available theme backgrounds with mini picture.
      Also a change button for search other pictures
  • Bindings (default: bindings from selected Theme)
    • Keyboard
    • Mouse
    • Strokes
      -> A table with all bindings with buttons for delete, edit and add
  • Window Look
    • Buttons (default: buttons from selected Theme)
      -> list of all available theme buttons with picture
      Also an activate button
    • Windows behaviour
    • Transient windows (from global feel)
    • Window Animation (from global feel)
    • Colors (only Window related colors)
  • Global Feel (default: global feel from selected theme)
    • Focus & Placement
    • Move & Resize
    • Paging & Mouse parameters
      • Switch Mouse button from 2 to 3
      • Mouse wheel activate
  • Global Look
    • Colors (from selected Theme)
      • Modules
      • Applications
    • Fonts
      • Modules
      • Applications
    • Menus
      • General
        • Gnome 1 (needed?)
        • Gnome 2
        • KDE 2, 3, 4
          -> to be discussed
      • Menu System (Debian, Mdk, …)
        -> to be discussed
      • Auto Menus Headline
        -> to be discussed
      • Menu style
      • Menu programs
    • Sound
      • Sound backends
      • Sound bindings
    • Styles
      • Cursors
        -> to be discussed
      • Icons
        -> to be discussed
      • Modules
      • Applications
    • Xinerama Support
      -> to be discussed
  • Modules
    -> to be discussed
  • Functions
    • General
    • Applications
      -> to be discussed
  • Events
    -> to be discussed
  • Startup
    -> to be discussed
  • Session Manager
    -> to be discussed[/code]

For the following parts I haven’t found a place yet:
Auto Raise

Other suggestions and comments are welcome :slight_smile:

– Thomas

Hi Thomas.

Excellent. :slight_smile: Just be careful though, since I am not sure anymore if Glade requires some parts of itself installed at compilation time to produce the necessary files from your project. I don’t think so, I think they solved that – I don’t want to ever get into a state (assuming this is successful) where fvwm-themes has to depend on parts of Glade.

Hehe – there is a slightly irony in taking that as an example. If you look historically at KDE and GNOME, KDE has always been the DE which has given outright “option overload” in everything it does, providing every option under the sun, and throwing it at the user. GNOME, on the other hand, stands back, and gives – in comparison – quite reticent options about what you can and cannot change.

FVWM is then more like KDE in that whilst it has a lot more options, I think the GNOME approach here is incredibly important; you need a strike a very important balance, between exposing enough features to be useful to the user by default, but ensuring those options chosen to be exposed meet most of the common needs. This need not be anything complicated, but it might need some thought.

This is where I start to get a little hesitant to be honest – because whilst I see the logic of combining everything into one interface, the reason why they’re separate at the moment is because they can be called from multiple places. However, I’ve not seen this interface yet, so I am quite intrigued by it. :slight_smile:

You must ensure you take the ImagePath setting into account here.

I wonder if the PrintInfo Bindings command would help here?

Have you ever read the following:

I wrote it for the reasons I outlined above – but also because specifically Focus and Placement policies will need a lot of thought to be kept minimal, with what I was also saying earlier. It’s certainly achievable.

Let’s not forget (as I seem to) that the point of fvwm-themes is to make one’s life easier. The options are there to be used – if I want to break the mould and dig around and change stuff outside of what I am being offered via fvwm-themes, I’m doing so because I want to – so the remit of fvwm-themes in this instance is already broken.

Difficult to do – especially for modules. Each module can’t have a global font applied to it, lest its own module config overrides it.

Nope, it does. Along with KDE2.

A lot of that hinges on me getting my finger out my arse and writing this XDG replacement so that it doesn’t suck. I’ve just not had the time.

Menu programs?

I would assume this is via FvwmEvent? In which case, it’s a nop.

I would hope SVG here, since FVWM supports it – although that would mean special-casing the version of FVWM which fvwm-themes is using, not having SVG to do something clever.

Yes – currently it’s all about xrandr, which FVWM doesn’t yet support, although there’s scope for it to do so – there’s preliminary code in libs/FScreen.h

Please do discuss. :slight_smile:

Well, animation is tricky – perhaps put it in with a style option. Banner is a startup thing, and auto-raise is just an option applied to a window.

I’m really impressed by this, Thomas – this is excellent work indeed! Do you have a GUI demonstrating this, or some Glade files I can look at yet?

Excellent work indeed.

– Thomas Adam

Glade3 doesn’t generate code anymore. It generates only a xml file. There are two ways to implement the GUI description:

  1. it’s own format .glade. But therefore you need libgtk2-gladexml-perl to interpret the xml file. Not usable because it’s a new dependency.
  2. the native xml format is used by GtkBuilder. GtkBuilder is a part of Gtk2. Great - no dependency! I’ve tested it on the virtual machine glade isn’t installed and the example works out of the box :smiley:

:wink: you’re right. But for me in the past the KDE Control Center fits all my needs to configure as much as needed. GNOME instead reduce all too much and if you want to change special thing you have to do it like on Windows - hacking the “registry”. Not the right way.

Yes its a tightrope walk. Therefore each option/configuration should discuss if needed or not.

The first step I will do is wrapping the old GUI functionality into the new one, because I don’t want to make any changes to the base of FVWM-Themes and its themes.
I saw many parts scattered over these seperate config tools. Therefore I put the three ones in one. It should work so as you configure over all three tools because the theme which is set sets first all options (like in the originals).

I want to use the same functions and variables as in the original tools. In this case the image path will set automatically. But it should discuss to generate a global background folder where all backgrounds will be located.

You mean the Info in the Theme Center? Not really:

Theme: Default (19 components) Component: bindings Properties: 2 options (2*2 choices)
These properties are: “Switch mouse 2<->3” and “Restrict modifiers (add shift)” what ever this means …

It’s very difficult to show all the special stuff FVWM can do but with a generic interface and a bunch of good examples the user can expand this parts to his own wishes. But this should discuss in a later step. First I only want to display the available bindings of the loaded theme. The only possibility for the user is to write the sequence in a text field for example and the GUI put it in the active bindings config.
With “strokes” I haven’t any knowledge, so I have to check first if it’s possible to give the user an add/edit option but for keyboard and mouse bindings it’s possible.

I red it in the beginning of using FVWM :smiley:
As I said it above - first the existing options will list as in the config GUIs and not more. Don’t change a running system :wink:
The only thing what should be done is to make tooltips for each option to understand for what the will use.

Yep. I haven’t make many thoughts about this config part. Perhaps the modules with fonts could listed … but I think this isn’t easy … I printed it here cause I found it in the FVWM-Themes-Center GUI … For the sake of completeness :wink:

Ok, deleted …

No problem. Let it be a placeholder :wink:

The same as with “Fonts” - I printed it here cause I found it in the FVWM-Themes-Center GUI … sake of completeness :smiley:

The only thing I would let there is the sound bindings. But first it will be a placeholder

In my last config I took svg for icons, decor and buttons. It’s great to use because it can place in that size you need (it’s intresting for resizing/reducing on different screen resolutions. Let’s talk later about that …

It could be important with the pager - switching automatically to two screen parts if a second monitor is connected. But this is a extended feature and should wait.

I tested it in FVWM-Themes but it doesn’t work. But this could be a problem about my understanding what was animated …

ok, I will put it to “Windows behaviour”

Not at the moment. I want it first discussed. I have made an simple example to test if it works - with perl and second with FVWMs perllib. It’s the example in FvwmGtk in conjunction with GtkBuilder and the xml file. If you want it I can send it to you. Or you wait a little until I make a Theme Center example.
At the moment I know which widget i have to take for the right and for the left side but I don’t know how to connect both together. But this will be a question of time :wink:

Thanks :smiley: :blush: :smiley:

– Thomas

No, I mean in terms of showing the bindings currently active for that theme.

It’s possible, yes. There’s two ways stroke bindings can work - the best way for us to represent it should be to model the bindings laid out on a keyboards numpad. I think this is in the manpage, I’ve not looked, but take the following layout:

7  8  9
4  5  6
1  2  3

It’s then possible to create a binding for Stroke as:


which would be a large “N” shape with the mouse.

Oh, it works. The animation comes from the FvwmAnimate module which animates a window iconifying and deiconifing using different animations.

ok, I will put it to “Windows behaviour”

No, that’s fine. I can wait. :slight_smile:

If you need any help (I know GTK quite well), just shout.

– Thomas Adam

Hi Thomas,

I’ve sent you a preview of the themes GUI. What do you think about?

– Thomas

I won’t get to looking at this until the weekend.

– Thomas Adam

so I guess you’re not sharing the preview with other people?

There isn’t anything to see yet.

– Thomas Adam

What a pity. This is intersting stuff :slight_smile:

At the moment only the Gtk GUI (Glade file) exists. And inside only a preview of the theme manager and background is available.

I’m checking how I have to connect the GUI elements with perl. I found a good tutorial about that. But it’s without glade. So I must play around
with the functions first.

Please be patient …


– Thomas