Compare commits
	
		
			84 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | dac2b4ff16 | ||
|   | 2d12b0c747 | ||
|   | 5fe26edaa6 | ||
|   | a736cfd548 | ||
|   | 5af4214daa | ||
|   | 98ef7b329a | ||
|   | b0e1962fa7 | ||
|   | 83684e8882 | ||
|   | 1ed7d077a9 | ||
|   | ba4b36618f | ||
|   | af647a4bad | ||
|   | b719530ef0 | ||
|   | 530d61d67e | ||
|   | 3d76bcb48c | ||
|   | 70ce2f1f3c | ||
|   | 21a190a1aa | ||
|   | a88d222709 | ||
|   | b2defceae5 | ||
|   | 8d7565ffc4 | ||
|   | 9960b25dff | ||
|   | 411c116deb | ||
|   | 64e007f1fd | ||
|   | c62fc365db | ||
|   | e7e630bd5d | ||
|   | 7d77175fbb | ||
|   | f033553972 | ||
|   | ae1ed044ba | ||
|   | 35d601c7a7 | ||
|   | f89aeec374 | ||
|   | 42c3b4b42e | ||
|   | 322fc31396 | ||
|   | 6e4d5cfddd | ||
|   | d81485a8bf | ||
|   | a9260d956c | ||
|   | 025bb560bc | ||
|   | cdd1488e13 | ||
|   | b8b2644969 | ||
|   | 09b5c0a5d0 | ||
|   | 1ed66f3aa2 | ||
|   | 3b4d5d1c3f | ||
|   | f98fd5a7ad | ||
|   | b961109623 | ||
|   | 8f0d1023a4 | ||
|   | 79773ba95c | ||
|   | ff3f02fb8c | ||
|   | 0af2b20b3a | ||
|   | b026fe357e | ||
|   | ade36c013b | ||
|   | 54a6a7f590 | ||
|   | 20728e4a0f | ||
|   | afa456f6b3 | ||
|   | 3fbfb77430 | ||
|   | 051bcb62c6 | ||
|   | d2c57eed6d | ||
|   | f2f38c0e0d | ||
|   | 4046bdbc6a | ||
|   | c83cc206fd | ||
|   | 41ac14fbd3 | ||
|   | e4c1cad1a7 | ||
|   | db7a7f38f7 | ||
|   | 4bff6efe97 | ||
|   | c514dc7a24 | ||
|   | 24754edb6a | ||
|   | 79fbb76524 | ||
|   | b85aede966 | ||
|   | c66ca6e44f | ||
|   | a192024fef | ||
|   | 918df9098a | ||
|   | c9271bfa36 | ||
|   | fa162c818b | ||
|   | ff976e3ec2 | ||
|   | 17c5651305 | ||
|   | 7c7b049ba1 | ||
|   | 0823fe8b3d | ||
|   | e787fd0fb5 | ||
|   | 650497bff4 | ||
|   | 2f25bd30b0 | ||
|   | d58157a450 | ||
|   | 9d049bd041 | ||
|   | 988222b711 | ||
|   | f42bd3036f | ||
|   | 297239fb5c | ||
|   | dbd46d44aa | ||
|   | 254f4d6e92 | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -18,6 +18,7 @@ | |||||||
| *.pro.user.* | *.pro.user.* | ||||||
| *.moc | *.moc | ||||||
| moc_*.cpp | moc_*.cpp | ||||||
|  | moc_*.h | ||||||
| qrc_*.cpp | qrc_*.cpp | ||||||
| ui_*.h | ui_*.h | ||||||
| Makefile* | Makefile* | ||||||
|   | |||||||
							
								
								
									
										37
									
								
								.travis.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								.travis.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | |||||||
|  | sudo: required | ||||||
|  | dist: trusty | ||||||
|  | language: c++ | ||||||
|  |  | ||||||
|  | install: | ||||||
|  |   - sudo add-apt-repository -y ppa:beineri/opt-qt58-trusty | ||||||
|  |   - sudo apt-get update -qq | ||||||
|  |   - sudo apt-get -y install build-essential qt58declarative qt58graphicaleffects qt58quickcontrols libgl1-mesa-dev | ||||||
|  |   - source /opt/qt*/bin/qt*-env.sh | ||||||
|  |  | ||||||
|  | script: | ||||||
|  |   - qmake CONFIG+=release PREFIX=/usr | ||||||
|  |   - make -j$(nproc) | ||||||
|  |   - mkdir -p appdir/usr/share/metainfo appdir/usr/bin | ||||||
|  |   - cp packaging/appdata/cool-retro-term.appdata.xml appdir/usr/share/metainfo/ | ||||||
|  |   - cp cool-retro-term appdir/usr/bin/ | ||||||
|  |   - cp ./cool-retro-term.desktop appdir/ | ||||||
|  |   - cp ./app/icons/128x128/cool-retro-term.png appdir/ | ||||||
|  |   - cp -r ./app/qml appdir/usr/ | ||||||
|  |   - cp -r ./qmltermwidget/QMLTermWidget appdir/usr/qml/ # Workaround for https://github.com/probonopd/linuxdeployqt/issues/78 | ||||||
|  |   - wget -c https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage | ||||||
|  |   - chmod a+x linuxdeployqt-*.AppImage  | ||||||
|  |   - unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH | ||||||
|  |   - export VERSION=$(git rev-parse --short HEAD) # linuxdeployqt uses this for naming the file | ||||||
|  |   - ./linuxdeployqt-*.AppImage appdir/usr/bin/cool-retro-term -qmldir=./app/qml/ -qmldir=./qmltermwidget/ # -verbose=3 2>&1 | grep "path:" -C 3 | ||||||
|  |   - ./linuxdeployqt-*.AppImage appdir/usr/bin/cool-retro-term -qmldir=./app/qml/ -qmldir=./qmltermwidget/ -verbose=2 -appimage | ||||||
|  |    | ||||||
|  | after_success: | ||||||
|  |   - find appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq | ||||||
|  |   - # curl --upload-file Cool*.AppImage https://transfer.sh/Cool_Retro_Term-git.$(git rev-parse --short HEAD)-x86_64.AppImage | ||||||
|  |   - wget -c https://github.com/probonopd/uploadtool/raw/master/upload.sh | ||||||
|  |   - bash upload.sh Cool*.AppImage* | ||||||
|  |    | ||||||
|  | branches: | ||||||
|  |   except: | ||||||
|  |     - # Do not build tags that we create when we upload to GitHub Releases | ||||||
|  |     - /^(?i:continuous)/ | ||||||
							
								
								
									
										70
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										70
									
								
								README.md
									
									
									
									
									
								
							| @@ -12,21 +12,29 @@ 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 | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Get cool-retro-term | ## Install | ||||||
