gnu: Add cool-retro-term.

* gnu/packages/terminals.scm (cool-retro-term): New variable.
* gnu/packages/patches/cool-retro-term-remove-non-free-fonts.patch,
gnu/packages/patches/cool-retro-term-fix-array-size.patch,
gnu/packages/patches/cool-retro-term-memory-leak-1.patch,
gnu/packages/patches/cool-retro-term-remove-non-free-fonts.patch: New patches.
* gnu/local.mk (dist_patch_DATA): Add them.

Co-authored-by: Eric Bavier <bavier@member.fsf.org>
This commit is contained in:
Petter 2017-04-23 13:46:41 +02:00 committed by Eric Bavier
parent 7d3373a063
commit f9ff014bf6
No known key found for this signature in database
GPG key ID: 1EBBD204781F962C
6 changed files with 409 additions and 0 deletions

View file

@ -529,6 +529,10 @@ dist_patch_DATA = \
%D%/packages/patches/clx-remove-demo.patch \
%D%/packages/patches/cmake-fix-tests.patch \
%D%/packages/patches/coda-use-system-libs.patch \
%D%/packages/patches/cool-retro-term-dont-check-uninit-member.patch \
%D%/packages/patches/cool-retro-term-fix-array-size.patch \
%D%/packages/patches/cool-retro-term-memory-leak-1.patch \
%D%/packages/patches/cool-retro-term-remove-non-free-fonts.patch \
%D%/packages/patches/coreutils-cut-huge-range-test.patch \
%D%/packages/patches/coreutils-fix-cross-compilation.patch \
%D%/packages/patches/cpio-CVE-2016-2037.patch \

View file

@ -0,0 +1,33 @@
From 126a97d1f22f7d784d392b2b7d5aadf0a4e18c0d Mon Sep 17 00:00:00 2001
From: Petter <petter@mykolab.ch>
Date: Thu, 27 Apr 2017 20:28:02 +0200
Subject: [PATCH] Avoid checking uninitialized member + simplify condition
---
qmltermwidget/lib/TerminalDisplay.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/qmltermwidget/lib/TerminalDisplay.cpp b/qmltermwidget/lib/TerminalDisplay.cpp
index 189a609..36d2cd2 100644
--- a/qmltermwidget/lib/TerminalDisplay.cpp
+++ b/qmltermwidget/lib/TerminalDisplay.cpp
@@ -325,6 +325,7 @@ TerminalDisplay::TerminalDisplay(QQuickItem *parent)
,_terminalSizeHint(false)
,_terminalSizeStartup(true)
,_bidiEnabled(false)
+,_mouseMarks(false)
,_actSel(0)
,_wordSelectionMode(false)
,_lineSelectionMode(false)
@@ -1846,7 +1847,7 @@ void TerminalDisplay::mousePressEvent(QMouseEvent* ev)
}
else if ( ev->button() == Qt::MidButton )
{
- if ( _mouseMarks || (!_mouseMarks && (ev->modifiers() & Qt::ShiftModifier)) )
+ if ( _mouseMarks || (ev->modifiers() & Qt::ShiftModifier) )
emitSelection(true,ev->modifiers() & Qt::ControlModifier);
else
emit mouseSignal( 1, charColumn +1, charLine +1 +_scrollBar->value() -_scrollBar->maximum() , 0);
--
2.12.2

View file

@ -0,0 +1,25 @@
From c91d7ae5dbb00c8392a9f93283dc56c3e296cccd Mon Sep 17 00:00:00 2001
From: Petter <petter@mykolab.ch>
Date: Thu, 27 Apr 2017 20:19:21 +0200
Subject: [PATCH] Fix size of the array passed to memset()
---
qmltermwidget/lib/History.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/qmltermwidget/lib/History.cpp b/qmltermwidget/lib/History.cpp
index 0f9c13f..ab6f7be 100644
--- a/qmltermwidget/lib/History.cpp
+++ b/qmltermwidget/lib/History.cpp
@@ -515,7 +515,7 @@ void HistoryScrollBlockArray::addCells(const Character a[], int count)
// put cells in block's data
assert((count * sizeof(Character)) < ENTRIES);
- memset(b->data, 0, ENTRIES);
+ memset(b->data, 0, sizeof(b->data));
memcpy(b->data, a, count * sizeof(Character));
b->size = count * sizeof(Character);
--
2.12.2

View file

@ -0,0 +1,32 @@
From 08628fda19128b75248548357e416bc373f14f91 Mon Sep 17 00:00:00 2001
From: Yen Chi Hsuan <yan12125@gmail.com>
Date: Sat, 18 Mar 2017 02:50:34 +0800
Subject: [PATCH] Fix memory leak in hotspot (URLs & emails) detection
---
qmltermwidget/lib/Filter.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/qmltermwidget/lib/Filter.cpp b/qmltermwidget/lib/Filter.cpp
index 5ca7bee..2e8d2fb 100644
--- a/qmltermwidget/lib/Filter.cpp
+++ b/qmltermwidget/lib/Filter.cpp
@@ -26,6 +26,7 @@
// Qt
#include <QAction>
#include <QApplication>
+#include <QtAlgorithms>
#include <QClipboard>
#include <QString>
#include <QTextStream>
@@ -194,6 +195,7 @@ Filter::~Filter()
}
void Filter::reset()
{
+ qDeleteAll(_hotspotList);
_hotspots.clear();
_hotspotList.clear();
}
--
2.12.2

