Giter VIP home page Giter VIP logo

twin's People

Contributors

cosmos72 avatar jkirchartz avatar jubalh avatar vanrein avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

twin's Issues

twin running inside xterm or similar => corrupted text

As reported by Mirppc and ghostlands in issue #4 the menu, background pattern and window borders drawn by twin are corrupted when twin is running inside an xterm or xterm-like (konsole, gnome-terminal, xfce4-terminal...)
See also http://susepaste.org/12491768

This is a known limitation.

Until I find the time to fix it (at least partially), two workarounds are:

  1. run twin directly attached to X11, for example with "twin --hw=X11" or "twin --hw=gfx"
  2. run twin inside a twterm, i.e. inside another twin. this is useful for example in the case
    local twin -> local shell -> ssh -> remote shell -> remote twin

Window Borders

Hello Max,

from the .twinrc example I can see there is a possibility to change window borders via:

Border "*" Active (
"ÉÍ»"
"º º"
"Èͼ"
)

what kind of characters are expected here ?.. -- everything I'm trying is just giving me kind of "hieroglyphs" printed around window ;-))

even the following "simple" one:

Border "*" Active (
"+=+"
"| |"
"+=+"
)

Thank you for your help !

Rgds,
-Dimitri

Feature: twdm, Add dbus support?

If I don't use getty at the TTY, but twdm and I login to startx, I get dbus errors. Steam complains about dbus errors, and systemctl is unable to load user entries.

If I start X from getty, no problems arise. I don't know what causes this or if you are aware of this. I will give any info that is needed.

journalctl

juli 18 18:19:29 blackbox org.gtk.vfs.Daemon[12557]: A connection to the bus can't be made
juli 18 20:52:06 blackbox gvfsd[12497]: A connection to the bus can't be made
juli 18 22:34:06 blackbox org.gtk.vfs.Daemon[18435]: A connection to the bus can't be made

Steam spams with

Failed to connect to bus: No such file or directory

Ncurses Inception issue

On one of my machines with Twin installed i was having some graphical issues with Nurces within ncurses under a Twin terminal.

I was having some graphics drivers issues with my server/workstation so i booted into a TTY session and ran TWIN so i could have multiple movable terminals using GPM a (mouse) to maneuver around and fix X.

I then had to run inside one of the terminals a Ncurses based program called YAST2 to fix some broken packages and modify my booloader. Yast uses Ncurses just like Twin and on my Opensuse machines i usually know when TWIN will be broken on a tty/ssh if Yast has the same glitchyness.

So i had TWIN running fine with no visual issues whatso ever but when i ran YAST or the Nvidia driver installer in a terminal within TWIN the ncurses interface was covered in weird symbols and non of the text was readable. i then tested out ALSAMIXER to find the same results.

My hypothesis is that Twin doesn't want or like Ncurses to go all Inception.

I will test on a ubuntu/debian machine once i can get TWIN properly compiled on a non-embedded device.

System specs of the machine with the issue;
Opensuse 13.2 64bit Dual Intel X5355s 2.6ghz quadcore xeon, 16gb DDR2 FBDIMM, Nvidia GT730 2gb

Screenshots once California cools down enough to work where my computer stations are.

Prefix not honoured by twin (server/wrapper.c)

Twin is nice :)

I installed it with --prefix=/opt/twin and found only one problem: the twin wrapper does not find twin_server because it insists on /usr/local/bin/twin_server.

This is caused by the prefix BINDIR which is not defined for server/wrapper.c and not relative like in client/dm.c. A simple workaround that worked for me was to replace twin with a symbolic link to twin_server in the targeted prefix,

rm /opt/twin/bin/twin
ln -s twin_server /opt/twin/bin/twin

It would of course also be possible to parse argv[0] in server/wrapper.c replace the last component, but that's more work.

Keep alive option

Would be great to add a kind of "keep alive" option to twdisplay (and maybe other) which could involve then every N seconds a single packet to send over a network to be sure:

  • the remote side is still here
  • to avoid to see connections closed by timeout..

Thank you !

Rgds,
-Dimitri

Rendering issues in MOSH (was: Working with ttyd but not mosh)

TWIN works great in ttyd and really adds value there; for TWDM there was a need to add a one-shot option, as a resource is not freed otherwise. See PR #46 for details.

Since both TTYD and MOSH use xterm-256color displays, I expected TWIN to work well with MOSH too. But it does not!

To replicate:

mosh twin.host.with.mosh /path/to/twin_server 2>&1 | tee /tmp/twout

Spelling out the ANSI codes, this logs:

