Compatibility options and currency signs have been added to #TDE kxkb under the "Miscellaneous options" section. See the screenshot below for a before/after comparison.

Updated PSB/PTB packages will soon be available on the #Trinity mirrors.

#TDE applications sometimes hanged when visualizing some specific Unicode characters using specific fonts. This was due to a bug in TQt related to glyphs rendering. The bug has been fixed and will be part of the upcoming R14.1.6 release. See https://mirror.git.trinitydesktop.org/gitea/tde/tqt/issues/270 for more info.

Updated PSB/PTB packages will soon be available on the #Trinity mirrors.

TQTextEngine::shape() hangs up on some characters

## Basic information - TDE version: R14.2.0 (master) - Distribution: Gentoo - Hardware: amd64 ## Description [`TQTextEngine::shape()`](https://mirror.git.trinitydesktop.org/gitea/TDE/tqt/src/commit/6ec5d7ec4ff7cfbb52866b28c8b36e5ea3ee31d1/src/kernel/tqtextengine_unix.cpp#L98) hangs up on some characters in particular `ई (U+0908) DEVANAGARI LETTER II`. This is likely a cause for https://mirror.git.trinitydesktop.org/gitea/TDE/tdeutils/issues/93 . ## Steps to reproduce 1. Build: ```cpp // Build with g++ $(pkg-config --cflags --libs tqt-mt) foo.cpp #include <tqapplication.h> #include <tqlabel.h> int main(int argc, char *argv[]) { const unsigned char devanagari_letter_ii_u8[] = {0xE0, 0xA4, 0x88, 0x00}; TQApplication app(argc, argv); TQLabel l(TQString::fromUtf8((const char*)devanagari_letter_ii_u8), 0); app.setMainWidget(&l); l.show(); return app.exec(); } ``` 2. Run it 3. It hangs up ## Screenshots <details> <summary>(gdb) bt</summary> ```d #0 0x00007ffff70b4e58 in __memmove_sse2_unaligned_erms () from /lib64/libc.so.6 #1 0x00007ffff78fb497 in memcpy (__dest=0x555555796378, __src=<optimized out>, __len=<optimized out>) at /usr/include/bits/string_fortified.h:29 #2 TQTextEngine::reallocate (this=0x5555556302b0, totalGlyphs=297872) at kernel/tqtextengine.cpp:949 #3 0x00007ffff78fc281 in TQTextEngine::ensureSpace (this=this@entry=0x5555556302b0, nGlyphs=<optimized out>) at kernel/tqtextengine_p.h:332 #4 0x00007ffff78fb6ca in TQTextEngine::shape (this=0x5555556302b0, item=0) at kernel/tqtextengine_unix.cpp:99 #5 0x00007ffff78f92b5 in TQTextLayout::currentItem (this=this@entry=0x7fffffffc698) at kernel/tqtextlayout.cpp:324 #6 0x00007ffff788c5fa in qt_format_text (font=..., _r=..., tf=134226497, str="ई", len=len@entry=1, brect=brect@entry=0x7fffffffc810, tabstops=64, tabarray=0x0, tabarraylen=0, painter=0x0) at kernel/tqpainter.cpp:2893 #7 0x00007ffff7850f21 in TQFontMetrics::boundingRect (this=this@entry=0x7fffffffc8e0, x=x@entry=0, y=y@entry=0, w=w@entry=2000, h=h@entry=2000, flgs=<optimized out>, str="ई", len=1, tabstops=0, tabarray=0x0, intern=0x0) at kernel/tqfont.cpp:2480 #8 0x00007ffff7932b8e in TQLabel::sizeForWidth (this=this@entry=0x7fffffffcaf0, w=2000, w@entry=-1) at widgets/tqlabel.h:84 #9 0x00007ffff7932dd7 in TQLabel::minimumSizeHint (this=0x7fffffffcaf0) at widgets/tqlabel.cpp:641 #10 0x00007ffff7932ef9 in TQLabel::sizeHint (this=0x7fffffffcaf0) at widgets/tqlabel.cpp:626 #11 0x00007ffff7931bc2 in TQLabel::updateLabel (this=this@entry=0x7fffffffcaf0, oldSizeHint=oldSizeHint@entry=...) at widgets/tqlabel.cpp:863 #12 0x00007ffff793243d in TQLabel::setText (this=this@entry=0x7fffffffcaf0, text="ई") at widgets/tqlabel.cpp:316 #13 0x00007ffff79325a9 in TQLabel::TQLabel (this=0x7fffffffcaf0, text="ई", parent=<optimized out>, name=<optimized out>, f=<optimized out>) at widgets/tqlabel.cpp:175 #14 0x00005555555552fd in main (argc=1, argv=0x7fffffffcd78) at label.cpp:8 ``` </details> <details> <summary>(gdb) bt full</summary> ```d #0 0x00007ffff70b4e58 in __memmove_sse2_unaligned_erms () from /lib64/libc.so.6 No symbol table info available. #1 0x00007ffff78fb497 in memcpy (__dest=0x555555796378, __src=<optimized out>, __len=<optimized out>) at /usr/include/bits/string_fortified.h:29 No locals. #2 TQTextEngine::reallocate (this=0x5555556302b0, totalGlyphs=297872) at kernel/tqtextengine.cpp:949 new_num_glyphs = 297872 space_charAttributes = 1 space_logClusters = 1 space_glyphs = 148936 space_advances = 148936 space_offsets = 148936 space_glyphAttributes = 74468 newAllocated = 521278 newMemory = 0x555555796370 nm = 0x555555796378 #3 0x00007ffff78fc281 in TQTextEngine::ensureSpace (this=this@entry=0x5555556302b0, nGlyphs=<optimized out>) at kernel/tqtextengine_p.h:332 No locals. #4 0x00007ffff78fb6ca in TQTextEngine::shape (this=0x5555556302b0, item=0) at kernel/tqtextengine_unix.cpp:99 shaper_item = {script = 13, string = 0x5555556302b8, from = 0, length = 1, font = 0x5555556a7a20, glyphs = 0x7ffff4a65020, advances = 0x7ffff4b87e20, offsets = 0x7ffff4caac20, attributes = 0x7ffff4dcda20, num_glyphs = 297858, log_clusters = 0x7ffff4a65018, flags = 0, has_positioning = false} __PRETTY_FUNCTION__ = "void TQTextEngine::shape(int) const" si = @0x5555555d8ed8: {position = 0, analysis = {script = 13, bidiLevel = 0, override = 0, reserved = 0}, isSpace = 0, isTab = 0, isObject = 0, hasPositioning = 0, complex = 0, private_use = 0, reserved = 0, descent = 5, ascent = 12, width = -1, x = 0, y = 0, num_glyphs = 0, glyph_data_offset = 0, fontEngine = 0x5555556a7a20} script = <optimized out> advances = <optimized out> end = <optimized out> #5 0x00007ffff78f92b5 in TQTextLayout::currentItem (this=this@entry=0x7fffffffc698) at kernel/tqtextlayout.cpp:324 No locals. #6 0x00007ffff788c5fa in qt_format_text (font=..., _r=..., tf=134226497, str="ई", len=len@entry=1, brect=brect@entry=0x7fffffffc810, tabstops=64, tabarray=0x0, tabarraylen=0, painter=0x0) at kernel/tqpainter.cpp:2893 ti = {item = 1432420472, engine = 0x0} ascent = 0 linesep = false descent = 0 lineLeft = 2312 lineRight = 1432420472 lineWidth = <optimized out> leading = 1 asc = 13 desc = 3 r = {x1 = 0, y1 = 0, x2 = 1999, y2 = 1999} dontclip = false wordbreak = <optimized out> singleline = <optimized out> showprefix = <optimized out> noaccel = false isRightToLeft = <optimized out> expandtabs = true maxUnderlines = <optimized out> numUnderlines = 0 underlinePositionStack = {0, 0, 1999, 1999, 1432420472, 21845, 1431758496, 21845, 1432584064, 21845, 0, 0, 56, 21845, -14192, 32767, 91, 0, 1432602432, 21845, 0, 0, 1, 0, -14192, 32767, -142484349, 32767, 1432590704, 21845, -14224, 32767} underlinePositions = 0x7fffffffc6f0 fnt = {d = 0x5555556658d0} fm = {d = 0x5555556658d0, painter = 0x0, fscript = 56} text = "ई" chr = <optimized out> end = <optimized out> haveLineSep = <optimized out> height = 0 left = 2000 right = 0 textLayout = {d = 0x5555556302b0} rb = 2 lb = 1 yoff = <optimized out> #7 0x00007ffff7850f21 in TQFontMetrics::boundingRect (this=this@entry=0x7fffffffc8e0, x=x@entry=0, y=y@entry=0, w=w@entry=2000, h=h@entry=2000, flgs=<optimized out>, str="ई", len=1, tabstops=0, tabarray=0x0, intern=0x0) at kernel/tqfont.cpp:2480 tabarraylen = 0 rb = {x1 = 0, y1 = 0, x2 = -1, y2 = -1} r = {x1 = 0, y1 = 0, x2 = 1999, y2 = 1999} --Type <RET> for more, q to quit, c to continue without paging-- #8 0x00007ffff7932b8e in TQLabel::sizeForWidth (this=this@entry=0x7fffffffcaf0, w=2000, w@entry=-1) at widgets/tqlabel.h:84 tryWidth = <optimized out> br = <optimized out> pix = 0x0 pic = <optimized out> mov = <optimized out> hextra = 0 vextra = 0 fm = {d = 0x55555557bcc0, painter = 0x0, fscript = 56} xw = 8 wid = <optimized out> hei = <optimized out> #9 0x00007ffff7932dd7 in TQLabel::minimumSizeHint (this=0x7fffffffcaf0) at widgets/tqlabel.cpp:641 sz = <optimized out> #10 0x00007ffff7932ef9 in TQLabel::sizeHint (this=0x7fffffffcaf0) at widgets/tqlabel.cpp:626 No locals. #11 0x00007ffff7931bc2 in TQLabel::updateLabel (this=this@entry=0x7fffffffcaf0, oldSizeHint=oldSizeHint@entry=...) at widgets/tqlabel.cpp:863 policy = <optimized out> wordBreak = <optimized out> #12 0x00007ffff793243d in TQLabel::setText (this=this@entry=0x7fffffffcaf0, text="ई") at widgets/tqlabel.cpp:316 osh = {wd = 3, ht = 17} hadRichtext = false useRichText = <optimized out> #13 0x00007ffff79325a9 in TQLabel::TQLabel (this=0x7fffffffcaf0, text="ई", parent=<optimized out>, name=<optimized out>, f=<optimized out>) at widgets/tqlabel.cpp:175 No locals. #14 0x00005555555552fd in main (argc=1, argv=0x7fffffffcd78) at label.cpp:8 devanagari_letter_ii_u8 = "ई" app = {<TQObject> = {<TQt> = {<No data fields>}, _vptr.TQObject = 0x7ffff7d33f08 <vtable for TQApplication+16>, static metaObj = 0x55555556c970, isSignal = 0, isWidget = 0, pendTimer = 0, blockSig = 0, wasDeleted = 0, isTree = 1, objname = 0x555555601d20 "a.out", parentObj = 0x0, childObjects = 0x555555601840, connections = 0x0, senderObjects = 0x0, eventFilters = 0x0, postedEvents = 0x555555601920, d = 0x5555555727f0}, static metaObj = 0x55555562c5a0, app_argc = 1, app_argv = 0x7fffffffcd78, quit_now = false, quit_code = 0, translators = 0x0, session_manager = 0x55555560f640, session_id = "10d0dd626c000177377907100000035851546", is_session_restored = false} l = {<TQFrame> = {<TQWidget> = {<TQObject> = {<TQt> = {<No data fields>}, _vptr.TQObject = 0x7ffff7d40188 <vtable for TQLabel+16>, static metaObj = 0x55555556c970, isSignal = 0, isWidget = 1, pendTimer = 0, blockSig = 0, wasDeleted = 0, isTree = 1, objname = 0x0, parentObj = 0x0, childObjects = 0x0, connections = 0x0, senderObjects = 0x0, eventFilters = 0x0, postedEvents = 0x555555614140, d = 0x555555610c50}, <TQPaintDevice> = { _vptr.TQPaintDevice = 0x7ffff7d40598 <vtable for TQLabel+1056>, hd = 94371842, rendhd = 93824992997728, devFlags = 1, painters = 0, static x_appdisplay = 0x555555579920, static x_appscreen = 0, static x_appdepth = 24, static x_appcells = 256, static x_approotwindow = 886, static x_appcolormap = 32, static x_appdefcolormap = true, static x_appvisual = 0x5555555869e0, static x_appdefvisual = true, static x_appdepth_arr = 0x555555576610, static x_appcells_arr = 0x555555579850, static x_approotwindow_arr = 0x555555573b70, static x_appcolormap_arr = 0x555555579830, static x_appdefcolormap_arr = 0x555555589a30, static x_appvisual_arr = 0x555555589a50, static x_appdefvisual_arr = 0x555555589a70, x11Data = 0x0}, static metaObj = 0x555555613a60, winid = 94371842, widget_state = 401433, widget_flags = 2099105, netwm_flags = 0, reserved_1 = 32767, reserved_2 = 0, reserved_3 = 0, reserved_4 = 1431752816, focus_policy = 0, own_font = 0, own_palette = 0, sizehint_forced = 0, is_closing = 0, fstrut_dirty = 1, im_enabled = 0, crect = {x1 = 480, y1 = 360, x2 = 1439, y2 = 839}, bg_col = {d = {argb = 4292664559, d8 = {argb = 4292664559, pix = 239 '\357', invalid = 220 '\334', dirty = 220 '\334', direct = 255 '\377'}, d32 = {argb = 4292664559, pix = 4292664559}}}, pal = {data = 0x555555601ea0}, fnt = {d = 0x55555557bcc0}, lay_out = 0x0, extra = 0x5555556139f0}, static metaObj = 0x555555613870, frect = {x1 = 0, y1 = 0, x2 = -1, y2 = -1}, fstyle = 16, lwidth = 1, mwidth = 0, mlwidth = 0, fwidth = 0, d = 0x570}, static metaObj = 0x5555556138e0, ltext = "ई", lpixmap = 0x0, lpicture = 0x0, lmovie = 0x0, lbuddy = 0x0, align = 576, extraMargin = -1, autoresize = 0, scaledcontents = 0, textformat = TQt::AutoText, doc = 0x0, accel = 0x0, d = 0x555555613820} ``` </details>

