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.
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).
* Add Windows launcher
The launcher looks at directory "Versions" next to its executable.
It finds the latest version and runs the executable in that directory
with the same name as itself. For instance:
Aminal.exe <- the launcher
Versions/
1.0.0/
Aminal.exe
1.0.1/
Aminal.exe
In this example, running the top-level Aminal.exe (the launcher) starts
Versions/1.0.1/Aminal.exe.
Having a launcher allows Aminal to be updated while it is running. For
example, version 1.0.1 could be downloaded without disturbing running
instances of Aminal 1.0.0.
* Implement a command-line installer for Windows
It can be generated with the Make target installer-windows.
It requires that you ran Make target launcher-windows before.
* Implement Uninstaller for Windows
* Codesign Windows auto-update executables
* Don't require Admin privileges for Win uninstaller
* Remove references to fman
* Explain automatic updates in windows.md
* Limit installer go packages compilation only to Windows platform
* #225 ESC press doesn't work as expected under vi
* fix: BEL OSC terminator for Windows
* bug fix: correcte DA2 handling
* bug fix: #223 Wrong cursor rendering position on fast new line input
* Patch to resolve monitor change event is not get fired issue
* Fix monitors init on non Windows
* GLFW patch: create monitor dpi dependent cursor icons
* Update go-gl/glfw dep to point fork
* 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
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.
* 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
* Terminal state moved out from buffer
* fix