150 Commits

Author SHA1 Message Date
Filippo Scognamiglio
a2be08e886 Change submodule to point to older qmltermwidget release. 2018-11-25 09:06:03 +01:00
Filippo Scognamiglio
1cf6e2743b Merge pull request #432 from picospuch/master
Refine alt(meta) and ctrl behaviour for emacs on macos
2018-04-28 00:00:40 +02:00
spuch
68a5f0dd4b update submodule 2018-03-08 20:00:15 +08:00
spuch
654f8d0761 fix alt(meta), ctrl for emacs on macos 2018-03-06 17:33:30 +08:00
Filippo Scognamiglio
dd799cf5c0 Merge pull request #375 from tgerczei/master
Gentoo package version bump announced
2018-02-25 12:24:57 +01:00
Filippo Scognamiglio
b8be28619a Merge pull request #380 from leereilly/macOS-updated
macOS updates
2018-02-25 12:22:28 +01:00
Filippo Scognamiglio
ca012a1c80 Merge pull request #390 from suve/fixes-image-sizes-in-appdata-file
Make screenshot sizes in appdata XML match actual image sizes
2018-02-25 12:09:22 +01:00
Filippo Scognamiglio
50de42ec9f Merge pull request #391 from suve/improves-manpage
Improve manpage
2018-02-25 12:08:01 +01:00
Filippo Scognamiglio
38c9dd50ff Merge pull request #400 from hroncok/patch-1
cool-retro-term made it to Fedora official repos
2018-02-25 12:04:30 +01:00
Filippo Scognamiglio
27e4e3444a Merge pull request #401 from ways/master
Instrucitons for ubuntu 17.10. Fixes https://github.com/Swordfish90/c…
2018-02-25 12:03:41 +01:00
Filippo Scognamiglio
a8935da416 Merge branch 'master' into master 2018-02-25 12:03:13 +01:00
Filippo Scognamiglio
beb56c527b Merge pull request #405 from maiki/patch-1
Fix bad spacing and punctuation in readme
2018-02-25 11:55:31 +01:00
Filippo Scognamiglio
5e3caedaf6 Merge pull request #407 from mason1920/patch-1
Change apt-get to apt, and added stretch.
2018-02-25 11:54:23 +01:00
Filippo Scognamiglio
0be17716f5 Merge pull request #409 from haesbaert/master
Add a -T option that sets window title.
2018-02-25 11:53:42 +01:00
Filippo Scognamiglio
dda5fbc330 Increase baseScaling font for knight profile to improve consistency. 2018-02-25 11:50:23 +01:00
Filippo Scognamiglio
ffc16c6814 Merge branch 'larsbrinkhoff-knight' 2018-02-25 11:47:51 +01:00
Filippo Scognamiglio
705371d7ee Merge branch 'knight' of https://github.com/larsbrinkhoff/cool-retro-term into larsbrinkhoff-knight 2018-02-25 11:37:11 +01:00
Filippo Scognamiglio
7c7810836e Merge pull request #414 from avh-on1/patch-1
Add Debian Stretch build and run dependencies
2018-02-22 09:17:20 +01:00
Filippo Scognamiglio
af9c039dcb Merge pull request #419 from tomchiverton/patch-3
Ubuntu 17.10 PPA
2018-02-22 09:15:14 +01:00
Tom Chiverton
7325835c3f Ubuntu 17.10 PPA 2018-02-10 14:40:56 +00:00
Lars Brinkhoff
e7aa72a7ab Add a Knight TV profile. 2018-01-25 06:27:21 +01:00
Lars Brinkhoff
35c48de638 Add Knight TV font. As used by the MIT AI Lab. 2018-01-25 06:27:11 +01:00
Alex Von Hoene
ae50ed980f Added Debian Stretch dependencies
In addition to what Debian Jessie needs, Stretch also needs qml-module-qt-labs-settings and qml-module-qt-labs-folderlistmodel
These packages are not needed to build cool-retro-term, but they are needed to run it.
2018-01-15 16:43:55 -05:00
Alex Von Hoene
1d6f0445f7 add Debian Stretch to dependency instructions
I've confirmed that the same instructions for Jessie also work for Stretch
2018-01-15 16:31:30 -05:00
Christiano Haesbaert
799ef63b81 Add a -T option that sets window title.
`cool-retro-term -T myretrosession` sets window name to 'myretrosession'

This is useful especially for people who rely on wmctrl to change windows, now I
can do `wmctrl -a myretrocession` to focus on cool-retro-term.

-T was chosen since it matches classic xterm(1) and other terminal emulators
2018-01-06 20:20:45 +01:00
mason1920
6b22a0c03a Change apt-get to apt, and added stretch. 2018-01-02 11:45:08 -05:00
maiki
2d54638f49 Update readme
Periods, amirite?
2017-12-21 21:17:45 -08:00
Lars Falk-Petersen
8adec835f6 Instrucitons for ubuntu 17.10. Fixes https://github.com/Swordfish90/cool-retro-term/issues/396 2017-12-12 15:24:20 +01:00
Miro Hrončok
a34654a9a9 cool-retro-term made it to Fedora official repos 2017-12-12 00:37:25 +01:00
suve
b7c8108ad5 Improve manpage: add description and missing options, improve formatting 2017-11-06 21:51:16 +01:00
suve
c34c3c3654 Make screenshot sizes in appdata XML match actual image sizes 2017-11-05 00:04:45 +01:00
Lee Reilly
88988dd3e1 Add some GIFs? 2017-10-29 16:07:24 -07:00
Lee Reilly
351b98189f Updated OS X → macOS 2017-10-29 16:04:23 -07:00
Tamás Gérczei
e6a049c214 Gentoo package version bump announced 2017-10-27 21:00:53 +02:00
Filippo Scognamiglio
b9d027291e Bump version to 1.0.1. 2017-10-27 18:28:43 +02:00
Filippo Scognamiglio
eb00915c39 Merge pull request #373 from rbanffy/master
Updated 3278 font and associated files
2017-10-27 11:03:48 +02:00
Filippo Scognamiglio
828a22a939 Update submodule to include fix for High Sierra. 2017-10-27 11:02:43 +02:00
Ricardo Bánffy
875d02458e Updated 3278 font and associated files 2017-10-25 22:08:23 +01:00
Filippo Scognamiglio
a6d6ced1ad Merge pull request #340 from alexmyczko/patch-6
update copyright years
2017-10-07 11:58:45 +02:00
Filippo Scognamiglio
7e9855881b Merge pull request #354 from alexmyczko/patch-7
fix typos
2017-10-07 11:56:58 +02:00
Filippo Scognamiglio
cf4e7ca279 Merge pull request #360 from tgerczei/master
Gentoo overlay source change note
2017-10-07 11:56:09 +02:00
Filippo Scognamiglio
0a9b2b0bac Merge pull request #364 from matthiasbalke/patch-1
fixed markdown headings
2017-10-07 11:35:46 +02:00
Filippo Scognamiglio
f6b0a63410 Merge pull request #365 from scruss/master
Update README.md
2017-10-07 11:35:15 +02:00
Stewart C. Russell
7563cd4a08 Update README.md
added Ubuntu 17.04 dependencies
2017-09-09 13:31:11 -04:00
Matthias Balke
851f6d6624 fixed markdown headings 2017-09-06 09:48:01 +02:00
Tamás Gérczei
cd97acfcc1 Gentoo overlay source change note 2017-08-27 19:50:24 +02:00
Alex
613a2c5583 fix typos 2017-07-21 13:01:18 +02:00
Alex
32e95185ad update copyright years 2017-03-30 16:34:53 +02:00
Filippo Scognamiglio
e48719fa44 Merge pull request #322 from rbanffy/master
Update 3270 terminal font
2017-02-01 12:14:26 +01:00
Filippo Scognamiglio
348e5a4e19 Merge pull request #326 from barak/tweaks
Minor tweaks, either fixes or tiny additions done while updating debian packaging
2017-02-01 12:13:48 +01:00
Barak A. Pearlmutter
8d28972323 Merge remote-tracking branch 'b0n541/master' into tweaks 2017-01-25 13:16:39 +00:00
Barak A. Pearlmutter
d74bd0a39b version 1.0 2016-12-18 22:53:16 +00:00
Barak A. Pearlmutter
07307a6d8f typo 2016-12-18 22:53:16 +00:00
Barak A. Pearlmutter
151fb6e58d add --version, aka -v, command line option 2016-12-18 22:53:16 +00:00
Barak A. Pearlmutter
888ab49e44 add comment listing bugs in --help option output 2016-12-18 22:53:16 +00:00
Jan Schäfer
24dad37da7 Removed duplicated packages from Ubuntu 16.10 2016-12-06 04:44:47 +01:00
Jan Schäfer
eb6a41556d Updated install of needed packages for Ubuntu 16.10 2016-12-06 04:11:50 +01:00
Ricardo Banffy
5534cc4457 Update 3270 terminal font 2016-11-26 20:21:41 +00:00
Filippo Scognamiglio
dde90fb5b7 Merge pull request #307 from alexmyczko/patch-2
Create manpage cool-retro-term.1
2016-08-30 18:12:43 +02:00
Filippo Scognamiglio
efb2f749aa Merge pull request #306 from alexmyczko/patch-1
Create watch
2016-08-30 18:12:23 +02:00
Filippo Scognamiglio
fbee977166 Merge pull request #303 from alex-spataru/master
Remember window size automatically
2016-08-30 18:11:36 +02:00
Alex
9f012b8ac8 Create cool-retro-term.1
a manpage
2016-08-22 17:04:26 +02:00
Alex
9c3a157a84 Create watch
watch file to be used by uscan(1)
2016-08-22 17:01:55 +02:00
Alex Spataru
b7f632077c Use provided settings database 2016-08-06 13:43:04 -05:00
Alex Spataru
bfab242344 Also save window position 2016-08-06 02:04:35 -05:00
Alex Spataru
6e54a96730 Save window size 2016-08-06 01:34:11 -05:00
Filippo Scognamiglio
69d35a749f Merge pull request #282 from tgerczei/master
Updated README.md
2016-05-20 15:16:58 +02:00
Filippo Scognamiglio
4745702909 Merge pull request #284 from EaterOA/master
Add custom command support
2016-05-20 15:16:45 +02:00
Vincent Wong
e94801ee02 Fix issue with custom command not saving on exit
If the user directly closes the settings window without triggering the
custom command Textfield's onEditingFinished (via unfocus or pressing
enter), the custom command may not save. This change adds a listener to
the Textfield so that if the settings window closes, the change will
always be recorded.
2016-04-07 18:15:37 -07:00
Vincent Wong
cc57fbdcd5 Profile-bound custom commands now execute
Rather than starting ksession right away, PreprocessedTerminal now waits
for ApplicationSettings to finish loading custom command settings from
storage. If a custom command is specified, PreprocessedTerminal will
tokenize it and pass it onto ksession as a shell program similar to the
-e option. If both a -e command and a custom command is specified, the
-e version overrides the custom command.
2016-03-21 12:55:09 -07:00
Vincent Wong
674097f672 Add new custom command settings in General
These custom commands are profile-specific
2016-03-21 12:48:18 -07:00
Tamas Gerczei
472561c1b8 Switched the Gentoo overlay to a new, trustable certificate so no exception is necessary any longer 2016-03-13 21:42:13 +01:00
Filippo Scognamiglio
d345be2114 Merge pull request #280 from rbanffy/master
Update 3270 font to v1.2.11, with added glyphs
2016-03-13 15:36:22 +01:00
Filippo Scognamiglio
c505dfaa11 Remove Envy Code Font. 2016-03-13 15:33:40 +01:00
Ricardo Bánffy
1574d5ab4c Update README 2016-02-29 21:30:54 +00:00
Ricardo Bánffy
0a24f497cc Update 3270 font to v1.2.11, with added glyphs 2016-02-29 17:24:31 +00:00
Filippo Scognamiglio
9e629780ad Merge pull request #274 from barak/master
Debian Packaging Updates
2016-02-20 13:08:31 +01:00
Filippo Scognamiglio
98a842655a Merge pull request #275 from rbanffy/master
Update 3270 font - better hints, new glyphs
2016-02-20 13:08:09 +01:00
Filippo Scognamiglio
53943878c1 Merge pull request #276 from Wazutiman/patch-1
Additional dependency for fedora
2016-02-20 13:07:57 +01:00
Filippo Scognamiglio
34360c1603 Merge pull request #278 from MichaelNeas/master
OSX Port Update
2016-02-20 13:07:37 +01:00
Michael Neas
356448bb70 OSX Port Update 2016-02-18 11:47:16 -05:00
Shawn Dooley
103cd641a7 Additional dependency for fedora 2016-01-29 23:44:41 -05:00
Ricardo Bánffy
d7fb0b3021 Update 3270 font - better hints, new glyphs 2016-01-27 08:52:41 -02:00
Barak A. Pearlmutter
7bf79ec645 placate desktop-file-validate and lintian
$ lintian cool-retro-term_*.deb | egrep desktop
I: cool-retro-term: desktop-entry-lacks-keywords-entry usr/share/applications/cool-retro-term.desktop
W: cool-retro-term: desktop-mime-but-no-exec-code usr/share/applications/cool-retro-term.desktop

$ desktop-file-validate cool-retro-term.desktop
cool-retro-term.desktop: hint: value "Qt;System;Utility;TerminalEmulator;" for key "Categories" in group "Desktop Entry" contains more than one main category; application might appear more than once in the application menu
2016-01-10 14:53:58 +00:00
Barak A. Pearlmutter
dd0e904432 debian/control section x11 per policy; provides x-terminal-emulator 2015-12-18 17:16:49 +00:00
Barak A. Pearlmutter
561739ba8b debian/control packaging repo 2015-12-18 17:04:53 +00:00
Barak A. Pearlmutter
b2596c0580 debian/control homepage 2015-12-18 16:14:12 +00:00
Barak A. Pearlmutter
b1456b4fda typo: informations ↝ information 2015-12-18 16:09:54 +00:00
Barak A. Pearlmutter
923cf9b2bb git ignore debian build debris 2015-12-18 16:00:41 +00:00
Filippo Scognamiglio
273917060b Merge pull request #266 from rbanffy/master
Update 3270 font to latest version
2015-12-15 18:27:54 +01:00
Filippo Scognamiglio
7ba2046d14 Merge pull request #270 from tomchiverton/patch-2
Ubuntu versions README updated
2015-12-15 18:26:13 +01:00
Tom Chiverton
be145c12a3 Ubuntu versions updated 2015-12-09 18:46:12 +00:00
Ricardo Bánffy
759e796fdd Re-add link to original project 2015-10-18 23:15:04 -02:00
Ricardo Bánffy
9121beaf8d Update 3270 font to latest version 2015-10-18 23:13:05 -02:00
Tamas Gerczei
89472dfc54 Merge remote-tracking branch 'upstream/master' 2015-10-16 12:20:16 +02:00
Tamas Gerczei
eb739195ea Merge branch 'master' of https://github.com/tgerczei/cool-retro-term 2015-10-15 20:11:23 +02:00
Tamas Gerczei
2da0bc9535 ebuild updated 2015-10-15 20:11:14 +02:00
Filippo Scognamiglio
7255a162e9 Merge pull request #254 from tgerczei/master
Update README.md
2015-08-16 11:47:29 +02:00
tgerczei
a479506dcf Update README.md
revision bump
2015-08-14 15:45:51 +02:00
Filippo Scognamiglio
cf62e85172 Merge pull request #249 from Swordfish90/unstable
Update engine. This fixes the CTRL+Space behaviour.
2015-06-20 16:48:39 +02:00
Filippo Scognamiglio
c0ea7acd28 Merge pull request #246 from GottZ/patch-1
Update readme.md to include install instructions for arch official repository.
2015-05-19 17:18:47 +02:00
Jan-Stefan Janetzky
7923db38c8 arch has it in community/
there is a precompiled version of cool-retro-term inside the official arch linux community repository.
2015-05-18 18:03:30 +02:00
Filippo Scognamiglio
bf9937619e Update engine. This fixes the CTRL+Space behaviour. 2015-04-03 19:17:40 +02:00
Filippo Scognamiglio
e5fe99eda9 Merge pull request #230 from andresgutierrez/master
Instructions for building on MacOSX with MacPorts
2015-02-24 01:29:38 +01:00
Andres Gutierrez
eded375cf6 Instructions for building on MacOSX with MacPorts 2015-02-23 15:34:47 -05:00
Filippo Scognamiglio
1b619a7a36 Merge pull request #223 from rbanffy/master
Update 3270 font
2015-02-16 16:06:36 +01:00
Ricardo Bánffy
5d79e475d1 update 3270 font 2015-02-15 13:24:56 -02:00
Filippo Scognamiglio
cb2b9dd3a2 Merge pull request #222 from tgerczei/master
Update README.md
2015-02-15 14:50:25 +01:00
tgerczei
04f819b331 Update README.md
Updated instructions for Gentoo to install first release.
2015-02-15 14:28:16 +01:00
Filippo Scognamiglio
5807ea001a Merge branch 'unstable' which fixes default precisions on ES systems.
Conflicts:
	app/qml/PreprocessedTerminal.qml
	app/qml/ShaderTerminal.qml
	app/qml/frames/utils/TerminalFrame.qml
2015-01-29 03:17:05 +01:00
Filippo Scognamiglio
28d92dc68b Remove default precision on non ES platforms. 2015-01-28 11:14:42 +01:00
Filippo Scognamiglio
91a221529f Merge pull request #216 from Swordfish90/revert-215-master
Revert "Fix: added missing default precision directives in fragment shad...
2015-01-28 10:10:03 +00:00
Filippo Scognamiglio
844af0d93f Revert "Fix: added missing default precision directives in fragment shaders" 2015-01-28 11:09:30 +01:00
Filippo Scognamiglio
6912d74d71 Merge pull request #215 from theridane/master
Fix: added missing default precision directives in fragment shaders
2015-01-28 09:46:22 +00:00
Martin Sekera
f1a6c0fcee Fix: added missing default precision directives in fragment shaders 2015-01-27 23:48:05 +01:00
Filippo Scognamiglio
edad3ab28c Merge pull request #214 from x-a-n-a-x/patch-1
Add Bountysource information to README.md
2015-01-25 10:36:30 +00:00
x-a-n-a-x
fb7e086770 Update README.md
Add a paragraph about bounties and bountysource.
2015-01-25 11:29:25 +01:00
Filippo Scognamiglio
6446f1d1bc Merge pull request #213 from Swordfish90/unstable
Mege latest changes for final version.
2015-01-24 18:16:52 +00:00
Filippo Scognamiglio
01f391dea3 Fix: wrong default font. 2015-01-24 19:11:54 +01:00
Filippo Scognamiglio
5b635abb38 Update README.md with new screenshots and bump version to 1.0.0. 2015-01-24 18:54:08 +01:00
Filippo Scognamiglio
54c52b230a Reorganize FPS slider. 2015-01-24 18:06:37 +01:00
Filippo Scognamiglio
40eb51e5eb Improve look of glow line. 2015-01-22 01:44:30 +01:00
Filippo Scognamiglio
546c4f36f0 Fix scanlines on high-dpi screens. 2015-01-20 03:35:47 +01:00
Filippo Scognamiglio
2911960482 Fix merge conflicts. 2015-01-20 01:14:51 +01:00
Filippo Scognamiglio
265e19def8 Revert invisibility of spacing item in settings dialog. 2015-01-20 01:05:27 +01:00
Filippo Scognamiglio
2bc88768b6 Reduce minimum scaling value and fix aliasing issues with small fonts and rasterization. 2015-01-20 00:57:23 +01:00
Filippo Scognamiglio
32f7923652 Fix: use arrow cursor when terminal application uses mouse. 2015-01-19 18:20:23 +01:00
Filippo Scognamiglio
e379f05aca Merge pull request #212 from Swordfish90/fast-burnin-3
Improved burnin. This is a very important optimizatoin for mesa linux ma...
2015-01-19 17:17:21 +00:00
Filippo Scognamiglio
a7bab660e9 Improved burnin. This is a very important optimizatoin for mesa linux machines. 2015-01-19 17:31:37 +01:00
Filippo Scognamiglio
1bcb85968b Merge pull request #211 from rbanffy/master
Correct rendering issue in 3270 font.
2015-01-17 10:24:46 +00:00
Ricardo Bánffy
4adf13539a Correct rendering issue (see https://raw.githubusercontent.com/wiki/rbanffy/3270font/aepw.png) 2015-01-16 21:44:34 -02:00
Filippo Scognamiglio
8b47c5633a Merge pull request #210 from KAMiKAZOW/patch-2
rm pixmap
2015-01-14 17:08:31 +00:00
KAMiKAZOW
cb1e3f1b76 rm pixmap
because it's redundant
2015-01-14 01:17:49 +01:00
Filippo Scognamiglio
92ef89d5d2 Merge pull request #207 from KAMiKAZOW/patch-1
Install icon
2015-01-13 21:38:06 +00:00
Filippo Scognamiglio
b8fd9d6c45 Merge pull request #209 from Swordfish90/install-icons
Install icons
2015-01-13 21:37:39 +00:00
Filippo Scognamiglio
0c17ca115e Set window application icon. 2015-01-12 22:35:49 +01:00
Filippo Scognamiglio
505a840574 Install icons. 2015-01-12 21:51:27 +01:00
KAMiKAZOW
56d742c1d2 Install icon
Install CRT icon, minor other things
2015-01-12 15:46:52 +01:00
Filippo Scognamiglio
28c66fa689 Merge pull request #204 from tomchiverton/patch-1
Add link to Ubuntu 14.04 PPA to readmd
2015-01-10 17:59:32 +00:00
Tom Chiverton
ceea1339d0 Add link to Ubuntu 14.04 PPA 2015-01-10 16:54:23 +00:00
Filippo Scognamiglio
8aea50fd2b Merge branch 'unstable' of https://github.com/Swordfish90/cool-retro-term into unstable 2015-01-08 03:56:06 +01:00
Filippo Scognamiglio
166e1f40fe Misc fixes in settings dialog. 2015-01-08 03:55:19 +01:00
Filippo Scognamiglio
415dcafee3 Merge pull request #201 from Swordfish90/unstable
Unstable
2015-01-07 11:43:09 +01:00
Filippo Scognamiglio
0399a6eb3c Adjust fixedsys-excelsior baseScaling. 2015-01-07 11:23:59 +01:00
Filippo Scognamiglio
ac70da5b38 Add Fixedsys Excelsior font. 2015-01-07 11:16:09 +01:00
Filippo Scognamiglio
5ad20f6b4e Merge pull request #200 from Swordfish90/unstable
Unstable
2015-01-06 02:37:22 +01:00
Filippo Scognamiglio
283aa92579 Merge pull request #199 from Swordfish90/improve-burn-in
Burnin is now subtractive. Better looking and more predictable.
2015-01-06 02:30:18 +01:00
Filippo Scognamiglio
9364aa3536 Merge pull request #195 from Swordfish90/unstable
Added profiles import/export, reorganized settings, fixes, fixes and fixes
2014-12-26 23:43:50 +01:00
Filippo Scognamiglio
e0708e519c Merge pull request #193 from Swordfish90/unstable
Some fixes, bit of refactoring and plenty of new fonts.
2014-12-23 02:37:22 +01:00
Filippo Scognamiglio
ebbb1f82fe Merge pull request #192 from Swordfish90/unstable
Disable antialias when using rasterization. Fix windows raise behavior, OSX build issue with Qt 5.4 and OSX quit behavior.
2014-12-22 23:30:22 +01:00
42 changed files with 689 additions and 220 deletions

1
.gitmodules vendored
View File

@@ -1,3 +1,4 @@
[submodule "qmltermwidget"]
path = qmltermwidget
url = https://github.com/Swordfish90/qmltermwidget
branch = 0.1.x

110
README.md
View File

@@ -1,39 +1,59 @@
#cool-retro-term
# cool-retro-term
##Description
|> Default Amber|C:\ IBM DOS|$ Default Green|
|---|---|---|
|![Default Amber Cool Retro Term](https://user-images.githubusercontent.com/121322/32070717-16708784-ba42-11e7-8572-a8fcc10d7f7d.gif)|![IBM DOS](https://user-images.githubusercontent.com/121322/32070716-16567e5c-ba42-11e7-9e64-ba96dfe9b64d.gif)|![Default Green Cool Retro Term](https://user-images.githubusercontent.com/121322/32070715-163a1c94-ba42-11e7-80bb-41fbf10fc634.gif)|
## 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.
It uses the QML port of qtermwidget (Konsole) developed by me: https://github.com/Swordfish90/qmltermwidget
It uses the QML port of qtermwidget (Konsole) developed by me: https://github.com/Swordfish90/qmltermwidget .
This terminal emulator requires Qt 5.2 or higher to run.
This terminal emulator works under Linux and macOS and requires Qt 5.2 or higher.
##Screenshots
![Image](<http://i.imgur.com/NUfvnlu.png>)
![Image](<http://i.imgur.com/4LpfLF8.png>)
![Image](<http://i.imgur.com/MMmM6Ht.png>)
## Screenshots
![Image](<http://i.imgur.com/I6wq1cC.png>)
![Image](<http://i.imgur.com/12EqlpL.png>)
![Image](<http://i.imgur.com/Lx0acQz.jpg>)
##Get cool-retro-term
## Get cool-retro-term
You can either build cool-retro-term yourself (see below) or walk the easy way and install one of these packages:
Users of Fedora and openSUSE can grab a package from [Open Build Service](http://software.opensuse.org/package/cool-retro-term).
Fedora has the `cool-retro-term` in the offcial repositories. All you have to do is `sudo dnf install cool-retro-term`.
Users of openSUSE can grab a package from [Open Build Service](http://software.opensuse.org/package/cool-retro-term).
Arch users can install this [package](https://aur.archlinux.org/packages/cool-retro-term-git/) directly via the [AUR](https://aur.archlinux.org):
yaourt -S aur/cool-retro-term-git
Gentoo users can install from a 3rd-party repository preferably via layman:
or use:
# USE="subversion git" emerge app-portage/layman
# wget --no-check-certificate https://www.gerczei.eu/files/gerczei.xml -O /etc/layman/overlays/gerczei.xml
# layman -f -a qt -a gerczei
# ACCEPT_KEYWORDS="~*" emerge x11-terms/cool-retro-term::gerczei
pacman -S cool-retro-term
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:
USE="git" emerge app-portage/layman
wget https://www.gerczei.eu/files/gerczei.xml -O /etc/layman/overlays/gerczei.xml
layman -f -a qt -a gerczei # those who've added the repo before 27/08/17 should remove, update and add it again as its source has changed
ACCEPT_KEYWORDS="~*" emerge =x11-terms/cool-retro-term-1.0.1::gerczei
The live ebuild (version 9999-r1) tracking the bleeding-edge WIP codebase also remains available.
A word of warning: USE flags and keywords are to be added to portage's configuration files and every emerge operation should be executed with '-p' (short option for --pretend) appended to the command line first as per best practice!
##Build instructions (Linux)
Ubuntu users of 14.04 LTS (Trusty) up to 15.10 (Wily) can use [this PPA](https://launchpad.net/~bugs-launchpad-net-falkensweb).
##Dependencies
Ubuntu 17.10 can use [this PPA](https://launchpad.net/%7Evantuz/+archive/ubuntu/cool-retro-term)
macOS users can grab the latest dmg from the release page: https://github.com/Swordfish90/cool-retro-term/releases
## Build instructions (Linux)
## Dependencies
Make sure to install these first.
---
@@ -44,20 +64,44 @@ Make sure to install these first.
---
**Debian Jessie**
**Ubuntu 16.10**
sudo apt-get 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
sudo apt-get install build-essential qmlscene qt5-qmake qt5-default qtdeclarative5-dev qml-module-qtquick-controls qtdeclarative5-qtquick2-plugin libqt5qml-graphicaleffects qml-module-qtquick-dialogs qtdeclarative5-localstorage-plugin qtdeclarative5-window-plugin
---
**Ubuntu 17.04**
sudo apt install build-essential libqt5qml-graphicaleffects qml-module-qt-labs-folderlistmodel qml-module-qt-labs-settings qml-module-qtquick-controls qml-module-qtquick-dialogs qmlscene qt5-default qt5-qmake qtdeclarative5-dev qtdeclarative5-localstorage-plugin qtdeclarative5-qtquick2-plugin qtdeclarative5-window-plugin
---
**Ubuntu 17.10**
sudo apt-get install build-essential qml-module-qtgraphicaleffects qml-module-qt-labs-folderlistmodel qml-module-qt-labs-settings qml-module-qtquick-controls qml-module-qtquick-dialogs qmlscene qt5-default qt5-qmake qtdeclarative5-dev qtdeclarative5-localstorage-plugin qtdeclarative5-qtquick2-plugin qtdeclarative5-window-plugin
---
**Debian Stretch and Jessie**
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
---
**Debian Stretch**
sudo apt-get 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
---
**Fedora**
This command should install the known fedora dependencies:
sudo yum -y install qt5-qtbase qt5-qtbase-devel qt5-qtdeclarative qt5-qtdeclarative-devel qt5-qtgraphicaleffects qt5-qtquickcontrols
sudo yum -y install qt5-qtbase qt5-qtbase-devel qt5-qtdeclarative qt5-qtdeclarative-devel qt5-qtgraphicaleffects qt5-qtquickcontrols redhat-rpm-config
or:
sudo dnf -y install qt5-qtbase qt5-qtbase-devel qt5-qtdeclarative qt5-qtdeclarative-devel qt5-qtgraphicaleffects qt5-qtquickcontrols
sudo dnf -y install qt5-qtbase qt5-qtbase-devel qt5-qtdeclarative qt5-qtdeclarative-devel qt5-qtgraphicaleffects qt5-qtquickcontrols redhat-rpm-config
---
@@ -86,7 +130,7 @@ Install Qt directly from here http://qt-project.org/downloads . Once done export
export PATH=/opt/Qt5.3.1/5.3/gcc_64/bin/:$PATH
---
###Compile
### Compile
Once you installed all dependencies (Qt is installed and in your path) you need to compile and run the application:
```bash
@@ -103,11 +147,13 @@ qmake && make
./cool-retro-term
```
##Build instructions (OSX)
## Build instructions (macOS)
1. Install [Xcode](https://developer.apple.com/xcode/) and agree to the licence agreement
2. Enter the following commands into the terminal:
**Brew**
```sh
brew install qt5
git clone --recursive https://github.com/Swordfish90/cool-retro-term.git
@@ -121,5 +167,19 @@ cp -r qmltermwidget/QMLTermWidget cool-retro-term.app/Contents/PlugIns
open cool-retro-term.app
```
##Donations
I made this project in my spare time because I love what I'm doing. If you are enjoying it and you want to buy me a beer click [here](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=flscogna%40gmail%2ecom&lc=IT&item_name=Filippo%20Scognamiglio&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted) .
**MacPorts**
```sh
sudo port install qt5
git clone --recursive https://github.com/Swordfish90/cool-retro-term.git
cd cool-retro-term
/opt/local/libexec/qt5/bin/qmake && make
mkdir cool-retro-term.app/Contents/PlugIns
cp -r qmltermwidget/QMLTermWidget cool-retro-term.app/Contents/PlugIns
open cool-retro-term.app
```
## Donations
I made this project in my spare time because I love what I'm doing. If you are enjoying it and you want to buy me a beer click [here](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=flscogna%40gmail%2ecom&lc=IT&item_name=Filippo%20Scognamiglio&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted).
You can also add "bounties" on your favourite issues. More information on the [Bountysource](https://www.bountysource.com/teams/crt/issues) page.

View File

@@ -20,3 +20,17 @@ RESOURCES += qml/resources.qrc
target.path += /usr/bin/
INSTALLS += target
# Install icons
unix {
icon32.files = icons/32x32/cool-retro-term.png
icon32.path = /usr/share/icons/hicolor/32x32/apps
icon64.files = icons/64x64/cool-retro-term.png
icon64.path = /usr/share/icons/hicolor/64x64/apps
icon128.files = icons/128x128/cool-retro-term.png
icon128.path = /usr/share/icons/hicolor/128x128/apps
icon256.files = icons/256x256/cool-retro-term.png
icon256.path = /usr/share/icons/hicolor/256x256/apps
INSTALLS += icon32 icon64 icon128 icon256
}

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

View File

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -5,6 +5,7 @@
#include <QStringList>
#include <QtWidgets/QApplication>
#include <QIcon>
#include <QDebug>
#include <stdlib.h>
@@ -35,23 +36,41 @@ int main(int argc, char *argv[])
#endif
QApplication app(argc, argv);
// set application attributes
// Has no effects, see https://bugreports.qt.io/browse/QTBUG-51293
// app.setAttribute(Qt::AA_MacDontSwapCtrlAndMeta, true);
QQmlApplicationEngine engine;
FileIO fileIO;
#if !defined(Q_OS_MAC)
app.setWindowIcon(QIcon::fromTheme("cool-retro-term", QIcon(":../icons/32x32/cool-retro-term.png")));
#else
app.setWindowIcon(QIcon(":../icons/32x32/cool-retro-term.png"));
#endif
// Manage command line arguments from the cpp side
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 informations such as profiles and settings.";
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
QStringList cmdList;
if (args.contains("-e")) {
@@ -65,6 +84,8 @@ int main(int argc, char *argv[])
engine.rootContext()->setContextProperty("workdir", getNamedArgument(args, "--workdir", "$HOME"));
engine.rootContext()->setContextProperty("fileIO", &fileIO);
engine.rootContext()->setContextProperty("devicePixelRatio", app.devicePixelRatio());
// Manage import paths for Linux and OSX.
QStringList importPathList = engine.importPathList();
importPathList.prepend(QCoreApplication::applicationDirPath() + "/qmltermwidget");
@@ -72,7 +93,12 @@ int main(int argc, char *argv[])
importPathList.prepend(QCoreApplication::applicationDirPath() + "/../../../qmltermwidget");
engine.setImportPathList(importPathList);
engine.load(QUrl("qrc:/main.qml"));
engine.load(QUrl(QStringLiteral ("qrc:/main.qml")));
if (engine.rootObjects().isEmpty()) {
qDebug() << "Cannot load QML interface";
return EXIT_FAILURE;
}
// Quit the application when the engine closes.
QObject::connect((QObject*) &engine, SIGNAL(quit()), (QObject*) &app, SLOT(quit()));

View File

@@ -19,17 +19,30 @@
*******************************************************************************/
import QtQuick 2.2
import QtQuick.Controls 1.0
import "utils.js" as Utils
QtObject{
property string version: "1.0.0 RC1"
property string version: "1.0.1"
// GENERAL SETTINGS ///////////////////////////////////////////////////
// STATIC CONSTANTS ////////////////////////////////////////////////////////
readonly property real minimumFontScaling: 0.25
readonly property real maximumFontScaling: 2.50
// GENERAL SETTINGS ///////////////////////////////////////////////////////
property int x: 100
property int y: 100
property int width: 1024
property int height: 768
property bool fullscreen: false
property bool showMenubar: true
property string wintitle: "cool-retro-term"
property real windowOpacity: 1.0
property real ambientLight: 0.2
property real contrast: 0.85
@@ -45,6 +58,9 @@ QtObject{
// PROFILE SETTINGS ///////////////////////////////////////////////////////
property bool useCustomCommand: false
property string customCommand: ""
property string _backgroundColor: "#000000"
property string _fontColor: "#ff8100"
property string saturatedColor: Utils.mix(Utils.strToColor("#FFFFFF"), Utils.strToColor(_fontColor), saturationColor * 0.5)
@@ -83,11 +99,13 @@ QtObject{
property bool lowResolutionFont: false
property var fontNames: ["HERMIT", "COMMODORE_PET", "COMMODORE_PET"]
property var fontNames: ["TERMINUS_SCALED", "COMMODORE_PET", "COMMODORE_PET"]
property var fontlist: fontManager.item.fontlist
signal terminalFontChanged(string fontSource, int pixelSize, int lineSpacing, real screenScaling, real fontWidth)
signal initializedSettings()
property Loader fontManager: Loader{
states: [
State { when: rasterization == no_rasterization
@@ -113,12 +131,12 @@ QtObject{
}
function incrementScaling(){
fontScaling = Math.min(fontScaling + 0.05, 2.50);
fontScaling = Math.min(fontScaling + 0.05, maximumFontScaling);
handleFontChanged();
}
function decrementScaling(){
fontScaling = Math.max(fontScaling - 0.05, 0.50);
fontScaling = Math.max(fontScaling - 0.05, minimumFontScaling);
handleFontChanged();
}
@@ -200,6 +218,10 @@ QtObject{
function composeSettingsString(){
var settings = {
fps: fps,
x: x,
y: y,
width: width,
height: height,
windowScaling: windowScaling,
showTerminalSize: showTerminalSize,
fontScaling: fontScaling,
@@ -234,7 +256,9 @@ QtObject{
ambientLight: ambientLight,
windowOpacity: windowOpacity,
fontName: fontNames[rasterization],
fontWidth: fontWidth
fontWidth: fontWidth,
useCustomCommand: useCustomCommand,
customCommand: customCommand
}
return settings;
}
@@ -278,6 +302,11 @@ QtObject{
fps = settings.fps !== undefined ? settings.fps: fps
windowScaling = settings.windowScaling !== undefined ? settings.windowScaling : windowScaling
x = settings.x !== undefined ? settings.x : x
y = settings.y !== undefined ? settings.y : y
width = settings.width !== undefined ? settings.width : width
height = settings.height !== undefined ? settings.height : height
fontNames = settings.fontNames !== undefined ? settings.fontNames : fontNames
fontScaling = settings.fontScaling !== undefined ? settings.fontScaling : fontScaling
@@ -322,6 +351,9 @@ QtObject{
fontNames[rasterization] = settings.fontName !== undefined ? settings.fontName : fontNames[rasterization];
fontWidth = settings.fontWidth !== undefined ? settings.fontWidth : fontWidth;
useCustomCommand = settings.useCustomCommand !== undefined ? settings.useCustomCommand : useCustomCommand
customCommand = settings.customCommand !== undefined ? settings.customCommand : customCommand
handleFontChanged();
}
@@ -371,47 +403,52 @@ QtObject{
property ListModel profilesList: ListModel{
ListElement{
text: "Default Amber"
obj_string: '{"ambientLight":0.16,"backgroundColor":"#000000","bloom":0.65,"brightness":0.5,"flickering":0.1,"contrast":0.85,"fontName":"TERMINUS_SCALED","fontColor":"#ff8100","frameName":"SIMPLE_WHITE_FRAME","glowingLine":0.2,"horizontalSync":0.16,"jitter":0.18,"burnIn":0.4,"staticNoise":0.1,"rasterization":0,"screenCurvature":0.1,"windowOpacity":1,"chromaColor":0,"saturationColor":0,"rbgShift":0,"fontWidth":1.0}'
obj_string: '{"ambientLight":0.16,"backgroundColor":"#000000","bloom":0.65,"brightness":0.5,"flickering":0.1,"contrast":0.85,"fontName":"TERMINUS_SCALED","fontColor":"#ff8100","frameName":"SIMPLE_WHITE_FRAME","glowingLine":0.2,"horizontalSync":0.16,"jitter":0.18,"burnIn":0.4,"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{
text: "Default Green"
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}'
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{
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}'
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
}
ListElement{
text: "Default Pixelated"
obj_string: '{"ambientLight":0.16,"backgroundColor":"#000000","bloom":0,"brightness":0.5,"flickering":0.2,"contrast":0.85,"fontName":"COMMODORE_PET","fontColor":"#ffffff","frameName":"ROUGH_BLACK_FRAME","glowingLine":0.2,"horizontalSync":0.2,"jitter":0,"burnIn":0.45,"staticNoise":0.19,"rasterization":2,"screenCurvature":0.05,"windowOpacity":1,"chromaColor":0,"saturationColor":0,"rbgShift":0,"fontWidth":1.0}'
obj_string: '{"ambientLight":0.16,"backgroundColor":"#000000","bloom":0,"brightness":0.5,"flickering":0.2,"contrast":0.85,"fontName":"COMMODORE_PET","fontColor":"#ffffff","frameName":"ROUGH_BLACK_FRAME","glowingLine":0.2,"horizontalSync":0.2,"jitter":0,"burnIn":0.45,"staticNoise":0.19,"rasterization":2,"screenCurvature":0.05,"windowOpacity":1,"chromaColor":0,"saturationColor":0,"rbgShift":0,"fontWidth":1.0,"useCustomCommand":false,"customCommand":""}'
builtin: true
}
ListElement{
text: "Apple ]["
obj_string: '{"ambientLight":0.16,"backgroundColor":"#000000","bloom":0.5,"brightness":0.5,"flickering":0.2,"contrast":0.85,"fontName":"APPLE_II","fontColor":"#2fff91","frameName":"SIMPLE_WHITE_FRAME","glowingLine":0.22,"horizontalSync":0.16,"jitter":0.1,"burnIn":0.65,"staticNoise":0.08,"rasterization":1,"screenCurvature":0.18,"windowOpacity":1,"chromaColor":0,"saturationColor":0,"rbgShift":0,"fontWidth":1.0}'
obj_string: '{"ambientLight":0.16,"backgroundColor":"#000000","bloom":0.5,"brightness":0.5,"flickering":0.2,"contrast":0.85,"fontName":"APPLE_II","fontColor":"#2fff91","frameName":"SIMPLE_WHITE_FRAME","glowingLine":0.22,"horizontalSync":0.16,"jitter":0.1,"burnIn":0.65,"staticNoise":0.08,"rasterization":1,"screenCurvature":0.18,"windowOpacity":1,"chromaColor":0,"saturationColor":0,"rbgShift":0,"fontWidth":1.0,"useCustomCommand":false,"customCommand":""}'
builtin: true
}
ListElement{
text: "Vintage"
obj_string: '{"ambientLight":0.5,"backgroundColor":"#000000","bloom":0.4,"brightness":0.5,"flickering":0.9,"contrast":0.80,"fontName":"COMMODORE_PET","fontColor":"#00ff3e","frameName":"ROUGH_BLACK_FRAME","glowingLine":0.3,"horizontalSync":0.42,"jitter":0.4,"burnIn":0.75,"staticNoise":0.2,"rasterization":1,"screenCurvature":0.1,"windowOpacity":1,"chromaColor":0,"saturationColor":0,"rbgShift":0,"fontWidth":1.0}'
obj_string: '{"ambientLight":0.5,"backgroundColor":"#000000","bloom":0.4,"brightness":0.5,"flickering":0.9,"contrast":0.80,"fontName":"COMMODORE_PET","fontColor":"#00ff3e","frameName":"ROUGH_BLACK_FRAME","glowingLine":0.3,"horizontalSync":0.42,"jitter":0.4,"burnIn":0.75,"staticNoise":0.2,"rasterization":1,"screenCurvature":0.1,"windowOpacity":1,"chromaColor":0,"saturationColor":0,"rbgShift":0,"fontWidth":1.0,"useCustomCommand":false,"customCommand":""}'
builtin: true
}
ListElement{
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}'
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}'
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":""}'
builtin: true
}
ListElement{
text: "Knight TV"
obj_string: '{"ambientLight":0.16,"backgroundColor":"#000000","bloom":0.45,"brightness":0.5,"burnIn":0.3,"chromaColor":0,"contrast":0.85,"customCommand":"","flickering":0.1,"fontColor":"#0ccc68","fontName":"Knight_TV","fontWidth":1,"frameName":"SIMPLE_WHITE_FRAME","glowingLine":0,"horizontalSync":0.16,"jitter":0,"rasterization":0,"rbgShift":0,"saturationColor":0,"screenCurvature":0.07,"staticNoise":0,"useCustomCommand":false,"windowOpacity":1}'
builtin: true
}
ListElement{
text: "Transparent Green"
obj_string: '{"ambientLight":0.2,"backgroundColor":"#000000","bloom":0.45,"brightness":0.5,"flickering":0.20,"contrast":0.85,"fontName":"TERMINUS_SCALED","fontColor":"#0ccc68","frameName":"NO_FRAME","glowingLine":0.16,"horizontalSync":0.1,"jitter":0.20,"burnIn":0.25,"staticNoise":0.20,"rasterization":0,"screenCurvature":0.05,"windowOpacity":0.60,"chromaColor":0,"saturationColor":0,"rbgShift":0,"fontWidth":1.0}'
obj_string: '{"ambientLight":0.2,"backgroundColor":"#000000","bloom":0.45,"brightness":0.5,"flickering":0.20,"contrast":0.85,"fontName":"TERMINUS_SCALED","fontColor":"#0ccc68","frameName":"NO_FRAME","glowingLine":0.16,"horizontalSync":0.1,"jitter":0.20,"burnIn":0.25,"staticNoise":0.20,"rasterization":0,"screenCurvature":0.05,"windowOpacity":0.60,"chromaColor":0,"saturationColor":0,"rbgShift":0,"fontWidth":1.0,"useCustomCommand":false,"customCommand":""}'
builtin: true
}
}
@@ -449,10 +486,23 @@ QtObject{
fullscreen = true;
showMenubar = false;
}
if (args.indexOf("-T") !== -1) {
wintitle = args[args.indexOf("-T") + 1]
}
initializedSettings();
}
Component.onDestruction: {
storeSettings();
storeCustomProfiles();
//storage.dropSettings(); //DROPS THE SETTINGS!.. REMEMBER TO DISABLE ONCE ENABLED!!
}
// VARS ///////////////////////////////////////////////////////////////////
property Label _sampleLabel: Label {
text: "100%"
}
property real labelWidth: _sampleLabel.width
}

View File

@@ -22,6 +22,8 @@ import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
import "Components"
RowLayout {
property alias name: check.text
@@ -35,7 +37,6 @@ RowLayout {
id: setting_component
anchors.left: parent.left
anchors.right: parent.right
spacing: 25
onValueChanged: {
check.checked = !(value == 0);
@@ -45,7 +46,7 @@ RowLayout {
CheckBox{
id: check
implicitWidth: 150
implicitWidth: 160
onClicked: {
if(!checked){
checked = false;
@@ -66,16 +67,8 @@ RowLayout {
newValue(value);
}
}
Text{
id: textfield
property string unformattedText: Math.round(((value - min_value) / (max_value - min_value)) * 100)
text: formatNumber(unformattedText)
}
function formatNumber(num) {
var n = "" + num;
while (n.length < 3) {
n = " " + n;
}
return n + "%";
SizedLabel {
anchors { top: parent.top; bottom: parent.bottom }
text: Math.round(((value - min_value) / (max_value - min_value)) * 100) + "%"
}
}

View File

@@ -0,0 +1,35 @@
/*******************************************************************************
* 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.0
import QtQuick.Controls 1.0
// This component is simply a label with a predefined size.
// Used to improve alignment.
Item {
property alias text: textfield.text
width: appSettings.labelWidth
Label{
id: textfield
anchors { right: parent.right; verticalCenter: parent.verticalCenter }
}
}

View File

@@ -70,6 +70,16 @@ QtObject{
fontWidth: 1.0
lowResolutionFont: true
}
ListElement{
name: "EXCELSIOR_SCALED"
text: "Fixedsys Excelsior (Modern)"
source: "fonts/modern-fixedsys-excelsior/FSEX301-L2.ttf"
lineSpacing: 0
pixelSize: 16
baseScaling: 2.4
fontWidth: 1.0
lowResolutionFont: true
}
ListElement{
name: "COMMODORE_PET_SCALED"
text: "Commodore PET (1977)"
@@ -167,15 +177,6 @@ QtObject{
fontWidth: 1.0
lowResolutionFont: false
}
ListElement{
name: "ENVY_CODE_R"
text: "HD: Envy Code R (Modern)"
source: "fonts/modern-envy-code-r/Envy Code R.ttf"
lineSpacing: 0.1
pixelSize: 30
fontWidth: 1.0
lowResolutionFont: false
}
ListElement{
name: "MONACO"
text: "HD: Monaco (Modern)"
@@ -203,5 +204,15 @@ QtObject{
fontWidth: 1.0
lowResolutionFont: false
}
ListElement{
name: "Knight_TV"
text: "Knight TV (1975)"
source: "fonts/1975-knight-tv/KnightTVMedium.ttf"
lineSpacing: 0.2
pixelSize: 10
fontWidth: 1.0
baseScaling: 3.0
lowResolutionFont: true
}
}
}

View File

@@ -44,11 +44,13 @@ Item{
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: Math.sqrt(appSettings.burnIn)
property real motionBlurCoefficient: Utils.lint(_minBlurCoefficient, _maxBlurCoefficient, mBlur)
property real _minBlurCoefficient: 0.2
property real _maxBlurCoefficient: 0.02
//Parameters for the burnIn effect.
property real burnIn: appSettings.burnIn
property real fps: appSettings.fps !== 0 ? appSettings.fps : 60
property real burnInFadeTime: Utils.lint(_minBurnInFadeTime, _maxBurnInFadeTime, burnIn)
property real motionBlurCoefficient: 1.0 / (fps * burnInFadeTime)
property real _minBurnInFadeTime: 0.16
property real _maxBurnInFadeTime: 1.6
property size terminalSize: kterminal.terminalSize
property size fontMetrics: kterminal.fontMetrics
@@ -127,13 +129,17 @@ Item{
kterminal.lineSpacing = lineSpacing;
}
Component.onCompleted: {
appSettings.terminalFontChanged.connect(handleFontChange);
function startSession() {
appSettings.initializedSettings.disconnect(startSession);
// Retrieve the variable set in main.cpp if arguments are passed.
if (defaultCmd) {
ksession.setShellProgram(defaultCmd);
ksession.setArgs(defaultCmdArgs);
} else if (appSettings.useCustomCommand) {
var args = Utils.tokenizeCommandLine(appSettings.customCommand);
ksession.setShellProgram(args[0]);
ksession.setArgs(args.slice(1));
} else if (!defaultCmd && Qt.platform.os === "osx") {
// OSX Requires the following default parameters for auto login.
ksession.setArgs(["-i", "-l"]);
@@ -145,6 +151,10 @@ Item{
ksession.startShellProgram();
forceActiveFocus();
}
Component.onCompleted: {
appSettings.terminalFontChanged.connect(handleFontChange);
appSettings.initializedSettings.connect(startSession);
}
}
Component {
id: linuxContextMenu
@@ -176,7 +186,7 @@ Item{
MouseArea{
acceptedButtons: Qt.LeftButton | Qt.MiddleButton | Qt.RightButton
anchors.fill: parent
cursorShape: Qt.IBeamCursor
cursorShape: kterminal.terminalUsesMouse ? Qt.ArrowCursor : Qt.IBeamCursor
onWheel:{
if(wheel.modifiers & Qt.ControlModifier){
wheel.angleDelta.y > 0 ? zoomIn.trigger() : zoomOut.trigger();
@@ -228,13 +238,15 @@ Item{
Loader{
id: blurredSourceLoader
asynchronous: true
active: mBlur !== 0
active: burnIn !== 0
sourceComponent: ShaderEffectSource{
property bool updateBurnIn: false
id: _blurredSourceEffect
sourceItem: blurredTerminalLoader.item
recursive: true
live: true
live: false
hideSource: true
wrapMode: kterminalSource.wrapMode
@@ -244,6 +256,13 @@ Item{
livetimer.restart();
}
// This updates the burnin synched with the timer.
Connections {
target: updateBurnIn ? mainShader : null
ignoreUnknownSignals: false
onTimeChanged: _blurredSourceEffect.scheduleUpdate();
}
Timer{
id: livetimer
@@ -251,14 +270,15 @@ Item{
// 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: (1 / motionBlurCoefficient) * 60 * 1.1
interval: burnInFadeTime * 1000 * 1.1
running: true
onTriggered: _blurredSourceEffect.live = false;
onTriggered: _blurredSourceEffect.updateBurnIn = false;
}
Connections{
target: kterminal
onImagePainted:{
_blurredSourceEffect.live = true;
_blurredSourceEffect.scheduleUpdate();
_blurredSourceEffect.updateBurnIn = true;
livetimer.restart();
}
}
@@ -289,7 +309,7 @@ Item{
? kterminal.height * Math.max(1, burnInScaling)
: kterminal.height * scaleTexture * appSettings.burnInQuality
active: mBlur !== 0
active: burnIn !== 0
asynchronous: true
sourceComponent: ShaderEffect {
@@ -300,6 +320,10 @@ Item{
blending: false
fragmentShader:
"#ifdef GL_ES
precision mediump float;
#endif\n" +
"uniform lowp float qt_Opacity;" +
"uniform lowp sampler2D txt_source;" +

View File

@@ -159,6 +159,40 @@ Tab{
}
}
}
GroupBox{
anchors {left: parent.left; right: parent.right}
title: qsTr("Command")
ColumnLayout {
anchors.fill: parent
CheckBox{
id: useCustomCommand
text: qsTr("Use custom command instead of shell at startup")
checked: appSettings.useCustomCommand
onCheckedChanged: appSettings.useCustomCommand = checked
}
// Workaround for QTBUG-31627 for pre 5.3.0
Binding{
target: useCustomCommand
property: "checked"
value: appSettings.useCustomCommand
}
TextField{
id: customCommand
anchors {left: parent.left; right: parent.right}
text: appSettings.customCommand
enabled: useCustomCommand.checked
onEditingFinished: appSettings.customCommand = text
// Save text even if user forgets to press enter or unfocus
function saveSetting() {
appSettings.customCommand = text;
}
Component.onCompleted: settings_window.closing.connect(saveSetting)
}
}
}
// DIALOGS ////////////////////////////////////////////////////////////////
InsertNameDialog{
id: insertname

View File

@@ -22,6 +22,8 @@ import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
import "Components"
Tab{
ColumnLayout{
anchors.fill: parent
@@ -34,23 +36,26 @@ Tab{
anchors.fill: parent
rows: 2
columns: 3
CheckBox{
property int fps: checked ? slider.value : 0
onFpsChanged: appSettings.fps = fps
checked: appSettings.fps !== 0
text: qsTr("Effects FPS")
}
Label{text: qsTr("Effects FPS")}
Slider{
id: slider
Layout.fillWidth: true
id: fpsSlider
onValueChanged: {
if (enabled) {
appSettings.fps = value !== 60 ? value + 1 : 0;
}
}
stepSize: 1
maximumValue: 60
minimumValue: 1
enabled: appSettings.fps !== 0
value: appSettings.fps !== 0 ? appSettings.fps : 60
enabled: false
Component.onCompleted: {
minimumValue = 0;
maximumValue = 60;
value = appSettings.fps !== 0 ? appSettings.fps - 1 : 60;
enabled = true;
}
}
Text{text: slider.value}
Text{text: qsTr("Texture Quality")}
SizedLabel{text: appSettings.fps !== 0 ? appSettings.fps : qsTr("Max")}
Label{text: qsTr("Texture Quality")}
Slider{
Layout.fillWidth: true
id: txtslider
@@ -63,7 +68,7 @@ Tab{
enabled = true;
}
}
Text{text: Math.round(txtslider.value * 100) + "%"}
SizedLabel{text: Math.round(txtslider.value * 100) + "%"}
}
}
GroupBox{
@@ -74,8 +79,7 @@ Tab{
GridLayout{
id: bloomQualityContainer
anchors.fill: parent
Text{text: qsTr("Bloom Quality")}
Label{text: qsTr("Bloom Quality")}
Slider{
Layout.fillWidth: true
id: bloomSlider
@@ -88,7 +92,7 @@ Tab{
enabled = true;
}
}
Text{text: Math.round(bloomSlider.value * 100) + "%"}
SizedLabel{text: Math.round(bloomSlider.value * 100) + "%"}
}
}
GroupBox{
@@ -100,7 +104,7 @@ Tab{
id: blurQualityContainer
anchors.fill: parent
Text{text: qsTr("BurnIn Quality")}
Label{text: qsTr("BurnIn Quality")}
Slider{
Layout.fillWidth: true
id: burnInSlider
@@ -113,7 +117,7 @@ Tab{
enabled = true;
}
}
Text{text: Math.round(burnInSlider.value * 100) + "%"}
SizedLabel{text: Math.round(burnInSlider.value * 100) + "%"}
}
}
GroupBox{

View File

@@ -46,17 +46,17 @@ Tab{
GridLayout{
anchors.fill: parent
columns: 2
Text{ text: qsTr("Brightness") }
Label{ text: qsTr("Brightness") }
SimpleSlider{
onValueChanged: appSettings.brightness = value
value: appSettings.brightness
}
Text{ text: qsTr("Contrast") }
Label{ text: qsTr("Contrast") }
SimpleSlider{
onValueChanged: appSettings.contrast = value
value: appSettings.contrast
}
Text{ text: qsTr("Opacity") }
Label{ text: qsTr("Opacity") }
SimpleSlider{
onValueChanged: appSettings.windowOpacity = value
value: appSettings.windowOpacity

View File

@@ -22,6 +22,8 @@ import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
import "Components"
Tab{
ColumnLayout{
anchors.fill: parent
@@ -32,7 +34,7 @@ Tab{
GridLayout{
anchors.fill: parent
columns: 2
Text{ text: qsTr("Name") }
Label{ text: qsTr("Name") }
ComboBox{
id: fontChanger
Layout.fillWidth: true
@@ -54,7 +56,7 @@ Tab{
}
Component.onCompleted: updateIndex();
}
Text{ text: qsTr("Scaling") }
Label{ text: qsTr("Scaling") }
RowLayout{
Layout.fillWidth: true
Slider{
@@ -64,8 +66,8 @@ Tab{
stepSize: 0.05
enabled: false // Another trick to fix initial bad behavior.
Component.onCompleted: {
minimumValue = 0.5;
maximumValue = 2.5;
minimumValue = appSettings.minimumFontScaling;
maximumValue = appSettings.maximumFontScaling;
value = appSettings.fontScaling;
enabled = true;
}
@@ -74,11 +76,11 @@ Tab{
onFontScalingChanged: fontScalingChanger.value = appSettings.fontScaling;
}
}
Text{
SizedLabel{
text: Math.round(fontScalingChanger.value * 100) + "%"
}
}
Text{ text: qsTr("Font Width") }
Label{ text: qsTr("Font Width") }
RowLayout{
Layout.fillWidth: true
Slider{
@@ -93,7 +95,7 @@ Tab{
maximumValue = 1.5;
}
}
Text{
SizedLabel{
text: Math.round(widthChanger.value * 100) + "%"
}
}

View File

@@ -21,13 +21,13 @@
import QtQuick 2.2
import QtGraphicalEffects 1.0
import "utils.js" as Utils
ShaderEffect {
property ShaderEffectSource source
property ShaderEffectSource blurredSource
property ShaderEffectSource bloomSource
property real liveBlur: blurredSource && blurredSource.live ? 1.0 : 0.0
property color fontColor: appSettings.fontColor
property color backgroundColor: appSettings.backgroundColor
property real bloom: appSettings.bloom * 2.5
@@ -40,7 +40,7 @@ ShaderEffect {
(height) / (noiseTexture.height * appSettings.windowScaling * appSettings.fontScaling))
property real screenCurvature: appSettings.screenCurvature
property real glowingLine: appSettings.glowingLine
property real glowingLine: appSettings.glowingLine * 0.2
property real chromaColor: appSettings.chromaColor;
@@ -58,6 +58,12 @@ ShaderEffect {
property real screen_brightness: appSettings.brightness * 1.5 + 0.5
// This is the average value of the abs(sin) function. Needed to avoid aliasing.
readonly property real absSinAvg: 0.63661828335466886
property size rasterizationSmooth: Qt.size(
Utils.clamp(2.0 * virtual_resolution.width / (width * devicePixelRatio), 0.0, 1.0),
Utils.clamp(2.0 * virtual_resolution.height / (height * devicePixelRatio), 0.0, 1.0))
property real dispX
property real dispY
property size virtual_resolution
@@ -145,6 +151,10 @@ ShaderEffect {
}"
fragmentShader: "
#ifdef GL_ES
precision mediump float;
#endif
uniform sampler2D source;
uniform highp float qt_Opacity;
uniform highp float time;
@@ -155,6 +165,7 @@ ShaderEffect {
uniform lowp float screen_brightness;
uniform highp vec2 virtual_resolution;
uniform highp vec2 rasterizationSmooth;
uniform highp float dispX;
uniform highp float dispY;" +
@@ -162,8 +173,7 @@ ShaderEffect {
uniform highp sampler2D bloomSource;
uniform lowp float bloom;" : "") +
(burnIn !== 0 ? "
uniform sampler2D blurredSource;
uniform lowp float liveBlur;" : "") +
uniform sampler2D blurredSource;" : "") +
(staticNoise !== 0 ? "
uniform highp float staticNoise;" : "") +
(((staticNoise !== 0 || jitter !== 0 || rbgShift)
@@ -194,16 +204,18 @@ ShaderEffect {
(glowingLine !== 0 ? "
float randomPass(vec2 coords){
return fract(smoothstep(-0.2, 0.0, coords.y - 3.0 * fract(time * 0.0001))) * glowingLine;
return fract(smoothstep(-120.0, 0.0, coords.y - (virtual_resolution.y + 120.0) * fract(time * 0.00015)));
}" : "") +
"highp float getScanlineIntensity(vec2 coords) {
highp float result = 1.0;" +
(appSettings.rasterization != appSettings.no_rasterization ?
"result *= abs(sin(coords.y * virtual_resolution.y * "+Math.PI+"));" : "") +
"float val = abs(sin(coords.y * virtual_resolution.y * "+Math.PI+"));
result *= mix(val, " + absSinAvg + ", rasterizationSmooth.y);" : "") +
(appSettings.rasterization == appSettings.pixel_rasterization ?
"result *= abs(sin(coords.x * virtual_resolution.x * "+Math.PI+"));" : "") + "
"val = abs(sin(coords.x * virtual_resolution.x * "+Math.PI+"));
result *= mix(val, " + absSinAvg + ", rasterizationSmooth.x);" : "") + "
return result;
}
@@ -264,12 +276,12 @@ ShaderEffect {
color += noiseVal * noise * (1.0 - distance * 1.3);" : "") +
(glowingLine !== 0 ? "
color += randomPass(coords) * glowingLine;" : "") +
color += randomPass(coords * virtual_resolution) * glowingLine;" : "") +
"vec3 txt_color = texture2D(source, txt_coords).rgb;" +
(burnIn !== 0 ? "
vec4 txt_blur = liveBlur * texture2D(blurredSource, txt_coords);
vec4 txt_blur = texture2D(blurredSource, txt_coords);
txt_color = txt_color + txt_blur.rgb * txt_blur.a;"
: "") +

View File

@@ -22,6 +22,8 @@ import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
import "Components"
RowLayout {
property alias value: slider.value
property alias stepSize: slider.stepSize
@@ -36,15 +38,7 @@ RowLayout {
stepSize: parent.stepSize
Layout.fillWidth: true
}
Text{
id: textfield
text: formatNumber(Math.round(value * maxMultiplier))
}
function formatNumber(num) {
var n = "" + num;
while (n.length < 3) {
n = " " + n;
}
return n + "%";
SizedLabel{
text: Math.round(value * maxMultiplier) + "%"
}
}

View File

@@ -1,13 +1,49 @@
Copyright (c) 2011-2012, Ricardo Banffy.
Copyright (c) 2011-2017, Ricardo Banffy.
Copyright (c) 1993-2011, Paul Mattes.
Copyright (c) 2004-2005, Don Russell.
Copyright (c) 2004, Dick Altenbern.
Copyright (c) 1990, Jeff Sparkes.
Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta, GA 30332.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the names of Ricardo Banffy, Paul Mattes, Don Russell, Dick Altenbern, Jeff Sparkes, GTRC nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY PAUL MATTES, DON RUSSELL, DICK ALTENBERN, JEFF SPARKES AND GTRC "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, DON RUSSELL, DICK ALTENBERN, JEFF SPARKES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of Ricardo Banffy, Paul Mattes, Don Russell,
Dick Altenbern, Jeff Sparkes, GTRC nor the names of their contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL RICARDO BANFFY, PAUL MATTES, DON RUSSELL, DICK ALTENBERN, JEFF
SPARKES OR GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The Debian Logo glyph is based on the Debian Open Use Logo and is
Copyright (c) 1999 Software in the Public Interest, Inc., and it is
incorporated here under the terms of the Creative Commons
Attribution-ShareAlike 3.0 Unported License. The logo is released
under the terms of the GNU Lesser General Public License, version 3 or
any later version, or, at your option, of the Creative Commons
Attribution-ShareAlike 3.0 Unported License.
Ubuntu, the Ubuntu logo and the Circle of Friends symbol are
registered trademarks of Canonical Ltd.
The Fontforge SFD font description file is optionally licensed under
the SIL Open Font License v1.1 with no Reserved Font Name. This
license is available with a FAQ at http://scripts.sil.org/OFL.

View File

@@ -1,73 +1,101 @@
3270font: A font for the nostalgic
==================================
https://github.com/rbanffy/3270font
![Screenshot](https://raw.github.com/wiki/rbanffy/3270font/emacs.png)
![Travis-CI](https://api.travis-ci.org/rbanffy/3270font.svg)
![Screenshot](https://raw.githubusercontent.com/wiki/rbanffy/3270font/emacs.png)
![Sample](https://raw.githubusercontent.com/wiki/rbanffy/3270font/3270Medium_sample.png)
A little bit of history
-----------------------
This font is derived from the x3270 font, which, in turn, was translated
from the one in Georgia Tech's 3270tool, which was itself hand-copied
from a 3270 terminal. I built it because I felt terminals deserve to be
pretty. The .sfd font file contains a x3270 bitmap font that was used
for guidance.
This font is derived from the x3270 font, which, in turn, was
translated from the one in Georgia Tech's 3270tool, which was itself
hand-copied from a 3270 series terminal. I built it because I felt
terminals deserve to be pretty. The .sfd font file contains a x3270
bitmap font that was used for guidance.
![Using with the Cathode terminal program]
(https://raw.github.com/wiki/rbanffy/3270font/cathode.png)
![Using with the cool-old-tern (now cool-retro-term) terminal program](
https://raw.githubusercontent.com/wiki/rbanffy/3270font/cool-retro-term.png)
Getting it
----------
If you are running Debian or Ubuntu and you don't want to mess with
building your font files, you can simply `apt-get install fonts-3270`
(It's available from the Debian
(https://packages.debian.org/sid/fonts/fonts-3270) and Ubuntu
(http://packages.ubuntu.com/zesty/fonts-3270) package repos at
https://packages.debian.org/sid/fonts/fonts-3270 and
http://packages.ubuntu.com/xenial/fonts/fonts-3270, although the
packaged version may not be the latest version, but it's good enough for
most purposes. For those who don't have the luxury of a proper
system-managed package, Adobe Type 1, TTF, OTF and WOFF versions are
available for download on
http://s3.amazonaws.com/3270font/3270_fonts_d250fd9.zip (although this
URL may not always reflect the latest version).
![ASCII is so 60's](
https://raw.githubusercontent.com/wiki/rbanffy/3270font/cyrillic.png)
The format
----------
This font was built with FontForge. You'll need it if you want to
generate fonts for your platform. On most civilized operating systems,
you can simply `apt-get install fontforge`, `yum install fontforge` or
even `port install fontforge`. On others, you may need to grab your copy
from http://fontforge.org/. I encourage you to drop by and read the
tutorials.
The "source" file is edited using FontForge. You'll need it if you want
to generate fonts for your platform. On most civilized operating
systems, you can simply `apt-get install fontforge`, `yum install
fontforge` or even `port install fontforge`. On others, you may need to
grab your copy from http://fontforge.org/. I encourage you to drop by
and read the tutorials.
![Powerline-shell compatible!]
(https://raw.github.com/wiki/rbanffy/3270font/powerline.png)
![Powerline-shell compatible!](
https://raw.githubusercontent.com/wiki/rbanffy/3270font/powerline.png)
Adobe Type 1, TTF, OTF and WOFF versions are available for download on
http://s3.amazonaws.com/rbanffy/3270_fonts.zip for those who would just
like to use them.
![Using it on OSX (don't forget to turn antialiasing on)](https://raw.githubusercontent.com/wiki/rbanffy/3270font/osx_terminal.png)
![Using it on OSX]
(https://raw.github.com/wiki/rbanffy/3270font/osx_terminal.png)
If you are running Windows, you'll probably need something like
Cygwin, but, in the end, the font works correctly (with some very
minor hinting issues).
Generating derived files
------------------------
![Works on Windows](
https://raw.githubusercontent.com/wiki/rbanffy/3270font/windows_7.png)
Generating usable font files
----------------------------
The easiest way to generate the font files your computer can use is to
run `make all` (if you are running Ubuntu or Debian, `make install` will
install them too). Using `make help` will offer a handy list of options.
The script `generate_derived.pe` calls FontForge and generates
PostScript, OTF, TTF and WOFF versions of the base font, as well as a
slightly more condensed .sfd file with the base font narrowed to 488
units, with no glyph rescaling and its corresponding PostScript, TTF,
OTF and WOFF versions.
PostScript, OTF, TTF and WOFF versions of the base font, as well as a
slightly more condensed .sfd file with the base font narrowed to 488
units, with no glyph rescaling (or cropping - we need to fix that) and
its corresponding PostScript, TTF, OTF and WOFF versions.
![For your favorite editor](
https://raw.githubusercontent.com/wiki/rbanffy/3270font/symbols.png)
Contributing
------------
I don't think GitHub's pull-request mechanism is FontForge-friendly. If
you want to contribute (there are a lot of missing glyphs, such as the
APL set and most non-latin alphabets which most likely were never built
into 3270 terminals), get in touch and we will figure out how to do it
right.
Preserving history
------------------
I regard the history of electronic computing a very important part of
our civilization's history. Consider donating to entities that help
preserve it, such as the Computer History Museum
(http://www.computerhistory.org/), the IT History Society
(http://ithistory.org/) and many others around the world. If you have a
historically significant piece of technology in your closet or garage,
consider contacting a local technology or industrial-design-oriented
museum for advice.
I fear GitHub's pull-request mechanism may not be very
FontForge-friendly. If you want to contribute (there are a lot of
missing glyphs, such as the APL set and most non-latin alphabets which
most likely were never built into 3270 terminals), the best workflow
would be to make add the encoding slots (if needed), add/make the
changes, reencode it in "Unicode, Full", compact it and validate
it. Check if the `git diff` command gives out something sensible (does
not change things you didn't intend to) and make a pull request. If, in
doubt, get in touch and we will figure out how to do it right.
Known problems
--------------
I have received errors when installing the OTF, TTF, and PFM fonts on
Windows 7 and 8 (didn't try others).
Not all symbols in the 3270 charset have Unicode counterparts. When
possible, they are duplicated in the Unicode space. The 3270-only
symbols are at the end of the font, along with some glyphs useful for
building others.
Please refer to http://x3270.bgp.nu/Charset.html for a complete map.

Binary file not shown.

View File

@@ -1,16 +0,0 @@
Envy Code R (coding font) preview #7.2
======================================
Envy Code R is a fully-scalable monospaced font designed for programming and command prompts.
There are three variants including in the archive - Regular, Bold and Italic. A large number of additional symbols outside the ASCII range and provided which covers most of the Windows/ISO 1252 codepage, MacOS Roman and a number of other Central European pages.
This archive also contains a folder named 'Visual Studio Italics-as-bold' which contains the Regular and Italic fonts again with an alternate name of 'Envy Code R VS' and with the Italic variant set to identify itself as bold. This allows you to utilise italics within Visual Studio's syntax highlighter by choosing bold everywhere you want italics - great for comments or strings!
If you wish to use Envy Code R as a font for your Windows Command Prompt run the included .reg registry file and reboot, then choose Properties from the Command Prompt to set it.
Please send feedback to damien@envytech.co.uk and be sure to visit http://damieng.com/fonts/envy-code-r for updates and more information.
[)amien
Damien Guard, May 2008.
Copyright <20> 2006-2008 Envy Technologies Ltd. Free to use but redistribution prohibited.

Binary file not shown.

View File

@@ -120,6 +120,10 @@ Item{
blending: true
fragmentShader: "
#ifdef GL_ES
precision mediump float;
#endif
uniform highp sampler2D normals;
uniform highp sampler2D source;
uniform lowp float screenCurvature;
@@ -181,6 +185,10 @@ Item{
blending: true
fragmentShader: "
#ifdef GL_ES
precision mediump float;
#endif
uniform sampler2D lightMask;
uniform sampler2D reflectionSource;
uniform lowp float diffuseComponent;

View File

@@ -28,10 +28,29 @@ ApplicationWindow{
width: 1024
height: 768
// Save window properties automatically
onXChanged: appSettings.x = x
onYChanged: appSettings.y = y
onWidthChanged: appSettings.width = width
onHeightChanged: appSettings.height = height
// Load saved window geometry and show the window
Component.onCompleted: {
appSettings.handleFontChanged();
x = appSettings.x
y = appSettings.y
width = appSettings.width
height = appSettings.height
visible = true
}
minimumWidth: 320
minimumHeight: 240
visible: true
visible: false
property bool fullscreen: appSettings.fullscreen
onFullscreenChanged: visibility = (fullscreen ? Window.FullScreen : Window.Windowed)
@@ -43,8 +62,10 @@ ApplicationWindow{
__contentItem.visible: mainMenu.visible
}
property string wintitle: appSettings.wintitle
color: "#00000000"
title: terminalContainer.title || qsTr("cool-retro-term")
title: terminalContainer.title || qsTr(appSettings.wintitle)
Action {
id: showMenubarAction
@@ -82,12 +103,12 @@ ApplicationWindow{
Action{
id: copyAction
text: qsTr("Copy")
shortcut: Qt.platform.os === "osx" ? StandardKey.Copy : "Ctrl+Shift+C"
shortcut: "Ctrl+Shift+C"
}
Action{
id: pasteAction
text: qsTr("Paste")
shortcut: Qt.platform.os === "osx" ? StandardKey.Paste : "Ctrl+Shift+V"
shortcut: "Ctrl+Shift+V"
}
Action{
id: zoomIn
@@ -140,7 +161,6 @@ ApplicationWindow{
terminalSize: terminalContainer.terminalSize
}
}
Component.onCompleted: appSettings.handleFontChanged();
onClosing: {
// OSX Since we are currently supporting only one window
// quit the application when it is closed.

View File

@@ -31,6 +31,7 @@
<file>fonts/1982-commodore64/C64_Pro_Mono_v1.0-STYLE.ttf</file>
<file>fonts/1977-apple2/PrintChar21.ttf</file>
<file>fonts/1971-ibm-3278/3270Medium.ttf</file>
<file>fonts/1975-knight-tv/KnightTVMedium.ttf</file>
<file>fonts/1985-atari-st/AtariST8x16SystemFont.ttf</file>
<file>fonts/modern-terminus/TerminusTTF-4.38.2.ttf</file>
<file>fonts/1977-commodore-pet/COMMODORE_PET.ttf</file>
@@ -47,8 +48,10 @@
<file>fonts/modern-pro-font-win-tweaked/ProFontWindows.ttf</file>
<file>fonts/modern-monaco/monaco.ttf</file>
<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>
<file>fonts/modern-fixedsys-excelsior/FSEX301-L2.ttf</file>
<file>../icons/32x32/cool-retro-term.png</file>
<file>Components/SizedLabel.qml</file>
</qresource>
</RCC>

View File

@@ -1,5 +1,11 @@
.pragma library
function clamp(x, min, max) {
if (x <= min)
return min;
if (x >= max)
return max;
return x;
}
function lint(a, b, t) {
return (1 - t) * a + (t) * b;
}
@@ -15,3 +21,74 @@ function strToColor(s){
var b = parseInt(s.substring(5,7), 16) / 256;
return Qt.rgba(r, g, b, 1.0);
}
/* Tokenizes a command into program and arguments, taking into account quoted
* strings and backslashes.
* Based on GLib's tokenizer, used by Gnome Terminal
*/
function tokenizeCommandLine(s){
var args = [];
var currentToken = "";
var quoteChar = "";
var escaped = false;
var nextToken = function() {
args.push(currentToken);
currentToken = "";
}
var appendToCurrentToken = function(c) {
currentToken += c;
}
for (var i = 0; i < s.length; i++) {
// char followed by backslash, append literally
if (escaped) {
escaped = false;
appendToCurrentToken(s[i]);
// char inside quotes, either close or append
} else if (quoteChar) {
escaped = s[i] === '\\';
if (quoteChar === s[i]) {
quoteChar = "";
nextToken();
} else if (!escaped) {
appendToCurrentToken(s[i]);
}
// regular char
} else {
escaped = s[i] === '\\';
switch (s[i]) {
case '\\':
// begin escape
break;
case '\n':
// newlines always delimits
nextToken();
break;
case ' ':
case '\t':
// delimit on new whitespace
if (currentToken) {
nextToken();
}
break;
case '\'':
case '"':
// begin quoted section
quoteChar = s[i];
break;
default:
appendToCurrentToken(s[i]);
}
}
}
// ignore last token if broken quotes/backslash
if (currentToken && !escaped && !quoteChar) {
nextToken();
}
return args;
}

View File

@@ -2,10 +2,10 @@
Comment=Use the command line the old way
Exec=cool-retro-term
GenericName=Terminal emulator
Icon=utilities-terminal
MimeType=
Icon=cool-retro-term
Name=Cool Retro Term
Categories=Qt;System;Utility;TerminalEmulator;
Categories=System;TerminalEmulator;
StartupNotify=true
Terminal=false
Type=Application
Keywords=shell;prompt;command;commandline;

View File

@@ -16,11 +16,11 @@
<screenshots>
<screenshot type="default">
<caption>Default amber look</caption>
<image width="768" height="595">https://camo.githubusercontent.com/2443e662e95733ba6ae331f391f6ec036d1ee7fd/687474703a2f2f692e696d6775722e636f6d2f4e5566766e6c752e706e67</image>
<image width="1022" height="791">https://camo.githubusercontent.com/2443e662e95733ba6ae331f391f6ec036d1ee7fd/687474703a2f2f692e696d6775722e636f6d2f4e5566766e6c752e706e67</image>
</screenshot>
<screenshot>
<caption>Apple II look</caption>
<image width="768" height="595">https://camo.githubusercontent.com/44a19842d532555c7b02bf6b4b4684add9edf18c/687474703a2f2f692e696d6775722e636f6d2f4d4d6d4d3648742e706e67</image>
<image width="1024" height="796">https://camo.githubusercontent.com/44a19842d532555c7b02bf6b4b4684add9edf18c/687474703a2f2f692e696d6775722e636f6d2f4d4d6d4d3648742e706e67</image>
</screenshot>
</screenshots>

4
packaging/debian/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
/*.debhelper.log
/*.substvars
/cool-retro-term/
/files

View File

@@ -1,9 +1,12 @@
Source: cool-retro-term
Maintainer: Jeka Der <jekader@gmail.com>
Section: misc
Section: x11
Priority: optional
Standards-Version: 3.9.6
Build-Depends: debhelper (>= 9),qmlscene,
Homepage: https://github.com/Swordfish90/cool-retro-term
Vcs-Git: git://github.com/barak/cool-retro-term.git
Vcs-Browser: https://github.com/barak/cool-retro-term
Build-Depends: debhelper (>= 9), qmlscene,
qt5-qmake, qtdeclarative5-dev, qml-module-qtquick-controls,
qml-module-qtgraphicaleffects, qml-module-qtquick-dialogs,
qml-module-qtquick-localstorage, qml-module-qtquick-window2
@@ -11,7 +14,10 @@ Build-Depends: debhelper (>= 9),qmlscene,
Package: cool-retro-term
Architecture: any
Replaces: cool-old-term
Depends: qml-module-qtquick-controls, qml-module-qtgraphicaleffects, qml-module-qtquick-dialogs, qml-module-qtquick-localstorage, qml-module-qtquick-window2, ${shlibs:Depends}, ${misc:Depends}
Provides: x-terminal-emulator
Depends: qml-module-qtquick-controls, qml-module-qtgraphicaleffects,
qml-module-qtquick-dialogs, qml-module-qtquick-localstorage,
qml-module-qtquick-window2, ${shlibs:Depends}, ${misc:Depends}
Description: terminal emulator which mimics old screens
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,

View File

@@ -0,0 +1,43 @@
.TH "COOL-RETRO-TERM" 1 "2017-11-06"
.SH NAME
cool\-retro\-term \- terminal emulator mimicking an old cathode display
.SH SYNOPSIS
\fBcool\-retro\-term\fR [\fIOPTIONS\fR]
.br
\fBcool\-retro\-term\fR [\fIOPTIONS\fR] -e \fICOMMAND\fR [\fIARGUMENT\fR...]
.SH DESCRIPTION
This manual page documents briefly the \fBcool\-retro\-term\fR command.
.PP
\fBcool\-retro\-term\fR 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.
.SH OPTIONS
.TP
\fB\-\-default\-settings\fR
Run with the default settings.
.TP
\fB\-e\fR \fICOMMAND\fR
Command to execute. This should be used as the last option.
All the arguments following \fICOMMAND\fR will be passed to said command.
.TP
\fB\-\-fullscreen\fR
Run in fullscreen mode.
.TP
\fB\-h\fR, \fB\-\-help\fR
Print a help screen and exit.
.TP
\fB\-p\fR \fIPROFILE\fR, \fB\-\-profile\fR \fIPROFILE\fR
Run with the given profile.
.TP
\fB\-\-workdir\fR \fIDIR\fR
Start with \fIDIR\fR as the working directory.
.TP
\fB\-\-verbose\fR
Print additional information such as profiles and settings.
.TP
\fB\-v\fR, \fB\-\-version\fR
Print the version number and exit.
.SH LICENCE
This program is available under the terms of the GNU General Public License,
version 3 or any later version, as published by the Free Software Foundation.

View File

@@ -4,10 +4,8 @@ Upstream-Contact: Filippo Scognamiglio <flscogna@gmail.com>
Source: https://github.com/Swordfish90/cool-retro-term
Files: *
Copyright: 2014 Filippo Scognamiglio
Copyright: 2013-2017 Filippo Scognamiglio
License: GPL-3
On Debian systems, the full text of the GNU General Public
License version 3 can be found in the file
`/usr/share/common-licenses/GPL-3'.

4
packaging/debian/watch Normal file
View File

@@ -0,0 +1,4 @@
version=4
opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%<project>-$1.tar.gz%" \
https://github.com/Swordfish90/cool-retro-term/tags \
(?:.*?/)?v?(\d[\d.]*)\.tar\.gz debian uupdate

View File

@@ -18,10 +18,10 @@
Name: cool-retro-term
Summary: Cool Retro Terminal
Version: 0.9
Version: 1.0
Release: 0%{?dist}
Group: System/X11/Terminals
License: GPLv3
License: GPL-3.0+
URL: https://github.com/Swordfish90/cool-retro-term
# For this spec file to work, the cool-retro-term sources must be located
@@ -82,9 +82,7 @@ desktop-file-install \
%{_bindir}/%{name}
%{_libdir}/qt5/qml/
%{_datadir}/applications/%{name}.desktop
# FIXME: Icon
# %{_datadir}/pixmaps/%{name}.png
# %{_datadir}/icons/hicolor/*/*/*
%{_datadir}/icons/hicolor/*/*/*
%clean
rm -rf %{buildroot}