| You can either build cool-retro-term yourself (see below) or walk the easy way and install one of these packages: | Walk the easy way and install cool-retro-term using one of these convenient packages: | ||||||
|  |  | ||||||
| Fedora has the `cool-retro-term` in the offcial repositories. All you have to do is `sudo dnf install cool-retro-term`. | Just grab the latest AppImage from the release page and make it executable and run it: | ||||||
|  |  | ||||||
| Users of openSUSE can grab a package from [Open Build Service](http://software.opensuse.org/package/cool-retro-term). |     wget https://github.com/Swordfish90/cool-retro-term/releases/download/1.1.1/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 | ||||||
|  |  | ||||||
| Arch users can install this [package](https://aur.archlinux.org/packages/cool-retro-term-git/) directly via the [AUR](https://aur.archlinux.org): | **Fedora** has the `cool-retro-term` in the official repositories. All you have to do is `sudo dnf install cool-retro-term`. | ||||||
|  |  | ||||||
|     yaourt -S aur/cool-retro-term-git | 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): | ||||||
|  |  | ||||||
|  |     trizen -S aur/cool-retro-term-git | ||||||
|  |  | ||||||
| or use: | or use: | ||||||
|  |  | ||||||
| @@ -34,25 +42,37 @@ or use: | |||||||
|  |  | ||||||
| to install precompiled from community repository. | to install precompiled from community repository. | ||||||
|  |  | ||||||
| Gentoo users can now install the second release "1.0.1" from a 3rd-party repository preferably via layman: | Users of **Ubuntu 14.04 LTS (Trusty) up to 15.10 (Wily)** can use [this PPA](https://launchpad.net/~bugs-launchpad-net-falkensweb). | ||||||
|  |  | ||||||
|     USE="git" emerge app-portage/layman | **Ubuntu 17.10** can use [this PPA](https://launchpad.net/%7Evantuz/+archive/ubuntu/cool-retro-term) | ||||||
|     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.0.1::gerczei |  | ||||||
|  |  | ||||||
| The live ebuild (version 9999-r1) tracking the bleeding-edge WIP codebase also remains available. | **Solus** users can install using `eopg`: | ||||||
|  | ``` | ||||||
|  | eopkg it cool-retro-term | ||||||
|  | ``` | ||||||
|  |  | ||||||
| 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! | **macOS** users can grab the latest dmg from the [release page](https://github.com/Swordfish90/cool-retro-term/releases) or install via Homebrew: | ||||||
|  | ``` | ||||||
|  | brew cask install cool-retro-term | ||||||
|  | ``` | ||||||
|  |  | ||||||
| Ubuntu users of 14.04 LTS (Trusty) up to 15.10 (Wily) can use [this PPA](https://launchpad.net/~bugs-launchpad-net-falkensweb). | **FreeBSD** users can install cool-retro-term with `pkg`: | ||||||
|  |  | ||||||
| Ubuntu 17.10 can use [this PPA](https://launchpad.net/%7Evantuz/+archive/ubuntu/cool-retro-term) |     pkg install cool-retro-term | ||||||
|      |      | ||||||
| macOS users can grab the latest dmg from the release page: https://github.com/Swordfish90/cool-retro-term/releases | ## 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) | ||||||
|  |  | ||||||
|  | Build cool-retro-term yourself, you know, the retro way. | ||||||
|  |  | ||||||
| ## Dependencies | ## Dependencies | ||||||
| Make sure to install these first. | Make sure to install these first. | ||||||
|  |  | ||||||
| @@ -82,6 +102,12 @@ 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 | ||||||
| @@ -173,6 +199,12 @@ 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). | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										46
									
								
								app/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								app/main.cpp
									
									
									
									
									
								
							| @@ -33,11 +33,37 @@ int main(int argc, char *argv[]) | |||||||
|     // This disables QT appmenu under Ubuntu, which is not working with QML apps. |     // This disables QT appmenu under Ubuntu, which is not working with QML apps. | ||||||
|     setenv("QT_QPA_PLATFORMTHEME", "", 1); |     setenv("QT_QPA_PLATFORMTHEME", "", 1); | ||||||
|  |  | ||||||
|  | #if defined (Q_OS_LINUX) | ||||||
|  |     setenv("QSG_RENDER_LOOP", "threaded", 0); | ||||||
|  | #endif | ||||||
|  |  | ||||||
| #if defined(Q_OS_MAC) | #if defined(Q_OS_MAC) | ||||||
|     // This allows UTF-8 characters usage in OSX. |     // This allows UTF-8 characters usage in OSX. | ||||||
|     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 | ||||||
| @@ -55,25 +81,6 @@ 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; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     if (args.contains("-v") || args.contains("--version")) { |  | ||||||
|         qDebug() << "cool-retro-term 1.0.1"; |  | ||||||
| 	return 0; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     // Manage default command |     // Manage default command | ||||||
|     QStringList cmdList; |     QStringList cmdList; | ||||||
| @@ -82,6 +89,7 @@ int main(int argc, char *argv[]) | |||||||
|     } |     } | ||||||
|     QVariant command(cmdList.empty() ? QVariant() : cmdList[0]); |     QVariant command(cmdList.empty() ? QVariant() : cmdList[0]); | ||||||
|     QVariant commandArgs(cmdList.size() <= 1 ? QVariant() : QVariant(cmdList.mid(1))); |     QVariant commandArgs(cmdList.size() <= 1 ? QVariant() : QVariant(cmdList.mid(1))); | ||||||
|  |     engine.rootContext()->setContextProperty("appVersion", appVersion); | ||||||
|     engine.rootContext()->setContextProperty("defaultCmd", command); |     engine.rootContext()->setContextProperty("defaultCmd", command); | ||||||
|     engine.rootContext()->setContextProperty("defaultCmdArgs", commandArgs); |     engine.rootContext()->setContextProperty("defaultCmdArgs", commandArgs); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ import QtQuick.Controls 1.0 | |||||||
| import "utils.js" as Utils | import "utils.js" as Utils | ||||||
|  |  | ||||||
| QtObject{ | QtObject{ | ||||||
|     readonly property string version: "1.1.0" |     readonly property string version: appVersion | ||||||
|     readonly property int profileVersion: 2 |     readonly property int profileVersion: 2 | ||||||
|  |  | ||||||
|     // STATIC CONSTANTS //////////////////////////////////////////////////////// |     // STATIC CONSTANTS //////////////////////////////////////////////////////// | ||||||
| @@ -33,6 +33,9 @@ QtObject{ | |||||||
|     readonly property real minimumFontScaling: 0.25 |     readonly property real minimumFontScaling: 0.25 | ||||||
|     readonly property real maximumFontScaling: 2.50 |     readonly property real maximumFontScaling: 2.50 | ||||||
|  |  | ||||||
|  |     readonly property real minBurnInFadeTime: 160 | ||||||
|  |     readonly property real maxBurnInFadeTime: 1600 | ||||||
|  |  | ||||||
|     // GENERAL SETTINGS /////////////////////////////////////////////////////// |     // GENERAL SETTINGS /////////////////////////////////////////////////////// | ||||||
|  |  | ||||||
|     property int x: 100 |     property int x: 100 | ||||||
| @@ -52,7 +55,11 @@ QtObject{ | |||||||
|     property bool verbose: false |     property bool verbose: false | ||||||
|  |  | ||||||
|     property real bloomQuality: 0.5 |     property real bloomQuality: 0.5 | ||||||
|  |  | ||||||
|     property real burnInQuality: 0.5 |     property real burnInQuality: 0.5 | ||||||
|  |     property bool useFastBurnIn: Qt.platform.os === "osx" ? false : true | ||||||
|  |  | ||||||
|  |     property bool blinkingCursor: false | ||||||
|  |  | ||||||
|     onWindowScalingChanged: handleFontChanged(); |     onWindowScalingChanged: handleFontChanged(); | ||||||
|  |  | ||||||
| @@ -129,7 +136,7 @@ QtObject{ | |||||||
|  |  | ||||||
|     property FontLoader fontLoader: FontLoader { } |     property FontLoader fontLoader: FontLoader { } | ||||||
|  |  | ||||||
|     onFontScalingChanged: handleFontChanged(); |     onTotalFontScalingChanged: handleFontChanged(); | ||||||
|     onFontWidthChanged: handleFontChanged(); |     onFontWidthChanged: handleFontChanged(); | ||||||
|  |  | ||||||
|     function getIndexByName(name) { |     function getIndexByName(name) { | ||||||
| @@ -202,7 +209,9 @@ QtObject{ | |||||||
|             bloomQuality: bloomQuality, |             bloomQuality: bloomQuality, | ||||||
|             burnInQuality: burnInQuality, |             burnInQuality: burnInQuality, | ||||||
|             useCustomCommand: useCustomCommand, |             useCustomCommand: useCustomCommand, | ||||||
|             customCommand: customCommand |             customCommand: customCommand, | ||||||
|  |             useFastBurnIn: useFastBurnIn, | ||||||
|  |             blinkingCursor: blinkingCursor | ||||||
|         } |         } | ||||||
|         return stringify(settings); |         return stringify(settings); | ||||||
|     } |     } | ||||||
| @@ -288,6 +297,10 @@ QtObject{ | |||||||
|  |  | ||||||
|         useCustomCommand = settings.useCustomCommand !== undefined ? settings.useCustomCommand : useCustomCommand |         useCustomCommand = settings.useCustomCommand !== undefined ? settings.useCustomCommand : useCustomCommand | ||||||
|         customCommand = settings.customCommand !== undefined ? settings.customCommand : customCommand |         customCommand = settings.customCommand !== undefined ? settings.customCommand : customCommand | ||||||
|  |  | ||||||
|  |         useFastBurnIn = settings.useFastBurnIn !== undefined ? settings.useFastBurnIn : useFastBurnIn; | ||||||
|  |  | ||||||
|  |         blinkingCursor = settings.blinkingCursor !== undefined ? settings.blinkingCursor : blinkingCursor | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     function loadProfileString(profileString){ |     function loadProfileString(profileString){ | ||||||
|   | |||||||
| @@ -13,10 +13,12 @@ Loader { | |||||||
|     property real delay: (1.0 / appSettings.fps) * 1000 |     property real delay: (1.0 / appSettings.fps) * 1000 | ||||||
|     property real burnIn: appSettings.burnIn |     property real burnIn: appSettings.burnIn | ||||||
|     property real burnInFadeTime: 1 / Utils.lint(_minBurnInFadeTime, _maxBurnInFadeTime, burnIn) |     property real burnInFadeTime: 1 / Utils.lint(_minBurnInFadeTime, _maxBurnInFadeTime, burnIn) | ||||||
|     property real _minBurnInFadeTime: 160 |     property real _minBurnInFadeTime: appSettings.minBurnInFadeTime | ||||||
|     property real _maxBurnInFadeTime: 1600 |     property real _maxBurnInFadeTime: appSettings.maxBurnInFadeTime | ||||||
|  |  | ||||||
|     active: appSettings.burnIn !== 0 |     active: appSettings.useFastBurnIn && appSettings.burnIn !== 0 | ||||||
|  |  | ||||||
|  |     anchors.fill: parent | ||||||
|  |  | ||||||
|     function completelyUpdate() { |     function completelyUpdate() { | ||||||
|         prevLastUpdate = lastUpdate; |         prevLastUpdate = lastUpdate; | ||||||
| @@ -33,16 +35,6 @@ Loader { | |||||||
|     sourceComponent: Item { |     sourceComponent: Item { | ||||||
|         property alias source: burnInEffectSource |         property alias source: burnInEffectSource | ||||||
|  |  | ||||||
|         property int burnInScaling: scaleTexture * appSettings.burnInQuality |  | ||||||
|  |  | ||||||
|         width: appSettings.lowResolutionFont |  | ||||||
|                ? kterminal.totalWidth * Math.max(1, burnInScaling) |  | ||||||
|                : kterminal.totalWidth * scaleTexture * appSettings.burnInQuality |  | ||||||
|  |  | ||||||
|         height: appSettings.lowResolutionFont |  | ||||||
|                 ? kterminal.totalHeight * Math.max(1, burnInScaling) |  | ||||||
|                 : kterminal.totalHeight * scaleTexture * appSettings.burnInQuality |  | ||||||
|  |  | ||||||
|         ShaderEffectSource { |         ShaderEffectSource { | ||||||
|             id: burnInEffectSource |             id: burnInEffectSource | ||||||
|  |  | ||||||
| @@ -88,7 +80,6 @@ Loader { | |||||||
|             property real prevLastUpdate: burnInEffect.prevLastUpdate |             property real prevLastUpdate: burnInEffect.prevLastUpdate | ||||||
|  |  | ||||||
|             anchors.fill: parent |             anchors.fill: parent | ||||||
|  |  | ||||||
|             blending: false |             blending: false | ||||||
|  |  | ||||||
|             fragmentShader: |             fragmentShader: | ||||||
|   | |||||||
| @@ -236,7 +236,9 @@ QtObject{ | |||||||
|     function addSystemFonts() { |     function addSystemFonts() { | ||||||
|         var families = monospaceSystemFonts; |         var families = monospaceSystemFonts; | ||||||
|         for (var i = 0; i < families.length; i++) { |         for (var i = 0; i < families.length; i++) { | ||||||
|             console.log("Adding system font: ", families[i]) |             if (verbose) { | ||||||
|  |                 console.log("Adding system font: ", families[i]) | ||||||
|  |             } | ||||||
|             fontlist.append(convertToListElement(families[i])) |             fontlist.append(convertToListElement(families[i])) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -61,7 +61,7 @@ ShaderEffect { | |||||||
|             float inShadowLength = shadowLength * 0.5; |             float inShadowLength = shadowLength * 0.5; | ||||||
|  |  | ||||||
|             float outShadow = max2(1.0 - smoothstep(vec2(-outShadowLength), vec2(0.0), coords) + smoothstep(vec2(1.0), vec2(1.0 + outShadowLength), coords)); |             float outShadow = max2(1.0 - smoothstep(vec2(-outShadowLength), vec2(0.0), coords) + smoothstep(vec2(1.0), vec2(1.0 + outShadowLength), coords)); | ||||||
|             outShadow = clamp(0.0, 1.0, sqrt(outShadow)); |             outShadow = clamp(sqrt(outShadow), 0.0, 1.0); | ||||||
|             color += frameColor.rgb * outShadow; |             color += frameColor.rgb * outShadow; | ||||||
|             alpha = sum2(1.0 - smoothstep(vec2(0.0), aadelta, coords) + smoothstep(vec2(1.0) - aadelta, vec2(1.0), coords)); |             alpha = sum2(1.0 - smoothstep(vec2(0.0), aadelta, coords) + smoothstep(vec2(1.0) - aadelta, vec2(1.0), coords)); | ||||||
|             alpha = clamp(alpha, 0.0, 1.0) * mix(1.0, 0.9, outShadow); |             alpha = clamp(alpha, 0.0, 1.0) * mix(1.0, 0.9, outShadow); | ||||||
|   | |||||||
| @@ -33,6 +33,7 @@ Item{ | |||||||
|  |  | ||||||
|     property ShaderEffectSource mainSource: kterminalSource |     property ShaderEffectSource mainSource: kterminalSource | ||||||
|     property BurnInEffect burnInEffect: burnInEffect |     property BurnInEffect burnInEffect: burnInEffect | ||||||
|  |     property SlowBurnIn slowBurnInEffect: slowBurnInEffect | ||||||
|     property real fontWidth: 1.0 |     property real fontWidth: 1.0 | ||||||
|     property real screenScaling: 1.0 |     property real screenScaling: 1.0 | ||||||
|     property real scaleTexture: 1.0 |     property real scaleTexture: 1.0 | ||||||
| @@ -70,18 +71,30 @@ Item{ | |||||||
|     QMLTermWidget { |     QMLTermWidget { | ||||||
|         id: kterminal |         id: kterminal | ||||||
|  |  | ||||||
|  |         property int textureResolutionScale: appSettings.lowResolutionFont ? devicePixelRatio : 1 | ||||||
|         property int margin: appSettings.margin / screenScaling |         property int margin: appSettings.margin / screenScaling | ||||||
|         property int totalWidth: Math.floor(parent.width / (screenScaling * fontWidth)) |         property int totalWidth: Math.floor(parent.width / (screenScaling * fontWidth)) | ||||||
|         property int totalHeight: Math.floor(parent.height / screenScaling) |         property int totalHeight: Math.floor(parent.height / screenScaling) | ||||||
|  |  | ||||||
|         width: totalWidth - 2 * margin |         property int rawWidth: totalWidth - 2 * margin | ||||||
|         height: totalHeight - 2 * margin |         property int rawHeight: totalHeight - 2 * margin | ||||||
|  |  | ||||||
|  |         textureSize: Qt.size(width / textureResolutionScale, height / textureResolutionScale) | ||||||
|  |  | ||||||
|  |         width: ensureMultiple(rawWidth, devicePixelRatio) | ||||||
|  |         height: ensureMultiple(rawHeight, devicePixelRatio) | ||||||
|  |  | ||||||
|  |         /** Ensure size is a multiple of factor. This is needed for pixel perfect scaling on highdpi screens. */ | ||||||
|  |         function ensureMultiple(size, factor) { | ||||||
|  |             return Math.round(size / factor) * factor; | ||||||
|  |         } | ||||||
|  |  | ||||||
|         colorScheme: "cool-retro-term" |         colorScheme: "cool-retro-term" | ||||||
|  |  | ||||||
|         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 | ||||||
| @@ -227,7 +240,26 @@ Item{ | |||||||
|         sourceRect: Qt.rect(-kterminal.margin, -kterminal.margin, kterminal.totalWidth, kterminal.totalHeight) |         sourceRect: Qt.rect(-kterminal.margin, -kterminal.margin, kterminal.totalWidth, kterminal.totalHeight) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     BurnInEffect { |     Item { | ||||||
|         id: burnInEffect |         id: burnInContainer | ||||||
|  |  | ||||||
|  |         property int burnInScaling: scaleTexture * appSettings.burnInQuality | ||||||
|  |  | ||||||
|  |         width: Math.round(appSettings.lowResolutionFont | ||||||
|  |                ? kterminal.totalWidth * Math.max(1, burnInScaling) | ||||||
|  |                : kterminal.totalWidth * scaleTexture * appSettings.burnInQuality) | ||||||
|  |  | ||||||
|  |         height: Math.round(appSettings.lowResolutionFont | ||||||
|  |                 ? kterminal.totalHeight * Math.max(1, burnInScaling) | ||||||
|  |                 : kterminal.totalHeight * scaleTexture * appSettings.burnInQuality) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         BurnInEffect { | ||||||
|  |             id: burnInEffect | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         SlowBurnIn { | ||||||
|  |             id: slowBurnInEffect | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -133,6 +133,12 @@ Tab{ | |||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|                 SizedLabel{text: Math.round(burnInSlider.value * 100) + "%"} |                 SizedLabel{text: Math.round(burnInSlider.value * 100) + "%"} | ||||||
|  |                 CheckBox{ | ||||||
|  |                     Layout.columnSpan: 2 | ||||||
|  |                     text: qsTr("Burnin optimization (Might display timing artifacts)") | ||||||
|  |                     checked: appSettings.useFastBurnIn | ||||||
|  |                     onCheckedChanged: appSettings.useFastBurnIn = checked | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -114,6 +114,24 @@ 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 | ||||||
|   | |||||||
| @@ -24,6 +24,7 @@ import QtGraphicalEffects 1.0 | |||||||
| import "utils.js" as Utils | import "utils.js" as Utils | ||||||
|  |  | ||||||
| Item { | Item { | ||||||
|  |     property SlowBurnIn slowBurnInEffect | ||||||
|     property ShaderEffectSource source |     property ShaderEffectSource source | ||||||
|     property BurnInEffect burnInEffect |     property BurnInEffect burnInEffect | ||||||
|     property ShaderEffectSource bloomSource |     property ShaderEffectSource bloomSource | ||||||
| @@ -56,9 +57,16 @@ Item { | |||||||
|          property real horizontalSync: appSettings.horizontalSync |          property real horizontalSync: appSettings.horizontalSync | ||||||
|          property real horizontalSyncStrength: Utils.lint(0.05, 0.35, horizontalSync) |          property real horizontalSyncStrength: Utils.lint(0.05, 0.35, horizontalSync) | ||||||
|          property real glowingLine: appSettings.glowingLine * 0.2 |          property real glowingLine: appSettings.glowingLine * 0.2 | ||||||
|          property real burnIn: appSettings.burnIn |  | ||||||
|  |          // Fast burnin properties | ||||||
|  |          property real burnIn: appSettings.useFastBurnIn ? appSettings.burnIn : 0 | ||||||
|          property real burnInLastUpdate: burnInEffect.lastUpdate |          property real burnInLastUpdate: burnInEffect.lastUpdate | ||||||
|          property real burnInTime: burnInEffect.burnInFadeTime |          property real burnInTime: burnInEffect.burnInFadeTime | ||||||
|  |  | ||||||
|  |          // Slow burnin properties | ||||||
|  |          property real slowBurnIn: appSettings.useFastBurnIn ? 0 : appSettings.burnIn | ||||||
|  |          property ShaderEffectSource slowBurnInSource: slowBurnInEffect.source | ||||||
|  |  | ||||||
|          property real jitter: appSettings.jitter |          property real jitter: appSettings.jitter | ||||||
|          property size jitterDisplacement: Qt.size(0.007 * jitter, 0.002 * jitter) |          property size jitterDisplacement: Qt.size(0.007 * jitter, 0.002 * jitter) | ||||||
|          property real shadowLength: 0.25 * screenCurvature * Utils.lint(0.50, 1.5, ambientLight) |          property real shadowLength: 0.25 * screenCurvature * Utils.lint(0.50, 1.5, ambientLight) | ||||||
| @@ -162,6 +170,8 @@ Item { | |||||||
|                  uniform sampler2D burnInSource; |                  uniform sampler2D burnInSource; | ||||||
|                  uniform highp float burnInLastUpdate; |                  uniform highp float burnInLastUpdate; | ||||||
|                  uniform highp float burnInTime;" : "") + |                  uniform highp float burnInTime;" : "") + | ||||||
|  |              (slowBurnIn !== 0 ? " | ||||||
|  |                  uniform sampler2D slowBurnInSource;" : "") + | ||||||
|              (staticNoise !== 0 ? " |              (staticNoise !== 0 ? " | ||||||
|                  uniform highp float staticNoise;" : "") + |                  uniform highp float staticNoise;" : "") + | ||||||
|              (((staticNoise !== 0 || jitter !== 0) |              (((staticNoise !== 0 || jitter !== 0) | ||||||
| @@ -292,6 +302,11 @@ Item { | |||||||
|                      txt_color = max(txt_color, convertWithChroma(burnInColor));" |                      txt_color = max(txt_color, convertWithChroma(burnInColor));" | ||||||
|                  : "") + |                  : "") + | ||||||
|  |  | ||||||
|  |                  (slowBurnIn !== 0 ? " | ||||||
|  |                      vec4 txt_blur = texture2D(slowBurnInSource, staticCoords); | ||||||
|  |                      txt_color = max(txt_color, convertWithChroma(txt_blur.rgb * txt_blur.a)); | ||||||
|  |                  " : "") + | ||||||
|  |  | ||||||
|                   "txt_color += fontColor.rgb * vec3(color);" + |                   "txt_color += fontColor.rgb * vec3(color);" + | ||||||
|  |  | ||||||
|                  "vec3 finalColor = txt_color;" + |                  "vec3 finalColor = txt_color;" + | ||||||
| @@ -482,7 +497,7 @@ Item { | |||||||
|  |  | ||||||
|                  (screenCurvature !== 0 ? " |                  (screenCurvature !== 0 ? " | ||||||
|                      float reflectionMask = sum2(step(vec2(0.0), curvatureCoords) - step(vec2(1.0), curvatureCoords)); |                      float reflectionMask = sum2(step(vec2(0.0), curvatureCoords) - step(vec2(1.0), curvatureCoords)); | ||||||
|                      reflectionMask = clamp(0.0, 1.0, reflectionMask);" |                      reflectionMask = clamp(reflectionMask, 0.0, 1.0);" | ||||||
|                  : |                  : | ||||||
|                      "float reflectionMask = 1.0;") + |                      "float reflectionMask = 1.0;") + | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										122
									
								
								app/qml/SlowBurnIn.qml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								app/qml/SlowBurnIn.qml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,122 @@ | |||||||
|  | import QtQuick 2.0 | ||||||
|  |  | ||||||
|  | import "utils.js" as Utils | ||||||
|  |  | ||||||
|  | Loader { | ||||||
|  |     property ShaderEffectSource source: item ? item.source : null | ||||||
|  |  | ||||||
|  |     active: !appSettings.useFastBurnIn && appSettings.burnIn !== 0 | ||||||
|  |  | ||||||
|  |     anchors.fill: parent | ||||||
|  |  | ||||||
|  |     sourceComponent: Item { | ||||||
|  |         property alias source: burnInSourceEffect | ||||||
|  |  | ||||||
|  |         property int burnInScaling: scaleTexture * appSettings.burnInQuality | ||||||
|  |  | ||||||
|  |         ShaderEffectSource { | ||||||
|  |             property bool updateBurnIn: false | ||||||
|  |             property real burnIn: appSettings.burnIn | ||||||
|  |             property real fps: appSettings.fps !== 0 ? appSettings.fps : 60 | ||||||
|  |             property real burnInFadeTime: Utils.lint(minBurnInFadeTime, maxBurnInFadeTime, burnIn) | ||||||
|  |             property real burnInCoefficient: 1000 / (fps * burnInFadeTime) | ||||||
|  |             property real minBurnInFadeTime: appSettings.minBurnInFadeTime | ||||||
|  |             property real maxBurnInFadeTime: appSettings.maxBurnInFadeTime | ||||||
|  |  | ||||||
|  |             id: burnInSourceEffect | ||||||
|  |  | ||||||
|  |             anchors.fill: parent | ||||||
|  |  | ||||||
|  |             sourceItem: burnInEffect | ||||||
|  |             recursive: true | ||||||
|  |             live: false | ||||||
|  |             hideSource: true | ||||||
|  |             wrapMode: kterminalSource.wrapMode | ||||||
|  |  | ||||||
|  |             visible: false | ||||||
|  |  | ||||||
|  |             function restartBlurSource(){ | ||||||
|  |                 livetimer.restart(); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             // This updates the burnin synched with the timer. | ||||||
|  |             Connections { | ||||||
|  |                 target: burnInSourceEffect.updateBurnIn ? timeManager : null | ||||||
|  |                 ignoreUnknownSignals: false | ||||||
|  |                 onTimeChanged: { | ||||||
|  |                     burnInSourceEffect.scheduleUpdate(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             Timer{ | ||||||
|  |                 id: livetimer | ||||||
|  |  | ||||||
|  |                 // The interval assumes 60 fps. This is the time needed burnout a white pixel. | ||||||
|  |                 // We multiply 1.1 to have a little bit of margin over the theoretical value. | ||||||
|  |                 // This solution is not extremely clean, but it's probably the best to avoid measuring fps. | ||||||
|  |  | ||||||
|  |                 interval: burnInSourceEffect.burnInFadeTime * 1.1 | ||||||
|  |                 running: true | ||||||
|  |                 onTriggered: burnInSourceEffect.updateBurnIn = false; | ||||||
|  |             } | ||||||
|  |             Connections{ | ||||||
|  |                 target: kterminal | ||||||
|  |                 onImagePainted:{ | ||||||
|  |                     burnInSourceEffect.scheduleUpdate(); | ||||||
|  |                     burnInSourceEffect.updateBurnIn = true; | ||||||
|  |                     livetimer.restart(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             // Restart blurred source settings change. | ||||||
|  |             Connections{ | ||||||
|  |                 target: appSettings | ||||||
|  |                 onBurnInChanged: burnInSourceEffect.restartBlurSource(); | ||||||
|  |                 onTerminalFontChanged: burnInSourceEffect.restartBlurSource(); | ||||||
|  |                 onRasterizationChanged: burnInSourceEffect.restartBlurSource(); | ||||||
|  |                 onBurnInQualityChanged: burnInSourceEffect.restartBlurSource(); | ||||||
|  |             } | ||||||
|  |             Connections { | ||||||
|  |                 target: kterminalScrollbar | ||||||
|  |                 onOpacityChanged: burnInSourceEffect.restartBlurSource(); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             ShaderEffect { | ||||||
|  |                 id: burnInEffect | ||||||
|  |  | ||||||
|  |                 property variant txt_source: kterminalSource | ||||||
|  |                 property variant blurredSource: burnInSourceEffect | ||||||
|  |                 property real burnInCoefficient: burnInSourceEffect.burnInCoefficient | ||||||
|  |  | ||||||
|  |                 anchors.fill: parent | ||||||
|  |                 blending: false | ||||||
|  |  | ||||||
|  |                 fragmentShader: | ||||||
|  |                     "#ifdef GL_ES | ||||||
|  |                     precision mediump float; | ||||||
|  |                 #endif\n" + | ||||||
|  |  | ||||||
|  |                 "uniform lowp float qt_Opacity;" + | ||||||
|  |                 "uniform lowp sampler2D txt_source;" + | ||||||
|  |  | ||||||
|  |                 "varying highp vec2 qt_TexCoord0; | ||||||
|  |              uniform lowp sampler2D blurredSource; | ||||||
|  |              uniform highp float burnInCoefficient;" + | ||||||
|  |  | ||||||
|  |                 "float max3(vec3 v) { | ||||||
|  |                      return max (max (v.x, v.y), v.z); | ||||||
|  |                 }" + | ||||||
|  |  | ||||||
|  |                 "void main() {" + | ||||||
|  |                     "vec2 coords = qt_TexCoord0;" + | ||||||
|  |                     "vec3 origColor = texture2D(txt_source, coords).rgb;" + | ||||||
|  |                     "vec3 blur_color = texture2D(blurredSource, coords).rgb - vec3(burnInCoefficient);" + | ||||||
|  |                     "vec3 color = min(origColor + blur_color, max(origColor, blur_color));" + | ||||||
|  |  | ||||||
|  |                     "gl_FragColor = vec4(color, max3(color - origColor));" + | ||||||
|  |                 "}" | ||||||
|  |  | ||||||
|  |                 onStatusChanged: if (log) console.log(log) //Print warning messages | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -12,6 +12,7 @@ ShaderTerminal { | |||||||
|  |  | ||||||
|     source: terminal.mainSource |     source: terminal.mainSource | ||||||
|     burnInEffect: terminal.burnInEffect |     burnInEffect: terminal.burnInEffect | ||||||
|  |     slowBurnInEffect: terminal.slowBurnInEffect | ||||||
|     virtual_resolution: terminal.virtualResolution |     virtual_resolution: terminal.virtualResolution | ||||||
|  |  | ||||||
|     TimeManager{ |     TimeManager{ | ||||||
|   | |||||||
| @@ -43,5 +43,6 @@ | |||||||
|         <file>BurnInEffect.qml</file> |         <file>BurnInEffect.qml</file> | ||||||
|         <file>fonts/modern-terminus/TerminusTTF-4.46.0.ttf</file> |         <file>fonts/modern-terminus/TerminusTTF-4.46.0.ttf</file> | ||||||
|         <file>NewTerminalFrame.qml</file> |         <file>NewTerminalFrame.qml</file> | ||||||
|  |         <file>SlowBurnIn.qml</file> | ||||||
|     </qresource> |     </qresource> | ||||||
| </RCC> | </RCC> | ||||||
|   | |||||||
 Submodule qmltermwidget updated: 48274c7566...59f967d5e1
									
								
							| @@ -1,32 +1,46 @@ | |||||||
| name: cool-retro-term # check to see if it's available | name: cool-retro-term # check to see if it's available | ||||||
| version: '1.1.0' # this is freakin' awesome | version: '1.1.1' # this is freakin' awesome | ||||||
| summary: cool-retro-term is a terminal emulator. # 79 char long summary | summary: cool-retro-term is a cool and retro terminal emulator. # 79 char long summary | ||||||
| description: | | description: | | ||||||
|   cool-retro-term is a terminal emulator which mimics the look and feel of the old cathode tube screens. It has been designed to be eye-candy, customizable, and reasonably lightweight. |   cool-retro-term is a terminal emulator which mimics the look and feel of the old cathode tube screens. It has been designed to be eye-candy, customizable, and reasonably lightweight. | ||||||
| grade: stable # must be 'stable' to release into candidate/stable channels | grade: stable # must be 'stable' to release into candidate/stable channels | ||||||
| confinement: strict # use 'strict' once you have the right plugs | confinement: classic # use 'strict' once you have the right plugs | ||||||
|  |  | ||||||
|  | base: core18 | ||||||
|  |  | ||||||
| apps: | apps: | ||||||
|   cool-retro-term: |   cool-retro-term: | ||||||
|     command: desktop-launch $SNAP/usr/bin/cool-retro-term |     command: bin/desktop-launch $SNAP/usr/bin/cool-retro-term | ||||||
|     desktop: usr/share/applications/cool-retro-term.desktop |     desktop: usr/share/applications/cool-retro-term.desktop | ||||||
|     plugs: |     environment: | ||||||
|       - unity7 |       QML2_IMPORT_PATH: $SNAP/usr/lib/x86_64-linux-gnu/qt5/qml | ||||||
|       - x11 |  | ||||||
|       - desktop |  | ||||||
|       - home |  | ||||||
|       - network |  | ||||||
|       - network-bind |  | ||||||
|       - network-manager |  | ||||||
|       - password-manager-service |  | ||||||
|       - locale-control |  | ||||||
|       - gsettings |  | ||||||
|       - shutdown |  | ||||||
|       - firewall-control |  | ||||||
|       - process-control |  | ||||||
|       - system-observe |  | ||||||
|        |        | ||||||
| parts: | parts: | ||||||
|  |   desktop-qt5: | ||||||
|  |     source: https://github.com/ubuntu/snapcraft-desktop-helpers.git | ||||||
|  |     source-subdir: qt | ||||||
|  |     plugin: make | ||||||
|  |     make-parameters: ["FLAVOR=qt5"] | ||||||
|  |     build-packages: | ||||||
|  |       - build-essential | ||||||
|  |       - qtbase5-dev | ||||||
|  |       - dpkg-dev | ||||||
|  |     stage-packages: | ||||||
|  |       - libxkbcommon0 | ||||||
|  |       - ttf-ubuntu-font-family | ||||||
|  |       - dmz-cursor-theme | ||||||
|  |       - light-themes | ||||||
|  |       - adwaita-icon-theme | ||||||
|  |       - gnome-themes-standard | ||||||
|  |       - shared-mime-info | ||||||
|  |       - libqt5gui5 | ||||||
|  |       - libgdk-pixbuf2.0-0 | ||||||
|  |       - libqt5svg5 # for loading icon themes which are svg | ||||||
|  |       - try: [appmenu-qt5] # not available on core18 | ||||||
|  |       - locales-all | ||||||
|  |       - xdg-user-dirs | ||||||
|  |       - fcitx-frontend-qt5 | ||||||
|  |  | ||||||
|   my-part: |   my-part: | ||||||
|     source: https://github.com/Swordfish90/cool-retro-term |     source: https://github.com/Swordfish90/cool-retro-term | ||||||
|     source-type: git |     source-type: git | ||||||
| @@ -44,11 +58,14 @@ parts: | |||||||
|     stage-packages:  |     stage-packages:  | ||||||
|       - qmlscene |       - qmlscene | ||||||
|       - qml-module-qtquick-controls  |       - qml-module-qtquick-controls  | ||||||
|       - qtdeclarative5-qtquick2-plugin  |       - qml-module-qtquick2 | ||||||
|       - libqt5qml-graphicaleffects  |       - qml-module-qtgraphicaleffects | ||||||
|       - qml-module-qtquick-dialogs  |       - qml-module-qtquick-dialogs  | ||||||
|       - qtdeclarative5-localstorage-plugin  |       - qml-module-qtquick-localstorage | ||||||
|       - qtdeclarative5-window-plugin |       - qml-module-qtquick-window2 | ||||||
|       - 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