Here is GEGL syntax to do sketchify

edge-neon radius=3 amount=0.4
color-to-alpha color=black
color-overlay value=#d3cb95
dst-over aux=[ color value=#50956c
over aux=[ noise-solid x-size=2 y-size=2 detail=7 opacity value=0.15 ]
]
Please note gegl:dst-over is the behind blend mode
and gegl:over is the normal blend mode
Here are the nodes defined with custom names, notice how gegl:color-to-alpha is named c2a
and cloudy is short for gegl:noise-solid, that's because we can name them whatever we want
GeglNode *input = gegl_node_get_input_proxy (gegl, "input");
GeglNode *output = gegl_node_get_output_proxy (gegl, "output");
GeglNode *edge = gegl_node_new_child (gegl, "operation", "gegl:edge-neon", "radius", 3.0, "amount", 0.4, NULL);
GeglColor *black = gegl_color_new ("#000000");
GeglNode *c2a = gegl_node_new_child (gegl, "operation", "gegl:color-to-alpha", "color", black, NULL);
GeglNode *behind = gegl_node_new_child (gegl, "operation", "gegl:dst-over", NULL);
GeglNode *normal = gegl_node_new_child (gegl, "operation", "gegl:over", NULL);
GeglNode *color = gegl_node_new_child (gegl, "operation", "gegl:color", NULL);
GeglNode *coloroverlay = gegl_node_new_child (gegl, "operation", "gegl:color-overlay", NULL);
GeglNode *cloudy = gegl_node_new_child (gegl, "operation", "gegl:noise-solid", "x-size", 2.0, "y-size", 2.0, "detail", 7, NULL);
GeglNode *opacity = gegl_node_new_child (gegl, "operation", "gegl:opacity", "value", 0.15, NULL);
Now lets define the property redirects
gegl_operation_meta_redirect (operation, "color1", coloroverlay, "value");
gegl_operation_meta_redirect (operation, "color2", color, "value");
gegl_operation_meta_redirect (operation, "seed", cloudy, "seed");
gegl_operation_meta_redirect (operation, "cloud_size", cloudy, "x-size");
gegl_operation_meta_redirect (operation, "cloud_size", cloudy, "y-size");
gegl_operation_meta_redirect (operation, "edge_amount", edge, "amount");
Now lets define the properties
property_double (edge_amount, _("Edge Amount"), 0.4)
description (_("Edge amount"))
value_range (0.0, 1.0)
property_color (color1, _("Foreground Color"), "#d3cb95")
description (_("The color of the edge extracted content"))
property_color (color2, _("Background Color"), "#000000")
description (_("The background color"))
property_double (cloud_size, _("Cloud Size"), 2.0)
description (_("Cloud texture size"))
value_range (1.0, 10.0)
property_seed (seed, _("Cloud Seed"), rand)
Now lets write the defined GEGL Graph
gegl_node_link_many (input, edge, c2a, coloroverlay, behind, output, NULL);
gegl_node_connect (behind, "aux", normal, "output");
gegl_node_link_many (color, normal, NULL);
gegl_node_connect (normal, "aux", opacity, "output");
gegl_node_link_many (cloudy, opacity, NULL);
Before I explain, keep in mind blend modes in GEGL have unique abilities such as storing multiple filters or other blend modes inside them something GIMP cannot do. And this case does exactly that
What's going on?
The first three GEGL nodes gegl:edge-neon, gegl:color-to-alpha and gegl:color-overlay are being applied linearly but then a behind blend mode is introduced after gegl:color-overlay, Inside the behind blend mode is gegl:color, then a unique GEGL feature that GIMP does not have happens, a following node representing the normal blend mode is put inside the behind blend mode, a blend mode inside a blend mode, and keep in mind each blend mode can store infinite nodes.
The normal blend mode (gegl:over is put inside the behind blend mode (gegl:dst-over)
Put in the simplest way possible
input, BEHIND, output,
BEHIND aux connects to NORMAL
In this filters case behind blend mode has a gegl:color and behind blend mode in it, but remember the normal blend mode can also have content in it to.
input, gegl:edge-neon, gegl:color-to-alpha, gegl:color-overlay, BEHIND, output,
BEHIND aux connects to NORMAL
Inside BEHIND is gegl:color, gegl:normal,
NORMAL aux connects to gegl:opacity
Inside NORMAL is gegl:noise-solid, gegl:opacity
And indeed it does have content, the normal blend mode has gegl:noise-solid inside it followed by a gegl:opacity to make it mostly transparent at 15% opacity.
So explained simply, we have an edge detect, color to alpha and color overlay applied linear, Then the behind blend mode instructs gegl:color to fill behind the edge extract while also housing a gegl normal blend mode for the solid noise and gegl opacity exist within normal so solid noise has an opacity slider.
Now lets wrap things up with the title and description
"name", "mynamehere:sketchify",
"title", _("Sketchify"),
"reference-hash", "waterbottlerrandomwhateverdude",
"description", _("Sketchify edge extraction "
""),
"gimp:menu-path", "<Image>/Filters/Edge-Detect",
"gimp:menu-label", _("Sketchify..."),
NULL);
}
#endif
I'm telling you its worth time to learn GEGL syntax and make true GEGL plugins. 95% percent of what you need to make this a plugin is here, the only thing I didn't do is put it in the correct order and file name
1. first comes property list
2. then comes node definitions
3. then comes the defined graph
4. then comes property redirects
5. then comes title and description
1.5 is where you put the filename, c file name and other few things I excluded.
I wonder if someone will figure out how to convert this to a plugin. If they do it will have two color pickers, edge amount slider and a slider for and button for the solid noise