Commit Graph

136 Commits

Author SHA1 Message Date
nikitar020 c2a7be2aeb
Implementation of the vertical scrollbar (#229)
* Implementation of the vertical scrollbar (also enable gofmt checks only for go1.11.x builds)
2019-03-19 19:57:17 +02:00
nikitar020 05c45c0892 Implement window manipulation CSI sequences (#256)
* Implement window manipulation CSI sequences

* Fix travis config to make gofmt only for go1.11 builds

* remove commented out functions
2019-03-13 14:16:32 +02:00
Menno Finlay-Smits 44233f384e Fix merge issues in develop (#257)
* Fix merge issues in develop

* Add -timeout to go test

The tests are timing out on TravisCI for some reason so a timeout has
been added so that `go test` will dump out the goroutine stack traces
when the tests are stuck.

* gui.Close now wakes up main loop

Without this, otherwise successful tests in main_test.go hang.

* Use a longer timeout in case CI infrastructure is slow

* Fix various gofmt issues

Not sure how some of these crept in.
2019-03-12 09:46:59 +03:00
Menno Finlay-Smits 8f183ba440 Avoid polling in main GUI loop (#245)
Instead of waking up regularly WaitEventsTimeout, WaitEvents and
PostEmptyEvent are used to make the main loop purely event driven. The
rate of redraws due to terminal activity can be tweaked via the new
wakePeriod const.

This leads to some significant performance improvements: Aminal now consumes:
- no CPU when idle (previously ~2.7% on my laptop)
- ~8.5% CPU on my machine when running htop full screen on a large
  monitor (previously ~18.5% on my laptop)
- scrolling large amounts of output is an order of magnitude faster

This change also incidentally fixes data races around the terminal
dirty flag (which is now gone).
2019-03-11 22:57:41 +02:00
rrrooommmaaa f207ec0930 #195 Real buffer clearing (#246)
* #195 Real buffer clearing. Step 1

* #195 buffer clear. Clearing Windows buffer
2019-03-07 12:22:57 +02:00
rrrooommmaaa 7ac6c801e2 fix data races (#230) (#235)
* fix data races (#230)

* Update CODEOWNERS
2019-03-07 11:15:48 +02:00
rrrooommmaaa 4ec83c54a4
#217 rectangular select and copy (#241)
* #217 rectangular select and copy
2019-03-05 09:55:29 +03:00
rrrooommmaaa 86627135dd #180/#234: CSI SM/RM multiple modes, Mouse button-tracking (#233)
* #180: added support for several modes specification in CSI SM/RM

* added Button Mouse Mode and SGR encoding
2019-02-26 13:14:51 +00:00
rrrooommmaaa 8c4c842ff1
Alt+letter sends Escape code (#179) (#226) 2019-02-20 17:12:57 +03:00
Liam Galvin 597c2dcf5a
fix backspace (#231) 2019-02-20 06:46:18 +00:00
rrrooommmaaa d91a17c74b ESC key for vi (#227)
* #225 ESC press doesn't work as expected under vi

* fix: BEL OSC terminator for Windows

* bug fix: correcte DA2 handling
2019-02-19 19:42:32 +00:00
Menno Finlay-Smits 35193b7981 Gofmt (#216)
* Added Make targets for gofmt

- `make check-gofmt` will check for files that aren't gofmt compliant
- `make gofmt` will fix any gofmt error's in Aminal's source

Vendored files are ignored.

* Add gofmt check to TravisCI checks

* Fix gofmt errors
2019-02-14 16:45:53 +00:00
Max Risuhin 7caa46e443 Recalculate monitor based DPI scale if Window moved; Set DPI awareness of UI on Windows. (#206) 2019-02-11 20:27:42 +00:00
rrrooommmaaa 77348c2188 implemented 'area scrolling' (#202)
* implemented 'area scrolling'

* bug fix: area scroll down boundary check

* bug fix: ReverseIndex activates scroll down correctly
2019-02-11 20:27:08 +00:00
Max Risuhin 1ca1b7c246 Introduce TestMain to run gui tests in goroutine locked to main app thread; Call LockOSThread only once. (#199) 2019-02-06 08:58:31 +00:00
Menno Finlay-Smits 150b0493de Add dpi-scale config option (#198)
If dpi-scale is set in aminal.toml then this overrides aminal's own
DPI calculation. This is useful for working around unusual monitor
setups or users just who prefer a different DPI scale.
2019-02-05 13:18:24 +00:00
Menno Finlay-Smits c2b1b95343 Use primary monitor for DPI calc if monitor could be determined (#197)
This avoids a panic on startup in some specific situations (e.g. when
xrandr's --scale option is in use).
2019-02-05 13:17:07 +00:00
rrrooommmaaa 1f05951012 bug fix: character under cursor rendering (#194) 2019-02-05 13:16:38 +00:00
rrrooommmaaa 07952f7505 Underline support (#193)
* added Tab Stops support

* added support for Screen Mode (DECSCNM) -- reverse colors

* bug fix: cursor rendition in Origin Mode

* bug fix: SGR parameters handling

* Save/Restore Cursor updates. Partial charset implementation.

* added Underline support

* fixed underline position

* underline position measured in MinY
2019-02-05 13:16:16 +00:00
nikitar020 22a5e8063a Implement three selection modes: char, word, and line. Make selection work in the same way as in Putty. (#191) 2019-02-04 13:24:49 +00:00
Max Risuhin f7b162e83e Avoid double mutex lock on programmatic resize (#192) 2019-02-04 08:26:34 +00:00
nikitar020 6ccfba976f Make launching URLs on Windows work (#185) 2019-01-30 15:43:15 +00:00
nikitar020 9190afef8a Fix issue: sometimes it cuts selected text when copying to clipboard (#186) 2019-01-30 15:43:08 +00:00
rrrooommmaaa 23797d50f3 Vttest 2 (#187)
* added Tab Stops support

* added support for Screen Mode (DECSCNM) -- reverse colors

* bug fix: cursor rendition in Origin Mode
2019-01-30 15:42:55 +00:00
nikitar020 97fe7362ce
Add "select with mouse to copy" / "right click to paste" functionality (#181) 2019-01-29 14:56:03 +00:00
Liam Galvin 8cdbe2517d
Tidy up opengl logging to prevent false bug reports (#176)
* add missing deps

* tidying
2019-01-27 14:12:52 +00:00
Max Risuhin 2d2f4c95cc Do not trigger window resizing work if no change in dimensions (#164)
* Do not trigger window resizing work if no change in dimensions;
Redundant dpiScale removed from GUI; dpiScale used to calculate desired size in pixels.

* Keep last applied window size

Signed-off-by: Max Risuhin <risuhin.max@gmail.com>
2019-01-24 13:05:12 +00:00
rrrooommmaaa 9c60167ca8 Vttest (#162)
* Correct handling of DeviceAttributes request

* added DECCOLM support

* added DECALN control sequence support

* added NEL support

* bug fix: Erase To Cursor should be inclusive

* added support for 'Origin Mode' (DECOM) -- top/bottom margins only

* vttest test 1 screen 3: margin tests fixes

* added support for intermediate controls inside CSI sequence

* added support for LNM (Line Feed/New Line Mode)

* removed obsolete 'intermediate' parameter

* window resize on programmatic CSI resize

* DECCOLM should clear screen on both set and reset

* bug fix in autowrap mode

* TestCursorMovement runs all test cases; screen template images updated

Signed-off-by: Max Risuhin <risuhin.max@gmail.com>

* bug fix: line mode messing with autowrap

* added ResetVerticalMargins() method

* IsAutoWrap(), IsNewLineMode()

* corrected DECALN

* fixed NEL to work in Line Feed mode

* tyding up: removed map of 1 element
2019-01-24 13:03:47 +00:00
Max Risuhin 27424d40dc Map input key codes to lower case (#163) 2019-01-24 12:57:45 +00:00
Max Risuhin 16ea4133cb Run and validate vttest on Travis (#159)
* Run vttest on Travis to validate active buffer data and screenshot.

Signed-off-by: Max Risuhin <risuhin.max@gmail.com>

* Add deps sources to vendor

Signed-off-by: Max Risuhin <risuhin.max@gmail.com>
2019-01-21 18:48:46 +00:00
nikitar020 1b843e338d In order to cope with high memory consumption, remove the 'rectangles' member from OpenGLRenderer structure (#152) 2019-01-17 12:18:31 +00:00
nikitar020 43072eb024 Changes to minimize memory allocations and to ensure OpenGL objects cleanup (#148) 2019-01-14 20:50:03 +00:00
Liam Galvin 4242442980
Reduce default font size (#141) 2019-01-10 20:55:37 +00:00
nikitar020 89eea0921d Bug: mouse cursors leaks (#136) 2019-01-10 18:58:30 +00:00
Max Risuhin ab80fcd44e
Fix the bug when the application became unresponsible when minimizing (#133) 2019-01-09 01:11:06 +02:00
Max Risuhin a8ed9d472e Windows support and enhancements. (#123)
*  Windows support and enhancements.

 - Added basic platform abstraction layer for Pty and Process creation;
 - Added "platform" package that exposes a few interfaces and provides implementations for different platforms;
 - Windows build and dev env setup instructions;
 - Setup Travis and deploy git tags to GItHub releases;
 - Window scaling awares of monitor's dpi;
 - Resolved memory leaks on window resizing;
 - Default limit for terminal's buffer length.

Co-authored-by: nikitar020 <nikitar020@mail.ru>
Co-authored-by: Max Risuhin <risuhin.max@gmail.com>
Co-authored-by: Roman Shevchenko <rrrooommmaaa@mail.ru>

* ReadMe updated with Windows support; Detecting of currently used monitor.
2019-01-07 12:00:08 +00:00
Vladimir Kravets 731fcf5b08 Add another workaround for darwin SDL blank window bug
As for me it's much better then moving window at one pixel

(Based on the https://github.com/Noofbiz/glfwMojaveFix)
2018-12-05 13:27:13 +02:00
Liam Galvin fd384fa2e6 Add workaround for darwin SDL blank window bug 2018-12-04 12:02:16 +00:00
Liam Galvin b62910e8cf add alt backspace 2018-12-03 13:00:33 +00:00
Liam Galvin 5df038d223 fix home button 2018-12-03 12:14:03 +00:00
Liam Galvin fd71169b63 fix resize 2018-12-03 09:02:06 +00:00
Vladimir Kravets b4c4cb7b08 redraw correctly during resize 2018-12-02 20:01:47 +02:00
Liam Galvin 58dd4bf3a1 fixed broken packr 2018-12-01 22:32:55 +00:00
Liam Galvin 177e928b71 more efficient text rendering and streamlining of output handling 2018-12-01 22:09:20 +00:00
Liam Galvin 1d988f1189 fix tab autocomplete on zsh 2018-11-30 22:19:45 +00:00
Liam Galvin 4c3024d51c Support alternative keyboard layouts 2018-11-30 21:32:10 +00:00
Liam Galvin 3f60dd937b tidied ugliness 2018-11-29 13:25:51 +00:00
Liam Galvin adbbf0f5cf gofmt everythign 2018-11-29 13:04:47 +00:00
Liam Galvin 3a57a826fb downgrade shader version 2018-11-29 09:30:07 +00:00
Liam Galvin 3d7df26eb5 support old opengl 2018-11-29 08:53:06 +00:00