Compare commits
13 Commits
1.x
...
adammathes
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e7e3dfed00 | ||
|
|
aa82250232 | ||
|
|
88f59d2016 | ||
|
|
8021ff4256 | ||
|
|
32eab18da9 | ||
|
|
52140c4c45 | ||
|
|
10fd2a11ee | ||
|
|
749ea88909 | ||
|
|
3f0653106e | ||
|
|
9954fde6f1 | ||
|
|
3ec46ea833 | ||
|
|
d59ac20e38 | ||
|
|
7ce6571e1f |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -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*
|
||||||
|
|||||||
47
README.md
47
README.md
@@ -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
|
||||||

|

|
||||||

|

|
||||||
@@ -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¤cy_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¤cy_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted).
|
||||||
|
|
||||||
|
|||||||
45
app/main.cpp
45
app/main.cpp
@@ -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";
|
||||||
|
|||||||
@@ -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){
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
43
app/qml/root.qml
Normal 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()
|
||||||
|
}
|
||||||
|
}
|
||||||
Submodule qmltermwidget updated: 59f967d5e1...48274c7566
@@ -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
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user