Compare commits

..

29 Commits

Author SHA1 Message Date
l10n daemon script
b6e9392710 GIT_SILENT Sync po/docbooks with svn 2023-03-05 05:07:44 +00:00
l10n daemon script
566efcf45b GIT_SILENT Sync po/docbooks with svn 2023-02-25 05:13:14 +00:00
Heiko Becker
5a6381537c GIT_SILENT Update Appstream for new release 2023-02-24 21:43:58 +01:00
Heiko Becker
deeaf3c035 GIT_SILENT Upgrade release service version to 22.12.3. 2023-02-24 20:35:59 +01:00
l10n daemon script
7c241fb598 GIT_SILENT Sync po/docbooks with svn 2023-02-16 05:32:18 +00:00
l10n daemon script
41817d4fea GIT_SILENT Sync po/docbooks with svn 2023-02-14 03:33:24 +00:00
l10n daemon script
113f8bc7bd GIT_SILENT Sync po/docbooks with svn 2023-02-08 05:23:26 +00:00
Heiko Becker
f21499f023 GIT_SILENT Update Appstream for new release 2023-01-30 00:26:10 +01:00
Heiko Becker
2c5c9d3d28 GIT_SILENT Upgrade release service version to 22.12.2. 2023-01-29 23:32:59 +01:00
l10n daemon script
2a9f5b154c GIT_SILENT Sync po/docbooks with svn 2023-01-22 03:44:18 +00:00
l10n daemon script
f06da683e1 GIT_SILENT Sync po/docbooks with svn 2023-01-16 03:54:51 +00:00
l10n daemon script
98d64c052a GIT_SILENT Sync po/docbooks with svn 2023-01-14 13:48:51 +00:00
l10n daemon script
b44b5dec18 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-01-14 13:42:40 +00:00
l10n daemon script
484408db5c GIT_SILENT made messages (after extraction) 2023-01-14 13:06:41 +00:00
l10n daemon script
4e3259e74b GIT_SILENT Sync po/docbooks with svn 2023-01-13 05:03:35 +00:00
l10n daemon script
4161ad54bf GIT_SILENT Sync po/docbooks with svn 2023-01-12 03:23:02 +00:00
l10n daemon script
fdc39edee2 GIT_SILENT Sync po/docbooks with svn 2023-01-04 04:48:53 +00:00
l10n daemon script
eef8385547 GIT_SILENT Sync po/docbooks with svn 2023-01-03 05:26:23 +00:00
Albert Astals Cid
ebbd8b982c GIT_SILENT Update Appstream for new release 2023-01-03 00:55:08 +01:00
Albert Astals Cid
74c94ea009 GIT_SILENT Upgrade release service version to 22.12.1. 2023-01-02 23:37:16 +01:00
l10n daemon script
7c273f0dac GIT_SILENT Sync po/docbooks with svn 2022-12-25 04:58:03 +00:00
l10n daemon script
2c6d37daae GIT_SILENT Sync po/docbooks with svn 2022-12-14 04:51:31 +00:00
l10n daemon script
ff7d937805 GIT_SILENT Sync po/docbooks with svn 2022-12-02 05:02:28 +00:00
Heiko Becker
97ba8f617e GIT_SILENT Update Appstream for new release 2022-11-30 01:35:45 +01:00
Heiko Becker
5af6d5ee47 GIT_SILENT Upgrade release service version to 22.12.0. 2022-11-30 00:39:57 +01:00
Heiko Becker
75046ea858 GIT_SILENT Upgrade release service version to 22.11.90. 2022-11-22 23:46:01 +01:00
l10n daemon script
9a4da4e246 GIT_SILENT Sync po/docbooks with svn 2022-11-20 04:36:00 +00:00
l10n daemon script
bdab6d631c GIT_SILENT Sync po/docbooks with svn 2022-11-08 03:33:16 +00:00
Albert Astals Cid
e215ef02d4 GIT_SILENT Upgrade release service version to 22.11.80. 2022-11-05 21:04:59 +01:00
118 changed files with 2016 additions and 1472 deletions

View File

@@ -2,7 +2,5 @@
# SPDX-License-Identifier: CC0-1.0
include:
- project: sysadmin/ci-utilities
file:
- /gitlab-templates/linux-qt6.yml
- /gitlab-templates/freebsd-qt6.yml
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux.yml
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd.yml

View File

@@ -4,19 +4,18 @@
Dependencies:
- 'on': ['@all']
'require':
'frameworks/extra-cmake-modules': '@latest-kf6'
'frameworks/ki18n': '@latest-kf6'
'frameworks/kconfig': '@latest-kf6'
'frameworks/kcoreaddons': '@latest-kf6'
'frameworks/kdbusaddons': '@latest-kf6'
'frameworks/kdnssd': '@latest-kf6'
'frameworks/kdoctools': '@latest-kf6'
'frameworks/knotifications': '@latest-kf6'
'frameworks/kwallet': '@latest-kf6'
'frameworks/kwidgetsaddons': '@latest-kf6'
'frameworks/kwindowsystem': '@latest-kf6'
'frameworks/kxmlgui': '@latest-kf6'
'frameworks/kstatusnotifieritem': '@latest-kf6'
'libraries/plasma-wayland-protocols': '@latest-kf6'
'plasma/kwayland': '@latest-kf6'
'plasma/kpipewire': '@latest-kf6'
'frameworks/extra-cmake-modules': '@stable'
'frameworks/ki18n': '@stable'
'frameworks/kconfig': '@stable'
'frameworks/kcoreaddons': '@stable'
'frameworks/kcrash': '@stable'
'frameworks/kdbusaddons': '@stable'
'frameworks/kdnssd': '@stable'
'frameworks/kdoctools': '@stable'
'frameworks/knotifications': '@stable'
'frameworks/kwallet': '@stable'
'frameworks/kwidgetsaddons': '@stable'
'frameworks/kwindowsystem': '@stable'
'frameworks/kxmlgui': '@stable'
'frameworks/kwayland': '@stable'
'libraries/plasma-wayland-protocols': '@latest' # can be switched to @stable when 1.5.0 is released

View File

@@ -1,17 +1,17 @@
cmake_minimum_required(VERSION 3.16)
# KDE Application Version, managed by release script
set (RELEASE_SERVICE_VERSION_MAJOR "24")
set (RELEASE_SERVICE_VERSION_MINOR "02")
set (RELEASE_SERVICE_VERSION_MICRO "2")
set (RELEASE_SERVICE_VERSION_MAJOR "22")
set (RELEASE_SERVICE_VERSION_MINOR "12")
set (RELEASE_SERVICE_VERSION_MICRO "3")
set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
project(krfb VERSION ${RELEASE_SERVICE_VERSION})
set(QT_MIN_VERSION 6.5.0)
set(KF6_MIN_VERSION 5.247.0)
set(QT_MIN_VERSION 5.15.2)
set(KF5_MIN_VERSION 5.91.0)
find_package(ECM ${KF6_MIN_VERSION} NO_MODULE REQUIRED)
find_package(ECM ${KF5_MIN_VERSION} NO_MODULE REQUIRED)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" ${ECM_MODULE_PATH})
include(KDEInstallDirs)
@@ -27,12 +27,13 @@ include(CheckIncludeFile)
check_include_file("linux/input.h" HAVE_LINUX_INPUT_H)
find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS Core DBus Widgets)
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS Core DBus Widgets X11Extras)
find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
I18n
Config
CoreAddons
Crash
DBusAddons
DNSSD
DocTools
@@ -41,7 +42,6 @@ find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
WidgetsAddons
WindowSystem
XmlGui
StatusNotifierItem
)
find_package(X11 REQUIRED)
@@ -73,18 +73,44 @@ find_package(LibVNCServer REQUIRED)
option(DISABLE_PIPEWIRE "Disable PipeWire support." OFF)
if(NOT DISABLE_PIPEWIRE)
find_package(KPipeWire REQUIRED)
pkg_check_modules(PipeWire IMPORTED_TARGET libpipewire-0.3)
endif()
add_feature_info(PipeWire KPipeWire_FOUND "Required for pipewire screencast plugin")
add_feature_info(PipeWire PipeWire_FOUND "Required for pipewire screencast plugin")
find_package(PlasmaWaylandProtocols 1.5.0)
if(KPipeWire_FOUND AND PlasmaWaylandProtocols_FOUND)
find_package(KWayland REQUIRED)
if(PipeWire_FOUND AND PlasmaWaylandProtocols_FOUND)
find_package(KF5Wayland ${KF5_MIN_VERSION})
find_package(QtWaylandScanner REQUIRED)
find_package(Qt6WaylandClient)
find_package(Qt5WaylandClient)
find_package(Qt5XkbCommonSupport)
find_package(Wayland REQUIRED COMPONENTS Client)
endif()
find_package(gbm)
set_package_properties(gbm PROPERTIES
TYPE OPTIONAL
PURPOSE "Required for dma-buf support in pipewire screencast plugin."
)
find_package(EGL)
set_package_properties(EGL PROPERTIES
TYPE OPTIONAL
PURPOSE "Required for dma-buf support in pipewire screencast plugin."
)
find_package(epoxy)
set_package_properties(epoxy PROPERTIES DESCRIPTION "libepoxy"
URL "https://github.com/anholt/libepoxy"
TYPE OPTIONAL
PURPOSE "Required for dma-buf support in pipewire screencast plugin."
)
if(EGL_FOUND AND gbm_FOUND AND epoxy_FOUND)
set (HAVE_DMA_BUF TRUE)
else()
set (HAVE_DMA_BUF FALSE)
endif()
ecm_setup_version(PROJECT
VARIABLE_PREFIX KRFB
VERSION_HEADER "krfb_version.h")

4
README
View File

@@ -12,4 +12,8 @@ x0rfbserver left. Since version 0.6 it uses libvncserver
Guide to documentation:
TODO - things to be done
INSTALL - Very short installation instructions
NOTES - reasons for various decisions
DCOP-INTERFACE - short documentation of the DCOP interface

View File

@@ -1,6 +1,6 @@
add_subdirectory(x11)
# Makes sense to use only when PW framebuffer is used
if (TARGET K::KPipeWire)
if (${PipeWire_FOUND})
add_subdirectory(xdp)
endif()

View File

@@ -11,7 +11,7 @@ add_library (krfb_events_x11 MODULE ${krfb_events_x11_SRCS})
target_link_libraries (krfb_events_x11
${X11_XTest_LIB}
KF6::CoreAddons
KF5::CoreAddons
krfbprivate
)
set_target_properties(krfb_events_x11 PROPERTIES OUTPUT_NAME x11)

View File

