thanks for the detailed reply.
Why do I need to move a grob?
For the simple fact that any score, in order to have a * professional * appearance, needs HUNDREDS of these adjustments.
Even the simplest ones.
I am a convinced open source developer and already 10 years ago I used Lilypond to create my scores, because I wanted to avoid Finale, Sibelius and other proprietary software (which I used before). In the end, I was forced to use the Lilypond + Inkscape combination, and here is an example of my scores:https://file.io/a5phCU
This type of music requires so many adjustments that it is impossible to achieve with Lilypond, unless you spend a very very very long time with the trial and error process. But I can assure you that the same adjustments are also necessary for nineteenth-century scores, if you want to give them a professional look. I can show you many and many examples.
This year I started writing music again and I didn't want to abandon the idea of using Lilypond. Because I needed something less time consuming than Finale, because I don't use proprietary software and because I use Linux. So I decided to go back to Lilypond by writing an editor that allows you to make all these adjustments and at the same time guarantees you the power of Lilypond. Without having to use the combination with Inkscape, because it also has many disadvantages. Fortunately, thanks to the script I created for the curves, I understood that my idea could also be extended to the other grobs. So I dedicated myself to the LilyJSSVG editor.
Here is what came out:https://github.com/paolo-prete/LilyJSSVG/blob/master/LilyJSSVG.gif
Try making these micro- (or big) adjustments with just the text editor. You will go crazy.
Note one * very important * thing. This Editor adds nothing and nothing to Lilypond's logic. And it doesn't add any new feature. None at all. It simply allows you to modify the properties of the grobs * exactly as you do with Lilypond *. Except that the positions of these properties are calculated with the mouse instead of the tedious trial and error method.
Then, in your .ly file you will have
\ jsBeam "id" "positions" # '(1. 3)
\ override Beam.positions = # '(1 .3)
TBH I don't understand what's strange or what's "misuse" in all of this (I'm not referring to you: it's a general discussion). And in any case, I continue on my way, even if I will not receive general support for the project: in fact I am already using this project for my compositions and I am getting a result absolutely identical to that of the above pdf extract of my score.
A GUI for cross-staff editing has already been implemented in the editor. And in the next few days I will show you how it is possible to edit very complex piano scores with this feature.
Now, going back to my initial question, since you have given me very kind help, I am trying to pull out from Lilypond (and put in my editor) also properties like X-offset, padding etc. I can accomplish all this in a short time. I just need to know what is the offset of the objects from their reference point, depending on the property.
It is also very important to me if someone helps me clean up the Scheme code, because I don't have time to learn the details of the language. The code works, but needs to be cleaned up of very noisy (and long) statements which can be replaced by better syntax.
And of course it is also useful if someone helps me prepare the documentation for the editor. But first of all, I want to implement the properties discussed above.