summaryrefslogtreecommitdiffstats
path: root/source/kde
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2022-02-10 01:46:55 +0000
committer Eric Hameleers <alien@slackware.com>2022-02-10 08:07:49 +0100
commit517fb1766fff7e6ac07541c3477c475295f05961 (patch)
tree93d6206e20ad6b01420535e2a1e255196e4bc5df /source/kde
parent0ff3062f77b274ce055065deebafb56ae9b15f09 (diff)
downloadcurrent-517fb1766fff7e6ac07541c3477c475295f05961.tar.gz
current-517fb1766fff7e6ac07541c3477c475295f05961.tar.xz
Thu Feb 10 01:46:55 UTC 202220220210014655
Well here we are a week later... welcome back to -current with a bunch of new updates. Had to give marav's script something to kick out. If it were April 1st maybe I would have put a fake 15.1 release announcement here. ;-) I'll probably take some time off eventually but there were too many updates that I skipped during late RC, and I love doing this, so... enjoy! a/aaa_base-15.1-x86_64-1.txz: Upgraded. a/btrfs-progs-5.16.1-x86_64-1.txz: Upgraded. a/dialog-1.3_20220117-x86_64-1.txz: Upgraded. a/ed-1.18-x86_64-1.txz: Upgraded. a/findutils-4.9.0-x86_64-1.txz: Upgraded. a/hwdata-0.356-noarch-1.txz: Upgraded. a/kernel-generic-5.16.8-x86_64-1.txz: Upgraded. a/kernel-huge-5.16.8-x86_64-1.txz: Upgraded. a/kernel-modules-5.16.8-x86_64-1.txz: Upgraded. a/lzip-1.23-x86_64-1.txz: Upgraded. a/tcsh-6.24.00-x86_64-1.txz: Upgraded. ap/alsa-utils-1.2.6-x86_64-1.txz: Upgraded. ap/at-3.2.3-x86_64-1.txz: Upgraded. Switched to at-3.2.3 since version 3.2.4 has a regression that causes queued jobs to not always run on time when atd is run as a standalone daemon. Thanks to Cesare. ap/cups-2.4.1-x86_64-1.txz: Upgraded. ap/man-db-2.10.0-x86_64-1.txz: Upgraded. ap/mariadb-10.6.5-x86_64-1.txz: Upgraded. ap/nano-6.1-x86_64-1.txz: Upgraded. d/kernel-headers-5.16.8-x86-1.txz: Upgraded. d/llvm-13.0.1-x86_64-1.txz: Upgraded. d/mercurial-6.0.2-x86_64-1.txz: Upgraded. d/poke-2.1-x86_64-1.txz: Upgraded. d/re2c-3.0-x86_64-1.txz: Upgraded. k/kernel-source-5.16.8-noarch-1.txz: Upgraded. +FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION y kde/akonadi-21.12.2-x86_64-1.txz: Upgraded. kde/akonadi-calendar-21.12.2-x86_64-1.txz: Upgraded. kde/akonadi-calendar-tools-21.12.2-x86_64-1.txz: Upgraded. kde/akonadi-contacts-21.12.2-x86_64-1.txz: Upgraded. kde/akonadi-import-wizard-21.12.2-x86_64-1.txz: Upgraded. kde/akonadi-mime-21.12.2-x86_64-1.txz: Upgraded. kde/akonadi-notes-21.12.2-x86_64-1.txz: Upgraded. kde/akonadi-search-21.12.2-x86_64-1.txz: Upgraded. kde/akonadiconsole-21.12.2-x86_64-1.txz: Upgraded. kde/akregator-21.12.2-x86_64-1.txz: Upgraded. kde/analitza-21.12.2-x86_64-1.txz: Upgraded. kde/ark-21.12.2-x86_64-1.txz: Upgraded. kde/artikulate-21.12.2-x86_64-1.txz: Upgraded. kde/audiocd-kio-21.12.2-x86_64-1.txz: Upgraded. kde/baloo-widgets-21.12.2-x86_64-1.txz: Upgraded. kde/blinken-21.12.2-x86_64-1.txz: Upgraded. kde/bluedevil-5.24.0-x86_64-1.txz: Upgraded. kde/bomber-21.12.2-x86_64-1.txz: Upgraded. kde/bovo-21.12.2-x86_64-1.txz: Upgraded. kde/breeze-5.24.0-x86_64-1.txz: Upgraded. kde/breeze-grub-5.24.0-x86_64-1.txz: Upgraded. kde/breeze-gtk-5.24.0-x86_64-1.txz: Upgraded. kde/calendarsupport-21.12.2-x86_64-1.txz: Upgraded. kde/cantor-21.12.2-x86_64-1.txz: Upgraded. kde/cervisia-21.12.2-x86_64-1.txz: Upgraded. kde/dolphin-21.12.2.1-x86_64-1.txz: Upgraded. kde/dolphin-plugins-21.12.2-x86_64-1.txz: Upgraded. kde/dragon-21.12.2-x86_64-1.txz: Upgraded. kde/drkonqi-5.24.0-x86_64-1.txz: Upgraded. kde/elisa-21.12.2-x86_64-1.txz: Upgraded. kde/eventviews-21.12.2-x86_64-1.txz: Upgraded. kde/ffmpegthumbs-21.12.2-x86_64-1.txz: Upgraded. kde/filelight-21.12.2-x86_64-1.txz: Upgraded. kde/granatier-21.12.2-x86_64-1.txz: Upgraded. kde/grantlee-editor-21.12.2-x86_64-1.txz: Upgraded. kde/grantleetheme-21.12.2-x86_64-1.txz: Upgraded. kde/gwenview-21.12.2-x86_64-1.txz: Upgraded. kde/incidenceeditor-21.12.2-x86_64-1.txz: Upgraded. kde/itinerary-21.12.2-x86_64-1.txz: Upgraded. kde/juk-21.12.2-x86_64-1.txz: Upgraded. kde/k3b-21.12.2-x86_64-1.txz: Upgraded. kde/kactivitymanagerd-5.24.0-x86_64-1.txz: Upgraded. kde/kaddressbook-21.12.2-x86_64-1.txz: Upgraded. kde/kalarm-21.12.2-x86_64-1.txz: Upgraded. kde/kalarmcal-21.12.2-x86_64-1.txz: Upgraded. kde/kalgebra-21.12.2-x86_64-1.txz: Upgraded. kde/kalzium-21.12.2-x86_64-1.txz: Upgraded. kde/kamera-21.12.2-x86_64-1.txz: Upgraded. kde/kamoso-21.12.2-x86_64-1.txz: Upgraded. kde/kanagram-21.12.2-x86_64-1.txz: Upgraded. kde/kapman-21.12.2-x86_64-1.txz: Upgraded. kde/kapptemplate-21.12.2-x86_64-1.txz: Upgraded. kde/kate-21.12.2-x86_64-1.txz: Upgraded. kde/katomic-21.12.2-x86_64-1.txz: Upgraded. kde/kbackup-21.12.2-x86_64-1.txz: Upgraded. kde/kblackbox-21.12.2-x86_64-1.txz: Upgraded. kde/kblocks-21.12.2-x86_64-1.txz: Upgraded. kde/kbounce-21.12.2-x86_64-1.txz: Upgraded. kde/kbreakout-21.12.2-x86_64-1.txz: Upgraded. kde/kbruch-21.12.2-x86_64-1.txz: Upgraded. kde/kcachegrind-21.12.2-x86_64-1.txz: Upgraded. kde/kcalc-21.12.2-x86_64-1.txz: Upgraded. kde/kcalutils-21.12.2-x86_64-1.txz: Upgraded. kde/kcharselect-21.12.2-x86_64-1.txz: Upgraded. kde/kcolorchooser-21.12.2-x86_64-1.txz: Upgraded. kde/kcron-21.12.2-x86_64-1.txz: Upgraded. kde/kde-cli-tools-5.24.0-x86_64-1.txz: Upgraded. kde/kde-dev-scripts-21.12.2-x86_64-1.txz: Upgraded. kde/kde-dev-utils-21.12.2-x86_64-1.txz: Upgraded. kde/kde-gtk-config-5.24.0-x86_64-1.txz: Upgraded. kde/kdebugsettings-21.12.2-x86_64-1.txz: Upgraded. kde/kdeconnect-kde-21.12.2-x86_64-1.txz: Upgraded. kde/kdecoration-5.24.0-x86_64-1.txz: Upgraded. kde/kdeedu-data-21.12.2-x86_64-1.txz: Upgraded. kde/kdegraphics-mobipocket-21.12.2-x86_64-1.txz: Upgraded. kde/kdegraphics-thumbnailers-21.12.2-x86_64-1.txz: Upgraded. kde/kdenetwork-filesharing-21.12.2-x86_64-1.txz: Upgraded. kde/kdenlive-21.12.2-x86_64-1.txz: Upgraded. kde/kdepim-addons-21.12.2-x86_64-1.txz: Upgraded. kde/kdepim-runtime-21.12.2-x86_64-1.txz: Upgraded. kde/kdeplasma-addons-5.24.0-x86_64-1.txz: Upgraded. kde/kdesdk-kioslaves-21.12.2-x86_64-1.txz: Upgraded. kde/kdesdk-thumbnailers-21.12.2-x86_64-1.txz: Upgraded. kde/kdev-php-21.12.2-x86_64-1.txz: Upgraded. kde/kdev-python-21.12.2-x86_64-1.txz: Upgraded. kde/kdevelop-21.12.2-x86_64-1.txz: Upgraded. kde/kdf-21.12.2-x86_64-1.txz: Upgraded. kde/kdialog-21.12.2-x86_64-1.txz: Upgraded. kde/kdiamond-21.12.2-x86_64-1.txz: Upgraded. kde/keditbookmarks-21.12.2-x86_64-1.txz: Upgraded. kde/kfind-21.12.2-x86_64-1.txz: Upgraded. kde/kfloppy-21.12.2-x86_64-1.txz: Upgraded. kde/kfourinline-21.12.2-x86_64-1.txz: Upgraded. kde/kgamma5-5.24.0-x86_64-1.txz: Upgraded. kde/kgeography-21.12.2-x86_64-1.txz: Upgraded. kde/kget-21.12.2-x86_64-1.txz: Upgraded. kde/kgoldrunner-21.12.2-x86_64-1.txz: Upgraded. kde/kgpg-21.12.2-x86_64-1.txz: Upgraded. kde/khangman-21.12.2-x86_64-1.txz: Upgraded. kde/khelpcenter-21.12.2-x86_64-1.txz: Upgraded. kde/khotkeys-5.24.0-x86_64-1.txz: Upgraded. kde/kidentitymanagement-21.12.2-x86_64-1.txz: Upgraded. kde/kig-21.12.2-x86_64-1.txz: Upgraded. kde/kigo-21.12.2-x86_64-1.txz: Upgraded. kde/killbots-21.12.2-x86_64-1.txz: Upgraded. kde/kimagemapeditor-21.12.2-x86_64-1.txz: Upgraded. kde/kimap-21.12.2-x86_64-1.txz: Upgraded. kde/kinfocenter-5.24.0-x86_64-1.txz: Upgraded. kde/kio-extras-21.12.2-x86_64-1.txz: Upgraded. kde/kio-gdrive-21.12.2-x86_64-1.txz: Upgraded. kde/kipi-plugins-21.12.2-x86_64-1.txz: Upgraded. kde/kirigami-gallery-21.12.2-x86_64-1.txz: Upgraded. kde/kiriki-21.12.2-x86_64-1.txz: Upgraded. kde/kiten-21.12.2-x86_64-1.txz: Upgraded. kde/kitinerary-21.12.2-x86_64-1.txz: Upgraded. kde/kjumpingcube-21.12.2-x86_64-1.txz: Upgraded. kde/kldap-21.12.2-x86_64-1.txz: Upgraded. kde/kleopatra-21.12.2-x86_64-1.txz: Upgraded. kde/klickety-21.12.2-x86_64-1.txz: Upgraded. kde/klines-21.12.2-x86_64-1.txz: Upgraded. kde/kmag-21.12.2-x86_64-1.txz: Upgraded. kde/kmahjongg-21.12.2-x86_64-1.txz: Upgraded. kde/kmail-21.12.2-x86_64-1.txz: Upgraded. kde/kmail-account-wizard-21.12.2-x86_64-1.txz: Upgraded. kde/kmailtransport-21.12.2-x86_64-1.txz: Upgraded. kde/kmbox-21.12.2-x86_64-1.txz: Upgraded. kde/kmenuedit-5.24.0-x86_64-1.txz: Upgraded. kde/kmime-21.12.2-x86_64-1.txz: Upgraded. kde/kmines-21.12.2-x86_64-1.txz: Upgraded. kde/kmix-21.12.2-x86_64-1.txz: Upgraded. kde/kmousetool-21.12.2-x86_64-1.txz: Upgraded. kde/kmouth-21.12.2-x86_64-1.txz: Upgraded. kde/kmplot-21.12.2-x86_64-1.txz: Upgraded. kde/knavalbattle-21.12.2-x86_64-1.txz: Upgraded. kde/knetwalk-21.12.2-x86_64-1.txz: Upgraded. kde/knights-21.12.2-x86_64-1.txz: Upgraded. kde/knotes-21.12.2-x86_64-1.txz: Upgraded. kde/kolf-21.12.2-x86_64-1.txz: Upgraded. kde/kollision-21.12.2-x86_64-1.txz: Upgraded. kde/kolourpaint-21.12.2-x86_64-1.txz: Upgraded. kde/kompare-21.12.2-x86_64-1.txz: Upgraded. kde/konqueror-21.12.2-x86_64-1.txz: Upgraded. kde/konquest-21.12.2-x86_64-1.txz: Upgraded. kde/konsole-21.12.2-x86_64-1.txz: Upgraded. kde/kontact-21.12.2-x86_64-1.txz: Upgraded. kde/kontactinterface-21.12.2-x86_64-1.txz: Upgraded. kde/kontrast-21.12.2-x86_64-1.txz: Upgraded. kde/konversation-21.12.2-x86_64-1.txz: Upgraded. kde/kopeninghours-21.12.2-x86_64-1.txz: Upgraded. kde/kopete-21.12.2-x86_64-1.txz: Upgraded. kde/korganizer-21.12.2-x86_64-1.txz: Upgraded. kde/kosmindoormap-21.12.2-x86_64-1.txz: Upgraded. kde/kpat-21.12.2-x86_64-1.txz: Upgraded. kde/kpimtextedit-21.12.2-x86_64-1.txz: Upgraded. kde/kpkpass-21.12.2-x86_64-1.txz: Upgraded. kde/kpmcore-21.12.2-x86_64-1.txz: Upgraded. kde/kpublictransport-21.12.2-x86_64-1.txz: Upgraded. kde/kqtquickcharts-21.12.2-x86_64-1.txz: Upgraded. kde/krdc-21.12.2-x86_64-1.txz: Upgraded. kde/kreversi-21.12.2-x86_64-1.txz: Upgraded. kde/krfb-21.12.2-x86_64-1.txz: Upgraded. kde/kross-interpreters-21.12.2-x86_64-1.txz: Upgraded. kde/kruler-21.12.2-x86_64-1.txz: Upgraded. kde/kscreen-5.24.0-x86_64-1.txz: Upgraded. kde/kscreenlocker-5.24.0-x86_64-1.txz: Upgraded. kde/kshisen-21.12.2-x86_64-1.txz: Upgraded. kde/ksirk-21.12.2-x86_64-1.txz: Upgraded. kde/ksmtp-21.12.2-x86_64-1.txz: Upgraded. kde/ksnakeduel-21.12.2-x86_64-1.txz: Upgraded. kde/kspaceduel-21.12.2-x86_64-1.txz: Upgraded. kde/ksquares-21.12.2-x86_64-1.txz: Upgraded. kde/ksshaskpass-5.24.0-x86_64-1.txz: Upgraded. kde/ksudoku-21.12.2-x86_64-1.txz: Upgraded. kde/ksystemlog-21.12.2-x86_64-1.txz: Upgraded. kde/ksystemstats-5.24.0-x86_64-1.txz: Upgraded. kde/kteatime-21.12.2-x86_64-1.txz: Upgraded. kde/ktimer-21.12.2-x86_64-1.txz: Upgraded. kde/ktnef-21.12.2-x86_64-1.txz: Upgraded. kde/ktorrent-21.12.2-x86_64-1.txz: Upgraded. kde/ktouch-21.12.2-x86_64-1.txz: Upgraded. kde/kturtle-21.12.2-x86_64-1.txz: Upgraded. kde/kubrick-21.12.2-x86_64-1.txz: Upgraded. kde/kwallet-pam-5.24.0-x86_64-1.txz: Upgraded. kde/kwalletmanager-21.12.2-x86_64-1.txz: Upgraded. kde/kwave-21.12.2-x86_64-1.txz: Upgraded. kde/kwayland-integration-5.24.0-x86_64-1.txz: Upgraded. kde/kwayland-server-5.24.0-x86_64-1.txz: Upgraded. kde/kwin-5.24.0-x86_64-1.txz: Upgraded. kde/kwordquiz-21.12.2-x86_64-1.txz: Upgraded. kde/kwrited-5.24.0-x86_64-1.txz: Upgraded. kde/layer-shell-qt-5.24.0-x86_64-1.txz: Upgraded. kde/libgravatar-21.12.2-x86_64-1.txz: Upgraded. kde/libkcddb-21.12.2-x86_64-1.txz: Upgraded. kde/libkcompactdisc-21.12.2-x86_64-1.txz: Upgraded. kde/libkdcraw-21.12.2-x86_64-1.txz: Upgraded. kde/libkdegames-21.12.2-x86_64-1.txz: Upgraded. kde/libkdepim-21.12.2-x86_64-1.txz: Upgraded. kde/libkeduvocdocument-21.12.2-x86_64-1.txz: Upgraded. kde/libkexiv2-21.12.2-x86_64-1.txz: Upgraded. kde/libkgapi-21.12.2-x86_64-1.txz: Upgraded. kde/libkipi-21.12.2-x86_64-1.txz: Upgraded. kde/libkleo-21.12.2-x86_64-1.txz: Upgraded. kde/libkmahjongg-21.12.2-x86_64-1.txz: Upgraded. kde/libkomparediff2-21.12.2-x86_64-1.txz: Upgraded. kde/libksane-21.12.2-x86_64-1.txz: Upgraded. kde/libkscreen-5.24.0-x86_64-1.txz: Upgraded. kde/libksieve-21.12.2-x86_64-1.txz: Upgraded. kde/libksysguard-5.24.0-x86_64-1.txz: Upgraded. kde/libktorrent-21.12.2-x86_64-1.txz: Upgraded. kde/lokalize-21.12.2-x86_64-1.txz: Upgraded. kde/lskat-21.12.2-x86_64-1.txz: Upgraded. kde/mailcommon-21.12.2-x86_64-1.txz: Upgraded. kde/mailimporter-21.12.2-x86_64-1.txz: Upgraded. kde/marble-21.12.2-x86_64-1.txz: Upgraded. kde/markdownpart-21.12.2-x86_64-1.txz: Upgraded. kde/mbox-importer-21.12.2-x86_64-1.txz: Upgraded. kde/messagelib-21.12.2-x86_64-1.txz: Upgraded. kde/milou-5.24.0-x86_64-1.txz: Upgraded. kde/minuet-21.12.2-x86_64-1.txz: Upgraded. kde/okular-21.12.2-x86_64-1.txz: Upgraded. kde/oxygen-5.24.0-x86_64-1.txz: Upgraded. kde/palapeli-21.12.2-x86_64-1.txz: Upgraded. kde/parley-21.12.2-x86_64-1.txz: Upgraded. kde/partitionmanager-21.12.2-x86_64-1.txz: Upgraded. kde/picmi-21.12.2-x86_64-1.txz: Upgraded. kde/pim-data-exporter-21.12.2-x86_64-1.txz: Upgraded. kde/pim-sieve-editor-21.12.2-x86_64-1.txz: Upgraded. kde/pimcommon-21.12.2-x86_64-1.txz: Upgraded. kde/plasma-browser-integration-5.24.0-x86_64-1.txz: Upgraded. kde/plasma-desktop-5.24.0-x86_64-1.txz: Upgraded. kde/plasma-disks-5.24.0-x86_64-1.txz: Upgraded. kde/plasma-firewall-5.24.0-x86_64-1.txz: Upgraded. kde/plasma-integration-5.24.0-x86_64-1.txz: Upgraded. kde/plasma-nm-5.24.0-x86_64-1.txz: Upgraded. kde/plasma-pa-5.24.0-x86_64-1.txz: Upgraded. kde/plasma-sdk-5.24.0-x86_64-1.txz: Upgraded. kde/plasma-systemmonitor-5.24.0-x86_64-1.txz: Upgraded. kde/plasma-vault-5.24.0-x86_64-1.txz: Upgraded. kde/plasma-workspace-5.24.0-x86_64-1.txz: Upgraded. kde/plasma-workspace-wallpapers-5.24.0-x86_64-1.txz: Upgraded. kde/polkit-kde-agent-1-5.24.0-x86_64-1.txz: Upgraded. kde/powerdevil-5.24.0-x86_64-1.txz: Upgraded. kde/poxml-21.12.2-x86_64-1.txz: Upgraded. kde/print-manager-21.12.2-x86_64-1.txz: Upgraded. kde/qqc2-breeze-style-5.24.0-x86_64-1.txz: Upgraded. kde/rocs-21.12.2-x86_64-1.txz: Upgraded. kde/sddm-kcm-5.24.0-x86_64-1.txz: Upgraded. kde/skanlite-21.12.2-x86_64-1.txz: Upgraded. kde/spectacle-21.12.2-x86_64-1.txz: Upgraded. kde/step-21.12.2-x86_64-1.txz: Upgraded. kde/svgpart-21.12.2-x86_64-1.txz: Upgraded. kde/sweeper-21.12.2-x86_64-1.txz: Upgraded. kde/systemsettings-5.24.0-x86_64-1.txz: Upgraded. kde/umbrello-21.12.2-x86_64-1.txz: Upgraded. kde/xdg-desktop-portal-kde-5.24.0-x86_64-1.txz: Upgraded. kde/yakuake-21.12.2-x86_64-1.txz: Upgraded. kde/zanshin-21.12.2-x86_64-1.txz: Upgraded. kde/zeroconf-ioslave-21.12.2-x86_64-1.txz: Upgraded. l/alsa-lib-1.2.6.1-x86_64-1.txz: Upgraded. l/alsa-plugins-1.2.6-x86_64-1.txz: Upgraded. l/gdbm-1.23-x86_64-1.txz: Upgraded. l/gjs-1.70.1-x86_64-1.txz: Upgraded. l/gst-plugins-bad-free-1.20.0-x86_64-1.txz: Upgraded. l/gst-plugins-base-1.20.0-x86_64-1.txz: Upgraded. l/gst-plugins-good-1.20.0-x86_64-1.txz: Upgraded. l/gst-plugins-libav-1.20.0-x86_64-1.txz: Upgraded. l/gstreamer-1.20.0-x86_64-1.txz: Upgraded. l/harfbuzz-3.3.2-x86_64-1.txz: Upgraded. l/imagemagick-7.1.0_23-x86_64-1.txz: Upgraded. l/lcms2-2.13.1-x86_64-1.txz: Upgraded. l/libical-3.0.14-x86_64-1.txz: Upgraded. l/mozilla-nss-3.75-x86_64-1.txz: Upgraded. l/pipewire-0.3.45-x86_64-1.txz: Upgraded. l/quazip-1.2-x86_64-1.txz: Upgraded. n/bind-9.18.0-x86_64-1.txz: Upgraded. n/dovecot-2.3.18-x86_64-1.txz: Upgraded. n/gnupg2-2.2.34-x86_64-1.txz: Upgraded. n/gnutls-3.7.3-x86_64-1.txz: Upgraded. n/libgcrypt-1.10.0-x86_64-1.txz: Upgraded. n/postfix-3.7.0-x86_64-1.txz: Upgraded. x/freeglut-3.2.2-x86_64-1.txz: Upgraded. xap/mozilla-firefox-97.0-x86_64-1.txz: Upgraded. This release contains security fixes and improvements. For more information, see: https://www.mozilla.org/en-US/firefox/97.0/releasenotes/ https://www.mozilla.org/security/advisories/mfsa2022-04/ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-22753 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-22754 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-22755 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-22756 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-22757 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-22758 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-22759 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-22760 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-22761 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-22762 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-22764 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-0511 (* Security fix *) xap/mozilla-thunderbird-91.6.0-x86_64-1.txz: Upgraded. This release contains security fixes and improvements. For more information, see: https://www.mozilla.org/en-US/thunderbird/91.6.0/releasenotes/ https://www.mozilla.org/en-US/security/known-vulnerabilities/thunderbird/#thunderbird91.6 (* Security fix *) extra/rust-for-mozilla/rust-1.57.0-x86_64-1.txz: Upgraded. isolinux/initrd.img: Rebuilt. kernels/*: Upgraded. usb-and-pxe-installers/usbboot.img: Rebuilt.
Diffstat (limited to 'source/kde')
-rw-r--r--source/kde/FTBFSlog6
-rw-r--r--source/kde/kde/build/kate2
-rw-r--r--source/kde/kde/build/kig2
-rw-r--r--source/kde/kde/build/kopeninghours2
-rw-r--r--source/kde/kde/build/kwayland-server2
-rw-r--r--source/kde/kde/build/kwin2
-rw-r--r--source/kde/kde/build/plasma-workspace2
-rw-r--r--source/kde/kde/patch/kate.patch7
-rw-r--r--source/kde/kde/patch/kate/361dd43e42994829dbdb35e78fb7698d27cbb0e2.patch87
-rw-r--r--source/kde/kde/patch/kate/6fc3bf6e5bd540e842e32c4a959c2158c8573be5.patch71
-rw-r--r--source/kde/kde/patch/kate/7e08a58fb50d28ba96aedd5f5cd79a9479b4a0ad.patch918
-rw-r--r--source/kde/kde/patch/kate/92a9c65e30b4b63b8b116eb5c8dcb1e1a2d867bc.patch39
-rw-r--r--source/kde/kde/patch/kate/c5d66f3b70ae4778d6162564309aee95f643e7c9.patch124
-rw-r--r--source/kde/kde/patch/kinfocenter.patch2
-rw-r--r--source/kde/kde/patch/kinfocenter/kinfocenter_libpci.patch17
-rw-r--r--source/kde/kde/patch/kscreen.patch1
-rw-r--r--source/kde/kde/patch/kscreen/57.patch189
-rw-r--r--source/kde/kde/patch/kwayland-server.patch1
-rw-r--r--source/kde/kde/patch/kwayland-server/5f5bea1648590f24f11ce232eb78112953a4d20e.patch29
-rw-r--r--source/kde/kde/patch/libkscreen.patch2
-rw-r--r--source/kde/kde/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch240
-rw-r--r--source/kde/kde/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch219
-rw-r--r--source/kde/kde/patch/plasma-nm.patch1
-rw-r--r--source/kde/kde/patch/plasma-nm/80c47e577b80364c995aa0530a48e17c1a7e460f.patch82
-rw-r--r--source/kde/kde/patch/plasma-workspace.patch4
-rw-r--r--source/kde/kde/patch/plasma-workspace/0001-Revert-Drop-setupX11-from-startplasma-waylandsession.patch30
-rw-r--r--source/kde/kde/patch/plasma-workspace/0002-Revert-Drop-X11-root-properties-for-KDE-full-session.patch86
-rw-r--r--source/kde/kde/patch/plasma-workspace/70d23b89.patch52
-rw-r--r--source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch38
29 files changed, 8 insertions, 2249 deletions
diff --git a/source/kde/FTBFSlog b/source/kde/FTBFSlog
index dc6556f2d..859555ed5 100644
--- a/source/kde/FTBFSlog
+++ b/source/kde/FTBFSlog
@@ -1,5 +1,3 @@
-Sun Dec 12 19:21:35 UTC 2021
- kmymoney: Fix build with recent akonadi. Thanks to Daedra and nobodino.
-+--------------------------+
-Sat Dec 5 23:01:14 UTC 2020
+Mon Feb 7 20:57:55 UTC 2022
All packages tested and found to compile properly.
++--------------------------+
diff --git a/source/kde/kde/build/kate b/source/kde/kde/build/kate
index 0cfbf0888..d00491fd7 100644
--- a/source/kde/kde/build/kate
+++ b/source/kde/kde/build/kate
@@ -1 +1 @@
-2
+1
diff --git a/source/kde/kde/build/kig b/source/kde/kde/build/kig
index 0cfbf0888..d00491fd7 100644
--- a/source/kde/kde/build/kig
+++ b/source/kde/kde/build/kig
@@ -1 +1 @@
-2
+1
diff --git a/source/kde/kde/build/kopeninghours b/source/kde/kde/build/kopeninghours
index 0cfbf0888..d00491fd7 100644
--- a/source/kde/kde/build/kopeninghours
+++ b/source/kde/kde/build/kopeninghours
@@ -1 +1 @@
-2
+1
diff --git a/source/kde/kde/build/kwayland-server b/source/kde/kde/build/kwayland-server
index 0cfbf0888..d00491fd7 100644
--- a/source/kde/kde/build/kwayland-server
+++ b/source/kde/kde/build/kwayland-server
@@ -1 +1 @@
-2
+1
diff --git a/source/kde/kde/build/kwin b/source/kde/kde/build/kwin
index 0cfbf0888..d00491fd7 100644
--- a/source/kde/kde/build/kwin
+++ b/source/kde/kde/build/kwin
@@ -1 +1 @@
-2
+1
diff --git a/source/kde/kde/build/plasma-workspace b/source/kde/kde/build/plasma-workspace
index 00750edc0..d00491fd7 100644
--- a/source/kde/kde/build/plasma-workspace
+++ b/source/kde/kde/build/plasma-workspace
@@ -1 +1 @@
-3
+1
diff --git a/source/kde/kde/patch/kate.patch b/source/kde/kde/patch/kate.patch
index df3032eda..59df062a0 100644
--- a/source/kde/kde/patch/kate.patch
+++ b/source/kde/kde/patch/kate.patch
@@ -1,10 +1,3 @@
# Allow Kate to be started by the root user; disallowing this is not
# a decision that a developer should make for the user, it is patronizing:
cat $CWD/patch/kate/kate_runasroot.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-
-# Fix KTextEditor/Kate: Missing validation of binaries executed via QProcess (CVE-2022-23853)
-cat $CWD/patch/kate/361dd43e42994829dbdb35e78fb7698d27cbb0e2.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/kate/6fc3bf6e5bd540e842e32c4a959c2158c8573be5.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/kate/92a9c65e30b4b63b8b116eb5c8dcb1e1a2d867bc.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/kate/c5d66f3b70ae4778d6162564309aee95f643e7c9.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/kate/7e08a58fb50d28ba96aedd5f5cd79a9479b4a0ad.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kate/361dd43e42994829dbdb35e78fb7698d27cbb0e2.patch b/source/kde/kde/patch/kate/361dd43e42994829dbdb35e78fb7698d27cbb0e2.patch
deleted file mode 100644
index 4f7237aaa..000000000
--- a/source/kde/kde/patch/kate/361dd43e42994829dbdb35e78fb7698d27cbb0e2.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From 361dd43e42994829dbdb35e78fb7698d27cbb0e2 Mon Sep 17 00:00:00 2001
-From: Mark Nauwelaerts <mark.nauwelaerts@gmail.com>
-Date: Mon, 13 Dec 2021 20:52:57 +0100
-Subject: [PATCH] lspclient: consider some additional server capabilities
-
----
- addons/lspclient/lspclientprotocol.h | 14 +++++++++++++-
- addons/lspclient/lspclientserver.cpp | 9 ++++++++-
- addons/lspclient/lspclientservermanager.cpp | 2 +-
- 3 files changed, 22 insertions(+), 3 deletions(-)
-
-diff --git a/addons/lspclient/lspclientprotocol.h b/addons/lspclient/lspclientprotocol.h
-index 0fb7f4485..9de0ec511 100644
---- a/addons/lspclient/lspclientprotocol.h
-+++ b/addons/lspclient/lspclientprotocol.h
-@@ -21,6 +21,8 @@
- #include <KTextEditor/Cursor>
- #include <KTextEditor/Range>
-
-+#include <optional>
-+
- // Following types roughly follow the types/interfaces as defined in LSP protocol spec
- // although some deviation may arise where it has been deemed useful
- // Moreover, to avoid introducing a custom 'optional' type, absence of an optional
-@@ -51,6 +53,16 @@ struct LSPResponseError {
-
- enum class LSPDocumentSyncKind { None = 0, Full = 1, Incremental = 2 };
-
-+struct LSPSaveOptions {
-+ bool includeText = false;
-+};
-+
-+// only used parts for now
-+struct LSPTextDocumentSyncOptions {
-+ LSPDocumentSyncKind change = LSPDocumentSyncKind::None;
-+ std::optional<LSPSaveOptions> save;
-+};
-+
- struct LSPCompletionOptions {
- bool provider = false;
- bool resolveProvider = false;
-@@ -81,7 +93,7 @@ struct LSPWorkspaceFoldersServerCapabilities {
- };
-
- struct LSPServerCapabilities {
-- LSPDocumentSyncKind textDocumentSync = LSPDocumentSyncKind::None;
-+ LSPTextDocumentSyncOptions textDocumentSync;
- bool hoverProvider = false;
- LSPCompletionOptions completionProvider;
- LSPSignatureHelpOptions signatureHelpProvider;
-diff --git a/addons/lspclient/lspclientserver.cpp b/addons/lspclient/lspclientserver.cpp
-index 8739d46c9..a7094fde2 100644
---- a/addons/lspclient/lspclientserver.cpp
-+++ b/addons/lspclient/lspclientserver.cpp
-@@ -344,8 +344,15 @@ static void from_json(LSPServerCapabilities &caps, const QJsonObject &json)
- };
-
- auto sync = json.value(QStringLiteral("textDocumentSync"));
-- caps.textDocumentSync = static_cast<LSPDocumentSyncKind>(
-+ caps.textDocumentSync.change = static_cast<LSPDocumentSyncKind>(
- (sync.isObject() ? sync.toObject().value(QStringLiteral("change")) : sync).toInt(static_cast<int>(LSPDocumentSyncKind::None)));
-+ if (sync.isObject()) {
-+ auto syncObject = sync.toObject();
-+ auto save = syncObject.value(QStringLiteral("save"));
-+ if (save.isObject() || save.toBool()) {
-+ caps.textDocumentSync.save = {save.toObject().value(QStringLiteral("includeText")).toBool()};
-+ }
-+ }
- caps.hoverProvider = toBoolOrObject(json.value(QStringLiteral("hoverProvider")));
- from_json(caps.completionProvider, json.value(QStringLiteral("completionProvider")));
- from_json(caps.signatureHelpProvider, json.value(QStringLiteral("signatureHelpProvider")));
-diff --git a/addons/lspclient/lspclientservermanager.cpp b/addons/lspclient/lspclientservermanager.cpp
-index 1fbcf928f..1e03801ea 100644
---- a/addons/lspclient/lspclientservermanager.cpp
-+++ b/addons/lspclient/lspclientservermanager.cpp
-@@ -931,7 +931,7 @@ private:
- auto it = m_docs.find(doc);
- if (it != m_docs.end() && it->server) {
- const auto &caps = it->server->capabilities();
-- if (caps.textDocumentSync == LSPDocumentSyncKind::Incremental) {
-+ if (caps.textDocumentSync.change == LSPDocumentSyncKind::Incremental) {
- return &(*it);
- }
- }
---
-GitLab
-
diff --git a/source/kde/kde/patch/kate/6fc3bf6e5bd540e842e32c4a959c2158c8573be5.patch b/source/kde/kde/patch/kate/6fc3bf6e5bd540e842e32c4a959c2158c8573be5.patch
deleted file mode 100644
index cdbde70ff..000000000
--- a/source/kde/kde/patch/kate/6fc3bf6e5bd540e842e32c4a959c2158c8573be5.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 6fc3bf6e5bd540e842e32c4a959c2158c8573be5 Mon Sep 17 00:00:00 2001
-From: Mark Nauwelaerts <mark.nauwelaerts@gmail.com>
-Date: Mon, 13 Dec 2021 21:36:50 +0100
-Subject: [PATCH] lspclient: send didSave notification if so requested
-
----
- addons/lspclient/lspclientserver.cpp | 7 +++++--
- addons/lspclient/lspclientservermanager.cpp | 15 +++++++++++++++
- 2 files changed, 20 insertions(+), 2 deletions(-)
-
-diff --git a/addons/lspclient/lspclientserver.cpp b/addons/lspclient/lspclientserver.cpp
-index a7094fde2..9fb5844cd 100644
---- a/addons/lspclient/lspclientserver.cpp
-+++ b/addons/lspclient/lspclientserver.cpp
-@@ -1255,7 +1255,8 @@ private:
- {QStringLiteral("documentSymbol"), QJsonObject{{QStringLiteral("hierarchicalDocumentSymbolSupport"), true}} },
- {QStringLiteral("publishDiagnostics"), QJsonObject{{QStringLiteral("relatedInformation"), true}}},
- {QStringLiteral("codeAction"), codeAction},
-- {QStringLiteral("semanticTokens"), semanticTokens}
-+ {QStringLiteral("semanticTokens"), semanticTokens},
-+ {QStringLiteral("synchronization"), QJsonObject{{QStringLiteral("didSave"), true}}},
- },
- },
- {QStringLiteral("window"),
-@@ -1475,7 +1476,9 @@ public:
- void didSave(const QUrl &document, const QString &text)
- {
- auto params = textDocumentParams(document);
-- params[QStringLiteral("text")] = text;
-+ if (!text.isNull()) {
-+ params[QStringLiteral("text")] = text;
-+ }
- send(init_request(QStringLiteral("textDocument/didSave"), params));
- }
-
-diff --git a/addons/lspclient/lspclientservermanager.cpp b/addons/lspclient/lspclientservermanager.cpp
-index 1e03801ea..551926e23 100644
---- a/addons/lspclient/lspclientservermanager.cpp
-+++ b/addons/lspclient/lspclientservermanager.cpp
-@@ -833,6 +833,7 @@ private:
- connect(doc, &KTextEditor::Document::aboutToClose, this, &self_type::untrack, Qt::UniqueConnection);
- connect(doc, &KTextEditor::Document::destroyed, this, &self_type::untrack, Qt::UniqueConnection);
- connect(doc, &KTextEditor::Document::textChanged, this, &self_type::onTextChanged, Qt::UniqueConnection);
-+ connect(doc, &KTextEditor::Document::documentSavedOrUploaded, this, &self_type::onDocumentSaved, Qt::UniqueConnection);
- // in case of incremental change
- connect(doc, &KTextEditor::Document::textInserted, this, &self_type::onTextInserted, Qt::UniqueConnection);
- connect(doc, &KTextEditor::Document::textRemoved, this, &self_type::onTextRemoved, Qt::UniqueConnection);
-@@ -976,6 +977,20 @@ private:
- }
- }
-
-+ void onDocumentSaved(KTextEditor::Document *doc, bool saveAs)
-+ {
-+ if (!saveAs) {
-+ auto it = m_docs.find(doc);
-+ if (it != m_docs.end() && it->server) {
-+ auto server = it->server;
-+ const auto &saveOptions = server->capabilities().textDocumentSync.save;
-+ if (saveOptions) {
-+ server->didSave(doc->url(), saveOptions->includeText ? doc->text() : QString());
-+ }
-+ }
-+ }
-+ }
-+
- void onMessage(bool isLog, const LSPLogMessageParams &params)
- {
- // determine server description
---
-GitLab
-
diff --git a/source/kde/kde/patch/kate/7e08a58fb50d28ba96aedd5f5cd79a9479b4a0ad.patch b/source/kde/kde/patch/kate/7e08a58fb50d28ba96aedd5f5cd79a9479b4a0ad.patch
deleted file mode 100644
index 456f33618..000000000
--- a/source/kde/kde/patch/kate/7e08a58fb50d28ba96aedd5f5cd79a9479b4a0ad.patch
+++ /dev/null
@@ -1,918 +0,0 @@
-From 7e08a58fb50d28ba96aedd5f5cd79a9479b4a0ad Mon Sep 17 00:00:00 2001
-From: Christoph Cullmann <cullmann@kde.org>
-Date: Mon, 24 Jan 2022 19:07:37 +0000
-Subject: [PATCH] improve QProcess handling
-
-ensure we take executables from PATH for execution instead possibly from current working directory
-or the working directory set for the QProcess
----
- addons/compiler-explorer/compiledbreader.cpp | 4 +-
- addons/externaltools/katetoolrunner.cpp | 9 +++-
- addons/gdbplugin/debugview.cpp | 17 +++++++-
- addons/git-blame/commitfilesview.cpp | 17 +++++---
- addons/git-blame/kategitblameplugin.cpp | 8 +++-
- addons/kate-ctags/gotosymbolmodel.cpp | 15 +++++--
- addons/project/comparebranchesview.cpp | 4 +-
- addons/project/filehistorywidget.cpp | 14 +++++--
- addons/project/git/gitutils.cpp | 41 +++++++++++++++----
- addons/project/gitwidget.cpp | 19 +++++++--
- addons/project/kateprojectindex.cpp | 9 +++-
- .../kateprojectinfoviewcodeanalysis.cpp | 9 +++-
- addons/project/kateprojectworker.cpp | 32 +++++++++++----
- addons/project/stashdialog.cpp | 20 ++++-----
- addons/project/stashdialog.h | 2 +-
- addons/replicode/replicodeview.cpp | 9 ++++
- addons/xmlcheck/plugin_katexmlcheck.cpp | 8 ++++
- kate/katefileactions.cpp | 17 ++++----
- kate/katefileactions.h | 4 +-
- kate/katemwmodonhddialog.cpp | 6 ++-
- kate/katemwmodonhddialog.h | 1 +
- kate/kateviewspace.cpp | 7 +++-
- shared/gitprocess.h | 16 +++++++-
- 23 files changed, 217 insertions(+), 71 deletions(-)
-
-diff --git a/addons/compiler-explorer/compiledbreader.cpp b/addons/compiler-explorer/compiledbreader.cpp
-index 74e83638e..ab9ebc483 100644
---- a/addons/compiler-explorer/compiledbreader.cpp
-+++ b/addons/compiler-explorer/compiledbreader.cpp
-@@ -21,7 +21,9 @@ std::optional<QString> getDotGitPath(const QString &repo)
- {
- /* This call is intentionally blocking because we need git path for everything else */
- QProcess git;
-- setupGitProcess(git, repo, {QStringLiteral("rev-parse"), QStringLiteral("--absolute-git-dir")});
-+ if (!setupGitProcess(git, repo, {QStringLiteral("rev-parse"), QStringLiteral("--absolute-git-dir")})) {
-+ return std::nullopt;
-+ }
- git.start(QProcess::ReadOnly);
- if (git.waitForStarted() && git.waitForFinished(-1)) {
- if (git.exitStatus() != QProcess::NormalExit || git.exitCode() != 0) {
-diff --git a/addons/externaltools/katetoolrunner.cpp b/addons/externaltools/katetoolrunner.cpp
-index 10a5d7226..e14940ad7 100644
---- a/addons/externaltools/katetoolrunner.cpp
-+++ b/addons/externaltools/katetoolrunner.cpp
-@@ -14,6 +14,7 @@
- #include <KTextEditor/View>
- #include <QFileInfo>
- #include <QRegularExpression>
-+#include <QStandardPaths>
-
- KateToolRunner::KateToolRunner(std::unique_ptr<KateExternalTool> tool, KTextEditor::View *view, QObject *parent)
- : QObject(parent)
-@@ -40,6 +41,12 @@ KateExternalTool *KateToolRunner::tool() const
-
- void KateToolRunner::run()
- {
-+ // always only execute the tool from PATH
-+ const auto fullExecutable = QStandardPaths::findExecutable(m_tool->executable);
-+ if (fullExecutable.isEmpty()) {
-+ return;
-+ }
-+
- if (!m_tool->workingDir.isEmpty()) {
- m_process->setWorkingDirectory(m_tool->workingDir);
- } else if (m_view) {
-@@ -72,7 +79,7 @@ void KateToolRunner::run()
- });
-
- const QStringList args = KShell::splitArgs(m_tool->arguments);
-- m_process->start(m_tool->executable, args);
-+ m_process->start(fullExecutable, args);
- }
-
- void KateToolRunner::waitForFinished()
-diff --git a/addons/gdbplugin/debugview.cpp b/addons/gdbplugin/debugview.cpp
-index 9505daa25..d8c868d7a 100644
---- a/addons/gdbplugin/debugview.cpp
-+++ b/addons/gdbplugin/debugview.cpp
-@@ -12,7 +12,9 @@
- #include "debugview.h"
-
- #include <QFile>
-+#include <QFileInfo>
- #include <QRegularExpression>
-+#include <QStandardPaths>
- #include <QTimer>
-
- #include <KLocalizedString>
-@@ -48,7 +50,20 @@ void DebugView::runDebugger(const GDBTargetConf &conf, const QStringList &ioFifo
- if (conf.executable.isEmpty()) {
- return;
- }
-+
- m_targetConf = conf;
-+
-+ // no chance if no debugger configured
-+ if (m_targetConf.gdbCmd.isEmpty()) {
-+ return;
-+ }
-+
-+ // only run debugger from PATH or the absolute executable path we specified
-+ const auto fullExecutable = QFileInfo(m_targetConf.gdbCmd).isAbsolute() ? m_targetConf.gdbCmd : QStandardPaths::findExecutable(m_targetConf.gdbCmd);
-+ if (fullExecutable.isEmpty()) {
-+ return;
-+ }
-+
- if (ioFifos.size() == 3) {
- m_ioPipeString = QStringLiteral("< %1 1> %2 2> %3").arg(ioFifos[0], ioFifos[1], ioFifos[2]);
- }
-@@ -69,7 +84,7 @@ void DebugView::runDebugger(const GDBTargetConf &conf, const QStringList &ioFifo
-
- connect(&m_debugProcess, static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), this, &DebugView::slotDebugFinished);
-
-- m_debugProcess.start(m_targetConf.gdbCmd, QStringList());
-+ m_debugProcess.start(fullExecutable, QStringList());
-
- m_nextCommands << QStringLiteral("set pagination off");
- m_state = ready;
-diff --git a/addons/git-blame/commitfilesview.cpp b/addons/git-blame/commitfilesview.cpp
-index 26e484a4a..667b423b2 100644
---- a/addons/git-blame/commitfilesview.cpp
-+++ b/addons/git-blame/commitfilesview.cpp
-@@ -263,7 +263,9 @@ static void createFileTree(QStandardItem *parent, const QString &basePath, const
- static std::optional<QString> getGitCmdOutput(const QString &workDir, const QStringList &args)
- {
- QProcess git;
-- setupGitProcess(git, workDir, args);
-+ if (!setupGitProcess(git, workDir, args)) {
-+ return {};
-+ }
- git.start(QProcess::ReadOnly);
- if (git.waitForStarted() && git.waitForFinished(-1)) {
- if (git.exitStatus() != QProcess::NormalExit || git.exitCode() != 0) {
-@@ -365,9 +367,12 @@ void CommitDiffTreeView::openCommit(const QString &hash, const QString &filePath
- m_commitHash = hash;
-
- QProcess *git = new QProcess(this);
-- setupGitProcess(*git,
-- QFileInfo(filePath).absolutePath(),
-- {QStringLiteral("show"), hash, QStringLiteral("--numstat"), QStringLiteral("--pretty=oneline"), QStringLiteral("-z")});
-+ if (!setupGitProcess(*git,
-+ QFileInfo(filePath).absolutePath(),
-+ {QStringLiteral("show"), hash, QStringLiteral("--numstat"), QStringLiteral("--pretty=oneline"), QStringLiteral("-z")})) {
-+ delete git;
-+ return;
-+ }
- connect(git, &QProcess::finished, this, [this, git, filePath](int e, QProcess::ExitStatus s) {
- git->deleteLater();
- if (e != 0 || s != QProcess::NormalExit) {
-@@ -440,7 +445,9 @@ void CommitDiffTreeView::showDiff(const QModelIndex &idx)
- {
- const QString file = idx.data(FileItem::Path).toString();
- QProcess git;
-- setupGitProcess(git, m_gitDir, {QStringLiteral("show"), m_commitHash, QStringLiteral("--"), file});
-+ if (!setupGitProcess(git, m_gitDir, {QStringLiteral("show"), m_commitHash, QStringLiteral("--"), file})) {
-+ return;
-+ }
- git.start(QProcess::ReadOnly);
-
- if (git.waitForStarted() && git.waitForFinished(-1)) {
-diff --git a/addons/git-blame/kategitblameplugin.cpp b/addons/git-blame/kategitblameplugin.cpp
-index d0354cc75..ae0f8c106 100644
---- a/addons/git-blame/kategitblameplugin.cpp
-+++ b/addons/git-blame/kategitblameplugin.cpp
-@@ -255,7 +255,9 @@ void KateGitBlamePluginView::startBlameProcess(const QUrl &url)
- QDir dir{url.toLocalFile()};
- dir.cdUp();
-
-- setupGitProcess(m_blameInfoProc, dir.absolutePath(), {QStringLiteral("blame"), QStringLiteral("-p"), QStringLiteral("./%1").arg(fileName)});
-+ if (!setupGitProcess(m_blameInfoProc, dir.absolutePath(), {QStringLiteral("blame"), QStringLiteral("-p"), QStringLiteral("./%1").arg(fileName)})) {
-+ return;
-+ }
- m_blameInfoProc.start(QIODevice::ReadOnly);
- m_blameUrl = url;
- }
-@@ -270,7 +272,9 @@ void KateGitBlamePluginView::startShowProcess(const QUrl &url, const QString &ha
- QDir dir{url.toLocalFile()};
- dir.cdUp();
-
-- setupGitProcess(m_showProc, dir.absolutePath(), {QStringLiteral("show"), hash, QStringLiteral("--numstat")});
-+ if (!setupGitProcess(m_showProc, dir.absolutePath(), {QStringLiteral("show"), hash, QStringLiteral("--numstat")})) {
-+ return;
-+ }
- m_showProc.start(QIODevice::ReadOnly);
- }
-
-diff --git a/addons/kate-ctags/gotosymbolmodel.cpp b/addons/kate-ctags/gotosymbolmodel.cpp
-index 6c547e379..0c116090f 100644
---- a/addons/kate-ctags/gotosymbolmodel.cpp
-+++ b/addons/kate-ctags/gotosymbolmodel.cpp
-@@ -8,6 +8,7 @@
- #include <KLocalizedString>
- #include <QDebug>
- #include <QProcess>
-+#include <QStandardPaths>
-
- GotoSymbolModel::GotoSymbolModel(QObject *parent)
- : QAbstractTableModel(parent)
-@@ -58,16 +59,24 @@ void GotoSymbolModel::refresh(const QString &filePath)
- m_rows.clear();
- endResetModel();
-
-+ // only use ctags from PATH
-+ static const auto fullExecutablePath = QStandardPaths::findExecutable(QStringLiteral("ctags"));
-+ if (fullExecutablePath.isEmpty()) {
-+ beginResetModel();
-+ m_rows.append(SymbolItem{i18n("CTags executable not found."), -1, QIcon()});
-+ endResetModel();
-+ return;
-+ }
-+
- QProcess p;
-- p.start(QStringLiteral("ctags"), {QStringLiteral("-x"), QStringLiteral("--_xformat=%{name}%{signature}\t%{kind}\t%{line}"), filePath});
-+ p.start(fullExecutablePath, {QStringLiteral("-x"), QStringLiteral("--_xformat=%{name}%{signature}\t%{kind}\t%{line}"), filePath});
-
- QByteArray out;
- if (p.waitForFinished()) {
- out = p.readAllStandardOutput();
- } else {
-- qWarning() << "Ctags failed";
- beginResetModel();
-- m_rows.append(SymbolItem{i18n("CTags executable not found."), -1, QIcon()});
-+ m_rows.append(SymbolItem{i18n("CTags executable failed to execute."), -1, QIcon()});
- endResetModel();
- return;
- }
-diff --git a/addons/project/comparebranchesview.cpp b/addons/project/comparebranchesview.cpp
-index 48d1d2633..7cf585f66 100644
---- a/addons/project/comparebranchesview.cpp
-+++ b/addons/project/comparebranchesview.cpp
-@@ -158,7 +158,9 @@ void CompareBranchesView::showDiff(const QModelIndex &idx)
- {
- auto file = idx.data(Qt::UserRole).toString().remove(m_gitDir + QLatin1Char('/'));
- QProcess git;
-- setupGitProcess(git, m_gitDir, {QStringLiteral("diff"), QStringLiteral("%1...%2").arg(m_fromBr).arg(m_toBr), QStringLiteral("--"), file});
-+ if (!setupGitProcess(git, m_gitDir, {QStringLiteral("diff"), QStringLiteral("%1...%2").arg(m_fromBr).arg(m_toBr), QStringLiteral("--"), file})) {
-+ return;
-+ }
- git.start(QProcess::ReadOnly);
-
- if (git.waitForStarted() && git.waitForFinished(-1)) {
-diff --git a/addons/project/filehistorywidget.cpp b/addons/project/filehistorywidget.cpp
-index 626016a6b..14857e178 100644
---- a/addons/project/filehistorywidget.cpp
-+++ b/addons/project/filehistorywidget.cpp
-@@ -231,9 +231,12 @@ FileHistoryWidget::~FileHistoryWidget()
- // git log --format=%H%n%aN%n%aE%n%at%n%ct%n%P%n%B --author-date-order
- void FileHistoryWidget::getFileHistory(const QString &file)
- {
-- setupGitProcess(m_git,
-- QFileInfo(file).absolutePath(),
-- {QStringLiteral("log"), QStringLiteral("--format=%H%n%aN%n%aE%n%at%n%ct%n%P%n%B"), QStringLiteral("-z"), file});
-+ if (!setupGitProcess(m_git,
-+ QFileInfo(file).absolutePath(),
-+ {QStringLiteral("log"), QStringLiteral("--format=%H%n%aN%n%aE%n%at%n%ct%n%P%n%B"), QStringLiteral("-z"), file})) {
-+ Q_EMIT errorMessage(i18n("Failed to get file history: git executable not found in PATH"), true);
-+ return;
-+ }
-
- connect(&m_git, &QProcess::readyReadStandardOutput, this, [this] {
- auto commits = parseCommits(m_git.readAllStandardOutput().split(0x00));
-@@ -258,7 +261,10 @@ void FileHistoryWidget::itemClicked(const QModelIndex &idx)
-
- const auto commit = idx.data(CommitListModel::CommitRole).value<Commit>();
-
-- setupGitProcess(git, fi.absolutePath(), {QStringLiteral("show"), QString::fromUtf8(commit.hash), QStringLiteral("--"), m_file});
-+ if (!setupGitProcess(git, fi.absolutePath(), {QStringLiteral("show"), QString::fromUtf8(commit.hash), QStringLiteral("--"), m_file})) {
-+ return;
-+ }
-+
- git.start(QProcess::ReadOnly);
- if (git.waitForStarted() && git.waitForFinished(-1)) {
- if (git.exitStatus() != QProcess::NormalExit || git.exitCode() != 0) {
-diff --git a/addons/project/git/gitutils.cpp b/addons/project/git/gitutils.cpp
-index ea8dd8823..8b494c16f 100644
---- a/addons/project/git/gitutils.cpp
-+++ b/addons/project/git/gitutils.cpp
-@@ -15,7 +15,10 @@
- bool GitUtils::isGitRepo(const QString &repo)
- {
- QProcess git;
-- setupGitProcess(git, repo, {QStringLiteral("rev-parse"), QStringLiteral("--is-inside-work-tree")});
-+ if (!setupGitProcess(git, repo, {QStringLiteral("rev-parse"), QStringLiteral("--is-inside-work-tree")})) {
-+ return false;
-+ }
-+
- git.start(QProcess::ReadOnly);
- if (git.waitForStarted() && git.waitForFinished(-1)) {
- return git.readAll().trimmed() == "true";
-@@ -27,7 +30,10 @@ std::optional<QString> GitUtils::getDotGitPath(const QString &repo)
- {
- /* This call is intentionally blocking because we need git path for everything else */
- QProcess git;
-- setupGitProcess(git, repo, {QStringLiteral("rev-parse"), QStringLiteral("--absolute-git-dir")});
-+ if (!setupGitProcess(git, repo, {QStringLiteral("rev-parse"), QStringLiteral("--absolute-git-dir")})) {
-+ return std::nullopt;
-+ }
-+
- git.start(QProcess::ReadOnly);
- if (git.waitForStarted() && git.waitForFinished(-1)) {
- if (git.exitStatus() != QProcess::NormalExit || git.exitCode() != 0) {
-@@ -57,7 +63,10 @@ QString GitUtils::getCurrentBranchName(const QString &repo)
-
- for (int i = 0; i < 3; ++i) {
- QProcess git;
-- setupGitProcess(git, repo, argsList[i]);
-+ if (!setupGitProcess(git, repo, argsList[i])) {
-+ return QString();
-+ }
-+
- git.start(QProcess::ReadOnly);
- if (git.waitForStarted() && git.waitForFinished(-1)) {
- if (git.exitStatus() == QProcess::NormalExit && git.exitCode() == 0) {
-@@ -73,7 +82,10 @@ QString GitUtils::getCurrentBranchName(const QString &repo)
- GitUtils::CheckoutResult GitUtils::checkoutBranch(const QString &repo, const QString &branch)
- {
- QProcess git;
-- setupGitProcess(git, repo, {QStringLiteral("checkout"), branch});
-+ if (!setupGitProcess(git, repo, {QStringLiteral("checkout"), branch})) {
-+ return CheckoutResult{};
-+ }
-+
- git.start(QProcess::ReadOnly);
- CheckoutResult res;
- res.branch = branch;
-@@ -91,7 +103,11 @@ GitUtils::CheckoutResult GitUtils::checkoutNewBranch(const QString &repo, const
- if (!fromBranch.isEmpty()) {
- args.append(fromBranch);
- }
-- setupGitProcess(git, repo, args);
-+
-+ if (!setupGitProcess(git, repo, args)) {
-+ return CheckoutResult{};
-+ }
-+
- git.start(QProcess::ReadOnly);
- CheckoutResult res;
- res.branch = newBranch;
-@@ -132,7 +148,10 @@ QVector<GitUtils::Branch> GitUtils::getAllBranchesAndTags(const QString &repo, R
- args.append(QStringLiteral("--sort=-taggerdate"));
- }
-
-- setupGitProcess(git, repo, args);
-+ if (!setupGitProcess(git, repo, args)) {
-+ return {};
-+ }
-+
- git.start(QProcess::ReadOnly);
- QVector<Branch> branches;
- if (git.waitForStarted() && git.waitForFinished(-1)) {
-@@ -166,7 +185,10 @@ std::pair<QString, QString> GitUtils::getLastCommitMessage(const QString &repo)
- {
- // git log -1 --pretty=%B
- QProcess git;
-- setupGitProcess(git, repo, {QStringLiteral("log"), QStringLiteral("-1"), QStringLiteral("--pretty=%B")});
-+ if (!setupGitProcess(git, repo, {QStringLiteral("log"), QStringLiteral("-1"), QStringLiteral("--pretty=%B")})) {
-+ return {};
-+ }
-+
- git.start(QProcess::ReadOnly);
- if (git.waitForStarted() && git.waitForFinished(-1)) {
- if (git.exitCode() != 0 || git.exitStatus() != QProcess::NormalExit) {
-@@ -197,7 +219,10 @@ GitUtils::Result GitUtils::deleteBranches(const QStringList &branches, const QSt
- args << branches;
-
- QProcess git;
-- setupGitProcess(git, repo, args);
-+ if (!setupGitProcess(git, repo, args)) {
-+ return {};
-+ }
-+
- git.start(QProcess::ReadOnly);
- if (git.waitForStarted() && git.waitForFinished(-1)) {
- QString out = QString::fromLatin1(git.readAllStandardError()) + QString::fromLatin1(git.readAllStandardOutput());
-diff --git a/addons/project/gitwidget.cpp b/addons/project/gitwidget.cpp
-index 2b19781c0..77499dad8 100644
---- a/addons/project/gitwidget.cpp
-+++ b/addons/project/gitwidget.cpp
-@@ -514,8 +514,9 @@ void GitWidget::launchExternalDiffTool(const QString &file, bool staged)
- args.append(file);
-
- QProcess git;
-- setupGitProcess(git, m_gitPath, args);
-- git.startDetached();
-+ if (setupGitProcess(git, m_gitPath, args)) {
-+ git.startDetached();
-+ }
- }
-
- void GitWidget::commitChanges(const QString &msg, const QString &desc, bool signOff, bool amend)
-@@ -745,7 +746,12 @@ void GitWidget::branchCompareFiles(const QString &from, const QString &to)
- auto args = QStringList{QStringLiteral("diff"), QStringLiteral("%1...%2").arg(from).arg(to), QStringLiteral("--name-status")};
-
- QProcess git;
-- setupGitProcess(git, m_gitPath, args);
-+
-+ // early out if we can't find git
-+ if (!setupGitProcess(git, m_gitPath, args)) {
-+ return;
-+ }
-+
- git.start(QProcess::ReadOnly);
- if (git.waitForStarted() && git.waitForFinished(-1)) {
- if (git.exitStatus() != QProcess::NormalExit || git.exitCode() != 0) {
-@@ -767,7 +773,12 @@ void GitWidget::branchCompareFiles(const QString &from, const QString &to)
-
- // get --num-stat
- args = QStringList{QStringLiteral("diff"), QStringLiteral("%1...%2").arg(from).arg(to), QStringLiteral("--numstat"), QStringLiteral("-z")};
-- setupGitProcess(git, m_gitPath, args);
-+
-+ // early out if we can't find git
-+ if (!setupGitProcess(git, m_gitPath, args)) {
-+ return;
-+ }
-+
- git.start(QProcess::ReadOnly);
- if (git.waitForStarted() && git.waitForFinished(-1)) {
- if (git.exitStatus() != QProcess::NormalExit || git.exitCode() != 0) {
-diff --git a/addons/project/kateprojectindex.cpp b/addons/project/kateprojectindex.cpp
-index a7d9ec9c1..9fc5b64cb 100644
---- a/addons/project/kateprojectindex.cpp
-+++ b/addons/project/kateprojectindex.cpp
-@@ -9,6 +9,7 @@
-
- #include <QDir>
- #include <QProcess>
-+#include <QStandardPaths>
-
- /**
- * include ctags reading
-@@ -73,6 +74,12 @@ void KateProjectIndex::loadCtags(const QStringList &files, const QVariantMap &ct
- */
- m_ctagsIndexFile->close();
-
-+ // only use ctags from PATH
-+ static const auto fullExecutablePath = QStandardPaths::findExecutable(QStringLiteral("ctags"));
-+ if (fullExecutablePath.isEmpty()) {
-+ return;
-+ }
-+
- /**
- * try to run ctags for all files in this project
- * output to our ctags index file
-@@ -85,7 +92,7 @@ void KateProjectIndex::loadCtags(const QStringList &files, const QVariantMap &ct
- for (const QVariant &optVariant : opts) {
- args << optVariant.toString();
- }
-- ctags.start(QStringLiteral("ctags"), args);
-+ ctags.start(fullExecutablePath, args);
- if (!ctags.waitForStarted()) {
- return;
- }
-diff --git a/addons/project/kateprojectinfoviewcodeanalysis.cpp b/addons/project/kateprojectinfoviewcodeanalysis.cpp
-index 21cd26a84..23b82c45e 100644
---- a/addons/project/kateprojectinfoviewcodeanalysis.cpp
-+++ b/addons/project/kateprojectinfoviewcodeanalysis.cpp
-@@ -13,6 +13,7 @@
-
- #include <QFileInfo>
- #include <QHBoxLayout>
-+#include <QStandardPaths>
- #include <QToolTip>
- #include <QVBoxLayout>
-
-@@ -134,14 +135,18 @@ void KateProjectInfoViewCodeAnalysis::slotStartStopClicked()
- connect(m_analyzer, &QProcess::readyRead, this, &KateProjectInfoViewCodeAnalysis::slotReadyRead);
- connect(m_analyzer, static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), this, &KateProjectInfoViewCodeAnalysis::finished);
-
-- m_analyzer->start(m_analysisTool->path(), m_analysisTool->arguments());
-+ // ensure we only run the code analyzer from PATH
-+ const QString fullExecutable = QStandardPaths::findExecutable(m_analysisTool->path());
-+ if (!fullExecutable.isEmpty()) {
-+ m_analyzer->start(fullExecutable, m_analysisTool->arguments());
-+ }
-
- if (m_messageWidget) {
- delete m_messageWidget;
- m_messageWidget = nullptr;
- }
-
-- if (!m_analyzer->waitForStarted()) {
-+ if (fullExecutable.isEmpty() || !m_analyzer->waitForStarted()) {
- m_messageWidget = new KMessageWidget(this);
- m_messageWidget->setCloseButtonVisible(true);
- m_messageWidget->setMessageType(KMessageWidget::Warning);
-diff --git a/addons/project/kateprojectworker.cpp b/addons/project/kateprojectworker.cpp
-index d1979d1ec..831dae89b 100644
---- a/addons/project/kateprojectworker.cpp
-+++ b/addons/project/kateprojectworker.cpp
-@@ -18,6 +18,7 @@
- #include <QRegularExpression>
- #include <QSet>
- #include <QSettings>
-+#include <QStandardPaths>
- #include <QThread>
- #include <QTime>
- #include <QtConcurrent>
-@@ -442,10 +443,12 @@ QVector<QString> KateProjectWorker::filesFromGit(const QDir &dir, bool recursive
-
- QVector<QString> KateProjectWorker::gitFiles(const QDir &dir, bool recursive, const QStringList &args)
- {
-+ QVector<QString> files;
- QProcess git;
-- setupGitProcess(git, dir.absolutePath(), args);
-+ if (!setupGitProcess(git, dir.absolutePath(), args)) {
-+ return files;
-+ }
- git.start(QProcess::ReadOnly);
-- QVector<QString> files;
- if (!git.waitForStarted() || !git.waitForFinished(-1)) {
- return files;
- }
-@@ -466,13 +469,18 @@ QVector<QString> KateProjectWorker::gitFiles(const QDir &dir, bool recursive, co
-
- QVector<QString> KateProjectWorker::filesFromMercurial(const QDir &dir, bool recursive)
- {
-+ // only use version control from PATH
- QVector<QString> files;
-+ static const auto fullExecutablePath = QStandardPaths::findExecutable(QStringLiteral("hg"));
-+ if (fullExecutablePath.isEmpty()) {
-+ return files;
-+ }
-
- QProcess hg;
- hg.setWorkingDirectory(dir.absolutePath());
- QStringList args;
- args << QStringLiteral("manifest") << QStringLiteral(".");
-- hg.start(QStringLiteral("hg"), args, QProcess::ReadOnly);
-+ hg.start(fullExecutablePath, args, QProcess::ReadOnly);
- if (!hg.waitForStarted() || !hg.waitForFinished(-1)) {
- return files;
- }
-@@ -493,7 +501,12 @@ QVector<QString> KateProjectWorker::filesFromMercurial(const QDir &dir, bool rec
-
- QVector<QString> KateProjectWorker::filesFromSubversion(const QDir &dir, bool recursive)
- {
-+ // only use version control from PATH
- QVector<QString> files;
-+ static const auto fullExecutablePath = QStandardPaths::findExecutable(QStringLiteral("svn"));
-+ if (fullExecutablePath.isEmpty()) {
-+ return files;
-+ }
-
- QProcess svn;
- svn.setWorkingDirectory(dir.absolutePath());
-@@ -504,7 +517,7 @@ QVector<QString> KateProjectWorker::filesFromSubversion(const QDir &dir, bool re
- } else {
- args << QStringLiteral("--depth=files");
- }
-- svn.start(QStringLiteral("svn"), args, QProcess::ReadOnly);
-+ svn.start(fullExecutablePath, args, QProcess::ReadOnly);
- if (!svn.waitForStarted() || !svn.waitForFinished(-1)) {
- return files;
- }
-@@ -555,18 +568,21 @@ QVector<QString> KateProjectWorker::filesFromSubversion(const QDir &dir, bool re
-
- QVector<QString> KateProjectWorker::filesFromDarcs(const QDir &dir, bool recursive)
- {
-+ // only use version control from PATH
- QVector<QString> files;
-+ static const auto fullExecutablePath = QStandardPaths::findExecutable(QStringLiteral("darcs"));
-+ if (fullExecutablePath.isEmpty()) {
-+ return files;
-+ }
-
-- const QString cmd = QStringLiteral("darcs");
- QString root;
--
- {
- QProcess darcs;
- darcs.setWorkingDirectory(dir.absolutePath());
- QStringList args;
- args << QStringLiteral("list") << QStringLiteral("repo");
-
-- darcs.start(cmd, args, QProcess::ReadOnly);
-+ darcs.start(fullExecutablePath, args, QProcess::ReadOnly);
-
- if (!darcs.waitForStarted() || !darcs.waitForFinished(-1)) {
- return files;
-@@ -590,7 +606,7 @@ QVector<QString> KateProjectWorker::filesFromDarcs(const QDir &dir, bool recursi
- darcs.setWorkingDirectory(dir.absolutePath());
- args << QStringLiteral("list") << QStringLiteral("files") << QStringLiteral("--no-directories") << QStringLiteral("--pending");
-
-- darcs.start(cmd, args, QProcess::ReadOnly);
-+ darcs.start(fullExecutablePath, args, QProcess::ReadOnly);
-
- if (!darcs.waitForStarted() || !darcs.waitForFinished(-1)) {
- return files;
-diff --git a/addons/project/stashdialog.cpp b/addons/project/stashdialog.cpp
-index c623182a8..bddedf709 100644
---- a/addons/project/stashdialog.cpp
-+++ b/addons/project/stashdialog.cpp
-@@ -32,6 +32,8 @@
-
- #include <kfts_fuzzy_match.h>
-
-+#include <gitprocess.h>
-+
- constexpr int StashIndexRole = Qt::UserRole + 2;
-
- class StashFilterModel final : public QSortFilterProxyModel
-@@ -218,11 +220,10 @@ void StashDialog::slotReturnPressed()
- hide();
- }
-
--QProcess *StashDialog::gitp()
-+QProcess *StashDialog::gitp(const QStringList &arguments)
- {
- auto git = new QProcess(this);
-- git->setProgram(QStringLiteral("git"));
-- git->setWorkingDirectory(m_gitPath);
-+ setupGitProcess(*git, m_gitPath, arguments);
- return git;
- }
-
-@@ -242,7 +243,7 @@ void StashDialog::stash(bool keepIndex, bool includeUntracked)
- args.append(m_lineEdit.text());
- }
-
-- auto git = gitp();
-+ auto git = gitp(args);
- connect(git, &QProcess::finished, this, [this, git](int exitCode, QProcess::ExitStatus es) {
- if (es != QProcess::NormalExit || exitCode != 0) {
- qWarning() << git->errorString();
-@@ -253,14 +254,12 @@ void StashDialog::stash(bool keepIndex, bool includeUntracked)
- Q_EMIT done();
- git->deleteLater();
- });
-- git->setArguments(args);
- git->start(QProcess::ReadOnly);
- }
-
- void StashDialog::getStashList()
- {
-- auto git = gitp();
-- git->setArguments({QStringLiteral("stash"), QStringLiteral("list")});
-+ auto git = gitp({QStringLiteral("stash"), QStringLiteral("list")});
- git->start(QProcess::ReadOnly);
-
- QList<QByteArray> stashList;
-@@ -293,11 +292,11 @@ void StashDialog::getStashList()
-
- void StashDialog::popStash(const QByteArray &index, const QString &command)
- {
-- auto git = gitp();
- QStringList args{QStringLiteral("stash"), command};
- if (!index.isEmpty()) {
- args.append(QString::fromUtf8(index));
- }
-+ auto git = gitp(args);
-
- connect(git, &QProcess::finished, this, [this, command, git](int exitCode, QProcess::ExitStatus es) {
- if (es != QProcess::NormalExit || exitCode != 0) {
-@@ -320,7 +319,6 @@ void StashDialog::popStash(const QByteArray &index, const QString &command)
- Q_EMIT done();
- git->deleteLater();
- });
-- git->setArguments(args);
- git->start(QProcess::ReadOnly);
- }
-
-@@ -339,9 +337,8 @@ void StashDialog::showStash(const QByteArray &index)
- if (index.isEmpty()) {
- return;
- }
-- auto git = gitp();
-
-- QStringList args{QStringLiteral("stash"), QStringLiteral("show"), QStringLiteral("-p"), QString::fromUtf8(index)};
-+ auto git = gitp({QStringLiteral("stash"), QStringLiteral("show"), QStringLiteral("-p"), QString::fromUtf8(index)});
-
- connect(git, &QProcess::finished, this, [this, git](int exitCode, QProcess::ExitStatus es) {
- if (es != QProcess::NormalExit || exitCode != 0) {
-@@ -353,6 +350,5 @@ void StashDialog::showStash(const QByteArray &index)
- git->deleteLater();
- });
-
-- git->setArguments(args);
- git->start(QProcess::ReadOnly);
- }
-diff --git a/addons/project/stashdialog.h b/addons/project/stashdialog.h
-index a18d42ab9..417690757 100644
---- a/addons/project/stashdialog.h
-+++ b/addons/project/stashdialog.h
-@@ -56,7 +56,7 @@ protected Q_SLOTS:
- void slotReturnPressed() override;
-
- private:
-- QProcess *gitp();
-+ QProcess *gitp(const QStringList &arguments);
- void stash(bool keepIndex, bool includeUntracked);
- void getStashList();
- void popStash(const QByteArray &index, const QString &command = QStringLiteral("pop"));
-diff --git a/addons/replicode/replicodeview.cpp b/addons/replicode/replicodeview.cpp
-index 0199f46ce..7f70ee1ea 100644
---- a/addons/replicode/replicodeview.cpp
-+++ b/addons/replicode/replicodeview.cpp
-@@ -8,7 +8,9 @@
-
- #include "replicodeconfig.h"
- #include "replicodesettings.h"
-+
- #include <QPushButton>
-+#include <QStandardPaths>
- #include <QTemporaryFile>
- #include <QtGlobal>
-
-@@ -116,7 +118,14 @@ void ReplicodeView::runReplicode()
- }
-
- KConfigGroup config(KSharedConfig::openConfig(), QStringLiteral("Replicode"));
-+
- QString executorPath = config.readEntry<QString>("replicodePath", QString());
-+
-+ // ensure we only call replicode from PATH if not given as absolute path already
-+ if (!executorPath.isEmpty() && !QFileInfo(executorPath).isAbsolute()) {
-+ executorPath = QStandardPaths::findExecutable(executorPath);
-+ }
-+
- if (executorPath.isEmpty()) {
- QMessageBox::warning(m_mainWindow->window(),
- i18nc("@title:window", "Replicode Executable Not Found"),
-diff --git a/addons/xmlcheck/plugin_katexmlcheck.cpp b/addons/xmlcheck/plugin_katexmlcheck.cpp
-index f1d52f3a7..3971550cd 100644
---- a/addons/xmlcheck/plugin_katexmlcheck.cpp
-+++ b/addons/xmlcheck/plugin_katexmlcheck.cpp
-@@ -304,10 +304,18 @@ bool PluginKateXMLCheckView::slotValidate()
- s << kv->document()->text();
- s.flush();
-
-+ // ensure we only execute xmllint from PATH or application package
- QString exe = QStandardPaths::findExecutable(QStringLiteral("xmllint"));
- if (exe.isEmpty()) {
- exe = QStandardPaths::locate(QStandardPaths::ApplicationsLocation, QStringLiteral("xmllint"));
- }
-+ if (exe.isEmpty()) {
-+ KMessageBox::error(nullptr,
-+ i18n("<b>Error:</b> Failed to find xmllint. Please make "
-+ "sure that xmllint is installed. It is part of libxml2."));
-+ return false;
-+ }
-+
- // qDebug() << "exe=" <<exe;
- // // use catalogs for KDE docbook:
- // if( ! getenv("XML_CATALOG_FILES") ) {
-diff --git a/kate/katefileactions.cpp b/kate/katefileactions.cpp
-index c56c7e1c8..09a23686c 100644
---- a/kate/katefileactions.cpp
-+++ b/kate/katefileactions.cpp
-@@ -23,6 +23,7 @@
- #include <QDebug>
- #include <QInputDialog>
- #include <QProcess>
-+#include <QStandardPaths>
- #include <QUrl>
-
- void KateFileActions::copyFilePathToClipboard(KTextEditor::Document *doc)
-@@ -137,17 +138,13 @@ void KateFileActions::deleteDocumentFile(QWidget *parent, KTextEditor::Document
- }
- }
-
--QStringList KateFileActions::supportedDiffTools()
-+QVector<std::pair<QString, QString>> KateFileActions::supportedDiffTools()
- {
-- // LATER: check for program existence and set some boolean value accordingly
-- // Can this be even done in an easy way when we don't use the absolute path to the executable?
-- // See https://stackoverflow.com/questions/42444055/how-to-check-if-a-program-exists-in-path-using-qt
--
-- QStringList resultList;
-- resultList.push_back(QStringLiteral("kdiff3"));
-- resultList.push_back(QStringLiteral("kompare"));
-- resultList.push_back(QStringLiteral("meld"));
--
-+ // query once if the tools are there in the path and store that
-+ // we will disable the actions for the tools not found
-+ static QVector<std::pair<QString, QString>> resultList{{QStringLiteral("kdiff3"), QStandardPaths::findExecutable(QStringLiteral("kdiff3"))},
-+ {QStringLiteral("kompare"), QStandardPaths::findExecutable(QStringLiteral("kompare"))},
-+ {QStringLiteral("meld"), QStandardPaths::findExecutable(QStringLiteral("meld"))}};
- return resultList;
- }
-
-diff --git a/kate/katefileactions.h b/kate/katefileactions.h
-index 524d81097..77cc5b0bf 100644
---- a/kate/katefileactions.h
-+++ b/kate/katefileactions.h
-@@ -51,9 +51,9 @@ void openFilePropertiesDialog(KTextEditor::Document *document);
- void deleteDocumentFile(QWidget *parent, KTextEditor::Document *document);
-
- /**
-- * @returns a list of supported diff tools (names of the executables)
-+ * @returns a list of supported diff tools (names of the executables + paths to them, empty if not found in PATH)
- */
--QStringList supportedDiffTools();
-+QVector<std::pair<QString, QString>> supportedDiffTools();
-
- /**
- * Runs an external program to compare the underlying files of two given documents.
-diff --git a/kate/katemwmodonhddialog.cpp b/kate/katemwmodonhddialog.cpp
-index e0041d858..d7c79e4d4 100644
---- a/kate/katemwmodonhddialog.cpp
-+++ b/kate/katemwmodonhddialog.cpp
-@@ -22,6 +22,7 @@
- #include <QHeaderView>
- #include <QLabel>
- #include <QPushButton>
-+#include <QStandardPaths>
- #include <QStyle>
- #include <QTemporaryFile>
- #include <QTextStream>
-@@ -52,6 +53,7 @@ public:
-
- KateMwModOnHdDialog::KateMwModOnHdDialog(DocVector docs, QWidget *parent, const char *name)
- : QDialog(parent)
-+ , m_fullDiffPath(QStandardPaths::findExecutable(QStringLiteral("diff")))
- , m_proc(nullptr)
- , m_diffFile(nullptr)
- , m_blockAddDocument(false)
-@@ -108,6 +110,7 @@ KateMwModOnHdDialog::KateMwModOnHdDialog(DocVector docs, QWidget *parent, const
- "file for the selected document, and shows the difference with the "
- "default application. Requires diff(1)."));
- hb->addWidget(btnDiff);
-+ btnDiff->setEnabled(!m_fullDiffPath.isEmpty());
- connect(btnDiff, &QPushButton::clicked, this, &KateMwModOnHdDialog::slotDiff);
-
- // Dialog buttons
-@@ -288,9 +291,10 @@ void KateMwModOnHdDialog::slotDiff()
- m_diffFile->open();
-
- // Start a KProcess that creates a diff
-+ // We use the full path to don't launch some random "diff" in current working directory
- m_proc = new KProcess(this);
- m_proc->setOutputChannelMode(KProcess::MergedChannels);
-- *m_proc << QStringLiteral("diff") << QStringLiteral("-ub") << QStringLiteral("-") << doc->url().toLocalFile();
-+ *m_proc << m_fullDiffPath << QStringLiteral("-ub") << QStringLiteral("-") << doc->url().toLocalFile();
- connect(m_proc, &KProcess::readyRead, this, &KateMwModOnHdDialog::slotDataAvailable);
- connect(m_proc, static_cast<void (KProcess::*)(int, QProcess::ExitStatus)>(&KProcess::finished), this, &KateMwModOnHdDialog::slotPDone);
-
-diff --git a/kate/katemwmodonhddialog.h b/kate/katemwmodonhddialog.h
-index 11c09eab7..6fa245726 100644
---- a/kate/katemwmodonhddialog.h
-+++ b/kate/katemwmodonhddialog.h
-@@ -51,6 +51,7 @@ private:
- class QTreeWidget *twDocuments;
- class QDialogButtonBox *dlgButtons;
- class QPushButton *btnDiff;
-+ QString m_fullDiffPath;
- KProcess *m_proc;
- QTemporaryFile *m_diffFile;
- QStringList m_stateTexts;
-diff --git a/kate/kateviewspace.cpp b/kate/kateviewspace.cpp
-index dba2fb973..af3bb8d34 100644
---- a/kate/kateviewspace.cpp
-+++ b/kate/kateviewspace.cpp
-@@ -678,8 +678,11 @@ void KateViewSpace::showContextMenu(int idx, const QPoint &globalPos)
-
- if (mCompareWithActive->isEnabled()) {
- for (auto &&diffTool : KateFileActions::supportedDiffTools()) {
-- QAction *compareAction = mCompareWithActive->addAction(diffTool);
-- compareAction->setData(diffTool);
-+ QAction *compareAction = mCompareWithActive->addAction(diffTool.first);
-+
-+ // we use the full path to safely execute the tool, disable action if no full path => tool not found
-+ compareAction->setData(diffTool.second);
-+ compareAction->setEnabled(!diffTool.second.isEmpty());
- }
- }
-
-diff --git a/shared/gitprocess.h b/shared/gitprocess.h
-index 47b98b696..b0d79fac6 100644
---- a/shared/gitprocess.h
-+++ b/shared/gitprocess.h
-@@ -7,6 +7,7 @@
- #pragma once
-
- #include <QProcess>
-+#include <QStandardPaths>
-
- /**
- * small helper function to setup a QProcess based "git" command.
-@@ -17,10 +18,20 @@
- * @param process process to setup for git
- * @param workingDirectory working directory to use for process
- * @param arguments arguments to pass to git
-+ * @return could set setup the process or did that fail, e.g. because the git executable is not available?
- */
--inline void setupGitProcess(QProcess &process, const QString &workingDirectory, const QStringList &arguments)
-+inline bool setupGitProcess(QProcess &process, const QString &workingDirectory, const QStringList &arguments)
- {
-- process.setProgram(QStringLiteral("git"));
-+ // only use git from PATH
-+ static const auto gitExecutable = QStandardPaths::findExecutable(QStringLiteral("git"));
-+ if (gitExecutable.isEmpty()) {
-+ // ensure we have no valid QProcess setup
-+ process.setProgram(QString());
-+ return false;
-+ }
-+
-+ // setup program and arguments, ensure we do run git in the right working directory
-+ process.setProgram(gitExecutable);
- process.setWorkingDirectory(workingDirectory);
- process.setArguments(arguments);
-
-@@ -37,4 +48,5 @@ inline void setupGitProcess(QProcess &process, const QString &workingDirectory,
- QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
- env.insert(QStringLiteral("GIT_OPTIONAL_LOCKS"), QStringLiteral("0"));
- process.setProcessEnvironment(env);
-+ return true;
- }
---
-GitLab
-
diff --git a/source/kde/kde/patch/kate/92a9c65e30b4b63b8b116eb5c8dcb1e1a2d867bc.patch b/source/kde/kde/patch/kate/92a9c65e30b4b63b8b116eb5c8dcb1e1a2d867bc.patch
deleted file mode 100644
index 6900a46c0..000000000
--- a/source/kde/kde/patch/kate/92a9c65e30b4b63b8b116eb5c8dcb1e1a2d867bc.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 92a9c65e30b4b63b8b116eb5c8dcb1e1a2d867bc Mon Sep 17 00:00:00 2001
-From: Waqar Ahmed <waqar.17a@gmail.com>
-Date: Sun, 16 Jan 2022 18:39:50 +0500
-Subject: [PATCH] step down warning level when LSP not found
-
-Currently it gives an error which results in the widget popping up
-everytime you open a file for which you don't have LSP. However, one may
-have intentionally not installed the LSP for a language.
-
-BUG: 448549
----
- addons/lspclient/lspclientservermanager.cpp | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/addons/lspclient/lspclientservermanager.cpp b/addons/lspclient/lspclientservermanager.cpp
-index 551926e23..24e3f275b 100644
---- a/addons/lspclient/lspclientservermanager.cpp
-+++ b/addons/lspclient/lspclientservermanager.cpp
-@@ -737,13 +737,13 @@ private:
- server.reset(new LSPClientServer(cmdline, root, realLangId, serverConfig.value(QStringLiteral("initializationOptions")), folders));
- connect(server.data(), &LSPClientServer::stateChanged, this, &self_type::onStateChanged, Qt::UniqueConnection);
- if (!server->start()) {
-- QString errorMessage = i18n("Failed to start server: %1", cmdline.join(QLatin1Char(' ')));
-+ QString message = i18n("Failed to start server: %1", cmdline.join(QLatin1Char(' ')));
- const auto url = serverConfig.value(QStringLiteral("url")).toString();
- if (!url.isEmpty()) {
-- errorMessage += QStringLiteral("\n") + i18n("Please check your PATH for the binary");
-- errorMessage += QStringLiteral("\n") + i18n("See also %1 for installation or details", url);
-+ message += QStringLiteral("\n") + i18n("Please check your PATH for the binary");
-+ message += QStringLiteral("\n") + i18n("See also %1 for installation or details", url);
- }
-- showMessage(errorMessage, KTextEditor::Message::Error);
-+ showMessage(message, KTextEditor::Message::Warning);
- } else {
- showMessage(i18n("Started server %2: %1", cmdline.join(QLatin1Char(' ')), serverDescription(server.data())),
- KTextEditor::Message::Positive);
---
-GitLab
-
diff --git a/source/kde/kde/patch/kate/c5d66f3b70ae4778d6162564309aee95f643e7c9.patch b/source/kde/kde/patch/kate/c5d66f3b70ae4778d6162564309aee95f643e7c9.patch
deleted file mode 100644
index cc3f058d7..000000000
--- a/source/kde/kde/patch/kate/c5d66f3b70ae4778d6162564309aee95f643e7c9.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From c5d66f3b70ae4778d6162564309aee95f643e7c9 Mon Sep 17 00:00:00 2001
-From: Christoph Cullmann <cullmann@kde.org>
-Date: Thu, 20 Jan 2022 21:00:09 +0100
-Subject: [PATCH] avoid that we execute LSP binaries from cwd
-
-QProcess will just use current working directory as
-fallback
-
-that allows to execute un-wanted binaries by accident
----
- addons/lspclient/lspclientservermanager.cpp | 87 ++++++++++++---------
- 1 file changed, 51 insertions(+), 36 deletions(-)
-
-diff --git a/addons/lspclient/lspclientservermanager.cpp b/addons/lspclient/lspclientservermanager.cpp
-index 24e3f275b..e78b4aa2d 100644
---- a/addons/lspclient/lspclientservermanager.cpp
-+++ b/addons/lspclient/lspclientservermanager.cpp
-@@ -707,52 +707,67 @@ private:
- }
-
- if (cmdline.length() > 0) {
-+ // ensure we always only take the server executable from the PATH or user defined paths
-+ // QProcess will take the executable even just from current working directory without this => BAD
-+ auto cmd = QStandardPaths::findExecutable(cmdline[0]);
-+
- // optionally search in supplied path(s)
-- auto vpath = serverConfig.value(QStringLiteral("path")).toArray();
-- if (vpath.size() > 0) {
-- auto cmd = QStandardPaths::findExecutable(cmdline[0]);
-- if (cmd.isEmpty()) {
-- // collect and expand in case home dir or other (environment) variable reference is used
-- QStringList path;
-- for (const auto &e : vpath) {
-- auto p = e.toString();
-- editor->expandText(p, view, p);
-- path.push_back(p);
-- }
-- cmd = QStandardPaths::findExecutable(cmdline[0], path);
-- if (!cmd.isEmpty()) {
-- cmdline[0] = cmd;
-- }
-+ const auto vpath = serverConfig.value(QStringLiteral("path")).toArray();
-+ if (cmd.isEmpty() && !vpath.isEmpty()) {
-+ // collect and expand in case home dir or other (environment) variable reference is used
-+ QStringList path;
-+ for (const auto &e : vpath) {
-+ auto p = e.toString();
-+ editor->expandText(p, view, p);
-+ path.push_back(p);
- }
-+ cmd = QStandardPaths::findExecutable(cmdline[0], path);
- }
-- // an empty list is always passed here (or null)
-- // the initial list is provided/updated using notification after start
-- // since that is what a server is more aware of
-- // and should support if it declares workspace folder capable
-- // (as opposed to the new initialization property)
-- LSPClientServer::FoldersType folders;
-- if (useWorkspace) {
-- folders = QList<LSPWorkspaceFolder>();
-- }
-- server.reset(new LSPClientServer(cmdline, root, realLangId, serverConfig.value(QStringLiteral("initializationOptions")), folders));
-- connect(server.data(), &LSPClientServer::stateChanged, this, &self_type::onStateChanged, Qt::UniqueConnection);
-- if (!server->start()) {
-- QString message = i18n("Failed to start server: %1", cmdline.join(QLatin1Char(' ')));
-+
-+ // we can only start the stuff if we did find the binary in the paths
-+ if (!cmd.isEmpty()) {
-+ // use full path to avoid security issues
-+ cmdline[0] = cmd;
-+
-+ // an empty list is always passed here (or null)
-+ // the initial list is provided/updated using notification after start
-+ // since that is what a server is more aware of
-+ // and should support if it declares workspace folder capable
-+ // (as opposed to the new initialization property)
-+ LSPClientServer::FoldersType folders;
-+ if (useWorkspace) {
-+ folders = QList<LSPWorkspaceFolder>();
-+ }
-+ server.reset(new LSPClientServer(cmdline, root, realLangId, serverConfig.value(QStringLiteral("initializationOptions")), folders));
-+ connect(server.data(), &LSPClientServer::stateChanged, this, &self_type::onStateChanged, Qt::UniqueConnection);
-+ if (!server->start()) {
-+ QString message = i18n("Failed to start server: %1", cmdline.join(QLatin1Char(' ')));
-+ const auto url = serverConfig.value(QStringLiteral("url")).toString();
-+ if (!url.isEmpty()) {
-+ message += QStringLiteral("\n") + i18n("Please check your PATH for the binary");
-+ message += QStringLiteral("\n") + i18n("See also %1 for installation or details", url);
-+ }
-+ showMessage(message, KTextEditor::Message::Warning);
-+ } else {
-+ showMessage(i18n("Started server %2: %1", cmdline.join(QLatin1Char(' ')), serverDescription(server.data())),
-+ KTextEditor::Message::Positive);
-+ using namespace std::placeholders;
-+ server->connect(server.data(), &LSPClientServer::logMessage, this, std::bind(&self_type::onMessage, this, true, _1));
-+ server->connect(server.data(), &LSPClientServer::showMessage, this, std::bind(&self_type::onMessage, this, false, _1));
-+ server->connect(server.data(), &LSPClientServer::workDoneProgress, this, &self_type::onWorkDoneProgress);
-+ server->connect(server.data(), &LSPClientServer::workspaceFolders, this, &self_type::onWorkspaceFolders, Qt::UniqueConnection);
-+ }
-+ } else {
-+ // we didn't find the server binary at all!
-+ QString message = i18n("Failed to find server binary: %1", cmdline[0]);
- const auto url = serverConfig.value(QStringLiteral("url")).toString();
- if (!url.isEmpty()) {
- message += QStringLiteral("\n") + i18n("Please check your PATH for the binary");
- message += QStringLiteral("\n") + i18n("See also %1 for installation or details", url);
- }
- showMessage(message, KTextEditor::Message::Warning);
-- } else {
-- showMessage(i18n("Started server %2: %1", cmdline.join(QLatin1Char(' ')), serverDescription(server.data())),
-- KTextEditor::Message::Positive);
-- using namespace std::placeholders;
-- server->connect(server.data(), &LSPClientServer::logMessage, this, std::bind(&self_type::onMessage, this, true, _1));
-- server->connect(server.data(), &LSPClientServer::showMessage, this, std::bind(&self_type::onMessage, this, false, _1));
-- server->connect(server.data(), &LSPClientServer::workDoneProgress, this, &self_type::onWorkDoneProgress);
-- server->connect(server.data(), &LSPClientServer::workspaceFolders, this, &self_type::onWorkspaceFolders, Qt::UniqueConnection);
- }
-+
- serverinfo.settings = serverConfig.value(QStringLiteral("settings"));
- serverinfo.started = QTime::currentTime();
- serverinfo.url = serverConfig.value(QStringLiteral("url")).toString();
---
-GitLab
-
diff --git a/source/kde/kde/patch/kinfocenter.patch b/source/kde/kde/patch/kinfocenter.patch
deleted file mode 100644
index b57d434fc..000000000
--- a/source/kde/kde/patch/kinfocenter.patch
+++ /dev/null
@@ -1,2 +0,0 @@
-# Fix linking error :
-cat $CWD/patch/kinfocenter/kinfocenter_libpci.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kinfocenter/kinfocenter_libpci.patch b/source/kde/kde/patch/kinfocenter/kinfocenter_libpci.patch
deleted file mode 100644
index a2bc00796..000000000
--- a/source/kde/kde/patch/kinfocenter/kinfocenter_libpci.patch
+++ /dev/null
@@ -1,17 +0,0 @@
---- kinfocenter-5.5.5/cmake/FindPCIUTILS.cmake.orig 2016-03-01 14:32:01.000000000 +0100
-+++ kinfocenter-5.5.5/cmake/FindPCIUTILS.cmake 2016-03-11 13:00:12.412315320 +0100
-@@ -19,6 +19,14 @@
- else(RESOLV_LIBRARY)
- set(PCIUTILS_LIBRARIES ${PCIUTILS_LIBRARY})
- endif(RESOLV_LIBRARY)
-+ FIND_LIBRARY(UDEV_LIBRARY NAMES udev)
-+ if(UDEV_LIBRARY)
-+ set(PCIUTILS_LIBRARIES ${PCIUTILS_LIBRARIES} ${UDEV_LIBRARY})
-+ endif(UDEV_LIBRARY)
-+ FIND_LIBRARY(ZLIB_LIBRARY NAMES z)
-+ if(ZLIB_LIBRARY)
-+ set(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
-+ endif(ZLIB_LIBRARY)
- endif(PCIUTILS_LIBRARY)
-
-
diff --git a/source/kde/kde/patch/kscreen.patch b/source/kde/kde/patch/kscreen.patch
deleted file mode 100644
index 7b0a24332..000000000
--- a/source/kde/kde/patch/kscreen.patch
+++ /dev/null
@@ -1 +0,0 @@
-cat $CWD/patch/kscreen/57.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kscreen/57.patch b/source/kde/kde/patch/kscreen/57.patch
deleted file mode 100644
index bb8befc91..000000000
--- a/source/kde/kde/patch/kscreen/57.patch
+++ /dev/null
@@ -1,189 +0,0 @@
-From 4d025b68022405ce889b563ed67646ccbfe4a658 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com>
-Date: Mon, 29 Nov 2021 17:15:26 +0100
-Subject: [PATCH 1/4] Compute logicalSize taking into account current config
-
-BUG: 441417
----
- kcm/output_identifier.cpp | 2 +-
- kcm/output_model.cpp | 23 +++++++++++++++--------
- kded/output.cpp | 4 ++--
- 3 files changed, 18 insertions(+), 11 deletions(-)
-
-diff --git a/kcm/output_identifier.cpp b/kcm/output_identifier.cpp
-index a672995..ba51470 100644
---- a/kcm/output_identifier.cpp
-+++ b/kcm/output_identifier.cpp
-@@ -56,7 +56,7 @@ OutputIdentifier::OutputIdentifier(KScreen::ConfigPtr config, QObject *parent)
- }
- if (config->supportedFeatures() & KScreen::Config::Feature::PerOutputScaling) {
- // Scale adjustment is not needed on Wayland, we use logical size.
-- logicalSize = output->logicalSize().toSize();
-+ logicalSize = output->explicitLogicalSize().toSize();
- } else {
- logicalSize = deviceSize / view->effectiveDevicePixelRatio();
- }
-diff --git a/kcm/output_model.cpp b/kcm/output_model.cpp
-index a497c90..020b96f 100644
---- a/kcm/output_model.cpp
-+++ b/kcm/output_model.cpp
-@@ -161,10 +161,13 @@ bool OutputModel::setData(const QModelIndex &index, const QVariant &value, int r
- bool ok;
- const qreal scale = value.toReal(&ok);
- if (ok && !qFuzzyCompare(output.ptr->scale(), scale)) {
-- const auto oldSize = output.ptr->logicalSize().toSize();
-+ const auto oldSize = output.ptr->explicitLogicalSize().toSize();
-+
- output.ptr->setScale(scale);
- m_config->setScale(output.ptr, scale);
-- const auto newSize = output.ptr->logicalSize().toSize();
-+
-+ const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize();
-+ output.ptr->setExplicitLogicalSize(newSize);
-
- maintainSnapping(output, oldSize, newSize);
-
-@@ -385,9 +388,11 @@ bool OutputModel::setResolution(int outputIndex, int resIndex)
- if (output.ptr->currentModeId() == id) {
- return false;
- }
-- const auto oldSize = output.ptr->logicalSize().toSize();
-+ const auto oldSize = output.ptr->explicitLogicalSize().toSize();
- output.ptr->setCurrentModeId(id);
-- const auto newSize = output.ptr->logicalSize().toSize();
-+
-+ const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize();
-+ output.ptr->setExplicitLogicalSize(newSize);
-
- maintainSnapping(output, oldSize, newSize);
-
-@@ -466,9 +471,11 @@ bool OutputModel::setRotation(int outputIndex, KScreen::Output::Rotation rotatio
- if (output.ptr->rotation() == rotation) {
- return false;
- }
-- const auto oldSize = output.ptr->logicalSize().toSize();
-+ const auto oldSize = output.ptr->explicitLogicalSize().toSize();
- output.ptr->setRotation(rotation);
-- const auto newSize = output.ptr->logicalSize().toSize();
-+
-+ const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize();
-+ output.ptr->setExplicitLogicalSize(newSize);
-
- maintainSnapping(output, oldSize, newSize);
-
-@@ -653,7 +660,7 @@ bool OutputModel::setReplicationSourceIndex(int outputIndex, int sourceIndex)
- return false;
- }
- m_config->setReplicationSource(output.ptr, nullptr);
-- output.ptr->setLogicalSize(QSizeF());
-+ output.ptr->setExplicitLogicalSize(QSizeF());
- resetPosition(output);
- } else {
- const auto source = m_outputs[sourceIndex].ptr;
-@@ -664,7 +671,7 @@ bool OutputModel::setReplicationSourceIndex(int outputIndex, int sourceIndex)
- m_config->setReplicationSource(output.ptr, source);
- output.posReset = output.ptr->pos();
- output.ptr->setPos(source->pos());
-- output.ptr->setLogicalSize(source->logicalSize());
-+ output.ptr->setExplicitLogicalSize(m_config->config()->logicalSizeForOutput(*source));
- }
-
- reposition();
-diff --git a/kded/output.cpp b/kded/output.cpp
-index 7463b8a..44251e5 100644
---- a/kded/output.cpp
-+++ b/kded/output.cpp
-@@ -404,9 +404,9 @@ void Output::readInOutputs(KScreen::ConfigPtr config, const QVariantList &output
- auto replicationSource = control.getReplicationSource(output);
- if (replicationSource) {
- output->setPos(replicationSource->pos());
-- output->setLogicalSize(replicationSource->logicalSize());
-+ output->setExplicitLogicalSize(config->logicalSizeForOutput(*replicationSource));
- } else {
-- output->setLogicalSize(QSizeF());
-+ output->setExplicitLogicalSize(QSizeF());
- }
- }
-
---
-GitLab
-
-
-From 3b90217f21e62285e78fff86ae562c692799e28f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com>
-Date: Tue, 30 Nov 2021 14:58:40 +0100
-Subject: [PATCH 2/4] Update screen size when mode changes
-
----
- kcm/output_model.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/kcm/output_model.cpp b/kcm/output_model.cpp
-index 020b96f..ae01307 100644
---- a/kcm/output_model.cpp
-+++ b/kcm/output_model.cpp
-@@ -390,6 +390,7 @@ bool OutputModel::setResolution(int outputIndex, int resIndex)
- }
- const auto oldSize = output.ptr->explicitLogicalSize().toSize();
- output.ptr->setCurrentModeId(id);
-+ output.ptr->setSize(output.ptr->currentMode()->size());
-
- const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize();
- output.ptr->setExplicitLogicalSize(newSize);
---
-GitLab
-
-
-From ad8d66c2c39c15a9fd668a0a292f4cd970731123 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com>
-Date: Wed, 1 Dec 2021 13:39:21 +0100
-Subject: [PATCH 3/4] Ensure to set outputs explicitLogicalSize upon loading
- config
-
----
- kcm/config_handler.cpp | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/kcm/config_handler.cpp b/kcm/config_handler.cpp
-index d7e7c7c..dabbcb2 100644
---- a/kcm/config_handler.cpp
-+++ b/kcm/config_handler.cpp
-@@ -78,6 +78,8 @@ void ConfigHandler::resetScale(const KScreen::OutputPtr &output)
-
- void ConfigHandler::initOutput(const KScreen::OutputPtr &output)
- {
-+ output->setExplicitLogicalSize(config()->logicalSizeForOutput(*output));
-+
- if (output->isConnected()) {
- resetScale(output);
- m_outputs->add(output);
---
-GitLab
-
-
-From ad7dda0b64c6f76066cdd199b0aa6ed2e2982f88 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com>
-Date: Wed, 1 Dec 2021 14:40:32 +0100
-Subject: [PATCH 4/4] Fix output identifier window positioning in wayland with
- some scale
-
----
- kcm/output_identifier.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/kcm/output_identifier.cpp b/kcm/output_identifier.cpp
-index ba51470..d21d36f 100644
---- a/kcm/output_identifier.cpp
-+++ b/kcm/output_identifier.cpp
-@@ -56,7 +56,7 @@ OutputIdentifier::OutputIdentifier(KScreen::ConfigPtr config, QObject *parent)
- }
- if (config->supportedFeatures() & KScreen::Config::Feature::PerOutputScaling) {
- // Scale adjustment is not needed on Wayland, we use logical size.
-- logicalSize = output->explicitLogicalSize().toSize();
-+ logicalSize = config->logicalSizeForOutput(*output.data()).toSize();
- } else {
- logicalSize = deviceSize / view->effectiveDevicePixelRatio();
- }
---
-GitLab
-
diff --git a/source/kde/kde/patch/kwayland-server.patch b/source/kde/kde/patch/kwayland-server.patch
deleted file mode 100644
index f1b4e7273..000000000
--- a/source/kde/kde/patch/kwayland-server.patch
+++ /dev/null
@@ -1 +0,0 @@
-cat $CWD/patch/kwayland-server/5f5bea1648590f24f11ce232eb78112953a4d20e.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kwayland-server/5f5bea1648590f24f11ce232eb78112953a4d20e.patch b/source/kde/kde/patch/kwayland-server/5f5bea1648590f24f11ce232eb78112953a4d20e.patch
deleted file mode 100644
index 50d1314cf..000000000
--- a/source/kde/kde/patch/kwayland-server/5f5bea1648590f24f11ce232eb78112953a4d20e.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 5f5bea1648590f24f11ce232eb78112953a4d20e Mon Sep 17 00:00:00 2001
-From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
-Date: Mon, 10 Jan 2022 13:17:32 +0200
-Subject: [PATCH] Store surface object in tablet cursor using QPointer
-
-The SurfaceInterface can get destroyed and TabletCursorV2 may return a
-dangling pointer.
-
-BUG: 446255
----
- src/server/tablet_v2_interface.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/server/tablet_v2_interface.cpp b/src/server/tablet_v2_interface.cpp
-index 59a4b2fb..8af80603 100644
---- a/src/server/tablet_v2_interface.cpp
-+++ b/src/server/tablet_v2_interface.cpp
-@@ -91,7 +91,7 @@ public:
- TabletCursorV2 *const q;
-
- quint32 m_serial = 0;
-- SurfaceInterface *m_surface = nullptr;
-+ QPointer<SurfaceInterface> m_surface;
- QPoint m_hotspot;
- };
-
---
-GitLab
-
diff --git a/source/kde/kde/patch/libkscreen.patch b/source/kde/kde/patch/libkscreen.patch
deleted file mode 100644
index 13980ceb2..000000000
--- a/source/kde/kde/patch/libkscreen.patch
+++ /dev/null
@@ -1,2 +0,0 @@
-cat $CWD/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch b/source/kde/kde/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch
deleted file mode 100644
index b0e5e7136..000000000
--- a/source/kde/kde/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch
+++ /dev/null
@@ -1,240 +0,0 @@
-From 7eb0390bf70fc7fb5a39bd501ffcc327a07c328a Mon Sep 17 00:00:00 2001
-From: Ilya Pominov <ipominov@astralinux.ru>
-Date: Thu, 23 Sep 2021 14:24:16 +0300
-Subject: [PATCH] XrandR: Fix impossibilty to change resolution in VirtualBox
-
-In VirtualBox KDE runs at low resolution,
-and when you try to change the resolution through the "Screen Settings"
-it returns to the original one again.
-How to check:
-- run KDE neon on VirtualBox
-- change the resolution
-
-VirtualBox sets the hotplug_mode_update property, but its preferred mode
-is always 800x600, and KScreen returns the resolution to 800x600.
-
-Now XRandRCrtc stores the timestamp of the last resolution change
-request from backend, and the timestamp of the last config update from
-X11.
-If the changes were initiated by XRandR backend (i.e. 'timestamp of the
-last config update from X11' less or equal 'last resolution change
-request'), then the followPreferedMode flag in KScreenConfig is set to
-false.
-
-BUG: 407058
----
- backends/xcbeventlistener.cpp | 7 ++++++-
- backends/xcbeventlistener.h | 2 +-
- backends/xrandr/xrandr.cpp | 4 +++-
- backends/xrandr/xrandr.h | 2 +-
- backends/xrandr/xrandrconfig.cpp | 9 +++++++--
- backends/xrandr/xrandrcrtc.cpp | 23 +++++++++++++++++++++++
- backends/xrandr/xrandrcrtc.h | 7 +++++++
- backends/xrandr/xrandroutput.cpp | 2 +-
- 8 files changed, 49 insertions(+), 7 deletions(-)
-
-diff --git a/backends/xcbeventlistener.cpp b/backends/xcbeventlistener.cpp
-index dba81dc..4c3a527 100644
---- a/backends/xcbeventlistener.cpp
-+++ b/backends/xcbeventlistener.cpp
-@@ -139,6 +139,8 @@ void XCBEventListener::handleScreenChange(xcb_generic_event_t *e)
- }
-
- qCDebug(KSCREEN_XCB_HELPER) << "RRScreenChangeNotify";
-+ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << e2->timestamp;
-+ qCDebug(KSCREEN_XCB_HELPER) << "\tConfig_timestamp: " << e2->config_timestamp;
- qCDebug(KSCREEN_XCB_HELPER) << "\tWindow:" << e2->request_window;
- qCDebug(KSCREEN_XCB_HELPER) << "\tRoot:" << e2->root;
- qCDebug(KSCREEN_XCB_HELPER) << "\tRotation: " << rotationToString((xcb_randr_rotation_t)e2->rotation);
-@@ -157,15 +159,17 @@ void XCBEventListener::handleXRandRNotify(xcb_generic_event_t *e)
- if (randrEvent->subCode == XCB_RANDR_NOTIFY_CRTC_CHANGE) {
- xcb_randr_crtc_change_t crtc = randrEvent->u.cc;
- qCDebug(KSCREEN_XCB_HELPER) << "RRNotify_CrtcChange";
-+ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << crtc.timestamp;
- qCDebug(KSCREEN_XCB_HELPER) << "\tCRTC: " << crtc.crtc;
- qCDebug(KSCREEN_XCB_HELPER) << "\tMode: " << crtc.mode;
- qCDebug(KSCREEN_XCB_HELPER) << "\tRotation: " << rotationToString((xcb_randr_rotation_t)crtc.rotation);
- qCDebug(KSCREEN_XCB_HELPER) << "\tGeometry: " << crtc.x << crtc.y << crtc.width << crtc.height;
-- Q_EMIT crtcChanged(crtc.crtc, crtc.mode, (xcb_randr_rotation_t)crtc.rotation, QRect(crtc.x, crtc.y, crtc.width, crtc.height));
-+ Q_EMIT crtcChanged(crtc.crtc, crtc.mode, (xcb_randr_rotation_t)crtc.rotation, QRect(crtc.x, crtc.y, crtc.width, crtc.height), crtc.timestamp);
-
- } else if (randrEvent->subCode == XCB_RANDR_NOTIFY_OUTPUT_CHANGE) {
- xcb_randr_output_change_t output = randrEvent->u.oc;
- qCDebug(KSCREEN_XCB_HELPER) << "RRNotify_OutputChange";
-+ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << output.timestamp;
- qCDebug(KSCREEN_XCB_HELPER) << "\tOutput: " << output.output;
- qCDebug(KSCREEN_XCB_HELPER) << "\tCRTC: " << output.crtc;
- qCDebug(KSCREEN_XCB_HELPER) << "\tMode: " << output.mode;
-@@ -181,6 +185,7 @@ void XCBEventListener::handleXRandRNotify(xcb_generic_event_t *e)
- xcb_get_atom_name_reply(QX11Info::connection(), xcb_get_atom_name(QX11Info::connection(), property.atom), nullptr));
-
- qCDebug(KSCREEN_XCB_HELPER) << "RRNotify_OutputProperty (ignored)";
-+ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << property.timestamp;
- qCDebug(KSCREEN_XCB_HELPER) << "\tOutput: " << property.output;
- qCDebug(KSCREEN_XCB_HELPER) << "\tProperty: " << xcb_get_atom_name_name(reply.data());
- qCDebug(KSCREEN_XCB_HELPER) << "\tState (newValue, Deleted): " << property.status;
-diff --git a/backends/xcbeventlistener.h b/backends/xcbeventlistener.h
-index 35577d9..68136d8 100644
---- a/backends/xcbeventlistener.h
-+++ b/backends/xcbeventlistener.h
-@@ -30,7 +30,7 @@ Q_SIGNALS:
- void outputsChanged();
-
- /* Emitted only when XRandR 1.2 or newer is available */
-- void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom);
-+ void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom, xcb_timestamp_t timestamp);
- void outputChanged(xcb_randr_output_t output, xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_connection_t connection);
- void outputPropertyChanged(xcb_randr_output_t output);
-
-diff --git a/backends/xrandr/xrandr.cpp b/backends/xrandr/xrandr.cpp
-index 71cbd77..115f268 100644
---- a/backends/xrandr/xrandr.cpp
-+++ b/backends/xrandr/xrandr.cpp
-@@ -45,6 +45,7 @@ XRandR::XRandR()
- qRegisterMetaType<xcb_randr_mode_t>("xcb_randr_mode_t");
- qRegisterMetaType<xcb_randr_connection_t>("xcb_randr_connection_t");
- qRegisterMetaType<xcb_randr_rotation_t>("xcb_randr_rotation_t");
-+ qRegisterMetaType<xcb_timestamp_t>("xcb_timestamp_t");
-
- // Use our own connection to make sure that we won't mess up Qt's connection
- // if something goes wrong on our side.
-@@ -143,7 +144,7 @@ void XRandR::outputChanged(xcb_randr_output_t output, xcb_randr_crtc_t crtc, xcb
- qCDebug(KSCREEN_XRANDR) << "Output" << xOutput->id() << ": connected =" << xOutput->isConnected() << ", enabled =" << xOutput->isEnabled();
- }
-
--void XRandR::crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom)
-+void XRandR::crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom, xcb_timestamp_t timestamp)
- {
- XRandRCrtc *xCrtc = s_internalConfig->crtc(crtc);
- if (!xCrtc) {
-@@ -152,6 +153,7 @@ void XRandR::crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr
- xCrtc->update(mode, rotation, geom);
- }
-
-+ xCrtc->updateConfigTimestamp(timestamp);
- m_configChangeCompressor->start();
- }
-
-diff --git a/backends/xrandr/xrandr.h b/backends/xrandr/xrandr.h
-index 91dd7aa..6b998c8 100644
---- a/backends/xrandr/xrandr.h
-+++ b/backends/xrandr/xrandr.h
-@@ -44,7 +44,7 @@ public:
-
- private:
- void outputChanged(xcb_randr_output_t output, xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_connection_t connection);
-- void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom);
-+ void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom, xcb_timestamp_t timestamp);
- void screenChanged(xcb_randr_rotation_t rotation, const QSize &sizePx, const QSize &sizeMm);
-
- static quint8 *getXProperty(xcb_randr_output_t output, xcb_atom_t atom, size_t &len);
-diff --git a/backends/xrandr/xrandrconfig.cpp b/backends/xrandr/xrandrconfig.cpp
-index fa0929c..5cbf4c7 100644
---- a/backends/xrandr/xrandrconfig.cpp
-+++ b/backends/xrandr/xrandrconfig.cpp
-@@ -504,6 +504,8 @@ bool XRandRConfig::disableOutput(const OutputPtr &kscreenOutput) const
- XCB_NONE,
- xOutput->isConnected() ? XCB_RANDR_CONNECTION_CONNECTED : XCB_RANDR_CONNECTION_DISCONNECTED,
- kscreenOutput->isPrimary());
-+ if (xOutput->crtc())
-+ xOutput->crtc()->updateTimestamp(reply->timestamp);
- }
- return (reply->status == XCB_RANDR_SET_CONFIG_SUCCESS);
- }
-@@ -573,7 +575,7 @@ bool XRandRConfig::changeOutput(const KScreen::OutputPtr &kscreenOutput) const
- << "\n"
- << "\tCRTC:" << xOutput->crtc()->crtc() << "\n"
- << "\tPos:" << kscreenOutput->pos() << "\n"
-- << "\tMode:" << modeId << kscreenOutput->currentMode() << "\n"
-+ << "\tMode:" << kscreenOutput->currentMode() << "Preferred:" << kscreenOutput->preferredModeId() << "\n"
- << "\tRotation:" << kscreenOutput->rotation();
-
- if (!sendConfig(kscreenOutput, xOutput->crtc())) {
-@@ -605,6 +607,9 @@ bool XRandRConfig::sendConfig(const KScreen::OutputPtr &kscreenOutput, XRandRCrt
- qCDebug(KSCREEN_XRANDR) << "\tResult: unknown (error)";
- return false;
- }
-- qCDebug(KSCREEN_XRANDR) << "\tResult: " << reply->status;
-+
-+ crtc->updateTimestamp(reply->timestamp);
-+
-+ qCDebug(KSCREEN_XRANDR) << "\tResult: " << reply->status << " timestamp: " << reply->timestamp;
- return (reply->status == XCB_RANDR_SET_CONFIG_SUCCESS);
- }
-diff --git a/backends/xrandr/xrandrcrtc.cpp b/backends/xrandr/xrandrcrtc.cpp
-index c3cd291..9209501 100644
---- a/backends/xrandr/xrandrcrtc.cpp
-+++ b/backends/xrandr/xrandrcrtc.cpp
-@@ -16,6 +16,8 @@ XRandRCrtc::XRandRCrtc(xcb_randr_crtc_t crtc, XRandRConfig *config)
- , m_crtc(crtc)
- , m_mode(0)
- , m_rotation(XCB_RANDR_ROTATION_ROTATE_0)
-+ , m_timestamp(XCB_CURRENT_TIME)
-+ , m_configTimestamp(XCB_CURRENT_TIME)
- {
- update();
- }
-@@ -111,3 +113,24 @@ void XRandRCrtc::update(xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, co
- m_geometry = geom;
- m_rotation = rotation;
- }
-+
-+void XRandRCrtc::updateTimestamp(const xcb_timestamp_t tmstamp)
-+{
-+ if (tmstamp > m_timestamp) {
-+ qCDebug(KSCREEN_XRANDR) << "XRandRCrtc " << m_crtc << " m_timestamp update " << m_timestamp << " => " << tmstamp;
-+ m_timestamp = tmstamp;
-+ }
-+}
-+
-+void XRandRCrtc::updateConfigTimestamp(const xcb_timestamp_t tmstamp)
-+{
-+ if (tmstamp > m_configTimestamp) {
-+ qCDebug(KSCREEN_XRANDR) << "XRandRCrtc " << m_crtc << " m_configTimestamp update" << m_configTimestamp << " => " << tmstamp;
-+ m_configTimestamp = tmstamp;
-+ }
-+}
-+
-+bool XRandRCrtc::isChangedFromOutside() const
-+{
-+ return m_configTimestamp > m_timestamp;
-+}
-diff --git a/backends/xrandr/xrandrcrtc.h b/backends/xrandr/xrandrcrtc.h
-index 4de4a09..8be23d2 100644
---- a/backends/xrandr/xrandrcrtc.h
-+++ b/backends/xrandr/xrandrcrtc.h
-@@ -41,6 +41,10 @@ public:
- void update();
- void update(xcb_randr_crtc_t mode, xcb_randr_rotation_t rotation, const QRect &geom);
-
-+ void updateTimestamp(const xcb_timestamp_t tmstamp);
-+ void updateConfigTimestamp(const xcb_timestamp_t tmstamp);
-+ bool isChangedFromOutside() const;
-+
- private:
- xcb_randr_crtc_t m_crtc;
- xcb_randr_mode_t m_mode;
-@@ -50,4 +54,7 @@ private:
-
- QVector<xcb_randr_output_t> m_possibleOutputs;
- QVector<xcb_randr_output_t> m_outputs;
-+
-+ xcb_timestamp_t m_timestamp;
-+ xcb_timestamp_t m_configTimestamp;
- };
-diff --git a/backends/xrandr/xrandroutput.cpp b/backends/xrandr/xrandroutput.cpp
-index 92a39cf..4aa2290 100644
---- a/backends/xrandr/xrandroutput.cpp
-+++ b/backends/xrandr/xrandroutput.cpp
-@@ -403,7 +403,7 @@ KScreen::OutputPtr XRandROutput::toKScreenOutput() const
-
- // See https://bugzilla.redhat.com/show_bug.cgi?id=1290586
- // QXL will be creating a new mode we need to jump to every time the display is resized
-- kscreenOutput->setFollowPreferredMode(m_hotplugModeUpdate);
-+ kscreenOutput->setFollowPreferredMode(m_hotplugModeUpdate && m_crtc && m_crtc->isChangedFromOutside());
-
- kscreenOutput->setConnected(isConnected());
- if (isConnected()) {
---
-GitLab
-
diff --git a/source/kde/kde/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch b/source/kde/kde/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch
deleted file mode 100644
index 38e932be9..000000000
--- a/source/kde/kde/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch
+++ /dev/null
@@ -1,219 +0,0 @@
-From cf0921f3fbde31cb94b9ccddcaba36da3a488483 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven29@gmail.com>
-Date: Thu, 2 Dec 2021 16:04:20 +0000
-Subject: [PATCH] Under X11 ignore per-screen scale to compute logicalSize
-
----
- src/config.cpp | 32 ++++++++++++++++++++++++++++++++
- src/config.h | 4 ++++
- src/output.cpp | 39 +++++++++------------------------------
- src/output.h | 18 ++++--------------
- 4 files changed, 49 insertions(+), 44 deletions(-)
- mode change 100644 => 100755 src/output.h
-
-diff --git a/src/config.cpp b/src/config.cpp
-index 37e1038..41abf70 100644
---- a/src/config.cpp
-+++ b/src/config.cpp
-@@ -325,6 +325,7 @@ void Config::setPrimaryOutput(const OutputPtr &newPrimary)
- void Config::addOutput(const OutputPtr &output)
- {
- d->outputs.insert(output->id(), output);
-+ output->setExplicitLogicalSize(logicalSizeForOutput(*output));
- connect(output.data(), &KScreen::Output::isPrimaryChanged, d, &KScreen::Config::Private::onPrimaryOutputChanged);
-
- Q_EMIT outputAdded(output);
-@@ -391,6 +392,37 @@ void Config::apply(const ConfigPtr &other)
- setValid(other->isValid());
- }
-
-+QRect Config::outputGeometryForOutput(const KScreen::Output &output) const
-+{
-+ QSize size = logicalSizeForOutput(output).toSize();
-+ if (!size.isValid()) {
-+ return QRect();
-+ }
-+
-+ return QRect(output.pos(), size);
-+}
-+
-+QSizeF Config::logicalSizeForOutput(const KScreen::Output &output) const
-+{
-+ QSizeF size = output.enforcedModeSize();
-+ if (!size.isValid()) {
-+ return QSizeF();
-+ }
-+ // ignore scale where scaling is not per-output
-+ if (supportedFeatures().testFlag(Feature::PerOutputScaling)) {
-+ size = size / output.scale();
-+ }
-+
-+ // We can't use output.size(), because it does not reflect the actual rotation() set by caller.
-+ // It is only updated when we get update from KScreen, but not when user changes mode or
-+ // rotation manually.
-+
-+ if (!output.isHorizontal()) {
-+ size = size.transposed();
-+ }
-+ return size;
-+}
-+
- QDebug operator<<(QDebug dbg, const KScreen::ConfigPtr &config)
- {
- if (config) {
-diff --git a/src/config.h b/src/config.h
-index 551d7d0..4629dab 100644
---- a/src/config.h
-+++ b/src/config.h
-@@ -190,6 +190,10 @@ public:
- */
- void setTabletModeEngaged(bool engaged);
-
-+ QRect outputGeometryForOutput(const KScreen::Output &output) const;
-+
-+ QSizeF logicalSizeForOutput(const KScreen::Output &output) const;
-+
- Q_SIGNALS:
- void outputAdded(const KScreen::OutputPtr &output);
- void outputRemoved(int outputId);
-diff --git a/src/output.cpp b/src/output.cpp
-index c7f5949..a0fae28 100644
---- a/src/output.cpp
-+++ b/src/output.cpp
-@@ -13,6 +13,7 @@
- #include "mode.h"
-
- #include <QCryptographicHash>
-+#include <QGuiApplication>
- #include <QRect>
- #include <QScopedPointer>
- #include <QStringList>
-@@ -28,7 +29,7 @@ public:
- , replicationSource(0)
- , rotation(None)
- , scale(1.0)
-- , logicalSize(QSizeF())
-+ , explicitLogicalSize(QSizeF())
- , connected(false)
- , enabled(false)
- , primary(false)
-@@ -87,7 +88,7 @@ public:
- QSize size;
- Rotation rotation;
- qreal scale;
-- QSizeF logicalSize;
-+ QSizeF explicitLogicalSize;
- bool connected;
- bool enabled;
- bool primary;
-@@ -459,40 +460,18 @@ void Output::setScale(qreal factor)
- Q_EMIT scaleChanged();
- }
-
--QSizeF Output::logicalSize() const
--{
-- if (d->logicalSize.isValid()) {
-- return d->logicalSize;
-- }
--
-- QSizeF size = enforcedModeSize();
-- if (!size.isValid()) {
-- return QSizeF();
-- }
-- size = size / d->scale;
--
-- // We can't use d->size, because d->size does not reflect the actual rotation() set by caller.
-- // It is only updated when we get update from KScreen, but not when user changes mode or
-- // rotation manually.
--
-- if (!isHorizontal()) {
-- size = size.transposed();
-- }
-- return size;
--}
--
- QSizeF Output::explicitLogicalSize() const
- {
-- return d->logicalSize;
-+ return d->explicitLogicalSize;
- }
-
--void Output::setLogicalSize(const QSizeF &size)
-+void Output::setExplicitLogicalSize(const QSizeF &size)
- {
-- if (qFuzzyCompare(d->logicalSize.width(), size.width()) && qFuzzyCompare(d->logicalSize.height(), size.height())) {
-+ if (qFuzzyCompare(d->explicitLogicalSize.width(), size.width()) && qFuzzyCompare(d->explicitLogicalSize.height(), size.height())) {
- return;
- }
-- d->logicalSize = size;
-- Q_EMIT logicalSizeChanged();
-+ d->explicitLogicalSize = size;
-+ Q_EMIT explicitLogicalSizeChanged();
- }
-
- bool Output::isConnected() const
-@@ -628,7 +607,7 @@ QSize Output::enforcedModeSize() const
-
- QRect Output::geometry() const
- {
-- QSize size = logicalSize().toSize();
-+ QSize size = explicitLogicalSize().toSize();
- if (!size.isValid()) {
- return QRect();
- }
-diff --git a/src/output.h b/src/output.h
-old mode 100644
-new mode 100755
-index 2b23ac4..7edb74c
---- a/src/output.h
-+++ b/src/output.h
-@@ -47,7 +47,7 @@ public:
- Q_PROPERTY(QSize sizeMm READ sizeMm CONSTANT)
- Q_PROPERTY(qreal scale READ scale WRITE setScale NOTIFY scaleChanged)
- Q_PROPERTY(bool followPreferredMode READ followPreferredMode WRITE setFollowPreferredMode NOTIFY followPreferredModeChanged)
-- Q_PROPERTY(QSizeF logicalSize READ logicalSize WRITE setLogicalSize NOTIFY logicalSizeChanged)
-+ Q_PROPERTY(QSizeF explicitLogicalSize READ explicitLogicalSize WRITE setExplicitLogicalSize NOTIFY explicitLogicalSizeChanged)
- Q_PROPERTY(Capabilities capabilities READ capabilities NOTIFY capabilitiesChanged)
- Q_PROPERTY(uint32_t overscan READ overscan WRITE setOverscan NOTIFY overscanChanged)
- Q_PROPERTY(VrrPolicy vrrPolicy READ vrrPolicy WRITE setVrrPolicy NOTIFY vrrPolicyChanged)
-@@ -311,16 +311,6 @@ public:
- */
- void setScale(qreal factor);
-
-- /**
-- * The logical size is the output's representation internal to the display server and its
-- * overall screen geometry.
-- *
-- * returns the logical size of this output
-- *
-- * @since 5.18
-- */
-- QSizeF logicalSize() const;
--
- /**
- * The logical size is the output's representation internal to the display server and its
- * overall screen geometry.
-@@ -338,9 +328,9 @@ public:
- *
- * @param size of this output in logical space
- *
-- * @since 5.18
-+ * @since 5.24
- */
-- void setLogicalSize(const QSizeF &size);
-+ void setExplicitLogicalSize(const QSizeF &size);
-
- /**
- * @returns whether the mode should be changed to the new preferred mode
-@@ -421,7 +411,7 @@ Q_SIGNALS:
- void clonesChanged();
- void replicationSourceChanged();
- void scaleChanged();
-- void logicalSizeChanged();
-+ void explicitLogicalSizeChanged();
- void followPreferredModeChanged(bool followPreferredMode);
- void capabilitiesChanged();
- void overscanChanged();
---
-GitLab
-
diff --git a/source/kde/kde/patch/plasma-nm.patch b/source/kde/kde/patch/plasma-nm.patch
deleted file mode 100644
index 283ff8ebe..000000000
--- a/source/kde/kde/patch/plasma-nm.patch
+++ /dev/null
@@ -1 +0,0 @@
-cat $CWD/patch/plasma-nm/80c47e577b80364c995aa0530a48e17c1a7e460f.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/plasma-nm/80c47e577b80364c995aa0530a48e17c1a7e460f.patch b/source/kde/kde/patch/plasma-nm/80c47e577b80364c995aa0530a48e17c1a7e460f.patch
deleted file mode 100644
index 99dbad0f6..000000000
--- a/source/kde/kde/patch/plasma-nm/80c47e577b80364c995aa0530a48e17c1a7e460f.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 80c47e577b80364c995aa0530a48e17c1a7e460f Mon Sep 17 00:00:00 2001
-From: PJ Beers <pj@floorenpj.nl>
-Date: Wed, 1 Dec 2021 20:36:55 +0100
-Subject: [PATCH] OpenVPN: Import tls-crypt keys
-
-Enable importing tls-crypt keys from an openvpn config file. Previously,
-inline tls-crypt keys from *.ovpn files were ignored, causing the
-associated connection to fail after import.
----
- vpn/openvpn/openvpn.cpp | 34 ++++++++++++++++++++++++++++++++++
- 1 file changed, 34 insertions(+)
-
-diff --git a/vpn/openvpn/openvpn.cpp b/vpn/openvpn/openvpn.cpp
-index 9d1bf8ea..b69f7ec0 100644
---- a/vpn/openvpn/openvpn.cpp
-+++ b/vpn/openvpn/openvpn.cpp
-@@ -55,6 +55,7 @@ K_PLUGIN_CLASS_WITH_JSON(OpenVpnUiPlugin, "plasmanetworkmanagement_openvpnui.jso
- #define RPORT_TAG "rport"
- #define SECRET_TAG "secret"
- #define TLS_AUTH_TAG "tls-auth"
-+#define TLS_CRYPT_TAG "tls-crypt"
- #define TLS_CLIENT_TAG "tls-client"
- #define TLS_REMOTE_TAG "tls-remote"
- #define TUNMTU_TAG "tun-mtu"
-@@ -70,6 +71,8 @@ K_PLUGIN_CLASS_WITH_JSON(OpenVpnUiPlugin, "plasmanetworkmanagement_openvpnui.jso
- #define END_KEY_SECRET_TAG "</secret>"
- #define BEGIN_TLS_AUTH_TAG "<tls-auth>"
- #define END_TLS_AUTH_TAG "</tls-auth>"
-+#define BEGIN_TLS_CRYPT_TAG "<tls-crypt>"
-+#define END_TLS_CRYPT_TAG "</tls-crypt>"
-
- #define PROC_TYPE_TAG "Proc-Type: 4,ENCRYPTED"
- #define PKCS8_TAG "-----BEGIN ENCRYPTED PRIVATE KEY-----"
-@@ -497,6 +500,27 @@ NMVariantMapMap OpenVpnUiPlugin::importConnectionSettings(const QString &fileNam
- }
- continue;
- }
-+ if (key_value[0] == TLS_CRYPT_TAG && key_value.count() > 1) {
-+ key_value[1] = line.right(line.length() - line.indexOf(QRegExp("\\s"))); // Get whole string after key
-+
-+ // We will copy inline certificate later when we reach <tls-crypt> tag.
-+ if (key_value[1].trimmed() != QLatin1String("[inline]")) {
-+ if (copyCertificates) {
-+ const QString absoluteFilePath = tryToCopyToCertificatesDirectory(connectionName, unQuote(key_value[1], fileName));
-+ dataMap.insert(QLatin1String(NM_OPENVPN_KEY_TLS_CRYPT), absoluteFilePath);
-+ } else {
-+ dataMap.insert(QLatin1String(NM_OPENVPN_KEY_TLS_CRYPT), unQuote(key_value[1], fileName));
-+ }
-+ }
-+
-+ if (key_value.count() > 2) {
-+ key_value[2] = key_value[1];
-+ if (!key_value[2].isEmpty() && (key_value[2].toLong() == 0 || key_value[2].toLong() == 1)) {
-+ dataMap.insert(QLatin1String(NM_OPENVPN_KEY_TA_DIR), key_value[2]);
-+ }
-+ }
-+ continue;
-+ }
- if (key_value[0] == CIPHER_TAG) {
- if (key_value.count() == 2) {
- dataMap.insert(QLatin1String(NM_OPENVPN_KEY_CIPHER), key_value[1]);
-@@ -596,6 +620,16 @@ NMVariantMapMap OpenVpnUiPlugin::importConnectionSettings(const QString &fileNam
- }
- }
- continue;
-+ } else if (key_value[0] == BEGIN_TLS_CRYPT_TAG) {
-+ const QString tlsAuthAbsolutePath = saveFile(in, QLatin1String(END_TLS_CRYPT_TAG), connectionName, "tls_crypt.key");
-+ if (!tlsAuthAbsolutePath.isEmpty()) {
-+ dataMap.insert(QLatin1String(NM_OPENVPN_KEY_TLS_CRYPT), tlsAuthAbsolutePath);
-+
-+ if (key_direction > -1) {
-+ dataMap.insert(QLatin1String(NM_OPENVPN_KEY_TA_DIR), QString().setNum(key_direction));
-+ }
-+ }
-+ continue;
- }
-
- // Import X-NM-Routes if present
---
-GitLab
-
-
diff --git a/source/kde/kde/patch/plasma-workspace.patch b/source/kde/kde/patch/plasma-workspace.patch
index 7d2b9d398..77645b0cb 100644
--- a/source/kde/kde/patch/plasma-workspace.patch
+++ b/source/kde/kde/patch/plasma-workspace.patch
@@ -1,5 +1 @@
cat $CWD/patch/plasma-workspace/0001-Revert-No-icons-on-the-desktop-by-default.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/plasma-workspace/70d23b89.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/plasma-workspace/0001-Revert-Drop-setupX11-from-startplasma-waylandsession.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/plasma-workspace/0002-Revert-Drop-X11-root-properties-for-KDE-full-session.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/plasma-workspace/0001-Revert-Drop-setupX11-from-startplasma-waylandsession.patch b/source/kde/kde/patch/plasma-workspace/0001-Revert-Drop-setupX11-from-startplasma-waylandsession.patch
deleted file mode 100644
index 4ed7dc6fa..000000000
--- a/source/kde/kde/patch/plasma-workspace/0001-Revert-Drop-setupX11-from-startplasma-waylandsession.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 5db85cf17cd11236f8ee44ba95dd56b81087c6aa Mon Sep 17 00:00:00 2001
-From: Fabian Vogt <fabian@ritter-vogt.de>
-Date: Thu, 21 Oct 2021 08:20:33 +0200
-Subject: [PATCH 1/2] Revert "Drop setupX11 from startplasma-waylandsession"
-
-This reverts commit 8bf0e43620de3416e783c307ba10111c6964757b.
----
- startkde/startplasma-waylandsession.cpp | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/startkde/startplasma-waylandsession.cpp b/startkde/startplasma-waylandsession.cpp
-index 3a054a04f..ed496cc24 100644
---- a/startkde/startplasma-waylandsession.cpp
-+++ b/startkde/startplasma-waylandsession.cpp
-@@ -19,6 +19,12 @@ int main(int argc, char **argv)
-
- out << "startplasma-waylandsession: Starting up...";
-
-+ if (qEnvironmentVariableIsSet("DISPLAY")) {
-+ setupX11();
-+ } else {
-+ qWarning() << "running kwin without Xwayland support";
-+ }
-+
- if (!syncDBusEnvironment()) {
- out << "Could not sync environment to dbus.\n";
- return 2;
---
-2.33.0
-
diff --git a/source/kde/kde/patch/plasma-workspace/0002-Revert-Drop-X11-root-properties-for-KDE-full-session.patch b/source/kde/kde/patch/plasma-workspace/0002-Revert-Drop-X11-root-properties-for-KDE-full-session.patch
deleted file mode 100644
index 3f6d71970..000000000
--- a/source/kde/kde/patch/plasma-workspace/0002-Revert-Drop-X11-root-properties-for-KDE-full-session.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 075b2f27722d2f28a5c3d4e201c7e7e787cb68de Mon Sep 17 00:00:00 2001
-From: Fabian Vogt <fabian@ritter-vogt.de>
-Date: Thu, 21 Oct 2021 08:20:38 +0200
-Subject: [PATCH 2/2] Revert "Drop X11 root properties for KDE full session /
- session version"
-
-This reverts commit 9a4e3d39c2a9ca48f39a60ae2ea88e9921723cec.
----
- startkde/startplasma-waylandsession.cpp | 1 +
- startkde/startplasma-x11.cpp | 1 +
- startkde/startplasma.cpp | 22 ++++++++++++++++++++++
- startkde/startplasma.h | 1 +
- 4 files changed, 25 insertions(+)
-
-diff --git a/startkde/startplasma-waylandsession.cpp b/startkde/startplasma-waylandsession.cpp
-index ed496cc24..d0c83bf5a 100644
---- a/startkde/startplasma-waylandsession.cpp
-+++ b/startkde/startplasma-waylandsession.cpp
-@@ -41,6 +41,7 @@ int main(int argc, char **argv)
- // Keep for KF5; remove in KF6 (KInit will be gone then)
- runSync(QStringLiteral("kdeinit5_shutdown"), {});
-
-+ cleanupX11();
- out << "startplasma-waylandsession: Done.\n";
-
- return 0;
-diff --git a/startkde/startplasma-x11.cpp b/startkde/startplasma-x11.cpp
-index d6b2c5439..7ddf7b3ea 100644
---- a/startkde/startplasma-x11.cpp
-+++ b/startkde/startplasma-x11.cpp
-@@ -93,6 +93,7 @@ int main(int argc, char **argv)
- runSync(QStringLiteral("kdeinit5_shutdown"), {});
-
- cleanupPlasmaEnvironment(oldSystemdEnvironment);
-+ cleanupX11();
-
- out << "startkde: Done.\n";
-
-diff --git a/startkde/startplasma.cpp b/startkde/startplasma.cpp
-index 8d0b0ba89..5f78e7016 100644
---- a/startkde/startplasma.cpp
-+++ b/startkde/startplasma.cpp
-@@ -336,6 +336,28 @@ void setupX11()
- // so don't move this up.
-
- runSync(QStringLiteral("xsetroot"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")});
-+ runSync(QStringLiteral("xprop"),
-+ {QStringLiteral("-root"),
-+ QStringLiteral("-f"),
-+ QStringLiteral("KDE_FULL_SESSION"),
-+ QStringLiteral("8t"),
-+ QStringLiteral("-set"),
-+ QStringLiteral("KDE_FULL_SESSION"),
-+ QStringLiteral("true")});
-+ runSync(QStringLiteral("xprop"),
-+ {QStringLiteral("-root"),
-+ QStringLiteral("-f"),
-+ QStringLiteral("KDE_SESSION_VERSION"),
-+ QStringLiteral("32c"),
-+ QStringLiteral("-set"),
-+ QStringLiteral("KDE_SESSION_VERSION"),
-+ QStringLiteral("5")});
-+}
-+
-+void cleanupX11()
-+{
-+ runSync(QStringLiteral("xprop"), {QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_FULL_SESSION")});
-+ runSync(QStringLiteral("xprop"), {QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_SESSION_VERSION")});
- }
-
- void cleanupPlasmaEnvironment(const std::optional<QStringList> &oldSystemdEnvironment)
-diff --git a/startkde/startplasma.h b/startkde/startplasma.h
-index e8684be74..00c5c1570 100644
---- a/startkde/startplasma.h
-+++ b/startkde/startplasma.h
-@@ -26,6 +26,7 @@ void importSystemdEnvrionment();
- void runEnvironmentScripts();
- void setupPlasmaEnvironment();
- void cleanupPlasmaEnvironment(const std::optional<QStringList> &oldSystemdEnvironment);
-+void cleanupX11();
- bool syncDBusEnvironment();
- void setupFontDpi();
- QProcess *setupKSplash();
---
-2.33.0
-
diff --git a/source/kde/kde/patch/plasma-workspace/70d23b89.patch b/source/kde/kde/patch/plasma-workspace/70d23b89.patch
deleted file mode 100644
index 2d9c2a0f8..000000000
--- a/source/kde/kde/patch/plasma-workspace/70d23b89.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 70d23b891e95bc6911389773f320a4406a12bd87 Mon Sep 17 00:00:00 2001
-From: Lufan Zhong <lufanzhong@gmail.com>
-Date: Sun, 26 Dec 2021 19:33:09 +0000
-Subject: [PATCH] runners/shell: Port from KToolInvocation::invokeTerminal to
- KTerminalLauncherJob
-
-kinit is being deprecated; this change will allow it to open a terminal and execute
-commands normally without kinit being present.
-
-BUG: 437131
-FIXED-IN: 5.24
----
- runners/shell/shellrunner.cpp | 15 +++++++++++++--
- 1 file changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/runners/shell/shellrunner.cpp b/runners/shell/shellrunner.cpp
-index 03b54e1f1..be4058acf 100644
---- a/runners/shell/shellrunner.cpp
-+++ b/runners/shell/shellrunner.cpp
-@@ -12,8 +12,9 @@
- #include <KLocalizedString>
- #include <KNotificationJobUiDelegate>
- #include <KShell>
--#include <KToolInvocation>
-+#include <KTerminalLauncherJob>
- #include <QAction>
-+#include <QProcessEnvironment>
- #include <QRegularExpression>
- #include <QStandardPaths>
-
-@@ -62,7 +63,17 @@ void ShellRunner::run(const Plasma::RunnerContext &context, const Plasma::QueryM
- {
- if (match.selectedAction()) {
- const QVariantList data = match.data().toList();
-- KToolInvocation::invokeTerminal(data.at(0).toString(), data.at(1).toStringList());
-+ const QStringList list = data.at(1).toStringList();
-+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
-+ for (const auto& str : list)
-+ {
-+ const int pos = str.indexOf('=');
-+ env.insert(str.left(pos), str.mid(pos+1));
-+ }
-+ auto job = new KTerminalLauncherJob(data.at(0).toString());
-+ job->setProcessEnvironment(env);
-+ job->setUiDelegate(new KNotificationJobUiDelegate(KJobUiDelegate::AutoHandlingEnabled));
-+ job->start();
- return;
- }
-
---
-GitLab
-
diff --git a/source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch b/source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch
deleted file mode 100644
index 4c30b8dec..000000000
--- a/source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 926f864756e5586f38574c166abdb5befa3dc771 Mon Sep 17 00:00:00 2001
-From: David Edmundson <kde@davidedmundson.co.uk>
-Date: Wed, 8 Dec 2021 13:08:43 +0000
-Subject: [PATCH] [libtaskmanager] Increase buffer for pipewire format
- negotiation
-
-Libtaskmanager's buffer for spa_builder is too small on certain
-configurations. Because podBuilder->state.offset is never reset, the
-buffer space can run out when EGL returns a long list of dma_buf
-modifiers, causing PipeWire negotiation to fail.
-
-An example is when EGL returns 20 modifiers. There are 6 formats defined
-in pipewiresourcestream.cpp, for each format it will construct 2 frames,
-one with 21*8=168 bytes long of modifiers. The modifier lists for all
-frames will be 6*168=1008 bytes (only 16 bytes left of 1024 bytes), let
-alone other frames.
-
-BUG: 446061
----
- libtaskmanager/declarative/pipewiresourcestream.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libtaskmanager/declarative/pipewiresourcestream.cpp b/libtaskmanager/declarative/pipewiresourcestream.cpp
-index a6713ae76..f1d3032a5 100644
---- a/libtaskmanager/declarative/pipewiresourcestream.cpp
-+++ b/libtaskmanager/declarative/pipewiresourcestream.cpp
-@@ -260,7 +260,7 @@ bool PipeWireSourceStream::createStream(uint nodeid)
- pwNodeId = nodeid;
- pw_stream_add_listener(pwStream, &streamListener, &pwStreamEvents, this);
-
-- uint8_t buffer[1024];
-+ uint8_t buffer[4096];
- spa_pod_builder podBuilder = SPA_POD_BUILDER_INIT(buffer, sizeof(buffer));
-
- const QVector<spa_video_format> formats =
---
-GitLab
-