@@ -22,13 +22,16 @@
#include "x11events.h"
#include <QApplication>
#include <QX11Info>
#include <QDesktopWidget>
#include <QGlobalStatic>
#include <QtGui/private/qtx11extras_p.h>
#include <X11/Xutil.h>
#include <X11/keysym.h>
#include <X11/extensions/XTest.h>
#include <QX11Info>
enum {
LEFTSHIFT = 1,
RIGHTSHIFT = 2,
@@ -183,7 +186,15 @@ void X11EventHandler::handleKeyboard(bool down, rfbKeySym keySym)
void X11EventHandler::handlePointer(int buttonMask, int x, int y)
{
if (QX11Info::isPlatformX11()) {
XTestFakeMotionEvent(data->dpy, 0, x, y, CurrentTime);
QDesktopWidget *desktopWidget = QApplication::desktop();
int screen = desktopWidget->screenNumber();
if (screen < 0) {
screen = 0;
}
XTestFakeMotionEvent(data->dpy, screen, x, y, CurrentTime);
for (int i = 0; i < 5; i++) {
if ((data->buttonMask&(1 << i)) != (buttonMask&(1 << i))) {

View File

@@ -22,8 +22,7 @@
#include "x11events.h"
#include <KPluginFactory>
#include <QtGui/private/qtx11extras_p.h>
#include <QX11Info>
K_PLUGIN_CLASS(X11EventsPlugin)

View File

@@ -7,7 +7,7 @@ set (krfb_events_xdp_SRCS
xdpeventsplugin.cpp
)
qt_add_dbus_interface(
qt5_add_dbus_interface(
krfb_events_xdp_SRCS
${CMAKE_SOURCE_DIR}/dbus/xdp_dbus_remotedesktop_interface.xml
xdp_dbus_remotedesktop_interface
@@ -16,9 +16,9 @@ qt_add_dbus_interface(
add_library (krfb_events_xdp MODULE ${krfb_events_xdp_SRCS})
target_link_libraries (krfb_events_xdp
KF6::CoreAddons
KF6::I18n
Qt::DBus
KF5::CoreAddons
KF5::I18n
Qt5::DBus
krfbprivate
)
set_target_properties(krfb_events_xdp PROPERTIES OUTPUT_NAME xdp)

View File

@@ -27,6 +27,7 @@
#include <linux/input.h>
#include <QApplication>
#include <QDesktopWidget>
#include <QGlobalStatic>
class EventData
@@ -60,8 +61,10 @@ void EventData::init()
void XdpEventHandler::handleKeyboard(bool down, rfbKeySym keySym)
{
const QDBusObjectPath sessionHandle = frameBuffer()->customProperty(QStringLiteral("session_handle")).value<QDBusObjectPath>();
data->dbusXdpRemoteDesktopService->NotifyKeyboardKeysym(sessionHandle, {}, keySym, down);
// TODO: implement button handling
// both in FakeInput interface and here
Q_UNUSED(down)
Q_UNUSED(keySym)
}
void XdpEventHandler::handlePointer(int buttonMask, int x, int y)

View File

@@ -1,7 +1,9 @@
add_subdirectory (qt)
if (${XCB_DAMAGE_FOUND} AND ${XCB_SHM_FOUND} AND ${XCB_IMAGE_FOUND})
add_subdirectory (xcb)
endif()
if (TARGET K::KPipeWire)
if (${PipeWire_FOUND})
add_subdirectory(pipewire)
endif()

View File

@@ -22,13 +22,13 @@ ecm_qt_declare_logging_category(krfb_framebuffer_pw_SRCS
EXPORT KRFB
)
qt_add_dbus_interface(
qt5_add_dbus_interface(
krfb_framebuffer_pw_SRCS
${CMAKE_SOURCE_DIR}/dbus/xdp_dbus_screencast_interface.xml
xdp_dbus_screencast_interface
)
qt_add_dbus_interface(
qt5_add_dbus_interface(
krfb_framebuffer_pw_SRCS
${CMAKE_SOURCE_DIR}/dbus/xdp_dbus_remotedesktop_interface.xml
xdp_dbus_remotedesktop_interface
@@ -41,17 +41,23 @@ add_library(krfb_framebuffer_pw
set_property(TARGET krfb_framebuffer_pw PROPERTY C_STANDARD 99)
target_link_libraries(krfb_framebuffer_pw
Qt::Core
Qt::Gui
Qt::DBus
KF6::CoreAddons
Plasma::KWaylandClient
Qt5::Core
Qt5::Gui
Qt5::DBus
KF5::CoreAddons
KF5::WaylandClient
Wayland::Client
krfbprivate
K::KPipeWire
K::KPipeWireDmaBuf
PkgConfig::PipeWire
)
if (HAVE_DMA_BUF)
target_link_libraries(krfb_framebuffer_pw
${epoxy_LIBRARIES}
gbm::gbm
)
endif()
set_target_properties(krfb_framebuffer_pw PROPERTIES OUTPUT_NAME pw)
install (TARGETS krfb_framebuffer_pw
DESTINATION ${KDE_INSTALL_PLUGINDIR}/krfb/framebuffer

View File

@@ -1,5 +0,0 @@
{
"X-KDE-OnlyShowOnQtPlatforms": [
"wayland"
]
}

View File

@@ -26,6 +26,15 @@
#include <KWayland/Client/registry.h>
// pipewire
#include <sys/ioctl.h>
#include <spa/param/format-utils.h>
#include <spa/param/video/format-utils.h>
#include <spa/param/props.h>
#include <spa/utils/result.h>
#include <pipewire/pipewire.h>
#include <climits>
#include "pw_framebuffer.h"
@@ -33,9 +42,15 @@
#include "xdp_dbus_remotedesktop_interface.h"
#include "krfb_fb_pipewire_debug.h"
#include "screencasting.h"
#include <PipeWireSourceStream>
#include <kpipewire_version.h>
#include <DmaBufHandler>
#if HAVE_DMA_BUF
#include <fcntl.h>
#include <unistd.h>
#include <gbm.h>
#include <epoxy/egl.h>
#include <epoxy/gl.h>
#endif /* HAVE_DMA_BUF */
static const int BYTES_PER_PIXEL = 4;
static const uint MIN_SUPPORTED_XDP_KDE_SC_VERSION = 1;
@@ -63,6 +78,30 @@ const QDBusArgument &operator >> (const QDBusArgument &arg, PWFrameBuffer::Strea
return arg;
}
#if HAVE_DMA_BUF
const char * formatGLError(GLenum err)
{
switch(err) {
case GL_NO_ERROR:
return "GL_NO_ERROR";
case GL_INVALID_ENUM:
return "GL_INVALID_ENUM";
case GL_INVALID_VALUE:
return "GL_INVALID_VALUE";
case GL_INVALID_OPERATION:
return "GL_INVALID_OPERATION";
case GL_STACK_OVERFLOW:
return "GL_STACK_OVERFLOW";
case GL_STACK_UNDERFLOW:
return "GL_STACK_UNDERFLOW";
case GL_OUT_OF_MEMORY:
return "GL_OUT_OF_MEMORY";
default:
return (QLatin1String("0x") + QString::number(err, 16)).toLocal8Bit().constData();
}
}
#endif /* HAVE_DMA_BUF */
/**
* @brief The PWFrameBuffer::Private class - private counterpart of PWFramebuffer class. This is the entity where
* whole logic resides, for more info search for "d-pointer pattern" information.
@@ -75,21 +114,47 @@ public:
private:
friend class PWFrameBuffer;
static void onCoreError(void *data, uint32_t id, int seq, int res, const char *message);
static void onStreamParamChanged(void *data, uint32_t id, const struct spa_pod *format);
static void onStreamStateChanged(void *data, pw_stream_state old, pw_stream_state state, const char *error_message);
static void onStreamProcess(void *data);
void initDbus();
void initPw();
// dbus handling
void handleSessionCreated(quint32 code, const QVariantMap &results);
void handleDevicesSelected(quint32 code, const QVariantMap &results);
void handleSourcesSelected(quint32 code, const QVariantMap &results);
void handleRemoteDesktopStarted(quint32 code, const QVariantMap &results);
void setVideoSize(const QSize &size);
void handleSessionCreated(quint32 &code, QVariantMap &results);
void handleDevicesSelected(quint32 &code, QVariantMap &results);
void handleSourcesSelected(quint32 &code, QVariantMap &results);
void handleRemoteDesktopStarted(quint32 &code, QVariantMap &results);
// pw handling
void handleFrame(const PipeWireFrame &frame);
pw_stream *createReceivingStream();
void handleFrame(pw_buffer *pwBuffer);
// link to public interface
PWFrameBuffer *q;
// pipewire stuff
struct pw_context *pwContext = nullptr;
struct pw_core *pwCore = nullptr;
struct pw_stream *pwStream = nullptr;
struct pw_thread_loop *pwMainLoop = nullptr;
// wayland-like listeners
// ...of events that happen in pipewire server
spa_hook coreListener = {};
spa_hook streamListener = {};
// event handlers
pw_core_events pwCoreEvents = {};
pw_stream_events pwStreamEvents = {};
uint pwStreamNodeId = 0;
// negotiated video format
spa_video_info_raw *videoFormat = nullptr;
// requests a session from XDG Desktop Portal
// auto-generated and compiled from xdp_dbus_interface.xml file
QScopedPointer<OrgFreedesktopPortalScreenCastInterface> dbusXdpScreenCastService;
@@ -97,24 +162,113 @@ private:
// XDP screencast session handle
QDBusObjectPath sessionPath;
// Pipewire file descriptor
QDBusUnixFileDescriptor pipewireFd;
// screen geometry holder
QSize streamSize;
QSize videoSize;
// Allowed devices
uint devices = 0;
// sanity indicator
bool isValid = true;
std::unique_ptr<PipeWireSourceStream> stream;
std::optional<PipeWireCursor> cursor;
DmaBufHandler m_dmabufHandler;
QImage cursorTexture;
QPoint cursorPosition;
QPoint cursorHotspot;
#if HAVE_DMA_BUF
struct EGLStruct {
QList<QByteArray> extensions;
EGLDisplay display = EGL_NO_DISPLAY;
EGLContext context = EGL_NO_CONTEXT;
};
bool m_eglInitialized = false;
qint32 m_drmFd = 0; // for GBM buffer mmap
gbm_device *m_gbmDevice = nullptr; // for passed GBM buffer retrieval
EGLStruct m_egl;
#endif /* HAVE_DMA_BUF */
};
PWFrameBuffer::Private::Private(PWFrameBuffer *q)
: q(q)
, stream(new PipeWireSourceStream(q))
PWFrameBuffer::Private::Private(PWFrameBuffer *q) : q(q)
{
QObject::connect(stream.get(), &PipeWireSourceStream::frameReceived, q, [this] (const PipeWireFrame &frame) {
handleFrame(frame);
});
pwCoreEvents.version = PW_VERSION_CORE_EVENTS;
pwCoreEvents.error = &onCoreError;
pwStreamEvents.version = PW_VERSION_STREAM_EVENTS;
pwStreamEvents.state_changed = &onStreamStateChanged;
pwStreamEvents.param_changed = &onStreamParamChanged;
pwStreamEvents.process = &onStreamProcess;
#if HAVE_DMA_BUF
m_drmFd = open("/dev/dri/renderD128", O_RDWR);
if (m_drmFd < 0) {
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to open drm render node: " << strerror(errno);
return;
}
m_gbmDevice = gbm_create_device(m_drmFd);
if (!m_gbmDevice) {
qCWarning(KRFB_FB_PIPEWIRE) << "Cannot create GBM device: " << strerror(errno);
return;
}
// Get the list of client extensions
const char* clientExtensionsCString = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
const QByteArray clientExtensionsString = QByteArray::fromRawData(clientExtensionsCString, qstrlen(clientExtensionsCString));
if (clientExtensionsString.isEmpty()) {
// If eglQueryString() returned NULL, the implementation doesn't support
// EGL_EXT_client_extensions. Expect an EGL_BAD_DISPLAY error.
qCWarning(KRFB_FB_PIPEWIRE) << "No client extensions defined! " << formatGLError(eglGetError());
return;
}
m_egl.extensions = clientExtensionsString.split(' ');
// Use eglGetPlatformDisplayEXT() to get the display pointer
// if the implementation supports it.
if (!m_egl.extensions.contains(QByteArrayLiteral("EGL_EXT_platform_base")) ||
!m_egl.extensions.contains(QByteArrayLiteral("EGL_MESA_platform_gbm"))) {
qCWarning(KRFB_FB_PIPEWIRE) << "One of required EGL extensions is missing";
return;
}
m_egl.display = eglGetPlatformDisplayEXT(EGL_PLATFORM_GBM_MESA, m_gbmDevice, nullptr);
if (m_egl.display == EGL_NO_DISPLAY) {
qCWarning(KRFB_FB_PIPEWIRE) << "Error during obtaining EGL display: " << formatGLError(eglGetError());
return;
}
EGLint major, minor;
if (eglInitialize(m_egl.display, &major, &minor) == EGL_FALSE) {
qCWarning(KRFB_FB_PIPEWIRE) << "Error during eglInitialize: " << formatGLError(eglGetError());
return;
}
if (eglBindAPI(EGL_OPENGL_API) == EGL_FALSE) {
qCWarning(KRFB_FB_PIPEWIRE) << "bind OpenGL API failed";
return;
}
m_egl.context = eglCreateContext(m_egl.display, nullptr, EGL_NO_CONTEXT, nullptr);
if (m_egl.context == EGL_NO_CONTEXT) {
qCWarning(KRFB_FB_PIPEWIRE) << "Couldn't create EGL context: " << formatGLError(eglGetError());
return;
}
qCDebug(KRFB_FB_PIPEWIRE) << "Egl initialization succeeded";
qCDebug(KRFB_FB_PIPEWIRE) << QStringLiteral("EGL version: %1.%2").arg(major).arg(minor);
m_eglInitialized = true;
#endif /* HAVE_DMA_BUF */
}
/**
@@ -160,7 +314,7 @@ void PWFrameBuffer::Private::initDbus()
SLOT(handleXdpSessionCreated(uint, QVariantMap)));
}
void PWFrameBuffer::handleXdpSessionCreated(quint32 code, const QVariantMap &results)
void PWFrameBuffer::handleXdpSessionCreated(quint32 code, QVariantMap results)
{
d->handleSessionCreated(code, results);
}
@@ -172,7 +326,7 @@ void PWFrameBuffer::handleXdpSessionCreated(quint32 code, const QVariantMap &res
* @param code return code for dbus call. Zero is success, non-zero means error
* @param results map with results of call.
*/
void PWFrameBuffer::Private::handleSessionCreated(quint32 code, const QVariantMap &results)
void PWFrameBuffer::Private::handleSessionCreated(quint32 &code, QVariantMap &results)
{
if (code != 0) {
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to create session: " << code;
@@ -203,7 +357,7 @@ void PWFrameBuffer::Private::handleSessionCreated(quint32 code, const QVariantMa
SLOT(handleXdpDevicesSelected(uint, QVariantMap)));
}
void PWFrameBuffer::handleXdpDevicesSelected(quint32 code, const QVariantMap &results)
void PWFrameBuffer::handleXdpDevicesSelected(quint32 code, QVariantMap results)
{
d->handleDevicesSelected(code, results);
}
@@ -214,7 +368,7 @@ void PWFrameBuffer::handleXdpDevicesSelected(quint32 code, const QVariantMap &re
* @param code return code for dbus call. Zero is success, non-zero means error
* @param results map with results of call.
*/
void PWFrameBuffer::Private::handleDevicesSelected(quint32 code, const QVariantMap &results)
void PWFrameBuffer::Private::handleDevicesSelected(quint32 &code, QVariantMap &results)
{
Q_UNUSED(results)
if (code != 0) {
@@ -244,7 +398,7 @@ void PWFrameBuffer::Private::handleDevicesSelected(quint32 code, const QVariantM
SLOT(handleXdpSourcesSelected(uint, QVariantMap)));
}
void PWFrameBuffer::handleXdpSourcesSelected(quint32 code, const QVariantMap &results)
void PWFrameBuffer::handleXdpSourcesSelected(quint32 code, QVariantMap results)
{
d->handleSourcesSelected(code, results);
}
@@ -257,7 +411,7 @@ void PWFrameBuffer::handleXdpSourcesSelected(quint32 code, const QVariantMap &re
* @param code return code for dbus call. Zero is success, non-zero means error
* @param results map with results of call.
*/
void PWFrameBuffer::Private::handleSourcesSelected(quint32 code, const QVariantMap &)
void PWFrameBuffer::Private::handleSourcesSelected(quint32 &code, QVariantMap &)
{
if (code != 0) {
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to select sources: " << code;
@@ -280,7 +434,7 @@ void PWFrameBuffer::Private::handleSourcesSelected(quint32 code, const QVariantM
}
void PWFrameBuffer::handleXdpRemoteDesktopStarted(quint32 code, const QVariantMap &results)
void PWFrameBuffer::handleXdpRemoteDesktopStarted(quint32 code, QVariantMap results)
{
d->handleRemoteDesktopStarted(code, results);
}
@@ -292,7 +446,7 @@ void PWFrameBuffer::handleXdpRemoteDesktopStarted(quint32 code, const QVariantMa
* @param code return code for dbus call. Zero is success, non-zero means error
* @param results map with results of call.
*/
void PWFrameBuffer::Private::handleRemoteDesktopStarted(quint32 code, const QVariantMap &results)
void PWFrameBuffer::Private::handleRemoteDesktopStarted(quint32 &code, QVariantMap &results)
{
if (code != 0) {
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to start screencast: " << code;
@@ -300,14 +454,8 @@ void PWFrameBuffer::Private::handleRemoteDesktopStarted(quint32 code, const QVar
return;
}
if (results.value(QStringLiteral("devices")).toUInt() == 0) {
qCWarning(KRFB_FB_PIPEWIRE) << "No devices were granted" << results;
isValid = false;
return;
}
// there should be only one stream
const Streams streams = qdbus_cast<Streams>(results.value(QStringLiteral("streams")));
Streams streams = qdbus_cast<Streams>(results.value(QStringLiteral("streams")));
if (streams.isEmpty()) {
// maybe we should check deeper with qdbus_cast but this suffices for now
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to get screencast streams";
@@ -323,94 +471,501 @@ void PWFrameBuffer::Private::handleRemoteDesktopStarted(quint32 code, const QVar
return;
}
QDBusUnixFileDescriptor pipewireFd = streamReply.value();
pipewireFd = streamReply.value();
if (!pipewireFd.isValid()) {
qCWarning(KRFB_FB_PIPEWIRE) << "Couldn't get pipewire connection file descriptor";
isValid = false;
return;
}
if (!stream->createStream(streams.first().nodeId, pipewireFd.takeFileDescriptor())) {
qCWarning(KRFB_FB_PIPEWIRE) << "Couldn't create the pipewire stream";
isValid = false;
return;
}
setVideoSize(qdbus_cast<QSize>(streams.first().map[QStringLiteral("size")].value<QDBusArgument>()));
devices = results.value(QStringLiteral("types")).toUInt();
pwStreamNodeId = streams.first().nodeId;
initPw();
}
void PWFrameBuffer::Private::handleFrame(const PipeWireFrame &frame)
{
cursor = frame.cursor;
/**
* @brief PWFrameBuffer::Private::initPw - initialize Pipewire socket connectivity.
* pipewireFd should be pointing to existing file descriptor that was passed by D-Bus at this point.
*/
void PWFrameBuffer::Private::initPw() {
qInfo() << "Initializing Pipewire connectivity";
#if KPIPEWIRE_VERSION < QT_VERSION_CHECK(6, 0, 70)
if (!frame.dmabuf && !frame.image) {
// init pipewire (required)
pw_init(nullptr, nullptr); // args are not used anyways
pwMainLoop = pw_thread_loop_new("pipewire-main-loop", nullptr);
pw_thread_loop_lock(pwMainLoop);
pwContext = pw_context_new(pw_thread_loop_get_loop(pwMainLoop), nullptr, 0);
if (!pwContext) {
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to create PipeWire context";
return;
}
pwCore = pw_context_connect(pwContext, nullptr, 0);
if (!pwCore) {
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to connect PipeWire context";
return;
}
pw_core_add_listener(pwCore, &coreListener, &pwCoreEvents, this);
pwStream = createReceivingStream();
if (!pwStream) {
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to create PipeWire stream";
return;
}
if (pw_thread_loop_start(pwMainLoop) < 0) {
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to start main PipeWire loop";
isValid = false;
}
pw_thread_loop_unlock(pwMainLoop);
}
void PWFrameBuffer::Private::onCoreError(void *data, uint32_t id, int seq, int res, const char *message)
{
Q_UNUSED(data);
Q_UNUSED(id);
Q_UNUSED(seq);
Q_UNUSED(res);
qInfo() << "core error: " << message;
}
/**
* @brief PWFrameBuffer::Private::onStreamStateChanged - called whenever stream state changes on pipewire server
* @param data pointer that you have set in pw_stream_add_listener call's last argument
* @param state new state that stream has changed to
* @param error_message optional error message, is set to non-null if state is error
*/
void PWFrameBuffer::Private::onStreamStateChanged(void *data, pw_stream_state /*old*/, pw_stream_state state, const char *error_message)
{
Q_UNUSED(data);
qInfo() << "Stream state changed: " << pw_stream_state_as_string(state);
switch (state) {
case PW_STREAM_STATE_ERROR:
qCWarning(KRFB_FB_PIPEWIRE) << "pipewire stream error: " << error_message;
break;
case PW_STREAM_STATE_PAUSED:
case PW_STREAM_STATE_STREAMING:
case PW_STREAM_STATE_UNCONNECTED:
case PW_STREAM_STATE_CONNECTING:
break;
}
}
#define CURSOR_BPP 4
#define CURSOR_META_SIZE(w,h) (sizeof(struct spa_meta_cursor) + \
sizeof(struct spa_meta_bitmap) + w * h * CURSOR_BPP)
/**
* @brief PWFrameBuffer::Private::onStreamFormatChanged - being executed after stream is set to active
* and after setup has been requested to connect to it. The actual video format is being negotiated here.
* @param data pointer that you have set in pw_stream_add_listener call's last argument
* @param format format that's being proposed
*/
void PWFrameBuffer::Private::onStreamParamChanged(void *data, uint32_t id, const struct spa_pod *format)
{
qInfo() << "Stream format changed";
auto d = static_cast<PWFrameBuffer::Private *>(data);
if (!format || id != SPA_PARAM_Format) {
return;
}
d->videoFormat = new spa_video_info_raw();
spa_format_video_raw_parse(format, d->videoFormat);
auto width = d->videoFormat->size.width;
auto height = d->videoFormat->size.height;
auto stride = SPA_ROUND_UP_N(width * BYTES_PER_PIXEL, 4);
auto size = height * stride;
d->streamSize = QSize(width, height);
uint8_t buffer[1024];
auto builder = SPA_POD_BUILDER_INIT(buffer, sizeof(buffer));
// setup buffers and meta header for new format
#if HAVE_DMA_BUF
const auto bufferTypes = d->m_eglInitialized ? (1 << SPA_DATA_DmaBuf) | (1 << SPA_DATA_MemFd) | (1 << SPA_DATA_MemPtr) :
(1 << SPA_DATA_MemFd) | (1 << SPA_DATA_MemPtr);
#else
if (!frame.dmabuf && !frame.dataFrame) {
#endif
const auto bufferTypes = (1 << SPA_DATA_MemFd) | (1 << SPA_DATA_MemPtr);
#endif /* HAVE_DMA_BUF */
QVector<const struct spa_pod *> params = {
reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
SPA_PARAM_BUFFERS_size, SPA_POD_Int(size),
SPA_PARAM_BUFFERS_stride, SPA_POD_Int(stride),
SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(8, 1, 32),
SPA_PARAM_BUFFERS_blocks, SPA_POD_Int(1),
SPA_PARAM_BUFFERS_align, SPA_POD_Int(16),
SPA_PARAM_BUFFERS_dataType, SPA_POD_CHOICE_FLAGS_Int(bufferTypes))),
reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
SPA_PARAM_META_type, SPA_POD_Id(SPA_META_Header),
SPA_PARAM_META_size, SPA_POD_Int(sizeof(struct spa_meta_header)))),
reinterpret_cast<spa_pod*>(spa_pod_builder_add_object(&builder,
SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, SPA_PARAM_META_type,
SPA_POD_Id(SPA_META_VideoCrop), SPA_PARAM_META_size,
SPA_POD_Int(sizeof(struct spa_meta_region)))),
reinterpret_cast<spa_pod*>(spa_pod_builder_add_object ( &builder,
SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
SPA_PARAM_META_type, SPA_POD_Id (SPA_META_Cursor),
SPA_PARAM_META_size, SPA_POD_CHOICE_RANGE_Int (CURSOR_META_SIZE (64, 64),
CURSOR_META_SIZE (1, 1),
CURSOR_META_SIZE (1024, 1024)))),
reinterpret_cast<spa_pod*>(spa_pod_builder_add_object ( &builder,
SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
SPA_PARAM_META_type, SPA_POD_Id(SPA_META_VideoDamage),
SPA_PARAM_META_size, SPA_POD_CHOICE_RANGE_Int(
sizeof(struct spa_meta_region) * 16,
sizeof(struct spa_meta_region) * 1,
sizeof(struct spa_meta_region) * 16))),
};
pw_stream_update_params(d->pwStream, params.data(), params.size());
}
/**
* @brief PWFrameBuffer::Private::onNewBuffer - called when new buffer is available in pipewire stream
* @param data pointer that you have set in pw_stream_add_listener call's last argument
* @param id
*/
void PWFrameBuffer::Private::onStreamProcess(void *data)
{
auto d = static_cast<PWFrameBuffer::Private *>(data);
pw_buffer* next_buffer;
pw_buffer* buffer = nullptr;
next_buffer = pw_stream_dequeue_buffer(d->pwStream);
while (next_buffer) {
buffer = next_buffer;
next_buffer = pw_stream_dequeue_buffer(d->pwStream);
if (next_buffer) {
pw_stream_queue_buffer(d->pwStream, buffer);
}
}
if (!buffer) {
return;
}
d->handleFrame(buffer);
pw_stream_queue_buffer(d->pwStream, buffer);
}
static QImage::Format spaToQImageFormat(quint32 format)
{
return format == SPA_VIDEO_FORMAT_BGR ? QImage::Format_BGR888
: format == SPA_VIDEO_FORMAT_RGBx ? QImage::Format_RGBX8888
: QImage::Format_RGB32;
}
void PWFrameBuffer::Private::handleFrame(pw_buffer *pwBuffer)
{
auto spaBuffer = pwBuffer->buffer;
uint8_t *src = nullptr;
// process cursor
{
struct spa_meta_cursor *cursor = static_cast<struct spa_meta_cursor*>(spa_buffer_find_meta_data (spaBuffer, SPA_META_Cursor, sizeof (*cursor)));
if (spa_meta_cursor_is_valid (cursor)) {
struct spa_meta_bitmap *bitmap = nullptr;
if (cursor->bitmap_offset)
bitmap = SPA_MEMBER (cursor, cursor->bitmap_offset, struct spa_meta_bitmap);
if (bitmap && bitmap->size.width > 0 && bitmap->size.height > 0) {
const uint8_t *bitmap_data;
bitmap_data = SPA_MEMBER (bitmap, bitmap->offset, uint8_t);
cursorHotspot = { cursor->hotspot.x, cursor->hotspot.y };
cursorTexture = QImage(bitmap_data, bitmap->size.width, bitmap->size.height, bitmap->stride, spaToQImageFormat(bitmap->format));
}
cursorPosition = QPoint{ cursor->position.x, cursor->position.y };
}
}
if (spaBuffer->datas[0].chunk->size == 0) {
qCDebug(KRFB_FB_PIPEWIRE) << "Got empty buffer. The buffer possibly carried only "
"information about the mouse cursor.";
return;
}
#if KPIPEWIRE_VERSION < QT_VERSION_CHECK(6, 0, 70)
if (frame.image) {
memcpy(q->fb, frame.image->constBits(), frame.image->sizeInBytes());
setVideoSize(frame.image->size());
}
#else
if (frame.dataFrame) {
memcpy(q->fb, frame.dataFrame->data, frame.dataFrame->size.width() * frame.dataFrame->stride);
setVideoSize(frame.dataFrame->size);
}
#endif
else if (frame.dmabuf) {
setVideoSize({frame.dmabuf->width, frame.dmabuf->height});
QImage src((uchar*) q->fb, videoSize.width(), videoSize.height(), QImage::Format_RGB32);
if (!m_dmabufHandler.downloadFrame(src, frame)) {
stream->renegotiateModifierFailed(frame.format, frame.dmabuf->modifier);
qCDebug(KRFB_FB_PIPEWIRE) << "Failed to download frame.";
std::function<void()> cleanup;
const qint64 srcStride = spaBuffer->datas[0].chunk->stride;
if (spaBuffer->datas->type == SPA_DATA_MemFd) {
uint8_t *map = static_cast<uint8_t*>(mmap(
nullptr, spaBuffer->datas->maxsize + spaBuffer->datas->mapoffset,
PROT_READ, MAP_PRIVATE, spaBuffer->datas->fd, 0));
if (map == MAP_FAILED) {
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to mmap the memory: " << strerror(errno);
return;
}
setVideoSize(src.size());
} else {
qCDebug(KRFB_FB_PIPEWIRE) << "Unknown kind of frame";
src = SPA_MEMBER(map, spaBuffer->datas[0].mapoffset, uint8_t);
cleanup = [map, spaBuffer] {
munmap(map, spaBuffer->datas->maxsize + spaBuffer->datas->mapoffset);
};
} else if (spaBuffer->datas[0].type == SPA_DATA_MemPtr) {
src = static_cast<uint8_t*>(spaBuffer->datas[0].data);
}
#if HAVE_DMA_BUF
else if (spaBuffer->datas->type == SPA_DATA_DmaBuf) {
if (!m_eglInitialized) {
// Shouldn't reach this
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to process DMA buffer.";
return;
}
gbm_import_fd_data importInfo = {static_cast<int>(spaBuffer->datas->fd), static_cast<uint32_t>(streamSize.width()),
static_cast<uint32_t>(streamSize.height()), static_cast<uint32_t>(spaBuffer->datas[0].chunk->stride), GBM_BO_FORMAT_ARGB8888};
gbm_bo *imported = gbm_bo_import(m_gbmDevice, GBM_BO_IMPORT_FD, &importInfo, GBM_BO_USE_SCANOUT);
if (!imported) {
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to process buffer: Cannot import passed GBM fd - " << strerror(errno);
return;
}
// bind context to render thread
eglMakeCurrent(m_egl.display, EGL_NO_SURFACE, EGL_NO_SURFACE, m_egl.context);
// create EGL image from imported BO
EGLImageKHR image = eglCreateImageKHR(m_egl.display, nullptr, EGL_NATIVE_PIXMAP_KHR, imported, nullptr);
if (image == EGL_NO_IMAGE_KHR) {
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to record frame: Error creating EGLImageKHR - " << formatGLError(glGetError());
gbm_bo_destroy(imported);
return;
}
// create GL 2D texture for framebuffer
GLuint texture;
glGenTextures(1, &texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glBindTexture(GL_TEXTURE_2D, texture);
glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, image);
src = static_cast<uint8_t*>(malloc(srcStride * streamSize.height()));
GLenum glFormat = GL_BGRA;
switch (videoFormat->format) {
case SPA_VIDEO_FORMAT_RGBx:
glFormat = GL_RGBA;
break;
case SPA_VIDEO_FORMAT_RGBA:
glFormat = GL_RGBA;
break;
case SPA_VIDEO_FORMAT_BGRx:
glFormat = GL_BGRA;
break;
case SPA_VIDEO_FORMAT_RGB:
glFormat = GL_RGB;
break;
case SPA_VIDEO_FORMAT_BGR:
glFormat = GL_BGR;
break;
default:
glFormat = GL_BGRA;
break;
}
glGetTexImage(GL_TEXTURE_2D, 0, glFormat, GL_UNSIGNED_BYTE, src);
if (!src) {
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to get image from DMA buffer.";
gbm_bo_destroy(imported);
return;
}
cleanup = [src] {
free(src);
};
glDeleteTextures(1, &texture);
eglDestroyImageKHR(m_egl.display, image);
gbm_bo_destroy(imported);
}
#endif /* HAVE_DMA_BUF */
struct spa_meta_region* videoMetadata =
static_cast<struct spa_meta_region*>(spa_buffer_find_meta_data(
spaBuffer, SPA_META_VideoCrop, sizeof(*videoMetadata)));
if (videoMetadata && (videoMetadata->region.size.width > static_cast<uint32_t>(streamSize.width()) ||
videoMetadata->region.size.height > static_cast<uint32_t>(streamSize.height()))) {
qCWarning(KRFB_FB_PIPEWIRE) << "Stream metadata sizes are wrong!";
return;
}
if (auto damage = frame.damage) {
for (const auto &rect : *damage) {
q->tiles.append(rect);
// Use video metadata when video size from metadata is set and smaller than
// video stream size, so we need to adjust it.
bool videoFullWidth = true;
bool videoFullHeight = true;
if (videoMetadata && videoMetadata->region.size.width != 0 &&
videoMetadata->region.size.height != 0) {
if (videoMetadata->region.size.width < static_cast<uint32_t>(streamSize.width())) {
videoFullWidth = false;
} else if (videoMetadata->region.size.height < static_cast<uint32_t>(streamSize.height())) {
videoFullHeight = false;
}
}
QSize prevVideoSize = videoSize;
if (!videoFullHeight || !videoFullWidth) {
videoSize = QSize(videoMetadata->region.size.width, videoMetadata->region.size.height);
} else {
videoSize = streamSize;
}
if (!q->fb || videoSize != prevVideoSize) {
if (q->fb) {
free(q->fb);
}
q->fb = static_cast<char*>(malloc(videoSize.width() * videoSize.height() * BYTES_PER_PIXEL));
if (!q->fb) {
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to allocate buffer";
isValid = false;
return;
}
Q_EMIT q->frameBufferChanged();
}
const qint32 dstStride = videoSize.width() * BYTES_PER_PIXEL;
Q_ASSERT(dstStride <= srcStride);
if (!videoFullHeight && (videoMetadata->region.position.y + videoSize.height() <= streamSize.height())) {
src += srcStride * videoMetadata->region.position.y;
}
const int xOffset = !videoFullWidth && (videoMetadata->region.position.x + videoSize.width() <= streamSize.width())
? videoMetadata->region.position.x * BYTES_PER_PIXEL : 0;
char *dst = q->fb;
for (int i = 0; i < videoSize.height(); ++i) {
// Adjust source content based on crop video position if needed
src += xOffset;
std::memcpy(dst, src, dstStride);
if (videoFormat->format == SPA_VIDEO_FORMAT_BGRA || videoFormat->format == SPA_VIDEO_FORMAT_BGRx) {
for (int j = 0; j < dstStride; j += 4) {
std::swap(dst[j], dst[j + 2]);
}
}
src += srcStride - xOffset;
dst += dstStride;
}
if (spaBuffer->datas->type == SPA_DATA_MemFd ||
spaBuffer->datas->type == SPA_DATA_DmaBuf) {
cleanup();
}
if (videoFormat->format != SPA_VIDEO_FORMAT_RGB) {
QImage img((uchar*) q->fb, videoSize.width(), videoSize.height(), dstStride, spaToQImageFormat(videoFormat->format));
img.convertTo(QImage::Format_RGB888);
}
if (spa_meta* vdMeta = spa_buffer_find_meta(spaBuffer, SPA_META_VideoDamage)) {
struct spa_meta_region *r;
spa_meta_for_each(r, vdMeta) {
if (!spa_meta_region_is_valid(r))
break;
q->tiles.append(QRect(r->region.position.x, r->region.position.y, r->region.size.width, r->region.size.height));
}
} else {
q->tiles.append(QRect(0, 0, videoSize.width(), videoSize.height()));
}
}
void PWFrameBuffer::Private::setVideoSize(const QSize &size)
/**
* @brief PWFrameBuffer::Private::createReceivingStream - create a stream that will consume Pipewire buffers
* and copy the framebuffer to the existing image that we track. The state of the stream and configuration
* are later handled by the corresponding listener.
*/
pw_stream *PWFrameBuffer::Private::createReceivingStream()
{
if (q->fb && videoSize == size) {
return;
}
spa_rectangle pwMinScreenBounds = SPA_RECTANGLE(1, 1);
spa_rectangle pwMaxScreenBounds = SPA_RECTANGLE(UINT32_MAX, UINT32_MAX);
free(q->fb);
q->fb = static_cast<char*>(malloc(size.width() * size.height() * BYTES_PER_PIXEL));
if (!q->fb) {
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to allocate buffer";
spa_fraction pwFramerateMin = SPA_FRACTION(0, 1);
spa_fraction pwFramerateMax = SPA_FRACTION(60, 1);
pw_properties* reuseProps = pw_properties_new_string("pipewire.client.reuse=1");
auto stream = pw_stream_new(pwCore, "krfb-fb-consume-stream", reuseProps);
uint8_t buffer[1024] = {};
const spa_pod *params[1];
auto builder = SPA_POD_BUILDER_INIT(buffer, sizeof(buffer));
params[0] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_video),
SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
SPA_FORMAT_VIDEO_format, SPA_POD_CHOICE_ENUM_Id(6,
SPA_VIDEO_FORMAT_RGBx, SPA_VIDEO_FORMAT_RGBA,
SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_BGRA,
SPA_VIDEO_FORMAT_RGB, SPA_VIDEO_FORMAT_BGR),
SPA_FORMAT_VIDEO_size, SPA_POD_CHOICE_RANGE_Rectangle(&pwMaxScreenBounds, &pwMinScreenBounds, &pwMaxScreenBounds),
SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction(&pwFramerateMin),
SPA_FORMAT_VIDEO_maxFramerate, SPA_POD_CHOICE_RANGE_Fraction(&pwFramerateMax, &pwFramerateMin, &pwFramerateMax)));
pw_stream_add_listener(stream, &streamListener, &pwStreamEvents, this);
if (pw_stream_connect(stream, PW_DIRECTION_INPUT, pwStreamNodeId, PW_STREAM_FLAG_AUTOCONNECT, params, 1) != 0) {
isValid = false;
return;
}
videoSize = size;
Q_EMIT q->frameBufferChanged();
return stream;
}
PWFrameBuffer::Private::~Private()
{
if (pwMainLoop) {
pw_thread_loop_stop(pwMainLoop);
}
if (pwStream) {
pw_stream_destroy(pwStream);
}
if (pwCore) {
pw_core_disconnect(pwCore);
}
if (pwContext) {
pw_context_destroy(pwContext);
}
if (pwMainLoop) {
pw_thread_loop_destroy(pwMainLoop);
}
}
PWFrameBuffer::PWFrameBuffer(QObject *parent)
: FrameBuffer (parent),
d(new Private(this))
{
fb = nullptr;
}
PWFrameBuffer::~PWFrameBuffer()
@@ -443,7 +998,8 @@ void PWFrameBuffer::startVirtualMonitor(const QString& name, const QSize& resolu
auto screencasting = new Screencasting(registry, wlname, version, this);
auto r = screencasting->createVirtualMonitorStream(name, resolution, dpr, Screencasting::Metadata);
connect(r, &ScreencastingStream::created, this, [this] (quint32 nodeId) {
d->stream->createStream(nodeId, 0);
d->pwStreamNodeId = nodeId;
d->initPw();
});
});
registry->create(connection);
@@ -457,17 +1013,11 @@ int PWFrameBuffer::depth()
int PWFrameBuffer::height()
{
if (!d->videoSize.isValid()) {
return 0;
}
return d->videoSize.height();
}
int PWFrameBuffer::width()
{
if (!d->videoSize.isValid()) {
return 0;
}
return d->videoSize.width();
}
@@ -497,7 +1047,7 @@ void PWFrameBuffer::stopMonitor()
QVariant PWFrameBuffer::customProperty(const QString &property) const
{
if (property == QLatin1String("stream_node_id")) {
return QVariant::fromValue<uint>(d->stream->nodeId());
return QVariant::fromValue<uint>(d->pwStreamNodeId);
} if (property == QLatin1String("session_handle")) {
return QVariant::fromValue<QDBusObjectPath>(d->sessionPath);
}
@@ -512,5 +1062,5 @@ bool PWFrameBuffer::isValid() const
QPoint PWFrameBuffer::cursorPosition()
{
return d->cursor->position;
return d->cursorPosition;
}

View File

@@ -50,10 +50,10 @@ public:
bool isValid() const;
private Q_SLOTS:
void handleXdpSessionCreated(quint32 code, const QVariantMap &results);
void handleXdpDevicesSelected(quint32 code, const QVariantMap &results);
void handleXdpSourcesSelected(quint32 code, const QVariantMap &results);
void handleXdpRemoteDesktopStarted(quint32 code, const QVariantMap &results);
void handleXdpSessionCreated(quint32 code, QVariantMap results);
void handleXdpDevicesSelected(quint32 code, QVariantMap results);
void handleXdpSourcesSelected(quint32 code, QVariantMap results);
void handleXdpRemoteDesktopStarted(quint32 code, QVariantMap results);
private:
class Private;

View File

@@ -22,7 +22,7 @@
#include "pw_framebuffer.h"
#include <KPluginFactory>
K_PLUGIN_CLASS_WITH_JSON(PWFrameBufferPlugin, "pipewire.json")
K_PLUGIN_CLASS(PWFrameBufferPlugin)
PWFrameBufferPlugin::PWFrameBufferPlugin(QObject *parent, const QVariantList &args)
: FrameBufferPlugin(parent, args)

View File

@@ -22,6 +22,8 @@
#include "framebufferplugin.h"
#include <QWidget>
class FrameBuffer;

View File

@@ -6,10 +6,11 @@
#include "screencasting.h"
#include "qwayland-zkde-screencast-unstable-v1.h"
#include <KWayland/Client/output.h>
#include <KWayland/Client/plasmawindowmanagement.h>
#include <KWayland/Client/registry.h>
#include <QDebug>
#include <QRect>
#include <QPointer>
using namespace KWayland::Client;
@@ -95,6 +96,28 @@ Screencasting::Screencasting(Registry *registry, int id, int version, QObject *p
Screencasting::~Screencasting() = default;
ScreencastingStream *Screencasting::createOutputStream(Output *output, CursorMode mode)
{
auto stream = new ScreencastingStream(this);
stream->setObjectName(output->model());
stream->d->init(d->stream_output(*output, mode));
return stream;
}
ScreencastingStream *Screencasting::createWindowStream(PlasmaWindow *window, CursorMode mode)
{
auto stream = createWindowStream(QString::fromUtf8(window->uuid()), mode);
stream->setObjectName(window->appId());
return stream;
}
ScreencastingStream *Screencasting::createWindowStream(const QString &uuid, CursorMode mode)
{
auto stream = new ScreencastingStream(this);
stream->d->init(d->stream_window(uuid, mode));
return stream;
}
ScreencastingStream * Screencasting::createVirtualMonitorStream(const QString& name, const QSize& resolution, qreal dpr, Screencasting::CursorMode mode)
{
auto stream = new ScreencastingStream(this);

View File

@@ -60,6 +60,9 @@ public:
};
Q_ENUM(CursorMode)
ScreencastingStream *createOutputStream(KWayland::Client::Output *output, CursorMode mode);
ScreencastingStream *createWindowStream(KWayland::Client::PlasmaWindow *window, CursorMode mode);
ScreencastingStream *createWindowStream(const QString &uuid, CursorMode mode);
ScreencastingStream *createVirtualMonitorStream(const QString &name, const QSize &resolution, qreal dpr, CursorMode mode);
void setup(zkde_screencast_unstable_v1 *screencasting);

View File

@@ -0,0 +1,33 @@
include_directories (${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
)
set (krfb_framebuffer_qt_SRCS
qtframebuffer.cpp
qtframebufferplugin.cpp
)
ecm_qt_declare_logging_category(krfb_framebuffer_qt_SRCS
HEADER krfb_fb_qt_debug.h
IDENTIFIER KRFB_FB_QT
CATEGORY_NAME krfb.framebuffer.qt
DESCRIPTION "KRFB Qt framebuffer plugin"
EXPORT KRFB
)
add_library(krfb_framebuffer_qt
MODULE
${krfb_framebuffer_qt_SRCS}
)
target_link_libraries (krfb_framebuffer_qt
Qt5::Core
Qt5::Gui
KF5::CoreAddons
krfbprivate
)
set_target_properties(krfb_framebuffer_qt PROPERTIES OUTPUT_NAME qt)
install (TARGETS krfb_framebuffer_qt
DESTINATION ${KDE_INSTALL_PLUGINDIR}/krfb/framebuffer
)

View File

@@ -0,0 +1,128 @@
/* This file is part of the KDE project
Copyright (C) 2007 Alessandro Praduroux <pradu@pradu.it>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
*/
#include "qtframebuffer.h"
#include <QTimer>
#include <QRegion>
#include <QPixmap>
#include <QBitmap>
#include <QApplication>
#include <QDesktopWidget>
#include <QScreen>
const int UPDATE_TIME = 500;
QtFrameBuffer::QtFrameBuffer(QObject *parent)
: FrameBuffer(parent)
{
win = QApplication::desktop()->winId();
QScreen *screen = QGuiApplication::primaryScreen();
if (screen) {
primaryScreen = screen;
fbImage = screen->grabWindow(win).toImage();
fb = new char[fbImage.sizeInBytes()];
} else {
fb = nullptr;
primaryScreen = nullptr;
}
t = new QTimer(this);
connect(t, &QTimer::timeout, this, &QtFrameBuffer::updateFrameBuffer);
}
QtFrameBuffer::~QtFrameBuffer()
{
if (fb)
delete [] fb;
fb = nullptr;
}
int QtFrameBuffer::depth()
{
return fbImage.depth();
}
int QtFrameBuffer::height()
{
return fbImage.height();
}
int QtFrameBuffer::width()
{
return fbImage.width();
}
void QtFrameBuffer::getServerFormat(rfbPixelFormat &format)
{
format.bitsPerPixel = 32;
format.depth = 32;
format.trueColour = true;
format.bigEndian = false;
format.redShift = 16;
format.greenShift = 8;
format.blueShift = 0;
format.redMax = 0xff;
format.greenMax = 0xff;
format.blueMax = 0xff;
}
void QtFrameBuffer::updateFrameBuffer()
{
if (!fb || !primaryScreen) return;
QImage img = primaryScreen->grabWindow(win).toImage();
#if 0 // This is actually slower than updating the whole desktop...
QSize imgSize = img.size();
// verify what part of the image need to be marked as changed
// fbImage is the previous version of the image,
// img is the current one
QImage map(imgSize, QImage::Format_Mono);
map.fill(0);
for (int x = 0; x < imgSize.width(); x++) {
for (int y = 0; y < imgSize.height(); y++) {
if (img.pixel(x, y) != fbImage.pixel(x, y)) {
map.setPixel(x, y, 1);
}
}
}
QRegion r(QBitmap::fromImage(map));
tiles = tiles + r.rects();
#else
tiles.append(img.rect());
#endif
memcpy(fb, img.bits(), static_cast<size_t>(img.sizeInBytes()));
fbImage = img;
}
int QtFrameBuffer::paddedWidth()
{
return fbImage.width() * 4;
}
void QtFrameBuffer::startMonitor()
{
t->start(UPDATE_TIME);
}
void QtFrameBuffer::stopMonitor()
{
t->stop();
}

View File

@@ -0,0 +1,47 @@
/* This file is part of the KDE project
Copyright (C) 2007 Alessandro Praduroux <pradu@pradu.it>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
*/
#ifndef KRFB_FRAMEBUFFER_QT_QTFRAMEBUFFER_H
#define KRFB_FRAMEBUFFER_QT_QTFRAMEBUFFER_H
#include <QImage>
#include "framebuffer.h"
class QTimer;
class QScreen;
/**
@author Alessandro Praduroux <pradu@pradu.it>
*/
class QtFrameBuffer : public FrameBuffer
{
Q_OBJECT
public:
explicit QtFrameBuffer(QObject *parent = nullptr);
~QtFrameBuffer() override;
int depth() override;
int height() override;
int width() override;
int paddedWidth() override;
void getServerFormat(rfbPixelFormat &format) override;
void startMonitor() override;
void stopMonitor() override;
public Q_SLOTS:
void updateFrameBuffer();
private:
WId win;
QImage fbImage;
QTimer *t;
QScreen *primaryScreen;
};
#endif

View File

@@ -0,0 +1,41 @@
/* This file is part of the KDE project
Copyright (C) 2009 Collabora Ltd <info@collabora.co.uk>
@author George Goldberg <george.goldberg@collabora.co.uk>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "qtframebufferplugin.h"
#include "qtframebuffer.h"
#include <KPluginFactory>
K_PLUGIN_CLASS(QtFrameBufferPlugin)
QtFrameBufferPlugin::QtFrameBufferPlugin(QObject *parent, const QVariantList &args)
: FrameBufferPlugin(parent, args)
{
}
FrameBuffer *QtFrameBufferPlugin::frameBuffer(const QVariantMap &args)
{
Q_UNUSED(args);
return new QtFrameBuffer;
}
#include "qtframebufferplugin.moc"

View File

@@ -0,0 +1,45 @@
/* This file is part of the KDE project
Copyright (C) 2009 Collabora Ltd <info@collabora.co.uk>
@author George Goldberg <george.goldberg@collabora.co.uk>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KRFB_FRAMEBUFFER_QT_QTFRAMEBUFFERPLUGIN_H
#define KRFB_FRAMEBUFFER_QT_QTFRAMEBUFFERPLUGIN_H
#include "framebufferplugin.h"
#include <QWidget>
class FrameBuffer;
class QtFrameBufferPlugin : public FrameBufferPlugin
{
Q_OBJECT
public:
QtFrameBufferPlugin(QObject *parent, const QVariantList &args);
FrameBuffer *frameBuffer(const QVariantMap &args) override;
private:
Q_DISABLE_COPY(QtFrameBufferPlugin)
};
#endif // Header guard

View File

@@ -18,9 +18,8 @@ ecm_qt_declare_logging_category(krfb_framebuffer_xcb_SRCS
add_library(krfb_framebuffer_xcb MODULE ${krfb_framebuffer_xcb_SRCS})
target_link_libraries (krfb_framebuffer_xcb
Qt::Core
Qt::Gui
Qt::GuiPrivate
Qt5::Core
Qt5::Gui
XCB::XCB
XCB::RENDER
XCB::SHAPE
@@ -28,7 +27,7 @@ target_link_libraries (krfb_framebuffer_xcb
XCB::DAMAGE
XCB::SHM
XCB::IMAGE
KF6::CoreAddons
KF5::CoreAddons
krfbprivate
)

View File

@@ -1,6 +0,0 @@
{
"X-KDE-OnlyShowOnQtPlatforms": [
"xcb"
]
}

View File

@@ -18,12 +18,13 @@
#include <sys/ipc.h>
#include <sys/shm.h>
#include <QX11Info>
#include <QApplication>
#include <QDesktopWidget>
#include <QGuiApplication>
#include <QScreen>
#include <QAbstractNativeEventFilter>
#include <qpa/qplatformnativeinterface.h>
#include <QtGui/private/qtx11extras_p.h>
class KrfbXCBEventFilter: public QAbstractNativeEventFilter
{
@@ -31,7 +32,7 @@ public:
KrfbXCBEventFilter(XCBFrameBuffer *owner);
public:
bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override;
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) override;
public:
int xdamageBaseEvent;
@@ -98,7 +99,7 @@ KrfbXCBEventFilter::KrfbXCBEventFilter(XCBFrameBuffer *owner):
bool KrfbXCBEventFilter::nativeEventFilter(const QByteArray &eventType,
void *message, qintptr *result) {
void *message, long *result) {
Q_UNUSED(result); // "result" is only used on windows
if (xdamageBaseEvent == 0) return false; // no xdamage extension
@@ -158,13 +159,12 @@ XCBFrameBuffer::XCBFrameBuffer(QObject *parent):
d->area.setRect(0, 0, 0, 0);
d->x11EvtFilter = new KrfbXCBEventFilter(this);
d->rootScreen = get_xcb_screen(QX11Info::connection(), QX11Info::appScreen());
d->win = QApplication::desktop()->winId();
this->fb = nullptr;
QScreen *primaryScreen = QGuiApplication::primaryScreen();
if (primaryScreen) {
QPlatformNativeInterface* native = qApp->platformNativeInterface();
d->win = reinterpret_cast<WId>(native->nativeResourceForScreen(QByteArrayLiteral("rootwindow"), primaryScreen));
qreal scaleFactor = primaryScreen->devicePixelRatio();
d->area = { primaryScreen->geometry().topLeft() * scaleFactor,
primaryScreen->geometry().bottomRight() * scaleFactor };

View File

@@ -22,7 +22,7 @@
#include "xcb_framebuffer.h"
#include <KPluginFactory>
K_PLUGIN_CLASS_WITH_JSON(XCBFrameBufferPlugin, "xcb.json")
K_PLUGIN_CLASS(XCBFrameBufferPlugin)
XCBFrameBufferPlugin::XCBFrameBufferPlugin(QObject *parent, const QVariantList &args)
: FrameBufferPlugin(parent, args)

View File

@@ -23,9 +23,9 @@ generate_export_header(krfbprivate BASE_NAME krfbprivate)
target_link_libraries (krfbprivate
Qt::Core
Qt::Widgets
Qt::GuiPrivate
Qt5::Core
Qt5::Widgets
Qt5::X11Extras
${X11_X11_LIB}
${LIBVNCSERVER_LIBRARIES}
)
@@ -80,7 +80,7 @@ ki18n_wrap_ui (krfb_UI_SRCS
ui/mainwidget.ui
)
qt_add_resources(krfb_SRCS
qt5_add_resources(krfb_SRCS
krfb.qrc
)
@@ -95,17 +95,16 @@ target_link_libraries (krfb
${X11_Xext_LIB}
${X11_X11_LIB}
${X11_Xdamage_LIB}
Qt::Network
KF6::CoreAddons
KF6::DBusAddons
KF6::DNSSD
KF6::I18n
KF6::Notifications
KF6::Wallet
KF6::WidgetsAddons
KF6::WindowSystem
KF6::XmlGui
KF6::StatusNotifierItem
Qt5::Network
KF5::CoreAddons
KF5::DBusAddons
KF5::DNSSD
KF5::I18n
KF5::Notifications
KF5::Wallet
KF5::WidgetsAddons
KF5::WindowSystem
KF5::XmlGui
${LIBVNCSERVER_LIBRARIES}
)
@@ -136,13 +135,13 @@ add_executable(krfb-virtualmonitor main-virtualmonitor.cpp ${krfbvm_SRCS} ${krfb
rfbserver.cpp rfbclient.cpp rfbservermanager.cpp eventsmanager.cpp framebuffermanager.cpp sockethelpers.cpp)
target_link_libraries(krfb-virtualmonitor
krfbprivate
Qt::Gui
Qt::Network
KF6::ConfigGui
KF6::CoreAddons
KF6::I18n
KF6::Notifications
KF6::WindowSystem
Qt5::Gui
Qt5::Network
KF5::ConfigGui
KF5::CoreAddons
KF5::I18n
KF5::Notifications
KF5::WindowSystem
)
install (TARGETS krfb-virtualmonitor

View File

@@ -9,3 +9,6 @@
/* Define if XShm is available */
#cmakedefine HAVE_XSHM 1
/* Define if DMA-BUF support is available */
#cmakedefine01 HAVE_DMA_BUF

View File

@@ -24,7 +24,6 @@
#include "krfbconfig.h"
#include "krfbdebug.h"
#include <QGuiApplication>
#include <QGlobalStatic>
#include <KPluginFactory>
@@ -41,10 +40,7 @@ Q_GLOBAL_STATIC(FrameBufferManagerStatic, frameBufferManagerStatic)
FrameBufferManager::FrameBufferManager()
{
const auto platformFilter = [] (const KPluginMetaData &pluginData) {
return pluginData.value(QStringLiteral("X-KDE-OnlyShowOnQtPlatforms"), QStringList()).contains(QGuiApplication::platformName());
};
const QVector<KPluginMetaData> plugins = KPluginMetaData::findPlugins(QStringLiteral("krfb/framebuffer"), platformFilter, KPluginMetaData::AllowEmptyMetaData);
const QVector<KPluginMetaData> plugins = KPluginMetaData::findPlugins(QStringLiteral("krfb/framebuffer"), {}, KPluginMetaData::AllowEmptyMetaData);
for (const KPluginMetaData &data : plugins) {
const KPluginFactory::Result<FrameBufferPlugin> result = KPluginFactory::instantiatePlugin<FrameBufferPlugin>(data);
if (result.plugin) {
@@ -80,21 +76,17 @@ QSharedPointer<FrameBuffer> FrameBufferManager::frameBuffer(WId id, const QVaria
}
}
if (auto preferredPlugin = m_plugins.value(KrfbConfig::preferredFrameBufferPlugin())) {
if (auto frameBuffer = QSharedPointer<FrameBuffer>(preferredPlugin->frameBuffer(args))) {
qCDebug(KRFB) << "Using FrameBuffer:" << KrfbConfig::preferredFrameBufferPlugin();
m_frameBuffers.insert(id, frameBuffer.toWeakRef());
return frameBuffer;
}
}
// We don't already have that frame buffer.
for (auto it = m_plugins.cbegin(); it != m_plugins.constEnd(); it++) {
QSharedPointer<FrameBuffer> frameBuffer(it.value()->frameBuffer(args));
if (frameBuffer) {
qCDebug(KRFB) << "Using FrameBuffer:" << it.key();
m_frameBuffers.insert(id, frameBuffer.toWeakRef());
return frameBuffer;
if (it.key() == KrfbConfig::preferredFrameBufferPlugin()) {
qCDebug(KRFB) << "Using FrameBuffer:" << KrfbConfig::preferredFrameBufferPlugin();
QSharedPointer<FrameBuffer> frameBuffer(it.value()->frameBuffer(args));
if (frameBuffer) {
m_frameBuffers.insert(id, frameBuffer.toWeakRef());
return frameBuffer;
}
}
}

View File

@@ -30,9 +30,14 @@
#include <KLocalizedString>
#include <KUser>
#include <KStringHandler>
#include <KWallet>
#include <KWallet/KWallet>
#include <kdnssd_version.h>
#if KDNSSD_VERSION >= QT_VERSION_CHECK(5, 84, 0)
#include <KDNSSD/PublicService>
#else
#include <DNSSD/PublicService>
#endif
using KWallet::Wallet;
@@ -124,7 +129,7 @@ InvitationsRfbServer::InvitationsRfbServer()
{
m_desktopPassword = readableRandomString(4) + QLatin1Char('-') + readableRandomString(3);
m_unattendedPassword = readableRandomString(4) + QLatin1Char('-') + readableRandomString(3);
KConfigGroup krfbConfig(KSharedConfig::openConfig(),QStringLiteral("Security"));
KConfigGroup krfbConfig(KSharedConfig::openConfig(),"Security");
m_allowUnattendedAccess = krfbConfig.readEntry(
"allowUnattendedAccess", QVariant(false)).toBool();
}
@@ -183,7 +188,7 @@ void InvitationsRfbServer::walletOpened(bool opened)
} else {
qCDebug(KRFB) << "Could not open KWallet, Falling back to config file";
KConfigGroup krfbConfig(KSharedConfig::openConfig(),QStringLiteral("Security"));
KConfigGroup krfbConfig(KSharedConfig::openConfig(),"Security");
desktopPassword = KStringHandler::obscure(krfbConfig.readEntry(
"desktopPassword", QString()));
@@ -234,7 +239,7 @@ QString InvitationsRfbServer::readableRandomString(int length)
// one place to deal with all security configuration
void InvitationsRfbServer::saveSecuritySettings()
{
KConfigGroup secConfigGroup(KSharedConfig::openConfig(), QStringLiteral("Security"));
KConfigGroup secConfigGroup(KSharedConfig::openConfig(), "Security");
secConfigGroup.writeEntry("allowUnattendedAccess", m_allowUnattendedAccess);
if (KrfbConfig::noWallet()) {
// save passwords in config file only if not using kwallet integration

View File

@@ -37,7 +37,7 @@ Comment[ka]=სამუშაო მაგიდის გაზიარებ
Comment[kk]=Үстелді ортақтастыру
Comment[km]=ការ​ចែក​រំលែក​ផ្ទែ​តុ
Comment[ko]=데스크톱 공유
Comment[lt]=Darbalaukio bendrinimas
Comment[lt]=Dalinimasis darbalaukiu
Comment[lv]=Darbvirsmas koplietošana
Comment[mk]=Делење на работната површина
Comment[ml]=പണിയിടം പങ്കുവെക്കല്‍
@@ -689,7 +689,7 @@ Name[ug]=ئىناۋەتسىز ئىم تەكلىپلىرى
Name[uk]=Запрошення з некоректними паролями
Name[x-test]=xxInvalid Password Invitationsxx
Name[zh_CN]=无效密码邀请
Name[zh_TW]=無效的密碼邀請
Name[zh_TW]=不合法的密碼邀請
Comment=The invited party sent an invalid password. Connection refused.
Comment[af]=Die uitgenooi party gestuur 'n ongeldige wagwoord. Verbinding geweier.
Comment[ar]=المدعو أرسل كلمة مرور غير صحيحة. رفض الإتصال.

View File

@@ -30,7 +30,7 @@
#include <QPixmap>
#include <qwindowdefs.h>
#include <QtGui/private/qtx11extras_p.h>
#include <QX11Info>
#include <csignal>
#include <X11/extensions/XTest.h>

View File

@@ -264,7 +264,7 @@ void MainWindow::showConfiguration()
} else {
InvitationsRfbServer::instance->openKWallet();
// erase stored passwords from krfbconfig file
KConfigGroup securityConfigGroup(KSharedConfig::openConfig(), QStringLiteral("Security"));
KConfigGroup securityConfigGroup(KSharedConfig::openConfig(), "Security");
securityConfigGroup.deleteEntry("desktopPassword");
securityConfigGroup.deleteEntry("unattendedPassword");
}

View File

@@ -11,7 +11,6 @@
<name xml:lang="de">Krfb</name>
<name xml:lang="el">Krfb</name>
<name xml:lang="en-GB">Krfb</name>
<name xml:lang="eo">Krfb</name>
<name xml:lang="es">Krfb</name>
<name xml:lang="et">Krfb</name>
<name xml:lang="eu">Krfb</name>
@@ -50,13 +49,11 @@
<summary xml:lang="de">Verbindung Ihrer Arbeitsfläche zu anderen Rechnern über VNC</summary>
<summary xml:lang="el">Μοιραστείτε την επιφάνεια εργασίας σας με άλλον υπολογιστή μέσω VNC</summary>
<summary xml:lang="en-GB">Share your desktop to another computer via VNC</summary>
<summary xml:lang="eo">Kundividu vian labortablon al alia komputilo per VNC</summary>
<summary xml:lang="es">Compartir su escritorio con otro equipo usando VNC</summary>
<summary xml:lang="et">Oma töölaua jagamine VNC kaudu teise arvutisse</summary>
<summary xml:lang="eu">Partekatu zure mahaigaina beste ordenagailu batekin VNC erabiliz</summary>
<summary xml:lang="fi">Jaa työpöytä toiselle koneelle VNC:n kautta</summary>
<summary xml:lang="fr">Partager votre bureau avec un autre ordinateur grâce à « VNC »</summary>
<summary xml:lang="gl">Comparte o teu escritorio con outro computador por VNC</summary>
<summary xml:lang="ia">Compartir tu scriptorio a un altere computator via VNC</summary>
<summary xml:lang="id">Bagikan desktopmu ke komputer lainnya via VNC</summary>
<summary xml:lang="it">Condividi il desktop con un altro computer tramite VNC</summary>
@@ -76,7 +73,6 @@
<summary xml:lang="uk">Надайте вашу стільницю у спільне користування з іншим комп'ютером за допомогою VNC</summary>
<summary xml:lang="x-test">xxShare your desktop to another computer via VNCxx</summary>
<summary xml:lang="zh-CN">通过 VNC 分享您的桌面到另一台电脑</summary>
<summary xml:lang="zh-TW">透過 VNC 將您的桌面分享給另一台電腦</summary>
<description>
<p>Krfb Desktop Sharing is a server application that allows you to share your current session with a user on another machine, who can use a VNC client to view or even control the desktop.</p>
<p xml:lang="ca">El Krfb és una aplicació de servidor que permet compartir la vostra sessió actual amb un usuari en una altra màquina, la qual pot emprar un client VNC per a veure o controlar l'escriptori.</p>
@@ -85,7 +81,6 @@
<p xml:lang="de">Krfb ist eine Serveranwendung, welche die gemeinsame Benutzung der aktuellen Sitzung mit einem Benutzer auf einem anderen Rechner ermöglicht, der mit Hilfe eines VNC-Programms den Bildschirminhalt sehen oder sogar die Arbeitsfläche bedienen kann.</p>
<p xml:lang="el">Η κοινή χρήση επιφάνειας εργασίας Krfb είναι μια εφαρμογή εξυπηρετητή που σας επιτρέπει να μοιράζεστε την τρέχουσα συνεδρία σας με έναν χρήστη σε άλλο μηχάνημα, ο οποίος μπορεί να χρησιμοποιεί έναν πελάτη VNC για να παρακολουθεί ή και να ελέγχει την επιφάνεια εργασίας σας.</p>
<p xml:lang="en-GB">Krfb Desktop Sharing is a server application that allows you to share your current session with a user on another machine, who can use a VNC client to view or even control the desktop.</p>
<p xml:lang="eo">Krfb Desktop Sharing estas servila aplikaĵo, kiu ebligas al vi kunhavigi vian aktualan seancon kun uzanto sur alia maŝino, kiu povas uzi VNC-klienton por rigardi aŭ eĉ kontroli la labortablon.</p>
<p xml:lang="es">Krfb para compartir el escritorio es una aplicación de servidor que le permite compartir su sesión actual con un usuario de otra máquina, que puede usar un cliente VNC para ver e incluso controlar su escritorio.</p>
<p xml:lang="et">Krfb töölaua jagamine on serverirakendus, mis võimaldab jagada aktiivset seanssi mõne teise masina taga istuva kasutajaga, kes saab VNC kliendi kaudu töölauda näha või isegi juhtida.</p>
<p xml:lang="eu">Krfb Mahaigaina Partekatzea zerbitzari aplikazio bat da zure uneko saioa beste makina batean dagoen erabiltzaile batekin partekatzen uzten dizuna. Beste makinan VNC bezeroa erabil dezake zure mahaigaina ikusi edo baita kontrolatzeko ere.</p>
@@ -96,7 +91,7 @@
<p xml:lang="id">Krfb Desktop Sharing adalah aplikasi server yang memungkinkan kamu untuk berbagi sesimu saat ini dengan pengguna di mesin lain, yang bisa menggunakan klien VNC untuk menampilkan atau bahkan mengendalikan desktop.</p>
<p xml:lang="it">Condivisione del desktop Krfb è un'applicazione server che permette di condividere la sessione attuale con un utente su un'altra macchina, che potrà usare un client VNC per visualizzare ed anche controllare il desktop.</p>
<p xml:lang="ka">Krfb სამუშაო მაგიდის გაზიარება აპლიკაციის სერვერია, რომელიც თქვენი მიმდინარე სესიის სხვა მომხმარებლისთვის, რომელსაც VNC კლიენტი აქვს, გაზიარების და კონტროლის გადაცემის საშუალებას გაძლევთ.</p>
<p xml:lang="ko">Krfb 데스크톱 공유는 현재 세션을 다른 머신의 사용자와 VNC를 통해서 공유하거나 원격 제어를 요청할 수 있는 서버 입니다.</p>
<p xml:lang="ko">Krfb 데스크톱 공유는 현재 세션을 다른 머신의 사용자와 VNC를 통해서 공유하거나 원격 제어를 요청할 수 있는 서버 프로그램입니다.</p>
<p xml:lang="nl">Bureaublad delen is een server-applicatie die u in staat stelt uw huidige sessie te delen met een gebruiker op een andere machine, die een VNC-client kan gebruiken om uw bureaublad te bekijken of zelfs te besturen.</p>
<p xml:lang="nn">Krfb skrivebordsdeling er eit tenar­program som lèt deg dela skrivebords­økta di med ein brukar på ei anna maskin. Vedkommande kan så bruka ein VNC-klient for å sjå og eventuelt òg styra økta.</p>
<p xml:lang="pl">Współdzielenie pulpitu Krfb jest aplikacją serwerową, która umożliwia współdzielenie twojej bieżącej sesji z użytkownikiem na innym komputerze, który może użyć klienta VNC do oglądania,a a nawet sterowania twoim pulpitem.</p>
@@ -131,7 +126,6 @@
<caption xml:lang="de">Freigabe der Arbeitsfläche mit Krfb</caption>
<caption xml:lang="el">Κοινή χρήση επιφάνειας εργασίας με το Krfb</caption>
<caption xml:lang="en-GB">Sharing desktop with Krfb</caption>
<caption xml:lang="eo">Kundividante labortablon per Krfb</caption>
<caption xml:lang="es">Compartiendo el escritorio con Krfb</caption>
<caption xml:lang="et">Töölaua jagamine Krfb abil</caption>
<caption xml:lang="eu">Mahaigaina Krfb-ren bidez partekatzea</caption>
@@ -166,9 +160,9 @@
</provides>
<project_group>KDE</project_group>
<releases>
<release version="24.02.2" date="2024-04-11"/>
<release version="24.02.1" date="2024-03-21"/>
<release version="24.02.0" date="2024-02-28"/>
<release version="23.08.5" date="2024-02-15"/>
<release version="22.12.3" date="2023-03-02"/>
<release version="22.12.2" date="2023-02-02"/>
<release version="22.12.1" date="2023-01-05"/>
<release version="22.12.0" date="2022-12-08"/>
</releases>
</component>

View File

@@ -7,7 +7,7 @@ X-DBUS-StartupType=Unique
X-DocPath=krfb/index.html
Terminal=false
Name=Krfb
Name[ar]=كرفب
Name[ar]=Krfb
Name[bg]=Krfb
Name[bn]=কে-আর-এফ-বি
Name[br]=Krfb
@@ -76,7 +76,6 @@ Name[zh_CN]=Krfb
Name[zh_HK]=Krfb
Name[zh_TW]=桌面分享_Krfb
GenericName=Desktop Sharing (VNC)
GenericName[ar]=مشاركة سطح المكتب (VNC)
GenericName[ca]=Compartició de l'escriptori (VNC)
GenericName[ca@valencia]=Compartició de l'escriptori (VNC)
GenericName[cs]=Sdílení pracovní plochy (VNC)
@@ -84,19 +83,15 @@ GenericName[da]=Skrivebordsdeling (VNC)
GenericName[de]=Arbeitsflächen-Freigabe (VNC)
GenericName[el]=Κοινή χρήση επιφάνειας εργασίας (VNC)
GenericName[en_GB]=Desktop Sharing (VNC)
GenericName[eo]=Kunhavigo de Labortablo (VNC)
GenericName[es]=Escritorio compartido (VNC)
GenericName[et]=Töölaua jagamine (VNC)
GenericName[eu]=Mahaigaina partekatzea (VNC)
GenericName[fi]=Työpöydän jakaminen (VNC)
GenericName[fr]=Partage de bureaux (VNC)
GenericName[gl]=Compartir o escritorio (VNC)
GenericName[hu]=Munkaasztal-megosztás (VNC)
GenericName[ia]=Compartir de scriptorio (VNC)
GenericName[it]=Condivisione del desktop (VNC)
GenericName[ka]=სამუშაო მაგიდის გაზიარება(VNC).
GenericName[ko]=데스크톱 공유(VNC)
GenericName[lt]=Darbalaukio bendrinimas (VNC)
GenericName[nl]=Bureaublad delen (VNC)
GenericName[nn]=Skrivebordsdeling (VNC)
GenericName[pl]=Współdzielenie pulpitu (VNC)
@@ -111,7 +106,6 @@ GenericName[tr]=Masaüstü Paylaşımı (VNC)
GenericName[uk]=Спільні стільниці (VNC)
GenericName[x-test]=xxDesktop Sharing (VNC)xx
GenericName[zh_CN]=桌面共享 (VNC)
GenericName[zh_TW]=桌面分享 (VNC)
Comment=Desktop Sharing
Comment[af]=Werkskerm Deeling
Comment[ar]=مشاركة سطح المكتب
@@ -149,7 +143,7 @@ Comment[ka]=სამუშაო მაგიდის გაზიარებ
Comment[kk]=Үстелді ортақтастыру
Comment[km]=ការ​ចែក​រំលែក​ផ្ទែ​តុ
Comment[ko]=데스크톱 공유
Comment[lt]=Darbalaukio bendrinimas
Comment[lt]=Dalinimasis darbalaukiu
Comment[lv]=Darbvirsmas koplietošana
Comment[mk]=Делење на работната површина
Comment[ml]=പണിയിടം പങ്കുവെക്കല്‍

View File

@@ -5,26 +5,20 @@ Exec=@CMAKE_INSTALL_PREFIX@/bin/krfb-virtualmonitor
Icon=krfb
Terminal=false
Name=KRFBs Virtual Monitor
Name[ar]=شاشة افتراضية لكرفب
Name[ca]=Monitor virtual del Krfb
Name[ca@valencia]=Monitor virtual de Krfb
Name[cs]=Virtuální monitor KRFB
Name[el]=Εικονική οθόνη του KRFB
Name[en_GB]=KRFBs Virtual Monitor
Name[eo]=Virtuala Monitoro de KRFB
Name[es]=Monitor virtual de KRFB
Name[eu]=KRFBren alegiazko monitorea
Name[fi]=KRFB:n virtuaalinäyttö
Name[fr]=Moniteur virtuel « Krfb »
Name[gl]=Monitor virtual de KRFB
Name[hu]=KRFB virtuális monitor
Name[ia]=Virtual Monitor de KRFB
Name[it]=Monitor virtuale di KRFB
Name[ka]=KRFB-
Name[ko]=KRFBs
Name[lt]=KRFBs virtualus monitorius
Name[nl]=Virtuele monitor van KRFB
Name[nn]=KRFBs virtuell skjerm
Name[pl]=Monitor wirtualny KRFB
Name[pt]=Monitor Virtual do KRFB
Name[pt_BR]=Monitor virtual do KRFB
@@ -37,28 +31,21 @@ Name[tr]=KRFB Sanal Monitörü
Name[uk]=Віртуальний монітор KRFB
Name[x-test]=xxKRFBs Virtual Monitorxx
Name[zh_CN]=KRBs
Name[zh_TW]=KRFBs
Comment=Remote Virtual Monitor
Comment[ar]=شاشة افتراضية بعيدة
Comment[ca]=Monitor virtual remot
Comment[ca@valencia]=Monitor virtual remot
Comment[cs]=Vzdálený virtuální monitor
Comment[el]=Απομακρυσμένη εικονική οθόνη
Comment[en_GB]=Remote Virtual Monitor
Comment[eo]=Fora Virtuala Monitoro
Comment[es]=Monitor virtual remoto
Comment[eu]=Urruneko alegiazko monitorea
Comment[fi]=Virtuaalinen etänäyttö
Comment[fr]=Moniteur virtuel distant
Comment[gl]=Monitor virtual remoto
Comment[hu]=Távoli virtuális monitor
Comment[ia]=Monitor Virtual Remote
Comment[it]=Monitor virtuale remoto
Comment[ka]=
Comment[ko]=
Comment[lt]=Nuotolinis virtualus monitorius
Comment[nl]=Virtual Monitor op afstand
Comment[nn]=Virtuell skjerm for ekstern ressurs
Comment[pl]=Zdalny monitor wirtualny
Comment[pt]=Monitor Virtual Remoto
Comment[pt_BR]=Monitor virtual remoto
@@ -71,6 +58,5 @@ Comment[tr]=Uzak Sanal Monitör
Comment[uk]=Віддалений віртуальний монітор
Comment[x-test]=xxRemote Virtual Monitorxx
Comment[zh_CN]=
Comment[zh_TW]=
NoDisplay=true
X-KDE-Wayland-Interfaces=zkde_screencast_unstable_v1

View File

@@ -24,7 +24,7 @@
#include <QApplication>
#include <QClipboard>
#include <QPointer>
#include <QtGui/private/qtx11extras_p.h>
#include <QX11Info>
struct RfbServer::Private
{

View File

@@ -26,14 +26,13 @@
#include "krfbdebug.h"
#include <QTimer>
#include <QApplication>
#include <QDesktopWidget>
#include <QGlobalStatic>
#include <QHostInfo>
#include <qpa/qplatformnativeinterface.h>
#include <KLocalizedString>
#include <KUser>
#include <KNotification>
#include <KWindowSystem>
#include <chrono>
using namespace std::chrono_literals;
@@ -125,14 +124,7 @@ QVariantMap RfbServerManager::s_pluginArgs;
void RfbServerManager::init()
{
//qDebug();
WId rootWindow = 0;
if (KWindowSystem::isPlatformX11()) {
QPlatformNativeInterface* native = qApp->platformNativeInterface();
rootWindow = reinterpret_cast<WId>(native->nativeResourceForScreen(QByteArrayLiteral("rootwindow"), QGuiApplication::primaryScreen()));
}
d->fb = FrameBufferManager::instance()->frameBuffer(rootWindow, s_pluginArgs);
d->fb = FrameBufferManager::instance()->frameBuffer(QApplication::desktop()->winId(), s_pluginArgs);
d->myCursor = rfbMakeXCursor(19, 19, (char *) cur, (char *) mask);
d->myCursor->cleanup = false;
d->desktopName = QStringLiteral("%1@%2 (shared desktop)") //FIXME check if we can use utf8

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2002-11-07 11:35+0200\n"
"Last-Translator: WEB-Translator <http://kde.af.org.za>\n"
"Language-Team: AFRIKAANS <AF@lia.org.za>\n"
@@ -51,7 +51,7 @@ msgstr "Aanvaar Verbinding"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Ontvang verbinding van %1, op hou (terwyl gewag het vir bevestiging)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr ""
@@ -381,13 +381,13 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 is now connected."
msgstr "Die afgeleë gebruiker het gesluit Die verbinding."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 disconnected."

View File

@@ -7,22 +7,22 @@
# Munzir Taha <munzir@kacst.edu.sa>, 2004.
# محمد سعد Mohamed SAAD <metehyi@free.fr>, 2006.
# Youssef Chahibi <chahibi@gmail.com>, 2007.
# SPDX-FileCopyrightText: 2009, 2024 zayed <zayed.alsaidi@gmail.com>
# zayed <zayed.alsaidi@gmail.com>, 2009.
msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"PO-Revision-Date: 2024-02-24 12:24+0400\n"
"Last-Translator: Zayed Al-Saidi <zayed.alsaidi@gmail.com>\n"
"Language-Team: ar\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2009-01-11 13:06+0400\n"
"Last-Translator: zayed <zayed.alsaidi@gmail.com>\n"
"Language-Team: Arabic <linuxac-kde-arabic-team@googlegroups.com>\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
"X-Generator: Lokalize 23.08.1\n"
"X-Generator: KBabel 1.11.4\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -52,16 +52,16 @@ msgid "Refuse Connection"
msgstr "أ&رفض الاتصال"
#: invitationsrfbclient.cpp:69
#, kde-format
#, fuzzy, kde-format
msgid "Accepted connection from %1"
msgstr "اتصال مقبول من %1"
msgstr "اتصال مقبول غير مدعو من %1"
#: invitationsrfbclient.cpp:75
#, kde-format
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "وصول اتصال من %1 ، معلق (في انتظار التأكيد)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (سطح مكتب مشارك)"
@@ -70,7 +70,7 @@ msgstr "%1@%2 (سطح مكتب مشارك)"
#: krfb.kcfg:9
#, kde-format
msgid "Start minimized"
msgstr "ابدأ مصغّرًا"
msgstr ""
#. i18n: ectx: label, entry (useDefaultPort), group (TCP)
#: krfb.kcfg:15
@@ -95,7 +95,7 @@ msgstr "أعلن الخدمة على الشبكة المحلية"
#: krfb.kcfg:29
#, kde-format
msgid "Do not store passwords in KWallet"
msgstr "لا تحفظ كلمات السر في «محفظتك»"
msgstr ""
#. i18n: ectx: label, entry (allowDesktopControl), group (Security)
#: krfb.kcfg:33
@@ -120,25 +120,25 @@ msgstr "كلمة السر للاتصالات غير المدعوة."
#: krfb.kcfg:49
#, kde-format
msgid "Preferred Frame Buffer Plugin"
msgstr "ملحق مخزن الأطر المؤقت المفضل"
msgstr ""
#: main-virtualmonitor.cpp:49
#, kde-format
msgid "Creating a Virtual Monitor from %1"
msgstr "تنشئ شاشة افتراضية من %1"
msgstr ""
#: main-virtualmonitor.cpp:80
#, kde-format
msgid "Remote Virtual Monitor"
msgstr "شاشة افتراضية بعيدة"
msgstr ""
#: main-virtualmonitor.cpp:82
#, kde-format
msgid "Offer a Virtual Monitor that can be accessed remotely"
msgstr "تقدم شاشة افتراضية يمكن الوصول إليها عن بعد"
msgstr ""
#: main-virtualmonitor.cpp:84 main.cpp:98
#, kde-format
#, fuzzy, kde-format
msgid ""
"(c) 2009-2010, Collabora Ltd.\n"
"(c) 2007, Alessandro Praduroux\n"
@@ -148,28 +148,28 @@ msgid ""
"(c) 2000, Tridia Corporation\n"
"(c) 1999, AT&T Laboratories Boston\n"
msgstr ""
"(ج) 2009-2010، شركة Collabora Ltd.\n"
"(ج) 2007، أليساندرو برادورو\n"
"(ج) 2001-2003، تيم يانسن\n"
"(ج) 2001، يوهانس إي. شيندلين\n"
"(ج) 2000-2001، كونست كابلينسكي\n"
"(ج) 2000، شركة تريديا\n"
"(ج) 1999، مختبرات AT&T في بوسطن\n"
"(c) 2007, Alessandro Praduroux\n"
"(c) 2001-2003, Tim Jansen\n"
"(c) 2001, Johannes E. Schindelin\n"
"(c) 2000, heXoNet Support GmbH, D-66424 Homburg\n"
"(c) 2000-2001, Const Kaplinsky\n"
"(c) 2000, Tridia Corporation\n"
"(c) 1999, AT&T Laboratories Boston\n"
#: main-virtualmonitor.cpp:91
#, kde-format
msgid "Virtual Monitor implementation"
msgstr "تنفيذ الشاشة الافتراضية"
msgstr ""
#: main-virtualmonitor.cpp:92 main.cpp:108
#, kde-format
msgid "George Kiagiadakis"
msgstr "جورج كياجياداكيس"
msgstr ""
#: main-virtualmonitor.cpp:93 main.cpp:111
#, kde-format
msgid "Alessandro Praduroux"
msgstr "أليساندرو برادورو"
msgstr "Alessandro Praduroux"
#: main-virtualmonitor.cpp:93 main.cpp:111
#, kde-format
@@ -184,12 +184,12 @@ msgstr "Tim Jansen"
#: main-virtualmonitor.cpp:94 main.cpp:112
#, kde-format
msgid "Original author"
msgstr "المؤلف الأصلي"
msgstr ""
#: main-virtualmonitor.cpp:95 main.cpp:113
#, kde-format
msgid "Johannes E. Schindelin"
msgstr "يوهانس إي شيندلين"
msgstr "Johannes E. Schindelin"
#: main-virtualmonitor.cpp:96 main.cpp:114
#, kde-format
@@ -199,7 +199,7 @@ msgstr "libvncserver"
#: main-virtualmonitor.cpp:97 main.cpp:115
#, kde-format
msgid "Const Kaplinsky"
msgstr "كونست كابلينسكي"
msgstr "Const Kaplinsky"
#: main-virtualmonitor.cpp:98 main.cpp:116
#, kde-format
@@ -209,7 +209,7 @@ msgstr "مرمز TightVNC"
#: main-virtualmonitor.cpp:99 main.cpp:117
#, kde-format
msgid "Tridia Corporation"
msgstr "شركة تريديا"
msgstr "Tridia Corporation"
#: main-virtualmonitor.cpp:100 main.cpp:118
#, kde-format
@@ -219,7 +219,7 @@ msgstr "مرمز ZLib"
#: main-virtualmonitor.cpp:101 main.cpp:119
#, kde-format
msgid "AT&T Laboratories Boston"
msgstr "مختبرات AT&T بوسطن"
msgstr "AT&T Laboratories Boston"
#: main-virtualmonitor.cpp:102 main.cpp:120
#, kde-format
@@ -229,52 +229,54 @@ msgstr "مرمز VNC الأصلي وتصميم الميفاق"
#: main-virtualmonitor.cpp:108
#, kde-format
msgid "Logical resolution of the new monitor"
msgstr "الدقة المنطقي للشاشة الجديدة"
msgstr ""
#: main-virtualmonitor.cpp:108
#, kde-format
msgid "resolution"
msgstr "الدقة"
msgstr ""
#: main-virtualmonitor.cpp:110
#, kde-format
msgid "Name of the monitor"
msgstr "اسم الشاشة"
msgstr ""
#: main-virtualmonitor.cpp:110
#, kde-format
msgid "name"
msgstr "الاسم"
msgstr ""
#: main-virtualmonitor.cpp:112
#, kde-format
#, fuzzy, kde-format
#| msgid "Password for uninvited connections."
msgid "Password for the client to connect to it"
msgstr "كلمة السر للعميل للاتصال به"
msgstr "كلمة السر للاتصالات غير المدعوة."
#: main-virtualmonitor.cpp:112
#, kde-format
#, fuzzy, kde-format
#| msgid "<b>Password:</b>"
msgid "password"
msgstr "كلمة السر"
msgstr "<b>كلمة المرور:</b>"
#: main-virtualmonitor.cpp:114
#, kde-format
msgid "The device-pixel-ratio of the device, the scaling factor"
msgstr "نسبة البكسل للجهاز، عامل القياس"
msgstr ""
#: main-virtualmonitor.cpp:114
#, kde-format
msgid "dpr"
msgstr "dpr"
msgstr ""
#: main-virtualmonitor.cpp:116
#, kde-format
msgid "The port we will be listening to"
msgstr "المنفذ الذي سنستمع إليه"
msgstr ""
#: main-virtualmonitor.cpp:116
#, kde-format
msgid "number"
msgstr "الرقم"
msgstr ""
#: main.cpp:49
#, kde-format
@@ -296,24 +298,25 @@ msgid "Desktop Sharing"
msgstr "مشاركة سطح المكتب"
#: main.cpp:96
#, kde-format
#, fuzzy, kde-format
#| msgid "VNC-compatible server to share KDE desktops"
msgid "VNC-compatible server to share desktops"
msgstr "خادم متوافق مع VNC لمشاركة أجهزة سطح المكتب"
msgstr "خادم VNC يطابق مشاركة أسطح المكتب KDE"
#: main.cpp:105
#, kde-format
msgid "George Goldberg"
msgstr "جورج جولدبيرج"
msgstr ""
#: main.cpp:106
#, kde-format
msgid "Telepathy tubes support"
msgstr "دعم أنابيب التخاطر"
msgstr ""
#: main.cpp:126
#, kde-format
msgid "Do not show the invitations management dialog at startup"
msgstr "لا تظهر مربع حوار إدارة الدعوات عند بدء التشغيل"
msgstr ""
#: main.cpp:148
#, kde-format
@@ -321,18 +324,16 @@ msgid ""
"Desktop Sharing is not running under an X11 Server or Wayland.\n"
"Other display servers are currently not supported."
msgstr ""
"مشاركة سطح المكتب لا تعمل ضمن خادم أكس أو ويلاند.\n"
"خوادم العرض الأخرى غير مدعومة حاليًا."
#: mainwindow.cpp:52
#, kde-format
msgid "Storing passwords in config file is insecure!"
msgstr "تخزين كلمات السر في ملف الضبط غير آمن!"
msgstr ""
#: mainwindow.cpp:189
#, kde-format
msgid "Enter a new password for Unattended Access"
msgstr "أدخل كلمة سر جديدة للوصول غير المراقب"
msgstr ""
#: mainwindow.cpp:200
#, kde-format
@@ -340,20 +341,19 @@ msgid ""
"Failed to start the krfb server. Desktop sharing will not work. Try setting "
"another port in the settings and restart krfb."
msgstr ""
"فشل في بدء تشغيل خادم krfb. لن تعمل مشاركة سطح المكتب. حاول إعداد منفذ آخر "
"في الإعدادات وإعادة تشغيل krfb."
#. i18n: ectx: property (whatsThis), widget (QLabel, titleLabel)
#. i18n: ectx: property (text), widget (QLabel, titleLabel)
#. i18n: ectx: property (whatsThis), widget (QLabel, aboutLabel)
#: mainwindow.cpp:223 mainwindow.cpp:230 ui/mainwidget.ui:83
#: ui/mainwidget.ui:86 ui/mainwidget.ui:114
#, kde-format
#, fuzzy, kde-format
#| msgid "Desktop Sharing"
msgid "KDE Desktop Sharing"
msgstr "مشاركة سطح المكتب كيدي"
msgstr "مشاركة سطح المكتب"
#: mainwindow.cpp:224
#, kde-format
#, fuzzy, kde-format
msgid ""
"This field contains the address of your computer and the port number, "
"separated by a colon.\n"
@@ -383,10 +383,6 @@ msgid ""
"password, desktop sharing access will be granted without explicit "
"confirmation."
msgstr ""
"يجب مصادقة أي مستخدم بعيد لديه كلمة سر عادية لمشاركة سطح المكتب.\n"
"\n"
"إذا كان الوصول غير المراقب مشغل، وقام المستخدم البعيد بتوفير كلمة سر للوضع "
"غير المراقب، فسيمنح الوصول إلى مشاركة سطح المكتب دون تأكيد صريح."
#: mainwindow.cpp:249
#, kde-format
@@ -401,28 +397,27 @@ msgstr "الأمن"
#: mainwindow.cpp:251
#, kde-format
msgid "Screen capture"
msgstr "التقاط الشّاشة"
msgstr ""
#: mainwindow.cpp:256
#, kde-format
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
"لتطبيق إعداد البرنامج المساعد Framebuffer، تحتاج إلى إعادة تشغيل البرنامج."
#: rfbservermanager.cpp:237
#, kde-format
#: rfbservermanager.cpp:229
#, fuzzy, kde-format
msgid "The remote user %1 is now connected."
msgstr "المستخدم البعيد %1 متصل."
msgstr "المستخدم البعيد أغلق الاتصال."
#: rfbservermanager.cpp:251
#, kde-format
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
msgid "The remote user %1 disconnected."
msgstr "المستخدم البعيد %1 فقد الاتصال."
msgstr "المستخدم البعيد أغلق الاتصال."
#: trayicon.cpp:56
#, kde-format
msgid "Disconnect"
msgstr "اقطع الاتصال"
msgstr ""
#: trayicon.cpp:62
#, kde-format
@@ -440,21 +435,21 @@ msgid "Desktop Sharing - connected with %1"
msgstr "مشاركة سطح المكتب - متصل مع %1"
#: trayicon.cpp:120
#, kde-format
#, fuzzy, kde-format
msgid "Desktop Sharing - connected"
msgstr "مشاركة سطح المكتب - متصل"
msgstr "مشاركة سطح المكتب - غير متصل"
#. i18n: ectx: property (windowTitle), widget (QWidget, Framebuffer)
#: ui/configframebuffer.ui:14
#, kde-format
msgid "Framebuffer"
msgstr "مخزن الأطر المؤقت"
msgstr ""
#. i18n: ectx: property (text), widget (QLabel, label)
#: ui/configframebuffer.ui:22
#, kde-format
msgid "Preferred frameb&uffer plugin:"
msgstr "ملحق المخزن الإطر المؤقته المفضل:"
msgstr ""
#. i18n: ectx: property (text), widget (QLabel, helpText)
#: ui/configframebuffer.ui:47
@@ -465,10 +460,6 @@ msgid ""
"style=\" font-weight:600;\">qt</span> plugin is a safe fallback, if for some "
"reason others don't work. But also it is very slow.</p></body></html>"
msgstr ""
"<html><head/><body><p> عند استخدام أكس ١١ يجب تفضيل المكون الإضافي <span "
"style=\"font-weight:600;\">xcb</span> لأنه أكثر أداءً. يعد المكون الإضافي<br/"
"><span style = \"font-weight:600;\">qt</span> بديلاً آمنًا، إذا لم يعمل "
"الآخرون لسبب ما. ولكنه أيضًا بطيء جدًا.</p></body></html>"
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowDesktopControl)
#: ui/configsecurity.ui:17
@@ -480,7 +471,7 @@ msgstr "اسمح للاتصالات البعيدة بتحكم بسطح مكتب
#: ui/configsecurity.ui:27
#, kde-format
msgid "Do not store passwords using KDE wallet"
msgstr "لا تحفظ كلمات السر في محفظة كيدي"
msgstr ""
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useDefaultPort)
#: ui/configtcp.ui:26
@@ -544,50 +535,57 @@ msgstr "اسمح للمستخدم البعيد بالت&حكم بالفأرة و
#. i18n: ectx: property (text), widget (QLabel, aboutLabel)
#: ui/mainwidget.ui:117
#, kde-format
#, fuzzy, kde-format
#| msgid ""
#| "KDE Desktop Sharing allows you to invite somebody at a remote location to "
#| "watch and possibly control your desktop. <a href=\"whatsthis\">More about "
#| "invitations...</a>"
msgid ""
"KDE Desktop Sharing allows you to grant permission to someone at a remote "
"location for viewing and possibly controlling your desktop."
msgstr ""
سمح لك مشاركة سطح المكتب كيدي بمنح الإذن لشخص ما في مكان بعيد لمشاهدة سطح "
"المكتب الخاص بك وربما التحكم فيه."
"تشارك سطح المكتب للكِيدِي يسمح لك بدعوة شخص بعيد لمشاهدةأو التحكم بسطح مكتبك . "
"<a href=\"whatsthis\">المزيد عند الدعوات...</a>"
#. i18n: ectx: property (whatsThis), widget (QCheckBox, enableSharingCheckBox)
#: ui/mainwidget.ui:145
#, kde-format
#, fuzzy, kde-format
#| msgid "Manage Invitations - Desktop Sharing"
msgid "Starts/Stops Remote Desktop Sharing"
msgstr "يبدأ/يوقف مشاركة سطح المكتب عن بعد"
msgstr "إدارة الدعوات - مشاركة سطح المكتب"
#. i18n: ectx: property (text), widget (QCheckBox, enableSharingCheckBox)
#: ui/mainwidget.ui:148
#, kde-format
#, fuzzy, kde-format
#| msgid "Desktop Sharing"
msgid "&Enable Desktop Sharing"
msgstr "&مكن مشاركة سطح المكتب"
msgstr "مشاركة سطح المكتب"
#. i18n: ectx: property (title), widget (QGroupBox, detailsGroupBox)
#: ui/mainwidget.ui:170
#, kde-format
#, fuzzy, kde-format
#| msgid "Connection side image"
msgid "Connection Details"
msgstr "تفاصيل الاتصال"
msgstr "الصورة من جانب الاتصال"
#. i18n: ectx: property (text), widget (QLabel, addressLabel)
#: ui/mainwidget.ui:193
#, kde-format
msgid "&Address"
msgstr "ال&عنوان"
msgstr ""
#. i18n: ectx: property (whatsThis), widget (QToolButton, addressAboutButton)
#: ui/mainwidget.ui:214
#, kde-format
msgid "More about this address"
msgstr "المزيد عن هذا العنوان"
msgstr ""
#. i18n: ectx: property (text), widget (QToolButton, addressAboutButton)
#. i18n: ectx: property (text), widget (QToolButton, unattendedAboutButton)
#: ui/mainwidget.ui:217 ui/mainwidget.ui:397
#, kde-format
msgid "About"
msgstr "عن"
msgstr ""
#. i18n: ectx: property (whatsThis), widget (QLabel, addressDisplayLabel)
#: ui/mainwidget.ui:235
@@ -596,32 +594,32 @@ msgid ""
"Address required by remote users to connect to your desktop. Click about "
"button on the right for more info."
msgstr ""
"العنوان المطلوب من قبل المستخدمين عن بعد للاتصال بسطح المكتب الخاص بك. انقر "
"فوق الزر الموجود على اليسار لمزيد من المعلومات."
#. i18n: ectx: property (text), widget (QLabel, addressDisplayLabel)
#: ui/mainwidget.ui:238
#, kde-format
msgid "127.0.0.1 : 5900"
msgstr "127.0.0.1 : 5900"
msgstr ""
#. i18n: ectx: property (text), widget (QLabel, passwordLabel)
#: ui/mainwidget.ui:269
#, kde-format
#, fuzzy, kde-format
#| msgid "<b>Password:</b>"
msgid "&Password"
msgstr "كلمة ال&سّر"
msgstr "<b>كلمة المرور:</b>"
#. i18n: ectx: property (whatsThis), widget (QToolButton, passwordEditButton)
#: ui/mainwidget.ui:290
#, kde-format
#, fuzzy, kde-format
#| msgid "Desktop Sharing Error"
msgid "Edit/Save Desktop Sharing Password"
msgstr "حرر/احفظ كلمة السر لمشاركة سطح المكتب"
msgstr "خطأ مشاركة سطح المكتب"
#. i18n: ectx: property (text), widget (QToolButton, passwordEditButton)
#: ui/mainwidget.ui:293
#, kde-format
msgid "Edit"
msgstr "حرّر"
msgstr ""
#. i18n: ectx: property (whatsThis), widget (QLabel, passwordDisplayLabel)
#: ui/mainwidget.ui:311
@@ -630,14 +628,12 @@ msgid ""
"Password required by remote users to connect to your desktop. Click the edit "
"button on the right to change password."
msgstr ""
"كلمة السر المطلوبة من قبل المستخدمين عن بعد للاتصال بسطح المكتب الخاص بك. "
"انقر فوق زر التحرير الموجود على اليسار لتغير كلمة السر."
#. i18n: ectx: property (text), widget (QLabel, passwordDisplayLabel)
#: ui/mainwidget.ui:314
#, kde-format
msgid "TemporaryPassword"
msgstr "كلمة_سر_مؤقتة"
msgstr ""
#. i18n: ectx: property (whatsThis), widget (QGroupBox, unattendedGroupBox)
#. i18n: ectx: property (text), widget (QLabel, unattendedAboutLabel)
@@ -647,14 +643,12 @@ msgid ""
"Unattended Access allows a remote user with the password to gain control to "
"your desktop without your explicit confirmation."
msgstr ""
"يسمح الوصول غير المراقب لمستخدم بعيد لديه كلمة السر بالتحكم في سطح المكتب "
"الخاص بك دون تأكيد صريح منك."
#. i18n: ectx: property (title), widget (QGroupBox, unattendedGroupBox)
#: ui/mainwidget.ui:343
#, kde-format
msgid "Unattended Access"
msgstr "كلمة سر للوصول غير المراقب"
msgstr ""
#. i18n: ectx: property (whatsThis), widget (QLabel, unattendedAboutLabel)
#: ui/mainwidget.ui:375
@@ -664,14 +658,12 @@ msgid ""
"your desktop without your explicit confirmation. Click \"About\" button on "
"right to know more."
msgstr ""
"يسمح الوصول غير المراقب لمستخدم بعيد لديه كلمة السر بالتحكم في سطح المكتب "
"الخاص بك دون تأكيد صريح منك. انقر زر \"عن\" في اليسار لتعرف المزيد."
#. i18n: ectx: property (whatsThis), widget (QToolButton, unattendedAboutButton)
#: ui/mainwidget.ui:394
#, kde-format
msgid "Know more about Unattended Access"
msgstr "اعرف المزيد عن كلمة سر للوصول غير المراقب"
msgstr ""
#. i18n: ectx: property (whatsThis), widget (QCheckBox, enableUnattendedCheckBox)
#: ui/mainwidget.ui:437
@@ -680,26 +672,24 @@ msgid ""
"Starts/Stops unattended access to your desktop. Click on button on right to "
"change password, and \"About\" button to know more."
msgstr ""
"يبدأ/يوقف الوصول غير المراقب إلى سطح المكتب الخاص بك. انقر على الزر الموجود "
"على اليسار لتغيير كلمة السر، وزر \"حول\" لمعرفة المزيد."
#. i18n: ectx: property (text), widget (QCheckBox, enableUnattendedCheckBox)
#: ui/mainwidget.ui:440
#, kde-format
msgid "Enable &Unattended Access"
msgstr "مكن الوصول &غير المراقب"
msgstr ""
#. i18n: ectx: property (whatsThis), widget (QPushButton, unattendedPasswordButton)
#: ui/mainwidget.ui:465
#, kde-format
msgid "Change password for Unattended Access"
msgstr "غيّر كلمة سر للوصول غير المراقب"
msgstr ""
#. i18n: ectx: property (text), widget (QPushButton, unattendedPasswordButton)
#: ui/mainwidget.ui:468
#, kde-format
msgid "&Change Unattended Password"
msgstr "&غيّر كلمة سر للوصول غير المراقب"
msgstr ""
#~ msgid "Welcome to KDE Desktop Sharing"
#~ msgstr "مرحباً بك في مشاركة سطح المكتب KDE ."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2007-08-26 22:37+0300\n"
"Last-Translator: Darafei Praliaskouski <komzpa@licei2.com>\n"
"Language-Team: Belarusian <i18n@mova.org>\n"
@@ -55,7 +55,7 @@ msgstr ""
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr ""
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr ""
@@ -380,12 +380,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr ""
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr ""

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2013-07-25 15:34+0300\n"
"Last-Translator: Yasen Pramatarov <yasen@lindeas.com>\n"
"Language-Team: Bulgarian <dict@ludost.net>\n"
@@ -53,7 +53,7 @@ msgstr "Приета е връзка от %1."
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Връзката от %1 чака за потвърждение."
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (споделяне на работното място)"
@@ -392,12 +392,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Отдалеченият потребител %1 е свързан."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Отдалеченият потребител %1 е изключен."

View File

@@ -4,7 +4,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdenetwork/krfb.pot\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2004-09-20 15:44+0200\n"
"Last-Translator: Thierry Vignaud <tvignaud@mandriva.com>\n"
"Language-Team: br <LL@li.org>\n"
@@ -50,7 +50,7 @@ msgstr "Aotren ar gevreadenn"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr ""
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (burev rannet)"
@@ -379,12 +379,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr ""
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr ""

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2014-12-28 11:25+0000\n"
"Last-Translator: Fadil Ademovic <fademovic2@etf.unsa.ba>\n"
"Language-Team: Bosnian <lokal@lugbih.org>\n"
@@ -56,7 +56,7 @@ msgstr "Prihvaćena veza sa %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Prihvaćena konekcija od %1, na čekanju (čekam potvrdu)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (podijeljena radna površina)"
@@ -411,12 +411,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Udaljeni korisnik %1 je sada povezan."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Udaljeni korisnik %1 prekinuo je vezu."

View File

@@ -73,12 +73,12 @@
> per a veure o controlar l'escriptori. </para>
<para
>Típicament, emprareu el &krfb; junt amb el client <acronym
>Típicament emprareu el &krfb; junt amb el client <acronym
>VNC</acronym
> del &kde;, el qual és la &krdc;, atès que comparteix moltes de les característiques especials del &krfb;. </para>
<para
>El &krfb; no requereix que inicieu una nova sessió de X -podrà compartir la sessió actual-. Això fa que sigui realment útil quan algú vol ajudar-vos a dur a terme alguna tasca. </para>
>El &krfb; no requereix que inicieu una nova sessió de X -podrà compartir la sessió actual-. Això fa que sigui realment útil quan algú vol ajudar-vos a realitzar alguna tasca. </para>
<para
>Si us plau, informeu de qualsevol problema o petició d'una nova característica a la llista de correu del &kde; o d'un error a <ulink url="https://bugs.kde.org"
@@ -107,7 +107,7 @@
>En el protocol de Frame Buffer remot, l'aplicació que s'executa a la màquina a on l'usuari es troba assegut (que conté la pantalla, el teclat i el punter), s'anomena el client. L'aplicació que s'executa a la màquina a on està localitzat el frame-buffer (en la qual s'executa el sistema de finestres i les aplicacions que l'usuari està controlant en mode remot) s'anomena el servidor. El &krfb; és el servidor del &kde; per al protocol de Frame Buffer remot. La &krdc; és el client del &kde; per al protocol de Frame Buffer remot. </para>
<para
>Aquest ús comporta una raonable quantitat de trànsit en xarxa atès que s'envia una imatge del framebuffer, de manera que el Frame Buffer remot funciona millor sobre enllaços de banda ampla, així com una xarxa d'àrea local. Tot i això, és possible utilitzar el &krfb; sobre d'altres enllaços, però el rendiment no serà tan bo. </para>
>Aquest ús comporta una raonable quantitat de trànsit en xarxa atès que s'envia una imatge del framebuffer, de manera que el Frame Buffer remot funciona millor sobre enllaços de banda ampla, així com una xarxa d'àrea local. Tot i això és possible utilitzar el &krfb; sobre d'altres enllaços, però el rendiment no serà tan bo. </para>
</chapter>
@@ -203,7 +203,7 @@
>&Alt;<keycap
>F4</keycap
></keycombo
> el servidor continuarà funcionant, el qual és indicat per una icona a la safata del sistema. Per a aturar-lo, utilitzeu <menuchoice
> el servidor continuarà funcionant, el qual és indicat per una icona a la safata del sistema. Per aturar-lo, utilitzeu <menuchoice
><guimenu
>Fitxer</guimenu
><guimenuitem

View File

@@ -1,24 +1,24 @@
# Translation of krfb.po to Catalan
# Copyright (C) 2003-2024 This_file_is_part_of_KDE
# Copyright (C) 2003-2021 This_file_is_part_of_KDE
# This file is distributed under the license LGPL version 2.1 or
# version 3 or later versions approved by the membership of KDE e.V.
#
# Antoni Bella Pérez <antonibella5@yahoo.com>, 2003, 2012, 2015, 2017, 2020, 2021.
# Albert Astals Cid <aacid@kde.org>, 2004, 2005.
# Josep M. Ferrer <txemaq@gmail.com>, 2007, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2019, 2020, 2021, 2024.
# Josep M. Ferrer <txemaq@gmail.com>, 2007, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2019, 2020, 2021.
msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"PO-Revision-Date: 2024-01-10 11:33+0100\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2021-10-31 14:10+0100\n"
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 22.12.3\n"
"X-Generator: Lokalize 20.12.0\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Accelerator-Marker: &\n"
@@ -57,7 +57,7 @@ msgstr "Connexió acceptada des de %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Rebuda connexió des de %1, en espera (de confirmació)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (escriptori compartit)"
@@ -416,12 +416,12 @@ msgstr ""
"Per a aplicar l'opció del connector de «framebuffer», cal reiniciar el "
"programa."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "L'usuari remot %1 ara està connectat."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "L'usuari remot %1 ha desconnectat."
@@ -539,10 +539,10 @@ msgid ""
"careful. When the option is disabled the remote user can only watch your "
"screen."
msgstr ""
"Si activeu aquesta opció, l'usuari remot podrà usar el teclat i el punter "
"del ratolí. Això li donarà el control absolut sobre el vostre ordinador, "
"useu-ho amb cura. Quan aquesta opció està desactivada, l'usuari remot només "
"podrà veure la vostra pantalla."
"Si activeu aquesta opció, l'usuari remot podrà usar el teclat i el ratolí. "
"Això li donarà el control absolut sobre el vostre ordinador, useu-ho amb "
"cura. Quan aquesta opció està desactivada, l'usuari remot només podrà veure "
"la vostra pantalla."
#. i18n: ectx: property (text), widget (QCheckBox, cbAllowRemoteControl)
#: ui/connectionwidget.ui:139

View File

@@ -1,24 +1,24 @@
# Translation of krfb.po to Catalan (Valencian)
# Copyright (C) 2003-2024 This_file_is_part_of_KDE
# Copyright (C) 2003-2021 This_file_is_part_of_KDE
# This file is distributed under the license LGPL version 2.1 or
# version 3 or later versions approved by the membership of KDE e.V.
#
# Antoni Bella Pérez <antonibella5@yahoo.com>, 2003, 2012, 2015, 2017, 2020, 2021.
# Albert Astals Cid <aacid@kde.org>, 2004, 2005.
# Josep M. Ferrer <txemaq@gmail.com>, 2007, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2019, 2020, 2021, 2024.
# Josep M. Ferrer <txemaq@gmail.com>, 2007, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2019, 2020, 2021.
msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"PO-Revision-Date: 2024-01-10 11:33+0100\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2021-10-31 14:10+0100\n"
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
"Language: ca@valencia\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 22.12.3\n"
"X-Generator: Lokalize 20.12.0\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Accelerator-Marker: &\n"
@@ -57,7 +57,7 @@ msgstr "Connexió acceptada des de %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Rebuda connexió des de %1, en espera (de confirmació)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (escriptori compartit)"
@@ -417,12 +417,12 @@ msgstr ""
"Per a aplicar l'opció del connector de «framebuffer», cal reiniciar el "
"programa."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "L'usuari remot %1 ara està connectat."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "L'usuari remot %1 ha desconnectat."
@@ -540,10 +540,10 @@ msgid ""
"careful. When the option is disabled the remote user can only watch your "
"screen."
msgstr ""
"Si seleccioneu esta opció, l'usuari remot podrà utilitzar el teclat i el "
"punter del ratolí. Açò li donarà el control absolut sobre el vostre "
"ordinador, utilitzeu-ho amb cura. Quan esta opció està desseleccionada, "
"l'usuari remot només podrà veure la vostra pantalla."
"Si activeu esta opció, l'usuari remot podrà utilitzar el teclat i el ratolí. "
"Açò li donarà el control absolut sobre el vostre ordinador, utilitzeu-ho amb "
"cura. Quan esta opció està desactivada, l'usuari remot només podrà veure la "
"vostra pantalla."
#. i18n: ectx: property (text), widget (QCheckBox, cbAllowRemoteControl)
#: ui/connectionwidget.ui:139

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2022-02-08 14:54+0100\n"
"Last-Translator: Vit Pelcak <vpelcak@suse.cz>\n"
"Language-Team: Czech <kde-i18n-doc@kde.org>\n"
@@ -54,7 +54,7 @@ msgstr "Přijato spojení od %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Přijato spojení od %1, pozdrženo (čekám na potvrzení)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (sdílená plocha)"
@@ -402,12 +402,12 @@ msgstr "Nahrávat obrazovku"
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Vzdálený uživatel %1 je nyní připojen."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Vzdálený uživatel %1 se odpojil."

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2004-01-06 16:42+0000\n"
"Last-Translator: KD at KGyfieithu <kyfieithu@dotmon.com>\n"
"Language-Team: Cymraeg <cy@li.org>\n"
@@ -57,7 +57,7 @@ msgstr "Derbynwyd cysylltiad anwahoddedig o %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Derbynwyd cysylltiad o %1, wedi' ddal (yn aros am wiriad)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (Penbwrdd wedi'i Rannu)"
@@ -397,13 +397,13 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 is now connected."
msgstr "Ceuodd y defnyddiwr pell y cysylltiad."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 disconnected."

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2020-04-08 19:22+0200\n"
"Last-Translator: Martin Schlander <mschlander@opensuse.org>\n"
"Language-Team: Danish <kde-i18n-doc@kde.org>\n"
@@ -55,7 +55,7 @@ msgstr "Accepterede forbindelse fra %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Modtog forbindelse fra %1, on hold (venter på bekræftelse)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (delt skrivebord)"
@@ -415,12 +415,12 @@ msgstr ""
"Du skal genstarte programmet for at anvende indstillinger for framebuffer-"
"plugin."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Den eksterne bruger %1 er nu forbundet."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Den eksterne bruger %1 er frakoblet."

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2022-03-13 10:25+0100\n"
"Last-Translator: Frederik Schwarzer <schwarzer@kde.org>\n"
"Language-Team: German <kde-i18n-doc@kde.org>\n"
@@ -17,7 +17,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 21.12.3\n"
#, kde-format
@@ -55,7 +55,7 @@ msgstr "Verbindungsanfrage von %1 wurde akzeptiert"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Uneingeladene Verbindungsanfrage von %1 wartet auf Bestätigung"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (freigegebene Arbeitsfläche)"
@@ -417,12 +417,12 @@ msgstr ""
"Um die Einstellung für das Framebuffer-Modul anzuwenden, müssen Sie das "
"Programm neu starten."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Der entfernte Benutzer „%1“ ist nun verbunden."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Der entfernte Benutzer „%1“ hat die Verbindung getrennt."

View File

@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2021-11-06 11:12+0200\n"
"Last-Translator: Stelios <sstavra@gmail.com>\n"
"Language-Team: Greek <kde-i18n-el@kde.org>\n"
@@ -57,7 +57,7 @@ msgstr "Αποδοχή σύνδεσης από %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Η αίτηση σύνδεσης από %1, είναι σε αναμονή (περιμένει επιβεβαίωση)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (επιφάνεια εργασίας σε κοινή χρήση)"
@@ -419,12 +419,12 @@ msgstr ""
"Για την εφαρμογή προσθέτου ενδιάμεσης μνήμης, πρέπει να επανεκκινήσετε το "
"πρόγραμμα."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Ο απομακρυσμένος χρήστης %1 έχει τώρα συνδεθεί."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Ο απομακρυσμένος χρήστης %1 έχει αποσυνδεθεί."

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2022-01-01 15:48+0000\n"
"Last-Translator: Steve Allewell <steve.allewell@gmail.com>\n"
"Language-Team: British English <kde-l10n-en_gb@kde.org>\n"
@@ -54,7 +54,7 @@ msgstr "Accepted connection from %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Received connection from %1, on hold (waiting for confirmation)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (shared desktop)"
@@ -409,12 +409,12 @@ msgstr "Screen capture"
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr "To apply framebuffer plugin setting, you need to restart the program."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "The remote user %1 is now connected."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "The remote user %1 disconnected."

View File

@@ -1,16 +1,13 @@
# Translation of krfb into esperanto.
# Copyright (C) 2009 Free Software Foundation, Inc.
# This file is distributed under the same license as the krfb package.
# Axel Rousseau <axel@esperanto-jeunes.org>, 2009.
# Oliver Kellogg <okellogg@users.sourceforge.net>, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"PO-Revision-Date: 2023-11-12 22:59+0100\n"
"Last-Translator: Oliver Kellogg <okellogg@users.sourceforge.net>\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2009-11-15 12:06+0100\n"
"Last-Translator: Axel Rousseau <axel@esperanto-jeunes.org>\n"
"Language-Team: esperanto <kde-i18n-eo@kde.org>\n"
"Language: eo\n"
"MIME-Version: 1.0\n"
@@ -22,113 +19,113 @@ msgstr ""
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Axel Rousseau,Oliver Kellogg"
msgstr "Axel Rousseau"
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "axel@esperanto-jeunes.org,okellogg@users.sourceforge.net"
msgstr "axel@esperanto-jeunes.org"
#: connectiondialog.cpp:39
#, kde-format
msgid "New Connection"
msgstr "Nova Konekto"
msgstr ""
#: connectiondialog.cpp:61
#, kde-format
msgid "Accept Connection"
msgstr "Akcepti Konekton"
msgstr ""
#: connectiondialog.cpp:65
#, kde-format
msgid "Refuse Connection"
msgstr "Rifuzi Konekton"
msgstr ""
#: invitationsrfbclient.cpp:69
#, kde-format
msgid "Accepted connection from %1"
msgstr "Akceptita konekto de %1"
msgstr ""
#: invitationsrfbclient.cpp:75
#, kde-format
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Ricevita konekto de %1, en atendo (atendante konfirmon)"
msgstr ""
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (komunata labortablo)"
msgstr ""
#. i18n: ectx: label, entry (startMinimized), group (MainWindow)
#: krfb.kcfg:9
#, kde-format
msgid "Start minimized"
msgstr "Komenci minimumigite"
msgstr ""
#. i18n: ectx: label, entry (useDefaultPort), group (TCP)
#: krfb.kcfg:15
#, kde-format
msgid "Use the default port for VNC (5900)"
msgstr "Uzi la defaŭltan pordon por VNC (5900)"
msgstr ""
#. i18n: ectx: label, entry (port), group (TCP)
#: krfb.kcfg:19
#, kde-format
msgid "This is the port on which krfb will listen."
msgstr "Ĉi tiu estas la pordo sur kiu krfb aŭskultos."
msgstr ""
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_publishService)
#. i18n: ectx: label, entry (publishService), group (TCP)
#: krfb.kcfg:23 ui/configtcp.ui:16
#, kde-format
msgid "Announce the service on the local network"
msgstr "Anonci la servon en la loka reto"
msgstr ""
#. i18n: ectx: label, entry (noWallet), group (Security)
#: krfb.kcfg:29
#, kde-format
msgid "Do not store passwords in KWallet"
msgstr "Ne konservi pasvortojn en KWallet"
msgstr ""
#. i18n: ectx: label, entry (allowDesktopControl), group (Security)
#: krfb.kcfg:33
#, kde-format
msgid "Allow remote connections to manage the desktop."
msgstr "Permesi forajn konektojn administri la labortablon."
msgstr ""
#. i18n: ectx: label, entry (allowUnattendedAccess), group (Security)
#: krfb.kcfg:37
#, kde-format
msgid "Allow connections without an invitation."
msgstr "Permesi konektojn sen invito."
msgstr ""
#. i18n: ectx: label, entry (unattendedAccessPassword), group (Security)
#. i18n: ectx: label, entry (desktopSharingPassword), group (Security)
#: krfb.kcfg:41 krfb.kcfg:44
#, kde-format
msgid "Password for uninvited connections."
msgstr "Pasvorto por neinvititaj konektoj."
msgstr ""
#. i18n: ectx: label, entry (preferredFrameBufferPlugin), group (FrameBuffer)
#: krfb.kcfg:49
#, kde-format
msgid "Preferred Frame Buffer Plugin"
msgstr "Preferata Frame Buffer Kromaĵo"
msgstr ""
#: main-virtualmonitor.cpp:49
#, kde-format
msgid "Creating a Virtual Monitor from %1"
msgstr "Kreante Virtualan Monitoron de %1"
msgstr ""
#: main-virtualmonitor.cpp:80
#, kde-format
msgid "Remote Virtual Monitor"
msgstr "Fora Virtuala Monitoro"
msgstr ""
#: main-virtualmonitor.cpp:82
#, kde-format
msgid "Offer a Virtual Monitor that can be accessed remotely"
msgstr "Proponi Virtualan Monitoron alireblan malproksime"
msgstr ""
#: main-virtualmonitor.cpp:84 main.cpp:98
#, kde-format
@@ -141,18 +138,11 @@ msgid ""
"(c) 2000, Tridia Corporation\n"
"(c) 1999, AT&T Laboratories Boston\n"
msgstr ""
"(c) 2009-2010, Collabora Ltd.\n"
"(c) 2007, Alessandro Praduroux\n"
"(c) 2001-2003, Tim Jansen\n"
"(c) 2001, Johannes E. Schindelin\n"
"(c) 2000-2001, Const Kaplinsky\n"
"(c) 2000, Tridia Corporation\n"
"(c) 1999, AT&T Laboratories Boston\n"
#: main-virtualmonitor.cpp:91
#, kde-format
msgid "Virtual Monitor implementation"
msgstr "Realigo de Virtuala Monitoro"
msgstr ""
#: main-virtualmonitor.cpp:92 main.cpp:108
#, kde-format
@@ -167,7 +157,7 @@ msgstr "Alessandro Praduroux"
#: main-virtualmonitor.cpp:93 main.cpp:111
#, kde-format
msgid "KDE4 porting"
msgstr "KDE4-portado"
msgstr ""
#: main-virtualmonitor.cpp:94 main.cpp:112
#, kde-format
@@ -197,77 +187,77 @@ msgstr "Const Kaplinsky"
#: main-virtualmonitor.cpp:98 main.cpp:116
#, kde-format
msgid "TightVNC encoder"
msgstr "TightVNC-kodilo"
msgstr ""
#: main-virtualmonitor.cpp:99 main.cpp:117
#, kde-format
msgid "Tridia Corporation"
msgstr "Tridia Corporation"
msgstr ""
#: main-virtualmonitor.cpp:100 main.cpp:118
#, kde-format
msgid "ZLib encoder"
msgstr "ZLib-kodilo"
msgstr ""
#: main-virtualmonitor.cpp:101 main.cpp:119
#, kde-format
msgid "AT&T Laboratories Boston"
msgstr "AT&T Laboratorioj Boston"
msgstr ""
#: main-virtualmonitor.cpp:102 main.cpp:120
#, kde-format
msgid "original VNC encoders and protocol design"
msgstr "originalaj VNC-kodigiloj kaj protokolo-dezajno"
msgstr ""
#: main-virtualmonitor.cpp:108
#, kde-format
msgid "Logical resolution of the new monitor"
msgstr "Logika rezolucio de la nova monitoro"
msgstr ""
#: main-virtualmonitor.cpp:108
#, kde-format
msgid "resolution"
msgstr "rezolucio"
msgstr ""
#: main-virtualmonitor.cpp:110
#, kde-format
msgid "Name of the monitor"
msgstr "Nomo de la monitoro"
msgstr ""
#: main-virtualmonitor.cpp:110
#, kde-format
msgid "name"
msgstr "nomo"
msgstr ""
#: main-virtualmonitor.cpp:112
#, kde-format
msgid "Password for the client to connect to it"
msgstr "Pasvorto por la kliento por konekti al ĝi"
msgstr ""
#: main-virtualmonitor.cpp:112
#, kde-format
msgid "password"
msgstr "Pasvorto"
msgstr ""
#: main-virtualmonitor.cpp:114
#, kde-format
msgid "The device-pixel-ratio of the device, the scaling factor"
msgstr "La aparato-piksela-proporcio de la aparato, la skala faktoro"
msgstr ""
#: main-virtualmonitor.cpp:114
#, kde-format
msgid "dpr"
msgstr "dpr"
msgstr ""
#: main-virtualmonitor.cpp:116
#, kde-format
msgid "The port we will be listening to"
msgstr "La pordo, kiun ni aŭskultos"
msgstr ""
#: main-virtualmonitor.cpp:116
#, kde-format
msgid "number"
msgstr "nombro"
msgstr ""
#: main.cpp:49
#, kde-format
@@ -275,13 +265,11 @@ msgid ""
"Your X11 Server does not support the required XTest extension version 2.2. "
"Sharing your desktop is not possible."
msgstr ""
"Via X11 Servilo ne subtenas la bezonatan XTest-etendan version 2.2. "
"Kunhavigi vian labortablon ne eblas."
#: main.cpp:51 main.cpp:150
#, kde-format
msgid "Desktop Sharing Error"
msgstr "Eraro pri Labortabla Kundivido"
msgstr ""
#: main.cpp:94
#, kde-format
@@ -291,22 +279,22 @@ msgstr "Tabula komunigado"
#: main.cpp:96
#, kde-format
msgid "VNC-compatible server to share desktops"
msgstr "VNC-kongrua servilo por kunhavi labortablojn"
msgstr ""
#: main.cpp:105
#, kde-format
msgid "George Goldberg"
msgstr "Georgo Goldberg"
msgstr ""
#: main.cpp:106
#, kde-format
msgid "Telepathy tubes support"
msgstr "Telepatiaj tuboj subtenas"
msgstr ""
#: main.cpp:126
#, kde-format
msgid "Do not show the invitations management dialog at startup"
msgstr "Ne montri la invit-administran dialogon ĉe ekfunkciigo"
msgstr ""
#: main.cpp:148
#, kde-format
@@ -314,18 +302,16 @@ msgid ""
"Desktop Sharing is not running under an X11 Server or Wayland.\n"
"Other display servers are currently not supported."
msgstr ""
"Labortabla Kundivido ne funkcias sub X11-Servilo aŭ Wayland.\n"
"Aliaj ekranserviloj nuntempe ne estas subtenataj."
#: mainwindow.cpp:52
#, kde-format
msgid "Storing passwords in config file is insecure!"
msgstr "Konservi pasvortojn en agorda dosiero estas nesekura!"
msgstr ""
#: mainwindow.cpp:189
#, kde-format
msgid "Enter a new password for Unattended Access"
msgstr "Enigi novan pasvorton por Senasista Aliro"
msgstr ""
#: mainwindow.cpp:200
#, kde-format
@@ -333,8 +319,6 @@ msgid ""
"Failed to start the krfb server. Desktop sharing will not work. Try setting "
"another port in the settings and restart krfb."
msgstr ""
"Malsukcesis lanĉi la krfb-servilon. Labortabla kunhavigo ne funkcios. Provu "
"agordi alian pordon en la agordoj kaj rekomencu krfb."
#. i18n: ectx: property (whatsThis), widget (QLabel, titleLabel)
#. i18n: ectx: property (text), widget (QLabel, titleLabel)
@@ -343,7 +327,7 @@ msgstr ""
#: ui/mainwidget.ui:86 ui/mainwidget.ui:114
#, kde-format
msgid "KDE Desktop Sharing"
msgstr "KDE Labortabla Kunhavigo"
msgstr ""
#: mainwindow.cpp:224
#, kde-format
@@ -360,17 +344,6 @@ msgid ""
"If your computer is behind a firewall it may have a different address or be "
"unreachable for other computers."
msgstr ""
"Ĉi tiu kampo enhavas la adreson de via komputilo kaj la pordnumeron, "
"apartigitajn per dupunkto.\n"
"\n"
"La adreso estas nur sugesto - vi povas uzi ajnan adreson kiu povas atingi "
"vian komputilon.\n"
"\n"
"La labortabla kundivido provas diveni vian adreson de via reto-agordo, sed "
"ne ĉiam sukcesas fari tion.\n"
"\n"
"Se via komputilo estas malantaŭ fajroŝirmilo ĝi povas havi malsaman adreson "
"aŭ esti neatingebla por aliaj komputiloj."
#: mainwindow.cpp:231
#, kde-format
@@ -382,12 +355,6 @@ msgid ""
"password, desktop sharing access will be granted without explicit "
"confirmation."
msgstr ""
"Ĉiu fora uzanto kun normala labortabla kundivida pasvorto devos esti "
"aŭtentikigita.\n"
"\n"
"Se neakompanata aliro estas ŝaltita, kaj la fora uzanto provizas neatentan "
"reĝiman pasvorton, labortabla kunhava aliro estos donita sen eksplicita "
"konfirmo."
#: mainwindow.cpp:249
#, kde-format
@@ -402,22 +369,22 @@ msgstr "Sekureco"
#: mainwindow.cpp:251
#, kde-format
msgid "Screen capture"
msgstr "Ekrankapto"
msgstr ""
#: mainwindow.cpp:256
#, kde-format
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr "Por apliki framebuffer kromprogramon, vi devas rekomenci la programon."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "La fora uzanto %1 nun estas konektita."
msgstr ""
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "La fora uzanto %1 malkonektis."
msgstr ""
#: trayicon.cpp:56
#, kde-format
@@ -427,34 +394,34 @@ msgstr "Malkonekti"
#: trayicon.cpp:62
#, kde-format
msgid "Enable Remote Control"
msgstr "Ebligi Teleregilon"
msgstr ""
#: trayicon.cpp:101 trayicon.cpp:133
#, kde-format
msgid "Desktop Sharing - disconnected"
msgstr "Labortabla Kunhavigo - malkonektita"
msgstr ""
#: trayicon.cpp:117 trayicon.cpp:137
#, kde-format
msgid "Desktop Sharing - connected with %1"
msgstr "Kunhavigo de labortablo - konektita kun %1"
msgstr ""
#: trayicon.cpp:120
#, kde-format
msgid "Desktop Sharing - connected"
msgstr "Labortabla Kundivido - konektita"
msgstr ""
#. i18n: ectx: property (windowTitle), widget (QWidget, Framebuffer)
#: ui/configframebuffer.ui:14
#, kde-format
msgid "Framebuffer"
msgstr "Framebuffer"
msgstr ""
#. i18n: ectx: property (text), widget (QLabel, label)
#: ui/configframebuffer.ui:22
#, kde-format
msgid "Preferred frameb&uffer plugin:"
msgstr "Preferata aldonaĵo Frameb&ofer:"
msgstr ""
#. i18n: ectx: property (text), widget (QLabel, helpText)
#: ui/configframebuffer.ui:47
@@ -465,34 +432,30 @@ msgid ""
"style=\" font-weight:600;\">qt</span> plugin is a safe fallback, if for some "
"reason others don't work. But also it is very slow.</p></body></html>"
msgstr ""
"<html><head/><body><p>Kiam oni uzas x11, la kromprogramo <span style=\" font-"
"weight:600;\">xcb</span> estu preferinda, ĉar ĝi estas pli efika.<br /><span "
"style=\" font-weight:600;\">qt</span> kromaĵo estas sekura rezervilo, se ial "
"aliaj ne funkcias. Sed ankaŭ ĝi estas tre malrapida.</p></body></html>"
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowDesktopControl)
#: ui/configsecurity.ui:17
#, kde-format
msgid "Allow remote connections to control your desktop"
msgstr "Permesi forajn konektojn regi vian labortablon"
msgstr ""
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_noWallet)
#: ui/configsecurity.ui:27
#, kde-format
msgid "Do not store passwords using KDE wallet"
msgstr "Ne konservi pasvortojn per KDE-monujo"
msgstr ""
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useDefaultPort)
#: ui/configtcp.ui:26
#, kde-format
msgid "Use default port"
msgstr "Uzi defaŭltan pordon"
msgstr ""
#. i18n: ectx: property (text), widget (QLabel, label)
#: ui/configtcp.ui:50
#, kde-format
msgid "Listening port:"
msgstr "Aŭskultanta pordo:"
msgstr ""
#. i18n: ectx: property (text), widget (QLabel, TextLabel5)
#: ui/connectionwidget.ui:47
@@ -507,14 +470,12 @@ msgid ""
"Somebody is requesting a connection to your computer. Granting this will "
"allow the remote user to watch your desktop. "
msgstr ""
"Iu petas konekton al via komputilo. Doni ĉi tion permesos al la fora uzanto "
"rigardi vian labortablon."
#. i18n: ectx: property (text), widget (QLabel, TextLabel1)
#: ui/connectionwidget.ui:102
#, kde-format
msgid "Remote system:"
msgstr "Fora sistemo:"
msgstr ""
#. i18n: ectx: property (text), widget (QLabel, remoteHost)
#: ui/connectionwidget.ui:118
@@ -531,16 +492,12 @@ msgid ""
"careful. When the option is disabled the remote user can only watch your "
"screen."
msgstr ""
"Se vi ŝaltas ĉi tiun opcion, la fora uzanto povas enigi klavopremojn kaj uzi "
"vian musmontrilon. Ĉi tio donas al ili plenan kontrolon super via komputilo, "
"do atentu. Kiam la opcio estas malŝaltita, la fora uzanto povas nur rigardi "
"vian ekranon."
#. i18n: ectx: property (text), widget (QCheckBox, cbAllowRemoteControl)
#: ui/connectionwidget.ui:139
#, kde-format
msgid "Allow remote user to &control keyboard and mouse"
msgstr "Permesi al fora uzanto &regi klavaron kaj muson"
msgstr ""
#. i18n: ectx: property (text), widget (QLabel, aboutLabel)
#: ui/mainwidget.ui:117
@@ -549,38 +506,36 @@ msgid ""
"KDE Desktop Sharing allows you to grant permission to someone at a remote "
"location for viewing and possibly controlling your desktop."
msgstr ""
"KDE Labortabla Kundivido permesas al vi doni permeson al iu en fora loko por "
"vidi kaj eble kontroli vian labortablon."
#. i18n: ectx: property (whatsThis), widget (QCheckBox, enableSharingCheckBox)
#: ui/mainwidget.ui:145
#, kde-format
msgid "Starts/Stops Remote Desktop Sharing"
msgstr "Lanĉas/Ĉesigas Malproksiman Labortablan Kunhavigon"
msgstr ""
#. i18n: ectx: property (text), widget (QCheckBox, enableSharingCheckBox)
#: ui/mainwidget.ui:148
#, kde-format
msgid "&Enable Desktop Sharing"
msgstr "&Ebligi Labortablan Kundividon"
msgstr ""
#. i18n: ectx: property (title), widget (QGroupBox, detailsGroupBox)
#: ui/mainwidget.ui:170
#, kde-format
msgid "Connection Details"
msgstr "Detaloj pri Konekto"
msgstr ""
#. i18n: ectx: property (text), widget (QLabel, addressLabel)
#: ui/mainwidget.ui:193
#, kde-format
msgid "&Address"
msgstr "&Adreso"
msgstr ""
#. i18n: ectx: property (whatsThis), widget (QToolButton, addressAboutButton)
#: ui/mainwidget.ui:214
#, kde-format
msgid "More about this address"
msgstr "Pli pri ĉi tiu adreso"
msgstr ""
#. i18n: ectx: property (text), widget (QToolButton, addressAboutButton)
#. i18n: ectx: property (text), widget (QToolButton, unattendedAboutButton)
@@ -596,8 +551,6 @@ msgid ""
"Address required by remote users to connect to your desktop. Click about "
"button on the right for more info."
msgstr ""
"Adreso postulata de foraj uzantoj por konekti al via labortablo. Alklaku pri "
"la butono dekstre por pliaj informoj."
#. i18n: ectx: property (text), widget (QLabel, addressDisplayLabel)
#: ui/mainwidget.ui:238
@@ -609,13 +562,13 @@ msgstr "127.0.0.1 : 5900"
#: ui/mainwidget.ui:269
#, kde-format
msgid "&Password"
msgstr "&Pasvorto"
msgstr ""
#. i18n: ectx: property (whatsThis), widget (QToolButton, passwordEditButton)
#: ui/mainwidget.ui:290
#, kde-format
msgid "Edit/Save Desktop Sharing Password"
msgstr "Redakti/Konservi labortablan kundividan pasvorton"
msgstr ""
#. i18n: ectx: property (text), widget (QToolButton, passwordEditButton)
#: ui/mainwidget.ui:293
@@ -630,14 +583,12 @@ msgid ""
"Password required by remote users to connect to your desktop. Click the edit "
"button on the right to change password."
msgstr ""
"Pasvorto postulata de foraj uzantoj por konekti al via labortablo. Alklaku "
"la redaktan butonon dekstre por ŝanĝi pasvorton."
#. i18n: ectx: property (text), widget (QLabel, passwordDisplayLabel)
#: ui/mainwidget.ui:314
#, kde-format
msgid "TemporaryPassword"
msgstr "Provizora Pasvorto"
msgstr ""
#. i18n: ectx: property (whatsThis), widget (QGroupBox, unattendedGroupBox)
#. i18n: ectx: property (text), widget (QLabel, unattendedAboutLabel)
@@ -647,14 +598,12 @@ msgid ""
"Unattended Access allows a remote user with the password to gain control to "
"your desktop without your explicit confirmation."
msgstr ""
"Senatenata Aliro permesas al fora uzanto kun la pasvorto akiri kontrolon al "
"via labortablo sen via eksplicita konfirmo."
#. i18n: ectx: property (title), widget (QGroupBox, unattendedGroupBox)
#: ui/mainwidget.ui:343
#, kde-format
msgid "Unattended Access"
msgstr "Senatenata Aliro"
msgstr ""
#. i18n: ectx: property (whatsThis), widget (QLabel, unattendedAboutLabel)
#: ui/mainwidget.ui:375
@@ -664,15 +613,12 @@ msgid ""
"your desktop without your explicit confirmation. Click \"About\" button on "
"right to know more."
msgstr ""
"Senatenata Aliro permesas al fora uzanto kun la pasvorto akiri kontrolon al "
"via labortablo sen via eksplicita konfirmo. Alklaku la butonon \"Pri\" "
"dekstre por scii pli."
#. i18n: ectx: property (whatsThis), widget (QToolButton, unattendedAboutButton)
#: ui/mainwidget.ui:394
#, kde-format
msgid "Know more about Unattended Access"
msgstr "Ekscii pli pri Senasista Aliro"
msgstr ""
#. i18n: ectx: property (whatsThis), widget (QCheckBox, enableUnattendedCheckBox)
#: ui/mainwidget.ui:437
@@ -681,23 +627,43 @@ msgid ""
"Starts/Stops unattended access to your desktop. Click on button on right to "
"change password, and \"About\" button to know more."
msgstr ""
"Lanĉas/Ĉesigas neatenditan aliron al via labortablo. Alklaku la butonon "
"dekstre por ŝanĝi pasvorton, kaj la butonon \"Pri\" por scii pli."
#. i18n: ectx: property (text), widget (QCheckBox, enableUnattendedCheckBox)
#: ui/mainwidget.ui:440
#, kde-format
msgid "Enable &Unattended Access"
msgstr "Ebligi Senasistan Alir&on"
msgstr ""
#. i18n: ectx: property (whatsThis), widget (QPushButton, unattendedPasswordButton)
#: ui/mainwidget.ui:465
#, kde-format
msgid "Change password for Unattended Access"
msgstr "Ŝanĝi pasvorton por Senasista Aliro"
msgstr ""
#. i18n: ectx: property (text), widget (QPushButton, unattendedPasswordButton)
#: ui/mainwidget.ui:468
#, kde-format
msgid "&Change Unattended Password"
msgstr "&Ŝanĝi Senasistan Pasvorton"
msgstr ""
#~ msgid "Confirmation"
#~ msgstr "Konfirmo"
#, fuzzy
#~ msgid "Delete All"
#~ msgstr "Forigu arĥivon"
#~ msgid "&Delete"
#~ msgstr "&Forigi"
#~ msgid "Ian Reinhart Geiser"
#~ msgstr "Ian Reinhart Geiser"
#~ msgid "DCOP interface"
#~ msgstr "DCOP-interfaco"
#~ msgid "Jason Spisak"
#~ msgstr "Jason Spisak"
#~ msgid "Karl Vogel"
#~ msgstr "Karl Vogel"

View File

@@ -227,7 +227,7 @@
>Salir de &krfb;</title>
<para
>Si cierra la ventana principal de &krfb; pulsando el icono de cierre de la ventana o usando el atajo de teclado <keycombo action="simul"
>Si cierra la ventana principal de &krfb; pulsando el icono de cierre de la ventana o usando el acceso rápido de teclado <keycombo action="simul"
>&Alt;<keycap
>F4</keycap
></keycombo

View File

@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2021-10-31 21:56+0100\n"
"Last-Translator: Eloy Cuadra <ecuadra@eloihr.net>\n"
"Language-Team: Spanish <kde-l10n-es@kde.org>\n"
@@ -59,7 +59,7 @@ msgstr "Se ha aceptado la conexión de %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Recibida conexión desde %1, a la espera (de una confirmación)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (escritorio compartido)"
@@ -415,12 +415,12 @@ msgstr ""
"Necesita reiniciar el programa para aplicar las preferencias del complemento "
"de «framebuffer»."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "El usuario remoto %1 ha cerrado la conexión."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "El usuario remoto %1 se ha desconectado."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2019-11-09 14:59+0200\n"
"Last-Translator: Marek Laane <qiilaq69@gmail.com>\n"
"Language-Team: Estonian <kde-et@lists.linux.ee>\n"
@@ -53,7 +53,7 @@ msgstr "Nõus %1 ühendusega"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Saadud %1 ühendus, ootel (ootab kinnitust)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (jagatud töölaud)"
@@ -410,12 +410,12 @@ msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
"Kaadripuhvri seadistuste rakendamiseks tuleb programm uuesti käivitada."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Kaugkasutaja %1 on nüüd ühendatud."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Kaugkasutaja %1 ei ole enam ühendatud."

View File

@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2022-08-04 07:36+0200\n"
"Last-Translator: Iñigo Salvador Azurmendi <xalba@ni.eus>\n"
"Language-Team: Basque <kde-i18n-eu@kde.org>\n"
@@ -62,7 +62,7 @@ msgstr "%1(e)tik datorren onartu da"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Konexioa jaso da %1(e)tik, itxaroten (berrespenaren zain)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (mahaigain partekatua)"
@@ -419,12 +419,12 @@ msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
"«framebuffer» plugin ezarpena ezartzeko, prgrama berrabiarazi behar duzu."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Urruneko %1 erabiltzailea orain konektatuta dago."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Urruneko %1 erabiltzailea deskonektatu da."

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2007-08-19 12:41+0330\n"
"Last-Translator: Nazanin Kazemi <kazemi@itland.ir>\n"
"Language-Team: Persian <kde-i18n-fa@kde.org>\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -53,7 +53,7 @@ msgstr "اتصال ناخوانده از %1 پذیرفته شد."
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "اتصال از %1 دریافت شد، منتظر بمانید )در حال انتظار برای تأیید("
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 ) رومیزی مشترک("
@@ -401,13 +401,13 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 is now connected."
msgstr "کاربر دور، اتصال را بسته است."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 disconnected."

View File

@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2021-11-23 16:45+0200\n"
"Last-Translator: Tommi Nieminen <translator@legisign.org>\n"
"Language-Team: Finnish <kde-i18n-doc@kde.org>\n"
@@ -63,7 +63,7 @@ msgstr "Hyväksyttiin yhteys osoitteesta %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Saatiin yhteys osoitteesta %1, pidossa (odottaa varmistusta)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (jaettu työpöytä)"
@@ -419,12 +419,12 @@ msgstr ""
"Kehyspuskuriliitännäisen asetukset tulevat voimaan uudelleenkäynnistyksen "
"jälkeen."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Etäkäyttäjä %1 on nyt luonut yhteyden."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Etäkäyttäjä %1 katkaisi yhteyden."

View File

@@ -12,21 +12,21 @@
# Amine Say <aminesay@yahoo.fr>, 2008, 2009.
# Guillaume Pujol <guill.p@gmail.com>, 2010.
# Sebastien Renard <renard@kde.org>, 2013, 2014, 2015.
# Xavier Besnard <xavier.besnard@kde.org>, 2013, 2021.
# xavier <xavier.besnard@neuf.fr>, 2013, 2021.
# Vincent Pinon <vpinon@kde.org>, 2017.
# Simon Depiets <sdepiets@gmail.com>, 2019.
# Xavier Besnard <xavier.besnard@kde.org>, 2023.
#
# invite, 2008.
# amine say, 2011.
# Xavier BESNARD <xavier.besnard]neuf.fr>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2023-01-09 16:44+0100\n"
"Last-Translator: Xavier BESNARD <xavier.besnard]neuf.fr>\n"
"Language-Team: French <kde-francophone@kde.org>\n"
"Language-Team: fr\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -74,7 +74,7 @@ msgstr "Connexion acceptée depuis %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Connexion reçue depuis %1, suspendue (en attente de confirmation)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (bureau partagé)"
@@ -436,12 +436,12 @@ msgstr ""
"Vous devez redémarrer le programme pour appliquer la configuration du module "
 framebuffer »"
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "L'utilisateur distant %1 est maintenant connecté."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "L'utilisateur distant %1 s'est déconnecté."

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdenetwork/krfb.po\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2004-12-03 14:52-0500\n"
"Last-Translator: Kevin Scannell <kscanne@gmail.com>\n"
"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
@@ -52,7 +52,7 @@ msgstr "Glacadh le ceangal ó %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Fuarthas ceangal ó %1, ar fanacht (ag feitheamh le cinntiú)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (deasc chomhroinnte)"
@@ -416,12 +416,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Tá úsáideoir cianda %1 ceangailte anois."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Tá úsáideoir cianda %1 dícheangailte anois."

View File

@@ -8,21 +8,20 @@
# Xosé <xosecalvo@gmail.com>, 2009.
# Marce Villarino <mvillarino@kde-espana.es>, 2012, 2013, 2014.
# Adrian Chaves Fernandez <adriyetichaves@gmail.com>, 2012, 2015, 2017.
# Adrián Chaves (Gallaecio) <adrian@chaves.io>, 2017, 2018, 2019, 2023.
# Adrián Chaves (Gallaecio) <adrian@chaves.io>, 2017, 2018, 2019.
msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"PO-Revision-Date: 2023-04-30 15:46+0200\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2019-07-13 12:48+0200\n"
"Last-Translator: Adrián Chaves (Gallaecio) <adrian@chaves.io>\n"
"Language-Team: Galician <proxecto@trasno.gal>\n"
"Language-Team: Galician <kde-i18n-doc@kde.org>\n"
"Language: gl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 23.04.0\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -59,7 +58,7 @@ msgstr "Aceptouse unha conexión de %1."
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Recibiuse unha conexión desde %1, retida (á espera de confirmación)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (escritorio compartido)"
@@ -74,7 +73,7 @@ msgstr "Iniciar minimizado."
#: krfb.kcfg:15
#, kde-format
msgid "Use the default port for VNC (5900)"
msgstr "Usar o porto predeterminado para VNC (5900)"
msgstr "Empregar o porto predeterminado para VNC (5900)"
#. i18n: ectx: label, entry (port), group (TCP)
#: krfb.kcfg:19
@@ -123,17 +122,17 @@ msgstr "Complemento de búfer de fotograma preferido"
#: main-virtualmonitor.cpp:49
#, kde-format
msgid "Creating a Virtual Monitor from %1"
msgstr "Creando un monitor virtual desde %1"
msgstr ""
#: main-virtualmonitor.cpp:80
#, kde-format
msgid "Remote Virtual Monitor"
msgstr "Monitor virtual remoto"
msgstr ""
#: main-virtualmonitor.cpp:82
#, kde-format
msgid "Offer a Virtual Monitor that can be accessed remotely"
msgstr "Ofrecer un monitor virtual ao que se pode acceder en remoto"
msgstr ""
#: main-virtualmonitor.cpp:84 main.cpp:98
#, kde-format
@@ -157,7 +156,7 @@ msgstr ""
#: main-virtualmonitor.cpp:91
#, kde-format
msgid "Virtual Monitor implementation"
msgstr "Implementación do monitor virtual"
msgstr ""
#: main-virtualmonitor.cpp:92 main.cpp:108
#, kde-format
@@ -227,52 +226,54 @@ msgstr "codificadores orixinais de VNC e deseño do protocolo"
#: main-virtualmonitor.cpp:108
#, kde-format
msgid "Logical resolution of the new monitor"
msgstr "Resolución lóxica do novo monitor"
msgstr ""
#: main-virtualmonitor.cpp:108
#, kde-format
msgid "resolution"
msgstr "resolución"
msgstr ""
#: main-virtualmonitor.cpp:110
#, kde-format
msgid "Name of the monitor"
msgstr "Nome do monitor"
msgstr ""
#: main-virtualmonitor.cpp:110
#, kde-format
msgid "name"
msgstr "nome"
msgstr ""
#: main-virtualmonitor.cpp:112
#, kde-format
#, fuzzy, kde-format
#| msgid "Password for uninvited connections."
msgid "Password for the client to connect to it"
msgstr "Contrasinal para que o cliente se conecte a el"
msgstr "Contrasinal das conexións sen convite."
#: main-virtualmonitor.cpp:112
#, kde-format
#, fuzzy, kde-format
#| msgid "&Password"
msgid "password"
msgstr "contrasinal"
msgstr "&Contrasinal:"
#: main-virtualmonitor.cpp:114
#, kde-format
msgid "The device-pixel-ratio of the device, the scaling factor"
msgstr "A taxa de píxel de dispositivo do dispositivo, o factor de escala"
msgstr ""
#: main-virtualmonitor.cpp:114
#, kde-format
msgid "dpr"
msgstr "dpr"
msgstr ""
#: main-virtualmonitor.cpp:116
#, kde-format
msgid "The port we will be listening to"
msgstr "O porto de entrada"
msgstr ""
#: main-virtualmonitor.cpp:116
#, kde-format
msgid "number"
msgstr "número"
msgstr ""
#: main.cpp:49
#, kde-format
@@ -311,7 +312,7 @@ msgstr "Compatibilidade cos tubos de Telepathy."
#: main.cpp:126
#, kde-format
msgid "Do not show the invitations management dialog at startup"
msgstr "Non amosar o diálogo de xestión dos convites ao comezo"
msgstr "Non mostrar o diálogo de xestión dos convites ao comezo"
#: main.cpp:148
#, kde-format
@@ -339,9 +340,8 @@ msgid ""
"Failed to start the krfb server. Desktop sharing will not work. Try setting "
"another port in the settings and restart krfb."
msgstr ""
"Non foi posíbel iniciar o servidor krfb. Non se poderá compartir o "
"escritorio. Probe a escoller un porto distinto na configuración e reinicie "
"krfb."
"Non se puido iniciar o servidor krfb. Non se poderá compartir o escritorio. "
"Probe a escoller un porto distinto na configuración e reinicie krfb."
#. i18n: ectx: property (whatsThis), widget (QLabel, titleLabel)
#. i18n: ectx: property (text), widget (QLabel, titleLabel)
@@ -404,7 +404,7 @@ msgstr "Rede"
#: mainwindow.cpp:250
#, kde-format
msgid "Security"
msgstr "Seguridade"
msgstr "Seguranza"
#: mainwindow.cpp:251
#, kde-format
@@ -418,12 +418,12 @@ msgstr ""
"Para aplicar a configuración do complemento de búfer de fotogramas ten que "
"reiniciar o programa."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "O usuario remoto %1 conectouse."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "O usuario remoto %1 desconectouse."
@@ -477,7 +477,7 @@ msgstr ""
"<html><head/><body> <p>Ao usar x11 debería preferirse o complemento <span "
"style=\" font-weight:600;\">xcb</span>, porque ten un mellor rendemento.<br/"
"> O complemento <span style=\" font-weight:600;\">qt</span> é unha "
"alternativa de seguridade, se por algún motivo non funcionan outros "
"alternativa de seguranza, se por algún motivo non funcionan outros "
"complementos. Pero é moi lento.</p> </body></html>"
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowDesktopControl)
@@ -496,7 +496,7 @@ msgstr "Non almacenar os contrasinais usando a carteira de KDE"
#: ui/configtcp.ui:26
#, kde-format
msgid "Use default port"
msgstr "Usar o porto predeterminado"
msgstr "Empregar o porto predeterminado"
#. i18n: ectx: property (text), widget (QLabel, label)
#: ui/configtcp.ui:50
@@ -542,7 +542,7 @@ msgid ""
"screen."
msgstr ""
"Se sinala esta opción, o usuario remoto pode inserir polo teclado e usar o "
"rato. Isto dálle control completo sobre o computador, así que teña coidado. "
"rato. Isto dalle control completo sobre o computador, así que teña coidado. "
"Cando a opción está desactivada, o usuario remoto só poderá ver a pantalla."
#. i18n: ectx: property (text), widget (QCheckBox, cbAllowRemoteControl)
@@ -643,7 +643,6 @@ msgstr ""
"Contrasinal que os usuario remotos necesitan para conectar ao seu "
"escritorio. Prema o botón «Editar» da dereita para cambiar o contrasinal."
# well-spelled: ContrasinalTemporal
#. i18n: ectx: property (text), widget (QLabel, passwordDisplayLabel)
#: ui/mainwidget.ui:314
#, kde-format

View File

@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2017-05-16 07:03-0400\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: hebrew <kde-l10n-he@kde.org>\n"
@@ -24,8 +24,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && "
"n % 10 == 0) ? 2 : 3));\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -62,7 +61,7 @@ msgstr "ההתחברות ללא הזמנה מ-%1 אושרה"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "נתקבלה התחברות מ-%1, בהמתנה (ממתין לאישור)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (שולחנות עבודה משותפים)"
@@ -389,12 +388,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, fuzzy, kde-format
msgid "The remote user %1 is now connected."
msgstr "המשתמש המרוחק סגר את החיבור."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
msgid "The remote user %1 disconnected."
msgstr "המשתמש המרוחק סגר את החיבור."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2008-01-09 17:12+0530\n"
"Last-Translator: Ravishankar Shrivastava <raviratlami@yahoo.com>\n"
"Language-Team: Hindi <indlinux-hindi@lists.sourceforge.net>\n"
@@ -54,7 +54,7 @@ msgstr "%1 से बिन बुलाए कनेक्शन स्वी
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr " %1 से कनेक्शन मिला, होल्ड पर रखा (पुष्टि के लिए इंतजार किया जा रहा है)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (साझेदारी डेस्कटॉप)"
@@ -400,13 +400,13 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 is now connected."
msgstr "रिमोट उपयोक्ता ने कनेक्शन बन्द कर दिया."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 disconnected."

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2009-02-26 22:21+0530\n"
"Last-Translator: Ravishankar Shrivastava <raviratlami@aol.in>\n"
"Language-Team: Hindi <kde-i18n-doc@lists.kde.org>\n"
@@ -55,7 +55,7 @@ msgstr "%1 से बिन बुलाए कनेक्सन स्वी
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr " %1 से कनेक्सन मिलिस, होल्ड मं रखे (पुस्टि बर इंतजार करत हे)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (साझेदारी डेस्कटाप)"
@@ -399,13 +399,13 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 is now connected."
msgstr "रिमोट कमइया हर कनेक्सन बन्द कर दिस."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 disconnected."

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb 0\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2010-02-10 22:40+0100\n"
"Last-Translator: Marko Dimjasevic <marko@dimjasevic.net>\n"
"Language-Team: Croatian <kde-croatia-list@lists.sourceforge.net>\n"
@@ -61,7 +61,7 @@ msgstr "Prihvaćena je nepozvana veza od %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Primljena veza od %1, na čekanju (čekanje potvrde)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (dijeljena radna površina)"
@@ -425,12 +425,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Udaljeni korisnik %1 je spojen."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
#| msgid "The remote user %1 is now connected."
msgid "The remote user %1 disconnected."

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: desktop_kdebase\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2008-11-06 22:08+0100\n"
"Last-Translator: Eduard Werner <edi.werner@gmx.de>\n"
"Language-Team: en_US <kde-i18n-doc@lists.kde.org>\n"
@@ -53,7 +53,7 @@ msgstr "Zwjazam so ze serverom %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr ""
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr ""
@@ -378,12 +378,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr ""
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr ""

View File

@@ -2,31 +2,30 @@
# Tamas Szanto <taszanto@gmail.com>, 2002.
# Kristóf Kiszel <ulysses@kubuntu.org>, 2012.
# Balázs Úr <urbalazs@gmail.com>, 2013, 2014.
# SPDX-FileCopyrightText: 2024 Kristof Kiszel <ulysses@fsf.hu>
msgid ""
msgstr ""
"Project-Id-Version: KDE 4.3\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"PO-Revision-Date: 2024-02-13 11:40+0100\n"
"Last-Translator: Kristof Kiszel <ulysses@fsf.hu>\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2014-06-15 15:24+0200\n"
"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
"Language-Team: Hungarian <kde-l10n-hu@kde.org>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 24.01.95\n"
"X-Generator: Lokalize 1.5\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Kiszel Kristóf"
msgstr "Kiszel Kristóf,Szántó Tamás"
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "ulysses@fsf.hu"
msgstr "ulysses@kubuntu.org,taszanto@gmail.com"
#: connectiondialog.cpp:39
#, kde-format
@@ -55,7 +54,7 @@ msgstr ""
"Csatlakozási kísérlet történt innen: %1, a kapcsolat felfüggesztve "
"(várakozás megerősítésre)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (megosztott asztal)"
@@ -241,14 +240,16 @@ msgid "name"
msgstr ""
#: main-virtualmonitor.cpp:112
#, kde-format
#, fuzzy, kde-format
#| msgid "Password for uninvited connections."
msgid "Password for the client to connect to it"
msgstr "Jelszó a klienshez, amelyhez csatlakozni kíván"
msgstr "Meghívó nélküli kapcsolat jelszava."
#: main-virtualmonitor.cpp:112
#, kde-format
#, fuzzy, kde-format
#| msgid "&Password"
msgid "password"
msgstr "jelszó"
msgstr "&Jelszó"
#: main-virtualmonitor.cpp:114
#, kde-format
@@ -290,9 +291,10 @@ msgid "Desktop Sharing"
msgstr "Asztalmegosztó"
#: main.cpp:96
#, kde-format
#, fuzzy, kde-format
#| msgid "VNC-compatible server to share KDE desktops"
msgid "VNC-compatible server to share desktops"
msgstr "VNC-kompatibilis kiszolgáló asztalmegosztáshoz"
msgstr "VNC-kompatibilis szolgáltatás a KDE asztal megosztásához"
#: main.cpp:105
#, kde-format
@@ -403,12 +405,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "A távoli felhasználó (%1) sikeresen csatlakozott."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "A(z) %1 távoli felhasználó megszakította a kapcsolatot."
@@ -446,9 +448,10 @@ msgstr ""
#. i18n: ectx: property (text), widget (QLabel, label)
#: ui/configframebuffer.ui:22
#, kde-format
#, fuzzy, kde-format
#| msgid "Preferred Frame Buffer Plugin"
msgid "Preferred frameb&uffer plugin:"
msgstr "Elsődleges frameb&uffer bővítmény:"
msgstr "Elsődleges keretpuffer-modul"
#. i18n: ectx: property (text), widget (QLabel, helpText)
#: ui/configframebuffer.ui:47

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2021-11-03 14:22+0100\n"
"Last-Translator: giovanni <g.sora@tiscali.it>\n"
"Language-Team: Interlingua <kde-i18n-doc@kde.org>\n"
@@ -52,7 +52,7 @@ msgstr "Connexion acceptate ex %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Connexion recipite ex %1, occupate (pausante per confirmation)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (scriptorio compartite)"
@@ -409,12 +409,12 @@ msgstr ""
"Per applicar preferentia de plugin de framebuffer, tu necessita restartar le "
"programma."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Le usator remote %1 es hora connectite."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Le usator remote %1 es disconnectite."

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2019-07-19 03:20+0700\n"
"Last-Translator: Wantoyo <wantoyek@gmail.com>\n"
"Language-Team: Indonesian <kde-i18n-doc@kde.org>\n"
@@ -51,7 +51,7 @@ msgstr "Koneksi disetujui dari %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Diperoleh koneksi dari %1, masih tertahan (menunggu konfirmasi)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (membagikan desktop)"
@@ -407,12 +407,12 @@ msgstr ""
"Untuk menerapkan pengaturan plugin framebuffer, Anda perlu memulai ulang "
"program."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Pengguna %1 jarak jauh sekarang terkoneksi."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Pengguna %1 jarak jauh terdiskoneksi."

View File

@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2010-05-31 12:11+0000\n"
"Last-Translator: Sveinn í Felli <sveinki@nett.is>\n"
"Language-Team: Icelandic <kde-isl@molar.is>\n"
@@ -61,7 +61,7 @@ msgstr "Samþykkti óboðna tengingu frá %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Fékk uppkall frá %1, á bið (bíður eftir staðfestingu)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (miðlað skjáborð)"
@@ -414,13 +414,13 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 is now connected."
msgstr "Fjarnotandi hefur lokað tengingunni."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 disconnected."

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2021-11-24 23:35+0100\n"
"Last-Translator: Luigi Toscano <luigi.toscano@tiscali.it>\n"
"Language-Team: Italian <kde-i18n-it@kde.org>\n"
@@ -56,7 +56,7 @@ msgstr "Connessione accettata da %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Ricevuta connessione da %1, fermo (attesa conferma)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (desktop condiviso)"
@@ -416,12 +416,12 @@ msgstr ""
"Per applicare le impostazioni dell'estensione framebuffer devi riavviare "
"l'applicazione."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "L'utente remoto %1 è ora connesso."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "L'utente remoto %1 si è disconnesso."

View File

@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2019-09-23 14:21+0900\n"
"Last-Translator: Tomohiro Hyakutake <tomhioo@outlook.jp>\n"
"Language-Team: Japanese <kde-i18n-doc@kde.org>\n"
@@ -20,7 +20,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 19.08.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Accelerator-Marker: &\n"
"X-Text-Markup: kde4\n"
@@ -60,7 +60,7 @@ msgstr "招待していない %1 からの接続を許可しました"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "%1 から接続要求を受け取りました。保留中です (確認待ち)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (共有されたデスクトップ)"
@@ -427,12 +427,12 @@ msgstr ""
"フレームバッファ プラグインの変更を適用するには、プログラムの再起動が必要で"
"す。"
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "リモートユーザ %1 が接続しました。"
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
#| msgid "The remote user %1 is now connected."
msgid "The remote user %1 disconnected."

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"PO-Revision-Date: 2023-02-12 06:06+0100\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2023-02-13 09:12+0100\n"
"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
"Language-Team: Georgian <kde-i18n-doc@kde.org>\n"
"Language: ka\n"
@@ -53,7 +53,7 @@ msgstr "%1-დან კავშირი მიღებულია"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "%1-დან მიერთება დაყოვნების რეჟიმშია (ველოდები დასტურს)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (გაზიარებული სამუშაო მაგიდა)"
@@ -409,12 +409,12 @@ msgstr ""
"კადრების ბაფერის დამატების პარამეტრის გადასატარებლად საჭიროა გადატვირთოთ "
"პროგრამა."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "დაშორებული მომხმარებელი %1 ახლა მოერთებულია."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "დაშორებული მომხმარებელი %1 გაითიშა."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2013-06-27 03:20+0600\n"
"Last-Translator: Sairan Kikkarin <sairan@computer.org>\n"
"Language-Team: Kazakh <kde-i18n-doc@kde.org>\n"
@@ -54,7 +54,7 @@ msgstr "%1 дегеннен қосылым қабылданды"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "%1 дегеннен қосылу сұралып құптауды күтіп тұр"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (ортақ етілген үстел)"
@@ -418,12 +418,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Қашықтағы %1 деген пайдаланушы қосылды."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Қашықтағы %1 деген пайдаланушы ағытылды."

View File

@@ -4,7 +4,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2010-11-30 10:42+0700\n"
"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
"Language-Team: Khmer <support@khmeros.info>\n"
@@ -51,7 +51,7 @@ msgstr "ព្រមទទួល​ការ​តភ្ជាប់​ពី %1
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "បាន​ទទួលយក​ការតភ្ជាប់​ពី %1 រង់ចាំ (រង់ចាំ​ការ​អះអាង)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (​ផ្ទៃតុ​ដែល​បាន​ចែក​រំលែក)"
@@ -410,12 +410,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "អ្នក​ប្រើពី​ចម្ងាយ %1 ឥឡូវ​ត្រូវ​បាន​តភ្ជាប់ ។"
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "អ្នក​ប្រើ​ពី​ចម្ងាយ %1 បាន​ផ្ដាច់ ។"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2021-11-12 00:42+0100\n"
"Last-Translator: Shinjo Park <kde@peremen.name>\n"
"Language-Team: Korean <kde-kr@kde.org>\n"
@@ -53,7 +53,7 @@ msgstr "%1의 연결을 수락함"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "%1에서 연결 들어옴, 대기 중 (확인 기다리는 중)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (공유된 데스크톱)"
@@ -404,14 +404,14 @@ msgstr "화면 캡처"
#: mainwindow.cpp:256
#, kde-format
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr "프레임버퍼 플러그인 설정을 적용하려면 을 다시 시작해야 합니다."
msgstr "프레임버퍼 플러그인 설정을 적용하려면 프로그램을 다시 시작해야 합니다."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "원격 사용자 %1이(가) 접속했습니다."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "원격 사용자 %1이(가) 연결을 끊었습니다."

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"PO-Revision-Date: 2024-02-02 23:17+0200\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2015-12-29 21:20+0200\n"
"Last-Translator: Mindaugas Baranauskas <opensuse.lietuviu.kalba@gmail.com>\n"
"Language-Team: lt <kde-i18n-lt@kde.org>\n"
"Language: lt\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n"
"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Generator: Lokalize 1.5\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -55,7 +55,7 @@ msgstr "Priimtas ryšys iš %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Gautas prašymas ryšiui iš %1, sulaikyta (laukiama patvirtinimo)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (dalinamas darbalaukis)"
@@ -114,7 +114,7 @@ msgstr "Nekviestų ryšių slaptažodis."
#: krfb.kcfg:49
#, kde-format
msgid "Preferred Frame Buffer Plugin"
msgstr "Pageidaujamas \"Frame Buffer\" įskiepis"
msgstr "Pageidaujamas \"Frame Buffer\" papildinys"
#: main-virtualmonitor.cpp:49
#, kde-format
@@ -411,12 +411,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Nutolęs naudotojas %1 dabar prisijungęs."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Nutolęs naudotojas %1 atsijungė."
@@ -455,8 +455,9 @@ msgstr ""
#. i18n: ectx: property (text), widget (QLabel, label)
#: ui/configframebuffer.ui:22
#, fuzzy, kde-format
#| msgid "Preferred Frame Buffer Plugin"
msgid "Preferred frameb&uffer plugin:"
msgstr "Pageidaujamas \"Frame Buffer\" įskiepis"
msgstr "Pageidaujamas \"Frame Buffer\" papildinys"
#. i18n: ectx: property (text), widget (QLabel, helpText)
#: ui/configframebuffer.ui:47

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2010-01-02 21:18+0200\n"
"Last-Translator: Viesturs Zarins <viesturs.zarins@mii.lu.lv>\n"
"Language-Team: Latvian <locale@laka.lv>\n"
@@ -56,7 +56,7 @@ msgstr "Pieņemts neielūgts savienojums no %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Saņemts savienojms no %1, apturēts (gaida lietotāja apstiprinājumu)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (koplietota darbvirsma)"
@@ -420,12 +420,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Attālinātais lietotājs %1 tagad ir pieslēdzies."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
#| msgid "The remote user %1 is now connected."
msgid "The remote user %1 disconnected."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2009-04-22 00:08+0530\n"
"Last-Translator: Sangeeta Kumari <sangeeta09@gmail.com>\n"
"Language-Team: Maithili <maithili.sf.net>\n"
@@ -55,7 +55,7 @@ msgstr ""
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr ""
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr ""
@@ -381,13 +381,13 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 is now connected."
msgstr "दूरस्थ प्रयोक्ता संबंधन बन्न कए देलकाह."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 disconnected."

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2009-06-21 09:24+0200\n"
"Last-Translator: Bozidar Proevski <bobibobi@freemail.com.mk>\n"
"Language-Team: Macedonian <mkde-l10n@lists.sourceforge.net>\n"
@@ -56,7 +56,7 @@ msgstr "Прифатено непокането поврзување од %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Примено поврзување од %1, на почек (чека на потврда)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (делена работна површина)"
@@ -420,13 +420,13 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 is now connected."
msgstr "Оддалечениот корисник го затвори поврзувањето."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 disconnected."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2009-01-26 03:03-0800\n"
"Last-Translator: Praveen Arimbrathodiyil <pravi.a@gmail.com>\n"
"Language-Team: SMC <smc.org.in>\n"
@@ -53,7 +53,7 @@ msgstr "%1ല് നിന്നുള്ള ക്ഷണിക്കപ്
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "%1ല് നിന്നുള്ള ബന്ധം ലഭിച്ചു, പിടിച്ചു നില്‍പ്പാണു് (ഉറപ്പിനായി കാത്തുനില്‍ക്കുന്നു) "
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (പങ്കിടുന്ന പണിയിടം)"
@@ -402,13 +402,13 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 is now connected."
msgstr "വിദൂര ഉപയോക്താവ് ബന്ധം അവസാനിപ്പിച്ചു."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 disconnected."

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2013-03-28 15:17+0530\n"
"Last-Translator: Chetan Khona <chetan@kompkin.com>\n"
"Language-Team: American English <kde-i18n-doc@kde.org>\n"
@@ -52,7 +52,7 @@ msgstr "%1 ची जुळवणी स्वीकारली"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "%1 येेथे मिळालेली जुळवणी परवानगीची वाट बघत आहे"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (शेअर केलेला डेस्कटॉप)"
@@ -388,12 +388,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "%1 हा दूरस्थ वापरकर्ता आता जुळलेला आहे."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "%1 हा दूरस्थ वापरकर्ता आता जुळलेला नाही."

View File

@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2008-07-22 22:01+0800\n"
"Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@myrealbox.com>\n"
"Language-Team: Malay <kedidiemas@yahoogroups.com>\n"
@@ -51,7 +51,7 @@ msgstr "Pembalut TCP: sambungann dari %s:%u ditolak."
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr ""
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, fuzzy, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "Desktop Default:"
@@ -376,12 +376,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, fuzzy, kde-format
msgid "The remote user %1 is now connected."
msgstr "Hos remote putuskan hubungan utk %s@%s."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
msgid "The remote user %1 disconnected."
msgstr "Hos remote putuskan hubungan utk %s@%s."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2014-04-28 18:28+0200\n"
"Last-Translator: Bjørn Steensrud <bjornst@skogkatt.homelinux.org>\n"
"Language-Team: Norwegian Bokmål <l10n-no@lister.huftis.org>\n"
@@ -56,7 +56,7 @@ msgstr "Godtatt tilkobling fra %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Mottatt tilkobling fra %1, venter (på bekreftelse)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (delt skrivebord)"
@@ -410,12 +410,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Fjernbrukeren %1 er nå tilkoblet."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Fjernbrukeren %1 koblet fra."

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2014-04-07 23:20+0200\n"
"Last-Translator: Sönke Dibbern <s_dibbern@web.de>\n"
"Language-Team: Low Saxon <kde-i18n-nds@kde.org>\n"
@@ -52,7 +52,7 @@ msgstr "Verbinnen vun %1 annahmen"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Verbinnen-Anfraag vun %1 kregen, töövt op Beglöven"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (freegeven Schriefdisch)"
@@ -407,12 +407,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "De feerne Bruker \"%1\" hett sik tokoppelt."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "De feerne Bruker \"%1\" hett sik afkoppelt."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2007-09-13 13:45+0545\n"
"Last-Translator: Ishwor Sharma <sharmabeeshwar@gmail.com>\n"
"Language-Team: Nepali <info@mpp.org.np>\n"
@@ -55,7 +55,7 @@ msgstr "%1 बाट निमन्त्रणा नगरिएको जड
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "%1 बाट जडान प्राप्त भयो, होल्डमा (यकीनका लागि प्रतिक्षा गर्दैछ)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (साझेदार गरिएको डेस्कटप)"
@@ -420,13 +420,13 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 is now connected."
msgstr "टाढाको प्रयोगकर्ताले जडान बन्द गर्यो ।"
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, fuzzy, kde-format
#| msgid "The remote user has closed the connection."
msgid "The remote user %1 disconnected."

View File

@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2021-10-31 09:10+0100\n"
"Last-Translator: Freek de Kruijf <freekdekruijf@kde.nl>\n"
"Language-Team: \n"
@@ -62,7 +62,7 @@ msgstr "Verbinding van %1 geaccepteerd"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Ontving een verbinding van %1. Deze wacht op uw bevestiging."
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (gedeeld bureaublad)"
@@ -420,12 +420,12 @@ msgstr ""
"Om de instelling van de framebufferplug-in toe te passen, moet u het "
"programma opnieuw opstarten."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "De gebruiker op afstand %1 is nu verbonden."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "De verbinding met de gebruiker op afstand %1 is nu verbroken."

View File

@@ -1,20 +1,20 @@
# Translation of krfb to Norwegian Nynorsk
#
# Gaute Hvoslef Kvalnes <gaute@verdsveven.com>, 2003, 2004.
# Karl Ove Hufthammer <karl@huftis.org>, 2007, 2008, 2009, 2018, 2020, 2023.
# Karl Ove Hufthammer <karl@huftis.org>, 2007, 2008, 2009, 2018, 2020.
msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"PO-Revision-Date: 2023-07-31 21:03+0200\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2020-11-02 20:58+0100\n"
"Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n"
"Language-Team: Norwegian Nynorsk <l10n-no@lister.huftis.org>\n"
"Language: nn\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 23.04.3\n"
"X-Generator: Lokalize 20.08.2\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Environment: kde\n"
"X-Accelerator-Marker: &\n"
@@ -55,7 +55,7 @@ msgstr "Godtok tilkopling frå %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Motteke tilkopling frå %1, ventar (på stadfesting)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (delt skjerm)"
@@ -119,17 +119,17 @@ msgstr "Føretrekt programtillegg for biletbuffer"
#: main-virtualmonitor.cpp:49
#, kde-format
msgid "Creating a Virtual Monitor from %1"
msgstr "Lagar virtuell avlyttar frå %1"
msgstr ""
#: main-virtualmonitor.cpp:80
#, kde-format
msgid "Remote Virtual Monitor"
msgstr "Virtuell skjerm for ekstern ressurs"
msgstr ""
#: main-virtualmonitor.cpp:82
#, kde-format
msgid "Offer a Virtual Monitor that can be accessed remotely"
msgstr "Tilbyr ein virtuell skjerm ein kan få tilgang til eksternt"
msgstr ""
#: main-virtualmonitor.cpp:84 main.cpp:98
#, kde-format
@@ -153,7 +153,7 @@ msgstr ""
#: main-virtualmonitor.cpp:91
#, kde-format
msgid "Virtual Monitor implementation"
msgstr "Implementasjon av virtuell skjerm"
msgstr ""
#: main-virtualmonitor.cpp:92 main.cpp:108
#, kde-format
@@ -223,52 +223,52 @@ msgstr "Opphavlege VNC-kodarar og protokollutforming"
#: main-virtualmonitor.cpp:108
#, kde-format
msgid "Logical resolution of the new monitor"
msgstr "Logisk oppløysing på ny skjerm"
msgstr ""
#: main-virtualmonitor.cpp:108
#, kde-format
msgid "resolution"
msgstr "oppløysing"
msgstr ""
#: main-virtualmonitor.cpp:110
#, kde-format
msgid "Name of the monitor"
msgstr "Namnet på skjermen"
msgstr ""
#: main-virtualmonitor.cpp:110
#, kde-format
msgid "name"
msgstr "namn"
msgstr ""
#: main-virtualmonitor.cpp:112
#, kde-format
msgid "Password for the client to connect to it"
msgstr "Passord for tilkopling frå klienten"
msgstr ""
#: main-virtualmonitor.cpp:112
#, kde-format
msgid "password"
msgstr "passord"
msgstr ""
#: main-virtualmonitor.cpp:114
#, kde-format
msgid "The device-pixel-ratio of the device, the scaling factor"
msgstr "Einingspiksel-forholdet til eininga  skaleringsfaktor"
msgstr ""
#: main-virtualmonitor.cpp:114
#, kde-format
msgid "dpr"
msgstr "dpr"
msgstr ""
#: main-virtualmonitor.cpp:116
#, kde-format
msgid "The port we will be listening to"
msgstr "Porten me skal lytta til"
msgstr ""
#: main-virtualmonitor.cpp:116
#, kde-format
msgid "number"
msgstr "tal"
msgstr ""
#: main.cpp:49
#, kde-format
@@ -410,12 +410,12 @@ msgstr ""
"For å ta i bruk innstillingane for biletbuffer må du starta programmet på "
"nytt."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Fjernbrukaren %1 er no tilkopla."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Fjernbrukaren %1 kopla frå."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2008-08-05 22:27+0200\n"
"Last-Translator: Yannig Marchegay (Kokoyaya) <yannig@marchegay.org>\n"
"Language-Team: Occitan (lengadocian) <ubuntu-l10n-oci@lists.ubuntu.com>\n"
@@ -53,7 +53,7 @@ msgstr ""
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr ""
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr ""
@@ -379,12 +379,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr ""
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr ""

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2011-01-01 14:22+0530\n"
"Last-Translator: A S Alam <aalam@users.sf.net>\n"
"Language-Team: Punjabi/Panjabi <punjabi-users@lists.sf.net>\n"
@@ -53,7 +53,7 @@ msgstr "%1 ਤੋਂ ਕੁਨੈਕਸ਼ਨ ਮਨਜ਼ੂਰ ਕੀਤਾ"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "%1 ਤੋਂ ਕੁਨੈਕਸ਼ਨ ਮਿਲਿਆ, ਹੋਲਡ ਹੈ (ਪੁਸ਼ਟੀ ਦੀ ਉਡੀਕ ਜਾਰੀ)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (ਸਾਂਝਾ ਡੈਸਕਟਾਪ)"
@@ -382,12 +382,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "%1 ਰਿਮੋਟ ਯੂਜ਼ਰ ਹੁਣ ਕੁਨੈਕਟ ਹੈ।"
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "ਰਿਮੋਟ ਯੂਜ਼ਰ %1 ਡਿਸ-ਕੁਨੈਕਟ ਹੋਇਆ।"

View File

@@ -1,6 +1,6 @@
# translation of krfb.po to Polish
# translation of krfb.po to
# Version: $Revision: 1669497 $
# Version: $Revision: 1629487 $
# Copyright (C) 2002, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
#
# Krzysztof Lichota <lichota@mimuw.edu.pl>, 2002, 2005.
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2021-11-13 08:57+0100\n"
"Last-Translator: Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>\n"
"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
@@ -59,7 +59,7 @@ msgstr "Zaakceptowano połączenie od %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Otrzymano połączenie z %1, jest wstrzymane (czeka na zatwierdzenie)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (współdzielony pulpit)"
@@ -416,12 +416,12 @@ msgstr ""
"Aby zastosować ustawienia wtyczki bufora klatek, musisz ponownie uruchomić "
"program."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Od teraz użytkownik zdalny użytkownik %1 jest podłączony."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Zdalny użytkownik %1 jest rozłączony."

View File

@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2021-11-08 18:24+0000\n"
"Last-Translator: José Nuno Pires <zepires@gmail.com>\n"
"Language-Team: pt <kde-i18n-pt@kde.org>\n"
@@ -55,7 +55,7 @@ msgstr "Ligação aceite de %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Ligação recebida de %1 em espera (à espera de confirmação)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (ecrã partilhado)"
@@ -412,12 +412,12 @@ msgstr ""
"Para aplicar a configuração do 'plugin' do 'framebuffer', tem de reiniciar o "
"programa."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "O utilizador remoto '%1' está agora ligado."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "O utilizador remoto '%1' desligou-se."

View File

@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2021-11-01 16:21-0300\n"
"Last-Translator: Luiz Fernando Ranghetti <elchevive@opensuse.org>\n"
"Language-Team: Portuguese <kde-i18n-pt_BR@kde.org>\n"
@@ -60,7 +60,7 @@ msgstr "Conexão aceita de %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Recebida conexão de %1, retida (esperando por confirmação)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (ambiente de trabalho compartilhado)"
@@ -419,12 +419,12 @@ msgstr ""
"Para aplicar as configurações do plugin de framebuffer, você precisa "
"reiniciar o programa."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "O usuário remoto %1 está conectado agora."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "O usuário remoto %1 desconectou-se."

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2022-04-30 11:39+0100\n"
"Last-Translator: Sergiu Bivol <sergiu@cip.md>\n"
"Language-Team: Romanian <kde-i18n-ro@kde.org>\n"
@@ -53,7 +53,7 @@ msgstr "Conexiune de la %1 acceptată"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Conexiune recepționată de la %1, în așteptare (așteaptă confirmarea)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (birou partajat)"
@@ -410,12 +410,12 @@ msgstr ""
"Trebuie să reporniți programul pentru a aplica configurarea extensiei de "
"framebuffer."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Utilizatorul distant %1 e conectat acum."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Utilizatorul distant %1 s-a deconectat."

View File

@@ -18,7 +18,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2022-07-05 10:21+0300\n"
"Last-Translator: Olesya Gerasimenko <translation-team@basealt.ru>\n"
"Language-Team: Basealt Translation Team\n"
@@ -71,7 +71,7 @@ msgstr "Принято подключение %1"
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr "Получен запрос на подключение от %1 (ожидается подтверждение)"
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr "%1@%2 (доступный рабочий стол)"
@@ -429,12 +429,12 @@ msgstr ""
"Чтобы изменённые параметры модуля буфера экрана вступили в силу, необходимо "
"перезапустить программу."
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr "Удалённый пользователь %1 сейчас подключен."
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr "Удалённый пользователь %1 отключен."

View File

@@ -4,7 +4,7 @@ msgid ""
msgstr ""
"Project-Id-Version: krfb\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
"PO-Revision-Date: 2007-09-11 22:44+0200\n"
"Last-Translator: Northern Sami translation team <i18n-sme@lister.ping.uio."
"no>\n"
@@ -54,7 +54,7 @@ msgstr ""
msgid "Received connection from %1, on hold (waiting for confirmation)"
msgstr ""
#: invitationsrfbserver.cpp:50
#: invitationsrfbserver.cpp:55
#, kde-format
msgid "%1@%2 (shared desktop)"
msgstr ""
@@ -379,12 +379,12 @@ msgstr ""
msgid "To apply framebuffer plugin setting, you need to restart the program."
msgstr ""
#: rfbservermanager.cpp:237
#: rfbservermanager.cpp:229
#, kde-format
msgid "The remote user %1 is now connected."
msgstr ""
#: rfbservermanager.cpp:251
#: rfbservermanager.cpp:243
#, kde-format
msgid "The remote user %1 disconnected."
msgstr ""

Some files were not shown because too many files have changed in this diff Show More