Vertical gaps resulting from nested inline block elements inside DIV containers – I

In the course of a series of articles about Responsive Web Design I made use of some elements in a horizontal menu line in the form of “inline block elements”. See:
Responsive fluid multi-column layouts – main menu control with JS/jQuery and font-size adaption – V
and other articles quoted there.

One reason for using inline elements was/is that the centering of inline blocks without a defined width inside a DIV block container is easy. One may need this e.g. in templates for a CMS where you do not know the number and the text of menu points in advance.

When my wife recently started building a new website for a customer she used part of my prescriptions and came back with an annoying finding:

If you embed and nest inline block elements inside standard block DIV containers and define

  • both the container and its inline block elements to have some (min-) heights
  • and define in addition for each of the (nested) inline elements a line-height

then FF (better the Gecko engine) will create some vertical pixels distance – a gap – between the bottom of the DIV-container and its enclosed inline block element(s) and/or between the lower borders of nested inline block elements. This happens when

  • the heights of all nested elements (blocks, inline blocks) are not defined exactly
  • AND no innermost real inline element (as a text) with a precisely defined height can be found.

The vertical gaps are an interesting though counter-intuitive consequence of the application of CSS2/3 rules. You may by accident stumble across similar effects when working with nested inline blocks. So, I thought it may be interesting to write a bit about it – and discuss some precautions and remedies in case you need to deal with unexpected vertical element gaps.

Why use undefined DIV container and undefined (inline) block heights?

Why would we use nested block or inline-block elements without a precise height definitions? Well, in some contexts and especially when we design responsive layouts for mobiles we may need vertical flexibility. One example is the creation of flexible menus in templates for CM-systems: To make them generally applicable one cannot make assumptions on the specific size/length of the menu point texts. We do not know whether line wrapping will occur and how much the container of a menu element will have to extend its vertical height.

In such a case min-height style definitions are required instead of precise “height”-definitions. Additional “line-height” definitions may be required

  • to vertically center text in standard cases with the text fitting into a one line geometry
  • and/or to control the vertical space requirement when line wrapping occurs.

Vertical height control is simple when you work with standard block elements – it is the standard box model that defines everything. However, some surprising things may occur when we deal with (nested) inline blocks with defined line-heights.

A simple example for nested inline blocks with unexpected vertical gaps

Just to get an example for the occurence of vertical gaps associated with inline block elements let us have a look at the following simple HTML code:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Test</title>
<style type="text/css">
	

	html {
		font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
		font-size: 10px;
	}
	
	div {
		position:relative;
		margin:0;
		padding:0;
	}
	
	div.header {
		float:left; 
		width: 30.0rem; 
		min-height: 3.2rem; 
		background-color: #DDDDDD;
	}
	
	div.hornav {
		width: auto; 
		min-height: 3.0rem;
		line-height:0;
		line-height: 3.0rem;
		border: #F00 0.1rem solid;
		background-color: black; 
		text-align: center; 
		
	}
	
	div.hornav_txt {
		display:inline-block; 
		width: 20.0rem;  
		min-height:2.8rem;
		line-height:0;
		line-height: 2.8rem;
		border: solid 0.1rem #FF0; 
		background-color: #FFF;
		text-align:center; 
		
	}
	
	div.mp_cont {
		display:inline-block; 
		width:10.0rem; 
		min-height:2.6rem;
		line-height:0;
		line-height:2.6rem; 
		border:solid 0.1rem #090;
		background-color:#F00; 
		
	}
	
	div.bg{
		position: absolute; 
		width:10.0rem; 
		min-height:2.6rem;
		line-height:0;
		line-height:2.6rem; 
		top:0;
		bottom:0;
		left:0;
		right:0;
		border:0;
		background-color:#FF0;
		opacity: 0.5;
		z-index:1;  
	}
	
	div.fg {
		position: relative; 
		width:10.0rem; 
		min-height:2.6rem;
		line-height:0;
		line-height:2.6rem; 
		border:0;
		z-index:2;
	}
	
</style>
</head>

<body>
   <div class="header">
       <div class="hornav">
           <div class="hornav_txt">
               <div class="mp_cont">
                   <div class="bg"></div>
                   <div class="fg"></div>
                </div>
           </div>
       </div>
    </div> 
</body>
</html>

 
When we open a HTML file with the above contents in a present Firefox version (41.x) for Linux or e.g. the browser built into Eclipse we get the following picture (the KDE lineal on the right side was added for pixel measurement).

inline_blck2

We see that our horizontal centering works perfectly – however, regarding the heights we get a weird vertical gap of a size around 8 to 10 pixels. This seems to be wrong – at least compared with (naive) expectations based on the CSS definitions given above: all min-heights plus border dimensions were chosen with values such that all nested elements should vertically fit into each other seamlessly.

What exactly did we do in our example?

We defined an outer container DIV “div.header” which works like a kind of header section. Inside we placed a new standard block container “div.hornav”. Let us look at it as a frame for an expandable menu. Then we placed and horizontally centered an inline block element “div.hornav_txt” inside our “div.hornav”. This inline block element shall work as the container of a menu point. A menu point itself “div.mp_cont” then contains 2 absolutely positioned layers over each other. This allows for the opacity control of the background-color and a menu text with no opacity (opacity:1.0). All containers have only defined min-heights – but as long as the menu text uses only one line all elements should fit perfectly into each other (including borders).

