Ok, what you are calling "frame" are the "margins". The "frame" is a GTK thing around the editing widget and is set by GTK themes. "Margins" are part of the editing widget and are set by "colour schemes" as in this repo. (Maybe "themes" is a bad name for the repo, but thats what it was initially called and thats what its stayed).
The editing widget is not affected by GTK themes since its unrealistic to expect global desktop themes to set values for things like "line_numbers" or "folding" or "C program types" etc, and so the Geany "colour schemes" fill that gap.
But it appears complicated.
`filetypes.common` (overridden by user `filetypes.common`) sets common styling settings.
`filetypes.XXX` sets filetype dependent styling settings for filetype XXX (also overridden by a user version), mostly the styles for syntactic elements of the filetype.
Each setting can be set to a value or a named style.
`filetypes.common` also has a default set of values for the named styles.
The values of the named styles are set by the "colour schemes" if they want to change the default.
So if a setting in `filetypes.common` or `filetypes.XXX` is set to a named style it can be set by the colour scheme, but if its a value the colour scheme can't change it.
For example translucency values are set to values in `filetypes.common` because on some very olde platforms changing them would crash Geany so it was better they were not fiddled with by colour schemes which are platform independent, but values are overridable by user `filetypes.common` (on the doubtful assumption the user knew what platform they were on :-).
This way colour schemes do not have to set values for each syntactic element for each programming language, just a common set of named styles and the `filetypes.*` files map them to actual common or programming language settings.