
Build your own Terminal using Qt - igneo676
https://donniewest.com/build-your-own-minimal-and-scriptable-terminal
======
davidad_
I’m embodying an archetype here, but I can’t resist.

The use of QTermWidget makes this almost entirely an exercise in building a
hello-world Qt app and very little about building a terminal. That is all very
well if you are looking to learn Qt—which is by no means an unworthy aim—but I
wouldn’t use the adjective “minimal” to describe any Qt app, no matter how
short its main().

If you are actually looking for a minimal terminal, whose source code is
intelligible and readily customizable, look no further than
[https://st.suckless.org/](https://st.suckless.org/)

~~~
sjmulder
Good suggestion! I found st a joy to read. Only a couple of C files, few
frills and a straightforward coding style. I can see what the suckless folks
are getting at.

Slightly OT here but I was thinking about what a suckless UI system would be
like - one without excessive layering and as few moving parts as possible. I'm
fairly sure it should be possible by avoiding truetype fonts and using the
framebuffer directly. That would preclude ubiquitous animation but smooth
scrolling and dragging is perfectly doable even with a single buffer.

~~~
racer-v
What would be the win in avoiding TrueType? Seems like we could easily convert
any TTF files to PostScript Type 1 if there were an advantage to be gained.

~~~
sjmulder
This might be a misconception but I was under the impression that truetype
fonts are a complexity and security minefield. In particular I noticed an st
developer complaining (on the mailing list, probably) about the lack of a
suckless font library when I concluded that it might be better to just do
without them.

~~~
racer-v
Sounds like a noble endeavor. From
[https://suckless.org/project_ideas](https://suckless.org/project_ideas)

 _Suckless font rendering library_

There is libdrw in suckless now, which still uses xft and fontconfig.
Fontconfig and xft are ugly and require too much internal knowledge to be
useful. The next logical layer in Linux evolved as pango and cairo. Both of
course added HTML formatting and vector drawing. This is not needed to simply
draw some text somewhere. And this is what a suckless font rendering library
should do: Give it a font string and render at some position the given font
without having to care about font specifics.

------
heidar
> Build Your Own Minimal Terminal

> we’ll be installing qtermwidget

I'm guessing the author meant visually minimal, rather than minimal footprint.

------
eptcyka
I thought this would be about building the minimal input parser and line
printer, instead you just _import_ the terminal from Qt and be done with it.
This is not minimal by any stretch of imagination.

------
basdp
This has nothing to do with building terminal code. This is just a Qt tutorial
that has just 1 widget and does nothing special besides the general init stuff
for the widget.

------
mmphosis
Does anyone else wish to use Ctrl+C to copy selected text from their terminal?
And, Ctrl+V to paste?

I miss the Command key. Here is a work-around:

    
    
      # setxkbmap -option ctrl:swap_lalt_lctl​
    

I map all of the Alt keys using AutoKey when in the Terminal so that they type
the equivilent Ctrl key, and all of the Ctrl keys mapped so that they do what
I expect. For example Ctrl+C types Ctrl+Shift+C which in the Terminal I am
using will copy selected text to the clipboard.

~~~
heuiop
What about Ctrl+Alt+c and Ctrl+Alt+v? These work on rxvt.

~~~
mmphosis
I would probably map Ctrl+C to Ctrl+Alt+c and Ctrl+V to Ctrl+Alt+v, if I was
using rxvt.

------
drwu
When I was using `xmonad`, I built a VTK terminal into the WindowManager. The
whole implementation was just several lines in Haskell, using its wrapper for
VTK.

------
santaclaus
It is Qt, not QT!

~~~
Svenstaro
It's also Arch Linux, not Archlinux. I guess it's hard to keep track of all
the names in software nowadays.

------
mromanuk
Love to see Qt in a tutorial in HN; fond memories.