So why does the obvious visible vertical distance occur at all?

A plausible reason for the vertical gaps

Our intuition for a seamless vertical fitting is based on 2 assumptions, namely

  • that an inline-block would behave more or less like a standard block element,
  • and that a surrounding block would adjust to an encapsulated inline block as if the latter were a block element.

Both assumptions are wrong. To understand a bit better what happens let us first look at how the height of a block DIV container responds to its contents if no precise height value is defined:

The browser will analyze the required height of the block contents and adjust the block height according to the box model with paddings and margins (if defined). In case the encapsulated contents is an inline element – as e.g. a text – then its space requirements is analyzed – e.g. the font-size plus required space above and below to account for all types of letters of this font – e.g. “&Uuml”; or “j”. If you artificially reduce the line-height of the contents and the encapsulating box vertical below the height required for a full display of the font letters vertical overlaps of the several text lines may occur and the box size will shrink to defined limits related to the font size according to CSS rules.

E.g.:

	<div style="clear:left; width: 20.0rem; margin-top:150px; line-height:0.0rem; background-color: yellow;">
		<span style="font-size:8.8rem; line-height:0.0rem; ">ÜJ<br>jÜ</span>
	</div>

 
leads to:
nested_inline_blocks_2

In contrast

	<div style="clear:left; width: 20.0rem; margin-top:150px; line-height:0.0rem; background-color: yellow;">
		<span style="font-size:8.8rem; line-height:0.0rem; ">ÜJ<br>jÜ</span>
	</div>

 
leads to:
nested_inline_blocks_3

So far, so good. In any case: What happens exactly depends on the (inline) contents, its height and the line-height calculated or defined for the display of the contents.

Now back to our example:

As there is no container element with a defined height the browser engine has to analyze successively nested inner elements to determine defined or calculable height scales. But in our case we never get to such a finite height scale for the relatively positioned elements inside the innermost inline block container.

The only precisely defined height scale in our example is eventually given by a letter “x” – however, the height of this letter only affects layers absolutely positioned at z-indices above their containers. It has no impact on the sizing of the container “div.mp_cont”.

So what can the browser engine actually cling to and rely on when following the successively embedded and relatively positioned elements? The last height scales given is the min-height and the line-height of the innermost inline (!) block element div#mp_cont. But from the perspective of the surrounding encapsulating containers “div.hornav_txt” and “div.hornav” this actually has the same effect as if a big letter had been placed inside them.

By using a small trick we can actually see that our FF browser engine (Gecko; but KHTML/Webkit does it as well) adjusts the baseline for letters according to this pseudo-“letter”-dimension (i.e. according to the height of the inline box “div.mp_cont”)
and reserves vertical space in between the two successive inline-block elements.

<body>
        <div class="header">
            <div class="hornav">
                <div class="hornav_txt" style="line-height:0;">
                	<div class="mp_cont">
                		<div class="bg"></div>
                		<div class="fg">x</div>
                	</div>
             	</div>
			</div>
        </div> 
        <div class="header" style="margin-left:50px;">
            <div class="hornav">
                <div class="hornav_txt">
                	<div class="mp_cont">
                		<div class="bg"></div>
                		<div class="fg"></div>
                	</div><span style="font-size:2.8rem; ">XÜj</span>jjgg
             	</div><span style="color:yellow;">jg</span>
			</div>
        </div>
</body>

 
results in :

nested_inline_blocks_4

So, indeed: If we add some normal letters we see that the baseline for letters inside “div.hornav_txt” is the bottom of the included “div.mp_cont”. But letters require additional vertical space below their baseline!

So, the browser recognizes the existence of some inline (!) contents with a defined (min-) height inside the first inline-block “div.hornav_txt” and adjusts everything else according to some complicated height calculations. See http://www.w3.org/TR/CSS21/visudet.html#propdef-line-height.

I have to admit that I do not really understand all details and their consequences of the W3C height calculation rules. But the overall effect of nesting an inline block with a min-height inside another inline block without any further defined (inner) height scale resembles pretty much a situation in which a letter with the same font-height value were placed inside the enclosing outer inline block (here inside “div.hornav_txt”).

Conclusion: In the absence of any further inline element with precisely defined height the min-height of the innermost identifiable inline element determines the full layout and the resulting height calculations

  • for any surrounding (inline) block elements with flexible height
  • and then the innermost relatively positioned standard block container enclosing the nested inline blocks

just as a letter with the same font-size would do. And a letter needs more vertical space then its font-size! The nested inline blocks transfer the resulting excess height requirement to the enclosing standard block element and therefore automatically lead to a vertical gap! (I suspect that the size of the gap depends on the rendering engine of the browser, but it did not investigate this point, yet).

Note: This may also happen inside horizontal lists where inline blocks are used instead of floated elements.

In the next article

Vertical gaps resulting from nested inline block elements inside DIV containers – II – getting control

we shall play around with our example and show what happens if
we change the innermost contents and/or some CSS settings. Our objective then is to get control over the vertical gaps introduced by the rendering engine.

