rpmohn / a4 Goto Github PK
View Code? Open in Web Editor NEWdynamic terminal manager and multiplexer
Home Page: https://a4term.com
License: MIT License
dynamic terminal manager and multiplexer
Home Page: https://a4term.com
License: MIT License
Is a modifier behavior that you would see on any wm possible within the confines of a terminal.
This would mean that once your holding your modifier, multiple keyboard and or mouse actions are now possible and without having to press the modifier for each and every action.
This would go a long for ease of use.
Hi Ross,
I found an issue on how a4 process Italian character that cause a segmentation fault when it is pressed (è,ì,ù,à or ò) :
$
Program received signal SIGSEGV, Segmentation fault.
__stack_chk_fail () at src/env/__stack_chk_fail.c:17
17 src/env/__stack_chk_fail.c: No such file or directory.
(gdb) bt
#0 __stack_chk_fail () at src/env/__stack_chk_fail.c:17
#1 0x000055555556b4df in render_termwin ()
#2 0x00007ffff7f2b086 in tickit_bindings_run_event () from /lib/libtickit.so.3
#3 0x00007ffff7f391ab in ?? () from /lib/libtickit.so.3
#4 0x00007ffff7f39211 in ?? () from /lib/libtickit.so.3
#5 0x00007ffff7f39211 in ?? () from /lib/libtickit.so.3
#6 0x00007ffff7f39211 in ?? () from /lib/libtickit.so.3
#7 0x00007ffff7f3aee1 in tickit_window_flush () from /lib/libtickit.so.3
#8 0x00007ffff7f3b08c in ?? () from /lib/libtickit.so.3
#9 0x00007ffff7f382d2 in tickit_evloop_invoke_timers () from /lib/libtickit.so.3
#10 0x00007ffff7f2c065 in ?? () from /lib/libtickit.so.3
#11 0x000055555556c855 in main ()
a4-keycodes run outside a4 show the character correctly:
but if I run a4-keycode from a4 terminal the Italian ( ì ù à ò è ) character pressed is not showed at all.
can you help me to solve the segmentation fault and correctly show the Italian characters ?
Many thanks
Max
In an effort to make installation of a4 much simpler, this puts in all needed prerequisite library source code under the lib/ subdirectory. This also improves flexibility in the event that I want to use a new library feature that isn't yet in the mainstream package managers.
For a full test, you can uninstall all of the unibilium, libtermkey, libtickit, and libvterm libraries on your system, even though that shouldn't be required.
@MaxGyver83 @littlewing7 and anyone else who can test this for me, please post your results here. Thank you! -Ross
I have installed a4
on Ubuntu 20.04. When I start it, I get a segmentation fault.
Backtrace:
>>> bt
#0 0x00007f508ab188d0 in tickit_get_rootwin () from /usr/local/lib/libtickit.so.3
#1 0x00005622a1a2817e in create_rootwin ()
#2 0x00005622a1a2cb18 in startup_a4 ()
#3 0x00005622a1a2d04d in main ()
I have installed libtermkey
via apt:
$ apt policy libtermkey-dev
libtermkey-dev:
Installed: 0.22-1
... and libtickit
and libvterm
as described in the README.
Hi Ross,
I just tried a4 (after seeing its announcement on the suckless mailing list).
After playing around with it for a minute or two, I get a segmentation fault. I can't reproduce it reliably with a certain sequence of the key strokes, but it happened several times after using these commands (in random order):
(I think Ctrl-g .
and Ctrl-g Enter
were the last before the crash.)
Maybe these coredumps help:
Update (with a debug build):
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x000055f78034247b in vts_sb_popline (cols=232, cells=0x55f781fe9380, user=0x55f781ff1dc0) at /home/max/repos/a4/vt.c:167
167 .fg = tframe->cs->fg,
The terminal emulator I use (st) doesn't provide a search function. This is supposed to be provided by a separate tool, for example a terminal multiplexer. And when somebody uses a terminal multiplexer, this makes sense, because the terminal emulator can't know which terminal/window/pane is to be searched.
Even when I use a terminal emulator that supports searching the terminal (Alacritty), its search function can't find text in an a4
buffer that's out of the current viewport.
I couldn't find a search function in a4
. Does it exist? If not, do you plan to add it? If you don't want to add it: Is there another way to search the terminal?
I'm aware that I could pipe a command output to less
and then use its search function but often I don't know beforehand that I'm going to search something and running the same command again with less
is often overkill (like for a long running build process).
Another solution could be to allow opening a terminal buffer in the an editor (p.e. $EDITOR
), like capture-pane
+ save-buffer
in tmux. What do you think?
Hi Ross,
regarding information present on README, this links seems have empty directory :
http://bazaar.leonerd.org.uk/c/libtickit/
http://bazaar.leonerd.org.uk/c/libvterm/
BTW
I'm trying to compile from source but I receive this errors:
`#$ make
cc -std=c99 -DNDEBUG -DSYSCONFDIR="/usr/share" -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -D_XOPEN_SOURCE_EXTENDED -DVERSION="752eec5-dirty" a4.c lib/ini.c -lutil -ltickit -lvterm -o a4
In file included from a4.c:310:
vt.c: In function ‘vts_settermprop’:
vt.c:76:32: error: request for member ‘initial’ in something not a structure or union
76 | if (val->string.initial)
^
vt.c:80:51: error: request for member ‘str’ in something not a structure or union
80 | strncat(tframe->title, val->string.str, MIN(val->string.len, remaining));
^
In file included from a4.c:41:
vt.c:80:72: error: request for member ‘len’ in something not a structure or union
80 | strncat(tframe->title, val->string.str, MIN(val->string.len, remaining));
| ^
utilities.c:5:23: note: in definition of macro ‘MIN’
5 | #define MIN(x, y) ((x) < (y) ? (x) : (y))
| ^
vt.c:80:72: error: request for member ‘len’ in something not a structure or union
80 | strncat(tframe->title, val->string.str, MIN(val->string.len, remaining));
| ^
utilities.c:5:35: note: in definition of macro ‘MIN’
5 | #define MIN(x, y) ((x) < (y) ? (x) : (y))
| ^
vt.c:82:32: error: request for member ‘final’ in something not a structure or union
82 | if (val->string.final) {
| ^
vt.c: In function ‘applycolorrules’:
vt.c:237:9: warning: implicit declaration of function ‘vterm_screen_set_default_colors’; did you mean ‘vterm_state_set_default_colors’? [-Wimplicit-function-declaration]
237 | vterm_screen_set_default_colors(tframe->vts, &tframe->cs->fg, &tframe->cs->bg);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| vterm_state_set_default_colors
vt.c: In function ‘get_vterm’:
vt.c:386:9: warning: implicit declaration of function ‘vterm_screen_enable_reflow’; did you mean ‘vterm_screen_enable_altscreen’? [-Wimplicit-function-declaration]
386 | vterm_screen_enable_reflow(tframe->vts, true);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| vterm_screen_enable_altscreen
make: *** [Makefile:24: a4] Error 1`
Can you point me in the right direction?
Many thanks for your work I hope to be able to compile successfully, if yes I try to ask guys on VoidLinux to add it in repository.
Many thanks
Max
When I run a4, it produces
"a4: error while loading shared libraries: libtickit.so.3: cannot open shared object file: No such file or directory."
However, the file is in "/usr/local/lib".
What did I miss?
The a4
man page mentions a4-keycodes(1)
:
SEE ALSO
abduco(1), a4-keycodes(1)
I understand it like there should be separate man page for this. Is this still to be created? Or did it exist and it was removed?
I prefer to use a modifier key + all of my binds in order to access them, and I've noticed that there's an issue with this: I can't use enter
Whenever I do something to the avail of M-S-Enter
, it just...doesn't work
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.