13 Commits

Author SHA1 Message Date
Adam Mathes
e7e3dfed00 spacing 2019-02-09 20:49:31 -08:00
Adam Mathes
aa82250232 tabs -> spaces 2019-02-09 20:25:36 -08:00
Adam Mathes
88f59d2016 fix spacing 2019-02-09 20:23:51 -08:00
Adam Mathes
8021ff4256 Merge branch 'master' of https://github.com/Swordfish90/cool-retro-term 2019-02-09 20:16:27 -08:00
Adam Mathes
32eab18da9 cean closewindow 2019-02-09 19:56:43 -08:00
Adam Mathes
52140c4c45 count child terminals, qt.quit when none left 2019-02-09 19:30:29 -08:00
Adam Mathes
10fd2a11ee qml 2019-02-02 08:01:05 -08:00
Adam Mathes
749ea88909 upstream merge 2019-02-02 07:42:21 -08:00
Adam Mathes
3f0653106e Merge branch 'master' of https://github.com/Swordfish90/cool-retro-term 2018-03-04 13:33:37 -08:00
Adam Mathes
9954fde6f1 qmlterm update 2017-12-17 19:06:35 -08:00
Adam Mathes
3ec46ea833 Merge remote-tracking branch 'upstream/master' 2017-10-18 17:05:54 -07:00
Adam Mathes
d59ac20e38 merge multiterm branch 2017-01-11 17:36:37 -08:00
Adam Mathes
7ce6571e1f change to point to qmlterm fork 2017-01-10 21:21:18 -08:00
12 changed files with 105 additions and 89 deletions

1
.gitignore vendored
View File

@@ -18,7 +18,6 @@
*.pro.user.* *.pro.user.*
*.moc *.moc
moc_*.cpp moc_*.cpp
moc_*.h
qrc_*.cpp qrc_*.cpp
ui_*.h ui_*.h
Makefile* Makefile*

View File

