<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.trinitydesktop.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Blu256</id>
	<title>Trinity Desktop Project Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.trinitydesktop.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Blu256"/>
	<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/Special:Contributions/Blu256"/>
	<updated>2026-04-11T01:09:20Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.13</generator>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Template:DistroTable&amp;diff=4430</id>
		<title>Template:DistroTable</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Template:DistroTable&amp;diff=4430"/>
		<updated>2025-09-13T16:39:51Z</updated>

		<summary type="html">&lt;p&gt;Blu256: /* Example */ Add gentoo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This template provides a &amp;#039;&amp;#039;&amp;#039;table with installation instructions&amp;#039;&amp;#039;&amp;#039; per distribution/operating system. It also tells the latest available version of TDE for that system.&lt;br /&gt;
&lt;br /&gt;
When there is a new release available for one of these systems, you only need to change the available version here; all the pages that use this template will show the updated data automatically.&lt;br /&gt;
&lt;br /&gt;
Mark the latest release with &amp;lt;span style=&amp;quot;background: lightgreen;&amp;quot;&amp;gt;lightgreen&amp;lt;/span&amp;gt;,  the release before it with &amp;lt;span style=&amp;quot;background: yellow;&amp;quot;&amp;gt;yellow&amp;lt;/span&amp;gt; and older releases with &amp;lt;span style=&amp;quot;background: orange;&amp;quot;&amp;gt;orange&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If there is something important that should be noticed about packages (e.g. pending builds) consider adding them below the table in a [[:Template:TipBox|TipBox]] or a [[:Template:WarningBox|WarningBox]] appropriately.&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
This is how it will look on the page:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;{|&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;!-- Official instructions --&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; | &amp;lt;big&amp;gt;Official Instructions&amp;lt;/big&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Distribution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Latest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Debian Trinity Repository Installation Instructions|Debian]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Devuan Trinity Repository Installation Instructions|Devuan]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Fedora Trinity Repository Installation Instructions|Fedora]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 |-&lt;br /&gt;
 | [[RedHat Trinity Repository Installation Instructions|RedHat]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Ubuntu Trinity Repository Installation Instructions|Ubuntu]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;!-- Unofficial instructions --&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;4&amp;quot; | &amp;lt;big&amp;gt;Community Instructions&amp;lt;/big&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Distribution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Latest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Distribution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Latest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Arch Trinity Repository Installation Instructions|Arch Linux]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 | [[MX Linux Trinity Repository Installation Instructions|MX Linux]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 |-&lt;br /&gt;
 | [[FreeBSD Trinity Installation Instructions|FreeBSD]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4 &amp;lt;!-- R14.1.x branch actually --&amp;gt;&lt;br /&gt;
 | [[OpenSUSE Trinity Repository Installation Instructions|OpenSUSE]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Mageia Trinity Repository Installation Instructions|Mageia]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 | [[PCLinuxOS Trinity Repository Installation Instructions|PCLinuxOS]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Slackware Trinity Installation Instructions|Slackware]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 | [https://wiki.gentoo.org/wiki/Trinity_Desktop_Environment Gentoo]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | latest git&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Raspbian Trinity Repository Installation Instructions|Raspbian]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 |}&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; margin: 0;&amp;quot;&lt;br /&gt;
|Building from source code: &amp;#039;&amp;#039;&amp;#039;[[How to Build TDE Core Modules|base]]&amp;#039;&amp;#039;&amp;#039; | &amp;#039;&amp;#039;&amp;#039;[[How to Build Extra Applications|extra]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[[LiveCDs|Try a LiveCD]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Template:DistroTable&amp;diff=3987</id>
		<title>Template:DistroTable</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Template:DistroTable&amp;diff=3987"/>
		<updated>2025-05-02T17:37:17Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Update Slackware version to R14.1.4 (Ray-V slackbuilds)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This template provides a &amp;#039;&amp;#039;&amp;#039;table with installation instructions&amp;#039;&amp;#039;&amp;#039; per distribution/operating system. It also tells the latest available version of TDE for that system.&lt;br /&gt;
&lt;br /&gt;
When there is a new release available for one of these systems, you only need to change the available version here; all the pages that use this template will show the updated data automatically.&lt;br /&gt;
&lt;br /&gt;
Mark the latest release with &amp;lt;span style=&amp;quot;background: lightgreen;&amp;quot;&amp;gt;lightgreen&amp;lt;/span&amp;gt;,  the release before it with &amp;lt;span style=&amp;quot;background: yellow;&amp;quot;&amp;gt;yellow&amp;lt;/span&amp;gt; and older releases with &amp;lt;span style=&amp;quot;background: orange;&amp;quot;&amp;gt;orange&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If there is something important that should be noticed about packages (e.g. pending builds) consider adding them below the table in a [[:Template:TipBox|TipBox]] or a [[:Template:WarningBox|WarningBox]] appropriately.&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
This is how it will look on the page:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;{|&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;!-- Official instructions --&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; | &amp;lt;big&amp;gt;Official Instructions&amp;lt;/big&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Distribution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Latest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Debian Trinity Repository Installation Instructions|Debian]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Devuan Trinity Repository Installation Instructions|Devuan]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Fedora Trinity Repository Installation Instructions|Fedora]]&lt;br /&gt;
 | style=&amp;quot;background: yellow;&amp;quot; | R14.1.3&lt;br /&gt;
 |-&lt;br /&gt;
 | [[RedHat Trinity Repository Installation Instructions|RedHat]]&lt;br /&gt;
 | style=&amp;quot;background: yellow;&amp;quot; | R14.1.3&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Ubuntu Trinity Repository Installation Instructions|Ubuntu]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;!-- Unofficial instructions --&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;4&amp;quot; | &amp;lt;big&amp;gt;Community Instructions&amp;lt;/big&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Distribution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Latest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Distribution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Latest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Arch Trinity Repository Installation Instructions|Arch Linux]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 | [[MX Linux Trinity Repository Installation Instructions|MX Linux]]&lt;br /&gt;
 | style=&amp;quot;background: yellow;&amp;quot; | R14.1.3&lt;br /&gt;
 |-&lt;br /&gt;
 | [[FreeBSD Trinity Installation Instructions|FreeBSD]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4 &amp;lt;!-- R14.1.x branch actually --&amp;gt;&lt;br /&gt;
 | [[OpenSUSE Trinity Repository Installation Instructions|OpenSUSE]]&lt;br /&gt;
 | style=&amp;quot;background: yellow;&amp;quot; | R14.1.3&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Mageia Trinity Repository Installation Instructions|Mageia]]&lt;br /&gt;
 | style=&amp;quot;background: yellow;&amp;quot; | R14.1.3&lt;br /&gt;
 | [[PCLinuxOS Trinity Repository Installation Instructions|PCLinuxOS]]&lt;br /&gt;
 | style=&amp;quot;background: yellow;&amp;quot; | R14.1.3&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Slackware Trinity Installation Instructions|Slackware]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Raspbian Trinity Repository Installation Instructions|Raspbian]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.4&lt;br /&gt;
 |}&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; margin: 0;&amp;quot;&lt;br /&gt;
|Building from source code: &amp;#039;&amp;#039;&amp;#039;[[How to Build TDE Core Modules|base]]&amp;#039;&amp;#039;&amp;#039; | &amp;#039;&amp;#039;&amp;#039;[[How to Build Extra Applications|extra]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[[LiveCDs|Try a LiveCD]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Slackware_Trinity_Installation_Instructions&amp;diff=3986</id>
		<title>Slackware Trinity Installation Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Slackware_Trinity_Installation_Instructions&amp;diff=3986"/>
		<updated>2025-05-02T17:36:25Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Update branch name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Documentation]]&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
&lt;br /&gt;
Even though there is no official packaging of Trinity for Slackware, there are still to unofficial two ways to do so. Installation from binary packages is the easier solution, but installation from SlackBuilds offers a greater degree of control over the installation process.&lt;br /&gt;
&lt;br /&gt;
== SlackBuilds ==&lt;br /&gt;
SlackBuilds are available in the [https://github.com/Ray-V/tde-slackbuilds Ray-V/tde-slackbuilds] repo on GitHub (also mirrored on TGW at [https://git.trinitydesktop.org/gitea/SlavekB/tde-packaging-slackware SlavekB/tde-packaging-slackware]).&lt;br /&gt;
&lt;br /&gt;
To build Trinity run the `BUILD-TDE.sh` script and follow the on-screen instructions. An example of the process is available [https://ray-v.github.io/A_typical_TDE_SlackBuild.html here].&lt;br /&gt;
&lt;br /&gt;
SlackBuilds for packages not included in Ray-V&amp;#039;s repo can be built using an unofficial [https://github.com/blu256/tde-slackbuild-gen special SlackBuild generator], provided by a member of the Trinity team.&lt;br /&gt;
&lt;br /&gt;
=== Notes on Ray-V&amp;#039;s Slackbuilds ===&lt;br /&gt;
* By default you are presented with the choice between the archive of the last release and either the &amp;lt;tt&amp;gt;r14.1.x&amp;lt;/tt&amp;gt; or the &amp;lt;tt&amp;gt;master&amp;lt;/tt&amp;gt; development branches. If you want to test out another branch (e.g. as a developer) you can use the environment variable &amp;lt;tt&amp;gt;$FEAT&amp;lt;/tt&amp;gt; to set the branch name.&lt;br /&gt;
&lt;br /&gt;
== Binary packages ==&lt;br /&gt;
&lt;br /&gt;
There are no official binary packages for Slackware at this time.&lt;br /&gt;
&lt;br /&gt;
Unofficial packaging of TDE can be found in various places on the Internet, including the [https://sourceforge.net/projects/tde-slackware/files tde-slackware] project on SourceForge.&lt;br /&gt;
&lt;br /&gt;
{{WarningBox&lt;br /&gt;
 |text=Be careful when installing packages from an untrusted source!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Install the packages with your package manager or the installpkg command. The 12.2 packages install to /usr. All other packages install to /opt/trinity.&lt;br /&gt;
&lt;br /&gt;
====For Slackware 12.2 (v3.5.12)====&lt;br /&gt;
 wget -c -nd -r -l1 --no-parent -A.tgz -A.txt http://mirror.ppa.trinitydesktop.org/trinity/trinity/slackware/12.2/&lt;br /&gt;
&lt;br /&gt;
====For Slackware 13.1 (v3.5.13)====&lt;br /&gt;
 wget -c -nd -r -l1 --no-parent -A.txz -A.txt http://mirror.ppa.trinitydesktop.org/trinity/trinity/slackware/13.1/&lt;br /&gt;
&lt;br /&gt;
Additional information, build instructions, and documentation available at:&amp;lt;br&amp;gt;&lt;br /&gt;
http://humanreadable.nfshost.com/sdeg/trinity_desktop.htm (dead link) --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Trinity_Desktop_Environment&amp;diff=3552</id>
		<title>Trinity Desktop Environment</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Trinity_Desktop_Environment&amp;diff=3552"/>
		<updated>2025-01-28T12:03:57Z</updated>

		<summary type="html">&lt;p&gt;Blu256: /* Current release */ float right the distro table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;[http://trinitydesktop.org Trinity Desktop Environment]&amp;#039;&amp;#039;&amp;#039; (TDE) project is a feature rich desktop environment for Unix-like operating systems with a primary goal of retaining a traditional, efficient and productive user interface.&lt;br /&gt;
&lt;br /&gt;
TDE was born as a fork of the K Desktop Environment version 3.5, which was originally written by the KDE Team, a world-wide network of software engineers committed to Free Software development. The name Trinity was chosen because the word means Three as in continuation of KDE 3. Since then, TDE has evolved to be an independent and standalone desktop environment project. Over time, continued development has polished off many rough edges that were present in the final release of KDE 3.5.10 and many new and useful features have been added to keep the environment up-to-date.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Current release ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right&amp;quot;&amp;gt;{{DistroTable}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The current stable release of TDE is &amp;#039;&amp;#039;&amp;#039;R14.1.3&amp;#039;&amp;#039;&amp;#039;. The key highlights from this release are:&lt;br /&gt;
* initial integration with the XDG Desktop Portal API&lt;br /&gt;
* TDE Control Center module for touchpad settings&lt;br /&gt;
* new mallory twin theme&lt;br /&gt;
* support for window tiling through context menu&lt;br /&gt;
* tde-ebook-reader, a TQt port of FBReader&lt;br /&gt;
* Solarized color themes for Konsole&lt;br /&gt;
* support for back/forward history mouse buttons in various applications&lt;br /&gt;
* support for Python 3.13&lt;br /&gt;
* a TQt for of UniversalIndentGUI to ease source code formatting&lt;br /&gt;
* SFTP connection option for knetattach&lt;br /&gt;
* khotkeys running as a kded module rather than standalone&lt;br /&gt;
* ksirc functional again&lt;br /&gt;
* various enhancements or bug fixes to TQt3 and various applications&lt;br /&gt;
Refer to the [[Release_Notes_For_R14.1.3|full release notes]] for further details and screenshots.&lt;br /&gt;
&lt;br /&gt;
== Contributing ==&lt;br /&gt;
&lt;br /&gt;
The TDE development team is small but friendly. Anyone wanting to join the development process and help create the next TDE release is welcome!&amp;lt;br/&amp;gt;&lt;br /&gt;
You don&amp;#039;t need to be a programmer to do so: you can contribute translations, artwork or other stuff! If you wish to participate, please take a look at the following links:&lt;br /&gt;
* [[TDE Gitea Workspace]]: this is the main place for developers and for contributing code.&lt;br /&gt;
* [[TDE Weblate Translation Workspace]] user guide: this is the main place for translations.&lt;br /&gt;
* [https://wiki.trinitydesktop.org/Category:Developers#New_to_Trinity_development.3F Developers] section on Wiki&lt;br /&gt;
* [https://www.trinitydesktop.org/helpwanted.php Get involved] page on the main TDE website.&lt;br /&gt;
&lt;br /&gt;
If you want to contribute to this wiki please read the [[TDE Wiki Style Guideline|formatting guidelines]] first. Consider updating pages that contain [[:Category:Pages with outdated information (KDE3)|KDE3-specific]] or [[:Category:Pages with outdated information|outdated]] information.&lt;br /&gt;
&lt;br /&gt;
== Donating ==&lt;br /&gt;
&lt;br /&gt;
Please consider helping with a small donation on our [https://www.trinitydesktop.org/donate.php donations page] if you wish to support the TDE project and its infrastructure, Without your financial assistance, TDE would not be possible! &lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
&lt;br /&gt;
{{:Project RoadMap}}&lt;br /&gt;
&lt;br /&gt;
== Browse the TDE Wiki ==&lt;br /&gt;
&lt;br /&gt;
{| style=width:100%&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;font-weight:bold;font-size:125%;&lt;br /&gt;
|  [[:Category:Installation|Installation]]&lt;br /&gt;
|  [[:Category:Community|Community]]&lt;br /&gt;
&lt;br /&gt;
|- style=background:#EFEFEF;height:3em;vertical-align:top;&lt;br /&gt;
|  {{Category:Installation}}&lt;br /&gt;
|  {{Category:Community}}&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;font-weight:bold;font-size:125%;&lt;br /&gt;
|  [[:Category:Releases|Releases]]&lt;br /&gt;
|  [[:Category:Developers|Developers]]&lt;br /&gt;
&lt;br /&gt;
|- style=background:#EFEFEF;height:3em;vertical-align:top;&lt;br /&gt;
|  {{Category:Releases}}&lt;br /&gt;
|  {{Category:Developers}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;font-weight:bold;font-size:125%;&lt;br /&gt;
|  [[Tips And Tricks]]&lt;br /&gt;
|  [[:Category:Packagers|Packagers]]&lt;br /&gt;
&lt;br /&gt;
|- style=background:#EFEFEF;height:3em;vertical-align:top;&lt;br /&gt;
|  {{:Tips And Tricks}}&lt;br /&gt;
|  {{Category:Packagers}}&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;text-align:center;font-weight:bold;&lt;br /&gt;
|  colspan=2 | [[Special:Categories|Show all Categories in the TDE Wiki]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Trinity_Desktop_Environment&amp;diff=3551</id>
		<title>Trinity Desktop Environment</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Trinity_Desktop_Environment&amp;diff=3551"/>
		<updated>2025-01-28T12:03:18Z</updated>

		<summary type="html">&lt;p&gt;Blu256: μ&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;[http://trinitydesktop.org Trinity Desktop Environment]&amp;#039;&amp;#039;&amp;#039; (TDE) project is a feature rich desktop environment for Unix-like operating systems with a primary goal of retaining a traditional, efficient and productive user interface.&lt;br /&gt;
&lt;br /&gt;
TDE was born as a fork of the K Desktop Environment version 3.5, which was originally written by the KDE Team, a world-wide network of software engineers committed to Free Software development. The name Trinity was chosen because the word means Three as in continuation of KDE 3. Since then, TDE has evolved to be an independent and standalone desktop environment project. Over time, continued development has polished off many rough edges that were present in the final release of KDE 3.5.10 and many new and useful features have been added to keep the environment up-to-date.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Current release ==&lt;br /&gt;
&lt;br /&gt;
{{DistroTable}}&lt;br /&gt;
&lt;br /&gt;
The current stable release of TDE is &amp;#039;&amp;#039;&amp;#039;R14.1.3&amp;#039;&amp;#039;&amp;#039;. The key highlights from this release are:&lt;br /&gt;
* initial integration with the XDG Desktop Portal API&lt;br /&gt;
* TDE Control Center module for touchpad settings&lt;br /&gt;
* new mallory twin theme&lt;br /&gt;
* support for window tiling through context menu&lt;br /&gt;
* tde-ebook-reader, a TQt port of FBReader&lt;br /&gt;
* Solarized color themes for Konsole&lt;br /&gt;
* support for back/forward history mouse buttons in various applications&lt;br /&gt;
* support for Python 3.13&lt;br /&gt;
* a TQt for of UniversalIndentGUI to ease source code formatting&lt;br /&gt;
* SFTP connection option for knetattach&lt;br /&gt;
* khotkeys running as a kded module rather than standalone&lt;br /&gt;
* ksirc functional again&lt;br /&gt;
* various enhancements or bug fixes to TQt3 and various applications&lt;br /&gt;
Refer to the [[Release_Notes_For_R14.1.3|full release notes]] for further details and screenshots.&lt;br /&gt;
&lt;br /&gt;
== Contributing ==&lt;br /&gt;
&lt;br /&gt;
The TDE development team is small but friendly. Anyone wanting to join the development process and help create the next TDE release is welcome!&amp;lt;br/&amp;gt;&lt;br /&gt;
You don&amp;#039;t need to be a programmer to do so: you can contribute translations, artwork or other stuff! If you wish to participate, please take a look at the following links:&lt;br /&gt;
* [[TDE Gitea Workspace]]: this is the main place for developers and for contributing code.&lt;br /&gt;
* [[TDE Weblate Translation Workspace]] user guide: this is the main place for translations.&lt;br /&gt;
* [https://wiki.trinitydesktop.org/Category:Developers#New_to_Trinity_development.3F Developers] section on Wiki&lt;br /&gt;
* [https://www.trinitydesktop.org/helpwanted.php Get involved] page on the main TDE website.&lt;br /&gt;
&lt;br /&gt;
If you want to contribute to this wiki please read the [[TDE Wiki Style Guideline|formatting guidelines]] first. Consider updating pages that contain [[:Category:Pages with outdated information (KDE3)|KDE3-specific]] or [[:Category:Pages with outdated information|outdated]] information.&lt;br /&gt;
&lt;br /&gt;
== Donating ==&lt;br /&gt;
&lt;br /&gt;
Please consider helping with a small donation on our [https://www.trinitydesktop.org/donate.php donations page] if you wish to support the TDE project and its infrastructure, Without your financial assistance, TDE would not be possible! &lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
&lt;br /&gt;
{{:Project RoadMap}}&lt;br /&gt;
&lt;br /&gt;
== Browse the TDE Wiki ==&lt;br /&gt;
&lt;br /&gt;
{| style=width:100%&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;font-weight:bold;font-size:125%;&lt;br /&gt;
|  [[:Category:Installation|Installation]]&lt;br /&gt;
|  [[:Category:Community|Community]]&lt;br /&gt;
&lt;br /&gt;
|- style=background:#EFEFEF;height:3em;vertical-align:top;&lt;br /&gt;
|  {{Category:Installation}}&lt;br /&gt;
|  {{Category:Community}}&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;font-weight:bold;font-size:125%;&lt;br /&gt;
|  [[:Category:Releases|Releases]]&lt;br /&gt;
|  [[:Category:Developers|Developers]]&lt;br /&gt;
&lt;br /&gt;
|- style=background:#EFEFEF;height:3em;vertical-align:top;&lt;br /&gt;
|  {{Category:Releases}}&lt;br /&gt;
|  {{Category:Developers}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;font-weight:bold;font-size:125%;&lt;br /&gt;
|  [[Tips And Tricks]]&lt;br /&gt;
|  [[:Category:Packagers|Packagers]]&lt;br /&gt;
&lt;br /&gt;
|- style=background:#EFEFEF;height:3em;vertical-align:top;&lt;br /&gt;
|  {{:Tips And Tricks}}&lt;br /&gt;
|  {{Category:Packagers}}&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;text-align:center;font-weight:bold;&lt;br /&gt;
|  colspan=2 | [[Special:Categories|Show all Categories in the TDE Wiki]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Trinity_Desktop_Environment&amp;diff=3550</id>
		<title>Trinity Desktop Environment</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Trinity_Desktop_Environment&amp;diff=3550"/>
		<updated>2025-01-28T12:02:46Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Add heading to categories table so that it shows up in TOC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;[http://trinitydesktop.org Trinity Desktop Environment]&amp;#039;&amp;#039;&amp;#039; (TDE) project is a feature rich desktop environment for Unix-like operating systems with a primary goal of retaining a traditional, efficient and productive user interface.&lt;br /&gt;
&lt;br /&gt;
TDE was born as a fork of the K Desktop Environment version 3.5, which was originally written by the KDE Team, a world-wide network of software engineers committed to Free Software development. The name Trinity was chosen because the word means Three as in continuation of KDE 3. Since then, TDE has evolved to be an independent and standalone desktop environment project. Over time, continued development has polished off many rough edges that were present in the final release of KDE 3.5.10 and many new and useful features have been added to keep the environment up-to-date.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current release ==&lt;br /&gt;
&lt;br /&gt;
{{DistroTable}}&lt;br /&gt;
&lt;br /&gt;
The current stable release of TDE is &amp;#039;&amp;#039;&amp;#039;R14.1.3&amp;#039;&amp;#039;&amp;#039;. The key highlights from this release are:&lt;br /&gt;
* initial integration with the XDG Desktop Portal API&lt;br /&gt;
* TDE Control Center module for touchpad settings&lt;br /&gt;
* new mallory twin theme&lt;br /&gt;
* support for window tiling through context menu&lt;br /&gt;
* tde-ebook-reader, a TQt port of FBReader&lt;br /&gt;
* Solarized color themes for Konsole&lt;br /&gt;
* support for back/forward history mouse buttons in various applications&lt;br /&gt;
* support for Python 3.13&lt;br /&gt;
* a TQt for of UniversalIndentGUI to ease source code formatting&lt;br /&gt;
* SFTP connection option for knetattach&lt;br /&gt;
* khotkeys running as a kded module rather than standalone&lt;br /&gt;
* ksirc functional again&lt;br /&gt;
* various enhancements or bug fixes to TQt3 and various applications&lt;br /&gt;
Refer to the [[Release_Notes_For_R14.1.3|full release notes]] for further details and screenshots.&lt;br /&gt;
&lt;br /&gt;
== Contributing ==&lt;br /&gt;
&lt;br /&gt;
The TDE development team is small but friendly. Anyone wanting to join the development process and help create the next TDE release is welcome!&amp;lt;br/&amp;gt;&lt;br /&gt;
You don&amp;#039;t need to be a programmer to do so: you can contribute translations, artwork or other stuff! If you wish to participate, please take a look at the following links:&lt;br /&gt;
* [[TDE Gitea Workspace]]: this is the main place for developers and for contributing code.&lt;br /&gt;
* [[TDE Weblate Translation Workspace]] user guide: this is the main place for translations.&lt;br /&gt;
* [https://wiki.trinitydesktop.org/Category:Developers#New_to_Trinity_development.3F Developers] section on Wiki&lt;br /&gt;
* [https://www.trinitydesktop.org/helpwanted.php Get involved] page on the main TDE website.&lt;br /&gt;
&lt;br /&gt;
If you want to contribute to this wiki please read the [[TDE Wiki Style Guideline|formatting guidelines]] first. Consider updating pages that contain [[:Category:Pages with outdated information (KDE3)|KDE3-specific]] or [[:Category:Pages with outdated information|outdated]] information.&lt;br /&gt;
&lt;br /&gt;
== Donating ==&lt;br /&gt;
&lt;br /&gt;
Please consider helping with a small donation on our [https://www.trinitydesktop.org/donate.php donations page] if you wish to support the TDE project and its infrastructure, Without your financial assistance, TDE would not be possible! &lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
&lt;br /&gt;
{{:Project RoadMap}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Browse the TDE Wiki ==&lt;br /&gt;
&lt;br /&gt;
{| style=width:100%&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;font-weight:bold;font-size:125%;&lt;br /&gt;
|  [[:Category:Installation|Installation]]&lt;br /&gt;
|  [[:Category:Community|Community]]&lt;br /&gt;
&lt;br /&gt;
|- style=background:#EFEFEF;height:3em;vertical-align:top;&lt;br /&gt;
|  {{Category:Installation}}&lt;br /&gt;
|  {{Category:Community}}&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;font-weight:bold;font-size:125%;&lt;br /&gt;
|  [[:Category:Releases|Releases]]&lt;br /&gt;
|  [[:Category:Developers|Developers]]&lt;br /&gt;
&lt;br /&gt;
|- style=background:#EFEFEF;height:3em;vertical-align:top;&lt;br /&gt;
|  {{Category:Releases}}&lt;br /&gt;
|  {{Category:Developers}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;font-weight:bold;font-size:125%;&lt;br /&gt;
|  [[Tips And Tricks]]&lt;br /&gt;
|  [[:Category:Packagers|Packagers]]&lt;br /&gt;
&lt;br /&gt;
|- style=background:#EFEFEF;height:3em;vertical-align:top;&lt;br /&gt;
|  {{:Tips And Tricks}}&lt;br /&gt;
|  {{Category:Packagers}}&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;text-align:center;font-weight:bold;&lt;br /&gt;
|  colspan=2 | [[Special:Categories|Show all Categories in the TDE Wiki]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Project_RoadMap&amp;diff=3549</id>
		<title>Project RoadMap</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Project_RoadMap&amp;diff=3549"/>
		<updated>2025-01-28T12:01:34Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Only include the roadmap table when transcluding page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Developers]]&lt;br /&gt;
&lt;br /&gt;
==Release Schedule and tentative objectives==&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Version 	&lt;br /&gt;
!Date 	&lt;br /&gt;
!Roadmap&lt;br /&gt;
!Release notes&lt;br /&gt;
|-&lt;br /&gt;
|R14.1.2&lt;br /&gt;
|2024-Apr-28&lt;br /&gt;
|&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot; | [https://wiki.trinitydesktop.org/Release_Notes_For_R14.1.2 link]&lt;br /&gt;
|-&lt;br /&gt;
|R14.1.3&lt;br /&gt;
|2024-Oct-27&lt;br /&gt;
|&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot; | [https://wiki.trinitydesktop.org/Release_Notes_For_R14.1.3 link]&lt;br /&gt;
|-&lt;br /&gt;
|R14.1.4 &lt;br /&gt;
|2025-Apr-27&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot; | [https://mirror.git.trinitydesktop.org/gitea/TDE/tde/wiki/General-roadmap-for-R14.1.4 link]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|R14.2.0&lt;br /&gt;
|2028-Apr-30&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot; | [https://mirror.git.trinitydesktop.org/gitea/TDE/tde/wiki/General-roadmap-for-R14.2.0 link]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Trinity_Desktop_Environment&amp;diff=3548</id>
		<title>Trinity Desktop Environment</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Trinity_Desktop_Environment&amp;diff=3548"/>
		<updated>2025-01-28T11:59:51Z</updated>

		<summary type="html">&lt;p&gt;Blu256: /* Roadmap */ Transclude roadmap  in page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;[http://trinitydesktop.org Trinity Desktop Environment]&amp;#039;&amp;#039;&amp;#039; (TDE) project is a feature rich desktop environment for Unix-like operating systems with a primary goal of retaining a traditional, efficient and productive user interface.&lt;br /&gt;
&lt;br /&gt;
TDE was born as a fork of the K Desktop Environment version 3.5, which was originally written by the KDE Team, a world-wide network of software engineers committed to Free Software development. The name Trinity was chosen because the word means Three as in continuation of KDE 3. Since then, TDE has evolved to be an independent and standalone desktop environment project. Over time, continued development has polished off many rough edges that were present in the final release of KDE 3.5.10 and many new and useful features have been added to keep the environment up-to-date.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current release ==&lt;br /&gt;
&lt;br /&gt;
{{DistroTable}}&lt;br /&gt;
&lt;br /&gt;
The current stable release of TDE is &amp;#039;&amp;#039;&amp;#039;R14.1.3&amp;#039;&amp;#039;&amp;#039;. The key highlights from this release are:&lt;br /&gt;
* initial integration with the XDG Desktop Portal API&lt;br /&gt;
* TDE Control Center module for touchpad settings&lt;br /&gt;
* new mallory twin theme&lt;br /&gt;
* support for window tiling through context menu&lt;br /&gt;
* tde-ebook-reader, a TQt port of FBReader&lt;br /&gt;
* Solarized color themes for Konsole&lt;br /&gt;
* support for back/forward history mouse buttons in various applications&lt;br /&gt;
* support for Python 3.13&lt;br /&gt;
* a TQt for of UniversalIndentGUI to ease source code formatting&lt;br /&gt;
* SFTP connection option for knetattach&lt;br /&gt;
* khotkeys running as a kded module rather than standalone&lt;br /&gt;
* ksirc functional again&lt;br /&gt;
* various enhancements or bug fixes to TQt3 and various applications&lt;br /&gt;
Refer to the [[Release_Notes_For_R14.1.3|full release notes]] for further details and screenshots.&lt;br /&gt;
&lt;br /&gt;
== Contributing ==&lt;br /&gt;
&lt;br /&gt;
The TDE development team is small but friendly. Anyone wanting to join the development process and help create the next TDE release is welcome!&amp;lt;br/&amp;gt;&lt;br /&gt;
You don&amp;#039;t need to be a programmer to do so: you can contribute translations, artwork or other stuff! If you wish to participate, please take a look at the following links:&lt;br /&gt;
* [[TDE Gitea Workspace]]: this is the main place for developers and for contributing code.&lt;br /&gt;
* [[TDE Weblate Translation Workspace]] user guide: this is the main place for translations.&lt;br /&gt;
* [https://wiki.trinitydesktop.org/Category:Developers#New_to_Trinity_development.3F Developers] section on Wiki&lt;br /&gt;
* [https://www.trinitydesktop.org/helpwanted.php Get involved] page on the main TDE website.&lt;br /&gt;
&lt;br /&gt;
If you want to contribute to this wiki please read the [[TDE Wiki Style Guideline|formatting guidelines]] first. Consider updating pages that contain [[:Category:Pages with outdated information (KDE3)|KDE3-specific]] or [[:Category:Pages with outdated information|outdated]] information.&lt;br /&gt;
&lt;br /&gt;
== Donating ==&lt;br /&gt;
&lt;br /&gt;
Please consider helping with a small donation on our [https://www.trinitydesktop.org/donate.php donations page] if you wish to support the TDE project and its infrastructure, Without your financial assistance, TDE would not be possible! &lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
&lt;br /&gt;
{{:Project RoadMap}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=width:100%&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;font-weight:bold;font-size:125%;&lt;br /&gt;
|  [[:Category:Installation|Installation]]&lt;br /&gt;
|  [[:Category:Community|Community]]&lt;br /&gt;
&lt;br /&gt;
|- style=background:#EFEFEF;height:3em;vertical-align:top;&lt;br /&gt;
|  {{Category:Installation}}&lt;br /&gt;
|  {{Category:Community}}&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;font-weight:bold;font-size:125%;&lt;br /&gt;
|  [[:Category:Releases|Releases]]&lt;br /&gt;
|  [[:Category:Developers|Developers]]&lt;br /&gt;
&lt;br /&gt;
|- style=background:#EFEFEF;height:3em;vertical-align:top;&lt;br /&gt;
|  {{Category:Releases}}&lt;br /&gt;
|  {{Category:Developers}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;font-weight:bold;font-size:125%;&lt;br /&gt;
|  [[Tips And Tricks]]&lt;br /&gt;
|  [[:Category:Packagers|Packagers]]&lt;br /&gt;
&lt;br /&gt;
|- style=background:#EFEFEF;height:3em;vertical-align:top;&lt;br /&gt;
|  {{:Tips And Tricks}}&lt;br /&gt;
|  {{Category:Packagers}}&lt;br /&gt;
&lt;br /&gt;
|- style=background:#A0CAEF;text-align:center;font-weight:bold;&lt;br /&gt;
|  colspan=2 | [[Special:Categories|Show all Categories in the TDE Wiki]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=User:Blu256&amp;diff=3547</id>
		<title>User:Blu256</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=User:Blu256&amp;diff=3547"/>
		<updated>2025-01-28T11:58:20Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Contact =&lt;br /&gt;
* [[User talk:Blu256|Wiki discussion page]]&lt;br /&gt;
* IRC nick: &amp;lt;tt&amp;gt;blu256&amp;lt;/tt&amp;gt; (Libera.chat)&lt;br /&gt;
* Mail: blu256@proton.me&lt;br /&gt;
&lt;br /&gt;
= TODO list =&lt;br /&gt;
&lt;br /&gt;
Mostly for personal reference. Updated occasionally.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |+ Currently working on...&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Type&lt;br /&gt;
 ! Stage&lt;br /&gt;
 ! Target&lt;br /&gt;
 |-&lt;br /&gt;
 | [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/pulls/576 Aesthetic Kicker improvements]&lt;br /&gt;
 | Feature&lt;br /&gt;
 | Working on this&lt;br /&gt;
 | R14.1.4&lt;br /&gt;
 |-&lt;br /&gt;
 | [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/pulls/550 KXkb: Fixes for issues #547 and #548 and other improvements]&lt;br /&gt;
 | Feature&lt;br /&gt;
 | Working on this&lt;br /&gt;
 | R14.1.4&lt;br /&gt;
 |-&lt;br /&gt;
 | [https://mirror.git.trinitydesktop.org/gitea/TDE/koffice/pulls/76 KOffice CMake port]&lt;br /&gt;
 | Feature&lt;br /&gt;
 | On hold&lt;br /&gt;
 | R14.1.x&lt;br /&gt;
 |-&lt;br /&gt;
 | [https://mirror.git.trinitydesktop.org/gitea/TDE/kaffeine/pulls/13 MPV backend for Kaffeine]&lt;br /&gt;
 | Feature&lt;br /&gt;
 | On hold&lt;br /&gt;
 | R14.1.x&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |+ Misc. Planned Stuff&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Type&lt;br /&gt;
 ! Stage&lt;br /&gt;
 ! Target&lt;br /&gt;
 |-&lt;br /&gt;
 | Active borders and corners for TWin&lt;br /&gt;
 | Feature&lt;br /&gt;
 | Active borders support in [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/pulls/331 TDE/tdebase#331], more work needed for active corners)&lt;br /&gt;
 | Active borders: R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/issues/271 Kate: fix font style checkboxes between different schema font tabs]&lt;br /&gt;
 | Improvement&lt;br /&gt;
 | On hold&lt;br /&gt;
 | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | tdeio-mtp&lt;br /&gt;
 | Feature&lt;br /&gt;
 | On hold&lt;br /&gt;
 | R14.2.0&lt;br /&gt;
 |-&lt;br /&gt;
 | [https://mirror.git.trinitydesktop.org/gitea/TDE/tdelibs/issues/151 Make KSSL use system root certificates]&lt;br /&gt;
 | Improvement&lt;br /&gt;
 | On hold&lt;br /&gt;
 | R14.2.0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== The Big Plans™ ==&lt;br /&gt;
Making no commitments here, but this is what I ultimately would like to work on:&lt;br /&gt;
* TQt: Misc. new useful APIs&lt;br /&gt;
** As soon as CMake port of TQt is complete (the current build system is an undocumented mess)&lt;br /&gt;
** TQJson&lt;br /&gt;
* TDE Emoji picker&lt;br /&gt;
** Not a priority, but an emoji picker would be nice and also very easy to implement after TQt support for Unicode is complete&lt;br /&gt;
* WebKit port&lt;br /&gt;
** Probably two libraries:&lt;br /&gt;
*** TQWebKit: the basic port&lt;br /&gt;
*** TDEWebKit: wrapper with TDE enhancements&lt;br /&gt;
* OAuth support in KMail&lt;br /&gt;
** Literally the only thing stopping me and many GMail users from using it&lt;br /&gt;
** Depends on the WebKit port&lt;br /&gt;
* A multimedia library for TDE&lt;br /&gt;
** Something like Phonon, maybe even Phonon itself&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Category:Developers&amp;diff=3529</id>
		<title>Category:Developers</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Category:Developers&amp;diff=3529"/>
		<updated>2024-12-23T13:45:09Z</updated>

		<summary type="html">&lt;p&gt;Blu256: /* Qt3 and TQt */ rename section to just TQt because a Qt3 section was added below&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This category contains development-related and API documentation for the Trinity Desktop Environment.&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==New to Trinity development?==&lt;br /&gt;
&lt;br /&gt;
Take a look at the following pages:&lt;br /&gt;
&lt;br /&gt;
* [http://trinitydesktop.org/helpwanted.php Getting Involved with Trinity Development]&lt;br /&gt;
* [[TDE Gitea Workspace]]&lt;br /&gt;
* [[TDE Weblate Translation Workspace]]&lt;br /&gt;
* [[Project GIT Information]]&lt;br /&gt;
* [[Project RoadMap]]&lt;br /&gt;
* [[DevelopmentSpecifications]]&lt;br /&gt;
* [https://www.trinitydesktop.org/apidocs.php TQt/TDE API documentation]&lt;br /&gt;
* [[Porting to TDE|Porting KDE3/Qt3 apps to Trinity]]&lt;br /&gt;
&lt;br /&gt;
==Building and Distributing Trinity==&lt;br /&gt;
* [[Nightly Builds|Installing Nightly Builds]]&lt;br /&gt;
* [[How to Build TDE Core Modules]]&lt;br /&gt;
* [[How to Build Extra Applications]]&lt;br /&gt;
&lt;br /&gt;
See also pages in [[:Category:Packagers]].&lt;br /&gt;
&lt;br /&gt;
==Tutorials and Documentation==&lt;br /&gt;
&lt;br /&gt;
===TQt===&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/qt3 TQt API Documentation]&lt;br /&gt;
&lt;br /&gt;
===Trinity===&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/trinity/tdelibs/ TDELibs API Documentation]&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/trinity/tdebase/ TDEBase API Documentation]&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/trinity/tdepim/ TDEPIM API Documentation]&lt;br /&gt;
* [[DCOP]], the IPC system used by TDE applications.&lt;br /&gt;
* [[TDEParts]], a mechanism for reusing and embedding elaborate widgets into applications (e.g. Konqueror)&lt;br /&gt;
* [[TDEIO]], an abstraction that provides network transparency between local and remote filesystems.&lt;br /&gt;
* [[TDEConfig XT Tutorial]]&lt;br /&gt;
* [[TDEConfig Module HOWTO]]&lt;br /&gt;
* [[Debugging TDE applications]]&lt;br /&gt;
* [[Sample Applications]]&lt;br /&gt;
&lt;br /&gt;
===Qt3===&lt;br /&gt;
Information in this section should be used with care, as it was not written for TQt.  However, most of it still applies. If you know of any other interesting Qt3 documentation or tutorials, please add them to this section.&lt;br /&gt;
&lt;br /&gt;
* [https://www.digitalfanatics.org/projects/qt_tutorial/index.html The Independent Qt tutorial] by digitalfanatics.org, an on-line book aiming to cover most topics involved in the process of developing professional quality Qt applications. The text is example driven and filled with lots of tips.&lt;br /&gt;
&lt;br /&gt;
===KDE3===&lt;br /&gt;
Information in this section should be used with care, as it was not written for the current version of Trinity.  However, much of it still applies.  If you know of any other interesting KDE3 documentation or tutorials, please add them to this section.&lt;br /&gt;
&lt;br /&gt;
* [http://api.kde.org/3.5-api/kdelibs-apidocs/index.html KDE 3.5 API Reference]&lt;br /&gt;
: The original API reference, at kde.org&lt;br /&gt;
* [[KDE3 Architecture]]&lt;br /&gt;
: The architecture pages detail how everything was originally supposed to fit together.  Ported from the KDE wiki.&lt;br /&gt;
* [[KDE3 Tutorials]]&lt;br /&gt;
: On everything from using kdevelop to writing dcop-aware applications to creating window themes. Ported from the KDE wiki.&lt;br /&gt;
* [[KDE3 Filesystem Hierarchy]]&lt;br /&gt;
: Ported from the KDE wiki and verified against a working KDE3 instance.&lt;br /&gt;
* [http://www.kde.org/info/requirements/3.5.php KDE3 Compilation Requirements]&lt;br /&gt;
: Mandatory and optional packages for building KDE3, most of which are still used by Trinity.&lt;br /&gt;
&lt;br /&gt;
===Books===&lt;br /&gt;
====C++ GUI Programming with Qt 3====&lt;br /&gt;
Blanchette, Jasmin &amp;amp; Summerfield, Mark. (2015). [https://www.researchgate.net/publication/245591968_C_GUI_Programming_with_Qt_3 C++ GUI Programming with Qt 3]. (ISBN 0-13-124072-2)&lt;br /&gt;
&lt;br /&gt;
Things to note:&lt;br /&gt;
* Names changed from &amp;quot;Qt...&amp;quot; to &amp;quot;TQt...&amp;quot;&lt;br /&gt;
* compiling by hand needs something like &amp;lt;code&amp;gt;g++ a.cpp $(pkgconf tqt --cflags --libs) -lstdc++&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;qmake -project ...&amp;lt;/code&amp;gt; will not include the TDE folders, so you&amp;#039;ll have to add them manually to the *.pro file&lt;br /&gt;
* When in doubt check against the [http://trinitydesktop.org/docs/qt3/ TQt API documentation]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;by [https://mail.trinitydesktop.org/mailman3/hyperkitty/list/users@trinitydesktop.org/thread/AY7MVBPGHOJJUHJEV4NSLSLXG7QKQOEF/ Dr. Nikolaus Klepp]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====GUI Programming with Python: QT Edition====&lt;br /&gt;
Boudewijn Rempt - Copyright © 2001 by Commandprompt, Inc  &lt;br /&gt;
&lt;br /&gt;
The main topic of this book is [http://nclairon.free.fr/documentation/pyqt/book1.htm application development using PyQt.]&lt;br /&gt;
&lt;br /&gt;
==== KDE 2.0 Development ====&lt;br /&gt;
David Sweet, et al. (2002). [http://andamooka.org/~dsweet/kde2dev.pdf KDE 2.0 Development].&lt;br /&gt;
&lt;br /&gt;
Covers, among other things, KDE 2.0 widgets, Qt API, actions, icons, custom widget painting, internationalization, network transparency, KParts, DCOP, aRts/MCOP, ImageIO, OpenGL and Mesa, drag and drop, session management, image manipulation, spell checking, and documentation creation.&lt;br /&gt;
&lt;br /&gt;
Mind the changes that happened between Qt 2 and Qt 3, Qt3 and TQt, KDE 2.x and KDE 3.x and KDE 3.x and TDE.&lt;br /&gt;
&lt;br /&gt;
==== KDE 2/Qt Programming Bible ====&lt;br /&gt;
Arthur Griffith (2000). [https://box.cs.istu.ru/public/docs/devel/qt/kde%202%20-%20QT.pdf KDE 2/Qt Programming Bible]&lt;br /&gt;
&lt;br /&gt;
Covers KDE 2.x and Qt 2 widgets, mouse and keyboard handling, graphic file formats, fonts, colors, drawing and painting with QPainter, graphics manipulation, drag and drop, IPC and applets, internationalization etc.&lt;br /&gt;
&lt;br /&gt;
Also mind the changes that happened between Qt 2 and Qt 3, Qt3 and TQt, KDE 2.x and KDE 3.x and KDE 3.x and TDE.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Category:Developers&amp;diff=3528</id>
		<title>Category:Developers</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Category:Developers&amp;diff=3528"/>
		<updated>2024-12-23T13:44:45Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Add Qt3 tutorial by digitalfanatics.org, remove link to TQt interface page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This category contains development-related and API documentation for the Trinity Desktop Environment.&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==New to Trinity development?==&lt;br /&gt;
&lt;br /&gt;
Take a look at the following pages:&lt;br /&gt;
&lt;br /&gt;
* [http://trinitydesktop.org/helpwanted.php Getting Involved with Trinity Development]&lt;br /&gt;
* [[TDE Gitea Workspace]]&lt;br /&gt;
* [[TDE Weblate Translation Workspace]]&lt;br /&gt;
* [[Project GIT Information]]&lt;br /&gt;
* [[Project RoadMap]]&lt;br /&gt;
* [[DevelopmentSpecifications]]&lt;br /&gt;
* [https://www.trinitydesktop.org/apidocs.php TQt/TDE API documentation]&lt;br /&gt;
* [[Porting to TDE|Porting KDE3/Qt3 apps to Trinity]]&lt;br /&gt;
&lt;br /&gt;
==Building and Distributing Trinity==&lt;br /&gt;
* [[Nightly Builds|Installing Nightly Builds]]&lt;br /&gt;
* [[How to Build TDE Core Modules]]&lt;br /&gt;
* [[How to Build Extra Applications]]&lt;br /&gt;
&lt;br /&gt;
See also pages in [[:Category:Packagers]].&lt;br /&gt;
&lt;br /&gt;
==Tutorials and Documentation==&lt;br /&gt;
&lt;br /&gt;
===Qt3 and TQt===&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/qt3 TQt API Documentation]&lt;br /&gt;
&lt;br /&gt;
===Trinity===&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/trinity/tdelibs/ TDELibs API Documentation]&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/trinity/tdebase/ TDEBase API Documentation]&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/trinity/tdepim/ TDEPIM API Documentation]&lt;br /&gt;
* [[DCOP]], the IPC system used by TDE applications.&lt;br /&gt;
* [[TDEParts]], a mechanism for reusing and embedding elaborate widgets into applications (e.g. Konqueror)&lt;br /&gt;
* [[TDEIO]], an abstraction that provides network transparency between local and remote filesystems.&lt;br /&gt;
* [[TDEConfig XT Tutorial]]&lt;br /&gt;
* [[TDEConfig Module HOWTO]]&lt;br /&gt;
* [[Debugging TDE applications]]&lt;br /&gt;
* [[Sample Applications]]&lt;br /&gt;
&lt;br /&gt;
===Qt3===&lt;br /&gt;
Information in this section should be used with care, as it was not written for TQt.  However, most of it still applies. If you know of any other interesting Qt3 documentation or tutorials, please add them to this section.&lt;br /&gt;
&lt;br /&gt;
* [https://www.digitalfanatics.org/projects/qt_tutorial/index.html The Independent Qt tutorial] by digitalfanatics.org, an on-line book aiming to cover most topics involved in the process of developing professional quality Qt applications. The text is example driven and filled with lots of tips.&lt;br /&gt;
&lt;br /&gt;
===KDE3===&lt;br /&gt;
Information in this section should be used with care, as it was not written for the current version of Trinity.  However, much of it still applies.  If you know of any other interesting KDE3 documentation or tutorials, please add them to this section.&lt;br /&gt;
&lt;br /&gt;
* [http://api.kde.org/3.5-api/kdelibs-apidocs/index.html KDE 3.5 API Reference]&lt;br /&gt;
: The original API reference, at kde.org&lt;br /&gt;
* [[KDE3 Architecture]]&lt;br /&gt;
: The architecture pages detail how everything was originally supposed to fit together.  Ported from the KDE wiki.&lt;br /&gt;
* [[KDE3 Tutorials]]&lt;br /&gt;
: On everything from using kdevelop to writing dcop-aware applications to creating window themes. Ported from the KDE wiki.&lt;br /&gt;
* [[KDE3 Filesystem Hierarchy]]&lt;br /&gt;
: Ported from the KDE wiki and verified against a working KDE3 instance.&lt;br /&gt;
* [http://www.kde.org/info/requirements/3.5.php KDE3 Compilation Requirements]&lt;br /&gt;
: Mandatory and optional packages for building KDE3, most of which are still used by Trinity.&lt;br /&gt;
&lt;br /&gt;
===Books===&lt;br /&gt;
====C++ GUI Programming with Qt 3====&lt;br /&gt;
Blanchette, Jasmin &amp;amp; Summerfield, Mark. (2015). [https://www.researchgate.net/publication/245591968_C_GUI_Programming_with_Qt_3 C++ GUI Programming with Qt 3]. (ISBN 0-13-124072-2)&lt;br /&gt;
&lt;br /&gt;
Things to note:&lt;br /&gt;
* Names changed from &amp;quot;Qt...&amp;quot; to &amp;quot;TQt...&amp;quot;&lt;br /&gt;
* compiling by hand needs something like &amp;lt;code&amp;gt;g++ a.cpp $(pkgconf tqt --cflags --libs) -lstdc++&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;qmake -project ...&amp;lt;/code&amp;gt; will not include the TDE folders, so you&amp;#039;ll have to add them manually to the *.pro file&lt;br /&gt;
* When in doubt check against the [http://trinitydesktop.org/docs/qt3/ TQt API documentation]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;by [https://mail.trinitydesktop.org/mailman3/hyperkitty/list/users@trinitydesktop.org/thread/AY7MVBPGHOJJUHJEV4NSLSLXG7QKQOEF/ Dr. Nikolaus Klepp]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====GUI Programming with Python: QT Edition====&lt;br /&gt;
Boudewijn Rempt - Copyright © 2001 by Commandprompt, Inc  &lt;br /&gt;
&lt;br /&gt;
The main topic of this book is [http://nclairon.free.fr/documentation/pyqt/book1.htm application development using PyQt.]&lt;br /&gt;
&lt;br /&gt;
==== KDE 2.0 Development ====&lt;br /&gt;
David Sweet, et al. (2002). [http://andamooka.org/~dsweet/kde2dev.pdf KDE 2.0 Development].&lt;br /&gt;
&lt;br /&gt;
Covers, among other things, KDE 2.0 widgets, Qt API, actions, icons, custom widget painting, internationalization, network transparency, KParts, DCOP, aRts/MCOP, ImageIO, OpenGL and Mesa, drag and drop, session management, image manipulation, spell checking, and documentation creation.&lt;br /&gt;
&lt;br /&gt;
Mind the changes that happened between Qt 2 and Qt 3, Qt3 and TQt, KDE 2.x and KDE 3.x and KDE 3.x and TDE.&lt;br /&gt;
&lt;br /&gt;
==== KDE 2/Qt Programming Bible ====&lt;br /&gt;
Arthur Griffith (2000). [https://box.cs.istu.ru/public/docs/devel/qt/kde%202%20-%20QT.pdf KDE 2/Qt Programming Bible]&lt;br /&gt;
&lt;br /&gt;
Covers KDE 2.x and Qt 2 widgets, mouse and keyboard handling, graphic file formats, fonts, colors, drawing and painting with QPainter, graphics manipulation, drag and drop, IPC and applets, internationalization etc.&lt;br /&gt;
&lt;br /&gt;
Also mind the changes that happened between Qt 2 and Qt 3, Qt3 and TQt, KDE 2.x and KDE 3.x and KDE 3.x and TDE.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Kmail&amp;diff=3461</id>
		<title>Kmail</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Kmail&amp;diff=3461"/>
		<updated>2024-09-25T15:31:37Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Blu256 moved page Kmail to KMail: Fix capitalization&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[KMail]]&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=KMail&amp;diff=3460</id>
		<title>KMail</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=KMail&amp;diff=3460"/>
		<updated>2024-09-25T15:31:37Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Blu256 moved page Kmail to KMail: Fix capitalization&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Diego Vadell 3.jpg|right|thumb|200px|A user screenshot showing KMail]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;KMail&amp;#039;&amp;#039;&amp;#039; is the e-mail client of Trinity Desktop. It is part of the &amp;lt;tt&amp;gt;tdepim&amp;lt;/tt&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
The Kontact suite integrates KMail as its embedded e-mail client.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
* You must install and set up the TDE Wallets subsystem to be able to use KMail, but you can make wallets open automatically without entering a password if you don&amp;#039;t care about TDE Wallets.&lt;br /&gt;
&lt;br /&gt;
* You can use a specific outgoing account for a specific identity. (see &amp;lt;code&amp;gt;Settings &amp;gt; Identities &amp;gt; Modify &amp;gt; Advanced &amp;gt; Special transport&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Filters ==&lt;br /&gt;
&lt;br /&gt;
KMail supports e-mail filters. Filters are automated actions that are performed on a folder when new mail arrives, or manually by the user.&lt;br /&gt;
&lt;br /&gt;
=== Advanced example: Automatically decrypt and sanitize incoming mail ===&lt;br /&gt;
&lt;br /&gt;
This is an example how to create a filter in KMail that removes unwanted headers and automatically decrypts incoming mails, so that mail passes through the transport encrypted, but is stored decrypted on the disk.&lt;br /&gt;
&lt;br /&gt;
1. Download [[File:Kmail-decrypt-and-sanitise-mail.gz]] and place it in your &amp;lt;tt&amp;gt;~/bin&amp;lt;/tt&amp;gt; folder or any place else suitable for you, extract the archive and make the extracted script executeable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ wget https://wiki.trinitydesktop.org/images/c/c1/Kmail-decrypt-and-sanitise-mail.gz&lt;br /&gt;
$ tar xf Kmail-decrypt-and-sanitise-mail.gz&lt;br /&gt;
$ mv kmail-decrypt-and-sanitise-mail /path/to/destination&lt;br /&gt;
$ chmod a+x /path/to/destination/kmail-decrypt-and-sanitise-mail&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Open KMail, go to &amp;lt;code&amp;gt;Settings &amp;gt; Configure Filters&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3. Create a new filter, name it as you like and move it to the top of the list.&lt;br /&gt;
&lt;br /&gt;
4. On the &amp;quot;General&amp;quot; tab leave &amp;quot;Filter Criteria&amp;quot; empty.&lt;br /&gt;
&lt;br /&gt;
5. Set &amp;quot;Filter Actions&amp;quot; to &amp;quot;Pipe Through&amp;quot; and set the program path to &amp;lt;tt&amp;gt;/path/to/destination/kmail-decrypt-and-sanitise-mail&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
6. On the &amp;quot;Advanced&amp;quot; tab uncheck &amp;quot;If this filter matches, stop processing here&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now all incoming mails get decrypted by default (if a key is present), and some tags (find them on line 45 of the script) are removed (X-UI-Filterresults:, X-GMX-Antivirus:, …).&lt;br /&gt;
&lt;br /&gt;
You can further modify the script to include other automated actions.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
* KMail does not support OAuth2 yet, which is required by Google and some other e-mail providers. You can try setting up an OAuth2 proxy or use another e-mail client meanwhile.&lt;br /&gt;
&lt;br /&gt;
* Configuring a transport server with a reply address is bugged and doesn&amp;#039;t work.&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=KMail&amp;diff=3459</id>
		<title>KMail</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=KMail&amp;diff=3459"/>
		<updated>2024-09-25T15:28:28Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Improve page structure and wording, add screenshot, merge content from Kmail Sanitize and Decrypt Mails&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Diego Vadell 3.jpg|right|thumb|200px|A user screenshot showing KMail]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;KMail&amp;#039;&amp;#039;&amp;#039; is the e-mail client of Trinity Desktop. It is part of the &amp;lt;tt&amp;gt;tdepim&amp;lt;/tt&amp;gt; package.&lt;br /&gt;
&lt;br /&gt;
The Kontact suite integrates KMail as its embedded e-mail client.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
* You must install and set up the TDE Wallets subsystem to be able to use KMail, but you can make wallets open automatically without entering a password if you don&amp;#039;t care about TDE Wallets.&lt;br /&gt;
&lt;br /&gt;
* You can use a specific outgoing account for a specific identity. (see &amp;lt;code&amp;gt;Settings &amp;gt; Identities &amp;gt; Modify &amp;gt; Advanced &amp;gt; Special transport&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Filters ==&lt;br /&gt;
&lt;br /&gt;
KMail supports e-mail filters. Filters are automated actions that are performed on a folder when new mail arrives, or manually by the user.&lt;br /&gt;
&lt;br /&gt;
=== Advanced example: Automatically decrypt and sanitize incoming mail ===&lt;br /&gt;
&lt;br /&gt;
This is an example how to create a filter in KMail that removes unwanted headers and automatically decrypts incoming mails, so that mail passes through the transport encrypted, but is stored decrypted on the disk.&lt;br /&gt;
&lt;br /&gt;
1. Download [[File:Kmail-decrypt-and-sanitise-mail.gz]] and place it in your &amp;lt;tt&amp;gt;~/bin&amp;lt;/tt&amp;gt; folder or any place else suitable for you, extract the archive and make the extracted script executeable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ wget https://wiki.trinitydesktop.org/images/c/c1/Kmail-decrypt-and-sanitise-mail.gz&lt;br /&gt;
$ tar xf Kmail-decrypt-and-sanitise-mail.gz&lt;br /&gt;
$ mv kmail-decrypt-and-sanitise-mail /path/to/destination&lt;br /&gt;
$ chmod a+x /path/to/destination/kmail-decrypt-and-sanitise-mail&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Open KMail, go to &amp;lt;code&amp;gt;Settings &amp;gt; Configure Filters&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3. Create a new filter, name it as you like and move it to the top of the list.&lt;br /&gt;
&lt;br /&gt;
4. On the &amp;quot;General&amp;quot; tab leave &amp;quot;Filter Criteria&amp;quot; empty.&lt;br /&gt;
&lt;br /&gt;
5. Set &amp;quot;Filter Actions&amp;quot; to &amp;quot;Pipe Through&amp;quot; and set the program path to &amp;lt;tt&amp;gt;/path/to/destination/kmail-decrypt-and-sanitise-mail&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
6. On the &amp;quot;Advanced&amp;quot; tab uncheck &amp;quot;If this filter matches, stop processing here&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now all incoming mails get decrypted by default (if a key is present), and some tags (find them on line 45 of the script) are removed (X-UI-Filterresults:, X-GMX-Antivirus:, …).&lt;br /&gt;
&lt;br /&gt;
You can further modify the script to include other automated actions.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
* KMail does not support OAuth2 yet, which is required by Google and some other e-mail providers. You can try setting up an OAuth2 proxy or use another e-mail client meanwhile.&lt;br /&gt;
&lt;br /&gt;
* Configuring a transport server with a reply address is bugged and doesn&amp;#039;t work.&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Tips_And_Tricks&amp;diff=3379</id>
		<title>Tips And Tricks</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Tips_And_Tricks&amp;diff=3379"/>
		<updated>2024-08-15T20:30:06Z</updated>

		<summary type="html">&lt;p&gt;Blu256: /* Application tricks */ Make Kate commands table collapsed by default&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant as a container of tips and tricks collected over time, addressing topics and issues brought up by TDE users.&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also see the users&amp;#039; [[User FAQ | Frequently Asked Questions]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Installing Trinity ==&lt;br /&gt;
Tips and tricks relevant to obtaining a well-functioning Trinity installation.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading from older versions or KDE3 ===&lt;br /&gt;
&lt;br /&gt;
==== Upgrading from KDE3 or from TDE 3.5.x to R14.0.x ====&lt;br /&gt;
If you are migrating from KDE3 or upgrading from TDE 3.5.x, you can reuse your own settings in TDE R14.0.x.&lt;br /&gt;
When logging into R14.0.x for the first time, TDE will automatically execute a script which will migrate as many of your KDE3/TDE3.5.x settings as possible. At the end of the process, your KDE3/TDE3.5.x profile will still exist (unchanged) and a new TDE profile will have been created inside the &amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;~/.trinity&amp;#039;&amp;#039;&amp;#039;&amp;lt;/tt&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
{{TipBox&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=Please refrain from renaming your &amp;lt;tt&amp;gt;.kde&amp;lt;/tt&amp;gt; into &amp;lt;tt&amp;gt;.trinity&amp;lt;/tt&amp;gt; before running R14.0.x. If you do so, the migration process will not take part and some applications may not run smoothly after that. See [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2356 here] for an example of problems that may arise if you rename your &amp;lt;tt&amp;gt;.kde&amp;lt;/tt&amp;gt; folder manually.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Upgrading from an old version (pre Dec/2014) ====&lt;br /&gt;
Depending on your previous version of TDE, the file /etc/trinity/tdm/tdmrc may change from a script-generated file to a config file.&lt;br /&gt;
It is advisable to accept the newer file if you are upgrading from an old version to TDE &amp;gt;= R14.0.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Configuring Trinity ==&lt;br /&gt;
Tips and tricks for custom fine-tuning and configurations.&lt;br /&gt;
&lt;br /&gt;
=== Using sudo and tdesudo ===&lt;br /&gt;
If you use sudo or a sudo-based distribution (such as Ubuntu), it is highly recommended that you install the &amp;lt;tt&amp;gt;tdesudo-trinity&amp;lt;/tt&amp;gt; package as well. This allows to run programs that require root priviledge from the TDE menu using your own password.&lt;br /&gt;
If &amp;lt;tt&amp;gt;tdesudo-trinity&amp;lt;/tt&amp;gt; is not installed, you will be asked for the root password instead.&lt;br /&gt;
More details can be found [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2563 here].&lt;br /&gt;
&lt;br /&gt;
=== Un-Bogging down an older system ===&lt;br /&gt;
Your system runs pretty well until Firefox, an office application, or some other application with high CPU usage demands too many cycles and your system then ‘freezes’ for seconds or minutes until the application gets finished.&lt;br /&gt;
&lt;br /&gt;
A simple, but somewhat tedious, solution is to add &amp;lt;code&amp;gt;nice&amp;lt;/code&amp;gt; to the launcher for each. Using LibreOffice as an example, add &amp;lt;code&amp;gt;nice -n 2&amp;lt;/code&amp;gt; before the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;TDE Menu &amp;gt;&amp;gt; Office &amp;gt;&amp;gt; LibreOffice &amp;gt;&amp;gt; {right click} &amp;gt;&amp;gt; Edit Item&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change the ‘Command’ entry from &amp;lt;code&amp;gt;libreoffice %U&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;nice -n 2 libreoffice %U&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Then find every other entry for LibreOffice (LibreOffice Base, LibreOffice Draw, LibreOffice Math, LibreOffice Impress, etc.) and do the same.&lt;br /&gt;
&lt;br /&gt;
Other ‘usual suspects’ to make nice are: browsers, BitTorrent clients, GUI Diff tools, and, occasionally, PDF viewers.&lt;br /&gt;
&lt;br /&gt;
Generally anything ‘real-time’ you should leave alone (movies, games, editors).&lt;br /&gt;
&lt;br /&gt;
These were used on a Core2 Duo (P7570 @ 2.26GHz, CPU Mark: 926):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
!Nice level&lt;br /&gt;
!Application Name&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Kmail&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|LibreOffice&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Firefox&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|qBittorrent&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Assigning a mouse click as part of a keyboard shortcut ===&lt;br /&gt;
There are multiple ways to accomplish this.  The best arguably was the first method, which has been lost to time.&lt;br /&gt;
&lt;br /&gt;
In these examples we are trying to achieve:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{Windows Key} + {left mouse click} = Minimize application under mouse cursor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change what you need to achieve what you want.&lt;br /&gt;
&lt;br /&gt;
==== Method 1: Lost ====&lt;br /&gt;
&lt;br /&gt;
As the name says it’s been lost.  What is remembered is that:&lt;br /&gt;
&lt;br /&gt;
* No additional software had to be installed&lt;br /&gt;
* The change was exceedingly minor.&lt;br /&gt;
&lt;br /&gt;
==== Method 2: &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt; + &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Buggy. This works, but the &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; command used occasionally leaves an unfinished half-keystroke hanging.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 1.&amp;#039;&amp;#039;&amp;#039; Go to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Regional &amp;amp; Accessibility &amp;gt;&amp;gt; Keyboard Shortcuts &amp;gt;&amp;gt; Shortcuts Schemes &amp;gt;&amp;gt; Global Shortcuts &amp;gt;&amp;gt; Windows&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set &amp;quot;Minimize Window&amp;quot; to “Win+Space”.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 2.&amp;#039;&amp;#039;&amp;#039; Issue these command(s) as root or using sudo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# apt-get install xbindkeys&lt;br /&gt;
# apt-get install xdotool&lt;br /&gt;
# apt-get install xbindkeys-config # optional&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 3.&amp;#039;&amp;#039;&amp;#039; Edit &amp;lt;tt&amp;gt;$HOME/.xbindkeysrc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Add the following lines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &amp;#039;shell&amp;#039; is probably the closest match(?) --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#MinimizeWindowUnderMouse&lt;br /&gt;
&amp;quot;xdotool click --clearmodifiers 1 key super+space&amp;quot;&lt;br /&gt;
   m:0x40 + c:133 + b:1 + release&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=xbindkeys does not like superfluous comments within its definitions. Leaving prior entries commented out within the config definition caused odd and inconsistent results.&lt;br /&gt;
 |icon=Messagebox_info.png&lt;br /&gt;
 |background=#E9F0FF&lt;br /&gt;
 |highlight=#93B2FF&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 4.&amp;#039;&amp;#039;&amp;#039; Issue these commands as yourself (not as root):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ killall xbindkeys&lt;br /&gt;
$ xbindkeys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 5.&amp;#039;&amp;#039;&amp;#039; To minimize any window:&lt;br /&gt;
&lt;br /&gt;
Move the cursor over a window, hold down the Windows key and click the left mouse button.&lt;br /&gt;
&lt;br /&gt;
==== Method 3: &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;dcop&amp;lt;/tt&amp;gt; and/or &amp;lt;tt&amp;gt;gdbus&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Basically the same as &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt; + &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; but replacing &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; with either a &amp;lt;tt&amp;gt;dcop&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;gdbus&amp;lt;/tt&amp;gt; command. This is probably less ‘buggy’ than &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt;, but unfortunately the writer doesn’t understand enough about either to make this work.&lt;br /&gt;
&lt;br /&gt;
=== Enabling image thumbnails in Konqueror for external devices opened via popup after plugging in ===&lt;br /&gt;
&lt;br /&gt;
When an external device (e.g. USB flash drive) is plugged in, choosing &amp;quot;Open in New Window&amp;quot; in the TDE popup window will open the device under the &amp;lt;tt&amp;gt;system:/&amp;lt;/tt&amp;gt; path prefix. Image thumbnail display is not enabled per default for this location type in Konqueror. To enable image thumbnails for &amp;lt;tt&amp;gt;system:/&amp;lt;/tt&amp;gt; paths, adhere to the following:&lt;br /&gt;
&lt;br /&gt;
# In Konqueror from the menubar select &amp;lt;code&amp;gt;Settings &amp;gt;&amp;gt; Configure Konqueror...&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Select &amp;lt;code&amp;gt;Previews &amp;amp; Metadata&amp;lt;/code&amp;gt; on the left.&lt;br /&gt;
# Under &amp;lt;code&amp;gt;Local Protocols&amp;lt;/code&amp;gt; tick the checkbox for &amp;lt;code&amp;gt;system&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Look and feel ==&lt;br /&gt;
Tips and tricks concerning the appearance of Trinity desktop and applications.&lt;br /&gt;
&lt;br /&gt;
=== Adding a separator between windows button in the title bar ===&lt;br /&gt;
Open &amp;lt;code&amp;gt;TDE Control Center &amp;gt;&amp;gt; Appearance &amp;amp; Themes &amp;gt;&amp;gt; Window Decorations&amp;lt;/code&amp;gt; and then select the &amp;lt;code&amp;gt;Buttons&amp;lt;/code&amp;gt; tab.&lt;br /&gt;
&lt;br /&gt;
In the middle of the screen there is a list of available buttons. Drag a separator (&amp;lt;code&amp;gt;--- spacer ---&amp;lt;/code&amp;gt;) on the title bar of the sample window, between the buttons where you want to space to appear.&lt;br /&gt;
&lt;br /&gt;
Check the preview in the bottom part of the window and modify again as required.&lt;br /&gt;
&lt;br /&gt;
Confirm when done.&lt;br /&gt;
&lt;br /&gt;
=== Enlarging Kicker taskbar buttons to only occupy a single row ===&lt;br /&gt;
&lt;br /&gt;
When the configured Kicker panel size surpasses a certain pixel count, the taskbar will start getting segmented into multiple rows, leading to taskbar buttons being placed in a grid.&lt;br /&gt;
To prevent this, the minimum height of taskbar buttons can be increased to enforce a single row of taskbar buttons.&lt;br /&gt;
&lt;br /&gt;
To achieve this, you have to add the following line into section &amp;lt;tt&amp;gt;[General]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/ktaskbarrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
MinimumButtonHeight=38&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Select a &amp;lt;tt&amp;gt;MinimumButtonHeight&amp;lt;/tt&amp;gt; that matches the pixel size of the Kicker panel as configured in &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels &amp;gt;&amp;gt; Arrangement&amp;lt;/code&amp;gt; (when the size is set to &amp;quot;Custom&amp;quot;).&lt;br /&gt;
Restart the Kicker panel after changing the configuration line.&lt;br /&gt;
&lt;br /&gt;
As an example, for a panel height of 38 pixels this adjustment can be done via Konsole (or another terminal emulator) in the following manner:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/ktaskbarrc --group General --key MinimumButtonHeight 38&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hint: you may also additionally set &amp;lt;code&amp;gt;MinimumButtonWidth&amp;lt;/code&amp;gt; in the same group to control how much minimum horizontal space (in pixels) a single taskbar button should occupy on its own.&lt;br /&gt;
&lt;br /&gt;
=== Removing captions from K-Menu ===&lt;br /&gt;
You have to add the following line into section &amp;lt;tt&amp;gt;[menus]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/kickerrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
ShowMenuTitles=false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You also have to restart Kicker for the change to take effect.&lt;br /&gt;
&lt;br /&gt;
The quickest way to do all of this is via Konsole (or another terminal emulator):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/kickerrc --group menus --key ShowMenuTitles false&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increasing icon size in K-Menu ===&lt;br /&gt;
You have to add the following line into section &amp;lt;tt&amp;gt;[menus]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/kickerrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
MenuEntryHeight=22&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can adjust the number to any icon size you see fit. You have to restart Kicker for the change to take effect.&lt;br /&gt;
&lt;br /&gt;
The quickest way to do all of this is via Konsole (or another terminal emulator):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/kickerrc --group menus --key MenuEntryHeight 22&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using a custom side image for classic K-Menu ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;The following only applies to the classic K-Menu enabled by setting &amp;quot;TDE menu style&amp;quot; to &amp;quot;Trinity Classic&amp;quot; in the &amp;quot;Menus&amp;quot; section of &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels&amp;lt;/code&amp;gt;.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# Create &amp;lt;code&amp;gt;$TDEHOME/share/apps/kicker/pics/&amp;lt;/code&amp;gt; if it doesn&amp;#039;t exist.&lt;br /&gt;
# Place custom &amp;lt;code&amp;gt;kside.png&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kside_tile.png&amp;lt;/code&amp;gt; files into &amp;lt;code&amp;gt;$TDEHOME/share/apps/kicker/pics/&amp;lt;/code&amp;gt;.&lt;br /&gt;
# In &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels&amp;lt;/code&amp;gt; under &amp;quot;Menus&amp;quot; enable &amp;quot;Show side image&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;kside.png&amp;lt;/code&amp;gt; is the side image itself, while &amp;lt;code&amp;gt;kside_tile.png&amp;lt;/code&amp;gt; is the image that fills the space above the side image if the latter does not fully fit the menu.&lt;br /&gt;
&lt;br /&gt;
Hint: you may find the default &amp;lt;tt&amp;gt;kside.png&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;kside_tile.png&amp;lt;/tt&amp;gt; files within &amp;lt;tt&amp;gt;$TDEDIR/share/apps/kicker/pics/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Changes to the image files will only apply when the Kicker gets restarted. To trigger this, you can use &amp;lt;code&amp;gt;dcop kicker kicker restart&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Using a custom image for the logout prompt ===&lt;br /&gt;
&lt;br /&gt;
# Create &amp;lt;code&amp;gt;$TDEHOME/share/apps/ksmserver/pics/&amp;lt;/code&amp;gt; if it doesn&amp;#039;t exist.&lt;br /&gt;
# Place a custom &amp;lt;code&amp;gt;shutdownkonq.png&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;$TDEHOME/share/apps/ksmserver/pics/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hint: you may find the default image within &amp;lt;tt&amp;gt;$TDEDIR/share/apps/ksmserver/pics/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Use another window manager with TDE ===&lt;br /&gt;
It is possible to use TDE with a different window manager than the one which comes by default. There are a lot of window managers out there, though, so TDE might not recognize their presence and thus not offer them as a choice in the Control Center. This is the case when you can use the advanced methods mentioned here to use TDE with another WM.&lt;br /&gt;
&lt;br /&gt;
[[File:TDE+E16 thumb.png|thumb|link=File:TDE+E16.png|Trinity Desktop with E16 as window manager]]&lt;br /&gt;
&lt;br /&gt;
==== Method 1: the easy way ====&lt;br /&gt;
The easy way is, of course, to go to &amp;lt;code&amp;gt;TDE Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Window decorations&amp;lt;/code&amp;gt;, switch to the Window Manager tab and then select your preferred window manager from the drop-down menu.&lt;br /&gt;
&lt;br /&gt;
==== Method 2: autostart TDE components from WM ====&lt;br /&gt;
You can autostart Trinity and the components you need if your window manager supports autostart. In this case the window manager is started first. An &amp;lt;tt&amp;gt;.xinitrc&amp;lt;/tt&amp;gt; file can also do the trick.&lt;br /&gt;
&lt;br /&gt;
Make sure your window manager executes the first command (and any of the other ones for other desktop components you might want to use). For a more-or-less complete TDE session use all of them:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Command&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;starttde&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;(required) Initializes required Trinity components.&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;kicker &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;The Kicker panel.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;kdesktop --waitforkded &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;The Desktop.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;khotkeys &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;Keyboard shortcuts handler.&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;&amp;#039;&amp;#039;(* Trinity apps would do this anyway, but it&amp;#039;s nice to have it ready for them.)&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As for starting the WM itself, you can choose to use your window manager&amp;#039;s session via your display manager.&lt;br /&gt;
&lt;br /&gt;
Note that this is not considered a full TDE session and that your mileage may vary. For a better way of handling this see Method 2 below.&lt;br /&gt;
&lt;br /&gt;
==== Method 3: using WM as part of a TDE session ====&lt;br /&gt;
You can make TDE use your window manager instead of TWin by passing an environment variable to the &amp;lt;tt&amp;gt;starttde&amp;lt;/tt&amp;gt; script. This variable is named &amp;lt;code&amp;gt;$TDEWM&amp;lt;/code&amp;gt; and accepts the executable name (or full path) of your window manager. For example, to start TDE with Fluxbox as a window manager:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ TDEWM=fluxbox startx /opt/trinity/starttde # adjust to your system&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=Due to a mistake, Trinity releases before R14.0.11 use the &amp;lt;code&amp;gt;$TWIN&amp;lt;/code&amp;gt; variable instead.&lt;br /&gt;
 |icon=Messagebox_info.png&lt;br /&gt;
 |background=#E9F0FF&lt;br /&gt;
 |highlight=#93B2FF&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To make this permanent:&lt;br /&gt;
&lt;br /&gt;
* If you use a &amp;lt;tt&amp;gt;.xinitrc&amp;lt;/tt&amp;gt; file, then the only thing to do is to put the line there.&lt;br /&gt;
* If you use a display manager, you&amp;#039;ll need to create a script and an X session file.&lt;br /&gt;
&lt;br /&gt;
Create a script like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
export TDEWM=your_window_manager # for R14.0.11 and higher&lt;br /&gt;
export TWIN=your_window_manager  # for pre-R14.0.11 TDE versions&lt;br /&gt;
exec starttde&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;your_window_manager&amp;lt;/code&amp;gt; with the correct value. Save it and make it executable.&lt;br /&gt;
&lt;br /&gt;
Then, create a .desktop file in &amp;lt;tt&amp;gt;/usr/share/xsessions&amp;lt;/tt&amp;gt;, like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Type=XSession&lt;br /&gt;
Name=(Session name)&lt;br /&gt;
Comment=(An optional session comment)&lt;br /&gt;
Exec=/path/to/the/script/you/just/saved&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Insert the values as needed. Save it and logout. From the sessions menu choose the session you just created. Login normally. TDE should start with the window manager of your choice.&lt;br /&gt;
&lt;br /&gt;
=== Changing alternating row colors ===&lt;br /&gt;
Alternating row colors in Konqueror, KMail, and probably a lot more, can be set in the Colors section of Trinity Control Center:&lt;br /&gt;
&amp;lt;code&amp;gt;TCC &amp;gt;&amp;gt; Appearance &amp;amp; Themes &amp;gt;&amp;gt; Colors &amp;gt;&amp;gt; Widget Color &amp;gt;&amp;gt; [Dropdown] Alternate Background in Lists&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Application tricks ==&lt;br /&gt;
Tips and tricks concerning Trinity applications (such as KMail, Kopete, Amarok etc.)&lt;br /&gt;
&lt;br /&gt;
=== Kmail: Sanitize and Decrypt E-Mails ===&lt;br /&gt;
[[Kmail_Sanitize_and_Decrypt_Mails|Kmail Sanitize and Decrypt Mails]] shows an example on how to create a filter in kmail that removes unwanted headers and automaticly decrypts incomming mails.&lt;br /&gt;
&lt;br /&gt;
=== Kate: Using the built-in command line ===&lt;br /&gt;
You can quickly apply some special settings to an open file without leaving your keyboard, by using the built-in command line in any application that uses the Kate editing part (e.g. Kate itself, KWrite, TDevelop). Press F7 to open it. It will show as a single text field below the document. When you enter a command, it will automatically offer completions, so no need to worry if you are not sure about a command&amp;#039;s name (or sometimes even arguments!). Also, the prompt preserves the history of previous successful command runs, which can be navigated using Up/Down movement keys.&lt;br /&gt;
&lt;br /&gt;
You can apply one command per time, the syntax is &amp;lt;code&amp;gt;COMMAND [ARGUMENTS...]&amp;lt;/code&amp;gt;. You can set the values for all the variables that you can set through the modeline comment prefixed with &amp;quot;set-&amp;quot; (see the relevant section in the Kate documentation if unsure).&lt;br /&gt;
&lt;br /&gt;
For example, to automatically replace tabs with spaces you can enter: &amp;lt;code&amp;gt;set-replace-tabs true&amp;lt;/code&amp;gt;.&lt;br /&gt;
To set tab width to 4 spaces: &amp;lt;code&amp;gt;set-tab-width 4&amp;lt;/code&amp;gt;.&lt;br /&gt;
To change the highlighting to Python: &amp;lt;code&amp;gt;set-highlighting Python&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Of course, the built-in command line also comes with some more advanced commands. External tools and plugins can also add their own commands! You can get a full list of available commands by running &amp;lt;code&amp;gt;help list&amp;lt;/code&amp;gt; and get help related to a command by running &amp;lt;code&amp;gt;help &amp;lt;command&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
See the table below for some useful commands:&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
!Command&lt;br /&gt;
!Arguments&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|help&lt;br /&gt;
|[command]&lt;br /&gt;
|Show a help message in a tooltip. If no argument is provided, shows a generic help message on using the command line. If the special argument &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt; is specified, lists all available commands. If a command name is provided, tries to find help information related to that command.&lt;br /&gt;
|-&lt;br /&gt;
|char&lt;br /&gt;
|hex, octal or base 9+1&lt;br /&gt;
|Inserts a Unicode or ASCII character based on its numeric value (e.g. 0x1234, x1234, 01231, 1234).&lt;br /&gt;
|-&lt;br /&gt;
|date&lt;br /&gt;
|[format string]&lt;br /&gt;
|Inserts current date according to the specified format string. If invalid, the default (&amp;lt;code&amp;gt;yyyy-MM-dd hh:mm:ss&amp;lt;/code&amp;gt;) is used instead.&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|[:[bcerpsw]] string&lt;br /&gt;
|Finds the first occurrence of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; in the document. Modifiers can be specified after the command by appending a &amp;quot;:&amp;quot;, e.g. &amp;lt;code&amp;gt;find:se hello&amp;lt;/code&amp;gt;. The meaning of the modifiers is: &amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039; for searching backwards, &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039; for searching from the current cursor position, &amp;#039;&amp;#039;&amp;#039;e&amp;#039;&amp;#039;&amp;#039; for searching only inside the selection, &amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039; for evaluating &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; as a regular expression, &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039; for showing a prompt each time an occurrence of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; is about to be replaced (&amp;lt;code&amp;gt;replace&amp;lt;/code&amp;gt; command only), &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; makes search case-sensitive and &amp;#039;&amp;#039;&amp;#039;w&amp;#039;&amp;#039;&amp;#039; makes search look for whole words only, not substrings.&lt;br /&gt;
|-&lt;br /&gt;
|ifind&lt;br /&gt;
|[:[bcrs]] string&lt;br /&gt;
|Finds the first occurrence of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; interactively. It performs the search again each time a key is pressed.&lt;br /&gt;
|-&lt;br /&gt;
|replace&lt;br /&gt;
|[:[bcerpsw]] string [replacement]&lt;br /&gt;
|Replaces all occurrences of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;replacement&amp;lt;/code&amp;gt;. If &amp;lt;code&amp;gt;replacement&amp;lt;/code&amp;gt; is omitted, it is assumed to be an empty string. For explanation of the modifiers see the description of &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|indent&lt;br /&gt;
|NONE&lt;br /&gt;
|Indent current line or selection by one tab stop&lt;br /&gt;
|-&lt;br /&gt;
|unindent&lt;br /&gt;
|NONE&lt;br /&gt;
|Unindent current line or selection by one tab stop&lt;br /&gt;
|-&lt;br /&gt;
|cleanindent&lt;br /&gt;
|NONE&lt;br /&gt;
|Reset identation of current line or selection&lt;br /&gt;
|-&lt;br /&gt;
|comment&lt;br /&gt;
|NONE&lt;br /&gt;
|Comment current line or selection&lt;br /&gt;
|-&lt;br /&gt;
|uncomment&lt;br /&gt;
|NONE&lt;br /&gt;
|Uncomment current line or selection&lt;br /&gt;
|-&lt;br /&gt;
|kill-line&lt;br /&gt;
|NONE&lt;br /&gt;
|Kills current line, regardless of selection.&lt;br /&gt;
|-&lt;br /&gt;
|set-indent-mode&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Sets the current indentation mode&lt;br /&gt;
|-&lt;br /&gt;
|set-highlight&lt;br /&gt;
|string&lt;br /&gt;
|Set highlighting mode for the current document&lt;br /&gt;
|-&lt;br /&gt;
|set-tab-width&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Set tab width to &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt; spaces.&lt;br /&gt;
|-&lt;br /&gt;
|set-indent-width&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Set indentation width to &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|set-word-wrap-column&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Set column on which word wrapping should occur.&lt;br /&gt;
|-&lt;br /&gt;
|goto&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Go to line &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|set-icon-border&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show icon border&lt;br /&gt;
|-&lt;br /&gt;
|set-folding-markers&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show folding markers&lt;br /&gt;
|-&lt;br /&gt;
|set-line-numbers&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show line numbers&lt;br /&gt;
|-&lt;br /&gt;
|set-show-indent&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show indent lines&lt;br /&gt;
|-&lt;br /&gt;
|set-replace-tabs&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to replace tabs with spaces&lt;br /&gt;
|-&lt;br /&gt;
|set-remove-trailing-space&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to automatically remove trailing whitespaces.&lt;br /&gt;
|-&lt;br /&gt;
|set-remove-trailing-space-save&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to remove trailing whitespaces on saving.&lt;br /&gt;
|-&lt;br /&gt;
|set-show-tabs&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show tab characters. Has no effect on space characters.&lt;br /&gt;
|-&lt;br /&gt;
|set-indent-spaces&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to use spaces instead of tabs for indentation.&lt;br /&gt;
|-&lt;br /&gt;
|set-mixed-indent&lt;br /&gt;
|boolean&lt;br /&gt;
|If enabled, enables &amp;lt;code&amp;gt;space-indent&amp;lt;/code&amp;gt; and, if &amp;lt;code&amp;gt;indent-width&amp;lt;/code&amp;gt; is zero, sets it to &amp;lt;code&amp;gt;tab-width / 2&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|set-word-wrap&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to enable word wrapping.&lt;br /&gt;
|-&lt;br /&gt;
|set-wrap-cursor&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether the cursor wraps with the text or can assume arbitrary positions in the document. Lines are automatically compensated with the needed spaces.&lt;br /&gt;
|-&lt;br /&gt;
|run-myself&lt;br /&gt;
|NONE&lt;br /&gt;
|Execute the current document&amp;#039;s text in the built-in Javascript interpreter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Sed-like expressions are also accepted, e.g.:&lt;br /&gt;
&amp;lt;code&amp;gt;s/afternoon/abend/g&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Useful scripts ==&lt;br /&gt;
A collection of snippets and useful scripts which can help in automating some tasks in TDE.&lt;br /&gt;
&lt;br /&gt;
=== Lock session and turn off screen ===&lt;br /&gt;
This shell script locks the session and after 3 seconds turns the screen off:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
dcop kdesktop KScreensaverIface lock&lt;br /&gt;
sleep 3&lt;br /&gt;
xset dpms force standby&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a ‘GUI’ you can add an Applet to your Panel that calls the shell script.&lt;br /&gt;
&lt;br /&gt;
=== Log out of current TDE session ===&lt;br /&gt;
&lt;br /&gt;
You can log out of the current TDE session and possibly shut down the system automatically (depending on your TDE configuration) using this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ dcop kdesktop default logout &amp;lt;confirm&amp;gt; &amp;lt;type&amp;gt; &amp;lt;mode&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can append three parameters (&amp;quot;confirm&amp;quot;, &amp;quot;type&amp;quot;, &amp;quot;mode&amp;quot;) to determine the&lt;br /&gt;
logout behaviour according to the following values:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;First parameter: &amp;quot;confirm&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| &amp;#039;&amp;#039;Obey the user&amp;#039;s confirmation setting&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &amp;#039;&amp;#039;Don&amp;#039;t confirm, shutdown without asking&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;Always confirm, ask even if the user turned it off&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Second parameter: &amp;quot;type&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Select previous action or the default if it&amp;#039;s the first time&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Only log out&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Log out and reboot the machine&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Log out and halt the machine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Third parameter: &amp;quot;mode&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Select previous mode (or the default one, if it&amp;#039;s the first time)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Schedule a shutdown (halt or reboot) for the time all active sessions have exited&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Shut down, if no sessions are active. Otherwise do nothing&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Force shutdown. Kill any possibly active sessions&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Pop up a dialog asking the user what to do if sessions are still active&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Full stop example&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This command will log out and halt the machine, killing any sessions and will never prompt the user:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ dcop ksmserver default logout 0 2 2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hide suspension related buttons from the shutdown dialog ===&lt;br /&gt;
There is currently no GUI option for this, but it can be achieved by a simple configuration script.&amp;lt;br/&amp;gt;&lt;br /&gt;
Create the file &amp;#039;~/.trinity/share/config/power-managerrc&amp;#039; and put the&lt;br /&gt;
following two lines inside:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
disableSuspend=true&lt;br /&gt;
disableHibernate=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next time the shutdown dialog is displayed, only the Logout, Shutdown and Restart buttons will be shown.&amp;lt;br/&amp;gt;&lt;br /&gt;
Freeze, Suspend, Hybrid suspend, Hibernate buttons will not be displayed.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Error: TDE mediamanager is not running ===&lt;br /&gt;
You might encounter this error if you try to run KDesktop, Konqueror or any other TDE application that tries to access storage media outside of a standard TDE session (e.g. from a window manager session).&lt;br /&gt;
&lt;br /&gt;
To solve this, add the following lines to your window manager&amp;#039;s autostart script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
tdeinit&lt;br /&gt;
dcop kded kded loadModule mediamanager&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unable to change display brightness with NVidia cards ===&lt;br /&gt;
If you are unable to change the display brightness, the problem could be the nvidia driver in use.&lt;br /&gt;
The following tip works for some users and it is worth a try.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;/etc/default/grub&amp;lt;/tt&amp;gt; add &amp;lt;code&amp;gt;acpi_backlight=vendor&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;nvidia.NVreg_EnableBacklightHandler=1&amp;lt;/code&amp;gt; to &lt;br /&gt;
the variable &amp;lt;tt&amp;gt;GRUB_CMDLINE_LINUX_DEFAULT&amp;lt;/tt&amp;gt; and reboot. Then controlling the display brightness using TDE&lt;br /&gt;
and multimedia (or Fn combination) keys should/may work.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;quiet nvidia.NVreg_EnableBacklightHandler=1 acpi_backlight=vendor&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unable to find mime type application/octet-stream ===&lt;br /&gt;
This error can occur due to a known bug with the TDE MIME system.&lt;br /&gt;
&lt;br /&gt;
There are two known methods to fix this:&lt;br /&gt;
&lt;br /&gt;
==== Method 1: Graphical ====&lt;br /&gt;
# Go to &amp;lt;code&amp;gt;TDE Control Centre &amp;gt; TDE Components &amp;gt; File Associations&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click on the &amp;lt;code&amp;gt;Add...&amp;lt;/code&amp;gt; button at the bottom&lt;br /&gt;
# Select the &amp;lt;code&amp;gt;application&amp;lt;/code&amp;gt; group from the drop-down menu&lt;br /&gt;
# In the name field type: &amp;lt;tt&amp;gt;octet-stream&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Click OK to close the dialog&lt;br /&gt;
# Apply the settings&lt;br /&gt;
&lt;br /&gt;
==== Method 2: Via CLI ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ cat &amp;gt; ~/.trinity/share/mimelnk/application/octet-stream.desktop &amp;lt;&amp;lt; EOF&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Comment=octet-stream&lt;br /&gt;
Hidden=false&lt;br /&gt;
Icon=&lt;br /&gt;
MimeType=application/octet-stream&lt;br /&gt;
Patterns=&lt;br /&gt;
Type=MimeType&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
* [http://web.archive.org/web/20060924164505/http://wiki.kde.org/tiki-index.php?page=Tips+and+Tricks Tips and Tricks on the old KDE TikiWiki]&lt;br /&gt;
* [http://web.archive.org/web/20060924165408/http://wiki.kde.org/tiki-index.php?page=Performance+Tips KDE3 Performance Tips on the old KDE TikiWiki]&lt;br /&gt;
* [http://web.archive.org/web/20060924164932/http://wiki.kde.org/tiki-index.php?page=Secret+Config+Settings Secret config settings on the old KDE TikiWiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:TipsAndTricks]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Tips_And_Tricks&amp;diff=3378</id>
		<title>Tips And Tricks</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Tips_And_Tricks&amp;diff=3378"/>
		<updated>2024-08-15T20:28:59Z</updated>

		<summary type="html">&lt;p&gt;Blu256: /* Method 2: autostart TDE components from WM */ Added class=&amp;quot;wikitable&amp;quot; to table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant as a container of tips and tricks collected over time, addressing topics and issues brought up by TDE users.&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also see the users&amp;#039; [[User FAQ | Frequently Asked Questions]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Installing Trinity ==&lt;br /&gt;
Tips and tricks relevant to obtaining a well-functioning Trinity installation.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading from older versions or KDE3 ===&lt;br /&gt;
&lt;br /&gt;
==== Upgrading from KDE3 or from TDE 3.5.x to R14.0.x ====&lt;br /&gt;
If you are migrating from KDE3 or upgrading from TDE 3.5.x, you can reuse your own settings in TDE R14.0.x.&lt;br /&gt;
When logging into R14.0.x for the first time, TDE will automatically execute a script which will migrate as many of your KDE3/TDE3.5.x settings as possible. At the end of the process, your KDE3/TDE3.5.x profile will still exist (unchanged) and a new TDE profile will have been created inside the &amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;~/.trinity&amp;#039;&amp;#039;&amp;#039;&amp;lt;/tt&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
{{TipBox&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=Please refrain from renaming your &amp;lt;tt&amp;gt;.kde&amp;lt;/tt&amp;gt; into &amp;lt;tt&amp;gt;.trinity&amp;lt;/tt&amp;gt; before running R14.0.x. If you do so, the migration process will not take part and some applications may not run smoothly after that. See [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2356 here] for an example of problems that may arise if you rename your &amp;lt;tt&amp;gt;.kde&amp;lt;/tt&amp;gt; folder manually.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Upgrading from an old version (pre Dec/2014) ====&lt;br /&gt;
Depending on your previous version of TDE, the file /etc/trinity/tdm/tdmrc may change from a script-generated file to a config file.&lt;br /&gt;
It is advisable to accept the newer file if you are upgrading from an old version to TDE &amp;gt;= R14.0.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Configuring Trinity ==&lt;br /&gt;
Tips and tricks for custom fine-tuning and configurations.&lt;br /&gt;
&lt;br /&gt;
=== Using sudo and tdesudo ===&lt;br /&gt;
If you use sudo or a sudo-based distribution (such as Ubuntu), it is highly recommended that you install the &amp;lt;tt&amp;gt;tdesudo-trinity&amp;lt;/tt&amp;gt; package as well. This allows to run programs that require root priviledge from the TDE menu using your own password.&lt;br /&gt;
If &amp;lt;tt&amp;gt;tdesudo-trinity&amp;lt;/tt&amp;gt; is not installed, you will be asked for the root password instead.&lt;br /&gt;
More details can be found [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2563 here].&lt;br /&gt;
&lt;br /&gt;
=== Un-Bogging down an older system ===&lt;br /&gt;
Your system runs pretty well until Firefox, an office application, or some other application with high CPU usage demands too many cycles and your system then ‘freezes’ for seconds or minutes until the application gets finished.&lt;br /&gt;
&lt;br /&gt;
A simple, but somewhat tedious, solution is to add &amp;lt;code&amp;gt;nice&amp;lt;/code&amp;gt; to the launcher for each. Using LibreOffice as an example, add &amp;lt;code&amp;gt;nice -n 2&amp;lt;/code&amp;gt; before the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;TDE Menu &amp;gt;&amp;gt; Office &amp;gt;&amp;gt; LibreOffice &amp;gt;&amp;gt; {right click} &amp;gt;&amp;gt; Edit Item&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change the ‘Command’ entry from &amp;lt;code&amp;gt;libreoffice %U&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;nice -n 2 libreoffice %U&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Then find every other entry for LibreOffice (LibreOffice Base, LibreOffice Draw, LibreOffice Math, LibreOffice Impress, etc.) and do the same.&lt;br /&gt;
&lt;br /&gt;
Other ‘usual suspects’ to make nice are: browsers, BitTorrent clients, GUI Diff tools, and, occasionally, PDF viewers.&lt;br /&gt;
&lt;br /&gt;
Generally anything ‘real-time’ you should leave alone (movies, games, editors).&lt;br /&gt;
&lt;br /&gt;
These were used on a Core2 Duo (P7570 @ 2.26GHz, CPU Mark: 926):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
!Nice level&lt;br /&gt;
!Application Name&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Kmail&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|LibreOffice&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Firefox&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|qBittorrent&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Assigning a mouse click as part of a keyboard shortcut ===&lt;br /&gt;
There are multiple ways to accomplish this.  The best arguably was the first method, which has been lost to time.&lt;br /&gt;
&lt;br /&gt;
In these examples we are trying to achieve:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{Windows Key} + {left mouse click} = Minimize application under mouse cursor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change what you need to achieve what you want.&lt;br /&gt;
&lt;br /&gt;
==== Method 1: Lost ====&lt;br /&gt;
&lt;br /&gt;
As the name says it’s been lost.  What is remembered is that:&lt;br /&gt;
&lt;br /&gt;
* No additional software had to be installed&lt;br /&gt;
* The change was exceedingly minor.&lt;br /&gt;
&lt;br /&gt;
==== Method 2: &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt; + &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Buggy. This works, but the &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; command used occasionally leaves an unfinished half-keystroke hanging.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 1.&amp;#039;&amp;#039;&amp;#039; Go to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Regional &amp;amp; Accessibility &amp;gt;&amp;gt; Keyboard Shortcuts &amp;gt;&amp;gt; Shortcuts Schemes &amp;gt;&amp;gt; Global Shortcuts &amp;gt;&amp;gt; Windows&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set &amp;quot;Minimize Window&amp;quot; to “Win+Space”.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 2.&amp;#039;&amp;#039;&amp;#039; Issue these command(s) as root or using sudo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# apt-get install xbindkeys&lt;br /&gt;
# apt-get install xdotool&lt;br /&gt;
# apt-get install xbindkeys-config # optional&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 3.&amp;#039;&amp;#039;&amp;#039; Edit &amp;lt;tt&amp;gt;$HOME/.xbindkeysrc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Add the following lines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &amp;#039;shell&amp;#039; is probably the closest match(?) --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#MinimizeWindowUnderMouse&lt;br /&gt;
&amp;quot;xdotool click --clearmodifiers 1 key super+space&amp;quot;&lt;br /&gt;
   m:0x40 + c:133 + b:1 + release&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=xbindkeys does not like superfluous comments within its definitions. Leaving prior entries commented out within the config definition caused odd and inconsistent results.&lt;br /&gt;
 |icon=Messagebox_info.png&lt;br /&gt;
 |background=#E9F0FF&lt;br /&gt;
 |highlight=#93B2FF&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 4.&amp;#039;&amp;#039;&amp;#039; Issue these commands as yourself (not as root):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ killall xbindkeys&lt;br /&gt;
$ xbindkeys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 5.&amp;#039;&amp;#039;&amp;#039; To minimize any window:&lt;br /&gt;
&lt;br /&gt;
Move the cursor over a window, hold down the Windows key and click the left mouse button.&lt;br /&gt;
&lt;br /&gt;
==== Method 3: &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;dcop&amp;lt;/tt&amp;gt; and/or &amp;lt;tt&amp;gt;gdbus&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Basically the same as &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt; + &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; but replacing &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; with either a &amp;lt;tt&amp;gt;dcop&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;gdbus&amp;lt;/tt&amp;gt; command. This is probably less ‘buggy’ than &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt;, but unfortunately the writer doesn’t understand enough about either to make this work.&lt;br /&gt;
&lt;br /&gt;
=== Enabling image thumbnails in Konqueror for external devices opened via popup after plugging in ===&lt;br /&gt;
&lt;br /&gt;
When an external device (e.g. USB flash drive) is plugged in, choosing &amp;quot;Open in New Window&amp;quot; in the TDE popup window will open the device under the &amp;lt;tt&amp;gt;system:/&amp;lt;/tt&amp;gt; path prefix. Image thumbnail display is not enabled per default for this location type in Konqueror. To enable image thumbnails for &amp;lt;tt&amp;gt;system:/&amp;lt;/tt&amp;gt; paths, adhere to the following:&lt;br /&gt;
&lt;br /&gt;
# In Konqueror from the menubar select &amp;lt;code&amp;gt;Settings &amp;gt;&amp;gt; Configure Konqueror...&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Select &amp;lt;code&amp;gt;Previews &amp;amp; Metadata&amp;lt;/code&amp;gt; on the left.&lt;br /&gt;
# Under &amp;lt;code&amp;gt;Local Protocols&amp;lt;/code&amp;gt; tick the checkbox for &amp;lt;code&amp;gt;system&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Look and feel ==&lt;br /&gt;
Tips and tricks concerning the appearance of Trinity desktop and applications.&lt;br /&gt;
&lt;br /&gt;
=== Adding a separator between windows button in the title bar ===&lt;br /&gt;
Open &amp;lt;code&amp;gt;TDE Control Center &amp;gt;&amp;gt; Appearance &amp;amp; Themes &amp;gt;&amp;gt; Window Decorations&amp;lt;/code&amp;gt; and then select the &amp;lt;code&amp;gt;Buttons&amp;lt;/code&amp;gt; tab.&lt;br /&gt;
&lt;br /&gt;
In the middle of the screen there is a list of available buttons. Drag a separator (&amp;lt;code&amp;gt;--- spacer ---&amp;lt;/code&amp;gt;) on the title bar of the sample window, between the buttons where you want to space to appear.&lt;br /&gt;
&lt;br /&gt;
Check the preview in the bottom part of the window and modify again as required.&lt;br /&gt;
&lt;br /&gt;
Confirm when done.&lt;br /&gt;
&lt;br /&gt;
=== Enlarging Kicker taskbar buttons to only occupy a single row ===&lt;br /&gt;
&lt;br /&gt;
When the configured Kicker panel size surpasses a certain pixel count, the taskbar will start getting segmented into multiple rows, leading to taskbar buttons being placed in a grid.&lt;br /&gt;
To prevent this, the minimum height of taskbar buttons can be increased to enforce a single row of taskbar buttons.&lt;br /&gt;
&lt;br /&gt;
To achieve this, you have to add the following line into section &amp;lt;tt&amp;gt;[General]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/ktaskbarrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
MinimumButtonHeight=38&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Select a &amp;lt;tt&amp;gt;MinimumButtonHeight&amp;lt;/tt&amp;gt; that matches the pixel size of the Kicker panel as configured in &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels &amp;gt;&amp;gt; Arrangement&amp;lt;/code&amp;gt; (when the size is set to &amp;quot;Custom&amp;quot;).&lt;br /&gt;
Restart the Kicker panel after changing the configuration line.&lt;br /&gt;
&lt;br /&gt;
As an example, for a panel height of 38 pixels this adjustment can be done via Konsole (or another terminal emulator) in the following manner:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/ktaskbarrc --group General --key MinimumButtonHeight 38&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hint: you may also additionally set &amp;lt;code&amp;gt;MinimumButtonWidth&amp;lt;/code&amp;gt; in the same group to control how much minimum horizontal space (in pixels) a single taskbar button should occupy on its own.&lt;br /&gt;
&lt;br /&gt;
=== Removing captions from K-Menu ===&lt;br /&gt;
You have to add the following line into section &amp;lt;tt&amp;gt;[menus]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/kickerrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
ShowMenuTitles=false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You also have to restart Kicker for the change to take effect.&lt;br /&gt;
&lt;br /&gt;
The quickest way to do all of this is via Konsole (or another terminal emulator):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/kickerrc --group menus --key ShowMenuTitles false&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increasing icon size in K-Menu ===&lt;br /&gt;
You have to add the following line into section &amp;lt;tt&amp;gt;[menus]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/kickerrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
MenuEntryHeight=22&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can adjust the number to any icon size you see fit. You have to restart Kicker for the change to take effect.&lt;br /&gt;
&lt;br /&gt;
The quickest way to do all of this is via Konsole (or another terminal emulator):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/kickerrc --group menus --key MenuEntryHeight 22&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using a custom side image for classic K-Menu ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;The following only applies to the classic K-Menu enabled by setting &amp;quot;TDE menu style&amp;quot; to &amp;quot;Trinity Classic&amp;quot; in the &amp;quot;Menus&amp;quot; section of &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels&amp;lt;/code&amp;gt;.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# Create &amp;lt;code&amp;gt;$TDEHOME/share/apps/kicker/pics/&amp;lt;/code&amp;gt; if it doesn&amp;#039;t exist.&lt;br /&gt;
# Place custom &amp;lt;code&amp;gt;kside.png&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kside_tile.png&amp;lt;/code&amp;gt; files into &amp;lt;code&amp;gt;$TDEHOME/share/apps/kicker/pics/&amp;lt;/code&amp;gt;.&lt;br /&gt;
# In &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels&amp;lt;/code&amp;gt; under &amp;quot;Menus&amp;quot; enable &amp;quot;Show side image&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;kside.png&amp;lt;/code&amp;gt; is the side image itself, while &amp;lt;code&amp;gt;kside_tile.png&amp;lt;/code&amp;gt; is the image that fills the space above the side image if the latter does not fully fit the menu.&lt;br /&gt;
&lt;br /&gt;
Hint: you may find the default &amp;lt;tt&amp;gt;kside.png&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;kside_tile.png&amp;lt;/tt&amp;gt; files within &amp;lt;tt&amp;gt;$TDEDIR/share/apps/kicker/pics/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Changes to the image files will only apply when the Kicker gets restarted. To trigger this, you can use &amp;lt;code&amp;gt;dcop kicker kicker restart&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Using a custom image for the logout prompt ===&lt;br /&gt;
&lt;br /&gt;
# Create &amp;lt;code&amp;gt;$TDEHOME/share/apps/ksmserver/pics/&amp;lt;/code&amp;gt; if it doesn&amp;#039;t exist.&lt;br /&gt;
# Place a custom &amp;lt;code&amp;gt;shutdownkonq.png&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;$TDEHOME/share/apps/ksmserver/pics/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hint: you may find the default image within &amp;lt;tt&amp;gt;$TDEDIR/share/apps/ksmserver/pics/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Use another window manager with TDE ===&lt;br /&gt;
It is possible to use TDE with a different window manager than the one which comes by default. There are a lot of window managers out there, though, so TDE might not recognize their presence and thus not offer them as a choice in the Control Center. This is the case when you can use the advanced methods mentioned here to use TDE with another WM.&lt;br /&gt;
&lt;br /&gt;
[[File:TDE+E16 thumb.png|thumb|link=File:TDE+E16.png|Trinity Desktop with E16 as window manager]]&lt;br /&gt;
&lt;br /&gt;
==== Method 1: the easy way ====&lt;br /&gt;
The easy way is, of course, to go to &amp;lt;code&amp;gt;TDE Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Window decorations&amp;lt;/code&amp;gt;, switch to the Window Manager tab and then select your preferred window manager from the drop-down menu.&lt;br /&gt;
&lt;br /&gt;
==== Method 2: autostart TDE components from WM ====&lt;br /&gt;
You can autostart Trinity and the components you need if your window manager supports autostart. In this case the window manager is started first. An &amp;lt;tt&amp;gt;.xinitrc&amp;lt;/tt&amp;gt; file can also do the trick.&lt;br /&gt;
&lt;br /&gt;
Make sure your window manager executes the first command (and any of the other ones for other desktop components you might want to use). For a more-or-less complete TDE session use all of them:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Command&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;starttde&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;(required) Initializes required Trinity components.&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;kicker &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;The Kicker panel.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;kdesktop --waitforkded &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;The Desktop.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;khotkeys &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;Keyboard shortcuts handler.&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;&amp;#039;&amp;#039;(* Trinity apps would do this anyway, but it&amp;#039;s nice to have it ready for them.)&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As for starting the WM itself, you can choose to use your window manager&amp;#039;s session via your display manager.&lt;br /&gt;
&lt;br /&gt;
Note that this is not considered a full TDE session and that your mileage may vary. For a better way of handling this see Method 2 below.&lt;br /&gt;
&lt;br /&gt;
==== Method 3: using WM as part of a TDE session ====&lt;br /&gt;
You can make TDE use your window manager instead of TWin by passing an environment variable to the &amp;lt;tt&amp;gt;starttde&amp;lt;/tt&amp;gt; script. This variable is named &amp;lt;code&amp;gt;$TDEWM&amp;lt;/code&amp;gt; and accepts the executable name (or full path) of your window manager. For example, to start TDE with Fluxbox as a window manager:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ TDEWM=fluxbox startx /opt/trinity/starttde # adjust to your system&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=Due to a mistake, Trinity releases before R14.0.11 use the &amp;lt;code&amp;gt;$TWIN&amp;lt;/code&amp;gt; variable instead.&lt;br /&gt;
 |icon=Messagebox_info.png&lt;br /&gt;
 |background=#E9F0FF&lt;br /&gt;
 |highlight=#93B2FF&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To make this permanent:&lt;br /&gt;
&lt;br /&gt;
* If you use a &amp;lt;tt&amp;gt;.xinitrc&amp;lt;/tt&amp;gt; file, then the only thing to do is to put the line there.&lt;br /&gt;
* If you use a display manager, you&amp;#039;ll need to create a script and an X session file.&lt;br /&gt;
&lt;br /&gt;
Create a script like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
export TDEWM=your_window_manager # for R14.0.11 and higher&lt;br /&gt;
export TWIN=your_window_manager  # for pre-R14.0.11 TDE versions&lt;br /&gt;
exec starttde&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;your_window_manager&amp;lt;/code&amp;gt; with the correct value. Save it and make it executable.&lt;br /&gt;
&lt;br /&gt;
Then, create a .desktop file in &amp;lt;tt&amp;gt;/usr/share/xsessions&amp;lt;/tt&amp;gt;, like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Type=XSession&lt;br /&gt;
Name=(Session name)&lt;br /&gt;
Comment=(An optional session comment)&lt;br /&gt;
Exec=/path/to/the/script/you/just/saved&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Insert the values as needed. Save it and logout. From the sessions menu choose the session you just created. Login normally. TDE should start with the window manager of your choice.&lt;br /&gt;
&lt;br /&gt;
=== Changing alternating row colors ===&lt;br /&gt;
Alternating row colors in Konqueror, KMail, and probably a lot more, can be set in the Colors section of Trinity Control Center:&lt;br /&gt;
&amp;lt;code&amp;gt;TCC &amp;gt;&amp;gt; Appearance &amp;amp; Themes &amp;gt;&amp;gt; Colors &amp;gt;&amp;gt; Widget Color &amp;gt;&amp;gt; [Dropdown] Alternate Background in Lists&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Application tricks ==&lt;br /&gt;
Tips and tricks concerning Trinity applications (such as KMail, Kopete, Amarok etc.)&lt;br /&gt;
&lt;br /&gt;
=== Kmail: Sanitize and Decrypt E-Mails ===&lt;br /&gt;
[[Kmail_Sanitize_and_Decrypt_Mails|Kmail Sanitize and Decrypt Mails]] shows an example on how to create a filter in kmail that removes unwanted headers and automaticly decrypts incomming mails.&lt;br /&gt;
&lt;br /&gt;
=== Kate: Using the built-in command line ===&lt;br /&gt;
You can quickly apply some special settings to an open file without leaving your keyboard, by using the built-in command line in any application that uses the Kate editing part (e.g. Kate itself, KWrite, TDevelop). Press F7 to open it. It will show as a single text field below the document. When you enter a command, it will automatically offer completions, so no need to worry if you are not sure about a command&amp;#039;s name (or sometimes even arguments!). Also, the prompt preserves the history of previous successful command runs, which can be navigated using Up/Down movement keys.&lt;br /&gt;
&lt;br /&gt;
You can apply one command per time, the syntax is &amp;lt;code&amp;gt;COMMAND [ARGUMENTS...]&amp;lt;/code&amp;gt;. You can set the values for all the variables that you can set through the modeline comment prefixed with &amp;quot;set-&amp;quot; (see the relevant section in the Kate documentation if unsure).&lt;br /&gt;
&lt;br /&gt;
For example, to automatically replace tabs with spaces you can enter: &amp;lt;code&amp;gt;set-replace-tabs true&amp;lt;/code&amp;gt;.&lt;br /&gt;
To set tab width to 4 spaces: &amp;lt;code&amp;gt;set-tab-width 4&amp;lt;/code&amp;gt;.&lt;br /&gt;
To change the highlighting to Python: &amp;lt;code&amp;gt;set-highlighting Python&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Of course, the built-in command line also comes with some more advanced commands. External tools and plugins can also add their own commands! You can get a full list of available commands by running &amp;lt;code&amp;gt;help list&amp;lt;/code&amp;gt; and get help related to a command by running &amp;lt;code&amp;gt;help &amp;lt;command&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
See the table below for some useful commands:&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible&amp;quot;&lt;br /&gt;
!Command&lt;br /&gt;
!Arguments&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|help&lt;br /&gt;
|[command]&lt;br /&gt;
|Show a help message in a tooltip. If no argument is provided, shows a generic help message on using the command line. If the special argument &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt; is specified, lists all available commands. If a command name is provided, tries to find help information related to that command.&lt;br /&gt;
|-&lt;br /&gt;
|char&lt;br /&gt;
|hex, octal or base 9+1&lt;br /&gt;
|Inserts a Unicode or ASCII character based on its numeric value (e.g. 0x1234, x1234, 01231, 1234).&lt;br /&gt;
|-&lt;br /&gt;
|date&lt;br /&gt;
|[format string]&lt;br /&gt;
|Inserts current date according to the specified format string. If invalid, the default (&amp;lt;code&amp;gt;yyyy-MM-dd hh:mm:ss&amp;lt;/code&amp;gt;) is used instead.&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|[:[bcerpsw]] string&lt;br /&gt;
|Finds the first occurrence of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; in the document. Modifiers can be specified after the command by appending a &amp;quot;:&amp;quot;, e.g. &amp;lt;code&amp;gt;find:se hello&amp;lt;/code&amp;gt;. The meaning of the modifiers is: &amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039; for searching backwards, &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039; for searching from the current cursor position, &amp;#039;&amp;#039;&amp;#039;e&amp;#039;&amp;#039;&amp;#039; for searching only inside the selection, &amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039; for evaluating &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; as a regular expression, &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039; for showing a prompt each time an occurrence of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; is about to be replaced (&amp;lt;code&amp;gt;replace&amp;lt;/code&amp;gt; command only), &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; makes search case-sensitive and &amp;#039;&amp;#039;&amp;#039;w&amp;#039;&amp;#039;&amp;#039; makes search look for whole words only, not substrings.&lt;br /&gt;
|-&lt;br /&gt;
|ifind&lt;br /&gt;
|[:[bcrs]] string&lt;br /&gt;
|Finds the first occurrence of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; interactively. It performs the search again each time a key is pressed.&lt;br /&gt;
|-&lt;br /&gt;
|replace&lt;br /&gt;
|[:[bcerpsw]] string [replacement]&lt;br /&gt;
|Replaces all occurrences of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;replacement&amp;lt;/code&amp;gt;. If &amp;lt;code&amp;gt;replacement&amp;lt;/code&amp;gt; is omitted, it is assumed to be an empty string. For explanation of the modifiers see the description of &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|indent&lt;br /&gt;
|NONE&lt;br /&gt;
|Indent current line or selection by one tab stop&lt;br /&gt;
|-&lt;br /&gt;
|unindent&lt;br /&gt;
|NONE&lt;br /&gt;
|Unindent current line or selection by one tab stop&lt;br /&gt;
|-&lt;br /&gt;
|cleanindent&lt;br /&gt;
|NONE&lt;br /&gt;
|Reset identation of current line or selection&lt;br /&gt;
|-&lt;br /&gt;
|comment&lt;br /&gt;
|NONE&lt;br /&gt;
|Comment current line or selection&lt;br /&gt;
|-&lt;br /&gt;
|uncomment&lt;br /&gt;
|NONE&lt;br /&gt;
|Uncomment current line or selection&lt;br /&gt;
|-&lt;br /&gt;
|kill-line&lt;br /&gt;
|NONE&lt;br /&gt;
|Kills current line, regardless of selection.&lt;br /&gt;
|-&lt;br /&gt;
|set-indent-mode&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Sets the current indentation mode&lt;br /&gt;
|-&lt;br /&gt;
|set-highlight&lt;br /&gt;
|string&lt;br /&gt;
|Set highlighting mode for the current document&lt;br /&gt;
|-&lt;br /&gt;
|set-tab-width&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Set tab width to &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt; spaces.&lt;br /&gt;
|-&lt;br /&gt;
|set-indent-width&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Set indentation width to &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|set-word-wrap-column&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Set column on which word wrapping should occur.&lt;br /&gt;
|-&lt;br /&gt;
|goto&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Go to line &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|set-icon-border&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show icon border&lt;br /&gt;
|-&lt;br /&gt;
|set-folding-markers&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show folding markers&lt;br /&gt;
|-&lt;br /&gt;
|set-line-numbers&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show line numbers&lt;br /&gt;
|-&lt;br /&gt;
|set-show-indent&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show indent lines&lt;br /&gt;
|-&lt;br /&gt;
|set-replace-tabs&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to replace tabs with spaces&lt;br /&gt;
|-&lt;br /&gt;
|set-remove-trailing-space&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to automatically remove trailing whitespaces.&lt;br /&gt;
|-&lt;br /&gt;
|set-remove-trailing-space-save&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to remove trailing whitespaces on saving.&lt;br /&gt;
|-&lt;br /&gt;
|set-show-tabs&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show tab characters. Has no effect on space characters.&lt;br /&gt;
|-&lt;br /&gt;
|set-indent-spaces&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to use spaces instead of tabs for indentation.&lt;br /&gt;
|-&lt;br /&gt;
|set-mixed-indent&lt;br /&gt;
|boolean&lt;br /&gt;
|If enabled, enables &amp;lt;code&amp;gt;space-indent&amp;lt;/code&amp;gt; and, if &amp;lt;code&amp;gt;indent-width&amp;lt;/code&amp;gt; is zero, sets it to &amp;lt;code&amp;gt;tab-width / 2&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|set-word-wrap&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to enable word wrapping.&lt;br /&gt;
|-&lt;br /&gt;
|set-wrap-cursor&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether the cursor wraps with the text or can assume arbitrary positions in the document. Lines are automatically compensated with the needed spaces.&lt;br /&gt;
|-&lt;br /&gt;
|run-myself&lt;br /&gt;
|NONE&lt;br /&gt;
|Execute the current document&amp;#039;s text in the built-in Javascript interpreter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Sed-like expressions are also accepted, e.g.:&lt;br /&gt;
&amp;lt;code&amp;gt;s/afternoon/abend/g&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Useful scripts ==&lt;br /&gt;
A collection of snippets and useful scripts which can help in automating some tasks in TDE.&lt;br /&gt;
&lt;br /&gt;
=== Lock session and turn off screen ===&lt;br /&gt;
This shell script locks the session and after 3 seconds turns the screen off:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
dcop kdesktop KScreensaverIface lock&lt;br /&gt;
sleep 3&lt;br /&gt;
xset dpms force standby&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a ‘GUI’ you can add an Applet to your Panel that calls the shell script.&lt;br /&gt;
&lt;br /&gt;
=== Log out of current TDE session ===&lt;br /&gt;
&lt;br /&gt;
You can log out of the current TDE session and possibly shut down the system automatically (depending on your TDE configuration) using this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ dcop kdesktop default logout &amp;lt;confirm&amp;gt; &amp;lt;type&amp;gt; &amp;lt;mode&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can append three parameters (&amp;quot;confirm&amp;quot;, &amp;quot;type&amp;quot;, &amp;quot;mode&amp;quot;) to determine the&lt;br /&gt;
logout behaviour according to the following values:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;First parameter: &amp;quot;confirm&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| &amp;#039;&amp;#039;Obey the user&amp;#039;s confirmation setting&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &amp;#039;&amp;#039;Don&amp;#039;t confirm, shutdown without asking&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;Always confirm, ask even if the user turned it off&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Second parameter: &amp;quot;type&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Select previous action or the default if it&amp;#039;s the first time&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Only log out&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Log out and reboot the machine&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Log out and halt the machine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Third parameter: &amp;quot;mode&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Select previous mode (or the default one, if it&amp;#039;s the first time)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Schedule a shutdown (halt or reboot) for the time all active sessions have exited&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Shut down, if no sessions are active. Otherwise do nothing&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Force shutdown. Kill any possibly active sessions&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Pop up a dialog asking the user what to do if sessions are still active&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Full stop example&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This command will log out and halt the machine, killing any sessions and will never prompt the user:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ dcop ksmserver default logout 0 2 2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hide suspension related buttons from the shutdown dialog ===&lt;br /&gt;
There is currently no GUI option for this, but it can be achieved by a simple configuration script.&amp;lt;br/&amp;gt;&lt;br /&gt;
Create the file &amp;#039;~/.trinity/share/config/power-managerrc&amp;#039; and put the&lt;br /&gt;
following two lines inside:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
disableSuspend=true&lt;br /&gt;
disableHibernate=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next time the shutdown dialog is displayed, only the Logout, Shutdown and Restart buttons will be shown.&amp;lt;br/&amp;gt;&lt;br /&gt;
Freeze, Suspend, Hybrid suspend, Hibernate buttons will not be displayed.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Error: TDE mediamanager is not running ===&lt;br /&gt;
You might encounter this error if you try to run KDesktop, Konqueror or any other TDE application that tries to access storage media outside of a standard TDE session (e.g. from a window manager session).&lt;br /&gt;
&lt;br /&gt;
To solve this, add the following lines to your window manager&amp;#039;s autostart script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
tdeinit&lt;br /&gt;
dcop kded kded loadModule mediamanager&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unable to change display brightness with NVidia cards ===&lt;br /&gt;
If you are unable to change the display brightness, the problem could be the nvidia driver in use.&lt;br /&gt;
The following tip works for some users and it is worth a try.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;/etc/default/grub&amp;lt;/tt&amp;gt; add &amp;lt;code&amp;gt;acpi_backlight=vendor&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;nvidia.NVreg_EnableBacklightHandler=1&amp;lt;/code&amp;gt; to &lt;br /&gt;
the variable &amp;lt;tt&amp;gt;GRUB_CMDLINE_LINUX_DEFAULT&amp;lt;/tt&amp;gt; and reboot. Then controlling the display brightness using TDE&lt;br /&gt;
and multimedia (or Fn combination) keys should/may work.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;quiet nvidia.NVreg_EnableBacklightHandler=1 acpi_backlight=vendor&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unable to find mime type application/octet-stream ===&lt;br /&gt;
This error can occur due to a known bug with the TDE MIME system.&lt;br /&gt;
&lt;br /&gt;
There are two known methods to fix this:&lt;br /&gt;
&lt;br /&gt;
==== Method 1: Graphical ====&lt;br /&gt;
# Go to &amp;lt;code&amp;gt;TDE Control Centre &amp;gt; TDE Components &amp;gt; File Associations&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click on the &amp;lt;code&amp;gt;Add...&amp;lt;/code&amp;gt; button at the bottom&lt;br /&gt;
# Select the &amp;lt;code&amp;gt;application&amp;lt;/code&amp;gt; group from the drop-down menu&lt;br /&gt;
# In the name field type: &amp;lt;tt&amp;gt;octet-stream&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Click OK to close the dialog&lt;br /&gt;
# Apply the settings&lt;br /&gt;
&lt;br /&gt;
==== Method 2: Via CLI ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ cat &amp;gt; ~/.trinity/share/mimelnk/application/octet-stream.desktop &amp;lt;&amp;lt; EOF&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Comment=octet-stream&lt;br /&gt;
Hidden=false&lt;br /&gt;
Icon=&lt;br /&gt;
MimeType=application/octet-stream&lt;br /&gt;
Patterns=&lt;br /&gt;
Type=MimeType&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
* [http://web.archive.org/web/20060924164505/http://wiki.kde.org/tiki-index.php?page=Tips+and+Tricks Tips and Tricks on the old KDE TikiWiki]&lt;br /&gt;
* [http://web.archive.org/web/20060924165408/http://wiki.kde.org/tiki-index.php?page=Performance+Tips KDE3 Performance Tips on the old KDE TikiWiki]&lt;br /&gt;
* [http://web.archive.org/web/20060924164932/http://wiki.kde.org/tiki-index.php?page=Secret+Config+Settings Secret config settings on the old KDE TikiWiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:TipsAndTricks]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Tips_And_Tricks&amp;diff=3377</id>
		<title>Tips And Tricks</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Tips_And_Tricks&amp;diff=3377"/>
		<updated>2024-08-15T20:26:51Z</updated>

		<summary type="html">&lt;p&gt;Blu256: /* Using a custom side image for classic K-Menu */ added explanation of image files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant as a container of tips and tricks collected over time, addressing topics and issues brought up by TDE users.&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also see the users&amp;#039; [[User FAQ | Frequently Asked Questions]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Installing Trinity ==&lt;br /&gt;
Tips and tricks relevant to obtaining a well-functioning Trinity installation.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading from older versions or KDE3 ===&lt;br /&gt;
&lt;br /&gt;
==== Upgrading from KDE3 or from TDE 3.5.x to R14.0.x ====&lt;br /&gt;
If you are migrating from KDE3 or upgrading from TDE 3.5.x, you can reuse your own settings in TDE R14.0.x.&lt;br /&gt;
When logging into R14.0.x for the first time, TDE will automatically execute a script which will migrate as many of your KDE3/TDE3.5.x settings as possible. At the end of the process, your KDE3/TDE3.5.x profile will still exist (unchanged) and a new TDE profile will have been created inside the &amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;~/.trinity&amp;#039;&amp;#039;&amp;#039;&amp;lt;/tt&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
{{TipBox&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=Please refrain from renaming your &amp;lt;tt&amp;gt;.kde&amp;lt;/tt&amp;gt; into &amp;lt;tt&amp;gt;.trinity&amp;lt;/tt&amp;gt; before running R14.0.x. If you do so, the migration process will not take part and some applications may not run smoothly after that. See [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2356 here] for an example of problems that may arise if you rename your &amp;lt;tt&amp;gt;.kde&amp;lt;/tt&amp;gt; folder manually.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Upgrading from an old version (pre Dec/2014) ====&lt;br /&gt;
Depending on your previous version of TDE, the file /etc/trinity/tdm/tdmrc may change from a script-generated file to a config file.&lt;br /&gt;
It is advisable to accept the newer file if you are upgrading from an old version to TDE &amp;gt;= R14.0.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Configuring Trinity ==&lt;br /&gt;
Tips and tricks for custom fine-tuning and configurations.&lt;br /&gt;
&lt;br /&gt;
=== Using sudo and tdesudo ===&lt;br /&gt;
If you use sudo or a sudo-based distribution (such as Ubuntu), it is highly recommended that you install the &amp;lt;tt&amp;gt;tdesudo-trinity&amp;lt;/tt&amp;gt; package as well. This allows to run programs that require root priviledge from the TDE menu using your own password.&lt;br /&gt;
If &amp;lt;tt&amp;gt;tdesudo-trinity&amp;lt;/tt&amp;gt; is not installed, you will be asked for the root password instead.&lt;br /&gt;
More details can be found [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2563 here].&lt;br /&gt;
&lt;br /&gt;
=== Un-Bogging down an older system ===&lt;br /&gt;
Your system runs pretty well until Firefox, an office application, or some other application with high CPU usage demands too many cycles and your system then ‘freezes’ for seconds or minutes until the application gets finished.&lt;br /&gt;
&lt;br /&gt;
A simple, but somewhat tedious, solution is to add &amp;lt;code&amp;gt;nice&amp;lt;/code&amp;gt; to the launcher for each. Using LibreOffice as an example, add &amp;lt;code&amp;gt;nice -n 2&amp;lt;/code&amp;gt; before the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;TDE Menu &amp;gt;&amp;gt; Office &amp;gt;&amp;gt; LibreOffice &amp;gt;&amp;gt; {right click} &amp;gt;&amp;gt; Edit Item&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change the ‘Command’ entry from &amp;lt;code&amp;gt;libreoffice %U&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;nice -n 2 libreoffice %U&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Then find every other entry for LibreOffice (LibreOffice Base, LibreOffice Draw, LibreOffice Math, LibreOffice Impress, etc.) and do the same.&lt;br /&gt;
&lt;br /&gt;
Other ‘usual suspects’ to make nice are: browsers, BitTorrent clients, GUI Diff tools, and, occasionally, PDF viewers.&lt;br /&gt;
&lt;br /&gt;
Generally anything ‘real-time’ you should leave alone (movies, games, editors).&lt;br /&gt;
&lt;br /&gt;
These were used on a Core2 Duo (P7570 @ 2.26GHz, CPU Mark: 926):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
!Nice level&lt;br /&gt;
!Application Name&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Kmail&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|LibreOffice&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Firefox&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|qBittorrent&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Assigning a mouse click as part of a keyboard shortcut ===&lt;br /&gt;
There are multiple ways to accomplish this.  The best arguably was the first method, which has been lost to time.&lt;br /&gt;
&lt;br /&gt;
In these examples we are trying to achieve:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{Windows Key} + {left mouse click} = Minimize application under mouse cursor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change what you need to achieve what you want.&lt;br /&gt;
&lt;br /&gt;
==== Method 1: Lost ====&lt;br /&gt;
&lt;br /&gt;
As the name says it’s been lost.  What is remembered is that:&lt;br /&gt;
&lt;br /&gt;
* No additional software had to be installed&lt;br /&gt;
* The change was exceedingly minor.&lt;br /&gt;
&lt;br /&gt;
==== Method 2: &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt; + &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Buggy. This works, but the &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; command used occasionally leaves an unfinished half-keystroke hanging.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 1.&amp;#039;&amp;#039;&amp;#039; Go to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Regional &amp;amp; Accessibility &amp;gt;&amp;gt; Keyboard Shortcuts &amp;gt;&amp;gt; Shortcuts Schemes &amp;gt;&amp;gt; Global Shortcuts &amp;gt;&amp;gt; Windows&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set &amp;quot;Minimize Window&amp;quot; to “Win+Space”.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 2.&amp;#039;&amp;#039;&amp;#039; Issue these command(s) as root or using sudo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# apt-get install xbindkeys&lt;br /&gt;
# apt-get install xdotool&lt;br /&gt;
# apt-get install xbindkeys-config # optional&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 3.&amp;#039;&amp;#039;&amp;#039; Edit &amp;lt;tt&amp;gt;$HOME/.xbindkeysrc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Add the following lines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &amp;#039;shell&amp;#039; is probably the closest match(?) --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#MinimizeWindowUnderMouse&lt;br /&gt;
&amp;quot;xdotool click --clearmodifiers 1 key super+space&amp;quot;&lt;br /&gt;
   m:0x40 + c:133 + b:1 + release&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=xbindkeys does not like superfluous comments within its definitions. Leaving prior entries commented out within the config definition caused odd and inconsistent results.&lt;br /&gt;
 |icon=Messagebox_info.png&lt;br /&gt;
 |background=#E9F0FF&lt;br /&gt;
 |highlight=#93B2FF&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 4.&amp;#039;&amp;#039;&amp;#039; Issue these commands as yourself (not as root):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ killall xbindkeys&lt;br /&gt;
$ xbindkeys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 5.&amp;#039;&amp;#039;&amp;#039; To minimize any window:&lt;br /&gt;
&lt;br /&gt;
Move the cursor over a window, hold down the Windows key and click the left mouse button.&lt;br /&gt;
&lt;br /&gt;
==== Method 3: &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;dcop&amp;lt;/tt&amp;gt; and/or &amp;lt;tt&amp;gt;gdbus&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Basically the same as &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt; + &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; but replacing &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; with either a &amp;lt;tt&amp;gt;dcop&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;gdbus&amp;lt;/tt&amp;gt; command. This is probably less ‘buggy’ than &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt;, but unfortunately the writer doesn’t understand enough about either to make this work.&lt;br /&gt;
&lt;br /&gt;
=== Enabling image thumbnails in Konqueror for external devices opened via popup after plugging in ===&lt;br /&gt;
&lt;br /&gt;
When an external device (e.g. USB flash drive) is plugged in, choosing &amp;quot;Open in New Window&amp;quot; in the TDE popup window will open the device under the &amp;lt;tt&amp;gt;system:/&amp;lt;/tt&amp;gt; path prefix. Image thumbnail display is not enabled per default for this location type in Konqueror. To enable image thumbnails for &amp;lt;tt&amp;gt;system:/&amp;lt;/tt&amp;gt; paths, adhere to the following:&lt;br /&gt;
&lt;br /&gt;
# In Konqueror from the menubar select &amp;lt;code&amp;gt;Settings &amp;gt;&amp;gt; Configure Konqueror...&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Select &amp;lt;code&amp;gt;Previews &amp;amp; Metadata&amp;lt;/code&amp;gt; on the left.&lt;br /&gt;
# Under &amp;lt;code&amp;gt;Local Protocols&amp;lt;/code&amp;gt; tick the checkbox for &amp;lt;code&amp;gt;system&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Look and feel ==&lt;br /&gt;
Tips and tricks concerning the appearance of Trinity desktop and applications.&lt;br /&gt;
&lt;br /&gt;
=== Adding a separator between windows button in the title bar ===&lt;br /&gt;
Open &amp;lt;code&amp;gt;TDE Control Center &amp;gt;&amp;gt; Appearance &amp;amp; Themes &amp;gt;&amp;gt; Window Decorations&amp;lt;/code&amp;gt; and then select the &amp;lt;code&amp;gt;Buttons&amp;lt;/code&amp;gt; tab.&lt;br /&gt;
&lt;br /&gt;
In the middle of the screen there is a list of available buttons. Drag a separator (&amp;lt;code&amp;gt;--- spacer ---&amp;lt;/code&amp;gt;) on the title bar of the sample window, between the buttons where you want to space to appear.&lt;br /&gt;
&lt;br /&gt;
Check the preview in the bottom part of the window and modify again as required.&lt;br /&gt;
&lt;br /&gt;
Confirm when done.&lt;br /&gt;
&lt;br /&gt;
=== Enlarging Kicker taskbar buttons to only occupy a single row ===&lt;br /&gt;
&lt;br /&gt;
When the configured Kicker panel size surpasses a certain pixel count, the taskbar will start getting segmented into multiple rows, leading to taskbar buttons being placed in a grid.&lt;br /&gt;
To prevent this, the minimum height of taskbar buttons can be increased to enforce a single row of taskbar buttons.&lt;br /&gt;
&lt;br /&gt;
To achieve this, you have to add the following line into section &amp;lt;tt&amp;gt;[General]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/ktaskbarrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
MinimumButtonHeight=38&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Select a &amp;lt;tt&amp;gt;MinimumButtonHeight&amp;lt;/tt&amp;gt; that matches the pixel size of the Kicker panel as configured in &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels &amp;gt;&amp;gt; Arrangement&amp;lt;/code&amp;gt; (when the size is set to &amp;quot;Custom&amp;quot;).&lt;br /&gt;
Restart the Kicker panel after changing the configuration line.&lt;br /&gt;
&lt;br /&gt;
As an example, for a panel height of 38 pixels this adjustment can be done via Konsole (or another terminal emulator) in the following manner:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/ktaskbarrc --group General --key MinimumButtonHeight 38&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hint: you may also additionally set &amp;lt;code&amp;gt;MinimumButtonWidth&amp;lt;/code&amp;gt; in the same group to control how much minimum horizontal space (in pixels) a single taskbar button should occupy on its own.&lt;br /&gt;
&lt;br /&gt;
=== Removing captions from K-Menu ===&lt;br /&gt;
You have to add the following line into section &amp;lt;tt&amp;gt;[menus]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/kickerrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
ShowMenuTitles=false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You also have to restart Kicker for the change to take effect.&lt;br /&gt;
&lt;br /&gt;
The quickest way to do all of this is via Konsole (or another terminal emulator):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/kickerrc --group menus --key ShowMenuTitles false&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increasing icon size in K-Menu ===&lt;br /&gt;
You have to add the following line into section &amp;lt;tt&amp;gt;[menus]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/kickerrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
MenuEntryHeight=22&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can adjust the number to any icon size you see fit. You have to restart Kicker for the change to take effect.&lt;br /&gt;
&lt;br /&gt;
The quickest way to do all of this is via Konsole (or another terminal emulator):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/kickerrc --group menus --key MenuEntryHeight 22&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using a custom side image for classic K-Menu ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;The following only applies to the classic K-Menu enabled by setting &amp;quot;TDE menu style&amp;quot; to &amp;quot;Trinity Classic&amp;quot; in the &amp;quot;Menus&amp;quot; section of &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels&amp;lt;/code&amp;gt;.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# Create &amp;lt;code&amp;gt;$TDEHOME/share/apps/kicker/pics/&amp;lt;/code&amp;gt; if it doesn&amp;#039;t exist.&lt;br /&gt;
# Place custom &amp;lt;code&amp;gt;kside.png&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kside_tile.png&amp;lt;/code&amp;gt; files into &amp;lt;code&amp;gt;$TDEHOME/share/apps/kicker/pics/&amp;lt;/code&amp;gt;.&lt;br /&gt;
# In &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels&amp;lt;/code&amp;gt; under &amp;quot;Menus&amp;quot; enable &amp;quot;Show side image&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;kside.png&amp;lt;/code&amp;gt; is the side image itself, while &amp;lt;code&amp;gt;kside_tile.png&amp;lt;/code&amp;gt; is the image that fills the space above the side image if the latter does not fully fit the menu.&lt;br /&gt;
&lt;br /&gt;
Hint: you may find the default &amp;lt;tt&amp;gt;kside.png&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;kside_tile.png&amp;lt;/tt&amp;gt; files within &amp;lt;tt&amp;gt;$TDEDIR/share/apps/kicker/pics/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Changes to the image files will only apply when the Kicker gets restarted. To trigger this, you can use &amp;lt;code&amp;gt;dcop kicker kicker restart&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Using a custom image for the logout prompt ===&lt;br /&gt;
&lt;br /&gt;
# Create &amp;lt;code&amp;gt;$TDEHOME/share/apps/ksmserver/pics/&amp;lt;/code&amp;gt; if it doesn&amp;#039;t exist.&lt;br /&gt;
# Place a custom &amp;lt;code&amp;gt;shutdownkonq.png&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;$TDEHOME/share/apps/ksmserver/pics/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hint: you may find the default image within &amp;lt;tt&amp;gt;$TDEDIR/share/apps/ksmserver/pics/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Use another window manager with TDE ===&lt;br /&gt;
It is possible to use TDE with a different window manager than the one which comes by default. There are a lot of window managers out there, though, so TDE might not recognize their presence and thus not offer them as a choice in the Control Center. This is the case when you can use the advanced methods mentioned here to use TDE with another WM.&lt;br /&gt;
&lt;br /&gt;
[[File:TDE+E16 thumb.png|thumb|link=File:TDE+E16.png|Trinity Desktop with E16 as window manager]]&lt;br /&gt;
&lt;br /&gt;
==== Method 1: the easy way ====&lt;br /&gt;
The easy way is, of course, to go to &amp;lt;code&amp;gt;TDE Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Window decorations&amp;lt;/code&amp;gt;, switch to the Window Manager tab and then select your preferred window manager from the drop-down menu.&lt;br /&gt;
&lt;br /&gt;
==== Method 2: autostart TDE components from WM ====&lt;br /&gt;
You can autostart Trinity and the components you need if your window manager supports autostart. In this case the window manager is started first. An &amp;lt;tt&amp;gt;.xinitrc&amp;lt;/tt&amp;gt; file can also do the trick.&lt;br /&gt;
&lt;br /&gt;
Make sure your window manager executes the first command (and any of the other ones for other desktop components you might want to use). For a more-or-less complete TDE session use all of them:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Command&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;starttde&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;(required) Initializes required Trinity components.&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;kicker &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;The Kicker panel.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;kdesktop --waitforkded &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;The Desktop.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;khotkeys &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;Keyboard shortcuts handler.&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;&amp;#039;&amp;#039;(* Trinity apps would do this anyway, but it&amp;#039;s nice to have it ready for them.)&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As for starting the WM itself, you can choose to use your window manager&amp;#039;s session via your display manager.&lt;br /&gt;
&lt;br /&gt;
Note that this is not considered a full TDE session and that your mileage may vary. For a better way of handling this see Method 2 below.&lt;br /&gt;
&lt;br /&gt;
==== Method 3: using WM as part of a TDE session ====&lt;br /&gt;
You can make TDE use your window manager instead of TWin by passing an environment variable to the &amp;lt;tt&amp;gt;starttde&amp;lt;/tt&amp;gt; script. This variable is named &amp;lt;code&amp;gt;$TDEWM&amp;lt;/code&amp;gt; and accepts the executable name (or full path) of your window manager. For example, to start TDE with Fluxbox as a window manager:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ TDEWM=fluxbox startx /opt/trinity/starttde # adjust to your system&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=Due to a mistake, Trinity releases before R14.0.11 use the &amp;lt;code&amp;gt;$TWIN&amp;lt;/code&amp;gt; variable instead.&lt;br /&gt;
 |icon=Messagebox_info.png&lt;br /&gt;
 |background=#E9F0FF&lt;br /&gt;
 |highlight=#93B2FF&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To make this permanent:&lt;br /&gt;
&lt;br /&gt;
* If you use a &amp;lt;tt&amp;gt;.xinitrc&amp;lt;/tt&amp;gt; file, then the only thing to do is to put the line there.&lt;br /&gt;
* If you use a display manager, you&amp;#039;ll need to create a script and an X session file.&lt;br /&gt;
&lt;br /&gt;
Create a script like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
export TDEWM=your_window_manager # for R14.0.11 and higher&lt;br /&gt;
export TWIN=your_window_manager  # for pre-R14.0.11 TDE versions&lt;br /&gt;
exec starttde&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;your_window_manager&amp;lt;/code&amp;gt; with the correct value. Save it and make it executable.&lt;br /&gt;
&lt;br /&gt;
Then, create a .desktop file in &amp;lt;tt&amp;gt;/usr/share/xsessions&amp;lt;/tt&amp;gt;, like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Type=XSession&lt;br /&gt;
Name=(Session name)&lt;br /&gt;
Comment=(An optional session comment)&lt;br /&gt;
Exec=/path/to/the/script/you/just/saved&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Insert the values as needed. Save it and logout. From the sessions menu choose the session you just created. Login normally. TDE should start with the window manager of your choice.&lt;br /&gt;
&lt;br /&gt;
=== Changing alternating row colors ===&lt;br /&gt;
Alternating row colors in Konqueror, KMail, and probably a lot more, can be set in the Colors section of Trinity Control Center:&lt;br /&gt;
&amp;lt;code&amp;gt;TCC &amp;gt;&amp;gt; Appearance &amp;amp; Themes &amp;gt;&amp;gt; Colors &amp;gt;&amp;gt; Widget Color &amp;gt;&amp;gt; [Dropdown] Alternate Background in Lists&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Application tricks ==&lt;br /&gt;
Tips and tricks concerning Trinity applications (such as KMail, Kopete, Amarok etc.)&lt;br /&gt;
&lt;br /&gt;
=== Kmail: Sanitize and Decrypt E-Mails ===&lt;br /&gt;
[[Kmail_Sanitize_and_Decrypt_Mails|Kmail Sanitize and Decrypt Mails]] shows an example on how to create a filter in kmail that removes unwanted headers and automaticly decrypts incomming mails.&lt;br /&gt;
&lt;br /&gt;
=== Kate: Using the built-in command line ===&lt;br /&gt;
You can quickly apply some special settings to an open file without leaving your keyboard, by using the built-in command line in any application that uses the Kate editing part (e.g. Kate itself, KWrite, TDevelop). Press F7 to open it. It will show as a single text field below the document. When you enter a command, it will automatically offer completions, so no need to worry if you are not sure about a command&amp;#039;s name (or sometimes even arguments!). Also, the prompt preserves the history of previous successful command runs, which can be navigated using Up/Down movement keys.&lt;br /&gt;
&lt;br /&gt;
You can apply one command per time, the syntax is &amp;lt;code&amp;gt;COMMAND [ARGUMENTS...]&amp;lt;/code&amp;gt;. You can set the values for all the variables that you can set through the modeline comment prefixed with &amp;quot;set-&amp;quot; (see the relevant section in the Kate documentation if unsure).&lt;br /&gt;
&lt;br /&gt;
For example, to automatically replace tabs with spaces you can enter: &amp;lt;code&amp;gt;set-replace-tabs true&amp;lt;/code&amp;gt;.&lt;br /&gt;
To set tab width to 4 spaces: &amp;lt;code&amp;gt;set-tab-width 4&amp;lt;/code&amp;gt;.&lt;br /&gt;
To change the highlighting to Python: &amp;lt;code&amp;gt;set-highlighting Python&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Of course, the built-in command line also comes with some more advanced commands. External tools and plugins can also add their own commands! You can get a full list of available commands by running &amp;lt;code&amp;gt;help list&amp;lt;/code&amp;gt; and get help related to a command by running &amp;lt;code&amp;gt;help &amp;lt;command&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
See the table below for some useful commands:&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible&amp;quot;&lt;br /&gt;
!Command&lt;br /&gt;
!Arguments&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|help&lt;br /&gt;
|[command]&lt;br /&gt;
|Show a help message in a tooltip. If no argument is provided, shows a generic help message on using the command line. If the special argument &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt; is specified, lists all available commands. If a command name is provided, tries to find help information related to that command.&lt;br /&gt;
|-&lt;br /&gt;
|char&lt;br /&gt;
|hex, octal or base 9+1&lt;br /&gt;
|Inserts a Unicode or ASCII character based on its numeric value (e.g. 0x1234, x1234, 01231, 1234).&lt;br /&gt;
|-&lt;br /&gt;
|date&lt;br /&gt;
|[format string]&lt;br /&gt;
|Inserts current date according to the specified format string. If invalid, the default (&amp;lt;code&amp;gt;yyyy-MM-dd hh:mm:ss&amp;lt;/code&amp;gt;) is used instead.&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|[:[bcerpsw]] string&lt;br /&gt;
|Finds the first occurrence of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; in the document. Modifiers can be specified after the command by appending a &amp;quot;:&amp;quot;, e.g. &amp;lt;code&amp;gt;find:se hello&amp;lt;/code&amp;gt;. The meaning of the modifiers is: &amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039; for searching backwards, &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039; for searching from the current cursor position, &amp;#039;&amp;#039;&amp;#039;e&amp;#039;&amp;#039;&amp;#039; for searching only inside the selection, &amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039; for evaluating &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; as a regular expression, &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039; for showing a prompt each time an occurrence of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; is about to be replaced (&amp;lt;code&amp;gt;replace&amp;lt;/code&amp;gt; command only), &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; makes search case-sensitive and &amp;#039;&amp;#039;&amp;#039;w&amp;#039;&amp;#039;&amp;#039; makes search look for whole words only, not substrings.&lt;br /&gt;
|-&lt;br /&gt;
|ifind&lt;br /&gt;
|[:[bcrs]] string&lt;br /&gt;
|Finds the first occurrence of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; interactively. It performs the search again each time a key is pressed.&lt;br /&gt;
|-&lt;br /&gt;
|replace&lt;br /&gt;
|[:[bcerpsw]] string [replacement]&lt;br /&gt;
|Replaces all occurrences of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;replacement&amp;lt;/code&amp;gt;. If &amp;lt;code&amp;gt;replacement&amp;lt;/code&amp;gt; is omitted, it is assumed to be an empty string. For explanation of the modifiers see the description of &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|indent&lt;br /&gt;
|NONE&lt;br /&gt;
|Indent current line or selection by one tab stop&lt;br /&gt;
|-&lt;br /&gt;
|unindent&lt;br /&gt;
|NONE&lt;br /&gt;
|Unindent current line or selection by one tab stop&lt;br /&gt;
|-&lt;br /&gt;
|cleanindent&lt;br /&gt;
|NONE&lt;br /&gt;
|Reset identation of current line or selection&lt;br /&gt;
|-&lt;br /&gt;
|comment&lt;br /&gt;
|NONE&lt;br /&gt;
|Comment current line or selection&lt;br /&gt;
|-&lt;br /&gt;
|uncomment&lt;br /&gt;
|NONE&lt;br /&gt;
|Uncomment current line or selection&lt;br /&gt;
|-&lt;br /&gt;
|kill-line&lt;br /&gt;
|NONE&lt;br /&gt;
|Kills current line, regardless of selection.&lt;br /&gt;
|-&lt;br /&gt;
|set-indent-mode&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Sets the current indentation mode&lt;br /&gt;
|-&lt;br /&gt;
|set-highlight&lt;br /&gt;
|string&lt;br /&gt;
|Set highlighting mode for the current document&lt;br /&gt;
|-&lt;br /&gt;
|set-tab-width&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Set tab width to &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt; spaces.&lt;br /&gt;
|-&lt;br /&gt;
|set-indent-width&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Set indentation width to &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|set-word-wrap-column&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Set column on which word wrapping should occur.&lt;br /&gt;
|-&lt;br /&gt;
|goto&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Go to line &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|set-icon-border&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show icon border&lt;br /&gt;
|-&lt;br /&gt;
|set-folding-markers&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show folding markers&lt;br /&gt;
|-&lt;br /&gt;
|set-line-numbers&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show line numbers&lt;br /&gt;
|-&lt;br /&gt;
|set-show-indent&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show indent lines&lt;br /&gt;
|-&lt;br /&gt;
|set-replace-tabs&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to replace tabs with spaces&lt;br /&gt;
|-&lt;br /&gt;
|set-remove-trailing-space&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to automatically remove trailing whitespaces.&lt;br /&gt;
|-&lt;br /&gt;
|set-remove-trailing-space-save&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to remove trailing whitespaces on saving.&lt;br /&gt;
|-&lt;br /&gt;
|set-show-tabs&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show tab characters. Has no effect on space characters.&lt;br /&gt;
|-&lt;br /&gt;
|set-indent-spaces&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to use spaces instead of tabs for indentation.&lt;br /&gt;
|-&lt;br /&gt;
|set-mixed-indent&lt;br /&gt;
|boolean&lt;br /&gt;
|If enabled, enables &amp;lt;code&amp;gt;space-indent&amp;lt;/code&amp;gt; and, if &amp;lt;code&amp;gt;indent-width&amp;lt;/code&amp;gt; is zero, sets it to &amp;lt;code&amp;gt;tab-width / 2&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|set-word-wrap&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to enable word wrapping.&lt;br /&gt;
|-&lt;br /&gt;
|set-wrap-cursor&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether the cursor wraps with the text or can assume arbitrary positions in the document. Lines are automatically compensated with the needed spaces.&lt;br /&gt;
|-&lt;br /&gt;
|run-myself&lt;br /&gt;
|NONE&lt;br /&gt;
|Execute the current document&amp;#039;s text in the built-in Javascript interpreter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Sed-like expressions are also accepted, e.g.:&lt;br /&gt;
&amp;lt;code&amp;gt;s/afternoon/abend/g&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Useful scripts ==&lt;br /&gt;
A collection of snippets and useful scripts which can help in automating some tasks in TDE.&lt;br /&gt;
&lt;br /&gt;
=== Lock session and turn off screen ===&lt;br /&gt;
This shell script locks the session and after 3 seconds turns the screen off:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
dcop kdesktop KScreensaverIface lock&lt;br /&gt;
sleep 3&lt;br /&gt;
xset dpms force standby&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a ‘GUI’ you can add an Applet to your Panel that calls the shell script.&lt;br /&gt;
&lt;br /&gt;
=== Log out of current TDE session ===&lt;br /&gt;
&lt;br /&gt;
You can log out of the current TDE session and possibly shut down the system automatically (depending on your TDE configuration) using this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ dcop kdesktop default logout &amp;lt;confirm&amp;gt; &amp;lt;type&amp;gt; &amp;lt;mode&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can append three parameters (&amp;quot;confirm&amp;quot;, &amp;quot;type&amp;quot;, &amp;quot;mode&amp;quot;) to determine the&lt;br /&gt;
logout behaviour according to the following values:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;First parameter: &amp;quot;confirm&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| &amp;#039;&amp;#039;Obey the user&amp;#039;s confirmation setting&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &amp;#039;&amp;#039;Don&amp;#039;t confirm, shutdown without asking&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;Always confirm, ask even if the user turned it off&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Second parameter: &amp;quot;type&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Select previous action or the default if it&amp;#039;s the first time&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Only log out&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Log out and reboot the machine&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Log out and halt the machine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Third parameter: &amp;quot;mode&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Select previous mode (or the default one, if it&amp;#039;s the first time)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Schedule a shutdown (halt or reboot) for the time all active sessions have exited&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Shut down, if no sessions are active. Otherwise do nothing&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Force shutdown. Kill any possibly active sessions&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Pop up a dialog asking the user what to do if sessions are still active&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Full stop example&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This command will log out and halt the machine, killing any sessions and will never prompt the user:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ dcop ksmserver default logout 0 2 2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hide suspension related buttons from the shutdown dialog ===&lt;br /&gt;
There is currently no GUI option for this, but it can be achieved by a simple configuration script.&amp;lt;br/&amp;gt;&lt;br /&gt;
Create the file &amp;#039;~/.trinity/share/config/power-managerrc&amp;#039; and put the&lt;br /&gt;
following two lines inside:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
disableSuspend=true&lt;br /&gt;
disableHibernate=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next time the shutdown dialog is displayed, only the Logout, Shutdown and Restart buttons will be shown.&amp;lt;br/&amp;gt;&lt;br /&gt;
Freeze, Suspend, Hybrid suspend, Hibernate buttons will not be displayed.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Error: TDE mediamanager is not running ===&lt;br /&gt;
You might encounter this error if you try to run KDesktop, Konqueror or any other TDE application that tries to access storage media outside of a standard TDE session (e.g. from a window manager session).&lt;br /&gt;
&lt;br /&gt;
To solve this, add the following lines to your window manager&amp;#039;s autostart script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
tdeinit&lt;br /&gt;
dcop kded kded loadModule mediamanager&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unable to change display brightness with NVidia cards ===&lt;br /&gt;
If you are unable to change the display brightness, the problem could be the nvidia driver in use.&lt;br /&gt;
The following tip works for some users and it is worth a try.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;/etc/default/grub&amp;lt;/tt&amp;gt; add &amp;lt;code&amp;gt;acpi_backlight=vendor&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;nvidia.NVreg_EnableBacklightHandler=1&amp;lt;/code&amp;gt; to &lt;br /&gt;
the variable &amp;lt;tt&amp;gt;GRUB_CMDLINE_LINUX_DEFAULT&amp;lt;/tt&amp;gt; and reboot. Then controlling the display brightness using TDE&lt;br /&gt;
and multimedia (or Fn combination) keys should/may work.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;quiet nvidia.NVreg_EnableBacklightHandler=1 acpi_backlight=vendor&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unable to find mime type application/octet-stream ===&lt;br /&gt;
This error can occur due to a known bug with the TDE MIME system.&lt;br /&gt;
&lt;br /&gt;
There are two known methods to fix this:&lt;br /&gt;
&lt;br /&gt;
==== Method 1: Graphical ====&lt;br /&gt;
# Go to &amp;lt;code&amp;gt;TDE Control Centre &amp;gt; TDE Components &amp;gt; File Associations&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click on the &amp;lt;code&amp;gt;Add...&amp;lt;/code&amp;gt; button at the bottom&lt;br /&gt;
# Select the &amp;lt;code&amp;gt;application&amp;lt;/code&amp;gt; group from the drop-down menu&lt;br /&gt;
# In the name field type: &amp;lt;tt&amp;gt;octet-stream&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Click OK to close the dialog&lt;br /&gt;
# Apply the settings&lt;br /&gt;
&lt;br /&gt;
==== Method 2: Via CLI ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ cat &amp;gt; ~/.trinity/share/mimelnk/application/octet-stream.desktop &amp;lt;&amp;lt; EOF&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Comment=octet-stream&lt;br /&gt;
Hidden=false&lt;br /&gt;
Icon=&lt;br /&gt;
MimeType=application/octet-stream&lt;br /&gt;
Patterns=&lt;br /&gt;
Type=MimeType&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
* [http://web.archive.org/web/20060924164505/http://wiki.kde.org/tiki-index.php?page=Tips+and+Tricks Tips and Tricks on the old KDE TikiWiki]&lt;br /&gt;
* [http://web.archive.org/web/20060924165408/http://wiki.kde.org/tiki-index.php?page=Performance+Tips KDE3 Performance Tips on the old KDE TikiWiki]&lt;br /&gt;
* [http://web.archive.org/web/20060924164932/http://wiki.kde.org/tiki-index.php?page=Secret+Config+Settings Secret config settings on the old KDE TikiWiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:TipsAndTricks]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=KDesktop&amp;diff=3376</id>
		<title>KDesktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=KDesktop&amp;diff=3376"/>
		<updated>2024-08-15T20:18:39Z</updated>

		<summary type="html">&lt;p&gt;Blu256: /* Drop shadows */ add TDE default&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KDesktop =&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;KDesktop&amp;#039;&amp;#039;&amp;#039; is the Trinity component responsible for drawing the desktop: the wallpaper and the icons on it.&lt;br /&gt;
&lt;br /&gt;
== Customization ==&lt;br /&gt;
&lt;br /&gt;
=== Drop shadows ===&lt;br /&gt;
Shadows on the desktop icon labels can be configured in great detail since KDE 3.1 to produce results different than the default &amp;quot;halo&amp;quot; effect. Unfortunately, there is yet no GUI provided for tweaking the drop shadow, but you can still do so by editing the appropriate configuration file.&lt;br /&gt;
&lt;br /&gt;
Inside the file &amp;lt;code&amp;gt;$TDEHOME/share/config/kdesktoprc&amp;lt;/code&amp;gt; in the [FMSettings] section, you&amp;#039;ll want to place a line containing something like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
ShadowParameters=&amp;lt;comma-separated parameters&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The option accepts a string of comma-separated parameters in the following format:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Parameter&amp;lt;br&amp;gt;number !! Description&lt;br /&gt;
 |-&lt;br /&gt;
 | 1, 2&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;The first two entries are the X and Y offsets&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;(0,0 means right behind the text)&lt;br /&gt;
 |-&lt;br /&gt;
 | 3, 4&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;The following two determine the halo (factor, max opacity)&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;0-255 (0 = transparent, 255 = opaque)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Thickness (how large the halo is).&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;Usually 3-5 pixels, though most seem to prefer a thickness of about 2&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Selected algorithm&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
    ! Value&lt;br /&gt;
    ! Algorithm&lt;br /&gt;
    ! Description&lt;br /&gt;
    |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | DefaultDecay&lt;br /&gt;
    | the default AXIS/DIAGONAL_FACTOR based algorithm,&amp;lt;br&amp;gt;a simple algorithm with 3 pixels thickness&lt;br /&gt;
    |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | DoubleLinearDecay&lt;br /&gt;
    | the decay factor is 1/dx+dy &amp;#039;&amp;#039;&amp;#039;(!!! not yet implemented !!!)&amp;#039;&amp;#039;&amp;#039;,&amp;lt;br&amp;gt;a slower algorithm where the influence of a pixel is  qGray(px)/(abs(dx) + abs(dy) +1)&lt;br /&gt;
    |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | RadialDecay&lt;br /&gt;
    | decay factor is 1/sqrt(dx*dx + dy*dy) &amp;#039;&amp;#039;&amp;#039;(!!! not yet implemented !!!)&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;a very slow algorithm where the influence of a pixel is  qGray(px)/(sqrt(sqr(dx) + sqr(dy)) +1)&lt;br /&gt;
    |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | NoDecay&lt;br /&gt;
    | decay factor is 1 always,&amp;lt;br&amp;gt;a nice/fast algorithm proposed by Bernardo Hung&lt;br /&gt;
    |}&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Selection (inverse video or use the background text, boolean 0/1)&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;This setting affects how the text/halo is drawn when the icon is selected&lt;br /&gt;
   {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
    ! Value&lt;br /&gt;
    ! Meaning&lt;br /&gt;
    ! Description&lt;br /&gt;
    |-&lt;br /&gt;
    | 0&lt;br /&gt;
    | Inverse Video&lt;br /&gt;
    | Invert the text and shadow color to draw the icon&amp;#039;s dropshadow&lt;br /&gt;
    |-	&lt;br /&gt;
    | 1&lt;br /&gt;
    | Background Text&lt;br /&gt;
    | Use the current text and shadow color to draw the icon&amp;#039;s dropshadow&lt;br /&gt;
    |}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Also, the following options are aliases of existing options:&lt;br /&gt;
  ShadowTextColor      -	(Simply an alias for NormalTextColor)&lt;br /&gt;
  ShadowTextBackground -	(Simply an alias for ItemTextBackground)&lt;br /&gt;
&lt;br /&gt;
Some premade examples you can just copy-paste:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Value&lt;br /&gt;
 ! Description&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;tt&amp;gt;0, 0, 4.0, 120.0, 2, 1, 1&amp;lt;/tt&amp;gt;  || TDE (default*)&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;tt&amp;gt;2, 2, 4.0, 100.0, 2, 2, 1&amp;lt;/tt&amp;gt;  || KDE 3.2&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;tt&amp;gt;0, 0, 4.0, 255.0, 3, 0, 0&amp;lt;/tt&amp;gt;  || KDE 3.1&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;tt&amp;gt;0, 1, 16.0, 192.0, 2, 4, 0&amp;lt;/tt&amp;gt; || OS X&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;tt&amp;gt;1, 1, 32.0, 139.0, 2, 4, 0&amp;lt;/tt&amp;gt; || Windows XP&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;tt&amp;gt;0, 0, 4.0, 170.0, 1, 4, 0&amp;lt;/tt&amp;gt;  || Soft outline&lt;br /&gt;
 |-&lt;br /&gt;
 | colspan=2 | * used if &amp;lt;code&amp;gt;ShadowParameters&amp;lt;/code&amp;gt; is not specified&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
So, for a Windows XP style drop shadow, you&amp;#039;d put in your desktop config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
ShadowParameters=1,1,32.0,139.0,2,4,0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For these new settings to take effect, you can disable then re-enable the either desktop drop shadows or the desktop icons.&lt;br /&gt;
&lt;br /&gt;
A quick way to do so is to copy-paste the following command into a terminal emulator:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ dcop kdesktop default setIconsEnabled false ; dcop kdesktop default setIconsEnabled true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Original author: Abby &amp;amp;lt;abby@evilhack.com&amp;amp;gt; ([https://web.archive.org/web/20041011181636/http://www.datiku.com/documents/kdesktopshadows.txt source])&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=KDesktop&amp;diff=3375</id>
		<title>KDesktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=KDesktop&amp;diff=3375"/>
		<updated>2024-08-15T20:10:36Z</updated>

		<summary type="html">&lt;p&gt;Blu256: /* Drop shadows */ some wording fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KDesktop =&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;KDesktop&amp;#039;&amp;#039;&amp;#039; is the Trinity component responsible for drawing the desktop: the wallpaper and the icons on it.&lt;br /&gt;
&lt;br /&gt;
== Customization ==&lt;br /&gt;
&lt;br /&gt;
=== Drop shadows ===&lt;br /&gt;
Shadows on the desktop icon labels can be configured in great detail since KDE 3.1 to produce results different than the default &amp;quot;halo&amp;quot; effect. Unfortunately, there is yet no GUI provided for tweaking the drop shadow, but you can still do so by editing the appropriate configuration file.&lt;br /&gt;
&lt;br /&gt;
Inside the file &amp;lt;code&amp;gt;$TDEHOME/share/config/kdesktoprc&amp;lt;/code&amp;gt; in the [FMSettings] section, you&amp;#039;ll want to place a line containing something like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
ShadowParameters=&amp;lt;comma-separated parameters&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The option accepts a string of comma-separated parameters in the following format:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Parameter&amp;lt;br&amp;gt;number !! Description&lt;br /&gt;
 |-&lt;br /&gt;
 | 1, 2&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;The first two entries are the X and Y offsets&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;(0,0 means right behind the text)&lt;br /&gt;
 |-&lt;br /&gt;
 | 3, 4&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;The following two determine the halo (factor, max opacity)&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;0-255 (0 = transparent, 255 = opaque)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Thickness (how large the halo is).&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;Usually 3-5 pixels, though most seem to prefer a thickness of about 2&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Selected algorithm&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
    ! Value&lt;br /&gt;
    ! Algorithm&lt;br /&gt;
    ! Description&lt;br /&gt;
    |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | DefaultDecay&lt;br /&gt;
    | the default AXIS/DIAGONAL_FACTOR based algorithm,&amp;lt;br&amp;gt;a simple algorithm with 3 pixels thickness&lt;br /&gt;
    |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | DoubleLinearDecay&lt;br /&gt;
    | the decay factor is 1/dx+dy &amp;#039;&amp;#039;&amp;#039;(!!! not yet implemented !!!)&amp;#039;&amp;#039;&amp;#039;,&amp;lt;br&amp;gt;a slower algorithm where the influence of a pixel is  qGray(px)/(abs(dx) + abs(dy) +1)&lt;br /&gt;
    |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | RadialDecay&lt;br /&gt;
    | decay factor is 1/sqrt(dx*dx + dy*dy) &amp;#039;&amp;#039;&amp;#039;(!!! not yet implemented !!!)&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;a very slow algorithm where the influence of a pixel is  qGray(px)/(sqrt(sqr(dx) + sqr(dy)) +1)&lt;br /&gt;
    |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | NoDecay&lt;br /&gt;
    | decay factor is 1 always,&amp;lt;br&amp;gt;a nice/fast algorithm proposed by Bernardo Hung&lt;br /&gt;
    |}&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Selection (inverse video or use the background text, boolean 0/1)&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;This setting affects how the text/halo is drawn when the icon is selected&lt;br /&gt;
   {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
    ! Value&lt;br /&gt;
    ! Meaning&lt;br /&gt;
    ! Description&lt;br /&gt;
    |-&lt;br /&gt;
    | 0&lt;br /&gt;
    | Inverse Video&lt;br /&gt;
    | Invert the text and shadow color to draw the icon&amp;#039;s dropshadow&lt;br /&gt;
    |-	&lt;br /&gt;
    | 1&lt;br /&gt;
    | Background Text&lt;br /&gt;
    | Use the current text and shadow color to draw the icon&amp;#039;s dropshadow&lt;br /&gt;
    |}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Also, the following options are aliases of existing options:&lt;br /&gt;
  ShadowTextColor      -	(Simply an alias for NormalTextColor)&lt;br /&gt;
  ShadowTextBackground -	(Simply an alias for ItemTextBackground)&lt;br /&gt;
&lt;br /&gt;
Some premade examples you can just copy-paste:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Value&lt;br /&gt;
 ! Description&lt;br /&gt;
 |-&lt;br /&gt;
 | 2, 2, 4.0, 100.0, 2, 2, 1  || KDE 3.2&lt;br /&gt;
 |-&lt;br /&gt;
 | 0, 0, 4.0, 255.0, 3, 0, 0  || KDE 3.1&lt;br /&gt;
 |-&lt;br /&gt;
 | 0, 1, 16.0, 192.0, 2, 4, 0 || OS X&lt;br /&gt;
 |-&lt;br /&gt;
 | 1, 1, 32.0, 139.0, 2, 4, 0 || Windows XP&lt;br /&gt;
 |-&lt;br /&gt;
 | 0, 0, 4.0, 170.0, 1, 4, 0  || Soft outline&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
So, for a Windows XP style drop shadow, you&amp;#039;d put in your desktop config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
ShadowParameters=1,1,32.0,139.0,2,4,0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For these new settings to take effect, you can disable then re-enable the either desktop drop shadows or the desktop icons.&lt;br /&gt;
&lt;br /&gt;
A quick way to do so is to copy-paste the following command into a terminal emulator:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ dcop kdesktop default setIconsEnabled false ; dcop kdesktop default setIconsEnabled true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Original author: Abby &amp;amp;lt;abby@evilhack.com&amp;amp;gt; ([https://web.archive.org/web/20041011181636/http://www.datiku.com/documents/kdesktopshadows.txt source])&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=KDesktop&amp;diff=3374</id>
		<title>KDesktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=KDesktop&amp;diff=3374"/>
		<updated>2024-08-15T20:09:40Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Create page for KDesktop and add documentation for customizing the icons&amp;#039; drop shadow&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KDesktop =&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;KDesktop&amp;#039;&amp;#039;&amp;#039; is the Trinity component responsible for drawing the desktop: the wallpaper and the icons on it.&lt;br /&gt;
&lt;br /&gt;
== Customization ==&lt;br /&gt;
&lt;br /&gt;
=== Drop shadows ===&lt;br /&gt;
Shadows on the desktop icon labels can be configured in great detail since KDE 3.1 to produce results different than the default &amp;quot;halo&amp;quot; effect. Unfortunately, there is yet no GUI provided for tweaking the drop shadow, but you can still do so by editing the appropriate configuration file.&lt;br /&gt;
&lt;br /&gt;
Inside the file &amp;lt;code&amp;gt;$TDEHOME/share/config/kdesktoprc&amp;lt;/code&amp;gt; in the [FMSettings] section, you&amp;#039;ll want to place a line containing something like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
ShadowParameters=&amp;lt;insert_string_from_the_examples_below&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The option accepts a string value in the following format:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Parameter&amp;lt;br&amp;gt;number !! Description&lt;br /&gt;
 |-&lt;br /&gt;
 | 1, 2&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;The first two entries are the X and Y offsets&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;(0,0 means right behind the text)&lt;br /&gt;
 |-&lt;br /&gt;
 | 3, 4&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;The following two determine the halo (factor, max opacity)&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;0-255 (0 = transparent, 255 = opaque)&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Thickness (how large the halo is).&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;Usually 3-5 pixels, though most seem to prefer a thickness of about 2&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Selected algorithm&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
    ! Value&lt;br /&gt;
    ! Algorithm&lt;br /&gt;
    ! Description&lt;br /&gt;
    |-&lt;br /&gt;
    | 1&lt;br /&gt;
    | DefaultDecay&lt;br /&gt;
    | the default AXIS/DIAGONAL_FACTOR based algorithm,&amp;lt;br&amp;gt;a simple algorithm with 3 pixels thickness&lt;br /&gt;
    |-&lt;br /&gt;
    | 2&lt;br /&gt;
    | DoubleLinearDecay&lt;br /&gt;
    | the decay factor is 1/dx+dy &amp;#039;&amp;#039;&amp;#039;(!!! not yet implemented !!!)&amp;#039;&amp;#039;&amp;#039;,&amp;lt;br&amp;gt;a slower algorithm where the influence of a pixel is  qGray(px)/(abs(dx) + abs(dy) +1)&lt;br /&gt;
    |-&lt;br /&gt;
    | 3&lt;br /&gt;
    | RadialDecay&lt;br /&gt;
    | decay factor is 1/sqrt(dx*dx + dy*dy) &amp;#039;&amp;#039;&amp;#039;(!!! not yet implemented !!!)&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;a very slow algorithm where the influence of a pixel is  qGray(px)/(sqrt(sqr(dx) + sqr(dy)) +1)&lt;br /&gt;
    |-&lt;br /&gt;
    | 4&lt;br /&gt;
    | NoDecay&lt;br /&gt;
    | decay factor is 1 always,&amp;lt;br&amp;gt;a nice/fast algorithm proposed by Bernardo Hung&lt;br /&gt;
    |}&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Selection (inverse video or use the background text, boolean 0/1)&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;This setting affects how the text/halo is drawn when the icon is selected&lt;br /&gt;
   {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
    ! Value&lt;br /&gt;
    ! Meaning&lt;br /&gt;
    ! Description&lt;br /&gt;
    |-&lt;br /&gt;
    | 0&lt;br /&gt;
    | Inverse Video&lt;br /&gt;
    | Invert the text and shadow color to draw the icon&amp;#039;s dropshadow&lt;br /&gt;
    |-	&lt;br /&gt;
    | 1&lt;br /&gt;
    | Background Text&lt;br /&gt;
    | Use the current text and shadow color to draw the icon&amp;#039;s dropshadow&lt;br /&gt;
    |}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Also, the following options are aliases of existing options:&lt;br /&gt;
  ShadowTextColor      -	(Simply an alias for NormalTextColor)&lt;br /&gt;
  ShadowTextBackground -	(Simply an alias for ItemTextBackground)&lt;br /&gt;
&lt;br /&gt;
Some premade examples you can just copy-paste:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Value&lt;br /&gt;
 ! Description&lt;br /&gt;
 |-&lt;br /&gt;
 | 2, 2, 4.0, 100.0, 2, 2, 1  || KDE 3.2&lt;br /&gt;
 |-&lt;br /&gt;
 | 0, 0, 4.0, 255.0, 3, 0, 0  || KDE 3.1&lt;br /&gt;
 |-&lt;br /&gt;
 | 0, 1, 16.0, 192.0, 2, 4, 0 || OS X&lt;br /&gt;
 |-&lt;br /&gt;
 | 1, 1, 32.0, 139.0, 2, 4, 0 || Windows XP&lt;br /&gt;
 |-&lt;br /&gt;
 | 0, 0, 4.0, 170.0, 1, 4, 0  || Soft outline&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
So, for a Windows XP style drop shadow, you&amp;#039;d put in your desktop config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
ShadowParameters=1,1,32.0,139.0,2,4,0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For these new settings to take effect, you can disable then re-enable the either desktop drop shadows or the desktop icons.&lt;br /&gt;
&lt;br /&gt;
A quick way to do so is to copy-paste the following command into a terminal emulator:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ dcop kdesktop default setIconsEnabled false ; dcop kdesktop default setIconsEnabled true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Original author: Abby &amp;amp;lt;abby@evilhack.com&amp;amp;gt; ([https://web.archive.org/web/20041011181636/http://www.datiku.com/documents/kdesktopshadows.txt source])&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Tips_And_Tricks&amp;diff=3360</id>
		<title>Tips And Tricks</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Tips_And_Tricks&amp;diff=3360"/>
		<updated>2024-06-10T14:40:24Z</updated>

		<summary type="html">&lt;p&gt;Blu256: /* Kate: Quickly apply settings to a document */ Some improvements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant as a container of tips and tricks collected over time, addressing topics and issues brought up by TDE users.&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also see the users&amp;#039; [[User FAQ | Frequently Asked Questions]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Installing Trinity ==&lt;br /&gt;
Tips and tricks relevant to obtaining a well-functioning Trinity installation.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading from older versions or KDE3 ===&lt;br /&gt;
&lt;br /&gt;
==== Upgrading from KDE3 or from TDE 3.5.x to R14.0.x ====&lt;br /&gt;
If you are migrating from KDE3 or upgrading from TDE 3.5.x, you can reuse your own settings in TDE R14.0.x.&lt;br /&gt;
When logging into R14.0.x for the first time, TDE will automatically execute a script which will migrate as many of your KDE3/TDE3.5.x settings as possible. At the end of the process, your KDE3/TDE3.5.x profile will still exist (unchanged) and a new TDE profile will have been created inside the &amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;~/.trinity&amp;#039;&amp;#039;&amp;#039;&amp;lt;/tt&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
{{TipBox&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=Please refrain from renaming your &amp;lt;tt&amp;gt;.kde&amp;lt;/tt&amp;gt; into &amp;lt;tt&amp;gt;.trinity&amp;lt;/tt&amp;gt; before running R14.0.x. If you do so, the migration process will not take part and some applications may not run smoothly after that. See [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2356 here] for an example of problems that may arise if you rename your &amp;lt;tt&amp;gt;.kde&amp;lt;/tt&amp;gt; folder manually.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Upgrading from an old version (pre Dec/2014) ====&lt;br /&gt;
Depending on your previous version of TDE, the file /etc/trinity/tdm/tdmrc may change from a script-generated file to a config file.&lt;br /&gt;
It is advisable to accept the newer file if you are upgrading from an old version to TDE &amp;gt;= R14.0.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Configuring Trinity ==&lt;br /&gt;
Tips and tricks for custom fine-tuning and configurations.&lt;br /&gt;
&lt;br /&gt;
=== Using sudo and tdesudo ===&lt;br /&gt;
If you use sudo or a sudo-based distribution (such as Ubuntu), it is highly recommended that you install the &amp;lt;tt&amp;gt;tdesudo-trinity&amp;lt;/tt&amp;gt; package as well. This allows to run programs that require root priviledge from the TDE menu using your own password.&lt;br /&gt;
If &amp;lt;tt&amp;gt;tdesudo-trinity&amp;lt;/tt&amp;gt; is not installed, you will be asked for the root password instead.&lt;br /&gt;
More details can be found [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2563 here].&lt;br /&gt;
&lt;br /&gt;
=== Un-Bogging down an older system ===&lt;br /&gt;
Your system runs pretty well until Firefox, an office application, or some other application with high CPU usage demands too many cycles and your system then ‘freezes’ for seconds or minutes until the application gets finished.&lt;br /&gt;
&lt;br /&gt;
A simple, but somewhat tedious, solution is to add &amp;lt;code&amp;gt;nice&amp;lt;/code&amp;gt; to the launcher for each. Using LibreOffice as an example, add &amp;lt;code&amp;gt;nice -n 2&amp;lt;/code&amp;gt; before the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;TDE Menu &amp;gt;&amp;gt; Office &amp;gt;&amp;gt; LibreOffice &amp;gt;&amp;gt; {right click} &amp;gt;&amp;gt; Edit Item&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change the ‘Command’ entry from &amp;lt;code&amp;gt;libreoffice %U&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;nice -n 2 libreoffice %U&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Then find every other entry for LibreOffice (LibreOffice Base, LibreOffice Draw, LibreOffice Math, LibreOffice Impress, etc.) and do the same.&lt;br /&gt;
&lt;br /&gt;
Other ‘usual suspects’ to make nice are: browsers, BitTorrent clients, GUI Diff tools, and, occasionally, PDF viewers.&lt;br /&gt;
&lt;br /&gt;
Generally anything ‘real-time’ you should leave alone (movies, games, editors).&lt;br /&gt;
&lt;br /&gt;
These were used on a Core2 Duo (P7570 @ 2.26GHz, CPU Mark: 926):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
!Nice level&lt;br /&gt;
!Application Name&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Kmail&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|LibreOffice&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Firefox&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|qBittorrent&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Assigning a mouse click as part of a keyboard shortcut ===&lt;br /&gt;
There are multiple ways to accomplish this.  The best arguably was the first method, which has been lost to time.&lt;br /&gt;
&lt;br /&gt;
In these examples we are trying to achieve:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{Windows Key} + {left mouse click} = Minimize application under mouse cursor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change what you need to achieve what you want.&lt;br /&gt;
&lt;br /&gt;
==== Method 1: Lost ====&lt;br /&gt;
&lt;br /&gt;
As the name says it’s been lost.  What is remembered is that:&lt;br /&gt;
&lt;br /&gt;
* No additional software had to be installed&lt;br /&gt;
* The change was exceedingly minor.&lt;br /&gt;
&lt;br /&gt;
==== Method 2: &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt; + &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Buggy. This works, but the &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; command used occasionally leaves an unfinished half-keystroke hanging.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 1.&amp;#039;&amp;#039;&amp;#039; Go to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Regional &amp;amp; Accessibility &amp;gt;&amp;gt; Keyboard Shortcuts &amp;gt;&amp;gt; Shortcuts Schemes &amp;gt;&amp;gt; Global Shortcuts &amp;gt;&amp;gt; Windows&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set &amp;quot;Minimize Window&amp;quot; to “Win+Space”.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 2.&amp;#039;&amp;#039;&amp;#039; Issue these command(s) as root or using sudo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# apt-get install xbindkeys&lt;br /&gt;
# apt-get install xdotool&lt;br /&gt;
# apt-get install xbindkeys-config # optional&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 3.&amp;#039;&amp;#039;&amp;#039; Edit &amp;lt;tt&amp;gt;$HOME/.xbindkeysrc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Add the following lines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &amp;#039;shell&amp;#039; is probably the closest match(?) --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#MinimizeWindowUnderMouse&lt;br /&gt;
&amp;quot;xdotool click --clearmodifiers 1 key super+space&amp;quot;&lt;br /&gt;
   m:0x40 + c:133 + b:1 + release&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=xbindkeys does not like superfluous comments within its definitions. Leaving prior entries commented out within the config definition caused odd and inconsistent results.&lt;br /&gt;
 |icon=Messagebox_info.png&lt;br /&gt;
 |background=#E9F0FF&lt;br /&gt;
 |highlight=#93B2FF&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 4.&amp;#039;&amp;#039;&amp;#039; Issue these commands as yourself (not as root):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ killall xbindkeys&lt;br /&gt;
$ xbindkeys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 5.&amp;#039;&amp;#039;&amp;#039; To minimize any window:&lt;br /&gt;
&lt;br /&gt;
Move the cursor over a window, hold down the Windows key and click the left mouse button.&lt;br /&gt;
&lt;br /&gt;
==== Method 3: &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;dcop&amp;lt;/tt&amp;gt; and/or &amp;lt;tt&amp;gt;gdbus&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Basically the same as &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt; + &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; but replacing &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; with either a &amp;lt;tt&amp;gt;dcop&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;gdbus&amp;lt;/tt&amp;gt; command. This is probably less ‘buggy’ than &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt;, but unfortunately the writer doesn’t understand enough about either to make this work.&lt;br /&gt;
&lt;br /&gt;
=== Enabling image thumbnails in Konqueror for external devices opened via popup after plugging in ===&lt;br /&gt;
&lt;br /&gt;
When an external device (e.g. USB flash drive) is plugged in, choosing &amp;quot;Open in New Window&amp;quot; in the TDE popup window will open the device under the &amp;lt;tt&amp;gt;system:/&amp;lt;/tt&amp;gt; path prefix. Image thumbnail display is not enabled per default for this location type in Konqueror. To enable image thumbnails for &amp;lt;tt&amp;gt;system:/&amp;lt;/tt&amp;gt; paths, adhere to the following:&lt;br /&gt;
&lt;br /&gt;
# In Konqueror from the menubar select &amp;lt;code&amp;gt;Settings &amp;gt;&amp;gt; Configure Konqueror...&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Select &amp;lt;code&amp;gt;Previews &amp;amp; Metadata&amp;lt;/code&amp;gt; on the left.&lt;br /&gt;
# Under &amp;lt;code&amp;gt;Local Protocols&amp;lt;/code&amp;gt; tick the checkbox for &amp;lt;code&amp;gt;system&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Look and feel ==&lt;br /&gt;
Tips and tricks concerning the appearance of Trinity desktop and applications.&lt;br /&gt;
&lt;br /&gt;
=== Adding a separator between windows button in the title bar ===&lt;br /&gt;
Open &amp;lt;code&amp;gt;TDE Control Center &amp;gt;&amp;gt; Appearance &amp;amp; Themes &amp;gt;&amp;gt; Window Decorations&amp;lt;/code&amp;gt; and then select the &amp;lt;code&amp;gt;Buttons&amp;lt;/code&amp;gt; tab.&lt;br /&gt;
&lt;br /&gt;
In the middle of the screen there is a list of available buttons. Drag a separator (&amp;lt;code&amp;gt;--- spacer ---&amp;lt;/code&amp;gt;) on the title bar of the sample window, between the buttons where you want to space to appear.&lt;br /&gt;
&lt;br /&gt;
Check the preview in the bottom part of the window and modify again as required.&lt;br /&gt;
&lt;br /&gt;
Confirm when done.&lt;br /&gt;
&lt;br /&gt;
=== Enlarging Kicker taskbar buttons to only occupy a single row ===&lt;br /&gt;
&lt;br /&gt;
When the configured Kicker panel size surpasses a certain pixel count, the taskbar will start getting segmented into multiple rows, leading to taskbar buttons being placed in a grid.&lt;br /&gt;
To prevent this, the minimum height of taskbar buttons can be increased to enforce a single row of taskbar buttons.&lt;br /&gt;
&lt;br /&gt;
To achieve this, you have to add the following line into section &amp;lt;tt&amp;gt;[General]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/ktaskbarrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
MinimumButtonHeight=38&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Select a &amp;lt;tt&amp;gt;MinimumButtonHeight&amp;lt;/tt&amp;gt; that matches the pixel size of the Kicker panel as configured in &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels &amp;gt;&amp;gt; Arrangement&amp;lt;/code&amp;gt; (when the size is set to &amp;quot;Custom&amp;quot;).&lt;br /&gt;
Restart the Kicker panel after changing the configuration line.&lt;br /&gt;
&lt;br /&gt;
As an example, for a panel height of 38 pixels this adjustment can be done via Konsole (or another terminal emulator) in the following manner:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/ktaskbarrc --group General --key MinimumButtonHeight 38&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hint: you may also additionally set &amp;lt;code&amp;gt;MinimumButtonWidth&amp;lt;/code&amp;gt; in the same group to control how much minimum horizontal space (in pixels) a single taskbar button should occupy on its own.&lt;br /&gt;
&lt;br /&gt;
=== Removing captions from K-Menu ===&lt;br /&gt;
You have to add the following line into section &amp;lt;tt&amp;gt;[menus]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/kickerrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
ShowMenuTitles=false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You also have to restart Kicker for the change to take effect.&lt;br /&gt;
&lt;br /&gt;
The quickest way to do all of this is via Konsole (or another terminal emulator):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/kickerrc --group menus --key ShowMenuTitles false&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increasing icon size in K-Menu ===&lt;br /&gt;
You have to add the following line into section &amp;lt;tt&amp;gt;[menus]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/kickerrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
MenuEntryHeight=22&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can adjust the number to any icon size you see fit. You have to restart Kicker for the change to take effect.&lt;br /&gt;
&lt;br /&gt;
The quickest way to do all of this is via Konsole (or another terminal emulator):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/kickerrc --group menus --key MenuEntryHeight 22&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using a custom side image for classic K-Menu ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;The following only applies to the classic K-Menu enabled by setting &amp;quot;TDE menu style&amp;quot; to &amp;quot;Trinity Classic&amp;quot; in the &amp;quot;Menus&amp;quot; section of &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels&amp;lt;/code&amp;gt;.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# Create &amp;lt;code&amp;gt;$TDEHOME/share/apps/kicker/pics/&amp;lt;/code&amp;gt; if it doesn&amp;#039;t exist.&lt;br /&gt;
# Place custom &amp;lt;code&amp;gt;kside.png&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kside_tile.png&amp;lt;/code&amp;gt; files into &amp;lt;code&amp;gt;$TDEHOME/share/apps/kicker/pics/&amp;lt;/code&amp;gt;.&lt;br /&gt;
# In &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels&amp;lt;/code&amp;gt; under &amp;quot;Menus&amp;quot; enable &amp;quot;Show side image&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hint: you may find the default &amp;lt;tt&amp;gt;kside.png&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;kside_tile.png&amp;lt;/tt&amp;gt; files within &amp;lt;tt&amp;gt;$TDEDIR/share/apps/kicker/pics/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Changes to the image files will only apply when the Kicker gets restarted. To trigger this, you can use &amp;lt;code&amp;gt;dcop kicker kicker restart&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Using a custom image for the logout prompt ===&lt;br /&gt;
&lt;br /&gt;
# Create &amp;lt;code&amp;gt;$TDEHOME/share/apps/ksmserver/pics/&amp;lt;/code&amp;gt; if it doesn&amp;#039;t exist.&lt;br /&gt;
# Place a custom &amp;lt;code&amp;gt;shutdownkonq.png&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;$TDEHOME/share/apps/ksmserver/pics/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hint: you may find the default image within &amp;lt;tt&amp;gt;$TDEDIR/share/apps/ksmserver/pics/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Use another window manager with TDE ===&lt;br /&gt;
It is possible to use TDE with a different window manager than the one which comes by default. There are a lot of window managers out there, though, so TDE might not recognize their presence and thus not offer them as a choice in the Control Center. This is the case when you can use the advanced methods mentioned here to use TDE with another WM.&lt;br /&gt;
&lt;br /&gt;
[[File:TDE+E16 thumb.png|thumb|link=File:TDE+E16.png|Trinity Desktop with E16 as window manager]]&lt;br /&gt;
&lt;br /&gt;
==== Method 1: the easy way ====&lt;br /&gt;
The easy way is, of course, to go to &amp;lt;code&amp;gt;TDE Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Window decorations&amp;lt;/code&amp;gt;, switch to the Window Manager tab and then select your preferred window manager from the drop-down menu.&lt;br /&gt;
&lt;br /&gt;
==== Method 2: autostart TDE components from WM ====&lt;br /&gt;
You can autostart Trinity and the components you need if your window manager supports autostart. In this case the window manager is started first. An &amp;lt;tt&amp;gt;.xinitrc&amp;lt;/tt&amp;gt; file can also do the trick.&lt;br /&gt;
&lt;br /&gt;
Make sure your window manager executes the first command (and any of the other ones for other desktop components you might want to use). For a more-or-less complete TDE session use all of them:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Command&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;starttde&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;(required) Initializes required Trinity components.&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;kicker &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;The Kicker panel.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;kdesktop --waitforkded &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;The Desktop.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;khotkeys &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;Keyboard shortcuts handler.&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;&amp;#039;&amp;#039;(* Trinity apps would do this anyway, but it&amp;#039;s nice to have it ready for them.)&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As for starting the WM itself, you can choose to use your window manager&amp;#039;s session via your display manager.&lt;br /&gt;
&lt;br /&gt;
Note that this is not considered a full TDE session and that your mileage may vary. For a better way of handling this see Method 2 below.&lt;br /&gt;
&lt;br /&gt;
==== Method 3: using WM as part of a TDE session ====&lt;br /&gt;
You can make TDE use your window manager instead of TWin by passing an environment variable to the &amp;lt;tt&amp;gt;starttde&amp;lt;/tt&amp;gt; script. This variable is named &amp;lt;code&amp;gt;$TDEWM&amp;lt;/code&amp;gt; and accepts the executable name (or full path) of your window manager. For example, to start TDE with Fluxbox as a window manager:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ TDEWM=fluxbox startx /opt/trinity/starttde # adjust to your system&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=Due to a mistake, Trinity releases before R14.0.11 use the &amp;lt;code&amp;gt;$TWIN&amp;lt;/code&amp;gt; variable instead.&lt;br /&gt;
 |icon=Messagebox_info.png&lt;br /&gt;
 |background=#E9F0FF&lt;br /&gt;
 |highlight=#93B2FF&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To make this permanent:&lt;br /&gt;
&lt;br /&gt;
* If you use a &amp;lt;tt&amp;gt;.xinitrc&amp;lt;/tt&amp;gt; file, then the only thing to do is to put the line there.&lt;br /&gt;
* If you use a display manager, you&amp;#039;ll need to create a script and an X session file.&lt;br /&gt;
&lt;br /&gt;
Create a script like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
export TDEWM=your_window_manager # for R14.0.11 and higher&lt;br /&gt;
export TWIN=your_window_manager  # for pre-R14.0.11 TDE versions&lt;br /&gt;
exec starttde&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;your_window_manager&amp;lt;/code&amp;gt; with the correct value. Save it and make it executable.&lt;br /&gt;
&lt;br /&gt;
Then, create a .desktop file in &amp;lt;tt&amp;gt;/usr/share/xsessions&amp;lt;/tt&amp;gt;, like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Type=XSession&lt;br /&gt;
Name=(Session name)&lt;br /&gt;
Comment=(An optional session comment)&lt;br /&gt;
Exec=/path/to/the/script/you/just/saved&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Insert the values as needed. Save it and logout. From the sessions menu choose the session you just created. Login normally. TDE should start with the window manager of your choice.&lt;br /&gt;
&lt;br /&gt;
=== Changing alternating row colors ===&lt;br /&gt;
Alternating row colors in Konqueror, KMail, and probably a lot more, can be set in the Colors section of Trinity Control Center:&lt;br /&gt;
&amp;lt;code&amp;gt;TCC &amp;gt;&amp;gt; Appearance &amp;amp; Themes &amp;gt;&amp;gt; Colors &amp;gt;&amp;gt; Widget Color &amp;gt;&amp;gt; [Dropdown] Alternate Background in Lists&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Application tricks ==&lt;br /&gt;
Tips and tricks concerning Trinity applications (such as KMail, Kopete, Amarok etc.)&lt;br /&gt;
&lt;br /&gt;
=== Kmail: Sanitize and Decrypt E-Mails ===&lt;br /&gt;
[[Kmail_Sanitize_and_Decrypt_Mails|Kmail Sanitize and Decrypt Mails]] shows an example on how to create a filter in kmail that removes unwanted headers and automaticly decrypts incomming mails.&lt;br /&gt;
&lt;br /&gt;
=== Kate: Using the built-in command line ===&lt;br /&gt;
You can quickly apply some special settings to an open file without leaving your keyboard, by using the built-in command line in any application that uses the Kate editing part (e.g. Kate itself, KWrite, TDevelop). Press F7 to open it. It will show as a single text field below the document. When you enter a command, it will automatically offer completions, so no need to worry if you are not sure about a command&amp;#039;s name (or sometimes even arguments!). Also, the prompt preserves the history of previous successful command runs, which can be navigated using Up/Down movement keys.&lt;br /&gt;
&lt;br /&gt;
You can apply one command per time, the syntax is &amp;lt;code&amp;gt;COMMAND [ARGUMENTS...]&amp;lt;/code&amp;gt;. You can set the values for all the variables that you can set through the modeline comment prefixed with &amp;quot;set-&amp;quot; (see the relevant section in the Kate documentation if unsure).&lt;br /&gt;
&lt;br /&gt;
For example, to automatically replace tabs with spaces you can enter: &amp;lt;code&amp;gt;set-replace-tabs true&amp;lt;/code&amp;gt;.&lt;br /&gt;
To set tab width to 4 spaces: &amp;lt;code&amp;gt;set-tab-width 4&amp;lt;/code&amp;gt;.&lt;br /&gt;
To change the highlighting to Python: &amp;lt;code&amp;gt;set-highlighting Python&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Of course, the built-in command line also comes with some more advanced commands. External tools and plugins can also add their own commands! You can get a full list of available commands by running &amp;lt;code&amp;gt;help list&amp;lt;/code&amp;gt; and get help related to a command by running &amp;lt;code&amp;gt;help &amp;lt;command&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
See the table below for some useful commands:&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible&amp;quot;&lt;br /&gt;
!Command&lt;br /&gt;
!Arguments&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|help&lt;br /&gt;
|[command]&lt;br /&gt;
|Show a help message in a tooltip. If no argument is provided, shows a generic help message on using the command line. If the special argument &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt; is specified, lists all available commands. If a command name is provided, tries to find help information related to that command.&lt;br /&gt;
|-&lt;br /&gt;
|char&lt;br /&gt;
|hex, octal or base 9+1&lt;br /&gt;
|Inserts a Unicode or ASCII character based on its numeric value (e.g. 0x1234, x1234, 01231, 1234).&lt;br /&gt;
|-&lt;br /&gt;
|date&lt;br /&gt;
|[format string]&lt;br /&gt;
|Inserts current date according to the specified format string. If invalid, the default (&amp;lt;code&amp;gt;yyyy-MM-dd hh:mm:ss&amp;lt;/code&amp;gt;) is used instead.&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|[:[bcerpsw]] string&lt;br /&gt;
|Finds the first occurrence of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; in the document. Modifiers can be specified after the command by appending a &amp;quot;:&amp;quot;, e.g. &amp;lt;code&amp;gt;find:se hello&amp;lt;/code&amp;gt;. The meaning of the modifiers is: &amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039; for searching backwards, &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039; for searching from the current cursor position, &amp;#039;&amp;#039;&amp;#039;e&amp;#039;&amp;#039;&amp;#039; for searching only inside the selection, &amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039; for evaluating &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; as a regular expression, &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039; for showing a prompt each time an occurrence of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; is about to be replaced (&amp;lt;code&amp;gt;replace&amp;lt;/code&amp;gt; command only), &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; makes search case-sensitive and &amp;#039;&amp;#039;&amp;#039;w&amp;#039;&amp;#039;&amp;#039; makes search look for whole words only, not substrings.&lt;br /&gt;
|-&lt;br /&gt;
|ifind&lt;br /&gt;
|[:[bcrs]] string&lt;br /&gt;
|Finds the first occurrence of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; interactively. It performs the search again each time a key is pressed.&lt;br /&gt;
|-&lt;br /&gt;
|replace&lt;br /&gt;
|[:[bcerpsw]] string [replacement]&lt;br /&gt;
|Replaces all occurrences of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;replacement&amp;lt;/code&amp;gt;. If &amp;lt;code&amp;gt;replacement&amp;lt;/code&amp;gt; is omitted, it is assumed to be an empty string. For explanation of the modifiers see the description of &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|indent&lt;br /&gt;
|NONE&lt;br /&gt;
|Indent current line or selection by one tab stop&lt;br /&gt;
|-&lt;br /&gt;
|unindent&lt;br /&gt;
|NONE&lt;br /&gt;
|Unindent current line or selection by one tab stop&lt;br /&gt;
|-&lt;br /&gt;
|cleanindent&lt;br /&gt;
|NONE&lt;br /&gt;
|Reset identation of current line or selection&lt;br /&gt;
|-&lt;br /&gt;
|comment&lt;br /&gt;
|NONE&lt;br /&gt;
|Comment current line or selection&lt;br /&gt;
|-&lt;br /&gt;
|uncomment&lt;br /&gt;
|NONE&lt;br /&gt;
|Uncomment current line or selection&lt;br /&gt;
|-&lt;br /&gt;
|kill-line&lt;br /&gt;
|NONE&lt;br /&gt;
|Kills current line, regardless of selection.&lt;br /&gt;
|-&lt;br /&gt;
|set-indent-mode&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Sets the current indentation mode&lt;br /&gt;
|-&lt;br /&gt;
|set-highlight&lt;br /&gt;
|string&lt;br /&gt;
|Set highlighting mode for the current document&lt;br /&gt;
|-&lt;br /&gt;
|set-tab-width&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Set tab width to &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt; spaces.&lt;br /&gt;
|-&lt;br /&gt;
|set-indent-width&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Set indentation width to &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|set-word-wrap-column&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Set column on which word wrapping should occur.&lt;br /&gt;
|-&lt;br /&gt;
|goto&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Go to line &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|set-icon-border&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show icon border&lt;br /&gt;
|-&lt;br /&gt;
|set-folding-markers&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show folding markers&lt;br /&gt;
|-&lt;br /&gt;
|set-line-numbers&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show line numbers&lt;br /&gt;
|-&lt;br /&gt;
|set-show-indent&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show indent lines&lt;br /&gt;
|-&lt;br /&gt;
|set-replace-tabs&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to replace tabs with spaces&lt;br /&gt;
|-&lt;br /&gt;
|set-remove-trailing-space&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to automatically remove trailing whitespaces.&lt;br /&gt;
|-&lt;br /&gt;
|set-remove-trailing-space-save&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to remove trailing whitespaces on saving.&lt;br /&gt;
|-&lt;br /&gt;
|set-show-tabs&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show tab characters. Has no effect on space characters.&lt;br /&gt;
|-&lt;br /&gt;
|set-indent-spaces&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to use spaces instead of tabs for indentation.&lt;br /&gt;
|-&lt;br /&gt;
|set-mixed-indent&lt;br /&gt;
|boolean&lt;br /&gt;
|If enabled, enables &amp;lt;code&amp;gt;space-indent&amp;lt;/code&amp;gt; and, if &amp;lt;code&amp;gt;indent-width&amp;lt;/code&amp;gt; is zero, sets it to &amp;lt;code&amp;gt;tab-width / 2&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|set-word-wrap&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to enable word wrapping.&lt;br /&gt;
|-&lt;br /&gt;
|set-wrap-cursor&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether the cursor wraps with the text or can assume arbitrary positions in the document. Lines are automatically compensated with the needed spaces.&lt;br /&gt;
|-&lt;br /&gt;
|run-myself&lt;br /&gt;
|NONE&lt;br /&gt;
|Execute the current document&amp;#039;s text in the built-in Javascript interpreter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Sed-like expressions are also accepted, e.g.:&lt;br /&gt;
&amp;lt;code&amp;gt;s/afternoon/abend/g&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Useful scripts ==&lt;br /&gt;
A collection of snippets and useful scripts which can help in automating some tasks in TDE.&lt;br /&gt;
&lt;br /&gt;
=== Lock session and turn off screen ===&lt;br /&gt;
This shell script locks the session and after 3 seconds turns the screen off:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
dcop kdesktop KScreensaverIface lock&lt;br /&gt;
sleep 3&lt;br /&gt;
xset dpms force standby&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a ‘GUI’ you can add an Applet to your Panel that calls the shell script.&lt;br /&gt;
&lt;br /&gt;
=== Log out of current TDE session ===&lt;br /&gt;
&lt;br /&gt;
You can log out of the current TDE session and possibly shut down the system automatically (depending on your TDE configuration) using this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ dcop kdesktop default logout &amp;lt;confirm&amp;gt; &amp;lt;type&amp;gt; &amp;lt;mode&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can append three parameters (&amp;quot;confirm&amp;quot;, &amp;quot;type&amp;quot;, &amp;quot;mode&amp;quot;) to determine the&lt;br /&gt;
logout behaviour according to the following values:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;First parameter: &amp;quot;confirm&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| &amp;#039;&amp;#039;Obey the user&amp;#039;s confirmation setting&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &amp;#039;&amp;#039;Don&amp;#039;t confirm, shutdown without asking&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;Always confirm, ask even if the user turned it off&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Second parameter: &amp;quot;type&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Select previous action or the default if it&amp;#039;s the first time&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Only log out&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Log out and reboot the machine&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Log out and halt the machine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Third parameter: &amp;quot;mode&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Select previous mode (or the default one, if it&amp;#039;s the first time)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Schedule a shutdown (halt or reboot) for the time all active sessions have exited&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Shut down, if no sessions are active. Otherwise do nothing&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Force shutdown. Kill any possibly active sessions&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Pop up a dialog asking the user what to do if sessions are still active&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Full stop example&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This command will log out and halt the machine, killing any sessions and will never prompt the user:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ dcop ksmserver default logout 0 2 2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hide suspension related buttons from the shutdown dialog ===&lt;br /&gt;
There is currently no GUI option for this, but it can be achieved by a simple configuration script.&amp;lt;br/&amp;gt;&lt;br /&gt;
Create the file &amp;#039;~/.trinity/share/config/power-managerrc&amp;#039; and put the&lt;br /&gt;
following two lines inside:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
disableSuspend=true&lt;br /&gt;
disableHibernate=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next time the shutdown dialog is displayed, only the Logout, Shutdown and Restart buttons will be shown.&amp;lt;br/&amp;gt;&lt;br /&gt;
Freeze, Suspend, Hybrid suspend, Hibernate buttons will not be displayed.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Error: TDE mediamanager is not running ===&lt;br /&gt;
You might encounter this error if you try to run KDesktop, Konqueror or any other TDE application that tries to access storage media outside of a standard TDE session (e.g. from a window manager session).&lt;br /&gt;
&lt;br /&gt;
To solve this, add the following lines to your window manager&amp;#039;s autostart script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
tdeinit&lt;br /&gt;
dcop kded kded loadModule mediamanager&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unable to change display brightness with NVidia cards ===&lt;br /&gt;
If you are unable to change the display brightness, the problem could be the nvidia driver in use.&lt;br /&gt;
The following tip works for some users and it is worth a try.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;/etc/default/grub&amp;lt;/tt&amp;gt; add &amp;lt;code&amp;gt;acpi_backlight=vendor&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;nvidia.NVreg_EnableBacklightHandler=1&amp;lt;/code&amp;gt; to &lt;br /&gt;
the variable &amp;lt;tt&amp;gt;GRUB_CMDLINE_LINUX_DEFAULT&amp;lt;/tt&amp;gt; and reboot. Then controlling the display brightness using TDE&lt;br /&gt;
and multimedia (or Fn combination) keys should/may work.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;quiet nvidia.NVreg_EnableBacklightHandler=1 acpi_backlight=vendor&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unable to find mime type application/octet-stream ===&lt;br /&gt;
This error can occur due to a known bug with the TDE MIME system.&lt;br /&gt;
&lt;br /&gt;
There are two known methods to fix this:&lt;br /&gt;
&lt;br /&gt;
==== Method 1: Graphical ====&lt;br /&gt;
# Go to &amp;lt;code&amp;gt;TDE Control Centre &amp;gt; TDE Components &amp;gt; File Associations&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click on the &amp;lt;code&amp;gt;Add...&amp;lt;/code&amp;gt; button at the bottom&lt;br /&gt;
# Select the &amp;lt;code&amp;gt;application&amp;lt;/code&amp;gt; group from the drop-down menu&lt;br /&gt;
# In the name field type: &amp;lt;tt&amp;gt;octet-stream&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Click OK to close the dialog&lt;br /&gt;
# Apply the settings&lt;br /&gt;
&lt;br /&gt;
==== Method 2: Via CLI ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ cat &amp;gt; ~/.trinity/share/mimelnk/application/octet-stream.desktop &amp;lt;&amp;lt; EOF&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Comment=octet-stream&lt;br /&gt;
Hidden=false&lt;br /&gt;
Icon=&lt;br /&gt;
MimeType=application/octet-stream&lt;br /&gt;
Patterns=&lt;br /&gt;
Type=MimeType&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
* [http://web.archive.org/web/20060924164505/http://wiki.kde.org/tiki-index.php?page=Tips+and+Tricks Tips and Tricks on the old KDE TikiWiki]&lt;br /&gt;
* [http://web.archive.org/web/20060924165408/http://wiki.kde.org/tiki-index.php?page=Performance+Tips KDE3 Performance Tips on the old KDE TikiWiki]&lt;br /&gt;
* [http://web.archive.org/web/20060924164932/http://wiki.kde.org/tiki-index.php?page=Secret+Config+Settings Secret config settings on the old KDE TikiWiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:TipsAndTricks]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Tips_And_Tricks&amp;diff=3359</id>
		<title>Tips And Tricks</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Tips_And_Tricks&amp;diff=3359"/>
		<updated>2024-06-10T14:31:03Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Add documentation about kate commands&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant as a container of tips and tricks collected over time, addressing topics and issues brought up by TDE users.&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also see the users&amp;#039; [[User FAQ | Frequently Asked Questions]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Installing Trinity ==&lt;br /&gt;
Tips and tricks relevant to obtaining a well-functioning Trinity installation.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading from older versions or KDE3 ===&lt;br /&gt;
&lt;br /&gt;
==== Upgrading from KDE3 or from TDE 3.5.x to R14.0.x ====&lt;br /&gt;
If you are migrating from KDE3 or upgrading from TDE 3.5.x, you can reuse your own settings in TDE R14.0.x.&lt;br /&gt;
When logging into R14.0.x for the first time, TDE will automatically execute a script which will migrate as many of your KDE3/TDE3.5.x settings as possible. At the end of the process, your KDE3/TDE3.5.x profile will still exist (unchanged) and a new TDE profile will have been created inside the &amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;~/.trinity&amp;#039;&amp;#039;&amp;#039;&amp;lt;/tt&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
{{TipBox&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=Please refrain from renaming your &amp;lt;tt&amp;gt;.kde&amp;lt;/tt&amp;gt; into &amp;lt;tt&amp;gt;.trinity&amp;lt;/tt&amp;gt; before running R14.0.x. If you do so, the migration process will not take part and some applications may not run smoothly after that. See [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2356 here] for an example of problems that may arise if you rename your &amp;lt;tt&amp;gt;.kde&amp;lt;/tt&amp;gt; folder manually.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Upgrading from an old version (pre Dec/2014) ====&lt;br /&gt;
Depending on your previous version of TDE, the file /etc/trinity/tdm/tdmrc may change from a script-generated file to a config file.&lt;br /&gt;
It is advisable to accept the newer file if you are upgrading from an old version to TDE &amp;gt;= R14.0.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Configuring Trinity ==&lt;br /&gt;
Tips and tricks for custom fine-tuning and configurations.&lt;br /&gt;
&lt;br /&gt;
=== Using sudo and tdesudo ===&lt;br /&gt;
If you use sudo or a sudo-based distribution (such as Ubuntu), it is highly recommended that you install the &amp;lt;tt&amp;gt;tdesudo-trinity&amp;lt;/tt&amp;gt; package as well. This allows to run programs that require root priviledge from the TDE menu using your own password.&lt;br /&gt;
If &amp;lt;tt&amp;gt;tdesudo-trinity&amp;lt;/tt&amp;gt; is not installed, you will be asked for the root password instead.&lt;br /&gt;
More details can be found [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2563 here].&lt;br /&gt;
&lt;br /&gt;
=== Un-Bogging down an older system ===&lt;br /&gt;
Your system runs pretty well until Firefox, an office application, or some other application with high CPU usage demands too many cycles and your system then ‘freezes’ for seconds or minutes until the application gets finished.&lt;br /&gt;
&lt;br /&gt;
A simple, but somewhat tedious, solution is to add &amp;lt;code&amp;gt;nice&amp;lt;/code&amp;gt; to the launcher for each. Using LibreOffice as an example, add &amp;lt;code&amp;gt;nice -n 2&amp;lt;/code&amp;gt; before the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;TDE Menu &amp;gt;&amp;gt; Office &amp;gt;&amp;gt; LibreOffice &amp;gt;&amp;gt; {right click} &amp;gt;&amp;gt; Edit Item&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change the ‘Command’ entry from &amp;lt;code&amp;gt;libreoffice %U&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;nice -n 2 libreoffice %U&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Then find every other entry for LibreOffice (LibreOffice Base, LibreOffice Draw, LibreOffice Math, LibreOffice Impress, etc.) and do the same.&lt;br /&gt;
&lt;br /&gt;
Other ‘usual suspects’ to make nice are: browsers, BitTorrent clients, GUI Diff tools, and, occasionally, PDF viewers.&lt;br /&gt;
&lt;br /&gt;
Generally anything ‘real-time’ you should leave alone (movies, games, editors).&lt;br /&gt;
&lt;br /&gt;
These were used on a Core2 Duo (P7570 @ 2.26GHz, CPU Mark: 926):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
!Nice level&lt;br /&gt;
!Application Name&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Kmail&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|LibreOffice&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Firefox&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|qBittorrent&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Assigning a mouse click as part of a keyboard shortcut ===&lt;br /&gt;
There are multiple ways to accomplish this.  The best arguably was the first method, which has been lost to time.&lt;br /&gt;
&lt;br /&gt;
In these examples we are trying to achieve:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{Windows Key} + {left mouse click} = Minimize application under mouse cursor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change what you need to achieve what you want.&lt;br /&gt;
&lt;br /&gt;
==== Method 1: Lost ====&lt;br /&gt;
&lt;br /&gt;
As the name says it’s been lost.  What is remembered is that:&lt;br /&gt;
&lt;br /&gt;
* No additional software had to be installed&lt;br /&gt;
* The change was exceedingly minor.&lt;br /&gt;
&lt;br /&gt;
==== Method 2: &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt; + &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Buggy. This works, but the &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; command used occasionally leaves an unfinished half-keystroke hanging.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 1.&amp;#039;&amp;#039;&amp;#039; Go to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Regional &amp;amp; Accessibility &amp;gt;&amp;gt; Keyboard Shortcuts &amp;gt;&amp;gt; Shortcuts Schemes &amp;gt;&amp;gt; Global Shortcuts &amp;gt;&amp;gt; Windows&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set &amp;quot;Minimize Window&amp;quot; to “Win+Space”.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 2.&amp;#039;&amp;#039;&amp;#039; Issue these command(s) as root or using sudo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# apt-get install xbindkeys&lt;br /&gt;
# apt-get install xdotool&lt;br /&gt;
# apt-get install xbindkeys-config # optional&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 3.&amp;#039;&amp;#039;&amp;#039; Edit &amp;lt;tt&amp;gt;$HOME/.xbindkeysrc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Add the following lines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &amp;#039;shell&amp;#039; is probably the closest match(?) --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#MinimizeWindowUnderMouse&lt;br /&gt;
&amp;quot;xdotool click --clearmodifiers 1 key super+space&amp;quot;&lt;br /&gt;
   m:0x40 + c:133 + b:1 + release&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=xbindkeys does not like superfluous comments within its definitions. Leaving prior entries commented out within the config definition caused odd and inconsistent results.&lt;br /&gt;
 |icon=Messagebox_info.png&lt;br /&gt;
 |background=#E9F0FF&lt;br /&gt;
 |highlight=#93B2FF&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 4.&amp;#039;&amp;#039;&amp;#039; Issue these commands as yourself (not as root):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ killall xbindkeys&lt;br /&gt;
$ xbindkeys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 5.&amp;#039;&amp;#039;&amp;#039; To minimize any window:&lt;br /&gt;
&lt;br /&gt;
Move the cursor over a window, hold down the Windows key and click the left mouse button.&lt;br /&gt;
&lt;br /&gt;
==== Method 3: &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;dcop&amp;lt;/tt&amp;gt; and/or &amp;lt;tt&amp;gt;gdbus&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Basically the same as &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt; + &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; but replacing &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; with either a &amp;lt;tt&amp;gt;dcop&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;gdbus&amp;lt;/tt&amp;gt; command. This is probably less ‘buggy’ than &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt;, but unfortunately the writer doesn’t understand enough about either to make this work.&lt;br /&gt;
&lt;br /&gt;
=== Enabling image thumbnails in Konqueror for external devices opened via popup after plugging in ===&lt;br /&gt;
&lt;br /&gt;
When an external device (e.g. USB flash drive) is plugged in, choosing &amp;quot;Open in New Window&amp;quot; in the TDE popup window will open the device under the &amp;lt;tt&amp;gt;system:/&amp;lt;/tt&amp;gt; path prefix. Image thumbnail display is not enabled per default for this location type in Konqueror. To enable image thumbnails for &amp;lt;tt&amp;gt;system:/&amp;lt;/tt&amp;gt; paths, adhere to the following:&lt;br /&gt;
&lt;br /&gt;
# In Konqueror from the menubar select &amp;lt;code&amp;gt;Settings &amp;gt;&amp;gt; Configure Konqueror...&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Select &amp;lt;code&amp;gt;Previews &amp;amp; Metadata&amp;lt;/code&amp;gt; on the left.&lt;br /&gt;
# Under &amp;lt;code&amp;gt;Local Protocols&amp;lt;/code&amp;gt; tick the checkbox for &amp;lt;code&amp;gt;system&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Look and feel ==&lt;br /&gt;
Tips and tricks concerning the appearance of Trinity desktop and applications.&lt;br /&gt;
&lt;br /&gt;
=== Adding a separator between windows button in the title bar ===&lt;br /&gt;
Open &amp;lt;code&amp;gt;TDE Control Center &amp;gt;&amp;gt; Appearance &amp;amp; Themes &amp;gt;&amp;gt; Window Decorations&amp;lt;/code&amp;gt; and then select the &amp;lt;code&amp;gt;Buttons&amp;lt;/code&amp;gt; tab.&lt;br /&gt;
&lt;br /&gt;
In the middle of the screen there is a list of available buttons. Drag a separator (&amp;lt;code&amp;gt;--- spacer ---&amp;lt;/code&amp;gt;) on the title bar of the sample window, between the buttons where you want to space to appear.&lt;br /&gt;
&lt;br /&gt;
Check the preview in the bottom part of the window and modify again as required.&lt;br /&gt;
&lt;br /&gt;
Confirm when done.&lt;br /&gt;
&lt;br /&gt;
=== Enlarging Kicker taskbar buttons to only occupy a single row ===&lt;br /&gt;
&lt;br /&gt;
When the configured Kicker panel size surpasses a certain pixel count, the taskbar will start getting segmented into multiple rows, leading to taskbar buttons being placed in a grid.&lt;br /&gt;
To prevent this, the minimum height of taskbar buttons can be increased to enforce a single row of taskbar buttons.&lt;br /&gt;
&lt;br /&gt;
To achieve this, you have to add the following line into section &amp;lt;tt&amp;gt;[General]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/ktaskbarrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
MinimumButtonHeight=38&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Select a &amp;lt;tt&amp;gt;MinimumButtonHeight&amp;lt;/tt&amp;gt; that matches the pixel size of the Kicker panel as configured in &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels &amp;gt;&amp;gt; Arrangement&amp;lt;/code&amp;gt; (when the size is set to &amp;quot;Custom&amp;quot;).&lt;br /&gt;
Restart the Kicker panel after changing the configuration line.&lt;br /&gt;
&lt;br /&gt;
As an example, for a panel height of 38 pixels this adjustment can be done via Konsole (or another terminal emulator) in the following manner:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/ktaskbarrc --group General --key MinimumButtonHeight 38&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hint: you may also additionally set &amp;lt;code&amp;gt;MinimumButtonWidth&amp;lt;/code&amp;gt; in the same group to control how much minimum horizontal space (in pixels) a single taskbar button should occupy on its own.&lt;br /&gt;
&lt;br /&gt;
=== Removing captions from K-Menu ===&lt;br /&gt;
You have to add the following line into section &amp;lt;tt&amp;gt;[menus]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/kickerrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
ShowMenuTitles=false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You also have to restart Kicker for the change to take effect.&lt;br /&gt;
&lt;br /&gt;
The quickest way to do all of this is via Konsole (or another terminal emulator):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/kickerrc --group menus --key ShowMenuTitles false&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increasing icon size in K-Menu ===&lt;br /&gt;
You have to add the following line into section &amp;lt;tt&amp;gt;[menus]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/kickerrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
MenuEntryHeight=22&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can adjust the number to any icon size you see fit. You have to restart Kicker for the change to take effect.&lt;br /&gt;
&lt;br /&gt;
The quickest way to do all of this is via Konsole (or another terminal emulator):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/kickerrc --group menus --key MenuEntryHeight 22&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using a custom side image for classic K-Menu ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;The following only applies to the classic K-Menu enabled by setting &amp;quot;TDE menu style&amp;quot; to &amp;quot;Trinity Classic&amp;quot; in the &amp;quot;Menus&amp;quot; section of &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels&amp;lt;/code&amp;gt;.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# Create &amp;lt;code&amp;gt;$TDEHOME/share/apps/kicker/pics/&amp;lt;/code&amp;gt; if it doesn&amp;#039;t exist.&lt;br /&gt;
# Place custom &amp;lt;code&amp;gt;kside.png&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kside_tile.png&amp;lt;/code&amp;gt; files into &amp;lt;code&amp;gt;$TDEHOME/share/apps/kicker/pics/&amp;lt;/code&amp;gt;.&lt;br /&gt;
# In &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels&amp;lt;/code&amp;gt; under &amp;quot;Menus&amp;quot; enable &amp;quot;Show side image&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hint: you may find the default &amp;lt;tt&amp;gt;kside.png&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;kside_tile.png&amp;lt;/tt&amp;gt; files within &amp;lt;tt&amp;gt;$TDEDIR/share/apps/kicker/pics/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Changes to the image files will only apply when the Kicker gets restarted. To trigger this, you can use &amp;lt;code&amp;gt;dcop kicker kicker restart&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Using a custom image for the logout prompt ===&lt;br /&gt;
&lt;br /&gt;
# Create &amp;lt;code&amp;gt;$TDEHOME/share/apps/ksmserver/pics/&amp;lt;/code&amp;gt; if it doesn&amp;#039;t exist.&lt;br /&gt;
# Place a custom &amp;lt;code&amp;gt;shutdownkonq.png&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;$TDEHOME/share/apps/ksmserver/pics/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hint: you may find the default image within &amp;lt;tt&amp;gt;$TDEDIR/share/apps/ksmserver/pics/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Use another window manager with TDE ===&lt;br /&gt;
It is possible to use TDE with a different window manager than the one which comes by default. There are a lot of window managers out there, though, so TDE might not recognize their presence and thus not offer them as a choice in the Control Center. This is the case when you can use the advanced methods mentioned here to use TDE with another WM.&lt;br /&gt;
&lt;br /&gt;
[[File:TDE+E16 thumb.png|thumb|link=File:TDE+E16.png|Trinity Desktop with E16 as window manager]]&lt;br /&gt;
&lt;br /&gt;
==== Method 1: the easy way ====&lt;br /&gt;
The easy way is, of course, to go to &amp;lt;code&amp;gt;TDE Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Window decorations&amp;lt;/code&amp;gt;, switch to the Window Manager tab and then select your preferred window manager from the drop-down menu.&lt;br /&gt;
&lt;br /&gt;
==== Method 2: autostart TDE components from WM ====&lt;br /&gt;
You can autostart Trinity and the components you need if your window manager supports autostart. In this case the window manager is started first. An &amp;lt;tt&amp;gt;.xinitrc&amp;lt;/tt&amp;gt; file can also do the trick.&lt;br /&gt;
&lt;br /&gt;
Make sure your window manager executes the first command (and any of the other ones for other desktop components you might want to use). For a more-or-less complete TDE session use all of them:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Command&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;starttde&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;(required) Initializes required Trinity components.&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;kicker &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;The Kicker panel.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;kdesktop --waitforkded &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;The Desktop.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;khotkeys &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;Keyboard shortcuts handler.&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;&amp;#039;&amp;#039;(* Trinity apps would do this anyway, but it&amp;#039;s nice to have it ready for them.)&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As for starting the WM itself, you can choose to use your window manager&amp;#039;s session via your display manager.&lt;br /&gt;
&lt;br /&gt;
Note that this is not considered a full TDE session and that your mileage may vary. For a better way of handling this see Method 2 below.&lt;br /&gt;
&lt;br /&gt;
==== Method 3: using WM as part of a TDE session ====&lt;br /&gt;
You can make TDE use your window manager instead of TWin by passing an environment variable to the &amp;lt;tt&amp;gt;starttde&amp;lt;/tt&amp;gt; script. This variable is named &amp;lt;code&amp;gt;$TDEWM&amp;lt;/code&amp;gt; and accepts the executable name (or full path) of your window manager. For example, to start TDE with Fluxbox as a window manager:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ TDEWM=fluxbox startx /opt/trinity/starttde # adjust to your system&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=Due to a mistake, Trinity releases before R14.0.11 use the &amp;lt;code&amp;gt;$TWIN&amp;lt;/code&amp;gt; variable instead.&lt;br /&gt;
 |icon=Messagebox_info.png&lt;br /&gt;
 |background=#E9F0FF&lt;br /&gt;
 |highlight=#93B2FF&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To make this permanent:&lt;br /&gt;
&lt;br /&gt;
* If you use a &amp;lt;tt&amp;gt;.xinitrc&amp;lt;/tt&amp;gt; file, then the only thing to do is to put the line there.&lt;br /&gt;
* If you use a display manager, you&amp;#039;ll need to create a script and an X session file.&lt;br /&gt;
&lt;br /&gt;
Create a script like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
export TDEWM=your_window_manager # for R14.0.11 and higher&lt;br /&gt;
export TWIN=your_window_manager  # for pre-R14.0.11 TDE versions&lt;br /&gt;
exec starttde&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;your_window_manager&amp;lt;/code&amp;gt; with the correct value. Save it and make it executable.&lt;br /&gt;
&lt;br /&gt;
Then, create a .desktop file in &amp;lt;tt&amp;gt;/usr/share/xsessions&amp;lt;/tt&amp;gt;, like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Type=XSession&lt;br /&gt;
Name=(Session name)&lt;br /&gt;
Comment=(An optional session comment)&lt;br /&gt;
Exec=/path/to/the/script/you/just/saved&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Insert the values as needed. Save it and logout. From the sessions menu choose the session you just created. Login normally. TDE should start with the window manager of your choice.&lt;br /&gt;
&lt;br /&gt;
=== Changing alternating row colors ===&lt;br /&gt;
Alternating row colors in Konqueror, KMail, and probably a lot more, can be set in the Colors section of Trinity Control Center:&lt;br /&gt;
&amp;lt;code&amp;gt;TCC &amp;gt;&amp;gt; Appearance &amp;amp; Themes &amp;gt;&amp;gt; Colors &amp;gt;&amp;gt; Widget Color &amp;gt;&amp;gt; [Dropdown] Alternate Background in Lists&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Application tricks ==&lt;br /&gt;
Tips and tricks concerning Trinity applications (such as KMail, Kopete, Amarok etc.)&lt;br /&gt;
&lt;br /&gt;
=== Kmail: Sanitize and Decrypt E-Mails ===&lt;br /&gt;
[[Kmail_Sanitize_and_Decrypt_Mails|Kmail Sanitize and Decrypt Mails]] shows an example on how to create a filter in kmail that removes unwanted headers and automaticly decrypts incomming mails.&lt;br /&gt;
&lt;br /&gt;
=== Kate: Quickly apply settings to a document ===&lt;br /&gt;
You can quickly apply some special settings to an open file without leaving your keyboard, by using the built-in command line. Press F7 to open it. It will show as a single text field below the document. When you enter a command, it will automatically offer completions, so no need to worry if you are not sure about a command&amp;#039;s name (or sometimes even arguments!). Also, the prompt preserves the history of previous successful command runs, which can be navigated using Up/Down movement keys.&lt;br /&gt;
&lt;br /&gt;
You can apply one command per time, the syntax is &amp;lt;code&amp;gt;COMMAND [ARGUMENTS...]&amp;lt;/code&amp;gt;. You can set the values for all the variables that you can set through the modeline comment prefixed with &amp;quot;set-&amp;quot; (see the relevant section in the Kate documentation if unsure).&lt;br /&gt;
&lt;br /&gt;
For example, to automatically replace tabs with spaces you can enter: &amp;lt;code&amp;gt;set-replace-tabs true&amp;lt;/code&amp;gt;.&lt;br /&gt;
To set tab width to 4 spaces: &amp;lt;code&amp;gt;set-tab-width 4&amp;lt;/code&amp;gt;.&lt;br /&gt;
To change the highlighting to Python: &amp;lt;code&amp;gt;set-highlighting Python&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Of course, the built-in command line also comes with some more advanced commands, see the table below for a full list:&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible&amp;quot;&lt;br /&gt;
!Command&lt;br /&gt;
!Arguments&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|char&lt;br /&gt;
|hex, octal or base 9+1&lt;br /&gt;
|Inserts a Unicode or ASCII character based on its numeric value (e.g. 0x1234, x1234, 01231, 1234).&lt;br /&gt;
|-&lt;br /&gt;
|date&lt;br /&gt;
|[format string]&lt;br /&gt;
|Inserts current date according to the specified format string. If invalid, the default (&amp;lt;code&amp;gt;yyyy-MM-dd hh:mm:ss&amp;lt;/code&amp;gt;) is used instead.&lt;br /&gt;
|-&lt;br /&gt;
|find&lt;br /&gt;
|[:[bcerpsw]] string&lt;br /&gt;
|Finds the first occurrence of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; in the document. Modifiers can be specified after the command by appending a &amp;quot;:&amp;quot;, e.g. &amp;lt;code&amp;gt;find:se hello&amp;lt;/code&amp;gt;. The meaning of the modifiers is: &amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039; for searching backwards, &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039; for searching from the current cursor position, &amp;#039;&amp;#039;&amp;#039;e&amp;#039;&amp;#039;&amp;#039; for searching only inside the selection, &amp;#039;&amp;#039;&amp;#039;r&amp;#039;&amp;#039;&amp;#039; for evaluating &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; as a regular expression, &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039; for showing a prompt each time an occurrence of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; is about to be replaced (&amp;lt;code&amp;gt;replace&amp;lt;/code&amp;gt; command only), &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; makes search case-sensitive and &amp;#039;&amp;#039;&amp;#039;w&amp;#039;&amp;#039;&amp;#039; makes search look for whole words only, not substrings.&lt;br /&gt;
|-&lt;br /&gt;
|ifind&lt;br /&gt;
|[:[bcrs]] string&lt;br /&gt;
|Finds the first occurrence of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; interactively. It performs the search again each time a key is pressed.&lt;br /&gt;
|-&lt;br /&gt;
|replace&lt;br /&gt;
|[:[bcerpsw]] string [replacement]&lt;br /&gt;
|Replaces all occurrences of &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;replacement&amp;lt;/code&amp;gt;. If &amp;lt;code&amp;gt;replacement&amp;lt;/code&amp;gt; is omitted, it is assumed to be an empty string. For explanation of the modifiers see the description of &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|indent&lt;br /&gt;
|NONE&lt;br /&gt;
|Indent current line or selection by one tab stop&lt;br /&gt;
|-&lt;br /&gt;
|unindent&lt;br /&gt;
|NONE&lt;br /&gt;
|Unindent current line or selection by one tab stop&lt;br /&gt;
|-&lt;br /&gt;
|cleanindent&lt;br /&gt;
|NONE&lt;br /&gt;
|Reset identation of current line or selection&lt;br /&gt;
|-&lt;br /&gt;
|comment&lt;br /&gt;
|NONE&lt;br /&gt;
|Comment current line or selection&lt;br /&gt;
|-&lt;br /&gt;
|uncomment&lt;br /&gt;
|NONE&lt;br /&gt;
|Uncomment current line or selection&lt;br /&gt;
|-&lt;br /&gt;
|kill-line&lt;br /&gt;
|NONE&lt;br /&gt;
|Kills current line, regardless of selection.&lt;br /&gt;
|-&lt;br /&gt;
|set-indent-mode&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Sets the current indentation mode&lt;br /&gt;
|-&lt;br /&gt;
|set-highlight&lt;br /&gt;
|string&lt;br /&gt;
|Set highlighting mode for the current document&lt;br /&gt;
|-&lt;br /&gt;
|set-tab-width&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Set tab width to &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt; spaces.&lt;br /&gt;
|-&lt;br /&gt;
|set-indent-width&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Set indentation width to &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|set-word-wrap-column&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Set column on which word wrapping should occur.&lt;br /&gt;
|-&lt;br /&gt;
|goto&lt;br /&gt;
|number &amp;gt; 0&lt;br /&gt;
|Go to line &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|set-icon-border&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show icon border&lt;br /&gt;
|-&lt;br /&gt;
|set-folding-markers&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show folding markers&lt;br /&gt;
|-&lt;br /&gt;
|set-line-numbers&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show line numbers&lt;br /&gt;
|-&lt;br /&gt;
|set-show-indent&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show indent lines&lt;br /&gt;
|-&lt;br /&gt;
|set-replace-tabs&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to replace tabs with spaces&lt;br /&gt;
|-&lt;br /&gt;
|set-remove-trailing-space&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to automatically remove trailing whitespaces.&lt;br /&gt;
|-&lt;br /&gt;
|set-remove-trailing-space-save&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to remove trailing whitespaces on saving.&lt;br /&gt;
|-&lt;br /&gt;
|set-show-tabs&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to show tab characters. Has no effect on space characters.&lt;br /&gt;
|-&lt;br /&gt;
|set-indent-spaces&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to use spaces instead of tabs for indentation.&lt;br /&gt;
|-&lt;br /&gt;
|set-mixed-indent&lt;br /&gt;
|boolean&lt;br /&gt;
|If enabled, enables &amp;lt;code&amp;gt;space-indent&amp;lt;/code&amp;gt; and, if &amp;lt;code&amp;gt;indent-width&amp;lt;/code&amp;gt; is zero, sets it to &amp;lt;code&amp;gt;tab-width / 2&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|set-word-wrap&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether to enable word wrapping.&lt;br /&gt;
|-&lt;br /&gt;
|set-wrap-cursor&lt;br /&gt;
|boolean&lt;br /&gt;
|Whether the cursor wraps with the text or can assume arbitrary positions in the document. Lines are automatically compensated with the needed spaces.&lt;br /&gt;
|-&lt;br /&gt;
|run-myself&lt;br /&gt;
|NONE&lt;br /&gt;
|Execute the current document&amp;#039;s text in the built-in Javascript interpreter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Sed-like expressions are also accepted, e.g.:&lt;br /&gt;
&amp;lt;code&amp;gt;s/afternoon/abend/g&amp;lt;/code&amp;gt;&lt;br /&gt;
== Useful scripts ==&lt;br /&gt;
A collection of snippets and useful scripts which can help in automating some tasks in TDE.&lt;br /&gt;
&lt;br /&gt;
=== Lock session and turn off screen ===&lt;br /&gt;
This shell script locks the session and after 3 seconds turns the screen off:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
dcop kdesktop KScreensaverIface lock&lt;br /&gt;
sleep 3&lt;br /&gt;
xset dpms force standby&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a ‘GUI’ you can add an Applet to your Panel that calls the shell script.&lt;br /&gt;
&lt;br /&gt;
=== Log out of current TDE session ===&lt;br /&gt;
&lt;br /&gt;
You can log out of the current TDE session and possibly shut down the system automatically (depending on your TDE configuration) using this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ dcop kdesktop default logout &amp;lt;confirm&amp;gt; &amp;lt;type&amp;gt; &amp;lt;mode&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can append three parameters (&amp;quot;confirm&amp;quot;, &amp;quot;type&amp;quot;, &amp;quot;mode&amp;quot;) to determine the&lt;br /&gt;
logout behaviour according to the following values:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;First parameter: &amp;quot;confirm&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| &amp;#039;&amp;#039;Obey the user&amp;#039;s confirmation setting&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &amp;#039;&amp;#039;Don&amp;#039;t confirm, shutdown without asking&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;Always confirm, ask even if the user turned it off&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Second parameter: &amp;quot;type&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Select previous action or the default if it&amp;#039;s the first time&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Only log out&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Log out and reboot the machine&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Log out and halt the machine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Third parameter: &amp;quot;mode&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Select previous mode (or the default one, if it&amp;#039;s the first time)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Schedule a shutdown (halt or reboot) for the time all active sessions have exited&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Shut down, if no sessions are active. Otherwise do nothing&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Force shutdown. Kill any possibly active sessions&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Pop up a dialog asking the user what to do if sessions are still active&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Full stop example&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This command will log out and halt the machine, killing any sessions and will never prompt the user:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ dcop ksmserver default logout 0 2 2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hide suspension related buttons from the shutdown dialog ===&lt;br /&gt;
There is currently no GUI option for this, but it can be achieved by a simple configuration script.&amp;lt;br/&amp;gt;&lt;br /&gt;
Create the file &amp;#039;~/.trinity/share/config/power-managerrc&amp;#039; and put the&lt;br /&gt;
following two lines inside:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
disableSuspend=true&lt;br /&gt;
disableHibernate=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next time the shutdown dialog is displayed, only the Logout, Shutdown and Restart buttons will be shown.&amp;lt;br/&amp;gt;&lt;br /&gt;
Freeze, Suspend, Hybrid suspend, Hibernate buttons will not be displayed.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Error: TDE mediamanager is not running ===&lt;br /&gt;
You might encounter this error if you try to run KDesktop, Konqueror or any other TDE application that tries to access storage media outside of a standard TDE session (e.g. from a window manager session).&lt;br /&gt;
&lt;br /&gt;
To solve this, add the following lines to your window manager&amp;#039;s autostart script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
tdeinit&lt;br /&gt;
dcop kded kded loadModule mediamanager&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unable to change display brightness with NVidia cards ===&lt;br /&gt;
If you are unable to change the display brightness, the problem could be the nvidia driver in use.&lt;br /&gt;
The following tip works for some users and it is worth a try.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;/etc/default/grub&amp;lt;/tt&amp;gt; add &amp;lt;code&amp;gt;acpi_backlight=vendor&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;nvidia.NVreg_EnableBacklightHandler=1&amp;lt;/code&amp;gt; to &lt;br /&gt;
the variable &amp;lt;tt&amp;gt;GRUB_CMDLINE_LINUX_DEFAULT&amp;lt;/tt&amp;gt; and reboot. Then controlling the display brightness using TDE&lt;br /&gt;
and multimedia (or Fn combination) keys should/may work.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;quiet nvidia.NVreg_EnableBacklightHandler=1 acpi_backlight=vendor&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unable to find mime type application/octet-stream ===&lt;br /&gt;
This error can occur due to a known bug with the TDE MIME system.&lt;br /&gt;
&lt;br /&gt;
There are two known methods to fix this:&lt;br /&gt;
&lt;br /&gt;
==== Method 1: Graphical ====&lt;br /&gt;
# Go to &amp;lt;code&amp;gt;TDE Control Centre &amp;gt; TDE Components &amp;gt; File Associations&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click on the &amp;lt;code&amp;gt;Add...&amp;lt;/code&amp;gt; button at the bottom&lt;br /&gt;
# Select the &amp;lt;code&amp;gt;application&amp;lt;/code&amp;gt; group from the drop-down menu&lt;br /&gt;
# In the name field type: &amp;lt;tt&amp;gt;octet-stream&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Click OK to close the dialog&lt;br /&gt;
# Apply the settings&lt;br /&gt;
&lt;br /&gt;
==== Method 2: Via CLI ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ cat &amp;gt; ~/.trinity/share/mimelnk/application/octet-stream.desktop &amp;lt;&amp;lt; EOF&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Comment=octet-stream&lt;br /&gt;
Hidden=false&lt;br /&gt;
Icon=&lt;br /&gt;
MimeType=application/octet-stream&lt;br /&gt;
Patterns=&lt;br /&gt;
Type=MimeType&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
* [http://web.archive.org/web/20060924164505/http://wiki.kde.org/tiki-index.php?page=Tips+and+Tricks Tips and Tricks on the old KDE TikiWiki]&lt;br /&gt;
* [http://web.archive.org/web/20060924165408/http://wiki.kde.org/tiki-index.php?page=Performance+Tips KDE3 Performance Tips on the old KDE TikiWiki]&lt;br /&gt;
* [http://web.archive.org/web/20060924164932/http://wiki.kde.org/tiki-index.php?page=Secret+Config+Settings Secret config settings on the old KDE TikiWiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:TipsAndTricks]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Tips_And_Tricks&amp;diff=3358</id>
		<title>Tips And Tricks</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Tips_And_Tricks&amp;diff=3358"/>
		<updated>2024-06-09T16:08:38Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Add tip for overcoming the application/octet-stream error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant as a container of tips and tricks collected over time, addressing topics and issues brought up by TDE users.&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also see the users&amp;#039; [[User FAQ | Frequently Asked Questions]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Installing Trinity ==&lt;br /&gt;
Tips and tricks relevant to obtaining a well-functioning Trinity installation.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading from older versions or KDE3 ===&lt;br /&gt;
&lt;br /&gt;
==== Upgrading from KDE3 or from TDE 3.5.x to R14.0.x ====&lt;br /&gt;
If you are migrating from KDE3 or upgrading from TDE 3.5.x, you can reuse your own settings in TDE R14.0.x.&lt;br /&gt;
When logging into R14.0.x for the first time, TDE will automatically execute a script which will migrate as many of your KDE3/TDE3.5.x settings as possible. At the end of the process, your KDE3/TDE3.5.x profile will still exist (unchanged) and a new TDE profile will have been created inside the &amp;lt;tt&amp;gt;&amp;#039;&amp;#039;&amp;#039;~/.trinity&amp;#039;&amp;#039;&amp;#039;&amp;lt;/tt&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
{{TipBox&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=Please refrain from renaming your &amp;lt;tt&amp;gt;.kde&amp;lt;/tt&amp;gt; into &amp;lt;tt&amp;gt;.trinity&amp;lt;/tt&amp;gt; before running R14.0.x. If you do so, the migration process will not take part and some applications may not run smoothly after that. See [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2356 here] for an example of problems that may arise if you rename your &amp;lt;tt&amp;gt;.kde&amp;lt;/tt&amp;gt; folder manually.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Upgrading from an old version (pre Dec/2014) ====&lt;br /&gt;
Depending on your previous version of TDE, the file /etc/trinity/tdm/tdmrc may change from a script-generated file to a config file.&lt;br /&gt;
It is advisable to accept the newer file if you are upgrading from an old version to TDE &amp;gt;= R14.0.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Configuring Trinity ==&lt;br /&gt;
Tips and tricks for custom fine-tuning and configurations.&lt;br /&gt;
&lt;br /&gt;
=== Using sudo and tdesudo ===&lt;br /&gt;
If you use sudo or a sudo-based distribution (such as Ubuntu), it is highly recommended that you install the &amp;lt;tt&amp;gt;tdesudo-trinity&amp;lt;/tt&amp;gt; package as well. This allows to run programs that require root priviledge from the TDE menu using your own password.&lt;br /&gt;
If &amp;lt;tt&amp;gt;tdesudo-trinity&amp;lt;/tt&amp;gt; is not installed, you will be asked for the root password instead.&lt;br /&gt;
More details can be found [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2563 here].&lt;br /&gt;
&lt;br /&gt;
=== Un-Bogging down an older system ===&lt;br /&gt;
Your system runs pretty well until Firefox, an office application, or some other application with high CPU usage demands too many cycles and your system then ‘freezes’ for seconds or minutes until the application gets finished.&lt;br /&gt;
&lt;br /&gt;
A simple, but somewhat tedious, solution is to add &amp;lt;code&amp;gt;nice&amp;lt;/code&amp;gt; to the launcher for each. Using LibreOffice as an example, add &amp;lt;code&amp;gt;nice -n 2&amp;lt;/code&amp;gt; before the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;TDE Menu &amp;gt;&amp;gt; Office &amp;gt;&amp;gt; LibreOffice &amp;gt;&amp;gt; {right click} &amp;gt;&amp;gt; Edit Item&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change the ‘Command’ entry from &amp;lt;code&amp;gt;libreoffice %U&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;nice -n 2 libreoffice %U&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Then find every other entry for LibreOffice (LibreOffice Base, LibreOffice Draw, LibreOffice Math, LibreOffice Impress, etc.) and do the same.&lt;br /&gt;
&lt;br /&gt;
Other ‘usual suspects’ to make nice are: browsers, BitTorrent clients, GUI Diff tools, and, occasionally, PDF viewers.&lt;br /&gt;
&lt;br /&gt;
Generally anything ‘real-time’ you should leave alone (movies, games, editors).&lt;br /&gt;
&lt;br /&gt;
These were used on a Core2 Duo (P7570 @ 2.26GHz, CPU Mark: 926):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
!Nice level&lt;br /&gt;
!Application Name&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Kmail&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|LibreOffice&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Firefox&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|qBittorrent&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Assigning a mouse click as part of a keyboard shortcut ===&lt;br /&gt;
There are multiple ways to accomplish this.  The best arguably was the first method, which has been lost to time.&lt;br /&gt;
&lt;br /&gt;
In these examples we are trying to achieve:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{Windows Key} + {left mouse click} = Minimize application under mouse cursor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change what you need to achieve what you want.&lt;br /&gt;
&lt;br /&gt;
==== Method 1: Lost ====&lt;br /&gt;
&lt;br /&gt;
As the name says it’s been lost.  What is remembered is that:&lt;br /&gt;
&lt;br /&gt;
* No additional software had to be installed&lt;br /&gt;
* The change was exceedingly minor.&lt;br /&gt;
&lt;br /&gt;
==== Method 2: &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt; + &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Buggy. This works, but the &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; command used occasionally leaves an unfinished half-keystroke hanging.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 1.&amp;#039;&amp;#039;&amp;#039; Go to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Regional &amp;amp; Accessibility &amp;gt;&amp;gt; Keyboard Shortcuts &amp;gt;&amp;gt; Shortcuts Schemes &amp;gt;&amp;gt; Global Shortcuts &amp;gt;&amp;gt; Windows&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set &amp;quot;Minimize Window&amp;quot; to “Win+Space”.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 2.&amp;#039;&amp;#039;&amp;#039; Issue these command(s) as root or using sudo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# apt-get install xbindkeys&lt;br /&gt;
# apt-get install xdotool&lt;br /&gt;
# apt-get install xbindkeys-config # optional&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 3.&amp;#039;&amp;#039;&amp;#039; Edit &amp;lt;tt&amp;gt;$HOME/.xbindkeysrc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Add the following lines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &amp;#039;shell&amp;#039; is probably the closest match(?) --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#MinimizeWindowUnderMouse&lt;br /&gt;
&amp;quot;xdotool click --clearmodifiers 1 key super+space&amp;quot;&lt;br /&gt;
   m:0x40 + c:133 + b:1 + release&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=xbindkeys does not like superfluous comments within its definitions. Leaving prior entries commented out within the config definition caused odd and inconsistent results.&lt;br /&gt;
 |icon=Messagebox_info.png&lt;br /&gt;
 |background=#E9F0FF&lt;br /&gt;
 |highlight=#93B2FF&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 4.&amp;#039;&amp;#039;&amp;#039; Issue these commands as yourself (not as root):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ killall xbindkeys&lt;br /&gt;
$ xbindkeys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Step 5.&amp;#039;&amp;#039;&amp;#039; To minimize any window:&lt;br /&gt;
&lt;br /&gt;
Move the cursor over a window, hold down the Windows key and click the left mouse button.&lt;br /&gt;
&lt;br /&gt;
==== Method 3: &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;dcop&amp;lt;/tt&amp;gt; and/or &amp;lt;tt&amp;gt;gdbus&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Basically the same as &amp;lt;tt&amp;gt;xbindkeys&amp;lt;/tt&amp;gt; + &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; but replacing &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt; with either a &amp;lt;tt&amp;gt;dcop&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;gdbus&amp;lt;/tt&amp;gt; command. This is probably less ‘buggy’ than &amp;lt;tt&amp;gt;xdotool&amp;lt;/tt&amp;gt;, but unfortunately the writer doesn’t understand enough about either to make this work.&lt;br /&gt;
&lt;br /&gt;
=== Enabling image thumbnails in Konqueror for external devices opened via popup after plugging in ===&lt;br /&gt;
&lt;br /&gt;
When an external device (e.g. USB flash drive) is plugged in, choosing &amp;quot;Open in New Window&amp;quot; in the TDE popup window will open the device under the &amp;lt;tt&amp;gt;system:/&amp;lt;/tt&amp;gt; path prefix. Image thumbnail display is not enabled per default for this location type in Konqueror. To enable image thumbnails for &amp;lt;tt&amp;gt;system:/&amp;lt;/tt&amp;gt; paths, adhere to the following:&lt;br /&gt;
&lt;br /&gt;
# In Konqueror from the menubar select &amp;lt;code&amp;gt;Settings &amp;gt;&amp;gt; Configure Konqueror...&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Select &amp;lt;code&amp;gt;Previews &amp;amp; Metadata&amp;lt;/code&amp;gt; on the left.&lt;br /&gt;
# Under &amp;lt;code&amp;gt;Local Protocols&amp;lt;/code&amp;gt; tick the checkbox for &amp;lt;code&amp;gt;system&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;code&amp;gt;Apply&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Look and feel ==&lt;br /&gt;
Tips and tricks concerning the appearance of Trinity desktop and applications.&lt;br /&gt;
&lt;br /&gt;
=== Adding a separator between windows button in the title bar ===&lt;br /&gt;
Open &amp;lt;code&amp;gt;TDE Control Center &amp;gt;&amp;gt; Appearance &amp;amp; Themes &amp;gt;&amp;gt; Window Decorations&amp;lt;/code&amp;gt; and then select the &amp;lt;code&amp;gt;Buttons&amp;lt;/code&amp;gt; tab.&lt;br /&gt;
&lt;br /&gt;
In the middle of the screen there is a list of available buttons. Drag a separator (&amp;lt;code&amp;gt;--- spacer ---&amp;lt;/code&amp;gt;) on the title bar of the sample window, between the buttons where you want to space to appear.&lt;br /&gt;
&lt;br /&gt;
Check the preview in the bottom part of the window and modify again as required.&lt;br /&gt;
&lt;br /&gt;
Confirm when done.&lt;br /&gt;
&lt;br /&gt;
=== Enlarging Kicker taskbar buttons to only occupy a single row ===&lt;br /&gt;
&lt;br /&gt;
When the configured Kicker panel size surpasses a certain pixel count, the taskbar will start getting segmented into multiple rows, leading to taskbar buttons being placed in a grid.&lt;br /&gt;
To prevent this, the minimum height of taskbar buttons can be increased to enforce a single row of taskbar buttons.&lt;br /&gt;
&lt;br /&gt;
To achieve this, you have to add the following line into section &amp;lt;tt&amp;gt;[General]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/ktaskbarrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
MinimumButtonHeight=38&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Select a &amp;lt;tt&amp;gt;MinimumButtonHeight&amp;lt;/tt&amp;gt; that matches the pixel size of the Kicker panel as configured in &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels &amp;gt;&amp;gt; Arrangement&amp;lt;/code&amp;gt; (when the size is set to &amp;quot;Custom&amp;quot;).&lt;br /&gt;
Restart the Kicker panel after changing the configuration line.&lt;br /&gt;
&lt;br /&gt;
As an example, for a panel height of 38 pixels this adjustment can be done via Konsole (or another terminal emulator) in the following manner:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/ktaskbarrc --group General --key MinimumButtonHeight 38&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hint: you may also additionally set &amp;lt;code&amp;gt;MinimumButtonWidth&amp;lt;/code&amp;gt; in the same group to control how much minimum horizontal space (in pixels) a single taskbar button should occupy on its own.&lt;br /&gt;
&lt;br /&gt;
=== Removing captions from K-Menu ===&lt;br /&gt;
You have to add the following line into section &amp;lt;tt&amp;gt;[menus]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/kickerrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
ShowMenuTitles=false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You also have to restart Kicker for the change to take effect.&lt;br /&gt;
&lt;br /&gt;
The quickest way to do all of this is via Konsole (or another terminal emulator):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/kickerrc --group menus --key ShowMenuTitles false&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increasing icon size in K-Menu ===&lt;br /&gt;
You have to add the following line into section &amp;lt;tt&amp;gt;[menus]&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;$TDEHOME/share/config/kickerrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
MenuEntryHeight=22&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can adjust the number to any icon size you see fit. You have to restart Kicker for the change to take effect.&lt;br /&gt;
&lt;br /&gt;
The quickest way to do all of this is via Konsole (or another terminal emulator):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ kwriteconfig --file $TDEHOME/share/config/kickerrc --group menus --key MenuEntryHeight 22&lt;br /&gt;
$ dcop kicker kicker restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using a custom side image for classic K-Menu ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;The following only applies to the classic K-Menu enabled by setting &amp;quot;TDE menu style&amp;quot; to &amp;quot;Trinity Classic&amp;quot; in the &amp;quot;Menus&amp;quot; section of &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels&amp;lt;/code&amp;gt;.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# Create &amp;lt;code&amp;gt;$TDEHOME/share/apps/kicker/pics/&amp;lt;/code&amp;gt; if it doesn&amp;#039;t exist.&lt;br /&gt;
# Place custom &amp;lt;code&amp;gt;kside.png&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kside_tile.png&amp;lt;/code&amp;gt; files into &amp;lt;code&amp;gt;$TDEHOME/share/apps/kicker/pics/&amp;lt;/code&amp;gt;.&lt;br /&gt;
# In &amp;lt;code&amp;gt;Trinity Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Panels&amp;lt;/code&amp;gt; under &amp;quot;Menus&amp;quot; enable &amp;quot;Show side image&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hint: you may find the default &amp;lt;tt&amp;gt;kside.png&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;kside_tile.png&amp;lt;/tt&amp;gt; files within &amp;lt;tt&amp;gt;$TDEDIR/share/apps/kicker/pics/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Changes to the image files will only apply when the Kicker gets restarted. To trigger this, you can use &amp;lt;code&amp;gt;dcop kicker kicker restart&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Using a custom image for the logout prompt ===&lt;br /&gt;
&lt;br /&gt;
# Create &amp;lt;code&amp;gt;$TDEHOME/share/apps/ksmserver/pics/&amp;lt;/code&amp;gt; if it doesn&amp;#039;t exist.&lt;br /&gt;
# Place a custom &amp;lt;code&amp;gt;shutdownkonq.png&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;$TDEHOME/share/apps/ksmserver/pics/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Hint: you may find the default image within &amp;lt;tt&amp;gt;$TDEDIR/share/apps/ksmserver/pics/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Use another window manager with TDE ===&lt;br /&gt;
It is possible to use TDE with a different window manager than the one which comes by default. There are a lot of window managers out there, though, so TDE might not recognize their presence and thus not offer them as a choice in the Control Center. This is the case when you can use the advanced methods mentioned here to use TDE with another WM.&lt;br /&gt;
&lt;br /&gt;
[[File:TDE+E16 thumb.png|thumb|link=File:TDE+E16.png|Trinity Desktop with E16 as window manager]]&lt;br /&gt;
&lt;br /&gt;
==== Method 1: the easy way ====&lt;br /&gt;
The easy way is, of course, to go to &amp;lt;code&amp;gt;TDE Control Center &amp;gt;&amp;gt; Desktop &amp;gt;&amp;gt; Window decorations&amp;lt;/code&amp;gt;, switch to the Window Manager tab and then select your preferred window manager from the drop-down menu.&lt;br /&gt;
&lt;br /&gt;
==== Method 2: autostart TDE components from WM ====&lt;br /&gt;
You can autostart Trinity and the components you need if your window manager supports autostart. In this case the window manager is started first. An &amp;lt;tt&amp;gt;.xinitrc&amp;lt;/tt&amp;gt; file can also do the trick.&lt;br /&gt;
&lt;br /&gt;
Make sure your window manager executes the first command (and any of the other ones for other desktop components you might want to use). For a more-or-less complete TDE session use all of them:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Command&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;starttde&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;(required) Initializes required Trinity components.&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;kicker &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;The Kicker panel.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;kdesktop --waitforkded &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;The Desktop.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;khotkeys &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;#039;&amp;#039;Keyboard shortcuts handler.&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;&amp;#039;&amp;#039;(* Trinity apps would do this anyway, but it&amp;#039;s nice to have it ready for them.)&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As for starting the WM itself, you can choose to use your window manager&amp;#039;s session via your display manager.&lt;br /&gt;
&lt;br /&gt;
Note that this is not considered a full TDE session and that your mileage may vary. For a better way of handling this see Method 2 below.&lt;br /&gt;
&lt;br /&gt;
==== Method 3: using WM as part of a TDE session ====&lt;br /&gt;
You can make TDE use your window manager instead of TWin by passing an environment variable to the &amp;lt;tt&amp;gt;starttde&amp;lt;/tt&amp;gt; script. This variable is named &amp;lt;code&amp;gt;$TDEWM&amp;lt;/code&amp;gt; and accepts the executable name (or full path) of your window manager. For example, to start TDE with Fluxbox as a window manager:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ TDEWM=fluxbox startx /opt/trinity/starttde # adjust to your system&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box&lt;br /&gt;
 |caption=Note&lt;br /&gt;
 |text=Due to a mistake, Trinity releases before R14.0.11 use the &amp;lt;code&amp;gt;$TWIN&amp;lt;/code&amp;gt; variable instead.&lt;br /&gt;
 |icon=Messagebox_info.png&lt;br /&gt;
 |background=#E9F0FF&lt;br /&gt;
 |highlight=#93B2FF&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To make this permanent:&lt;br /&gt;
&lt;br /&gt;
* If you use a &amp;lt;tt&amp;gt;.xinitrc&amp;lt;/tt&amp;gt; file, then the only thing to do is to put the line there.&lt;br /&gt;
* If you use a display manager, you&amp;#039;ll need to create a script and an X session file.&lt;br /&gt;
&lt;br /&gt;
Create a script like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
export TDEWM=your_window_manager # for R14.0.11 and higher&lt;br /&gt;
export TWIN=your_window_manager  # for pre-R14.0.11 TDE versions&lt;br /&gt;
exec starttde&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;your_window_manager&amp;lt;/code&amp;gt; with the correct value. Save it and make it executable.&lt;br /&gt;
&lt;br /&gt;
Then, create a .desktop file in &amp;lt;tt&amp;gt;/usr/share/xsessions&amp;lt;/tt&amp;gt;, like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Type=XSession&lt;br /&gt;
Name=(Session name)&lt;br /&gt;
Comment=(An optional session comment)&lt;br /&gt;
Exec=/path/to/the/script/you/just/saved&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Insert the values as needed. Save it and logout. From the sessions menu choose the session you just created. Login normally. TDE should start with the window manager of your choice.&lt;br /&gt;
&lt;br /&gt;
=== Changing alternating row colors ===&lt;br /&gt;
Alternating row colors in Konqueror, KMail, and probably a lot more, can be set in the Colors section of Trinity Control Center:&lt;br /&gt;
&amp;lt;code&amp;gt;TCC &amp;gt;&amp;gt; Appearance &amp;amp; Themes &amp;gt;&amp;gt; Colors &amp;gt;&amp;gt; Widget Color &amp;gt;&amp;gt; [Dropdown] Alternate Background in Lists&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------------------- --&amp;gt;&lt;br /&gt;
== Application tricks ==&lt;br /&gt;
Tips and tricks concerning Trinity applications (such as KMail, Kopete, Amarok etc.)&lt;br /&gt;
&lt;br /&gt;
=== Kmail: Sanitize and Decrypt E-Mails ===&lt;br /&gt;
[[Kmail_Sanitize_and_Decrypt_Mails|Kmail Sanitize and Decrypt Mails]] shows an example on how to create a filter in kmail that removes unwanted headers and automaticly decrypts incomming mails.&lt;br /&gt;
&lt;br /&gt;
== Useful scripts ==&lt;br /&gt;
A collection of snippets and useful scripts which can help in automating some tasks in TDE.&lt;br /&gt;
&lt;br /&gt;
=== Lock session and turn off screen ===&lt;br /&gt;
This shell script locks the session and after 3 seconds turns the screen off:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
dcop kdesktop KScreensaverIface lock&lt;br /&gt;
sleep 3&lt;br /&gt;
xset dpms force standby&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a ‘GUI’ you can add an Applet to your Panel that calls the shell script.&lt;br /&gt;
&lt;br /&gt;
=== Log out of current TDE session ===&lt;br /&gt;
&lt;br /&gt;
You can log out of the current TDE session and possibly shut down the system automatically (depending on your TDE configuration) using this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ dcop kdesktop default logout &amp;lt;confirm&amp;gt; &amp;lt;type&amp;gt; &amp;lt;mode&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can append three parameters (&amp;quot;confirm&amp;quot;, &amp;quot;type&amp;quot;, &amp;quot;mode&amp;quot;) to determine the&lt;br /&gt;
logout behaviour according to the following values:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;First parameter: &amp;quot;confirm&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| &amp;#039;&amp;#039;Obey the user&amp;#039;s confirmation setting&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &amp;#039;&amp;#039;Don&amp;#039;t confirm, shutdown without asking&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;#039;&amp;#039;Always confirm, ask even if the user turned it off&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Second parameter: &amp;quot;type&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Select previous action or the default if it&amp;#039;s the first time&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Only log out&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Log out and reboot the machine&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Log out and halt the machine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Third parameter: &amp;quot;mode&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;600px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| -1&lt;br /&gt;
| Select previous mode (or the default one, if it&amp;#039;s the first time)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Schedule a shutdown (halt or reboot) for the time all active sessions have exited&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Shut down, if no sessions are active. Otherwise do nothing&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Force shutdown. Kill any possibly active sessions&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Pop up a dialog asking the user what to do if sessions are still active&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Full stop example&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
This command will log out and halt the machine, killing any sessions and will never prompt the user:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ dcop ksmserver default logout 0 2 2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hide suspension related buttons from the shutdown dialog ===&lt;br /&gt;
There is currently no GUI option for this, but it can be achieved by a simple configuration script.&amp;lt;br/&amp;gt;&lt;br /&gt;
Create the file &amp;#039;~/.trinity/share/config/power-managerrc&amp;#039; and put the&lt;br /&gt;
following two lines inside:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
disableSuspend=true&lt;br /&gt;
disableHibernate=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next time the shutdown dialog is displayed, only the Logout, Shutdown and Restart buttons will be shown.&amp;lt;br/&amp;gt;&lt;br /&gt;
Freeze, Suspend, Hybrid suspend, Hibernate buttons will not be displayed.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Error: TDE mediamanager is not running ===&lt;br /&gt;
You might encounter this error if you try to run KDesktop, Konqueror or any other TDE application that tries to access storage media outside of a standard TDE session (e.g. from a window manager session).&lt;br /&gt;
&lt;br /&gt;
To solve this, add the following lines to your window manager&amp;#039;s autostart script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
tdeinit&lt;br /&gt;
dcop kded kded loadModule mediamanager&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unable to change display brightness with NVidia cards ===&lt;br /&gt;
If you are unable to change the display brightness, the problem could be the nvidia driver in use.&lt;br /&gt;
The following tip works for some users and it is worth a try.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;/etc/default/grub&amp;lt;/tt&amp;gt; add &amp;lt;code&amp;gt;acpi_backlight=vendor&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;nvidia.NVreg_EnableBacklightHandler=1&amp;lt;/code&amp;gt; to &lt;br /&gt;
the variable &amp;lt;tt&amp;gt;GRUB_CMDLINE_LINUX_DEFAULT&amp;lt;/tt&amp;gt; and reboot. Then controlling the display brightness using TDE&lt;br /&gt;
and multimedia (or Fn combination) keys should/may work.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;quiet nvidia.NVreg_EnableBacklightHandler=1 acpi_backlight=vendor&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unable to find mime type application/octet-stream ===&lt;br /&gt;
This error can occur due to a known bug with the TDE MIME system.&lt;br /&gt;
&lt;br /&gt;
There are two known methods to fix this:&lt;br /&gt;
&lt;br /&gt;
==== Method 1: Graphical ====&lt;br /&gt;
# Go to &amp;lt;code&amp;gt;TDE Control Centre &amp;gt; TDE Components &amp;gt; File Associations&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click on the &amp;lt;code&amp;gt;Add...&amp;lt;/code&amp;gt; button at the bottom&lt;br /&gt;
# Select the &amp;lt;code&amp;gt;application&amp;lt;/code&amp;gt; group from the drop-down menu&lt;br /&gt;
# In the name field type: &amp;lt;tt&amp;gt;octet-stream&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Click OK to close the dialog&lt;br /&gt;
# Apply the settings&lt;br /&gt;
&lt;br /&gt;
==== Method 2: Via CLI ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ cat &amp;gt; ~/.trinity/share/mimelnk/application/octet-stream.desktop &amp;lt;&amp;lt; EOF&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Comment=octet-stream&lt;br /&gt;
Hidden=false&lt;br /&gt;
Icon=&lt;br /&gt;
MimeType=application/octet-stream&lt;br /&gt;
Patterns=&lt;br /&gt;
Type=MimeType&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
* [http://web.archive.org/web/20060924164505/http://wiki.kde.org/tiki-index.php?page=Tips+and+Tricks Tips and Tricks on the old KDE TikiWiki]&lt;br /&gt;
* [http://web.archive.org/web/20060924165408/http://wiki.kde.org/tiki-index.php?page=Performance+Tips KDE3 Performance Tips on the old KDE TikiWiki]&lt;br /&gt;
* [http://web.archive.org/web/20060924164932/http://wiki.kde.org/tiki-index.php?page=Secret+Config+Settings Secret config settings on the old KDE TikiWiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:TipsAndTricks]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Category:Developers&amp;diff=3357</id>
		<title>Category:Developers</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Category:Developers&amp;diff=3357"/>
		<updated>2024-06-09T16:02:11Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Fix noinclude to also cover the two last books&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This category contains development-related and API documentation for the Trinity Desktop Environment.&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==New to Trinity development?==&lt;br /&gt;
&lt;br /&gt;
Take a look at the following pages:&lt;br /&gt;
&lt;br /&gt;
* [http://trinitydesktop.org/helpwanted.php Getting Involved with Trinity Development]&lt;br /&gt;
* [[TDE Gitea Workspace]]&lt;br /&gt;
* [[TDE Weblate Translation Workspace]]&lt;br /&gt;
* [[Project GIT Information]]&lt;br /&gt;
* [[Project RoadMap]]&lt;br /&gt;
* [[DevelopmentSpecifications]]&lt;br /&gt;
* [https://www.trinitydesktop.org/apidocs.php TQt/TDE API documentation]&lt;br /&gt;
* [[Porting to TDE|Porting KDE3/Qt3 apps to Trinity]]&lt;br /&gt;
&lt;br /&gt;
==Building and Distributing Trinity==&lt;br /&gt;
* [[Nightly Builds|Installing Nightly Builds]]&lt;br /&gt;
* [[How to Build TDE Core Modules]]&lt;br /&gt;
* [[How to Build Extra Applications]]&lt;br /&gt;
&lt;br /&gt;
See also pages in [[:Category:Packagers]].&lt;br /&gt;
&lt;br /&gt;
==Tutorials and Documentation==&lt;br /&gt;
&lt;br /&gt;
===Qt3 and TQt===&lt;br /&gt;
* [[Understanding the TQT Interface]]&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/qt3 TQt API Documentation]&lt;br /&gt;
&lt;br /&gt;
===Trinity===&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/trinity/tdelibs/ TDELibs API Documentation]&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/trinity/tdebase/ TDEBase API Documentation]&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/trinity/tdepim/ TDEPIM API Documentation]&lt;br /&gt;
* [[DCOP]], the IPC system used by TDE applications.&lt;br /&gt;
* [[TDEParts]], a mechanism for reusing and embedding elaborate widgets into applications (e.g. Konqueror)&lt;br /&gt;
* [[TDEIO]], an abstraction that provides network transparency between local and remote filesystems.&lt;br /&gt;
* [[TDEConfig XT Tutorial]]&lt;br /&gt;
* [[TDEConfig Module HOWTO]]&lt;br /&gt;
* [[Debugging TDE applications]]&lt;br /&gt;
* [[Sample Applications]]&lt;br /&gt;
&lt;br /&gt;
===KDE3===&lt;br /&gt;
Information in this section should be used with care, as it was not written for the current version of Trinity.  However, much of it still applies.  If you know of any other interesting KDE3 documentation or tutorials, please add them to this section.&lt;br /&gt;
&lt;br /&gt;
* [http://api.kde.org/3.5-api/kdelibs-apidocs/index.html KDE 3.5 API Reference]&lt;br /&gt;
: The original API reference, at kde.org&lt;br /&gt;
* [[KDE3 Architecture]]&lt;br /&gt;
: The architecture pages detail how everything was originally supposed to fit together.  Ported from the KDE wiki.&lt;br /&gt;
* [[KDE3 Tutorials]]&lt;br /&gt;
: On everything from using kdevelop to writing dcop-aware applications to creating window themes. Ported from the KDE wiki.&lt;br /&gt;
* [[KDE3 Filesystem Hierarchy]]&lt;br /&gt;
: Ported from the KDE wiki and verified against a working KDE3 instance.&lt;br /&gt;
* [http://www.kde.org/info/requirements/3.5.php KDE3 Compilation Requirements]&lt;br /&gt;
: Mandatory and optional packages for building KDE3, most of which are still used by Trinity.&lt;br /&gt;
&lt;br /&gt;
===Books===&lt;br /&gt;
====C++ GUI Programming with Qt 3====&lt;br /&gt;
Blanchette, Jasmin &amp;amp; Summerfield, Mark. (2015). [https://www.researchgate.net/publication/245591968_C_GUI_Programming_with_Qt_3 C++ GUI Programming with Qt 3]. (ISBN 0-13-124072-2)&lt;br /&gt;
&lt;br /&gt;
Things to note:&lt;br /&gt;
* Names changed from &amp;quot;Qt...&amp;quot; to &amp;quot;TQt...&amp;quot;&lt;br /&gt;
* compiling by hand needs something like &amp;lt;code&amp;gt;g++ a.cpp $(pkgconf tqt --cflags --libs) -lstdc++&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;qmake -project ...&amp;lt;/code&amp;gt; will not include the TDE folders, so you&amp;#039;ll have to add them manually to the *.pro file&lt;br /&gt;
* When in doubt check against the [http://trinitydesktop.org/docs/qt3/ TQt API documentation]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;by [https://mail.trinitydesktop.org/mailman3/hyperkitty/list/users@trinitydesktop.org/thread/AY7MVBPGHOJJUHJEV4NSLSLXG7QKQOEF/ Dr. Nikolaus Klepp]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====GUI Programming with Python: QT Edition====&lt;br /&gt;
Boudewijn Rempt - Copyright © 2001 by Commandprompt, Inc  &lt;br /&gt;
&lt;br /&gt;
The main topic of this book is [http://nclairon.free.fr/documentation/pyqt/book1.htm application development using PyQt.]&lt;br /&gt;
&lt;br /&gt;
==== KDE 2.0 Development ====&lt;br /&gt;
David Sweet, et al. (2002). [http://andamooka.org/~dsweet/kde2dev.pdf KDE 2.0 Development].&lt;br /&gt;
&lt;br /&gt;
Covers, among other things, KDE 2.0 widgets, Qt API, actions, icons, custom widget painting, internationalization, network transparency, KParts, DCOP, aRts/MCOP, ImageIO, OpenGL and Mesa, drag and drop, session management, image manipulation, spell checking, and documentation creation.&lt;br /&gt;
&lt;br /&gt;
Mind the changes that happened between Qt 2 and Qt 3, Qt3 and TQt, KDE 2.x and KDE 3.x and KDE 3.x and TDE.&lt;br /&gt;
&lt;br /&gt;
==== KDE 2/Qt Programming Bible ====&lt;br /&gt;
Arthur Griffith (2000). [https://box.cs.istu.ru/public/docs/devel/qt/kde%202%20-%20QT.pdf KDE 2/Qt Programming Bible]&lt;br /&gt;
&lt;br /&gt;
Covers KDE 2.x and Qt 2 widgets, mouse and keyboard handling, graphic file formats, fonts, colors, drawing and painting with QPainter, graphics manipulation, drag and drop, IPC and applets, internationalization etc.&lt;br /&gt;
&lt;br /&gt;
Also mind the changes that happened between Qt 2 and Qt 3, Qt3 and TQt, KDE 2.x and KDE 3.x and KDE 3.x and TDE.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Category:Developers&amp;diff=3342</id>
		<title>Category:Developers</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Category:Developers&amp;diff=3342"/>
		<updated>2024-05-07T08:20:19Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Added books: KDE 2.0 Development by David Sweet, et al. (2002) and KDE 2/Qt Programming Bible by Arthur Griffith (2000), freely available online.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This category contains development-related and API documentation for the Trinity Desktop Environment.&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==New to Trinity development?==&lt;br /&gt;
&lt;br /&gt;
Take a look at the following pages:&lt;br /&gt;
&lt;br /&gt;
* [http://trinitydesktop.org/helpwanted.php Getting Involved with Trinity Development]&lt;br /&gt;
* [[TDE Gitea Workspace]]&lt;br /&gt;
* [[TDE Weblate Translation Workspace]]&lt;br /&gt;
* [[Project GIT Information]]&lt;br /&gt;
* [[Project RoadMap]]&lt;br /&gt;
* [[DevelopmentSpecifications]]&lt;br /&gt;
* [https://www.trinitydesktop.org/apidocs.php TQt/TDE API documentation]&lt;br /&gt;
* [[Porting to TDE|Porting KDE3/Qt3 apps to Trinity]]&lt;br /&gt;
&lt;br /&gt;
==Building and Distributing Trinity==&lt;br /&gt;
* [[Nightly Builds|Installing Nightly Builds]]&lt;br /&gt;
* [[How to Build TDE Core Modules]]&lt;br /&gt;
* [[How to Build Extra Applications]]&lt;br /&gt;
&lt;br /&gt;
See also pages in [[:Category:Packagers]].&lt;br /&gt;
&lt;br /&gt;
==Tutorials and Documentation==&lt;br /&gt;
&lt;br /&gt;
===Qt3 and TQt===&lt;br /&gt;
* [[Understanding the TQT Interface]]&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/qt3 TQt API Documentation]&lt;br /&gt;
&lt;br /&gt;
===Trinity===&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/trinity/tdelibs/ TDELibs API Documentation]&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/trinity/tdebase/ TDEBase API Documentation]&lt;br /&gt;
* [https://www.trinitydesktop.org/docs/trinity/tdepim/ TDEPIM API Documentation]&lt;br /&gt;
* [[DCOP]], the IPC system used by TDE applications.&lt;br /&gt;
* [[TDEParts]], a mechanism for reusing and embedding elaborate widgets into applications (e.g. Konqueror)&lt;br /&gt;
* [[TDEIO]], an abstraction that provides network transparency between local and remote filesystems.&lt;br /&gt;
* [[TDEConfig XT Tutorial]]&lt;br /&gt;
* [[TDEConfig Module HOWTO]]&lt;br /&gt;
* [[Debugging TDE applications]]&lt;br /&gt;
* [[Sample Applications]]&lt;br /&gt;
&lt;br /&gt;
===KDE3===&lt;br /&gt;
Information in this section should be used with care, as it was not written for the current version of Trinity.  However, much of it still applies.  If you know of any other interesting KDE3 documentation or tutorials, please add them to this section.&lt;br /&gt;
&lt;br /&gt;
* [http://api.kde.org/3.5-api/kdelibs-apidocs/index.html KDE 3.5 API Reference]&lt;br /&gt;
: The original API reference, at kde.org&lt;br /&gt;
* [[KDE3 Architecture]]&lt;br /&gt;
: The architecture pages detail how everything was originally supposed to fit together.  Ported from the KDE wiki.&lt;br /&gt;
* [[KDE3 Tutorials]]&lt;br /&gt;
: On everything from using kdevelop to writing dcop-aware applications to creating window themes. Ported from the KDE wiki.&lt;br /&gt;
* [[KDE3 Filesystem Hierarchy]]&lt;br /&gt;
: Ported from the KDE wiki and verified against a working KDE3 instance.&lt;br /&gt;
* [http://www.kde.org/info/requirements/3.5.php KDE3 Compilation Requirements]&lt;br /&gt;
: Mandatory and optional packages for building KDE3, most of which are still used by Trinity.&lt;br /&gt;
&lt;br /&gt;
===Books===&lt;br /&gt;
====C++ GUI Programming with Qt 3====&lt;br /&gt;
Blanchette, Jasmin &amp;amp; Summerfield, Mark. (2015). [https://www.researchgate.net/publication/245591968_C_GUI_Programming_with_Qt_3 C++ GUI Programming with Qt 3]. (ISBN 0-13-124072-2)&lt;br /&gt;
&lt;br /&gt;
Things to note:&lt;br /&gt;
* Names changed from &amp;quot;Qt...&amp;quot; to &amp;quot;TQt...&amp;quot;&lt;br /&gt;
* compiling by hand needs something like &amp;lt;code&amp;gt;g++ a.cpp $(pkgconf tqt --cflags --libs) -lstdc++&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;qmake -project ...&amp;lt;/code&amp;gt; will not include the TDE folders, so you&amp;#039;ll have to add them manually to the *.pro file&lt;br /&gt;
* When in doubt check against the [http://trinitydesktop.org/docs/qt3/ TQt API documentation]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;by [https://mail.trinitydesktop.org/mailman3/hyperkitty/list/users@trinitydesktop.org/thread/AY7MVBPGHOJJUHJEV4NSLSLXG7QKQOEF/ Dr. Nikolaus Klepp]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====GUI Programming with Python: QT Edition====&lt;br /&gt;
Boudewijn Rempt - Copyright © 2001 by Commandprompt, Inc  &lt;br /&gt;
&lt;br /&gt;
The main topic of this book is [http://nclairon.free.fr/documentation/pyqt/book1.htm application development using PyQt.]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== KDE 2.0 Development ====&lt;br /&gt;
David Sweet, et al. (2002). [http://andamooka.org/~dsweet/kde2dev.pdf KDE 2.0 Development].&lt;br /&gt;
&lt;br /&gt;
Covers, among other things, KDE 2.0 widgets, Qt API, actions, icons, custom widget painting, internationalization, network transparency, KParts, DCOP, aRts/MCOP, ImageIO, OpenGL and Mesa, drag and drop, session management, image manipulation, spell checking, and documentation creation.&lt;br /&gt;
&lt;br /&gt;
Mind the changes that happened between Qt 2 and Qt 3, Qt3 and TQt, KDE 2.x and KDE 3.x and KDE 3.x and TDE.&lt;br /&gt;
&lt;br /&gt;
==== KDE 2/Qt Programming Bible ====&lt;br /&gt;
Arthur Griffith (2000). [https://box.cs.istu.ru/public/docs/devel/qt/kde%202%20-%20QT.pdf KDE 2/Qt Programming Bible]&lt;br /&gt;
&lt;br /&gt;
Covers KDE 2.x and Qt 2 widgets, mouse and keyboard handling, graphic file formats, fonts, colors, drawing and painting with QPainter, graphics manipulation, drag and drop, IPC and applets, internationalization etc.&lt;br /&gt;
&lt;br /&gt;
Also mind the changes that happened between Qt 2 and Qt 3, Qt3 and TQt, KDE 2.x and KDE 3.x and KDE 3.x and TDE.&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Template:DistroTable&amp;diff=3340</id>
		<title>Template:DistroTable</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Template:DistroTable&amp;diff=3340"/>
		<updated>2024-05-01T08:14:24Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Ray-V slackbuilds updated to R14.1.2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This template provides a &amp;#039;&amp;#039;&amp;#039;table with installation instructions&amp;#039;&amp;#039;&amp;#039; per distribution/operating system. It also tells the latest available version of TDE for that system.&lt;br /&gt;
&lt;br /&gt;
When there is a new release available for one of these systems, you only need to change the available version here; all the pages that use this template will show the updated data automatically.&lt;br /&gt;
&lt;br /&gt;
Mark the latest release with &amp;lt;span style=&amp;quot;background: lightgreen;&amp;quot;&amp;gt;lightgreen&amp;lt;/span&amp;gt;,  the release before it with &amp;lt;span style=&amp;quot;background: yellow;&amp;quot;&amp;gt;yellow&amp;lt;/span&amp;gt; and older releases with &amp;lt;span style=&amp;quot;background: orange;&amp;quot;&amp;gt;orange&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If there is something important that should be noticed about packages (e.g. pending builds) consider adding them below the table in a [[:Template:TipBox|TipBox]] or a [[:Template:WarningBox|WarningBox]] appropriately.&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
This is how it will look on the page:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;{|&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;!-- Official instructions --&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; | &amp;lt;big&amp;gt;Official Instructions&amp;lt;/big&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Distribution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Latest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Debian Trinity Repository Installation Instructions|Debian]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.2&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Devuan Trinity Repository Installation Instructions|Devuan]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.2&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Fedora Trinity Repository Installation Instructions|Fedora]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.2&lt;br /&gt;
 |-&lt;br /&gt;
 | [[RedHat Trinity Repository Installation Instructions|RedHat]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.2&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Ubuntu Trinity Repository Installation Instructions|Ubuntu]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.2&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;!-- Unofficial instructions --&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;4&amp;quot; | &amp;lt;big&amp;gt;Community Instructions&amp;lt;/big&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Distribution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Latest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Distribution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Latest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Arch Trinity Repository Installation Instructions|Arch Linux]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.2&lt;br /&gt;
 | [[MX Linux Trinity Repository Installation Instructions|MX Linux]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.2&lt;br /&gt;
 |-&lt;br /&gt;
 | [[FreeBSD Trinity Installation Instructions|FreeBSD]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.2 &amp;lt;!-- R14.1.x branch actually --&amp;gt;&lt;br /&gt;
 | [[OpenSUSE Trinity Repository Installation Instructions|OpenSUSE]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.2&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Mageia Trinity Repository Installation Instructions|Mageia]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.2&lt;br /&gt;
 | [[PCLinuxOS Trinity Repository Installation Instructions|PCLinuxOS]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.2&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Slackware Trinity Installation Instructions|Slackware]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.2&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Raspbian Trinity Repository Installation Instructions|Raspbian]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.2&lt;br /&gt;
 |}&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; margin: 0;&amp;quot;&lt;br /&gt;
|Building from source code: &amp;#039;&amp;#039;&amp;#039;[[How to Build TDE Core Modules|base]]&amp;#039;&amp;#039;&amp;#039; | &amp;#039;&amp;#039;&amp;#039;[[How to Build Extra Applications|extra]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[[LiveCDs|Try a LiveCD]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=User:Blu256&amp;diff=3291</id>
		<title>User:Blu256</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=User:Blu256&amp;diff=3291"/>
		<updated>2024-03-13T14:49:05Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Just writing down some thoughts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Contact =&lt;br /&gt;
* [[User talk:Blu256|Wiki discussion page]]&lt;br /&gt;
* Jabber: &amp;lt;tt&amp;gt;blu.256@jabb.im&amp;lt;/tt&amp;gt;&lt;br /&gt;
* IRC nick: &amp;lt;tt&amp;gt;blu256&amp;lt;/tt&amp;gt; (Libera.chat)&lt;br /&gt;
&lt;br /&gt;
= TODO list =&lt;br /&gt;
&lt;br /&gt;
Mostly for personal reference. Updated occasionally.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |+ Currently working on...&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Type&lt;br /&gt;
 ! Stage&lt;br /&gt;
 ! Target&lt;br /&gt;
 |-&lt;br /&gt;
 | [https://mirror.git.trinitydesktop.org/gitea/TDE/tdemultimedia/pulls/31 KMix indicator]&lt;br /&gt;
 | Feature&lt;br /&gt;
 | Working on this&lt;br /&gt;
 | R14.1.2&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 |+ Misc. Planned Stuff&lt;br /&gt;
 ! Name&lt;br /&gt;
 ! Type&lt;br /&gt;
 ! Stage&lt;br /&gt;
 ! Target&lt;br /&gt;
 |-&lt;br /&gt;
 | Active borders and corners for TWin&lt;br /&gt;
 | Feature&lt;br /&gt;
 | Active borders support in [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/pulls/331 TDE/tdebase#331], more work needed for active corners)&lt;br /&gt;
 | Active borders: R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/issues/271 Kate: fix font style checkboxes between different schema font tabs]&lt;br /&gt;
 | Improvement&lt;br /&gt;
 | On hold&lt;br /&gt;
 | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | tdeio-mtp&lt;br /&gt;
 | Feature&lt;br /&gt;
 | On hold&lt;br /&gt;
 | R14.2.0&lt;br /&gt;
 |-&lt;br /&gt;
 | [https://mirror.git.trinitydesktop.org/gitea/TDE/tdelibs/issues/151 Make KSSL use system root certificates]&lt;br /&gt;
 | Improvement&lt;br /&gt;
 | On hold&lt;br /&gt;
 | R14.2.0&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== The Big Plans™ ==&lt;br /&gt;
Making no commitments here, but this is what I ultimately would like to work on:&lt;br /&gt;
&lt;br /&gt;
* TQt: Support for latest Unicode including emoji&lt;br /&gt;
** As soon as CMake port of TQt is complete (the current build system is an undocumented mess)&lt;br /&gt;
** Probably look towards the ICU library, do not reinvent the wheel like Qt&lt;br /&gt;
      ICU is a cross-platform Unicode based globalization library. It includes support for locale-sensitive string comparison, date/time/number/currency/message formatting, text boundary detection, character set conversion and so on.&lt;br /&gt;
** Not a priority, but an emoji picker would be nice and also very easy to implement after TQt support is complete&lt;br /&gt;
* TQt: Misc. new useful APIs&lt;br /&gt;
** TQJson&lt;br /&gt;
* WebKit port&lt;br /&gt;
** I&amp;#039;d really like to work on this one but my hardware is barely enough for building even just JSCOnly :-/&amp;lt;br&amp;gt;There really isn&amp;#039;t much you can do with a Intel Core i3 with 8GB RAM.&lt;br /&gt;
** Probably two libraries:&lt;br /&gt;
***TQWebKit: the basic port&lt;br /&gt;
*** TDEWebKit: wrapper with TDE-specific enhancements?&lt;br /&gt;
* OAuth support in KMail&lt;br /&gt;
** Literally the only thing stopping me and many GMail users from using it&lt;br /&gt;
** Depends on the WebKit port&lt;br /&gt;
* A multimedia library for TDE&lt;br /&gt;
** Something like Phonon, maybe even Phonon itself&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Category:Building_from_source_code&amp;diff=3271</id>
		<title>Category:Building from source code</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Category:Building_from_source_code&amp;diff=3271"/>
		<updated>2023-12-21T11:38:47Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Add category for convenicence&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:How to Build TDE}}&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Template:DistroTable&amp;diff=3270</id>
		<title>Template:DistroTable</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Template:DistroTable&amp;diff=3270"/>
		<updated>2023-12-21T11:22:19Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Separate &amp;quot;Building from source&amp;quot; from the rest of the table, add link lo LiveCDs pagee&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This template provides a &amp;#039;&amp;#039;&amp;#039;table with installation instructions&amp;#039;&amp;#039;&amp;#039; per distribution/operating system. It also tells the latest available version of TDE for that system.&lt;br /&gt;
&lt;br /&gt;
When there is a new release available for one of these systems, you only need to change the available version here; all the pages that use this template will show the updated data automatically.&lt;br /&gt;
&lt;br /&gt;
Mark the latest release with &amp;lt;span style=&amp;quot;background: lightgreen;&amp;quot;&amp;gt;lightgreen&amp;lt;/span&amp;gt;,  the release before it with &amp;lt;span style=&amp;quot;background: yellow;&amp;quot;&amp;gt;yellow&amp;lt;/span&amp;gt; and older releases with &amp;lt;span style=&amp;quot;background: orange;&amp;quot;&amp;gt;orange&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If there is something important that should be noticed about packages (e.g. pending builds) consider adding them below the table in a [[:Template:TipBox|TipBox]] or a [[:Template:WarningBox|WarningBox]] appropriately.&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
This is how it will look on the page:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;{|&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;!-- Official instructions --&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; | &amp;lt;big&amp;gt;Official Instructions&amp;lt;/big&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Distribution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Latest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Debian Trinity Repository Installation Instructions|Debian]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Devuan Trinity Repository Installation Instructions|Devuan]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Fedora Trinity Repository Installation Instructions|Fedora]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[RedHat Trinity Repository Installation Instructions|RedHat]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Ubuntu Trinity Repository Installation Instructions|Ubuntu]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1 &lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;!-- Unofficial instructions --&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;4&amp;quot; | &amp;lt;big&amp;gt;Community Instructions&amp;lt;/big&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Distribution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Latest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Distribution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Latest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Arch Trinity Repository Installation Instructions|Arch Linux]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 | [[MX Linux Trinity Repository Installation Instructions|MX Linux]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[FreeBSD Trinity Installation Instructions|FreeBSD]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1 &amp;lt;!-- R14.1.x branch actually --&amp;gt;&lt;br /&gt;
 | [[OpenSUSE Trinity Repository Installation Instructions|OpenSUSE]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Mageia Trinity Repository Installation Instructions|Mageia]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 | [[PCLinuxOS Trinity Repository Installation Instructions|PCLinuxOS]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Slackware Trinity Installation Instructions|Slackware]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Raspbian Trinity Repository Installation Instructions|Raspbian]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |}&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; margin: 0;&amp;quot;&lt;br /&gt;
|Building from source code: &amp;#039;&amp;#039;&amp;#039;[[How to Build TDE Core Modules|base]]&amp;#039;&amp;#039;&amp;#039; | &amp;#039;&amp;#039;&amp;#039;[[How to Build Extra Applications|extra]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|style=&amp;quot;text-align: center;&amp;quot;|[[LiveCDs|Try a LiveCD]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Category:Documentation&amp;diff=3269</id>
		<title>Category:Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Category:Documentation&amp;diff=3269"/>
		<updated>2023-12-21T11:18:40Z</updated>

		<summary type="html">&lt;p&gt;Blu256: /* Release Notes */ R14.1.1 is the latest version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Release Notes=&lt;br /&gt;
&lt;br /&gt;
; Latest release ([[Release Notes For R14.1.1|R14.1.1]])&lt;br /&gt;
&amp;lt;div class=&amp;quot;R14_release_notes mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:400px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
; Older R14.0.x release notes.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
: [[Release Notes For R14.1.0|R14.1.0]]&lt;br /&gt;
: [[Release Notes For R14.0.13|R14.0.13]]&lt;br /&gt;
: [[Release Notes For R14.0.12|R14.0.12]]&lt;br /&gt;
: [[Release Notes For R14.0.11|R14.0.11]]&lt;br /&gt;
: [[Release Notes For R14.0.10|R14.0.10]]&lt;br /&gt;
: [[Release Notes For R14.0.9|R14.0.9]]&lt;br /&gt;
: [[Release Notes For R14.0.8|R14.0.8]]&lt;br /&gt;
: [[Release Notes For R14.0.7|R14.0.7]]&lt;br /&gt;
: [[Release Notes For R14.0.6|R14.0.6]]&lt;br /&gt;
: [[Release Notes For R14.0.5|R14.0.5]]&lt;br /&gt;
: [[Release Notes For R14.0.4|R14.0.4]]&lt;br /&gt;
: [[Release Notes For R14.0.3|R14.0.3]]&lt;br /&gt;
: [[Release Notes For R14.0.2|R14.0.2]]&lt;br /&gt;
: [[Release Notes For R14.0.1|R14.0.1]]&lt;br /&gt;
: [[Release Notes For R14.0.0|R14.0.0]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;v3.5_release_notes mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:400px; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
; Older v3.5.x release notes.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
: [[Release Notes For 3.5.13.2|3.5.13.2]]&lt;br /&gt;
: [[Release Notes For 3.5.13.1|3.5.13.1]]&lt;br /&gt;
: [[Release Notes For 3.5.13|3.5.13]]&lt;br /&gt;
: [[Release Notes For 3.5.12|3.5.12]]&lt;br /&gt;
: [[Release Notes For 3.5.11|3.5.11]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&lt;br /&gt;
==Installing from a Package Manager==&lt;br /&gt;
To set up Trinity on your computer, you may wish to visit the appropriate installation page:&lt;br /&gt;
&lt;br /&gt;
{{DistroTable}}&lt;br /&gt;
&lt;br /&gt;
==Installing from Source==&lt;br /&gt;
&lt;br /&gt;
[[How to Build TDE Core Modules]]&lt;br /&gt;
&lt;br /&gt;
[[How to Build Extra Applications]] (K3B, amaroK, KOffice, Kaffeine...)&lt;br /&gt;
&lt;br /&gt;
[[Notes on GIT Sources]]&lt;br /&gt;
&lt;br /&gt;
[[Suggested Build Flags]] for specific distributions (currently Ubuntu and Debian, with a note on OpenSuSE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=LiveCDs with Trinity=&lt;br /&gt;
&lt;br /&gt;
{{:LiveCDs}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Tips and Tricks=&lt;br /&gt;
Make sure to check out the [[Tips_And_Tricks|Tips and Tricks]] page for contributions by TDE users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Other links in this category=&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Suggested_Build_Flags&amp;diff=3268</id>
		<title>Suggested Build Flags</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Suggested_Build_Flags&amp;diff=3268"/>
		<updated>2023-12-21T11:17:16Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Add {{KDE3}} (outdated information)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Suggested Build Flags==&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
&lt;br /&gt;
{{KDE3}}&lt;br /&gt;
&lt;br /&gt;
Please note that you can find spec/dsc/PKGBUILD/emerge files [https://git.trinitydesktop.org/cgit/tde-packaging/ in our GIT repositories].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Distribution Name &lt;br /&gt;
!Build Flags &lt;br /&gt;
!Prepackaged Binaries&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 	&lt;br /&gt;
|&lt;br /&gt;
 --prefix=/opt/kde3&lt;br /&gt;
 --includedir=/opt/kde3/include/kde&lt;br /&gt;
 --mandir=/opt/kde3/share/man&lt;br /&gt;
 --infodir=/opt/kde3/share/info&lt;br /&gt;
 --with-extra-libs=/opt/kde3/lib&lt;br /&gt;
 --sysconfdir=/etc&lt;br /&gt;
 --localstatedir=/var&lt;br /&gt;
 --libexecdir=&amp;quot;\${prefix}/lib/kdebase-kde3&amp;quot;&lt;br /&gt;
 --disable-rpath&lt;br /&gt;
 --with-xinerama&lt;br /&gt;
 --enable-closure (when needed, which is most of the time) 	&lt;br /&gt;
|http://apt.pearsoncomputing.net&lt;br /&gt;
|-&lt;br /&gt;
|Debian 	&lt;br /&gt;
|&lt;br /&gt;
 --prefix=/opt/trinity&lt;br /&gt;
 --includedir=/opt/trinity/include/kde&lt;br /&gt;
 --mandir=/opt/trinity/share/man&lt;br /&gt;
 --infodir=/opt/trinity/share/info&lt;br /&gt;
 --with-extra-libs=/opt/trinity/lib&lt;br /&gt;
 --sysconfdir=/etc&lt;br /&gt;
 --localstatedir=/var&lt;br /&gt;
 --libexecdir=&amp;quot;\${prefix}/lib/kdebase-kde3&amp;quot;&lt;br /&gt;
 --disable-rpath&lt;br /&gt;
 --with-xinerama&lt;br /&gt;
 --enable-closure (when needed, which is most of the time) 	&lt;br /&gt;
|http://trinity.pearsoncomputing.net/debian_installation.html&lt;br /&gt;
|-&lt;br /&gt;
|SuSE&lt;br /&gt;
|Check the &amp;#039;tde-filesystem&amp;#039; package for more information. &lt;br /&gt;
|N/A &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Template:DistroTable&amp;diff=3267</id>
		<title>Template:DistroTable</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Template:DistroTable&amp;diff=3267"/>
		<updated>2023-12-21T11:07:33Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Add &amp;quot;Building from source code&amp;quot; link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This template provides a &amp;#039;&amp;#039;&amp;#039;table with installation instructions&amp;#039;&amp;#039;&amp;#039; per distribution/operating system. It also tells the latest available version of TDE for that system.&lt;br /&gt;
&lt;br /&gt;
When there is a new release available for one of these systems, you only need to change the available version here; all the pages that use this template will show the updated data automatically.&lt;br /&gt;
&lt;br /&gt;
Mark the latest release with &amp;lt;span style=&amp;quot;background: lightgreen;&amp;quot;&amp;gt;lightgreen&amp;lt;/span&amp;gt;,  the release before it with &amp;lt;span style=&amp;quot;background: yellow;&amp;quot;&amp;gt;yellow&amp;lt;/span&amp;gt; and older releases with &amp;lt;span style=&amp;quot;background: orange;&amp;quot;&amp;gt;orange&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If there is something important that should be noticed about packages (e.g. pending builds) consider adding them below the table in a [[:Template:TipBox|TipBox]] or a [[:Template:WarningBox|WarningBox]] appropriately.&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
This is how it will look on the page:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;{|&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;!-- Official instructions --&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;2&amp;quot; | &amp;lt;big&amp;gt;Official Instructions&amp;lt;/big&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Distribution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Latest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Debian Trinity Repository Installation Instructions|Debian]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Devuan Trinity Repository Installation Instructions|Devuan]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Fedora Trinity Repository Installation Instructions|Fedora]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[RedHat Trinity Repository Installation Instructions|RedHat]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Ubuntu Trinity Repository Installation Instructions|Ubuntu]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | colspan=2 | [[How to Build TDE|Building from source code]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top&amp;quot; | &amp;lt;!-- Unofficial instructions --&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0;&amp;quot;&lt;br /&gt;
 ! colspan=&amp;quot;4&amp;quot; | &amp;lt;big&amp;gt;Community Instructions&amp;lt;/big&amp;gt;&lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Distribution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Latest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Distribution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 | &amp;#039;&amp;#039;&amp;#039;Latest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Arch Trinity Repository Installation Instructions|Arch Linux]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 | [[MX Linux Trinity Repository Installation Instructions|MX Linux]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[FreeBSD Trinity Installation Instructions|FreeBSD]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1 &amp;lt;!-- R14.1.x branch actually --&amp;gt;&lt;br /&gt;
 | [[OpenSUSE Trinity Repository Installation Instructions|OpenSUSE]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Mageia Trinity Repository Installation Instructions|Mageia]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 | [[PCLinuxOS Trinity Repository Installation Instructions|PCLinuxOS]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Slackware Trinity Installation Instructions|Slackware]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |-&lt;br /&gt;
 | [[Raspbian Trinity Repository Installation Instructions|Raspbian]]&lt;br /&gt;
 | style=&amp;quot;background: lightgreen;&amp;quot; | R14.1.1&lt;br /&gt;
 |}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=How_to_Build_Extra_Applications&amp;diff=3266</id>
		<title>How to Build Extra Applications</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=How_to_Build_Extra_Applications&amp;diff=3266"/>
		<updated>2023-12-21T11:01:55Z</updated>

		<summary type="html">&lt;p&gt;Blu256: +  Category:Building from source code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Documentation]]&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:Developers]]&lt;br /&gt;
[[Category:Packagers]]&lt;br /&gt;
[[Category:Building from source code]]&lt;br /&gt;
&lt;br /&gt;
This HowTo provides detailed notes and explanations for building the optional applications included in the&lt;br /&gt;
Trinity Desktop Environment code repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction and Requirements==&lt;br /&gt;
&lt;br /&gt;
The optional applications are QT3 and KDE3 applications, some of them originally third-party, which have been&lt;br /&gt;
ported forward to TQT/TDE and are now maintained by the Trinity Project.  All of them require TQT to be&lt;br /&gt;
installed, and many also require tdelibs, so they share the dependency list for the core packages.&lt;br /&gt;
&lt;br /&gt;
Other than that, well, if this page looks awfully similar to [[How to Build TDE Core Modules]], that&amp;#039;s&lt;br /&gt;
because they were both split from a single difficult-to-read mega-page on the old wiki, and some material&lt;br /&gt;
had to be common to both.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Preparing the Source==&lt;br /&gt;
&lt;br /&gt;
To use the release tarballs, just untar them somewhere.&lt;br /&gt;
&lt;br /&gt;
To live dangerously and use the GIT sources, read [[Notes on GIT Sources]] first.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
===Building Packages with cmake===&lt;br /&gt;
&lt;br /&gt;
====List of Packages Building with cmake====&lt;br /&gt;
&lt;br /&gt;
cmake is the newer, easier, and more maintainable build system the Trinity Project is in the process of porting TDE source to.&lt;br /&gt;
&lt;br /&gt;
The list of modules maintained as an [https://mirror.git.trinitydesktop.org/gitea/TDE/tde/issues/9 issue #9 in the TGW] indicates which application packages have already been converted, and their autotools build scripts are no longer maintained. Some other packages are in the process of conversion, but do not have complete cmake build scripts yet. Build everything not in the list above with autotools.&lt;br /&gt;
&lt;br /&gt;
Read the notes for individual package requirements before trying to build anything.&lt;br /&gt;
&lt;br /&gt;
====Performing a cmake Build====&lt;br /&gt;
&lt;br /&gt;
The command listing below is only an example.  You will wish to edit the exports if your distribution&lt;br /&gt;
puts things in unusual locations or if you wish to install to somewhere other than /opt/trinity .  Not &lt;br /&gt;
all exports will be needed on all systems.&lt;br /&gt;
&lt;br /&gt;
 export PREFIX=/opt/trinity&lt;br /&gt;
 export SYSCONFDIR=/etc/trinity&lt;br /&gt;
 export LIBDIR=/opt/trinity/lib&lt;br /&gt;
 export MANDIR=/opt/trinity/man&lt;br /&gt;
 export QTDIR=/opt/trinity/lib/qt3-3.3.8.d&lt;br /&gt;
 export PATH=/opt/trinity/qt3-3.3.8.d/bin:/opt/trinity/bin:$PATH&lt;br /&gt;
 export LD_LIBRARY_PATH=/opt/trinity/lib:/opt/trinity/lib/trinity:$LD_LIBRARY_PATH&lt;br /&gt;
 export PKG_CONFIG_PATH=:/opt/trinity/lib/pkgconfig:/opt/trinity/qt3-3.3.8.d/lib/pkgconfig:$PKG_CONFIG_PATH&lt;br /&gt;
 # Enable only one of the following:&lt;br /&gt;
 # export DEBUG_AUTOTOOL_OPT=&amp;quot;--disable-debug&amp;quot;&lt;br /&gt;
 export DEBUG_CMAKE_OPT=&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
  cmake path/to/trinity/module \&lt;br /&gt;
    -DCMAKE_C_FLAGS:STRING=&amp;quot;$CPUOPTIONS&amp;quot; \&lt;br /&gt;
    -DCMAKE_CXX_FLAGS:STRING=&amp;quot;$CPUOPTIONS $DEBUG_CMAKE_OPT&amp;quot; \&lt;br /&gt;
    -DCMAKE_INSTALL_PREFIX=${PREFIX} \&lt;br /&gt;
    -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \&lt;br /&gt;
    -DLIB_SUFFIX=${LIBDIRSUFFIX} \&lt;br /&gt;
    -DMAN_INSTALL_DIR=${MANDIR} \&lt;br /&gt;
    -DBUILD_ALL=ON&lt;br /&gt;
  make VERBOSE=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Notes====&lt;br /&gt;
&lt;br /&gt;
*When building on 64-bit, the following (T)Qt3 configuration option might need to be explicitly declared in some distro build scripts:&lt;br /&gt;
 -platform linux-g++-64 (rather than linux-g++ (notice the dash!))&lt;br /&gt;
&lt;br /&gt;
*If class constructor issues surface during the build, please post the error to the trinity-users list.&lt;br /&gt;
&lt;br /&gt;
===Building Packages with Autoconf===&lt;br /&gt;
&lt;br /&gt;
====Introduction====&lt;br /&gt;
&lt;br /&gt;
If the package you&amp;#039;re trying to build is on the list of those that will build with cmake, try that first, because &lt;br /&gt;
its autotools files will be unmaintained, bit-rotted, and possibly outright broken.&lt;br /&gt;
&lt;br /&gt;
Please read the notes for individual package requirements before trying to build anything.&lt;br /&gt;
&lt;br /&gt;
For those packages that still need to be built with autotools, the following steps must be run for each affected &lt;br /&gt;
Trinity module, including tarball snapshots.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Regenerate Autoconf/Automake files====&lt;br /&gt;
&lt;br /&gt;
cd to the desired module to build, then run:&lt;br /&gt;
&lt;br /&gt;
 cp -Rp &amp;lt;path to your system&amp;#039;s libtool.m4 file&amp;gt; admin/libtool.m4.in&lt;br /&gt;
 cp -Rp &amp;lt;path to your system&amp;#039;s ltmain.sh file&amp;gt; admin/ltmain.sh&lt;br /&gt;
 make -f admin/Makefile.common&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Configure and Build====&lt;br /&gt;
&lt;br /&gt;
 export PREFIX=/opt/trinity&lt;br /&gt;
 export SYSCONFDIR=/etc/trinity&lt;br /&gt;
 export LIBDIR=/opt/trinity/lib&lt;br /&gt;
 export MANDIR=/opt/trinity/man&lt;br /&gt;
 export QTDIR=/opt/trinity/lib/qt3-3.3.8.d&lt;br /&gt;
 export PATH=/opt/trinity/qt3-3.3.8.d/bin:/opt/trinity/bin:$PATH&lt;br /&gt;
 export LD_LIBRARY_PATH=/opt/trinity/lib:/opt/trinity/lib/trinity:$LD_LIBRARY_PATH&lt;br /&gt;
 export PKG_CONFIG_PATH=:/opt/trinity/lib/pkgconfig:/opt/trinity/qt3-3.3.8.d/lib/pkgconfig:$PKG_CONFIG_PATH&lt;br /&gt;
 # Enable only one of the following:&lt;br /&gt;
 # export DEBUG_AUTOTOOL_OPT=&amp;quot;--enable-debug=full&amp;quot;&lt;br /&gt;
 export DEBUG_AUTOTOOL_OPT=&amp;quot;--disable-debug&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  CFLAGS=$CPUOPT \&lt;br /&gt;
  CXXFLAGS=$CPUOPT \&lt;br /&gt;
  ./configure \&lt;br /&gt;
    --prefix=${PREFIX} \&lt;br /&gt;
    --sysconfdir=${SYSCONFDIR} \&lt;br /&gt;
    --libdir=${LIBDIR} \&lt;br /&gt;
    --mandir=${MANDIR} \&lt;br /&gt;
    --with-qt-dir=${QTDIR} \&lt;br /&gt;
    --with-qt-includes=${QTDIR}/include \&lt;br /&gt;
    --with-qt-libraries=${QTDIR}/lib \&lt;br /&gt;
    $DEBUG_AUTOTOOL_OPT&lt;br /&gt;
&lt;br /&gt;
View the Distribution Specific Builds page for additional configure options.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Notes====&lt;br /&gt;
&lt;br /&gt;
*Not well documented anywhere, but when building with automake several packages need the --enable-closure configure option:&lt;br /&gt;
**kaffeine&lt;br /&gt;
**kdiff3 &lt;br /&gt;
&lt;br /&gt;
*When building on 64-bit, the following (T)Qt3 configuration option might need to be explicitly declared in some distro build scripts:&lt;br /&gt;
 -platform linux-g++-64 (rather than linux-g++ (notice the dash!))&lt;br /&gt;
&lt;br /&gt;
===Build Times===&lt;br /&gt;
&lt;br /&gt;
Building Trinity requires time and patience. Build times vary. Here are some guidelines from building &lt;br /&gt;
Trinity 3.5.12 on a dual core 2.3 GHz AM2 with 4GB of RAM, using tmpfs, 7200 rpm SATA II hard drives; &lt;br /&gt;
with Amarok, Firefox, Konsole, Konqueror, Kate, and other various apps often running concurrently. Compile &lt;br /&gt;
times will be faster without such overhead, but likely will be longer when building with support package hooks.&lt;br /&gt;
Packages using cmake will build faster than those still stuck on autotools.&lt;br /&gt;
&lt;br /&gt;
*k3b: 8 minutes&lt;br /&gt;
*amarok: 10 minutes&lt;br /&gt;
*knemo: 2 minutes&lt;br /&gt;
*ktorrent: 7 minutes&lt;br /&gt;
*koffice: 109 minutes &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing==&lt;br /&gt;
&lt;br /&gt;
The command is the same regardless of whether your package was built with cmake or autotools:&lt;br /&gt;
&lt;br /&gt;
 make install || exit 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Additional Functionality==&lt;br /&gt;
&lt;br /&gt;
Some applications gain additional functionality when compiled with optional dependencies available.&lt;br /&gt;
What follows is an (incomplete) list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===List of Optional Dependencies by Application===&lt;br /&gt;
&lt;br /&gt;
====k3b====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libsndfile&amp;#039;&amp;#039;&amp;#039; C library for reading and writing sampled sound files&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libdvdcss&amp;#039;&amp;#039;&amp;#039; library for transparent DVD device access with on-the-fly CSS decryption&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libdvdnav&amp;#039;&amp;#039;&amp;#039; library support for DVD navigation features&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;ffmpeg&amp;#039;&amp;#039;&amp;#039; software to record, convert and stream audio and video&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;lame&amp;#039;&amp;#039;&amp;#039; MP3 encoding support&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libdv-&amp;#039;&amp;#039;&amp;#039; quasar DV codec&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libdvdread&amp;#039;&amp;#039;&amp;#039; read DVD video disks&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;a52dec&amp;#039;&amp;#039;&amp;#039; video decoder&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;faac&amp;#039;&amp;#039;&amp;#039; Advanced Audio Coder (MPEG2-AAC, MPEG4-AAC)&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;faad2&amp;#039;&amp;#039;&amp;#039; AAC decoder&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;xvidcore&amp;#039;&amp;#039;&amp;#039; MPEG-4 compliant video codec&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;schroedinger&amp;#039;&amp;#039;&amp;#039; C implementation of BBC&amp;#039;s dirac codec&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;openjpeg&amp;#039;&amp;#039;&amp;#039; open-source JPEG 2000 codec&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;x264&amp;#039;&amp;#039;&amp;#039; H264/AVC video stream encoder&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;speex&amp;#039;&amp;#039;&amp;#039; an audio compression format designed for speech&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;transcode&amp;#039;&amp;#039;&amp;#039; video stream processor&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libquicktime&amp;#039;&amp;#039;&amp;#039; library for reading and writing QuickTime? files&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;mjpegtools&amp;#039;&amp;#039;&amp;#039; video recording/playback tools&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libmpeg2&amp;#039;&amp;#039;&amp;#039; mpeg-video decoding library&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;vcdimager&amp;#039;&amp;#039;&amp;#039; video CD and Super Video CD tools&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;emovix&amp;#039;&amp;#039;&amp;#039; video CD distribution tools&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;musepack-tools&amp;#039;&amp;#039;&amp;#039; Musepack decoder/encoder&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libmusicbrainz&amp;#039;&amp;#039;&amp;#039; MusicBrainz? client library &lt;br /&gt;
&lt;br /&gt;
====amarok====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Ruby&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libmp4v2&amp;#039;&amp;#039;&amp;#039; MP4V2 tagging &lt;br /&gt;
&lt;br /&gt;
====koffice====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;wv2&amp;#039;&amp;#039;&amp;#039; Microsoft Word conversion&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;GraphicsMagick&amp;#039;&amp;#039;&amp;#039; various image filters (chalk)&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;PostgreSQL&amp;#039;&amp;#039;&amp;#039; database server (kexi) &lt;br /&gt;
&lt;br /&gt;
====kaffeine====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;cdparanoia&amp;#039;&amp;#039;&amp;#039; digital audio extraction tool&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;gst-plugins-base&amp;#039;&amp;#039;&amp;#039; GStreamer plugins&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;gstreamer&amp;#039;&amp;#039;&amp;#039; streaming multimedia framework&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;xine-lib&amp;#039;&amp;#039;&amp;#039; xine multimedia playback engine libraries &lt;br /&gt;
&lt;br /&gt;
====k9copy====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;ffmpeg&amp;#039;&amp;#039;&amp;#039; software to record, convert and stream audio and video&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;dvdauthor&amp;#039;&amp;#039;&amp;#039; DVD authoring tools&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;vamps&amp;#039;&amp;#039;&amp;#039; DVD backup tool&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;MPlayer&amp;#039;&amp;#039;&amp;#039; movie player&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;k3b&amp;#039;&amp;#039;&amp;#039; CD and DVD creation and ripping &lt;br /&gt;
&lt;br /&gt;
====digikam====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;lcms&amp;#039;&amp;#039;&amp;#039; color management engine&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;dcraw&amp;#039;&amp;#039;&amp;#039; decode raw digital photos&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libgphoto2&amp;#039;&amp;#039;&amp;#039; digital camera library&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;jasper&amp;#039;&amp;#039;&amp;#039; JPEG-2000 codec&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;exiv2&amp;#039;&amp;#039;&amp;#039; Exif and IPTC metadata library and tools&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libkdcraw&amp;#039;&amp;#039;&amp;#039; dcraw C++ library wrapper&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libkexiv2&amp;#039;&amp;#039;&amp;#039; exiv2 library wrapper&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libkipi&amp;#039;&amp;#039;&amp;#039; image plugin interface structure&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;kipi-plugins&amp;#039;&amp;#039;&amp;#039; plugins for libKipi&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;sqlite&amp;#039;&amp;#039;&amp;#039; self contained SQL database engine &lt;br /&gt;
&lt;br /&gt;
====gwenview====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;exiv2&amp;#039;&amp;#039;&amp;#039; Exif and IPTC metadata library and tools&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libkexiv2&amp;#039;&amp;#039;&amp;#039; exiv2 library wrapper&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libkipi&amp;#039;&amp;#039;&amp;#039; image plugin interface structure&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;kipi-plugins&amp;#039;&amp;#039;&amp;#039; plugins for libKipi &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Quirks and Known Bugs==&lt;br /&gt;
&lt;br /&gt;
===Krita Rename===&lt;br /&gt;
&lt;br /&gt;
Koffice Krita has been renamed to Chalk.&lt;br /&gt;
&lt;br /&gt;
===Third-party/LibreOffice===&lt;br /&gt;
&lt;br /&gt;
This folder contains patches that add TDE support to the upstream LibreOffice &lt;br /&gt;
sources. The patches allow LibreOffice to use Trinity dialog boxes. The patches have not been merged into the upstream &lt;br /&gt;
LibreOffice GIT tree, but they work just fine as-is when applied to the stock LO sources. Obtaining the advantages of &lt;br /&gt;
these patches requires rebuilding LibreOffice from sources.&lt;br /&gt;
&lt;br /&gt;
===OpenGL and nVidia===&lt;br /&gt;
Building many Trinity and related packages depend upon OpenGL, such as tdegraphics, k3b, koffice, tdenetwork, gwenview, digikam, etc.; &lt;br /&gt;
&lt;br /&gt;
as well as dependency packages such as libkipi, libkdcraw, libkexiv2, avahi, etc. &lt;br /&gt;
&lt;br /&gt;
If any of those packages are built when the proprietary nvidia drivers are installed, the dependent package will fail to build with an error about /usr/lib/libGL.la. &lt;br /&gt;
&lt;br /&gt;
That file is installed by the proprietary nvidia package. When building for personal use only, then building those packages with nvidia installed will pose no harm. &lt;br /&gt;
&lt;br /&gt;
When building packages for other users then build the entire suite of packages in a &amp;quot;clean&amp;quot; generic OpenGL environment. &lt;br /&gt;
&lt;br /&gt;
Other users might not use the proprietary nvidia package. This is true of any package that has OpenGL dependencies.&lt;br /&gt;
&lt;br /&gt;
===MSWord Support in KOffice===&lt;br /&gt;
&lt;br /&gt;
The koffice package expects the wv2 package to provide MS Word import support. The older wv2-0.2.3 package is &lt;br /&gt;
somewhat broken. Users are encouraged to update wv2-0.2.3 to wv2-0.4.2. The newer version of wv2 is compiled with cmake &lt;br /&gt;
and ignores compiling with automake. The libwv2.la file provided upstream is broken with respect to automake and will &lt;br /&gt;
cause automake to fail. Basically, /usr/lib/libwv2.la is missing a proper header statement. This should be patched when &lt;br /&gt;
creating the wv2-0.4.2 package.&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=How_to_Build_TDE_Core_Modules&amp;diff=3265</id>
		<title>How to Build TDE Core Modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=How_to_Build_TDE_Core_Modules&amp;diff=3265"/>
		<updated>2023-12-21T11:01:31Z</updated>

		<summary type="html">&lt;p&gt;Blu256: +  Category:Building from source code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Documentation]]&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:Developers]]&lt;br /&gt;
[[Category:Packagers]]&lt;br /&gt;
[[Category:Building from source code]]&lt;br /&gt;
This HowTo provides detailed notes and explanations for building the Trinity Desktop Environment base&lt;br /&gt;
packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction and Requirements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Basic Building Requirements===&lt;br /&gt;
&lt;br /&gt;
Individual Linux distributions might have different build requirements. If these are known they will be available &lt;br /&gt;
on the Distribution Specific Builds page.&lt;br /&gt;
&lt;br /&gt;
There is an ongoing effort to convert the build process from autotools to cmake. Until the cmake conversion is &lt;br /&gt;
complete, both cmake and autotools are needed to build Trinity packages. cmake 2.8.12 or more recent is expected &lt;br /&gt;
when building with cmake.&lt;br /&gt;
&lt;br /&gt;
To build the packages still using autotools, you will need a standard autotools setup (automake, autoconf, etc.)&lt;br /&gt;
&lt;br /&gt;
You&amp;#039;ll also need a C++ compiler. g++ from the GNU Compiler Collection is the most usual, the current GIT version of Trinity has been tested &lt;br /&gt;
against versions up to and including 4.6. clang++ is also supported.&lt;br /&gt;
&lt;br /&gt;
===Other Requirements===&lt;br /&gt;
&lt;br /&gt;
(NOTE:  List compiled from old QT3/kdelibs/kde-base ebuilds--will someone please check these?)&lt;br /&gt;
&lt;br /&gt;
Most of the non-build-related mandatory dependencies for the core Trinity packages are pretty basic:&lt;br /&gt;
&lt;br /&gt;
*an X server&lt;br /&gt;
*openssl&lt;br /&gt;
*fontconfig&lt;br /&gt;
*freetype&lt;br /&gt;
*ghostscript&lt;br /&gt;
*xdg support&lt;br /&gt;
*libpng&lt;br /&gt;
*libmng&lt;br /&gt;
&lt;br /&gt;
If your Linux distribution came with any kind of graphical environment at all, you should already have&lt;br /&gt;
this stuff.&lt;br /&gt;
&lt;br /&gt;
To build tdepim, you will also need libical (standard on many distros).&lt;br /&gt;
&lt;br /&gt;
See Additional Functionality for a list of optional dependencies and what they enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About TQt===&lt;br /&gt;
&lt;br /&gt;
Trinity uses the TQt widget toolkit. TQt is a fork of the last version of Qt3, with a significant amount of&lt;br /&gt;
bug-fixes and improvements. Since Trolltech, the original developer of Qt, dropped support for Qt3,&lt;br /&gt;
the Trinity Project has forked it and continued its maintenance and development.&lt;br /&gt;
&lt;br /&gt;
===About libart===&lt;br /&gt;
&lt;br /&gt;
libart-lgpl is another dependency package that the Trinity Project has taken over after it was &lt;br /&gt;
[https://bugzilla.gnome.org/show_bug.cgi?id=155472#c4 dropped] by its original maintainer, because &lt;br /&gt;
it needed several [http://git.trinitydesktop.org/cgit/libart-lgpl/diff/?id=150562b89b645c402f1bb837a09f8b84bf6e49ec patches] &lt;br /&gt;
to prevent crashes.  The version of libart provided by the Trinity Project includes those patches and is &lt;br /&gt;
intended to be a replacement for any version of libart currently installed by any distro. Build this patched version &lt;br /&gt;
of libart and replace the stock libart installed with the distro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Coexisting with QT5/KDE Plasma===&lt;br /&gt;
&lt;br /&gt;
Trinity is intended to be able to run on computers that also have KDE Plasma installed.  Originally, a lot of&lt;br /&gt;
Trinity applications had the same names as their KDE4 counterparts, which was problematic.  All of &lt;br /&gt;
those have been renamed.  In general, this was accomplished by changing the old KDE &amp;quot;K&amp;quot; prefix to a &lt;br /&gt;
&amp;quot;T&amp;quot; (&amp;quot;kwin&amp;quot; -&amp;gt; &amp;quot;twin&amp;quot;).  Applications that don&amp;#039;t match anything currently part of KDE Plasma have retained &lt;br /&gt;
their old names.&lt;br /&gt;
&lt;br /&gt;
To avoid stepping on KDE Plasma&amp;#039;s toes, we &amp;#039;&amp;#039;strongly&amp;#039;&amp;#039; suggest picking a specific subdirectory prefix to install Trinity&lt;br /&gt;
to--the one used in these directions is $PREFIX=/opt/trinity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Preparing the Source==&lt;br /&gt;
&lt;br /&gt;
To use the release tarballs, just untar them somewhere.&lt;br /&gt;
&lt;br /&gt;
To live dangerously and use the GIT sources, read [[Notes on GIT Sources]] first.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Suggested Build Order===&lt;br /&gt;
&lt;br /&gt;
A lot of the Trinity core packages depend on one another (in particular, everything depends on tdelibs).&lt;br /&gt;
Follow this build order to prevent problems.&lt;br /&gt;
&lt;br /&gt;
Start with the required core packages:&lt;br /&gt;
&lt;br /&gt;
#tqt3&lt;br /&gt;
#cmake-trinity&lt;br /&gt;
#tqtinterface&lt;br /&gt;
#arts&lt;br /&gt;
#dbus-tqt&lt;br /&gt;
#dbus-1-tqt&lt;br /&gt;
#tqca-tls (Recommended but required for some applications, such as the Kopete OTR add-on)&lt;br /&gt;
#libart-lgpl&lt;br /&gt;
#avahi-tqt (Recommended but required when supporting DNS discovery services)&lt;br /&gt;
#tdelibs&lt;br /&gt;
#tdebase&lt;br /&gt;
&lt;br /&gt;
At this point, you should have a functioning TDE desktop with basic utilities (terminal, file manager,&lt;br /&gt;
text/source editors, etc.)  If you&amp;#039;re going to build tdebindings and want Python support available,&lt;br /&gt;
continue with the Python linking packages (or skip over them if you don&amp;#039;t care about Python support):&lt;br /&gt;
&lt;br /&gt;
#sip4-tqt&lt;br /&gt;
#python-tqt&lt;br /&gt;
#pytdeextensions&lt;br /&gt;
#python-trinity&lt;br /&gt;
#tqscintilla (if you want thr Scintilla editor component)&lt;br /&gt;
&lt;br /&gt;
The following build order seems to work well for the remaining core packages when building the stable release.&lt;br /&gt;
You don&amp;#039;t have to install everything, though, unless you&amp;#039;re packaging TDE for your distribution--pick the packages &lt;br /&gt;
that suit your use case.&lt;br /&gt;
&lt;br /&gt;
#tdebindings&lt;br /&gt;
#tdeaccessibility&lt;br /&gt;
#tdeutils&lt;br /&gt;
#tdemultimedia&lt;br /&gt;
#tdenetwork&lt;br /&gt;
#tdeadmin&lt;br /&gt;
#tdeartwork&lt;br /&gt;
#tdegames&lt;br /&gt;
#tdetoys&lt;br /&gt;
#tdeedu&lt;br /&gt;
#tdegraphics&lt;br /&gt;
#tdepim&lt;br /&gt;
#tdesdk (Build tdesdk after installing tdepim. tdepim provides libkcal (bugzilla) hooks for tdesdk.)&lt;br /&gt;
#tdevelop (Build tdevelop after tdesdk. tdesdk provides cvs support for tdevelop.)&lt;br /&gt;
#tdeaddons &lt;br /&gt;
&lt;br /&gt;
Once that&amp;#039;s done, you may want to add [[How to Build Extra Applications|some extra applications]] on top.&lt;br /&gt;
&lt;br /&gt;
===Building Packages with cmake===&lt;br /&gt;
&lt;br /&gt;
Starting from TDE version R14.0.11, the package cmake-trinity is mandatory prior to building, this package includes the required macros for the build.&lt;br /&gt;
&lt;br /&gt;
====List of Packages Building with cmake====&lt;br /&gt;
&lt;br /&gt;
cmake is the newer, easier, and more maintainable build system the Trinity Project is in the process of porting TDE source to.&lt;br /&gt;
&lt;br /&gt;
The list of modules maintained as an [https://mirror.git.trinitydesktop.org/gitea/TDE/tde/issues/9 issue #9 in the TGW] indicates which core and dependency packages have already been converted, and their autotools build scripts are no longer maintained. Some other packages are in the process of conversion, but do not have complete cmake build scripts yet. Build everything not in the list above with autotools.&lt;br /&gt;
&lt;br /&gt;
Read the notes section below for individual package requirements before trying to build anything.&lt;br /&gt;
&lt;br /&gt;
====Performing a cmake Build with Ninja====&lt;br /&gt;
&lt;br /&gt;
The command listing below is only an example.  You will wish to edit the exports if your distribution&lt;br /&gt;
puts things in unusual locations or if you wish to install to somewhere other than /opt/trinity (tqtinterface&lt;br /&gt;
has special requirements--see the Notes).  Not all exports will be needed on all systems.&lt;br /&gt;
&lt;br /&gt;
 export PREFIX=/opt/trinity&lt;br /&gt;
 export SYSCONFDIR=/etc/trinity&lt;br /&gt;
 export LIBDIR=$PREFIX/lib&lt;br /&gt;
 export MANDIR=$PREFIX/man&lt;br /&gt;
 export TQTDIR=$PREFIX/tqt3&lt;br /&gt;
 export PATH=$TQTDIR/bin:$PREFIX/bin:$PATH&lt;br /&gt;
 export LD_LIBRARY_PATH=$LIBDIR:$LIBDIR/trinity:$LD_LIBRARY_PATH&lt;br /&gt;
 export PKG_CONFIG_PATH=:$LIBDIR/pkgconfig:$TQTDIR/lib/pkgconfig:$PKG_CONFIG_PATH&lt;br /&gt;
 # for lib64:&lt;br /&gt;
 # export LIBDIRSUFFIX=64&lt;br /&gt;
 #&lt;br /&gt;
 from the Trinity module:&lt;br /&gt;
 mkdir -p build &amp;amp;&amp;amp; cd build&lt;br /&gt;
 cmake -G &amp;quot;Ninja&amp;quot; \&lt;br /&gt;
    -DCMAKE_EXPORT_COMPILE_COMMANDS=&amp;quot;ON&amp;quot; \&lt;br /&gt;
    -DCMAKE_BUILD_TYPE=RelWithDebInfo \&lt;br /&gt;
    -DCMAKE_SKIP_RPATH=&amp;quot;OFF&amp;quot; \&lt;br /&gt;
    -DCMAKE_INSTALL_PREFIX=${PREFIX} \&lt;br /&gt;
    -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \&lt;br /&gt;
    -DLIB_SUFFIX=${LIBDIRSUFFIX} \&lt;br /&gt;
    -DMAN_INSTALL_DIR=${MANDIR} \&lt;br /&gt;
    -DBUILD_ALL=&amp;quot;ON&amp;quot; \&lt;br /&gt;
    -DWITH_ALL_OPTIONS=&amp;quot;ON&amp;quot; ..&lt;br /&gt;
  cmake --build . -- -v&lt;br /&gt;
&lt;br /&gt;
====Notes====&lt;br /&gt;
&lt;br /&gt;
*Until the cmake migration is fully completed, tqtinterface should be built to install with a $PREFIX of /usr rather than /opt/trinity, even if you are installing everything else to /opt/trinity.&lt;br /&gt;
&lt;br /&gt;
*tqtinterface requires the following additional QT-related build option:&lt;br /&gt;
&lt;br /&gt;
 -DQT_VERSION=3&lt;br /&gt;
&lt;br /&gt;
*arts and tdelibs execute compiled binaries as part of the build process. Therefore they need to have -DCMAKE_SKIP_RPATH=&amp;quot;OFF&amp;quot; set. All other modules do not need the RPATH set.&lt;br /&gt;
&lt;br /&gt;
*When building on 64-bit, the following (T)Qt3 configuration option might need to be explicitly declared in some distro build scripts:&lt;br /&gt;
&lt;br /&gt;
 -platform linux-g++-64 (rather than linux-g++ (notice the dash!))&lt;br /&gt;
&lt;br /&gt;
*If class constructor issues surface during the build, please post the error to the trinity-users list.&lt;br /&gt;
&lt;br /&gt;
===Building Packages with Autoconf===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Introduction====&lt;br /&gt;
&lt;br /&gt;
If the package you&amp;#039;re trying to build is on the list of those that will build with cmake, try that first, because &lt;br /&gt;
its autotools files will be unmaintained, bit-rotted, and possibly outright broken.&lt;br /&gt;
&lt;br /&gt;
Please read the notes section below for individual package requirements before trying to build anything.&lt;br /&gt;
&lt;br /&gt;
For those packages that still need to be built with autotools, the following steps must be run for each affected &lt;br /&gt;
Trinity module, including tarball snapshots.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Regenerate Autoconf/Automake files====&lt;br /&gt;
&lt;br /&gt;
cd to the desired module to build, then run:&lt;br /&gt;
&lt;br /&gt;
 cp -Rp &amp;lt;path to your system&amp;#039;s libtool.m4 file&amp;gt; admin/libtool.m4.in&lt;br /&gt;
 cp -Rp &amp;lt;path to your system&amp;#039;s ltmain.sh file&amp;gt; admin/ltmain.sh&lt;br /&gt;
 make -f admin/Makefile.common&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Configure and Build====&lt;br /&gt;
&lt;br /&gt;
 export PREFIX=/opt/trinity&lt;br /&gt;
 export SYSCONFDIR=/etc/trinity&lt;br /&gt;
 export LIBDIR=/opt/trinity/lib&lt;br /&gt;
 export MANDIR=/opt/trinity/man&lt;br /&gt;
 export QTDIR=/opt/trinity/lib/qt3-3.3.8.d&lt;br /&gt;
 export PATH=/opt/trinity/qt3-3.3.8.d/bin:/opt/trinity/bin:$PATH&lt;br /&gt;
 export LD_LIBRARY_PATH=/opt/trinity/lib:/opt/trinity/lib/trinity:$LD_LIBRARY_PATH&lt;br /&gt;
 export PKG_CONFIG_PATH=:/opt/trinity/lib/pkgconfig:/opt/trinity/qt3-3.3.8.d/lib/pkgconfig:$PKG_CONFIG_PATH&lt;br /&gt;
 # Enable only one of the following:&lt;br /&gt;
 # export DEBUG_AUTOTOOL_OPT=&amp;quot;--enable-debug=full&amp;quot;&lt;br /&gt;
 export DEBUG_AUTOTOOL_OPT=&amp;quot;--disable-debug&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
  CFLAGS=$CPUOPT \&lt;br /&gt;
  CXXFLAGS=$CPUOPT \&lt;br /&gt;
  ./configure \&lt;br /&gt;
    --prefix=${PREFIX} \&lt;br /&gt;
    --sysconfdir=${SYSCONFDIR} \&lt;br /&gt;
    --libdir=${LIBDIR} \&lt;br /&gt;
    --mandir=${MANDIR} \&lt;br /&gt;
    --with-qt-dir=${QTDIR} \&lt;br /&gt;
    --with-qt-includes=${QTDIR}/include \&lt;br /&gt;
    --with-qt-libraries=${QTDIR}/lib \&lt;br /&gt;
    $DEBUG_AUTOTOOL_OPT&lt;br /&gt;
&lt;br /&gt;
View the Distribution Specific Builds page for additional configure options.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Notes====&lt;br /&gt;
&lt;br /&gt;
*Certain modules will not build across multiple cores in parallel. That is, with a &amp;quot;make -j&amp;quot; flag set to anything greater than 1. These packages are:&lt;br /&gt;
**tdebindings (some people have no problems with this package and parallel processing)&lt;br /&gt;
**tdemultimedia (some people have no problems with this package and parallel processing) &lt;br /&gt;
&lt;br /&gt;
*Not well documented anywhere, but when building with automake several packages need the --enable-closure configure option:&lt;br /&gt;
**tdeaccessibility&lt;br /&gt;
**tdeaddons&lt;br /&gt;
**tdeadmin&lt;br /&gt;
**tdebindings&lt;br /&gt;
**tdeedu&lt;br /&gt;
**tdegames&lt;br /&gt;
**tdemultimedia&lt;br /&gt;
**tdesdk&lt;br /&gt;
&lt;br /&gt;
*When building on 64-bit, the following (T)Qt3 configuration option might need to be explicitly declared in some distro build scripts:&lt;br /&gt;
&lt;br /&gt;
 -platform linux=g++-64 (rather than linux-g++ (notice the dash!))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Build Times===&lt;br /&gt;
&lt;br /&gt;
Building Trinity requires time and patience. Build times vary. Here are some guidelines from building &lt;br /&gt;
Trinity 3.5.12 on a dual core 2.3 GHz AM2 with 4GB of RAM, using tmpfs, 7200 rpm SATA II hard drives; &lt;br /&gt;
with Amarok, Firefox, Konsole, Konqueror, Kate, and other various apps often running concurrently. Compile &lt;br /&gt;
times will be faster without such overhead, but likely will be longer when building with support package hooks.&lt;br /&gt;
Packages using cmake will build faster than those still stuck on autotools.&lt;br /&gt;
&lt;br /&gt;
*tqtinterface: 2 minutes&lt;br /&gt;
*arts: 4 minutes&lt;br /&gt;
*tdelibs: 44 minutes&lt;br /&gt;
*tdebase: 33 minutes&lt;br /&gt;
*tdebindings: 36 minutes&lt;br /&gt;
*tdeaccessibility: 5 minutes&lt;br /&gt;
*tdeutils: 8 minutes&lt;br /&gt;
*tdemultimedia: 24 minutes&lt;br /&gt;
*tdenetwork: 23 minutes&lt;br /&gt;
*tdeadmin: 4 minutes&lt;br /&gt;
*tdeartwork: 3 minutes&lt;br /&gt;
*tdegames: 8 minutes&lt;br /&gt;
*tdetoys: 2 minutes&lt;br /&gt;
*tdeedu: 15 minutes&lt;br /&gt;
*tdegraphics: 17 minutes&lt;br /&gt;
*tdesdk: 14 minutes&lt;br /&gt;
*tdevelop: 27 minutes&lt;br /&gt;
*tdeaddons: 7 minutes&lt;br /&gt;
*tdewebdev: 12 minutes&lt;br /&gt;
*tdepim: 63 minutes &lt;br /&gt;
&lt;br /&gt;
Approximate total time: 5 hours 51 minutes&lt;br /&gt;
&lt;br /&gt;
Time to a functional system (basic desktop): 1 hour 23 minutes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing==&lt;br /&gt;
&lt;br /&gt;
The command is the same regardless of whether your package was built with cmake or autotools:&lt;br /&gt;
&lt;br /&gt;
 make install || exit 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Additional Functionality==&lt;br /&gt;
&lt;br /&gt;
Certain Trinity packages gain additional functionality when compiled with additional dependencies available.&lt;br /&gt;
Also, we maintain some libraries which provide purely optional functionality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Optional Trinity Libraries===&lt;br /&gt;
&lt;br /&gt;
None of these Trinity libraries are required but all provide additional functionality for a variety of packages. &lt;br /&gt;
These libraries must be built and installed before any packages using these libraries can take advantage of the &lt;br /&gt;
additional functionality.&lt;br /&gt;
&lt;br /&gt;
*libkipi: required by kipi-plugins&lt;br /&gt;
*kipi-plugins: several high-end image viewers such as gwenview and digikam&lt;br /&gt;
*libkdcraw: several image viewers and graphics apps, such as chalk and digikam&lt;br /&gt;
*libkexiv2: several image viewers&lt;br /&gt;
*libksquirrel: required by ksquirrel (TDE swiss-army-knife for graphic file formats, also supports medical image formats if xmedcon is provided)&lt;br /&gt;
*libtqt-perl: adept add-on&lt;br /&gt;
*mlt: not required or supported at this time&lt;br /&gt;
*mlt++: not required or supported at this time&lt;br /&gt;
*pytdeextensions: replacement for PyQt3 and PyKDE3, and used by apps such as tdebindings and tde-guidance&lt;br /&gt;
*python-trinity: replacement for PyQt3 and PyKDE3, and used by apps such as tdebindings and tde-guidance &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===List of Optional Dependencies by Trinity Package===&lt;br /&gt;
&lt;br /&gt;
====tdelibs====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;avahi&amp;#039;&amp;#039;&amp;#039; DNS discovery&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;avahi-tqt&amp;#039;&amp;#039;&amp;#039; Trinity TQt layer for avahi, available in Trinity libraries&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;hspell&amp;#039;&amp;#039;&amp;#039; Hebrew spell checking&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;krb5&amp;#039;&amp;#039;&amp;#039; Kerberos authentication&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;openexr&amp;#039;&amp;#039;&amp;#039; EXR image format &lt;br /&gt;
&lt;br /&gt;
====tdebase====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;avahi&amp;#039;&amp;#039;&amp;#039; DNS discovery&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;avahi-tqt&amp;#039;&amp;#039;&amp;#039; Trinity TQt layer for avahi, available in Trinity libraries&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;krb5&amp;#039;&amp;#039;&amp;#039; Kerberos authentication&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;openexr&amp;#039;&amp;#039;&amp;#039; EXR image format&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;GraphicsMagick&amp;#039;&amp;#039;&amp;#039; image filters &lt;br /&gt;
&lt;br /&gt;
====tdebindings====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Ruby&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;JRE&amp;#039;&amp;#039;&amp;#039; Java Runtime Environment&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;JDK&amp;#039;&amp;#039;&amp;#039; Java Development Kit&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Python&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;python-trinity&amp;#039;&amp;#039;&amp;#039;, available in Trinity libraries&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;pytdeextensions&amp;#039;&amp;#039;&amp;#039;, available in Trinity libraries &lt;br /&gt;
&lt;br /&gt;
====tdeutils====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;xmms&amp;#039;&amp;#039;&amp;#039; multimedia player (superkaramba) &lt;br /&gt;
&lt;br /&gt;
====tdemultimedia====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;cdparanoia&amp;#039;&amp;#039;&amp;#039; digital audio extraction tool (kaudiocreator)&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;speex&amp;#039;&amp;#039;&amp;#039; an audio compression format designed for speech &lt;br /&gt;
&lt;br /&gt;
====tdenetwork====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;xmms&amp;#039;&amp;#039;&amp;#039; multimedia player (kopete plugins)&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;ortp&amp;#039;&amp;#039;&amp;#039; real-time transport protocol stack under GPL (kopete plugins)&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;speex&amp;#039;&amp;#039;&amp;#039; audio compression format designed for speech (kopete plugins) &lt;br /&gt;
&lt;br /&gt;
====tdeedu====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;facile&amp;#039;&amp;#039;&amp;#039; functional constraint library (kalzium)&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;ocaml&amp;#039;&amp;#039;&amp;#039; A programming language (kalzium)&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;boost&amp;#039;&amp;#039;&amp;#039; boost C++ Libraries &lt;br /&gt;
&lt;br /&gt;
====tdevelop====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;graphviz&amp;#039;&amp;#039;&amp;#039; graph visualization &lt;br /&gt;
&lt;br /&gt;
====tdeaddons====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;xmms&amp;#039;&amp;#039;&amp;#039; multimedia player (kicker applets) &lt;br /&gt;
&lt;br /&gt;
====tdewebdev====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;XSLT&amp;#039;&amp;#039;&amp;#039; Extensible Stylesheet Language Transformations&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;DocBook&amp;#039;&amp;#039;&amp;#039; text markup&lt;br /&gt;
&lt;br /&gt;
====tdepim====&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;krb5&amp;#039;&amp;#039;&amp;#039; Kerberos authentication&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;ortp&amp;#039;&amp;#039;&amp;#039; real-time transport protocol stack under GPL (kopete)&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;gnokii&amp;#039;&amp;#039;&amp;#039; Nokia mobile phone support&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;opensync&amp;#039;&amp;#039;&amp;#039; data synchronization support&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libcaldav&amp;#039;&amp;#039;&amp;#039; online calendar support, available through Trinity web site (http://www.trinitydesktop.org/relatedprojects.php)&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;libcarddav&amp;#039;&amp;#039;&amp;#039; online address book support, available through Trinity web site (http://www.trinitydesktop.org/relatedprojects.php) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Quirks and Known Bugs==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Building Sip===&lt;br /&gt;
&lt;br /&gt;
Sip is available on many/most distros. Sip requires Qt3 to build, but won&amp;#039;t build on TQt3, which adds &lt;br /&gt;
the tqinterface layer to Qt3. More than likely down the road, Sip will be dumped or moved to Qt4 by distro &lt;br /&gt;
maintainers. All of the python-*-tqt-* packages need Sip to build. Build this TQt3 compatible version of Sip &lt;br /&gt;
and replace the stock Sip installed with the distro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===OpenGL and nVidia===&lt;br /&gt;
&lt;br /&gt;
Building many Trinity and related packages depend upon OpenGL, such as &lt;br /&gt;
tdegraphics, k3b, koffice, tdenetwork, gwenview, digikam, etc.; &lt;br /&gt;
&lt;br /&gt;
as well as dependency packages such as &lt;br /&gt;
libkipi, libkdcraw, libkexiv2, avahi, etc. &lt;br /&gt;
&lt;br /&gt;
If any of those packages are built when the proprietary nvidia drivers are installed, the dependent package will fail to build &lt;br /&gt;
with an error about /usr/lib/libGL.la. &lt;br /&gt;
&lt;br /&gt;
That file is installed by the proprietary nvidia package. When building for personal use only, then building those packages with nvidia installed will pose no harm. &lt;br /&gt;
&lt;br /&gt;
When building packages for other users then build the entire suite of packages in a &amp;quot;clean&amp;quot; generic OpenGL environment. &lt;br /&gt;
&lt;br /&gt;
Other users might not use the proprietary nvidia package. This is true of any package that has OpenGL dependencies.&lt;br /&gt;
&lt;br /&gt;
===Tdeartwork and xhack Screensavers===&lt;br /&gt;
&lt;br /&gt;
Before building tdeartwork, install any and all xhack screensavers that might be uses, then&lt;br /&gt;
&lt;br /&gt;
cd &amp;lt;tdeartwork&amp;gt;/kscreensaver/kxsconfig/&lt;br /&gt;
./update_hacks.sh&lt;br /&gt;
&lt;br /&gt;
This will generate the TDE bindings required to allow installed screensavers show up in the Trinity &lt;br /&gt;
screensaver control panel, along with their configuration options. When adding a new screensaver the &lt;br /&gt;
update_hacks command needs to be rerun and tdeartwork recompiled/reinstalled. Distribution maintainers should &lt;br /&gt;
install all available screensavers from their distribution and then run update_hacks during the initial build &lt;br /&gt;
setup when building redistributable binary packages (see the Debian tdeartwork build scripts in GIT for an &lt;br /&gt;
example of how to do this).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Poppler Support in Tdegraphics===&lt;br /&gt;
&lt;br /&gt;
Building tdegraphics with poppler support requires building a Trinity poppler-tqt support package. With &lt;br /&gt;
many distros poppler no longer is built with Qt3 support. The Trinity poppler-tqt provides the necessary hooks for &lt;br /&gt;
tdegraphics without rebuilding poppler. The poppler-tqt dependency sources are located in the tdegraphics/kfile-plugins &lt;br /&gt;
dependencies directory and are built automatically with the tdegraphics build option -DWITH_PDF=ON.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Tdesvn/Tdesdk svn-kio Conflict===&lt;br /&gt;
&lt;br /&gt;
tdesvn and tdesdk provide conflicting files for svn-kio services. Neither package is a dependency of the other. &lt;br /&gt;
When tdesdk or tdesvn will be installed without the other, then no change is required. When both tdesdk and tdesvn &lt;br /&gt;
are to be installed, then to avoid filesystem conflicts the following files must be removed from one of the packages &lt;br /&gt;
before installing:&lt;br /&gt;
&lt;br /&gt;
  /opt/trinity/share/services/svn+file.protocol&lt;br /&gt;
  /opt/trinity/share/services/svn+http.protocol&lt;br /&gt;
  /opt/trinity/share/services/svn+https.protocol&lt;br /&gt;
  /opt/trinity/share/services/svn+ssh.protocol&lt;br /&gt;
  /opt/trinity/share/services/svn.protocol&lt;br /&gt;
&lt;br /&gt;
Since tdesvn uses the ksvn kio exclusively, while tdesdk uses the svn kio, consider removing the conflicting files &lt;br /&gt;
from tdesdk to eliminate the same services relying on multiple kio service files.&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=TDM&amp;diff=3264</id>
		<title>TDM</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=TDM&amp;diff=3264"/>
		<updated>2023-12-18T11:27:38Z</updated>

		<summary type="html">&lt;p&gt;Blu256: fix formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;TDM&amp;#039;&amp;#039;&amp;#039; is the default graphical display manager of the Trinity Desktop Environment. It handles local and remote logins on a machine.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Remote login ==&lt;br /&gt;
Remote login can be performed via the XDMCP protocol. Due to security concerns, the XDMCP host component is disabled by default in TDM (but you can still connect to XDMCP hosts as a client).&lt;br /&gt;
&lt;br /&gt;
{{WarningBox|text=ArchWiki on the matter of [https://wiki.archlinux.org/title/XDMCP XDMCP]:&lt;br /&gt;
&amp;#039;&amp;#039;XDMCP is, similarly to telnet, doing unencrypted authentication. If snooping is possible, this leaves the system vulnerable to attack. It is disabled by default, using an ssh tunnel for X traffic is preferred.&amp;#039;&amp;#039;&lt;br /&gt;
As a matter of fact, you should only use it in a completely trusted and controlled environment.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
To be able to login into a machine remotely you should edit the &amp;lt;tt&amp;gt;tdmrc&amp;lt;/tt&amp;gt; file. Find the section titled &amp;lt;tt&amp;gt;[Xdmcp]&amp;lt;/tt&amp;gt; and set the &amp;lt;tt&amp;gt;Enable&amp;lt;/tt&amp;gt; key to &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;. Then, restart the tdm service.&lt;br /&gt;
&lt;br /&gt;
On the remote side select &amp;quot;Remote login&amp;quot; from the options menu of the TDM login screen. You should be presented with a dialog of the remote machines to which you can connect via XDMCP. If you don&amp;#039;t see the machine you want to connect to in the list, enter its IP address and press &amp;quot;Add&amp;quot;. It should appear in the list.&lt;br /&gt;
&lt;br /&gt;
By default a host might not allow remote connections despite being open for XDMCP requests. In XDMCP terminology, the host must be &amp;quot;Willing&amp;quot; to accept the remote connection. If you see &amp;quot;Display not authorized to connect&amp;quot; in the remote login dialog next to the address/hostname of the machine you want to connect to, you have to configure which hosts are allowed to connect to the machine. Follow the instructions in the &amp;lt;tt&amp;gt;Xaccess&amp;lt;/tt&amp;gt; file (it should be in the same directory as &amp;lt;tt&amp;gt;tdmrc&amp;lt;/tt&amp;gt;) to set up authorized hosts. After that, restart TDM and repeat the process.&lt;br /&gt;
&lt;br /&gt;
When you select the desired host in the remote login menu and press &amp;quot;Connect&amp;quot;, assuming the configuration is correct, you will be presented with the login screen of the host you are trying to connect to. If you see the local login screen again, then something has gone wrong. Ensure you have configured both instances of TDM according to the above instructions.&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
=== TDM&amp;#039;s file system layout ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;#039;color: darkorange&amp;#039;&amp;gt;&amp;lt;tt&amp;gt;${tde_confdir}&amp;lt;/tt&amp;gt; is usually &amp;lt;tt&amp;gt;${prefix}/share/config&amp;lt;/tt&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;#039;color: darkorange&amp;#039;&amp;gt;&amp;lt;tt&amp;gt;${tde_datadir}&amp;lt;/tt&amp;gt; is usually &amp;lt;tt&amp;gt;${prefix}/share/apps&amp;lt;/tt&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;${tde_confdir}/tdm/{tdmrc,Xservers,Xaccess,Xwilling,...}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;${tde_datadir}/tdm/sessions/*.desktop&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;/etc/X11/sessions/,/usr/share/xsessions/&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;${tde_datadir}/tdm/pics/users/&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;${tde_datadir}/tdm/pics/&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;${tde_datadir}/tdm/faces/*.face{,.icon}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;/usr/share/faces/&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;/var/run/xauth/A*&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;/var/run/xdmctl/xdmctl*&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;/var/run/tdm.pid&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;/var/lib/tdm/tdmsts&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;site-specific&amp;gt;/*.dmrc&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;$HOME/.face{,.icon}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;$HOME/.dmrc&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to setup TDM ===&lt;br /&gt;
&lt;br /&gt;
TDM&amp;#039;s config files are all located in &amp;lt;tt&amp;gt;${tde_confdir}/tdm&amp;lt;/tt&amp;gt;. &amp;quot;make install&amp;quot; will create a probably working configuration, either by deriving it from an already present TDM/XDM installation or by using defaults if no previous installation is found.&lt;br /&gt;
&lt;br /&gt;
You can change the configuration from the Trinity Control Center. You will find the &amp;quot;Login Manager&amp;quot; module in the &amp;quot;System Administration&amp;quot; group.&lt;br /&gt;
&lt;br /&gt;
Have a look at &amp;lt;tt&amp;gt;README.pam&amp;lt;/tt&amp;gt; in the &amp;lt;tt&amp;gt;tdebase&amp;lt;/tt&amp;gt; top level directory if your system uses PAM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuring session types ===&lt;br /&gt;
Session types are represented by .desktop files in appropriate locations. The format of the .desktop files is (not yet) defined in the FreeDesktop.org desktop entry spec. Differences to &amp;quot;standard&amp;quot; .desktop files are:&lt;br /&gt;
* the &amp;lt;code&amp;gt;Type&amp;lt;/code&amp;gt; is fixed to &amp;lt;tt&amp;gt;XSession&amp;lt;/tt&amp;gt; and can be omitted.&lt;br /&gt;
* the &amp;lt;code&amp;gt;Encoding&amp;lt;/code&amp;gt; is fixed to &amp;lt;tt&amp;gt;UTF-8&amp;lt;/tt&amp;gt; and can be omitted.&lt;br /&gt;
* the &amp;lt;code&amp;gt;Exec&amp;lt;/code&amp;gt; field will be passed to &amp;lt;tt&amp;gt;&amp;quot;eval exec&amp;quot;&amp;lt;/tt&amp;gt; in a bourne shell; no macro expansion is performed on it. &amp;quot;default&amp;quot;, &amp;quot;custom&amp;quot; and &amp;quot;failsafe&amp;quot; are magic constants that cause special actions.&lt;br /&gt;
* &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TryExec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Hidden&amp;lt;/code&amp;gt; are supported.&lt;br /&gt;
* the remaining keys have no meaning currently.&lt;br /&gt;
&lt;br /&gt;
Session types are internally identified by filename (without extension); that&amp;#039;s what will be saved to &amp;lt;tt&amp;gt;~/.dmrc&amp;lt;/tt&amp;gt; and what DESKTOP_SESSION will be set to. For every magic &amp;lt;code&amp;gt;Exec&amp;lt;/code&amp;gt; constant a session type of the same name exists.&lt;br /&gt;
&lt;br /&gt;
Unless your system is configured differently already, you should create a directory &amp;lt;tt&amp;gt;${tde_confdir}/tdm/sessions&amp;lt;/tt&amp;gt; and add this to &amp;lt;tt&amp;gt;tdmrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[X-*-Core]&lt;br /&gt;
SessionsDirs=${tde_confdir}/tdm/sessions,${tde_datadir}/tdm/sessions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{WarningBox|text=Always keep in mind the following:&lt;br /&gt;
* You must use actual paths instead of variables, see the section about TDM&amp;#039;s file system layout.&lt;br /&gt;
* Do any changes only in the config directory - any changes in the data directory will be lost after the next TDE update.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To override a session type, copy the .desktop file from the data directory to the config directory and edit it at will. Removing the shipped session types can be accomplished by &amp;quot;shadowing&amp;quot; them with .desktop files containing &amp;lt;code&amp;gt;Hidden=true&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For the magic session types no .desktop files exist by default, but TDM pretends they would, so you can override them like any other type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The command sockets ===&lt;br /&gt;
This is a feature you can use to remote-control TDM. It&amp;#039;s mostly intended for use by ksmserver and kdesktop from a running session, but other applications are possible as well.&lt;br /&gt;
&lt;br /&gt;
The sockets are UNIX domain sockets which live in subdirectories of the directory specified by &amp;lt;code&amp;gt;FifoDir=&amp;lt;/code&amp;gt;. The subdir is the key to addressing and security; the sockets all have the file name &amp;quot;socket&amp;quot; and file permissions &amp;lt;tt&amp;gt;rw-rw-rw-&amp;lt;/tt&amp;gt; (0666). This is because some systems don&amp;#039;t care for the file permissions of the socket files.&lt;br /&gt;
&lt;br /&gt;
There are two types of sockets: the global one (&amp;lt;tt&amp;gt;dmctl&amp;lt;/tt&amp;gt;) and the per-display ones (&amp;lt;tt&amp;gt;dmctl-&amp;lt;display&amp;gt;&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The global one&amp;#039;s subdir is owned by root, the subdirs of the per-display ones&amp;#039; are owned by the user currently owning the session (root or the logged in user). Group ownership of the subdirs can be set via &amp;lt;code&amp;gt;FifoGroup=&amp;lt;/code&amp;gt;, otherwise it&amp;#039;s root. The file permissions of the subdirs are &amp;lt;tt&amp;gt;rwxr-x---&amp;lt;/tt&amp;gt; (0750).&lt;br /&gt;
&lt;br /&gt;
The fields of a command are separated by tabs (\t), the fields of a list are separated by spaces, literal spaces in list fields are denoted by &amp;quot;&amp;lt;tt&amp;gt;\s&amp;lt;/tt&amp;gt;&amp;quot;. The command is terminated by a newline (&amp;lt;tt&amp;gt;\n&amp;lt;/tt&amp;gt;). The same applies to replies. The reply on success is &amp;quot;&amp;lt;tt&amp;gt;ok&amp;lt;/tt&amp;gt;&amp;quot;, possibly followed by the requested information. The reply on error is an errno-style word (e.g., &amp;quot;&amp;lt;tt&amp;gt;perm&amp;lt;/tt&amp;gt;&amp;quot;, &amp;quot;&amp;lt;tt&amp;gt;noent&amp;lt;/tt&amp;gt;&amp;quot;, etc.) followed by a longer explanation.&lt;br /&gt;
&lt;br /&gt;
==== Global commands ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;login {display} (&amp;quot;now&amp;quot;|&amp;quot;schedule&amp;quot;) {user} {password} [session_arguments]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Login user at specified display. if &amp;quot;now&amp;quot; is specified, a possibly running session is killed, otherwise the login is done after the session exits.&lt;br /&gt;
&amp;lt;tt&amp;gt;session_arguments&amp;lt;/tt&amp;gt; are printf-like escaped contents for &amp;lt;tt&amp;gt;.dmrc&amp;lt;/tt&amp;gt;. Unlisted keys will default to previously saved values.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Per-display commands ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;lock&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| The display is marked as locked. If the X-Server crashes in this state, no auto-relogin will be performed even if the option is on.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;unlock&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Reverse the effect of &amp;quot;lock&amp;quot;: re-enable auto-relogin.&lt;br /&gt;
|-&lt;br /&gt;
|  &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;suicide&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| The currently running session is forcibly terminated. No auto-relogin is attempted, but a scheduled &amp;quot;login&amp;quot; command will be executed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Commands for all sockets ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;caps&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Returns a list this socket&amp;#039;s capabilities:&lt;br /&gt;
 {|&lt;br /&gt;
|&amp;lt;code&amp;gt;tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| identifies tdm, in case some other DM implements this protocol, too&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;activate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lock&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;suicide&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;login&amp;lt;/code&amp;gt;&lt;br /&gt;
| whether the respective command is supported&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bootoptions&amp;lt;/code&amp;gt;&lt;br /&gt;
| whether the &amp;lt;tt&amp;gt;listbootoptions&amp;lt;/tt&amp;gt; command and the &amp;quot;=&amp;quot; option to &amp;quot;&amp;lt;tt&amp;gt;shutdown&amp;lt;/tt&amp;gt;&amp;quot; are supported&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;shutdown {list}&amp;lt;/code&amp;gt;&lt;br /&gt;
| whether &amp;quot;shutdown&amp;quot; is supported and allowed to the listed users (comma-separated), &amp;quot;*&amp;quot; means all authenticated users&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;shutdown&amp;lt;/code&amp;gt;&lt;br /&gt;
| whether &amp;quot;shutdown&amp;quot; is supported and allowed to everybody&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;nuke {list}&amp;lt;/code&amp;gt;&lt;br /&gt;
| whether forced shutdown is allowed to the listed users&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;nuke&amp;lt;/code&amp;gt;&lt;br /&gt;
| whether forced shutdown is allowed to everybody&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;reserve {number}&amp;lt;/code&amp;gt;&lt;br /&gt;
| whether reserve displays are configured and &amp;lt;number&amp;gt; are available at this time&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;list [all|alllocal]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Return a list of running sessions. By default all active sessions are listed.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;&amp;lt;tt&amp;gt;all&amp;lt;/tt&amp;gt;&amp;quot; is specified, passive sessions are listed as well.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;&amp;lt;tt&amp;gt;alllocal&amp;lt;/tt&amp;gt;&amp;quot; is specified, passive sessions are listed as well, but all incoming remote sessions are skipped.&lt;br /&gt;
&lt;br /&gt;
Each session entry is a comma-separated tuple of:&lt;br /&gt;
* Display or TTY name&lt;br /&gt;
* VT name for local sessions&lt;br /&gt;
* Logged in user&amp;#039;s name, empty for passive sessions and outgoing remote sessions (local chooser mode)&lt;br /&gt;
* Session type or remote host for outgoing remote sessions, empty for passive sessions&lt;br /&gt;
* A flag field:&lt;br /&gt;
** &amp;quot;t&amp;quot; for tty sessions&lt;br /&gt;
** &amp;quot;*&amp;quot; for the display belonging to the requesting socket&lt;br /&gt;
** &amp;quot;!&amp;quot; for sessions that cannot be killed by the requesting socket&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;reserve [timeout in seconds]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Start a reserve login screen. If nobody logs in within the specified amount of time (one minute by default), the display is removed again. When the session on the display exits, the display is removed, too.&lt;br /&gt;
Permitted only on sockets of local displays and the global socket.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;activate (vt|display)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Switch to a particular VT (virtual terminal). The VT may be specified either directly (e.g., vt3) or by a display using it (e.g., :2).&lt;br /&gt;
Permitted only on sockets of local displays and the global socket.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;listbootoptions&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| List available boot options.&lt;br /&gt;
 =&amp;gt; &amp;quot;ok&amp;quot; list default current&lt;br /&gt;
*default and current are indices into the list and are -1 if unset or undeterminable.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shutdown (reboot|halt)[={bootchoice}] (ask|trynow|forcenow|schedule|start (-1|end (force|forcemy|cancel)))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Request a system shutdown, either a reboot or a halt/poweroff.&lt;br /&gt;
An OS choice for the next boot may be specified from the list returned by &amp;quot;listbootoptions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Shutdowns requested from per-display sockets are executed when the current session on that display exits. Such a request may pop up a dialog asking for confirmation and/or authentication.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;start&amp;lt;/tt&amp;gt; is the time for which the shutdown is scheduled. If it starts with a plus-sign, the current time is added. Zero means immediately.&lt;br /&gt;
* &amp;lt;tt&amp;gt;end&amp;lt;/tt&amp;gt; is the latest time at which the shutdown should be performed if active sessions are still running. If it starts with a plus-sign, the start time is added. Minus one means wait infinitely. If end is through and active sessions are still running, TDM can do one of the following:&lt;br /&gt;
** &amp;lt;tt&amp;gt;cancel&amp;lt;/tt&amp;gt; - give up the shutdown.&lt;br /&gt;
** &amp;lt;tt&amp;gt;force&amp;lt;/tt&amp;gt; - shut down nonetheless.&lt;br /&gt;
** &amp;lt;tt&amp;gt;forcemy&amp;lt;/tt&amp;gt; - shut down nonetheless if all active sessions belong to the requesting user. Only for per-display sockets.&lt;br /&gt;
* &amp;lt;tt&amp;gt;trynow&amp;lt;/tt&amp;gt; is a synonym for &amp;quot;0 0 cancel&amp;quot;, &amp;lt;tt&amp;gt;forcenow&amp;lt;/tt&amp;gt; for &amp;quot;0 0 force&amp;quot; and &amp;lt;tt&amp;gt;schedule&amp;lt;/tt&amp;gt; for &amp;quot;0 -1&amp;quot;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;ask&amp;lt;/tt&amp;gt; attempts an immediate shutdown and interacts with the user if active sessions are still running. Only for per-display sockets.&lt;br /&gt;
* &amp;lt;tt&amp;gt;start&amp;lt;/tt&amp;gt; and end are specified in seconds since the UNIX epoch.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shutdown cancel [local|global]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Cancel a scheduled shutdown. The global socket always cancels the currently pending shutdown, while per-display sockets default to cancelling their queued request.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shutdown status&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Return a list with information about shutdowns.&lt;br /&gt;
The entries are comma-separated tuples of:&lt;br /&gt;
* (&amp;quot;global&amp;quot;|&amp;quot;local&amp;quot;) - pending vs. queued shutdown. A local entry can be returned only by a per-display socket.&lt;br /&gt;
* (&amp;quot;halt&amp;quot;|&amp;quot;reboot&amp;quot;)&lt;br /&gt;
* start&lt;br /&gt;
* end&lt;br /&gt;
* (&amp;quot;ask&amp;quot;|&amp;quot;force&amp;quot;|&amp;quot;forcemy&amp;quot;|&amp;quot;cancel&amp;quot;)&lt;br /&gt;
* Numeric user ID of the requesting user, -1 for the global socket.&lt;br /&gt;
* The next boot OS choice or &amp;quot;-&amp;quot; for none.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are two ways of using the sockets:&lt;br /&gt;
* Connecting them directly. FifoDir is exported as $DM_CONTROL; the name of per-display sockets can be derived from $DISPLAY.&lt;br /&gt;
* By using the &amp;lt;tt&amp;gt;tdmctl&amp;lt;/tt&amp;gt; command (e.g., from within a shell script). Try &amp;quot;&amp;lt;tt&amp;gt;tdmctl -h&amp;lt;/tt&amp;gt;&amp;quot; to find out more.&lt;br /&gt;
&lt;br /&gt;
Here is an example bash script &amp;quot;reboot into FreeBSD&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
if tdmctl | grep -q shutdown; then&lt;br /&gt;
  IFS=$&amp;#039;\t&amp;#039;&lt;br /&gt;
  set -- `tdmctl listbootoptions`&lt;br /&gt;
  if [ &amp;quot;$1&amp;quot; = ok ]; then&lt;br /&gt;
    fbsd=$(echo &amp;quot;$2&amp;quot; | tr &amp;#039; &amp;#039; &amp;#039;\n&amp;#039; | sed -ne &amp;#039;s,\\s, ,g;/freebsd/I{p;q}&amp;#039;)&lt;br /&gt;
    if [ -n &amp;quot;$fbsd&amp;quot; ]; then&lt;br /&gt;
      tdmctl shutdown reboot &amp;quot;=$fbsd&amp;quot; ask &amp;gt; /dev/null&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;FreeBSD boot unavailable.&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;Boot options unavailable.&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
else&lt;br /&gt;
  echo &amp;quot;Cannot reboot system.&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
TDM accepts two command line options related to logging:&lt;br /&gt;
&lt;br /&gt;
  -debug &amp;lt;n&amp;gt;&lt;br /&gt;
    &amp;lt;n&amp;gt; is a decimal or hexadecimal (prefix 0x) number.&lt;br /&gt;
    The number is a bitfield, i.e., it is formed by summing up the&lt;br /&gt;
    required values from this table:&lt;br /&gt;
    1 (0x1) - core debugging. Probably the most useful one.&lt;br /&gt;
    2 (0x2) - config reader debugging.&lt;br /&gt;
    4 (0x4) - greeter debugging.&lt;br /&gt;
    8 (0x8) - IPC debugging. This logs _all_ communication between the&lt;br /&gt;
	      core, the config reader and the greeter - including the&lt;br /&gt;
	      passwords you type, so edit the log before showing it to&lt;br /&gt;
	      somebody.&lt;br /&gt;
	      This attempts to synchronize the processes to interleave the&lt;br /&gt;
	      log messages optimally, but will probably fail unless you use&lt;br /&gt;
	      -debug 0x80 as well.&lt;br /&gt;
    16 (0x10) - wait after forking session sub-daemon.&lt;br /&gt;
    32 (0x20) - wait after starting config reader.&lt;br /&gt;
    64 (0x40) - wait after starting greeter.&lt;br /&gt;
	The wait options are only useful if you need to attach a debugger&lt;br /&gt;
	to a process, but it crashes before you are able to do so without&lt;br /&gt;
	the delay. See below.&lt;br /&gt;
    128 (0x80) - don&amp;#039;t use syslog for internally generated messages.&lt;br /&gt;
    256 (0x100) - core Xauth debugging.&lt;br /&gt;
    1024 (0x400) - run config reader and greeter through valgrind.&lt;br /&gt;
    2048 (0x800) - run config reader and greeter through strace.&lt;br /&gt;
&lt;br /&gt;
Logs from &amp;quot;-debug 7&amp;quot; are usually a good start.&lt;br /&gt;
&lt;br /&gt;
  -error &amp;lt;file&amp;gt;, -logfile &amp;lt;file&amp;gt;&lt;br /&gt;
    &amp;lt;file&amp;gt; is the file to log various messages to. The default log file is&lt;br /&gt;
    /var/log/tdm.log. For internal reasons there is no option in tdmrc to&lt;br /&gt;
    permanently specify the log file location. If you redirect TDM&amp;#039;s&lt;br /&gt;
    standard error output to a file, TDM will log there.&lt;br /&gt;
    If TDM is configured to use syslog (and it _very_ probably is on any&lt;br /&gt;
    modern system), all internally generated messages are logged to the&lt;br /&gt;
    &amp;quot;daemon&amp;quot; facility. The log usually can be found in /var/log/debug.log&lt;br /&gt;
    and /var/log/daemon.log; make sure that daemon.* is logged (look at&lt;br /&gt;
    /etc/syslog.conf).&lt;br /&gt;
    If you have problems logging in and your system uses PAM (also quite&lt;br /&gt;
    probable on modern systems), the &amp;quot;auth&amp;quot; and &amp;quot;authpriv&amp;quot; syslog facilities&lt;br /&gt;
    are interesting, too.&lt;br /&gt;
&lt;br /&gt;
When reporting bugs, send all the logs together with a detailed description of what you did and what happened. If your problem is related to a specific configuration, you should also attach a tar.gz archive of your TDM config directory.&lt;br /&gt;
&lt;br /&gt;
=== Producing a backtrace ===&lt;br /&gt;
If a backtrace is requested from you and TDM didn&amp;#039;t create one yet via the usual drkonqi procedure, you&amp;#039;ll have to do that yourself. The keyphrase is &amp;quot;attaching gdb&amp;quot;. How exactly this is done depends on the part that crashes:&lt;br /&gt;
&lt;br /&gt;
==== Attaching gdb to the process ====&lt;br /&gt;
===== Master daemon =====&lt;br /&gt;
Actually you should never need to attach to it, as you can start it within the debugger already:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# gdb --args tdm -nodaemon -debug 7&lt;br /&gt;
(gdb) run&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Display subdaemon =====&lt;br /&gt;
Find (using ps) the process with a name like &amp;quot;-:0&amp;quot; (where :0 is actually the display this process is for). This process&amp;#039; PPID is the master daemon. Attach to it this way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# gdb tdm &amp;lt;the PID you found&amp;gt;&lt;br /&gt;
(gdb) cont&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the subdaemon crashes before you can attach, add 16 to the debug flags when you start TDM.&lt;br /&gt;
&lt;br /&gt;
===== Config reader =====&lt;br /&gt;
You will have to add 32 to the debug flags almost certainly. The PPID will be the master daemon as well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# gdb tdm_config $(pidof tdm_config)&lt;br /&gt;
(gdb) cont&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Greeter =====&lt;br /&gt;
If it&amp;#039;s too fast, add 64 to -debug. The PPID will be the subdaemon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# gdb tdm_greet $(pidof tdm_greet)&lt;br /&gt;
(gdb) cont&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The simplification with &amp;quot;pidof&amp;quot; works only if you have only one display, otherwise you have to find the PID manually (by using ps -fx).&lt;br /&gt;
&lt;br /&gt;
==== Reproduce crash and create backtrace ====&lt;br /&gt;
Once you got gdb attached to the offending process, do whatever is needed to make it crash (probably nothing, if you had to use a delay parameter).&lt;br /&gt;
&lt;br /&gt;
Once it crashed, gdb will tell you a signal name, like SIGSEGV - that&amp;#039;s the first interesting part. Then you have to create the actual backtrace:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
(gdb) bt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output of this command is interesting for the developer, so a backtrace might be useful even if nothing crashes, but instead hangs. In this case don&amp;#039;t use &amp;quot;cont&amp;quot; after attaching, but use &amp;quot;bt&amp;quot; right away. If the process is already running, interrupt it with ctrl-c.&lt;br /&gt;
&lt;br /&gt;
For obvious reasons you have to run gdb on a different virtual terminal than the X server. To get there, press alt-ctrl-f1 and log in as root. To switch to the X server&amp;#039;s vt, press alt-ctrl-f7 (the exact function key may be different on your system). You may also use a remote login from a second machine. In any case it is advantageous to have mouse support on the debugging console for copying the backtrace.&lt;br /&gt;
&lt;br /&gt;
Note that a backtrace is usually much more useful if the binary contains debugging info.&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=TDM&amp;diff=3263</id>
		<title>TDM</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=TDM&amp;diff=3263"/>
		<updated>2023-12-18T11:26:19Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Add page about TDM (Remote login via XDMCP + some technical info from the README file)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;TDM&amp;#039;&amp;#039; is the default graphical display manager of the Trinity Desktop Environment. It handles local and remote logins on a machine.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Remote login ==&lt;br /&gt;
Remote login can be performed via the XDMCP protocol. Due to security concerns, the XDMCP host component is disabled by default in TDM (but you can still connect to XDMCP hosts as a client).&lt;br /&gt;
&lt;br /&gt;
{{WarningBox|text=ArchWiki on the matter of [https://wiki.archlinux.org/title/XDMCP XDMCP]:&lt;br /&gt;
&amp;#039;&amp;#039;XDMCP is, similarly to telnet, doing unencrypted authentication. If snooping is possible, this leaves the system vulnerable to attack. It is disabled by default, using an ssh tunnel for X traffic is preferred.&amp;#039;&amp;#039;&lt;br /&gt;
As a matter of fact, you should only use it in a completely trusted and controlled environment.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
To be able to login into a machine remotely you should edit the &amp;lt;tt&amp;gt;tdmrc&amp;lt;/tt&amp;gt; file. Find the section titled &amp;lt;tt&amp;gt;[Xdmcp]&amp;lt;/tt&amp;gt; and set the &amp;lt;tt&amp;gt;Enable&amp;lt;/tt&amp;gt; key to &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt;. Then, restart the tdm service.&lt;br /&gt;
&lt;br /&gt;
On the remote side select &amp;quot;Remote login&amp;quot; from the options menu of the TDM login screen. You should be presented with a dialog of the remote machines to which you can connect via XDMCP. If you don&amp;#039;t see the machine you want to connect to in the list, enter its IP address and press &amp;quot;Add&amp;quot;. It should appear in the list.&lt;br /&gt;
&lt;br /&gt;
By default a host might not allow remote connections despite being open for XDMCP requests. In XDMCP terminology, the host must be &amp;quot;Willing&amp;quot; to accept the remote connection. If you see &amp;quot;Display not authorized to connect&amp;quot; in the remote login dialog next to the address/hostname of the machine you want to connect to, you have to configure which hosts are allowed to connect to the machine. Follow the instructions in the &amp;lt;tt&amp;gt;Xaccess&amp;lt;/tt&amp;gt; file (it should be in the same directory as &amp;lt;tt&amp;gt;tdmrc&amp;lt;/tt&amp;gt;) to set up authorized hosts. After that, restart TDM and repeat the process.&lt;br /&gt;
&lt;br /&gt;
When you select the desired host in the remote login menu and press &amp;quot;Connect&amp;quot;, assuming the configuration is correct, you will be presented with the login screen of the host you are trying to connect to. If you see the local login screen again, then something has gone wrong. Ensure you have configured both instances of TDM according to the above instructions.&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
&lt;br /&gt;
=== TDM&amp;#039;s file system layout ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&amp;#039;color: darkorange&amp;#039;&amp;gt;&amp;lt;tt&amp;gt;${tde_confdir}&amp;lt;/tt&amp;gt; is usually &amp;lt;tt&amp;gt;${prefix}/share/config&amp;lt;/tt&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;#039;color: darkorange&amp;#039;&amp;gt;&amp;lt;tt&amp;gt;${tde_datadir}&amp;lt;/tt&amp;gt; is usually &amp;lt;tt&amp;gt;${prefix}/share/apps&amp;lt;/tt&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;${tde_confdir}/tdm/{tdmrc,Xservers,Xaccess,Xwilling,...}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;${tde_datadir}/tdm/sessions/*.desktop&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;/etc/X11/sessions/,/usr/share/xsessions/&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;${tde_datadir}/tdm/pics/users/&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;${tde_datadir}/tdm/pics/&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;${tde_datadir}/tdm/faces/*.face{,.icon}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;/usr/share/faces/&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;/var/run/xauth/A*&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;/var/run/xdmctl/xdmctl*&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;/var/run/tdm.pid&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;/var/lib/tdm/tdmsts&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;site-specific&amp;gt;/*.dmrc&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;$HOME/.face{,.icon}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;$HOME/.dmrc&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to setup TDM ===&lt;br /&gt;
&lt;br /&gt;
TDM&amp;#039;s config files are all located in &amp;lt;tt&amp;gt;${tde_confdir}/tdm&amp;lt;/tt&amp;gt;. &amp;quot;make install&amp;quot; will create a probably working configuration, either by deriving it from an already present TDM/XDM installation or by using defaults if no previous installation is found.&lt;br /&gt;
&lt;br /&gt;
You can change the configuration from the Trinity Control Center. You will find the &amp;quot;Login Manager&amp;quot; module in the &amp;quot;System Administration&amp;quot; group.&lt;br /&gt;
&lt;br /&gt;
Have a look at &amp;lt;tt&amp;gt;README.pam&amp;lt;/tt&amp;gt; in the &amp;lt;tt&amp;gt;tdebase&amp;lt;/tt&amp;gt; top level directory if your system uses PAM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuring session types ===&lt;br /&gt;
Session types are represented by .desktop files in appropriate locations. The format of the .desktop files is (not yet) defined in the FreeDesktop.org desktop entry spec. Differences to &amp;quot;standard&amp;quot; .desktop files are:&lt;br /&gt;
* the &amp;lt;code&amp;gt;Type&amp;lt;/code&amp;gt; is fixed to &amp;lt;tt&amp;gt;XSession&amp;lt;/tt&amp;gt; and can be omitted.&lt;br /&gt;
* the &amp;lt;code&amp;gt;Encoding&amp;lt;/code&amp;gt; is fixed to &amp;lt;tt&amp;gt;UTF-8&amp;lt;/tt&amp;gt; and can be omitted.&lt;br /&gt;
* the &amp;lt;code&amp;gt;Exec&amp;lt;/code&amp;gt; field will be passed to &amp;lt;tt&amp;gt;&amp;quot;eval exec&amp;quot;&amp;lt;/tt&amp;gt; in a bourne shell; no macro expansion is performed on it. &amp;quot;default&amp;quot;, &amp;quot;custom&amp;quot; and &amp;quot;failsafe&amp;quot; are magic constants that cause special actions.&lt;br /&gt;
* &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Comment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TryExec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Hidden&amp;lt;/code&amp;gt; are supported.&lt;br /&gt;
* the remaining keys have no meaning currently.&lt;br /&gt;
&lt;br /&gt;
Session types are internally identified by filename (without extension); that&amp;#039;s what will be saved to &amp;lt;tt&amp;gt;~/.dmrc&amp;lt;/tt&amp;gt; and what DESKTOP_SESSION will be set to. For every magic &amp;lt;code&amp;gt;Exec&amp;lt;/code&amp;gt; constant a session type of the same name exists.&lt;br /&gt;
&lt;br /&gt;
Unless your system is configured differently already, you should create a directory &amp;lt;tt&amp;gt;${tde_confdir}/tdm/sessions&amp;lt;/tt&amp;gt; and add this to &amp;lt;tt&amp;gt;tdmrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[X-*-Core]&lt;br /&gt;
SessionsDirs=${tde_confdir}/tdm/sessions,${tde_datadir}/tdm/sessions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{WarningBox|text=Always keep in mind the following:&lt;br /&gt;
* You must use actual paths instead of variables, see the section about TDM&amp;#039;s file system layout.&lt;br /&gt;
* Do any changes only in the config directory - any changes in the data directory will be lost after the next TDE update.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To override a session type, copy the .desktop file from the data directory to the config directory and edit it at will. Removing the shipped session types can be accomplished by &amp;quot;shadowing&amp;quot; them with .desktop files containing &amp;lt;code&amp;gt;Hidden=true&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For the magic session types no .desktop files exist by default, but TDM pretends they would, so you can override them like any other type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The command sockets ===&lt;br /&gt;
This is a feature you can use to remote-control TDM. It&amp;#039;s mostly intended for use by ksmserver and kdesktop from a running session, but other applications are possible as well.&lt;br /&gt;
&lt;br /&gt;
The sockets are UNIX domain sockets which live in subdirectories of the directory specified by &amp;lt;code&amp;gt;FifoDir=&amp;lt;/code&amp;gt;. The subdir is the key to addressing and security; the sockets all have the file name &amp;quot;socket&amp;quot; and file permissions &amp;lt;tt&amp;gt;rw-rw-rw-&amp;lt;/tt&amp;gt; (0666). This is because some systems don&amp;#039;t care for the file permissions of the socket files.&lt;br /&gt;
&lt;br /&gt;
There are two types of sockets: the global one (&amp;lt;tt&amp;gt;dmctl&amp;lt;/tt&amp;gt;) and the per-display ones (&amp;lt;tt&amp;gt;dmctl-&amp;lt;display&amp;gt;&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The global one&amp;#039;s subdir is owned by root, the subdirs of the per-display ones&amp;#039; are owned by the user currently owning the session (root or the logged in user). Group ownership of the subdirs can be set via &amp;lt;code&amp;gt;FifoGroup=&amp;lt;/code&amp;gt;, otherwise it&amp;#039;s root. The file permissions of the subdirs are &amp;lt;tt&amp;gt;rwxr-x---&amp;lt;/tt&amp;gt; (0750).&lt;br /&gt;
&lt;br /&gt;
The fields of a command are separated by tabs (\t), the fields of a list are separated by spaces, literal spaces in list fields are denoted by &amp;quot;&amp;lt;tt&amp;gt;\s&amp;lt;/tt&amp;gt;&amp;quot;. The command is terminated by a newline (&amp;lt;tt&amp;gt;\n&amp;lt;/tt&amp;gt;). The same applies to replies. The reply on success is &amp;quot;&amp;lt;tt&amp;gt;ok&amp;lt;/tt&amp;gt;&amp;quot;, possibly followed by the requested information. The reply on error is an errno-style word (e.g., &amp;quot;&amp;lt;tt&amp;gt;perm&amp;lt;/tt&amp;gt;&amp;quot;, &amp;quot;&amp;lt;tt&amp;gt;noent&amp;lt;/tt&amp;gt;&amp;quot;, etc.) followed by a longer explanation.&lt;br /&gt;
&lt;br /&gt;
==== Global commands ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;login {display} (&amp;quot;now&amp;quot;|&amp;quot;schedule&amp;quot;) {user} {password} [session_arguments]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Login user at specified display. if &amp;quot;now&amp;quot; is specified, a possibly running session is killed, otherwise the login is done after the session exits.&lt;br /&gt;
&amp;lt;tt&amp;gt;session_arguments&amp;lt;/tt&amp;gt; are printf-like escaped contents for &amp;lt;tt&amp;gt;.dmrc&amp;lt;/tt&amp;gt;. Unlisted keys will default to previously saved values.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Per-display commands ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;lock&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| The display is marked as locked. If the X-Server crashes in this state, no auto-relogin will be performed even if the option is on.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;unlock&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Reverse the effect of &amp;quot;lock&amp;quot;: re-enable auto-relogin.&lt;br /&gt;
|-&lt;br /&gt;
|  &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;suicide&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| The currently running session is forcibly terminated. No auto-relogin is attempted, but a scheduled &amp;quot;login&amp;quot; command will be executed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Commands for all sockets ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;caps&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Returns a list this socket&amp;#039;s capabilities:&lt;br /&gt;
 {|&lt;br /&gt;
|&amp;lt;code&amp;gt;tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| identifies tdm, in case some other DM implements this protocol, too&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;activate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lock&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;suicide&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;login&amp;lt;/code&amp;gt;&lt;br /&gt;
| whether the respective command is supported&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bootoptions&amp;lt;/code&amp;gt;&lt;br /&gt;
| whether the &amp;lt;tt&amp;gt;listbootoptions&amp;lt;/tt&amp;gt; command and the &amp;quot;=&amp;quot; option to &amp;quot;&amp;lt;tt&amp;gt;shutdown&amp;lt;/tt&amp;gt;&amp;quot; are supported&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;shutdown {list}&amp;lt;/code&amp;gt;&lt;br /&gt;
| whether &amp;quot;shutdown&amp;quot; is supported and allowed to the listed users (comma-separated), &amp;quot;*&amp;quot; means all authenticated users&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;shutdown&amp;lt;/code&amp;gt;&lt;br /&gt;
| whether &amp;quot;shutdown&amp;quot; is supported and allowed to everybody&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;nuke {list}&amp;lt;/code&amp;gt;&lt;br /&gt;
| whether forced shutdown is allowed to the listed users&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;nuke&amp;lt;/code&amp;gt;&lt;br /&gt;
| whether forced shutdown is allowed to everybody&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;reserve {number}&amp;lt;/code&amp;gt;&lt;br /&gt;
| whether reserve displays are configured and &amp;lt;number&amp;gt; are available at this time&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;list [all|alllocal]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Return a list of running sessions. By default all active sessions are listed.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;&amp;lt;tt&amp;gt;all&amp;lt;/tt&amp;gt;&amp;quot; is specified, passive sessions are listed as well.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;&amp;lt;tt&amp;gt;alllocal&amp;lt;/tt&amp;gt;&amp;quot; is specified, passive sessions are listed as well, but all incoming remote sessions are skipped.&lt;br /&gt;
&lt;br /&gt;
Each session entry is a comma-separated tuple of:&lt;br /&gt;
* Display or TTY name&lt;br /&gt;
* VT name for local sessions&lt;br /&gt;
* Logged in user&amp;#039;s name, empty for passive sessions and outgoing remote sessions (local chooser mode)&lt;br /&gt;
* Session type or remote host for outgoing remote sessions, empty for passive sessions&lt;br /&gt;
* A flag field:&lt;br /&gt;
** &amp;quot;t&amp;quot; for tty sessions&lt;br /&gt;
** &amp;quot;*&amp;quot; for the display belonging to the requesting socket&lt;br /&gt;
** &amp;quot;!&amp;quot; for sessions that cannot be killed by the requesting socket&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;reserve [timeout in seconds]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Start a reserve login screen. If nobody logs in within the specified amount of time (one minute by default), the display is removed again. When the session on the display exits, the display is removed, too.&lt;br /&gt;
Permitted only on sockets of local displays and the global socket.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;activate (vt|display)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Switch to a particular VT (virtual terminal). The VT may be specified either directly (e.g., vt3) or by a display using it (e.g., :2).&lt;br /&gt;
Permitted only on sockets of local displays and the global socket.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;listbootoptions&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| List available boot options.&lt;br /&gt;
 =&amp;gt; &amp;quot;ok&amp;quot; list default current&lt;br /&gt;
*default and current are indices into the list and are -1 if unset or undeterminable.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shutdown (reboot|halt)[={bootchoice}] (ask|trynow|forcenow|schedule|start (-1|end (force|forcemy|cancel)))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Request a system shutdown, either a reboot or a halt/poweroff.&lt;br /&gt;
An OS choice for the next boot may be specified from the list returned by &amp;quot;listbootoptions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Shutdowns requested from per-display sockets are executed when the current session on that display exits. Such a request may pop up a dialog asking for confirmation and/or authentication.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;start&amp;lt;/tt&amp;gt; is the time for which the shutdown is scheduled. If it starts with a plus-sign, the current time is added. Zero means immediately.&lt;br /&gt;
* &amp;lt;tt&amp;gt;end&amp;lt;/tt&amp;gt; is the latest time at which the shutdown should be performed if active sessions are still running. If it starts with a plus-sign, the start time is added. Minus one means wait infinitely. If end is through and active sessions are still running, TDM can do one of the following:&lt;br /&gt;
** &amp;lt;tt&amp;gt;cancel&amp;lt;/tt&amp;gt; - give up the shutdown.&lt;br /&gt;
** &amp;lt;tt&amp;gt;force&amp;lt;/tt&amp;gt; - shut down nonetheless.&lt;br /&gt;
** &amp;lt;tt&amp;gt;forcemy&amp;lt;/tt&amp;gt; - shut down nonetheless if all active sessions belong to the requesting user. Only for per-display sockets.&lt;br /&gt;
* &amp;lt;tt&amp;gt;trynow&amp;lt;/tt&amp;gt; is a synonym for &amp;quot;0 0 cancel&amp;quot;, &amp;lt;tt&amp;gt;forcenow&amp;lt;/tt&amp;gt; for &amp;quot;0 0 force&amp;quot; and &amp;lt;tt&amp;gt;schedule&amp;lt;/tt&amp;gt; for &amp;quot;0 -1&amp;quot;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;ask&amp;lt;/tt&amp;gt; attempts an immediate shutdown and interacts with the user if active sessions are still running. Only for per-display sockets.&lt;br /&gt;
* &amp;lt;tt&amp;gt;start&amp;lt;/tt&amp;gt; and end are specified in seconds since the UNIX epoch.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shutdown cancel [local|global]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Cancel a scheduled shutdown. The global socket always cancels the currently pending shutdown, while per-display sockets default to cancelling their queued request.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shutdown status&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| Return a list with information about shutdowns.&lt;br /&gt;
The entries are comma-separated tuples of:&lt;br /&gt;
* (&amp;quot;global&amp;quot;|&amp;quot;local&amp;quot;) - pending vs. queued shutdown. A local entry can be returned only by a per-display socket.&lt;br /&gt;
* (&amp;quot;halt&amp;quot;|&amp;quot;reboot&amp;quot;)&lt;br /&gt;
* start&lt;br /&gt;
* end&lt;br /&gt;
* (&amp;quot;ask&amp;quot;|&amp;quot;force&amp;quot;|&amp;quot;forcemy&amp;quot;|&amp;quot;cancel&amp;quot;)&lt;br /&gt;
* Numeric user ID of the requesting user, -1 for the global socket.&lt;br /&gt;
* The next boot OS choice or &amp;quot;-&amp;quot; for none.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are two ways of using the sockets:&lt;br /&gt;
* Connecting them directly. FifoDir is exported as $DM_CONTROL; the name of per-display sockets can be derived from $DISPLAY.&lt;br /&gt;
* By using the &amp;lt;tt&amp;gt;tdmctl&amp;lt;/tt&amp;gt; command (e.g., from within a shell script). Try &amp;quot;&amp;lt;tt&amp;gt;tdmctl -h&amp;lt;/tt&amp;gt;&amp;quot; to find out more.&lt;br /&gt;
&lt;br /&gt;
Here is an example bash script &amp;quot;reboot into FreeBSD&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
if tdmctl | grep -q shutdown; then&lt;br /&gt;
  IFS=$&amp;#039;\t&amp;#039;&lt;br /&gt;
  set -- `tdmctl listbootoptions`&lt;br /&gt;
  if [ &amp;quot;$1&amp;quot; = ok ]; then&lt;br /&gt;
    fbsd=$(echo &amp;quot;$2&amp;quot; | tr &amp;#039; &amp;#039; &amp;#039;\n&amp;#039; | sed -ne &amp;#039;s,\\s, ,g;/freebsd/I{p;q}&amp;#039;)&lt;br /&gt;
    if [ -n &amp;quot;$fbsd&amp;quot; ]; then&lt;br /&gt;
      tdmctl shutdown reboot &amp;quot;=$fbsd&amp;quot; ask &amp;gt; /dev/null&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;FreeBSD boot unavailable.&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;Boot options unavailable.&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
else&lt;br /&gt;
  echo &amp;quot;Cannot reboot system.&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
TDM accepts two command line options related to logging:&lt;br /&gt;
&lt;br /&gt;
  -debug &amp;lt;n&amp;gt;&lt;br /&gt;
    &amp;lt;n&amp;gt; is a decimal or hexadecimal (prefix 0x) number.&lt;br /&gt;
    The number is a bitfield, i.e., it is formed by summing up the&lt;br /&gt;
    required values from this table:&lt;br /&gt;
    1 (0x1) - core debugging. Probably the most useful one.&lt;br /&gt;
    2 (0x2) - config reader debugging.&lt;br /&gt;
    4 (0x4) - greeter debugging.&lt;br /&gt;
    8 (0x8) - IPC debugging. This logs _all_ communication between the&lt;br /&gt;
	      core, the config reader and the greeter - including the&lt;br /&gt;
	      passwords you type, so edit the log before showing it to&lt;br /&gt;
	      somebody.&lt;br /&gt;
	      This attempts to synchronize the processes to interleave the&lt;br /&gt;
	      log messages optimally, but will probably fail unless you use&lt;br /&gt;
	      -debug 0x80 as well.&lt;br /&gt;
    16 (0x10) - wait after forking session sub-daemon.&lt;br /&gt;
    32 (0x20) - wait after starting config reader.&lt;br /&gt;
    64 (0x40) - wait after starting greeter.&lt;br /&gt;
	The wait options are only useful if you need to attach a debugger&lt;br /&gt;
	to a process, but it crashes before you are able to do so without&lt;br /&gt;
	the delay. See below.&lt;br /&gt;
    128 (0x80) - don&amp;#039;t use syslog for internally generated messages.&lt;br /&gt;
    256 (0x100) - core Xauth debugging.&lt;br /&gt;
    1024 (0x400) - run config reader and greeter through valgrind.&lt;br /&gt;
    2048 (0x800) - run config reader and greeter through strace.&lt;br /&gt;
&lt;br /&gt;
Logs from &amp;quot;-debug 7&amp;quot; are usually a good start.&lt;br /&gt;
&lt;br /&gt;
  -error &amp;lt;file&amp;gt;, -logfile &amp;lt;file&amp;gt;&lt;br /&gt;
    &amp;lt;file&amp;gt; is the file to log various messages to. The default log file is&lt;br /&gt;
    /var/log/tdm.log. For internal reasons there is no option in tdmrc to&lt;br /&gt;
    permanently specify the log file location. If you redirect TDM&amp;#039;s&lt;br /&gt;
    standard error output to a file, TDM will log there.&lt;br /&gt;
    If TDM is configured to use syslog (and it _very_ probably is on any&lt;br /&gt;
    modern system), all internally generated messages are logged to the&lt;br /&gt;
    &amp;quot;daemon&amp;quot; facility. The log usually can be found in /var/log/debug.log&lt;br /&gt;
    and /var/log/daemon.log; make sure that daemon.* is logged (look at&lt;br /&gt;
    /etc/syslog.conf).&lt;br /&gt;
    If you have problems logging in and your system uses PAM (also quite&lt;br /&gt;
    probable on modern systems), the &amp;quot;auth&amp;quot; and &amp;quot;authpriv&amp;quot; syslog facilities&lt;br /&gt;
    are interesting, too.&lt;br /&gt;
&lt;br /&gt;
When reporting bugs, send all the logs together with a detailed description of what you did and what happened. If your problem is related to a specific configuration, you should also attach a tar.gz archive of your TDM config directory.&lt;br /&gt;
&lt;br /&gt;
=== Producing a backtrace ===&lt;br /&gt;
If a backtrace is requested from you and TDM didn&amp;#039;t create one yet via the usual drkonqi procedure, you&amp;#039;ll have to do that yourself. The keyphrase is &amp;quot;attaching gdb&amp;quot;. How exactly this is done depends on the part that crashes:&lt;br /&gt;
&lt;br /&gt;
==== Attaching gdb to the process ====&lt;br /&gt;
===== Master daemon =====&lt;br /&gt;
Actually you should never need to attach to it, as you can start it within the debugger already:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# gdb --args tdm -nodaemon -debug 7&lt;br /&gt;
(gdb) run&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Display subdaemon =====&lt;br /&gt;
Find (using ps) the process with a name like &amp;quot;-:0&amp;quot; (where :0 is actually the display this process is for). This process&amp;#039; PPID is the master daemon. Attach to it this way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# gdb tdm &amp;lt;the PID you found&amp;gt;&lt;br /&gt;
(gdb) cont&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the subdaemon crashes before you can attach, add 16 to the debug flags when you start TDM.&lt;br /&gt;
&lt;br /&gt;
===== Config reader =====&lt;br /&gt;
You will have to add 32 to the debug flags almost certainly. The PPID will be the master daemon as well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# gdb tdm_config $(pidof tdm_config)&lt;br /&gt;
(gdb) cont&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Greeter =====&lt;br /&gt;
If it&amp;#039;s too fast, add 64 to -debug. The PPID will be the subdaemon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# gdb tdm_greet $(pidof tdm_greet)&lt;br /&gt;
(gdb) cont&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The simplification with &amp;quot;pidof&amp;quot; works only if you have only one display, otherwise you have to find the PID manually (by using ps -fx).&lt;br /&gt;
&lt;br /&gt;
==== Reproduce crash and create backtrace ====&lt;br /&gt;
Once you got gdb attached to the offending process, do whatever is needed to make it crash (probably nothing, if you had to use a delay parameter).&lt;br /&gt;
&lt;br /&gt;
Once it crashed, gdb will tell you a signal name, like SIGSEGV - that&amp;#039;s the first interesting part. Then you have to create the actual backtrace:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
(gdb) bt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output of this command is interesting for the developer, so a backtrace might be useful even if nothing crashes, but instead hangs. In this case don&amp;#039;t use &amp;quot;cont&amp;quot; after attaching, but use &amp;quot;bt&amp;quot; right away. If the process is already running, interrupt it with ctrl-c.&lt;br /&gt;
&lt;br /&gt;
For obvious reasons you have to run gdb on a different virtual terminal than the X server. To get there, press alt-ctrl-f1 and log in as root. To switch to the X server&amp;#039;s vt, press alt-ctrl-f7 (the exact function key may be different on your system). You may also use a remote login from a second machine. In any case it is advantageous to have mouse support on the debugging console for copying the backtrace.&lt;br /&gt;
&lt;br /&gt;
Note that a backtrace is usually much more useful if the binary contains debugging info.&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=TDE_Wiki_Style_Guideline&amp;diff=3262</id>
		<title>TDE Wiki Style Guideline</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=TDE_Wiki_Style_Guideline&amp;diff=3262"/>
		<updated>2023-12-18T10:26:09Z</updated>

		<summary type="html">&lt;p&gt;Blu256: /* Code */ add mention of TDE class template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TipBox|title=Work in progress!|text=This document is a work-in-progress, you can help by discussing it on the [http://mail.trinitydesktop.org/mailman3/postorius/lists/users.trinitydesktop.org/ tde-users mailing list], the [[Talk:TDE Wiki Style Guideline|discussion page]], via Jabber/XMPP or [http://trinitydesktop.org/support.php IRC].}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page is meant to provide a single guideline for styling pages on this Wiki.&lt;br /&gt;
&lt;br /&gt;
The goal is to achieve consistency between pages as much as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Generic guidelines =&lt;br /&gt;
&lt;br /&gt;
* Use visual styles to make it easier tell apart different kinds of information.&lt;br /&gt;
* Try to be consistent with how other pages look and the way they use styles and templates to achieve things.&lt;br /&gt;
* Create templates for things that can be reused on the wiki. Re-use [[Special:UncategorizedTemplates|existing templates]] as much as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Style Recommendations =&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
&lt;br /&gt;
* To denote a non-Trinity class use the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;tt&amp;gt;...&amp;lt;/tt&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
** To denote a TQt class use [[:Template:TQt class]].&lt;br /&gt;
** To denote a TDE class use [[:Template:TDE class]].&lt;br /&gt;
&amp;lt;!-- TODO: ** To denote a Trinity class use the special template. --&amp;gt;&lt;br /&gt;
* To denote a function signature or a function call use the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;code&amp;gt;...&amp;lt;/code&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
* To denote a source code block use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;syntaxhighlighting lang=&amp;quot;...&amp;quot;&amp;gt;...&amp;lt;/syntaxhighlighting&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; tag with the appropriate &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute.&lt;br /&gt;
** To denote commands to be run in a shell use the &amp;lt;code&amp;gt;shell-session&amp;lt;/code&amp;gt;. Prepend the commands with the &amp;lt;tt&amp;gt;$&amp;lt;/tt&amp;gt; sign for commands to be run with normal user privileges or &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; for commands to be run with root privileges.&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
&lt;br /&gt;
* To denote a file, a directory or a path, use the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;tt&amp;gt;...&amp;lt;/tt&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
* To denote the (whole or partial) contents of a file use a space before each line &amp;#039;&amp;#039;&amp;#039;unless&amp;#039;&amp;#039;&amp;#039; it contains [[#Code|code]].&lt;br /&gt;
&lt;br /&gt;
== Tables ==&lt;br /&gt;
&lt;br /&gt;
* To make tables look better and be more readable, add &amp;lt;code&amp;gt;class=&amp;quot;wikitable&amp;quot;&amp;lt;/code&amp;gt; to your tables.&lt;br /&gt;
* Make sure tables don&amp;#039;t stretch too much vertically or horizontally.&lt;br /&gt;
&lt;br /&gt;
== Messages and boxes ==&lt;br /&gt;
&lt;br /&gt;
=== Warnings ===&lt;br /&gt;
&lt;br /&gt;
* If a page or section is unfinished, place [[:Template:TODO]] in the beginning of the page or section.&lt;br /&gt;
* If a page or section is being actively worked on, and only for that time span, you may use [[:Template:WIP]] to prevent other users from accidentally causing a save conflict.&lt;br /&gt;
* If a page or section contains outdated information, place [[:Template:Outdated]] inserting the appropriate date and justifying it.&lt;br /&gt;
** If a page or section contains information relevant to KDE3, use [[:Template:KDE3]] instead. When such a page is updated to be applicable to the Trinity Desktop, replace it with [[:Template:Applicable to TDE]].&lt;br /&gt;
* Denote spam pages with [[:Template:Spam]].&lt;br /&gt;
* For generic warnings use [[:Template:WarningBox]] with the appropriate arguments.&lt;br /&gt;
** The opposite template to &amp;lt;tt&amp;gt;WarningBox&amp;lt;/tt&amp;gt; is [[:Template:SafeBox]].&lt;br /&gt;
&lt;br /&gt;
=== Other boxes ===&lt;br /&gt;
* For generic type messages (notes, tips, etc.) use [[:Template:TipBox]].&lt;br /&gt;
* Avoid using [[:Template:Box]] directly if you can help it. If you really need to use it, consider proposing a new template.&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Raspbian_Trinity_Repository_Installation_Instructions&amp;diff=3234</id>
		<title>Raspbian Trinity Repository Installation Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Raspbian_Trinity_Repository_Installation_Instructions&amp;diff=3234"/>
		<updated>2023-11-30T13:20:29Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Improve previous addition by User:User0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Documentation]]&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
&lt;br /&gt;
This page provides instructions to &amp;#039;&amp;#039;&amp;#039;install&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;upgrade&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;remove&amp;#039;&amp;#039;&amp;#039; Trinity Desktop Environment on your Raspbian system.&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
=Available versions=&lt;br /&gt;
&lt;br /&gt;
==TDE R14.x.y series==&lt;br /&gt;
&lt;br /&gt;
===Stable versions===&lt;br /&gt;
&lt;br /&gt;
Packages for stable versions are available for the following Raspbian distributions (green rows indicates latest version):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Version&lt;br /&gt;
 ! Architectures&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-style=&amp;quot;background:lightgreen&amp;quot;&lt;br /&gt;
 | bookworm&lt;br /&gt;
 | armhf&lt;br /&gt;
 |&lt;br /&gt;
 |-style=&amp;quot;background:lightgreen&amp;quot;&lt;br /&gt;
 | bullseye&lt;br /&gt;
 | armhf&lt;br /&gt;
 |&lt;br /&gt;
 |-style=&amp;quot;background:lightgreen&amp;quot;&lt;br /&gt;
 | buster&lt;br /&gt;
 | armhf&lt;br /&gt;
 |&lt;br /&gt;
 |-&lt;br /&gt;
 | stretch&lt;br /&gt;
 | armhf&lt;br /&gt;
 | up to R14.0.13&lt;br /&gt;
 |-&lt;br /&gt;
 | jessie&lt;br /&gt;
 | armhf&lt;br /&gt;
 | up to R14.0.10&lt;br /&gt;
 |-&lt;br /&gt;
 | 7.x - wheezy&lt;br /&gt;
 | armhf&lt;br /&gt;
 | up to R14.0.6&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Rolling versions===&lt;br /&gt;
&lt;br /&gt;
Rolling builds are also available. &lt;br /&gt;
&lt;br /&gt;
* [[Preliminary_Stable_Builds|Preliminary Stable Builds]] - rolling version of current stable branch (maintenance releases)&lt;br /&gt;
* [[Preliminary_Testing_Builds|Preliminary Testing Builds]] - rolling version of main development branch (major/minor releases)&lt;br /&gt;
&lt;br /&gt;
==v3.5.13.x series==&lt;br /&gt;
&lt;br /&gt;
There is no support for this TDE branch in Raspbian.&lt;br /&gt;
&lt;br /&gt;
=Configure the package manager=&lt;br /&gt;
&lt;br /&gt;
Add the following lines to your /etc/apt/sources.list file. &lt;br /&gt;
&lt;br /&gt;
{{WarningBox&lt;br /&gt;
 |text=Make sure to replace &amp;lt;span style=&amp;quot;color:#0000ff&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;lt;your-distribution-release-name&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; with your actual distribution release name (for example &amp;#039;bullseye&amp;#039; or &amp;#039;buster&amp;#039;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===TDE R14.1.x series===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sourceslist&amp;quot;&amp;gt;&lt;br /&gt;
deb http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.1.x &amp;lt;your-distribution-release-name&amp;gt; main deps&lt;br /&gt;
&lt;br /&gt;
# Optional sources&lt;br /&gt;
deb-src http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.1.x &amp;lt;your-distribution-release-name&amp;gt; main deps&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
===TDE R14.0.x series===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sourceslist&amp;quot;&amp;gt;&lt;br /&gt;
deb http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.0.x &amp;lt;your-distribution-release-name&amp;gt; main&lt;br /&gt;
deb http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-builddeps-r14.0.x &amp;lt;your-distribution-release-name&amp;gt; main&lt;br /&gt;
&lt;br /&gt;
# Optional sources&lt;br /&gt;
deb-src http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.0.x &amp;lt;your-distribution-release-name&amp;gt; main&lt;br /&gt;
deb-src http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-builddeps-r14.0.x &amp;lt;your-distribution-release-name&amp;gt; main&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Import GPG signing key=&lt;br /&gt;
&lt;br /&gt;
The best way to install GPG key is to manually download and install package &amp;lt;code&amp;gt;trinity-keyring&amp;lt;/code&amp;gt;. The advantage is that this method of installation is not dependent on the availability of the key server. Another advantage is that the key is not integrated into the global apt keyring, but is installed as a separate file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ wget http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-keyring.deb&lt;br /&gt;
$ sudo dpkg -i trinity-keyring.deb&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Install Trinity=&lt;br /&gt;
* If you are doing a &amp;#039;&amp;#039;&amp;#039;fresh TDE installation&amp;#039;&amp;#039;&amp;#039;, please follow the steps listed below.&amp;lt;br&amp;gt;&lt;br /&gt;
* If you are &amp;#039;&amp;#039;&amp;#039;upgrading&amp;#039;&amp;#039;&amp;#039; from an existing version, please follow the instruction under the [[#TDEUpgrade|upgrading]] section.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fresh installation==&lt;br /&gt;
&lt;br /&gt;
The following steps are suggested for installing the latest version.&lt;br /&gt;
&lt;br /&gt;
{{WarningBox&lt;br /&gt;
 |text=&amp;lt;span style=&amp;quot;color:#0000ff&amp;quot;&amp;gt;&amp;#039;&amp;#039;tde-trinity&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; package is a comprehensive meta-package. To install a minimalist environment, replace &amp;lt;span style=&amp;quot;color:#0000ff&amp;quot;&amp;gt;&amp;#039;&amp;#039;tde-trinity&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; with &amp;lt;span style=&amp;quot;color:#0000ff&amp;quot;&amp;gt;&amp;#039;&amp;#039;tdebase-trinity&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; in the instructions below.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo apt-get update&lt;br /&gt;
$ sudo aptitude install tde-trinity&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TipBox  &lt;br /&gt;
| text = If you cannot run TDE, you might need to change your desktop environment via the alternatives system. To do so, run the following command in your Terminal: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo update-alternatives --config x-session-manager&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Select the option ending with &amp;quot;starttde&amp;quot; (usually &amp;lt;tt&amp;gt;/opt/trinity/bin/starttde&amp;lt;/tt&amp;gt;), then logout or reboot. After logging in, TDE should start automatically.}}&lt;br /&gt;
&lt;br /&gt;
===Localization===&lt;br /&gt;
{{TipBox|text=After installing the environment, it is also a good idea to install the localization packages so that you can switch the environment to your native language. For example, for Czech you would run: &amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;$ sudo aptitude install tde-i18n-cs-trinity&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span id=&amp;quot;TDEUpgrade&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Upgrading from an existing installation==&lt;br /&gt;
&lt;br /&gt;
The following steps are suggested for upgrading to the latest version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo apt-get update&lt;br /&gt;
$ sudo aptitude full-upgrade&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will upgrade TDE to the newer version and should complete smoothly.&lt;br /&gt;
&lt;br /&gt;
=Removing Trinity=&lt;br /&gt;
&lt;br /&gt;
{{TipBox | caption = Note | text = Please read the following instructions completely before starting the removal process.}}&lt;br /&gt;
&lt;br /&gt;
Removing the Trinity Desktop Environment involves the following four steps:&lt;br /&gt;
&lt;br /&gt;
# Uninstalling packages&lt;br /&gt;
# Removing the Trinity repository from the list of available package sources&lt;br /&gt;
# Cleaning up the package cache&lt;br /&gt;
# Removing left-over files from your home directory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
==Uninstalling packages==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using aptitude===&lt;br /&gt;
&lt;br /&gt;
If you have &amp;#039;&amp;#039;aptitude&amp;#039;&amp;#039; installed, you can simply run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo aptitude purge &amp;#039;~i~Otrinitydesktop&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using apt-get===&lt;br /&gt;
&lt;br /&gt;
Using the standard &amp;#039;&amp;#039;apt-get&amp;#039;&amp;#039; utility to uninstall TDE and its dependencies involves the following three steps:&lt;br /&gt;
# Generating a list of all packages available from the Trinity repository&lt;br /&gt;
# Using that list to uninstall all installed packages originating from that repository&lt;br /&gt;
# Uninstalling all packages that were installed as dependencies of Trinity&lt;br /&gt;
&lt;br /&gt;
To generate a list of all packages available from the Trinity repository, you will need to filter out just the package names from two files in &amp;lt;code&amp;gt;/var/lib/apt/lists&amp;lt;/code&amp;gt; and write the result to a new file. The names of these files depend on three factors: The Raspbian release in use, the processor type the system is running on, and whether you&amp;#039;re using the stable series or rolling-release packages. So, for example, when running the R14.1.x series on the i386 variant of Raspbian bullseye, the names are as follows:&lt;br /&gt;
* &amp;lt;code&amp;gt;mirror.ppa.trinitydesktop.org_trinity_deb_trinity-r14.1.x_dists_bullseye_main_binary-i386_Packages&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;mirror.ppa.trinitydesktop.org_trinity_deb_trinity-builddeps-r14.1.x_dists_bullseye_main_binary-i386_Packages&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First, let&amp;#039;s create a new empty file in &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;mktemp&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ mktemp /tmp/tde.XXXX&lt;br /&gt;
/tmp/tde.fB6B&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generating a list of all Trinity packages and writing it to that file now works as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ sed -n &amp;#039;/^Package: / s/^Package: //p&amp;#039; /var/lib/apt/lists/mirror.ppa.trinitydesktop.org_trinity_deb_trinity-*Packages &amp;gt; /tmp/tde.fB6B&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Be sure to replace the output file&amp;#039;s name with the actual name of the file &amp;lt;code&amp;gt;mktemp&amp;lt;/code&amp;gt; created on your system.&lt;br /&gt;
&lt;br /&gt;
Now that we have a list of all TDE packages, we can hand that to &amp;lt;code&amp;gt;apt-get&amp;lt;/code&amp;gt; for uninstallation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo apt-get remove $(cat /tmp/tde.fB6B)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;apt-get remove&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;apt-get purge&amp;lt;/code&amp;gt; to also remove the configuration files that came with those packages. And, as above, be sure to replace the output file&amp;#039;s name with the actual name of the file &amp;lt;code&amp;gt;mktemp&amp;lt;/code&amp;gt; created on your system.&lt;br /&gt;
&lt;br /&gt;
Apt will figure out which of the packages in the list are actually installed and present them for uninstallation. It will also already notify the user of a bunch of packages that &amp;quot;were automatically installed and are not longer required&amp;quot; and suggest using &amp;lt;code&amp;gt;apt autoremove&amp;lt;/code&amp;gt; to uninstall them. We will take care of that in the next step. So, for now, just confirm the uninstallation of the TDE packages.&lt;br /&gt;
&lt;br /&gt;
If Apt asks whether to stop the tdm deamon, say yes. We&amp;#039;re removing TDE, after all. This will land you on the TTY that TDM was running on before. Need to switch back to the one you ran &amp;lt;code&amp;gt;apt-get&amp;lt;/code&amp;gt; from using Ctrl + F1..7.&lt;br /&gt;
&lt;br /&gt;
Finally, to uninstall all remaining Trinity dependencies, you will need to run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo apt-get autoremove&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you also want to remove the configuration files that came with these packages, append &amp;lt;code&amp;gt;--purge&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;autoremove&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
{{WarningBox | caption = CAUTION | text = Beware that running &amp;lt;code&amp;gt;apt-get autoremove&amp;lt;/code&amp;gt; without care can leave certain software on your system or the system as a whole in an unusable state. The command simply uninstalls all packages that were installed as dependencies of packages that are no longer installed, which might lead to the uninstallation of packages that you wanted to keep.&lt;br /&gt;
&lt;br /&gt;
Be sure to read the list of packages that Apt will want to uninstall, carefully. If you want to continue to use any of the packages in that list, abort the operation, mark that package as manually installed, and then run the command again.&lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;re not sure how to handle the situation, ask in the Trinity IRC channel or on the mailing list.}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
==Removing the Trinity repository from package sources==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; and either remove the Trinity repository lines or comment them by adding a hash symbol (&amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;) at the beginning of each line. Then save the file and run &amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
==Cleaning up the package cache==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you deactivated/removed the repo from source.list, at least run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo apt-get autoclean&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will remove all Trinity packages from the local cache.&lt;br /&gt;
&lt;br /&gt;
To get rid of other packages as well, you&amp;#039;ll have to clean out the whole package cache using&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo apt-get clean&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
==Removing left-over files from your home directory==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove TDE files in &amp;lt;tt&amp;gt;$HOME&amp;lt;/tt&amp;gt;. Usually these are the &amp;lt;tt&amp;gt;.tderc&amp;lt;/tt&amp;gt; file and the &amp;lt;tt&amp;gt;.trinity&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.qt&amp;lt;/tt&amp;gt; directories. (The latter is still mistakenly used by some applications.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&amp;diff=3233</id>
		<title>Images (for developers)</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&amp;diff=3233"/>
		<updated>2023-11-25T22:05:08Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Remove WIP marking (still has a few TODOs)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Working with images is an important part of a graphical application, whether it&amp;#039;s a simple application or a complex graphical suite. In TQt/TDE, this can be as simple as learning to use a few classes. This guide aims to be a good guide for developers who want to work with TQt/TDE.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Image classes ==&lt;br /&gt;
* {{TQt class|TQPixmap}} is one of the two basic image classes provided by TQt.&lt;br /&gt;
: It is, essentially, a paint device, so it is optimized for drawing. You&amp;#039;ll see this class used a lot (more than TQImage) because of this quality.&lt;br /&gt;
* {{TQt class|TQImage}} is the other basic image class.&lt;br /&gt;
: According to the API docs, it is &amp;quot;a hardware-independent pixmap representation&amp;quot; and it is optimized for I/O operations and direct pixel access and manipulation.&lt;br /&gt;
* {{TQt class|TQIconSet}} is a helper class for icons.&lt;br /&gt;
: Compared to the basic image classes, this class does not represent a single image, but a &amp;#039;&amp;#039;set&amp;#039;&amp;#039; of images which correspond to an icon. A folder icon can come in different sizes (a different image file corresponds to each size), but it is still considered to be the same icon.&lt;br /&gt;
&lt;br /&gt;
Usually you won&amp;#039;t need more advanced classes.&lt;br /&gt;
&lt;br /&gt;
== Basic usage ==&lt;br /&gt;
=== Loading an image ===&lt;br /&gt;
The simplest way to load an image is to use the constructor of the {{TQt class|TQPixmap}} class with the path of the file you want to load. If the file is located in one of your application paths (e.g. the &amp;lt;tt&amp;gt;share&amp;lt;/tt&amp;gt; folder) use the {{TDE class|tdelibs|tdecore|TDEStandardDirs}} class.&lt;br /&gt;
&lt;br /&gt;
If you want to load an icon, the simplest (and by far the most preferred) way to do so is via the  {{TDE class|tdelibs|tdecore|TDEIconLoader}} class. For TDE applications you don&amp;#039;t even have to explicitly initialize this object. You can access an instance of this class through the `kapp` pointer of the {{TDE class|tdelibs|tdecore|TDEApplication}} class. The icon loader class makes sure that recommended settings are used for the kind of icon you are loading, so you usually need to provide a `group` parameter of type [http://trinitydesktop.org/docs/trinity/tdelibs/tdecore/html/classTDEIcon.html#a8d521faaf8f00ecbe33314a08d386f91 TDEIcon::Group] which defines the type of icon that you are loading and will decide its size and whether any effects will be applied to it. For example, to load a folder icon with the default settings for a toolbar icon:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQPixmap icon = kapp-&amp;gt;iconLoader()-&amp;gt;loadIcon(&amp;quot;folder&amp;quot;, TDEIcon::Toolbar);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to let the user choose an image, you can make use of {{TDE class|tdelibs|tdeio/tdefile|KFileDialog}}. You might want to use &amp;#039;&amp;#039;&amp;#039;KImageIO&amp;#039;&amp;#039;&amp;#039; in your project to support more image formats.&lt;br /&gt;
&lt;br /&gt;
=== Displaying an image ===&lt;br /&gt;
Images can be used in quite a few widgets, including labels, text views and buttons. These widgets offer constructors and/or functions where you can pass an image as an argument (usually as a {{TQt class|TQPixmap}} or a {{TQt class|TQIconSet}}.&lt;br /&gt;
&lt;br /&gt;
The following example creates a push button with a folder icon from the icon theme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQIconSet icon = kapp-&amp;gt;iconLoader()-&amp;gt;loadIconSet(&amp;quot;folder&amp;quot;, TDEIcon::Toolbar);&lt;br /&gt;
TQPushButton *button = new TQPushButton(icon, i18n(&amp;quot;Open folder...&amp;quot;), this);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to display an image as standalone, you first need a widget where you will display it. Usually, a {{TQt class|TQLabel}} should be enough.&lt;br /&gt;
&lt;br /&gt;
=== Vector images (SVG) ===&lt;br /&gt;
{{TODO}}&lt;br /&gt;
&lt;br /&gt;
=== Applying effects ===&lt;br /&gt;
{{TODO}}&lt;br /&gt;
&lt;br /&gt;
== Advanced usage ==&lt;br /&gt;
=== Loading KImageIO ===&lt;br /&gt;
KImageIO is a library which allows applications that use the TQt library (i.e. TQImageIO, TQImage, TQPixmap and friends) to read and write images in extra formats. It essentially extends TQImageIO with support for more image formats.&lt;br /&gt;
&lt;br /&gt;
To make use of KImageIO you only need to:&lt;br /&gt;
# link your application with the &amp;lt;tt&amp;gt;tdeio&amp;lt;/tt&amp;gt; library&lt;br /&gt;
# Include the &amp;lt;kimageio.h&amp;gt; header&lt;br /&gt;
# call KImageIO::registerFormats() once, somewhere in your code, before you load an image.&lt;br /&gt;
&lt;br /&gt;
=== Saving an image ===&lt;br /&gt;
Saving an image is a complex process which involves a lot of factors, such as image format, quality, remote vs. local destination etc. Fortunately it&amp;#039;s made easy thanks to technologies such as [[TDEIO]] and KImageIO.&lt;br /&gt;
&lt;br /&gt;
Let&amp;#039;s start with the basics.&lt;br /&gt;
&lt;br /&gt;
==== The Foundation: &amp;lt;tt&amp;gt;TQImage::save(...)&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
{{TQt class|TQImage}} provides a convenient &amp;lt;code&amp;gt;save(const TQString &amp;amp;fileName, const char *format, int quality = -1)&amp;lt;/code&amp;gt; method which, as you can tell, saves the image in memory to the selected destination (&amp;lt;tt&amp;gt;fileName&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;format&amp;lt;/tt&amp;gt; argument is a string that represents the image format in which the file will be saved. The allowed values are determined by the file formats for which {{TQt class|TQImageIO}} has write support.&lt;br /&gt;
&lt;br /&gt;
TQt natively supports PNG, BMP, XBM, XPM, PNM, JPEG, MNG and GIF formats (support for the latter three formats is configured at compile-time). For details on these formats refer to the {{TQt class|TQImageIO}} API documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;KImageIO&amp;#039;&amp;#039;&amp;#039; adds support for more file formats, such as JPEG2000, EPS and TGA.&lt;br /&gt;
&lt;br /&gt;
For example, to save an image &amp;lt;code&amp;gt;TQImage img&amp;lt;/code&amp;gt; in PNG format, you could use the following call:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
img.save(&amp;quot;/home/test/image.png&amp;quot;, &amp;quot;PNG&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;quality&amp;lt;/tt&amp;gt; parameter is pretty self-explanatory. Its default value is -1, which will make TQt use the default quality when saving.&lt;br /&gt;
&lt;br /&gt;
You can combine the above code with {{TDE class|tdelibs|tdeio/tdefile|KFileDialog}} to get a decent save dialog which can save your PNG image locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQString saveFile = KFileDialog::getSaveFileName(TQString::null, &amp;quot;*.PNG|&amp;quot; + i18n(&amp;quot;PNG image (*.png)&amp;quot;), this);&lt;br /&gt;
if (!saveFile.isEmpty()) {&lt;br /&gt;
    img.save(saveFile, &amp;quot;PNG&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But what if we want more? What if we want to support more file formats? And what about saving on another computer via (S)FTP or another protocol?&lt;br /&gt;
&lt;br /&gt;
==== Better image saving (feat. KImageIO) ====&lt;br /&gt;
Let&amp;#039;s improve the situation with file formats by making use of some features of KImageIO.&lt;br /&gt;
&lt;br /&gt;
We shall start by querying KImageIO for all the image formats it can write to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQStringList mimeTypes = KImageIO::mimeTypes(KImageIO::Writing);&lt;br /&gt;
if (mimeTypes.isEmpty()) {&lt;br /&gt;
    kdError() &amp;lt;&amp;lt; &amp;quot;kimgio: no image formats support writing!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example shows some basic error handling. You should probably properly inform the user about the failure and abort the save operation at that point.&lt;br /&gt;
&lt;br /&gt;
Then we can construct a file dialog based on the MIME information that we obtained. It&amp;#039;s worth noting that the convenient static methods of {{TDE class|tdelibs|tdeio/tdefile|KFileDialog}} cannot take a &amp;lt;tt&amp;gt;TQStringList mimeTypes&amp;lt;/tt&amp;gt; as argument, so we will have to construct the dialog more or less manually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
KFileDialog *saveDlg = new KFileDialog(TQString::null, TQString::null, this, &amp;quot;mysavedialog&amp;quot;, true);&lt;br /&gt;
saveDlg-&amp;gt;setOperationMode(KFileDialog::Saving);&lt;br /&gt;
saveDlg-&amp;gt;setMimeFilter(mimeTypes);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then we can execute the dialog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
if (!saveDlg-&amp;gt;exec()) {&lt;br /&gt;
    // The dialog was canceled&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally, after it has been closed, we can obtain the URL where we will save the file. It&amp;#039;s a good idea to check the input thoroughly. Once again, you should implement proper error handling for when something goes wrong. I cannot stress enough the importance of sane error handling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
KURL saveURL = saveDlg-&amp;gt;selectedURL();&lt;br /&gt;
&lt;br /&gt;
TQString type = KImageIO::type(saveURL.url());&lt;br /&gt;
if (!KImageIO::canWrite(type)) {&lt;br /&gt;
    kdError() &amp;lt;&amp;lt; &amp;quot;kimgio: writing to image format &amp;quot; &amp;lt;&amp;lt; type &amp;lt;&amp;lt; &amp;quot; is not supported&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For simplicity&amp;#039;s sake we will only accept local URLs for now.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
if (!saveURL.isLocalFile()) {&lt;br /&gt;
    kdError() &amp;lt;&amp;lt; &amp;quot;Cannot save to remote location (yet!)&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
    return;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, now that we have the URL, what&amp;#039;s next? Easy, we actually save the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
bool ok = img.save(saveURL.path(), type.latin1());&lt;br /&gt;
if (!ok) {&lt;br /&gt;
    kdError() &amp;lt;&amp;lt; &amp;quot;Couldn&amp;#039;t save!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note how we use &amp;lt;tt&amp;gt;path()&amp;lt;/tt&amp;gt; on saveURL instead of &amp;lt;tt&amp;gt;url()&amp;lt;/tt&amp;gt;. It is because the function accepts a file path. By design it will not accept even local &amp;lt;tt&amp;gt;file://&amp;lt;/tt&amp;gt; URLs.&lt;br /&gt;
&lt;br /&gt;
So how do we save to a remote location?&lt;br /&gt;
&lt;br /&gt;
==== Even better image saving (feat. TDEIO) ====&lt;br /&gt;
At some point you might have wondered how TDE applications are able to save to a remote or network location almost as seamlessly as to a directory on your hard drive. The TDEIO component is responsible for all the behind-the-scenes magic. In other word, you don&amp;#039;t need to make your application speak FTP in order to be able to save an image to a remote FTP server. TDEIO automatically infers the protocol from the URL and starts a subprogram which handles all the needed communication and hides the protocol specifics behind well-known file operations, such as copy or delete.&lt;br /&gt;
&lt;br /&gt;
Most TDE applications do not make use of TDEIO itself, but rather &amp;lt;tt&amp;gt;TDEIO::NetAccess&amp;lt;/tt&amp;gt;, an API meant to simplify network file operations. We will only need one of its methods, &amp;lt;tt&amp;gt;upload(...)&amp;lt;/tt&amp;gt;, which takes a local file URL and a remote destination URL as arguments. Yes, you read that right. We need to create a temporary local file, which we will upload to the user&amp;#039;s chosen destination, and which we will then remove. Fortunately, TDE provides just the class for the occasion; that is {{TDE class|tdelibs|tdecore|KTempFile}}.&lt;br /&gt;
&lt;br /&gt;
Remember the mast two chunks of code we previously wrote? Time to rewrite them!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
if (saveURL.isLocalFile()) {&lt;br /&gt;
    bool ok = img.save(saveURL.path(), type.latin1());&lt;br /&gt;
    if (!ok) {&lt;br /&gt;
        kdError() &amp;lt;&amp;lt; &amp;quot;Couldn&amp;#039;t save!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We have the local file handler from our previous effort. Let&amp;#039;s proceed to write the handler for non-local files then. First, we&amp;#039;ll create a new {{TDE class|tdelibs|tdecore|KTempFile}}:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
    KTempFile tempFile;&lt;br /&gt;
    tempFile.setAutoDelete(true);&lt;br /&gt;
    TQString tempFileName = tempFile.name();&lt;br /&gt;
    if (tempFileName.isEmpty()) {&lt;br /&gt;
        kdError() &amp;lt;&amp;lt; &amp;quot;could not create a temp file!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now let&amp;#039;s save our image to that file:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
    bool ok = img.save(tempFileName, type.latin1());&lt;br /&gt;
    if (!ok) {&lt;br /&gt;
        kdError() &amp;lt;&amp;lt; &amp;quot;Couldn&amp;#039;t write temporary file: &amp;quot; &amp;lt;&amp;lt; tempFileName &amp;lt;&amp;lt; endl;&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally, let&amp;#039;s upload that file to the remote location:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
if (!TDEIO::NetAccess::upload(tempFileName, saveURL, this)) {&lt;br /&gt;
    kdError() &amp;lt;&amp;lt; &amp;quot;Could not upload file to &amp;quot; &amp;lt;&amp;lt; saveURL &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We now have a file dialog which can save in every image format that TQt and TDE support writing to, and which supports both local and non-local filesystems.&lt;br /&gt;
&lt;br /&gt;
== TDE Developers&amp;#039; usage ==&lt;br /&gt;
=== Adding image format support ===&lt;br /&gt;
{{TODO}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Developers]]&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&amp;diff=3232</id>
		<title>Images (for developers)</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&amp;diff=3232"/>
		<updated>2023-11-25T21:57:23Z</updated>

		<summary type="html">&lt;p&gt;Blu256: /* TQImage::save(...) */ a nice section pretitle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WIP|Blu256}}&lt;br /&gt;
&lt;br /&gt;
Working with images is an important part of a graphical application, whether it&amp;#039;s a simple application or a complex graphical suite. In TQt/TDE, this can be as simple as learning to use a few classes. This guide aims to be a good guide for developers who want to work with TQt/TDE.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Image classes ==&lt;br /&gt;
* {{TQt class|TQPixmap}} is one of the two basic image classes provided by TQt.&lt;br /&gt;
: It is, essentially, a paint device, so it is optimized for drawing. You&amp;#039;ll see this class used a lot (more than TQImage) because of this quality.&lt;br /&gt;
* {{TQt class|TQImage}} is the other basic image class.&lt;br /&gt;
: According to the API docs, it is &amp;quot;a hardware-independent pixmap representation&amp;quot; and it is optimized for I/O operations and direct pixel access and manipulation.&lt;br /&gt;
* {{TQt class|TQIconSet}} is a helper class for icons.&lt;br /&gt;
: Compared to the basic image classes, this class does not represent a single image, but a &amp;#039;&amp;#039;set&amp;#039;&amp;#039; of images which correspond to an icon. A folder icon can come in different sizes (a different image file corresponds to each size), but it is still considered to be the same icon.&lt;br /&gt;
&lt;br /&gt;
Usually you won&amp;#039;t need more advanced classes.&lt;br /&gt;
&lt;br /&gt;
== Basic usage ==&lt;br /&gt;
=== Loading an image ===&lt;br /&gt;
The simplest way to load an image is to use the constructor of the {{TQt class|TQPixmap}} class with the path of the file you want to load. If the file is located in one of your application paths (e.g. the &amp;lt;tt&amp;gt;share&amp;lt;/tt&amp;gt; folder) use the {{TDE class|tdelibs|tdecore|TDEStandardDirs}} class.&lt;br /&gt;
&lt;br /&gt;
If you want to load an icon, the simplest (and by far the most preferred) way to do so is via the  {{TDE class|tdelibs|tdecore|TDEIconLoader}} class. For TDE applications you don&amp;#039;t even have to explicitly initialize this object. You can access an instance of this class through the `kapp` pointer of the {{TDE class|tdelibs|tdecore|TDEApplication}} class. The icon loader class makes sure that recommended settings are used for the kind of icon you are loading, so you usually need to provide a `group` parameter of type [http://trinitydesktop.org/docs/trinity/tdelibs/tdecore/html/classTDEIcon.html#a8d521faaf8f00ecbe33314a08d386f91 TDEIcon::Group] which defines the type of icon that you are loading and will decide its size and whether any effects will be applied to it. For example, to load a folder icon with the default settings for a toolbar icon:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQPixmap icon = kapp-&amp;gt;iconLoader()-&amp;gt;loadIcon(&amp;quot;folder&amp;quot;, TDEIcon::Toolbar);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to let the user choose an image, you can make use of {{TDE class|tdelibs|tdeio/tdefile|KFileDialog}}. You might want to use &amp;#039;&amp;#039;&amp;#039;KImageIO&amp;#039;&amp;#039;&amp;#039; in your project to support more image formats.&lt;br /&gt;
&lt;br /&gt;
=== Displaying an image ===&lt;br /&gt;
Images can be used in quite a few widgets, including labels, text views and buttons. These widgets offer constructors and/or functions where you can pass an image as an argument (usually as a {{TQt class|TQPixmap}} or a {{TQt class|TQIconSet}}.&lt;br /&gt;
&lt;br /&gt;
The following example creates a push button with a folder icon from the icon theme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQIconSet icon = kapp-&amp;gt;iconLoader()-&amp;gt;loadIconSet(&amp;quot;folder&amp;quot;, TDEIcon::Toolbar);&lt;br /&gt;
TQPushButton *button = new TQPushButton(icon, i18n(&amp;quot;Open folder...&amp;quot;), this);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to display an image as standalone, you first need a widget where you will display it. Usually, a {{TQt class|TQLabel}} should be enough.&lt;br /&gt;
&lt;br /&gt;
=== Vector images (SVG) ===&lt;br /&gt;
{{TODO}}&lt;br /&gt;
&lt;br /&gt;
=== Applying effects ===&lt;br /&gt;
{{TODO}}&lt;br /&gt;
&lt;br /&gt;
== Advanced usage ==&lt;br /&gt;
=== Loading KImageIO ===&lt;br /&gt;
KImageIO is a library which allows applications that use the TQt library (i.e. TQImageIO, TQImage, TQPixmap and friends) to read and write images in extra formats. It essentially extends TQImageIO with support for more image formats.&lt;br /&gt;
&lt;br /&gt;
To make use of KImageIO you only need to:&lt;br /&gt;
# link your application with the &amp;lt;tt&amp;gt;tdeio&amp;lt;/tt&amp;gt; library&lt;br /&gt;
# Include the &amp;lt;kimageio.h&amp;gt; header&lt;br /&gt;
# call KImageIO::registerFormats() once, somewhere in your code, before you load an image.&lt;br /&gt;
&lt;br /&gt;
=== Saving an image ===&lt;br /&gt;
Saving an image is a complex process which involves a lot of factors, such as image format, quality, remote vs. local destination etc. Fortunately it&amp;#039;s made easy thanks to technologies such as [[TDEIO]] and KImageIO.&lt;br /&gt;
&lt;br /&gt;
Let&amp;#039;s start with the basics.&lt;br /&gt;
&lt;br /&gt;
==== The Foundation: &amp;lt;tt&amp;gt;TQImage::save(...)&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
{{TQt class|TQImage}} provides a convenient &amp;lt;code&amp;gt;save(const TQString &amp;amp;fileName, const char *format, int quality = -1)&amp;lt;/code&amp;gt; method which, as you can tell, saves the image in memory to the selected destination (&amp;lt;tt&amp;gt;fileName&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;format&amp;lt;/tt&amp;gt; argument is a string that represents the image format in which the file will be saved. The allowed values are determined by the file formats for which {{TQt class|TQImageIO}} has write support.&lt;br /&gt;
&lt;br /&gt;
TQt natively supports PNG, BMP, XBM, XPM, PNM, JPEG, MNG and GIF formats (support for the latter three formats is configured at compile-time). For details on these formats refer to the {{TQt class|TQImageIO}} API documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;KImageIO&amp;#039;&amp;#039;&amp;#039; adds support for more file formats, such as JPEG2000, EPS and TGA.&lt;br /&gt;
&lt;br /&gt;
For example, to save an image &amp;lt;code&amp;gt;TQImage img&amp;lt;/code&amp;gt; in PNG format, you could use the following call:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
img.save(&amp;quot;/home/test/image.png&amp;quot;, &amp;quot;PNG&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;quality&amp;lt;/tt&amp;gt; parameter is pretty self-explanatory. Its default value is -1, which will make TQt use the default quality when saving.&lt;br /&gt;
&lt;br /&gt;
You can combine the above code with {{TDE class|tdelibs|tdeio/tdefile|KFileDialog}} to get a decent save dialog which can save your PNG image locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQString saveFile = KFileDialog::getSaveFileName(TQString::null, &amp;quot;*.PNG|&amp;quot; + i18n(&amp;quot;PNG image (*.png)&amp;quot;), this);&lt;br /&gt;
if (!saveFile.isEmpty()) {&lt;br /&gt;
    img.save(saveFile, &amp;quot;PNG&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But what if we want more? What if we want to support more file formats? And what about saving on another computer via (S)FTP or another protocol?&lt;br /&gt;
&lt;br /&gt;
==== Better image saving (feat. KImageIO) ====&lt;br /&gt;
Let&amp;#039;s improve the situation with file formats by making use of some features of KImageIO.&lt;br /&gt;
&lt;br /&gt;
We shall start by querying KImageIO for all the image formats it can write to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQStringList mimeTypes = KImageIO::mimeTypes(KImageIO::Writing);&lt;br /&gt;
if (mimeTypes.isEmpty()) {&lt;br /&gt;
    kdError() &amp;lt;&amp;lt; &amp;quot;kimgio: no image formats support writing!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example shows some basic error handling. You should probably properly inform the user about the failure and abort the save operation at that point.&lt;br /&gt;
&lt;br /&gt;
Then we can construct a file dialog based on the MIME information that we obtained. It&amp;#039;s worth noting that the convenient static methods of {{TDE class|tdelibs|tdeio/tdefile|KFileDialog}} cannot take a &amp;lt;tt&amp;gt;TQStringList mimeTypes&amp;lt;/tt&amp;gt; as argument, so we will have to construct the dialog more or less manually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
KFileDialog *saveDlg = new KFileDialog(TQString::null, TQString::null, this, &amp;quot;mysavedialog&amp;quot;, true);&lt;br /&gt;
saveDlg-&amp;gt;setOperationMode(KFileDialog::Saving);&lt;br /&gt;
saveDlg-&amp;gt;setMimeFilter(mimeTypes);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then we can execute the dialog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
if (!saveDlg-&amp;gt;exec()) {&lt;br /&gt;
    // The dialog was canceled&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally, after it has been closed, we can obtain the URL where we will save the file. It&amp;#039;s a good idea to check the input thoroughly. Once again, you should implement proper error handling for when something goes wrong. I cannot stress enough the importance of sane error handling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
KURL saveURL = saveDlg-&amp;gt;selectedURL();&lt;br /&gt;
&lt;br /&gt;
TQString type = KImageIO::type(saveURL.url());&lt;br /&gt;
if (!KImageIO::canWrite(type)) {&lt;br /&gt;
    kdError() &amp;lt;&amp;lt; &amp;quot;kimgio: writing to image format &amp;quot; &amp;lt;&amp;lt; type &amp;lt;&amp;lt; &amp;quot; is not supported&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For simplicity&amp;#039;s sake we will only accept local URLs for now.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
if (!saveURL.isLocalFile()) {&lt;br /&gt;
    kdError() &amp;lt;&amp;lt; &amp;quot;Cannot save to remote location (yet!)&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
    return;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, now that we have the URL, what&amp;#039;s next? Easy, we actually save the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
bool ok = img.save(saveURL.path(), type.latin1());&lt;br /&gt;
if (!ok) {&lt;br /&gt;
    kdError() &amp;lt;&amp;lt; &amp;quot;Couldn&amp;#039;t save!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note how we use &amp;lt;tt&amp;gt;path()&amp;lt;/tt&amp;gt; on saveURL instead of &amp;lt;tt&amp;gt;url()&amp;lt;/tt&amp;gt;. It is because the function accepts a file path. By design it will not accept even local &amp;lt;tt&amp;gt;file://&amp;lt;/tt&amp;gt; URLs.&lt;br /&gt;
&lt;br /&gt;
So how do we save to a remote location?&lt;br /&gt;
&lt;br /&gt;
==== Even better image saving (feat. TDEIO) ====&lt;br /&gt;
At some point you might have wondered how TDE applications are able to save to a remote or network location almost as seamlessly as to a directory on your hard drive. The TDEIO component is responsible for all the behind-the-scenes magic. In other word, you don&amp;#039;t need to make your application speak FTP in order to be able to save an image to a remote FTP server. TDEIO automatically infers the protocol from the URL and starts a subprogram which handles all the needed communication and hides the protocol specifics behind well-known file operations, such as copy or delete.&lt;br /&gt;
&lt;br /&gt;
Most TDE applications do not make use of TDEIO itself, but rather &amp;lt;tt&amp;gt;TDEIO::NetAccess&amp;lt;/tt&amp;gt;, an API meant to simplify network file operations. We will only need one of its methods, &amp;lt;tt&amp;gt;upload(...)&amp;lt;/tt&amp;gt;, which takes a local file URL and a remote destination URL as arguments. Yes, you read that right. We need to create a temporary local file, which we will upload to the user&amp;#039;s chosen destination, and which we will then remove. Fortunately, TDE provides just the class for the occasion; that is {{TDE class|tdelibs|tdecore|KTempFile}}.&lt;br /&gt;
&lt;br /&gt;
Remember the mast two chunks of code we previously wrote? Time to rewrite them!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
if (saveURL.isLocalFile()) {&lt;br /&gt;
    bool ok = img.save(saveURL.path(), type.latin1());&lt;br /&gt;
    if (!ok) {&lt;br /&gt;
        kdError() &amp;lt;&amp;lt; &amp;quot;Couldn&amp;#039;t save!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We have the local file handler from our previous effort. Let&amp;#039;s proceed to write the handler for non-local files then. First, we&amp;#039;ll create a new {{TDE class|tdelibs|tdecore|KTempFile}}:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
    KTempFile tempFile;&lt;br /&gt;
    tempFile.setAutoDelete(true);&lt;br /&gt;
    TQString tempFileName = tempFile.name();&lt;br /&gt;
    if (tempFileName.isEmpty()) {&lt;br /&gt;
        kdError() &amp;lt;&amp;lt; &amp;quot;could not create a temp file!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now let&amp;#039;s save our image to that file:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
    bool ok = img.save(tempFileName, type.latin1());&lt;br /&gt;
    if (!ok) {&lt;br /&gt;
        kdError() &amp;lt;&amp;lt; &amp;quot;Couldn&amp;#039;t write temporary file: &amp;quot; &amp;lt;&amp;lt; tempFileName &amp;lt;&amp;lt; endl;&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally, let&amp;#039;s upload that file to the remote location:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
if (!TDEIO::NetAccess::upload(tempFileName, saveURL, this)) {&lt;br /&gt;
    kdError() &amp;lt;&amp;lt; &amp;quot;Could not upload file to &amp;quot; &amp;lt;&amp;lt; saveURL &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We now have a file dialog which can save in every image format that TQt and TDE support writing to, and which supports both local and non-local filesystems.&lt;br /&gt;
&lt;br /&gt;
== TDE Developers&amp;#039; usage ==&lt;br /&gt;
=== Adding image format support ===&lt;br /&gt;
{{TODO}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Developers]]&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&amp;diff=3231</id>
		<title>Images (for developers)</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&amp;diff=3231"/>
		<updated>2023-11-25T21:56:53Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Add section on saving images&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WIP|Blu256}}&lt;br /&gt;
&lt;br /&gt;
Working with images is an important part of a graphical application, whether it&amp;#039;s a simple application or a complex graphical suite. In TQt/TDE, this can be as simple as learning to use a few classes. This guide aims to be a good guide for developers who want to work with TQt/TDE.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Image classes ==&lt;br /&gt;
* {{TQt class|TQPixmap}} is one of the two basic image classes provided by TQt.&lt;br /&gt;
: It is, essentially, a paint device, so it is optimized for drawing. You&amp;#039;ll see this class used a lot (more than TQImage) because of this quality.&lt;br /&gt;
* {{TQt class|TQImage}} is the other basic image class.&lt;br /&gt;
: According to the API docs, it is &amp;quot;a hardware-independent pixmap representation&amp;quot; and it is optimized for I/O operations and direct pixel access and manipulation.&lt;br /&gt;
* {{TQt class|TQIconSet}} is a helper class for icons.&lt;br /&gt;
: Compared to the basic image classes, this class does not represent a single image, but a &amp;#039;&amp;#039;set&amp;#039;&amp;#039; of images which correspond to an icon. A folder icon can come in different sizes (a different image file corresponds to each size), but it is still considered to be the same icon.&lt;br /&gt;
&lt;br /&gt;
Usually you won&amp;#039;t need more advanced classes.&lt;br /&gt;
&lt;br /&gt;
== Basic usage ==&lt;br /&gt;
=== Loading an image ===&lt;br /&gt;
The simplest way to load an image is to use the constructor of the {{TQt class|TQPixmap}} class with the path of the file you want to load. If the file is located in one of your application paths (e.g. the &amp;lt;tt&amp;gt;share&amp;lt;/tt&amp;gt; folder) use the {{TDE class|tdelibs|tdecore|TDEStandardDirs}} class.&lt;br /&gt;
&lt;br /&gt;
If you want to load an icon, the simplest (and by far the most preferred) way to do so is via the  {{TDE class|tdelibs|tdecore|TDEIconLoader}} class. For TDE applications you don&amp;#039;t even have to explicitly initialize this object. You can access an instance of this class through the `kapp` pointer of the {{TDE class|tdelibs|tdecore|TDEApplication}} class. The icon loader class makes sure that recommended settings are used for the kind of icon you are loading, so you usually need to provide a `group` parameter of type [http://trinitydesktop.org/docs/trinity/tdelibs/tdecore/html/classTDEIcon.html#a8d521faaf8f00ecbe33314a08d386f91 TDEIcon::Group] which defines the type of icon that you are loading and will decide its size and whether any effects will be applied to it. For example, to load a folder icon with the default settings for a toolbar icon:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQPixmap icon = kapp-&amp;gt;iconLoader()-&amp;gt;loadIcon(&amp;quot;folder&amp;quot;, TDEIcon::Toolbar);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to let the user choose an image, you can make use of {{TDE class|tdelibs|tdeio/tdefile|KFileDialog}}. You might want to use &amp;#039;&amp;#039;&amp;#039;KImageIO&amp;#039;&amp;#039;&amp;#039; in your project to support more image formats.&lt;br /&gt;
&lt;br /&gt;
=== Displaying an image ===&lt;br /&gt;
Images can be used in quite a few widgets, including labels, text views and buttons. These widgets offer constructors and/or functions where you can pass an image as an argument (usually as a {{TQt class|TQPixmap}} or a {{TQt class|TQIconSet}}.&lt;br /&gt;
&lt;br /&gt;
The following example creates a push button with a folder icon from the icon theme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQIconSet icon = kapp-&amp;gt;iconLoader()-&amp;gt;loadIconSet(&amp;quot;folder&amp;quot;, TDEIcon::Toolbar);&lt;br /&gt;
TQPushButton *button = new TQPushButton(icon, i18n(&amp;quot;Open folder...&amp;quot;), this);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to display an image as standalone, you first need a widget where you will display it. Usually, a {{TQt class|TQLabel}} should be enough.&lt;br /&gt;
&lt;br /&gt;
=== Vector images (SVG) ===&lt;br /&gt;
{{TODO}}&lt;br /&gt;
&lt;br /&gt;
=== Applying effects ===&lt;br /&gt;
{{TODO}}&lt;br /&gt;
&lt;br /&gt;
== Advanced usage ==&lt;br /&gt;
=== Loading KImageIO ===&lt;br /&gt;
KImageIO is a library which allows applications that use the TQt library (i.e. TQImageIO, TQImage, TQPixmap and friends) to read and write images in extra formats. It essentially extends TQImageIO with support for more image formats.&lt;br /&gt;
&lt;br /&gt;
To make use of KImageIO you only need to:&lt;br /&gt;
# link your application with the &amp;lt;tt&amp;gt;tdeio&amp;lt;/tt&amp;gt; library&lt;br /&gt;
# Include the &amp;lt;kimageio.h&amp;gt; header&lt;br /&gt;
# call KImageIO::registerFormats() once, somewhere in your code, before you load an image.&lt;br /&gt;
&lt;br /&gt;
=== Saving an image ===&lt;br /&gt;
Saving an image is a complex process which involves a lot of factors, such as image format, quality, remote vs. local destination etc. Fortunately it&amp;#039;s made easy thanks to technologies such as [[TDEIO]] and KImageIO.&lt;br /&gt;
&lt;br /&gt;
Let&amp;#039;s start with the basics.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;tt&amp;gt;TQImage::save(...)&amp;lt;/tt&amp;gt; ====&lt;br /&gt;
{{TQt class|TQImage}} provides a convenient &amp;lt;code&amp;gt;save(const TQString &amp;amp;fileName, const char *format, int quality = -1)&amp;lt;/code&amp;gt; method which, as you can tell, saves the image in memory to the selected destination (&amp;lt;tt&amp;gt;fileName&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;format&amp;lt;/tt&amp;gt; argument is a string that represents the image format in which the file will be saved. The allowed values are determined by the file formats for which {{TQt class|TQImageIO}} has write support.&lt;br /&gt;
&lt;br /&gt;
TQt natively supports PNG, BMP, XBM, XPM, PNM, JPEG, MNG and GIF formats (support for the latter three formats is configured at compile-time). For details on these formats refer to the {{TQt class|TQImageIO}} API documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;KImageIO&amp;#039;&amp;#039;&amp;#039; adds support for more file formats, such as JPEG2000, EPS and TGA.&lt;br /&gt;
&lt;br /&gt;
For example, to save an image &amp;lt;code&amp;gt;TQImage img&amp;lt;/code&amp;gt; in PNG format, you could use the following call:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
img.save(&amp;quot;/home/test/image.png&amp;quot;, &amp;quot;PNG&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;quality&amp;lt;/tt&amp;gt; parameter is pretty self-explanatory. Its default value is -1, which will make TQt use the default quality when saving.&lt;br /&gt;
&lt;br /&gt;
You can combine the above code with {{TDE class|tdelibs|tdeio/tdefile|KFileDialog}} to get a decent save dialog which can save your PNG image locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQString saveFile = KFileDialog::getSaveFileName(TQString::null, &amp;quot;*.PNG|&amp;quot; + i18n(&amp;quot;PNG image (*.png)&amp;quot;), this);&lt;br /&gt;
if (!saveFile.isEmpty()) {&lt;br /&gt;
    img.save(saveFile, &amp;quot;PNG&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But what if we want more? What if we want to support more file formats? And what about saving on another computer via (S)FTP or another protocol?&lt;br /&gt;
&lt;br /&gt;
==== Better image saving (feat. KImageIO) ====&lt;br /&gt;
Let&amp;#039;s improve the situation with file formats by making use of some features of KImageIO.&lt;br /&gt;
&lt;br /&gt;
We shall start by querying KImageIO for all the image formats it can write to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQStringList mimeTypes = KImageIO::mimeTypes(KImageIO::Writing);&lt;br /&gt;
if (mimeTypes.isEmpty()) {&lt;br /&gt;
    kdError() &amp;lt;&amp;lt; &amp;quot;kimgio: no image formats support writing!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example shows some basic error handling. You should probably properly inform the user about the failure and abort the save operation at that point.&lt;br /&gt;
&lt;br /&gt;
Then we can construct a file dialog based on the MIME information that we obtained. It&amp;#039;s worth noting that the convenient static methods of {{TDE class|tdelibs|tdeio/tdefile|KFileDialog}} cannot take a &amp;lt;tt&amp;gt;TQStringList mimeTypes&amp;lt;/tt&amp;gt; as argument, so we will have to construct the dialog more or less manually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
KFileDialog *saveDlg = new KFileDialog(TQString::null, TQString::null, this, &amp;quot;mysavedialog&amp;quot;, true);&lt;br /&gt;
saveDlg-&amp;gt;setOperationMode(KFileDialog::Saving);&lt;br /&gt;
saveDlg-&amp;gt;setMimeFilter(mimeTypes);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then we can execute the dialog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
if (!saveDlg-&amp;gt;exec()) {&lt;br /&gt;
    // The dialog was canceled&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally, after it has been closed, we can obtain the URL where we will save the file. It&amp;#039;s a good idea to check the input thoroughly. Once again, you should implement proper error handling for when something goes wrong. I cannot stress enough the importance of sane error handling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
KURL saveURL = saveDlg-&amp;gt;selectedURL();&lt;br /&gt;
&lt;br /&gt;
TQString type = KImageIO::type(saveURL.url());&lt;br /&gt;
if (!KImageIO::canWrite(type)) {&lt;br /&gt;
    kdError() &amp;lt;&amp;lt; &amp;quot;kimgio: writing to image format &amp;quot; &amp;lt;&amp;lt; type &amp;lt;&amp;lt; &amp;quot; is not supported&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For simplicity&amp;#039;s sake we will only accept local URLs for now.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
if (!saveURL.isLocalFile()) {&lt;br /&gt;
    kdError() &amp;lt;&amp;lt; &amp;quot;Cannot save to remote location (yet!)&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
    return;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, now that we have the URL, what&amp;#039;s next? Easy, we actually save the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
bool ok = img.save(saveURL.path(), type.latin1());&lt;br /&gt;
if (!ok) {&lt;br /&gt;
    kdError() &amp;lt;&amp;lt; &amp;quot;Couldn&amp;#039;t save!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note how we use &amp;lt;tt&amp;gt;path()&amp;lt;/tt&amp;gt; on saveURL instead of &amp;lt;tt&amp;gt;url()&amp;lt;/tt&amp;gt;. It is because the function accepts a file path. By design it will not accept even local &amp;lt;tt&amp;gt;file://&amp;lt;/tt&amp;gt; URLs.&lt;br /&gt;
&lt;br /&gt;
So how do we save to a remote location?&lt;br /&gt;
&lt;br /&gt;
==== Even better image saving (feat. TDEIO) ====&lt;br /&gt;
At some point you might have wondered how TDE applications are able to save to a remote or network location almost as seamlessly as to a directory on your hard drive. The TDEIO component is responsible for all the behind-the-scenes magic. In other word, you don&amp;#039;t need to make your application speak FTP in order to be able to save an image to a remote FTP server. TDEIO automatically infers the protocol from the URL and starts a subprogram which handles all the needed communication and hides the protocol specifics behind well-known file operations, such as copy or delete.&lt;br /&gt;
&lt;br /&gt;
Most TDE applications do not make use of TDEIO itself, but rather &amp;lt;tt&amp;gt;TDEIO::NetAccess&amp;lt;/tt&amp;gt;, an API meant to simplify network file operations. We will only need one of its methods, &amp;lt;tt&amp;gt;upload(...)&amp;lt;/tt&amp;gt;, which takes a local file URL and a remote destination URL as arguments. Yes, you read that right. We need to create a temporary local file, which we will upload to the user&amp;#039;s chosen destination, and which we will then remove. Fortunately, TDE provides just the class for the occasion; that is {{TDE class|tdelibs|tdecore|KTempFile}}.&lt;br /&gt;
&lt;br /&gt;
Remember the mast two chunks of code we previously wrote? Time to rewrite them!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
if (saveURL.isLocalFile()) {&lt;br /&gt;
    bool ok = img.save(saveURL.path(), type.latin1());&lt;br /&gt;
    if (!ok) {&lt;br /&gt;
        kdError() &amp;lt;&amp;lt; &amp;quot;Couldn&amp;#039;t save!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We have the local file handler from our previous effort. Let&amp;#039;s proceed to write the handler for non-local files then. First, we&amp;#039;ll create a new {{TDE class|tdelibs|tdecore|KTempFile}}:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
    KTempFile tempFile;&lt;br /&gt;
    tempFile.setAutoDelete(true);&lt;br /&gt;
    TQString tempFileName = tempFile.name();&lt;br /&gt;
    if (tempFileName.isEmpty()) {&lt;br /&gt;
        kdError() &amp;lt;&amp;lt; &amp;quot;could not create a temp file!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now let&amp;#039;s save our image to that file:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
    bool ok = img.save(tempFileName, type.latin1());&lt;br /&gt;
    if (!ok) {&lt;br /&gt;
        kdError() &amp;lt;&amp;lt; &amp;quot;Couldn&amp;#039;t write temporary file: &amp;quot; &amp;lt;&amp;lt; tempFileName &amp;lt;&amp;lt; endl;&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally, let&amp;#039;s upload that file to the remote location:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
if (!TDEIO::NetAccess::upload(tempFileName, saveURL, this)) {&lt;br /&gt;
    kdError() &amp;lt;&amp;lt; &amp;quot;Could not upload file to &amp;quot; &amp;lt;&amp;lt; saveURL &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We now have a file dialog which can save in every image format that TQt and TDE support writing to, and which supports both local and non-local filesystems.&lt;br /&gt;
&lt;br /&gt;
== TDE Developers&amp;#039; usage ==&lt;br /&gt;
=== Adding image format support ===&lt;br /&gt;
{{TODO}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Developers]]&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&amp;diff=3230</id>
		<title>Images (for developers)</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&amp;diff=3230"/>
		<updated>2023-11-25T20:58:11Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Add layout of page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WIP|Blu256}}&lt;br /&gt;
&lt;br /&gt;
Working with images is an important part of a graphical application, whether it&amp;#039;s a simple application or a complex graphical suite. In TQt/TDE, this can be as simple as learning to use a few classes. This guide aims to be a good guide for developers who want to work with TQt/TDE.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Image classes ==&lt;br /&gt;
* {{TQt class|TQPixmap}} is one of the two basic image classes provided by TQt.&lt;br /&gt;
: It is, essentially, a paint device, so it is optimized for drawing. You&amp;#039;ll see this class used a lot (more than TQImage) because of this quality.&lt;br /&gt;
* {{TQt class|TQImage}} is the other basic image class.&lt;br /&gt;
: According to the API docs, it is &amp;quot;a hardware-independent pixmap representation&amp;quot; and it is optimized for I/O operations and direct pixel access and manipulation.&lt;br /&gt;
* {{TQt class|TQIconSet}} is a helper class for icons.&lt;br /&gt;
: Compared to the basic image classes, this class does not represent a single image, but a &amp;#039;&amp;#039;set&amp;#039;&amp;#039; of images which correspond to an icon. A folder icon can come in different sizes (a different image file corresponds to each size), but it is still considered to be the same icon.&lt;br /&gt;
&lt;br /&gt;
Usually you won&amp;#039;t need more advanced classes.&lt;br /&gt;
&lt;br /&gt;
== Basic usage ==&lt;br /&gt;
=== Loading an image ===&lt;br /&gt;
The simplest way to load an image is to use the constructor of the {{TQt class|TQPixmap}} class with the path of the file you want to load. If the file is located in one of your application paths (e.g. the &amp;lt;tt&amp;gt;share&amp;lt;/tt&amp;gt; folder) use the {{TDE class|tdelibs|tdecore|TDEStandardDirs}} class.&lt;br /&gt;
&lt;br /&gt;
If you want to load an icon, the simplest (and by far the most preferred) way to do so is via the  {{TDE class|tdelibs|tdecore|TDEIconLoader}} class. For TDE applications you don&amp;#039;t even have to explicitly initialize this object. You can access an instance of this class through the `kapp` pointer of the {{TDE class|tdelibs|tdecore|TDEApplication}} class. The icon loader class makes sure that recommended settings are used for the kind of icon you are loading, so you usually need to provide a `group` parameter of type [http://trinitydesktop.org/docs/trinity/tdelibs/tdecore/html/classTDEIcon.html#a8d521faaf8f00ecbe33314a08d386f91 TDEIcon::Group] which defines the type of icon that you are loading and will decide its size and whether any effects will be applied to it. For example, to load a folder icon with the default settings for a toolbar icon:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQPixmap icon = kapp-&amp;gt;iconLoader()-&amp;gt;loadIcon(&amp;quot;folder&amp;quot;, TDEIcon::Toolbar);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Displaying an image ===&lt;br /&gt;
Images can be used in quite a few widgets, including labels, text views and buttons. These widgets offer constructors and/or functions where you can pass an image as an argument (usually as a {{TQt class|TQPixmap}} or a {{TQt class|TQIconSet}}.&lt;br /&gt;
&lt;br /&gt;
The following example creates a push button with a folder icon from the icon theme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQIconSet icon = kapp-&amp;gt;iconLoader()-&amp;gt;loadIconSet(&amp;quot;folder&amp;quot;, TDEIcon::Toolbar);&lt;br /&gt;
TQPushButton *button = new TQPushButton(icon, i18n(&amp;quot;Open folder...&amp;quot;), this);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to display an image as standalone, you first need a widget where you will display it. Usually, a {{TQt class|TQLabel}} should be enough.&lt;br /&gt;
&lt;br /&gt;
=== Applying effects ===&lt;br /&gt;
{{TODO}}&lt;br /&gt;
&lt;br /&gt;
== Advanced usage ==&lt;br /&gt;
=== Saving an image ===&lt;br /&gt;
{{TODO}}&lt;br /&gt;
&lt;br /&gt;
==== Using KImageIO ====&lt;br /&gt;
{{TODO}}&lt;br /&gt;
&lt;br /&gt;
== TDE Developers&amp;#039; usage ==&lt;br /&gt;
=== Adding image format support ===&lt;br /&gt;
{{TODO}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Developers]]&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&amp;diff=3229</id>
		<title>Images (for developers)</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&amp;diff=3229"/>
		<updated>2023-11-25T20:55:17Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Switch to the new TDE class template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WIP|Blu256}}&lt;br /&gt;
&lt;br /&gt;
Working with images is an important part of a graphical application, whether it&amp;#039;s a simple application or a complex graphical suite. In TQt/TDE, this can be as simple as learning to use a few classes. This guide aims to be a good guide for developers who want to work with TQt/TDE.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Image classes ==&lt;br /&gt;
* {{TQt class|TQPixmap}} is one of the two basic image classes provided by TQt.&lt;br /&gt;
: It is, essentially, a paint device, so it is optimized for drawing. You&amp;#039;ll see this class used a lot (more than TQImage) because of this quality.&lt;br /&gt;
* {{TQt class|TQImage}} is the other basic image class.&lt;br /&gt;
: According to the API docs, it is &amp;quot;a hardware-independent pixmap representation&amp;quot; and it is optimized for I/O operations and direct pixel access and manipulation.&lt;br /&gt;
* {{TQt class|TQIconSet}} is a helper class for icons.&lt;br /&gt;
: Compared to the basic image classes, this class does not represent a single image, but a &amp;#039;&amp;#039;set&amp;#039;&amp;#039; of images which correspond to an icon. A folder icon can come in different sizes (a different image file corresponds to each size), but it is still considered to be the same icon.&lt;br /&gt;
&lt;br /&gt;
Usually you won&amp;#039;t need more advanced classes.&lt;br /&gt;
&lt;br /&gt;
== Loading an image ==&lt;br /&gt;
The simplest way to load an image is to use the constructor of the {{TQt class|TQPixmap}} class with the path of the file you want to load. If the file is located in one of your application paths (e.g. the &amp;lt;tt&amp;gt;share&amp;lt;/tt&amp;gt; folder) use the {{TDE class|tdelibs|tdecore|TDEStandardDirs}} class.&lt;br /&gt;
&lt;br /&gt;
If you want to load an icon, the simplest (and by far the most preferred) way to do so is via the  {{TDE class|tdelibs|tdecore|TDEIconLoader}} class. For TDE applications you don&amp;#039;t even have to explicitly initialize this object. You can access an instance of this class through the `kapp` pointer of the {{TDE class|tdelibs|tdecore|TDEApplication}} class. The icon loader class makes sure that recommended settings are used for the kind of icon you are loading, so you usually need to provide a `group` parameter of type [http://trinitydesktop.org/docs/trinity/tdelibs/tdecore/html/classTDEIcon.html#a8d521faaf8f00ecbe33314a08d386f91 TDEIcon::Group] which defines the type of icon that you are loading and will decide its size and whether any effects will be applied to it. For example, to load a folder icon with the default settings for a toolbar icon:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQPixmap icon = kapp-&amp;gt;iconLoader()-&amp;gt;loadIcon(&amp;quot;folder&amp;quot;, TDEIcon::Toolbar);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Displaying an image ==&lt;br /&gt;
Images can be used in quite a few widgets, including labels, text views and buttons. These widgets offer constructors and/or functions where you can pass an image as an argument (usually as a {{TQt class|TQPixmap}} or a {{TQt class|TQIconSet}}.&lt;br /&gt;
&lt;br /&gt;
The following example creates a push button with a folder icon from the icon theme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQIconSet icon = kapp-&amp;gt;iconLoader()-&amp;gt;loadIconSet(&amp;quot;folder&amp;quot;, TDEIcon::Toolbar);&lt;br /&gt;
TQPushButton *button = new TQPushButton(icon, i18n(&amp;quot;Open folder...&amp;quot;), this);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to display an image as standalone, you first need a widget where you will display it. Usually, a {{TQt class|TQLabel}} should be enough.&lt;br /&gt;
&lt;br /&gt;
[[Category: Developers]]&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Template:TDE_class&amp;diff=3228</id>
		<title>Template:TDE class</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Template:TDE_class&amp;diff=3228"/>
		<updated>2023-11-25T20:52:59Z</updated>

		<summary type="html">&lt;p&gt;Blu256: fix class name display&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TDE class&amp;#039;&amp;#039;&amp;#039; is a template which should be used to denote TDE classes.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html+handlebars&amp;quot;&amp;gt;&lt;br /&gt;
Use {{TDE class|tdelibs|tdecore|TDEIconLoader}}.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use {{TDE class|tdelibs|tdecore|TDEIconLoader}}.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;span style=&amp;quot;color: midnightblue; font-weight: bold;&amp;quot;&amp;gt;{{{3}}} &amp;lt;sup class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://trinitydesktop.org/docs/trinity/{{{1}}}/{{{2}}}/html/class{{{3}}}.html API]&amp;lt;/sup&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Template:TDE_class&amp;diff=3227</id>
		<title>Template:TDE class</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Template:TDE_class&amp;diff=3227"/>
		<updated>2023-11-25T20:51:28Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Add TDE class template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TDE class&amp;#039;&amp;#039;&amp;#039; is a template which should be used to denote TDE classes.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html+handlebars&amp;quot;&amp;gt;&lt;br /&gt;
Use {{TDE class|tdelibs|tdecore|TDEIconLoader}}.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use {{TDE class|tdelibs|tdecore|TDEIconLoader}}.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;span style=&amp;quot;color: midnightblue; font-weight: bold;&amp;quot;&amp;gt;{{{1}}} &amp;lt;sup class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://trinitydesktop.org/docs/trinity/{{{1}}}/{{{2}}}/html/class{{{3}}}.html API]&amp;lt;/sup&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&amp;diff=3226</id>
		<title>Images (for developers)</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&amp;diff=3226"/>
		<updated>2023-11-25T20:48:07Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Added basic instructions for loading and displaying images&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WIP|Blu256}}&lt;br /&gt;
&lt;br /&gt;
Working with images is an important part of a graphical application, whether it&amp;#039;s a simple application or a complex graphical suite. In TQt/TDE, this can be as simple as learning to use a few classes. This guide aims to be a good guide for developers who want to work with TQt/TDE.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Image classes ==&lt;br /&gt;
* {{TQt class|TQPixmap}} is one of the two basic image classes provided by TQt.&lt;br /&gt;
: It is, essentially, a paint device, so it is optimized for drawing. You&amp;#039;ll see this class used a lot (more than TQImage) because of this quality.&lt;br /&gt;
* {{TQt class|TQImage}} is the other basic image class.&lt;br /&gt;
: According to the API docs, it is &amp;quot;a hardware-independent pixmap representation&amp;quot; and it is optimized for I/O operations and direct pixel access and manipulation.&lt;br /&gt;
* {{TQt class|TQIconSet}} is a helper class for icons.&lt;br /&gt;
: Compared to the basic image classes, this class does not represent a single image, but a &amp;#039;&amp;#039;set&amp;#039;&amp;#039; of images which correspond to an icon. A folder icon can come in different sizes (a different image file corresponds to each size), but it is still considered to be the same icon.&lt;br /&gt;
&lt;br /&gt;
Usually you won&amp;#039;t need more advanced classes.&lt;br /&gt;
&lt;br /&gt;
== Loading an image ==&lt;br /&gt;
The simplest way to load an image is to use the constructor of the {{TQt class|TQPixmap}} class with the path of the file you want to load. If the file is located in one of your application paths (e.g. the &amp;lt;tt&amp;gt;share&amp;lt;/tt&amp;gt; folder) use the [http://trinitydesktop.org/docs/trinity/tdelibs/tdecore/html/classTDEStandardDirs.html TDEStandardDirs] class.&lt;br /&gt;
&lt;br /&gt;
If you want to load an icon, the simplest (and by far the most preferred) way to do so is via the  [http://trinitydesktop.org/docs/trinity/tdelibs/tdecore/html/classTDEIconLoader.html TDEIconLoader] class. For TDE applications you don&amp;#039;t even have to explicitly initialize this object. You can access a TDEIconLoader instance from the [http://trinitydesktop.org/docs/trinity/tdelibs/tdecore/html/classTDEApplication.html TDEApplication] class. The TDEIconLoader class makes sure that recommended settings are used for the kind of icon you are loading, so you usually need to provide a `group` parameter of type [http://trinitydesktop.org/docs/trinity/tdelibs/tdecore/html/classTDEIcon.html#a8d521faaf8f00ecbe33314a08d386f91 TDEIcon::Group] which defines the type of icon that you are loading and will decide its size and whether any effects will be applied to it. For example, to load a folder icon with the default settings for a toolbar icon:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQPixmap icon = kapp-&amp;gt;iconLoader()-&amp;gt;loadIcon(&amp;quot;folder&amp;quot;, TDEIcon::Toolbar);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Displaying an image ==&lt;br /&gt;
Images can be used in quite a few widgets, including labels, text views and buttons. These widgets offer constructors and/or functions where you can pass an image as an argument (usually as a {{TQt class|TQPixmap}} or a {{TQt class|TQIconSet}}.&lt;br /&gt;
&lt;br /&gt;
The following example creates a push button with a folder icon from the icon theme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
TQIconSet icon = kapp-&amp;gt;iconLoader()-&amp;gt;loadIconSet(&amp;quot;folder&amp;quot;, TDEIcon::Toolbar);&lt;br /&gt;
TQPushButton *button = new TQPushButton(icon, i18n(&amp;quot;Open folder...&amp;quot;), this);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to display an image as standalone, you first need a widget where you will display it. Usually, a {{TQt class|TQLabel}} should be enough.&lt;br /&gt;
&lt;br /&gt;
[[Category: Developers]]&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&amp;diff=3225</id>
		<title>Images (for developers)</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&amp;diff=3225"/>
		<updated>2023-11-25T20:28:28Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Started writing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WIP|Blu256}}&lt;br /&gt;
&lt;br /&gt;
Working with images is an important part of a graphical application, whether it&amp;#039;s a simple application or a complex graphical suite. In TQt/TDE, this can be as simple as learning to use a few classes. This guide aims to be a good guide for developers who want to work with TQt/TDE.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Image classes ==&lt;br /&gt;
* {{TQt class|TQPixmap}} is one of the two basic image classes provided by TQt.&lt;br /&gt;
: It is, essentially, a paint device, so it is optimized for drawing. You&amp;#039;ll see this class used a lot (more than TQImage) because of this quality.&lt;br /&gt;
* {{TQt class|TQImage}} is the other basic image class.&lt;br /&gt;
: According to the API docs, it is &amp;quot;a hardware-independent pixmap representation&amp;quot; and it is optimized for I/O operations and direct pixel access and manipulation.&lt;br /&gt;
* {{TQt class|TQIconSet}} is a helper class for icons.&lt;br /&gt;
: Compared to the basic image classes, this class does not represent a single image, but a &amp;#039;&amp;#039;set&amp;#039;&amp;#039; of images which correspond to an icon. A folder icon can come in different sizes (a different image file corresponds to each size), but it is still considered to be the same icon.&lt;br /&gt;
&lt;br /&gt;
[[Category: Developers]]&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=LiveCDs&amp;diff=3214</id>
		<title>LiveCDs</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=LiveCDs&amp;diff=3214"/>
		<updated>2023-10-29T18:11:35Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Mark some links as outdated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Documentation]]&lt;br /&gt;
&lt;br /&gt;
Each of these LiveCDs comes with the Trinity Desktop Environment preinstalled, so that you can try it out without having to mess around with installing it in your main environment. Unless otherwise marked, all of them contain the most recent version of Trinity.&lt;br /&gt;
&lt;br /&gt;
===Distributions===&lt;br /&gt;
*[https://dragora.org/en/index.html Dragora GNU/Linux-Libre] - &amp;lt;i&amp;gt;independent, [https://www.gnu.org/distros/free-distros.html FSF-approved libre distribution]&amp;lt;/i&amp;gt;&lt;br /&gt;
*[http://exegnulinux.net/ Exe Gnu/Linux]&lt;br /&gt;
*[http://trinity.mypclinuxos.com/ PCLinuxOS (external)]&lt;br /&gt;
*[http://www.q4os.org/ Q4OS]&lt;br /&gt;
*[https://www.ttoslinux.org/download.html TTOS Linux]&lt;br /&gt;
&lt;br /&gt;
====Outdated====&lt;br /&gt;
*[[ALTLinuxInstall|ALT Linux]]&lt;br /&gt;
**[http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/images/starterkits/ P7 starterkit] (based on stable branch)&lt;br /&gt;
**[http://en.altlinux.org/Regular Regular TDE] (weekly build based on Sisyphus the dev repo)&lt;br /&gt;
*[http://mirror.ppa.trinitydesktop.org/trinity/cdimages/pclinuxos/ PCLinuxOS (internal)]&lt;br /&gt;
*[[Slax with Trinity]]&lt;br /&gt;
*[http://mirror.ppa.trinitydesktop.org/trinity/cdimages/ubuntu/ Ubuntu Releases]&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=User_talk:Mrmazda&amp;diff=3213</id>
		<title>User talk:Mrmazda</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=User_talk:Mrmazda&amp;diff=3213"/>
		<updated>2023-10-29T17:52:52Z</updated>

		<summary type="html">&lt;p&gt;Blu256: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Recent addition to Mageia page =&lt;br /&gt;
&lt;br /&gt;
Hello [[User:Mrmazda|Mrmazda]],&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;m writing in relation to your most recent addition to the Mageia installation page:&lt;br /&gt;
&lt;br /&gt;
 To first { } pair in file /etc/urpmi/urpmi.cfg, add line with string curl-options: -L, or add -L to existing curl-options line if not already present.&lt;br /&gt;
&lt;br /&gt;
Could you please clarify on the page why (and in what cases) the addition of the curl &amp;quot;follow redirects&amp;quot; flag is needed? Thank you!&lt;br /&gt;
&lt;br /&gt;
Mavridis Philippe (blu.256) 09:57, 9 May 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
: https://mail.trinitydesktop.org/mailman3/hyperkitty/list/devels@trinitydesktop.org/message/ZHD3J2K3FNJ7CJOQPLK6OPN4SIJTT56I/ explains the Mageia urpmi package management system prefers curl, which doesn&amp;#039;t always play nice with Trinity&amp;#039;s mirroring system.&lt;br /&gt;
&lt;br /&gt;
:: Thank you! -- Mavridis Philippe (blu.256) 17:52, 29 October 2023 (UTC)&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
	<entry>
		<id>https://wiki.trinitydesktop.org/index.php?title=Arch_Trinity_Repository_Installation_Instructions&amp;diff=3212</id>
		<title>Arch Trinity Repository Installation Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.trinitydesktop.org/index.php?title=Arch_Trinity_Repository_Installation_Instructions&amp;diff=3212"/>
		<updated>2023-10-29T17:48:47Z</updated>

		<summary type="html">&lt;p&gt;Blu256: Replace latest release (R14.1.1)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current latest release ([[Release Notes For R14.1.1|R14.1.1]]) is available for Arch in the form of prebuilt packages for x86_64, aarch64 and armv7h architectures.&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
&lt;br /&gt;
1. Add official Trinity ArchLinux repository to &amp;lt;kbd&amp;gt;/etc/pacman.conf&amp;lt;/kbd&amp;gt; on your system:&lt;br /&gt;
&lt;br /&gt;
  [trinity]&lt;br /&gt;
  Server = https://mirror.ppa.trinitydesktop.org/trinity/archlinux/$arch&lt;br /&gt;
&lt;br /&gt;
2. Fetch GPG key and add to pacman keychain on your system:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# pacman-key --recv-key  D6D6FAA25E9A3E4ECD9FBDBEC93AF1698685AD8B&lt;br /&gt;
# pacman-key --lsign-key D6D6FAA25E9A3E4ECD9FBDBEC93AF1698685AD8B&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Synchronize Pacman databases (optionally update your system):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# pacman -Sy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Install the necessary packages.&lt;br /&gt;
: e.g. for a full Trinity installation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# pacman -S tde-meta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Blu256</name></author>
	</entry>
</feed>