sedwards2009 / extraterm Goto Github PK
View Code? Open in Web Editor NEWThe swiss army chainsaw of terminal emulators
Home Page: https://extraterm.org
License: MIT License
The swiss army chainsaw of terminal emulators
Home Page: https://extraterm.org
License: MIT License
As far as I know this isn't an issue with extraterm but I'm posting this anyway since it might help someone else. Upon launching extraterm it crashed because of a limit on the number of inotify watches.
Doing the following made the error go away which allowed extraterm to launch:
If you get following error with a big traceback right after Atom starts:
TypeError: Unable to watch path
you have to increase number of watched files by inotify. For testing if this is the reason for this error you can issue
sudo sysctl fs.inotify.max_user_watches=32768
and restart Atom. If Atom now works fine, you can make this setting permanent:
echo 32768 | sudo tee -a /proc/sys/fs/inotify/max_user_watches
See also #2082.
Backspace with any modifier always is send as back space.
$ showkey -a
^? 127 0177 0x7f -> alone
^? 127 0177 0x7f -> with ctrl
^? 127 0177 0x7f -> with Alt
^? 127 0177 0x7f -> with ctrl + alt
I have it bound to delete word in bash and only can make it work (one at a time) with Esc + backspace.
Esc + backspace, esc + backspace, esc +backspace,... works.
esc+backspace + backspace+backspace doesnt' work either.
Originally the idea was to use right mouse button context menus in the app. The move to be much more keyboard centric and to the addition of the Command Palette have removed the need for context menus. Any remaining context menu code should be removed. Instead RMB should trigger the Command Palette.
The app size on osX is huge.
it could literally be 300% smaller.
The issue is in the electron framework where you don't preserve symlinks while packaging
electron/electron#2003
Many people are used to emacs style keybindings in the terminal and would like to use those bindings when using Extraterm's cursor mode. Extra predefined selectable keybindings should be added for "PC with emacs editing" and "OS X with emacs editing".
See #41
Extraterm needs to take this into account when starting up.
(Split off from issue #7 )
Suggestions?
nigels@zooropa:/opt/extraterm-0.2.0-linux-ia32$ cat /etc/issue
Ubuntu 14.04.4 LTS \n \l
nigels@zooropa:/opt/extraterm-0.2.0-linux-ia32$ ldd extraterm
linux-gate.so.1 => (0xf7760000)
libnode.so => /opt/extraterm-0.2.0-linux-ia32/./libnode.so (0xf6737000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf66ea000)
libgtk-x11-2.0.so.0 => not found
libgdk-x11-2.0.so.0 => not found
libatk-1.0.so.0 => not found
libpangocairo-1.0.so.0 => not found
libcairo.so.2 => not found
libpango-1.0.so.0 => not found
libfreetype.so.6 => not found
libfontconfig.so.1 => not found
libnotify.so.4 => not found
libgdk_pixbuf-2.0.so.0 => not found
libgio-2.0.so.0 => not found
libgobject-2.0.so.0 => not found
libdbus-1.so.3 => /lib/i386-linux-gnu/libdbus-1.so.3 (0xf669c000)
libXi.so.6 => not found
libXcursor.so.1 => not found
libXdamage.so.1 => /usr/lib/i386-linux-gnu/libXdamage.so.1 (0xf6697000)
libXrandr.so.2 => not found
libXcomposite.so.1 => not found
libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xf6684000)
libXfixes.so.3 => /usr/lib/i386-linux-gnu/libXfixes.so.3 (0xf667e000)
libXrender.so.1 => not found
libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xf6549000)
libXtst.so.6 => not found
libgconf-2.so.4 => not found
libgmodule-2.0.so.0 => not found
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf653f000)
libglib-2.0.so.0 => not found
libnss3.so => not found
libnssutil3.so => not found
libsmime3.so => not found
libnspr4.so => not found
libasound.so.2 => not found
libcups.so.2 => not found
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf6539000)
libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 (0xf6510000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf640d000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf63c7000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf63a9000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf61fb000)
/lib/ld-linux.so.2 (0xf7761000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xf61d9000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf61d4000)
libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf61cd000)
nigels@zooropa:/opt/extraterm-0.2.0-linux-ia32$ ./extraterm
./extraterm: error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory
DO I need to hack the default theme for this?
There's a rant on reddit about the outdated way terminals work. It's like nothing has changed in decades. Please keep it up, this is my shimmer of hope on the horizon.
Meanwhile in that rant you might also find a few ideas for additional features, if you are so inclined. ;)
I'm not sure if I can help myself. There seems to be some css and js around, so I'll go check that out.
Example: http://ikeran.org/images/lines.png
In another terminal for comparison: http://ikeran.org/images/lines_working.png
At the moment Extraterm has the same keyboard shortcuts for every platform. For Windows (cygwin) and Linux these are fine, but on OS X they are some what different other existing OS X software. Extraterm needs OS X specific shortcuts when running on OS X.
I personally have limited access to an OS X machine and am not familiar with it anyway. This issue needs to be picked up by some ones who uses OS X.
Selecting text using the mouse should automatically copy it to the clipboard. This is traditional unix-style terminal behaviour.
Selecting text using the keyboard only also copies the text automatically. This is NOT expected or desirable and conflicts with how selection works in almost every application.
Add a command to reset the state of the terminal. Useful for when an app goes haywire and messes up your terminal settings making it unusable.
Add a command to erase the scrollback which is above the currently visible part of the terminal.
Make sure that any references to "selection mode" are replaced with "cursor mode".
Extraterm is eating or has conflicting shortcuts for keys which are needed to run Emacs:
I'm trying to use Extraterm v5.0 on Windows 7 with a Cygwin 64 install. Debug output also includes this warning "2016-03-17 16:46:41.562 DEBUG [main #0] Couldn't find user configuration file at
C:\Users\UCA\AppData\Roaming\extraterm.json"
Currently the '-l' option is passed to the shell when starting it. This is needed to start the shell and result in an user environment that is correctly initialised. As it turns out this is only needed on OS X and shouldn't be done on Linux due to the slightly different ways that these two systems start up. On cygwin, I'm not sure what is best.
More info:
Starting up extraterm from a binary zip download and passing in some flags and options (e.g. --cygwinDir
) doesn't parse the options correctly.
The problem is in the commander
module which Extraterm uses to parse command line arguments. It assumes that the first two items in process.argv
are the nodejs executable and then the name of script being executed. This assumption is violated when starting up the packaged version of Extraterm.
A workaround is to pass an extra dummy value before the first flag or option. i.e. extraterm.exe XXX --cygwinDir c:/foo
It would be nice to be able to run Extraterm without the native title bar at the top. Instead the normal window controls should be incorporated into the area the top which contains the tabs and hamburger menu.
The code to watch the file system and reload the current theme has been ripped out. For theme development it is useful to have a way to reload the theme CSS without restarting Extraterm.
This issue is for tracking issue priorities and their rough order of implementation.
Note: This can change at anytime without warning. It might even just be out of date at times
show
commandfrom
commandUnsorted:
As the title says, after sourcing the Extraterm commands, clear
(Ctrl+L as well) does nothing, but clears until the last shown frame, which, in most cases, is after the last command. Using frames is extra useful, but clearing up is too, as I don't enjoy clutter on my screen.
If a command is terminated using Ctrl+C, it will not be framed correctly. This affects the fish shell and it a known issue in fish.
exec
option to fetch 1 or more frames, store the contents in tmp files and then run a command on them.Hi, just saw you starred my repo so I wanted to check this one out as well. I think you should change the escape code you're using for HTML output. I'll put this into a design document over at my repo soon but in the mean time:
Since you support outputting HTML and so do I, I definitely think it makes sense to standardize the escape codes we use. I picked 1866 because it wasn't in use and is a reference to RFC 1866.
RIght now Extraterm's main Node process will happily read more and more data from a pty and buffer it internally without any built in limit on the buffer size. This is a problem because it can take forever between a ^C stopping a program and the terminal being finished with processing the buffer output from said process.
The show
command needs some needed command line upgrades:
The Tips which appear when you open a new terminal, are just too big and must be made much more compact. The controls in the tips should move to the right to make the whole thing take up less vertical space.
There is a very similar project called Black Screen, which also provides a terminal based on Electron and Typescript.
I just wanted to cross-link both projects. Guess they can inspire each other.
[edit] ...or even work out a compatible API and share code
I just installed extraterm-0.5.0-darwin-x64 on OSX and then installed fish with brew install fish
. Then I added /usr/local/bin/fish to /etc/shells and ran chsh -s /usr/local/bin/fish
and entered my password. My default shell is now fish in the Apple Terminal and in iTerm, but when extraterm starts, it's bash.
I have logged out and logged back in. I have deleted extraterm and reinstalled it. Still, every terminal uses fish, except extraterm which is still using bash. I can start fish in extraterm by running fish
, but I obviously want it to be the default.
Do I need to to something else in extraterm to change my default shell?
Thanks in advance.
In my case it was missing CygWin, this information was presented to me when I've launched the app from terminal:
2016-03-17 21:22:18.226 DEBUG [main #0] Couldn't find user configuration file at C:\Users\Jacek\AppData\Roaming\extraterm.json
ERROR: The system was unable to find the specified registry key or value.
2016-03-17 21:22:18.271 DEBUG [main #0] Couldn't find a cygwin installation.
2016-03-17 21:22:18.277 DEBUG [main #0] Couldn't find a Babun cygwin installation.
But when I've started this app like any Win32 app (From exe with a click) there was no information at all. I think it might be considered a bug. Even simple message box popup would do.
A feature for (vertically) collapsing and expanding frames.
subprocess.run()
is available on Python 2.7 but the from
command should still run on 2.7.
The demo here https://github.com/yaronn/blessed-contrib uses (and abuses) all sorts of unicode characters in its dashboard and charts. As we can see in this screenshot below, Extratrem doesn't correctly render it.
The main problem seems to be the widths of the characters which are not monospace even though Im using a good monospace font. Extraterm should handle this better.
We need support for setting the size of text in the terminal and also for handling zoom in and out.
This issue depends first on the theme CSS/SCSS stuff being applied to all of the custom elements which make up the UI.
My default multi-tab terminal app on Windows is ConEmu, which I find quite solid, although somewhat quirky. One feature I do make use of is the various tasks that can be configured - such as cmd.exe
, git bash, MSYS or MSYS2, or a direct remote ssh session. I don't mind omitting the native windows shells, personally. But I do have some preference for git bash or MSYS2, rather than Cygwin. Looking at main.ts this looks like a matter of adding some alternative enumerants, along with the logic to either auto-detect the various options, or require pull paths as a last resort.
But I do wonder if it's possible to spawn these other shells without inheriting Cygwin environment via extraterm?
I am trying extraterm and absolutely love its unique features. Thank you for public this awesome software!
However, I would love to have some shortcuts to zoom in/out (+/-/0). I love splitting/unsplitting when I was using terminator and as a result I need change the font sizes very often. Also, if you consider implementing this, I suggest you use different font sizes for each tabs.
Thank you!
When Extraterm contains many frames (~100) it can take seconds for the window to update after a resize. The same applies when splitting/unsplitting the window panes.
Most of the problem is caused by the uncoordinated update of the DOM by the hundreds of CodeMirror instances. This thrashes the browser DOM and causes a lot of unneeded layouts and work.
Ctrl-Shift-V
does work, but I find Shift+Insert
a bit less contorting.
Hi,
Thanks for your work
Shortcuts should be editable (if they are, I didn't find a way to do it on debian)
Example : Ctrl+a is set in keybindings to select all, though it's painful when you have the habit to use it to go at the beginning at the line, in term or in emacs
Thanks
Hi,
The 0.19 worked well, though the 0.20 has some problems : it freezes on "preparing" and nothing more happens.
Launching it from another term does not give errors, though strace gives this :
recvmsg(25, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
write(60, "\0", 1) = 1
recvmsg(25, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(18, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(25, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=18, events=POLLIN}, {fd=19, events=POLLIN}, {fd=25, events=POLLIN}, {fd=32, events=POLLIN}], 4, 0) = 0 (Timeout)
recvmsg(25, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(18, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(25, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=18, events=POLLIN}, {fd=19, events=POLLIN}, {fd=25, events=POLLIN}, {fd=32, events=POLLIN}], 4, 332) = 1 ([{fd=32, revents=POLLIN}])
recvmsg(25, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
(I did not put the whole trace as it's huge and maybe not useful)
Seen on two different machines
Thanks
The documentation says, for instance, that Ctrl+Shift+T
opens a new tab. In point of fact, it's Ctrl+Shift+Keycode 28
, where keycode 28 is 't' on QWERTY keyboards (or 'y' on Dvorak, etc).
On konsole when you login to a server over ssh the title is/can be changed to the name of the server.
Maybe will be possible if not that, allow changing from the cli the name of the tab before connecting or allow this kind of modifications as a command ouput handling rules.
Seems that
echo -ne "\033]0;SOME TITLE HERE\007"
changes it, but it automatically returns to the current path.
Hi, awesome project! This has quickly become my primary terminal.
I have a suggestion regarding opening new tabs, essentially mirroring a feature from at least Linux Mint's native terminal: It would be really cool if, when a new tab is opened, the new tab could start in the previous active tab's working directory.
More clearly:
cd code/myproject
, then do Ctrl+Shift+T
(or Ctrl+Shift+P
"New tab"), I'd love for the new tab to open with the pwd set to ~/code/myproject
I hope I'm explaining it well enough.
Thanks again for your hard work!
Babun, a popular 'distribution' of cygwin, only installs Python 2 by default. Extraterm needs Python 3 to run on cygwin. It would be nice if Extraterm could also use Python 2.
Extraterm uses an environment variable $EXTRATERM_COOKIE
to hold a cookie which is used in the protocol to prevent random data printed directly to the terminal from being able to access the more advanced and security sensitive Extraterm features. The problem is that if you use ssh
to go to a different server, your terminal integration on the server will not work as it doesn't have access to the value in $EXTRATERM_COOKIE
.
In actual fact there are some environment variables which ssh
will automatically propagate from the local machine to the remote, and those are TERM
and the LC_*
variables. (This behaviour is configurable, but the most common default config copies these variables.) If $EXTRATERM_COOKIE
is renamed to $LC_EXTRATERM_COOKIE
then for most users it will automatically be propagated by ssh.
Performance is still an issue. The solution is to minimise the size of the DOM and its contents so that window resizes and DOM layouts are done with in a reasonable time. In other words, the performance of layout needs to depend on the amount of stuff which is visible on screen, not on the amount of stuff hidden in the scrollback and everywhere else.
This issue tracks the logo request over at g-harel/open-source-logos#4
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.