I think FreeCAD badly needs operation validation. That is, instead of trying some operation and failing with errors in Python console or error dialog, there should be some validation step whether the operation would fail before it happens.
As to how to communicate the future failure to the user, that's a secondary concern. Options I can think of are:
- show a transparent disappearing notification message (like in Krita)
- disable/hide the UI element which corresponds to invalid operation in a given context
- hide/show highlight/dim UI elements that correspond to objects to which operation is applicable
But again, we should have operation validation in the first place.
And for operation validation to work we need a strict type system. With link feature, duck typing and even lack of operation/object types themselves we can't be sure whether operation is applicable in a given context or not.
So another option is trying, failing and reverting. This means errors should be recoverable. But they're often not. That is an operation that leads to invalid state needs human intervention to bring it back. Edit history is also lacking, that is the "Undo" button not always work (operation transactions are not used consistently).
So the problem is much deeper than the lack of transparent tooltips/notifications.
The simplest solution would be to replace the error dialog with this splash notification. But error messages are also lacking and often not helpful (e.g. error message with stacktrace)