225 changes: 128 additions & 97 deletions app/qml/ApplicationSettings.qml

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion app/qml/CRTMainMenuBar.qml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ MenuBar {
title: qsTr("Profiles")
visible: defaultMenuBar.visible
Instantiator{
model: appSettings.profiles_list
model: appSettings.profilesList
delegate: MenuItem {
text: model.text
onTriggered: {
Expand Down
18 changes: 9 additions & 9 deletions app/qml/FontPixels.qml
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,6 @@ QtObject{
property real defaultFontWidth: fontlist.get(selectedFontIndex).fontWidth

property ListModel fontlist: ListModel{
ListElement{
name: "PROGGY_TINY"
text: "Proggy Tiny (Modern)"
source: "fonts/modern-proggy-tiny/ProggyTiny.ttf"
lineSpacing: 1
pixelSize: 16
baseScaling: 3.5
fontWidth: 0.9
}
ListElement{
name: "COMMODORE_PET"
text: "Commodore PET (1977)"
Expand All @@ -49,6 +40,15 @@ QtObject{
baseScaling: 4.0
fontWidth: 0.8
}
ListElement{
name: "PROGGY_TINY"
text: "Proggy Tiny (Modern)"
source: "fonts/modern-proggy-tiny/ProggyTiny.ttf"
lineSpacing: 1
pixelSize: 16
baseScaling: 4.0
fontWidth: 0.9
}
ListElement{
name: "APPLE_II"
text: "Apple ][ (1977)"
Expand Down
18 changes: 9 additions & 9 deletions app/qml/FontScanlines.qml
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,6 @@ QtObject{
property real defaultFontWidth: fontlist.get(selectedFontIndex).fontWidth

property ListModel fontlist: ListModel{
ListElement{
name: "PROGGY_TINY"
text: "Proggy Tiny (Modern)"
source: "fonts/modern-proggy-tiny/ProggyTiny.ttf"
lineSpacing: 1
pixelSize: 16
baseScaling: 3.5
fontWidth: 0.9
}
ListElement{
name: "COMMODORE_PET"
text: "Commodore PET (1977)"
Expand All @@ -49,6 +40,15 @@ QtObject{
baseScaling: 4.0
fontWidth: 0.7
}
ListElement{
name: "PROGGY_TINY"
text: "Proggy Tiny (Modern)"
source: "fonts/modern-proggy-tiny/ProggyTiny.ttf"
lineSpacing: 1
pixelSize: 16
baseScaling: 4.0
fontWidth: 0.9
}
ListElement{
name: "APPLE_II"
text: "Apple ][ (1977)"
Expand Down
12 changes: 2 additions & 10 deletions app/qml/InsertNameDialog.qml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ Window{
modality: Qt.ApplicationModal
title: qsTr("Save new profile")

property alias profileName: namefield.text
signal nameSelected(string name)

MessageDialog {
Expand All @@ -45,15 +46,9 @@ Window{
}

function validateName(name){
var profile_list = appSettings.profiles_list;
var profile_list = appSettings.profilesList;
if (name === "")
return 1;

for (var i = 0; i < profile_list.count; i++){
if(profile_list.get(i).text === name)
return 2;
}

return 0;
}

Expand Down Expand Up @@ -82,9 +77,6 @@ Window{
case 1:
errorDialog.showError(qsTr("The name you inserted is empty. Please choose a different one."));
break;
case 2:
errorDialog.showError(qsTr("The name you inserted already exists. Please choose a different one."));
break;
default:
nameSelected(name);
close();
Expand Down
37 changes: 18 additions & 19 deletions app/qml/PreprocessedTerminal.qml
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,13 @@ Item{
property alias title: ksession.title
property alias kterminal: kterminal

anchors.leftMargin: frame.displacementLeft * appSettings.window_scaling
anchors.rightMargin: frame.displacementRight * appSettings.window_scaling
anchors.topMargin: frame.displacementTop * appSettings.window_scaling
anchors.bottomMargin: frame.displacementBottom * appSettings.window_scaling
anchors.leftMargin: frame.displacementLeft * appSettings.windowScaling
anchors.rightMargin: frame.displacementRight * appSettings.windowScaling
anchors.topMargin: frame.displacementTop * appSettings.windowScaling
anchors.bottomMargin: frame.displacementBottom * appSettings.windowScaling

//The blur effect has to take into account the framerate
property real mBlur: appSettings.motion_blur
property real mBlur: appSettings.burnIn
property real motionBlurCoefficient: (_maxBlurCoefficient * Math.sqrt(mBlur) + _minBlurCoefficient * (1 - Math.sqrt(mBlur)))
property real _minBlurCoefficient: 0.50
property real _maxBlurCoefficient: 0.90
Expand Down Expand Up @@ -83,7 +83,7 @@ Item{

colorScheme: "cool-retro-term"

smooth: false
smooth: appSettings.rasterization === appSettings.no_rasterization
enableBold: false
fullCursorHeight: true

Expand Down Expand Up @@ -129,9 +129,10 @@ Item{
appSettings.terminalFontChanged.connect(handleFontChange);

// Retrieve the variable set in main.cpp if arguments are passed.
if (shellProgram) {
ksession.setShellProgram(shellProgram);
} else if (!shellProgram && Qt.platform.os === "osx") {
if (defaultCmd) {
ksession.setShellProgram(defaultCmd);
ksession.setArgs(defaultCmdArgs);
} else if (!defaultCmd && Qt.platform.os === "osx") {
// OSX Requires the following default parameters for auto login.
ksession.setArgs(["-i", "-l"]);
}
Expand All @@ -149,9 +150,9 @@ Item{
id: contextmenu
MenuItem{action: copyAction}
MenuItem{action: pasteAction}
MenuSeparator{visible: Qt.platform.os !== "osx"}
MenuItem{action: fullscreenAction; visible: Qt.platform.os !== "osx"}
MenuItem{action: showMenubarAction; visible: Qt.platform.os !== "osx"}
MenuSeparator{}
MenuItem{action: fullscreenAction}
MenuItem{action: showMenubarAction}
MenuSeparator{visible: !appSettings.showMenubar}
CRTMainMenuBar{visible: !appSettings.showMenubar}
}
Expand All @@ -162,9 +163,6 @@ Item{
id: contextmenu
MenuItem{action: copyAction}
MenuItem{action: pasteAction}
MenuSeparator{visible: Qt.platform.os !== "osx"}
MenuItem{action: fullscreenAction; visible: Qt.platform.os !== "osx"}
MenuItem{action: showMenubarAction; visible: Qt.platform.os !== "osx"}
}
}
Loader {
Expand Down Expand Up @@ -210,7 +208,7 @@ Item{
y = y / height;

var cc = Qt.size(0.5 - x, 0.5 - y);
var distortion = (cc.height * cc.height + cc.width * cc.width) * appSettings.screen_distortion;
var distortion = (cc.height * cc.height + cc.width * cc.width) * appSettings.screenCurvature;

return Qt.point((x - cc.width * (1+distortion) * distortion) * kterminal.width,
(y - cc.height * (1+distortion) * distortion) * kterminal.height)
Expand Down Expand Up @@ -258,9 +256,10 @@ Item{
// Restart blurred source settings change.
Connections{
target: appSettings
onMotion_blurChanged: _blurredSourceEffect.restartBlurSource();
onBurnInChanged: _blurredSourceEffect.restartBlurSource();
onTerminalFontChanged: _blurredSourceEffect.restartBlurSource();
onRasterizationChanged: _blurredSourceEffect.restartBlurSource();
onBurnInQualityChanged: _blurredSourceEffect.restartBlurSource();
}
Connections {
target: kterminalScrollbar
Expand All @@ -272,8 +271,8 @@ Item{
Loader{
id: blurredTerminalLoader

width: kterminal.width * scaleTexture * appSettings.blur_quality
height: kterminal.height * scaleTexture * appSettings.blur_quality
width: kterminal.width * scaleTexture * appSettings.burnInQuality
height: kterminal.height * scaleTexture * appSettings.burnInQuality
active: mBlur !== 0
asynchronous: true

Expand Down
57 changes: 29 additions & 28 deletions app/qml/SettingsEffectsTab.qml
Original file line number Diff line number Diff line change
Expand Up @@ -28,57 +28,58 @@ Tab{
anchors.fill: parent
ColumnLayout{
anchors.fill: parent
spacing: 2
CheckableSlider{
name: qsTr("Bloom")
onNewValue: appSettings.bloom_strength = newValue
value: appSettings.bloom_strength
onNewValue: appSettings.bloom = newValue
value: appSettings.bloom
}
CheckableSlider{
name: qsTr("Motion Blur")
onNewValue: appSettings.motion_blur = newValue
value: appSettings.motion_blur
name: qsTr("BurnIn")
onNewValue: appSettings.burnIn = newValue
value: appSettings.burnIn
}
CheckableSlider{
name: qsTr("Noise")
onNewValue: appSettings.noise_strength = newValue
value: appSettings.noise_strength
name: qsTr("Static Noise")
onNewValue: appSettings.staticNoise = newValue
value: appSettings.staticNoise
}
CheckableSlider{
name: qsTr("Jitter")
onNewValue: appSettings.jitter = newValue
value: appSettings.jitter
}
CheckableSlider{
name: qsTr("Glow")
onNewValue: appSettings.glowing_line_strength = newValue;
value: appSettings.glowing_line_strength
name: qsTr("Glow Line")
onNewValue: appSettings.glowingLine = newValue;
value: appSettings.glowingLine
}
CheckableSlider{
name: qsTr("Screen distortion")
onNewValue: appSettings.screen_distortion = newValue;
value: appSettings.screen_distortion;
name: qsTr("Screen Curvature")
onNewValue: appSettings.screenCurvature = newValue;
value: appSettings.screenCurvature;
}
CheckableSlider{
name: qsTr("Ambient light")
onNewValue: appSettings.ambient_light = newValue;
value: appSettings.ambient_light
enabled: appSettings.frames_index !== 0
name: qsTr("Ambient Light")
onNewValue: appSettings.ambientLight = newValue;
value: appSettings.ambientLight
enabled: appSettings.framesIndex !== 0
}
CheckableSlider{
name: qsTr("Brightness flickering")
onNewValue: appSettings.brightness_flickering = newValue;
value: appSettings.brightness_flickering;
name: qsTr("Flickering")
onNewValue: appSettings.flickering = newValue;
value: appSettings.flickering;
}
CheckableSlider{
name: qsTr("Horizontal flickering")
onNewValue: appSettings.horizontal_sincronization = newValue;
value: appSettings.horizontal_sincronization;
name: qsTr("Horizontal Sync")
onNewValue: appSettings.horizontalSync = newValue;
value: appSettings.horizontalSync;
}
CheckableSlider{
name: qsTr("RGB shift")
onNewValue: appSettings.rgb_shift = newValue;
value: appSettings.rgb_shift;
enabled: appSettings.chroma_color !== 0
name: qsTr("RGB Shift")
onNewValue: appSettings.rbgShift = newValue;
value: appSettings.rbgShift;
enabled: appSettings.chromaColor !== 0
}
}
}
Expand Down
198 changes: 145 additions & 53 deletions app/qml/SettingsGeneralTab.qml
Original file line number Diff line number Diff line change
Expand Up @@ -21,88 +21,180 @@
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
import QtQuick.Dialogs 1.1

Tab{
ColumnLayout{
anchors.fill: parent
GroupBox{
anchors {left: parent.left; right: parent.right}
Layout.fillWidth: true
Layout.fillHeight: true
title: qsTr("Profile")
ColumnLayout{
RowLayout {
anchors.fill: parent
ComboBox{
id: profilesbox
TableView {
id: profilesView
Layout.fillWidth: true
model: appSettings.profiles_list
currentIndex: appSettings.profiles_index
anchors { top: parent.top; bottom: parent.bottom; }
model: appSettings.profilesList
headerVisible: false
TableViewColumn {
title: qsTr("Profile")
role: "text"
width: parent.width * 0.5
}
onActivated: {
appSettings.loadProfile(row);
}
}
RowLayout{
Layout.fillWidth: true
ColumnLayout {
anchors { top: parent.top; bottom: parent.bottom }
Layout.fillWidth: false
Button{
Layout.fillWidth: true
text: qsTr("New")
onClicked: {
insertname.profileName = "";
insertname.show()
}
}
Button{
Layout.fillWidth: true
property alias currentIndex: profilesView.currentRow
enabled: currentIndex >= 0
text: qsTr("Load")
onClicked: {
appSettings.profiles_index = profilesbox.currentIndex
appSettings.loadCurrentProfile();
appSettings.handleFontChanged();
var index = profilesView.currentRow;
if (index >= 0)
appSettings.loadProfile(index);
}
}
Button{
Layout.fillWidth: true
text: qsTr("Save New Profile")
onClicked: insertname.show()
text: qsTr("Remove")
property alias currentIndex: profilesView.currentRow

enabled: currentIndex >= 0 && !appSettings.profilesList.get(currentIndex).builtin
onClicked: {
appSettings.profilesList.remove(currentIndex);
profilesView.selection.clear();

// TODO This is a very ugly workaround. The view didn't update on Qt 5.3.2.
profilesView.model = 0;
profilesView.model = appSettings.profilesList;
}
}
Item {
// Spacing
Layout.fillHeight: true
}
Button{
Layout.fillWidth: true
text: qsTr("Remove Selected")
enabled: !appSettings.profiles_list.get(profilesbox.currentIndex).builtin
text: qsTr("Import")
onClicked: {
appSettings.profiles_list.remove(profilesbox.currentIndex)
profilesbox.currentIndex = profilesbox.currentIndex - 1
fileDialog.selectExisting = true;
fileDialog.callBack = function (url) {loadFile(url);};
fileDialog.open();
}
function loadFile(url) {
try {
if (appSettings.verbose)
console.log("Loading file: " + url);

var profileObject = JSON.parse(fileIO.read(url));
var name = profileObject.name;

if (!name)
throw "Profile doesn't have a name";

delete profileObject.name;

appSettings.appendCustomProfile(name, JSON.stringify(profileObject));
} catch (err) {
console.log(err);
messageDialog.text = qsTr("There has been an error reading the file.")
messageDialog.open();
}
}
}
Button{
property alias currentIndex: profilesView.currentRow

Layout.fillWidth: true

text: qsTr("Export")
enabled: currentIndex >= 0 && !appSettings.profilesList.get(currentIndex).builtin
onClicked: {
fileDialog.selectExisting = false;
fileDialog.callBack = function (url) {storeFile(url);};
fileDialog.open();
}
function storeFile(url) {
try {
var urlString = url.toString();

// Fix the extension if it's missing.
var extension = urlString.substring(urlString.length - 5, urlString.length);
var urlTail = (extension === ".json" ? "" : ".json");
url += urlTail;

if (true)
console.log("Storing file: " + url);

var profileObject = appSettings.profilesList.get(currentIndex);
var profileSettings = JSON.parse(profileObject.obj_string);
profileSettings["name"] = profileObject.text;

var result = fileIO.write(url, JSON.stringify(profileSettings, undefined, 2));
if (!result)
throw "The file could not be written.";
} catch (err) {
console.log(err);
messageDialog.text = qsTr("There has been an error storing the file.")
messageDialog.open();
}
}
}
}
InsertNameDialog{
id: insertname
onNameSelected: appSettings.addNewCustomProfile(name)
}
}
}
GroupBox{
title: qsTr("Lights")
Layout.fillWidth: true
GridLayout{
anchors.fill: parent
columns: 2
Text{ text: qsTr("Brightness") }
SimpleSlider{
onValueChanged: appSettings.brightness = value
value: appSettings.brightness
}
Text{ text: qsTr("Contrast") }
SimpleSlider{
onValueChanged: appSettings.contrast = value
value: appSettings.contrast
}
Text{ text: qsTr("Opacity") }
SimpleSlider{
onValueChanged: appSettings.windowOpacity = value
value: appSettings.windowOpacity
}
// DIALOGS ////////////////////////////////////////////////////////////////
InsertNameDialog{
id: insertname
onNameSelected: {
appSettings.appendCustomProfile(name, appSettings.composeProfileString());
}
}
GroupBox{
title: qsTr("Frame")
Layout.fillWidth: true
RowLayout{
anchors.fill: parent
ComboBox{
id: framescombobox
Layout.fillWidth: true
model: appSettings.frames_list
currentIndex: appSettings.frames_index
onCurrentIndexChanged: appSettings.frames_index = currentIndex
}
MessageDialog {
id: messageDialog
title: qsTr("File Error")
onAccepted: {
messageDialog.close();
}
}
Loader {
property var callBack
property bool selectExisting: false
id: fileDialog

sourceComponent: FileDialog{
nameFilters: ["Json files (*.json)"]
selectMultiple: false
selectFolder: false
selectExisting: fileDialog.selectExisting
onAccepted: callBack(fileUrl);
}

onSelectExistingChanged: reload()

function open() {
item.open();
}

function reload() {
active = false;
active = true;
}
}
}
Expand Down
40 changes: 26 additions & 14 deletions app/qml/SettingsPerformanceTab.qml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Tab{
property int fps: checked ? slider.value : 0
onFpsChanged: appSettings.fps = fps
checked: appSettings.fps !== 0
text: qsTr("Limit FPS")
text: qsTr("Effects FPS")
}
Slider{
id: slider
Expand All @@ -54,10 +54,14 @@ Tab{
Slider{
Layout.fillWidth: true
id: txtslider
onValueChanged: appSettings.window_scaling = value;
value: appSettings.window_scaling
onValueChanged: if (enabled) appSettings.windowScaling = value;
stepSize: 0.10
Component.onCompleted: minimumValue = 0.3 //Without this value gets set to 0.5
enabled: false
Component.onCompleted: {
minimumValue = 0.3 //Without this value gets set to 0.5
value = appSettings.windowScaling;
enabled = true;
}
}
Text{text: Math.round(txtslider.value * 100) + "%"}
}
Expand All @@ -75,33 +79,41 @@ Tab{
Slider{
Layout.fillWidth: true
id: bloomSlider
onValueChanged: appSettings.bloom_quality = value;
value: appSettings.bloom_quality
onValueChanged: if (enabled) appSettings.bloomQuality = value;
stepSize: 0.10
Component.onCompleted: minimumValue = 0.3 //Without this value gets set to 0.5
enabled: false
Component.onCompleted: {
minimumValue = 0.3
value = appSettings.bloomQuality;
enabled = true;
}
}
Text{text: Math.round(bloomSlider.value * 100) + "%"}
}
}
GroupBox{
title: qsTr("Motion Blur")
title: qsTr("BurnIn")
Layout.fillWidth: true
anchors.left: parent.left
anchors.right: parent.right
GridLayout{
id: blurQualityContainer
anchors.fill: parent

Text{text: qsTr("Blur Quality")}
Text{text: qsTr("BurnIn Quality")}
Slider{
Layout.fillWidth: true
id: blurSlider
onValueChanged: appSettings.blur_quality = value;
value: appSettings.blur_quality
id: burnInSlider
onValueChanged: if (enabled) appSettings.burnInQuality = value;
stepSize: 0.10
Component.onCompleted: minimumValue = 0.3 //Without this value gets set to 0.5
enabled: false
Component.onCompleted: {
minimumValue = 0.3
value = appSettings.burnInQuality;
enabled = true;
}
}
Text{text: Math.round(blurSlider.value * 100) + "%"}
Text{text: Math.round(burnInSlider.value * 100) + "%"}
}
}
GroupBox{
Expand Down
94 changes: 94 additions & 0 deletions app/qml/SettingsScreenTab.qml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
/*******************************************************************************
* 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.Controls 1.1
import QtQuick.Layouts 1.1
import QtQuick.Dialogs 1.1

Tab{
ColumnLayout{
anchors.fill: parent
GroupBox{
title: qsTr("Rasterization Mode")
Layout.fillWidth: true
ComboBox {
id: rasterizationBox
property string selectedElement: model[currentIndex]
anchors.fill: parent
model: [qsTr("Default"), qsTr("Scanlines"), qsTr("Pixels")]
currentIndex: appSettings.rasterization
onCurrentIndexChanged: {
appSettings.rasterization = currentIndex
}
}
}
GroupBox{
title: qsTr("Lights")
Layout.fillWidth: true
GridLayout{
anchors.fill: parent
columns: 2
Text{ text: qsTr("Brightness") }
SimpleSlider{
onValueChanged: appSettings.brightness = value
value: appSettings.brightness
}
Text{ text: qsTr("Contrast") }
SimpleSlider{
onValueChanged: appSettings.contrast = value
value: appSettings.contrast
}
Text{ text: qsTr("Opacity") }
SimpleSlider{
onValueChanged: appSettings.windowOpacity = value
value: appSettings.windowOpacity
}
}
}
GroupBox{
title: qsTr("Frame")
Layout.fillWidth: true
RowLayout{
anchors.fill: parent
ComboBox{
id: framescombobox
Layout.fillWidth: true
model: appSettings.framesList
currentIndex: appSettings.framesIndex
onActivated: {
appSettings.frameName = appSettings.framesList.get(index).name;
}
function updateIndex(){
var name = appSettings.frameName;
var index = appSettings.getFrameIndexByName(name);
if (index !== undefined)
currentIndex = index;
}
Component.onCompleted: updateIndex();
Connections {
target: appSettings
onFrameNameChanged: framescombobox.updateIndex();
}
}
}
}
}
}
59 changes: 23 additions & 36 deletions app/qml/SettingsTerminalTab.qml
Original file line number Diff line number Diff line change
Expand Up @@ -26,22 +26,9 @@ Tab{
ColumnLayout{
anchors.fill: parent
GroupBox{
title: qsTr("Rasterization Mode")
Layout.fillWidth: true
ComboBox {
id: rasterizationBox
property string selectedElement: model[currentIndex]
anchors.fill: parent
model: [qsTr("Default"), qsTr("Scanlines"), qsTr("Pixels")]
currentIndex: appSettings.rasterization
onCurrentIndexChanged: {
appSettings.rasterization = currentIndex
}
}
}
GroupBox{
title: qsTr("Font") + " (" + rasterizationBox.selectedElement + ")"
Layout.fillWidth: true
property var rasterization: [qsTr("Default"), qsTr("Scanlines"), qsTr("Pixels")][appSettings.rasterization]
title: qsTr("Font" + "(" + rasterization + ")")
anchors { left: parent.left; right: parent.right }
GridLayout{
anchors.fill: parent
columns: 2
Expand All @@ -63,7 +50,7 @@ Tab{
}
Connections{
target: appSettings
onRasterizationChanged: fontChanger.updateIndex();
onTerminalFontChanged: fontChanger.updateIndex();
}
Component.onCompleted: updateIndex();
}
Expand Down Expand Up @@ -114,38 +101,38 @@ Tab{
}
GroupBox{
title: qsTr("Colors")
Layout.fillWidth: true
anchors { left: parent.left; right: parent.right }
ColumnLayout{
anchors.fill: parent
ColumnLayout{
Layout.fillWidth: true
CheckableSlider{
name: qsTr("Chroma Color")
onNewValue: appSettings.chromaColor = newValue
value: appSettings.chromaColor
}
CheckableSlider{
name: qsTr("Saturation Color")
onNewValue: appSettings.saturationColor = newValue
value: appSettings.saturationColor
enabled: appSettings.chromaColor !== 0
}
}
RowLayout{
Layout.fillWidth: true
ColorButton{
name: qsTr("Font")
height: 50
Layout.fillWidth: true
onColorSelected: appSettings._font_color = color;
button_color: appSettings._font_color
onColorSelected: appSettings._fontColor = color;
button_color: appSettings._fontColor
}
ColorButton{
name: qsTr("Background")
height: 50
Layout.fillWidth: true
onColorSelected: appSettings._background_color = color;
button_color: appSettings._background_color
}
}
ColumnLayout{
Layout.fillWidth: true
CheckableSlider{
name: qsTr("Chroma Color")
onNewValue: appSettings.chroma_color = newValue
value: appSettings.chroma_color
}
CheckableSlider{
name: qsTr("Saturation Color")
onNewValue: appSettings.saturation_color = newValue
value: appSettings.saturation_color
enabled: appSettings.chroma_color !== 0
onColorSelected: appSettings._backgroundColor = color;
button_color: appSettings._backgroundColor
}
}
}
Expand Down
10 changes: 8 additions & 2 deletions app/qml/SettingsWindow.qml
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ import QtQuick.Dialogs 1.1
Window {
id: settings_window
title: qsTr("Settings")
width: 640
height: 440
width: 580
height: 400

property int tabmargins: 15

Expand All @@ -42,6 +42,12 @@ Window {
anchors.fill: parent
anchors.margins: tabmargins
}
SettingsScreenTab{
id: screenTab
title: qsTr("Screen")
anchors.fill: parent
anchors.margins: tabmargins
}
SettingsTerminalTab{
id: terminalTab
title: qsTr("Terminal")
Expand Down
182 changes: 92 additions & 90 deletions app/qml/ShaderTerminal.qml
Original file line number Diff line number Diff line change
Expand Up @@ -26,33 +26,33 @@ ShaderEffect {
property ShaderEffectSource blurredSource
property ShaderEffectSource bloomSource

property color font_color: appSettings.font_color
property color background_color: appSettings.background_color
property real bloom_strength: appSettings.bloom_strength * 2.5
property color fontColor: appSettings.fontColor
property color backgroundColor: appSettings.backgroundColor
property real bloom: appSettings.bloom * 2.5

property real motion_blur: appSettings.motion_blur
property real burnIn: appSettings.burnIn

property real jitter: appSettings.jitter * 0.007
property real noise_strength: appSettings.noise_strength
property size scaleNoiseSize: Qt.size((width) / (noiseTexture.width * appSettings.window_scaling * appSettings.fontScaling),
(height) / (noiseTexture.height * appSettings.window_scaling * appSettings.fontScaling))
property real staticNoise: appSettings.staticNoise
property size scaleNoiseSize: Qt.size((width) / (noiseTexture.width * appSettings.windowScaling * appSettings.fontScaling),
(height) / (noiseTexture.height * appSettings.windowScaling * appSettings.fontScaling))

property real screen_distorsion: appSettings.screen_distortion
property real glowing_line_strength: appSettings.glowing_line_strength
property real screenCurvature: appSettings.screenCurvature
property real glowingLine: appSettings.glowingLine

property real chroma_color: appSettings.chroma_color;
property real chromaColor: appSettings.chromaColor;

property real rgb_shift: appSettings.rgb_shift * 0.2
property real rbgShift: appSettings.rbgShift * 0.2

property real brightness_flickering: appSettings.brightness_flickering
property real horizontal_sincronization: appSettings.horizontal_sincronization
property real flickering: appSettings.flickering
property real horizontalSync: appSettings.horizontalSync * 0.5

property bool frameReflections: appSettings.frameReflections

property real disp_top: (frame.displacementTop * appSettings.window_scaling) / height
property real disp_bottom: (frame.displacementBottom * appSettings.window_scaling) / height
property real disp_left: (frame.displacementLeft * appSettings.window_scaling) / width
property real disp_right: (frame.displacementRight * appSettings.window_scaling) / width
property real disp_top: (frame.displacementTop * appSettings.windowScaling) / height
property real disp_bottom: (frame.displacementBottom * appSettings.windowScaling) / height
property real disp_left: (frame.displacementLeft * appSettings.windowScaling) / width
property real disp_right: (frame.displacementRight * appSettings.windowScaling) / width

property real screen_brightness: appSettings.brightness * 1.5 + 0.5

Expand All @@ -66,7 +66,7 @@ ShaderEffect {
}

property alias time: timeManager.time
property variant noiseSource: noiseShaderSource
property ShaderEffectSource noiseSource: noiseShaderSource

// If something goes wrong activate the fallback version of the shader.
property bool fallBack: false
Expand Down Expand Up @@ -112,11 +112,11 @@ ShaderEffect {
(!fallBack ? "
uniform sampler2D noiseSource;" : "") +

(!fallBack && brightness_flickering !== 0.0 ?"
(!fallBack && flickering !== 0.0 ?"
varying lowp float brightness;
uniform lowp float brightness_flickering;" : "") +
(!fallBack && horizontal_sincronization !== 0.0 ?"
uniform lowp float horizontal_sincronization;
uniform lowp float flickering;" : "") +
(!fallBack && horizontalSync !== 0.0 ?"
uniform lowp float horizontalSync;
varying lowp float distortionScale;
varying lowp float distortionFreq;" : "") +

Expand All @@ -126,16 +126,16 @@ ShaderEffect {
qt_TexCoord0.y = (qt_MultiTexCoord0.y - disp_top) / (1.0 - disp_top - disp_bottom);
vec2 coords = vec2(fract(time/(1024.0*2.0)), fract(time/(1024.0*1024.0)));" +

(!fallBack && (brightness_flickering !== 0.0 || horizontal_sincronization !== 0.0) ?
(!fallBack && (flickering !== 0.0 || horizontalSync !== 0.0) ?
"vec4 initialNoiseTexel = texture2D(noiseSource, coords);"
: "") +
(!fallBack && brightness_flickering !== 0.0 ? "
brightness = 1.0 + (initialNoiseTexel.g - 0.5) * brightness_flickering;"
(!fallBack && flickering !== 0.0 ? "
brightness = 1.0 + (initialNoiseTexel.g - 0.5) * flickering;"
: "") +

(!fallBack && horizontal_sincronization !== 0.0 ? "
float randval = horizontal_sincronization - initialNoiseTexel.r;
distortionScale = step(0.0, randval) * randval * horizontal_sincronization;
(!fallBack && horizontalSync !== 0.0 ? "
float randval = horizontalSync - initialNoiseTexel.r;
distortionScale = step(0.0, randval) * randval * horizontalSync;
distortionFreq = mix(4.0, 40.0, initialNoiseTexel.g);"
: "") +

Expand All @@ -148,50 +148,50 @@ ShaderEffect {
uniform highp float time;
varying highp vec2 qt_TexCoord0;
uniform highp vec4 font_color;
uniform highp vec4 background_color;
uniform highp vec4 fontColor;
uniform highp vec4 backgroundColor;
uniform lowp float screen_brightness;
uniform highp vec2 virtual_resolution;
uniform highp float dispX;
uniform highp float dispY;" +

(bloom_strength !== 0 ? "
(bloom !== 0 ? "
uniform highp sampler2D bloomSource;
uniform lowp float bloom_strength;" : "") +
(motion_blur !== 0 ? "
uniform lowp float bloom;" : "") +
(burnIn !== 0 ? "
uniform sampler2D blurredSource;" : "") +
(noise_strength !== 0 ? "
uniform highp float noise_strength;" : "") +
(((noise_strength !== 0 || jitter !== 0 || rgb_shift)
||(fallBack && (brightness_flickering || horizontal_sincronization))) ? "
(staticNoise !== 0 ? "
uniform highp float staticNoise;" : "") +
(((staticNoise !== 0 || jitter !== 0 || rbgShift)
||(fallBack && (flickering || horizontalSync))) ? "
uniform lowp sampler2D noiseSource;
uniform highp vec2 scaleNoiseSize;" : "") +
(screen_distorsion !== 0 ? "
uniform highp float screen_distorsion;" : "") +
(glowing_line_strength !== 0 ? "
uniform highp float glowing_line_strength;" : "") +
(chroma_color !== 0 ? "
uniform lowp float chroma_color;" : "") +
(screenCurvature !== 0 ? "
uniform highp float screenCurvature;" : "") +
(glowingLine !== 0 ? "
uniform highp float glowingLine;" : "") +
(chromaColor !== 0 ? "
uniform lowp float chromaColor;" : "") +
(jitter !== 0 ? "
uniform lowp float jitter;" : "") +
(rgb_shift !== 0 ? "
uniform lowp float rgb_shift;" : "") +

(fallBack && horizontal_sincronization !== 0 ? "
uniform lowp float horizontal_sincronization;" : "") +
(fallBack && brightness_flickering !== 0.0 ?"
uniform lowp float brightness_flickering;" : "") +
(!fallBack && brightness_flickering !== 0 ? "
(rbgShift !== 0 ? "
uniform lowp float rbgShift;" : "") +

(fallBack && horizontalSync !== 0 ? "
uniform lowp float horizontalSync;" : "") +
(fallBack && flickering !== 0.0 ?"
uniform lowp float flickering;" : "") +
(!fallBack && flickering !== 0 ? "
varying lowp float brightness;"
: "") +
(!fallBack && horizontal_sincronization !== 0 ? "
(!fallBack && horizontalSync !== 0 ? "
varying lowp float distortionScale;
varying lowp float distortionFreq;" : "") +

(glowing_line_strength !== 0 ? "
(glowingLine !== 0 ? "
float randomPass(vec2 coords){
return fract(smoothstep(-0.2, 0.0, coords.y - 3.0 * fract(time * 0.0001))) * glowing_line_strength;
return fract(smoothstep(-0.2, 0.0, coords.y - 3.0 * fract(time * 0.0001))) * glowingLine;
}" : "") +

"highp float getScanlineIntensity(vec2 coords) {
Expand All @@ -214,36 +214,38 @@ ShaderEffect {
"float distance = length(cc);" +

//FallBack if there are problems
(fallBack && (brightness_flickering !== 0.0 || horizontal_sincronization !== 0.0) ?
(fallBack && (flickering !== 0.0 || horizontalSync !== 0.0) ?
"vec2 initialCoords = vec2(fract(time/(1024.0*2.0)), fract(time/(1024.0*1024.0)));
vec4 initialNoiseTexel = texture2D(noiseSource, initialCoords);"
: "") +
(fallBack && brightness_flickering !== 0.0 ? "
float brightness = 1.0 + (initialNoiseTexel.g - 0.5) * brightness_flickering;"
(fallBack && flickering !== 0.0 ? "
float brightness = 1.0 + (initialNoiseTexel.g - 0.5) * flickering;"
: "") +
(fallBack && horizontal_sincronization !== 0.0 ? "
float randval = horizontal_sincronization - initialNoiseTexel.r;
float distortionScale = step(0.0, randval) * randval * horizontal_sincronization;
(fallBack && horizontalSync !== 0.0 ? "
float randval = horizontalSync - initialNoiseTexel.r;
float distortionScale = step(0.0, randval) * randval * horizontalSync;
float distortionFreq = mix(4.0, 40.0, initialNoiseTexel.g);"
: "") +

(noise_strength ? "
float noise = noise_strength;" : "") +
(staticNoise ? "
float noise = staticNoise;" : "") +

(screen_distorsion !== 0 ? "
float distortion = dot(cc, cc) * screen_distorsion;
vec2 coords = (qt_TexCoord0 - cc * (1.0 + distortion) * distortion);"
(screenCurvature !== 0 ? "
float distortion = dot(cc, cc) * screenCurvature;
vec2 staticCoords = (qt_TexCoord0 - cc * (1.0 + distortion) * distortion);"
:"
vec2 coords = qt_TexCoord0;") +
vec2 staticCoords = qt_TexCoord0;") +

(horizontal_sincronization !== 0 ? "
"vec2 coords = staticCoords;" +

(horizontalSync !== 0 ? "
float dst = sin((coords.y + time * 0.001) * distortionFreq);
coords.x += dst * distortionScale;" +
(noise_strength ? "
noise += distortionScale * 3.0;" : "")
(staticNoise ? "
noise += distortionScale * 7.0;" : "")
: "") +

(jitter !== 0 || noise_strength !== 0 ?
(jitter !== 0 || staticNoise !== 0 ?
"vec4 noiseTexel = texture2D(noiseSource, scaleNoiseSize * coords + vec2(fract(time / 51.0), fract(time / 237.0)));"
: "") +

Expand All @@ -254,54 +256,54 @@ ShaderEffect {

"float color = 0.0;" +

(noise_strength !== 0 ? "
(staticNoise !== 0 ? "
float noiseVal = noiseTexel.a;
color += noiseVal * noise * (1.0 - distance * 1.3);" : "") +

(glowing_line_strength !== 0 ? "
color += randomPass(coords) * glowing_line_strength;" : "") +
(glowingLine !== 0 ? "
color += randomPass(coords) * glowingLine;" : "") +

"vec3 txt_color = texture2D(source, txt_coords).rgb;" +

(motion_blur !== 0 ? "
(burnIn !== 0 ? "
vec4 txt_blur = texture2D(blurredSource, txt_coords);
txt_color = txt_color + txt_blur.rgb * txt_blur.a;"
: "") +

"float greyscale_color = rgb2grey(txt_color) + color;" +

(chroma_color !== 0 ?
(rgb_shift !== 0 ? "
(chromaColor !== 0 ?
(rbgShift !== 0 ? "
float rgb_noise = abs(texture2D(noiseSource, vec2(fract(time/(1024.0 * 256.0)), fract(time/(1024.0*1024.0)))).a - 0.5);
float rcolor = texture2D(source, txt_coords + vec2(0.1, 0.0) * rgb_shift * rgb_noise).r;
float bcolor = texture2D(source, txt_coords - vec2(0.1, 0.0) * rgb_shift * rgb_noise).b;
float rcolor = texture2D(source, txt_coords + vec2(0.1, 0.0) * rbgShift * rgb_noise).r;
float bcolor = texture2D(source, txt_coords - vec2(0.1, 0.0) * rbgShift * rgb_noise).b;
txt_color.r = rcolor;
txt_color.b = bcolor;
greyscale_color = 0.33 * (rcolor + bcolor);" : "") +

"vec3 mixedColor = mix(font_color.rgb, txt_color * font_color.rgb, chroma_color);
vec3 finalBackColor = mix(background_color.rgb, mixedColor, greyscale_color);
vec3 finalColor = mix(finalBackColor, font_color.rgb, color).rgb;"
"vec3 mixedColor = mix(fontColor.rgb, txt_color * fontColor.rgb, chromaColor);
vec3 finalBackColor = mix(backgroundColor.rgb, mixedColor, greyscale_color);
vec3 finalColor = mix(finalBackColor, fontColor.rgb, color).rgb;"
:
"vec3 finalColor = mix(background_color.rgb, font_color.rgb, greyscale_color);") +
"vec3 finalColor = mix(backgroundColor.rgb, fontColor.rgb, greyscale_color);") +

"finalColor *= getScanlineIntensity(coords);" +

(bloom_strength !== 0 ?
(bloom !== 0 ?
"vec4 bloomFullColor = texture2D(bloomSource, coords);
vec3 bloomColor = bloomFullColor.rgb;
float bloomAlpha = bloomFullColor.a;" +
(chroma_color !== 0 ?
"bloomColor = font_color.rgb * mix(vec3(rgb2grey(bloomColor)), bloomColor, chroma_color);"
(chromaColor !== 0 ?
"bloomColor = fontColor.rgb * mix(vec3(rgb2grey(bloomColor)), bloomColor, chromaColor);"
:
"bloomColor = font_color.rgb * rgb2grey(bloomColor);") +
"finalColor += bloomColor * bloom_strength * bloomAlpha;"
"bloomColor = fontColor.rgb * rgb2grey(bloomColor);") +
"finalColor += bloomColor * bloom * bloomAlpha;"
: "") +

"finalColor *= smoothstep(-dispX, 0.0, coords.x) - smoothstep(1.0, 1.0 + dispX, coords.x);
finalColor *= smoothstep(-dispY, 0.0, coords.y) - smoothstep(1.0, 1.0 + dispY, coords.y);" +
"finalColor *= smoothstep(-dispX, 0.0, staticCoords.x) - smoothstep(1.0, 1.0 + dispX, staticCoords.x);
finalColor *= smoothstep(-dispY, 0.0, staticCoords.y) - smoothstep(1.0, 1.0 + dispY, staticCoords.y);" +

(brightness_flickering !== 0 ? "
(flickering !== 0 ? "
finalColor *= brightness;" : "") +

"gl_FragColor = vec4(finalColor * screen_brightness, qt_Opacity);" +
Expand Down
2 changes: 1 addition & 1 deletion app/qml/Storage.qml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ QtObject {
property bool initialized: false

function getDatabase() {
return LocalStorage.openDatabaseSync("coololdterm", "1.0", "StorageDatabase", 100000);
return LocalStorage.openDatabaseSync("coolretroterm", "1.0", "StorageDatabase", 100000);
}

function initialize() {
Expand Down
20 changes: 10 additions & 10 deletions app/qml/TerminalContainer.qml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ ShaderTerminal{

source: terminal.mainSource
blurredSource: terminal.blurredSource
dispX: (12 / width) * appSettings.window_scaling
dispY: (12 / height) * appSettings.window_scaling
dispX: (12 / width) * appSettings.windowScaling
dispY: (12 / height) * appSettings.windowScaling
virtual_resolution: terminal.virtualResolution

Loader{
Expand All @@ -29,7 +29,7 @@ ShaderTerminal{
visible: status === Loader.Ready

z: 2.1
source: appSettings.frame_source
source: appSettings.frameSource
}

PreprocessedTerminal{
Expand All @@ -41,19 +41,19 @@ ShaderTerminal{

Loader{
id: bloomEffectLoader
active: appSettings.bloom_strength
active: appSettings.bloom
asynchronous: true
width: parent.width * appSettings.bloom_quality
height: parent.height * appSettings.bloom_quality
width: parent.width * appSettings.bloomQuality
height: parent.height * appSettings.bloomQuality
sourceComponent: FastBlur{
radius: 48 * appSettings.bloom_quality * appSettings.window_scaling
radius: 48 * appSettings.bloomQuality * appSettings.windowScaling
source: terminal.mainTerminal
transparentBorder: true
}
}
Loader{
id: bloomSourceLoader
active: appSettings.bloom_strength !== 0
active: appSettings.bloom !== 0
asynchronous: true
sourceComponent: ShaderEffectSource{
id: _bloomEffectSource
Expand All @@ -75,8 +75,8 @@ ShaderTerminal{
// width: parent.width
// height: parent.height
// property real outColor: 0.0
// property real dispX: (5 / width) * appSettings.window_scaling
// property real dispY: (5 / height) * appSettings.window_scaling
// property real dispX: (5 / width) * appSettings.windowScaling
// property real dispY: (5 / height) * appSettings.windowScaling
// property size virtual_resolution: terminal.virtualResolution

// blending: false
Expand Down
36 changes: 18 additions & 18 deletions app/qml/frames/utils/TerminalFrame.qml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import "../../utils.js" as Utils

Item{
id: framecontainer
property int textureWidth: terminalContainer.width / appSettings.window_scaling
property int textureHeight: terminalContainer.height / appSettings.window_scaling
property int textureWidth: terminalContainer.width / appSettings.windowScaling
property int textureHeight: terminalContainer.height / appSettings.windowScaling

property int addedWidth
property int addedHeight
Expand Down Expand Up @@ -105,12 +105,12 @@ Item{
id: staticLight
property alias source: framesource
property alias normals: framesourcenormals
property real screen_distorsion: appSettings.screen_distortion
property real screenCurvature: appSettings.screenCurvature
property size curvature_coefficients: Qt.size(width / mainShader.width, height / mainShader.height)
property real ambient_light: appSettings.ambient_light
property color font_color: appSettings.font_color
property color background_color: appSettings.background_color
property color reflectionColor: Utils.mix(font_color, background_color, 0.2)
property real ambientLight: appSettings.ambientLight * 0.9 + 0.1
property color fontColor: appSettings.fontColor
property color backgroundColor: appSettings.backgroundColor
property color reflectionColor: Utils.mix(fontColor, backgroundColor, 0.2)
property real diffuseComponent: staticDiffuseComponent

anchors.centerIn: parent
Expand All @@ -122,9 +122,9 @@ Item{
fragmentShader: "
uniform highp sampler2D normals;
uniform highp sampler2D source;
uniform lowp float screen_distorsion;
uniform lowp float screenCurvature;
uniform highp vec2 curvature_coefficients;
uniform lowp float ambient_light;
uniform lowp float ambientLight;
uniform highp float qt_Opacity;
uniform lowp vec4 reflectionColor;
uniform lowp float diffuseComponent;
Expand All @@ -133,7 +133,7 @@ Item{
vec2 distortCoordinates(vec2 coords){
vec2 cc = (coords - vec2(0.5)) * curvature_coefficients;
float dist = dot(cc, cc) * screen_distorsion;
float dist = dot(cc, cc) * screenCurvature;
return (coords + cc * (1.0 + dist) * dist);
}
Expand All @@ -151,7 +151,7 @@ Item{
float dotProd = dot(normal, vec3(lightDirection, 0.0)) * diffuseComponent * txtNormal.a;
vec3 darkColor = dotProd * reflectionColor.rgb;
gl_FragColor = vec4(mix(darkColor, txtColor.rgb, ambient_light), dotProd);
gl_FragColor = vec4(mix(darkColor, txtColor.rgb, ambientLight), dotProd);
}
"

Expand All @@ -174,8 +174,8 @@ Item{
property ShaderEffectSource lightMask: staticLightSource
property ShaderEffectSource reflectionSource: reflectionEffectSourceLoader.item
property real diffuseComponent: dinamycDiffuseComponent
property real chroma_color: appSettings.chroma_color
property color font_color: appSettings.font_color
property real chromaColor: appSettings.chromaColor
property color fontColor: appSettings.fontColor

visible: true
blending: true
Expand All @@ -184,8 +184,8 @@ Item{
uniform sampler2D lightMask;
uniform sampler2D reflectionSource;
uniform lowp float diffuseComponent;
uniform lowp float chroma_color;
uniform highp vec4 font_color;
uniform lowp float chromaColor;
uniform highp vec4 fontColor;
uniform highp float qt_Opacity;
varying highp vec2 qt_TexCoord0;
Expand All @@ -197,9 +197,9 @@ Item{
void main() {
float alpha = texture2D(lightMask, qt_TexCoord0).a * diffuseComponent;
vec3 reflectionColor = texture2D(reflectionSource, qt_TexCoord0).rgb;
vec3 color = font_color.rgb * rgb2grey(reflectionColor);" +
(chroma_color !== 0 ?
"color = mix(color, font_color.rgb * reflectionColor, chroma_color);"
vec3 color = fontColor.rgb * rgb2grey(reflectionColor);" +
(chromaColor !== 0 ?
"color = mix(color, fontColor.rgb * reflectionColor, chromaColor);"
: "") +
"gl_FragColor = vec4(color, 1.0) * alpha;
}
Expand Down
14 changes: 7 additions & 7 deletions app/qml/main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,12 @@ ApplicationWindow{
Action{
id: copyAction
text: qsTr("Copy")
shortcut: Qt.platform.os === "osx" ? "Ctrl+C" : "Ctrl+Shift+C"
shortcut: Qt.platform.os === "osx" ? StandardKey.Copy : "Ctrl+Shift+C"
}
Action{
id: pasteAction
text: qsTr("Paste")
shortcut: Qt.platform.os === "osx" ? "Ctrl+V" : "Ctrl+Shift+V"
shortcut: Qt.platform.os === "osx" ? StandardKey.Paste : "Ctrl+Shift+V"
}
Action{
id: zoomIn
Expand Down Expand Up @@ -116,12 +116,12 @@ ApplicationWindow{
TerminalContainer{
id: terminalContainer
y: appSettings.showMenubar ? 0 : -2 // Workaroud to hide the margin in the menubar.
width: parent.width * appSettings.window_scaling
height: (parent.height + Math.abs(y)) * appSettings.window_scaling
width: parent.width * appSettings.windowScaling
height: (parent.height + Math.abs(y)) * appSettings.windowScaling

transform: Scale {
xScale: 1 / appSettings.window_scaling
yScale: 1 / appSettings.window_scaling
xScale: 1 / appSettings.windowScaling
yScale: 1 / appSettings.windowScaling
}
}
SettingsWindow{
Expand All @@ -134,7 +134,7 @@ ApplicationWindow{
}
Loader{
anchors.centerIn: parent
active: appSettings.show_terminal_size
active: appSettings.showTerminalSize
sourceComponent: SizeOverlay{
z: 3
terminalSize: terminalContainer.terminalSize
Expand Down
1 change: 1 addition & 0 deletions app/qml/resources.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,6 @@
<file>fonts/modern-hermit/Hermit-medium.otf</file>
<file>fonts/modern-envy-code-r/Envy Code R.ttf</file>
<file>fonts/modern-inconsolata/Inconsolata.otf</file>
<file>SettingsScreenTab.qml</file>
</qresource>
</RCC>