https://wiki.trinitydesktop.org/api.php?action=feedcontributions&user=Blu256&feedformat=atomTrinity Desktop Project Wiki - User contributions [en]2024-03-28T23:26:03ZUser contributionsMediaWiki 1.35.13https://wiki.trinitydesktop.org/index.php?title=User:Blu256&diff=3291User:Blu2562024-03-13T14:49:05Z<p>Blu256: Just writing down some thoughts</p>
<hr />
<div>= Contact =<br />
* [[User talk:Blu256|Wiki discussion page]]<br />
* Jabber: <tt>blu.256@jabb.im</tt><br />
* IRC nick: <tt>blu256</tt> (Libera.chat)<br />
<br />
= TODO list =<br />
<br />
Mostly for personal reference. Updated occasionally.<br />
<br />
{| class="wikitable"<br />
|+ Currently working on...<br />
! Name<br />
! Type<br />
! Stage<br />
! Target<br />
|-<br />
| [https://mirror.git.trinitydesktop.org/gitea/TDE/tdemultimedia/pulls/31 KMix indicator]<br />
| Feature<br />
| Working on this<br />
| R14.1.2<br />
|}<br />
<br />
{| class="wikitable"<br />
|+ Misc. Planned Stuff<br />
! Name<br />
! Type<br />
! Stage<br />
! Target<br />
|-<br />
| Active borders and corners for TWin<br />
| Feature<br />
| Active borders support in [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/pulls/331 TDE/tdebase#331], more work needed for active corners)<br />
| Active borders: R14.1.1<br />
|-<br />
| [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/issues/271 Kate: fix font style checkboxes between different schema font tabs]<br />
| Improvement<br />
| On hold<br />
| R14.1.1<br />
|-<br />
| tdeio-mtp<br />
| Feature<br />
| On hold<br />
| R14.2.0<br />
|-<br />
| [https://mirror.git.trinitydesktop.org/gitea/TDE/tdelibs/issues/151 Make KSSL use system root certificates]<br />
| Improvement<br />
| On hold<br />
| R14.2.0<br />
|}<br />
<br />
== The Big Plans™ ==<br />
Making no commitments here, but this is what I ultimately would like to work on:<br />
<br />
* TQt: Support for latest Unicode including emoji<br />
** As soon as CMake port of TQt is complete (the current build system is an undocumented mess)<br />
** Probably look towards the ICU library, do not reinvent the wheel like Qt<br />
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.<br />
** Not a priority, but an emoji picker would be nice and also very easy to implement after TQt support is complete<br />
* TQt: Misc. new useful APIs<br />
** TQJson<br />
* WebKit port<br />
** I'd really like to work on this one but my hardware is barely enough for building even just JSCOnly :-/<br>There really isn't much you can do with a Intel Core i3 with 8GB RAM.<br />
** Probably two libraries:<br />
***TQWebKit: the basic port<br />
*** TDEWebKit: wrapper with TDE-specific enhancements?<br />
* OAuth support in KMail<br />
** Literally the only thing stopping me and many GMail users from using it<br />
** Depends on the WebKit port<br />
* A multimedia library for TDE<br />
** Something like Phonon, maybe even Phonon itself</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Category:Building_from_source_code&diff=3271Category:Building from source code2023-12-21T11:38:47Z<p>Blu256: Add category for convenicence</p>
<hr />
<div>{{:How to Build TDE}}</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Template:DistroTable&diff=3270Template:DistroTable2023-12-21T11:22:19Z<p>Blu256: Separate "Building from source" from the rest of the table, add link lo LiveCDs pagee</p>
<hr />
<div>This template provides a '''table with installation instructions''' per distribution/operating system. It also tells the latest available version of TDE for that system.<br />
<br />
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.<br />
<br />
Mark the latest release with <span style="background: lightgreen;">lightgreen</span>, the release before it with <span style="background: yellow;">yellow</span> and older releases with <span style="background: orange;">orange</span>.<br />
<br />
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.<br />
<br />
= Example =<br />
<br />
This is how it will look on the page:<br />
<br />
<onlyinclude>{|<br />
| style="vertical-align: top" | <!-- Official instructions --><br />
{|class="wikitable" style="margin: 0;"<br />
! colspan="2" | <big>Official Instructions</big><br />
|-<br />
| '''Distribution'''<br />
| '''Latest'''<br />
|-<br />
| [[Debian Trinity Repository Installation Instructions|Debian]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[Devuan Trinity Repository Installation Instructions|Devuan]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[Fedora Trinity Repository Installation Instructions|Fedora]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[RedHat Trinity Repository Installation Instructions|RedHat]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[Ubuntu Trinity Repository Installation Instructions|Ubuntu]]<br />
| style="background: lightgreen;" | R14.1.1 <br />
|}<br />
<br />
| style="vertical-align: top" | <!-- Unofficial instructions --><br />
{|class="wikitable" style="margin: 0;"<br />
! colspan="4" | <big>Community Instructions</big><br />
|-<br />
| '''Distribution'''<br />
| '''Latest'''<br />
| '''Distribution'''<br />
| '''Latest'''<br />
|-<br />
| [[Arch Trinity Repository Installation Instructions|Arch Linux]]<br />
| style="background: lightgreen;" | R14.1.1<br />
| [[MX Linux Trinity Repository Installation Instructions|MX Linux]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[FreeBSD Trinity Installation Instructions|FreeBSD]]<br />
| style="background: lightgreen;" | R14.1.1 <!-- R14.1.x branch actually --><br />
| [[OpenSUSE Trinity Repository Installation Instructions|OpenSUSE]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[Mageia Trinity Repository Installation Instructions|Mageia]]<br />
| style="background: lightgreen;" | R14.1.1<br />
| [[PCLinuxOS Trinity Repository Installation Instructions|PCLinuxOS]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[Slackware Trinity Installation Instructions|Slackware]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[Raspbian Trinity Repository Installation Instructions|Raspbian]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|}<br />
|-<br />
|colspan=2|<br />
{| class="wikitable" style="width: 100%; margin: 0;"<br />
|Building from source code: '''[[How to Build TDE Core Modules|base]]''' | '''[[How to Build Extra Applications|extra]]'''<br />
|style="text-align: center;"|[[LiveCDs|Try a LiveCD]]<br />
|}<br />
|}<br />
</onlyinclude></div>Blu256https://wiki.trinitydesktop.org/index.php?title=Category:Documentation&diff=3269Category:Documentation2023-12-21T11:18:40Z<p>Blu256: /* Release Notes */ R14.1.1 is the latest version</p>
<hr />
<div><br />
=Release Notes=<br />
<br />
; Latest release ([[Release Notes For R14.1.1|R14.1.1]])<br />
<div class="R14_release_notes mw-collapsible mw-collapsed" style="width:400px; overflow:auto;"><br />
; Older R14.0.x release notes.<br />
<div class="mw-collapsible-content"><br />
: [[Release Notes For R14.1.0|R14.1.0]]<br />
: [[Release Notes For R14.0.13|R14.0.13]]<br />
: [[Release Notes For R14.0.12|R14.0.12]]<br />
: [[Release Notes For R14.0.11|R14.0.11]]<br />
: [[Release Notes For R14.0.10|R14.0.10]]<br />
: [[Release Notes For R14.0.9|R14.0.9]]<br />
: [[Release Notes For R14.0.8|R14.0.8]]<br />
: [[Release Notes For R14.0.7|R14.0.7]]<br />
: [[Release Notes For R14.0.6|R14.0.6]]<br />
: [[Release Notes For R14.0.5|R14.0.5]]<br />
: [[Release Notes For R14.0.4|R14.0.4]]<br />
: [[Release Notes For R14.0.3|R14.0.3]]<br />
: [[Release Notes For R14.0.2|R14.0.2]]<br />
: [[Release Notes For R14.0.1|R14.0.1]]<br />
: [[Release Notes For R14.0.0|R14.0.0]]<br />
</div><br />
</div><br />
<div class="v3.5_release_notes mw-collapsible mw-collapsed" style="width:400px; overflow:auto;"><br />
; Older v3.5.x release notes.<br />
<div class="mw-collapsible-content"><br />
: [[Release Notes For 3.5.13.2|3.5.13.2]]<br />
: [[Release Notes For 3.5.13.1|3.5.13.1]]<br />
: [[Release Notes For 3.5.13|3.5.13]]<br />
: [[Release Notes For 3.5.12|3.5.12]]<br />
: [[Release Notes For 3.5.11|3.5.11]]<br />
</div><br />
</div><br />
<br />
=Installation=<br />
<br />
==Installing from a Package Manager==<br />
To set up Trinity on your computer, you may wish to visit the appropriate installation page:<br />
<br />
{{DistroTable}}<br />
<br />
==Installing from Source==<br />
<br />
[[How to Build TDE Core Modules]]<br />
<br />
[[How to Build Extra Applications]] (K3B, amaroK, KOffice, Kaffeine...)<br />
<br />
[[Notes on GIT Sources]]<br />
<br />
[[Suggested Build Flags]] for specific distributions (currently Ubuntu and Debian, with a note on OpenSuSE)<br />
<br />
<br />
=LiveCDs with Trinity=<br />
<br />
{{:LiveCDs}}<br />
<br />
<br />
=Tips and Tricks=<br />
Make sure to check out the [[Tips_And_Tricks|Tips and Tricks]] page for contributions by TDE users.<br />
<br />
<br />
=Other links in this category=</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Suggested_Build_Flags&diff=3268Suggested Build Flags2023-12-21T11:17:16Z<p>Blu256: Add {{KDE3}} (outdated information)</p>
<hr />
<div>==Suggested Build Flags==<br />
[[Category:Documentation]]<br />
[[Category:Installation]]<br />
<br />
{{KDE3}}<br />
<br />
Please note that you can find spec/dsc/PKGBUILD/emerge files [https://git.trinitydesktop.org/cgit/tde-packaging/ in our GIT repositories].<br />
<br />
{| class="wikitable"<br />
!Distribution Name <br />
!Build Flags <br />
!Prepackaged Binaries<br />
|-<br />
|Ubuntu <br />
|<br />
--prefix=/opt/kde3<br />
--includedir=/opt/kde3/include/kde<br />
--mandir=/opt/kde3/share/man<br />
--infodir=/opt/kde3/share/info<br />
--with-extra-libs=/opt/kde3/lib<br />
--sysconfdir=/etc<br />
--localstatedir=/var<br />
--libexecdir="\${prefix}/lib/kdebase-kde3"<br />
--disable-rpath<br />
--with-xinerama<br />
--enable-closure (when needed, which is most of the time) <br />
|http://apt.pearsoncomputing.net<br />
|-<br />
|Debian <br />
|<br />
--prefix=/opt/trinity<br />
--includedir=/opt/trinity/include/kde<br />
--mandir=/opt/trinity/share/man<br />
--infodir=/opt/trinity/share/info<br />
--with-extra-libs=/opt/trinity/lib<br />
--sysconfdir=/etc<br />
--localstatedir=/var<br />
--libexecdir="\${prefix}/lib/kdebase-kde3"<br />
--disable-rpath<br />
--with-xinerama<br />
--enable-closure (when needed, which is most of the time) <br />
|http://trinity.pearsoncomputing.net/debian_installation.html<br />
|-<br />
|SuSE<br />
|Check the 'tde-filesystem' package for more information. <br />
|N/A <br />
|}</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Template:DistroTable&diff=3267Template:DistroTable2023-12-21T11:07:33Z<p>Blu256: Add "Building from source code" link</p>
<hr />
<div>This template provides a '''table with installation instructions''' per distribution/operating system. It also tells the latest available version of TDE for that system.<br />
<br />
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.<br />
<br />
Mark the latest release with <span style="background: lightgreen;">lightgreen</span>, the release before it with <span style="background: yellow;">yellow</span> and older releases with <span style="background: orange;">orange</span>.<br />
<br />
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.<br />
<br />
= Example =<br />
<br />
This is how it will look on the page:<br />
<br />
<onlyinclude>{|<br />
| style="vertical-align: top" | <!-- Official instructions --><br />
{|class="wikitable" style="margin: 0;"<br />
! colspan="2" | <big>Official Instructions</big><br />
|-<br />
| '''Distribution'''<br />
| '''Latest'''<br />
|-<br />
| [[Debian Trinity Repository Installation Instructions|Debian]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[Devuan Trinity Repository Installation Instructions|Devuan]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[Fedora Trinity Repository Installation Instructions|Fedora]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[RedHat Trinity Repository Installation Instructions|RedHat]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[Ubuntu Trinity Repository Installation Instructions|Ubuntu]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| colspan=2 | [[How to Build TDE|Building from source code]]<br />
|}<br />
<br />
| style="vertical-align: top" | <!-- Unofficial instructions --><br />
{|class="wikitable" style="margin: 0;"<br />
! colspan="4" | <big>Community Instructions</big><br />
|-<br />
| '''Distribution'''<br />
| '''Latest'''<br />
| '''Distribution'''<br />
| '''Latest'''<br />
|-<br />
| [[Arch Trinity Repository Installation Instructions|Arch Linux]]<br />
| style="background: lightgreen;" | R14.1.1<br />
| [[MX Linux Trinity Repository Installation Instructions|MX Linux]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[FreeBSD Trinity Installation Instructions|FreeBSD]]<br />
| style="background: lightgreen;" | R14.1.1 <!-- R14.1.x branch actually --><br />
| [[OpenSUSE Trinity Repository Installation Instructions|OpenSUSE]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[Mageia Trinity Repository Installation Instructions|Mageia]]<br />
| style="background: lightgreen;" | R14.1.1<br />
| [[PCLinuxOS Trinity Repository Installation Instructions|PCLinuxOS]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[Slackware Trinity Installation Instructions|Slackware]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|-<br />
| [[Raspbian Trinity Repository Installation Instructions|Raspbian]]<br />
| style="background: lightgreen;" | R14.1.1<br />
|}<br />
|}<br />
</onlyinclude></div>Blu256https://wiki.trinitydesktop.org/index.php?title=How_to_Build_Extra_Applications&diff=3266How to Build Extra Applications2023-12-21T11:01:55Z<p>Blu256: + Category:Building from source code</p>
<hr />
<div>[[Category:Documentation]]<br />
[[Category:Installation]]<br />
[[Category:Developers]]<br />
[[Category:Packagers]]<br />
[[Category:Building from source code]]<br />
<br />
This HowTo provides detailed notes and explanations for building the optional applications included in the<br />
Trinity Desktop Environment code repository.<br />
<br />
<br />
==Introduction and Requirements==<br />
<br />
The optional applications are QT3 and KDE3 applications, some of them originally third-party, which have been<br />
ported forward to TQT/TDE and are now maintained by the Trinity Project. All of them require TQT to be<br />
installed, and many also require tdelibs, so they share the dependency list for the core packages.<br />
<br />
Other than that, well, if this page looks awfully similar to [[How to Build TDE Core Modules]], that's<br />
because they were both split from a single difficult-to-read mega-page on the old wiki, and some material<br />
had to be common to both.<br />
<br />
<br />
==Preparing the Source==<br />
<br />
To use the release tarballs, just untar them somewhere.<br />
<br />
To live dangerously and use the GIT sources, read [[Notes on GIT Sources]] first.<br />
<br />
<br />
==Building==<br />
<br />
===Building Packages with cmake===<br />
<br />
====List of Packages Building with cmake====<br />
<br />
cmake is the newer, easier, and more maintainable build system the Trinity Project is in the process of porting TDE source to.<br />
<br />
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.<br />
<br />
Read the notes for individual package requirements before trying to build anything.<br />
<br />
====Performing a cmake Build====<br />
<br />
The command listing below is only an example. You will wish to edit the exports if your distribution<br />
puts things in unusual locations or if you wish to install to somewhere other than /opt/trinity . Not <br />
all exports will be needed on all systems.<br />
<br />
export PREFIX=/opt/trinity<br />
export SYSCONFDIR=/etc/trinity<br />
export LIBDIR=/opt/trinity/lib<br />
export MANDIR=/opt/trinity/man<br />
export QTDIR=/opt/trinity/lib/qt3-3.3.8.d<br />
export PATH=/opt/trinity/qt3-3.3.8.d/bin:/opt/trinity/bin:$PATH<br />
export LD_LIBRARY_PATH=/opt/trinity/lib:/opt/trinity/lib/trinity:$LD_LIBRARY_PATH<br />
export PKG_CONFIG_PATH=:/opt/trinity/lib/pkgconfig:/opt/trinity/qt3-3.3.8.d/lib/pkgconfig:$PKG_CONFIG_PATH<br />
# Enable only one of the following:<br />
# export DEBUG_AUTOTOOL_OPT="--disable-debug"<br />
export DEBUG_CMAKE_OPT=""<br />
<br />
cmake path/to/trinity/module \<br />
-DCMAKE_C_FLAGS:STRING="$CPUOPTIONS" \<br />
-DCMAKE_CXX_FLAGS:STRING="$CPUOPTIONS $DEBUG_CMAKE_OPT" \<br />
-DCMAKE_INSTALL_PREFIX=${PREFIX} \<br />
-DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \<br />
-DLIB_SUFFIX=${LIBDIRSUFFIX} \<br />
-DMAN_INSTALL_DIR=${MANDIR} \<br />
-DBUILD_ALL=ON<br />
make VERBOSE=1<br />
<br />
<br />
====Notes====<br />
<br />
*When building on 64-bit, the following (T)Qt3 configuration option might need to be explicitly declared in some distro build scripts:<br />
-platform linux-g++-64 (rather than linux-g++ (notice the dash!))<br />
<br />
*If class constructor issues surface during the build, please post the error to the trinity-users list.<br />
<br />
===Building Packages with Autoconf===<br />
<br />
====Introduction====<br />
<br />
If the package you're trying to build is on the list of those that will build with cmake, try that first, because <br />
its autotools files will be unmaintained, bit-rotted, and possibly outright broken.<br />
<br />
Please read the notes for individual package requirements before trying to build anything.<br />
<br />
For those packages that still need to be built with autotools, the following steps must be run for each affected <br />
Trinity module, including tarball snapshots.<br />
<br />
<br />
====Regenerate Autoconf/Automake files====<br />
<br />
cd to the desired module to build, then run:<br />
<br />
cp -Rp <path to your system's libtool.m4 file> admin/libtool.m4.in<br />
cp -Rp <path to your system's ltmain.sh file> admin/ltmain.sh<br />
make -f admin/Makefile.common<br />
<br />
<br />
====Configure and Build====<br />
<br />
export PREFIX=/opt/trinity<br />
export SYSCONFDIR=/etc/trinity<br />
export LIBDIR=/opt/trinity/lib<br />
export MANDIR=/opt/trinity/man<br />
export QTDIR=/opt/trinity/lib/qt3-3.3.8.d<br />
export PATH=/opt/trinity/qt3-3.3.8.d/bin:/opt/trinity/bin:$PATH<br />
export LD_LIBRARY_PATH=/opt/trinity/lib:/opt/trinity/lib/trinity:$LD_LIBRARY_PATH<br />
export PKG_CONFIG_PATH=:/opt/trinity/lib/pkgconfig:/opt/trinity/qt3-3.3.8.d/lib/pkgconfig:$PKG_CONFIG_PATH<br />
# Enable only one of the following:<br />
# export DEBUG_AUTOTOOL_OPT="--enable-debug=full"<br />
export DEBUG_AUTOTOOL_OPT="--disable-debug"<br />
<br />
CFLAGS=$CPUOPT \<br />
CXXFLAGS=$CPUOPT \<br />
./configure \<br />
--prefix=${PREFIX} \<br />
--sysconfdir=${SYSCONFDIR} \<br />
--libdir=${LIBDIR} \<br />
--mandir=${MANDIR} \<br />
--with-qt-dir=${QTDIR} \<br />
--with-qt-includes=${QTDIR}/include \<br />
--with-qt-libraries=${QTDIR}/lib \<br />
$DEBUG_AUTOTOOL_OPT<br />
<br />
View the Distribution Specific Builds page for additional configure options.<br />
<br />
<br />
====Notes====<br />
<br />
*Not well documented anywhere, but when building with automake several packages need the --enable-closure configure option:<br />
**kaffeine<br />
**kdiff3 <br />
<br />
*When building on 64-bit, the following (T)Qt3 configuration option might need to be explicitly declared in some distro build scripts:<br />
-platform linux-g++-64 (rather than linux-g++ (notice the dash!))<br />
<br />
===Build Times===<br />
<br />
Building Trinity requires time and patience. Build times vary. Here are some guidelines from building <br />
Trinity 3.5.12 on a dual core 2.3 GHz AM2 with 4GB of RAM, using tmpfs, 7200 rpm SATA II hard drives; <br />
with Amarok, Firefox, Konsole, Konqueror, Kate, and other various apps often running concurrently. Compile <br />
times will be faster without such overhead, but likely will be longer when building with support package hooks.<br />
Packages using cmake will build faster than those still stuck on autotools.<br />
<br />
*k3b: 8 minutes<br />
*amarok: 10 minutes<br />
*knemo: 2 minutes<br />
*ktorrent: 7 minutes<br />
*koffice: 109 minutes <br />
<br />
<br />
==Installing==<br />
<br />
The command is the same regardless of whether your package was built with cmake or autotools:<br />
<br />
make install || exit 1<br />
<br />
<br />
==Additional Functionality==<br />
<br />
Some applications gain additional functionality when compiled with optional dependencies available.<br />
What follows is an (incomplete) list.<br />
<br />
<br />
===List of Optional Dependencies by Application===<br />
<br />
====k3b====<br />
<br />
*'''libsndfile''' C library for reading and writing sampled sound files<br />
*'''libdvdcss''' library for transparent DVD device access with on-the-fly CSS decryption<br />
*'''libdvdnav''' library support for DVD navigation features<br />
*'''ffmpeg''' software to record, convert and stream audio and video<br />
*'''lame''' MP3 encoding support<br />
*'''libdv-''' quasar DV codec<br />
*'''libdvdread''' read DVD video disks<br />
*'''a52dec''' video decoder<br />
*'''faac''' Advanced Audio Coder (MPEG2-AAC, MPEG4-AAC)<br />
*'''faad2''' AAC decoder<br />
*'''xvidcore''' MPEG-4 compliant video codec<br />
*'''schroedinger''' C implementation of BBC's dirac codec<br />
*'''openjpeg''' open-source JPEG 2000 codec<br />
*'''x264''' H264/AVC video stream encoder<br />
*'''speex''' an audio compression format designed for speech<br />
*'''transcode''' video stream processor<br />
*'''libquicktime''' library for reading and writing QuickTime? files<br />
*'''mjpegtools''' video recording/playback tools<br />
*'''libmpeg2''' mpeg-video decoding library<br />
*'''vcdimager''' video CD and Super Video CD tools<br />
*'''emovix''' video CD distribution tools<br />
*'''musepack-tools''' Musepack decoder/encoder<br />
*'''libmusicbrainz''' MusicBrainz? client library <br />
<br />
====amarok====<br />
<br />
*'''Ruby'''<br />
*'''libmp4v2''' MP4V2 tagging <br />
<br />
====koffice====<br />
<br />
*'''wv2''' Microsoft Word conversion<br />
*'''GraphicsMagick''' various image filters (chalk)<br />
*'''PostgreSQL''' database server (kexi) <br />
<br />
====kaffeine====<br />
<br />
*'''cdparanoia''' digital audio extraction tool<br />
*'''gst-plugins-base''' GStreamer plugins<br />
*'''gstreamer''' streaming multimedia framework<br />
*'''xine-lib''' xine multimedia playback engine libraries <br />
<br />
====k9copy====<br />
<br />
*'''ffmpeg''' software to record, convert and stream audio and video<br />
*'''dvdauthor''' DVD authoring tools<br />
*'''vamps''' DVD backup tool<br />
*'''MPlayer''' movie player<br />
*'''k3b''' CD and DVD creation and ripping <br />
<br />
====digikam====<br />
<br />
*'''lcms''' color management engine<br />
*'''dcraw''' decode raw digital photos<br />
*'''libgphoto2''' digital camera library<br />
*'''jasper''' JPEG-2000 codec<br />
*'''exiv2''' Exif and IPTC metadata library and tools<br />
*'''libkdcraw''' dcraw C++ library wrapper<br />
*'''libkexiv2''' exiv2 library wrapper<br />
*'''libkipi''' image plugin interface structure<br />
*'''kipi-plugins''' plugins for libKipi<br />
*'''sqlite''' self contained SQL database engine <br />
<br />
====gwenview====<br />
<br />
*'''exiv2''' Exif and IPTC metadata library and tools<br />
*'''libkexiv2''' exiv2 library wrapper<br />
*'''libkipi''' image plugin interface structure<br />
*'''kipi-plugins''' plugins for libKipi <br />
<br />
<br />
==Quirks and Known Bugs==<br />
<br />
===Krita Rename===<br />
<br />
Koffice Krita has been renamed to Chalk.<br />
<br />
===Third-party/LibreOffice===<br />
<br />
This folder contains patches that add TDE support to the upstream LibreOffice <br />
sources. The patches allow LibreOffice to use Trinity dialog boxes. The patches have not been merged into the upstream <br />
LibreOffice GIT tree, but they work just fine as-is when applied to the stock LO sources. Obtaining the advantages of <br />
these patches requires rebuilding LibreOffice from sources.<br />
<br />
===OpenGL and nVidia===<br />
Building many Trinity and related packages depend upon OpenGL, such as tdegraphics, k3b, koffice, tdenetwork, gwenview, digikam, etc.; <br />
<br />
as well as dependency packages such as libkipi, libkdcraw, libkexiv2, avahi, etc. <br />
<br />
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. <br />
<br />
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. <br />
<br />
When building packages for other users then build the entire suite of packages in a "clean" generic OpenGL environment. <br />
<br />
Other users might not use the proprietary nvidia package. This is true of any package that has OpenGL dependencies.<br />
<br />
===MSWord Support in KOffice===<br />
<br />
The koffice package expects the wv2 package to provide MS Word import support. The older wv2-0.2.3 package is <br />
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 <br />
and ignores compiling with automake. The libwv2.la file provided upstream is broken with respect to automake and will <br />
cause automake to fail. Basically, /usr/lib/libwv2.la is missing a proper header statement. This should be patched when <br />
creating the wv2-0.4.2 package.</div>Blu256https://wiki.trinitydesktop.org/index.php?title=How_to_Build_TDE_Core_Modules&diff=3265How to Build TDE Core Modules2023-12-21T11:01:31Z<p>Blu256: + Category:Building from source code</p>
<hr />
<div>[[Category:Documentation]]<br />
[[Category:Installation]]<br />
[[Category:Developers]]<br />
[[Category:Packagers]]<br />
[[Category:Building from source code]]<br />
This HowTo provides detailed notes and explanations for building the Trinity Desktop Environment base<br />
packages.<br />
<br />
<br />
==Introduction and Requirements==<br />
<br />
<br />
===Basic Building Requirements===<br />
<br />
Individual Linux distributions might have different build requirements. If these are known they will be available <br />
on the Distribution Specific Builds page.<br />
<br />
There is an ongoing effort to convert the build process from autotools to cmake. Until the cmake conversion is <br />
complete, both cmake and autotools are needed to build Trinity packages. cmake 2.8.12 or more recent is expected <br />
when building with cmake.<br />
<br />
To build the packages still using autotools, you will need a standard autotools setup (automake, autoconf, etc.)<br />
<br />
You'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 <br />
against versions up to and including 4.6. clang++ is also supported.<br />
<br />
===Other Requirements===<br />
<br />
(NOTE: List compiled from old QT3/kdelibs/kde-base ebuilds--will someone please check these?)<br />
<br />
Most of the non-build-related mandatory dependencies for the core Trinity packages are pretty basic:<br />
<br />
*an X server<br />
*openssl<br />
*fontconfig<br />
*freetype<br />
*ghostscript<br />
*xdg support<br />
*libpng<br />
*libmng<br />
<br />
If your Linux distribution came with any kind of graphical environment at all, you should already have<br />
this stuff.<br />
<br />
To build tdepim, you will also need libical (standard on many distros).<br />
<br />
See Additional Functionality for a list of optional dependencies and what they enable.<br />
<br />
<br />
===About TQt===<br />
<br />
Trinity uses the TQt widget toolkit. TQt is a fork of the last version of Qt3, with a significant amount of<br />
bug-fixes and improvements. Since Trolltech, the original developer of Qt, dropped support for Qt3,<br />
the Trinity Project has forked it and continued its maintenance and development.<br />
<br />
===About libart===<br />
<br />
libart-lgpl is another dependency package that the Trinity Project has taken over after it was <br />
[https://bugzilla.gnome.org/show_bug.cgi?id=155472#c4 dropped] by its original maintainer, because <br />
it needed several [http://git.trinitydesktop.org/cgit/libart-lgpl/diff/?id=150562b89b645c402f1bb837a09f8b84bf6e49ec patches] <br />
to prevent crashes. The version of libart provided by the Trinity Project includes those patches and is <br />
intended to be a replacement for any version of libart currently installed by any distro. Build this patched version <br />
of libart and replace the stock libart installed with the distro.<br />
<br />
<br />
===Coexisting with QT5/KDE Plasma===<br />
<br />
Trinity is intended to be able to run on computers that also have KDE Plasma installed. Originally, a lot of<br />
Trinity applications had the same names as their KDE4 counterparts, which was problematic. All of <br />
those have been renamed. In general, this was accomplished by changing the old KDE "K" prefix to a <br />
"T" ("kwin" -> "twin"). Applications that don't match anything currently part of KDE Plasma have retained <br />
their old names.<br />
<br />
To avoid stepping on KDE Plasma's toes, we ''strongly'' suggest picking a specific subdirectory prefix to install Trinity<br />
to--the one used in these directions is $PREFIX=/opt/trinity.<br />
<br />
<br />
==Preparing the Source==<br />
<br />
To use the release tarballs, just untar them somewhere.<br />
<br />
To live dangerously and use the GIT sources, read [[Notes on GIT Sources]] first.<br />
<br />
<br />
==Building==<br />
<br />
<br />
===Suggested Build Order===<br />
<br />
A lot of the Trinity core packages depend on one another (in particular, everything depends on tdelibs).<br />
Follow this build order to prevent problems.<br />
<br />
Start with the required core packages:<br />
<br />
#tqt3<br />
#cmake-trinity<br />
#tqtinterface<br />
#arts<br />
#dbus-tqt<br />
#dbus-1-tqt<br />
#tqca-tls (Recommended but required for some applications, such as the Kopete OTR add-on)<br />
#libart-lgpl<br />
#avahi-tqt (Recommended but required when supporting DNS discovery services)<br />
#tdelibs<br />
#tdebase<br />
<br />
At this point, you should have a functioning TDE desktop with basic utilities (terminal, file manager,<br />
text/source editors, etc.) If you're going to build tdebindings and want Python support available,<br />
continue with the Python linking packages (or skip over them if you don't care about Python support):<br />
<br />
#sip4-tqt<br />
#python-tqt<br />
#pytdeextensions<br />
#python-trinity<br />
#tqscintilla (if you want thr Scintilla editor component)<br />
<br />
The following build order seems to work well for the remaining core packages when building the stable release.<br />
You don't have to install everything, though, unless you're packaging TDE for your distribution--pick the packages <br />
that suit your use case.<br />
<br />
#tdebindings<br />
#tdeaccessibility<br />
#tdeutils<br />
#tdemultimedia<br />
#tdenetwork<br />
#tdeadmin<br />
#tdeartwork<br />
#tdegames<br />
#tdetoys<br />
#tdeedu<br />
#tdegraphics<br />
#tdepim<br />
#tdesdk (Build tdesdk after installing tdepim. tdepim provides libkcal (bugzilla) hooks for tdesdk.)<br />
#tdevelop (Build tdevelop after tdesdk. tdesdk provides cvs support for tdevelop.)<br />
#tdeaddons <br />
<br />
Once that's done, you may want to add [[How to Build Extra Applications|some extra applications]] on top.<br />
<br />
===Building Packages with cmake===<br />
<br />
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.<br />
<br />
====List of Packages Building with cmake====<br />
<br />
cmake is the newer, easier, and more maintainable build system the Trinity Project is in the process of porting TDE source to.<br />
<br />
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.<br />
<br />
Read the notes section below for individual package requirements before trying to build anything.<br />
<br />
====Performing a cmake Build with Ninja====<br />
<br />
The command listing below is only an example. You will wish to edit the exports if your distribution<br />
puts things in unusual locations or if you wish to install to somewhere other than /opt/trinity (tqtinterface<br />
has special requirements--see the Notes). Not all exports will be needed on all systems.<br />
<br />
export PREFIX=/opt/trinity<br />
export SYSCONFDIR=/etc/trinity<br />
export LIBDIR=$PREFIX/lib<br />
export MANDIR=$PREFIX/man<br />
export TQTDIR=$PREFIX/tqt3<br />
export PATH=$TQTDIR/bin:$PREFIX/bin:$PATH<br />
export LD_LIBRARY_PATH=$LIBDIR:$LIBDIR/trinity:$LD_LIBRARY_PATH<br />
export PKG_CONFIG_PATH=:$LIBDIR/pkgconfig:$TQTDIR/lib/pkgconfig:$PKG_CONFIG_PATH<br />
# for lib64:<br />
# export LIBDIRSUFFIX=64<br />
#<br />
from the Trinity module:<br />
mkdir -p build && cd build<br />
cmake -G "Ninja" \<br />
-DCMAKE_EXPORT_COMPILE_COMMANDS="ON" \<br />
-DCMAKE_BUILD_TYPE=RelWithDebInfo \<br />
-DCMAKE_SKIP_RPATH="OFF" \<br />
-DCMAKE_INSTALL_PREFIX=${PREFIX} \<br />
-DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \<br />
-DLIB_SUFFIX=${LIBDIRSUFFIX} \<br />
-DMAN_INSTALL_DIR=${MANDIR} \<br />
-DBUILD_ALL="ON" \<br />
-DWITH_ALL_OPTIONS="ON" ..<br />
cmake --build . -- -v<br />
<br />
====Notes====<br />
<br />
*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.<br />
<br />
*tqtinterface requires the following additional QT-related build option:<br />
<br />
-DQT_VERSION=3<br />
<br />
*arts and tdelibs execute compiled binaries as part of the build process. Therefore they need to have -DCMAKE_SKIP_RPATH="OFF" set. All other modules do not need the RPATH set.<br />
<br />
*When building on 64-bit, the following (T)Qt3 configuration option might need to be explicitly declared in some distro build scripts:<br />
<br />
-platform linux-g++-64 (rather than linux-g++ (notice the dash!))<br />
<br />
*If class constructor issues surface during the build, please post the error to the trinity-users list.<br />
<br />
===Building Packages with Autoconf===<br />
<br />
<br />
====Introduction====<br />
<br />
If the package you're trying to build is on the list of those that will build with cmake, try that first, because <br />
its autotools files will be unmaintained, bit-rotted, and possibly outright broken.<br />
<br />
Please read the notes section below for individual package requirements before trying to build anything.<br />
<br />
For those packages that still need to be built with autotools, the following steps must be run for each affected <br />
Trinity module, including tarball snapshots.<br />
<br />
<br />
====Regenerate Autoconf/Automake files====<br />
<br />
cd to the desired module to build, then run:<br />
<br />
cp -Rp <path to your system's libtool.m4 file> admin/libtool.m4.in<br />
cp -Rp <path to your system's ltmain.sh file> admin/ltmain.sh<br />
make -f admin/Makefile.common<br />
<br />
<br />
====Configure and Build====<br />
<br />
export PREFIX=/opt/trinity<br />
export SYSCONFDIR=/etc/trinity<br />
export LIBDIR=/opt/trinity/lib<br />
export MANDIR=/opt/trinity/man<br />
export QTDIR=/opt/trinity/lib/qt3-3.3.8.d<br />
export PATH=/opt/trinity/qt3-3.3.8.d/bin:/opt/trinity/bin:$PATH<br />
export LD_LIBRARY_PATH=/opt/trinity/lib:/opt/trinity/lib/trinity:$LD_LIBRARY_PATH<br />
export PKG_CONFIG_PATH=:/opt/trinity/lib/pkgconfig:/opt/trinity/qt3-3.3.8.d/lib/pkgconfig:$PKG_CONFIG_PATH<br />
# Enable only one of the following:<br />
# export DEBUG_AUTOTOOL_OPT="--enable-debug=full"<br />
export DEBUG_AUTOTOOL_OPT="--disable-debug"<br />
<br />
CFLAGS=$CPUOPT \<br />
CXXFLAGS=$CPUOPT \<br />
./configure \<br />
--prefix=${PREFIX} \<br />
--sysconfdir=${SYSCONFDIR} \<br />
--libdir=${LIBDIR} \<br />
--mandir=${MANDIR} \<br />
--with-qt-dir=${QTDIR} \<br />
--with-qt-includes=${QTDIR}/include \<br />
--with-qt-libraries=${QTDIR}/lib \<br />
$DEBUG_AUTOTOOL_OPT<br />
<br />
View the Distribution Specific Builds page for additional configure options.<br />
<br />
<br />
====Notes====<br />
<br />
*Certain modules will not build across multiple cores in parallel. That is, with a "make -j" flag set to anything greater than 1. These packages are:<br />
**tdebindings (some people have no problems with this package and parallel processing)<br />
**tdemultimedia (some people have no problems with this package and parallel processing) <br />
<br />
*Not well documented anywhere, but when building with automake several packages need the --enable-closure configure option:<br />
**tdeaccessibility<br />
**tdeaddons<br />
**tdeadmin<br />
**tdebindings<br />
**tdeedu<br />
**tdegames<br />
**tdemultimedia<br />
**tdesdk<br />
<br />
*When building on 64-bit, the following (T)Qt3 configuration option might need to be explicitly declared in some distro build scripts:<br />
<br />
-platform linux=g++-64 (rather than linux-g++ (notice the dash!))<br />
<br />
<br />
===Build Times===<br />
<br />
Building Trinity requires time and patience. Build times vary. Here are some guidelines from building <br />
Trinity 3.5.12 on a dual core 2.3 GHz AM2 with 4GB of RAM, using tmpfs, 7200 rpm SATA II hard drives; <br />
with Amarok, Firefox, Konsole, Konqueror, Kate, and other various apps often running concurrently. Compile <br />
times will be faster without such overhead, but likely will be longer when building with support package hooks.<br />
Packages using cmake will build faster than those still stuck on autotools.<br />
<br />
*tqtinterface: 2 minutes<br />
*arts: 4 minutes<br />
*tdelibs: 44 minutes<br />
*tdebase: 33 minutes<br />
*tdebindings: 36 minutes<br />
*tdeaccessibility: 5 minutes<br />
*tdeutils: 8 minutes<br />
*tdemultimedia: 24 minutes<br />
*tdenetwork: 23 minutes<br />
*tdeadmin: 4 minutes<br />
*tdeartwork: 3 minutes<br />
*tdegames: 8 minutes<br />
*tdetoys: 2 minutes<br />
*tdeedu: 15 minutes<br />
*tdegraphics: 17 minutes<br />
*tdesdk: 14 minutes<br />
*tdevelop: 27 minutes<br />
*tdeaddons: 7 minutes<br />
*tdewebdev: 12 minutes<br />
*tdepim: 63 minutes <br />
<br />
Approximate total time: 5 hours 51 minutes<br />
<br />
Time to a functional system (basic desktop): 1 hour 23 minutes<br />
<br />
<br />
==Installing==<br />
<br />
The command is the same regardless of whether your package was built with cmake or autotools:<br />
<br />
make install || exit 1<br />
<br />
<br />
==Additional Functionality==<br />
<br />
Certain Trinity packages gain additional functionality when compiled with additional dependencies available.<br />
Also, we maintain some libraries which provide purely optional functionality.<br />
<br />
<br />
===Optional Trinity Libraries===<br />
<br />
None of these Trinity libraries are required but all provide additional functionality for a variety of packages. <br />
These libraries must be built and installed before any packages using these libraries can take advantage of the <br />
additional functionality.<br />
<br />
*libkipi: required by kipi-plugins<br />
*kipi-plugins: several high-end image viewers such as gwenview and digikam<br />
*libkdcraw: several image viewers and graphics apps, such as chalk and digikam<br />
*libkexiv2: several image viewers<br />
*libksquirrel: required by ksquirrel (TDE swiss-army-knife for graphic file formats, also supports medical image formats if xmedcon is provided)<br />
*libtqt-perl: adept add-on<br />
*mlt: not required or supported at this time<br />
*mlt++: not required or supported at this time<br />
*pytdeextensions: replacement for PyQt3 and PyKDE3, and used by apps such as tdebindings and tde-guidance<br />
*python-trinity: replacement for PyQt3 and PyKDE3, and used by apps such as tdebindings and tde-guidance <br />
<br />
<br />
===List of Optional Dependencies by Trinity Package===<br />
<br />
====tdelibs====<br />
<br />
*'''avahi''' DNS discovery<br />
*'''avahi-tqt''' Trinity TQt layer for avahi, available in Trinity libraries<br />
*'''hspell''' Hebrew spell checking<br />
*'''krb5''' Kerberos authentication<br />
*'''openexr''' EXR image format <br />
<br />
====tdebase====<br />
<br />
*'''avahi''' DNS discovery<br />
*'''avahi-tqt''' Trinity TQt layer for avahi, available in Trinity libraries<br />
*'''krb5''' Kerberos authentication<br />
*'''openexr''' EXR image format<br />
*'''GraphicsMagick''' image filters <br />
<br />
====tdebindings====<br />
<br />
*'''Ruby'''<br />
*'''JRE''' Java Runtime Environment<br />
*'''JDK''' Java Development Kit<br />
*'''Python'''<br />
*'''python-trinity''', available in Trinity libraries<br />
*'''pytdeextensions''', available in Trinity libraries <br />
<br />
====tdeutils====<br />
<br />
*'''xmms''' multimedia player (superkaramba) <br />
<br />
====tdemultimedia====<br />
<br />
*'''cdparanoia''' digital audio extraction tool (kaudiocreator)<br />
*'''speex''' an audio compression format designed for speech <br />
<br />
====tdenetwork====<br />
<br />
*'''xmms''' multimedia player (kopete plugins)<br />
*'''ortp''' real-time transport protocol stack under GPL (kopete plugins)<br />
*'''speex''' audio compression format designed for speech (kopete plugins) <br />
<br />
====tdeedu====<br />
<br />
*'''facile''' functional constraint library (kalzium)<br />
*'''ocaml''' A programming language (kalzium)<br />
*'''boost''' boost C++ Libraries <br />
<br />
====tdevelop====<br />
<br />
*'''graphviz''' graph visualization <br />
<br />
====tdeaddons====<br />
<br />
*'''xmms''' multimedia player (kicker applets) <br />
<br />
====tdewebdev====<br />
<br />
*'''XSLT''' Extensible Stylesheet Language Transformations<br />
*'''DocBook''' text markup<br />
<br />
====tdepim====<br />
<br />
*'''krb5''' Kerberos authentication<br />
*'''ortp''' real-time transport protocol stack under GPL (kopete)<br />
*'''gnokii''' Nokia mobile phone support<br />
*'''opensync''' data synchronization support<br />
*'''libcaldav''' online calendar support, available through Trinity web site (http://www.trinitydesktop.org/relatedprojects.php)<br />
*'''libcarddav''' online address book support, available through Trinity web site (http://www.trinitydesktop.org/relatedprojects.php) <br />
<br />
<br />
==Quirks and Known Bugs==<br />
<br />
<br />
===Building Sip===<br />
<br />
Sip is available on many/most distros. Sip requires Qt3 to build, but won't build on TQt3, which adds <br />
the tqinterface layer to Qt3. More than likely down the road, Sip will be dumped or moved to Qt4 by distro <br />
maintainers. All of the python-*-tqt-* packages need Sip to build. Build this TQt3 compatible version of Sip <br />
and replace the stock Sip installed with the distro.<br />
<br />
<br />
===OpenGL and nVidia===<br />
<br />
Building many Trinity and related packages depend upon OpenGL, such as <br />
tdegraphics, k3b, koffice, tdenetwork, gwenview, digikam, etc.; <br />
<br />
as well as dependency packages such as <br />
libkipi, libkdcraw, libkexiv2, avahi, etc. <br />
<br />
If any of those packages are built when the proprietary nvidia drivers are installed, the dependent package will fail to build <br />
with an error about /usr/lib/libGL.la. <br />
<br />
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. <br />
<br />
When building packages for other users then build the entire suite of packages in a "clean" generic OpenGL environment. <br />
<br />
Other users might not use the proprietary nvidia package. This is true of any package that has OpenGL dependencies.<br />
<br />
===Tdeartwork and xhack Screensavers===<br />
<br />
Before building tdeartwork, install any and all xhack screensavers that might be uses, then<br />
<br />
cd <tdeartwork>/kscreensaver/kxsconfig/<br />
./update_hacks.sh<br />
<br />
This will generate the TDE bindings required to allow installed screensavers show up in the Trinity <br />
screensaver control panel, along with their configuration options. When adding a new screensaver the <br />
update_hacks command needs to be rerun and tdeartwork recompiled/reinstalled. Distribution maintainers should <br />
install all available screensavers from their distribution and then run update_hacks during the initial build <br />
setup when building redistributable binary packages (see the Debian tdeartwork build scripts in GIT for an <br />
example of how to do this).<br />
<br />
<br />
===Poppler Support in Tdegraphics===<br />
<br />
Building tdegraphics with poppler support requires building a Trinity poppler-tqt support package. With <br />
many distros poppler no longer is built with Qt3 support. The Trinity poppler-tqt provides the necessary hooks for <br />
tdegraphics without rebuilding poppler. The poppler-tqt dependency sources are located in the tdegraphics/kfile-plugins <br />
dependencies directory and are built automatically with the tdegraphics build option -DWITH_PDF=ON.<br />
<br />
<br />
===Tdesvn/Tdesdk svn-kio Conflict===<br />
<br />
tdesvn and tdesdk provide conflicting files for svn-kio services. Neither package is a dependency of the other. <br />
When tdesdk or tdesvn will be installed without the other, then no change is required. When both tdesdk and tdesvn <br />
are to be installed, then to avoid filesystem conflicts the following files must be removed from one of the packages <br />
before installing:<br />
<br />
/opt/trinity/share/services/svn+file.protocol<br />
/opt/trinity/share/services/svn+http.protocol<br />
/opt/trinity/share/services/svn+https.protocol<br />
/opt/trinity/share/services/svn+ssh.protocol<br />
/opt/trinity/share/services/svn.protocol<br />
<br />
Since tdesvn uses the ksvn kio exclusively, while tdesdk uses the svn kio, consider removing the conflicting files <br />
from tdesdk to eliminate the same services relying on multiple kio service files.</div>Blu256https://wiki.trinitydesktop.org/index.php?title=TDM&diff=3264TDM2023-12-18T11:27:38Z<p>Blu256: fix formatting</p>
<hr />
<div>'''TDM''' is the default graphical display manager of the Trinity Desktop Environment. It handles local and remote logins on a machine.<br />
<br />
__TOC__<br />
<br />
== Remote login ==<br />
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).<br />
<br />
{{WarningBox|text=ArchWiki on the matter of [https://wiki.archlinux.org/title/XDMCP XDMCP]:<br />
''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.''<br />
As a matter of fact, you should only use it in a completely trusted and controlled environment.<br />
}}<br />
<br />
To be able to login into a machine remotely you should edit the <tt>tdmrc</tt> file. Find the section titled <tt>[Xdmcp]</tt> and set the <tt>Enable</tt> key to <tt>true</tt>. Then, restart the tdm service.<br />
<br />
On the remote side select "Remote login" 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't see the machine you want to connect to in the list, enter its IP address and press "Add". It should appear in the list.<br />
<br />
By default a host might not allow remote connections despite being open for XDMCP requests. In XDMCP terminology, the host must be "Willing" to accept the remote connection. If you see "Display not authorized to connect" 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 <tt>Xaccess</tt> file (it should be in the same directory as <tt>tdmrc</tt>) to set up authorized hosts. After that, restart TDM and repeat the process.<br />
<br />
When you select the desired host in the remote login menu and press "Connect", 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.<br />
<br />
== Technical details ==<br />
<br />
=== TDM's file system layout ===<br />
<br />
* <span style='color: darkorange'><tt>${tde_confdir}</tt> is usually <tt>${prefix}/share/config</tt></span><br />
* <span style='color: darkorange'><tt>${tde_datadir}</tt> is usually <tt>${prefix}/share/apps</tt></span><br />
* <tt>${tde_confdir}/tdm/{tdmrc,Xservers,Xaccess,Xwilling,...}</tt><br />
* <tt>${tde_datadir}/tdm/sessions/*.desktop</tt><br />
* <tt>/etc/X11/sessions/,/usr/share/xsessions/</tt><br />
* <tt>${tde_datadir}/tdm/pics/users/</tt><br />
* <tt>${tde_datadir}/tdm/pics/</tt><br />
* <tt>${tde_datadir}/tdm/faces/*.face{,.icon}</tt><br />
* <tt>/usr/share/faces/</tt><br />
* <tt>/var/run/xauth/A*</tt><br />
* <tt>/var/run/xdmctl/xdmctl*</tt><br />
* <tt>/var/run/tdm.pid</tt><br />
* <tt>/var/lib/tdm/tdmsts</tt><br />
* <tt><site-specific>/*.dmrc</tt><br />
* <tt>$HOME/.face{,.icon}</tt><br />
* <tt>$HOME/.dmrc</tt><br />
<br />
<br />
=== How to setup TDM ===<br />
<br />
TDM's config files are all located in <tt>${tde_confdir}/tdm</tt>. "make install" 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.<br />
<br />
You can change the configuration from the Trinity Control Center. You will find the "Login Manager" module in the "System Administration" group.<br />
<br />
Have a look at <tt>README.pam</tt> in the <tt>tdebase</tt> top level directory if your system uses PAM.<br />
<br />
<br />
=== Configuring session types ===<br />
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 "standard" .desktop files are:<br />
* the <code>Type</code> is fixed to <tt>XSession</tt> and can be omitted.<br />
* the <code>Encoding</code> is fixed to <tt>UTF-8</tt> and can be omitted.<br />
* the <code>Exec</code> field will be passed to <tt>"eval exec"</tt> in a bourne shell; no macro expansion is performed on it. "default", "custom" and "failsafe" are magic constants that cause special actions.<br />
* <code>Name</code>, <code>Comment</code>, <code>TryExec</code> and <code>Hidden</code> are supported.<br />
* the remaining keys have no meaning currently.<br />
<br />
Session types are internally identified by filename (without extension); that's what will be saved to <tt>~/.dmrc</tt> and what DESKTOP_SESSION will be set to. For every magic <code>Exec</code> constant a session type of the same name exists.<br />
<br />
Unless your system is configured differently already, you should create a directory <tt>${tde_confdir}/tdm/sessions</tt> and add this to <tt>tdmrc</tt>:<br />
<br />
<syntaxhighlight lang="ini"><br />
[X-*-Core]<br />
SessionsDirs=${tde_confdir}/tdm/sessions,${tde_datadir}/tdm/sessions<br />
</syntaxhighlight><br />
<br />
{{WarningBox|text=Always keep in mind the following:<br />
* You must use actual paths instead of variables, see the section about TDM's file system layout.<br />
* Do any changes only in the config directory - any changes in the data directory will be lost after the next TDE update.}}<br />
<br />
<br />
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 "shadowing" them with .desktop files containing <code>Hidden=true</code>.<br />
<br />
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.<br />
<br />
<br />
=== The command sockets ===<br />
This is a feature you can use to remote-control TDM. It's mostly intended for use by ksmserver and kdesktop from a running session, but other applications are possible as well.<br />
<br />
The sockets are UNIX domain sockets which live in subdirectories of the directory specified by <code>FifoDir=</code>. The subdir is the key to addressing and security; the sockets all have the file name "socket" and file permissions <tt>rw-rw-rw-</tt> (0666). This is because some systems don't care for the file permissions of the socket files.<br />
<br />
There are two types of sockets: the global one (<tt>dmctl</tt>) and the per-display ones (<tt>dmctl-<display></tt>).<br />
<br />
The global one's subdir is owned by root, the subdirs of the per-display ones' are owned by the user currently owning the session (root or the logged in user). Group ownership of the subdirs can be set via <code>FifoGroup=</code>, otherwise it's root. The file permissions of the subdirs are <tt>rwxr-x---</tt> (0750).<br />
<br />
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 "<tt>\s</tt>". The command is terminated by a newline (<tt>\n</tt>). The same applies to replies. The reply on success is "<tt>ok</tt>", possibly followed by the requested information. The reply on error is an errno-style word (e.g., "<tt>perm</tt>", "<tt>noent</tt>", etc.) followed by a longer explanation.<br />
<br />
==== Global commands ====<br />
<br />
{|class="wikitable"<br />
|-<br />
| <syntaxhighlight lang="shell">login {display} ("now"|"schedule") {user} {password} [session_arguments]</syntaxhighlight><br />
| Login user at specified display. if "now" is specified, a possibly running session is killed, otherwise the login is done after the session exits.<br />
<tt>session_arguments</tt> are printf-like escaped contents for <tt>.dmrc</tt>. Unlisted keys will default to previously saved values.<br />
|}<br />
<br />
==== Per-display commands ====<br />
<br />
{|class="wikitable"<br />
|-<br />
| <syntaxhighlight lang="shell">lock</syntaxhighlight><br />
| 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.<br />
|-<br />
| <syntaxhighlight lang="shell">unlock</syntaxhighlight><br />
| Reverse the effect of "lock": re-enable auto-relogin.<br />
|-<br />
| <syntaxhighlight lang="shell">suicide</syntaxhighlight><br />
| The currently running session is forcibly terminated. No auto-relogin is attempted, but a scheduled "login" command will be executed.<br />
|}<br />
<br />
==== Commands for all sockets ====<br />
<br />
{|class="wikitable"<br />
|-<br />
| <syntaxhighlight lang="shell">caps</syntaxhighlight><br />
| Returns a list this socket's capabilities:<br />
{|<br />
|<code>tdm</code><br />
| identifies tdm, in case some other DM implements this protocol, too<br />
|-<br />
| <code>list</code>, <code>activate</code>, <code>lock</code>, <code>suicide</code>, <code>login</code><br />
| whether the respective command is supported<br />
|-<br />
| <code>bootoptions</code><br />
| whether the <tt>listbootoptions</tt> command and the "=" option to "<tt>shutdown</tt>" are supported<br />
|-<br />
| <code>shutdown {list}</code><br />
| whether "shutdown" is supported and allowed to the listed users (comma-separated), "*" means all authenticated users<br />
|-<br />
| <code>shutdown</code><br />
| whether "shutdown" is supported and allowed to everybody<br />
|-<br />
| <code>nuke {list}</code><br />
| whether forced shutdown is allowed to the listed users<br />
|-<br />
| <code>nuke</code><br />
| whether forced shutdown is allowed to everybody<br />
|-<br />
| <code>reserve {number}</code><br />
| whether reserve displays are configured and <number> are available at this time<br />
|}<br />
|-<br />
| <syntaxhighlight lang="shell">list [all|alllocal]</syntaxhighlight><br />
| Return a list of running sessions. By default all active sessions are listed.<br />
<br />
If "<tt>all</tt>" is specified, passive sessions are listed as well.<br />
<br />
If "<tt>alllocal</tt>" is specified, passive sessions are listed as well, but all incoming remote sessions are skipped.<br />
<br />
Each session entry is a comma-separated tuple of:<br />
* Display or TTY name<br />
* VT name for local sessions<br />
* Logged in user's name, empty for passive sessions and outgoing remote sessions (local chooser mode)<br />
* Session type or remote host for outgoing remote sessions, empty for passive sessions<br />
* A flag field:<br />
** "t" for tty sessions<br />
** "*" for the display belonging to the requesting socket<br />
** "!" for sessions that cannot be killed by the requesting socket<br />
|-<br />
| <syntaxhighlight lang="shell">reserve [timeout in seconds]</syntaxhighlight><br />
| 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.<br />
Permitted only on sockets of local displays and the global socket.<br />
|-<br />
| <syntaxhighlight lang="shell">activate (vt|display)</syntaxhighlight><br />
| 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).<br />
Permitted only on sockets of local displays and the global socket.<br />
|-<br />
| <syntaxhighlight lang="shell">listbootoptions</syntaxhighlight><br />
| List available boot options.<br />
=> "ok" list default current<br />
*default and current are indices into the list and are -1 if unset or undeterminable.<br />
|-<br />
| <syntaxhighlight lang="shell">shutdown (reboot|halt)[={bootchoice}] (ask|trynow|forcenow|schedule|start (-1|end (force|forcemy|cancel)))</syntaxhighlight><br />
| Request a system shutdown, either a reboot or a halt/poweroff.<br />
An OS choice for the next boot may be specified from the list returned by "listbootoptions".<br />
<br />
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.<br />
<br />
* <tt>start</tt> is the time for which the shutdown is scheduled. If it starts with a plus-sign, the current time is added. Zero means immediately.<br />
* <tt>end</tt> 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:<br />
** <tt>cancel</tt> - give up the shutdown.<br />
** <tt>force</tt> - shut down nonetheless.<br />
** <tt>forcemy</tt> - shut down nonetheless if all active sessions belong to the requesting user. Only for per-display sockets.<br />
* <tt>trynow</tt> is a synonym for "0 0 cancel", <tt>forcenow</tt> for "0 0 force" and <tt>schedule</tt> for "0 -1".<br />
* <tt>ask</tt> attempts an immediate shutdown and interacts with the user if active sessions are still running. Only for per-display sockets.<br />
* <tt>start</tt> and end are specified in seconds since the UNIX epoch.<br />
|-<br />
| <syntaxhighlight lang="shell">shutdown cancel [local|global]</syntaxhighlight><br />
| Cancel a scheduled shutdown. The global socket always cancels the currently pending shutdown, while per-display sockets default to cancelling their queued request.<br />
|-<br />
| <syntaxhighlight lang="shell">shutdown status</syntaxhighlight><br />
| Return a list with information about shutdowns.<br />
The entries are comma-separated tuples of:<br />
* ("global"|"local") - pending vs. queued shutdown. A local entry can be returned only by a per-display socket.<br />
* ("halt"|"reboot")<br />
* start<br />
* end<br />
* ("ask"|"force"|"forcemy"|"cancel")<br />
* Numeric user ID of the requesting user, -1 for the global socket.<br />
* The next boot OS choice or "-" for none.<br />
|}<br />
<br />
There are two ways of using the sockets:<br />
* Connecting them directly. FifoDir is exported as $DM_CONTROL; the name of per-display sockets can be derived from $DISPLAY.<br />
* By using the <tt>tdmctl</tt> command (e.g., from within a shell script). Try "<tt>tdmctl -h</tt>" to find out more.<br />
<br />
Here is an example bash script "reboot into FreeBSD":<br />
<br />
<syntaxhighlight lang="shell"><br />
if tdmctl | grep -q shutdown; then<br />
IFS=$'\t'<br />
set -- `tdmctl listbootoptions`<br />
if [ "$1" = ok ]; then<br />
fbsd=$(echo "$2" | tr ' ' '\n' | sed -ne 's,\\s, ,g;/freebsd/I{p;q}')<br />
if [ -n "$fbsd" ]; then<br />
tdmctl shutdown reboot "=$fbsd" ask > /dev/null<br />
else<br />
echo "FreeBSD boot unavailable."<br />
fi<br />
else<br />
echo "Boot options unavailable."<br />
fi<br />
else<br />
echo "Cannot reboot system."<br />
fi<br />
</syntaxhighlight><br />
<br />
== Troubleshooting ==<br />
TDM accepts two command line options related to logging:<br />
<br />
-debug <n><br />
<n> is a decimal or hexadecimal (prefix 0x) number.<br />
The number is a bitfield, i.e., it is formed by summing up the<br />
required values from this table:<br />
1 (0x1) - core debugging. Probably the most useful one.<br />
2 (0x2) - config reader debugging.<br />
4 (0x4) - greeter debugging.<br />
8 (0x8) - IPC debugging. This logs _all_ communication between the<br />
core, the config reader and the greeter - including the<br />
passwords you type, so edit the log before showing it to<br />
somebody.<br />
This attempts to synchronize the processes to interleave the<br />
log messages optimally, but will probably fail unless you use<br />
-debug 0x80 as well.<br />
16 (0x10) - wait after forking session sub-daemon.<br />
32 (0x20) - wait after starting config reader.<br />
64 (0x40) - wait after starting greeter.<br />
The wait options are only useful if you need to attach a debugger<br />
to a process, but it crashes before you are able to do so without<br />
the delay. See below.<br />
128 (0x80) - don't use syslog for internally generated messages.<br />
256 (0x100) - core Xauth debugging.<br />
1024 (0x400) - run config reader and greeter through valgrind.<br />
2048 (0x800) - run config reader and greeter through strace.<br />
<br />
Logs from "-debug 7" are usually a good start.<br />
<br />
-error <file>, -logfile <file><br />
<file> is the file to log various messages to. The default log file is<br />
/var/log/tdm.log. For internal reasons there is no option in tdmrc to<br />
permanently specify the log file location. If you redirect TDM's<br />
standard error output to a file, TDM will log there.<br />
If TDM is configured to use syslog (and it _very_ probably is on any<br />
modern system), all internally generated messages are logged to the<br />
"daemon" facility. The log usually can be found in /var/log/debug.log<br />
and /var/log/daemon.log; make sure that daemon.* is logged (look at<br />
/etc/syslog.conf).<br />
If you have problems logging in and your system uses PAM (also quite<br />
probable on modern systems), the "auth" and "authpriv" syslog facilities<br />
are interesting, too.<br />
<br />
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.<br />
<br />
=== Producing a backtrace ===<br />
If a backtrace is requested from you and TDM didn't create one yet via the usual drkonqi procedure, you'll have to do that yourself. The keyphrase is "attaching gdb". How exactly this is done depends on the part that crashes:<br />
<br />
==== Attaching gdb to the process ====<br />
===== Master daemon =====<br />
Actually you should never need to attach to it, as you can start it within the debugger already:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# gdb --args tdm -nodaemon -debug 7<br />
(gdb) run<br />
</syntaxhighlight><br />
<br />
===== Display subdaemon =====<br />
Find (using ps) the process with a name like "-:0" (where :0 is actually the display this process is for). This process' PPID is the master daemon. Attach to it this way:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# gdb tdm <the PID you found><br />
(gdb) cont<br />
</syntaxhighlight><br />
<br />
If the subdaemon crashes before you can attach, add 16 to the debug flags when you start TDM.<br />
<br />
===== Config reader =====<br />
You will have to add 32 to the debug flags almost certainly. The PPID will be the master daemon as well.<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# gdb tdm_config $(pidof tdm_config)<br />
(gdb) cont<br />
</syntaxhighlight><br />
<br />
===== Greeter =====<br />
If it's too fast, add 64 to -debug. The PPID will be the subdaemon.<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# gdb tdm_greet $(pidof tdm_greet)<br />
(gdb) cont<br />
</syntaxhighlight><br />
<br />
The simplification with "pidof" works only if you have only one display, otherwise you have to find the PID manually (by using ps -fx).<br />
<br />
==== Reproduce crash and create backtrace ====<br />
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).<br />
<br />
Once it crashed, gdb will tell you a signal name, like SIGSEGV - that's the first interesting part. Then you have to create the actual backtrace:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
(gdb) bt<br />
</syntaxhighlight><br />
<br />
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't use "cont" after attaching, but use "bt" right away. If the process is already running, interrupt it with ctrl-c.<br />
<br />
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'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.<br />
<br />
Note that a backtrace is usually much more useful if the binary contains debugging info.</div>Blu256https://wiki.trinitydesktop.org/index.php?title=TDM&diff=3263TDM2023-12-18T11:26:19Z<p>Blu256: Add page about TDM (Remote login via XDMCP + some technical info from the README file)</p>
<hr />
<div>''TDM'' is the default graphical display manager of the Trinity Desktop Environment. It handles local and remote logins on a machine.<br />
<br />
__TOC__<br />
<br />
== Remote login ==<br />
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).<br />
<br />
{{WarningBox|text=ArchWiki on the matter of [https://wiki.archlinux.org/title/XDMCP XDMCP]:<br />
''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.''<br />
As a matter of fact, you should only use it in a completely trusted and controlled environment.<br />
}}<br />
<br />
To be able to login into a machine remotely you should edit the <tt>tdmrc</tt> file. Find the section titled <tt>[Xdmcp]</tt> and set the <tt>Enable</tt> key to <tt>true</tt>. Then, restart the tdm service.<br />
<br />
On the remote side select "Remote login" 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't see the machine you want to connect to in the list, enter its IP address and press "Add". It should appear in the list.<br />
<br />
By default a host might not allow remote connections despite being open for XDMCP requests. In XDMCP terminology, the host must be "Willing" to accept the remote connection. If you see "Display not authorized to connect" 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 <tt>Xaccess</tt> file (it should be in the same directory as <tt>tdmrc</tt>) to set up authorized hosts. After that, restart TDM and repeat the process.<br />
<br />
When you select the desired host in the remote login menu and press "Connect", 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.<br />
<br />
== Technical details ==<br />
<br />
=== TDM's file system layout ===<br />
<br />
* <span style='color: darkorange'><tt>${tde_confdir}</tt> is usually <tt>${prefix}/share/config</tt></span><br />
* <span style='color: darkorange'><tt>${tde_datadir}</tt> is usually <tt>${prefix}/share/apps</tt></span><br />
* <tt>${tde_confdir}/tdm/{tdmrc,Xservers,Xaccess,Xwilling,...}</tt><br />
* <tt>${tde_datadir}/tdm/sessions/*.desktop</tt><br />
* <tt>/etc/X11/sessions/,/usr/share/xsessions/</tt><br />
* <tt>${tde_datadir}/tdm/pics/users/</tt><br />
* <tt>${tde_datadir}/tdm/pics/</tt><br />
* <tt>${tde_datadir}/tdm/faces/*.face{,.icon}</tt><br />
* <tt>/usr/share/faces/</tt><br />
* <tt>/var/run/xauth/A*</tt><br />
* <tt>/var/run/xdmctl/xdmctl*</tt><br />
* <tt>/var/run/tdm.pid</tt><br />
* <tt>/var/lib/tdm/tdmsts</tt><br />
* <tt><site-specific>/*.dmrc</tt><br />
* <tt>$HOME/.face{,.icon}</tt><br />
* <tt>$HOME/.dmrc</tt><br />
<br />
<br />
=== How to setup TDM ===<br />
<br />
TDM's config files are all located in <tt>${tde_confdir}/tdm</tt>. "make install" 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.<br />
<br />
You can change the configuration from the Trinity Control Center. You will find the "Login Manager" module in the "System Administration" group.<br />
<br />
Have a look at <tt>README.pam</tt> in the <tt>tdebase</tt> top level directory if your system uses PAM.<br />
<br />
<br />
=== Configuring session types ===<br />
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 "standard" .desktop files are:<br />
* the <code>Type</code> is fixed to <tt>XSession</tt> and can be omitted.<br />
* the <code>Encoding</code> is fixed to <tt>UTF-8</tt> and can be omitted.<br />
* the <code>Exec</code> field will be passed to <tt>"eval exec"</tt> in a bourne shell; no macro expansion is performed on it. "default", "custom" and "failsafe" are magic constants that cause special actions.<br />
* <code>Name</code>, <code>Comment</code>, <code>TryExec</code> and <code>Hidden</code> are supported.<br />
* the remaining keys have no meaning currently.<br />
<br />
Session types are internally identified by filename (without extension); that's what will be saved to <tt>~/.dmrc</tt> and what DESKTOP_SESSION will be set to. For every magic <code>Exec</code> constant a session type of the same name exists.<br />
<br />
Unless your system is configured differently already, you should create a directory <tt>${tde_confdir}/tdm/sessions</tt> and add this to <tt>tdmrc</tt>:<br />
<br />
<syntaxhighlight lang="ini"><br />
[X-*-Core]<br />
SessionsDirs=${tde_confdir}/tdm/sessions,${tde_datadir}/tdm/sessions<br />
</syntaxhighlight><br />
<br />
{{WarningBox|text=Always keep in mind the following:<br />
* You must use actual paths instead of variables, see the section about TDM's file system layout.<br />
* Do any changes only in the config directory - any changes in the data directory will be lost after the next TDE update.}}<br />
<br />
<br />
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 "shadowing" them with .desktop files containing <code>Hidden=true</code>.<br />
<br />
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.<br />
<br />
<br />
=== The command sockets ===<br />
This is a feature you can use to remote-control TDM. It's mostly intended for use by ksmserver and kdesktop from a running session, but other applications are possible as well.<br />
<br />
The sockets are UNIX domain sockets which live in subdirectories of the directory specified by <code>FifoDir=</code>. The subdir is the key to addressing and security; the sockets all have the file name "socket" and file permissions <tt>rw-rw-rw-</tt> (0666). This is because some systems don't care for the file permissions of the socket files.<br />
<br />
There are two types of sockets: the global one (<tt>dmctl</tt>) and the per-display ones (<tt>dmctl-<display></tt>).<br />
<br />
The global one's subdir is owned by root, the subdirs of the per-display ones' are owned by the user currently owning the session (root or the logged in user). Group ownership of the subdirs can be set via <code>FifoGroup=</code>, otherwise it's root. The file permissions of the subdirs are <tt>rwxr-x---</tt> (0750).<br />
<br />
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 "<tt>\s</tt>". The command is terminated by a newline (<tt>\n</tt>). The same applies to replies. The reply on success is "<tt>ok</tt>", possibly followed by the requested information. The reply on error is an errno-style word (e.g., "<tt>perm</tt>", "<tt>noent</tt>", etc.) followed by a longer explanation.<br />
<br />
==== Global commands ====<br />
<br />
{|class="wikitable"<br />
|-<br />
| <syntaxhighlight lang="shell">login {display} ("now"|"schedule") {user} {password} [session_arguments]</syntaxhighlight><br />
| Login user at specified display. if "now" is specified, a possibly running session is killed, otherwise the login is done after the session exits.<br />
<tt>session_arguments</tt> are printf-like escaped contents for <tt>.dmrc</tt>. Unlisted keys will default to previously saved values.<br />
|}<br />
<br />
==== Per-display commands ====<br />
<br />
{|class="wikitable"<br />
|-<br />
| <syntaxhighlight lang="shell">lock</syntaxhighlight><br />
| 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.<br />
|-<br />
| <syntaxhighlight lang="shell">unlock</syntaxhighlight><br />
| Reverse the effect of "lock": re-enable auto-relogin.<br />
|-<br />
| <syntaxhighlight lang="shell">suicide</syntaxhighlight><br />
| The currently running session is forcibly terminated. No auto-relogin is attempted, but a scheduled "login" command will be executed.<br />
|}<br />
<br />
==== Commands for all sockets ====<br />
<br />
{|class="wikitable"<br />
|-<br />
| <syntaxhighlight lang="shell">caps</syntaxhighlight><br />
| Returns a list this socket's capabilities:<br />
{|<br />
|<code>tdm</code><br />
| identifies tdm, in case some other DM implements this protocol, too<br />
|-<br />
| <code>list</code>, <code>activate</code>, <code>lock</code>, <code>suicide</code>, <code>login</code><br />
| whether the respective command is supported<br />
|-<br />
| <code>bootoptions</code><br />
| whether the <tt>listbootoptions</tt> command and the "=" option to "<tt>shutdown</tt>" are supported<br />
|-<br />
| <code>shutdown {list}</code><br />
| whether "shutdown" is supported and allowed to the listed users (comma-separated), "*" means all authenticated users<br />
|-<br />
| <code>shutdown</code><br />
| whether "shutdown" is supported and allowed to everybody<br />
|-<br />
| <code>nuke {list}</code><br />
| whether forced shutdown is allowed to the listed users<br />
|-<br />
| <code>nuke</code><br />
| whether forced shutdown is allowed to everybody<br />
|-<br />
| <code>reserve {number}</code><br />
| whether reserve displays are configured and <number> are available at this time<br />
|}<br />
|-<br />
| <syntaxhighlight lang="shell">list [all|alllocal]</syntaxhighlight><br />
| Return a list of running sessions. By default all active sessions are listed.<br />
<br />
If "<tt>all</tt>" is specified, passive sessions are listed as well.<br />
<br />
If "<tt>alllocal</tt>" is specified, passive sessions are listed as well, but all incoming remote sessions are skipped.<br />
<br />
Each session entry is a comma-separated tuple of:<br />
* Display or TTY name<br />
* VT name for local sessions<br />
* Logged in user's name, empty for passive sessions and outgoing remote sessions (local chooser mode)<br />
* Session type or remote host for outgoing remote sessions, empty for passive sessions<br />
* A flag field:<br />
** "t" for tty sessions<br />
** "*" for the display belonging to the requesting socket<br />
** "!" for sessions that cannot be killed by the requesting socket<br />
|-<br />
| <syntaxhighlight lang="shell">reserve [timeout in seconds]</syntaxhighlight><br />
| 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.<br />
Permitted only on sockets of local displays and the global socket.<br />
|-<br />
| <syntaxhighlight lang="shell">activate (vt|display)</syntaxhighlight><br />
| 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).<br />
Permitted only on sockets of local displays and the global socket.<br />
|-<br />
| <syntaxhighlight lang="shell">listbootoptions</syntaxhighlight><br />
| List available boot options.<br />
=> "ok" list default current<br />
*default and current are indices into the list and are -1 if unset or undeterminable.<br />
|-<br />
| <syntaxhighlight lang="shell">shutdown (reboot|halt)[={bootchoice}] (ask|trynow|forcenow|schedule|start (-1|end (force|forcemy|cancel)))</syntaxhighlight><br />
| Request a system shutdown, either a reboot or a halt/poweroff.<br />
An OS choice for the next boot may be specified from the list returned by "listbootoptions".<br />
<br />
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.<br />
<br />
* <tt>start</tt> is the time for which the shutdown is scheduled. If it starts with a plus-sign, the current time is added. Zero means immediately.<br />
* <tt>end</tt> 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:<br />
** <tt>cancel</tt> - give up the shutdown.<br />
** <tt>force</tt> - shut down nonetheless.<br />
** <tt>forcemy</tt> - shut down nonetheless if all active sessions belong to the requesting user. Only for per-display sockets.<br />
* <tt>trynow</tt> is a synonym for "0 0 cancel", <tt>forcenow</tt> for "0 0 force" and <tt>schedule</tt> for "0 -1".<br />
* <tt>ask</tt> attempts an immediate shutdown and interacts with the user if active sessions are still running. Only for per-display sockets.<br />
* <tt>start</tt> and end are specified in seconds since the UNIX epoch.<br />
|-<br />
| <syntaxhighlight lang="shell">shutdown cancel [local|global]</syntaxhighlight><br />
| Cancel a scheduled shutdown. The global socket always cancels the currently pending shutdown, while per-display sockets default to cancelling their queued request.<br />
|-<br />
| <syntaxhighlight lang="shell">shutdown status</syntaxhighlight><br />
| Return a list with information about shutdowns.<br />
The entries are comma-separated tuples of:<br />
* ("global"|"local") - pending vs. queued shutdown. A local entry can be returned only by a per-display socket.<br />
* ("halt"|"reboot")<br />
* start<br />
* end<br />
* ("ask"|"force"|"forcemy"|"cancel")<br />
* Numeric user ID of the requesting user, -1 for the global socket.<br />
* The next boot OS choice or "-" for none.<br />
|}<br />
<br />
There are two ways of using the sockets:<br />
* Connecting them directly. FifoDir is exported as $DM_CONTROL; the name of per-display sockets can be derived from $DISPLAY.<br />
* By using the <tt>tdmctl</tt> command (e.g., from within a shell script). Try "<tt>tdmctl -h</tt>" to find out more.<br />
<br />
Here is an example bash script "reboot into FreeBSD":<br />
<br />
<syntaxhighlight lang="shell"><br />
if tdmctl | grep -q shutdown; then<br />
IFS=$'\t'<br />
set -- `tdmctl listbootoptions`<br />
if [ "$1" = ok ]; then<br />
fbsd=$(echo "$2" | tr ' ' '\n' | sed -ne 's,\\s, ,g;/freebsd/I{p;q}')<br />
if [ -n "$fbsd" ]; then<br />
tdmctl shutdown reboot "=$fbsd" ask > /dev/null<br />
else<br />
echo "FreeBSD boot unavailable."<br />
fi<br />
else<br />
echo "Boot options unavailable."<br />
fi<br />
else<br />
echo "Cannot reboot system."<br />
fi<br />
</syntaxhighlight><br />
<br />
== Troubleshooting ==<br />
TDM accepts two command line options related to logging:<br />
<br />
-debug <n><br />
<n> is a decimal or hexadecimal (prefix 0x) number.<br />
The number is a bitfield, i.e., it is formed by summing up the<br />
required values from this table:<br />
1 (0x1) - core debugging. Probably the most useful one.<br />
2 (0x2) - config reader debugging.<br />
4 (0x4) - greeter debugging.<br />
8 (0x8) - IPC debugging. This logs _all_ communication between the<br />
core, the config reader and the greeter - including the<br />
passwords you type, so edit the log before showing it to<br />
somebody.<br />
This attempts to synchronize the processes to interleave the<br />
log messages optimally, but will probably fail unless you use<br />
-debug 0x80 as well.<br />
16 (0x10) - wait after forking session sub-daemon.<br />
32 (0x20) - wait after starting config reader.<br />
64 (0x40) - wait after starting greeter.<br />
The wait options are only useful if you need to attach a debugger<br />
to a process, but it crashes before you are able to do so without<br />
the delay. See below.<br />
128 (0x80) - don't use syslog for internally generated messages.<br />
256 (0x100) - core Xauth debugging.<br />
1024 (0x400) - run config reader and greeter through valgrind.<br />
2048 (0x800) - run config reader and greeter through strace.<br />
<br />
Logs from "-debug 7" are usually a good start.<br />
<br />
-error <file>, -logfile <file><br />
<file> is the file to log various messages to. The default log file is<br />
/var/log/tdm.log. For internal reasons there is no option in tdmrc to<br />
permanently specify the log file location. If you redirect TDM's<br />
standard error output to a file, TDM will log there.<br />
If TDM is configured to use syslog (and it _very_ probably is on any<br />
modern system), all internally generated messages are logged to the<br />
"daemon" facility. The log usually can be found in /var/log/debug.log<br />
and /var/log/daemon.log; make sure that daemon.* is logged (look at<br />
/etc/syslog.conf).<br />
If you have problems logging in and your system uses PAM (also quite<br />
probable on modern systems), the "auth" and "authpriv" syslog facilities<br />
are interesting, too.<br />
<br />
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.<br />
<br />
=== Producing a backtrace ===<br />
If a backtrace is requested from you and TDM didn't create one yet via the usual drkonqi procedure, you'll have to do that yourself. The keyphrase is "attaching gdb". How exactly this is done depends on the part that crashes:<br />
<br />
==== Attaching gdb to the process ====<br />
===== Master daemon =====<br />
Actually you should never need to attach to it, as you can start it within the debugger already:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# gdb --args tdm -nodaemon -debug 7<br />
(gdb) run<br />
</syntaxhighlight><br />
<br />
===== Display subdaemon =====<br />
Find (using ps) the process with a name like "-:0" (where :0 is actually the display this process is for). This process' PPID is the master daemon. Attach to it this way:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# gdb tdm <the PID you found><br />
(gdb) cont<br />
</syntaxhighlight><br />
<br />
If the subdaemon crashes before you can attach, add 16 to the debug flags when you start TDM.<br />
<br />
===== Config reader =====<br />
You will have to add 32 to the debug flags almost certainly. The PPID will be the master daemon as well.<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# gdb tdm_config $(pidof tdm_config)<br />
(gdb) cont<br />
</syntaxhighlight><br />
<br />
===== Greeter =====<br />
If it's too fast, add 64 to -debug. The PPID will be the subdaemon.<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# gdb tdm_greet $(pidof tdm_greet)<br />
(gdb) cont<br />
</syntaxhighlight><br />
<br />
The simplification with "pidof" works only if you have only one display, otherwise you have to find the PID manually (by using ps -fx).<br />
<br />
==== Reproduce crash and create backtrace ====<br />
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).<br />
<br />
Once it crashed, gdb will tell you a signal name, like SIGSEGV - that's the first interesting part. Then you have to create the actual backtrace:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
(gdb) bt<br />
</syntaxhighlight><br />
<br />
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't use "cont" after attaching, but use "bt" right away. If the process is already running, interrupt it with ctrl-c.<br />
<br />
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'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.<br />
<br />
Note that a backtrace is usually much more useful if the binary contains debugging info.</div>Blu256https://wiki.trinitydesktop.org/index.php?title=TDE_Wiki_Style_Guideline&diff=3262TDE Wiki Style Guideline2023-12-18T10:26:09Z<p>Blu256: /* Code */ add mention of TDE class template</p>
<hr />
<div>{{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].}}<br />
<br />
<div style="float: right"><br />
__TOC__<br />
</div><br />
<br />
This page is meant to provide a single guideline for styling pages on this Wiki.<br />
<br />
The goal is to achieve consistency between pages as much as possible.<br />
<br />
<br />
= Generic guidelines =<br />
<br />
* Use visual styles to make it easier tell apart different kinds of information.<br />
* Try to be consistent with how other pages look and the way they use styles and templates to achieve things.<br />
* Create templates for things that can be reused on the wiki. Re-use [[Special:UncategorizedTemplates|existing templates]] as much as possible.<br />
<br />
<br />
= Style Recommendations =<br />
<br />
== Code ==<br />
<br />
* To denote a non-Trinity class use the <code><nowiki><tt>...</tt></nowiki></code> tag.<br />
** To denote a TQt class use [[:Template:TQt class]].<br />
** To denote a TDE class use [[:Template:TDE class]].<br />
<!-- TODO: ** To denote a Trinity class use the special template. --><br />
* To denote a function signature or a function call use the <code><nowiki><code>...</code></nowiki></code> tag.<br />
* To denote a source code block use <code><nowiki><syntaxhighlighting lang="...">...</syntaxhighlighting></nowiki></code> tag with the appropriate <code>lang</code> attribute.<br />
** To denote commands to be run in a shell use the <code>shell-session</code>. Prepend the commands with the <tt>$</tt> sign for commands to be run with normal user privileges or <tt>#</tt> for commands to be run with root privileges.<br />
<br />
== Files ==<br />
<br />
* To denote a file, a directory or a path, use the <code><nowiki><tt>...</tt></nowiki></code> tag.<br />
* To denote the (whole or partial) contents of a file use a space before each line '''unless''' it contains [[#Code|code]].<br />
<br />
== Tables ==<br />
<br />
* To make tables look better and be more readable, add <code>class="wikitable"</code> to your tables.<br />
* Make sure tables don't stretch too much vertically or horizontally.<br />
<br />
== Messages and boxes ==<br />
<br />
=== Warnings ===<br />
<br />
* If a page or section is unfinished, place [[:Template:TODO]] in the beginning of the page or section.<br />
* 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.<br />
* If a page or section contains outdated information, place [[:Template:Outdated]] inserting the appropriate date and justifying it.<br />
** 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]].<br />
* Denote spam pages with [[:Template:Spam]].<br />
* For generic warnings use [[:Template:WarningBox]] with the appropriate arguments.<br />
** The opposite template to <tt>WarningBox</tt> is [[:Template:SafeBox]].<br />
<br />
=== Other boxes ===<br />
* For generic type messages (notes, tips, etc.) use [[:Template:TipBox]].<br />
* Avoid using [[:Template:Box]] directly if you can help it. If you really need to use it, consider proposing a new template.</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Raspbian_Trinity_Repository_Installation_Instructions&diff=3234Raspbian Trinity Repository Installation Instructions2023-11-30T13:20:29Z<p>Blu256: Improve previous addition by User:User0</p>
<hr />
<div>[[Category:Documentation]]<br />
[[Category:Installation]]<br />
<br />
This page provides instructions to '''install''', '''upgrade''' or '''remove''' Trinity Desktop Environment on your Raspbian system.<br />
__FORCETOC__<br />
<br />
=Available versions=<br />
<br />
==TDE R14.x.y series==<br />
<br />
===Stable versions===<br />
<br />
Packages for stable versions are available for the following Raspbian distributions (green rows indicates latest version):<br />
<br />
{| class="wikitable"<br />
! Version<br />
! Architectures<br />
! Notes<br />
|-style="background:lightgreen"<br />
| bookworm<br />
| armhf<br />
|<br />
|-style="background:lightgreen"<br />
| bullseye<br />
| armhf<br />
|<br />
|-style="background:lightgreen"<br />
| buster<br />
| armhf<br />
|<br />
|-<br />
| stretch<br />
| armhf<br />
| up to R14.0.13<br />
|-<br />
| jessie<br />
| armhf<br />
| up to R14.0.10<br />
|-<br />
| 7.x - wheezy<br />
| armhf<br />
| up to R14.0.6<br />
|}<br />
<br />
===Rolling versions===<br />
<br />
Rolling builds are also available. <br />
<br />
* [[Preliminary_Stable_Builds|Preliminary Stable Builds]] - rolling version of current stable branch (maintenance releases)<br />
* [[Preliminary_Testing_Builds|Preliminary Testing Builds]] - rolling version of main development branch (major/minor releases)<br />
<br />
==v3.5.13.x series==<br />
<br />
There is no support for this TDE branch in Raspbian.<br />
<br />
=Configure the package manager=<br />
<br />
Add the following lines to your /etc/apt/sources.list file. <br />
<br />
{{WarningBox<br />
|text=Make sure to replace <span style="color:#0000ff">'''<your-distribution-release-name>'''</span> with your actual distribution release name (for example 'bullseye' or 'buster')<br />
}}<br />
<br />
===TDE R14.1.x series===<br />
<syntaxhighlight lang="sourceslist"><br />
deb http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.1.x <your-distribution-release-name> main deps<br />
<br />
# Optional sources<br />
deb-src http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.1.x <your-distribution-release-name> main deps<br />
</syntaxhighlight><br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
===TDE R14.0.x series===<br />
<div class="mw-collapsible-content"><br />
<syntaxhighlight lang="sourceslist"><br />
deb http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.0.x <your-distribution-release-name> main<br />
deb http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-builddeps-r14.0.x <your-distribution-release-name> main<br />
<br />
# Optional sources<br />
deb-src http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.0.x <your-distribution-release-name> main<br />
deb-src http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-builddeps-r14.0.x <your-distribution-release-name> main<br />
</syntaxhighlight><br />
</div></div><br />
<br />
=Import GPG signing key=<br />
<br />
The best way to install GPG key is to manually download and install package <code>trinity-keyring</code>. 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:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ wget http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-keyring.deb<br />
$ sudo dpkg -i trinity-keyring.deb<br />
</syntaxhighlight><br />
<br />
=Install Trinity=<br />
* If you are doing a '''fresh TDE installation''', please follow the steps listed below.<br><br />
* If you are '''upgrading''' from an existing version, please follow the instruction under the [[#TDEUpgrade|upgrading]] section.<br><br />
<br />
==Fresh installation==<br />
<br />
The following steps are suggested for installing the latest version.<br />
<br />
{{WarningBox<br />
|text=<span style="color:#0000ff">''tde-trinity''</span> package is a comprehensive meta-package. To install a minimalist environment, replace <span style="color:#0000ff">''tde-trinity''</span> with <span style="color:#0000ff">''tdebase-trinity''</span> in the instructions below.<br />
}}<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ sudo apt-get update<br />
$ sudo aptitude install tde-trinity<br />
</syntaxhighlight><br />
<br />
{{TipBox <br />
| 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: <br />
<syntaxhighlight lang="shell-session"><br />
$ sudo update-alternatives --config x-session-manager<br />
</syntaxhighlight><br />
Select the option ending with "starttde" (usually <tt>/opt/trinity/bin/starttde</tt>), then logout or reboot. After logging in, TDE should start automatically.}}<br />
<br />
===Localization===<br />
{{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: <syntaxhighlight lang="shell-session">$ sudo aptitude install tde-i18n-cs-trinity</syntaxhighlight><br />
}}<br />
<br />
<br />
==<span id="TDEUpgrade"></span>Upgrading from an existing installation==<br />
<br />
The following steps are suggested for upgrading to the latest version.<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ sudo apt-get update<br />
$ sudo aptitude full-upgrade<br />
</syntaxhighlight><br />
<br />
<br />
This will upgrade TDE to the newer version and should complete smoothly.<br />
<br />
=Removing Trinity=<br />
<br />
{{TipBox | caption = Note | text = Please read the following instructions completely before starting the removal process.}}<br />
<br />
Removing the Trinity Desktop Environment involves the following four steps:<br />
<br />
# Uninstalling packages<br />
# Removing the Trinity repository from the list of available package sources<br />
# Cleaning up the package cache<br />
# Removing left-over files from your home directory<br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
==Uninstalling packages==<br />
<div class="mw-collapsible-content"><br />
<br />
===Using aptitude===<br />
<br />
If you have ''aptitude'' installed, you can simply run<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ sudo aptitude purge '~i~Otrinitydesktop'<br />
</syntaxhighlight><br />
<br />
===Using apt-get===<br />
<br />
Using the standard ''apt-get'' utility to uninstall TDE and its dependencies involves the following three steps:<br />
# Generating a list of all packages available from the Trinity repository<br />
# Using that list to uninstall all installed packages originating from that repository<br />
# Uninstalling all packages that were installed as dependencies of Trinity<br />
<br />
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 <code>/var/lib/apt/lists</code> 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'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:<br />
* <code>mirror.ppa.trinitydesktop.org_trinity_deb_trinity-r14.1.x_dists_bullseye_main_binary-i386_Packages</code><br />
* <code>mirror.ppa.trinitydesktop.org_trinity_deb_trinity-builddeps-r14.1.x_dists_bullseye_main_binary-i386_Packages</code><br />
<br />
First, let's create a new empty file in <code>/tmp</code>, using <code>mktemp</code>:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ mktemp /tmp/tde.XXXX<br />
/tmp/tde.fB6B<br />
</syntaxhighlight><br />
<br />
Generating a list of all Trinity packages and writing it to that file now works as follows:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ sed -n '/^Package: / s/^Package: //p' /var/lib/apt/lists/mirror.ppa.trinitydesktop.org_trinity_deb_trinity-*Packages > /tmp/tde.fB6B<br />
</syntaxhighlight><br />
<br />
Be sure to replace the output file's name with the actual name of the file <code>mktemp</code> created on your system.<br />
<br />
Now that we have a list of all TDE packages, we can hand that to <code>apt-get</code> for uninstallation:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ sudo apt-get remove $(cat /tmp/tde.fB6B)<br />
</syntaxhighlight><br />
<br />
Replace <code>apt-get remove</code> with <code>apt-get purge</code> to also remove the configuration files that came with those packages. And, as above, be sure to replace the output file's name with the actual name of the file <code>mktemp</code> created on your system.<br />
<br />
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 "were automatically installed and are not longer required" and suggest using <code>apt autoremove</code> to uninstall them. We will take care of that in the next step. So, for now, just confirm the uninstallation of the TDE packages.<br />
<br />
If Apt asks whether to stop the tdm deamon, say yes. We'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 <code>apt-get</code> from using Ctrl + F1..7.<br />
<br />
Finally, to uninstall all remaining Trinity dependencies, you will need to run<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ sudo apt-get autoremove<br />
</syntaxhighlight><br />
<br />
In case you also want to remove the configuration files that came with these packages, append <code>--purge</code> to the <code>autoremove</code> command.<br />
<br />
{{WarningBox | caption = CAUTION | text = Beware that running <code>apt-get autoremove</code> 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.<br />
<br />
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.<br />
<br />
If you're not sure how to handle the situation, ask in the Trinity IRC channel or on the mailing list.}}<br />
</div></div><br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
==Removing the Trinity repository from package sources==<br />
<div class="mw-collapsible-content"><br />
<br />
Open <code>/etc/apt/sources.list</code> and either remove the Trinity repository lines or comment them by adding a hash symbol (<code>#</code>) at the beginning of each line. Then save the file and run <code>sudo apt-get update</code>.<br />
</div></div><br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
==Cleaning up the package cache==<br />
<div class="mw-collapsible-content"><br />
<br />
If you deactivated/removed the repo from source.list, at least run<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ sudo apt-get autoclean<br />
</syntaxhighlight><br />
<br />
This will remove all Trinity packages from the local cache.<br />
<br />
To get rid of other packages as well, you'll have to clean out the whole package cache using<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ sudo apt-get clean<br />
</syntaxhighlight><br />
</div></div><br />
<br />
<div class="mw-collapsible mw-collapsed"><br />
==Removing left-over files from your home directory==<br />
<div class="mw-collapsible-content"><br />
<br />
Remove TDE files in <tt>$HOME</tt>. Usually these are the <tt>.tderc</tt> file and the <tt>.trinity</tt> and <tt>.qt</tt> directories. (The latter is still mistakenly used by some applications.)<br />
</div></div></div>Blu256https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&diff=3233Images (for developers)2023-11-25T22:05:08Z<p>Blu256: Remove WIP marking (still has a few TODOs)</p>
<hr />
<div>Working with images is an important part of a graphical application, whether it'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.<br />
<br />
__TOC__<br />
<br />
== Image classes ==<br />
* {{TQt class|TQPixmap}} is one of the two basic image classes provided by TQt.<br />
: It is, essentially, a paint device, so it is optimized for drawing. You'll see this class used a lot (more than TQImage) because of this quality.<br />
* {{TQt class|TQImage}} is the other basic image class.<br />
: According to the API docs, it is "a hardware-independent pixmap representation" and it is optimized for I/O operations and direct pixel access and manipulation.<br />
* {{TQt class|TQIconSet}} is a helper class for icons.<br />
: Compared to the basic image classes, this class does not represent a single image, but a ''set'' 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.<br />
<br />
Usually you won't need more advanced classes.<br />
<br />
== Basic usage ==<br />
=== Loading an image ===<br />
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 <tt>share</tt> folder) use the {{TDE class|tdelibs|tdecore|TDEStandardDirs}} class.<br />
<br />
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'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:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQPixmap icon = kapp->iconLoader()->loadIcon("folder", TDEIcon::Toolbar);<br />
</syntaxhighlight><br />
<br />
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 '''KImageIO''' in your project to support more image formats.<br />
<br />
=== Displaying an image ===<br />
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}}.<br />
<br />
The following example creates a push button with a folder icon from the icon theme:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQIconSet icon = kapp->iconLoader()->loadIconSet("folder", TDEIcon::Toolbar);<br />
TQPushButton *button = new TQPushButton(icon, i18n("Open folder..."), this);<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
=== Vector images (SVG) ===<br />
{{TODO}}<br />
<br />
=== Applying effects ===<br />
{{TODO}}<br />
<br />
== Advanced usage ==<br />
=== Loading KImageIO ===<br />
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.<br />
<br />
To make use of KImageIO you only need to:<br />
# link your application with the <tt>tdeio</tt> library<br />
# Include the <kimageio.h> header<br />
# call KImageIO::registerFormats() once, somewhere in your code, before you load an image.<br />
<br />
=== Saving an image ===<br />
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's made easy thanks to technologies such as [[TDEIO]] and KImageIO.<br />
<br />
Let's start with the basics.<br />
<br />
==== The Foundation: <tt>TQImage::save(...)</tt> ====<br />
{{TQt class|TQImage}} provides a convenient <code>save(const TQString &fileName, const char *format, int quality = -1)</code> method which, as you can tell, saves the image in memory to the selected destination (<tt>fileName</tt>).<br />
<br />
The <tt>format</tt> 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.<br />
<br />
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.<br />
<br />
'''KImageIO''' adds support for more file formats, such as JPEG2000, EPS and TGA.<br />
<br />
For example, to save an image <code>TQImage img</code> in PNG format, you could use the following call:<br />
<br />
<syntaxhighlight lang="c++"><br />
img.save("/home/test/image.png", "PNG");<br />
</syntaxhighlight><br />
<br />
The <tt>quality</tt> parameter is pretty self-explanatory. Its default value is -1, which will make TQt use the default quality when saving.<br />
<br />
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:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQString saveFile = KFileDialog::getSaveFileName(TQString::null, "*.PNG|" + i18n("PNG image (*.png)"), this);<br />
if (!saveFile.isEmpty()) {<br />
img.save(saveFile, "PNG");<br />
}<br />
</syntaxhighlight><br />
<br />
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?<br />
<br />
==== Better image saving (feat. KImageIO) ====<br />
Let's improve the situation with file formats by making use of some features of KImageIO.<br />
<br />
We shall start by querying KImageIO for all the image formats it can write to:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQStringList mimeTypes = KImageIO::mimeTypes(KImageIO::Writing);<br />
if (mimeTypes.isEmpty()) {<br />
kdError() << "kimgio: no image formats support writing!" << endl;<br />
}<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
Then we can construct a file dialog based on the MIME information that we obtained. It's worth noting that the convenient static methods of {{TDE class|tdelibs|tdeio/tdefile|KFileDialog}} cannot take a <tt>TQStringList mimeTypes</tt> as argument, so we will have to construct the dialog more or less manually:<br />
<br />
<syntaxhighlight lang="c++"><br />
KFileDialog *saveDlg = new KFileDialog(TQString::null, TQString::null, this, "mysavedialog", true);<br />
saveDlg->setOperationMode(KFileDialog::Saving);<br />
saveDlg->setMimeFilter(mimeTypes);<br />
</syntaxhighlight><br />
<br />
Then we can execute the dialog:<br />
<br />
<syntaxhighlight lang="c++"><br />
if (!saveDlg->exec()) {<br />
// The dialog was canceled<br />
}<br />
</syntaxhighlight><br />
<br />
And finally, after it has been closed, we can obtain the URL where we will save the file. It'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.<br />
<br />
<syntaxhighlight lang="c++"><br />
KURL saveURL = saveDlg->selectedURL();<br />
<br />
TQString type = KImageIO::type(saveURL.url());<br />
if (!KImageIO::canWrite(type)) {<br />
kdError() << "kimgio: writing to image format " << type << " is not supported" << endl;<br />
}<br />
</syntaxhighlight><br />
<br />
For simplicity's sake we will only accept local URLs for now.<br />
<br />
<syntaxhighlight lang="c++"><br />
if (!saveURL.isLocalFile()) {<br />
kdError() << "Cannot save to remote location (yet!)" << endl;<br />
return;<br />
}<br />
</syntaxhighlight><br />
<br />
So, now that we have the URL, what's next? Easy, we actually save the image:<br />
<br />
<syntaxhighlight lang="c++"><br />
bool ok = img.save(saveURL.path(), type.latin1());<br />
if (!ok) {<br />
kdError() << "Couldn't save!" << endl;<br />
}<br />
</syntaxhighlight><br />
<br />
Note how we use <tt>path()</tt> on saveURL instead of <tt>url()</tt>. It is because the function accepts a file path. By design it will not accept even local <tt>file://</tt> URLs.<br />
<br />
So how do we save to a remote location?<br />
<br />
==== Even better image saving (feat. TDEIO) ====<br />
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'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.<br />
<br />
Most TDE applications do not make use of TDEIO itself, but rather <tt>TDEIO::NetAccess</tt>, an API meant to simplify network file operations. We will only need one of its methods, <tt>upload(...)</tt>, 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'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}}.<br />
<br />
Remember the mast two chunks of code we previously wrote? Time to rewrite them!<br />
<br />
<syntaxhighlight lang="c++"><br />
if (saveURL.isLocalFile()) {<br />
bool ok = img.save(saveURL.path(), type.latin1());<br />
if (!ok) {<br />
kdError() << "Couldn't save!" << endl;<br />
}<br />
}<br />
else {<br />
</syntaxhighlight><br />
<br />
We have the local file handler from our previous effort. Let's proceed to write the handler for non-local files then. First, we'll create a new {{TDE class|tdelibs|tdecore|KTempFile}}:<br />
<syntaxhighlight lang="c++"><br />
KTempFile tempFile;<br />
tempFile.setAutoDelete(true);<br />
TQString tempFileName = tempFile.name();<br />
if (tempFileName.isEmpty()) {<br />
kdError() << "could not create a temp file!" << endl;<br />
return;<br />
}<br />
</syntaxhighlight><br />
<br />
Now let's save our image to that file:<br />
<syntaxhighlight lang="c++"><br />
bool ok = img.save(tempFileName, type.latin1());<br />
if (!ok) {<br />
kdError() << "Couldn't write temporary file: " << tempFileName << endl;<br />
return;<br />
}<br />
</syntaxhighlight><br />
<br />
And finally, let's upload that file to the remote location:<br />
<syntaxhighlight lang="c++"><br />
if (!TDEIO::NetAccess::upload(tempFileName, saveURL, this)) {<br />
kdError() << "Could not upload file to " << saveURL << endl;<br />
}<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
== TDE Developers' usage ==<br />
=== Adding image format support ===<br />
{{TODO}}<br />
<br />
[[Category: Developers]]</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&diff=3232Images (for developers)2023-11-25T21:57:23Z<p>Blu256: /* TQImage::save(...) */ a nice section pretitle</p>
<hr />
<div>{{WIP|Blu256}}<br />
<br />
Working with images is an important part of a graphical application, whether it'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.<br />
<br />
__TOC__<br />
<br />
== Image classes ==<br />
* {{TQt class|TQPixmap}} is one of the two basic image classes provided by TQt.<br />
: It is, essentially, a paint device, so it is optimized for drawing. You'll see this class used a lot (more than TQImage) because of this quality.<br />
* {{TQt class|TQImage}} is the other basic image class.<br />
: According to the API docs, it is "a hardware-independent pixmap representation" and it is optimized for I/O operations and direct pixel access and manipulation.<br />
* {{TQt class|TQIconSet}} is a helper class for icons.<br />
: Compared to the basic image classes, this class does not represent a single image, but a ''set'' 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.<br />
<br />
Usually you won't need more advanced classes.<br />
<br />
== Basic usage ==<br />
=== Loading an image ===<br />
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 <tt>share</tt> folder) use the {{TDE class|tdelibs|tdecore|TDEStandardDirs}} class.<br />
<br />
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'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:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQPixmap icon = kapp->iconLoader()->loadIcon("folder", TDEIcon::Toolbar);<br />
</syntaxhighlight><br />
<br />
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 '''KImageIO''' in your project to support more image formats.<br />
<br />
=== Displaying an image ===<br />
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}}.<br />
<br />
The following example creates a push button with a folder icon from the icon theme:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQIconSet icon = kapp->iconLoader()->loadIconSet("folder", TDEIcon::Toolbar);<br />
TQPushButton *button = new TQPushButton(icon, i18n("Open folder..."), this);<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
=== Vector images (SVG) ===<br />
{{TODO}}<br />
<br />
=== Applying effects ===<br />
{{TODO}}<br />
<br />
== Advanced usage ==<br />
=== Loading KImageIO ===<br />
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.<br />
<br />
To make use of KImageIO you only need to:<br />
# link your application with the <tt>tdeio</tt> library<br />
# Include the <kimageio.h> header<br />
# call KImageIO::registerFormats() once, somewhere in your code, before you load an image.<br />
<br />
=== Saving an image ===<br />
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's made easy thanks to technologies such as [[TDEIO]] and KImageIO.<br />
<br />
Let's start with the basics.<br />
<br />
==== The Foundation: <tt>TQImage::save(...)</tt> ====<br />
{{TQt class|TQImage}} provides a convenient <code>save(const TQString &fileName, const char *format, int quality = -1)</code> method which, as you can tell, saves the image in memory to the selected destination (<tt>fileName</tt>).<br />
<br />
The <tt>format</tt> 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.<br />
<br />
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.<br />
<br />
'''KImageIO''' adds support for more file formats, such as JPEG2000, EPS and TGA.<br />
<br />
For example, to save an image <code>TQImage img</code> in PNG format, you could use the following call:<br />
<br />
<syntaxhighlight lang="c++"><br />
img.save("/home/test/image.png", "PNG");<br />
</syntaxhighlight><br />
<br />
The <tt>quality</tt> parameter is pretty self-explanatory. Its default value is -1, which will make TQt use the default quality when saving.<br />
<br />
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:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQString saveFile = KFileDialog::getSaveFileName(TQString::null, "*.PNG|" + i18n("PNG image (*.png)"), this);<br />
if (!saveFile.isEmpty()) {<br />
img.save(saveFile, "PNG");<br />
}<br />
</syntaxhighlight><br />
<br />
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?<br />
<br />
==== Better image saving (feat. KImageIO) ====<br />
Let's improve the situation with file formats by making use of some features of KImageIO.<br />
<br />
We shall start by querying KImageIO for all the image formats it can write to:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQStringList mimeTypes = KImageIO::mimeTypes(KImageIO::Writing);<br />
if (mimeTypes.isEmpty()) {<br />
kdError() << "kimgio: no image formats support writing!" << endl;<br />
}<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
Then we can construct a file dialog based on the MIME information that we obtained. It's worth noting that the convenient static methods of {{TDE class|tdelibs|tdeio/tdefile|KFileDialog}} cannot take a <tt>TQStringList mimeTypes</tt> as argument, so we will have to construct the dialog more or less manually:<br />
<br />
<syntaxhighlight lang="c++"><br />
KFileDialog *saveDlg = new KFileDialog(TQString::null, TQString::null, this, "mysavedialog", true);<br />
saveDlg->setOperationMode(KFileDialog::Saving);<br />
saveDlg->setMimeFilter(mimeTypes);<br />
</syntaxhighlight><br />
<br />
Then we can execute the dialog:<br />
<br />
<syntaxhighlight lang="c++"><br />
if (!saveDlg->exec()) {<br />
// The dialog was canceled<br />
}<br />
</syntaxhighlight><br />
<br />
And finally, after it has been closed, we can obtain the URL where we will save the file. It'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.<br />
<br />
<syntaxhighlight lang="c++"><br />
KURL saveURL = saveDlg->selectedURL();<br />
<br />
TQString type = KImageIO::type(saveURL.url());<br />
if (!KImageIO::canWrite(type)) {<br />
kdError() << "kimgio: writing to image format " << type << " is not supported" << endl;<br />
}<br />
</syntaxhighlight><br />
<br />
For simplicity's sake we will only accept local URLs for now.<br />
<br />
<syntaxhighlight lang="c++"><br />
if (!saveURL.isLocalFile()) {<br />
kdError() << "Cannot save to remote location (yet!)" << endl;<br />
return;<br />
}<br />
</syntaxhighlight><br />
<br />
So, now that we have the URL, what's next? Easy, we actually save the image:<br />
<br />
<syntaxhighlight lang="c++"><br />
bool ok = img.save(saveURL.path(), type.latin1());<br />
if (!ok) {<br />
kdError() << "Couldn't save!" << endl;<br />
}<br />
</syntaxhighlight><br />
<br />
Note how we use <tt>path()</tt> on saveURL instead of <tt>url()</tt>. It is because the function accepts a file path. By design it will not accept even local <tt>file://</tt> URLs.<br />
<br />
So how do we save to a remote location?<br />
<br />
==== Even better image saving (feat. TDEIO) ====<br />
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'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.<br />
<br />
Most TDE applications do not make use of TDEIO itself, but rather <tt>TDEIO::NetAccess</tt>, an API meant to simplify network file operations. We will only need one of its methods, <tt>upload(...)</tt>, 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'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}}.<br />
<br />
Remember the mast two chunks of code we previously wrote? Time to rewrite them!<br />
<br />
<syntaxhighlight lang="c++"><br />
if (saveURL.isLocalFile()) {<br />
bool ok = img.save(saveURL.path(), type.latin1());<br />
if (!ok) {<br />
kdError() << "Couldn't save!" << endl;<br />
}<br />
}<br />
else {<br />
</syntaxhighlight><br />
<br />
We have the local file handler from our previous effort. Let's proceed to write the handler for non-local files then. First, we'll create a new {{TDE class|tdelibs|tdecore|KTempFile}}:<br />
<syntaxhighlight lang="c++"><br />
KTempFile tempFile;<br />
tempFile.setAutoDelete(true);<br />
TQString tempFileName = tempFile.name();<br />
if (tempFileName.isEmpty()) {<br />
kdError() << "could not create a temp file!" << endl;<br />
return;<br />
}<br />
</syntaxhighlight><br />
<br />
Now let's save our image to that file:<br />
<syntaxhighlight lang="c++"><br />
bool ok = img.save(tempFileName, type.latin1());<br />
if (!ok) {<br />
kdError() << "Couldn't write temporary file: " << tempFileName << endl;<br />
return;<br />
}<br />
</syntaxhighlight><br />
<br />
And finally, let's upload that file to the remote location:<br />
<syntaxhighlight lang="c++"><br />
if (!TDEIO::NetAccess::upload(tempFileName, saveURL, this)) {<br />
kdError() << "Could not upload file to " << saveURL << endl;<br />
}<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
== TDE Developers' usage ==<br />
=== Adding image format support ===<br />
{{TODO}}<br />
<br />
[[Category: Developers]]</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&diff=3231Images (for developers)2023-11-25T21:56:53Z<p>Blu256: Add section on saving images</p>
<hr />
<div>{{WIP|Blu256}}<br />
<br />
Working with images is an important part of a graphical application, whether it'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.<br />
<br />
__TOC__<br />
<br />
== Image classes ==<br />
* {{TQt class|TQPixmap}} is one of the two basic image classes provided by TQt.<br />
: It is, essentially, a paint device, so it is optimized for drawing. You'll see this class used a lot (more than TQImage) because of this quality.<br />
* {{TQt class|TQImage}} is the other basic image class.<br />
: According to the API docs, it is "a hardware-independent pixmap representation" and it is optimized for I/O operations and direct pixel access and manipulation.<br />
* {{TQt class|TQIconSet}} is a helper class for icons.<br />
: Compared to the basic image classes, this class does not represent a single image, but a ''set'' 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.<br />
<br />
Usually you won't need more advanced classes.<br />
<br />
== Basic usage ==<br />
=== Loading an image ===<br />
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 <tt>share</tt> folder) use the {{TDE class|tdelibs|tdecore|TDEStandardDirs}} class.<br />
<br />
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'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:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQPixmap icon = kapp->iconLoader()->loadIcon("folder", TDEIcon::Toolbar);<br />
</syntaxhighlight><br />
<br />
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 '''KImageIO''' in your project to support more image formats.<br />
<br />
=== Displaying an image ===<br />
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}}.<br />
<br />
The following example creates a push button with a folder icon from the icon theme:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQIconSet icon = kapp->iconLoader()->loadIconSet("folder", TDEIcon::Toolbar);<br />
TQPushButton *button = new TQPushButton(icon, i18n("Open folder..."), this);<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
=== Vector images (SVG) ===<br />
{{TODO}}<br />
<br />
=== Applying effects ===<br />
{{TODO}}<br />
<br />
== Advanced usage ==<br />
=== Loading KImageIO ===<br />
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.<br />
<br />
To make use of KImageIO you only need to:<br />
# link your application with the <tt>tdeio</tt> library<br />
# Include the <kimageio.h> header<br />
# call KImageIO::registerFormats() once, somewhere in your code, before you load an image.<br />
<br />
=== Saving an image ===<br />
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's made easy thanks to technologies such as [[TDEIO]] and KImageIO.<br />
<br />
Let's start with the basics.<br />
<br />
==== <tt>TQImage::save(...)</tt> ====<br />
{{TQt class|TQImage}} provides a convenient <code>save(const TQString &fileName, const char *format, int quality = -1)</code> method which, as you can tell, saves the image in memory to the selected destination (<tt>fileName</tt>).<br />
<br />
The <tt>format</tt> 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.<br />
<br />
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.<br />
<br />
'''KImageIO''' adds support for more file formats, such as JPEG2000, EPS and TGA.<br />
<br />
For example, to save an image <code>TQImage img</code> in PNG format, you could use the following call:<br />
<br />
<syntaxhighlight lang="c++"><br />
img.save("/home/test/image.png", "PNG");<br />
</syntaxhighlight><br />
<br />
The <tt>quality</tt> parameter is pretty self-explanatory. Its default value is -1, which will make TQt use the default quality when saving.<br />
<br />
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:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQString saveFile = KFileDialog::getSaveFileName(TQString::null, "*.PNG|" + i18n("PNG image (*.png)"), this);<br />
if (!saveFile.isEmpty()) {<br />
img.save(saveFile, "PNG");<br />
}<br />
</syntaxhighlight><br />
<br />
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?<br />
<br />
==== Better image saving (feat. KImageIO) ====<br />
Let's improve the situation with file formats by making use of some features of KImageIO.<br />
<br />
We shall start by querying KImageIO for all the image formats it can write to:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQStringList mimeTypes = KImageIO::mimeTypes(KImageIO::Writing);<br />
if (mimeTypes.isEmpty()) {<br />
kdError() << "kimgio: no image formats support writing!" << endl;<br />
}<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
Then we can construct a file dialog based on the MIME information that we obtained. It's worth noting that the convenient static methods of {{TDE class|tdelibs|tdeio/tdefile|KFileDialog}} cannot take a <tt>TQStringList mimeTypes</tt> as argument, so we will have to construct the dialog more or less manually:<br />
<br />
<syntaxhighlight lang="c++"><br />
KFileDialog *saveDlg = new KFileDialog(TQString::null, TQString::null, this, "mysavedialog", true);<br />
saveDlg->setOperationMode(KFileDialog::Saving);<br />
saveDlg->setMimeFilter(mimeTypes);<br />
</syntaxhighlight><br />
<br />
Then we can execute the dialog:<br />
<br />
<syntaxhighlight lang="c++"><br />
if (!saveDlg->exec()) {<br />
// The dialog was canceled<br />
}<br />
</syntaxhighlight><br />
<br />
And finally, after it has been closed, we can obtain the URL where we will save the file. It'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.<br />
<br />
<syntaxhighlight lang="c++"><br />
KURL saveURL = saveDlg->selectedURL();<br />
<br />
TQString type = KImageIO::type(saveURL.url());<br />
if (!KImageIO::canWrite(type)) {<br />
kdError() << "kimgio: writing to image format " << type << " is not supported" << endl;<br />
}<br />
</syntaxhighlight><br />
<br />
For simplicity's sake we will only accept local URLs for now.<br />
<br />
<syntaxhighlight lang="c++"><br />
if (!saveURL.isLocalFile()) {<br />
kdError() << "Cannot save to remote location (yet!)" << endl;<br />
return;<br />
}<br />
</syntaxhighlight><br />
<br />
So, now that we have the URL, what's next? Easy, we actually save the image:<br />
<br />
<syntaxhighlight lang="c++"><br />
bool ok = img.save(saveURL.path(), type.latin1());<br />
if (!ok) {<br />
kdError() << "Couldn't save!" << endl;<br />
}<br />
</syntaxhighlight><br />
<br />
Note how we use <tt>path()</tt> on saveURL instead of <tt>url()</tt>. It is because the function accepts a file path. By design it will not accept even local <tt>file://</tt> URLs.<br />
<br />
So how do we save to a remote location?<br />
<br />
==== Even better image saving (feat. TDEIO) ====<br />
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'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.<br />
<br />
Most TDE applications do not make use of TDEIO itself, but rather <tt>TDEIO::NetAccess</tt>, an API meant to simplify network file operations. We will only need one of its methods, <tt>upload(...)</tt>, 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'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}}.<br />
<br />
Remember the mast two chunks of code we previously wrote? Time to rewrite them!<br />
<br />
<syntaxhighlight lang="c++"><br />
if (saveURL.isLocalFile()) {<br />
bool ok = img.save(saveURL.path(), type.latin1());<br />
if (!ok) {<br />
kdError() << "Couldn't save!" << endl;<br />
}<br />
}<br />
else {<br />
</syntaxhighlight><br />
<br />
We have the local file handler from our previous effort. Let's proceed to write the handler for non-local files then. First, we'll create a new {{TDE class|tdelibs|tdecore|KTempFile}}:<br />
<syntaxhighlight lang="c++"><br />
KTempFile tempFile;<br />
tempFile.setAutoDelete(true);<br />
TQString tempFileName = tempFile.name();<br />
if (tempFileName.isEmpty()) {<br />
kdError() << "could not create a temp file!" << endl;<br />
return;<br />
}<br />
</syntaxhighlight><br />
<br />
Now let's save our image to that file:<br />
<syntaxhighlight lang="c++"><br />
bool ok = img.save(tempFileName, type.latin1());<br />
if (!ok) {<br />
kdError() << "Couldn't write temporary file: " << tempFileName << endl;<br />
return;<br />
}<br />
</syntaxhighlight><br />
<br />
And finally, let's upload that file to the remote location:<br />
<syntaxhighlight lang="c++"><br />
if (!TDEIO::NetAccess::upload(tempFileName, saveURL, this)) {<br />
kdError() << "Could not upload file to " << saveURL << endl;<br />
}<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
== TDE Developers' usage ==<br />
=== Adding image format support ===<br />
{{TODO}}<br />
<br />
[[Category: Developers]]</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&diff=3230Images (for developers)2023-11-25T20:58:11Z<p>Blu256: Add layout of page</p>
<hr />
<div>{{WIP|Blu256}}<br />
<br />
Working with images is an important part of a graphical application, whether it'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.<br />
<br />
__TOC__<br />
<br />
== Image classes ==<br />
* {{TQt class|TQPixmap}} is one of the two basic image classes provided by TQt.<br />
: It is, essentially, a paint device, so it is optimized for drawing. You'll see this class used a lot (more than TQImage) because of this quality.<br />
* {{TQt class|TQImage}} is the other basic image class.<br />
: According to the API docs, it is "a hardware-independent pixmap representation" and it is optimized for I/O operations and direct pixel access and manipulation.<br />
* {{TQt class|TQIconSet}} is a helper class for icons.<br />
: Compared to the basic image classes, this class does not represent a single image, but a ''set'' 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.<br />
<br />
Usually you won't need more advanced classes.<br />
<br />
== Basic usage ==<br />
=== Loading an image ===<br />
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 <tt>share</tt> folder) use the {{TDE class|tdelibs|tdecore|TDEStandardDirs}} class.<br />
<br />
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'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:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQPixmap icon = kapp->iconLoader()->loadIcon("folder", TDEIcon::Toolbar);<br />
</syntaxhighlight><br />
<br />
=== Displaying an image ===<br />
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}}.<br />
<br />
The following example creates a push button with a folder icon from the icon theme:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQIconSet icon = kapp->iconLoader()->loadIconSet("folder", TDEIcon::Toolbar);<br />
TQPushButton *button = new TQPushButton(icon, i18n("Open folder..."), this);<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
=== Applying effects ===<br />
{{TODO}}<br />
<br />
== Advanced usage ==<br />
=== Saving an image ===<br />
{{TODO}}<br />
<br />
==== Using KImageIO ====<br />
{{TODO}}<br />
<br />
== TDE Developers' usage ==<br />
=== Adding image format support ===<br />
{{TODO}}<br />
<br />
[[Category: Developers]]</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&diff=3229Images (for developers)2023-11-25T20:55:17Z<p>Blu256: Switch to the new TDE class template</p>
<hr />
<div>{{WIP|Blu256}}<br />
<br />
Working with images is an important part of a graphical application, whether it'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.<br />
<br />
__TOC__<br />
<br />
== Image classes ==<br />
* {{TQt class|TQPixmap}} is one of the two basic image classes provided by TQt.<br />
: It is, essentially, a paint device, so it is optimized for drawing. You'll see this class used a lot (more than TQImage) because of this quality.<br />
* {{TQt class|TQImage}} is the other basic image class.<br />
: According to the API docs, it is "a hardware-independent pixmap representation" and it is optimized for I/O operations and direct pixel access and manipulation.<br />
* {{TQt class|TQIconSet}} is a helper class for icons.<br />
: Compared to the basic image classes, this class does not represent a single image, but a ''set'' 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.<br />
<br />
Usually you won't need more advanced classes.<br />
<br />
== Loading an image ==<br />
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 <tt>share</tt> folder) use the {{TDE class|tdelibs|tdecore|TDEStandardDirs}} class.<br />
<br />
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'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:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQPixmap icon = kapp->iconLoader()->loadIcon("folder", TDEIcon::Toolbar);<br />
</syntaxhighlight><br />
<br />
== Displaying an image ==<br />
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}}.<br />
<br />
The following example creates a push button with a folder icon from the icon theme:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQIconSet icon = kapp->iconLoader()->loadIconSet("folder", TDEIcon::Toolbar);<br />
TQPushButton *button = new TQPushButton(icon, i18n("Open folder..."), this);<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
[[Category: Developers]]</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Template:TDE_class&diff=3228Template:TDE class2023-11-25T20:52:59Z<p>Blu256: fix class name display</p>
<hr />
<div><noinclude><br />
'''TDE class''' is a template which should be used to denote TDE classes.<br />
<br />
== Example ==<br />
<br />
<syntaxhighlight lang="html+handlebars"><br />
Use {{TDE class|tdelibs|tdecore|TDEIconLoader}}.<br />
</syntaxhighlight><br />
<br />
Use {{TDE class|tdelibs|tdecore|TDEIconLoader}}.<br />
</noinclude><includeonly><span style="color: midnightblue; font-weight: bold;">{{{3}}} <sup class="plainlinks">[http://trinitydesktop.org/docs/trinity/{{{1}}}/{{{2}}}/html/class{{{3}}}.html API]</sup></span></includeonly></div>Blu256https://wiki.trinitydesktop.org/index.php?title=Template:TDE_class&diff=3227Template:TDE class2023-11-25T20:51:28Z<p>Blu256: Add TDE class template</p>
<hr />
<div><noinclude><br />
'''TDE class''' is a template which should be used to denote TDE classes.<br />
<br />
== Example ==<br />
<br />
<syntaxhighlight lang="html+handlebars"><br />
Use {{TDE class|tdelibs|tdecore|TDEIconLoader}}.<br />
</syntaxhighlight><br />
<br />
Use {{TDE class|tdelibs|tdecore|TDEIconLoader}}.<br />
</noinclude><includeonly><span style="color: midnightblue; font-weight: bold;">{{{1}}} <sup class="plainlinks">[http://trinitydesktop.org/docs/trinity/{{{1}}}/{{{2}}}/html/class{{{3}}}.html API]</sup></span></includeonly></div>Blu256https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&diff=3226Images (for developers)2023-11-25T20:48:07Z<p>Blu256: Added basic instructions for loading and displaying images</p>
<hr />
<div>{{WIP|Blu256}}<br />
<br />
Working with images is an important part of a graphical application, whether it'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.<br />
<br />
__TOC__<br />
<br />
== Image classes ==<br />
* {{TQt class|TQPixmap}} is one of the two basic image classes provided by TQt.<br />
: It is, essentially, a paint device, so it is optimized for drawing. You'll see this class used a lot (more than TQImage) because of this quality.<br />
* {{TQt class|TQImage}} is the other basic image class.<br />
: According to the API docs, it is "a hardware-independent pixmap representation" and it is optimized for I/O operations and direct pixel access and manipulation.<br />
* {{TQt class|TQIconSet}} is a helper class for icons.<br />
: Compared to the basic image classes, this class does not represent a single image, but a ''set'' 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.<br />
<br />
Usually you won't need more advanced classes.<br />
<br />
== Loading an image ==<br />
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 <tt>share</tt> folder) use the [http://trinitydesktop.org/docs/trinity/tdelibs/tdecore/html/classTDEStandardDirs.html TDEStandardDirs] class.<br />
<br />
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'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:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQPixmap icon = kapp->iconLoader()->loadIcon("folder", TDEIcon::Toolbar);<br />
</syntaxhighlight><br />
<br />
== Displaying an image ==<br />
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}}.<br />
<br />
The following example creates a push button with a folder icon from the icon theme:<br />
<br />
<syntaxhighlight lang="c++"><br />
TQIconSet icon = kapp->iconLoader()->loadIconSet("folder", TDEIcon::Toolbar);<br />
TQPushButton *button = new TQPushButton(icon, i18n("Open folder..."), this);<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
[[Category: Developers]]</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Images_(for_developers)&diff=3225Images (for developers)2023-11-25T20:28:28Z<p>Blu256: Started writing</p>
<hr />
<div>{{WIP|Blu256}}<br />
<br />
Working with images is an important part of a graphical application, whether it'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.<br />
<br />
__TOC__<br />
<br />
== Image classes ==<br />
* {{TQt class|TQPixmap}} is one of the two basic image classes provided by TQt.<br />
: It is, essentially, a paint device, so it is optimized for drawing. You'll see this class used a lot (more than TQImage) because of this quality.<br />
* {{TQt class|TQImage}} is the other basic image class.<br />
: According to the API docs, it is "a hardware-independent pixmap representation" and it is optimized for I/O operations and direct pixel access and manipulation.<br />
* {{TQt class|TQIconSet}} is a helper class for icons.<br />
: Compared to the basic image classes, this class does not represent a single image, but a ''set'' 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.<br />
<br />
[[Category: Developers]]</div>Blu256https://wiki.trinitydesktop.org/index.php?title=LiveCDs&diff=3214LiveCDs2023-10-29T18:11:35Z<p>Blu256: Mark some links as outdated</p>
<hr />
<div>[[Category:Documentation]]<br />
<br />
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.<br />
<br />
===Distributions===<br />
*[https://dragora.org/en/index.html Dragora GNU/Linux-Libre] - <i>independent, [https://www.gnu.org/distros/free-distros.html FSF-approved libre distribution]</i><br />
*[http://exegnulinux.net/ Exe Gnu/Linux]<br />
*[http://trinity.mypclinuxos.com/ PCLinuxOS (external)]<br />
*[http://www.q4os.org/ Q4OS]<br />
*[https://www.ttoslinux.org/download.html TTOS Linux]<br />
<br />
====Outdated====<br />
*[[ALTLinuxInstall|ALT Linux]]<br />
**[http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/images/starterkits/ P7 starterkit] (based on stable branch)<br />
**[http://en.altlinux.org/Regular Regular TDE] (weekly build based on Sisyphus the dev repo)<br />
*[http://mirror.ppa.trinitydesktop.org/trinity/cdimages/pclinuxos/ PCLinuxOS (internal)]<br />
*[[Slax with Trinity]]<br />
*[http://mirror.ppa.trinitydesktop.org/trinity/cdimages/ubuntu/ Ubuntu Releases]</div>Blu256https://wiki.trinitydesktop.org/index.php?title=User_talk:Mrmazda&diff=3213User talk:Mrmazda2023-10-29T17:52:52Z<p>Blu256: </p>
<hr />
<div>= Recent addition to Mageia page =<br />
<br />
Hello [[User:Mrmazda|Mrmazda]],<br />
<br />
I'm writing in relation to your most recent addition to the Mageia installation page:<br />
<br />
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.<br />
<br />
Could you please clarify on the page why (and in what cases) the addition of the curl "follow redirects" flag is needed? Thank you!<br />
<br />
Mavridis Philippe (blu.256) 09:57, 9 May 2022 (UTC)<br />
<br />
: https://mail.trinitydesktop.org/mailman3/hyperkitty/list/devels@trinitydesktop.org/message/ZHD3J2K3FNJ7CJOQPLK6OPN4SIJTT56I/ explains the Mageia urpmi package management system prefers curl, which doesn't always play nice with Trinity's mirroring system.<br />
<br />
:: Thank you! -- Mavridis Philippe (blu.256) 17:52, 29 October 2023 (UTC)</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Arch_Trinity_Repository_Installation_Instructions&diff=3212Arch Trinity Repository Installation Instructions2023-10-29T17:48:47Z<p>Blu256: Replace latest release (R14.1.1)</p>
<hr />
<div>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.<br />
<br />
= Instructions =<br />
<br />
1. Add official Trinity ArchLinux repository to <kbd>/etc/pacman.conf</kbd> on your system:<br />
<br />
[trinity]<br />
Server = https://mirror.ppa.trinitydesktop.org/trinity/archlinux/$arch<br />
<br />
2. Fetch GPG key and add to pacman keychain on your system:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# pacman-key --recv-key D6D6FAA25E9A3E4ECD9FBDBEC93AF1698685AD8B<br />
# pacman-key --lsign-key D6D6FAA25E9A3E4ECD9FBDBEC93AF1698685AD8B<br />
</syntaxhighlight><br />
<br />
3. Synchronize Pacman databases (optionally update your system):<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# pacman -Sy<br />
</syntaxhighlight><br />
<br />
4. Install the necessary packages.<br />
: e.g. for a full Trinity installation:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# pacman -S tde-meta<br />
</syntaxhighlight><br />
<br />
[[Category:Installation]]</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Debugging_TDE_applications&diff=3150Debugging TDE applications2023-06-13T13:27:57Z<p>Blu256: Update information about placing a breakpoint in gdb</p>
<hr />
<div>This is a short tutorial on debugging Trinity applications. Throughout this tutorial I will use <code>kedit</code> as example application.<br />
<br />
= Configuring for debugging =<br />
<br />
To build with debugging code, pass <code>-DCMAKE_BUILD_TYPE="Debug"</code> to CMake while configuring. If the application you are building is still using Autotools, you can use <code>--enable-debug</code> with the configure script to get debug code in it.<br />
<br />
If you have the space and can stand code that's somewhat slower, this is worth it. The extra information really helps debugging and thus bugfixing. On the other hand, <code>-DCMAKE_BUILD_TYPE="Release"</code> (for CMake) and <code>--disable-debug</code> (for Autotools) removes all debug messages, leading to a faster and cleaner desktop.<br />
<br />
= Debugging with GDB =<br />
<br />
The recommended version of gdb to use is version 4.95 or higher, older versions have problems generating proper backtraces.<br />
<br />
There are three ways to debug an application with gdb:<br />
<br />
# You can start the application from within gdb.<br />
# You can attach gdb to an already running application.<br />
# You can run gdb after an application has crashed using a core file.<br />
<br />
== Starting applications from within gdb ==<br />
<br />
To start an application with gdb you can start gdb as follows:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ gdb kedit<br />
GNU gdb 4.95.0<br />
Copyright 2000 Free Software Foundation, Inc.<br />
GDB is free software, covered by the GNU General Public License, and you are<br />
welcome to change it and/or distribute copies of it under certain conditions.<br />
Type "show copying" to see the conditions.<br />
There is absolutely no warranty for GDB. Type "show warranty" for details.<br />
This GDB was configured as "i686-pc-linux-gnu"...<br />
(gdb) <br />
</syntaxhighlight><br />
<br />
You can now set the command line arguments that you want to pass to kedit with <br />
the gdb command <code>set args</code>:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
(gdb) set args myfile.txt<br />
(gdb) <br />
</syntaxhighlight><br />
<br />
gdb has loaded the <code>kedit</code> executable on startup but it hasn't loaded any of the libraries yet. This means that you can set any breakpoints in the libraries yet. The easiest way to do that is to set a breakpoint in the first line of main and then start the program:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
(gdb) break main<br />
Breakpoint 1 at 0x804855c<br />
(gdb) run<br />
Starting program: /opt/trinity/bin/kedit myfile.txt<br />
Breakpoint 1 at 0x4002cf18: file kedit.cpp, line 1595.<br />
<br />
Breakpoint 1, main (argc=2, argv=0xbffff814) at kedit.cpp:1595<br />
1595 bool have_top_window = false;<br />
Current language: auto; currently c++<br />
(gdb) <br />
</syntaxhighlight><br />
<br />
You can now set breakpoints everywhere. For example lets set a breakpoint in the <code>TDEApplication</code> constructor. We can use the C++ function name or, if that does not work, look up the line of source code where we want to place the breakpoint. An external editor is of great use at this point. With the `list` command we can select the source file we are interested in and verify that we have found the correct source line:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
(gdb) list kapp.cpp:220<br />
215 parseCommandLine( argc, argv );<br />
216 }<br />
217<br />
218 TDEApplication::TDEApplication( bool allowStyles, bool GUIenabled ) :<br />
219 QApplication( *TDECmdLineArgs::tqt_argc(), *TDECmdLineArgs::tqt_argv(),<br />
220 GUIenabled ),<br />
221 TDEInstance( TDECmdLineArgs::about),<br />
222 d (new TDEApplicationPrivate)<br />
223 {<br />
224 if (!GUIenabled)<br />
(gdb) break 224<br />
Breakpoint 2 at 0x4048aa7e: file kapp.cpp, line 224.<br />
(gdb) <br />
</syntaxhighlight><br />
<br />
We can now continue the execution of kedit. Execution will stop when it hits a breakpoint of when the program exits. In this case execution will stop in the first line of the TDEApplication constructor:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
(gdb) continue<br />
Continuing.<br />
Qt: gdb: -nograb added to command-line options.<br />
Use the -dograb option to enforce grabbing.<br />
<br />
Breakpoint 2, TDEApplication::TDEApplication (this=0xbffff6a8, allowStyles=true,<br />
GUIenabled=true) at kapp.cpp:224<br />
224 if (!GUIenabled)<br />
(gdb) <br />
</syntaxhighlight><br />
<br />
== Attaching GDB to already running applications ==<br />
<br />
Sometimes it is not practical to start an application from within gdb (e.g. in those cases where you didn't know the application was about to crash :-)<br />
<br />
When you get the friendly DrKonqi dialog informing you about a crash you are just in time to start your debugger.<br />
<br />
First, let's attach gdb to an application that hasn't crashed (yet). You start with finding the process of the application with e.g. <code>ps -aux</code>:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
> ps -aux | grep kedit <br />
bastian 21570 15.1 6.8 13740 8800 pts/6 S 15:34 0:01 kedit<br />
bastian 21582 0.0 0.3 1132 412 pts/6 R 15:34 0:00 grep kedit<br />
</syntaxhighlight><br />
<br />
From this you learn that kedit has process id 21570. Now you can start gdb as follows:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ gdb kedit 21570<br />
GNU gdb 4.95.0<br />
Copyright 2000 Free Software Foundation, Inc.<br />
GDB is free software, covered by the GNU General Public License, and you are<br />
welcome to change it and/or distribute copies of it under certain conditions.<br />
Type "show copying" to see the conditions.<br />
There is absolutely no warranty for GDB. Type "show warranty" for details.<br />
This GDB was configured as "i686-pc-linux-gnu"...<br />
/home1/bastian/21570: No such file or directory.<br />
Attaching to program: /opt/trinity/bin/kedit, Pid 21570<br />
Reading symbols from /opt/trinity/lib/kedit.so.0...done.<br />
Loaded symbols for /opt/trinity/lib/kedit.so.0<br />
....<br />
Reading symbols from /lib/ld-linux.so.2...done.<br />
Loaded symbols for /lib/ld-linux.so.2<br />
Reading symbols from /lib/libnss_compat.so.2...done.<br />
Loaded symbols for /lib/libnss_compat.so.2<br />
Reading symbols from /lib/libnsl.so.1...done.<br />
Loaded symbols for /lib/libnsl.so.1<br />
0x40c3d88e in __select () from /lib/libc.so.6<br />
(gdb) <br />
</syntaxhighlight><br />
<br />
You will usually end up in the middle of a <code>select()</code> call from the event-loop.<br />
This is the place where a TDE application spends most of its time, waiting for things to happen.<br />
<br />
A backtrace will typically look something like this:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
(gdb) bt<br />
#0 0x40c3d88e in __select () from /lib/libc.so.6<br />
#1 0x40a22844 in __DTOR_END__ () at fam.c++:356<br />
#2 0x407293bf in QApplication::enter_loop (this=0xbffff6e8)<br />
at kernel/qapplication.cpp:2552<br />
#3 0x406b1d7b in QApplication::exec (this=0xbffff6e8)<br />
at kernel/qapplication_x11.cpp:2217<br />
#4 0x4002d500 in main (argc=1, argv=0xbffff854) at kedit.cpp:1662<br />
#5 0x40bbba5e in __libc_start_main (main=0x8048568 <main>, argc=1,<br />
argv=0xbffff854, init=0x8048514 <_init>, fini=0x80486cc <_fini>,<br />
rtld_fini=0x4000aa20 <_dl_fini>, stack_end=0xbffff84c)<br />
at ../sysdeps/generic/libc-start.c:92<br />
(gdb)<br />
</syntaxhighlight><br />
<br />
== Getting core dumps ==<br />
<br />
If you want to have a core dump after your application crashes you need to <br />
do two things:<br />
<br />
# Disable the TDE crash handler. This can be done either by using the <code>--nocrashhandler</code> command line option or by setting the <code>TDE_DEBUG</code> environment variable to some value e.g. <code>TDE_DEBUG=true</code>.<br />
# Enable core dump generation by changing the so called 'ulimits' with the following command: <br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ ulimit -c unlimited<br />
</syntaxhighlight><br />
<br />
= Getting kdDebug() output =<br />
<br />
When a program is configured with debugging mode on, you also get to see debug messages from your code (generated by <code>kdDebug()</code>). The easiest way to see them is run the program from a Konsole window.<br />
<br />
You can configure the messages you see through <code>tdedebugdialog</code> You can also redirect these messages to the syslog or a file. To configure this, launch <code>tdedebugdialog</code> with the <code>--fullmode</code> argument.<br />
<br />
[[Category:Developers]]</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Template:DistroTable&diff=3149Template:DistroTable2023-06-13T11:18:46Z<p>Blu256: update comment for FreeBSD</p>
<hr />
<div>This template provides a '''table with installation instructions''' per distribution/operating system. It also tells the latest available version of TDE for that system.<br />
<br />
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.<br />
<br />
Mark the latest release with <span style="background: lightgreen;">lightgreen</span>, the release before it with <span style="background: yellow;">yellow</span> and older releases with <span style="background: orange;">orange</span>.<br />
<br />
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.<br />
<br />
= Example =<br />
<br />
This is how it will look on the page:<br />
<br />
<onlyinclude>{|<br />
| style="vertical-align: top" | <!-- Official instructions --><br />
{|class="wikitable" style="margin: 0;"<br />
! colspan="2" | <big>Official Instructions</big><br />
|-<br />
| '''Distribution'''<br />
| '''Latest'''<br />
|-<br />
| [[Debian Trinity Repository Installation Instructions|Debian]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|-<br />
| [[Devuan Trinity Repository Installation Instructions|Devuan]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|-<br />
| [[Fedora Trinity Repository Installation Instructions|Fedora]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|-<br />
| [[RedHat Trinity Repository Installation Instructions|RedHat]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|-<br />
| [[Ubuntu Trinity Repository Installation Instructions|Ubuntu]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|}<br />
<br />
| style="vertical-align: top" | <!-- Unofficial instructions --><br />
{|class="wikitable" style="margin: 0;"<br />
! colspan="4" | <big>Community Instructions</big><br />
|-<br />
| '''Distribution'''<br />
| '''Latest'''<br />
| '''Distribution'''<br />
| '''Latest'''<br />
|-<br />
| [[Arch Trinity Repository Installation Instructions|Arch Linux]]<br />
| style="background: lightgreen;" | R14.1.0<br />
| [[MX Linux Trinity Repository Installation Instructions|MX Linux]]<br />
| style="background: yellow;" | R14.0.13<br />
|-<br />
| [[FreeBSD Trinity Installation Instructions|FreeBSD]]<br />
| style="background: lightgreen;" | R14.1.0 <!-- R14.1.x branch actually --><br />
| [[OpenSUSE Trinity Repository Installation Instructions|OpenSUSE]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|-<br />
| [[Mageia Trinity Repository Installation Instructions|Mageia]]<br />
| style="background: lightgreen;" | R14.1.0<br />
| [[PCLinuxOS Trinity Repository Installation Instructions|PCLinuxOS]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|-<br />
| [[Slackware Trinity Installation Instructions|Slackware]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|<br />
|<br />
|-<br />
| [[Raspbian Trinity Repository Installation Instructions|Raspbian]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|<br />
|<br />
|}<br />
|}</onlyinclude></div>Blu256https://wiki.trinitydesktop.org/index.php?title=Template:DistroTable&diff=3148Template:DistroTable2023-06-13T11:17:43Z<p>Blu256: Use background colors instead of text color for release marking</p>
<hr />
<div>This template provides a '''table with installation instructions''' per distribution/operating system. It also tells the latest available version of TDE for that system.<br />
<br />
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.<br />
<br />
Mark the latest release with <span style="background: lightgreen;">lightgreen</span>, the release before it with <span style="background: yellow;">yellow</span> and older releases with <span style="background: orange;">orange</span>.<br />
<br />
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.<br />
<br />
= Example =<br />
<br />
This is how it will look on the page:<br />
<br />
<onlyinclude>{|<br />
| style="vertical-align: top" | <!-- Official instructions --><br />
{|class="wikitable" style="margin: 0;"<br />
! colspan="2" | <big>Official Instructions</big><br />
|-<br />
| '''Distribution'''<br />
| '''Latest'''<br />
|-<br />
| [[Debian Trinity Repository Installation Instructions|Debian]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|-<br />
| [[Devuan Trinity Repository Installation Instructions|Devuan]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|-<br />
| [[Fedora Trinity Repository Installation Instructions|Fedora]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|-<br />
| [[RedHat Trinity Repository Installation Instructions|RedHat]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|-<br />
| [[Ubuntu Trinity Repository Installation Instructions|Ubuntu]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|}<br />
<br />
| style="vertical-align: top" | <!-- Unofficial instructions --><br />
{|class="wikitable" style="margin: 0;"<br />
! colspan="4" | <big>Community Instructions</big><br />
|-<br />
| '''Distribution'''<br />
| '''Latest'''<br />
| '''Distribution'''<br />
| '''Latest'''<br />
|-<br />
| [[Arch Trinity Repository Installation Instructions|Arch Linux]]<br />
| style="background: lightgreen;" | R14.1.0<br />
| [[MX Linux Trinity Repository Installation Instructions|MX Linux]]<br />
| style="background: yellow;" | R14.0.13<br />
|-<br />
| [[FreeBSD Trinity Installation Instructions|FreeBSD]]<br />
| style="background: lightgreen;" | R14.1.0 <!-- R14.0.x branch actually --><br />
| [[OpenSUSE Trinity Repository Installation Instructions|OpenSUSE]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|-<br />
| [[Mageia Trinity Repository Installation Instructions|Mageia]]<br />
| style="background: lightgreen;" | R14.1.0<br />
| [[PCLinuxOS Trinity Repository Installation Instructions|PCLinuxOS]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|-<br />
| [[Slackware Trinity Installation Instructions|Slackware]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|<br />
|<br />
|-<br />
| [[Raspbian Trinity Repository Installation Instructions|Raspbian]]<br />
| style="background: lightgreen;" | R14.1.0<br />
|<br />
|<br />
|}<br />
|}</onlyinclude></div>Blu256https://wiki.trinitydesktop.org/index.php?title=User:Blu256&diff=3147User:Blu2562023-06-13T11:08:53Z<p>Blu256: </p>
<hr />
<div>= Contact =<br />
* [[User talk:Blu256|Wiki discussion page]]<br />
* Jabber: <tt>blu.256@jabb.im</tt><br />
* IRC nick: <tt>blu256</tt> (Libera.chat)<br />
<br />
= TODO list =<br />
<br />
Mostly for personal reference. Updated occasionally.<br />
<br />
{| class="wikitable"<br />
|+ Currently working on...<br />
! Name<br />
! Type<br />
! Stage<br />
! Target<br />
|-<br />
| [https://mirror.git.trinitydesktop.org/gitea/TDE/tdemultimedia/pulls/31 KMix indicator]<br />
| Feature<br />
| On hold<br />
| R14.2.0<br />
|}<br />
<br />
{| class="wikitable"<br />
|+ TODO<br />
! Name<br />
! Type<br />
! Stage<br />
! Target<br />
|-<br />
| Active borders and corners for TWin<br />
| Feature<br />
| Active borders support in [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/pulls/331 TDE/tdebase#331], more work needed for active corners)<br />
| Active borders: R14.1.1<br />
|-<br />
| [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/issues/271 Kate: fix font style checkboxes between different schema font tabs]<br />
| Improvement<br />
| On hold<br />
| R14.1.1<br />
|-<br />
| tdeio-mtp<br />
| Feature<br />
| On hold<br />
| R14.2.0<br />
|-<br />
| [https://mirror.git.trinitydesktop.org/gitea/TDE/tdelibs/issues/151 Make KSSL use system root certificates]<br />
| Improvement<br />
| On hold<br />
| R14.2.0<br />
|}</div>Blu256https://wiki.trinitydesktop.org/index.php?title=User:Blu256&diff=3146User:Blu2562023-06-13T11:08:27Z<p>Blu256: </p>
<hr />
<div>= Contact =<br />
* [[User talk:Blu256|Wiki discussion page]]<br />
* Jabber: <tt>blu.256@jabb.im</tt><br />
* IRC nick: <tt>blu256</tt> (Libera.chat)<br />
<br />
= TODO list =<br />
<br />
Mostly for personal reference. Updated occasionally.<br />
<br />
{| class="wikitable"<br />
|+ Currently working on...<br />
! Name<br />
! Type<br />
! Stage<br />
! Target<br />
|-<br />
| Active borders and corners for TWin<br />
| Feature<br />
| Active borders support in [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/pulls/331 TDE/tdebase#331], more work needed for active corners)<br />
| Active borders: R14.1.1<br />
|}<br />
<br />
{| class="wikitable"<br />
|+ TODO<br />
! Name<br />
! Type<br />
! Stage<br />
! Target<br />
|-<br />
| [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/issues/271 Kate: fix font style checkboxes between different schema font tabs]<br />
| Improvement<br />
| On hold<br />
| R14.1.1<br />
|-<br />
| tdeio-mtp<br />
| Feature<br />
| On hold<br />
| R14.2.0<br />
|-<br />
| [https://mirror.git.trinitydesktop.org/gitea/TDE/tdelibs/issues/151 Make KSSL use system root certificates]<br />
| Improvement<br />
| On hold<br />
| R14.2.0<br />
|-<br />
| [https://mirror.git.trinitydesktop.org/gitea/TDE/tdemultimedia/pulls/31 KMix indicator]<br />
| Feature<br />
| On hold<br />
| R14.2.0<br />
|}</div>Blu256https://wiki.trinitydesktop.org/index.php?title=OpenSUSE_Trinity_Repository_Installation_Instructions&diff=3137OpenSUSE Trinity Repository Installation Instructions2023-05-25T15:45:30Z<p>Blu256: Improve formatting using syntaxhighlight</p>
<hr />
<div>==openSUSE Trinity Repository Installation Instructions==<br />
[[Category:Documentation]]<br />
[[Category:Installation]]<br />
<br />
===1. Remove KDE3 related packages first ===<br />
<br />
In case you already have openSUSE's KDE3 installed on your computer, you must uninstall it prior to installing Trinity.<br />
But even if you have not installed KDE3, you may have some KDE3 packages installed on your system.<br />
At this time, you cannot have both working KDE3 and working Trinity on the same computer.<br />
<br />
To uninstall KDE3, type the following command:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# zypper remove arts hal kdeaccessibility3 kdeartwork3 kdebase3 kdebindings3 kdeedu3 kdegames3 kdegraphics3 \<br />
kdelibs3 kdemultimedia3 kdenetwork3 kdepim3 kdesdk3 kdetoys3 kdeutils3 kdewebdev3<br />
</syntaxhighlight><br />
<br />
===2. Configure the supplementary PACKMAN repository===<br />
<br />
Packman home page: http://packman.links2linux.org/<br />
<br />
Instructions for configuring: https://en.opensuse.org/Additional_package_repositories#Packman<br />
<br />
===3. Configure the ZYPPER repository (as root user)===<br />
<br />
====For openSUSE Tumbleweed ====<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# rpm --import http://mirror.ppa.trinitydesktop.org/trinity/rpm/osstw/RPM-GPG-KEY-trinity<br />
# zypper ar http://mirror.ppa.trinitydesktop.org/trinity/rpm/osstw/trinity-r14/RPMS/x86_64 trinity<br />
# zypper ar http://mirror.ppa.trinitydesktop.org/trinity/rpm/osstw/trinity-r14/RPMS/noarch trinity-noarch<br />
</syntaxhighlight><br />
<br />
Note the last parameter of ar lines are any names of a user's choosing.<br />
<br />
====For openSUSE Leap 15.5 ====<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# rpm --import http://mirror.ppa.trinitydesktop.org/trinity/rpm/opensuse15.5/RPM-GPG-KEY-trinity<br />
# zypper ar http://mirror.ppa.trinitydesktop.org/trinity/rpm/opensuse15.5/trinity-r14/RPMS/x86_64 trinity<br />
# zypper ar http://mirror.ppa.trinitydesktop.org/trinity/rpm/opensuse15.5/trinity-r14/RPMS/noarch trinity-noarch<br />
</syntaxhighlight><br />
<br />
Note the last parameter of ar lines are any names of a user's choosing.<br />
<br />
====For openSUSE Leap 15.4 ====<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# rpm --import http://mirror.ppa.trinitydesktop.org/trinity/rpm/opensuse15.4/RPM-GPG-KEY-trinity<br />
# zypper ar http://mirror.ppa.trinitydesktop.org/trinity/rpm/opensuse15.4/trinity-r14/RPMS/x86_64 trinity<br />
# zypper ar http://mirror.ppa.trinitydesktop.org/trinity/rpm/opensuse15.4/trinity-r14/RPMS/noarch trinity-noarch<br />
</syntaxhighlight><br />
<br />
Note the last parameter of ar lines are any names of a user's choosing.<br />
<br />
===4. Install the Trinity desktop environment===<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# zypper refresh<br />
# zypper install trinity-desktop<br />
</syntaxhighlight><br />
<br />
The <tt>trinity-desktop</tt> package is a comprehensive meta-package. To install minimalist, substitute <tt>trinity-tdebase</tt> for <tt>trinity-desktop</tt>, and append <tt>trinity-tdm</tt> if you wish to use TDM as your display manager. <br />
<br />
===5. (Optional) Install your locale translation package ===<br />
<br />
Example for French translation:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# zypper install trinity-tde-i18n-French<br />
</syntaxhighlight><br />
<br />
Koffice translations:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# zypper install trinity-koffice-i18n-French<br />
</syntaxhighlight><br />
<br />
K3B translations:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# zypper install trinity-k3b-i18n-French<br />
</syntaxhighlight><br />
<br />
Note: you can obtain a list of available TDE packages with the following command:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# zypper search trinity-<br />
</syntaxhighlight><br />
<br />
===6. (Optional) Sets TDM as the default display manager===<br />
<br />
In expired support releases, edit file <tt>/etc/sysconfig/displaymanager</tt> and set <code>DISPLAYMANAGER="tdm"</code><br />
<br />
In currently supported releases, use <code>update-alternatives --config default-displaymanager</code> to select TDM.<br />
<br />
Then reboot your computer.</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Tips_And_Tricks&diff=3136Tips And Tricks2023-05-25T15:41:00Z<p>Blu256: /* Unable to change display brightness with NVidia cards */ Improved formatting</p>
<hr />
<div>This page is meant as a container of tips and tricks collected over time, addressing topics and issues brought up by TDE users.<noinclude><br />
<br />
Also see the users' [[User FAQ | Frequently Asked Questions]] page.<br />
<br />
<br />
__TOC__<br />
<br />
<br />
<!-- ---------------------------------------- --><br />
== Installing Trinity ==<br />
Tips and tricks relevant to obtaining a well-functioning Trinity installation.<br />
<br />
=== Upgrading from older versions or KDE3 ===<br />
<br />
==== Upgrading from KDE3 or from TDE 3.5.x to R14.0.x ====<br />
If you are migrating from KDE3 or upgrading from TDE 3.5.x, you can reuse your own settings in TDE R14.0.x.<br />
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 <tt>'''~/.trinity'''</tt> folder.<br />
<br />
{{TipBox<br />
|caption=Note<br />
|text=Please refrain from renaming your <tt>.kde</tt> into <tt>.trinity</tt> 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 <tt>.kde</tt> folder manually.<br />
}}<br />
<br />
==== Upgrading from an old version (pre Dec/2014) ====<br />
Depending on your previous version of TDE, the file /etc/trinity/tdm/tdmrc may change from a script-generated file to a config file.<br />
It is advisable to accept the newer file if you are upgrading from an old version to TDE >= R14.0.0.<br />
<br />
<br />
<!-- ---------------------------------------- --><br />
== Configuring Trinity ==<br />
Tips and tricks for custom fine-tuning and configurations.<br />
<br />
=== Using sudo and tdesudo ===<br />
If you use sudo or a sudo-based distribution (such as Ubuntu), it is highly recommended that you install the <tt>tdesudo-trinity</tt> package as well. This allows to run programs that require root priviledge from the TDE menu using your own password.<br />
If <tt>tdesudo-trinity</tt> is not installed, you will be asked for the root password instead.<br />
More details can be found [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2563 here].<br />
<br />
=== Un-Bogging down an older system ===<br />
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.<br />
<br />
A simple, but somewhat tedious, solution is to add <code>nice</code> to the launcher for each. Using LibreOffice as an example, add <code>nice -n 2</code> before the command:<br />
<br />
<code>TDE Menu >> Office >> LibreOffice >> {right click} >> Edit Item</code><br />
<br />
Change the ‘Command’ entry from <code>libreoffice %U</code> to <code>nice -n 2 libreoffice %U</code>.<br />
<br />
Then find every other entry for LibreOffice (LibreOffice Base, LibreOffice Draw, LibreOffice Math, LibreOffice Impress, etc.) and do the same.<br />
<br />
Other ‘usual suspects’ to make nice are: browsers, BitTorrent clients, GUI Diff tools, and, occasionally, PDF viewers.<br />
<br />
Generally anything ‘real-time’ you should leave alone (movies, games, editors).<br />
<br />
These were used on a Core2 Duo (P7570 @ 2.26GHz, CPU Mark: 926):<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
!Nice level<br />
!Application Name<br />
|-<br />
|1<br />
|Kmail<br />
|-<br />
|2<br />
|LibreOffice<br />
|-<br />
|3<br />
|Firefox<br />
|-<br />
|4<br />
|qBittorrent<br />
|-<br />
|}<br />
<br />
=== Assigning a mouse click as part of a keyboard shortcut ===<br />
There are multiple ways to accomplish this. The best arguably was the first method, which has been lost to time.<br />
<br />
In these examples we are trying to achieve:<br />
<br />
<code>{Windows Key} + {left mouse click} = Minimize application under mouse cursor</code><br />
<br />
Change what you need to achieve what you want.<br />
<br />
==== Method 1: Lost ====<br />
<br />
As the name says it’s been lost. What is remembered is that:<br />
<br />
* No additional software had to be installed<br />
* The change was exceedingly minor.<br />
<br />
==== Method 2: <tt>xbindkeys</tt> + <tt>xdotool</tt> ====<br />
<br />
Buggy. This works, but the <tt>xdotool</tt> command used occasionally leaves an unfinished half-keystroke hanging.<br />
<br />
'''Step 1.''' Go to:<br />
<br />
<code>Trinity Control Center >> Regional & Accessibility >> Keyboard Shortcuts >> Shortcuts Schemes >> Global Shortcuts >> Windows</code><br />
<br />
Set "Minimize Window" to “Win+Space”.<br />
<br />
'''Step 2.''' Issue these command(s) as root or using sudo:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
# apt-get install xbindkeys<br />
# apt-get install xdotool<br />
# apt-get install xbindkeys-config # optional<br />
</syntaxhighlight><br />
<br />
'''Step 3.''' Edit <tt>$HOME/.xbindkeysrc</tt>.<br />
<br />
Add the following lines:<br />
<br />
<!-- 'shell' is probably the closest match(?) --><br />
<syntaxhighlight lang="shell"><br />
#MinimizeWindowUnderMouse<br />
"xdotool click --clearmodifiers 1 key super+space"<br />
m:0x40 + c:133 + b:1 + release</nowiki><br />
</syntaxhighlight><br />
<br />
{{Box<br />
|caption=Note<br />
|text=xbindkeys does not like superfluous comments within its definitions. Leaving prior entries commented out within the config definition caused odd and inconsistent results.<br />
|icon=Messagebox_info.png<br />
|background=#E9F0FF<br />
|highlight=#93B2FF<br />
}}<br />
<br />
'''Step 4.''' Issue these commands as yourself (not as root):<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ killall xbindkeys<br />
$ xbindkeys<br />
</syntaxhighlight><br />
<br />
'''Step 5.''' To minimize any window:<br />
<br />
Move the cursor over a window, hold down the Windows key and click the left mouse button.<br />
<br />
==== Method 3: <tt>xbindkeys</tt>, <tt>dcop</tt> and/or <tt>gdbus</tt> ====<br />
<br />
Basically the same as <tt>xbindkeys</tt> + <tt>xdotool</tt> but replacing <tt>xdotool</tt> with either a <tt>dcop</tt> or <tt>gdbus</tt> command. This is probably less ‘buggy’ than <tt>xdotool</tt>, but unfortunately the writer doesn’t understand enough about either to make this work.<br />
<br />
=== Enabling image thumbnails in Konqueror for external devices opened via popup after plugging in ===<br />
<br />
When an external device (e.g. USB flash drive) is plugged in, choosing "Open in New Window" in the TDE popup window will open the device under the <tt>system:/</tt> path prefix. Image thumbnail display is not enabled per default for this location type in Konqueror. To enable image thumbnails for <tt>system:/</tt> paths, adhere to the following:<br />
<br />
# In Konqueror from the menubar select <code>Settings >> Configure Konqueror...</code>.<br />
# Select <code>Previews & Metadata</code> on the left.<br />
# Under <code>Local Protocols</code> tick the checkbox for <code>system</code>.<br />
# Press <code>Apply</code>.<br />
<br />
<!-- ---------------------------------------- --><br />
== Look and feel ==<br />
Tips and tricks concerning the appearance of Trinity desktop and applications.<br />
<br />
=== Adding a separator between windows button in the title bar ===<br />
Open <code>TDE Control Center >> Appearance & Themes >> Window Decorations</code> and then select the <code>Buttons</code> tab.<br />
<br />
In the middle of the screen there is a list of available buttons. Drag a separator (<code>--- spacer ---</code>) on the title bar of the sample window, between the buttons where you want to space to appear.<br />
<br />
Check the preview in the bottom part of the window and modify again as required.<br />
<br />
Confirm when done.<br />
<br />
=== Enlarging Kicker taskbar buttons to only occupy a single row ===<br />
<br />
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.<br />
To prevent this, the minimum height of taskbar buttons can be increased to enforce a single row of taskbar buttons.<br />
<br />
To achieve this, you have to add the following line into section <tt>[General]</tt> in your <tt>$TDEHOME/share/config/ktaskbarrc</tt>:<br />
<br />
<syntaxhighlight lang="ini"><br />
MinimumButtonHeight=38<br />
</syntaxhighlight><br />
<br />
Select a <tt>MinimumButtonHeight</tt> that matches the pixel size of the Kicker panel as configured in <code>Trinity Control Center >> Desktop >> Panels >> Arrangement</code> (when the size is set to "Custom").<br />
Restart the Kicker panel after changing the configuration line.<br />
<br />
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:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ kwriteconfig --file $TDEHOME/share/config/ktaskbarrc --group General --key MinimumButtonHeight 38<br />
$ dcop kicker kicker restart<br />
</syntaxhighlight><br />
<br />
Hint: you may also additionally set <code>MinimumButtonWidth</code> in the same group to control how much minimum horizontal space (in pixels) a single taskbar button should occupy on its own.<br />
<br />
=== Removing captions from K-Menu ===<br />
You have to add the following line into section <tt>[menus]</tt> in your <tt>$TDEHOME/share/config/kickerrc</tt>:<br />
<br />
<syntaxhighlight lang="ini"><br />
ShowMenuTitles=false<br />
</syntaxhighlight><br />
<br />
You also have to restart Kicker for the change to take effect.<br />
<br />
The quickest way to do all of this is via Konsole (or another terminal emulator):<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ kwriteconfig --file $TDEHOME/share/config/kickerrc --group menus --key ShowMenuTitles false<br />
$ dcop kicker kicker restart<br />
</syntaxhighlight><br />
<br />
=== Increasing icon size in K-Menu ===<br />
You have to add the following line into section <tt>[menus]</tt> in your <tt>$TDEHOME/share/config/kickerrc</tt>:<br />
<br />
<syntaxhighlight lang="ini"><br />
MenuEntryHeight=22<br />
</syntaxhighlight><br />
<br />
You can adjust the number to any icon size you see fit. You have to restart Kicker for the change to take effect.<br />
<br />
The quickest way to do all of this is via Konsole (or another terminal emulator):<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ kwriteconfig --file $TDEHOME/share/config/kickerrc --group menus --key MenuEntryHeight 22<br />
$ dcop kicker kicker restart<br />
</syntaxhighlight><br />
<br />
=== Using a custom side image for classic K-Menu ===<br />
<br />
''The following only applies to the classic K-Menu enabled by setting "TDE menu style" to "Trinity Classic" in the "Menus" section of <code>Trinity Control Center >> Desktop >> Panels</code>.''<br />
<br />
# Create <code>$TDEHOME/share/apps/kicker/pics/</code> if it doesn't exist.<br />
# Place custom <code>kside.png</code> and <code>kside_tile.png</code> files into <code>$TDEHOME/share/apps/kicker/pics/</code>.<br />
# In <code>Trinity Control Center >> Desktop >> Panels</code> under "Menus" enable "Show side image".<br />
<br />
Hint: you may find the default <tt>kside.png</tt> and <tt>kside_tile.png</tt> files within <tt>$TDEDIR/share/apps/kicker/pics/</tt>.<br />
<br />
Changes to the image files will only apply when the Kicker gets restarted. To trigger this, you can use <code>dcop kicker kicker restart</code>.<br />
<br />
=== Using a custom image for the logout prompt ===<br />
<br />
# Create <code>$TDEHOME/share/apps/ksmserver/pics/</code> if it doesn't exist.<br />
# Place a custom <code>shutdownkonq.png</code> into <code>$TDEHOME/share/apps/ksmserver/pics/</code>.<br />
<br />
Hint: you may find the default image within <tt>$TDEDIR/share/apps/ksmserver/pics/</tt>.<br />
<br />
=== Use another window manager with TDE ===<br />
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.<br />
<br />
[[File:TDE+E16 thumb.png|thumb|link=File:TDE+E16.png|Trinity Desktop with E16 as window manager]]<br />
<br />
==== Method 1: the easy way ====<br />
The easy way is, of course, to go to <code>TDE Control Center >> Desktop >> Window decorations</code>, switch to the Window Manager tab and then select your preferred window manager from the drop-down menu.<br />
<br />
==== Method 2: autostart TDE components from WM ====<br />
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 <tt>.xinitrc</tt> file can also do the trick.<br />
<br />
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:<br />
<br />
{|<br />
!Command<br />
!Description<br />
|-<br />
|<tt>starttde</tt><br />
|''(required) Initializes required Trinity components.<span style="color:#FF0000">*</span>''<br />
|-<br />
|<tt>kicker &</tt><br />
|''The Kicker panel.''<br />
|-<br />
|<tt>kdesktop --waitforkded &</tt><br />
|''The Desktop.''<br />
|-<br />
|<tt>khotkeys &</tt><br />
|''Keyboard shortcuts handler.''<br />
|}<br />
<br />
<span style="color:#FF0000">''(* Trinity apps would do this anyway, but it's nice to have it ready for them.)''</span><br />
<br />
As for starting the WM itself, you can choose to use your window manager's session via your display manager.<br />
<br />
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.<br />
<br />
==== Method 3: using WM as part of a TDE session ====<br />
You can make TDE use your window manager instead of TWin by passing an environment variable to the <tt>starttde</tt> script. This variable is named <code>$TDEWM</code> and accepts the executable name (or full path) of your window manager. For example, to start TDE with Fluxbox as a window manager:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ TDEWM=fluxbox startx /opt/trinity/starttde # adjust to your system<br />
</syntaxhighlight><br />
<br />
{{Box<br />
|caption=Note<br />
|text=Due to a mistake, Trinity releases before R14.0.11 use the <code>$TWIN</code> variable instead.<br />
|icon=Messagebox_info.png<br />
|background=#E9F0FF<br />
|highlight=#93B2FF<br />
}}<br />
<br />
<br />
To make this permanent:<br />
<br />
* If you use a <tt>.xinitrc</tt> file, then the only thing to do is to put the line there.<br />
* If you use a display manager, you'll need to create a script and an X session file.<br />
<br />
Create a script like this one:<br />
<br />
<syntaxhighlight lang="shell"><br />
#!/bin/sh<br />
export TDEWM=your_window_manager # for R14.0.11 and higher<br />
export TWIN=your_window_manager # for pre-R14.0.11 TDE versions<br />
exec starttde<br />
</syntaxhighlight><br />
<br />
Replace <code>your_window_manager</code> with the correct value. Save it and make it executable.<br />
<br />
Then, create a .desktop file in <tt>/usr/share/xsessions</tt>, like this one:<br />
<br />
<syntaxhighlight lang="ini"><br />
[Desktop Entry]<br />
Encoding=UTF-8<br />
Type=XSession<br />
Name=(Session name)<br />
Comment=(An optional session comment)<br />
Exec=/path/to/the/script/you/just/saved<br />
</syntaxhighlight><br />
<br />
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.<br />
<br />
=== Changing alternating row colors ===<br />
Alternating row colors in Konqueror, KMail, and probably a lot more, can be set in the Colors section of Trinity Control Center:<br />
<code>TCC >> Appearance & Themes >> Colors >> Widget Color >> [Dropdown] Alternate Background in Lists</code><br />
<br />
<br />
<!-- ---------------------------------------- --><br />
== Application tricks ==<br />
Tips and tricks concerning Trinity applications (such as KMail, Kopete, Amarok etc.)<br />
<br />
=== Kmail: Sanitize and Decrypt E-Mails ===<br />
[[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.<br />
<br />
== Useful scripts ==<br />
A collection of snippets and useful scripts which can help in automating some tasks in TDE.<br />
<br />
=== Lock session and turn off screen ===<br />
This shell script locks the session and after 3 seconds turns the screen off:<br />
<br />
<syntaxhighlight lang="bash"><br />
#!/bin/bash<br />
dcop kdesktop KScreensaverIface lock<br />
sleep 3<br />
xset dpms force standby<br />
</syntaxhighlight><br />
<br />
For a ‘GUI’ you can add an Applet to your Panel that calls the shell script.<br />
<br />
=== Log out of current TDE session ===<br />
<br />
You can log out of the current TDE session and possibly shut down the system automatically (depending on your TDE configuration) using this command:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ dcop kdesktop default logout <confirm> <type> <mode><br />
</syntaxhighlight><br />
<br />
You can append three parameters ("confirm", "type", "mode") to determine the<br />
logout behaviour according to the following values:<br />
<br />
<br />
'''First parameter: "confirm"'''<br />
{| class="wikitable" width="600px"<br />
|-<br />
! Value<br />
! Explanation<br />
|-<br />
| -1<br />
| ''Obey the user's confirmation setting''<br />
|-<br />
| 0<br />
| ''Don't confirm, shutdown without asking''<br />
|-<br />
| 1<br />
| ''Always confirm, ask even if the user turned it off''<br />
|}<br />
<br />
<br />
'''Second parameter: "type"'''<br />
{| class="wikitable" width="600px"<br />
|-<br />
! Value<br />
! Explanation<br />
|-<br />
| -1<br />
| Select previous action or the default if it's the first time<br />
|-<br />
| 0<br />
| Only log out<br />
|-<br />
| 1<br />
| Log out and reboot the machine<br />
|-<br />
| 2<br />
| Log out and halt the machine<br />
|}<br />
<br />
<br />
'''Third parameter: "mode"'''<br />
{| class="wikitable" width="600px"<br />
|-<br />
! Value<br />
! Explanation<br />
|-<br />
| -1<br />
| Select previous mode (or the default one, if it's the first time)<br />
|-<br />
| 0<br />
| Schedule a shutdown (halt or reboot) for the time all active sessions have exited<br />
|-<br />
| 1<br />
| Shut down, if no sessions are active. Otherwise do nothing<br />
|-<br />
| 2<br />
| Force shutdown. Kill any possibly active sessions<br />
|-<br />
| 3<br />
| Pop up a dialog asking the user what to do if sessions are still active<br />
|}<br />
<br />
<br />
'''Full stop example'''<br />
<br />
This command will log out and halt the machine, killing any sessions and will never prompt the user:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ dcop ksmserver default logout 0 2 2<br />
</syntaxhighlight><br />
<br />
== Troubleshooting ==<br />
<br />
=== Error: TDE mediamanager is not running ===<br />
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).<br />
<br />
To solve this, add the following lines to your window manager's autostart script:<br />
<syntaxhighlight lang="shell"><br />
tdeinit<br />
dcop kded kded loadModule mediamanager<br />
</syntaxhighlight><br />
<br />
=== Unable to change display brightness with NVidia cards ===<br />
If you are unable to change the display brightness, the problem could be the nvidia driver in use.<br />
The following tip works for some users and it is worth a try.<br />
<br />
In <tt>/etc/default/grub</tt> add <code>acpi_backlight=vendor</code> and/or <code>nvidia.NVreg_EnableBacklightHandler=1</code> to <br />
the variable <tt>GRUB_CMDLINE_LINUX_DEFAULT</tt> and reboot. Then controlling the display brightness using TDE<br />
and multimedia (or Fn combination) keys should/may work.<br />
<br />
Example:<br />
<br />
<syntaxhighlight lang="shell"><br />
GRUB_CMDLINE_LINUX_DEFAULT="quiet nvidia.NVreg_EnableBacklightHandler=1 acpi_backlight=vendor"<br />
</syntaxhighlight><br />
<br />
= See also =<br />
* [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]<br />
* [http://web.archive.org/web/20060924165408/http://wiki.kde.org/tiki-index.php?page=Performance+Tips KDE3 Performance Tips on the old KDE TikiWiki]<br />
* [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]<br />
<br />
[[Category:Documentation]]<br />
[[Category:Community]]<br />
[[Category:TipsAndTricks]]<br />
</noinclude></div>Blu256https://wiki.trinitydesktop.org/index.php?title=User:Blu256&diff=3115User:Blu2562023-05-10T13:15:05Z<p>Blu256: /* TODO list */</p>
<hr />
<div>= Contact =<br />
* [[User talk:Blu256|Wiki discussion page]]<br />
* Jabber: <tt>blu.256@jabb.im</tt><br />
* IRC nick: <tt>blu256</tt> (Libera.chat)<br />
<br />
= TODO list =<br />
<br />
Mostly for personal reference. Updated occasionally.<br />
<br />
{| class="wikitable"<br />
|+ Currently working on...<br />
! Name<br />
! Type<br />
! Stage<br />
! Target<br />
|-<br />
| Active borders and corners for TWin<br />
| Feature<br />
| Working on it (initial support in [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/pulls/331 TDE/tdebase#331])<br />
| probably R14.1.1<br />
|}<br />
<br />
{| class="wikitable"<br />
|+ TODO<br />
! Name<br />
! Type<br />
! Stage<br />
! Target<br />
|-<br />
| [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/issues/271 Kate: fix font style checkboxes between different schema font tabs]<br />
| Improvement<br />
| On hold<br />
| R14.1.1<br />
|-<br />
| tdeio-mtp<br />
| Feature<br />
| On hold<br />
| R14.2.0<br />
|-<br />
| [https://mirror.git.trinitydesktop.org/gitea/TDE/tdelibs/issues/151 Make KSSL use system root certificates]<br />
| Improvement<br />
| On hold<br />
| R14.2.0<br />
|-<br />
| [https://mirror.git.trinitydesktop.org/gitea/TDE/tdemultimedia/pulls/31 KMix indicator]<br />
| Feature<br />
| On hold<br />
| R14.2.0<br />
|}</div>Blu256https://wiki.trinitydesktop.org/index.php?title=User:Blu256&diff=3114User:Blu2562023-05-10T13:12:29Z<p>Blu256: update</p>
<hr />
<div>= Contact =<br />
* [[User talk:Blu256|Wiki discussion page]]<br />
* Jabber: <tt>blu.256@jabb.im</tt><br />
* IRC nick: <tt>blu256</tt> (Libera.chat)<br />
<br />
= TODO list =<br />
<br />
Too many things, too little time...<br />
<br />
{| class="wikitable"<br />
|+ Currently working on...<br />
! Name<br />
! Type<br />
! Stage<br />
! Target<br />
|-<br />
| Active borders and corners for TWin<br />
| Feature<br />
| Working on it (initial support in [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/pulls/331 TDE/tdebase#331])<br />
| probably R14.1.1<br />
|}<br />
<br />
{| class="wikitable"<br />
|+ TODO<br />
! Name<br />
! Type<br />
! Stage<br />
! Target<br />
|-<br />
| [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/issues/271 Kate: fix font style checkboxes between different schema font tabs]<br />
| Improvement<br />
| On hold<br />
| R14.1.1<br />
|-<br />
| tdeio-mtp<br />
| Feature<br />
| On hold<br />
| R14.2.0<br />
|-<br />
| [https://mirror.git.trinitydesktop.org/gitea/TDE/tdelibs/issues/151 Make KSSL use system root certificates]<br />
| Improvement<br />
| On hold<br />
| R14.2.0<br />
|-<br />
| [https://mirror.git.trinitydesktop.org/gitea/TDE/tdemultimedia/pulls/31 KMix indicator]<br />
| Feature<br />
| On hold<br />
| R14.2.0<br />
|}</div>Blu256https://wiki.trinitydesktop.org/index.php?title=How_to_Build_TDE_Core_Modules&diff=3105How to Build TDE Core Modules2023-05-03T09:23:03Z<p>Blu256: /* Suggested Build Order */ explain what is tqscintilla</p>
<hr />
<div>[[Category:Documentation]]<br />
[[Category:Installation]]<br />
[[Category:Developers]]<br />
[[Category:Packagers]]<br />
This HowTo provides detailed notes and explanations for building the Trinity Desktop Environment base<br />
packages.<br />
<br />
<br />
==Introduction and Requirements==<br />
<br />
<br />
===Basic Building Requirements===<br />
<br />
Individual Linux distributions might have different build requirements. If these are known they will be available <br />
on the Distribution Specific Builds page.<br />
<br />
There is an ongoing effort to convert the build process from autotools to cmake. Until the cmake conversion is <br />
complete, both cmake and autotools are needed to build Trinity packages. cmake 2.8.12 or more recent is expected <br />
when building with cmake.<br />
<br />
To build the packages still using autotools, you will need a standard autotools setup (automake, autoconf, etc.)<br />
<br />
You'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 <br />
against versions up to and including 4.6. clang++ is also supported.<br />
<br />
===Other Requirements===<br />
<br />
(NOTE: List compiled from old QT3/kdelibs/kde-base ebuilds--will someone please check these?)<br />
<br />
Most of the non-build-related mandatory dependencies for the core Trinity packages are pretty basic:<br />
<br />
*an X server<br />
*openssl<br />
*fontconfig<br />
*freetype<br />
*ghostscript<br />
*xdg support<br />
*libpng<br />
*libmng<br />
<br />
If your Linux distribution came with any kind of graphical environment at all, you should already have<br />
this stuff.<br />
<br />
To build tdepim, you will also need libical (standard on many distros).<br />
<br />
See Additional Functionality for a list of optional dependencies and what they enable.<br />
<br />
<br />
===About TQt===<br />
<br />
Trinity uses the TQt widget toolkit. TQt is a fork of the last version of Qt3, with a significant amount of<br />
bug-fixes and improvements. Since Trolltech, the original developer of Qt, dropped support for Qt3,<br />
the Trinity Project has forked it and continued its maintenance and development.<br />
<br />
===About libart===<br />
<br />
libart-lgpl is another dependency package that the Trinity Project has taken over after it was <br />
[https://bugzilla.gnome.org/show_bug.cgi?id=155472#c4 dropped] by its original maintainer, because <br />
it needed several [http://git.trinitydesktop.org/cgit/libart-lgpl/diff/?id=150562b89b645c402f1bb837a09f8b84bf6e49ec patches] <br />
to prevent crashes. The version of libart provided by the Trinity Project includes those patches and is <br />
intended to be a replacement for any version of libart currently installed by any distro. Build this patched version <br />
of libart and replace the stock libart installed with the distro.<br />
<br />
<br />
===Coexisting with QT5/KDE Plasma===<br />
<br />
Trinity is intended to be able to run on computers that also have KDE Plasma installed. Originally, a lot of<br />
Trinity applications had the same names as their KDE4 counterparts, which was problematic. All of <br />
those have been renamed. In general, this was accomplished by changing the old KDE "K" prefix to a <br />
"T" ("kwin" -> "twin"). Applications that don't match anything currently part of KDE Plasma have retained <br />
their old names.<br />
<br />
To avoid stepping on KDE Plasma's toes, we ''strongly'' suggest picking a specific subdirectory prefix to install Trinity<br />
to--the one used in these directions is $PREFIX=/opt/trinity.<br />
<br />
<br />
==Preparing the Source==<br />
<br />
To use the release tarballs, just untar them somewhere.<br />
<br />
To live dangerously and use the GIT sources, read [[Notes on GIT Sources]] first.<br />
<br />
<br />
==Building==<br />
<br />
<br />
===Suggested Build Order===<br />
<br />
A lot of the Trinity core packages depend on one another (in particular, everything depends on tdelibs).<br />
Follow this build order to prevent problems.<br />
<br />
Start with the required core packages:<br />
<br />
#tqt3<br />
#cmake-trinity<br />
#tqtinterface<br />
#arts<br />
#dbus-tqt<br />
#dbus-1-tqt<br />
#tqca-tls (Recommended but required for some applications, such as the Kopete OTR add-on)<br />
#libart-lgpl<br />
#avahi-tqt (Recommended but required when supporting DNS discovery services)<br />
#tdelibs<br />
#tdebase<br />
<br />
At this point, you should have a functioning TDE desktop with basic utilities (terminal, file manager,<br />
text/source editors, etc.) If you're going to build tdebindings and want Python support available,<br />
continue with the Python linking packages (or skip over them if you don't care about Python support):<br />
<br />
#sip4-tqt<br />
#python-tqt<br />
#pytdeextensions<br />
#python-trinity<br />
#tqscintilla (if you want thr Scintilla editor component)<br />
<br />
The following build order seems to work well for the remaining core packages when building the stable release.<br />
You don't have to install everything, though, unless you're packaging TDE for your distribution--pick the packages <br />
that suit your use case.<br />
<br />
#tdebindings<br />
#tdeaccessibility<br />
#tdeutils<br />
#tdemultimedia<br />
#tdenetwork<br />
#tdeadmin<br />
#tdeartwork<br />
#tdegames<br />
#tdetoys<br />
#tdeedu<br />
#tdegraphics<br />
#tdepim<br />
#tdesdk (Build tdesdk after installing tdepim. tdepim provides libkcal (bugzilla) hooks for tdesdk.)<br />
#tdevelop (Build tdevelop after tdesdk. tdesdk provides cvs support for tdevelop.)<br />
#tdeaddons <br />
<br />
Once that's done, you may want to add [[How to Build Extra Applications|some extra applications]] on top.<br />
<br />
===Building Packages with cmake===<br />
<br />
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.<br />
<br />
====List of Packages Building with cmake====<br />
<br />
cmake is the newer, easier, and more maintainable build system the Trinity Project is in the process of porting TDE source to.<br />
<br />
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.<br />
<br />
Read the notes section below for individual package requirements before trying to build anything.<br />
<br />
====Performing a cmake Build with Ninja====<br />
<br />
The command listing below is only an example. You will wish to edit the exports if your distribution<br />
puts things in unusual locations or if you wish to install to somewhere other than /opt/trinity (tqtinterface<br />
has special requirements--see the Notes). Not all exports will be needed on all systems.<br />
<br />
export PREFIX=/opt/trinity<br />
export SYSCONFDIR=/etc/trinity<br />
export LIBDIR=$PREFIX/lib<br />
export MANDIR=$PREFIX/man<br />
export TQTDIR=$PREFIX/tqt3<br />
export PATH=$TQTDIR/bin:$PREFIX/bin:$PATH<br />
export LD_LIBRARY_PATH=$LIBDIR:$LIBDIR/trinity:$LD_LIBRARY_PATH<br />
export PKG_CONFIG_PATH=:$LIBDIR/pkgconfig:$TQTDIR/lib/pkgconfig:$PKG_CONFIG_PATH<br />
# for lib64:<br />
# export LIBDIRSUFFIX=64<br />
#<br />
from the Trinity module:<br />
mkdir -p build && cd build<br />
cmake -G "Ninja" \<br />
-DCMAKE_EXPORT_COMPILE_COMMANDS="ON" \<br />
-DCMAKE_BUILD_TYPE=RelWithDebInfo \<br />
-DCMAKE_SKIP_RPATH="OFF" \<br />
-DCMAKE_INSTALL_PREFIX=${PREFIX} \<br />
-DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \<br />
-DLIB_SUFFIX=${LIBDIRSUFFIX} \<br />
-DMAN_INSTALL_DIR=${MANDIR} \<br />
-DBUILD_ALL="ON" \<br />
-DWITH_ALL_OPTIONS="ON" ..<br />
cmake --build . -- -v<br />
<br />
====Notes====<br />
<br />
*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.<br />
<br />
*tqtinterface requires the following additional QT-related build option:<br />
<br />
-DQT_VERSION=3<br />
<br />
*arts and tdelibs execute compiled binaries as part of the build process. Therefore they need to have -DCMAKE_SKIP_RPATH="OFF" set. All other modules do not need the RPATH set.<br />
<br />
*When building on 64-bit, the following (T)Qt3 configuration option might need to be explicitly declared in some distro build scripts:<br />
<br />
-platform linux-g++-64 (rather than linux-g++ (notice the dash!))<br />
<br />
*If class constructor issues surface during the build, please post the error to the trinity-users list.<br />
<br />
===Building Packages with Autoconf===<br />
<br />
<br />
====Introduction====<br />
<br />
If the package you're trying to build is on the list of those that will build with cmake, try that first, because <br />
its autotools files will be unmaintained, bit-rotted, and possibly outright broken.<br />
<br />
Please read the notes section below for individual package requirements before trying to build anything.<br />
<br />
For those packages that still need to be built with autotools, the following steps must be run for each affected <br />
Trinity module, including tarball snapshots.<br />
<br />
<br />
====Regenerate Autoconf/Automake files====<br />
<br />
cd to the desired module to build, then run:<br />
<br />
cp -Rp <path to your system's libtool.m4 file> admin/libtool.m4.in<br />
cp -Rp <path to your system's ltmain.sh file> admin/ltmain.sh<br />
make -f admin/Makefile.common<br />
<br />
<br />
====Configure and Build====<br />
<br />
export PREFIX=/opt/trinity<br />
export SYSCONFDIR=/etc/trinity<br />
export LIBDIR=/opt/trinity/lib<br />
export MANDIR=/opt/trinity/man<br />
export QTDIR=/opt/trinity/lib/qt3-3.3.8.d<br />
export PATH=/opt/trinity/qt3-3.3.8.d/bin:/opt/trinity/bin:$PATH<br />
export LD_LIBRARY_PATH=/opt/trinity/lib:/opt/trinity/lib/trinity:$LD_LIBRARY_PATH<br />
export PKG_CONFIG_PATH=:/opt/trinity/lib/pkgconfig:/opt/trinity/qt3-3.3.8.d/lib/pkgconfig:$PKG_CONFIG_PATH<br />
# Enable only one of the following:<br />
# export DEBUG_AUTOTOOL_OPT="--enable-debug=full"<br />
export DEBUG_AUTOTOOL_OPT="--disable-debug"<br />
<br />
CFLAGS=$CPUOPT \<br />
CXXFLAGS=$CPUOPT \<br />
./configure \<br />
--prefix=${PREFIX} \<br />
--sysconfdir=${SYSCONFDIR} \<br />
--libdir=${LIBDIR} \<br />
--mandir=${MANDIR} \<br />
--with-qt-dir=${QTDIR} \<br />
--with-qt-includes=${QTDIR}/include \<br />
--with-qt-libraries=${QTDIR}/lib \<br />
$DEBUG_AUTOTOOL_OPT<br />
<br />
View the Distribution Specific Builds page for additional configure options.<br />
<br />
<br />
====Notes====<br />
<br />
*Certain modules will not build across multiple cores in parallel. That is, with a "make -j" flag set to anything greater than 1. These packages are:<br />
**tdebindings (some people have no problems with this package and parallel processing)<br />
**tdemultimedia (some people have no problems with this package and parallel processing) <br />
<br />
*Not well documented anywhere, but when building with automake several packages need the --enable-closure configure option:<br />
**tdeaccessibility<br />
**tdeaddons<br />
**tdeadmin<br />
**tdebindings<br />
**tdeedu<br />
**tdegames<br />
**tdemultimedia<br />
**tdesdk<br />
<br />
*When building on 64-bit, the following (T)Qt3 configuration option might need to be explicitly declared in some distro build scripts:<br />
<br />
-platform linux=g++-64 (rather than linux-g++ (notice the dash!))<br />
<br />
<br />
===Build Times===<br />
<br />
Building Trinity requires time and patience. Build times vary. Here are some guidelines from building <br />
Trinity 3.5.12 on a dual core 2.3 GHz AM2 with 4GB of RAM, using tmpfs, 7200 rpm SATA II hard drives; <br />
with Amarok, Firefox, Konsole, Konqueror, Kate, and other various apps often running concurrently. Compile <br />
times will be faster without such overhead, but likely will be longer when building with support package hooks.<br />
Packages using cmake will build faster than those still stuck on autotools.<br />
<br />
*tqtinterface: 2 minutes<br />
*arts: 4 minutes<br />
*tdelibs: 44 minutes<br />
*tdebase: 33 minutes<br />
*tdebindings: 36 minutes<br />
*tdeaccessibility: 5 minutes<br />
*tdeutils: 8 minutes<br />
*tdemultimedia: 24 minutes<br />
*tdenetwork: 23 minutes<br />
*tdeadmin: 4 minutes<br />
*tdeartwork: 3 minutes<br />
*tdegames: 8 minutes<br />
*tdetoys: 2 minutes<br />
*tdeedu: 15 minutes<br />
*tdegraphics: 17 minutes<br />
*tdesdk: 14 minutes<br />
*tdevelop: 27 minutes<br />
*tdeaddons: 7 minutes<br />
*tdewebdev: 12 minutes<br />
*tdepim: 63 minutes <br />
<br />
Approximate total time: 5 hours 51 minutes<br />
<br />
Time to a functional system (basic desktop): 1 hour 23 minutes<br />
<br />
<br />
==Installing==<br />
<br />
The command is the same regardless of whether your package was built with cmake or autotools:<br />
<br />
make install || exit 1<br />
<br />
<br />
==Additional Functionality==<br />
<br />
Certain Trinity packages gain additional functionality when compiled with additional dependencies available.<br />
Also, we maintain some libraries which provide purely optional functionality.<br />
<br />
<br />
===Optional Trinity Libraries===<br />
<br />
None of these Trinity libraries are required but all provide additional functionality for a variety of packages. <br />
These libraries must be built and installed before any packages using these libraries can take advantage of the <br />
additional functionality.<br />
<br />
*libkipi: required by kipi-plugins<br />
*kipi-plugins: several high-end image viewers such as gwenview and digikam<br />
*libkdcraw: several image viewers and graphics apps, such as chalk and digikam<br />
*libkexiv2: several image viewers<br />
*libksquirrel: required by ksquirrel (TDE swiss-army-knife for graphic file formats, also supports medical image formats if xmedcon is provided)<br />
*libtqt-perl: adept add-on<br />
*mlt: not required or supported at this time<br />
*mlt++: not required or supported at this time<br />
*pytdeextensions: replacement for PyQt3 and PyKDE3, and used by apps such as tdebindings and tde-guidance<br />
*python-trinity: replacement for PyQt3 and PyKDE3, and used by apps such as tdebindings and tde-guidance <br />
<br />
<br />
===List of Optional Dependencies by Trinity Package===<br />
<br />
====tdelibs====<br />
<br />
*'''avahi''' DNS discovery<br />
*'''avahi-tqt''' Trinity TQt layer for avahi, available in Trinity libraries<br />
*'''hspell''' Hebrew spell checking<br />
*'''krb5''' Kerberos authentication<br />
*'''openexr''' EXR image format <br />
<br />
====tdebase====<br />
<br />
*'''avahi''' DNS discovery<br />
*'''avahi-tqt''' Trinity TQt layer for avahi, available in Trinity libraries<br />
*'''krb5''' Kerberos authentication<br />
*'''openexr''' EXR image format<br />
*'''GraphicsMagick''' image filters <br />
<br />
====tdebindings====<br />
<br />
*'''Ruby'''<br />
*'''JRE''' Java Runtime Environment<br />
*'''JDK''' Java Development Kit<br />
*'''Python'''<br />
*'''python-trinity''', available in Trinity libraries<br />
*'''pytdeextensions''', available in Trinity libraries <br />
<br />
====tdeutils====<br />
<br />
*'''xmms''' multimedia player (superkaramba) <br />
<br />
====tdemultimedia====<br />
<br />
*'''cdparanoia''' digital audio extraction tool (kaudiocreator)<br />
*'''speex''' an audio compression format designed for speech <br />
<br />
====tdenetwork====<br />
<br />
*'''xmms''' multimedia player (kopete plugins)<br />
*'''ortp''' real-time transport protocol stack under GPL (kopete plugins)<br />
*'''speex''' audio compression format designed for speech (kopete plugins) <br />
<br />
====tdeedu====<br />
<br />
*'''facile''' functional constraint library (kalzium)<br />
*'''ocaml''' A programming language (kalzium)<br />
*'''boost''' boost C++ Libraries <br />
<br />
====tdevelop====<br />
<br />
*'''graphviz''' graph visualization <br />
<br />
====tdeaddons====<br />
<br />
*'''xmms''' multimedia player (kicker applets) <br />
<br />
====tdewebdev====<br />
<br />
*'''XSLT''' Extensible Stylesheet Language Transformations<br />
*'''DocBook''' text markup<br />
<br />
====tdepim====<br />
<br />
*'''krb5''' Kerberos authentication<br />
*'''ortp''' real-time transport protocol stack under GPL (kopete)<br />
*'''gnokii''' Nokia mobile phone support<br />
*'''opensync''' data synchronization support<br />
*'''libcaldav''' online calendar support, available through Trinity web site (http://www.trinitydesktop.org/relatedprojects.php)<br />
*'''libcarddav''' online address book support, available through Trinity web site (http://www.trinitydesktop.org/relatedprojects.php) <br />
<br />
<br />
==Quirks and Known Bugs==<br />
<br />
<br />
===Building Sip===<br />
<br />
Sip is available on many/most distros. Sip requires Qt3 to build, but won't build on TQt3, which adds <br />
the tqinterface layer to Qt3. More than likely down the road, Sip will be dumped or moved to Qt4 by distro <br />
maintainers. All of the python-*-tqt-* packages need Sip to build. Build this TQt3 compatible version of Sip <br />
and replace the stock Sip installed with the distro.<br />
<br />
<br />
===OpenGL and nVidia===<br />
<br />
Building many Trinity and related packages depend upon OpenGL, such as <br />
tdegraphics, k3b, koffice, tdenetwork, gwenview, digikam, etc.; <br />
<br />
as well as dependency packages such as <br />
libkipi, libkdcraw, libkexiv2, avahi, etc. <br />
<br />
If any of those packages are built when the proprietary nvidia drivers are installed, the dependent package will fail to build <br />
with an error about /usr/lib/libGL.la. <br />
<br />
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. <br />
<br />
When building packages for other users then build the entire suite of packages in a "clean" generic OpenGL environment. <br />
<br />
Other users might not use the proprietary nvidia package. This is true of any package that has OpenGL dependencies.<br />
<br />
===Tdeartwork and xhack Screensavers===<br />
<br />
Before building tdeartwork, install any and all xhack screensavers that might be uses, then<br />
<br />
cd <tdeartwork>/kscreensaver/kxsconfig/<br />
./update_hacks.sh<br />
<br />
This will generate the TDE bindings required to allow installed screensavers show up in the Trinity <br />
screensaver control panel, along with their configuration options. When adding a new screensaver the <br />
update_hacks command needs to be rerun and tdeartwork recompiled/reinstalled. Distribution maintainers should <br />
install all available screensavers from their distribution and then run update_hacks during the initial build <br />
setup when building redistributable binary packages (see the Debian tdeartwork build scripts in GIT for an <br />
example of how to do this).<br />
<br />
<br />
===Poppler Support in Tdegraphics===<br />
<br />
Building tdegraphics with poppler support requires building a Trinity poppler-tqt support package. With <br />
many distros poppler no longer is built with Qt3 support. The Trinity poppler-tqt provides the necessary hooks for <br />
tdegraphics without rebuilding poppler. The poppler-tqt dependency sources are located in the tdegraphics/kfile-plugins <br />
dependencies directory and are built automatically with the tdegraphics build option -DWITH_PDF=ON.<br />
<br />
<br />
===Tdesvn/Tdesdk svn-kio Conflict===<br />
<br />
tdesvn and tdesdk provide conflicting files for svn-kio services. Neither package is a dependency of the other. <br />
When tdesdk or tdesvn will be installed without the other, then no change is required. When both tdesdk and tdesvn <br />
are to be installed, then to avoid filesystem conflicts the following files must be removed from one of the packages <br />
before installing:<br />
<br />
/opt/trinity/share/services/svn+file.protocol<br />
/opt/trinity/share/services/svn+http.protocol<br />
/opt/trinity/share/services/svn+https.protocol<br />
/opt/trinity/share/services/svn+ssh.protocol<br />
/opt/trinity/share/services/svn.protocol<br />
<br />
Since tdesvn uses the ksvn kio exclusively, while tdesdk uses the svn kio, consider removing the conflicting files <br />
from tdesdk to eliminate the same services relying on multiple kio service files.</div>Blu256https://wiki.trinitydesktop.org/index.php?title=How_to_Build_TDE_Core_Modules&diff=3104How to Build TDE Core Modules2023-05-03T09:21:47Z<p>Blu256: /* Suggested Build Order */ Remove mention of Qt3 (deprecated since R14.1.0)</p>
<hr />
<div>[[Category:Documentation]]<br />
[[Category:Installation]]<br />
[[Category:Developers]]<br />
[[Category:Packagers]]<br />
This HowTo provides detailed notes and explanations for building the Trinity Desktop Environment base<br />
packages.<br />
<br />
<br />
==Introduction and Requirements==<br />
<br />
<br />
===Basic Building Requirements===<br />
<br />
Individual Linux distributions might have different build requirements. If these are known they will be available <br />
on the Distribution Specific Builds page.<br />
<br />
There is an ongoing effort to convert the build process from autotools to cmake. Until the cmake conversion is <br />
complete, both cmake and autotools are needed to build Trinity packages. cmake 2.8.12 or more recent is expected <br />
when building with cmake.<br />
<br />
To build the packages still using autotools, you will need a standard autotools setup (automake, autoconf, etc.)<br />
<br />
You'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 <br />
against versions up to and including 4.6. clang++ is also supported.<br />
<br />
===Other Requirements===<br />
<br />
(NOTE: List compiled from old QT3/kdelibs/kde-base ebuilds--will someone please check these?)<br />
<br />
Most of the non-build-related mandatory dependencies for the core Trinity packages are pretty basic:<br />
<br />
*an X server<br />
*openssl<br />
*fontconfig<br />
*freetype<br />
*ghostscript<br />
*xdg support<br />
*libpng<br />
*libmng<br />
<br />
If your Linux distribution came with any kind of graphical environment at all, you should already have<br />
this stuff.<br />
<br />
To build tdepim, you will also need libical (standard on many distros).<br />
<br />
See Additional Functionality for a list of optional dependencies and what they enable.<br />
<br />
<br />
===About TQt===<br />
<br />
Trinity uses the TQt widget toolkit. TQt is a fork of the last version of Qt3, with a significant amount of<br />
bug-fixes and improvements. Since Trolltech, the original developer of Qt, dropped support for Qt3,<br />
the Trinity Project has forked it and continued its maintenance and development.<br />
<br />
===About libart===<br />
<br />
libart-lgpl is another dependency package that the Trinity Project has taken over after it was <br />
[https://bugzilla.gnome.org/show_bug.cgi?id=155472#c4 dropped] by its original maintainer, because <br />
it needed several [http://git.trinitydesktop.org/cgit/libart-lgpl/diff/?id=150562b89b645c402f1bb837a09f8b84bf6e49ec patches] <br />
to prevent crashes. The version of libart provided by the Trinity Project includes those patches and is <br />
intended to be a replacement for any version of libart currently installed by any distro. Build this patched version <br />
of libart and replace the stock libart installed with the distro.<br />
<br />
<br />
===Coexisting with QT5/KDE Plasma===<br />
<br />
Trinity is intended to be able to run on computers that also have KDE Plasma installed. Originally, a lot of<br />
Trinity applications had the same names as their KDE4 counterparts, which was problematic. All of <br />
those have been renamed. In general, this was accomplished by changing the old KDE "K" prefix to a <br />
"T" ("kwin" -> "twin"). Applications that don't match anything currently part of KDE Plasma have retained <br />
their old names.<br />
<br />
To avoid stepping on KDE Plasma's toes, we ''strongly'' suggest picking a specific subdirectory prefix to install Trinity<br />
to--the one used in these directions is $PREFIX=/opt/trinity.<br />
<br />
<br />
==Preparing the Source==<br />
<br />
To use the release tarballs, just untar them somewhere.<br />
<br />
To live dangerously and use the GIT sources, read [[Notes on GIT Sources]] first.<br />
<br />
<br />
==Building==<br />
<br />
<br />
===Suggested Build Order===<br />
<br />
A lot of the Trinity core packages depend on one another (in particular, everything depends on tdelibs).<br />
Follow this build order to prevent problems.<br />
<br />
Start with the required core packages:<br />
<br />
#tqt3<br />
#cmake-trinity<br />
#tqtinterface<br />
#arts<br />
#dbus-tqt<br />
#dbus-1-tqt<br />
#tqca-tls (Recommended but required for some applications, such as the Kopete OTR add-on)<br />
#libart-lgpl<br />
#avahi-tqt (Recommended but required when supporting DNS discovery services)<br />
#tdelibs<br />
#tdebase<br />
<br />
At this point, you should have a functioning TDE desktop with basic utilities (terminal, file manager,<br />
text/source editors, etc.) If you're going to build tdebindings and want Python support available,<br />
continue with the Python linking packages (or skip over them if you don't care about Python support):<br />
<br />
#sip4-tqt<br />
#python-tqt<br />
#pytdeextensions<br />
#python-trinity<br />
#tqscintilla <br />
<br />
The following build order seems to work well for the remaining core packages when building the stable release.<br />
You don't have to install everything, though, unless you're packaging TDE for your distribution--pick the packages <br />
that suit your use case.<br />
<br />
#tdebindings<br />
#tdeaccessibility<br />
#tdeutils<br />
#tdemultimedia<br />
#tdenetwork<br />
#tdeadmin<br />
#tdeartwork<br />
#tdegames<br />
#tdetoys<br />
#tdeedu<br />
#tdegraphics<br />
#tdepim<br />
#tdesdk (Build tdesdk after installing tdepim. tdepim provides libkcal (bugzilla) hooks for tdesdk.)<br />
#tdevelop (Build tdevelop after tdesdk. tdesdk provides cvs support for tdevelop.)<br />
#tdeaddons <br />
<br />
Once that's done, you may want to add [[How to Build Extra Applications|some extra applications]] on top.<br />
<br />
===Building Packages with cmake===<br />
<br />
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.<br />
<br />
====List of Packages Building with cmake====<br />
<br />
cmake is the newer, easier, and more maintainable build system the Trinity Project is in the process of porting TDE source to.<br />
<br />
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.<br />
<br />
Read the notes section below for individual package requirements before trying to build anything.<br />
<br />
====Performing a cmake Build with Ninja====<br />
<br />
The command listing below is only an example. You will wish to edit the exports if your distribution<br />
puts things in unusual locations or if you wish to install to somewhere other than /opt/trinity (tqtinterface<br />
has special requirements--see the Notes). Not all exports will be needed on all systems.<br />
<br />
export PREFIX=/opt/trinity<br />
export SYSCONFDIR=/etc/trinity<br />
export LIBDIR=$PREFIX/lib<br />
export MANDIR=$PREFIX/man<br />
export TQTDIR=$PREFIX/tqt3<br />
export PATH=$TQTDIR/bin:$PREFIX/bin:$PATH<br />
export LD_LIBRARY_PATH=$LIBDIR:$LIBDIR/trinity:$LD_LIBRARY_PATH<br />
export PKG_CONFIG_PATH=:$LIBDIR/pkgconfig:$TQTDIR/lib/pkgconfig:$PKG_CONFIG_PATH<br />
# for lib64:<br />
# export LIBDIRSUFFIX=64<br />
#<br />
from the Trinity module:<br />
mkdir -p build && cd build<br />
cmake -G "Ninja" \<br />
-DCMAKE_EXPORT_COMPILE_COMMANDS="ON" \<br />
-DCMAKE_BUILD_TYPE=RelWithDebInfo \<br />
-DCMAKE_SKIP_RPATH="OFF" \<br />
-DCMAKE_INSTALL_PREFIX=${PREFIX} \<br />
-DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \<br />
-DLIB_SUFFIX=${LIBDIRSUFFIX} \<br />
-DMAN_INSTALL_DIR=${MANDIR} \<br />
-DBUILD_ALL="ON" \<br />
-DWITH_ALL_OPTIONS="ON" ..<br />
cmake --build . -- -v<br />
<br />
====Notes====<br />
<br />
*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.<br />
<br />
*tqtinterface requires the following additional QT-related build option:<br />
<br />
-DQT_VERSION=3<br />
<br />
*arts and tdelibs execute compiled binaries as part of the build process. Therefore they need to have -DCMAKE_SKIP_RPATH="OFF" set. All other modules do not need the RPATH set.<br />
<br />
*When building on 64-bit, the following (T)Qt3 configuration option might need to be explicitly declared in some distro build scripts:<br />
<br />
-platform linux-g++-64 (rather than linux-g++ (notice the dash!))<br />
<br />
*If class constructor issues surface during the build, please post the error to the trinity-users list.<br />
<br />
===Building Packages with Autoconf===<br />
<br />
<br />
====Introduction====<br />
<br />
If the package you're trying to build is on the list of those that will build with cmake, try that first, because <br />
its autotools files will be unmaintained, bit-rotted, and possibly outright broken.<br />
<br />
Please read the notes section below for individual package requirements before trying to build anything.<br />
<br />
For those packages that still need to be built with autotools, the following steps must be run for each affected <br />
Trinity module, including tarball snapshots.<br />
<br />
<br />
====Regenerate Autoconf/Automake files====<br />
<br />
cd to the desired module to build, then run:<br />
<br />
cp -Rp <path to your system's libtool.m4 file> admin/libtool.m4.in<br />
cp -Rp <path to your system's ltmain.sh file> admin/ltmain.sh<br />
make -f admin/Makefile.common<br />
<br />
<br />
====Configure and Build====<br />
<br />
export PREFIX=/opt/trinity<br />
export SYSCONFDIR=/etc/trinity<br />
export LIBDIR=/opt/trinity/lib<br />
export MANDIR=/opt/trinity/man<br />
export QTDIR=/opt/trinity/lib/qt3-3.3.8.d<br />
export PATH=/opt/trinity/qt3-3.3.8.d/bin:/opt/trinity/bin:$PATH<br />
export LD_LIBRARY_PATH=/opt/trinity/lib:/opt/trinity/lib/trinity:$LD_LIBRARY_PATH<br />
export PKG_CONFIG_PATH=:/opt/trinity/lib/pkgconfig:/opt/trinity/qt3-3.3.8.d/lib/pkgconfig:$PKG_CONFIG_PATH<br />
# Enable only one of the following:<br />
# export DEBUG_AUTOTOOL_OPT="--enable-debug=full"<br />
export DEBUG_AUTOTOOL_OPT="--disable-debug"<br />
<br />
CFLAGS=$CPUOPT \<br />
CXXFLAGS=$CPUOPT \<br />
./configure \<br />
--prefix=${PREFIX} \<br />
--sysconfdir=${SYSCONFDIR} \<br />
--libdir=${LIBDIR} \<br />
--mandir=${MANDIR} \<br />
--with-qt-dir=${QTDIR} \<br />
--with-qt-includes=${QTDIR}/include \<br />
--with-qt-libraries=${QTDIR}/lib \<br />
$DEBUG_AUTOTOOL_OPT<br />
<br />
View the Distribution Specific Builds page for additional configure options.<br />
<br />
<br />
====Notes====<br />
<br />
*Certain modules will not build across multiple cores in parallel. That is, with a "make -j" flag set to anything greater than 1. These packages are:<br />
**tdebindings (some people have no problems with this package and parallel processing)<br />
**tdemultimedia (some people have no problems with this package and parallel processing) <br />
<br />
*Not well documented anywhere, but when building with automake several packages need the --enable-closure configure option:<br />
**tdeaccessibility<br />
**tdeaddons<br />
**tdeadmin<br />
**tdebindings<br />
**tdeedu<br />
**tdegames<br />
**tdemultimedia<br />
**tdesdk<br />
<br />
*When building on 64-bit, the following (T)Qt3 configuration option might need to be explicitly declared in some distro build scripts:<br />
<br />
-platform linux=g++-64 (rather than linux-g++ (notice the dash!))<br />
<br />
<br />
===Build Times===<br />
<br />
Building Trinity requires time and patience. Build times vary. Here are some guidelines from building <br />
Trinity 3.5.12 on a dual core 2.3 GHz AM2 with 4GB of RAM, using tmpfs, 7200 rpm SATA II hard drives; <br />
with Amarok, Firefox, Konsole, Konqueror, Kate, and other various apps often running concurrently. Compile <br />
times will be faster without such overhead, but likely will be longer when building with support package hooks.<br />
Packages using cmake will build faster than those still stuck on autotools.<br />
<br />
*tqtinterface: 2 minutes<br />
*arts: 4 minutes<br />
*tdelibs: 44 minutes<br />
*tdebase: 33 minutes<br />
*tdebindings: 36 minutes<br />
*tdeaccessibility: 5 minutes<br />
*tdeutils: 8 minutes<br />
*tdemultimedia: 24 minutes<br />
*tdenetwork: 23 minutes<br />
*tdeadmin: 4 minutes<br />
*tdeartwork: 3 minutes<br />
*tdegames: 8 minutes<br />
*tdetoys: 2 minutes<br />
*tdeedu: 15 minutes<br />
*tdegraphics: 17 minutes<br />
*tdesdk: 14 minutes<br />
*tdevelop: 27 minutes<br />
*tdeaddons: 7 minutes<br />
*tdewebdev: 12 minutes<br />
*tdepim: 63 minutes <br />
<br />
Approximate total time: 5 hours 51 minutes<br />
<br />
Time to a functional system (basic desktop): 1 hour 23 minutes<br />
<br />
<br />
==Installing==<br />
<br />
The command is the same regardless of whether your package was built with cmake or autotools:<br />
<br />
make install || exit 1<br />
<br />
<br />
==Additional Functionality==<br />
<br />
Certain Trinity packages gain additional functionality when compiled with additional dependencies available.<br />
Also, we maintain some libraries which provide purely optional functionality.<br />
<br />
<br />
===Optional Trinity Libraries===<br />
<br />
None of these Trinity libraries are required but all provide additional functionality for a variety of packages. <br />
These libraries must be built and installed before any packages using these libraries can take advantage of the <br />
additional functionality.<br />
<br />
*libkipi: required by kipi-plugins<br />
*kipi-plugins: several high-end image viewers such as gwenview and digikam<br />
*libkdcraw: several image viewers and graphics apps, such as chalk and digikam<br />
*libkexiv2: several image viewers<br />
*libksquirrel: required by ksquirrel (TDE swiss-army-knife for graphic file formats, also supports medical image formats if xmedcon is provided)<br />
*libtqt-perl: adept add-on<br />
*mlt: not required or supported at this time<br />
*mlt++: not required or supported at this time<br />
*pytdeextensions: replacement for PyQt3 and PyKDE3, and used by apps such as tdebindings and tde-guidance<br />
*python-trinity: replacement for PyQt3 and PyKDE3, and used by apps such as tdebindings and tde-guidance <br />
<br />
<br />
===List of Optional Dependencies by Trinity Package===<br />
<br />
====tdelibs====<br />
<br />
*'''avahi''' DNS discovery<br />
*'''avahi-tqt''' Trinity TQt layer for avahi, available in Trinity libraries<br />
*'''hspell''' Hebrew spell checking<br />
*'''krb5''' Kerberos authentication<br />
*'''openexr''' EXR image format <br />
<br />
====tdebase====<br />
<br />
*'''avahi''' DNS discovery<br />
*'''avahi-tqt''' Trinity TQt layer for avahi, available in Trinity libraries<br />
*'''krb5''' Kerberos authentication<br />
*'''openexr''' EXR image format<br />
*'''GraphicsMagick''' image filters <br />
<br />
====tdebindings====<br />
<br />
*'''Ruby'''<br />
*'''JRE''' Java Runtime Environment<br />
*'''JDK''' Java Development Kit<br />
*'''Python'''<br />
*'''python-trinity''', available in Trinity libraries<br />
*'''pytdeextensions''', available in Trinity libraries <br />
<br />
====tdeutils====<br />
<br />
*'''xmms''' multimedia player (superkaramba) <br />
<br />
====tdemultimedia====<br />
<br />
*'''cdparanoia''' digital audio extraction tool (kaudiocreator)<br />
*'''speex''' an audio compression format designed for speech <br />
<br />
====tdenetwork====<br />
<br />
*'''xmms''' multimedia player (kopete plugins)<br />
*'''ortp''' real-time transport protocol stack under GPL (kopete plugins)<br />
*'''speex''' audio compression format designed for speech (kopete plugins) <br />
<br />
====tdeedu====<br />
<br />
*'''facile''' functional constraint library (kalzium)<br />
*'''ocaml''' A programming language (kalzium)<br />
*'''boost''' boost C++ Libraries <br />
<br />
====tdevelop====<br />
<br />
*'''graphviz''' graph visualization <br />
<br />
====tdeaddons====<br />
<br />
*'''xmms''' multimedia player (kicker applets) <br />
<br />
====tdewebdev====<br />
<br />
*'''XSLT''' Extensible Stylesheet Language Transformations<br />
*'''DocBook''' text markup<br />
<br />
====tdepim====<br />
<br />
*'''krb5''' Kerberos authentication<br />
*'''ortp''' real-time transport protocol stack under GPL (kopete)<br />
*'''gnokii''' Nokia mobile phone support<br />
*'''opensync''' data synchronization support<br />
*'''libcaldav''' online calendar support, available through Trinity web site (http://www.trinitydesktop.org/relatedprojects.php)<br />
*'''libcarddav''' online address book support, available through Trinity web site (http://www.trinitydesktop.org/relatedprojects.php) <br />
<br />
<br />
==Quirks and Known Bugs==<br />
<br />
<br />
===Building Sip===<br />
<br />
Sip is available on many/most distros. Sip requires Qt3 to build, but won't build on TQt3, which adds <br />
the tqinterface layer to Qt3. More than likely down the road, Sip will be dumped or moved to Qt4 by distro <br />
maintainers. All of the python-*-tqt-* packages need Sip to build. Build this TQt3 compatible version of Sip <br />
and replace the stock Sip installed with the distro.<br />
<br />
<br />
===OpenGL and nVidia===<br />
<br />
Building many Trinity and related packages depend upon OpenGL, such as <br />
tdegraphics, k3b, koffice, tdenetwork, gwenview, digikam, etc.; <br />
<br />
as well as dependency packages such as <br />
libkipi, libkdcraw, libkexiv2, avahi, etc. <br />
<br />
If any of those packages are built when the proprietary nvidia drivers are installed, the dependent package will fail to build <br />
with an error about /usr/lib/libGL.la. <br />
<br />
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. <br />
<br />
When building packages for other users then build the entire suite of packages in a "clean" generic OpenGL environment. <br />
<br />
Other users might not use the proprietary nvidia package. This is true of any package that has OpenGL dependencies.<br />
<br />
===Tdeartwork and xhack Screensavers===<br />
<br />
Before building tdeartwork, install any and all xhack screensavers that might be uses, then<br />
<br />
cd <tdeartwork>/kscreensaver/kxsconfig/<br />
./update_hacks.sh<br />
<br />
This will generate the TDE bindings required to allow installed screensavers show up in the Trinity <br />
screensaver control panel, along with their configuration options. When adding a new screensaver the <br />
update_hacks command needs to be rerun and tdeartwork recompiled/reinstalled. Distribution maintainers should <br />
install all available screensavers from their distribution and then run update_hacks during the initial build <br />
setup when building redistributable binary packages (see the Debian tdeartwork build scripts in GIT for an <br />
example of how to do this).<br />
<br />
<br />
===Poppler Support in Tdegraphics===<br />
<br />
Building tdegraphics with poppler support requires building a Trinity poppler-tqt support package. With <br />
many distros poppler no longer is built with Qt3 support. The Trinity poppler-tqt provides the necessary hooks for <br />
tdegraphics without rebuilding poppler. The poppler-tqt dependency sources are located in the tdegraphics/kfile-plugins <br />
dependencies directory and are built automatically with the tdegraphics build option -DWITH_PDF=ON.<br />
<br />
<br />
===Tdesvn/Tdesdk svn-kio Conflict===<br />
<br />
tdesvn and tdesdk provide conflicting files for svn-kio services. Neither package is a dependency of the other. <br />
When tdesdk or tdesvn will be installed without the other, then no change is required. When both tdesdk and tdesvn <br />
are to be installed, then to avoid filesystem conflicts the following files must be removed from one of the packages <br />
before installing:<br />
<br />
/opt/trinity/share/services/svn+file.protocol<br />
/opt/trinity/share/services/svn+http.protocol<br />
/opt/trinity/share/services/svn+https.protocol<br />
/opt/trinity/share/services/svn+ssh.protocol<br />
/opt/trinity/share/services/svn.protocol<br />
<br />
Since tdesvn uses the ksvn kio exclusively, while tdesdk uses the svn kio, consider removing the conflicting files <br />
from tdesdk to eliminate the same services relying on multiple kio service files.</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Trinity_Desktop_Environment&diff=3103Trinity Desktop Environment2023-05-01T09:10:16Z<p>Blu256: Replace R14.0.x text about dropping HAL with more up-to-date text about current R14.1.0 release (revert this change if you disagree)</p>
<hr />
<div>The '''[http://trinitydesktop.org Trinity Desktop Environment]''' (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.<br />
<br />
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.<br />
<br />
== Current release ==<br />
<div style="float: right">{{DistroTable}}</div><br />
<br />
The current stable release of TDE is '''R14.1.0''', which brings along several [[Release_Notes_For_R14.1.0|improvements and new applications]] over the previous releases.<br><br />
<br />
This release marks the switch from the R14.0.x series to the newly started R14.1.x one. R14.1.0 comes with support for LUKS disks throughout the whole desktop, new notification system for storage device plug/unplugged events, basic support for PulseAudio and support for PKI infrastructure. It also ships with a new bluetooth GUI (tdebluez), a new multimedia player (kplayer), some new icewm based themes and a new session management and panel in Kate. Several configuration dialog and usability improvements have been made throughout the system and support for Python 2 has been dropped in favour of Python 3.<br />
<br />
== Contributing ==<br />
<br />
The TDE development team is small but friendly. Anyone wanting to join the development process and help create the next TDE release is welcome! You don'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 [https://www.trinitydesktop.org/helpwanted.php Get involved] page.<br />
<br />
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.<br />
<br />
<br />
{| style=width:100%<br />
<br />
|- style=background:#A0CAEF;font-weight:bold;font-size:125%;<br />
| [[:Category:Installation|Installation]]<br />
| [[:Category:Community|Community]]<br />
<br />
|- style=background:#EFEFEF;height:3em;vertical-align:top;<br />
| {{Category:Installation}}<br />
| {{Category:Community}}<br />
<br />
|- style=background:#A0CAEF;font-weight:bold;font-size:125%;<br />
| [[:Category:Releases|Releases]]<br />
| [[:Category:Developers|Developers]]<br />
<br />
|- style=background:#EFEFEF;height:3em;vertical-align:top;<br />
| {{Category:Releases}}<br />
| {{Category:Developers}}<br />
<br />
<br />
|- style=background:#A0CAEF;font-weight:bold;font-size:125%;<br />
| [[Tips And Tricks]]<br />
| [[:Category:Packagers|Packagers]]<br />
<br />
|- style=background:#EFEFEF;height:3em;vertical-align:top;<br />
| {{:Tips And Tricks}}<br />
| {{Category:Packagers}}<br />
<br />
|- style=background:#A0CAEF;text-align:center;font-weight:bold;<br />
| colspan=2 | [[Special:Categories|Show all Categories in the TDE Wiki]]<br />
<br />
|}</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Porting_to_TDE&diff=3102Porting to TDE2023-05-01T09:08:10Z<p>Blu256: Fix typo, move TODO into Widget styles section</p>
<hr />
<div>This page is intended to provide generic instructions for porting old KDE3 software to the Trinity libraries.<br />
<br />
== Build system ==<br />
<br />
Trinity software uses CMake with [https://mirror.git.trinitydesktop.org/gitea/TDE/tde-common-cmake custom macros]. Since R14.0.11 these macros are automatically installed as part of Trinity, so you don't need to worry about including them as a submodule anymore.<br />
<br />
The best way to get a hang of how it all works is to take a look at how CMake is used in an existing project. For simplicity take a standalone app package as an example (e.g. [https://mirror.git.trinitydesktop.org/gitea/TDE/mathemagics/ Mathemagics]). Note the files named <tt>CMakeLists.txt</tt>, <tt>CMakeL10n.txt</tt>, <tt>ConfigureChecks.cmake</tt> and <tt>config.h.cmake</tt> and how they configure, build and link the software.<br />
<br />
More specific notes can be found in other Wiki articles, depending on what you are trying to port.<br />
<br />
=== Autoconf ===<br />
<br />
While porting you might want to keep the existing build system (until you figure out how everything works). To do this, remove the bundled <tt>admin</tt> directory and then clone the <tt>tde-common-admin</tt> submodule in the place of the removed directory:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ git rm -r admin<br />
$ git submodule add https://mirror.git.trinitydesktop.org/gitea/TDE/tde-common-admin admin<br />
</syntaxhighlight><br />
<br />
If you do this before actually porting the software, make sure the porting scripts do not overwrite anything in the <tt>admin</tt> directory where the submodule resides: you might get strange errors like <tt>configure</tt> being unable to locate TQt.<br />
<br />
When you've got things building you '''should''' port the software to CMake.<br />
<br />
== Software ==<br />
<br />
Porting Qt3 and KDE3 software to Trinity has mostly been automated with [https://mirror.git.trinitydesktop.org/gitea/TDE/scripts/ scripts]. Before porting your first application/style/... do obtain these scripts from TGW:<br />
<br />
<syntaxhighlight lang="shell-session"><br />
$ git clone https://mirror.git.trinitydesktop.org/gitea/TDE/scripts/<br />
</syntaxhighlight><br />
<br />
Then, to port a KDE3 application you would follow the following steps:<br />
<br />
1. Switch into the directory containing the source code.<br />
<br />
2. Create an initial commit with the original form of the source code.<br />
<br />
3. Run the Qt3→TQt conversion script.<br />
<syntaxhighlight lang="shell-session"><br />
$ ../scripts/conversions/qt3-tqt3/convert_existing_qt3_app_to_tqt3<br />
</syntaxhighlight><br />
<br />
4. Replace all <code><ntq*.h></code> headers with <code><tq*.h></code> ones in order to use the TQt-TDE interface (simply remove the <tt>n</tt> letter from the front of the header's filename). This can be automated with a small script:<br />
<br />
<syntaxhighlight lang="shell"><br />
#!/bin/bash<br />
for f in $(grep -Rl "<ntq[[:alnum:]]*.h>" * --include=\*.{h,c,cpp,ui});<br />
do<br />
sed -Ei 's!<n(tq[[:alnum:]]*.h)>!<\1>!g' $f<br />
done<br />
</syntaxhighlight><br />
<br />
5. Commit your changes labeled "Qt3→TQt conversion" or similarly.<br />
<br />
6. Run the KDE3→TDE conversion script.<br />
<syntaxhighlight lang="shell-session"><br />
$ ../scripts/conversions/kde-tde/convert_existing_kde3_app_to_tde <br />
</syntaxhighlight><br />
<br />
7. Commit your changes labeled "KDE3→TDE conversion" or similarly.<br />
<br />
8. Try to build. If this fails take note of the errors and fix them. Don't forget to commit your changes describing what you fixed.<br />
<br />
For Qt3-only apps follow steps 1 to 5.<br />
<br />
== Widget styles ==<br />
{{TODO}}<br />
{{WarningBox|text=The '''TQt API docs''' do not currently seem to reflect the API changes described here.}}<br />
<br />
The TQt Style API has [https://mirror.git.trinitydesktop.org/gitea/TDE/tqt3/src/branch/master/changes-3.5 undergone] [https://mirror.git.trinitydesktop.org/cgit/qt3/commit/?id=0008bc5bcd95694b38b0d0322aac2ea6fdb21298 some important changes], so porting a widget style to TDE will entail a little more than just running scripts.<br />
<br />
Keep the following changes in mind:<br />
* Most functions' definitions have changed;<br />
* The usage of the <tt>widget</tt> argument is deprecated in favor of specifying widget parameters via <tt>ceData</tt> and <tt>elementFlags</tt>;<br />
* <tt>SH_UnderlineAccelerator</tt> has been extended with a new style hint, <tt>SH_HideUnderlineAcceleratorWhenAltUp</tt>.<br />
<br />
Porting an existing style to the new API is relatively straightforward; simply update the function definitions in the existing style with the new definition prototypes and cast the passed pointer to TQWidget or TQObject where appropriate. You can see this in practice if you look into the relevant commits of already ported widget styles. See [https://mirror.git.trinitydesktop.org/gitea/TDE/tde-style-ia-ora/commit/d4a24866b531801cace227c1d09fda763cbca8ac this commit of tde-style-ia-ora] for example.<br />
<br />
[[Category:Developers]]</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Template:DistroTable&diff=3101Template:DistroTable2023-05-01T08:46:05Z<p>Blu256: Mark previous release (R14.0.13) with orange</p>
<hr />
<div>This template provides a '''table with installation instructions''' per distribution/operating system. It also tells the latest available version of TDE for that system.<br />
<br />
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.<br />
<br />
Mark the latest release with <span style="color: green;">green</span>, the release before it with <span style="color: orange;">orange</span> and older releases with <span style="color: red;">red</span>.<br />
<br />
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.<br />
<br />
= Example =<br />
<br />
This is how it will look on the page:<br />
<br />
<onlyinclude>{|<br />
| style="vertical-align: top" | <!-- Official instructions --><br />
{|class="wikitable" style="margin: 0;"<br />
! colspan="2" | <big>Official Instructions</big><br />
|-<br />
| '''Distribution'''<br />
| '''Latest'''<br />
|-<br />
| [[Debian Trinity Repository Installation Instructions|Debian]]<br />
| <span style="color: green;">R14.1.0</span><br />
|-<br />
| [[Devuan Trinity Repository Installation Instructions|Devuan]]<br />
| <span style="color: green;">R14.1.0</span><br />
|-<br />
| [[Fedora Trinity Repository Installation Instructions|Fedora]]<br />
| <span style="color: orange;">R14.0.13</span><br />
|-<br />
| [[RedHat Trinity Repository Installation Instructions|RedHat]]<br />
| <span style="color: orange;">R14.0.13</span><br />
|-<br />
| [[Ubuntu Trinity Repository Installation Instructions|Ubuntu]]<br />
| <span style="color: green;">R14.1.0</span><br />
|}<br />
<br />
| style="vertical-align: top" | <!-- Unofficial instructions --><br />
{|class="wikitable" style="margin: 0;"<br />
! colspan="4" | <big>Community Instructions</big><br />
|-<br />
| '''Distribution'''<br />
| '''Latest'''<br />
| '''Distribution'''<br />
| '''Latest'''<br />
|-<br />
| [[ALT Linux Trinity Repository Installation Instructions|ALT Linux]]<br />
| <span style="color: red;">3.5.13.2</span><br />
| [[MX Linux Trinity Repository Installation Instructions|MX Linux]]<br />
| <span style="color: orange;">R14.0.13</span><br />
|-<br />
| [[Arch Trinity Repository Installation Instructions|Arch Linux]]<br />
| <span style="color: green;">R14.1.0</span><br />
| [[OpenSUSE Trinity Repository Installation Instructions|OpenSUSE]]<br />
| <span style="color: orange;">R14.0.13</span><br />
|-<br />
| [[FreeBSD Trinity Installation Instructions|FreeBSD]]<br />
| <span style="color: green;">R14.1.0</span> <!-- R14.0.x branch actually --><br />
| [[PCLinuxOS Trinity Repository Installation Instructions|PCLinuxOS]]<br />
| <span style="color: orange;">R14.0.13</span><br />
|-<br />
| [[Mageia Trinity Repository Installation Instructions|Mageia]]<br />
| <span style="color: orange;">R14.0.13</span><br />
| [[Raspbian Trinity Repository Installation Instructions|Raspbian]]<br />
| <span style="color: green;">R14.1.0</span><br />
|-<br />
| [[Mandriva Trinity Repository Installation Instructions|Mandriva]]<br />
| <span style="color: red;">3.5.13.2</span><br />
| [[Slackware Trinity Installation Instructions|Slackware]]<br />
| <span style="color: green;">R14.1.0</span><br />
|}<br />
|}</onlyinclude></div>Blu256https://wiki.trinitydesktop.org/index.php?title=Icon_Sets&diff=3005Icon Sets2023-04-20T14:47:57Z<p>Blu256: /* Using Non-Trinity Icons with Trinity */ replace mention of Oxygen with something more generic</p>
<hr />
<div>==The Default Icon Sets==<br />
<br />
By default, Trinity ships with one icon set (Crystal SVG) in tdebase, five more (iKons, KDE-Classic, Kids, KDE-Locolor, Slick Icons) in tdeartwork, and one (Monochrome) in tdeaccessibility. Here's a quick comparison chart (using the largest folder icon available as a visual sample):<br />
<br />
{| class="wikitable"<br />
!Name<br />
!Creator<br />
!Largest Size<br />
!Sample<br />
!Notes<br />
|-<br />
|Crystal SVG<br />
|Everaldo Coelho<br />
|No max<br />
|style="text-align:center;" | [[File:CrystalSVGFolderIcon128.png]]<br />
|The KDE3 default icon set (and Trinity's as well, since we haven't replaced it). Infinitely resizable .svg icons.<br />
|-<br />
|iKons<br />
|Kristof Borrey<br />
|64 x 64<br />
|style="text-align:center;" | [[File:iKonsFolderIcon64.png]]<br />
|Most icons are only available at sizes up to 48 x 48.<br />
|-<br />
|KDE-Classic<br />
|Torsten Rahn<br />
|64 x 64<br />
|style="text-align:center;" | [[File:KDEClassicFolderIcon64.png]]<br />
|This was the default KDE3 icon set prior to the introduction of Crystal. Most icons are only available at sizes up to 48 x 48.<br />
|-<br />
|KDE-Locolor<br />
|???<br />
|32 x 32<br />
|style="text-align:center;" | [[File:KDELocolorFolderIcon32.png]]<br />
|Similar to KDE-Classic, but with fewer colours per icon.<br />
|-<br />
|Kids<br />
|Everaldo Coelho<br />
|64 x 64<br />
|style="text-align:center;" | [[File:KidsFolderIcon64.png]]<br />
|<br />
|-<br />
|Monochrome<br />
|Danny Allen<br />
|No max<br />
|style="text-align:center;" | [[File:MonoFolderIcon128.png]]<br />
|Black-and-white icon set for monochrome/low-colour displays. Infinitely resizable .svg icons.<br />
|-<br />
|Slick Icons<br />
|???<br />
|64 x 64<br />
|style="text-align:center;" | [[File:SlickFolderIcon64.png]]<br />
|<br />
|}<br />
<br />
==Using Non-Trinity Icons with Trinity==<br />
<br />
Go right ahead. Trinity should be able to use any icon theme suitable for X Windows desktop environments, including icon themes for KDE, the various custom icon themes created by Ubuntu, themes created for Gnome, etc.<br />
<br />
Once installed, additional icon themes should show up in the Control Center under <code>Appearance and Themes > Icons</code>.<br />
<br />
===OpenDesktop===<br />
If you don't like any of the sets your distribution makes available, the best place to look for additional ones is OpenDesktop and its child websites (like [https://store.kde.org KDE Store]). Icon sets for KDE will probably have the largest selection of icons for Trinity-specific applications like amaroK and Konqueror.<br />
<br />
There you can even find icon themes adapted with Trinity in mind. For example, <tt>francescobat</tt>'s extensive [https://www.trinity-look.org/p/1484013 Trinity Desktop Collections].<br />
<br />
===Custom icon themes===<br />
If you want to pick and choose individual icons, they can be in .png or .svg format. Microsoft Windows .ico files won't work, but you can convert them to .png by using [http://www.gimp.org/ appropriate software].<br />
<br />
If you want to create your own icons, you can use your preferred raster or vector editor. You could also have a look at the <tt>tdeiconedit</tt> application, found in the tdegraphics package.<br />
<br />
[[Category:Artwork]]</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Licenses&diff=3004Licenses2023-04-20T14:45:18Z<p>Blu256: -TODO, add "unofficial information" warning</p>
<hr />
<div>{{WarningBox|caption=Warning! Original research!|text=This page is solely based on original research by [[User:Blu256]]. It is not official information from the Trinity Desktop project. Additional verification might be needed for the information below.}}<br />
<br />
This page is intended to contain licensing information for the base components of TDE based on the information contained within them (TDEAboutData, LICENSE and COPYING files and source code headers). Click on the column headers to change sorting mode. Use 'Ctrl+F' to find something quickly.<br />
<br />
{|class="wikitable sortable" width="100%"<br />
! width="10%" | Component<br />
! width="10%" | Package<br />
! width="20%" | License<br />
! width="60%" | Notes<br />
|-<br />
| DrKonqi<br />
| {{TGW|tdebase}}<br />
| {{License BSD 2-clause}}, portions {{License LGPL2}}<br />
|<br />
|-<br />
| KAppFinder<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|-<br />
| Kate<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
| "''The Kate app/utils/interfaces and KWrite app are licensed under the LGPL VERSION 2.''" [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/src/branch/master/kate/README (source)]<br />
|-<br />
| KWrite<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
| "''The Kate app/utils/interfaces and KWrite app are licensed under the LGPL VERSION 2.''" [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/src/branch/master/kate/README (source)]<br />
|-<br />
| KCheckPass<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcminit<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_access<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_arts<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_background<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_bell<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_clock<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_colors<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_componentchooser<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_crypto<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2.1}} or later<br />
|<br />
|-<br />
| kcm_css<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_display<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_displayconfig<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_tdednssd<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_kurifilt<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_filetypes/keditfiletype<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_fonts<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_hwmanager<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdehwdevicetray<br />
| {{TGW|tdebase}}<br />
| {{License GPL3}} or later, portions {{License LGPL2}} or later<br />
|<br />
|-<br />
| kcm_iccconfig<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_icons<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_info<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_input<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_joystick<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KControl<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_kded<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_keys<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_kicker<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_knotify<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_konq<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_konqhtml<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_konsole<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| krdb<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_kthememanager<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_launch<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_locale<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_nic<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_performance<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_privacy<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2.1}} or later<br />
|<br />
|-<br />
| kcm_randr<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TDERandRTray<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_samba<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_screensaver<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_smartcard<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
| Not supported by CMake build system<br />
|-<br />
| kcm_smserver<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_spellchecking<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_style<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_taskbar<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_fontinst/tdefontinst/tdefontview/kctdeio_fonts<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_tdeio<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_tdm<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_usb<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_view1394<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_xinerama<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KDCOP<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| KDesktop<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License GPL2}} only, portions {{License LGPL2}}<br />
|<br />
|-<br />
| KDialog<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KFind<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KHelpCenter<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KHotKeys<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| Kicker<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| Klipper<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KMenuEdit<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KNetAttach<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| Konqueror<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License LGPL2}}<br />
|<br />
|-<br />
| Konsole<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KPager<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KPersonalizer<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kreadconfig/kwriteconfig<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| krootbacking<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| ksmserver<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| KSplash<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kstart<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| KSysGuard<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| KSysTrayCmd<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| KTip<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| KXkb/kcm_keyboard<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License MIT}}<br />
|<br />
|-<br />
| libkonq<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| kcm_nsplugins<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TDEDebugDialog<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeeject<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| tdeinit<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_about<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_cgi/kcm_cgi<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_filter<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| tdeio_finger<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_fish<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| tdeio_floppy<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_home<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_info<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_ldap<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| tdeio_mac<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_man<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| tdeio_media/kcm_media<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_nfs<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later, portions special Sun RPC license*<br />
| * This special Sun RPC license is now obsolete, [https://en.wikipedia.org/wiki/Sun_RPC Sun RPC] has been relicensed under {{License BSD 3-clause}}.<br />
|-<br />
| tdeio_nntp<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| tdeio_pop3<br />
| {{TGW|tdebase}}<br />
| {{License BSD 2-clause}}<br />
|<br />
|-<br />
| tdeio_remote<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_settings<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| tdeio_sftp<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_smb<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2.1}} or later*<br />
| * Confusingly enough, claims to be licensed under "''GNU General Public License [...] either version 2.1 [...] or (at your option) any later version.''", but there was no GNU GPL version 2.1<br />
|-<br />
| tdeio_smtp<br />
| {{TGW|tdebase}}<br />
| Mixed {{License BSD 2-clause}} and {{License GPL2}}*<br />
| * GPL-licensed files have special exception that allows them to be linked with any Qt version<br />
|-<br />
| tdeio_system<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_tar<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_thumbnail<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_trash<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later, portions {{License GPL2}}<br />
|<br />
|-<br />
| tdekbdledsync<br />
| {{TGW|tdebase}}<br />
| {{License GPL3}} or later<br />
|<br />
|-<br />
| tdepasswd<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| kcm_useraccount<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TDEPrint<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| TDESU<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| TDM/tdmlib<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License GPL3}} or later, portions {{License MIT}} variant (no advertising clause)<br />
|<br />
|-<br />
| tqt3integration<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TSAK<br />
| {{TGW|tdebase}}<br />
| {{License GPL3}} or later<br />
|<br />
|-<br />
| TWin<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License MIT}}<br />
|<br />
|-<br />
| Compton-TDE<br />
| {{TGW|tdebase}}<br />
| ???<br />
| License info missing. Source header says to look into LICENSE file but none such is found. Original Compton [https://github.com/chjj/compton/blob/master/LICENSE licensed] under {{License MIT}}.<br />
|-<br />
| <br />
|}</div>Blu256https://wiki.trinitydesktop.org/index.php?title=User:Blu256/Draft:Licenses&diff=3003User:Blu256/Draft:Licenses2023-04-20T14:43:01Z<p>Blu256: Blu256 moved page User:Blu256/Draft:Licenses to Licenses: Move from personal into main namespace</p>
<hr />
<div>#REDIRECT [[Licenses]]</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Licenses&diff=3002Licenses2023-04-20T14:43:01Z<p>Blu256: Blu256 moved page User:Blu256/Draft:Licenses to Licenses: Move from personal into main namespace</p>
<hr />
<div>{{WIP|blu256}}<br />
<br />
This page is intended to contain licensing information for the base components of TDE based on the information contained within them (TDEAboutData, LICENSE and COPYING files and source code headers). Click on the column headers to change sorting mode. Use 'Ctrl+F' to find something quickly.<br />
<br />
{|class="wikitable sortable" width="100%"<br />
! width="10%" | Component<br />
! width="10%" | Package<br />
! width="20%" | License<br />
! width="60%" | Notes<br />
|-<br />
| DrKonqi<br />
| {{TGW|tdebase}}<br />
| {{License BSD 2-clause}}, portions {{License LGPL2}}<br />
|<br />
|-<br />
| KAppFinder<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|-<br />
| Kate<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
| "''The Kate app/utils/interfaces and KWrite app are licensed under the LGPL VERSION 2.''" [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/src/branch/master/kate/README (source)]<br />
|-<br />
| KWrite<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
| "''The Kate app/utils/interfaces and KWrite app are licensed under the LGPL VERSION 2.''" [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/src/branch/master/kate/README (source)]<br />
|-<br />
| KCheckPass<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcminit<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_access<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_arts<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_background<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_bell<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_clock<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_colors<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_componentchooser<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_crypto<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2.1}} or later<br />
|<br />
|-<br />
| kcm_css<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_display<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_displayconfig<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_tdednssd<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_kurifilt<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_filetypes/keditfiletype<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_fonts<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_hwmanager<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdehwdevicetray<br />
| {{TGW|tdebase}}<br />
| {{License GPL3}} or later, portions {{License LGPL2}} or later<br />
|<br />
|-<br />
| kcm_iccconfig<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_icons<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_info<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_input<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_joystick<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KControl<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_kded<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_keys<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_kicker<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_knotify<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_konq<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_konqhtml<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_konsole<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| krdb<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_kthememanager<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_launch<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_locale<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_nic<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_performance<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_privacy<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2.1}} or later<br />
|<br />
|-<br />
| kcm_randr<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TDERandRTray<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_samba<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_screensaver<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_smartcard<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
| Not supported by CMake build system<br />
|-<br />
| kcm_smserver<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_spellchecking<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_style<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_taskbar<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_fontinst/tdefontinst/tdefontview/kctdeio_fonts<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_tdeio<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_tdm<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_usb<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_view1394<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_xinerama<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KDCOP<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| KDesktop<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License GPL2}} only, portions {{License LGPL2}}<br />
|<br />
|-<br />
| KDialog<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KFind<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KHelpCenter<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KHotKeys<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| Kicker<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| Klipper<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KMenuEdit<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KNetAttach<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| Konqueror<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License LGPL2}}<br />
|<br />
|-<br />
| Konsole<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KPager<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KPersonalizer<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kreadconfig/kwriteconfig<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| krootbacking<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| ksmserver<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| KSplash<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kstart<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| KSysGuard<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| KSysTrayCmd<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| KTip<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| KXkb/kcm_keyboard<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License MIT}}<br />
|<br />
|-<br />
| libkonq<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| kcm_nsplugins<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TDEDebugDialog<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeeject<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| tdeinit<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_about<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_cgi/kcm_cgi<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_filter<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| tdeio_finger<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_fish<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| tdeio_floppy<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_home<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_info<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_ldap<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| tdeio_mac<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_man<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| tdeio_media/kcm_media<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_nfs<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later, portions special Sun RPC license*<br />
| * This special Sun RPC license is now obsolete, [https://en.wikipedia.org/wiki/Sun_RPC Sun RPC] has been relicensed under {{License BSD 3-clause}}.<br />
|-<br />
| tdeio_nntp<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| tdeio_pop3<br />
| {{TGW|tdebase}}<br />
| {{License BSD 2-clause}}<br />
|<br />
|-<br />
| tdeio_remote<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_settings<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| tdeio_sftp<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_smb<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2.1}} or later*<br />
| * Confusingly enough, claims to be licensed under "''GNU General Public License [...] either version 2.1 [...] or (at your option) any later version.''", but there was no GNU GPL version 2.1<br />
|-<br />
| tdeio_smtp<br />
| {{TGW|tdebase}}<br />
| Mixed {{License BSD 2-clause}} and {{License GPL2}}*<br />
| * GPL-licensed files have special exception that allows them to be linked with any Qt version<br />
|-<br />
| tdeio_system<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_tar<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_thumbnail<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_trash<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later, portions {{License GPL2}}<br />
|<br />
|-<br />
| tdekbdledsync<br />
| {{TGW|tdebase}}<br />
| {{License GPL3}} or later<br />
|<br />
|-<br />
| tdepasswd<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| kcm_useraccount<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TDEPrint<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| TDESU<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| TDM/tdmlib<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License GPL3}} or later, portions {{License MIT}} variant (no advertising clause)<br />
|<br />
|-<br />
| tqt3integration<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TSAK<br />
| {{TGW|tdebase}}<br />
| {{License GPL3}} or later<br />
|<br />
|-<br />
| TWin<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License MIT}}<br />
|<br />
|-<br />
| Compton-TDE<br />
| {{TGW|tdebase}}<br />
| ???<br />
| License info missing. Source header says to look into LICENSE file but none such is found. Original Compton [https://github.com/chjj/compton/blob/master/LICENSE licensed] under {{License MIT}}.<br />
|-<br />
| <br />
|}</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Licenses&diff=2942Licenses2023-03-25T20:54:49Z<p>Blu256: typo</p>
<hr />
<div>{{WIP|blu256}}<br />
<br />
This page is intended to contain licensing information for the base components of TDE based on the information contained within them (TDEAboutData, LICENSE and COPYING files and source code headers). Click on the column headers to change sorting mode. Use 'Ctrl+F' to find something quickly.<br />
<br />
{|class="wikitable sortable" width="100%"<br />
! width="10%" | Component<br />
! width="10%" | Package<br />
! width="20%" | License<br />
! width="60%" | Notes<br />
|-<br />
| DrKonqi<br />
| {{TGW|tdebase}}<br />
| {{License BSD 2-clause}}, portions {{License LGPL2}}<br />
|<br />
|-<br />
| KAppFinder<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|-<br />
| Kate<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
| "''The Kate app/utils/interfaces and KWrite app are licensed under the LGPL VERSION 2.''" [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/src/branch/master/kate/README (source)]<br />
|-<br />
| KWrite<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
| "''The Kate app/utils/interfaces and KWrite app are licensed under the LGPL VERSION 2.''" [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/src/branch/master/kate/README (source)]<br />
|-<br />
| KCheckPass<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcminit<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_access<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_arts<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_background<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_bell<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_clock<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_colors<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_componentchooser<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_crypto<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2.1}} or later<br />
|<br />
|-<br />
| kcm_css<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_display<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_displayconfig<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_tdednssd<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_kurifilt<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_filetypes/keditfiletype<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_fonts<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_hwmanager<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdehwdevicetray<br />
| {{TGW|tdebase}}<br />
| {{License GPL3}} or later, portions {{License LGPL2}} or later<br />
|<br />
|-<br />
| kcm_iccconfig<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_icons<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_info<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_input<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_joystick<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KControl<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_kded<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_keys<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_kicker<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_knotify<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_konq<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_konqhtml<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_konsole<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| krdb<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_kthememanager<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_launch<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_locale<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_nic<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_performance<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_privacy<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2.1}} or later<br />
|<br />
|-<br />
| kcm_randr<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TDERandRTray<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_samba<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_screensaver<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_smartcard<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
| Not supported by CMake build system<br />
|-<br />
| kcm_smserver<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_spellchecking<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_style<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_taskbar<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_fontinst/tdefontinst/tdefontview/kctdeio_fonts<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_tdeio<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_tdm<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_usb<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_view1394<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_xinerama<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KDCOP<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| KDesktop<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License GPL2}} only, portions {{License LGPL2}}<br />
|<br />
|-<br />
| KDialog<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KFind<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KHelpCenter<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KHotKeys<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| Kicker<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| Klipper<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KMenuEdit<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KNetAttach<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| Konqueror<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License LGPL2}}<br />
|<br />
|-<br />
| Konsole<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KPager<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KPersonalizer<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kreadconfig/kwriteconfig<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| krootbacking<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| ksmserver<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| KSplash<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kstart<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| KSysGuard<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| KSysTrayCmd<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| KTip<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| KXkb/kcm_keyboard<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License MIT}}<br />
|<br />
|-<br />
| libkonq<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| kcm_nsplugins<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TDEDebugDialog<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeeject<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| tdeinit<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_about<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_cgi/kcm_cgi<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_filter<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| tdeio_finger<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_fish<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| tdeio_floppy<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_home<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_info<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_ldap<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| tdeio_mac<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_man<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| tdeio_media/kcm_media<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_nfs<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later, portions special Sun RPC license*<br />
| * This special Sun RPC license is now obsolete, [https://en.wikipedia.org/wiki/Sun_RPC Sun RPC] has been relicensed under {{License BSD 3-clause}}.<br />
|-<br />
| tdeio_nntp<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| tdeio_pop3<br />
| {{TGW|tdebase}}<br />
| {{License BSD 2-clause}}<br />
|<br />
|-<br />
| tdeio_remote<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_settings<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| tdeio_sftp<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_smb<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2.1}} or later*<br />
| * Confusingly enough, claims to be licensed under "''GNU General Public License [...] either version 2.1 [...] or (at your option) any later version.''", but there was no GNU GPL version 2.1<br />
|-<br />
| tdeio_smtp<br />
| {{TGW|tdebase}}<br />
| Mixed {{License BSD 2-clause}} and {{License GPL2}}*<br />
| * GPL-licensed files have special exception that allows them to be linked with any Qt version<br />
|-<br />
| tdeio_system<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_tar<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_thumbnail<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_trash<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later, portions {{License GPL2}}<br />
|<br />
|-<br />
| tdekbdledsync<br />
| {{TGW|tdebase}}<br />
| {{License GPL3}} or later<br />
|<br />
|-<br />
| tdepasswd<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| kcm_useraccount<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TDEPrint<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| TDESU<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| TDM/tdmlib<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License GPL3}} or later, portions {{License MIT}} variant (no advertising clause)<br />
|<br />
|-<br />
| tqt3integration<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TSAK<br />
| {{TGW|tdebase}}<br />
| {{License GPL3}} or later<br />
|<br />
|-<br />
| TWin<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License MIT}}<br />
|<br />
|-<br />
| Compton-TDE<br />
| {{TGW|tdebase}}<br />
| ???<br />
| License info missing. Source header says to look into LICENSE file but none such is found. Original Compton [https://github.com/chjj/compton/blob/master/LICENSE licensed] under {{License MIT}}.<br />
|-<br />
| <br />
|}</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Licenses&diff=2941Licenses2023-03-25T20:54:14Z<p>Blu256: typo</p>
<hr />
<div>{{WIP|blu256}}<br />
<br />
This page is intended to contain licensing information for the base components of TDE based on the information contained within them (TDEAboutData, LICENSE and COPYING files and source code headers). Click on the column headers to change sorting mode. Use 'Ctrl+F' to find something quickly.<br />
<br />
{|class="wikitable sortable" width="100%"<br />
! width="10%" | Component<br />
! width="10%" | Package<br />
! width="20%" | License<br />
! width="60%" | Notes<br />
|-<br />
| DrKonqi<br />
| {{TGW|tdebase}}<br />
| {{License BSD 2-clause}}, portions {{License LGPL2}}<br />
|<br />
|-<br />
| KAppFinder<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|-<br />
| Kate<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
| "''The Kate app/utils/interfaces and KWrite app are licensed under the LGPL VERSION 2.''" [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/src/branch/master/kate/README (source)]<br />
|-<br />
| KWrite<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
| "''The Kate app/utils/interfaces and KWrite app are licensed under the LGPL VERSION 2.''" [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/src/branch/master/kate/README (source)]<br />
|-<br />
| KCheckPass<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcminit<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_access<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_arts<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_background<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_bell<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_clock<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_colors<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_componentchooser<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_crypto<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2.1}} or later<br />
|<br />
|-<br />
| kcm_css<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_display<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_displayconfig<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_tdednssd<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_kurifilt<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_filetypes/keditfiletype<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_fonts<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_hwmanager<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdehwdevicetray<br />
| {{TGW|tdebase}}<br />
| {{License GPL3}} or later, portions {{License LGPL2}} or later<br />
|<br />
|-<br />
| kcm_iccconfig<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_icons<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_info<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_input<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_joystick<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KControl<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_kded<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_keys<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_kicker<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_knotify<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_konq<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_konqhtml<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_konsole<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| krdb<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_kthememanager<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_launch<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_locale<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_nic<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_performance<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_privacy<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2.1}} or later<br />
|<br />
|-<br />
| kcm_randr<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TDERandRTray<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_samba<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_screensaver<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_smartcard<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
| Not supported by CMake build system<br />
|-<br />
| kcm_smserver<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_spellchecking<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_style<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_taskbar<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_fontinst/tdefontinst/tdefontview/kctdeio_fonts<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_tdeio<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_tdm<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_usb<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_view1394<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_xinerama<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KDCOP<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| KDesktop<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License GPL2}} only, portions {{License LGPL2}}<br />
|<br />
|-<br />
| KDialog<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KFind<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KHelpCenter<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KHotKeys<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| Kicker<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| Klipper<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KMenuEdit<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KNetAttach<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| Konqueror<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License LGPL2}}<br />
|<br />
|-<br />
| Konsole<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KPager<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KPersonalizer<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kreadconfig/kwriteconfig<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| krootbacking<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| ksmserver<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| KSplash<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kstart<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| KSysGuard<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| KSysTrayCmd<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| KTip<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| KXkb/kcm_keyboard<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License MIT}}<br />
|<br />
|-<br />
| libkonq<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| kcm_nsplugins<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TDEDebugDialog<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeeject<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| tdeinit<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_about<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_cgi/kcm_cgi<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_filter<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| tdeio_finger<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_fish<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| tdeio_floppy<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_home<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_info<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_ldap<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| tdeio_mac<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_man<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| tdeio_media/kcm_media<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_nfs<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later, portions special Sun RPC license*<br />
| * This special Sun RPC license is now obsolete, [https://en.wikipedia.org/wiki/Sun_RPC Sun RPC] has been relicensed under {{License BSD 3-Clause}}.<br />
|-<br />
| tdeio_nntp<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| tdeio_pop3<br />
| {{TGW|tdebase}}<br />
| {{License BSD 2-clause}}<br />
|<br />
|-<br />
| tdeio_remote<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_settings<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| tdeio_sftp<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_smb<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2.1}} or later*<br />
| * Confusingly enough, claims to be licensed under "''GNU General Public License [...] either version 2.1 [...] or (at your option) any later version.''", but there was no GNU GPL version 2.1<br />
|-<br />
| tdeio_smtp<br />
| {{TGW|tdebase}}<br />
| Mixed {{License BSD 2-clause}} and {{License GPL2}}*<br />
| * GPL-licensed files have special exception that allows them to be linked with any Qt version<br />
|-<br />
| tdeio_system<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_tar<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_thumbnail<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_trash<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later, portions {{License GPL2}}<br />
|<br />
|-<br />
| tdekbdledsync<br />
| {{TGW|tdebase}}<br />
| {{License GPL3}} or later<br />
|<br />
|-<br />
| tdepasswd<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| kcm_useraccount<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TDEPrint<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| TDESU<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| TDM/tdmlib<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License GPL3}} or later, portions {{License MIT}} variant (no advertising clause)<br />
|<br />
|-<br />
| tqt3integration<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TSAK<br />
| {{TGW|tdebase}}<br />
| {{License GPL3}} or later<br />
|<br />
|-<br />
| TWin<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License MIT}}<br />
|<br />
|-<br />
| Compton-TDE<br />
| {{TGW|tdebase}}<br />
| ???<br />
| License info missing. Source header says to look into LICENSE file but none such is found. Original Compton [https://github.com/chjj/compton/blob/master/LICENSE licensed] under {{License MIT}}.<br />
|-<br />
| <br />
|}</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Licenses&diff=2940Licenses2023-03-25T20:52:52Z<p>Blu256: Added info about licenses of code in tdebaes</p>
<hr />
<div>{{WIP|blu256}}<br />
<br />
This page is intended to contain licensing information for the base components of TDE based on the information contained within them (TDEAboutData, LICENSE and COPYING files and source code headers). Click on the column headers to change sorting mode. Use 'Ctrl+F' to find something quickly.<br />
<br />
{|class="wikitable sortable" width="100%"<br />
! width="10%" | Component<br />
! width="10%" | Package<br />
! width="20%" | License<br />
! width="60%" | Notes<br />
|-<br />
| DrKonqi<br />
| {{TGW|tdebase}}<br />
| {{License BSD 2-clause}}, portions {{License LGPL2}}<br />
|<br />
|-<br />
| KAppFinder<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|-<br />
| Kate<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
| "''The Kate app/utils/interfaces and KWrite app are licensed under the LGPL VERSION 2.''" [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/src/branch/master/kate/README (source)]<br />
|-<br />
| KWrite<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
| "''The Kate app/utils/interfaces and KWrite app are licensed under the LGPL VERSION 2.''" [https://mirror.git.trinitydesktop.org/gitea/TDE/tdebase/src/branch/master/kate/README (source)]<br />
|-<br />
| KCheckPass<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcminit<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_access<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_arts<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_background<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_bell<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_clock<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_colors<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_componentchooser<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_crypto<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2.1}} or later<br />
|<br />
|-<br />
| kcm_css<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_display<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_displayconfig<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_tdednssd<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_kurifilt<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_filetypes/keditfiletype<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_fonts<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_hwmanager<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdehwdevicetray<br />
| {{TGW|tdebase}}<br />
| {{License GPL3}} or later, portions {{License LGPL2}} or later<br />
|<br />
|-<br />
| kcm_iccconfig<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_icons<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_info<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_input<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_joystick<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KControl<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_kded<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_keys<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_kicker<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_knotify<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_konq<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_konqhtml<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_konsole<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| krdb<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_kthememanager<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_launch<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_locale<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_nic<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_performance<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_privacy<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2.1}} or later<br />
|<br />
|-<br />
| kcm_randr<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TDERandRTray<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_samba<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_screensaver<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_smartcard<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
| Not supported by CMake build system<br />
|-<br />
| kcm_smserver<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_spellchecking<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_style<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kcm_taskbar<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_fontinst/tdefontinst/tdefontview/kctdeio_fonts<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_tdeio<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_tdm<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_usb<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_view1394<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kcm_xinerama<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KDCOP<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| KDesktop<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License GPL2}} only, portions {{License LGPL2}}<br />
|<br />
|-<br />
| KDialog<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KFind<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KHelpCenter<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KHotKeys<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| Kicker<br />
| {{TGW|tdebase}}<br />
| {{Licence MIT}}, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| Klipper<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KMenuEdit<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KNetAttach<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| Konqueror<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License LGPL2}}<br />
|<br />
|-<br />
| Konsole<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KPager<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| KPersonalizer<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| kreadconfig/kwriteconfig<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| krootbacking<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| ksmserver<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| KSplash<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| kstart<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| KSysGuard<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| KSysTrayCmd<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| KTip<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| KXkb/kcm_keyboard<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License MIT}}<br />
|<br />
|-<br />
| libkonq<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| kcm_nsplugins<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TDEDebugDialog<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeeject<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| tdeinit<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_about<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_cgi/kcm_cgi<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_filter<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| tdeio_finger<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_fish<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}}<br />
|<br />
|-<br />
| tdeio_floppy<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_home<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_info<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_ldap<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| tdeio_mac<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_man<br />
| {{TGW|tdebase}}<br />
| {{License MIT}}<br />
|<br />
|-<br />
| tdeio_media/kcm_media<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later, portions {{License GPL2}} or later<br />
|<br />
|-<br />
| tdeio_nfs<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later, portions special Sun RPC license*<br />
| * This special Sun RPC license is now obsolete, [https://en.wikipedia.org/wiki/Sun_RPC Sun RPC] has been relicensed under {{License BSD 3-Clause}}.<br />
|-<br />
| tdeio_nntp<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| tdeio_pop3<br />
| {{TGW|tdebase}}<br />
| {{License BSD 2-clause}}<br />
|<br />
|-<br />
| tdeio_remote<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_settings<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| tdeio_sftp<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_smb<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2.1}} or later*<br />
| * Confusingly enough, claims to be licensed under "''GNU General Public License [...] either version 2.1 [...] or (at your option) any later version.''", but there was no GNU GPL version 2.1<br />
|-<br />
| tdeio_smtp<br />
| {{TGW|tdebase}}<br />
| Mixed {{License BSD 2-clause}} and {{License GPL2}}*<br />
| * GPL-licensed files have special exception that allows them to be linked with any Qt version<br />
|-<br />
| tdeio_system<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_tar<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_thumbnail<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later<br />
|<br />
|-<br />
| tdeio_trash<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}} or later, portions {{License GPL2}}<br />
|<br />
|-<br />
| tdekbdledsync<br />
| {{TGW|tdebase}}<br />
| {{License GPL3}} or later<br />
|<br />
|-<br />
| tdepasswd<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| kcm_useraccount<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TDEPrint<br />
| {{TGW|tdebase}}<br />
| {{License LGPL2}}<br />
|<br />
|-<br />
| TDESU<br />
| {{TGW|tdebase}}<br />
| {{License Artistic 1.0}}<br />
|<br />
|-<br />
| TDM/tdmlib<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License GPL3}} or later, portions {{License MIT}} variant (no advertising clause)<br />
|<br />
|-<br />
| tqt3integration<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later<br />
|<br />
|-<br />
| TSAK<br />
| {{TGW|tdebase}}<br />
| {{License GPL3}} or later<br />
|<br />
|-<br />
| TWin<br />
| {{TGW|tdebase}}<br />
| {{License GPL2}} or later, portions {{License MIT}}<br />
|<br />
|-<br />
| Compton-TDE<br />
| {{TGW|tdebase}}<br />
| ???<br />
| License info missing. Source header says to look into LICENSE file but none such is found. Original Compton [https://github.com/chjj/compton/blob/master/LICENSE licensed] under {{License MIT}}.<br />
|-<br />
| <br />
|}</div>Blu256https://wiki.trinitydesktop.org/index.php?title=Template:License_MIT&diff=2939Template:License MIT2023-03-25T19:47:27Z<p>Blu256: Add active label template for MIT License</p>
<hr />
<div>This template returns an active label for the MIT License: <onlyinclude>[https://opensource.org/license/mit/ MIT License]</onlyinclude></div>Blu256https://wiki.trinitydesktop.org/index.php?title=Template:License_Artistic_1.0&diff=2938Template:License Artistic 1.02023-03-25T19:33:15Z<p>Blu256: Add active label template for Artistic 1.0</p>
<hr />
<div>This template returns an active label for the Artistic License version 1.0: <onlyinclude>[https://opensource.org/license/artistic-1-0/ Artistic License 1.0]</onlyinclude></div>Blu256https://wiki.trinitydesktop.org/index.php?title=Template:License_LGPL2.1&diff=2937Template:License LGPL2.12023-03-25T18:46:40Z<p>Blu256: Add active label template for GNU Lesser GPL version 2.1</p>
<hr />
<div>This template returns an active label for the GNU Lesser General Public License version 2.1: <onlyinclude>[https://opensource.org/license/lgpl-2-1/ LGPL 2.1]</onlyinclude></div>Blu256https://wiki.trinitydesktop.org/index.php?title=Template:TGW&diff=2936Template:TGW2023-03-25T18:18:14Z<p>Blu256: Add TGW template</p>
<hr />
<div><noinclude>Provides a shortcut for a link to a TDE repository in the Trinity Gitea Workspace (TGW).<br />
<br />
==Example:==<br />
<br />
<syntaxhighlight lang="html+handlebars">{{TGW|tdebase}}</syntaxhighlight><br />
<br />
'''Result:''' {{TGW|tdebase}}<br />
</noinclude><br />
<includeonly>[https://mirror.git.trinitydesktop.org/gitea/TDE/{{{1}}} {{{1}}}]</includeonly></div>Blu256https://wiki.trinitydesktop.org/index.php?title=Template:License_LGPL3&diff=2935Template:License LGPL32023-03-25T18:12:53Z<p>Blu256: Add active label template for GNU LGPL 3.0</p>
<hr />
<div>This template returns an active label for the GNU Lesser General Public License version 3.0: <onlyinclude>[https://opensource.org/license/lgpl-3-0/ LGPL 3.0]</onlyinclude></div>Blu256