The best way to enter arbitrary Unicode characters on Linux I have found is fcitx's https://fcitx-im.org/Unicode
Just press Ctrl-Alt-Shift-U, type (part of) the name of the character and select from the list of results.
— (em dash), ︱ (presentation form for vertical em dash), ⤐ (rightwards two-headed triple-dash arrow), ﷽ (arabic ligature bismillah ar-rahman ar-raheem) are all easy to enter.
https://www.x.org/releases/X11R7.7/doc/libX11/i18n/compose/e...
For example, em dash is Compose+minus+minus+minus, en dash is Compose+minus+minus+period.
It's also useful for foreign glyphs like Compose+a+a for the Nordic å, Compose+s+s for German ß (with Shift it becomes ẞ, which the new German orthography rules officially recognise!), Compose+quote+<vowel> for the various umlauts and Compose+i+period for the dotless ı (with Shift it becomes the dotted İ).