Download Latest Version deskflow-1.23.0-win-arm64-portable.7z (10.8 MB)
Email in envelope

Get an email when there's a new version of Deskflow

Home / v1.23.0
Name Modified Size InfoDownloads / Week
Parent folder
sums.txt 2025-07-23 2.0 kB
deskflow-1.23.0-win-x64.msi 2025-07-23 15.8 MB
deskflow-1.23.0-win-x64-portable.7z 2025-07-23 12.7 MB
deskflow-1.23.0-win-arm64.msi 2025-07-23 13.7 MB
deskflow-1.23.0-ubuntu-plucky-x86_64.deb 2025-07-23 1.5 MB
deskflow-1.23.0-win-arm64-portable.7z 2025-07-23 10.8 MB
deskflow-1.23.0-opensuse-tumbleweed-aarch64.rpm 2025-07-23 839.1 kB
deskflow-1.23.0-opensuse-tumbleweed-x86_64.rpm 2025-07-23 910.6 kB
deskflow-1.23.0-ubuntu-plucky-aarch64.deb 2025-07-23 1.4 MB
deskflow-1.23.0-macos-x86_64.dmg 2025-07-23 30.4 MB
deskflow-1.23.0-macos-arm64.dmg 2025-07-23 31.1 MB
deskflow-1.23.0-linux-aarch64.flatpak 2025-07-23 960.3 kB
deskflow-1.23.0-linux-x86_64.flatpak 2025-07-23 1.1 MB
deskflow-1.23.0-fedora-42-aarch64.rpm 2025-07-23 835.5 kB
deskflow-1.23.0-fedora-42-x86_64.rpm 2025-07-23 907.6 kB
deskflow-1.23.0-fedora-41-aarch64.rpm 2025-07-23 816.2 kB
deskflow-1.23.0-fedora-41-x86_64.rpm 2025-07-23 890.6 kB
deskflow-1.23.0-debian-trixie-aarch64.deb 2025-07-23 1.3 MB
deskflow-1.23.0-debian-trixie-x86_64.deb 2025-07-23 1.5 MB
deskflow-1.23.0-arch-x86_64.pkg.tar.zst 2025-07-23 1.3 MB
README.md 2025-07-23 44.2 kB
v1.23.0 source code.tar.gz 2025-07-23 1.8 MB
v1.23.0 source code.zip 2025-07-23 2.2 MB
Totals: 23 Items   132.7 MB 15

