All Projects → thesquash → Stlwrt

thesquash / Stlwrt

Licence: other
A library which emulates many versions of GTK and visually resembles GTK+ 2

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Stlwrt

Code
Code editor designed for elementary OS
Stars: ✭ 324 (+690.24%)
Mutual labels:  gtk, gtk3
Xi Gtk
a GTK front-end for the Xi editor
Stars: ✭ 338 (+724.39%)
Mutual labels:  gtk, gtk3
Dotfiles
Sway acid dark
Stars: ✭ 330 (+704.88%)
Mutual labels:  gtk, gtk3
Wingpanel Indicator Nightlight
A Wingpanel indicator for Night Light
Stars: ✭ 20 (-51.22%)
Mutual labels:  gtk, gtk3
Glance
A visual Haskell
Stars: ✭ 620 (+1412.2%)
Mutual labels:  gtk, gtk3
Wdisplays
GUI display configurator for wlroots compositors
Stars: ✭ 302 (+636.59%)
Mutual labels:  gtk, gtk3
Gradio
Stars: ✭ 335 (+717.07%)
Mutual labels:  gtk, gtk3
principles
Remember Dieter Rams' ten principles of good design on elementary OS
Stars: ✭ 38 (-7.32%)
Mutual labels:  gtk, gtk3
Celluloid
A simple GTK+ frontend for mpv
Stars: ✭ 541 (+1219.51%)
Mutual labels:  gtk, gtk3
Appcenter
Pay-what-you-want app store for elementary OS
Stars: ✭ 358 (+773.17%)
Mutual labels:  gtk, gtk3
Node Gtk
GTK+ bindings for NodeJS (via GObject introspection)
Stars: ✭ 287 (+600%)
Mutual labels:  gtk, gtk3
Quicktile
Adds window-tiling hotkeys to any X11 desktop. (An analogue to WinSplit Revolution for people who don't want to use Compiz Grid)
Stars: ✭ 719 (+1653.66%)
Mutual labels:  gtk, gtk3
Terminal
Terminal emulator designed for elementary OS
Stars: ✭ 281 (+585.37%)
Mutual labels:  gtk, gtk3
Plotinus
A searchable command palette in every modern GTK+ application
Stars: ✭ 805 (+1863.41%)
Mutual labels:  gtk, gtk3
wingpanel-indicator-network
Wingpanel Network Indicator
Stars: ✭ 22 (-46.34%)
Mutual labels:  gtk, gtk3
Eww
ElKowar's wacky widgets
Stars: ✭ 322 (+685.37%)
Mutual labels:  gtk, gtk3
switchboard-plug-bluetooth
Switchboard Bluetooth Plug
Stars: ✭ 23 (-43.9%)
Mutual labels:  gtk, gtk3
nicotine-plus
Graphical client for the Soulseek peer-to-peer network
Stars: ✭ 601 (+1365.85%)
Mutual labels:  gtk, gtk3
Sunflower
Small and highly customizable twin-panel file manager for Linux with support for plugins.
Stars: ✭ 347 (+746.34%)
Mutual labels:  gtk, gtk3
Marker
🖊 A gtk3 markdown editor
Stars: ✭ 644 (+1470.73%)
Mutual labels:  gtk, gtk3

STLWRT

For anyone who does not know yet, STLWRT is the successor to GTK+ 2, originally based almost entirely on the original code from GTK+ 2. STLWRT has deviated from the GTK+ 2 code, however, and continues to deviate. Ultimately, the goal is to be able to run most GTK+ 2 and many GTK+ 3 applications using the same STLWRT library, while both types of applications keep a conservative, traditional GTK+ 2-esque look and feel.

I emphasized the word "the" above because, as of right now, I do not know of anyone else who has any actively maintained fork of any version of GTK. If anyone who has such a fork happens to be reading this, please drop me a line and let me know; I'd be interested in the design decisions you are making and have made, and I hope we may be able to collaborate somehow.

What's new?

Progress has been slow since the mid-to-late fall, as anybody who reads the commit logs can see. The stuff I've been doing lately is STLWRT-ization of the roughly 260 source files. Specifically, all STLWRT objects need to stop using object instance structures directly and need to go through at least one generated function. As an example, the following hypothetical function which packs a widget inside of a GtkDialog:

    void
    gtk_dialog_really_stupid_function (GtkDialog *dialog, GtkWidget *child)
    {
      g_return_if_fail (GTK_IS_DIALOG (dialog));
      g_return_if_fail (GTK_IS_WIDGET (child));
    
      gtk_container_add (GTK_CONTAINER (dialog->vbox), child);
    }

...needs to become:

    void
    gtk_dialog_really_stupid_function (GtkDialog *dialog, GtkWidget *child)
    {
      GtkDialogProps *dialog_props;
    
      g_return_if_fail (GTK_IS_DIALOG (dialog));
      g_return_if_fail (GTK_IS_WIDGET (child));
    
      dialog_props = gtk_dialog_get_props (dialog);
    
      gtk_container_add (GTK_CONTAINER (dialog_props->vbox), child);
    }

Of course, many functions are a lot longer than this, so the dialog_props can be used multiple times in the same function, or maybe even shared between local functions which have no need for ABI compatibility. src/gtkbbox.c is an example of a coding nightmare, something which was allowed to collect a lot of bad coding practices over time. A cursory look at GTK+ 1.0.0 source code reveals that GtkButtonBox existed even back then in 1998, when GTK worked much differently than it does now. So in short, there are some files which are hard to convert because they're full of inconsistencies, such as inconsistent variable naming schemes.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].