Daniel Mendler's corfu at-point completion package works on tty with child frames, as an example to take a look at.

On Wed, Sep 18, 2024 at 10:27 AM Robert Pluim <rpluim@gmail.com> wrote:
>>>>> On Wed, 18 Sep 2024 16:15:56 +0200, martin rudalics <rudalics@gmx.at> said:

    >> AFAICT from the Elisp Info docs, one is currently free to change the
    >> parent-frame as one sees fit. That is, one can make a child a root
    >> frame, a root frame a child, or change the parent of a child to another
    >> root.
    >>
    >> I'm currently inclined to disallow parent-frame changes on ttys
    >> entirely, unless it is used for something. Couldn't find something
    >> today, but maybe something is a package outside Emacs' repo, or I'm just
    >> ont looking for the right thing.

    martin> I'm not aware of people using multiple frames on TTYs and I have no idea
    martin> whether child frames out there are even intended to be reparented.

I do it all the time. But obviously they each occupy the full
terminal.

    martin> Reparenting is useful because you can set up one child frame for some
    martin> special purpose, make it invisible when you don't need it, and move it
    martin> to another frame and make it visible there whenever you want to.  On
    martin> GUIs, this approach has the advantage that you can avoid the (at least
    martin> here) costly process of setting up frame faces every time anew.  Emacs
    martin> tooltips do that by default and I recall that showing a tooltip every
    martin> time incurred two entire GC cycles here.

Would setting up frame faces be that expensive on tty? Iʼd really love
to have tty child frames, even if they were not blazingly fast.

In any case, I took a quick look at "posframe", it doesnʼt do any
reparenting that I can see.

Robert
--