ESC[?1049hESC[?1hESC[?5lESC[1;25rESC[0mESC[HESC[2JESC[KESC[1;1HESC[K ESC[?25lESC[2;1HESC[KESC[2;1HESC[K ESC[3;1HESC[KESC[3;1HESC[K ESC[4;1HESC[KESC[4;1HESC[K 
ESC[5;1HESC[KESC[5;1HESC[K ESC[6;1HESC[KESC[6;1HESC[K ESC[7;1HESC[KESC[7;1HESC[K ESC[8;1HESC[KESC[8;1HESC[K ESC[9;1HESC[KESC[9;1HESC[K ESC[10;1HESC[KESC[10;1H
ESC[K ESC[11;1HESC[KESC[11;1HESC[K ESC[12;1HESC[KESC[12;1HESC[K ESC[13;1HESC[K
ESC[13;1HESC[K ESC[14;1HESC[KESC[14;1HESC[K ESC[15;1HESC[KESC[15;1HESC[K ESC[16;1HESC[KESC[16;1HESC[K ESC[17;1HESC[KESC[17;1HESC[K ESC[18;1HESC[KESC[18;1HESC[K ESC[19;1HESC[KESC[19;1HESC[K ESC[20;1HESC[KESC[20;1HESC[K ESC[21;1HESC[KESC[21;1HESC[K ESC[22;1HESC[KESC[22;1HESC[K ESC[23;1HESC[KESC[23;1HESC[K ESC[24;1HESC[K
ESC[24;1HESC[K ESC[25;1HESC[KESC[1;1HESC[?25hESC[0mESC[?2004lESC[?1003lESC[?1002lESC[?1001lESC[?1000lESC[?1004lESC[?1015lESC[?1006lESC[?1005lESC[?25lESC[2;1Htwin: starting display driver module `hw_tty'...ESC[3;1H      linux_InitVideo() failed: terminal `xterm-256color' is not `linux'.ESC[4;1Htwin: ...module `hw_tty' failed to start.ESC[5;1Htwin: all display drivers failed for `-hw=tty'ESC[7;1Htwin:  ESC[0;1mALL  DISPLAY  DRIVERS  FAILED.  QUITTING.ESC[8;1HESC[?25hESC[0mESC[?1lESC[0mESC[?25hESC[?1003lESC[?1002lESC[?1001lESC[?1000lESC[?1015lESC[?1006lESC[?1005lESC[?1049l
[mosh is exiting.]

in readable terms, that's

twin: starting display driver module `hw_tty'...
      linux_InitVideo() failed: terminal `xterm-256color' is not `linux'
twin: ...module `hw_tty' failed to start
twin: all display drivers failed for `-hw=tty'
twin:  ALL  DISPLAY  DRIVERS  FAILED.  QUITTING.
[mosh is exiting.]

My suspicion is that something makes TWIN think that MOSH is like a Linux environment, in spite of having TERM=xterm-256color set, and then bogs down to refusal because it is not actually TERM=linux compliant.

Note: Fixing this would mean that TWIN can be used virtually anywhere, even on Mac OS X with iTerm.app, which is why I am chasing this. It also seems like MOSH and TWIN are a marriage made in heaven -- just think of train rides with "graphical" interactivity as a big thank you to the textual nature of the display!

Mouse wheel / Trackpad scrolling

Hello Max,

any existing or potential solution to support mouse wheel / trackpad scrolling in TWIN windows ?.. -- would be really cool ;-))

Rgds,
-Dimitri

Links using FB in twin (console)

I don't know/think if it's possible to run links (web browser) in graphical mode under twin in console mode.

links -g bugs out with

Could not initialize any graphics driver. Tried the following drivers:
x:
Can't open display "(null)"
fb:
Could not get VT mode.

It would be a great feature to run links in graphical mode under twin with no X.
However, I understand if it's not feasible. Just an idea.

I would like to add that I can run a 1440p video under twin using mplayer -vo fbdev2 with no issues.

mplayer -vo fbdev2 -x 1280 -y 720 File.extension works perfectly, as an example.

I understand this might be a limitation with Links, but I'd love to have a working graphical web browser in twin. I think it'd compliment it.

Compile fails on Cygwin

I get the following error when trying to compile twin:

libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../include -I../../include -g -O2 -MT libTw2_i386.lo -MD -MP -MF .deps/libTw2_i386.Tpo -c libTw2_i386.S  -DDLL_EXPORT -DPIC -o .libs/libTw2_i386.o
/usr/include/machine/_default_types.h: Assembler messages:
/usr/include/machine/_default_types.h:41: Error: no such instruction: `typedef signed char __int8_t'
/usr/include/machine/_default_types.h:43: Error: no such instruction: `typedef unsigned char __uint8_t'
/usr/include/machine/_default_types.h:55: Error: no such instruction: `typedef short int __int16_t'
/usr/include/machine/_default_types.h:57: Error: no such instruction: `typedef short unsigned int __uint16_t'
/usr/include/machine/_default_types.h:77: Error: no such instruction: `typedef int __int32_t'
/usr/include/machine/_default_types.h:79: Error: no such instruction: `typedef unsigned int __uint32_t'
/usr/include/machine/_default_types.h:103: Error: no such instruction: `typedef long long int __int64_t'
/usr/include/machine/_default_types.h:105: Error: no such instruction: `typedef long long unsigned int __uint64_t'
/usr/include/machine/_default_types.h:134: Error: no such instruction: `typedef signed char __int_least8_t'
/usr/include/machine/_default_types.h:136: Error: no such instruction: `typedef unsigned char __uint_least8_t'
/usr/include/machine/_default_types.h:160: Error: no such instruction: `typedef short int __int_least16_t'
/usr/include/machine/_default_types.h:162: Error: no such instruction: `typedef short unsigned int __uint_least16_t'
/usr/include/machine/_default_types.h:182: Error: no such instruction: `typedef int __int_least32_t'
/usr/include/machine/_default_types.h:184: Error: no such instruction: `typedef unsigned int __uint_least32_t'
/usr/include/machine/_default_types.h:200: Error: no such instruction: `typedef long long int __int_least64_t'
/usr/include/machine/_default_types.h:202: Error: no such instruction: `typedef long long unsigned int __uint_least64_t'
/usr/include/machine/_default_types.h:214: Error: no such instruction: `typedef long long int __intmax_t'
/usr/include/machine/_default_types.h:222: Error: no such instruction: `typedef long long unsigned int __uintmax_t'
/usr/include/machine/_default_types.h:230: Error: no such instruction: `typedef int __intptr_t'
/usr/include/machine/_default_types.h:232: Error: no such instruction: `typedef unsigned int __uintptr_t'
/usr/lib/gcc/i686-pc-cygwin/6.4.0/include/stddef.h:149: Error: no such instruction: `typedef int ptrdiff_t'
/usr/lib/gcc/i686-pc-cygwin/6.4.0/include/stddef.h:216: Error: no such instruction: `typedef unsigned int size_t'
/usr/lib/gcc/i686-pc-cygwin/6.4.0/include/stddef.h:328: Error: no such instruction: `typedef short unsigned int wchar_t'
make[2]: *** [Makefile:494: libTw2_i386.lo] Error 1
make[2]: Leaving directory '/home/roberc51/twin/libs/libTw'
make[1]: *** [Makefile:402: all-recursive] Error 1
make[1]: Leaving directory '/home/roberc51/twin/libs'
make: *** [Makefile:527: all-recursive] Error 1

Graphical issue in tty

Hi there,

I am experiencing this graphical issue in tty I recorded in video:

https://drive.google.com/open?id=1ntvYFmsvMYXlli_NLMhEeMZrxvJtwtOn (I suggest you download the video instead of watching it online).

mpv-shot0017

I suspect it might be related to the fact I installed a 8x19 console font and set it as default some time ago. However, I need to do more tests in order to confirm this. I load it through the FONT variable in /etc/vconsole.conf, as https://wiki.archlinux.org/index.php/Fonts#Console_fonts suggests.

The font I'm using: VGASquarePx.psf.gz

EDIT: I went back to the default console font and rebooted, but the problem still persists. I don't know what the cause might be.

I haven't experienced this with any other program. I don't know if this will be easy to reproduce. I can compile twin with any debug options you need.

Thanks.

Ctrl-@

Hello Max,

just discovered "by accident" that by pressing Ctrl-@ I'm immediately disconnecting in running twdisplay and exiting..

  • this is pretty useful shortcut to disconnect without going via any Manu ;-)
  • however, is it expected ?..
  • if yes, was it documented anywhere ?..
  • and do you have any other "special" keyboard shortcuts ?..

Thank you !!

Rgds,
-Dimitri

Dialog inside twin: Segmentation fault

I am trying to make a simple IDE around text-based tooling. It is really helpful by keeping the demo/download small and fast, and the application needs nothing more, really.

Since twdialog did not look ready yet, I tried using plain dialog in a twterm. It crashes however, with a "Segmentation fault" message. What can I do to use it properly?

hw_tty without gpm: QUITTING without terminal being reset

After QUITTING because it found no gpm in hw_tty on the linux console, control is not returned to the keyboard and shell. Nothing typed is shown, and not all platforms allow entry of commands. It appears that the keyboard and/or display are still in "raw" mode, rather than "cooked".

gpm headers and libs are present, configured with gpm support but no gpm support on linux tty

on an x86_64 musl linux host, gpm support does not get built even if it is specified in the configure phase, even though the headers and libraries exist.

gpm libs and headers:

 $ [~]: find /usr/lib /usr/include | grep gpm
/usr/lib/libgpm.so.2.1.0
/usr/lib/libgpm.so.2
/usr/include/gpm.h

twin libraries are in the runtime linker path list:

 $ [~]: uname -rms
Linux 5.6.0-apathy-t61-r0.5-bmq x86_64
 $ [~]: cat /etc/ld-musl-x86_64.path
/lib
/usr/lib
/opt/twin/lib
/opt/llvm-9.0.1/lib
 $ [~]: echo $PATH
/opt/twin/bin:/opt/llvm-9.0.1/bin:/usr/sbin:/usr/bin:/sbin:/bin:/mss/bin:/home/mss/execs

error i'm getting:

 $ [work]:  twin
twin: starting display driver module `hw_xft'...
      X11_InitHW() failed: DISPLAY is not set
twin: ...module `hw_xft' failed to start.
twin: starting display driver module `hw_gfx'...
      gfx_InitHW() failed: DISPLAY is not set
twin: ...module `hw_gfx' failed to start.
twin: starting display driver module `hw_X11'...
      X11_InitHW() failed: DISPLAY is not set
twin: ...module `hw_X11' failed to start.
twin: starting display driver module `hw_twin'...
      TW_InitHW() failed: TWDISPLAY is not set
twin: ...module `hw_twin' failed to start.
twin: starting display driver module `hw_tty'...
      tty_InitHW(): gpm mouse support not compiled, skipping it.
      xterm_InitMouse() failed: this `linux' terminal
      has no support for xterm-style mouse reporting.

        ALL  MOUSE  DRIVERS  FAILED.

      If you really want to run `twin' without mouse
      hit RETURN within 10 seconds to continue,
      otherwise hit CTRL-C (or wait 10 seconds) to cancel.
twin: ...module `hw_tty' failed to start.
twin: unable to load display driver module `hw_ggi' :
      Error loading shared library /opt/twin/lib/twin/libhw_ggi-0.8.0.so: No such
file or directory
twin: all display drivers failed for `'

twin:  ALL  DISPLAY  DRIVERS  FAILED.  QUITTING.

directory listings of $PREFIX/twin/lib and $PREFIX/twin/lib/twin:

 $ [~]: ls -l /opt/twin/lib{,/twin}
/opt/twin/lib:
total 288K
-rwxr-xr-x 1 root root  921 Mar  4 00:40 libTutf.la
lrwxrwxrwx 1 root root   16 Mar  4 00:40 libTutf.so -> libTutf.so.1.0.0
lrwxrwxrwx 1 root root   16 Mar  4 00:40 libTutf.so.1 -> libTutf.so.1.0.0
-rwxr-xr-x 1 root root 159K Mar  4 00:40 libTutf.so.1.0.0
-rwxr-xr-x 1 root root  913 Mar  4 00:40 libTw.la
lrwxrwxrwx 1 root root   14 Mar  4 00:40 libTw.so -> libTw.so.5.0.0
lrwxrwxrwx 1 root root   14 Mar  4 00:40 libTw.so.5 -> libTw.so.5.0.0
-rwxr-xr-x 1 root root 115K Mar  4 00:40 libTw.so.5.0.0
drwxrwxr-x 2 root root 4.0K Mar  4 00:40 twin

/opt/twin/lib/twin:
total 692K
-rwxr-xr-x 1 root root  60K Mar  4 00:40 libhw_X11-0.8.0.so
-rwxr-xr-x 1 root root  977 Mar  4 00:40 libhw_X11.la
lrwxrwxrwx 1 root root   18 Mar  4 00:40 libhw_X11.so -> libhw_X11-0.8.0.so
-rwxr-xr-x 1 root root  23K Mar  4 00:40 libhw_display-0.8.0.so
-rwxr-xr-x 1 root root  970 Mar  4 00:40 libhw_display.la
lrwxrwxrwx 1 root root   22 Mar  4 00:40 libhw_display.so -> libhw_display-0.8.0.so
-rwxr-xr-x 1 root root  65K Mar  4 00:40 libhw_gfx-0.8.0.so
-rwxr-xr-x 1 root root  983 Mar  4 00:40 libhw_gfx.la
lrwxrwxrwx 1 root root   18 Mar  4 00:40 libhw_gfx.so -> libhw_gfx-0.8.0.so
-rwxr-xr-x 1 root root  58K Mar  4 00:40 libhw_tty-0.8.0.so
-rwxr-xr-x 1 root root  981 Mar  4 00:40 libhw_tty.la
lrwxrwxrwx 1 root root   18 Mar  4 00:40 libhw_tty.so -> libhw_tty-0.8.0.so
-rwxr-xr-x 1 root root  32K Mar  4 00:40 libhw_twin-0.8.0.so
-rwxr-xr-x 1 root root 1004 Mar  4 00:40 libhw_twin.la
lrwxrwxrwx 1 root root   19 Mar  4 00:40 libhw_twin.so -> libhw_twin-0.8.0.so
-rwxr-xr-x 1 root root  56K Mar  4 00:40 libhw_xft-0.8.0.so
-rwxr-xr-x 1 root root  994 Mar  4 00:40 libhw_xft.la
lrwxrwxrwx 1 root root   18 Mar  4 00:40 libhw_xft.so -> libhw_xft-0.8.0.so
-rwxr-xr-x 1 root root  72K Mar  4 00:40 librcparse-0.8.0.so
-rwxr-xr-x 1 root root  952 Mar  4 00:40 librcparse.la
lrwxrwxrwx 1 root root   19 Mar  4 00:40 librcparse.so -> librcparse-0.8.0.so
-rwxr-xr-x 1 root root 120K Mar  4 00:40 libsocket-0.8.0.so
-rwxr-xr-x 1 root root  950 Mar  4 00:40 libsocket.la
lrwxrwxrwx 1 root root   18 Mar  4 00:40 libsocket.so -> libsocket-0.8.0.so
-rwxr-xr-x 1 root root  58K Mar  4 00:40 libterm-0.8.0.so
-rwxr-xr-x 1 root root  934 Mar  4 00:40 libterm.la
lrwxrwxrwx 1 root root   16 Mar  4 00:40 libterm.so -> libterm-0.8.0.so
-rwxr-xr-x 1 root root  79K Mar  4 00:40 libwm-0.8.0.so
-rwxr-xr-x 1 root root  922 Mar  4 00:40 libwm.la
lrwxrwxrwx 1 root root   14 Mar  4 00:40 libwm.so -> libwm-0.8.0.so
-rwxr-xr-x 1 root root  759 Mar  4 00:40 system.twenvrc.sh
-rwxr-xr-x 1 root root  14K Mar  4 00:40 system.twinrc

Cleanup and modernize configure.in and Makefiles

Both configure.in and Makefiles contain a lot of ad-hoc rules, with varying degrees of bit-rot, to the point that I have not been able to regenerate the configure script since years... also, Makefiles do not use automake at all.

The whole build process depends on GNU make and bash, and is somewhat fragile.

Volunteers are welcome :)

Porting to Mac OS X

Support for OS X is currently beta, testers welcome :)

Requires xcode with command line tools, xquartz.

Doubt: how to best recognize OS X: MACOSX or APPLE or sth else?

socklen_t redefined (twautoconf.h & /Tw/autoconf.h) on FreeBSD

/usr/include/sys/socket.h:73:21: error: cannot combine with previous 'type-name' declaration specifier
typedef __socklen_t socklen_t;
^
../../include/twautoconf.h:666:19: note: expanded from macro 'socklen_t'
#define socklen_t int
..
...
/usr/include/sys/socket.h:73:21: error: cannot combine with previous 'type-name' declaration specifier
typedef __socklen_t socklen_t;
^
../include/Tw/autoconf.h:666:19: note: expanded from macro 'socklen_t'

Issue with twin on high res displays

I was at a friend's house installing twin for them on their Dell XPS 13 Developer Edition when we ran into the issue with font size. holy snap on a 4K 13" display everything was so tiny that Twin was unusable. It is also an issue with a TTY session as well, yet when running twin through X the font was utterly tiny. the dot in this i on my 1080p monitor was about the size of every character. Is there any way to change font sizes?

More and More people will be getting high resolution displays and this issue will become more prevalent as time goes on. This isnt an immediate issue but should be looked into at some point.

Thanks.

Update ChangeLog

Thanks for twin.

Would it be possible that you update the Changelog.txt for the 0.8.0 release?

Considering ZMODEM forwarding

Is it a strange idea to support ZMODEM passthrough via a service in the event interface? I still think of it as a highly useful protocol, but it is ancient... so, to refresh your memory:

  • ZMODEM stems from download-and-upload-during-tty-sessions era, for instance used with modems and BBS dial-in.
  • ZMODEM is well integrated into ttyd as you can see from running sz or rz as contained in package lrzsz on a TTYD-supported terminal
  • ZMODEM would not work over MOSH sessions
  • ZMODEM predecessors XMODEM and YMODEM were never formally deprecated, but add nothing.

What could make sense?

  1. Sending sz and rz initiation frames to a central place, which connects them
  2. ZMODEM in terminals may relay directly to ZMODEM with their container (the dial-in modem, so to say, or TTYD)
  3. ZMODEM in terminals might be cross-connected (transport data from /dev/pts/7 to /dev/pts/12)
  4. There might be a way to criss-cross between TWIN sessions? Attach and Display are still unclear to me though.
  5. Directories like $HOME/Downloads or dynamic plugins such as USB storage sticks may provide a ZMODEM upload/download target.
  6. Tools based on twdialog or dialog could arrange file transmission via sz.
  7. We're working towards a hosted storage facility that could also connect to such a ZMODEM file services, even for stateless/PXE environments.

The flavour one would desire is a matter of taste, I suppose. All it requires is recognising the initial TTY codes for ZMODEM, and passing them to a central place in the TWIN environment that implements the personal taste.

I was wondering if it made sense to use your event system for these ZMODEM connections, but I cannot tell as I find the code difficult to follow. Any suggestions or guidance?

Issue with Tutf, TT and Tw

I was trying to compile twin for use on the 9 dollar computer called CHIP. In doing so i was getting some errors during the make section.

Here is attempt one using ./config

"~/twin$ make
make -C include
make[1]: Entering directory '/home/chip/twin/include'
make autogen -C Tutf
make[2]: Entering directory '/home/chip/twin/include/Tutf'
make[2]: Nothing to be done for 'autogen'.
make[2]: Leaving directory '/home/chip/twin/include/Tutf'
make autogen -C Tw
make[2]: Entering directory '/home/chip/twin/include/Tw'
make[2]: Nothing to be done for 'autogen'.
make[2]: Leaving directory '/home/chip/twin/include/Tw'
make autogen -C TT
make[2]: Entering directory '/home/chip/twin/include/TT'
m4 -I../../include m4/all.m4h > all_m4.h
/bin/sh: m4: command not found
../../makerules.in:668: recipe for target 'all_m4.h' failed
make[2]: *** [all_m4.h] Error 127
make[2]: Leaving directory '/home/chip/twin/include/TT'
../makerules.in:1047: recipe for target 'autogen-dir-TT' failed
make[1]: *** [autogen-dir-TT] Error 2
make[1]: Leaving directory '/home/chip/twin/include'
makerules.in:1007: recipe for target 'build-dir-include' failed
make: *** [build-dir-include] Error 2
"

Here is the second attempt using make config.
~/twin$ make config
Starting configure for twin 0.6.2_1 ...

/bin/bash scripts/Configure.tty "" ""

Twin configuration utility

Using configuration generated by 'configure' saved in conf.auto

General setup

Enable shared libraries [Y/n] ? y
Enable shared modules [Y/n] ? y
Enable Unicode support (libTutf) [Y/n] ? y
Use custom mmap() based malloc/free [Y/n] ? y
Use C type 'long long' if supported (not recommended) [y/N] ? y
Use hand-optimized assembler code if available [y/N] ? y

Socket support

Support remote socket connections (libTw) [y/M/n] ? y
-> Sockets: support gzip compression [y/N] ? y
-> Sockets: thread-safe libs (requires libpthread) [Y/n] ? y
-> Sockets: support non-native architectures [Y/n] ? y

Toolkit library support

Support Text Toolkit library (libTT) [y/N] ? y
-> HW support: twin, native [y/M/n] ? y
-> HW support: twin + server side libTT [y/M/n] ? y
-> HW support: libTT on twin server side [y/M/n] ? y
-> HW support: gtk [y/m/N] ? n
-> HW support: X11 [y/m/N] ? y
-> HW support: write to xml files [y/M/n] ? y

Window Manager

Window Manager: absolutely needed! [y/M/n] ? m
WM: support ~/.twinrc configuration parser [y/M/n] ? y
-> WM: RC: use mmapped shared file for parser [Y/n] ? y
-> WM: RC: shrink memory when parser finished [Y/n] ? y

Terminal emulator

Builtin Terminal emulator [y/M/n] ? y
-> Terminal: use Unix98 /dev/pts/* pseudo-ttys [Y/n] ? y

Messages logging

Store server messages into Messages window [Y/n] ? y

Display hardware support

HW support: text terminals (Linux console...) [y/M/n] ? y
-> tty support: Linux console (gpm mouse, /dev/vcsa) [Y/n] ? y
-> tty support: use raw keyboard on Linux console [Y/n] ? y
-> tty support: twin own terminal [Y/n] ? y
-> tty support: termcap/ncurses terminal database [Y/n] ? y
HW support: X11 enhanced driver (gfx), uses libXpm [y/m/N] ? y
HW support: X11 [y/m/N] ? y
HW support: twin, native [y/M/n] ? y
HW support: twdisplay client as display [y/M/n] ? y
HW support: libggi [y/m/N] ? n

Server extensions

Server extensions [Y/n] ? y
Server extension: Text Toolkit library (libTT) [y/m/N] ? y

Runtime options

Warning: settings in ~/.twinrc or in system.twinrc

will always override the following options!

Runtime option: enable shadows [Y/n] ? y
Runtime option: enable blink/high background [y/N] ? y
Runtime option: force always visible cursor [y/N] ? y
Runtime option: autohide menu [y/N] ? y
Runtime option: enable menu information line [Y/n] ? y
Runtime option: arrows can open/close submenus [y/N] ? y
Runtime option: enable screen scrolling [Y/n] ? y

~/twin$ make
building include/Tw/Twautoconf.h
/bin/bash scripts/Configure.tty "" "" < /dev/null > /dev/null ||
/bin/sh scripts/Configure.fallback "" "" < /dev/null > /dev/null
make -C include
make[1]: Entering directory '/home/chip/twin/include'
make autogen -C Tutf
make[2]: Entering directory '/home/chip/twin/include/Tutf'
make[2]: Nothing to be done for 'autogen'.
make[2]: Leaving directory '/home/chip/twin/include/Tutf'
make autogen -C Tw
make[2]: Entering directory '/home/chip/twin/include/Tw'
make[2]: Nothing to be done for 'autogen'.
make[2]: Leaving directory '/home/chip/twin/include/Tw'
make autogen -C TT
make[2]: Entering directory '/home/chip/twin/include/TT'
building include/TT/ttobj.h
/bin/sh: line 2: m4: command not found
building include/TT/ttclass.h
/bin/sh: line 2: m4: command not found
building include/TT/ttobject.h
/bin/sh: line 2: m4: command not found
building include/TT/ttvector.h
/bin/sh: line 2: m4: command not found
building include/TT/ttfield.h
/bin/sh: line 2: m4: command not found
building include/TT/ttmethod.h
/bin/sh: line 2: m4: command not found
building include/TT/ttevent.h
/bin/sh: line 2: m4: command not found
building include/TT/tteventbig.h
/bin/sh: line 2: m4: command not found
building include/TT/ttbitmask.h
/bin/sh: line 2: m4: command not found
building include/TT/tteventmask.h
/bin/sh: line 2: m4: command not found
building include/TT/ttcallback.h
/bin/sh: line 2: m4: command not found
building include/TT/ttlistener.h
/bin/sh: line 2: m4: command not found
building include/TT/tttimer.h
/bin/sh: line 2: m4: command not found
building include/TT/ttcomponent.h
/bin/sh: line 2: m4: command not found
building include/TT/ttdata.h
/bin/sh: line 2: m4: command not found
building include/TT/ttvisible.h
/bin/sh: line 2: m4: command not found
building include/TT/ttlayout.h
/bin/sh: line 2: m4: command not found
building include/TT/ttboxlayout.h
/bin/sh: line 2: m4: command not found
building include/TT/ttborderlayout.h
/bin/sh: line 2: m4: command not found
building include/TT/ttnative.h
/bin/sh: line 2: m4: command not found
building include/TT/ttwidget.h
/bin/sh: line 2: m4: command not found
building include/TT/ttlabel.h
/bin/sh: line 2: m4: command not found
building include/TT/tttooltip.h
/bin/sh: line 2: m4: command not found
building include/TT/ttbuttongroup.h
/bin/sh: line 2: m4: command not found
building include/TT/ttanybutton.h
/bin/sh: line 2: m4: command not found
building include/TT/ttbutton.h
/bin/sh: line 2: m4: command not found
building include/TT/ttcheckbutton.h
/bin/sh: line 2: m4: command not found
building include/TT/ttradiobutton.h
/bin/sh: line 2: m4: command not found
building include/TT/ttanyscroll.h
/bin/sh: line 2: m4: command not found
building include/TT/ttscrollbar.h
/bin/sh: line 2: m4: command not found
building include/TT/ttslider.h
/bin/sh: line 2: m4: command not found
building include/TT/ttprogressbar.h
/bin/sh: line 2: m4: command not found
building include/TT/ttscrollpane.h
/bin/sh: line 2: m4: command not found
building include/TT/ttwindow.h
/bin/sh: line 2: m4: command not found
building include/TT/ttframe.h
/bin/sh: line 2: m4: command not found
building include/TT/ttscroller.h
/bin/sh: line 2: m4: command not found
building include/TT/ttmenuitem.h
/bin/sh: line 2: m4: command not found
building include/TT/ttcheckmenuitem.h
/bin/sh: line 2: m4: command not found
building include/TT/ttradiomenuitem.h
/bin/sh: line 2: m4: command not found
building include/TT/ttmenu.h
/bin/sh: line 2: m4: command not found
building include/TT/ttmenubar.h
/bin/sh: line 2: m4: command not found
building include/TT/ttanytext.h
/bin/sh: line 2: m4: command not found
building include/TT/tttextfield.h
/bin/sh: line 2: m4: command not found
building include/TT/tttextarea.h
/bin/sh: line 2: m4: command not found
building include/TT/tttheme.h
/bin/sh: line 2: m4: command not found
building include/TT/ttapplication.h
/bin/sh: line 2: m4: command not found
m4 -I../../include m4/list.m4h > list_m4.h
/bin/sh: m4: command not found
../../makerules.in:668: recipe for target 'list_m4.h' failed
make[2]: *** [list_m4.h] Error 127
make[2]: Leaving directory '/home/chip/twin/include/TT'
../makerules.in:1047: recipe for target 'autogen-dir-TT' failed
make[1]: *** [autogen-dir-TT] Error 2
make[1]: Leaving directory '/home/chip/twin/include'
makerules.in:1007: recipe for target 'build-dir-include' failed
make: *** [build-dir-include] Error 2

The system is Debian on an Allwinner R8 1ghz arm processor with 512mb ram and 4gb flash.

Server Architecture Rewrite

This thread was started to document the discussion, progress, viability, features and capabilities of a twin server rewrite, focusing on portability, maintainability and a modern, extensible core.

Everybody is encouraged to comment on this thread.

TWIN in docker container

Im really fond of TWIN I think its perfect for use in docker container for my particular use case.

I have build a container and compiled twin seemingly successfully.

But I am having issues with : twin: unable to load display driver module `hw_...

I can only assume this is some sort of dependency issue since both the container and my desktop are F29. IT works great on the desktop.

Could you shed some light on possible next steps to get it working in docker?

Thanks,

Menu's seem to not always work reliably.

When i have the twin terminal open and i go into file>exit it does nothing. Once out of the terminal the Menus seem to work fine.

Just compiled with the latest GIT as of 1/19/2017 on a Raspberry Pi 3 with Rasbian installed. Issue persist on Opensuse 42.2, 42.1, tumbleweed, ubuntu 16.04 on intel hardware, Debian ARM on CHIP, Ubuntu 14.04 on Odroid U2.

Linux framebuffer support?

Hi there, i love this software. and i had a suggestion like feature request.

You can add Framebuffer Support?

like the "links / links2" web browser, when you run from terminal with

links -g
links2 -g

Distribution name depend. on some are just links in another is links2

Screenshot :
tty6.png

And use this for make more graphic the experience. i think if twin can be similar to graphical desktop environment but without x / x11 will be the most recommend option for discontinued hardware.

twin_real not generated

Hi Boys and Girls,

As a heavy twin user for years, I was eager to test this new version.
Great ! Compiles straight, but complains that "twin_real not found" at launch.
This executable is actually not in the server directory.
Typo in makefile ?

Failed to compile.

clang++-5.0 emit the following error(the second time I invoked make, first time it failed too, but I didn't record it. Anyway, the error during link is the same):

Making all in docs
make[1]: Entering directory '/usr/src/twin/docs'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/usr/src/twin/docs'
Making all in include
make[1]: Entering directory '/usr/src/twin/include'
make  all-recursive
make[2]: Entering directory '/usr/src/twin/include'
Making all in Tutf
make[3]: Entering directory '/usr/src/twin/include/Tutf'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/usr/src/twin/include/Tutf'
Making all in Tw
make[3]: Entering directory '/usr/src/twin/include/Tw'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/usr/src/twin/include/Tw'
make[3]: Entering directory '/usr/src/twin/include'
make[3]: Leaving directory '/usr/src/twin/include'
make[2]: Leaving directory '/usr/src/twin/include'
make[1]: Leaving directory '/usr/src/twin/include'
Making all in libs
make[1]: Entering directory '/usr/src/twin/libs'
Making all in libTutf
make[2]: Entering directory '/usr/src/twin/libs/libTutf'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/usr/src/twin/libs/libTutf'
Making all in libTw
make[2]: Entering directory '/usr/src/twin/libs/libTw'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/usr/src/twin/libs/libTw'
make[2]: Entering directory '/usr/src/twin/libs'
make[2]: Nothing to be done for 'all-am'.
make[2]: Leaving directory '/usr/src/twin/libs'
make[1]: Leaving directory '/usr/src/twin/libs'
Making all in clients
make[1]: Entering directory '/usr/src/twin/clients'
Making all in mapscrn
make[2]: Entering directory '/usr/src/twin/clients/mapscrn'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/usr/src/twin/clients/mapscrn'
make[2]: Entering directory '/usr/src/twin/clients'
make[2]: Nothing to be done for 'all-am'.
make[2]: Leaving directory '/usr/src/twin/clients'
make[1]: Leaving directory '/usr/src/twin/clients'
Making all in themes
make[1]: Entering directory '/usr/src/twin/themes'
Making all in hw_gfx
make[2]: Entering directory '/usr/src/twin/themes/hw_gfx'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/usr/src/twin/themes/hw_gfx'
make[2]: Entering directory '/usr/src/twin/themes'
make[2]: Nothing to be done for 'all-am'.
make[2]: Leaving directory '/usr/src/twin/themes'
make[1]: Leaving directory '/usr/src/twin/themes'
Making all in server
make[1]: Entering directory '/usr/src/twin/server'
Making all in hw
make[2]: Entering directory '/usr/src/twin/server/hw'
/bin/bash ../../libtool  --tag=CC   --mode=link clang-5.0  -Ofast -pipe -flto=thin -fomit-frame-pointer -fno-strict-aliasing -pipe -Wall -Wshadow -Wno-uninitialized -Wno-pointer-sign -Wno-unused -Wundef -Wstrict-prototypes -Wcast-qual -Wcast-align -Wpointer-arith -Wbad-function-cast -export-dynamic -export-symbols-regex '^(Init|Quit)Module$' -release 0.8.0  -o libhw_display.la -rpath /usr/local/lib/twin hw_display.lo  
/bin/bash ../../libtool  --tag=CC   --mode=link clang-5.0  -Ofast -pipe -flto=thin -fomit-frame-pointer -fno-strict-aliasing -pipe -Wall -Wshadow -Wno-uninitialized -Wno-pointer-sign -Wno-unused -Wundef -Wstrict-prototypes -Wcast-qual -Wcast-align -Wpointer-arith -Wbad-function-cast -export-dynamic -export-symbols-regex '^(Init|Quit)Module$' -release 0.8.0   -o libhw_X11.la -rpath /usr/local/lib/twin libhw_X11_la-hw_X11.lo ../../libs/libTutf/libTutf.la -lX11 
/bin/bash ../../libtool  --tag=CC   --mode=link clang-5.0  -Ofast -pipe -flto=thin -fomit-frame-pointer -fno-strict-aliasing -pipe -Wall -Wshadow -Wno-uninitialized -Wno-pointer-sign -Wno-unused -Wundef -Wstrict-prototypes -Wcast-qual -Wcast-align -Wpointer-arith -Wbad-function-cast -export-dynamic -export-symbols-regex '^(Init|Quit)Module$' -release 0.8.0   -o libhw_xft.la -rpath /usr/local/lib/twin libhw_xft_la-hw_xft.lo ../../libs/libTutf/libTutf.la -lX11 -lXft -lfreetype  
/bin/bash ../../libtool  --tag=CC   --mode=link clang-5.0  -Ofast -pipe -flto=thin -fomit-frame-pointer -fno-strict-aliasing -pipe -Wall -Wshadow -Wno-uninitialized -Wno-pointer-sign -Wno-unused -Wundef -Wstrict-prototypes -Wcast-qual -Wcast-align -Wpointer-arith -Wbad-function-cast -export-dynamic -export-symbols-regex '^(Init|Quit)Module$' -release 0.8.0  -o libhw_tty.la -rpath /usr/local/lib/twin hw_tty.lo ../../libs/libTutf/libTutf.la -ltinfo -lgpm 
/bin/bash ../../libtool  --tag=CC   --mode=link clang-5.0  -Ofast -pipe -flto=thin -fomit-frame-pointer -fno-strict-aliasing -pipe -Wall -Wshadow -Wno-uninitialized -Wno-pointer-sign -Wno-unused -Wundef -Wstrict-prototypes -Wcast-qual -Wcast-align -Wpointer-arith -Wbad-function-cast -export-dynamic -export-symbols-regex '^(Init|Quit)Module$' -release 0.8.0  -o libhw_twin.la -rpath /usr/local/lib/twin hw_twin.lo ../../libs/libTutf/libTutf.la ../../libs/libTw/libTw.la -lz 
libtool: link: /usr/bin/nm -B  .libs/hw_display.o   |  | /bin/sed 's/.* //' | sort | uniq > .libs/libhw_display.exp
../../libtool: eval: line 1719: syntax error near unexpected token `|'
../../libtool: eval: line 1719: `/usr/bin/nm -B  .libs/hw_display.o   |  | /bin/sed 's/.* //' | sort | uniq > .libs/libhw_display.exp'
Makefile:524: recipe for target 'libhw_display.la' failed
make[2]: *** [libhw_display.la] Error 2
make[2]: *** Waiting for unfinished jobs....
libtool: link: /usr/bin/nm -B  .libs/libhw_X11_la-hw_X11.o   |  | /bin/sed 's/.* //' | sort | uniq > .libs/libhw_X11.exp
../../libtool: eval: line 1719: syntax error near unexpected token `|'
../../libtool: eval: line 1719: `/usr/bin/nm -B  .libs/libhw_X11_la-hw_X11.o   |  | /bin/sed 's/.* //' | sort | uniq > .libs/libhw_X11.exp'
Makefile:521: recipe for target 'libhw_X11.la' failed
make[2]: *** [libhw_X11.la] Error 2
libtool: link: /usr/bin/nm -B  .libs/hw_tty.o   |  | /bin/sed 's/.* //' | sort | uniq > .libs/libhw_tty.exp
../../libtool: eval: line 1719: syntax error near unexpected token `|'
../../libtool: eval: line 1719: `/usr/bin/nm -B  .libs/hw_tty.o   |  | /bin/sed 's/.* //' | sort | uniq > .libs/libhw_tty.exp'
Makefile:533: recipe for target 'libhw_tty.la' failed
make[2]: *** [libhw_tty.la] Error 2
libtool: link: /usr/bin/nm -B  .libs/hw_twin.o   |  | /bin/sed 's/.* //' | sort | uniq > .libs/libhw_twin.exp
../../libtool: eval: line 1719: syntax error near unexpected token `|'
../../libtool: eval: line 1719: `/usr/bin/nm -B  .libs/hw_twin.o   |  | /bin/sed 's/.* //' | sort | uniq > .libs/libhw_twin.exp'
Makefile:536: recipe for target 'libhw_twin.la' failed
make[2]: *** [libhw_twin.la] Error 2
libtool: link: /usr/bin/nm -B  .libs/libhw_xft_la-hw_xft.o   |  | /bin/sed 's/.* //' | sort | uniq > .libs/libhw_xft.exp
../../libtool: eval: line 1719: syntax error near unexpected token `|'
../../libtool: eval: line 1719: `/usr/bin/nm -B  .libs/libhw_xft_la-hw_xft.o   |  | /bin/sed 's/.* //' | sort | uniq > .libs/libhw_xft.exp'
Makefile:539: recipe for target 'libhw_xft.la' failed
make[2]: *** [libhw_xft.la] Error 2
make[2]: Leaving directory '/usr/src/twin/server/hw'
Makefile:776: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/usr/src/twin/server'
Makefile:527: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

I just cloned your repo(1d17f1e2504cc63fb7fb3df1ba174d9284f4ebf8) and used clang-5.0 with CFLAGS == -Ofast -pipe -flto=thin and CPPFLAGS == CFLAGS.

My machine is using Debian 9.4 with linux kernel 4.9.0-6-amd64.

Failed to run on Ubuntu 14.04 after compiling

Recieved the following error when trying to open twin:

/usr/local/bin/twin_server: error while loading shared libraries: libTutf.so.0: cannot open shared object file: No such file or directory

After running this command I found on a forum post, it was able to open:

sudo cp /usr/local/lib/libTutf.so.0 /usr/lib

port to Android?

Could it be interesting/useful?

Twin already supports Linux ARM (32 and 64 bit) and with the help of termux or sth similar it should be quite feasible... the real issue is: would it be usable?

twin running inside Linux console => corrupted text

This was reported by Mirppc in issue #4:
"Problem in my case isnt SSH. If i boot to runlevel 3 or init 3 i get the issues with Twin. This isnt an SSH issue as i am not using xterm. i am in a TTY session locally."

This is unexpected. As I wrote in issue #4, I need the following to troubleshoot the problem:

  • a screenshot or (simpler) a picture of the screen showing the issue
  • the font name being used in the Linux console

ALIGN in shm.c redefined on FreeBSD

shm.c:50:9: warning: 'ALIGN' macro redefined [-Wmacro-redefined]
#define ALIGN 15
^
/usr/include/machine/param.h:81:9: note: previous definition is here
#define ALIGN(p) _ALIGN(p)

Setting Window titles

I am building a demo environment with TWIN. To that end, I am creating windows from menu items and found two ways this could be improved.

(1) Is there a way to set window titles in ExecTty? It could help when setting applications in AddToMenu, to keep windows apart. I suspect I can send a message somewhere, but can't find the documentation about what goes where. The message sending is a powerful idea that could really use some documentation (especially, a list of possibilities).

(2) In AddToMenu, multiple commands with surrounding brackets might be helpful to avoid the somewhat tedious need to declare AddToFunc and pick a name for any multiple-step action. This may be generally useful, by saying

func  : ...
      | '(' func_list ')'
      ;

func_list : func
          | func_list func
          ;

gpm not detected if twin started in /dev/console

This was reported in #44, but is an unrelated issue.
Tracking it here since #44 should be solved now.

The reported error is: if tty is /dev/console, twin complains that

starting display driver module `hw_tty' . . .
GPM_InitMouse() failed: unable to detect tty device
xterm_InitMouse() failed: this `linux' terminal
has no support for xterm-style mouse reporting.

support xterm-256color emulation?

I rarely work in an environment w/o 256 color support and have gotten used to vim w/ more than 16 colors, so I'd be interested in adding support to emulate xterm-256color in twin. Any thoughts about how difficult this would be? Suggestions about where to focus in the twin code base?

FYI, a secondary reason for emulating xterm-256color is I like 'set cursorline' in vim - but with TERM=linux, instead of underlining it turns off syntax highlighting on the current line. The vim documentation mentions that this is due to limitation in some terminal types. I confirmed this appears to be due to TERM=linux (not a bug in twin) by reproducing the behavior in a linux virtual console.

Arrow keys being returned as letters in twin terminal

I'm running Finch in twin and it uses arrow keys to navigate and move some of the TUI elements.
However when I use the arrow keys in twin, it returns capital letters instead of the actual arrow key map.
e.g. Up is A, down is B, right is C and left is D.

The same occurs when using the numberpad with num lock off.

Error during run - librarys can't open?

$twstart
twfindtwin: error while loading shared libraries: libTw.so.4: cannot open shared object file: No such file or directory
/usr/local/bin/twin_real: error while loading shared libraries: libTutf.so.0: cannot open shared object file: No such file or directory

./configure seemed ok
make had many warnings but completed and said I should do make install
sudo make install completed as well -

[email protected]

FullScreen/Maximize Toggle [enhancement]

Hello Max,

would be great to have Toggle option for FullScreen / Maximize commands to allow quickly switch back from maximized window size to the previous one (e.g. save current window size & position before FullScreen/Maximize is involved within window internals, and then restore them on Toggle switch)..

Rgds,
-Dimitri

Twinutils and Twin XMMS

Is it at all possible to re add support for twinutils or the Twin XMMS? Now with Pulse Audio having a Ncurses interface (PAmix here on github) having audio control might just be a bit more feasible. This thread will just be a post with some brainstorming ideas and likely some place to post neat ncurses programs that might be useful to look at for the twin project. If not integrating them into twin somehow, at least looking at how they are coded and maybe learning something that will help enhance the project. You never know, someone else might have found a cleaner better way of implementing something.

Just a thought.

Compile instructions incomplete

Needed to add 'autoreconf -f -i' before './configure/ before it would compile on my Ubuntu machine, just reporting the issue

A few mouse issues in mouse-compatible applications

Hi cosmos72,

I have made a list of issues I experienced while using mouse-compatible applications within twin:

  • Scrolling up in applications which support mouse scrolling also scrolls up the terminal window, causing blinking in some cases.
  • There is no animation when selecting text with mouse.
  • Scrolling seems to trigger paste (or right/middle-click) events in text editors.

I recorded each of them on video:
https://drive.google.com/open?id=1TyOCcDS_4xAlU3yAgfsmrV9RQk9VO6lX
https://drive.google.com/open?id=1om5K_AJANkHPs5tNWaYTKN9gTKQwfuYR
https://drive.google.com/open?id=1RYnV1NWR2nyzuj_tibLJpGU79J-488gi

Of course these are not extremely important issues and twin is still usable with them. Only mouse-compatible applications seem to be affected by it.

Have a merry Xmas!

support for truetype fonts?

It looks from my initial experiments that truetype fonts are not supported. If that true? Any idea how hard it would be to add support? Thanks!

Mouse selections & Clipboard

I'm very curious what is so special TWIN is doing to disable copy/paste selection via mouse to the system clipboard ?..

  • I'm running TWIN within a text terminal (iTerm2 or mrxvt or Konsole, etc.)
  • I can select a text from any TWIN window and paste it any TWIN window via mouse..
  • I can as well paste to any TWIN window a text from my system clipboard via Terminal key shortcut..
  • however, until TWIN is active within my Terminal window, I cannot get any selected text from this Terminal to appear back in clipboard..
  • while as soon as I "Detach" WMN from the Terminal, I can select any Terminal text back to the clipboard again..

so, what is so special TWIN is doing in the window to block the system clipboard ?..

currently the only workaround I found to paste the selected text to my clipboard is to detach TWIN, select what I need, see it appeared in my clipboard, then re-attach TWIN again.. -- but this is rather looking dumb ;-))

so :

  • is there any way to "allow" mouse selections from Terminal ?..
  • or also enable the text selection to be copied to the clipboard too ?..

and as a side note : will be great also to allow a "Paste" action to be involved via Key combinations (not only via mouse button)..

Thanks a lot for your help !

Rgds,
-Dimitri

AddScreen in TWIN

From a long time I wanted to test "AddScreen" feature in TWIN, and here is my feedback:

  • unfortunately the name of the Screen is now shown in menu bar, so you never know in which exactly Screen you're working right now..
  • seems like there is no hot key implemented to switch to Screen N (or prev./next), only mouse click in the menu, but any way to change ": :" labels to something like "<< Name >>" for ex.? (where Name is the current Screen name)
  • and finally, there is the menu option "SendToScreen name" allowing to send the current window to the given Screen "name", however if you try to use it -- it'll will hang the whole TWIN session ! (which is not cool ;-))

how to reproduce it:

add into .twinrc the following:

# add Screen 2
AddScreen 2

# background
Background 2 Black (
   " "
)

# menu
AddToMenu " Window " (
   " Move "        Interactive Move
   " Resize "      Interactive Resize
   " Scroll "      Interactive Scroll
   " Center "      Center
   " Maximize "    Maximize
   " Full Screen " FullScreen
   " Roll Up "     Roll Toggle
   ""              Nop
   " Send to Screen #1 " SendToScreen 1
   " Send to Screen #2 " SendToScreen 2
   ""              Nop
   " Raise/Lower " RaiseLower
   " UnFocus "     Focus Off
   " Next "        _Next
   " WinList... "  WindowList
   ""              Nop
   " Refresh "     Refresh
   " Send Pause "  SyntheticKey Pause
   ""              Nop
   " Close "       Close
   ""              Nop
   " Kill Client " Kill
)

start TWIN, open Term, and then from Window menu try to send it to Sceeen 2.

Rgds,
-Dimitri

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.