aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-12-14Extract terminal status line into separate QML itemAdrian Kummerlaender
2015-12-14Add terminal status bar backgroundAdrian Kummerlaender
2015-12-13Implement terminal status line prototypeAdrian Kummerlaender
2015-12-12Add PID to `ls` outputAdrian Kummerlaender
2015-12-12Expose session PID and current working directoryAdrian Kummerlaender
2015-12-12Add initial working directory to settings handlerAdrian Kummerlaender
In addition to increasing customizability this change makes it clear that the _working directory_ property only concerns the intial working directory and is not updated if the contained process changes its directory. Note that setting the intial working directory is broken in upstream _QMLTermWidget_ and the appropriate patch [1] is not merged at the time of this commit. [1]: https://github.com/KnairdA/qmltermwidget/tree/initial_working_directory_fix
2015-12-05Implement `cd` command to enable changing _MetaTerm_'s working directoryAdrian Kummerlaender
Exposing access to the working directory to QML is the first step towards enabling usage analogously to a normal terminal emulator alongside the management of multiple running appications. i.e. executing `cd` should change the global working directory so that consecutive commands work as expected.
2015-09-05Add `kill` action to normal modeAdrian Kummerlaender
Default keyboard shortcut for reset action was changed to `r` while the new kill action was bound to `d`.
2015-09-04Add `reset` command to restore the previous functionality of `kill`Adrian Kummerlaender
2015-09-04Reimplemented `kill` command using actual signal sendingAdrian Kummerlaender
Previously `kill` merely destroyed the terminal widget. This is contrary to the expected notion of `kill`, i.e. actually killing the process explicitly instead of relying on side effects. The normal mode `d` verb now explicitly destroys the current item's content, be it a terminal widget or a history view.
2015-09-03Enable line wrapping in history viewAdrian Kummerlaender
2015-09-03Reduce `TerminalItem` command input default font sizeAdrian Kummerlaender
2015-09-03Remove default padding from `TerminalItem` command inputAdrian Kummerlaender
2015-08-31Improve scrolling to items larger than the viewportAdrian Kummerlaender
2015-08-31Adapt focus and input scoping to respect history viewerAdrian Kummerlaender
2015-08-30Prevent visual selection change on `kill` commandAdrian Kummerlaender
`TerminalItem`'s `reset` member method wrongly performed a visual selection change which led to inconsistency when calling `kill` on a non-selected index. Visual selection update is now performed on history view instantiation.
2015-08-30Add launcher program and argument to configurationAdrian Kummerlaender
2015-08-30Make command output selectable and rich by defaultAdrian Kummerlaender
2015-08-30Make text in history view selectableAdrian Kummerlaender
2015-08-30Only enter insert mode after history instatiation on last itemAdrian Kummerlaender
2015-08-30Defer command interpretation to `sh`Adrian Kummerlaender
Otherwise one can not easily enter more complex shell commands such as pipe chains and so on. The goal of _MetaTerm_ is not to implement a new shell language but to facilitate existing ones which is why this is best deferred to an existing application.
2015-08-30Ease consecutive non-interactive executions and fix mode changeAdrian Kummerlaender
If a non-interactive applications terminates the next item is automatically selected in insert mode as to make the behaviour in this context more simmilar to normal shells. Normal mode has to be entered explicitly for the highlighting to update on `HistoryViewer` instantiation.
2015-08-29Automatically destroy terminal when killed and display historyAdrian Kummerlaender
Child processes of _MetaTerm_ may be terminated using other ways that the integrated kill command. Automatic terminal widget destruction in such a event prevents the user from viewing the output of non-interactive applications. This requires _MetaTerm_ to display the application's output after it was terminated. This requirement is implemented via the new `HistoryViewer` widget that is instantiated after the terminal widget instance has been destroyed.
2015-08-23Add basic usage documentation to README.mdAdrian Kummerlaender
2015-08-22Use window background as `TerminalItem` selection text colorAdrian Kummerlaender
2015-08-22Replaced unnecessary `eval` calls in settings getter and setterAdrian Kummerlaender
2015-08-22Update README.md as the necessary patches were mergedAdrian Kummerlaender
2015-08-22Hide category property in `set` key suggestionsAdrian Kummerlaender
2015-08-21Implement automatic key suggestion in `set` commandAdrian Kummerlaender
2015-08-21Improve `exec` output type handlingAdrian Kummerlaender
i.e. serialize objects to JSON.
2015-08-21Add `q` command to close _MetaTerm_ in command modeAdrian Kummerlaender
2015-08-19Improve handling of non-existing properties in `set`Adrian Kummerlaender
2015-08-19Prevent trailing whitespace from resetting configuration valuesAdrian Kummerlaender
Trailing whitespace was falsely recognized as a separate argument and as such led to resetting configuration values without obvious cause.
2015-08-19Add `set` command to ease configuration changesAdrian Kummerlaender
2015-08-19Extract all settings into `SettingsHandler` objectAdrian Kummerlaender
This enables the user to straight forwardly change all application settings via command mode. During the implementation of this change I discovered that the way I was passing around `StateHandler` and `SettingsHandler` instances using properties was unnecessary. If all object instances are created in a common hierarchy they can access each other by their `id` property - i.e. `settings` and `mode` are available to the whole application without property trickery.
2015-08-15Expose component settings as propertiesAdrian Kummerlaender
Otherwise they are not accessible to JS commands, i.e. they can not be changed in command mode.
2015-08-15Restructure QML and JS sourcesAdrian Kummerlaender
`list` holds the components of the central list UI element. `command` holds the UI and implementation parts of the command mode. `widget` holds more or less general purpose elements that may also be of use in other circumstances.
2015-08-14Display exceptions during `exec` processing as errorsAdrian Kummerlaender
2015-08-13Implement `kill` commandAdrian Kummerlaender
2015-08-13Implement `ls` commandAdrian Kummerlaender
This suggested adding an `iterate` helper method to `TerminalList` as well as line break logic to the command output log.
2015-08-12Change color setting types to `string`Adrian Kummerlaender
While `color` would obviously be the correct type to store a color value it is serialized as a `QVariant` value which is not easily changeable by the user. This requirement is satisfied by `string` and as such this type is - at this point in time - a superior replacement of `color`. Should the QML settings module be changed to serialize color values in a human readable fashion these types should be changed back to their formally correct value.
2015-08-12Add command output error font color to settingsAdrian Kummerlaender
2015-08-12Add special error formatting to command outputAdrian Kummerlaender
2015-08-11Add command output log to UIAdrian Kummerlaender
`output` text item reference is passed to all command implementations.
2015-08-10Implement proper handling of unimplemented commandsAdrian Kummerlaender
2015-08-09Return to normal mode after command evaluationAdrian Kummerlaender
Requires new `executed` signal in `CommandInput` component to correctly trigger the state change.
2015-08-09Implement `jump` commandAdrian Kummerlaender
Requires type dependent conversion in TerminaList's `selectItem` method as values passed through `eval` are of type `QJSValue` which is not implicitly convertible to Int.
2015-08-09Implement basic command dispatch logicAdrian Kummerlaender
Moved command implementation into separate ressource. Commands are plain JavaScript functions in this separate ressource and as such callable via a simple call to `eval`. Introduced the concept of a command prefix to enable implementation of e.g. a search command analogously to _vim_.
2015-08-07Extracted terminal list into separate componentAdrian Kummerlaender
2015-08-07Implemented basic command modeAdrian Kummerlaender
Exposes access to the application via JavaScript to the user. This will enable easy configuration changes as well as make more complex commands possible. All JavaScript entered in command mode is evaluated at the application root.