TDE Gitea Workspace

KMail was not able to correctly verify the GPG signatures of messages that were both encrypted and signed, although it had no problems with signed but non encrypted messages. This has now been fixed and will be part of the upcoming #TDE R14.1.6 release.
More info can be found at https://mirror.git.trinitydesktop.org/gitea/tde/tdepim/issues/187 and https://mirror.git.trinitydesktop.org/gitea/tde/tdepim/issues/190.

Updated PSB/PTB packages are or will soon be available on the #Trinity mirrors.

KMail fails to verify GPG signatures of certain types of encripted messages

I recently started using KMail in conjunction with GPG to encrypt and sign outgoing emails, as well as decrypt and verify signatures of incoming emails. While encryption, decryption, and signing works as expected, verifying signatures does not. Let's say I have a contact whose all public GPG keys are imported into my GPG keyring - this includes the master certifying [C] key, as well as authentication [A], signing [S], and encryption [E] sub-keys. I stress that the certifying key has no signing capability and there is a separate signing sub-key. This differs from GPG defaults, which, when generating a master key, give it both certifying and signing capability [CS]. However, a common practice is to remove the signing capability from the master key and have a dedicated signing key - this setup follows that practice. When I receive email signed with [S] subkey, KMail cannot verify the signature; it claims that while the signature is valid, the key with which the message was signed is unknown. However, the supposedly unknown key is a signing sub-key imported into my keyring. This suggests that when KMail tries to verify a signature, it only looks at master keys present in GPG keyring, but not their sub-keys. I think this is wrong. Other observations: * If email comes from someone, whose master key is both certifying and signing [CS], the signature is verified without problems. * An interesting case is signing of sent emails. Email is signed correctly, but the reported key fingerprint is that of a master key, not the signing key. This is where my GPG knowledge reaches its limit: my master key only has [C] capability, but not [S] - therefore it should not be possible to sign anything with it. I also note, that if I send email to myself, KMail can correctly verify the signature, i.e. based on the fingerprint of a master key it correctly finds the signing subkey. Putting it all together, it seems that KMail assumes that when an email is signed, fingerprint of the master key needs to be provided. Given master key fingerprint, KMail can find a signing sub-key. However, it does not search subkeys by default, so when the signing fingerprint is that of a subkey, KMail cannot find it in the keyring. I note, that most other email clients (or: essentially all signed emails that I receive) provide only the signing subkey fingerprint, and thus their signatures cannot be verified. Please take these conjectures with a grain of salt though: I am not a GPG expert, nor am I knowledgeable about KMail's internals.