Linux – Dell U2515H – questions regarding KDE adjustments and older graphics cards

Some months ago I wrote 2 blog articles about the use of (multiple) DELL U2515H screens on a Nvidia GTX750 TI graphics card on a Linux system.

Linux – Nvidia GTX 750 TI – Parallelbetrieb von 2 Dell U2515H mit 2560×1440 plus einem 1920×1200 Schirm
Linux – Nvidia GTX 750 TI – Dell U2515H – HDMI – 2560×1440 Pixel

Last week a reader, who had found these blog articles, asked me the following:

I am currently using a Dell U2412m with 1920×1200 resolution but I am planning to upgrade to a 2560×1440 and thought about the U2515H but I am a bit worried about how Plasma shows on such a high dpi panel. Do you have any issue with interface elements which are showed too small and are not tuneable?

Second thing I am a bit worried of my GTS 450 performance but I will upgrade my video card after the new nVidia series is launched.

I found these questions interesting and present my answers in form of this blog contribution.

Warning statement regarding older graphics cards

Before I get to the question regarding KDE and a high resolution screen as the DELL U2515H I want to make a warning statement:

The graphics card you want to use together with a Dell U2515H and the graphics card drivers MUST support high resolution HDMI (vers. 1.4, 2.0) or display port connections. Reason: The Dell U2515 does NOT provide any DVI connections!

Do not underestimate this topic for older graphics cards! Actually, I had very bad experiences in the past with a GTX 460 which provides a mini HDMI port: I never got a high resolution HDMI connection to run with this card (not under Opensuse 13.1/13.2). Despite high quality cables and in contrast to another system with a GTX 750 TI. And I really tried a lot of settings and driver versions until I gave up.

And note: Even the GTX 750TI required some effort and fiddling – but eventually it worked. This is the reason why I wrote about it.

So, if you have some money and want to avoid frustration with the DELL U2515H, I would suggest to buy a reasonable modern card which offers support for (several) display ports and/or high resolution HDMI. If gaming under Linux is not a topic (as in my case) but still some 3D applications or CUDA floating point operations are part of your work then presently a GTX 960 or the GTX 750 could be a reasonable alternative regarding the price-value relation. But look out for the number of ports supported – especially if you want to use several screens.

KDE and high resolution screens in general

It is quite clear that a screen resolution of 2560×1440 will significantly reduce the visible size of fonts and desktop elements scaled with font size. So, what you need is a very flexible scalability of fonts both for the desktop and window control elements as well as for applications you use.

The question whether Linux desktops as KDE are prepared for high resolution screens was also posed in an article with the title “Skaliert” (Scaled) published in the German “linuxuser” 10/2015. See http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2015/10/Skaliert. Unfortunately, this article costs money to read it online. Actually, relatively small problems were described for KDE. This is very consistent with my own experience with both KDE 4.14 and KDE 5.x.

You can adjust almost all required basic font settings for the KDE desktop via KDE’s “systemsettings” and in addition most
applications offer scrollable and relatively seamless font scaling (e.g. via mouse scrolling). Playing around with font smoothing plus an enforcement of dpi resolution may pay off in case you care for smooth font displaying. (Actually I never had to apply any special contrast settings of the screen itself beyond standards for the screen to get a clear, but nevertheless smooth font display).

The spectrum of applications I primarily use consists of a mixture of QT and GTK applications:

KDE konsole and other terminal emulations, different types of graphical KDE file editors, different types of browsers (primarily FF and chromium), libreoffice, eclipse mars, aptana studio, SVN frontends, crossover with ms office applications, vmware with different types of guests, kvm with different types of guests, sound and multimedia applications, blender, etc., etc.

Almost all of my favorite applications offer internal font adjustment capabilities and the typical graphical elements of these applications scale seamlessly with font size. So, no reason to worry about KDE and its plasma desktop: In my opinion KDE is well prepared for high resolution screens.

A problem may, however, be the smooth integration of some GTK applications (as e.g. eclipse) into high resolution KDE, which is based on QT – but also there you have sufficient options with different GTK themes – and most of the problems I had were independent of the screen resolution and more GTK theme dependent. You may have to play around a bit with KDE’s settings for GTK integration – especially with the choice of the GTK design or GTK theme.

KDE and screens with different resolutions

A real problem in my opinion may result from a mixture of 2 screens with different (!) native resolutions. There is no way known to me to apply different font-settings to different screens on a KDE desktop comprising several screens in form of a Nvidia Xinerama combination.

As long as I used 2 screens – one with a resolution of 1920×1200 and one with 2560×1440 – I really suffered a bit from the display discrepancies regarding font size. Especially when I wanted to open several windows of one and the same application – as 2 windows of Eclipse – on both screens or whenever I wanted to stretch one application (e.g. VMware) over the 2 screens. You may try to find compromises – but it will never be perfect.

However, in my present daily work with 3 screens – 2 with 2560×1440 and 1 with 1920×1200 – the different display of font sizes may become even an advantage: Just by moving an application to the lower resolution screen you get a better view on details. (But I admit, this is pure luxury, not only for development work.)

Nevertheless it would be fun if KDE in the future could provide a possibility to adjust font-sizes per screen in a Xinerama version.

Performance?