View file

@ -0,0 +1,205 @@
From 96ceffdfdcedd3ae33c46b11357aa2518e0a6152 Mon Sep 17 00:00:00 2001
From: Petter <petter@mykolab.ch>
Date: Thu, 27 Apr 2017 18:55:10 +0200
Subject: [PATCH] Remove non-free fonts from settings menu
--- a/app/qml/ApplicationSettings.qml
+++ b/app/qml/ApplicationSettings.qml
@@ -409,7 +409,7 @@
obj_string: '{"ambientLight":0.16,"backgroundColor":"#000000","bloom":0.4,"brightness":0.5,"flickering":0.1,"contrast":0.85,"fontName":"TERMINUS_SCALED","fontColor":"#0ccc68","frameName":"SIMPLE_WHITE_FRAME","glowingLine":0.2,"horizontalSync":0.16,"jitter":0.18,"burnIn":0.45,"staticNoise":0.1,"rasterization":0,"screenCurvature":0.1,"windowOpacity":1,"chromaColor":0,"saturationColor":0,"rbgShift":0,"fontWidth":1.0,"useCustomCommand":false,"customCommand":""}'
builtin: true
}
- ListElement{
+ /*ListElement{
text: "Default Scanlines"
obj_string: '{"ambientLight":0.16,"backgroundColor":"#000000","bloom":0.4,"brightness":0.5,"flickering":0.1,"contrast":0.85,"fontName":"COMMODORE_PET","fontColor":"#00ff5b","frameName":"SIMPLE_WHITE_FRAME","glowingLine":0.2,"horizontalSync":0.14,"jitter":0.11,"burnIn":0.4,"staticNoise":0.05,"rasterization":1,"screenCurvature":0.1,"windowOpacity":1,"chromaColor":0,"saturationColor":0,"rbgShift":0,"fontWidth":1.0,"useCustomCommand":false,"customCommand":""}'
builtin: true
@@ -433,7 +433,7 @@
text: "IBM Dos"
obj_string: '{"ambientLight":0.16,"backgroundColor":"#000000","bloom":0.4,"brightness":0.5,"flickering":0.07,"contrast":0.85,"fontName":"IBM_DOS","fontColor":"#ffffff","frameName":"SIMPLE_WHITE_FRAME","glowingLine":0.13,"horizontalSync":0,"jitter":0.16,"burnIn":0.3,"staticNoise":0.03,"rasterization":0,"screenCurvature":0.1,"windowOpacity":1,"chromaColor":1,"saturationColor":0,"rbgShift":0.35,"fontWidth":1.0,"useCustomCommand":false,"customCommand":""}'
builtin: true
- }
+ }*/
ListElement{
text: "IBM 3278"
obj_string: '{"ambientLight":0.1,"backgroundColor":"#000000","bloom":0.15,"brightness":0.5,"flickering":0,"contrast":0.85,"fontName":"IBM_3278","fontColor":"#0ccc68","frameName":"SIMPLE_WHITE_FRAME","glowingLine":0,"horizontalSync":0,"jitter":0,"burnIn":0.6,"staticNoise":0,"rasterization":0,"screenCurvature":0.1,"windowOpacity":1,"chromaColor":0,"saturationColor":0,"rbgShift":0,"fontWidth":1.0,"useCustomCommand":false,"customCommand":""}'
diff --git a/app/qml/FontPixels.qml b/app/qml/FontPixels.qml
index 6ff85da..6f0d0ba 100644
--- a/app/qml/FontPixels.qml
+++ b/app/qml/FontPixels.qml
@@ -32,7 +32,7 @@ QtObject{
property bool lowResolutionFont: true
property ListModel fontlist: ListModel{
- ListElement{
+ /*ListElement{
name: "COMMODORE_PET"
text: "Commodore PET (1977)"
source: "fonts/1977-commodore-pet/COMMODORE_PET.ttf"
@@ -40,7 +40,7 @@ QtObject{
pixelSize: 8
baseScaling: 4.0
fontWidth: 0.8
- }
+ }*/
ListElement{
name: "PROGGY_TINY"
text: "Proggy Tiny (Modern)"
@@ -68,7 +68,7 @@ QtObject{
baseScaling: 3.0
fontWidth: 1.0
}
- ListElement{
+ /*ListElement{
name: "APPLE_II"
text: "Apple ][ (1977)"
source: "fonts/1977-apple2/PrintChar21.ttf"
@@ -76,8 +76,8 @@ QtObject{
pixelSize: 8
baseScaling: 4.0
fontWidth: 0.9
- }
- ListElement{
+ }*/
+ /*ListElement{
name: "ATARI_400"
text: "Atari 400-800 (1979)"
source: "fonts/1979-atari-400-800/ATARI400800_original.TTF"
@@ -85,8 +85,8 @@ QtObject{
pixelSize: 8
baseScaling: 4.0
fontWidth: 0.8
- }
- ListElement{
+ }*/
+ /*ListElement{
name: "COMMODORE_64"
text: "Commodore 64 (1982)"
source: "fonts/1982-commodore64/C64_Pro_Mono_v1.0-STYLE.ttf"
@@ -94,6 +94,6 @@ QtObject{
pixelSize: 8
baseScaling: 4.0
fontWidth: 0.8
- }
+ }*/
}
}
diff --git a/app/qml/FontScanlines.qml b/app/qml/FontScanlines.qml
index eebf00b..410d7b6 100644
--- a/app/qml/FontScanlines.qml
+++ b/app/qml/FontScanlines.qml
@@ -32,7 +32,7 @@ QtObject{
property bool lowResolutionFont: true
property ListModel fontlist: ListModel{
- ListElement{
+ /*ListElement{
name: "COMMODORE_PET"
text: "Commodore PET (1977)"
source: "fonts/1977-commodore-pet/COMMODORE_PET.ttf"
@@ -40,7 +40,7 @@ QtObject{
pixelSize: 8
baseScaling: 4.0
fontWidth: 0.7
- }
+ }*/
ListElement{
name: "PROGGY_TINY"
text: "Proggy Tiny (Modern)"
@@ -68,7 +68,7 @@ QtObject{
baseScaling: 3.0
fontWidth: 1.0
}
- ListElement{
+ /*ListElement{
name: "APPLE_II"
text: "Apple ][ (1977)"
source: "fonts/1977-apple2/PrintChar21.ttf"
@@ -76,8 +76,8 @@ QtObject{
pixelSize: 8
baseScaling: 4.0
fontWidth: 0.8
- }
- ListElement{
+ }*/
+ /*ListElement{
name: "ATARI_400"
text: "Atari 400-800 (1979)"
source: "fonts/1979-atari-400-800/ATARI400800_original.TTF"
@@ -85,8 +85,8 @@ QtObject{
pixelSize: 8
baseScaling: 4.0
fontWidth: 0.7
- }
- ListElement{
+ }*/
+ /*ListElement{
name: "COMMODORE_64"
text: "Commodore 64 (1982)"
source: "fonts/1982-commodore64/C64_Pro_Mono_v1.0-STYLE.ttf"
@@ -94,6 +94,6 @@ QtObject{
pixelSize: 8
baseScaling: 4.0
fontWidth: 0.7
- }
+ }*/
}
}
diff --git a/app/qml/Fonts.qml b/app/qml/Fonts.qml
index ad20844..882808a 100644
--- a/app/qml/Fonts.qml
+++ b/app/qml/Fonts.qml
@@ -80,7 +80,7 @@
fontWidth: 1.0
lowResolutionFont: true
}
- ListElement{
+ /*ListElement{
name: "COMMODORE_PET_SCALED"
text: "Commodore PET (1977)"
source: "fonts/1977-commodore-pet/COMMODORE_PET.ttf"
@@ -89,7 +89,7 @@
baseScaling: 3.5
fontWidth: 0.7
lowResolutionFont: true
- }
+ }*/
ListElement{
name: "PROGGY_TINY_SCALED"
text: "Proggy Tiny (Modern)"
@@ -100,7 +100,7 @@
fontWidth: 0.9
lowResolutionFont: true
}
- ListElement{
+ /*ListElement{
name: "APPLE_II_SCALED"
text: "Apple ][ (1977)"
source: "fonts/1977-apple2/PrintChar21.ttf"
@@ -149,7 +149,7 @@
baseScaling: 2.0
fontWidth: 1.0
lowResolutionFont: true
- }
+ }*/
ListElement{
name: "HERMIT"
text: "HD: Hermit (Modern)"
@@ -177,7 +177,7 @@
fontWidth: 1.0
lowResolutionFont: false
}
- ListElement{
+ /*ListElement{
name: "MONACO"
text: "HD: Monaco (Modern)"
source: "fonts/modern-monaco/monaco.ttf"
@@ -185,7 +185,7 @@
pixelSize: 30
fontWidth: 1.0
lowResolutionFont: false
- }
+ }*/
ListElement{
name: "INCONSOLATA"
text: "HD: Inconsolata (Modern)"

View file

@ -7,6 +7,7 @@
;;; Copyright © 2016, 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Petter <petter@mykolab.ch>
;;;
;;; This file is part of GNU Guix.
;;;
@ -31,6 +32,7 @@ (define-module (gnu packages terminals)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
@ -49,6 +51,7 @@ (define-module (gnu packages terminals)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml)
#:use-module (gnu packages docbook)
#:use-module (gnu packages qt)
#:use-module (srfi srfi-26))
(define-public tilda
@ -433,3 +436,110 @@ (define-public libvterm
calling @code{malloc} during normal running state, allowing it to be used in
embedded kernel situations.")
(license license:expat)))
(define-public cool-retro-term
(let ((commit "e48719fa44e5307df71dbd0fad234f8a6a53f863")
(revision "1"))
(package
(name "cool-retro-term")
(version (string-append "1.0.0-" revision "." (string-take commit 7)))
(source (origin
(method git-fetch)
(file-name (string-append name "-" version "-checkout"))
(uri (git-reference
(url (string-append "https://github.com/Swordfish90/" name))
(commit commit)
(recursive? #t)))
(sha256
(base32 "1sgqbirninkvgwchr35zgn5vzqvsmrf3cp7lqady1xgrawb8lsz3"))
(patches
(search-patches "cool-retro-term-remove-non-free-fonts.patch"
"cool-retro-term-fix-array-size.patch"
"cool-retro-term-dont-check-uninit-member.patch"
"cool-retro-term-memory-leak-1.patch"))
(modules '((guix build utils)))
(snippet
'(for-each (lambda (font)
(delete-file-recursively
(string-append "app/qml/fonts/" font))
(substitute* '("app/qml/resources.qrc")
(((string-append "<file>fonts/" font ".*"))
"")))
'(;"1971-ibm-3278" ; BSD 3-clause
"1977-apple2" ; Non-Free
"1977-commodore-pet" ; Non-Free
"1979-atari-400-800" ; Non-Free
"1982-commodore64" ; Non-Free
"1985-atari-st" ; ?
"1985-ibm-pc-vga" ; Unclear
;"modern-fixedsys-excelsior" ; Redistributable
;"modern-hermit" ; SIL
;"modern-inconsolata"; SIL
;"modern-pro-font-win-tweaked" ; X11
;"modern-proggy-tiny"; X11
;"modern-terminus" ; SIL
"modern-monaco"))))) ; Apple non-free
(build-system gnu-build-system)
(inputs
`(("qtbase" ,qtbase)
("qtdeclarative" ,qtdeclarative)
("qtgraphicaleffects" ,qtgraphicaleffects)
("qtquickcontrols" ,qtquickcontrols)))
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(share (string-append out "/share")))
(substitute* '("qmltermwidget/qmltermwidget.pro")
(("INSTALL_DIR = \\$\\$\\[QT_INSTALL_QML\\]")
(string-append "INSTALL_DIR = " out "/qml")))
(substitute* '("app/app.pro")
(("target.path \\+= /usr")
(string-append "target.path += " out))
(("icon32.path = /usr/share")
(string-append "icon32.path = " share))
(("icon64.path = /usr/share")
(string-append "icon64.path = " share))
(("icon128.path = /usr/share")
(string-append "icon128.path = " share))
(("icon256.path = /usr/share")
(string-append "icon256.path = " share)))
(zero? (system* "qmake")))))
(add-before 'install 'fix-Makefiles
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")))
(substitute* '("Makefile")
(("\\$\\(INSTALL_ROOT\\)/usr") out)))))
(add-after 'install 'wrap-executable
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(qml "/qml"))
(wrap-program (string-append out "/bin/cool-retro-term")
`("QML2_IMPORT_PATH" ":" prefix
(,(string-append out qml)
,(string-append
(assoc-ref inputs "qtdeclarative") qml)
,(string-append
(assoc-ref inputs "qtgraphicaleffects") qml)
,(string-append
(assoc-ref inputs "qtquickcontrols") qml)))))))
(add-after 'install 'add-alternate-name
(lambda* (#:key outputs #:allow-other-keys)
(let* ((bin (string-append (assoc-ref outputs "out") "/bin")))
(symlink (string-append bin "/cool-retro-term")
(string-append bin "/crt"))))))))
(synopsis "Terminal emulator")
(description
"Cool-retro-term (crt) is a terminal emulator which mimics the look and
feel of the old cathode ray tube (CRT) screens. It has been designed to be
eye-candy, customizable, and reasonably lightweight.")
(home-page "https://github.com/Swordfish90/cool-retro-term")
(license (list
license:gpl2+ ; qmltermwidget
license:gpl3+ ; cool-retro-term
;; Fonts
license:silofl1.1
license:x11
license:bsd-3)))))