Commit Graph

104 Commits

Author SHA1 Message Date
Roman 4033a8b25c
Hyperlinks gnome-terminal style (OSC 8 sequence) (#263)
* #147 Hyperlinks. Step 1. Set/unset

* #147 Hyperlinks, corrected set/unset

* #147 set up hyperlinks and render them

* #147. Click on hyperlink

Co-authored-by: Liam Galvin <liam@liam-galvin.co.uk>
2020-01-26 15:17:18 +03:00
nikitar020 f100fac09e Improve font rendering performance, eliminate excessive memory usage (#271) 2019-03-23 00:52:18 +02:00
nikitar020 070f29ad13
Solve intermittent build errors (#262)
* Solve intermittent build errors
* Eliminate `panic()` in `gui.Screenshot()` function
2019-03-20 04:45:43 +02:00
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 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
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
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
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 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 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 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 177e928b71 more efficient text rendering and streamlining of output handling 2018-12-01 22:09:20 +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 3d7df26eb5 support old opengl 2018-11-29 08:53:06 +00:00
Liam Galvin 6e34e5ee85 set minimum window size 2018-11-28 20:19:20 +00:00
Liam Galvin 00517d72c8 support for retina displays 2018-11-27 13:06:17 +00:00
Liam Galvin a5f5979608 support for retina displays 2018-11-27 13:04:12 +00:00
Liam Galvin ea56961861 version alerts 2018-11-25 19:50:53 +00:00
Liam Galvin f47e47babd added version check 2018-11-25 19:08:48 +00:00
Liam Galvin 707df1a3a1 added configurable keyboard shortcuts 2018-11-25 14:25:19 +00:00
Liam Galvin 61edd75524 colour hinting 2018-11-25 11:06:05 +00:00
Liam Galvin 3e6b7e4f14 Fixed render issues with cached rectangles and fixed powerline font rendering 2018-11-23 17:01:50 +00:00
Liam Galvin 3193c2c43a added multi font support including emoji, powerline rune ranges etc. 2018-11-15 12:17:40 +00:00
Liam Galvin c7ef0874aa debug mode 2018-11-04 20:31:32 +00:00
Liam Galvin 1c96cb83d5 add hinting 2018-10-29 20:35:49 +00:00