I do not know exactly how a GTS 450 graphics card performs. But my guess is that even for 2 screens (with 2560×1440) performance for the simple 3D effects of a plasma desktop should be no topic at all – even for this card. Actually, it is really frustrating that you cannot use high resolution HDMI with older graphics cards – despite the fact that the graphics card may support a combined resolution of 2 x 2560×1440 for DVI capable screens and provide a sufficient performance for it.

I should, however, mention that for three screens (2 x 2560×1440, 1x 1920×1200) my GTX 750 TI works constantly with high frequencies of both CPU and memory. The card never reduces this frequencies during normal use – so it will consume more electrical power than in a 2 screen situation. For 2 screens at 2560×1440 it always reduced frequencies to lower levels when only 2D applications were used on the desktop. However, despite constant high frequencies I never noticed any heat problem under normal conditions. The ventilators operate at basic speed and temperatures are between 36 and 40 &
deg; Celsius.

With high resolution 3D games you may have a different experience – but if I play (which is seldom) I never play with extreme resolutions. So, actually I do not know how high resolution games perform on a (3D) KDE desktop.

Summary

Regarding the use of KDE with the DELL U2515H in my opinion you need not worry about font scalability and performance. You should worry more about the support of high resolution HDMI and display ports by both the physical card and the drivers for older Nvidia cards. A combination of a DELL U2515H with a screen of lower resolution will lead to problems – as visible font sizes may differ significantly.

Remark, added 17.12.2015:
Meanwhile I had the chance to test a Nvidia GTX 960 from Gigabyte together with 2 DELL U2515H connected via display port and a 1920×1200 screen connected via DVI. Works without any problems. And I see no problems with native Linux 3D OpenGL games as Red Eclipse or Xonotic at high resolutions so far. Temperatures around 43° Celsius.

Motive für eine intensivere Beschäftigung mit KVM-Hosts und Security

Ein Angestellter eines Kunde, bei dem ich mehr in der Rolle des Prozessberaters arbeite, fragte mich vor kurzem, warum ich in letzter Zeit so viel Zeit in das Sicherheitsmanagement von Servern stecke.

Es stimmt: Ich beschäftige mich – im eigenen Netz, aber auch im Auftrag von Kunden – immer wieder mit KVM Hosts und Web- / Datenbank-/ Mail-Servern bzw. MS Windows-Clients in Gastinstanzen. Ein Thema, das mich seit längerem – vielleicht zu Unrecht – beunruhigt, ist die Abschottung von Gastsystemen und virtuellen Netzwerkbereichen hinter (virtuellen Bridges/Switches) gegeneinander.

Mehrere Punkte und Fragen sorgen hier bei mir immer wieder für besagte Unruhe:

  • Sind iptables-Regeln für Paketfilter auf dem Host hinreichend? Sind nicht auch zusätzliche ebtables-Regeln erforderlich?
  • Ist eine Paketfilter auf dem Host und damit für die virtuellen Bridges überhaupt sinnvoll? Oder sollte jeder Netzwerkbereich seine eigene virtuelle Perimeter-Firewall bekommen? Oder beides?
  • Wie können virtuelle Bridges/Switches angegriffen werden? Was ist z.B. mit ARP-Sppofing/-Flooding?
  • Wenn Firewall-Regeln auf dem Host und übergreifend für virtuelle Bridges/Switches: Sind Regeln zu etablierten Verbindungen der Form
    • $IPTABLES -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
    • $IPTABLES -A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
    • $IPTABLES -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT

    ein potentielles Sicherheitsrisiko, da damit ein Bridge-übergreifender Kontext auf dem Host geschaffen wird?

  • Welche Möglichkeiten hat eine Angreifer bei aktiviertem Routing über den Host zwischen 2 virtuellen Netzwerksegmenten?

Zu all diesen Punkten gibt es in diversen einschlägigen Foren Diskussionspunkte. Ich finde, das Spektrum der Fragen ist ein genaueres, eigenes Studium von virtuellen Bridges auf Linux-Hosts wert. Ich werden in kommenden Artikeln immer mal wieder auf diese Fragestellungen und zugehörige Scan- und ggf. Penetrations-Tests und notwendige Verteidigungsmaßnahmen zurückkommen.

Wine/Crossover Office – Positionierung und Größenänderung von KDE-Fenstern für MS Office 2007/2010

Im Rahmen von Beratungsaufträgen für Kunden bin ich immer mal wieder gezwungen, auf Windows Office-Anwendungen zurückzugreifen. Denn leider funktioniert in etlichen Fällen mit komplexeren Dokumenten oder Präsentationen der Weg

LibreOffice => Zip-File/Mail => MS Office => Zip-File/Mail => LibreOffice => Zip-File/Mail => MS Office

nicht völlig verwerfungsfrei.

Um Kundenbeschwerden aus dem Weg zu gehen, nutze ich deshalb – wenn erforderlich – MS Office 2010 Applikationen unmittelbar über Wine (in Form von Crossover Office) auf meinem Linux/KDE-Desktop. Nun habe ich mir kürzlich einen neuen Laptop zugelegt; zwangsläufig musste ich meine komplette SW-Umgebung vom Altsystem um- und nachziehen. Dabei stößt man dann im Zuge der Wine-, der Crossover Office- und der nachfolgenden MS Office-Installation unter einer passenden “Wine-Bottle” als MS-Laufzeit-Umgebung (oder nach einem Bottle-Ex/Import) zwangsläufig auf folgendes Thema:

