Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
devel:LoongArch:Factory
xwaylandvideobridge
xwaylandvideobridge-0.4.0+git12.obscpio
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File xwaylandvideobridge-0.4.0+git12.obscpio of Package xwaylandvideobridge
07070100000000000081A400000000000000000000000165ADD93600000416000000000000000000000000000000000000003700000000xwaylandvideobridge-0.4.0+git12/.flatpak-manifest.json{ "id": "org.kde.xwaylandvideobridge", "branch": "master", "runtime": "org.kde.Platform", "runtime-version": "5.15-22.08", "sdk": "org.kde.Sdk", "command": "xwaylandvideobridge", "tags": ["nightly"], "desktop-file-name-suffix": " (Nightly)", "finish-args": ["--share=ipc", "--device=all", "--socket=x11", "--talk-name=org.kde.StatusNotifierWatcher", "--own-name=org.kde.StatusNotifierItem-2-2", "--env=QT_LOGGING_DEBUG=*.debug=true qt.qpa.input*.debug=false"], "modules": [ { "config-opts": [ "-DENABLE_TESTING=OFF" ], "name": "kpipewire", "buildsystem": "cmake-ninja", "sources": [ { "type": "git", "url": "https://invent.kde.org/plasma/kpipewire.git", "commit": "Plasma/5.27" } ] }, { "name": "xwaylandvideobridge", "buildsystem": "cmake-ninja", "sources": [ { "type": "dir", "path": "." } ] } ] } 07070100000001000081A400000000000000000000000165ADD936000000A8000000000000000000000000000000000000003F00000000xwaylandvideobridge-0.4.0+git12/.flatpak-manifest.json.licenseSPDX-License-Identifier: BSD-3-Clause SPDX-FileCopyrightText: 2023 David Edmundson <kde@davidedmundson.co.uk> SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> 07070100000002000081A400000000000000000000000165ADD93600000114000000000000000000000000000000000000002F00000000xwaylandvideobridge-0.4.0+git12/.gitlab-ci.yml# SPDX-FileCopyrightText: None # SPDX-License-Identifier: CC0-1.0 include: - project: sysadmin/ci-utilities file: - /gitlab-templates/reuse-lint.yml - /gitlab-templates/linux.yml - /gitlab-templates/linux-qt6.yml - /gitlab-templates/flatpak.yml 07070100000003000081A400000000000000000000000165ADD93600000317000000000000000000000000000000000000002C00000000xwaylandvideobridge-0.4.0+git12/.kde-ci.yml# SPDX-FileCopyrightText: None # SPDX-License-Identifier: CC0-1.0 Dependencies: - 'on': ['Linux/Qt6', 'FreeBSD/Qt6'] 'require': 'frameworks/extra-cmake-modules': '@latest-kf6' 'frameworks/kcoreaddons': '@latest-kf6' 'frameworks/ki18n': '@latest-kf6' 'frameworks/kwindowsystem': '@latest-kf6' 'frameworks/knotifications': '@latest-kf6' 'frameworks/kstatusnotifieritem': '@latest-kf6' 'plasma/kpipewire': '@latest-kf6' - 'on': ['Linux/Qt5', 'FreeBSD/Qt5'] 'require': 'frameworks/extra-cmake-modules': '@stable' 'frameworks/kcoreaddons': '@stable' 'frameworks/ki18n': '@stable' 'frameworks/kwindowsystem': '@stable' 'frameworks/knotifications': '@stable' 'plasma/kpipewire': '@latest' Options: require-passing-tests-on: [ 'Linux' ] 07070100000004000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002700000000xwaylandvideobridge-0.4.0+git12/.reuse07070100000005000081A400000000000000000000000165ADD93600000120000000000000000000000000000000000000002C00000000xwaylandvideobridge-0.4.0+git12/.reuse/dep5Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: Screen Record Upstream-Contact: Aleix Pol Gonzalez <aleixpol@kde.org> Source: https://kde.org # Sample paragraph, commented out: # # Files: src/* # Copyright: $YEAR $NAME <$CONTACT> # License: ... 07070100000006000081A400000000000000000000000165ADD9360000065F000000000000000000000000000000000000002F00000000xwaylandvideobridge-0.4.0+git12/CMakeLists.txt# SPDX-License-Identifier: BSD-3-Clause # SPDX-FileCopyrightText: 2023 David Edmundson <kde@davidedmundson.co.uk> # SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> cmake_minimum_required(VERSION 3.16) project(xwaylandvideobridge) set(PROJECT_VERSION "0.4.0") set(QT_MIN_VERSION "5.15.0") set(KF_MIN_VERSION "5.83.0") find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) include(KDEInstallDirs) include(KDECMakeSettings) include(KDECompilerSettings NO_POLICY_SCOPE) include(ECMInstallIcons) include(ECMQtDeclareLoggingCategory) include(FeatureSummary) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) if (QT_MAJOR_VERSION STREQUAL "6") set(REQUIRED_QT_VERSION "6.4") set(KF_MIN_VERSION "5.240.0") set(KF_MAJOR_VERSION "6") else() set(KF_MAJOR_VERSION "5") endif() find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Quick DBus) if (QT_MAJOR_VERSION STREQUAL "5") find_package(Qt5X11Extras ${QT_MIN_VERSION} REQUIRED) endif() find_package(KF${QT_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS CoreAddons I18n WindowSystem Notifications ) if (QT_MAJOR_VERSION STREQUAL "6") find_package(KF6StatusNotifierItem ${KF_MIN_VERSION} REQUIRED) endif() find_package(XCB COMPONENTS REQUIRED XCB COMPOSITE EVENT RECORD XFIXES) find_package(KPipeWire REQUIRED) add_subdirectory(src) add_subdirectory(icons) # Make it possible to use the po files fetched by the fetch-translations step ki18n_install(po) feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) 07070100000007000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002900000000xwaylandvideobridge-0.4.0+git12/LICENSES07070100000008000081A400000000000000000000000165ADD936000005C8000000000000000000000000000000000000003A00000000xwaylandvideobridge-0.4.0+git12/LICENSES/BSD-3-Clause.txtCopyright (c) <year> <owner>. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 07070100000009000081A400000000000000000000000165ADD93600001B88000000000000000000000000000000000000003500000000xwaylandvideobridge-0.4.0+git12/LICENSES/CC0-1.0.txtCreative Commons Legal Code CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER. Statement of Purpose The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. 1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; ii. moral rights retained by the original author(s) and/or performer(s); iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; v. rights protecting the extraction, dissemination, use and reuse of data in a Work; vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. 2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. 3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. 4. Limitations and Disclaimers. a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. 0707010000000A000081A400000000000000000000000165ADD936000060CE000000000000000000000000000000000000003F00000000xwaylandvideobridge-0.4.0+git12/LICENSES/LGPL-2.0-or-later.txtGNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. one line to give the library's name and an idea of what it does. Copyright (C) year name of author This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. signature of Ty Coon, 1 April 1990 Ty Coon, President of Vice That's all there is to it! 0707010000000B000081A400000000000000000000000165ADD93600000296000000000000000000000000000000000000004900000000xwaylandvideobridge-0.4.0+git12/LICENSES/LicenseRef-KDE-Accepted-GPL.txtThis library 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 3 of the license or (at your option) at any later version that is accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy as defined in Section 14 of version 3 of the license. 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. 0707010000000C000081A400000000000000000000000165ADD93600000113000000000000000000000000000000000000002C00000000xwaylandvideobridge-0.4.0+git12/Messages.sh#! /usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> $EXTRACTRC `find . -name \*.ui -o -name \*.rc -o -name \*.kcfg` >> rc.cpp $XGETTEXT `find . -name \*.cpp` -o $podir/xwaylandvideobridge.pot rm -f rc.cpp 0707010000000D000081A400000000000000000000000165ADD936000006F6000000000000000000000000000000000000002A00000000xwaylandvideobridge-0.4.0+git12/README.md<!-- SPDX-License-Identifier: BSD-3-Clause SPDX-FileCopyrightText: 2023 David Edmundson <kde@davidedmundson.co.uk> SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> --> # XWayland Video Bridge # About By design, X11 applications can't access window or screen contents for wayland clients. This is fine in principle, but it breaks screen sharing in tools like Discord, MS Teams, Skype, etc and more. This tool allows us to share specific windows to X11 clients, but within the control of the user at all times. # How to use xwaylandvideobridge should autostart on login. It will run in the background. Next time you try to share a window a prompt will appear. The previously selected window should now be available for sharing. The title will always be "Wayland to X11 bridge" no matter what window is selected. The system tray icon provides finer control. # Use outside Plasma This should work on any desktop that supports the Xdg desktop portals and pipewire streaming and have a working system tray. # Future Ideally this should be more automatic, but this tool aims purely to serve as a stop-gap whilst we wait for these clients to get native wayland support and for the surrounding wayland protocols to be better. How much more it gets developed depends on feedback and how the surrounding ecosystem evolves. # Release Process - Check it works - appstream-metainfo-release-update --version 0.3.0 -d today ./src/org.kde.xwaylandvideobridge.appdata.xml - Update set(PROJECT_VERSION "0.3.0") in CMakeLists.txt - In Releaseme mkdir xwaylandvideobridge; cd xwaylandvideobridge; ../tarme.rb --origin trunk --version 0.3.0 xwaylandvideobridge - scp xwaylandvideobridge ftpadmin@tinami.kde.org: and move to right place - Write a blog post and put on kde-announce 0707010000000E000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/icons0707010000000F000081A400000000000000000000000165ADD9360000014D000000000000000000000000000000000000003500000000xwaylandvideobridge-0.4.0+git12/icons/CMakeLists.txt# SPDX-License-Identifier: BSD-3-Clause # SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> ecm_install_icons( ICONS sc-apps-xwaylandvideobridge.svg DESTINATION ${KDE_INSTALL_ICONDIR} THEME hicolor ) ecm_install_icons(ICONS ${xwaylandvideobridge_ICONS} DESTINATION ${KDE_INSTALL_ICONDIR} THEME hicolor) 07070100000010000081A400000000000000000000000165ADD93600003751000000000000000000000000000000000000004600000000xwaylandvideobridge-0.4.0+git12/icons/sc-apps-xwaylandvideobridge.svg<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg viewBox="0 0 32 32" version="1.1" id="svg5" sodipodi:docname="xwaylandvideobridge.svg" inkscape:version="1.2 (dc2aedaf03, 2022-05-15)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> <sodipodi:namedview id="namedview7" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:showpageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" showgrid="false" inkscape:zoom="11.346854" inkscape:cx="-4.1421172" inkscape:cy="6.6538266" inkscape:window-width="1280" inkscape:window-height="1370" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="0" inkscape:current-layer="svg5" showguides="true" /> <defs id="defs3051"> <style type="text/css" id="current-color-scheme"> .ColorScheme-Text { color:#232629; } </style> <linearGradient inkscape:collect="always" id="linearGradient4272" xlink:href="#linearGradient4303" y1="547.79797" y2="536.79797" gradientUnits="userSpaceOnUse" x2="0" gradientTransform="matrix(0.57842627,0,0,0.54086583,-220.24792,-267.85538)" /> <linearGradient inkscape:collect="always" id="linearGradient4303"> <stop style="stop-color:#c6cdd1" id="stop4305" /> <stop offset="1" style="stop-color:#e0e5e7" id="stop4307" /> </linearGradient> <linearGradient inkscape:collect="always" id="linearGradient4250" xlink:href="#linearGradient4159" y1="536.79797" y2="503.798" gradientUnits="userSpaceOnUse" x2="0" gradientTransform="matrix(0.53710966,0,0,0.54086583,-203.36715,-267.85538)" /> <linearGradient inkscape:collect="always" id="linearGradient4159"> <stop style="stop-color:#2a2c2f" id="stop4161" /> <stop offset="1" style="stop-color:#424649" id="stop4163" /> </linearGradient> <linearGradient inkscape:collect="always" id="linearGradient4597-5" xlink:href="#linearGradient4591" y1="541.79797" y2="489.798" gradientUnits="userSpaceOnUse" x2="0" gradientTransform="matrix(0.53898118,0,0,0.5453731,-208.4851,-266.95302)" /> <linearGradient inkscape:collect="always" id="linearGradient4591"> <stop style="stop-color:#7e8f9e" id="stop4593" /> <stop offset="1" style="stop-color:#84ced5" id="stop4595" /> </linearGradient> <linearGradient inkscape:collect="always" id="linearGradient4681" xlink:href="#linearGradient4675" y1="535.79797" y2="522.79797" x1="394.57144" gradientUnits="userSpaceOnUse" x2="404.57144" gradientTransform="matrix(0.54537286,0,0,0.56662092,-211.00709,-278.21009)" /> <linearGradient inkscape:collect="always" id="linearGradient4675"> <stop style="stop-color:#e4a56d" id="stop4677" /> <stop offset="1" style="stop-color:#a7bd78" id="stop4679" /> </linearGradient> <linearGradient inkscape:collect="always" id="linearGradient4689" xlink:href="#linearGradient4683" x1="404.57144" gradientUnits="userSpaceOnUse" x2="421.57144" gradientTransform="matrix(0.53522132,0,0,0.56662107,-206.90006,-278.21015)" /> <linearGradient inkscape:collect="always" id="linearGradient4683"> <stop style="stop-color:#c3a278" id="stop4685" /> <stop offset="1" style="stop-color:#6688aa" id="stop4687" /> </linearGradient> <linearGradient inkscape:collect="always" id="linearGradient4728" xlink:href="#linearGradient4722" y1="536.79797" y2="524.79797" x1="430.57144" gradientUnits="userSpaceOnUse" x2="437.49963" gradientTransform="matrix(0.5492444,0,0,0.56662092,-212.98626,-278.21009)" /> <linearGradient inkscape:collect="always" id="linearGradient4722"> <stop style="stop-color:#6588af" id="stop4724" /> <stop offset="1" style="stop-color:#8ba8cd" id="stop4726" /> </linearGradient> <linearGradient inkscape:collect="always" id="linearGradient4840" xlink:href="#linearGradient4834" x1="421.57144" gradientUnits="userSpaceOnUse" x2="438.57144" gradientTransform="matrix(0.52008044,0,0,0.5453731,-200.19577,-266.95302)" /> <linearGradient inkscape:collect="always" id="linearGradient4834"> <stop style="stop-color:#89ad8b" id="stop4836" /> <stop offset="1" style="stop-color:#82b3c7" id="stop4838" /> </linearGradient> <linearGradient inkscape:collect="always" id="linearGradient4784" xlink:href="#linearGradient4778" y1="525.79797" y2="513.79797" x1="387.57144" gradientUnits="userSpaceOnUse" x2="401.57144" gradientTransform="matrix(0.54537286,0,0,0.63220758,-211.00709,-311.29584)" /> <linearGradient inkscape:collect="always" id="linearGradient4778"> <stop style="stop-color:#e1b16f" id="stop4780" /> <stop offset="1" style="stop-color:#99bf83" id="stop4782" /> </linearGradient> <linearGradient inkscape:collect="always" id="linearGradient4792" xlink:href="#linearGradient4786" y1="510.798" y2="498.798" x1="404.57144" gradientUnits="userSpaceOnUse" x2="391.57144" gradientTransform="matrix(0.54537286,0,0,0.5453731,-211.00709,-266.95302)" /> <linearGradient inkscape:collect="always" id="linearGradient4786"> <stop style="stop-color:#99c487" id="stop4788" /> <stop offset="1" style="stop-color:#b4d99e" id="stop4790" /> </linearGradient> <linearGradient inkscape:collect="always" id="linearGradient4808" xlink:href="#linearGradient4802" y1="501.798" y2="501.61618" x1="404.57144" gradientUnits="userSpaceOnUse" x2="421.57144" gradientTransform="matrix(0.55412222,0,0,0.5453731,-214.54684,-266.95302)" /> <linearGradient inkscape:collect="always" id="linearGradient4802"> <stop style="stop-color:#75d5c7" id="stop4804" /> <stop offset="1" style="stop-color:#66afb9" id="stop4806" /> </linearGradient> <linearGradient inkscape:collect="always" id="linearGradient4776" xlink:href="#linearGradient4770" y1="495.798" y2="504.798" x1="428.57144" gradientUnits="userSpaceOnUse" x2="438.57144" gradientTransform="matrix(0.52008014,0,0,0.52678123,-200.19565,-257.66084)" /> <linearGradient inkscape:collect="always" id="linearGradient4770"> <stop style="stop-color:#5c7b9e" id="stop4772" /> <stop offset="1" style="stop-color:#839dc0" id="stop4774" /> </linearGradient> <linearGradient inkscape:collect="always" id="linearGradient4816" xlink:href="#linearGradient4810" x1="421.57144" gradientUnits="userSpaceOnUse" x2="406.57144" gradientTransform="matrix(0.53898118,0,0,0.5453731,-208.4851,-266.95302)" /> <linearGradient inkscape:collect="always" id="linearGradient4810"> <stop style="stop-color:#7fbcc6" id="stop4812" /> <stop offset="1" style="stop-color:#8ee4e3" id="stop4814" /> </linearGradient> <linearGradient inkscape:collect="always" id="linearGradient4824" xlink:href="#linearGradient4818" x1="421.57144" gradientUnits="userSpaceOnUse" x2="436.57144" gradientTransform="matrix(0.53898118,0,0,0.5453731,-208.4851,-266.95302)" /> <linearGradient inkscape:collect="always" id="linearGradient4818"> <stop style="stop-color:#84d5d7" id="stop4820" /> <stop offset="1" style="stop-color:#84a8ba" id="stop4822" /> </linearGradient> </defs> <path inkscape:connector-curvature="0" style="fill:url(#linearGradient4272);stroke-width:1.38822;stroke-opacity:0.550265" id="rect4254" d="m 12.609952,22.480327 v 3.786058 1.081732 1.081732 h 6.941111 v -1.081732 -1.081732 -3.786058 z" /> <rect width="25.781261" x="3.1898794" y="4.6317577" height="19.47117" style="fill:url(#linearGradient4250);stroke-width:1.38822;stroke-opacity:0.550265" id="rect4173" /> <path inkscape:connector-curvature="0" style="fill:url(#linearGradient4597-5);stroke-width:0.495794" id="path4589-5" d="M 4.1814606,5.6233479 V 21.984537 H 27.896628 V 5.6233479 Z" /> <path inkscape:connector-curvature="0" style="fill:url(#linearGradient4681);fill-rule:evenodd;stroke-width:0.495794" id="path4476-9" d="m 9.6351903,14.051844 -5.4537297,4.665775 v 3.266918 h 5.4537297 z" /> <path inkscape:connector-curvature="0" style="fill:url(#linearGradient4689);fill-rule:evenodd;stroke-width:0.495794" id="path4478-4" d="m 9.6351903,14.547643 v 7.436894 h 9.0987617 z" /> <path inkscape:connector-curvature="0" style="fill:url(#linearGradient4728);fill-rule:evenodd;stroke-width:0.495794" id="path4488-0-8" d="m 27.979555,14.051844 -9.420079,7.932693 9.420079,6e-6 z" /> <path inkscape:connector-curvature="0" style="fill:url(#linearGradient4840);fill-rule:evenodd;stroke-width:0.495794" id="path4188-3" d="M 19.055269,18.712299 V 6.6149407 l 8.924286,7.4369033 -8.924286,7.932693 z" /> <path inkscape:connector-curvature="0" style="fill:url(#linearGradient4784);fill-rule:evenodd;stroke-width:0.495794" id="path4192-6" d="M 4.1814606,9.5897025 V 20.001373 l 5.4537297,-5.45373 z" /> <path inkscape:connector-curvature="0" style="fill:url(#linearGradient4792);fill-rule:evenodd;stroke-width:0.495794" id="path4198-3" d="M 4.1814606,5.6233479 V 9.8585104 L 9.6351903,14.547643 V 11.077078 5.6233479 Z" /> <path inkscape:connector-curvature="0" style="fill:url(#linearGradient4808);fill-rule:evenodd;stroke-width:0.495794" id="path4200-1" d="m 9.6351903,5.6233479 v 5.4537301 3.470565 L 19.055269,6.6149407 17.56789,5.6233539 Z" /> <path inkscape:connector-curvature="0" style="fill:url(#linearGradient4776);fill-rule:evenodd;stroke-width:0.495794" id="path4202-1" d="m 20.318899,5.6233479 -1.26363,0.9915928 8.924286,7.4369033 V 11.077082 5.6233539 Z" /> <path inkscape:connector-curvature="0" style="fill:url(#linearGradient4816);fill-rule:evenodd;stroke-width:0.495794" id="path4206-9-2" d="m 17.56789,5.6233539 1.487379,0.9915868 V 5.6233539 Z" /> <path inkscape:connector-curvature="0" style="fill:url(#linearGradient4824);fill-rule:evenodd;stroke-width:0.495794" id="path4208-1-1" d="M 19.055269,5.6233539 V 6.6149407 L 20.54265,5.6233539 Z" /> <rect width="11.899032" x="10.13099" y="27.934057" height="0.49580356" style="fill:#99a1a7;stroke-width:1.38822;stroke-opacity:0.550265" id="rect4295" /> <g id="g4392" transform="matrix(0.49579363,0,0,0.49579363,-186.48659,-243.16488)"> <rect width="47.999989" x="384.57144" y="530.79797" height="3.9999831" style="fill:#ffffff;fill-opacity:0.784314" id="rect4267" /> <circle cx="429.57144" cy="532.79791" style="fill:#4d4d4d" r="1" id="path4166" /> <path inkscape:connector-curvature="0" style="fill:#4d4d4d" id="rect4183" d="m 386.57143,531.79799 v 1 h 1 v -1 z m 1,1 v 1 h 1 v -1 z" /> </g> <g id="g4383" transform="matrix(0.49579363,0,0,0.49579363,-186.48659,-243.16488)"> <rect width="19.999987" x="386.57144" y="503.798" height="16.999994" style="fill:#ffffff;fill-opacity:0.784314" id="rect3432" /> <path inkscape:connector-curvature="0" style="fill:#3580ca" id="rect4160" d="m 387.57143,504.79799 v 4 h 4.16667 v -3 h -1.04167 l -1.04166,-1 z" /> <path inkscape:connector-curvature="0" style="fill:#ff9955" id="rect4235" d="m 395.57143,504.79799 v 5 h 4 v -3 l -2,-2 z" /> <path inkscape:connector-curvature="0" style="fill:#d45500;fill-rule:evenodd" id="path4237" d="m 397.57143,504.79799 2,2 h -2 z" /> <path inkscape:connector-curvature="0" style="fill:#7aabdc" id="rect4272" d="m 387.57143,505.79799 h 5 v 4 h -5 z" /> <path inkscape:connector-curvature="0" style="fill:#71c837" id="path4275" d="m 401.57143,504.79799 v 5 h 4 v -3 l -2,-2 z" /> <path inkscape:connector-curvature="0" style="fill:#447821;fill-rule:evenodd" id="path4277" d="m 403.57143,504.79799 2,2 h -2 z" /> </g> <path style="fill:#da4453;stroke-width:0.775072" d="m 23.869153,13.679132 a 7.7507194,7.7507194 0 0 1 -7.750719,7.75072 7.7507194,7.7507194 0 0 1 -7.7507207,-7.75072 7.7507194,7.7507194 0 0 1 7.7507207,-7.7507185 7.7507194,7.7507194 0 0 1 7.750719,7.7507185 z" id="circle44" /> </svg> 07070100000011000081A400000000000000000000000165ADD936000000A8000000000000000000000000000000000000004E00000000xwaylandvideobridge-0.4.0+git12/icons/sc-apps-xwaylandvideobridge.svg.licenseSPDX-License-Identifier: BSD-3-Clause SPDX-FileCopyrightText: 2023 David Edmundson <kde@davidedmundson.co.uk> SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> 07070100000012000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002300000000xwaylandvideobridge-0.4.0+git12/po07070100000013000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/ca07070100000014000081A400000000000000000000000165ADD936000006C0000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/ca/xwaylandvideobridge.po# Translation of xwaylandvideobridge.po to Catalan # Copyright (C) 2023 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. # or the same license as the source of its messages in English. # # Josep M. Ferrer <txemaq@gmail.com>, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-06 17:22+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" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 20.12.0\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Josep M. Ferrer" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "txemaq@gmail.com" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Pont d'enregistrament Wayland a X" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Pont de vídeo de l'Xwayland" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" "Ofereix fluxos de vídeo de captura de pantalla dels «XDG Desktop Portals» a " "les aplicacions X11" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Autor" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Surt" 07070100000015000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002F00000000xwaylandvideobridge-0.4.0+git12/po/ca@valencia07070100000016000081A400000000000000000000000165ADD936000006CD000000000000000000000000000000000000004600000000xwaylandvideobridge-0.4.0+git12/po/ca@valencia/xwaylandvideobridge.po# Translation of xwaylandvideobridge.po to Catalan (Valencian) # Copyright (C) 2023 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. # or the same license as the source of its messages in English. # # Josep M. Ferrer <txemaq@gmail.com>, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-06 17:22+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" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 20.12.0\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Josep M. Ferrer" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "txemaq@gmail.com" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Pont de gravació Wayland a X" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Pont de vídeo d'XWayland" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" "Oferix fluxos de vídeo de captura de pantalla dels «XDG Desktop Portals» a " "les aplicacions X11" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Autoria" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Ix" 07070100000017000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/cs07070100000018000081A400000000000000000000000165ADD93600000585000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/cs/xwaylandvideobridge.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # Vit Pelcak <vit@pelcak.org>, 2023. # msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-06 15:07+0200\n" "Last-Translator: Vit Pelcak <vit@pelcak.org>\n" "Language-Team: Czech <kde-i18n-doc@kde.org>\n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Lokalize 22.12.3\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Vít Pelčák" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "vit@pelcak.org" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Autor" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Ukončit" 07070100000019000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/de0707010000001A000081A400000000000000000000000165ADD9360000062B000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/de/xwaylandvideobridge.po# German translations for xwaylandvideobridge package. # Copyright (C) 2023 This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # Frederik Schwarzer <schwarzer@kde.org>, 2023. # # Automatically generated, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-07 15:30+0200\n" "Last-Translator: Frederik Schwarzer <schwarzer@kde.org>\n" "Language-Team: German <kde-i18n-de@kde.org>\n" "Language: de\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 22.07.70\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Deutsches KDE-Übersetzerteam" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "kde-i18n-de@kde.org" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Aufnahmebrücke von Wayland nach X" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Xwayland-Video-Brücke" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "Copyright 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Autor" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Beenden" 0707010000001B000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002900000000xwaylandvideobridge-0.4.0+git12/po/en_GB0707010000001C000081A400000000000000000000000165ADD936000005ED000000000000000000000000000000000000004000000000xwaylandvideobridge-0.4.0+git12/po/en_GB/xwaylandvideobridge.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # # Steve Allewell <steve.allewell@gmail.com>, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-08 11:13+0100\n" "Last-Translator: Steve Allewell <steve.allewell@gmail.com>\n" "Language-Team: British English\n" "Language: en_GB\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.03.70\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Steve Allewell" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "steve.allewell@gmail.com" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Wayland to X Recording bridge" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Xwayland Video Bridge" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "Offer XDG Desktop Portals screencast streams to X11 apps" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Author" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Quit" 0707010000001D000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/eo0707010000001E000081A400000000000000000000000165ADD93600000638000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/eo/xwaylandvideobridge.po# translation of xwaylandvideobridge.pot to esperanto # Copyright (C) 2023 Free Software Foundation, Inc. # This file is distributed under the same license as the xwaylandvideobridge package. # Oliver Kellogg <okellogg@users.sourceforge.net, 2023. # msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-07-15 17:53+0100\n" "Last-Translator: Oliver Kellogg <okellogg@users.sourceforge.net>\n" "Language-Team: Esperanto <kde-i18n-eo@kde.org>\n" "Language: eo\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" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Oliver Kellogg" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "okellogg@users.sourceforge.net" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Wayland al X-Registraĵa ponto" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Xwayland Video-Ponto" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "Oferti \"XDG Desktop Portals\" ekranregistraĵajn fluojn al X11-aplikoj" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Aŭtoro" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Ĉesigi" 0707010000001F000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/es07070100000020000081A400000000000000000000000165ADD9360000066B000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/es/xwaylandvideobridge.po# Spanish translations for xwaylandvideobridge.po package. # Copyright (C) 2023 This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # # Automatically generated, 2023. # Eloy Cuadra <ecuadra@eloihr.net>, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-08 00:13+0200\n" "Last-Translator: Eloy Cuadra <ecuadra@eloihr.net>\n" "Language-Team: Spanish <kde-l10n-es@kde.org>\n" "Language: es\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.03.90\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Eloy Cuadra" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "ecuadra@eloihr.net" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Pasarela de grabación de Wayland a X" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Pasarela de vídeo Xwayland" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" "Ofrecer emisiones de vídeo de los portales de escritorio XDG a las " "aplicaciones de X11" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "© 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Autor" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Salir" 07070100000021000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/eu07070100000022000081A400000000000000000000000165ADD9360000069E000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/eu/xwaylandvideobridge.po# Translation for xwaylandvideobridge.po to Euskara/Basque (eu). # Copyright (C) 2023 This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # KDE euskaratzeko proiektuko arduraduna <xalba@ni.eus>. # # Translators: # Iñigo Salvador Azurmendi <xalba@ni.eus>, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-14 00:30+0200\n" "Last-Translator: Iñigo Salvador Azurmendi <xalba@ni.eus>\n" "Language-Team: Basque <kde-i18n-eu@kde.org>\n" "Language: eu\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 22.12.3\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Iñigo Salvador Azurmendi" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "xalba@ni.eus" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "«Wayland»etik «X»ra grabatzeko zubia" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Xwayland bideo zubia" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" "Eskaini XDG mahaigain atarien pantaila-grabazio korronteak X11 aplikazioei" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Egilea" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Irten" 07070100000023000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/fi07070100000024000081A400000000000000000000000165ADD9360000060B000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/fi/xwaylandvideobridge.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # Tommi Nieminen <translator@legisign.org>, 2023. # msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-05-08 13:50+0300\n" "Last-Translator: Tommi Nieminen <translator@legisign.org>\n" "Language-Team: Finnish <kde-i18n-doc@kde.org>\n" "Language: fi\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" msgid "Your names" msgstr "Tommi Nieminen" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "translator@legisign.org" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Waylandistä X:ään -talletussilta" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Xwayland-videosilta" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "Tarjoa XDG-työpöytäportaalin näytöntoistovirtoja X11-sovelluksiin" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "© 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Tekijä" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Lopeta" 07070100000025000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/fr07070100000026000081A400000000000000000000000165ADD936000005E5000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/fr/xwaylandvideobridge.po# SPDX-FileCopyrightText: 2023 Xavier Besnard <xavier.besnard@kde.org> # Xavier Besnard <xavier.besnard@kde.org>, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-12-20 09:28+0100\n" "Last-Translator: Xavier Besnard <xavier.besnard@kde.org>\n" "Language-Team: \n" "Language: fr\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.08.4\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Xavier Besnard" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "xavier.besnard@kde.org" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Wayland vers un pont d'enregistrement pour X" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Pont vidéo XWayland" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" "Proposer des flux de diffusion d'écrans pour des portails e bureaux « XDG » " "vers les applications sous X11" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Auteur" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Quitter" 07070100000027000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/gl07070100000028000081A400000000000000000000000165ADD9360000063A000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/gl/xwaylandvideobridge.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # Adrián Chaves (Gallaecio) <adrian@chaves.io>, 2023. # msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-30 10:45+0200\n" "Last-Translator: Adrián Chaves (Gallaecio) <adrian@chaves.io>\n" "Language-Team: Galician <proxecto@trasno.gal>\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" msgid "Your names" msgstr "Adrian Chaves (Gallaecio)" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "adrian@chaves.io" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Ponte de gravación de Wayland a X" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Ponte de vídeo de XWayland" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" "Ofrecer aos portais de escritorio de XDG fluxos de emisión de pantalla de " "aplicacións de X11" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "© 2022 Aleix Pol González" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Autor" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Saír" 07070100000029000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/it0707010000002A000081A400000000000000000000000165ADD93600000621000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/it/xwaylandvideobridge.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # Vincenzo Reale <smart2128vr@gmail.com>, 2023. # msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-07 08:23+0200\n" "Last-Translator: Vincenzo Reale <smart2128vr@gmail.com>\n" "Language-Team: Italian <kde-i18n-it@kde.org>\n" "Language: it\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 22.12.3\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Vincenzo Reale" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "smart2128vr@gmail.com" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Bridge di registrazione da Wayland a X" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Bridge video XWayland" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" "Offri i flussi di trasmissione dello schermo dei portali desktop XDG alle " "applicazioni X11" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Autore" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Esci" 0707010000002B000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/ja0707010000002C000081A400000000000000000000000165ADD93600000498000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/ja/xwaylandvideobridge.pomsgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-06 00:04-0700\n" "Last-Translator: Japanese KDE translation team <kde-jp@kde.org>\n" "Language-Team: Japanese <kde-jp@kde.org>\n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "" 0707010000002D000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/ka0707010000002E000081A400000000000000000000000165ADD936000006B8000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/ka/xwaylandvideobridge.po# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-07 05:05+0200\n" "Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n" "Language-Team: Georgian <kde-i18n-doc@kde.org>\n" "Language: ka\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: Poedit 3.2.2\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Temuri Doghonadze" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "Temuri.doghonadze@gmail.com" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Wayland-დან X-მდე ჩაწერის ხიდი" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Xwayland-ის ვიდეოხიდი" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" "X11-ის აპებისთვის XDG Desktop Portals-ის screencast ნაკადების შეთავაზება" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "ავტორი" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "გასვლა" 0707010000002F000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/ko07070100000030000081A400000000000000000000000165ADD936000005E2000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/ko/xwaylandvideobridge.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # Shinjo Park <kde@peremen.name>, 2023. # msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-08-06 20:58+0200\n" "Last-Translator: Shinjo Park <kde@peremen.name>\n" "Language-Team: Korean <kde-kr@kde.org>\n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Lokalize 22.12.3\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "박신조" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "kde@peremen.name" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Wayland to X 녹화 브리지" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Xwayland 비디오 브리지" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "XDG 데스크톱 포털에 X11 앱으로 스크린캐스트 제공" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "작성자" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "끝내기" 07070100000031000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/nl07070100000032000081A400000000000000000000000165ADD936000005EF000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/nl/xwaylandvideobridge.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # # Freek de Kruijf <freekdekruijf@kde.nl>, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-06 10:40+0200\n" "Last-Translator: Freek de Kruijf <freekdekruijf@kde.nl>\n" "Language-Team: \n" "Language: nl\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 22.12.3\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Freek de Kruijf - 2023" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "freekdekruijf@kde.nl" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Wayland naar X-opname-bridge" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Xwayland video-bridge" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" "XDG schermfilmstreams van bureaubladportalen bieden aan X11 toepassingen" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Auteur" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Afsluiten" 07070100000033000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/nn07070100000034000081A400000000000000000000000165ADD9360000060C000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/nn/xwaylandvideobridge.po# Translation of xwaylandvideobridge to Norwegian Nynorsk # # Karl Ove Hufthammer <karl@huftis.org>, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-08-01 21:40+0200\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" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 23.04.3\n" "X-Environment: kde\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Karl Ove Hufthammer" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "karl@huftis.org" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Opptaksbru for Wayland til X" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Xwayland-videobru" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "Tilbyr XDG Desktop Portals-skjermkastingsstraumar til X11-program" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "© 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Opphavsperson" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Avslutt" 07070100000035000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/pl07070100000036000081A400000000000000000000000165ADD93600000652000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/pl/xwaylandvideobridge.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # # Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-10-15 11:51+0200\n" "Last-Translator: Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>\n" "Language-Team: Polish <kde-i18n-doc@kde.org>\n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 23.04.3\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Łukasz Wojniłowicz" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "lukasz.wojnilowicz@gmail.com" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Mostek nagrywania Wayland na X" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Mostek obrazu Xwayland" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "Daj strumienie Portali Pulpitu XDG aplikacjom X11" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Autor" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Zakończ" 07070100000037000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/pt07070100000038000081A400000000000000000000000165ADD936000005BD000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/pt/xwaylandvideobridge.pomsgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-06 10:25+0100\n" "Last-Translator: José Nuno Coelho Pires <zepires@gmail.com>\n" "Language-Team: Portuguese <kde-i18n-pt@kde.org>\n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-POFile-SpellExtra: Wayland Xwayland Aleix Pol Gonzalez XDG Desktop\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-POFile-SpellExtra: Portals\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "José Nuno Pires" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "zepires@gmail.com" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Interface de gravação do Wayland para o X" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Interface de Vídeo para o Xwayland" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" "Disponibiliza transmissões do XDG Desktop Portals para as aplicações de X11" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Autoria" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Sair" 07070100000039000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002900000000xwaylandvideobridge-0.4.0+git12/po/pt_BR0707010000003A000081A400000000000000000000000165ADD9360000063A000000000000000000000000000000000000004000000000xwaylandvideobridge-0.4.0+git12/po/pt_BR/xwaylandvideobridge.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # # Luiz Fernando Ranghetti <elchevive@opensuse.org>, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-07-05 17:15-0300\n" "Last-Translator: Luiz Fernando Ranghetti <elchevive@opensuse.org>\n" "Language-Team: Brazilian Portuguese <kde-i18n-pt_BR@kde.org>\n" "Language: pt_BR\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 22.12.3\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Luiz Fernando Ranghetti" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "elchevive@opensuse.org" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Wayland para ponte de gravação X" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Ponte de vídeo Xwayland" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" "Oferece fluxos de screencast do XDG Desktop Portals para aplicativos X11" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Autor" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Sair" 0707010000003B000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/sk0707010000003C000081A400000000000000000000000165ADD93600000559000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/sk/xwaylandvideobridge.po# translation of xwaylandvideobridge.po to Slovak # Roman Paholík <wizzardsk@gmail.com>, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-07 08:07+0200\n" "Last-Translator: Roman Paholik <wizzardsk@gmail.com>\n" "Language-Team: Slovak <kde-sk@linux.sk>\n" "Language: sk\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" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Roman Paholík" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "wizzardsk@gmail.com" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Xwayland video most" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Autor" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Ukončiť" 0707010000003D000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/sl0707010000003E000081A400000000000000000000000165ADD9360000062F000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/sl/xwaylandvideobridge.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # # Matjaž Jeran <matjaz.jeran@amis.net>, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-07 08:03+0200\n" "Last-Translator: Matjaž Jeran <matjaz.jeran@amis.net>\n" "Language-Team: Slovenian <lugos-slo@lugos.si>\n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "%100==4 ? 3 : 0);\n" "X-Generator: Lokalize 22.12.3\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Matjaž Jeran" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "matjaz.jeran@amis.net" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Premostitev snemalnika Wayland na X" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Xwayland Video Bridge" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "Nudi portalom namizja XDG zaslonske tokove aplikacijam X11" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Avtor" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Zapusti" 0707010000003F000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/sv07070100000040000081A400000000000000000000000165ADD93600000634000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/sv/xwaylandvideobridge.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # # Stefan Asserhäll <stefan.asserhall@bredband.net>, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-08-18 11:17+0200\n" "Last-Translator: Stefan Asserhäll <stefan.asserhall@bredband.net>\n" "Language-Team: Swedish <kde-i18n-doc@kde.org>\n" "Language: sv\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.3\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Stefan Asserhäll" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "stefan.asserhall@bredband.net" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Wayland till X inspelningsbrygga" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Xwayland videobrygga" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" "Tillhandahåll XDG-skrivbordsportalens skärmsändningsströmmar till X11-program" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "© 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Upphovsman" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Avsluta" 07070100000041000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/tr07070100000042000081A400000000000000000000000165ADD936000005FA000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/tr/xwaylandvideobridge.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # # Emir SARI <emir_sari@icloud.com>, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-06 13:16+0300\n" "Last-Translator: Emir SARI <emir_sari@icloud.com>\n" "Language-Team: Turkish <kde-l10n-tr@kde.org>\n" "Language: tr\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 22.12.3\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Emir SARI" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "emir_sari@icloud.com" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Wayland'den X'e Kayıt Köprüsü" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Xwayland Video Köprüsü" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "X11 uygulamalarına XDG Masaüstü Portalları ekran yayını akışları sun" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Yazar" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Çık" 07070100000043000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002600000000xwaylandvideobridge-0.4.0+git12/po/uk07070100000044000081A400000000000000000000000165ADD936000006BA000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/po/uk/xwaylandvideobridge.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # # Yuri Chornoivan <yurchor@ukr.net>, 2023. msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-04-06 07:45+0300\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Lokalize 20.12.0\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Юрій Чорноіван" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "yurchor@ukr.net" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Місток запису від Wayland до X" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Відеомісток Xwayland" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "" "Надає змогу порталам стільниці XDG транслювати потоки даних до програм X11" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "© Aleix Pol Gonzalez, 2022" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "Автор" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "Вийти" 07070100000045000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002900000000xwaylandvideobridge-0.4.0+git12/po/zh_CN07070100000046000081A400000000000000000000000165ADD936000005A5000000000000000000000000000000000000004000000000xwaylandvideobridge-0.4.0+git12/po/zh_CN/xwaylandvideobridge.pomsgid "" msgstr "" "Project-Id-Version: kdeorg\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2024-01-21 14:15\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Crowdin-Project: kdeorg\n" "X-Crowdin-Project-ID: 269464\n" "X-Crowdin-Language: zh-CN\n" "X-Crowdin-File: /kf5-trunk/messages/xwaylandvideobridge/xwaylandvideobridge." "pot\n" "X-Crowdin-File-ID: 42107\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Tyson Tan" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "tds00@qq.com" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Wayland 到 X 录像桥接程序" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Xwayland 视频桥接程序" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "将 XDG 桌面门户投屏视频流提供给 X11 应用程序" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "作者" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "退出" 07070100000047000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002900000000xwaylandvideobridge-0.4.0+git12/po/zh_TW07070100000048000081A400000000000000000000000165ADD93600000616000000000000000000000000000000000000004000000000xwaylandvideobridge-0.4.0+git12/po/zh_TW/xwaylandvideobridge.po# Copyright (C) 2023 This file is copyright: # This file is distributed under the same license as the xwaylandvideobridge package. # # SPDX-FileCopyrightText: 2023 Kisaragi Hiu <mail@kisaragi-hiu.com> msgid "" msgstr "" "Project-Id-Version: xwaylandvideobridge\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-11-11 00:44+0000\n" "PO-Revision-Date: 2023-12-24 05:04+0900\n" "Last-Translator: Kisaragi Hiu <mail@kisaragi-hiu.com>\n" "Language-Team: Traditional Chinese <zh-l10n@lists.slat.org>\n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Lokalize 23.08.4\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Kisaragi Hiu" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "mail@kisaragi-hiu.com" #: src/contentswindow.cpp:51 #, kde-format msgid "Wayland to X Recording bridge" msgstr "Wayland 到 X 的錄製橋接" #: src/main.cpp:40 #, kde-format msgid "Xwayland Video Bridge" msgstr "Xwayland 影像橋接" #: src/main.cpp:40 #, kde-format msgid "Offer XDG Desktop Portals screencast streams to X11 apps" msgstr "提供 XDG Desktop Portals 螢幕錄製串流給 X11 應用程式" #: src/main.cpp:41 #, kde-format msgid "(C) 2022 Aleix Pol Gonzalez" msgstr "(C) 2022 Aleix Pol Gonzalez" #: src/main.cpp:43 src/main.cpp:44 #, kde-format msgid "Author" msgstr "作者" #: src/xwaylandvideobridge.cpp:101 #, kde-format msgid "Quit" msgstr "離開" 07070100000049000041ED00000000000000000000000265ADD93600000000000000000000000000000000000000000000002400000000xwaylandvideobridge-0.4.0+git12/src0707010000004A000081A400000000000000000000000165ADD9360000071B000000000000000000000000000000000000003300000000xwaylandvideobridge-0.4.0+git12/src/CMakeLists.txt# SPDX-License-Identifier: BSD-3-Clause # SPDX-FileCopyrightText: 2023 David Edmundson <kde@davidedmundson.co.uk> # SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> add_executable(xwaylandvideobridge) qt_add_dbus_interface( XDP_SRCS org.freedesktop.portal.ScreenCast.xml xdp_dbus_screencast_interface ) ecm_qt_install_logging_categories(EXPORT XWAYLANDVIDEOBRIDGE FILE xwaylandvideobridge.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}) ecm_qt_declare_logging_category(XDP_SRCS HEADER xwaylandvideobridge_debug.h IDENTIFIER XWAYLANDBRIDGE CATEGORY_NAME org.kde.xwaylandvideobridge DESCRIPTION "Xwayland Video Bridge" EXPORT XWAYLANDVIDEOBRIDGE) target_sources(xwaylandvideobridge PRIVATE main.cpp xwaylandvideobridge.cpp contentswindow.cpp x11recordingnotifier.cpp ${XDP_SRCS} ) configure_file(version.h.in version.h) target_link_libraries(xwaylandvideobridge KF${QT_MAJOR_VERSION}::I18n KF${QT_MAJOR_VERSION}::CoreAddons KF${QT_MAJOR_VERSION}::WindowSystem KF${QT_MAJOR_VERSION}::Notifications Qt${QT_MAJOR_VERSION}::Quick Qt${QT_MAJOR_VERSION}::DBus Qt${QT_MAJOR_VERSION}::Widgets K::KPipeWireRecord XCB::XCB XCB::COMPOSITE XCB::RECORD ) if (QT_MAJOR_VERSION STREQUAL "6") target_link_libraries(xwaylandvideobridge Qt6::GuiPrivate KF6::StatusNotifierItem) elseif (QT_MAJOR_VERSION STREQUAL "5") target_link_libraries(xwaylandvideobridge Qt5::X11Extras) endif() install(TARGETS xwaylandvideobridge ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) install(PROGRAMS org.kde.xwaylandvideobridge.desktop DESTINATION ${KDE_INSTALL_APPDIR}) install(FILES org.kde.xwaylandvideobridge.desktop DESTINATION ${KDE_INSTALL_AUTOSTARTDIR}) install(FILES org.kde.xwaylandvideobridge.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) 0707010000004B000081A400000000000000000000000165ADD93600000D94000000000000000000000000000000000000003700000000xwaylandvideobridge-0.4.0+git12/src/contentswindow.cpp/* * Copyright 2023 David Edmundson <davidedmundson@kde.org> * * SPDX-License-Identifier: LicenseRef-KDE-Accepted-GPL * SPDX-FileCopyrightText: 2023 David Edmundson <kde@davidedmundson.co.uk> * SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> */ #include "contentswindow.h" #include <KLocalizedString> #include <KWindowSystem> #include <KX11Extras> #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) #include <private/qtx11extras_p.h> #else #include <QX11Info> #endif struct MotifHints { u_int32_t flags = 0; u_int32_t functions = 0; u_int32_t decorations = 0; int32_t inputMode = 0; u_int32_t status = 0; }; struct GtkFrameExtents { uint32_t left = 0; uint32_t right = 0; uint32_t top = 0; uint32_t bottom = 0; }; static xcb_atom_t intern_atom(xcb_connection_t *c, const char *name) { xcb_atom_t atom = XCB_NONE; QScopedPointer<xcb_intern_atom_reply_t, QScopedPointerPodDeleter> reply(xcb_intern_atom_reply(c, xcb_intern_atom(c, false, strlen(name), name), nullptr)); if (reply) { atom = reply->atom; } return atom; } ContentsWindow::ContentsWindow() { resize(QSize(100, 100)); setTitle(i18n("Wayland to X Recording bridge")); setOpacity(0); setFlag(Qt::WindowDoesNotAcceptFocus); setFlag(Qt::WindowTransparentForInput); #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) KX11Extras::setState(winId(), NET::SkipTaskbar | NET::SkipPager | NET::SkipSwitcher); #else KWindowSystem::setState(winId(), NET::SkipTaskbar | NET::SkipPager | NET::SkipSwitcher); #endif // remove decoration. We can't use the Qt helper as we need our window type to remain something // that keeps us valid for streams MotifHints hints; hints.flags = 2; xcb_atom_t motif_hints_atom = intern_atom(QX11Info::connection(), "_MOTIF_WM_HINTS"); xcb_change_property(QX11Info::connection(), XCB_PROP_MODE_REPLACE, winId(), motif_hints_atom, motif_hints_atom, 32, 5, (const void *)&hints); handleResize(); } void ContentsWindow::resize(const QSize &size) { if (size.isEmpty()) { return; } QQuickWindow::resize(size); handleResize(); } void ContentsWindow::handleResize() { // In theory this isn't needed - we're transparent for input, but a bug in either Xorg or kwin means // that it doesn't. If we forward to X it falls to the X window underneath, but kwin still "knows" theres // an xwayland surface there and sends to X and not the right client // Solvable by either kwin checking event mask or Xserver setting a null input_region based on the event mask // but I want things now! so instead do a hack of moving things offscreen // hopefully drop for a Plasma 6 // if we blindly just set oursevles to offscreen, kwin will try to position us back // if we set override-redirect screencast clients skip us. // frames can be offscreen though, so lets make the whole window part of the frame and then // put that bit of "frame" offscreen // Don't let window manager devs see this GtkFrameExtents frame; frame.top = height() - 1; frame.left = width() -1 ; setX(-width() + 1); // unforutnately we still need 1px on screen to get callbacks xcb_atom_t gtk_frame_extent_atom = intern_atom(QX11Info::connection(), "_GTK_FRAME_EXTENTS"); xcb_change_property(QX11Info::connection(), XCB_PROP_MODE_REPLACE, winId(), gtk_frame_extent_atom, XCB_ATOM_CARDINAL, 32, 4, (const void *)&frame); } 0707010000004C000081A400000000000000000000000165ADD93600000184000000000000000000000000000000000000003500000000xwaylandvideobridge-0.4.0+git12/src/contentswindow.h/* * SPDX-License-Identifier: LicenseRef-KDE-Accepted-GPL * SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> */ #pragma once #include <QQuickWindow> #include <QObject> class ContentsWindow : public QQuickWindow { Q_OBJECT public: ContentsWindow(); //shadow super class void resize(const QSize &size); private: void init(); void handleResize(); }; 0707010000004D000081A400000000000000000000000165ADD936000007F8000000000000000000000000000000000000002D00000000xwaylandvideobridge-0.4.0+git12/src/main.cpp/* * App to render feeds coming from xdg-desktop-portal * * SPDX-License-Identifier: LicenseRef-KDE-Accepted-GPL * SPDX-FileCopyrightText: 2023 David Edmundson <kde@davidedmundson.co.uk> * SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> */ #include "xwaylandvideobridge.h" #include "version.h" #include <QApplication> #include <QCommandLineParser> #include <QSessionManager> #include <QIcon> #include <KLocalizedString> #include <KAboutData> int main(int argc, char **argv) { if (qgetenv("XDG_SESSION_TYPE") == "x11") { return 0; } qputenv("QT_QPA_PLATFORM", "xcb"); qputenv("QT_XCB_GL_INTEGRATION", "xcb_egl"); qputenv("QT_QPA_UPDATE_IDLE_TIME", "0"); qputenv("QSG_RENDER_LOOP", "basic"); QApplication app(argc, argv); // widgets are needed just for the SNI. app.setAttribute(Qt::AA_UseHighDpiPixmaps); auto disableSessionManagement = [](QSessionManager &sm) { sm.setRestartHint(QSessionManager::RestartNever); }; QObject::connect(&app, &QGuiApplication::commitDataRequest, disableSessionManagement); QObject::connect(&app, &QGuiApplication::saveStateRequest, disableSessionManagement); KLocalizedString::setApplicationDomain("xwaylandvideobridge"); { KAboutData about("xwaylandvideobridge", i18n("Xwayland Video Bridge"), version, i18n("Offer XDG Desktop Portals screencast streams to X11 apps"), KAboutLicense::GPL, i18n("(C) 2022 Aleix Pol Gonzalez")); about.addAuthor("Aleix Pol Gonzalez", i18n("Author"), "aleixpol@kde.org" ); about.addAuthor("David Edmundson", i18n("Author"), "davidedmundson@kde.org" ); KAboutData::setApplicationData(about); QGuiApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("xwaylandvideobridge"), app.windowIcon())); QCommandLineParser parser; about.setupCommandLine(&parser); parser.process(app); about.processCommandLine(&parser); new XwaylandVideoBridge(&app); } return app.exec(); } 0707010000004E000081A400000000000000000000000165ADD93600003514000000000000000000000000000000000000004A00000000xwaylandvideobridge-0.4.0+git12/src/org.freedesktop.portal.ScreenCast.xml<?xml version="1.0"?> <!-- # SPDX-License-Identifier: LGPL-2.0-or-later # SPDX-FileCopyrightText: 2017-2018 Red Hat, Inc. --> <node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd"> <!-- org.freedesktop.portal.ScreenCast: @short_description: Screen cast portal The Screen cast portal allows to create screen cast sessions. This documentation describes version 4 of this interface. --> <interface name="org.freedesktop.portal.ScreenCast"> <!-- CreateSession: @options: Vardict with optional further information @handle: Object path for the #org.freedesktop.portal.Request object representing this call Create a screen cast session. A successfully created session can at any time be closed using org.freedesktop.portal.Session.Close(), or may at any time be closed by the portal implementation, which will be signalled via #org.freedesktop.portal.Session::Closed. Supported keys in the @options vardict include: <variablelist> <varlistentry> <term>handle_token s</term> <listitem><para> A string that will be used as the last element of the @handle. Must be a valid object path element. See the #org.freedesktop.portal.Request documentation for more information about the @handle. </para></listitem> </varlistentry> <varlistentry> <term>session_handle_token s</term> <listitem><para> A string that will be used as the last element of the session handle. Must be a valid object path element. See the #org.freedesktop.portal.Session documentation for more information about the session handle. </para></listitem> </varlistentry> </variablelist> The following results get returned via the #org.freedesktop.portal.Request::Response signal: <variablelist> <varlistentry> <term>session_handle o</term> <listitem><para> The session handle. An object path for the #org.freedesktop.portal.Session object representing the created session. </para></listitem> </varlistentry> </variablelist> --> <method name="CreateSession"> <arg type="a{sv}" name="options" direction="in"/> <arg type="o" name="handle" direction="out"/> <annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="QVariantMap"/> </method> <!-- SelectSources: @session_handle: Object path for the #org.freedesktop.portal.Session object @options: Vardict with optional further information @handle: Object path for the #org.freedesktop.portal.Request object representing this call Configure what the screen cast session should record. This method must be called before starting the session. Passing invalid input to this method will cause the session to be closed. An application may only attempt to select sources once per session. Supported keys in the @options vardict include: <variablelist> <varlistentry> <term>handle_token s</term> <listitem><para> A string that will be used as the last element of the @handle. Must be a valid object path element. See the #org.freedesktop.portal.Request documentation for more information about the @handle. </para></listitem> </varlistentry> <varlistentry> <term>types u</term> <listitem><para> Bitmask of what types of content to record. Default is MONITOR. </para></listitem> </varlistentry> <varlistentry> <term>multiple b</term> <listitem><para> Whether to allow selecting multiple sources. Default is no. </para></listitem> </varlistentry> <varlistentry> <term>cursor_mode u</term> <listitem><para> Determines how the cursor will be drawn in the screen cast stream. It must be one of the cursor modes advertised in #org.freedesktop.portal.ScreenCast.AvailableCursorModes. Setting a cursor mode not advertised will cause the screen cast session to be closed. The default cursor mode is 'Hidden'. This option was added in version 2 of this interface. </para></listitem> </varlistentry> <varlistentry> <term>restore_token s</term> <listitem><para> The token to restore a previous session. If the stored session cannot be restored, this value is ignored and the user will be prompted normally. This may happen when, for example, the session contains a monitor or a window that is not available anymore, or when the stored permissions are withdrawn. The restore token is invalidated after using it once. To restore the same session again, use the new restore token sent in response to starting this session. This option was added in version 4 of this interface. </para></listitem> </varlistentry> <varlistentry> <term>persist_mode u</term> <listitem><para> How this session should persist. Default is 0. Accepted values are: <simplelist> <member>0: Do not persist (default)</member> <member>1: Permissions persist as long as the application is running</member> <member>2: Permissions persist until explicitly revoked</member> </simplelist> Remote desktop screen cast sessions cannot persist. The only allowed persist_mode for remote desktop sessions is 0. If the permission for the session to persist is granted, a restore token will be returned via the #org.freedesktop.portal.Request::Response signal of the #org.freedesktop.portal.ScreenCast.Start method. This option was added in version 4 of this interface. </para></listitem> </varlistentry> </variablelist> For available source types, see the AvailableSourceTypes property. --> <method name="SelectSources"> <arg type="o" name="session_handle" direction="in"/> <arg type="a{sv}" name="options" direction="in"/> <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/> <arg type="o" name="handle" direction="out"/> </method> <!-- Start: @session_handle: Object path for the #org.freedesktop.portal.Session object @parent_window: Identifier for the application window, see <link linkend="parent_window">Common Conventions</link> @options: Vardict with optional further information @handle: Object path for the #org.freedesktop.portal.Request object representing this call Start the screen cast session. This will typically result the portal presenting a dialog letting the user do the selection set up by org.freedesktop.portal.ScreenCast.SelectSources(). An application can only attempt start a session once. A screen cast session may only be started after having selected sources using org.freedesktop.portal.ScreenCast.SelectSources(). Supported keys in the @options vardict include: <variablelist> <varlistentry> <term>handle_token s</term> <listitem><para> A string that will be used as the last element of the @handle. Must be a valid object path element. See the #org.freedesktop.portal.Request documentation for more information about the @handle. </para></listitem> </varlistentry> </variablelist> The following results get returned via the #org.freedesktop.portal.Request::Response signal: <variablelist> <varlistentry> <term>streams a(ua{sv})</term> <listitem><para> An array of PipeWire streams. Each stream consists of a PipeWire node ID (the first element in the tuple, and a Vardict of properties. The array will contain a single stream if 'multiple' (see org.freedesktop.portal.ScreenCast.SelectSources()) was set to 'false', or at least one stream if 'multiple' was set to 'true' as part of the org.freedesktop.portal.ScreenCast.SelectSources() method. </para></listitem> </varlistentry> <varlistentry> <term>restore_token s</term> <listitem><para> The restore token. This token is a single use token that can later be used to restore a session. See org.freedesktop.portal.ScreenCast.SelectSources() for details. This response option was added in version 4 of this interface. </para></listitem> </varlistentry> </variablelist> Stream properties include: <variablelist> <varlistentry> <term>id s</term> <listitem><para> Opaque identifier. Will be unique for this stream and local to this session. Will persist with future sessions, if they are restored using a restore token. This property was added in version 4 of this interface. Optional. </para></listitem> </varlistentry> <varlistentry> <term>position (ii)</term> <listitem><para> A tuple consisting of the position (x, y) in the compositor coordinate space. Note that the position may not be equivalent to a position in a pixel coordinate space. Only available for monitor streams. Optional. </para></listitem> </varlistentry> <varlistentry> <term>size (ii)</term> <listitem><para> A tuple consisting of (width, height). The size represents the size of the stream as it is displayed in the compositor coordinate space. Note that this size may not be equivalent to a size in a pixel coordinate space. The size may differ from the size of the stream. Optional. </para></listitem> </varlistentry> <varlistentry> <term>source_type u</term> <listitem><para> The type of the content which is being screen casted. For available source types, see the AvailableSourceTypes property. This property was added in version 3 of this interface. </para></listitem> </varlistentry> </variablelist> --> <method name="Start"> <arg type="o" name="session_handle" direction="in"/> <arg type="s" name="parent_window" direction="in"/> <arg type="a{sv}" name="options" direction="in"/> <annotation name="org.qtproject.QtDBus.QtTypeName.In2" value="QVariantMap"/> <arg type="o" name="handle" direction="out"/> </method> <!-- OpenPipeWireRemote: @session_handle: Object path for the #org.freedesktop.portal.Session object @options: Vardict with optional further information @fd: File descriptor of an open PipeWire remote. Open a file descriptor to the PipeWire remote where the screen cast streams are available. The file descriptor should be used to create a <classname>pw_core</classname> object, by using <function>pw_context_connect_fd</function>. Only the screen cast stream nodes will be available from this PipeWire node. --> <method name="OpenPipeWireRemote"> <annotation name="org.gtk.GDBus.C.Name" value="open_pipewire_remote"/> <annotation name="org.gtk.GDBus.C.UnixFD" value="true"/> <arg type="o" name="session_handle" direction="in"/> <arg type="a{sv}" name="options" direction="in"/> <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/> <arg type="h" name="fd" direction="out"/> </method> <!-- AvailableSourceTypes: A bitmask of available source types. Currently defined types are: <simplelist> <member>1: MONITOR</member> <member>2: WINDOW</member> <member>4: VIRTUAL</member> </simplelist> --> <property name="AvailableSourceTypes" type="u" access="read"/> <!-- AvailableCursorModes: A bitmask of available cursor modes. Available cursor mode values: <simplelist> <member>1: Hidden. The cursor is not part of the screen cast stream.</member> <member>2: Embedded: The cursor is embedded as part of the stream buffers.</member> <member>4: Metadata: The cursor is not part of the screen cast stream, but sent as PipeWire stream metadata.</member> </simplelist> This property was added in version 2 of this interface. --> <property name="AvailableCursorModes" type="u" access="read"/> <property name="version" type="u" access="read"/> </interface> </node> 0707010000004F000081A400000000000000000000000165ADD93600003EE4000000000000000000000000000000000000004C00000000xwaylandvideobridge-0.4.0+git12/src/org.kde.xwaylandvideobridge.appdata.xml<?xml version="1.0" encoding="utf-8"?> <!-- SPDX-License-Identifier: LicenseRef-KDE-Accepted-GPL SPDX-FileCopyrightText: 2023 David Edmundson <kde@davidedmundson.co.uk> SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> --> <component type="desktop-application"> <id>org.kde.xwaylandvideobridge.desktop</id> <metadata_license>CC0-1.0</metadata_license> <project_license>LicenseRef-KDE-Accepted-GPL</project_license> <name>Xwayland Video Bridge</name> <name xml:lang="ar">جسر فيديو ويلاند_اكس</name> <name xml:lang="ca">Pont de vídeo de l'Xwayland</name> <name xml:lang="ca-valencia">Pont de vídeo d'XWayland</name> <name xml:lang="cs">Propojení videa Xwayland</name> <name xml:lang="de">Xwayland-Video-Brücke</name> <name xml:lang="en-GB">Xwayland Video Bridge</name> <name xml:lang="eo">Xwayland Video-Ponto</name> <name xml:lang="es">Pasarela de vídeo Xwayland</name> <name xml:lang="eu">Xwayland bideo zubia</name> <name xml:lang="fi">Xwayland-videosilta</name> <name xml:lang="fr">Pont vidéo XWayland</name> <name xml:lang="gl">Ponte de vídeo de XWayland</name> <name xml:lang="it">Bridge video Xwayland</name> <name xml:lang="ka">Xwayland-ის ვიდეოხიდი</name> <name xml:lang="ko">Xwayland 비디오 브리지</name> <name xml:lang="nl">Xwayland video-bridge</name> <name xml:lang="nn">Xwayland-videobru</name> <name xml:lang="pl">Mostek obrazu Xwayland</name> <name xml:lang="pt">Interface de Vídeo para o Xwayland</name> <name xml:lang="pt-BR">Ponte de vídeo Xwayland</name> <name xml:lang="sk">Xwayland video most</name> <name xml:lang="sl">Xwayland Video Bridge</name> <name xml:lang="sv">Xwayland videobrygga</name> <name xml:lang="tr">Xwayland Video Köprüsü</name> <name xml:lang="uk">Відеомісток Xwayland</name> <name xml:lang="x-test">xxXwayland Video Bridgexx</name> <name xml:lang="zh-CN">Xwayland 视频桥接程序</name> <name xml:lang="zh-TW">Xwayland 影像橋接</name> <summary>Offer XDG Desktop Portals screencast streams to X11 apps</summary> <summary xml:lang="ar">يوفر دفق بث بوابة XDG لسطح المكتب لتطبيقات اكس11</summary> <summary xml:lang="ca">Ofereix fluxos de vídeo de captura de pantalla dels «XDG Desktop Portals» a les aplicacions X11</summary> <summary xml:lang="ca-valencia">Oferix fluxos de vídeo de captura de pantalla dels «XDG Desktop Portals» a les aplicacions X11</summary> <summary xml:lang="en-GB">Offer XDG Desktop Portals screencast streams to X11 apps</summary> <summary xml:lang="eo">Oferti "XDG Desktop Portals" ekranregistraĵajn fluojn al X11-aplikoj</summary> <summary xml:lang="es">Ofrecer emisiones de vídeo de los portales de escritorio XDG a las aplicaciones de X11</summary> <summary xml:lang="eu">Eskaini XDG mahaigain atarien pantaila-grabazio korronteak X11 aplikazioei</summary> <summary xml:lang="fi">Tarjoa XDG-työpöytäportaalin näytöntoistovirtoja X11-sovelluksiin</summary> <summary xml:lang="fr">Proposer des flux de diffusion d'écrans pour des portails e bureaux « XDG » vers les applications sous X11</summary> <summary xml:lang="gl">Ofrecer aos portais de escritorio de XDG fluxos de emisión de pantalla de aplicacións de X11.</summary> <summary xml:lang="it">Offri i flussi di trasmissione dello schermo dei portali desktop XDG alle applicazioni X11</summary> <summary xml:lang="ka">X11-ის აპებისთვის XDG Desktop Portals-ის screencast ნაკადების შეთავაზება</summary> <summary xml:lang="ko">XDG 데스크톱 포털에 X11 앱으로 스크린캐스트 제공</summary> <summary xml:lang="nl">XDG schermfilmstreams van bureaubladportalen bieden aan X11 toepassingen</summary> <summary xml:lang="nn">Tilbyr XDG Desktop Portals-skjermkastingsstraumar til X11-program</summary> <summary xml:lang="pl">Daj strumienie Portali Pulpitu XDG aplikacjom X11</summary> <summary xml:lang="pt">Disponibiliza transmissões do XDG Desktop Portals para as aplicações de X11</summary> <summary xml:lang="pt-BR">Oferece fluxos de screencast do XDG Desktop Portals para aplicativos X11</summary> <summary xml:lang="sl">Nudi portalom namizja XDG zaslonske tokove aplikacijam X11</summary> <summary xml:lang="sv">Tillhandahåll XDG-skrivbordsportalens skärmsändningsströmmar till X11-program</summary> <summary xml:lang="tr">X11 uygulamalarına XDG Masaüstü Portalları ekran yayını akışları sun</summary> <summary xml:lang="uk">Надає змогу порталам стільниці XDG транслювати потоки даних до програм X11</summary> <summary xml:lang="x-test">xxOffer XDG Desktop Portals screencast streams to X11 appsxx</summary> <summary xml:lang="zh-CN">将 XDG 桌面门户投屏视频流提供给 X11 应用程序</summary> <summary xml:lang="zh-TW">提供 XDG Desktop Portals 螢幕錄製串流給 X11 應用程式</summary> <description> <p>Many X11 apps will be using X11 mechanisms to share the contents of other applications and displays. In recent years we have created XDG Desktop Portals as the mechanism to provide this functionality and it's what we expect apps to be using. This application will provide the streams available to the XDG Desktop Portals to your legacy X11 apps that have not adopted the new system.</p> <p xml:lang="ca">Moltes aplicacions X11 estaran utilitzant els mecanismes X11 per a compartir el contingut d'altres aplicacions i pantalles. En els darrers anys hem creat els «XDG Desktop Portals» com un mecanisme de proporcionar aquesta funcionalitat i és el que esperem que les aplicacions facin servir. Aquesta aplicació proporcionarà els fluxos disponibles per als «XDG Desktop Portals» a les vostres aplicacions X11 antigues que encara no hagin adoptat el sistema nou.</p> <p xml:lang="ca-valencia">Moltes aplicacions X11 estaran utilitzant els mecanismes X11 per a compartir el contingut d'altres aplicacions i pantalles. En els darrers anys hem creat els «XDG Desktop Portals» com un mecanisme de proporcionar esta característica i és el que esperem que les aplicacions facen servir. Esta aplicació proporcionarà els fluxos disponibles per als «XDG Desktop Portals» a les vostres aplicacions X11 antigues que encara no hagen adoptat el sistema nou.</p> <p xml:lang="eo">Multaj X11-aplikoj uzos X11-mekanismojn por kunhavigi la enhavon de aliaj aplikaĵoj kaj ekranoj. En la lastaj jaroj ni kreis XDG Desktop Portals kiel la mekanismon por provizi ĉi tiun funkcion kaj estas tio, kion ni atendas, ke aplikaĵoj uzu. Ĉi tiu aplikaĵo provizos la fluojn disponeblajn al la XDG-Labortablaj Portaloj al viaj heredaĵaj X11-aplikoj, kiuj ne adoptis la novan sistemon.</p> <p xml:lang="es">Muchas aplicaciones de X11 usarán mecanismos de X11 para compartir el contenido de otras aplicaciones y pantallas. En los últimos años, hemos creado los portales de escritorio XDG como el mecanismo para proporcionar esta funcionalidad y es lo que esperamos que usen las aplicaciones. Esta aplicación proporcionará las transmisiones disponibles para los portales de escritorio XDG a las aplicaciones X11 heredadas que no han adoptado el nuevo sistema.</p> <p xml:lang="eu">X11 aplikazio askok X11 mekanismoak erabiliko dituzte beste aplikazio eta bistaratzaile batzuen edukia partekatzeko. Azken urteetan XDG mahaigaineko atariak sortu ditugu funtzionalitate hori emateko mekanismo gisa, eta espero dugu aplikazioek haiek erabiltzea. Aplikazio horrek XDG mahaigaineko atarietarako eskuragarri dauden korronteak emango dizkie sistema berria hartu ez duten X11 ondare aplikazioei.</p> <p xml:lang="fi">Monet X11-sovellukset käyttävät X11-mekanismeja sisältönsä jakamiseksi toisiin sovelluksiin ja toisille näytöille. Toiminnallisuutta tarjoamiseksi on viime vuosina luotu XDG-työpöytäportaalit, joita sovellusten odotetaan käytettävän. Tämä sovellus tarjoaa XDG-työpöytäportaalissa saatavilla oleva virrat vanhoille X11-sovelluksille, jotka eivät ole ottaneet käyttöön uutta järjestelmää.</p> <p xml:lang="fr">De nombreuses applications fonctionnant sous X11 utiliseront les mécanismes sous X11 pour partager le contenu d'autres applications et affichages. Ces dernières années, les portails de bureaux « XDG » ont été créés comme le mécanisme pour fournir cette fonctionnalité. Ce mécanisme devrait être utilisé dans l'avenir par les applications. Il fournira les flux disponibles pour les portails de bureau « XDG » à vos anciennes applications sous X11 n'ayant pas adopter ce nouveau mécanisme.</p> <p xml:lang="gl">Moitas aplicacións de X11 usarán mecanismos de X11 para compartir o contido doutras aplicacións e pantallas. Nos últimos anos creamos os portais de escritorio de XDG como mecanismo para fornecer esta funcionalidade e é o que esperamos que usen as aplicacións. Esta aplicación fornecerá os fluxos dispoñíbeis para os portais de escritorio de XDG ás aplicacións antigas de X11 que non adoptaron o novo sistema.</p> <p xml:lang="it">Molte applicazioni X11 utilizzeranno meccanismi di X11 per condividere i contenuti di altre applicazioni e schermi. Negli ultimi anni abbiamo creato portali desktop XDG come meccanismo per fornire questa funzionalità ed è ciò che ci aspettiamo che le applicazioni utilizzino. Questa applicazione fornirà i flussi disponibili per i portali desktop XDG alle tue applicazioni X11 obsolete che non hanno adottato il nuovo sistema.</p> <p xml:lang="ka">X11-ის ბევრი აპი იყენებს X11-ის მექანიზმს სხვადასხვა მონაცემების სხვა პროგრამებისთვის გასაზიარებლად. ბოლო წლებში ჩვენ შევქმენით XDG Desktop Portals, როგორც მექანიზმი, რათა ეს ფუნქციონალი მოგვეწოდებინა და მოველით, რომ აპები მას გამოიყენებენ. ეს აპლიკაცია XDG Desktop Portals-სთვის ხელმისაწვდომ ნაკადებს თქვენს მოძველებულ X11-ის აპებს, რომლებსაც ახალი სისტემის მხარდაჭერა ჯერ გააჩნიათ, გაუზიარებს.</p> <p xml:lang="ko">여러 X11 앱에서는 다른 앱과 디스플레이의 내용을 공유할 때 X11 메커니즘을 사용합니다. 최근에는 XDG 데스크톱 포털에 화면 공유 기능이 추가되었고, 장기적으로 이 기능을 사용할 것을 예상하고 있습니다. 이 앱에서는 XDG 데스크톱 포털에서 제공하는 스트림을 포털을 사용하지 않는 레거시 X11 앱으로 전달합니다.</p> <p xml:lang="nl">Veel X11 toepassingen zullen X11-mechanismen gebruiken om de inhoud van andere toepassen en schermen te delen. In recente jaren hebben we XDG bureaubladportalen als het mechanisme gebruikt om deze functionaliteit te leveren en het is wat we verwachten dat toepassingen gebruiken. Deze toepassing zal de streams beschikbaar aan de XDG bureaubladportalen leveren aan uw oudere X11-toepassingen die niet aan het nieuwe systeem zijn aangepast.</p> <p xml:lang="pl">Wiele aplikacji X11 będzie używać mechanizmów X11 do współdzielenia treści z innymi aplikacjami i wyświetlaczami. W ostatnich latach stworzyliśmy Portale Pulpitów XDG jako mechanizm do zapewnienia tej możliwości i oczekujemy, że właśnie tego będą używać aplikacji. Ta aplikacja dostarczy strumienie dostępne Portalom Pulpitów XDG twoim przestarzałym aplikacjom X11, które nie przeszły na nowy system.</p> <p xml:lang="pt-BR">Muitos aplicativos X11 usarão mecanismos X11 para compartilhar o conteúdo de outros aplicativos e telas. Nos últimos anos, criamos o XDG Desktop Portals como o mecanismo para fornecer essa funcionalidade e é o que esperamos que os aplicativos usem. Este aplicativo fornecerá os fluxos disponíveis do XDG Desktop Portals para seus aplicativos X11 antigos que não adotaram o novo sistema.</p> <p xml:lang="sl">Številne aplikacije X11 bodo uporabljale mehanizme X11 za skupno rabo vsebin drugih aplikacij in prikazov. V zadnjih letih smo ustvarili portale namizja XDG Portali kot mehanizem za zagotavljanje te funkcionalnosti in pričakujemo, da ga bodo aplikacije tudi uporabljale. Ta aplikacija bo zagotovila tokove na voljo na portalih namizja XDG za vaše podedovane aplikacije X11, ki se še niso prilagodile na novi sistem.</p> <p xml:lang="sv">Många X11-program använder X11-mekanismer för att dela innehåll från andra program och skärmar. Under de senaste åren har vi skapat XDG-skrivbordsportaler som mekanismen för att tillhandahålla den funktionaliteten och det är vad vi förväntar oss att program ska använda. Det här programmet tillhandahåller de strömmar som är tillgängliga för XDG-skrivbordsportaler till äldre X11-program som inte har antagit det nya systemet.</p> <p xml:lang="tr">Birçok X11 uygulaması, diğer uygulamaların ve ekranların içeriklerini paylaşmak için X11 mekanizmalarını kullanır. Son yıllarda, bu işlevselliği sağlamak için mekanizma olarak XDG Masaüstü Portalları'nı oluşturduk ve uygulamaların bunu kullanmasını bekliyoruz. Bu uygulama, XDG Masaüstü Portalları'nda var olan akışları, yeni sistemi benimsememiş eski X11 uygulamalarınıza sağlayacaktır.</p> <p xml:lang="uk">Багато програм X11 використовують механізми X11 для оприлюднення даних інших програм та дисплеїв. Протягом останніх років ми створили портали стільниць XDG як механізм надання цих функціональних можливостей, і саме ними мають користуватися програми. Ця програма надає доступ до потоків даних порталів XDG ваших застарілим програмам X11, які не адаптовано до нової системи.</p> <p xml:lang="x-test">xxMany X11 apps will be using X11 mechanisms to share the contents of other applications and displays. In recent years we have created XDG Desktop Portals as the mechanism to provide this functionality and it's what we expect apps to be using. This application will provide the streams available to the XDG Desktop Portals to your legacy X11 apps that have not adopted the new system.xx</p> <p xml:lang="zh-CN">许多 X11 应用程序会使用 X11 的机制来分享其他应用程序和显示器中的内容。为了取代上述机制并提供相同的功能,我们开发了 XDG 桌面门户程序,并默认应用程序会使用它。此应用程序用于将 XDG 桌面门户程序中的可用视频流提供给尚未适配新系统的旧式 X11 应用程序。</p> <p xml:lang="zh-TW">許多 X11 應用程式會使用 X11 的機制來分享其他應用程式和螢幕的內容。近年來我們建立了 XDG Desktop Portals 作為提供這個功能的機制,而這也是我們預期應用程式會使用的。這個應用程式提供 XDG 桌面入口可用的串流給您尚未改用新系統的舊式 X11 應用程式。</p> </description> <url type="homepage">https://invent.kde.org/system/xwaylandvideobridge</url> <url type="bugtracker">https://bugs.kde.org/enter_bug.cgi?product=XWaylandVideoBridge</url> <url type="donation">https://www.kde.org/community/donations</url> <provides> <binary>xwaylandvideobridge</binary> </provides> <project_group>KDE</project_group> <releases> <release version="0.3.0" date="2023-11-03"/> </releases> </component> 07070100000050000081A400000000000000000000000165ADD93600000C82000000000000000000000000000000000000004800000000xwaylandvideobridge-0.4.0+git12/src/org.kde.xwaylandvideobridge.desktop[Desktop Entry] StartupNotify=false X-KDE-autostart-phase=2 X-GNOME-Autostart-enabled=true NoDisplay=true Type=Application Name=Xwayland Video Bridge Name[ca]=Pont de vídeo de l'Xwayland Name[ca@valencia]=Pont de vídeo d'XWayland Name[cs]=Propojení videa Xwayland Name[de]=Xwayland-Video-Brücke Name[en_GB]=Xwayland Video Bridge Name[eo]=Xwayland Video-Ponto Name[es]=Pasarela de vídeo Xwayland Name[eu]=Xwayland bideo zubia Name[fi]=Xwayland-videosilta Name[fr]=Pont vidéo XWayland Name[gl]=Ponte de vídeo de XWayland Name[it]=Bridge video Xwayland Name[ka]=Xwayland-ის ვიდეოხიდი Name[ko]=Xwayland 비디오 브리지 Name[nl]=Xwayland video-bridge Name[nn]=Xwayland-videobru Name[pl]=Mostek obrazu Xwayland Name[pt]=Interface de Vídeo para o Xwayland Name[pt_BR]=Ponte de vídeo Xwayland Name[sk]=Xwayland video most Name[sl]=Xwayland Video Bridge Name[sv]=Xwayland videobrygga Name[tr]=Xwayland Video Köprüsü Name[uk]=Відеомісток Xwayland Name[x-test]=xxXwayland Video Bridgexx Name[zh_CN]=Xwayland 视频桥接程序 Name[zh_TW]=Xwayland 影像橋接 GenericName=Share screens and windows to XWayland applications GenericName[ca]=Comparteix pantalles i finestres amb les aplicacions XWayland GenericName[ca@valencia]=Compartix pantalles i finestres amb les aplicacions XWayland GenericName[de]=Bildschirme und Fenster mit XWayland-Anwendungen teilen GenericName[en_GB]=Share screens and windows to XWayland applications GenericName[eo]=Kunhavigi ekranojn kaj fenestrojn al XWayland-aplikaĵoj GenericName[es]=Compartir pantallas y ventanas con las aplicaciones XWayland GenericName[eu]=XWayland aplikazioekin pantailak eta leihoak partekatzea GenericName[fi]=Jaa näyttöjä ja ikkunoita Xwayland-sovelluksiin GenericName[fr]=Partager des écrans et des fenêtres entre applications sous XWayland GenericName[gl]=Compartir pantallas e xanelas con aplicacións de XWayland GenericName[it]=Condividi schermate e finestre con le applicazioni XWayland GenericName[ka]=გაუზიარეთ ეკრანები და ფანჯრები XWayland-ის აპლიკაციებს GenericName[ko]=XWayland 앱으로 화면과 창 공유 GenericName[nl]=Schermen en vensters delen met XWayland toepassingen GenericName[nn]=Del skjermar og vindauge med XWayland-program GenericName[pl]=Udostępniaj ekrany i okna aplikacjom XWayland GenericName[pt]=Partilhar ecrãs e janelas com as aplicações do XWayland GenericName[pt_BR]=Compartilhe telas e janelas com aplicativos XWayland GenericName[sl]=Deljenje zaslonov in oken z aplikacijami XWayland GenericName[sv]=Dela skärmar och fönster med XWayland-program GenericName[tr]=Ekranları ve pencereleri XWayland uygulamalarına paylaş GenericName[uk]=Спільне користування екранами та вікнами для програм XWayland GenericName[x-test]=xxShare screens and windows to XWayland applicationsxx GenericName[zh_CN]=分享屏幕和窗口给 XWayland 应用程序 GenericName[zh_TW]=分享螢幕和視窗給 XWayland 應用程式 Icon=xwaylandvideobridge Exec=xwaylandvideobridge StartupNotify=false Categories=Qt;KDE;Utility;X-KDE-Utilities-Desktop; 07070100000051000081A400000000000000000000000165ADD936000000A8000000000000000000000000000000000000005000000000xwaylandvideobridge-0.4.0+git12/src/org.kde.xwaylandvideobridge.desktop.licenseSPDX-License-Identifier: BSD-3-Clause SPDX-FileCopyrightText: 2023 David Edmundson <kde@davidedmundson.co.uk> SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> 07070100000052000081A400000000000000000000000165ADD93600000104000000000000000000000000000000000000003100000000xwaylandvideobridge-0.4.0+git12/src/version.h.in/* * SPDX-FileCopyrightText: 2023 Jonathan Riddell <jr@jriddell.org> * * SPDX-License-Identifier: LicenseRef-KDE-Accepted-GPL */ #ifndef VERSION_H #define VERSION_H #include <QLatin1String> static QLatin1String version("@PROJECT_VERSION@"); #endif 07070100000053000081A400000000000000000000000165ADD936000014F4000000000000000000000000000000000000003D00000000xwaylandvideobridge-0.4.0+git12/src/x11recordingnotifier.cpp/* * Copyright 2023 David Edmundson <davidedmundson@kde.org> * * SPDX-License-Identifier: LicenseRef-KDE-Accepted-GPL * SPDX-FileCopyrightText: 2023 David Edmundson <kde@davidedmundson.co.uk> * SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> */ #include "x11recordingnotifier.h" #include <cstdio> #include <cstdlib> #include <xcb/xcb.h> #include <xcb/xproto.h> #include <xcb/composite.h> #include <xcb/xcb_event.h> #include <xcb/xcbext.h> #include <xcb/record.h> #include <cstring> #include <QScopedPointer> #include <QDebug> #include <QSocketNotifier> #include <QScopeGuard> struct XCBResponse { ~XCBResponse(); xcb_record_enable_context_reply_t *reply = nullptr; xcb_generic_error_t *error = nullptr; }; XCBResponse::~XCBResponse() { std::free(this->reply); std::free(this->error); this->reply = nullptr; this->error = nullptr; } X11RecordingNotifier::X11RecordingNotifier(WId window, QObject *parent) : QObject(parent) , m_windowId(window) { // we use a separate connection as the X11 recording API blocks is super weird // and we get multiple replies to a request rather than events m_connection = xcb_connect(nullptr, nullptr); auto c = m_connection; xcb_generic_error_t *error; if (!c) { qWarning("Error to open local display. Auto activation will fail!\n"); return; } int compositeExtensionOpCode = -1; { xcb_query_extension_cookie_t cookie = xcb_query_extension(c, strlen("Composite"), "Composite"); QScopedPointer<xcb_query_extension_reply_t, QScopedPointerPodDeleter> reply(xcb_query_extension_reply(c, cookie, nullptr)); compositeExtensionOpCode = reply->major_opcode; } // check the xcb_record extension exists { auto cookie = xcb_record_query_version(c, 0, 0); QScopedPointer<xcb_record_query_version_reply_t, QScopedPointerPodDeleter> reply(xcb_record_query_version_reply(c, cookie, &error)); if (!reply) { qWarning() << ("Failed to create recording context"); } else { } } xcb_record_range_t range = {}; range.ext_requests.major.first = compositeExtensionOpCode; range.ext_requests.major.last = compositeExtensionOpCode; range.ext_requests.minor.first = XCB_COMPOSITE_REDIRECT_WINDOW; range.ext_requests.minor.last = XCB_COMPOSITE_UNREDIRECT_SUBWINDOWS; range.client_died = true; xcb_record_client_spec_t spec = XCB_RECORD_CS_ALL_CLIENTS; m_recordingContext = xcb_generate_id(c); auto cookie = xcb_record_create_context_checked(c, m_recordingContext, 0, 1, 1, &spec, &range); auto err = xcb_request_check(c, cookie); if (err) { qWarning() << ("Failed to create recording context"); } auto enableCookie = xcb_record_enable_context(c, m_recordingContext).sequence; xcb_flush(c); auto notifier = new QSocketNotifier(xcb_get_file_descriptor(c), QSocketNotifier::Read, this); connect(notifier, &QSocketNotifier::activated, this, [this, enableCookie] { xcb_generic_event_t *event = nullptr; auto c = m_connection; while ((event = xcb_poll_for_event(m_connection))) { std::free(event); } XCBResponse record; while (enableCookie && xcb_poll_for_reply(c, enableCookie, (void **)&record.reply, &record.error)) { // xcb_poll_for_reply may set both reply and error to null if connection has error. // break if xcb_connection has error, no point to continue anyway. if (xcb_connection_has_error(c)) { break; } if (record.error) { break; } if (!record.reply) { continue; } handleNewRecord(*record.reply); record = XCBResponse(); } }); } X11RecordingNotifier::~X11RecordingNotifier() { if (m_recordingContext) { xcb_record_free_context(m_connection, m_recordingContext); } if (m_connection) { xcb_disconnect(m_connection); } } bool X11RecordingNotifier::isRedirected() const { return !m_redirectionCount.isEmpty(); } void X11RecordingNotifier::handleNewRecord(xcb_record_enable_context_reply_t &reply) { const bool wasRedirected = isRedirected(); auto cleanup = qScopeGuard([wasRedirected, this] { if (isRedirected() != wasRedirected) { Q_EMIT isRedirectedChanged(); } }); if (reply.category == 3) { m_redirectionCount.remove(reply.xid_base); return; } if (reply.category != 1) { return; } xcb_composite_redirect_window_request_t *request = reinterpret_cast<xcb_composite_redirect_window_request_t *>(xcb_record_enable_context_data(&reply)); if (!request) { return; } if (request->window != m_windowId) { return; } uint32_t caller = reply.xid_base; switch(request->minor_opcode) { case XCB_COMPOSITE_REDIRECT_WINDOW: case XCB_COMPOSITE_REDIRECT_SUBWINDOWS: m_redirectionCount[caller]++; break; case XCB_COMPOSITE_UNREDIRECT_WINDOW: case XCB_COMPOSITE_UNREDIRECT_SUBWINDOWS: if (m_redirectionCount[caller]-- == 0) { m_redirectionCount.remove(caller); } break; default: break; } } 07070100000054000081A400000000000000000000000165ADD93600000323000000000000000000000000000000000000003B00000000xwaylandvideobridge-0.4.0+git12/src/x11recordingnotifier.h/* * SPDX-License-Identifier: LicenseRef-KDE-Accepted-GPL * SPDX-FileCopyrightText: 2023 David Edmundson <kde@davidedmundson.co.uk> * SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> */ #pragma once #include <QHash> #include <QObject> #include <QWindow> #include <xcb/record.h> class X11RecordingNotifier : public QObject { Q_OBJECT public: X11RecordingNotifier(WId window, QObject *parent); ~X11RecordingNotifier(); bool isRedirected() const; Q_SIGNALS: void isRedirectedChanged(); private: void handleNewRecord(xcb_record_enable_context_reply_t &reply); xcb_connection_t *m_connection = nullptr; xcb_record_context_t m_recordingContext = 0; WId m_windowId = 0; // my xterm QHash<uint32_t /**called XID*/, int /*count*/> m_redirectionCount; }; 07070100000055000081A400000000000000000000000165ADD936000025EF000000000000000000000000000000000000003C00000000xwaylandvideobridge-0.4.0+git12/src/xwaylandvideobridge.cpp/* * App to render feeds coming from xdg-desktop-portal * * SPDX-License-Identifier: LicenseRef-KDE-Accepted-GPL * SPDX-FileCopyrightText: 2023 David Edmundson <kde@davidedmundson.co.uk> * SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> */ #include "xwaylandvideobridge.h" #include <QGuiApplication> #include <QLoggingCategory> #include <QTimer> #include <QQuickWindow> #include <QAction> #include <KLocalizedString> #include <KFileUtils> #include <KStatusNotifierItem> #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) #include <PipeWireSourceItem> #else #include <KPipeWire/pipewiresourceitem.h> #endif #include "xdp_dbus_screencast_interface.h" #include "contentswindow.h" #include "x11recordingnotifier.h" #include "xwaylandvideobridge_debug.h" Q_DECLARE_METATYPE(Stream) QDebug operator<<(QDebug debug, const Stream& stream) { QDebugStateSaver saver(debug); debug.nospace() << "Stream(id: " << stream.nodeId << ", opts: " << stream.opts << ')'; return debug; } const QDBusArgument &operator<<(const QDBusArgument &argument, const Stream &/*stream*/) { argument.beginStructure(); // argument << stream.id << stream.opts; argument.endStructure(); return argument; } const QDBusArgument &operator>>(const QDBusArgument &argument, Stream &stream) { argument.beginStructure(); argument >> stream.nodeId >> stream.opts; argument.endStructure(); return argument; } const QDBusArgument &operator>>(const QDBusArgument &argument, QVector<Stream> &stream) { argument.beginArray(); while ( !argument.atEnd() ) { Stream element; argument >> element; stream.append( element ); } argument.endArray(); return argument; } XwaylandVideoBridge::XwaylandVideoBridge(QObject* parent) : QObject(parent) , iface(new OrgFreedesktopPortalScreenCastInterface( QLatin1String("org.freedesktop.portal.Desktop"), QLatin1String("/org/freedesktop/portal/desktop"), QDBusConnection::sessionBus(), this)) , m_handleToken(QStringLiteral("xwaylandvideobridge%1").arg(QRandomGenerator::global()->generate())) , m_quitTimer(new QTimer(this)) , m_window(new ContentsWindow) , m_sni(new KStatusNotifierItem("pipewireToXProxy", this)) { m_quitTimer->setInterval(5000); m_quitTimer->setSingleShot(true); connect(m_quitTimer, &QTimer::timeout, this, &XwaylandVideoBridge::closeSession); auto notifier = new X11RecordingNotifier(m_window->winId(), this); connect(notifier, &X11RecordingNotifier::isRedirectedChanged, this, [this, notifier]() { if (notifier->isRedirected()) { m_quitTimer->stop(); // this is a bit racey, there's a point where we wait for a reply from the portal if (m_path.path().isEmpty()) { init(); } } else { m_quitTimer->start(); } }); m_sni->setTitle("Wayland to X11 Video bridge"); m_sni->setIconByName("video-display"); auto quitAction = new QAction(i18n("Quit"), this); connect(quitAction, &QAction::triggered, qApp, &QGuiApplication::quit); m_sni->addAction("quitAction", quitAction); m_sni->setStatus(KStatusNotifierItem::Passive); m_window->show(); } XwaylandVideoBridge::~XwaylandVideoBridge() = default; void XwaylandVideoBridge::startStream(const QDBusObjectPath& path) { m_path = path; CursorModes availableCursorModes = static_cast<CursorModes>(iface->availableCursorModes()); CursorMode cursorMode = CursorMode::Hidden; if (availableCursorModes.testFlag(CursorMode::Metadata)) { cursorMode = CursorMode::Metadata; } else if (availableCursorModes.testFlag(CursorMode::Embedded)) { cursorMode = CursorMode::Embedded; } else { qCWarning(XWAYLANDBRIDGE) << "Portal does not support any cursor modes. Cursors will be hidden"; } const QVariantMap sourcesParameters = { { QLatin1String("handle_token"), m_handleToken }, { QLatin1String("types"), iface->availableSourceTypes() }, { QLatin1String("multiple"), false }, //for now? { QLatin1String("cursor_mode"), static_cast<uint>(cursorMode) } }; auto reply = iface->SelectSources(m_path, sourcesParameters); reply.waitForFinished(); if (reply.isError()) { qCWarning(XWAYLANDBRIDGE) << "Could not select sources" << reply.error(); exit(1); return; } qCDebug(XWAYLANDBRIDGE) << "select sources done" << reply.value().path(); } void XwaylandVideoBridge::response(uint code, const QVariantMap& results) { if (code == 1) { qCDebug(XWAYLANDBRIDGE) << "XDG session cancelled"; closeSession(); return; } else if (code > 0) { qCWarning(XWAYLANDBRIDGE) << "XDG session failed:" << results << code; exit(1); return; } const auto streamsIt = results.constFind("streams"); if (streamsIt != results.constEnd()) { QVector<Stream> streams; streamsIt->value<QDBusArgument>() >> streams; handleStreams(streams); return; } const auto handleIt = results.constFind(QStringLiteral("session_handle")); if (handleIt != results.constEnd()) { startStream(QDBusObjectPath(handleIt->toString())); return; } qCDebug(XWAYLANDBRIDGE) << "params" << results << code; if (results.isEmpty()) { start(); return; } } void XwaylandVideoBridge::init() { const QVariantMap sessionParameters = { { QLatin1String("session_handle_token"), m_handleToken }, { QLatin1String("handle_token"), m_handleToken } }; auto sessionReply = iface->CreateSession(sessionParameters); sessionReply.waitForFinished(); if (!sessionReply.isValid()) { qCWarning(XWAYLANDBRIDGE) << "Couldn't initialize the remote control session"; exit(1); return; } const bool ret = QDBusConnection::sessionBus().connect(QString(), sessionReply.value().path(), QLatin1String("org.freedesktop.portal.Request"), QLatin1String("Response"), this, SLOT(response(uint, QVariantMap))); if (!ret) { qCWarning(XWAYLANDBRIDGE) << "failed to create session"; exit(2); return; } qDBusRegisterMetaType<Stream>(); qDBusRegisterMetaType<QVector<Stream>>(); } void XwaylandVideoBridge::start() { const QVariantMap startParameters = { { QLatin1String("handle_token"), m_handleToken } }; auto reply = iface->Start(m_path, QStringLiteral("org.kde.xwaylandvideobridge"), startParameters); reply.waitForFinished(); if (reply.isError()) { qCWarning(XWAYLANDBRIDGE) << "Could not start stream" << reply.error(); exit(1); return; } } void XwaylandVideoBridge::handleStreams(const QVector<Stream> &streams) { m_sni->setStatus(KStatusNotifierItem::Active); const QVariantMap startParameters = { { QLatin1String("handle_token"), m_handleToken } }; auto reply = iface->OpenPipeWireRemote(m_path, startParameters); reply.waitForFinished(); if (reply.isError()) { qCWarning(XWAYLANDBRIDGE) << "Could not start stream" << reply.error(); exit(1); return; } const int fd = reply.value().takeFileDescriptor(); if (streams.count() < 1) { qCWarning(XWAYLANDBRIDGE) << "No streams available"; exit(1); } m_pipeWireItem = new PipeWireSourceItem(m_window->contentItem()); m_pipeWireItem->setFd(fd); m_pipeWireItem->setNodeId(streams[0].nodeId); m_pipeWireItem->setVisible(true); if (m_pipeWireItem->state() == PipeWireSourceItem::StreamState::Streaming) { m_pipeWireItem->setSize(m_pipeWireItem->streamSize()); m_window->resize(m_pipeWireItem->size().toSize()); } connect(m_pipeWireItem, &PipeWireSourceItem::streamSizeChanged, this, [this]() { m_pipeWireItem->setSize(m_pipeWireItem->streamSize()); }); connect(m_pipeWireItem, &QQuickItem::widthChanged, this, [this]() { m_window->resize(m_pipeWireItem->size().toSize()); }); connect(m_pipeWireItem, &QQuickItem::heightChanged, this, [this]() { m_window->resize(m_pipeWireItem->size().toSize()); }); connect(m_pipeWireItem, &PipeWireSourceItem::stateChanged, this, [this]{ if (m_pipeWireItem->state() == PipeWireSourceItem::StreamState::Unconnected) { closeSession(); } }); } void XwaylandVideoBridge::closeSession() { m_handleToken = QStringLiteral("xwaylandvideobridge%1").arg(QRandomGenerator::global()->generate()); m_quitTimer->stop(); m_sni->setStatus(KStatusNotifierItem::Passive); if (m_path.path().isEmpty()) return; QDBusMessage closeScreencastSession = QDBusMessage::createMethodCall(QLatin1String("org.freedesktop.portal.Desktop"), m_path.path(), QLatin1String("org.freedesktop.portal.Session"), QLatin1String("Close")); m_path = {}; if (m_pipeWireItem) { disconnect(m_pipeWireItem, nullptr, this, nullptr); m_pipeWireItem->deleteLater(); m_pipeWireItem = nullptr; } QDBusConnection::sessionBus().call(closeScreencastSession); } 07070100000056000081A400000000000000000000000165ADD936000005AC000000000000000000000000000000000000003A00000000xwaylandvideobridge-0.4.0+git12/src/xwaylandvideobridge.h/* * App to render feeds coming from xdg-desktop-portal * * SPDX-License-Identifier: LicenseRef-KDE-Accepted-GPL * SPDX-FileCopyrightText: 2023 Aleix Pol <aleixpol@kde.org> */ #pragma once #include <QObject> #include <QDBusObjectPath> #include <PipeWireRecord> class QTimer; class ContentsWindow; class PipeWireSourceItem; class KStatusNotifierItem; struct Stream { uint nodeId; QVariantMap opts; }; class OrgFreedesktopPortalScreenCastInterface; class XwaylandVideoBridge : public QObject { Q_OBJECT public: XwaylandVideoBridge(QObject* parent = nullptr); ~XwaylandVideoBridge() override; enum CursorMode { Hidden = 1, Embedded = 2, Metadata = 4 }; Q_ENUM(CursorMode); Q_DECLARE_FLAGS(CursorModes, CursorMode) enum SourceTypes { Monitor = 1, Window = 2 }; Q_ENUM(SourceTypes); void setDuration(int duration); public Q_SLOTS: void response(uint code, const QVariantMap& results); private: void init(); void startStream(const QDBusObjectPath &path); void handleStreams(const QVector<Stream> &streams); void start(); void closeSession(); void closed(); OrgFreedesktopPortalScreenCastInterface *iface; QDBusObjectPath m_path; QString m_handleToken; QTimer *m_quitTimer; QScopedPointer<ContentsWindow> m_window; PipeWireSourceItem *m_pipeWireItem = nullptr; KStatusNotifierItem *m_sni; }; 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!332 blocks
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor