commit 4545978a968054d6350690ea7c6016026fe14d9f2aa64b97e9e01421f8ded722 Author: Oliver Kurz Date: Tue Jan 28 12:05:30 2020 +0000 Accepting request 768008 from devel:openQA https://progress.opensuse.org/issues/62627 OBS-URL: https://build.opensuse.org/request/show/768008 OBS-URL: https://build.opensuse.org/package/show/devel:openQA:tested/xterm-console?expand=0&rev=1 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/psf2bdf.pl b/psf2bdf.pl new file mode 100644 index 0000000..e838bef --- /dev/null +++ b/psf2bdf.pl @@ -0,0 +1,119 @@ +#!/usr/bin/env perl +# Convert PC Screen Font (PSF) font to Glyph Bitmap Distribution Format (BDF). +# Copyright (c) 2015 Kacper Gutowski +# Copyright (c) 2015 Susanne Oberhauser-Hirschoff +# The MIT License applies (http://opensource.org/licenses/MIT) + +# https://gist.github.com/mwgamera/6ad86e71e002e5aef1b8/01ffe8208b2763dd353ea7afacedf83072477372 +# with minor fixes + +use strict; + +use constant { + PSF1_MODE512 => 0x01, + PSF1_MODEHASTAB => 0x02, + PSF2_HAS_UNICODE_TABLE => 0x01, +}; + +push @ARGV, '-' unless scalar @ARGV; + +for (@ARGV) { + my $fn = /^-$/ ? 'stdin' : $_; + eval { + + my ($length, $width, $height); + my (@glyphs, @unicode); + + open my $fh, $_ or die $!; + binmode $fh; + read $fh, $_, 4 or die $!; + + if (0x0436 == unpack 'v') { # psf1 + my ($mode, $size) = unpack 'x2CC'; + $length = $mode & PSF1_MODE512 ? 512 : 256; + $height = $size; + $width = 8; + read $fh, $_, $length * $size; + @glyphs = unpack "(a$size)$length"; + if ($mode & PSF1_MODEHASTAB) { + for my $i (0 .. $length - 1) { + my ($u, @u) = 0; + do { + read $fh, $_, 2; + $u = unpack 'v'; + push @u, $u if $u < 0xFFFE; + } while $u < 0xFFFE; + while ($u != 0xFFFF) { + read $fh, $_, 2; + $u = unpack 'v'; + warn 'Unicode sequence ignored' if $u == 0xFFFE; + } + $unicode[$i] = [@u]; + } + } + } + elsif (0x864ab572 == unpack 'V') { # psf2 + read $fh, $_, 28 or die $!; + (my ($ver, $hlen, $flg), $length, my $size, $height, $width) = unpack 'V7'; + die "Unknown version $ver\n" unless $ver == 0; + warn "Unexpected glyph size $size bytes for ${width}×$height px\n" + unless $size == $height * int(($width + 7) / 8); + read $fh, $_, $hlen - 32; # skip to data + read $fh, $_, $length * $size; + @glyphs = unpack "(a$size)$length"; + if ($flg & PSF2_HAS_UNICODE_TABLE) { + my $buf = do { local $/; <$fh>; }; + for my $i (0 .. $length - 1) { + $buf =~ m/\G([^\xfe\xff]*+)(?:\xfe[^\xfe\xff]++)*\xff/sg; + utf8::decode(my $str = $1); + $unicode[$i] = [map ord, split //, $str]; + } + } + } + else { + die "Bad format\n"; + } + + + print "STARTFONT 2.1\n"; + printf "FONT %s\n", '-psf-'; + printf "SIZE %u 72 72\n", $height; + printf "FONTBOUNDINGBOX %u %u 0 0\n", $width, $height; + + printf "STARTPROPERTIES %u\n", 6 + 2 * !!@unicode; + printf "PIXEL_SIZE %u\n", $height; + printf "POINT_SIZE %u\n", 10 * $height; + printf "FONT_ASCENT %u\n", $height; + print "FONT_DESCENT 0\n"; + print "RESOLUTION_X 72\n"; + print "RESOLUTION_Y 72\n"; + if (@unicode) { + print "CHARSET_REGISTRY \"ISO10646\"\n"; + print "CHARSET_ENCODING \"1\"\n"; + } + print "ENDPROPERTIES\n"; + + printf "CHARS %u\n", $length; + + for my $i (0 .. $length - 1) { + printf "STARTCHAR psf%03x\n", $i; + if (@unicode && @{$unicode[$i]}) { + printf "ENCODING %u\n", $unicode[$i][0]; + } + else { + printf "ENCODING -1 %u\n", $i; + } + printf "SWIDTH %u 0\n", $width * 1000 / $height; + printf "DWIDTH %u 0\n", $width; + printf "BBX %u %u 0 0\n", $width, $height; + my $bw = (($width + 7) & ~7) >> 3; + printf "BITMAP\n%s\n", join "\n", map unpack('H*', $_), unpack "(a$bw)*", $glyphs[$i]; + printf "ENDCHAR\n"; + } + + print "ENDFONT\n"; + + }; + warn "$fn: $@" if $@; + last; +} diff --git a/xterm-console b/xterm-console new file mode 100644 index 0000000..f9a5f20 --- /dev/null +++ b/xterm-console @@ -0,0 +1,74 @@ +#!/usr/bin/python3 +# Copyright (C) 2015 Susanne Oberhauser-Hirschoff +# The MIT License applies (http://opensource.org/licenses/MIT) + +"""start an xterm that looks like a linux console + + + # do this once, to let the xserver know about the fonts + xset fp+ $(pwd) + + # for each font you want to try... + gunzip -c /usr/share/kbd/consolefonts/lat9w-16.psfu.gz | perl psf2bdf.pl > lat9w-16.bdf + + sed -i -e s,-psf-,lat9w_16, lat9w-16.bdf + + # update the fonts.dir file + mkfontdir + # notify X about the new font + xset fp rehash + + # have a look :) + # start an xterm with the right colors and all, script is attached [3] + python3 xterm_linux_vt.py + +""" + +# from pprint import pprint as pp +default_kernel_vt_colors = {} +RGB = ("red", "grn", "blu") +for cname in RGB: + with open("/sys/module/vt/parameters/default_{}".format(cname)) as f: + colors = f.read().rstrip().split(',') + default_kernel_vt_colors[cname] = map(int, colors) + +xterm_colors= list() + +for r, g, b in zip(*(default_kernel_vt_colors[c] for c in RGB)): + xterm_colors.append("rgb:{r:02x}/{g:02x}/{b:02x}".format(**locals())) + +def xtc(label, color): + return ("-xrm", "xterm*{label}: {color}".format(**locals())) + +def xrm_color_options(): + yield(xtc("foreground", xterm_colors[7])) + yield(xtc("background", xterm_colors[0])) + for i, c in enumerate(xterm_colors): + yield(xtc("color{}".format(i), c)) + +from itertools import chain + +import os + +xx = [ + "xterm", + # console font + "-fn", "lat9w-16", + "-fullscreen", + # no scrollbar + "+sb", + # no border + "-b", "0", + # blinking underline cursor + "-bc", "-uc", "-bcf", "200", "-bcn", "200", + # intense colors for bold + "+bdc", + # intense for bold... + "-xrm", "xterm*boldMode: false", +] + +import sys # for argv +sys.argv.pop(0) # strip command name +xx.extend(chain(*xrm_color_options())) +xx.extend(sys.argv) +os.execvp("xterm", xx) diff --git a/xterm-console.changes b/xterm-console.changes new file mode 100644 index 0000000..ff97e16 --- /dev/null +++ b/xterm-console.changes @@ -0,0 +1,19 @@ +------------------------------------------------------------------- +Mon Jun 25 13:21:00 UTC 2018 - slindomansilla@suse.com + +- Use supplemments to os-autoinst + + When using svirt backend (s390x, XEN), xterm-console is needed. + It is expected the use of this backend only on special cases, + so this package is not added as required. But it may help to + mark it as supplement os os-autoinst. + +------------------------------------------------------------------- +Wed Apr 29 08:55:11 UTC 2015 - coolo@suse.com + +- remove nonexistant +itc option + +------------------------------------------------------------------- +* Mon Apr 27 2015 - froh@suse.de + +- initial version diff --git a/xterm-console.spec b/xterm-console.spec new file mode 100644 index 0000000..bbed5ae --- /dev/null +++ b/xterm-console.spec @@ -0,0 +1,92 @@ +# +# spec file for package xterm +# +# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# + + +%define vttest_version 20120506 +%define splitbin 0%{?suse_version} >= 1300 +Name: xterm-console +Version: 1.0 +Release: 0 +Summary: A Linux vt console look-alike xterm wrapper +License: MIT +Group: System/X11/Utilities +Url: https://build.opensuse.org/package/show/home:froh/xterm-console +Source: xterm-console +Source1: psf2bdf.pl + +# svirt, eg. s390x, xen +Supplements: os-autoinst + +#BuildRequires: perl +# the original consolefonts: +BuildRequires: kbd +BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildRequires: fontpackages-devel +BuildRequires: bdftopcf +Requires: fonts-config +%{reconfigure_fonts_prereq} + +%description +This package contains the basic X.Org terminal program. + +%prep + +%setup -c -T +cp %SOURCE1 . +%build +# suse 10.x uses older X11 directory structure +%if 0%{?suse_version} < 1100 +%define xappdefs %{_prefix}/X11R6/lib/X11/app-defaults +%define xfontsd %{_prefix}/X11R6/lib/X11/fonts +%else +%define xappdefs %{_datadir}/X11/app-defaults +%define xfontsd %{_datadir}/fonts +%endif + + +if ! which bdftopcf &> /dev/null; then exit 1; fi + +chmod +x ./psf2bdf.pl +for font in /usr/share/kbd/consolefonts/*.psfu.gz +do + fontname="${font##*/}" + fontname="${fontname%.psfu.gz}" + gunzip -c $font | ./psf2bdf.pl | sed -e "s,FONT \+-psf-,FONT ${fontname}," > "$fontname".bdf +done + +for i in *.bdf +do + bdftopcf "$i" | gzip -9 >"${i%.bdf}.pcf.gz" +done + +%install + +mkdir -p %{buildroot}%{_prefix}/bin +install -m 755 %SOURCE0 %{buildroot}%{_prefix}/bin + +mkdir -p %{buildroot}%{xfontsd}/misc/ +install -m 644 *.pcf.gz %{buildroot}%{xfontsd}/misc/ + +%{reconfigure_fonts_scriptlets} + +%files +%defattr(-,root,root) +%{_bindir}/xterm-console +%dir %{xfontsd}/misc +%{xfontsd}/misc/*.pcf.gz + +%changelog