Die KDE-Fenster für die Wine basierten MS Office-Applikationen lassen sich nach einer einmal durchgeführten Full-Screen-Maximierung nicht mehr wie andere Standardfenster mit der Maus über einen Drag-Vorgang mit der Maus auf der Menüleiste bewegen. Ferner funktionieren danach freie Größenänderungen des Fensters mit der Maus nicht mehr. Man kann nur zwischen maximaler Größe und einem vordefinierten Größen-Format hin und her schalten.

Das ganze Problem hatte ich früher schon mal durchlitten – und schließlich über KDE-Einstellungen gelöst – nur leider vergessen wie. Ärgerlich! Die Zeit zum Rumprobieren kann man sich beim nächsten Mal wirklich sparen. Deshalb hier eine Zusammenstellung der erforderlichen Schritte.

Einstellungen für die betroffene Wine/Crossover Bottle (“Flasche”) der Windows-Applikation

Hierzu das zentrale “CrossOver” Verwaltungsapplikation öffnen (im Terminal nach einer Standardinstallation z.B. über den Aufruf von “/opt/cxoffice/bin/crossover”).

Dort den Menüpunkt “Werkzeuge >> Flaschen verwalten” wählen. Die jeweilige “Flasche” für die Windows-Office-Installation im linken Seitenbereich auswählen, rechts den Tab “Systemsteuerung” wählen und darunter den Punkt “Wine Konfiguration” anklicken.

Im sich öffnenden Konfigurationsfenster den Reiter “Grafik” anklicken. Dort folgende Optionen auswählen:

  • Erlaube dem Fenstermanager die Fenster zu dekorieren
  • Erlaube dem Fenstermanager die Fenster zu kontrollieren

bottle1

Diese Einstellungen dienen dazu, dass der Window-Manager (ob unter Windows oder nicht) – zumindest grundsätzlich – die Kontrolle über die Applikationsfenster zu bekommt.

Wenn man bei einem Umzug auf ein anderes System die Export/Import-Funktionalität für Wine-Bottles nutzt, sollten diese Einstellungen auf dem neuen System bereits gegeben sein – soweit man sie auf dem Altsystem schon vorgenommen hatte.

Sonderregeln für KDE-Fenster-Einstellungen

Nun müssen wir noch die andere Seite – nämlich die des Window-Managers unter KDE betrachten. Hierzu die KDE Systemeinstellungen öffnen (im Terminal über das Kommando: systemsettings &).

Dort unter der Rubrik “Erscheinungsbild und Verhalten der Arbeitsfläche”
den Punkt “Fensterverhalten” anklicken. Im sich öffnenden Fenster “Fensterregeln” wählen. Dann den Button “Neu” klicken.

Wir landen im Reiter “Fensterübereinstimmung” eines sich neu öffnenden Dialogfensters.
Das Feld “Beschreibung” füllen wir mit Stichwörtern unserer Wahl (“MS Office 10 Regeln”). Nun ein Klick auf Button “Fenstereigenschaften ermitteln”. Dies hilft uns, Informationen dazu zu erhalten, unter welcher sog. Fensterklasse KDE die wine-basierten MS Office-Applikationen eigentlich führt. Klickt man mit dem angebotenen Kreuz-Cursor nun auf ein geöffnetes Crossover Fenster für Winword, so öffnet sich ein Fensterchen, in dem man bzgl. der sog. “Klasse” den Ausdruck “Wine (WINWORD.EXE Wine)” vorfindet.

Nach dieser Information klicken wir im Informationsfensterchen auf “Abbrechen” und landen wieder im Dialog zur “Fensterübereinstimmmung”.

bottle2

Bei der Combobox zum Punkt “Fensterklasse” nun den Punkt “Regulärer Ausdruck” wählen. Wir müssen einen Regex-Ausdruck festlegen, der die Fensterklassen, die KDE (bzw. X-Windows) den betroffenen Crossover-Fenstern zuordnet, am besten erfasst. In Anlehnung an die oben bereits ermittelte Information, die wir auf Excel und Powerpoint erweitern wollen, nehme ich

.*\b(winword.exe|excel.exe|powerpnt.exe)\b.*

Bzgl. evtl. Sorgen bzgl. einer Groß-/Kleinschreibungs-Thematik siehe den letzten Kommentar unter https://bugs.kde.org/show_bug.cgi?id=173544. Wer dem Regex wegen der Großschreibung z.B. der MS Office 2010-EXE-Dateien dennoch nicht traut, kann ja versuchsweise “i”-Modifikatoren einsetzen, wird aber feststellen, dass das i.d.R. Fehler nach sich zieht. Zusätzlich ist ein Haken beim Feld “Übereinstimmung mit gesamter Fensterklasse” erforderlich.

Wichtige Ergänzung 20.11.2015:

Speziell im Falle von Powerpoint gibt es mit den bisherigen und den nachfolgenden Einstellungen Probleme, da auch kleine Grafiken bei Verschiebungen und Größenänderungen zur Erzeugung kleiner Fenster führen, die z.B. die Verschiebung während der Mausaktion anzeigen. Man muss daher die Anwendung der nachfolgenden Regeln von vornherein weiter auf die Hauptfenster einschränken. Ein wenig Experimentieren führte mich dann zu folgender Lösung: Für das Feld “Fenstertitel” wählt man erneut “regulärer Ausdruck” und

.*\b(.*)\b.*

crossover_5_800

Nicht besonders elegant- aber wirksam. (Sicher gibt es bessere Lösungen, aber ich komme grad nicht drauf.)

Nun weiter zum Reiter “Größe und Position”. Wir wollen verhindern, dass der Fenstertyp sich beim erneuten Öffnen an eine evtl. vorgenommene Maximierung erinnert und dass wir auf eine bestimmte Geometrie festgelegt werden. Deshalb sind folgende Einstellungen erforderlich:

  • Vollbild => Erzwingen => Nein
  • Angeforderte Geometrie ignorieren => Erzwingen => Ja

bottle3

Wir bestätigen diese Einstellungen durch OK. Nach dem Schließen der Dialogfenster zu den konkreten Einstellungen aktivieren wir die geänderten Einstellungen noch über den Button “Anwenden”.

Danach verhalten sich die Crossover Fenster für MS Office Applikationen unter KDE
wie normale Fenster nativer Linux-Applikationen. Falls nicht: Einmal abmelden und dann wieder in den KDE-Desktop einloggen.

beispiel1_red

Alternative Fensterhandhabung

Ein “Alt-Klick” auf ein Fenster ermöglicht grundsätzlich dessen Verschiebung auf dem Desktop. Das gilt auch für Crossover-Fenster. Das Gleiche erreicht man über einen Klick mit der rechten Maustaste auf das Fenstersymbol zu unserem Crossover-MS-Office-Fenster in der KDE Fensterleiste und eine nachfolgende Wahl des Punktes “Weitere Aktionen” im sich öffnenden Menü. Dies führt uns zu einer Auswahl von Fensteroperationen, die sich auf diesem Wege auch für Crossover Fenster ausführen lassen. Eine dieser Fensteroperationen ist auch die Größenänderung.

Links

https://www.codeweavers.com/compatibility/crossover/forum/microsoft-office-2010?msg=157908
https://bugs.kde.org/show_bug.cgi?id=329227
http://www.linuxforen.de/forums/showthread.php?230623-Wine-Fenster-l%E4sst-sich-nicht-verschieben-und-ist-immer-im-Vordergrund
https://forum.winehq.org/viewtopic.php?f=8&t=20006

Viel Spaß dann noch mit Wine und Crossover Office! Dass man mit MS Office Spaß haben wird, ist bei den Lesern eines Linux-Blogs kaum zu erwarten. Seit MS Office 2007 frage ich mich persönlich immer wieder, welcher Wahnsinnige sich wohl die aus meiner Sicht chaotische und den Arbeitsfluss nicht fördernde, sondern eher behindernde Benutzerführung ausgedacht hat … Na ja, eingefleischte MS Fans können das sicher erklären. Ich bin jedenfalls froh, dass es ein inzwischen relativ ausgereiftes LibreOffice gibt und mir das Leben leichter macht.

Datenschutz-Einwilligung – Google’s wachsender Druck auf Nutzer der Suchmaschine – wie erwartet …

Hatte ich doch noch vor ein paar Tagen in diesem Blog darüber spekuliert, dass das EuGH-Urteil nicht ohne Folgen bleiben wird und es auch den deutschen Datenschutzbestimmungen ein breite Bresche schlägt. Siehe
https://linux-blog.anracom.com/2015/10/13/eugh-urteil-zu-safe-harbour-und-die-reaktion-der-vordenker-zeitschrift-die-zeit/

Und was passiert: Eine wachsende Anzahl deutsche Nutzer der Google Suchmaschine erhalten nun – mit oder ohne Google-Konto – regelmäßig und mit verschärfter Tonlage eine Einblendung, über die der Anwender dem Unternehmen Google quasi eine Zustimmung zum Datensammeln erteilen muss, wenn er die Google Dienste – in diesem Fall die Suchmaschine – weiter nutzen will. Zuletzt hat der Stern darüber berichtet; siehe
http://www.stern.de/tv/google-datenschutzeinstellung–hinweise-zum-pop-up-6512842.html#mg-1_1445528506974
Dieses in die Suchmaschinenseiten eingebettete, relativ groß dimensionierte “Pop-Up” bietet keine Möglichkeit, das Verlangen von Google abzulehnen.

Das eigentlich Erschreckende – wenn auch kaum Neue – ist, dass Einem beim genauen Lesen der weiteren Dialoge (speziell beim Durcharbeiten der “Optionen”) das erklärte Ziel der Zustimmung sehr klar vor Augen geführt wird – nämlich die Erlaubnis nicht nur zur Erfassung sondern auch zur Zusammenführung letztlich personenbezogener Daten auf allen Ebenen. In diesem Zusammenhang von Daten-“Schutz” zu reden würde selbst Herrn Orwell wundern. Nun, damit ist wenigstens für Klarheit gesorgt. Verwunderlich ist das nicht – mit Persönlichkeitsprofilen und Werbung verdient Google ja schließlich sein Geld.

