pax_global_header 0000666 0000000 0000000 00000000064 13521627713 0014521 g ustar 00root root 0000000 0000000 52 comment=032699fbf9368b0562ac034c4cb7a361112754b1
syncthing-gtk-0.9.4.4/ 0000775 0000000 0000000 00000000000 13521627713 0014466 5 ustar 00root root 0000000 0000000 syncthing-gtk-0.9.4.4/.gitignore 0000664 0000000 0000000 00000000053 13521627713 0016454 0 ustar 00root root 0000000 0000000 *.pyc
syncthing.exe
*~
*.exe
*.zip
*.nupkg
syncthing-gtk-0.9.4.4/LICENSE 0000664 0000000 0000000 00000043152 13521627713 0015500 0 ustar 00root root 0000000 0000000 GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, 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.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, 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 software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, 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 redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
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 give any other recipients of the Program a copy of this License
along with the Program.
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 Program or any portion
of it, thus forming a work based on the Program, 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) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
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 Program, 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 Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) 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; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, 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 executable. 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.
If distribution of executable or 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 counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program 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.
5. 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 Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program 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.
7. 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 Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program 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 Program.
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.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program 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.
9. The Free Software Foundation may publish revised and/or new versions
of the 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 Program
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 Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, 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
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "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 PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. 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 PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), 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 Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. 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.
{description}
Copyright (C) {year} {fullname}
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
{signature of Ty Coon}, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
syncthing-gtk-0.9.4.4/README.md 0000664 0000000 0000000 00000010320 13521627713 0015741 0 ustar 00root root 0000000 0000000 Syncthing-GTK
=============
GTK3 & Python based GUI and notification area icon for [Syncthing](https://github.com/syncthing/syncthing)
[](http://i.imgur.com/eX250tQ.png) [](http://i.imgur.com/RTRgRdC.png) [](http://i.imgur.com/OZ4xEeH.jpg)
##### Supported Syncthing features
- Everything what WebUI can display
- Adding / editing / deleting nodes
- Adding / editing / deleting repositories
- Restart / shutdown server
- Editing daemon settings
##### Additional features
- First run wizard for initial configuration
- Running Syncthing daemon in background
- Half-automatic setup for new nodes and repositories
- Nautilus (a.k.a. Files), Nemo and Caja integration
- Desktop notifications
##### Like what I'm doing?
[](https://liberapay.com/kozec) or [](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=77DQD3L9K8RPU&lc=SK&item_name=kozec&item_number=scc¤cy_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted)
##### Packages
- Ubuntu, Debian, deb-based distros: in [OpenSUSE Build Service](http://software.opensuse.org/download.html?project=home%3Akozec&package=syncthing-gtk).
- Arch Linux: In [[community] repository](https://www.archlinux.org/packages/community/any/syncthing-gtk/)
- Fedora: search for `syncthing-gtk` in Software Center
- SUSE (and other rpm-based distros): in [OpenSUSE Build Service](http://software.opensuse.org/download.html?project=home%3Akozec&package=syncthing-gtk).
- Flatpak (distro-agnostic): in [Flathub](https://flathub.org/apps/details/me.kozec.syncthingtk)
- Windows: Get [latest installer from here](https://github.com/kozec/syncthing-gui/releases/latest), or use [the Chocolatey package](https://chocolatey.org/packages/syncthing-gtk).
- Or, in worst case scenario, download [latest tarball](https://github.com/kozec/syncthing-gui/releases/latest), extract it and run syncthing-gtk.py.
##### Dependencies
- python 2.7, GTK 3.8 or newer and [PyGObject](https://live.gnome.org/PyGObject)
- [python-gi-cairo](https://packages.debian.org/sid/python-gi-cairo),
[gir1.2-notify](https://packages.debian.org/sid/gir1.2-notify-0.7) and [gir1.2-rsvg](https://packages.debian.org/sid/gir1.2-rsvg-2.0) on debian based distros (included in PyGObject elsewhere)
- [python-dateutil](http://labix.org/python-dateutil) (Python 2 version)
- [python-bcrypt](https://pypi.python.org/pypi/bcrypt/2.0.0)
- [setuptools](https://pypi.python.org/pypi/setuptools)
- [psmisc](http://psmisc.sourceforge.net) (for the `killall` command)
- [Syncthing](https://github.com/syncthing/syncthing) v0.13 or newer
##### Optional Dependencies
- libnotify for desktop notifications.
- nautilus-python, nemo-python or caja-python for filemanager integration
- [this Gnome Shell extension](https://extensions.gnome.org/extension/615/appindicator-support/), if running Gnome Shell
- [gir1.2-appindicator3](https://packages.debian.org/sid/gir1.2-appindicator3-0.1) (part of [libappindicator](https://launchpad.net/libappindicator)), if running Gnome Shell or Unity
##### Windows Building Dependencies _(you don't need to install these just to **run** Syncthing-GTK)_
- Python for Windows 2.7
- [PyGObject for Windows](http://sourceforge.net/projects/pygobjectwin32/) with GTK3 enabled (tested with version 3.14.0)
- [python-dateutil](http://labix.org/python-dateutil) (Python 2 version)
- [Python for Windows Extensions](http://sourceforge.net/projects/pywin32/)
- [WMI](http://timgolden.me.uk/python/wmi/index.html)
- [NSIS2](http://nsis.sourceforge.net/NSIS_2) with NSISdl, [ZipDLL](http://nsis.sourceforge.net/ZipDLL_plug-in) and [FindProcDLL](http://forums.winamp.com/showpost.php?p=2777729&postcount=8) plugins (optional, for building installer)
##### Related links
- https://syncthing.net
- https://forum.syncthing.net/t/syncthing-gtk-gui-for-syncthing-now-with-inotify-support/709
- https://forum.syncthing.net/t/lxle-a-respin-of-lubuntu-now-has-syncthing-included-by-default/1392
syncthing-gtk-0.9.4.4/appimage-build.sh 0000775 0000000 0000000 00000013743 13521627713 0017715 0 ustar 00root root 0000000 0000000 #!/bin/bash
APP="syncthing-gtk"
EXEC="syncthing-gtk"
[ x"$BUILD_APPDIR" == "x" ] && BUILD_APPDIR=$(pwd)/appimage
function download_dep() {
NAME=$1
URL=$2
if [ -e ../../${NAME}.obstargz ] ; then
# Special case for OBS
cp ../../${NAME}.obstargz /tmp/${NAME}.tar.gz
elif [ -e ${NAME}.tar.gz ] ; then
cp ${NAME}.tar.gz /tmp/${NAME}.tar.gz
else
wget -c "${URL}" -O /tmp/${NAME}.tar.gz
fi
}
function setup_dep() {
NAME="$1"
mkdir -p /tmp/${NAME}
pushd /tmp/${NAME}
tar --extract --strip-components=1 -f /tmp/${NAME}.tar.gz
python2 setup.py build
PYTHONPATH=${BUILD_APPDIR}/usr/lib/python2.7/site-packages python2 \
setup.py install --optimize=1 \
--prefix="/usr/" \
--root="${BUILD_APPDIR}"
popd
}
function build_dep() {
NAME="$1"
CONFIGURE="$2"
if [ -e ${NAME}.prebuilt.tar.gz ] ; then
cp ${NAME}.prebuilt.tar.gz /tmp/${NAME}.prebuilt.tar.gz
unpack_dep "$NAME.prebuilt"
return $?
fi
mkdir -p /tmp/${NAME}
pushd /tmp/${NAME}
tar --keep-newer-files --extract --strip-components=1 -f /tmp/${NAME}.tar.gz
[ $# -gt 2 ] && $3
./configure $(echo $CONFIGURE)
make
make DESTDIR="${BUILD_APPDIR}" install
popd
}
function unpack_dep() {
NAME="$1"
pushd ${BUILD_APPDIR}
tar --extract --exclude="usr/include**" --exclude="usr/lib/pkgconfig**" \
--exclude="usr/lib/python3.6**" -f /tmp/${NAME}.tar.gz
popd
}
function unpack_gi() {
NAME="$1"
pushd ${BUILD_APPDIR}
tar --extract --wildcards "usr/lib/girepository-1.0/*" -f /tmp/${NAME}.tar.gz
popd
}
set -exu # display commands, no empty vars, terminate on 1st failure
# Download deps
download_dep "python-dateutil-1.5" "http://labix.org/download/python-dateutil/python-dateutil-1.5.tar.gz"
download_dep "six-1.11.0" "https://pypi.python.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz"
download_dep "python-bcrypt-3.1.7" "https://archive.archlinux.org/packages/p/python2-bcrypt/python2-bcrypt-3.1.7-1-x86_64.pkg.tar.xz"
download_dep "python-cairo-1.18.1" "https://archive.archlinux.org/packages/p/python2-cairo/python2-cairo-1.18.1-1-x86_64.pkg.tar.xz"
download_dep "python-cffi-1.12.3" "https://archive.archlinux.org/packages/p/python2-cffi/python2-cffi-1.12.3-1-x86_64.pkg.tar.xz"
download_dep "python-gobject-3.32.2" "https://archive.archlinux.org/packages/p/python2-gobject/python2-gobject-3.32.2-1-x86_64.pkg.tar.xz"
download_dep "gir-1.60.2" "https://archive.archlinux.org/packages/g/gobject-introspection-runtime/gobject-introspection-runtime-1.60.2-1-x86_64.pkg.tar.xz"
download_dep "gtk-3.24.7" "https://archive.archlinux.org/packages/g/gtk3/gtk3-3.24.7-1-x86_64.pkg.tar.xz"
download_dep "atk-2.32" "https://archive.archlinux.org/packages/a/atk/atk-2.32-1-x86_64.pkg.tar.xz"
download_dep "glib-2.60.6" "https://archive.archlinux.org/packages/g/glib2/glib2-2.60.6-1-x86_64.pkg.tar.xz"
download_dep "pango-1.44.3" "https://archive.archlinux.org/packages/p/pango/pango-1%3A1.44.3-1-x86_64.pkg.tar.xz"
download_dep "gdk-pixbuf-2.36.9" "http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.36/gdk-pixbuf-2.36.9.tar.xz"
download_dep "libxml2-2.9.9" "https://archive.archlinux.org/packages/l/libxml2/libxml2-2.9.9-2-x86_64.pkg.tar.xz"
download_dep "librsvg-2.42.2" "http://ftp.gnome.org/pub/gnome/sources/librsvg/2.42/librsvg-2.42.2.tar.xz"
download_dep "libpng-1.6.37" "https://archive.archlinux.org/packages/l/libpng/libpng-1.6.37-1-x86_64.pkg.tar.xz"
download_dep "libepoxy-1.5.3" "https://archive.archlinux.org/packages/l/libepoxy/libepoxy-1.5.3-1-x86_64.pkg.tar.xz"
download_dep "libnotify-0.7.8" "https://archive.archlinux.org/packages/l/libnotify/libnotify-0.7.8-1-x86_64.pkg.tar.xz"
download_dep "libxrandr-1.5.2" "https://archive.archlinux.org/packages/l/libxrandr/libxrandr-1.5.2-1-x86_64.pkg.tar.xz"
download_dep "icu-60.2" "https://ssl.icu-project.org/files/icu4c/60.2/icu4c-60_2-src.tgz"
download_dep "libpcre-8.42" "https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz"
# Prepare & build
mkdir -p ${BUILD_APPDIR}/usr/lib/python2.7/site-packages/
setup_dep "python-dateutil-1.5"
setup_dep "six-1.11.0"
unpack_dep "python-bcrypt-3.1.7"
unpack_dep "python-cairo-1.18.1"
unpack_dep "python-cffi-1.12.3"
unpack_dep "python-gobject-3.32.2"
# PYTHON=python2 build_dep "glib-2.56.1" "--disable-selinux --disable-fam --disable-xattr --prefix=/usr"
unpack_dep "glib-2.60.6"
build_dep "icu-60.2" "--prefix=/usr --disable-dyload --enable-rpath --disable-draft --disable-extras --disable-tools --disable-tests --disable-samples" "cd source"
unpack_dep "gtk-3.24.7"
# PYTHON=python2 build_dep "gtk-3.24.5" "--prefix=/usr --disable-rpath --enable-x11-backend --disable-cups --disable-papi --disable-cloudprint --enable-introspection=yes"
build_dep "librsvg-2.42.2" "--prefix=/usr --disable-rpath --disable-static --enable-introspection=yes --disable-tools"
build_dep "libpcre-8.42" "--prefix=/usr --disable-rpath --disable-cpp --disable-static"
build_dep "gdk-pixbuf-2.36.9" "--prefix=/usr --disable-rpath --disable-static --enable-introspection=yes --without-libtiff --with-x11 --with-included-loaders=png,jpeg"
unpack_dep "gir-1.60.2"
unpack_dep "atk-2.32"
unpack_gi "pango-1.44.3"
unpack_dep "libxml2-2.9.9"
unpack_dep "libpng-1.6.37"
unpack_dep "libepoxy-1.5.3"
unpack_dep "libnotify-0.7.8"
unpack_dep "libxrandr-1.5.2"
# Cleanup
rm -R ${BUILD_APPDIR}/usr/bin
rm -R ${BUILD_APPDIR}/usr/include || true
for x in aclocal gtk-doc gdb gettext libalpm doc man vala locale bash-completion ; do
rm -R ${BUILD_APPDIR}/usr/share/$x || true
done
python2 setup.py build
python2 setup.py install --prefix ${BUILD_APPDIR}/usr
# Move & patch desktop file
mv ${BUILD_APPDIR}/usr/share/applications/${APP}.desktop ${BUILD_APPDIR}/
sed -i "s/Icon=.*/Icon=${APP}/g" ${BUILD_APPDIR}/${APP}.desktop
# Copy icon
cp -H icons/${APP}.png ${BUILD_APPDIR}/${APP}.png
[ -e "${BUILD_APPDIR}/usr/share/${APP}/icons/${APP}.png" ] || ln -s "../../../../${APP}.png" "${BUILD_APPDIR}/usr/share/${APP}/icons/${APP}.png"
# Copy AppRun script
cp scripts/appimage-AppRun.sh ${BUILD_APPDIR}/AppRun
chmod +x ${BUILD_APPDIR}/AppRun
echo "Run appimagetool -n ${BUILD_APPDIR} to finish prepared appimage"
syncthing-gtk-0.9.4.4/build_windows.py 0000664 0000000 0000000 00000016313 13521627713 0017715 0 ustar 00root root 0000000 0000000 #!/c/Python27/python.exe
"""
Do './build_windows.py build' to build exe, then call
'makensis syncthing-gtk.nsis' to create installation package.
"""
import os, site, sys, shutil, re
from cx_Freeze import setup, Executable
from cx_Freeze.freezer import Freezer, VersionInfo
from win32verstamp import stamp
from tempfile import mkdtemp
from subprocess import Popen, PIPE
from setup import get_version as _get_version, find_mos
gnome_dll_path = "/Python27/Lib/site-packages/gnome"
build_dir = "./build/exe.win32-2.7/"
# List of dlls that cx_freeze can't detect automatically
missing_dll = [
'libgtk-3-0.dll',
'libgdk-3-0.dll',
'libatk-1.0-0.dll',
'libcairo-gobject-2.dll',
'libgdk_pixbuf-2.0-0.dll',
#'libgirepository-1.0-1.dll',
#'libgmodule-2.0-0.dll',
#'libgladeui-2-6.dll',
'libpango-1.0-0.dll',
'libpangocairo-1.0-0.dll',
'libpangoft2-1.0-0.dll',
'libpangowin32-1.0-0.dll',
'libffi-6.dll',
#'libgio-2.0-0.dll',
'libharfbuzz-gobject-0.dll',
'libharfbuzz-0.dll',
#'libpng16-16.dll',
#'libxmlxpat.dll',
#'libintl-8.dll',
'librsvg-2-2.dll',
#'libzzz.dll',
'libtiff-5.dll',
'libwebp-5.dll',
#'libfreetype-6.dll',
#'libwinpthread-1.dll',
'libepoxy-0.dll',
'libjasper-1.dll',
'libjpeg-8.dll',
'gspawn-win32-helper.exe',
'gspawn-win32-helper-console.exe',
]
# List of dlls that are exported from wrong source (or broken for
# somehow other reason
wrong_sized_dll = [
'libcairo-gobject-2.dll',
'libpangocairo-1.0-0.dll',
'libfontconfig-1.dll',
'libglib-2.0-0.dll',
'libgobject-2.0-0.dll',
'libgthread-2.0-0.dll',
]
# List of languages that are copied from GTK and included in installation
enabled_gtk_locales = [
"sk", "cs", "pl", "de", "fr", "vi", "ru", "zh_CN", "lt",
"es", "hu", "nl", "it"
]
include_files = [ ]
# Stuff required by GTK
gtk_dirs = ('etc', 'lib')
include_files += [ (os.path.join(gnome_dll_path, x), x) for x in gtk_dirs ]
include_files += [ (os.path.join(gnome_dll_path, x), x) for x in missing_dll ]
# GTK locales
include_files += [ (os.path.join(gnome_dll_path, "share/locale", x, "LC_MESSAGES", "glib20.mo"),
"share/locale/" + x + "/LC_MESSAGES/glib20.mo" ) for x in enabled_gtk_locales ]
include_files += [ (os.path.join(gnome_dll_path, "share/locale", x, "LC_MESSAGES", "gtk30.mo"),
"share/locale/" + x + "/LC_MESSAGES/gtk30.mo" ) for x in enabled_gtk_locales ]
# Data files
include_files += [ x for x in os.listdir(".") if x.endswith(".glade") ]
include_files += [ "./icons" ]
d = [ (x, x) for x in find_mos("locale/") ]
include_files += d
import pprint
pprint.pprint(include_files)
# sys.exit(0)
executables = [
Executable(
"scripts/syncthing-gtk-exe.py",
targetName = "syncthing-gtk.exe",
base = "Win32GUI",
icon = "icons/st-logo-128.ico",
),
Executable(
"scripts/syncthing-gtk-exe.py",
targetName = "syncthing-gtk-console.exe",
base = "console",
icon = "icons/st-logo-128.ico",
),
]
get_version = lambda : "%s-win32" % (_get_version(),)
# Monkey-patch _AddVersionResource in cx_Freeze so win32verstamp will
# not bitch about non-numeric version
RE_NUMBER = re.compile(r'v?([0-9]+).*')
extract_number = lambda x : RE_NUMBER.match(x).group(1) if \
RE_NUMBER.match(x) else "0"
win32version = lambda x : ".".join([ extract_number(i) for i in x.split(".")[0:4] ])
Freezer._AddVersionResource = lambda self, exe : \
stamp(exe.targetName, VersionInfo(
win32version(self.metadata.version),
comments = self.metadata.long_description,
description = self.metadata.description,
company = self.metadata.author,
product = self.metadata.name,
copyright = exe.copyright,
trademarks = exe.trademarks
))
setup(
name = "Syncthing GTK",
author = "Kozec",
version = get_version(),
description = "Windows port of Syncthing GTK",
options = dict(
build_exe = dict(
includes = [ "gi" ],
packages = [ "gi", "bcrypt", "cffi" ],
include_files = include_files
),
),
executables = executables
)
if 'build' in sys.argv:
for l in wrong_sized_dll:
print "replacing", l
shutil.copy(
os.path.join(gnome_dll_path, l),
os.path.join(build_dir, l)
)
# Copy some theme icons
sizes = ["16x16", "24x24", "32x32", "scalable"]
icons = {
"status" : [
"image-missing",
"dialog-information",
"dialog-warning",
"dialog-error",
"checkbox-symbolic",
"checkbox-mixed-symbolic",
"checkbox-checked-symbolic",
],
"mimetypes" : [ "text-html" ],
"emblems" : [ "emblem-system-symbolic" ],
"apps" : [ "utilities-terminal" ],
"categories" : [ "preferences-system" ],
"places": [ "user-home" ],
"actions" : [
"help-about",
"edit-delete",
"edit-undo",
"application-exit",
"system-shutdown",
"document-open",
"view-refresh",
"open-menu-symbolic",
"window-close-symbolic",
"window-maximize-symbolic",
"window-restore-symbolic",
"window-minimize-symbolic",
"list-add-symbolic",
"list-remove-symbolic",
"pan-up-symbolic",
"pan-start-symbolic",
"pan-end-symbolic",
"pan-down-symbolic",
],
"devices" : [
"drive-harddisk",
"computer",
],
}
themes = ["Adwaita"]
target_path = os.path.join(build_dir, "share/icons/")
src_path = os.path.join(gnome_dll_path, "share/icons/")
for theme in themes:
for size in sizes:
extension = "svg" if size == "scalable" else "png"
for cat in icons:
try:
os.makedirs(os.path.join(target_path, theme, size, cat))
except Exception : pass
for icon in icons[cat]:
print "Copying icon %s/%s/%s/%s" % (theme, size, cat, icon)
icon = "%s.%s" % (icon, extension)
src = os.path.join(src_path, theme, size, cat, icon)
dst = os.path.join(target_path, theme, size, cat, icon)
if os.path.exists(src):
shutil.copy(src, dst)
print "Copying theme index for", theme
shutil.copy(
os.path.join(src_path, theme, "index.theme"),
os.path.join(target_path, theme, "index.theme")
)
print "Copying even more icons"
shutil.copy(
os.path.join(build_dir, "icons/128x128/apps/syncthing-gtk.png"),
os.path.join(build_dir, "icons/syncthing-gtk.png")
)
print "Copying glib schemas"
if not os.path.exists(os.path.join(build_dir, "/share/glib-2.0/schemas")):
target_path = os.path.join(build_dir, "share/glib-2.0/schemas")
src_path = os.path.join(gnome_dll_path, "share/glib-2.0/schemas")
if not os.path.exists(target_path):
os.makedirs(target_path)
for filename in os.listdir(src_path):
src = os.path.join(src_path, filename)
target = os.path.join(target_path, filename)
shutil.copy(src, target)
print "Fixing https://github.com/syncthing/syncthing-gtk/issues/313"
# Needs http://win-builds.org/1.5.0/packages/windows_32/FILENAME in in work directory
FILENAME = "glib-networking-2.36.2-1-i686-w64-mingw32.txz"
tmpdir = mkdtemp()
cwd = os.getcwd()
archive = open(FILENAME, "rb")
os.chdir(os.path.join(build_dir))
tarxz = Popen(['tar', 'Jxv', '--exclude', 'windows_32/share/*',
'--exclude', 'windows_32/doc/*', '--strip-components', "1"], stdin=PIPE)
tarxz.communicate(archive.read())
archive.close()
os.chdir(cwd)
if tarxz.returncode != 0:
print >>sys.stderr, "Failed to unpack", FILENAME
sys.exit(1)
print "Storing version"
with open(os.path.join(build_dir, "__version__"), "w") as f:
f.write(get_version())
with open(os.path.join(build_dir, "..", "version.nsh"), "w") as f:
f.write('!define VERSION "{version}"'.format(version=get_version()))
syncthing-gtk-0.9.4.4/chocolatey_update.py 0000664 0000000 0000000 00000005004 13521627713 0020533 0 ustar 00root root 0000000 0000000 #!/c/Python27/python.exe
"""
Update Chocolatey package from GitHub releases information.
Requirements:
- Being on Windows
- Having Chocolatey installed (https://chocolatey.org/)
- Having warmup and nuget.commandline installed ("cinst warmup nuget.commandline")
- Having the API key configured ("nuget SetApiKey [API_KEY_HERE] -source http://chocolatey.org/" "https://chocolatey.org/account")
- Being a maintainer of the syncthing-gtk package on Chocolatey
"""
from __future__ import unicode_literals, print_function
import re, os, json
try:
from urllib import request # Py3
except ImportError:
import urllib2 as request # Py2
from io import open
print("Retrieving last version...")
releasesString = request.urlopen("https://api.github.com/repos/syncthing/syncthing-gtk/releases").read().decode('utf-8')
releases = json.loads(releasesString)
lastRelease = releases[0] # Improve if needed
version = ''
url = ''
releaseNotes = ''
version = lastRelease['name'].replace('v', '', )
releaseNotes = lastRelease['body'].replace('\r', '').replace(':\n-', ':\n\n-')
for asset in lastRelease['assets']:
if re.match(r'.+win32-full-installer.exe', asset['name']):
# url = "https://cdn.rawgit.com/syncthing/syncthing-gtk/releases/download/"+lastRelease['name']+"/"+asset['name']
url = asset['browser_download_url']
assert(url != ''), "ERR No fitting script found"
print("Found version", version)
print("Updating files...")
nuspecFile = open("syncthing-gtk.nuspec", "r", encoding="utf8")
nuspecString = nuspecFile.read()
nuspecFile.close()
nuspecString = re.sub(r'.*', ''+version+'', nuspecString)
nuspecString = re.sub(r'[\w\W]*', ''+releaseNotes+'', nuspecString)
nuspecFile = open("syncthing-gtk.nuspec", "w", encoding="utf8")
print(nuspecString, file=nuspecFile, end="")
nuspecFile.close()
chocolateyInstallFile = open("tools/chocolateyInstall.ps1", "r", encoding="utf8")
chocolateyInstallString = chocolateyInstallFile.read()
chocolateyInstallFile.close()
chocolateyInstallString = re.sub(r'\$url ?= ?\'.*\'\n', '$url = \''+url+'\'\n', chocolateyInstallString)
chocolateyInstallFile = open("tools/chocolateyInstall.ps1", "w", encoding="utf8")
print(chocolateyInstallString, file=chocolateyInstallFile, end="")
chocolateyInstallFile.close()
print("Packaging...")
os.system("cpack")
input("Done! Press [Enter] to push or ^C to cancel pushing")
print("Pushing...")
os.system("cpush syncthing-gtk."+version+".nupkg")
print("Done!")
syncthing-gtk-0.9.4.4/doc/ 0000775 0000000 0000000 00000000000 13521627713 0015233 5 ustar 00root root 0000000 0000000 syncthing-gtk-0.9.4.4/doc/syncthing-gtk.1 0000664 0000000 0000000 00000002002 13521627713 0020100 0 ustar 00root root 0000000 0000000 .\" Manpage for syncthing-gtk
.TH man 1 "23 Aug 2016" "1.0" "syncthing-gtk man page"
.SH NAME
Syncthing-GTK \- GUI for Syncthing
.SH SYNOPSIS
syncthing-gtk [OPTIONS...]
.SH DESCRIPTION
Syncthing-GTK is a GTK3 and Python based GUI and notification area icon for Syncthing.
.SH OPTIONS
-h, --help Shows help screen
-w, --window Display window (don't start minimized)
-m, --minimized Hide window (start minimized)
-s, --header Use classic window header
-q, --quit Quit running instance (if any)
-v, --verbose Be verbose
-d, --debug Be more verbose (debug mode)
-1, --wizard Run 'first start wizard' and exit
-a, --about Display about dialog and exit
--home Overrides default syncthing configuration directory
--add-repo Opens 'add repository' dialog with specified path prefilled
--remove-repo If there is repository assigned with specified path, opens 'remove repository' dialog
.SH SEE ALSO
syncthing(1)
.SH COPYRIGHT
Code & UI (c) 2016 Kozec
syncthing-gtk-0.9.4.4/generate-icons.sh 0000775 0000000 0000000 00000010001 13521627713 0017720 0 ustar 00root root 0000000 0000000 #!/bin/bash
# Used to generate some icons
# Requires inkscape and imagemagick pacages
ICODIR=./icons/ # Directory with icons
SI_FRAMES=12 # Number of animation frames for status icon
for size in 16 24 32 ; do
# Rotating 'syncing' status icon is generated from multilayer svg
inkscape ${ICODIR}/si-syncthing.svg --export-id-only \
--export-area-page \
--export-id=background \
--export-png=/tmp/si-syncthing-back-${size}.png \
--export-width=${size} --export-height=${size}
# Generate default icon for each rotation
# for i in $(seq 0 $((SI_FRAMES-1))) ; do
for i in 0 ; do
echo si-syncthing-${i}.png
inkscape ${ICODIR}/si-syncthing.svg --export-id-only \
--export-area-page \
--export-id=rot${i} \
--export-png=/tmp/si-syncthing-${size}-${i}.png \
--export-width=${size} --export-height=${size}
convert \
/tmp/si-syncthing-back-${size}.png \
/tmp/si-syncthing-${size}-${i}.png \
-gravity center -compose over -composite \
${ICODIR}/${size}x${size}/status/si-syncthing-${i}.png
done
# Generate icon for idle state, unknown/offline state and warning state
echo si-syncthing-idle.png
convert \
/tmp/si-syncthing-back-${size}.png \
/tmp/si-syncthing-${size}-0.png \
-gravity center -compose over -composite \
${ICODIR}/${size}x${size}/status/si-syncthing-idle.png
echo si-syncthing-unknown.png
convert \
/tmp/si-syncthing-back-${size}.png \
/tmp/si-syncthing-${size}-0.png \
-gravity center -compose over -composite \
-colorspace Gray \
${ICODIR}/${size}x${size}/status/si-syncthing-unknown.png
echo si-syncthing-warning.png
inkscape ${ICODIR}/si-syncthing.svg --export-id-only \
--export-area-page \
--export-id=warning \
--export-png=/tmp/si-syncthing-warning-${size}.png \
--export-width=${size} --export-height=${size}
convert \
${ICODIR}/${size}x${size}/status/si-syncthing-idle.png \
/tmp/si-syncthing-warning-${size}.png \
-gravity center -compose over -composite \
${ICODIR}/${size}x${size}/status/si-syncthing-warning.png
# Generate black & white icons
for cols in "background-black rot black" "background-white rotblack white" ; do
cols=($cols)
inkscape ${ICODIR}/si-syncthing.svg --export-id-only \
--export-area-page \
--export-id=${cols[0]} \
--export-png=/tmp/si-syncthing-back-${size}.png \
--export-width=${size} --export-height=${size}
# Generate icon for each rotation
for i in $(seq 0 $((SI_FRAMES-1))) ; do
echo si-syncthing-${cols[2]}-${i}.png
inkscape ${ICODIR}/si-syncthing.svg --export-id-only \
--export-area-page \
--export-id=${cols[1]}${i} \
--export-png=/tmp/si-syncthing-${size}-${i}.png \
--export-width=${size} --export-height=${size}
convert \
/tmp/si-syncthing-back-${size}.png \
/tmp/si-syncthing-${size}-${i}.png \
-gravity center -compose over -composite \
${ICODIR}/${size}x${size}/status/si-syncthing-${cols[2]}-${i}.png
done
# Generate icon for idle state, unknown/offline state and warning state
echo si-syncthing-${cols[2]}-idle.png
convert \
/tmp/si-syncthing-back-${size}.png \
/tmp/si-syncthing-${size}-0.png \
-gravity center -compose over -composite \
${ICODIR}/${size}x${size}/status/si-syncthing-${cols[2]}-idle.png
echo si-syncthing-${cols[2]}-unknown.png
inkscape ${ICODIR}/si-syncthing.svg --export-id-only \
--export-area-page \
--export-id=${cols[1]}-unknown \
--export-png=/tmp/si-syncthing-${size}-unknown.png \
--export-width=${size} --export-height=${size}
convert \
/tmp/si-syncthing-back-${size}.png \
/tmp/si-syncthing-${size}-unknown.png \
-gravity center -compose over -composite \
-colorspace Gray \
${ICODIR}/${size}x${size}/status/si-syncthing-${cols[2]}-unknown.png
echo si-syncthing-${cols[2]}-warning.png
convert \
${ICODIR}/${size}x${size}/status/si-syncthing-${cols[2]}-idle.png \
/tmp/si-syncthing-warning-${size}.png \
-gravity center -compose over -composite \
${ICODIR}/${size}x${size}/status/si-syncthing-${cols[2]}-warning.png
done
done syncthing-gtk-0.9.4.4/generate-locales.sh 0000775 0000000 0000000 00000000405 13521627713 0020236 0 ustar 00root root 0000000 0000000 #!/bin/bash
# Constants
GETTEXT_DOMAIN="syncthing-gtk"
MESSAGES_PO="messages.po"
for lang in locale/* ; do
filename=${lang}/LC_MESSAGES/${GETTEXT_DOMAIN}.po
mo=${lang}/LC_MESSAGES/${GETTEXT_DOMAIN}.mo
msgfmt ${filename} -o ${mo}
echo "Created" ${mo}
done
syncthing-gtk-0.9.4.4/generate-source-locale.sh 0000775 0000000 0000000 00000001255 13521627713 0021355 0 ustar 00root root 0000000 0000000 #!/bin/bash
# Constants
GETTEXT_DOMAIN="syncthing-gtk"
MESSAGES_PO="messages.po"
LOCALEDIR="locale"
SRCLOCALE="en"
# Generate messages.po
[ -e ${MESSAGES_PO} ] && rm ${MESSAGES_PO}
xgettext -e syncthing_gtk/*.py glade/*.glade
filename=${LOCALEDIR}/${SRCLOCALE}/LC_MESSAGES/${GETTEXT_DOMAIN}.po
mo=${LOCALEDIR}/${SRCLOCALE}/LC_MESSAGES/${GETTEXT_DOMAIN}.mo
mkdir -p ${LOCALEDIR}/${SRCLOCALE}/LC_MESSAGES
if [ -e ${filename} ] ; then
# Merge new strings to existing po file
msgmerge --update ${filename} ${MESSAGES_PO} || exit 1
echo "Merged" ${filename}
msgfmt ${filename} -o ${mo}
else
# Copy new po file
cp ${MESSAGES_PO} ${filename} || exit 1
echo "Created" ${filename}
fi
syncthing-gtk-0.9.4.4/glade/ 0000775 0000000 0000000 00000000000 13521627713 0015542 5 ustar 00root root 0000000 0000000 syncthing-gtk-0.9.4.4/glade/about.glade 0000664 0000000 0000000 00000016711 13521627713 0017660 0 ustar 00root root 0000000 0000000
syncthing-gtk-0.9.4.4/glade/app.glade 0000664 0000000 0000000 00000115437 13521627713 0017333 0 ustar 00root root 0000000 0000000
900600syncthing-gtkicons/32x32/apps/syncthing-gtk.pngTrueTrueTruenonehalfapp-menu-iconsapp-menuTrueTruesyncthing-gtk24icons/24x24/apps/syncthing-gtk.pngstartFalsestartTrueFalsecenteredit-menu-button-iconedit-menu-iconsedit-menuTrueTrueemblem-system-symbolicopen-menu-symbolic1endTrueFalseverticalTrueFalsehorizontal66Truecenterapp-menu-button-iconapp-menu-iconsapp-menuTrueFalseTrue0TrueTrueTrue1TrueFalsecenteredit-menu-button-iconedit-menu-iconsedit-menuTrueFalseTrueend2TrueFalsehorizontalTrueTrue500TrueTrueTrueTrueFalseTrueFalsevertical6FalseFalseTrueTrueTrueFalseTrueFalsevertical6FalseFalseTrueTrueTrueFalseTrueFalseOpen _Web InterfaceTrueTruemenu-webui-imageapp.webuiTrueFalseDisplay _Daemon OutputTrueTruemenu-daemon-output-imageapp.daemon_outputTrueFalseUI _SettingsTrueFalseTruemenu-ui-settings-imageFalseTrueapp.preferencesTrueFalsegtk-aboutTrueTrueTrueapp.aboutTrueFalsegtk-quitTrueTrueTrueapp.quitTrueFalseTrueFalseAdd Shared _FolderTruemenu-add-folder-imageFalseTrueapp.add_folderTrueFalseAdd _DeviceTruemenu-add-device-imageFalseTrueapp.add_deviceTrueFalseDaemon _SettingsTrueFalseTruemenu-daemon-settings-imageFalseTrueapp.daemon_preferencesTrueFalseShow _IDTruemenu-show-id-imageFalseTrueapp.show_idTrueFalseTrueFalseSh_utdown DaemonTruemenu-shutdown-imageFalseTrueapp.daemon_shutdownTrueFalse_Restart DaemonTruemenu-restart-imageFalseTrueapp.daemon_restartTrueFalseTrueFalseOverride Remote ChangesTrueTrueTruemenu-popup-override-imageTrueFalseOverride Local ChangesTrueTrueTruemenu-popup-revert-imageTrueFalseTrueFalsegtk-editTrueTrueTrueTrueFalseEdit _Ignore PatternsTruemenu-popup-edit-ignored-imageTrueTrueFalsegtk-deleteTrueTrueTrueTrueFalseTrueFalse_RescanTrueFalseTruemenu-popup-rescan-folder-imageTrueFalse_BrowseTrueTrueTruemenu-popup-browse-imageTrueFalseTrueFalsegtk-editTrueTrueTrueTrueFalseShow _IDTrueTrueTruemenu-popup-show-id-imageTrueFalsegtk-media-pauseTrueTrueTrueTrueFalseResumemenu-popup-resume-imageTrueTrueTrueTrueFalsegtk-deleteTrueTrueTrueTrueFalseTrueFalseConnecting to daemon...FalseFalseTrueFalseShow WindowFalseTrueTrueFalseTrueFalseS_top SyncthingTruemenu-si-shutdown-imageFalseFalseTrueFalseFalseResume Sync_thingTruemenu-si-resume-imageFalseTrueTrue_Incoming Rate LimitTrueFalseTruemenu-si-recvlimit-imageFalseTrueFalseTrueFalse_UnlimitedTrueTrueFalse_OtherTrueTrueFalse_Outgoing Rate LimitTrueFalseTruemenu-si-sendlimit-imageFalseTrueFalseTrueFalse_UnlimitedTrueTrueFalse_OtherTrueTrueFalseTrueFalseTrueFalseShow _IDTruemenu-si-show-id-imageFalseFalseTrueTrueFalseOpen _Web InterfaceTrueTruemenu-si-webui-imageTrueFalseDisplay _Daemon OutputTrueTruemenu-si-daemon-output-imageTrueFalseUI _SettingsTrueTruemenu-si-ui-settings-imageTrueFalseTrueFalsegtk-aboutTrueTrueTrueTrueFalsegtk-quitTrueTrueTrueTruesyncthing-gtk16icons/16x16/apps/syncthing-gtk.pngTrueemblem-system-symbolicTrueFalse1drive-harddiskTrueFalse1computerTrueFalse1preferences-systemTrueFalse1preferences-systemTrueFalse1icons/show_id.svgTrueFalse1system-shutdownTrueFalse1view-refreshTrueFalse1text-htmlTrueFalse1utilities-terminalTrueFalse1view-refreshTrueFalse1icons/show_id.svgTrueFalse1system-shutdownTrueFalse1media-playback-startTrueFalse1view-refreshTrueFalse1text-htmlTrueFalse1utilities-terminalTrueFalse1go-downTrueFalse1go-upTrueFalse1preferences-systemTrueFalse1icons/eye.svgTrueFalse1icons/show_id.svgTrueFalseedit-undoTrueFalseedit-undoTrueFalseview-refreshTrueFalsefolder-openTrueFalsegtk-media-play
syncthing-gtk-0.9.4.4/glade/daemon-output.glade 0000664 0000000 0000000 00000006353 13521627713 0021350 0 ustar 00root root 0000000 0000000
FalseDaemon Outputproc-outputTrue1000500dialogTrueTrueFalsevertical2Falseendgtk-closeTrueTrueTrueTrueTrueTrue0FalseTrueend0TrueTrueinTrueFalseTrueTrueFalseTrueTrue1
syncthing-gtk-0.9.4.4/glade/daemon-settings.glade 0000664 0000000 0000000 00000042716 13521627713 0021653 0 ustar 00root root 0000000 0000000
1999995110999991110999991110199995011016553521025110Falsedaemon-settingsTrue500dialogTrueTrueFalsevertical2Falseendgtk-cancelTrueTrueTrueTrueTrueTrue0gtk-saveTrueFalseTrueTrueTrueTrueTrue1FalseTrueend0TrueFalse10103TrueTrueFalseSync Protocol Listen AddressesTruevlistenAddresses0002TrueTrueTrue10012Enable Local _DiscoveryTrueTrueFalseTrue0True062Enable _UPnPTrueTrueFalseTrue0True0122TrueFalseLocal Discovery _PortTruevlocalAnnouncePort0072TrueTrue10adjMaxSendKbps052TrueTrueFalseTrue0TrueTrueFalseOutgoing _Rate LimitTruevmaxSendKbpsEnabled042Open browser with _WebUI when daemon is startingTrueTrueFalse10True0True0142Enable _Anonymous Usage ReportingTrueTrueFalseTrue0True0132Enable _Global DiscoveryTrueTrueFalseTrue0True092TrueFalseGlobal Discovery _ServersTruevglobalAnnounceServers00102TrueTrue150112TrueTrue1050adjlocalAnnouncePort50082TrueTrueFalseTrue0TrueTrueFalse_Incoming Rate LimitTruevmaxRecvKbpsEnabled022TrueTrue10adjMaxRecvKbps032TrueTrue11
syncthing-gtk-0.9.4.4/glade/device-edit.glade 0000664 0000000 0000000 00000037665 13521627713 0020743 0 ustar 00root root 0000000 0000000
1999995110
always
All Data
never
Off
metadata
Metadata Only
Falsedevice-editTrue500dialogTrueTrueFalsevertical2Falseendgtk-cancelTrueTrueTrueTrueTrueTrue0gtk-saveTrueFalseTrueTrueTrueTrueTrue1FalseTrueend0TrueFalse10103TrueFalseDevice _IDTruevdeviceID0002TrueTrue012TrueFalseDevice _NameTruevname0032TrueTrue042TrueFalse10Shown instead of Device ID in the cluster status.True0052TrueFalse_AddressesTruevaddresses0062TrueTrue072TrueFalse10Enter comma separated "ip:port" addresses or "dynamic" to perform automatic discovery of the address.True0082TrueFalseTrue0022TrueFalseShare _FoldersTrue00132TrueFalseSelect the folders to share with this device00152_IntroducerTrueTrueFalseTrue0True0112TrueFalse10Any devices configured on an introducer device will be added to this device as well.True00122TrueFalse_CompressionTruevaddresses0092TrueFalse10lststrCompression10102100TrueTrueTrueTrueFalseTrueFalsevertical0142TrueTrue11
syncthing-gtk-0.9.4.4/glade/device-id.glade 0000664 0000000 0000000 00000011121 13521627713 0020365 0 ustar 00root root 0000000 0000000
1999995110FalseDevice Identificationdevice-idTrue500dialogTrueTrueFalsevertical2Falseendgtk-closeTrueTrueTrueTrueTrueTrue0FalseTrueend0TrueFalse2020verticalTrueTrue1010False70XYZ-123-ABC0.5FalseTrue0TrueFalseTrueFalse256computer6TrueTrue1FalseTrue1
syncthing-gtk-0.9.4.4/glade/find-daemon.glade 0000664 0000000 0000000 00000023133 13521627713 0020723 0 ustar 00root root 0000000 0000000
FalseCan't invoke the daemonfind-daemonTruecenter600dialog-errordialogTrueTrueFalse5555vertical2FalseendUI _SettingsTrueTrueTrueTrueTrueTrue0gtk-quitTrueTrueTrueTrueTrueTrue1gtk-saveTrueFalseTrueTrueTrueTrueTrue3FalseTrueend0TrueFalsevertical450TrueFalse10True... message goes here ...TrueTrue0FalseTrue0TrueFalse10TrueTrue20TrueTrue0_Browse...TrueTrueTrueTrue0.51999998092651367FalseTrue1FalseTrue1TrueFalse30TrueFalse20TrueTrue0200FalseTrueFalseTrue1_Download...TrueTrueTrueTrueFalseTrue2FalseTrue2TrueTrue1
syncthing-gtk-0.9.4.4/glade/folder-edit.glade 0000664 0000000 0000000 00000173474 13521627713 0020756 0 ustar 00root root 0000000 0000000
19999951109999110100111099999951109999110
random
Random
alphabetic
Alphabetic
smallestFirst
Smallest First
largestFirst
Largest First
oldestFirst
Oldest First
newestFirst
Newest First
Off
simple
Simple
staggered
Staggered
trashcan
Trashcan
external
External
Falsefolder-editTrue700dialogTrueTrueFalsevertical2Falseendgtk-cancelTrueTrueTrueTrueTrueTrue0gtk-saveTrueFalseTrueTrueTrueTrueTrue1FalseTrueend0TrueTrueTrueFalse1010553TrueFalseFolder _LabelTruevlabel0002TrueTruegtk-refreshGenerate Random042TrueFalse10Short identifier for the folder. Must be the same on all devices.True0052TrueFalse_PathTrue0062TrueFalse10Path to the folder on the local computer. Will be created if it does not exist.True0082TrueFalseRescan _IntervalTrue0092TrueTrue105FalsenumberadjRescanIntervalTrueTrue50102TrueTrueFalse10True0TrueTrueFalseMonitor filesystem for _changesTruevfsWatcherEnabledstart0112TrueFalseTrueTrueTrueTrue0Browse...TrueTrueTrueFalseTrue1072TrueFalseFolder _IDTruevid0032TrueTrue012TrueFalse10Optional descriptive label for the folder. Can be different on each device.True0022TrueTrueFalseTrue0TrueTrueFalse_Send Only FolderTruevreadOnly0122200TrueFalse10Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster.True000132TrueTrueFalseTrue0TrueTrueFalse_Receive Only FolderTruevreadOnly0142200TrueFalse10Changes from other devices are applied to files on this device, but changes made on this device are not sent to the rest of the cluster.
True000152TrueFalseTrue_Folder SettingsTrueTrueFalseTrueFalse101055verticalTrueFalseSelect the devices to share this folder with.True00FalseTrue0TrueTrueTrueTrueFalseTrueFalseverticalFalseTrue11TrueFalseTrueShare With _DevicesTrue1TrueFalseTrueFalse101055verticalTrueFalseVersioning _ModeTruevversioning0FalseTrue0300TrueFalselsVersioning1FalseTrue1TrueFalsecrossfadeTrueFalseverticalFalseTruevertical200TrueFalse10Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing.True00FalseTrue0TrueFalse_Keep VersionsTruevkeepVersions00FalseFalse2300TrueTrue5adjKeepVersions1TrueTrue5FalseTrue3TrueFalseThe number of old versions to keep, per file.True00TrueTrue4FalseTrue0FalseTruevertical200TrueFalse10Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing. Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.
The following intervals are used: for the first hour a version is kept every 30 seconds, for the first day a version is kept every hour, for the first 30 days a version is kept every day, until the maximum age a version is kept every week.True00FalseTrue0TrueFalseMa_ximum AgeTruevkeepVersions00FalseFalse1300TrueTrue105adjMaxAge1TrueTrue5FalseTrue2TrueFalseVersions _PathTruevkeepVersions00FalseFalse3300TrueTrueFalseTrue4200TrueFalsePath where versions should be stored (leave empty for the default .stversions folder).True00FalseTrue5FalseTrue1TrueFalseverticalTrueFalse10Files are moved to .stversions folder when replaced or deleted by SyncthingTrue0FalseTrue0TrueFalseClean out _afterTruevkeepVersions00FalseFalse1300TrueTrue5adjvCleanoutDays1TrueTrue5FalseTrue2200TrueFalseThe number of days to keep files in the trash can.True00FalseTrue3FalseTrue2TrueFalsevertical200TrueFalse10An external command handles the versioning. It has to remove the file from the synced folder.True00FalseTrue0TrueFalseCommandTruevkeepVersions00FalseFalse1300TrueTrueFalseTrue2200TrueFalseThe first command line parameter is the folder path and the second parameter is the relative path in the folder.True00FalseTrue3FalseTrue3FalseTrue22TrueFalseTrueFile _VersioningTrue2TrueFalseTrueFalse101055verticalTrueTrueFalseTrue0TrueTrueFalseIgnore P_ermissionsTruevignorePermsstartFalseTrue0TrueFalse10File permission bits are ignored when looking for changes. Use on FAT filesystems.True00FalseTrue1TrueFalseMinimum Free Disk SpaceTruevminDiskFreePct0FalseTrue2TrueTrue105FalsenumberadjMinDiskFreePct1TrueTrue1FalseTrue3TrueFalseFile Pull _OrderTruevorder0FalseTrue4300TrueFalse10lsOrder01FalseTrue53TrueFalseTrue_AdvancedTrue3TrueFalseTrueTrue1
syncthing-gtk-0.9.4.4/glade/ignore-editor.glade 0000664 0000000 0000000 00000014367 13521627713 0021322 0 ustar 00root root 0000000 0000000
FalseIgnore Patternsignore-editTrue600550dialogTrueTrueFalse1010vertical2Falseendgtk-closeTrueTrueTrueTrueTrueTrue0gtk-saveTrueFalseTrueTrueTrueTrueTrue1FalseTrueend0TrueFalseverticalTrueTrueGDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK10inTrueFalseTruetbPatternsFalseTrueTrue0TrueTrue15See <a href="http://docs.syncthing.net/users/ignoring.html">Syncthing documentation</a> for list of supported patternsTrue0FalseTrue1TrueFalse5File location: Trueend0FalseTrue2TrueTrue1
syncthing-gtk-0.9.4.4/glade/ui-settings.glade 0000664 0000000 0000000 00000150126 13521627713 0021020 0 ustar 00root root 0000000 0000000
199999511099110
syncthing
Default
syncthing-black
Black
syncthing-white
White
Default
cs
Česky
de
Deutsch
en
English
es
Español
fr
Français
lt
Latviešu
pt
Português
ru
Русский
sk
Slovenský
vi
tiếng việt
zh_CN
中文
19
Lowest
10
Low
0
Normal
-10
Above Normal
550FalseSyncthing-GTK Settingsui-settingsTrue500dialogTrueTrueFalsevertical2False55endFalseTrue20Please, restart Syncthing-GTK to apply all changed settingsTrueTrue0gtk-cancelTrueTrueTrueTrueTrueTrue1gtk-saveTrueFalseTrueTrueTrueTrueTrue2FalseTrueend0TrueTrue400TrueFalse5555TrueFalse10When starting and Syncthing daemon is not running...00102... _wait for daemonTrueTrueFalse30True0TrueTrue0112... start daemon in _backgroundTrueTrueFalse30True0TruerbOnStartWait0122... _ask me what to doTrueTrueFalse30True0TruerbOnStartWait0132TrueFalse10When exiting after daemon was started in background...00142... terminate _daemonTrueTrueFalse30True0TruerbOnExitLeave0152... leave daemon _runningTrueTrueFalse30True0TrueTrue0162... ask me w_hat to doTrueTrueFalse30True0TruerbOnExitLeave0172Us_e traditional window headerTrueTrueFalseTrue0True022TrueFalse10TrueDisplay desktop notifications for...0062... file updatesTrueTrueFalse30True0True072... errorsTrueTrueFalse30True0True092... synchronization completionTrueTrueFalse30True0True082Start Syncthing-GTK when I login to my desktopTrueTrueFalseTrueTrue0True002Minimize to _tray on startTrueTrueFalseTrue0True012Use _icons in menuTrueTrueFalseTrue0True042Display paths in directories panelTrueTrueFalseTrue0True052Force _dark themeTrueFalseTrueTrue0True032TrueFalse2010Truelst_vicon_theme01118TrueFalse10Tray icon style0018FalseTrue5Language0019FalseTrue205Truelst_vlanguage01119TrueTrueFalseTrue_InterfaceTrueTrueFalseTrueFalse535TrueFalseIntegrate Syncthing with filemanagersTrueend000Nemo (Cinamon Desktop)TrueFalseTrueFalse1050True01Nautilus (Ubuntu/GNOME)TrueFalseTrueFalse100True02Caja (MATE Desktop)TrueFalseTrueFalse100True03TrueFalseFalse7Install blahblahblah to enable Nemo support
Install blahblahblah to enable Nautilus support
Install blahblahblah to enable Caja support005TrueFalse83<b>Note:</b> You may need to restart your filemanager after toggling integration.TrueTrue0041TrueFalseTrue_IntegrationTrue1TrueFalseTrueFalse5555TrueTrueFalseTrue100TrueTrueFalseKeep Syncthing binary up-to-date0062TrueFalseTrue10If enabled, Syncthing-GTK will automatically check for new daemon releases and replace binary with latest version.TrueTrue0072TrueFalseDaemon process priorityTrue0002TrueFalselststrPriority1012TrueFalse10Priority will be used only if "<i>start daemon in background</i>" option is checked on "<i>Interface</i>" page.TrueTrue0022TrueFalseMaximum number of CPU coresTrue0032TrueFalse10Sets the maximum number of CPU cores for daemon to use. This value will be used only if "<i>start daemon in background</i>" option is checked on "<i>Interface</i>" page.TrueTrue0052TrueTrue101adjMaxCPUs10422TrueTrueFalseTrueDaemonTrue2TrueFalseTrueFalse5555TrueFalseTrue10This binary will be started when syncthing daemon is not running and "<i>start daemon in background</i>" option is checked on "<i>Interface</i>" page.TrueTrue0042_Browse...TrueTrueTrueTrueTrue0.5199999809265136713TrueFalseTrueSyncthing binary locationTrue0022TrueTrueTrueTrue03TrueFalseDaemon arguments and variablesTrue0052TrueTrueTrue062TrueFalse10Space-separated list of arguments and environment variables passed when starting above binary
Use <i>VARIABLE="value"</i> to set variable and <i>-argument="value"</i> (with dash) for argument.
If you need to pass commandline to different command (such as logger or ionice), separate prefixed arguments with exclamation mark "!"
Example:
<i>STTRACE="all" logger -t /var/log/syncthing.log ! -logflags=10</i>TrueTrue0072TrueFalse55<b>Warning:</b> Changing settings on this page may prevent you from using Syncthing-GTKTrue002TrueFalse55550123TrueFalseTrue_AdvancedTrue3TrueFalseTrueTrue1
syncthing-gtk-0.9.4.4/icons/ 0000775 0000000 0000000 00000000000 13521627713 0015601 5 ustar 00root root 0000000 0000000 syncthing-gtk-0.9.4.4/icons/128x128/ 0000775 0000000 0000000 00000000000 13521627713 0016536 5 ustar 00root root 0000000 0000000 syncthing-gtk-0.9.4.4/icons/128x128/apps/ 0000775 0000000 0000000 00000000000 13521627713 0017501 5 ustar 00root root 0000000 0000000 syncthing-gtk-0.9.4.4/icons/128x128/apps/syncthing-gtk.png 0000664 0000000 0000000 00000027516 13521627713 0023013 0 ustar 00root root 0000000 0000000 PNG
IHDR >a tEXtSoftware Adobe ImageReadyqe<