TDE Gitea Workspace

Info for #TDE users on Debian-like distros (either PSB/PTB or the next stable release).

In the last couple of weeks there has been some package renaming to better comply with Debian conventions. If you are experiencing #Trinity-related package conflicts while updating your system, please try one of the following methods:

1. apt-get full-upgrade
2. aptitude upgrade
3. apt upgrade (should be fine)
4. from aptitude TUI, use `U`

Few packages are affected so far and there may be some more coming.

We are pleased to announce that #TDE R14.1.5 is now available on @gentoo for building. The R14.1.x branch of the Gentoo packaging repository has been updated to provide ebuild scripts for the latest stable version of #Trinity. At the same time, ebuild scripts for R14.1.2 have been removed. For more info, check out the packaging code at https://mirror.git.trinitydesktop.org/gitea/TDE/tde-packaging-gentoo/src/branch/r14.1.x

In the past few days, several bug fixes for twin's translucency settings have been added to #TDE's code. Using translucency should now provide a smoother experience, with less annoying bugs that previously required restarting a session or twin.
For more info see the current WIP version of "R14.1.6 release notes" at https://mirror.git.trinitydesktop.org/gitea/TDE/tde/issues/242.

Updated PSB/PTB packages are or will soon be available on the #Trinity mirrors.

Debian-based distros are updating cdbs and removing old files, relying more on debhelper instead (see for example https://metadata.ftp-master.debian.org/changelogs//main/c/cdbs/cdbs_0.4.182_changelog). This makes building #TDE in such distributions de facto impossible.
As a workaround, we have added the removed functionality under tde-cdbs, but in future we will be making changes to better integrating with newer versions of debhelper.
In parallel we continue to work on porting all #Trinity code to cmake, which will make the issue go away in full.

@jlw_the_jobber @plwt @geerlingguy

I need to try #TDE sometime, but I'm in my "just a wm/compositor, thanks" phase now. ;)

A small improvement for #TDE's Konqueror. The desktop is an important place for many users, so we have added a "Go to Desktop" entry to the "Go" menu for a quick way to navigate to it.

Updated PSB/PTB packages are already available on the #Trinity mirrors.

If you use #TDE's kvirc, you probably know that the GUI is only available in English.
We have fixed some long existing bugs and translations into other languages are now working again. Autodetection of the selected TDE language is not yet functional, but you can choose your own language in "Configure KVIrc → General options → Language → Force language".

Updated PSB/PTB packages are already available on the #Trinity mirrors.