Features

  • added ci builds for windows arm64
  • add restart action fixes [#8542] #8650 (sithlord48)
  • remove defunct --no-xinitThreads option #8679 (sithlord48)
  • improve connections status bar info #8690 (sithlord48)
  • Enforce a minimum TLS size of 2048bit #8671 (sithlord48)
  • Wayland, only set a side to a border if if has a neighboring screen #8749 (sithlord48)
  • windows/installer add option to run deskflow after install for silent installs fixes [#8351] #8751 (sithlord48)

Bug Fixes

Documentation

Code Refactoring

  • Mainwindow, rename btnApplySettings to btnRestartCore to better reflect what it does #8650 (sithlord48)
  • MainWindow, convert btnSaveServerConfig to QPushButton set the icons size 22x22 only when not on macos, make sure the button is square on macos #8655 (sithlord48)
  • messages::showErrorDialog, use app name in title #8661 (sithlord48)
  • messages::showCloseReminder #8661 (sithlord48)
  • Messages::showFirstServerStartMessage #8661 (sithlord48)
  • Messages::showFirstConnectedMessage #8661 (sithlord48)
  • Messages::showNewClientPrompt enable translations #8661 (sithlord48)
  • Messages::showClientConnectError #8661 (sithlord48)
  • Message::showClearSettings, enable translations and simplify method #8661 (sithlord48)
  • messages::showReadOnlySettings, use name in title, enable translations #8661 (sithlord48)
  • message::showWaylandLibaryError, use name in the title and enable translations #8661 (sithlord48)
  • messages::showUpdateCheckOption enable translation #8661 (sithlord48)
  • messages::showDaemonOffline enable translations #8661 (sithlord48)
  • remove anon namespace before ServerConfig::addToFirstEmptyGrid #8673 (sithlord48)
  • Unify ArchSleepClasses into one method #8684 (sithlord48)
  • Unify ArchTime classes into one method #8684 (sithlord48)
  • handle read and write on tcpsocket at the same time #8675 (sithlord48)
  • use std::mutex in place of ArchMutex in AtchMultiThreadPosix #8674 (Povilas Kanapickas)
  • use std::mutex in EventQueue #8674 (Povilas Kanapickas)
  • use std::mutex in Log #8674 (Povilas Kanapickas)
  • use std::mutex in ArchStrings #8674 (Povilas Kanapickas)
  • use std::mutex in ArchMutithreadWindows #8674 (sithlord48)
  • use std::mutex in ArchNetworkBSD #8674 (sithlord48)
  • use std::mutex in ArchNetworkWinSock #8674 (sithlord48)
  • use std::mutex in deskflow/PacketStreamFilter #8674 (sithlord48)
  • use std::mutex in net/TCPListenSocket #8674 (sithlord48)
  • use std::mutex in platform/XWindowsEventQueue #8674 (sithlord48)
  • replace ARCH->time() with Arch::time() #8691 (sithlord48)
  • replace ARCH->sleep(...) calls with Arch::sleep(...) #8691 (sithlord48)
  • use std::scoped_lock inplace of std::lock_guard #8691 (sithlord48)
  • use std::function for Event callback #8697 (sithlord48)
  • Improve display of names on about screen with nbsp #8702 (Nick Bolton)
  • free SecureSocket cert after use #8703 (sithlord48)
  • server use std::unique_ptr for socketFactory #8704 (sithlord48)
  • secureSocket uniqueprt for Ssl object #8704 (sithlord48)
  • App use Uniqueprt for SocketMultiplexer #8704 (sithlord48)
  • AboutDialog, Remove lambda for btnClose and connect directly to AboutDialog::close #8706 (sithlord48)
  • make ClientApp::handleClientConnected const #8707 (sithlord48)
  • make ServerApp::HandleScreenSwitch, Also does not use the Event * so removing it from the methods arguments #8707 (sithlord48)
  • ServerConnection::handleLogLine use referance to avoid unneeded copy #8707 (sithlord48)
  • make TlsUtility::generatateCertificate and TlsUtility::persistCertificate const #8707 (sithlord48)
  • Add a few missing overrides #8707 (sithlord48)
  • remove names for unused handle function args #8707 (sithlord48)
  • concatenate Namespaces #8707 (sithlord48)
  • use contains to find if an item is in a container #8707 (sithlord48)
  • remove redundant cast #8707 (sithlord48)
  • Settings remove const for return by vaule #8707 (sithlord48)
  • remove redundant access specifiers #8707 (sithlord48)
  • conform PortalRemoteDesktop to naming standards #8708 (sithlord48)
  • conform EiEventQueueBuffer to coding standards #8708 (sithlord48)
  • conform EiKeyState to coding standards #8708 (sithlord48)
  • conform PortalInputCapture to coding standards #8708 (sithlord48)
  • conform EiScreen to code standards #8708 (sithlord48)
  • EiScreen sonar adjustments #8708 (sithlord48)
  • PortalInputCapture sonar adjustments #8708 (sithlord48)
  • PortalInputCapture use std::map to hold signals and enum class as the key #8710 (sithlord48)
  • PortalInputCapture, fix a missed non compliant variable names #8710 (sithlord48)
  • simplify setting the fallback theme search path, does require sub dirs but we should only need the theme root #8718 (sithlord48)
  • remove XBASE related macros, fixes [#8723] #8726 (sithlord48)
  • XSocket, new XSocketWithWhat subclass used to reduce duplication in XSocket subclasses that have a common with method #8726 (sithlord48)
  • make ESignal an enum Class IArchMultiThread::ThreadSignal, conform ThreadSignal items to naming conventions #8732 (sithlord48)
  • Make IArchNetwork::EAddressFamily enum class IArchNetwork::AddressFamily #8732 (sithlord48)
  • make EStreamType enum Class StreamType, and conform members to naming conventions #8732 (sithlord48)
  • IArchNetwork turn anonymous enum into PollEventMask struct with set of static values #8732 (sithlord48)
  • use using enum EventTypes when possible to reduce verbosity #8732 (sithlord48)
  • Make throwError and throwNameError members of IArchNetwork #8732 (sithlord48)
  • ServerApp use if in places of multi ternary ops for readablitly #8732 (sithlord48)
  • ScreenSettingsDialog, do not create nested validators in the Lines setValidator method #8738 (sithlord48)
  • PortalInputCapture: do not create nested pointer in new Thread call #8738 (sithlord48)
  • PortalRemoteDesktop, do not create nested pointer in new Thread call #8738 (sithlord48)
  • SocketMultiplexer, do not create nested pointer in new Thread call #8738 (sithlord48)
  • Make KeyMake::Swap noexcept #8738 (sithlord48)
  • PriorityQueue::Swap make noexcept #8738 (sithlord48)
  • app Replace options defines as constexpr use more sane names #8738 (sithlord48)
  • ClientApp Replace RETRY_TIME define with constexpr #8738 (sithlord48)
  • ClipboardChunk Replace CLIPBOARD_CHUNK_META_SIZE define with constexpr #8738 (sithlord48)
  • XWindowsEventQueueBuffer, use static const for timeoutd delay #8738 (sithlord48)
  • ProtocolTypes EDataReceived => enum class ProtocolTypes::TransferState #8738 (sithlord48)
  • ProtocolTypes EDataTransfer => struct ProtocolTypes::ChunkType #8738 (sithlord48)
  • ProtocolTypes EDirectionMask => enum class DirectionMask #8738 (sithlord48)
  • ProtocolTypes EDirection => enum class Direction #8738 (sithlord48)
  • Server::onMouseMousePrimary, use std array for horizontal and vertical direction array #8738 (sithlord48)
  • use more if and switch init-statements #8738 (sithlord48)
  • Elevel => LogLevel enum class, use proper names for items in the class #8744 (sithlord48)
  • replace throw() with noexcept in cases where execeptions are not possible #8744 (sithlord48)
  • Make IEventQueueBuffer Types an enum class, use proper names rename kNone => Unknown to reflect its unknowns an unknown type of event #8744 (sithlord48)
  • Event anon enum => EventFlags struct #8744 (sithlord48)
  • remove Unneed enum for LogOutputters and use a constexp instead #8744 (sithlord48)
  • ServerProxy::EResult => ServerProxy::ConnectionResult enum class #8744 (sithlord48)
  • Common.h replace anon enum with set constexpr exit codes #8744 (sithlord48)
  • ArgsBase::Type => ArgsBase::ClassType class enum #8744 (sithlord48)
  • remove anon enum in IKeyState and replace with static s_numButtons #8744 (sithlord48)
  • TCPSocket::EJobResult => enum class TCPSocket::JobResult #8744 (sithlord48)
  • XSocket::EError => XSocket::SocketError enum class #8744 (sithlord48)
  • replace anon Enum in XWindowsKeyState with static vars #8744 (sithlord48)
  • InputFilter::EFilterStatus => InputFilter::FilterStatus enum class #8744 (sithlord48)
  • ActionDialog::ActionType enum is now a struct #8744 (sithlord48)
  • anon enum in AddClientDialog to AddAction enum class #8744 (sithlord48)
  • FingerPrintDialog::FingerpringDialogMode now enum class #8744 (sithlord48)
  • anonymous enum in ServerConfig => ServerConfig::AddResults enum class #8744 (sithlord48)
  • use std::size to get size of arrays #8748 (sithlord48)
  • App move m_suspended to the subclasses where its is used #8748 (sithlord48)
  • TCPSocket, new protected methods to access m_readable, m_writable and m_connected, use them in place of direct access and make the variables private #8748 (sithlord48)
  • String, pass stringToSizeType a const ref of the string we are to get the size of #8748 (sithlord48)
  • String, use std::ranges::lexicogriphical_compare to simplify CaselessCpm::less #8748 (sithlord48)
  • Unicode, declare vars on seperate line as untions, using string_view for UCS2ToUTF8 input, remove redundant parentheses #8748 (sithlord48)
  • Settings use Static methods where possible internally #8748 (sithlord48)
  • ArgParser, simplify arg parsing by combining duplicate checks into one #8748 (sithlord48)
  • ArgParser::parsePlatformArgs remove unused argument isServer #8748 (sithlord48)
  • ArgParser::assemble command use const ref std::string_view for ingoreArg #8748 (sithlord48)
  • ClientApp indicate msg is unused in update status #8748 (sithlord48)
  • DisplayInvalidExecption pass const ref to string #8748 (sithlord48)
  • windows write daemon log in ProgramData\Deskflow #8768 (sithlord48)

Builds

Continuous Integration

Chores

Commits

  • Define QT_NO_KEYWORDS, allowing us to use Qt in more places #8638 (sithlord48)
  • 8170dd4: chore use std::getenv Not c style getenv (sithlord48) #8678
  • 26cc85e: add protocol developer documentation (laz-001) #8666
  • 5d594dd: move even-loop return to the left (laz-001) #8724
  • 082d27a: ci :remove EOL fedora 40 builds (sithlord48) #8745
  • 422b4c3: refactor ClientArgs ClientScrollDirection to enum class use Members Normal and Inverted for names (sithlord48) #8744
  • 181d862: refactor EiEventQueue remove anon enum for a few static members (sithlord48) #8744
  • TCPListenSocket, remove duplicate public in header, make m_mutex private #8748 (sithlord48)
  • 21d38ff: Revert "ci: force ninja update on windows" (sithlord48) #8750
  • 56f7a0d: Release 1.23.0 (sithlord48) #8774
Source: README.md, updated 2025-07-23