@@ -12,8 +12,6 @@ It uses the QML port of qtermwidget (Konsole) developed by me: https://github.co
This terminal emulator works under Linux and macOS and requires Qt 5.2 or higher. This terminal emulator works under Linux and macOS and requires Qt 5.2 or higher.
Settings such as colors, fonts, and effects can be accessed via context menu.
## Screenshots ## Screenshots
![Image](<https://i.imgur.com/TNumkDn.png>) ![Image](<https://i.imgur.com/TNumkDn.png>)
![Image](<https://i.imgur.com/hfjWOM4.png>) ![Image](<https://i.imgur.com/hfjWOM4.png>)
@@ -28,13 +26,13 @@ Just grab the latest AppImage from the release page and make it executable and r
chmod a+x Cool-Retro-Term-1.1.1-x86_64.AppImage chmod a+x Cool-Retro-Term-1.1.1-x86_64.AppImage
./Cool-Retro-Term-1.1.1-x86_64.AppImage ./Cool-Retro-Term-1.1.1-x86_64.AppImage
**Fedora** has the `cool-retro-term` in the official repositories. All you have to do is `sudo dnf install cool-retro-term`. **Fedora** has the `cool-retro-term` in the offcial repositories. All you have to do is `sudo dnf install cool-retro-term`.
Users of **openSUSE** can grab a package from [Open Build Service](http://software.opensuse.org/package/cool-retro-term). Users of **openSUSE** can grab a package from [Open Build Service](http://software.opensuse.org/package/cool-retro-term).
**Arch** users can install this [package](https://aur.archlinux.org/packages/cool-retro-term-git/) directly via the [AUR](https://aur.archlinux.org): **Arch** users can install this [package](https://aur.archlinux.org/packages/cool-retro-term-git/) directly via the [AUR](https://aur.archlinux.org):
trizen -S aur/cool-retro-term-git yaourt -S aur/cool-retro-term-git
or use: or use:
@@ -42,6 +40,17 @@ or use:
to install precompiled from community repository. to install precompiled from community repository.
**Gentoo** users can now install the third release "1.1.0" from a 3rd-party repository preferably via layman:
USE="git" emerge app-portage/layman
wget https://www.gerczei.eu/files/gerczei.xml -O /etc/layman/overlays/gerczei.xml
layman -f -a qt -a gerczei # those who've added the repo before 27/08/17 should remove, update and add it again as its source has changed
ACCEPT_KEYWORDS="~*" emerge =x11-terms/cool-retro-term-1.1.0::gerczei
The live ebuild (version 9999-r1) tracking the bleeding-edge WIP codebase also remains available.
A word of warning: USE flags and keywords are to be added to portage's configuration files and every emerge operation should be executed with '-p' (short option for --pretend) appended to the command line first as per best practice!
Users of **Ubuntu 14.04 LTS (Trusty) up to 15.10 (Wily)** can use [this PPA](https://launchpad.net/~bugs-launchpad-net-falkensweb). Users of **Ubuntu 14.04 LTS (Trusty) up to 15.10 (Wily)** can use [this PPA](https://launchpad.net/~bugs-launchpad-net-falkensweb).
**Ubuntu 17.10** can use [this PPA](https://launchpad.net/%7Evantuz/+archive/ubuntu/cool-retro-term) **Ubuntu 17.10** can use [this PPA](https://launchpad.net/%7Evantuz/+archive/ubuntu/cool-retro-term)
@@ -51,23 +60,7 @@ Users of **Ubuntu 14.04 LTS (Trusty) up to 15.10 (Wily)** can use [this PPA](htt
eopkg it cool-retro-term eopkg it cool-retro-term
``` ```
**macOS** users can grab the latest dmg from the [release page](https://github.com/Swordfish90/cool-retro-term/releases) or install via Homebrew: **macOS** users can grab the latest dmg from the release page: https://github.com/Swordfish90/cool-retro-term/releases
```
brew cask install cool-retro-term
```
**FreeBSD** users can install cool-retro-term with `pkg`:
pkg install cool-retro-term
## Build instructions (FreeBSD)
Grab a copy of [the FreeBSD Ports Collection](https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports-using.html), modify [`/usr/ports/x11/cool-retro-term/Makefile`](https://svnweb.freebsd.org/ports/head/x11/cool-retro-term/Makefile?view=markup) as you like, and then run `make install` to build and install the emulator:
```
cd /usr/ports/x11/cool-retro-term
make install
```
## Build instructions (Linux) ## Build instructions (Linux)
@@ -102,12 +95,6 @@ Make sure to install these first.
--- ---
**snapcraft (most of distros)**
sudo snap install cool-retro-term --classic
---
**Debian Jessie and above** **Debian Jessie and above**
sudo apt install build-essential qmlscene qt5-qmake qt5-default qtdeclarative5-dev qml-module-qtquick-controls qml-module-qtgraphicaleffects qml-module-qtquick-dialogs qml-module-qtquick-localstorage qml-module-qtquick-window2 qml-module-qt-labs-settings qml-module-qt-labs-folderlistmodel sudo apt install build-essential qmlscene qt5-qmake qt5-default qtdeclarative5-dev qml-module-qtquick-controls qml-module-qtgraphicaleffects qml-module-qtquick-dialogs qml-module-qtquick-localstorage qml-module-qtquick-window2 qml-module-qt-labs-settings qml-module-qt-labs-folderlistmodel
@@ -199,12 +186,6 @@ cp -r qmltermwidget/QMLTermWidget cool-retro-term.app/Contents/PlugIns
open cool-retro-term.app open cool-retro-term.app
``` ```
**Homebrew**
```sh
brew cask install cool-retro-term
```
## Donations ## Donations
I made this project in my spare time because I love what I'm doing. If you are enjoying it and you want to buy me a beer click [here](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=flscogna%40gmail%2ecom&lc=IT&item_name=Filippo%20Scognamiglio&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted). I made this project in my spare time because I love what I'm doing. If you are enjoying it and you want to buy me a beer click [here](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=flscogna%40gmail%2ecom&lc=IT&item_name=Filippo%20Scognamiglio&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted).

View File

@@ -42,28 +42,6 @@ int main(int argc, char *argv[])
setenv("LC_CTYPE", "UTF-8", 1); setenv("LC_CTYPE", "UTF-8", 1);
#endif #endif
if (argc>1 && (!strcmp(argv[1],"-h") || !strcmp(argv[1],"--help"))) {
QTextStream cout(stdout, QIODevice::WriteOnly);
cout << "Usage: " << argv[0] << " [--default-settings] [--workdir <dir>] [--program <prog>] [-p|--profile <prof>] [--fullscreen] [-h|--help]" << endl;
cout << " --default-settings Run cool-retro-term with the default settings" << endl;
cout << " --workdir <dir> Change working directory to 'dir'" << endl;
cout << " -e <cmd> Command to execute. This option will catch all following arguments, so use it as the last option." << endl;
cout << " -T <title> Set window title to 'title'." << endl;
cout << " --fullscreen Run cool-retro-term in fullscreen." << endl;
cout << " -p|--profile <prof> Run cool-retro-term with the given profile." << endl;
cout << " -h|--help Print this help." << endl;
cout << " --verbose Print additional information such as profiles and settings." << endl;
return 0;
}
QString appVersion("1.1.1");
if (argc>1 && (!strcmp(argv[1],"-v") || !strcmp(argv[1],"--version"))) {
QTextStream cout(stdout, QIODevice::WriteOnly);
cout << "cool-retro-term " << appVersion << endl;
return 0;
}
QApplication app(argc, argv); QApplication app(argc, argv);
// set application attributes // set application attributes
// Has no effects, see https://bugreports.qt.io/browse/QTBUG-51293 // Has no effects, see https://bugreports.qt.io/browse/QTBUG-51293
@@ -81,6 +59,27 @@ int main(int argc, char *argv[])
// Manage command line arguments from the cpp side // Manage command line arguments from the cpp side
QStringList args = app.arguments(); QStringList args = app.arguments();
if (args.contains("-h") || args.contains("--help")) {
// BUG: This usage help text goes to stderr, should go to stdout.
// BUG: First line of output is surrounded by double quotes.
qDebug() << "Usage: " + args.at(0) + " [--default-settings] [--workdir <dir>] [--program <prog>] [-p|--profile <prof>] [--fullscreen] [-h|--help]";
qDebug() << " --default-settings Run cool-retro-term with the default settings";
qDebug() << " --workdir <dir> Change working directory to 'dir'";
qDebug() << " -e <cmd> Command to execute. This option will catch all following arguments, so use it as the last option.";
qDebug() << " -T <title> Set window title to 'title'.";
qDebug() << " --fullscreen Run cool-retro-term in fullscreen.";
qDebug() << " -p|--profile <prof> Run cool-retro-term with the given profile.";
qDebug() << " -h|--help Print this help.";
qDebug() << " --verbose Print additional information such as profiles and settings.";
return 0;
}
QString appVersion("1.1.1");
if (args.contains("-v") || args.contains("--version")) {
qDebug() << ("cool-retro-term " + appVersion).toStdString().c_str();
return 0;
}
// Manage default command // Manage default command
QStringList cmdList; QStringList cmdList;
@@ -106,7 +105,7 @@ int main(int argc, char *argv[])
importPathList.prepend(QCoreApplication::applicationDirPath() + "/../../../qmltermwidget"); importPathList.prepend(QCoreApplication::applicationDirPath() + "/../../../qmltermwidget");
engine.setImportPathList(importPathList); engine.setImportPathList(importPathList);
engine.load(QUrl(QStringLiteral ("qrc:/main.qml"))); engine.load(QUrl(QStringLiteral ("qrc:/root.qml")));
if (engine.rootObjects().isEmpty()) { if (engine.rootObjects().isEmpty()) {
qDebug() << "Cannot load QML interface"; qDebug() << "Cannot load QML interface";

View File

@@ -59,8 +59,6 @@ QtObject{
property real burnInQuality: 0.5 property real burnInQuality: 0.5
property bool useFastBurnIn: Qt.platform.os === "osx" ? false : true property bool useFastBurnIn: Qt.platform.os === "osx" ? false : true
property bool blinkingCursor: false
onWindowScalingChanged: handleFontChanged(); onWindowScalingChanged: handleFontChanged();
// PROFILE SETTINGS /////////////////////////////////////////////////////// // PROFILE SETTINGS ///////////////////////////////////////////////////////
@@ -210,8 +208,7 @@ QtObject{
burnInQuality: burnInQuality, burnInQuality: burnInQuality,
useCustomCommand: useCustomCommand, useCustomCommand: useCustomCommand,
customCommand: customCommand, customCommand: customCommand,
useFastBurnIn: useFastBurnIn, useFastBurnIn: useFastBurnIn
blinkingCursor: blinkingCursor
} }
return stringify(settings); return stringify(settings);
} }
@@ -299,8 +296,6 @@ QtObject{
customCommand = settings.customCommand !== undefined ? settings.customCommand : customCommand customCommand = settings.customCommand !== undefined ? settings.customCommand : customCommand
useFastBurnIn = settings.useFastBurnIn !== undefined ? settings.useFastBurnIn : useFastBurnIn; useFastBurnIn = settings.useFastBurnIn !== undefined ? settings.useFastBurnIn : useFastBurnIn;
blinkingCursor = settings.blinkingCursor !== undefined ? settings.blinkingCursor : blinkingCursor
} }
function loadProfileString(profileString){ function loadProfileString(profileString){

View File

@@ -9,6 +9,12 @@ MenuBar {
visible: defaultMenuBar.visible visible: defaultMenuBar.visible
MenuItem {action: quitAction} MenuItem {action: quitAction}
} }
Menu {
title: qsTr("Terminal")
visible: defaultMenuBar.visible
MenuItem {action: newAction}
MenuItem {action: closeAction}
}
Menu { Menu {
title: qsTr("Edit") title: qsTr("Edit")
visible: defaultMenuBar.visible && appSettings.showMenubar visible: defaultMenuBar.visible && appSettings.showMenubar

View File

@@ -94,7 +94,6 @@ Item{
smooth: !appSettings.lowResolutionFont smooth: !appSettings.lowResolutionFont
enableBold: false enableBold: false
fullCursorHeight: true fullCursorHeight: true
blinkingCursor: appSettings.blinkingCursor
session: QMLTermSession { session: QMLTermSession {
id: ksession id: ksession

View File

@@ -114,24 +114,6 @@ Tab{
} }
} }
} }
GroupBox{
title: qsTr("Cursor")
Layout.fillWidth: true
ColumnLayout {
anchors.fill: parent
CheckBox{
id: blinkingCursor
text: qsTr("Blinking Cursor")
checked: appSettings.blinkingCursor
onCheckedChanged: appSettings.blinkingCursor = checked
}
Binding{
target: blinkingCursor
property: "checked"
value: appSettings.blinkingCursor
}
}
}
GroupBox{ GroupBox{
title: qsTr("Colors") title: qsTr("Colors")
Layout.fillWidth: true Layout.fillWidth: true

View File

@@ -67,6 +67,22 @@ ApplicationWindow{
color: "#00000000" color: "#00000000"
title: terminalContainer.title || qsTr(appSettings.wintitle) title: terminalContainer.title || qsTr(appSettings.wintitle)
Action {
id: newAction
text: qsTr("New Window")
shortcut: Qt.platform.os === "osx" ? StandardKey.New : "Ctrl+Shift+N"
onTriggered: {
root.newWindow()
}
}
Action {
id: closeAction
text: qsTr("Close Window")
shortcut: Qt.platform.os === "osx" ? StandardKey.Close : "Ctrl+Shift+W"
onTriggered: {
terminalWindow.close()
}
}
Action { Action {
id: showMenubarAction id: showMenubarAction
text: qsTr("Show Menubar") text: qsTr("Show Menubar")
@@ -157,9 +173,6 @@ ApplicationWindow{
} }
} }
onClosing: { onClosing: {
// OSX Since we are currently supporting only one window root.closeWindow()
// quit the application when it is closed.
if (Qt.platform.os === "osx")
Qt.quit()
} }
} }

View File

@@ -17,6 +17,7 @@
<file>InsertNameDialog.qml</file> <file>InsertNameDialog.qml</file>
<file>SettingsEffectsTab.qml</file> <file>SettingsEffectsTab.qml</file>
<file>main.qml</file> <file>main.qml</file>
<file>root.qml</file>
<file>SettingsTerminalTab.qml</file> <file>SettingsTerminalTab.qml</file>
<file>FontScanlines.qml</file> <file>FontScanlines.qml</file>
<file>fonts/1977-apple2/PrintChar21.ttf</file> <file>fonts/1977-apple2/PrintChar21.ttf</file>

43
app/qml/root.qml Normal file
View File

@@ -0,0 +1,43 @@
/*******************************************************************************
* Copyright (c) 2013 "Filippo Scognamiglio"
* https://github.com/Swordfish90/cool-retro-term
*
* This file is part of cool-retro-term.
*
* cool-retro-term is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*******************************************************************************/
import QtQuick 2.2
import QtQuick.Window 2.1
QtObject {
id: root
property int terminalCount
function newWindow() {
var component = Qt.createComponent("main.qml")
var window = component.createObject()
window.show()
terminalCount = terminalCount + 1
}
function closeWindow() {
terminalCount = terminalCount - 1
if (terminalCount == 0) {
Qt.quit()
}
}
Component.onCompleted: {
terminalCount = 0
root.newWindow()
}
}

View File

@@ -66,6 +66,4 @@ parts:
- libgl1-mesa-dev - libgl1-mesa-dev
- qtdeclarative5-dev-tools - qtdeclarative5-dev-tools
- qml-module-qtquick-extras - qml-module-qtquick-extras
- qml-module-qt-labs-settings
- qml-module-qt-labs-folderlistmodel