Google erlaubt einem dann netterweise noch einen Streifzug durch diverse browser- und dienste-bezogenen Einstellungen. Man kann zwar einige Einstellungen ändern – aber die schränken Werbung und das dafür erforderliche Datensammeln lediglich etwas ein – beendet wird das Erheben von Daten zur eigenen Person und zum Verhalten bei der Suche mit Google dadurch keinesfalls. Auch die Werbung wird nicht komplett unterbunden. Das wird fairerweise auch gesagt. Konsequenterweise bietet Google’s aktuelle Popup-Meldung auf den Seiten der Suchmaschine auch keine Option zum pauschalen Ablehnen des Erfassens und Zusammenführens meiner personenbezogenen Daten an. Das ist eine klare und deutliche Botschaft: Gib mir deine Daten oder nutze meinen Dienst nicht!

Ich finde das keineswegs verwerflich. Nur außerordentlich überdenkenswert – und mit hohem Druck auf den Anwender unterlegt. Nicht verwerflich heißt für mich dabei noch lange nicht gut. Google will angesichts der rechtlich verschärften Lage vom (deutschen?) Nutzer nun offenbar eine explizite Zustimmung erzwingen und damit Rechtssicherheit für das eigene Unternehmen schaffen. Wir haben es hier mit einem, nicht mehr ganz neuen Phänomen, das ich “Erzwingungs-Popup” nennen möchte, zu tun. Einer Art Eula für die Suchmaschine …

Noch – wohlgemerkt noch (!) – ist die Lage aber nicht ganz hoffnungslos. Wenn man als Nutzer von Google das Sammeln von Daten zum eigenen Persönlichkeits- und Verhaltensmuster auch nicht nicht mehr implizit oder pauschal ablehnen kann, so kann man es wenigstens teilweise umgehen – wenn auch vermutlich nur für einige Zeit. Auf das Wie komme ich weiter unten zurück.

Ist das Ganze eigentlich überraschend? Habe ich eigentlich etwas anderes erwartet? Nein! Schließlich stellen die zunehmend präzisierten deutsche Datenschutzanforderungen, das EuGH-Urteil und auch ein insgesamt vermehrtes Bewusstsein für Privatsphäre und informationelle Selbstbestimmung zumindest in Deutschland die aktuellen Geschäftsmodelle nicht nur von Google, sondern diverser Internet-Giganten grundlegend in Frage. Das provoziert Reaktionen und
führt fast zwangsläufig zu diesen Methoden.

Das hat auch sein Gutes – denn die Interessengegensätze zwischen Geldverdienen mit Persönlichkeitsprofilen und den Anforderungen nach informationeller Selbstbestimmung in einer Demokratie treten so klarer zu Tage. Das kann der Diskussion nur dienlich sein. Zudem sollte jedem Nutzer hierzulande bewusst werden, wie abhängig wir uns von den durchaus nützlichen Diensten der US-Internet und IT-Giganten gemacht haben – ohne regelmäßig zu bedenken, dass es im Internet nichts umsonst gibt. Wir bezahlen so oder so – mit Geld oder Daten zu unserer Persönlichkeit, unseren Gewohnheiten und Interessen. Das ist eine nüchterne Feststellung – die Kritik richtet sich hier in erster Linie an die eigenen Versäumnisse und nicht dagegen, dass Google klar definierte Geschäftsinteressen verfolgt. Das ist aus meiner Sicht zumindest im Rahmen geltender Gesetze völlig legitim.

Was kann man aktuell tun?
Zähneknirschend zustimmen mag für viele eine Option sein. Bei mir ist es zunächst so, dass ich mich ungern zu solchen weitreichenden Entscheidungen über eine Meldung auf einer Webseite erpressen lasse. Freiheit der Meinungsbildung und auch der Entscheidung ist mir konservativem Menschen eben wichtig. Meinungsbildung erfordert zudem Zeit – und nicht einen spontanen Klick mit der Maus. Nun kann man durchaus etwas auf Zeit spielen – und sei es nur deswegen, um sich die Sache nochmal gründlich durch den Kopf gehen zu lassen:

  1. Im Google-Erzwingungs-Popup bzw. in der Googlemeldung zunächst und so lange es möglich ist auf “Später lesen” klicken.
  2. Google wird sich nach einiger Zeit wieder melden und dem Nutzer im Ton und Layout der Meldung keine Wahl mehr lassen, als sich mit dem Thema intensiver zu beschäftigen.
  3. Dann erst mal die “Optionen” wahrnehmen und den folgenden, durchaus interessanten Spaziergang durch die Einstellmöglichkeiten mitmachen. Dabei das Maximale im Sinne der Privatsphäre herausholen.
  4. Dann eben nicht einfach zustimmen – es sei denn man will es wirklich. Sondern die geöffnete Webseite mit der Google-Suche schlicht schließen.
  5. Alle Cookies oder speziell die Cookies von Google löschen. (Und soweit möglich, über seinen Router vom Internet-Provider mal häufiger eine neue IP anfordern.)
  6. Firefox im Bereich “Privatsphäre” so einstellen, dass er alle Cookies beim Beenden des Browsers automatisch löscht. Für andere Browser bzw. eine ältere FF-Version analoge Einstellmöglichkeiten ausfindig machen.

Das wirkt erstmal, weil der Mechanismus hinter dem Erzwingungs-Popup z.Z. offenbar noch cookie-basiert ist. Leider verfügt Google natürlich noch über andere Mittel, eine konkrete Person bei der Nutzung der Suchmaschine zu identifizieren. Das Ganze wird also nur eine vorübergehende Lösung sein. Da ich nicht wirklich damit rechne, dass Google ein Einsehen zeigen wird, bleibt danach vermutlich nur,

  • konsequent den “Tor”-Browser zu nutzen,
  • Suchen bei Google über die Seite https://search.disconnect.me/ durchzuführen (bis Google das auch nicht mehr zulässt),
  • schlicht die Suchmaschine zu wechseln (bis auch die anderen IT-Konzerne über ähnliche Erzwingungsmethoden die Zustimmung des Nutzers zum Datensammeln erzwingen). Z.Z. lohnt sich zudem ein Blick auf Meta-Suchmaschinen wie “startpage.com” oder “https://www.ixquick.com/deu/”.

oder eben doch entnervt zuzustimmen. Man hat – egal wie – aber letztlich nur die Möglichkeit des Versuchs einer anonymisierten Dienste-Nutzung! Um die Dienste selbst kommt man kaum herum. Und schmerzlichst wird einem wieder bewusst: Leider haben wir Europäer bislang kein
qualitativ gleichwertiges Äquivalent zu Google. Ich finde zudem: den ungehinderten Zugang zu Informationen im Internet bei Wahrung der Persönlichkeitsrechte und des Datenschutzes zu gewährleisten, ist zudem eine Hauptaufgabe eines modernen, demokratischen Staates. Ich halte es für eine Mär, dass dies mit polizeilichen Schutzaufgaben nur schwer vereinbar sei.

Liebes Unternehmen Google! Ihr habt in eurem Kerngeschäft großartige Arbeit geleistet und bietet viele nützliche und wichtige Dienste an – das steht außer Zweifel. Die Suche nach und der Zugang zu Informationen im Internet ist ein wichtiges Gut, für das ihr mit den Boden bereitet habt. Ich glaube euch sogar, dass Ihr jetzt bzgl. Datenschutz noch was lernen und vielleicht auch umsetzen wollt – solange es eure Einnahmen nicht substanziell gefährdet. Aber Datenschutz fängt mit begründetem (!) Vertrauen und nicht mit Zwangsmaßnahmen an. Das müsst ihr offenbar als Allererstes lernen …. Meines jedenfalls habt ihr heute mal wieder erschüttert. So sehr ich eure Dienste auch schätze …. Offen bleibt zudem die Frage, wie denn das Vorgehen eigentlich mit dem EuGH-Urteil in Einklang zu bringen ist. Denn es gibt ernstzunehmende Interpretationen, die genau euer Vorgehen in Frage stellen:
http://www.faz.net/aktuell/wirtschaft/maechtige-internetriesen/uld-schlewigholstein-haelt-safe-harbor-fuer-nicht-umgehbar-13858360.html

Was ist eigentlich mit der Idee, dass ihr Geld für eure Dienste verlangt und im Gegenzug zahlenden Kunden garantiert, dass das Suchverhalten nicht nachverfolgt wird, keine user-bezogenen Daten erhoben werden und dass der Suchdienst primär über europäische Server läuft? Das wäre wenigstens ein klares, offenes und ehrliches Geschäftsmodell. Wie ich euch kenne, arbeitet ihr daran bereits … Und eine teilweise Kostenübernahme für bedürftige und finanziell Schwache wäre dann Gegenstand einer politischen Diskussion zur Verbesserung unseres Sozialsystems. Auch das kann der laufenden Auseinandersetzung um Datenschutz und informationelle Selbstbestimmung als Grundpfeiler einer modernen Demokratie nur dienen.

Links
https://www.datenschutzbeauftragter-info.de/google-verlangt-einwilligung-ich-stimme-zu/
https://www.verbraucherzentrale.de/google-datenschutz
http://www.stern.de/tv/google-datenschutzeinstellung–hinweise-zum-pop-up-6512842.html#mg-1_1445528506974
http://www.netz-trends.de/id/4353/Verstoesst-Google-mit-seinen-Datenschutz-Einblendungen-gegen-deutsches-und-EU-Recht/
http://www.googlewatchblog.de/2015/07/google-zeigt-hinweise-zum-datenschutz-bei-google/comment-page-1/#comment-141396
http://www.handelsblatt.com/my/unternehmen/it-medien/zugestaendnisse-beim-datenschutz-google-will-erwachsen-werden/12471656.html?ticket=ST-5951533-pfjOxbEXcfbs1bCsfajP-s02lcgiacc01.vhb.de
http://www.welt.de/wirtschaft/webwelt/article141754265/So-aendern-Sie-was-Google-ueber-Sie-speichern-darf.html
http://www.datenschutzbeauftragter-online.de/google-und-datenschutz/
http://www.deutschlandfunk.de/datenschutz-google-zwischen-transparenz-und-augenwischerei.735.de.html?dram:article_id=326641