When using the transmission queue by setting simultaneous transmissions to "local files only on the same devices", then starting 3 separate copy jobs, #2 and #3 are initially delayed, so far so good, but after #1 finishes, #2 and #3 start simultaneously copying even though they share a source / destination HDD.
In fact, when #1 finishes, all other jobs that waited for #1 are started.
Edited
Designs
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related.
Learn more.
#2 and #3 start simultaneously copying even though they share a source / destination HDD.
Umm, I might misunderstand your usecase .. though if you select "Parallel File transfer"="local files only on the same device", then, considering #2 and #3 are local, they are supposed to be transferred in parallel.
My use case: Many HDDs, copying large amounts of data between each other.
If two copy jobs were to simultaneously start from drive A to drive B and C, the heads of drive A need to repeatedly skip between file 1 and file 2. This takes time (lower total speed, not just divided by 2) and increases mechanical wear on drive A as reading data in a linear fashion, where possible, is least taxing.
Hence the need for a queue that, if A and B are busy transferring already (job #1) and a new file transfer between A and C is added, that job #2 is held back until all previous jobs of drive A (busy) and C (idle) are done.
Currently, set to "Parallel File transfer"="local files only on the same device", it only waits for the one current job that is running on drive A and when that finishes it starts all the others simultaneously.
I can't imagine a usecase for "wait for one job but then start all the others at once", which is what that option currently does.
The behavior that would make most sense would be "Parallel File transfer"="local files only but never on the same devices".
Because as you add a fourth HDD, transfers between A and B shouldn't delay a transfer between C and D, but should delay between A and C or B and D.
And they should start in sequence when both concerned drives have no more queued / active jobs.
I've now switched to "Parallel File transfer"="never" but that means that the queue also holds back jobs between drives when neither have a copy job (both idle).
Ever since I've been using it (about a year), every time I looked at that option it was greyed-out with a note that it will be fixed / added in a later version.
Then recently it became enabled and I wanted to use it but it appears broken to me.
Finally, found time to look in detail into this. So the first draft is this one:
alexxcons/thunar@bf5d28f6
So far I did not test it. I am as well not a very good tester for this, since I only have a single SSD on my system. So if you can build thunar from source, testing would be very welcome !
After thinking a bit more about it, I am not sure any more if it is a good idea to replace THUNAR_PARALLEL_COPY_MODE_ONLY_LOCAL_SAME_DEVICES, with THUNAR_PARALLEL_COPY_MODE_ONLY_LOCAL_IDLE_DEVICE because there might be people which just want to always copy in parallel on local devices ... I suppose for SSD's it does not matter too much.
I am as well not sure about copy operations from a SSD to the same SSD … possibly there are optimizations in place which make parallel copy desirable/faster in that case ?
Any drive has its command queue, for parallel tasks in the end it comes down to the latency of working through that queue. For HDDs it's the main limiting factor for parallel throughput, additionally you get file fragmentation (non-contiguous writes). For SSDs it's not as much of an issue, but still parallel tasks will never be exactly as fast as sequential transfers. Maybe transfers between multiple HDDs and an SSD, that scenario would benefit but you can always start a queued copy job if you know there is "bandwidth" left.
I just managed to compile (total noob here), I'll leave the commands here so it's easier (and you can see whether I messed up):
#!/bin/bash# Quit any running thunar instance and start a new thunar from source. Enable debug messagesTHUNAR_TEST_FOLDER=/path/to/thunar/testing/folderecho "./thunar/thunar -q;./thunar/thunar $THUNAR_TEST_FOLDER"./thunar/thunar -q;G_MESSAGES_DEBUG=all ./thunar/thunar $THUNAR_TEST_FOLDER
chmod +x launcher.sh
./launcher.sh
It works and I found a bug (again as the other option had this behavior too):
start copy job 1 A -> B
start copy job 2 B -> A: gets queued like it should
start copy job 3 B -> A: gets queued like it should
job 1 finishes: job 2 and 3 start simultaneously, heads now making angry noises
A useful command I found to clear all caches (ever seen a 4TB 5400rpm HDD copy at 500MB/s so the transfer is "finished" before you can start the other ones?):
Also, a related "nice-to-have": currently, thunar seems to queue jobs by the drive labels. But if there are two partitions on a HDD and you start to copy to both, the second job doesn't get queued, causing disk thrashing.
And yes, partitions still are a thing, the outer part of a disk is about 30-50% faster.
So the detection could be switched to fetch /dev/sdXY for target and source where Y is the partition and X is the disk it's on. Then decide by X if a disk is already busy, and queue the job.
It works and I found a bug (again as the other option had this behavior too):* start copy job 1 A -> B* start copy job 2 B -> A: gets queued like it should* start copy job 3 B -> A: gets queued like it should* job 1 finishes: job 2 and 3 start simultaneously, heads now making angry noises
I could reproduce the bug on my local ssd. Fixed it (See commits for master and 4.18 above) ... actually the list of active jobs contained not jobs, but only views … so comparing them with jobs never could give a match
Using THUNAR_PARALLEL_COPY_MODE_ONLY_LOCAL_IDLE_DEVICE that use-case now works fine for me.
For THUNAR_PARALLEL_COPY_MODE_ONLY_LOCAL_SAME_DEVICES it would be great if you could do another test. Since I only have a single SSD, for me it is expected and correct that all jobs start simultaneously in that mode.
Also, a related "nice-to-have": currently, thunar seems to queue jobs by the drive labels. ...
I suppose the problem could be fixed by the commit above (thunar uses a device_fs_id which sounds promising, though I did not look yet where that comes from)
Ah, so it took a while until I understood that you made the commit on thunar main, not your own branch.
git kept barking at me "fatal: reference is not a tree"
then replaced the line 238 manually from here
then compiled like before with autogen.sh, then make errored out at:
CCLD libthunarx-3.la make[2]: *** No rule to make targetThunarx-3.0.typelib', needed by `all-am'. Stop.
Even if I delete the thunar dir, do a fresh clone, checkout to the bf5d commit and then don't manually modify thunar-progress-dialog.c, same error.
As-is I can't test it, what am I doing wrong?
OS is Manjaro, fully updated.
I already reinstalled gcc-libs, gcc, llvm, llvm-libs, lldb, lld, make, clang, compiler-rt and xfce4-dev-tools-devel.
I pushed these commits to the official4.18 and master branch. In order to checkout, you don't need to touch the code. Here how to clone the official repo:
git clone https://gitlab.xfce.org/xfce/thunar.git (You can as well pull from different repos at once via git remote add ... though starting from scratch probably is the most simple way)
Per default, you will have the master branch … if you prefer using the 4.18 branch, do git checkout xfce-4.18, (currently there is not that much difference between them)
./autogen.shmake -j4./thunar/thunar (or re-use the launcher you wrote)
No rule to make target usually means, that some makefile was not generated by autogen.sh. If it still happens, maybe autogen.sh showed some error ?
$ ./autogen.shPreparing package directory /home/CENSOREDNOTHING/temp/thunar_Test/thunar...Running intltoolize --automake --copy --forceRunning gtkdocize --copy...grep: Warnung: überzähliges \ vor ,grep: Warnung: überzähliges \ vor einem LeerzeichenRunning autoreconf...autoreconf: export WARNINGS=autoreconf: Entering directory '.'autoreconf: configure.ac: not using Gettextautoreconf: running: aclocal --force -I m4 ${ACLOCAL_FLAGS}autoreconf: configure.ac: tracingautoreconf: running: libtoolize --copy --forcelibtoolize: putting auxiliary files in '.'.libtoolize: copying file './ltmain.sh'libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.libtoolize: copying file 'm4/libtool.m4'libtoolize: copying file 'm4/ltoptions.m4'libtoolize: copying file 'm4/ltsugar.m4'libtoolize: copying file 'm4/ltversion.m4'libtoolize: copying file 'm4/lt~obsolete.m4'autoreconf: running: intltoolize --copy --forceautoreconf: running: gtkdocize --copygrep: Warnung: überzähliges \ vor ,grep: Warnung: überzähliges \ vor einem Leerzeichenautoreconf: running: aclocal --force -I m4 ${ACLOCAL_FLAGS}autoreconf: running: /usr/bin/autoconf --forceautoreconf: running: /usr/bin/autoheader --forceautoreconf: running: automake --add-missing --copy --force-missingconfigure.ac:66: installing './compile'configure.ac:52: installing './config.guess'configure.ac:52: installing './config.sub'configure.ac:58: installing './install-sh'configure.ac:58: installing './missing'examples/tex-open-terminal/Makefile.am: installing './depcomp'thunar/Makefile.am:214: error: 'thunar.a' is not a standard library namethunar/Makefile.am:214: did you mean 'libthunar.a'?parallel-tests: installing './test-driver'autoreconf: Leaving directory '.'Running /home/CENSOREDNOTHING/temp/thunar_Test/thunar/configure --enable-maintainer-mode ...checking build system type... x86_64-pc-linux-gnuchecking host system type... x86_64-pc-linux-gnuchecking target system type... x86_64-pc-linux-gnuchecking for a BSD-compatible install... /usr/bin/install -cchecking whether build environment is sane... yeschecking for a race-free mkdir -p... /usr/bin/mkdir -pchecking for gawk... gawkchecking whether make sets $(MAKE)... yeschecking whether make supports nested variables... yeschecking whether UID '1000' is supported by ustar format... yeschecking whether GID '1000' is supported by ustar format... yeschecking how to create a ustar tar archive... gnutarchecking whether to enable maintainer-specific portions of Makefiles... yeschecking whether make supports nested variables... (cached) yeschecking whether make supports the include directive... yes (GNU style)checking for gcc... gccchecking whether the C compiler works... yeschecking for C compiler default output file name... a.outchecking for suffix of executables... checking whether we are cross compiling... nochecking for suffix of object files... ochecking whether the compiler supports GNU C... yeschecking whether gcc accepts -g... yeschecking for gcc option to enable C11 features... none neededchecking whether gcc understands -c and -o together... yeschecking dependency style of gcc... gcc3checking for stdio.h... yeschecking for stdlib.h... yeschecking for string.h... yeschecking for inttypes.h... yeschecking for stdint.h... yeschecking for strings.h... yeschecking for sys/stat.h... yeschecking for sys/types.h... yeschecking for unistd.h... yeschecking for wchar.h... yeschecking for minix/config.h... nochecking for sys/param.h... yeschecking whether it is safe to define __EXTENSIONS__... yeschecking whether _XOPEN_SOURCE should be defined... nochecking for library containing strerror... none requiredchecking for gcc... (cached) gccchecking whether the compiler supports GNU C... (cached) yeschecking whether gcc accepts -g... (cached) yeschecking for gcc option to enable C11 features... (cached) none neededchecking whether gcc understands -c and -o together... (cached) yeschecking dependency style of gcc... (cached) gcc3checking for a sed that does not truncate output... /usr/bin/sedchecking for grep that handles long lines and -e... /usr/bin/grepchecking for egrep... /usr/bin/grep -Echecking for fgrep... /usr/bin/grep -Fchecking how to print strings... printfchecking for ld used by gcc... /usr/bin/ldchecking if the linker (/usr/bin/ld) is GNU ld... yeschecking whether NLS is requested... yeschecking for intltool-update... /usr/bin/intltool-updatechecking for intltool-merge... /usr/bin/intltool-mergechecking for intltool-extract... /usr/bin/intltool-extractchecking for xgettext... /usr/bin/xgettextchecking for msgmerge... /usr/bin/msgmergechecking for msgfmt... /usr/bin/msgfmtchecking for gmsgfmt... /usr/bin/msgfmtchecking for perl... /usr/bin/perlchecking for perl >= 5.8.1... 5.36.0checking for XML::Parser... okchecking for perl5... nochecking for perl... perlchecking for a sed that does not truncate output... (cached) /usr/bin/sedchecking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -Bchecking the name lister (/usr/bin/nm -B) interface... BSD nmchecking whether ln -s works... yeschecking the maximum length of command line arguments... 1572864checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noopchecking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noopchecking for /usr/bin/ld option to reload object files... -rchecking for file... filechecking for objdump... objdumpchecking how to recognize dependent libraries... pass_allchecking for dlltool... nochecking how to associate runtime and link libraries... printf %s\nchecking for ar... archecking for archiver @FILE support... @checking for strip... stripchecking for ranlib... ranlibchecking command to parse /usr/bin/nm -B output from gcc object... okchecking for sysroot... nochecking for a working dd... /usr/bin/ddchecking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1checking for mt... nochecking if : is a manifest tool... nochecking for dlfcn.h... yeschecking for objdir... .libschecking if gcc supports -fno-rtti -fno-exceptions... nochecking for gcc option to produce PIC... -fPIC -DPICchecking if gcc PIC flag -fPIC -DPIC works... yeschecking if gcc static flag -static works... yeschecking if gcc supports -c -o file.o... yeschecking if gcc supports -c -o file.o... (cached) yeschecking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yeschecking whether -lc should be explicitly linked in... nochecking dynamic linker characteristics... GNU/Linux ld.sochecking how to hardcode library paths into programs... immediatechecking whether stripping libraries is possible... yeschecking if libtool supports shared libraries... yeschecking whether to build shared libraries... yeschecking whether to build static libraries... nochecking for special C compiler options needed for large files... nochecking for _FILE_OFFSET_BITS value needed for large files... nochecking for ctype.h... yeschecking for errno.h... yeschecking for fcntl.h... yeschecking for grp.h... yeschecking for limits.h... yeschecking for locale.h... yeschecking for memory.h... yeschecking for paths.h... yeschecking for pwd.h... yeschecking for sched.h... yeschecking for signal.h... yeschecking for stdarg.h... yeschecking for stdlib.h... (cached) yeschecking for string.h... (cached) yeschecking for sys/mman.h... yeschecking for sys/param.h... (cached) yeschecking for sys/stat.h... (cached) yeschecking for sys/time.h... yeschecking for sys/types.h... (cached) yeschecking for sys/uio.h... yeschecking for sys/wait.h... yeschecking for time.h... yeschecking for getpagesize... yeschecking for working mmap... yeschecking for localeconv... yeschecking for mkdtemp... yeschecking for pread... yeschecking for pwrite... yeschecking for sched_yield... yeschecking for setgroupent... nochecking for setpassent... nochecking for strcoll... yeschecking for strlcpy... nochecking for strptime... yeschecking for symlink... yeschecking for atexit... yeschecking for realpath... yeschecking for bind_textdomain_codeset... yeschecking for locales directory... ${prefix}/share/localechecking how to run the C preprocessor... gcc -Echecking for X... libraries , headers checking for gethostbyname... yeschecking for connect... yeschecking for remove... yeschecking for shmat... yeschecking for IceConnectionNumber in -lICE... yeschecking for main in -lX11... yeschecking for pkg-config... /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for gtk-doc... yeschecking for gtkdoc-check... gtkdoc-check.testchecking for gtkdoc-check... /usr/bin/gtkdoc-checkchecking for gtkdoc-rebase... /usr/bin/gtkdoc-rebasechecking for gtkdoc-mkpdf... /usr/bin/gtkdoc-mkpdfchecking whether to build gtk-doc documentation... nochecking for GTKDOC_DEPS... yeschecking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for exo-2 >= 4.17.0... 4.18.0checking EXO_CFLAGS... -I/usr/include/exo-2 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cloudproviders -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/xfce4 -pthread checking EXO_LIBS... -lexo-2 -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lxfce4util -lglib-2.0 checking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for glib-2.0 >= 2.66.0... 2.76.1checking GLIB_CFLAGS... -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread checking GLIB_LIBS... -lglib-2.0 configure: setting GLIB_VERSION_MAX_ALLOWED and GLIB_VERSION_MIN_REQUIRED according to 2.66.0checking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for gio-2.0 >= 2.66.0... 2.76.1checking GIO_CFLAGS... -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/libmount -I/usr/include/blkid -pthread checking GIO_LIBS... -lgio-2.0 -lgobject-2.0 -lglib-2.0 checking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for gthread-2.0 >= 2.66.0... 2.76.1checking GTHREAD_CFLAGS... -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread checking GTHREAD_LIBS... -lgthread-2.0 -pthread -lglib-2.0 checking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for gmodule-2.0 >= 2.66.0... 2.76.1checking GMODULE_CFLAGS... -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread checking GMODULE_LIBS... -Wl,--export-dynamic -lgmodule-2.0 -pthread -lglib-2.0 -lglib-2.0 checking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for gtk+-3.0 >= 3.24.0... 3.24.37checking GTK_CFLAGS... -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cloudproviders -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -pthread checking GTK_LIBS... -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 checking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for gdk-pixbuf-2.0 >= 2.40.0... 2.42.10checking GDK_PIXBUF_CFLAGS... -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -pthread checking GDK_PIXBUF_LIBS... -lgdk_pixbuf-2.0 -lgobject-2.0 -lglib-2.0 checking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for libxfce4util-1.0 >= 4.17.2... 4.18.1checking LIBXFCE4UTIL_CFLAGS... -I/usr/include/xfce4 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread checking LIBXFCE4UTIL_LIBS... -lxfce4util -lglib-2.0 checking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for libxfce4ui-2 >= 4.17.6... 4.18.2checking LIBXFCE4UI_CFLAGS... -I/usr/include/xfce4/libxfce4ui-2 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cloudproviders -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/xfce4 -pthread checking LIBXFCE4UI_LIBS... -lxfce4ui-2 -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lxfce4util -lglib-2.0 checking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for libxfce4kbd-private-3 >= 4.17.2... 4.18.2checking LIBXFCE4KBD_PRIVATE_CFLAGS... -I/usr/include/xfce4/libxfce4kbd-private-3 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cloudproviders -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/xfce4 -I/usr/include/xfce4/xfconf-0 -I/usr/include/xfce4/libxfce4ui-2 -pthread checking LIBXFCE4KBD_PRIVATE_LIBS... -lxfce4kbd-private-3 -lxfconf-0 -lxfce4ui-2 -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lxfce4util -lglib-2.0 checking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for libxfconf-0 >= 4.12.0... 4.18.0checking XFCONF_CFLAGS... -I/usr/include/xfce4/xfconf-0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/libmount -I/usr/include/blkid -pthread checking XFCONF_LIBS... -lxfconf-0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 checking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for pango >= 1.38.0... 1.50.14checking PANGO_CFLAGS... -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -pthread -I/usr/include/pixman-1 checking PANGO_LIBS... -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lharfbuzz checking for gobject-introspection... yeschecking for SmcSaveYourselfDone in -lSM... yeschecking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for gio-unix-2.0 >= 2.66.0... 2.76.1checking GIO_UNIX_CFLAGS... -I/usr/include/gio-unix-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/libmount -I/usr/include/blkid -pthread checking GIO_UNIX_LIBS... -lgio-2.0 -lgobject-2.0 -lglib-2.0 checking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for gudev-1.0 >= 145... 237checking GUDEV_CFLAGS... -I/usr/include/gudev-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread checking GUDEV_LIBS... -lgudev-1.0 -lgobject-2.0 -lglib-2.0 checking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for libnotify >= 0.4.0... 0.8.2checking LIBNOTIFY_CFLAGS... -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -pthread checking LIBNOTIFY_LIBS... -lnotify -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 checking whether to build with debugging support... yeschecking if gcc supports -Wall... yeschecking if gcc supports -Wextra... yeschecking if gcc supports -Wno-missing-field-initializers... yeschecking if gcc supports -Wno-unused-parameter... yeschecking if gcc supports -Wmissing-declarations... yeschecking if gcc supports -Wmissing-noreturn... yeschecking if gcc supports -Wpointer-arith... yeschecking if gcc supports -Wcast-align... yeschecking if gcc supports -Wformat... yeschecking if gcc supports -Wformat-security... yeschecking if gcc supports -Wformat-y2k... yeschecking if gcc supports -Winit-self... yeschecking if gcc supports -Wmissing-include-dirs... yeschecking if gcc supports -Wundef... yeschecking if gcc supports -Wredundant-decls... yeschecking if gcc supports -fstack-protector... yeschecking if gcc supports -g... yeschecking if gcc supports -Wshadow... yeschecking if gcc supports -Wdeclaration-after-statement... yeschecking if gcc supports -Wnested-externs... yeschecking if gcc supports -Wold-style-definition... yeschecking if gcc supports -Wall... yeschecking if gcc supports -Wextra... yeschecking if gcc supports -Wno-missing-field-initializers... yeschecking if gcc supports -Wno-unused-parameter... yeschecking if gcc supports -Wmissing-declarations... yeschecking if gcc supports -Wmissing-noreturn... yeschecking if gcc supports -Wpointer-arith... yeschecking if gcc supports -Wcast-align... yeschecking if gcc supports -Wformat... yeschecking if gcc supports -Wformat-security... yeschecking if gcc supports -Wformat-y2k... yeschecking if gcc supports -Winit-self... yeschecking if gcc supports -Wmissing-include-dirs... yeschecking if gcc supports -Wundef... yeschecking if gcc supports -Wredundant-decls... yeschecking if gcc supports -fstack-protector... yeschecking if gcc supports -g... yeschecking if gcc supports -Wshadow... yeschecking whether /usr/bin/ld -m elf_x86_64 accepts --as-needed... yeschecking whether /usr/bin/ld -m elf_x86_64 accepts -O1... yeschecking PLATFORM_CPPFLAGS... checking PLATFORM_CFLAGS... checking PLATFORM_LDFLAGS... checking whether to build the thunar-apr plugin... yeschecking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for libexif >= 0.6.0... 0.6.24checking EXIF_CFLAGS... checking EXIF_LIBS... -lexif checking whether to build the thunar-sbr plugin... yeschecking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for libpcre2-8 >= 10.0... 10.42checking PCRE2_CFLAGS... checking PCRE2_LIBS... -lpcre2-8 checking for pkg-config... (cached) /usr/bin/pkg-configchecking pkg-config is at least version 0.9.0... yeschecking for libxfce4panel-2.0 >= 4.12.0... 4.18.2checking LIBXFCE4PANEL_CFLAGS... -I/usr/include/xfce4/libxfce4panel-2.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cloudproviders -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/xfce4 -pthread checking LIBXFCE4PANEL_LIBS... -lxfce4panel-2.0 -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -Wl,--export-dynamic -lgmodule-2.0 -pthread -lglib-2.0 -lxfce4util -lglib-2.0 checking whether to build the thunar-tpa plugin... yeschecking whether to build the thunar-uca plugin... yeschecking whether to build the thunar-wallpaper plugin... yeschecking for xfconf-query... yeschecking that generated files are newer than configure... doneconfigure: creating ./config.statusconfig.status: creating Makefileconfig.status: creating docs/Makefileconfig.status: creating docs/design/Makefileconfig.status: creating docs/papers/Makefileconfig.status: creating docs/reference/Makefileconfig.status: creating docs/reference/thunarx/Makefileconfig.status: creating docs/reference/thunarx/version.xmlconfig.status: creating docs/reference/thunar/Makefileconfig.status: creating docs/reference/thunar/version.xmlconfig.status: creating examples/Makefileconfig.status: creating examples/tex-open-terminal/Makefileconfig.status: creating icons/Makefileconfig.status: creating icons/16x16/Makefileconfig.status: creating icons/24x24/Makefileconfig.status: creating icons/48x48/Makefileconfig.status: creating icons/128x128/Makefileconfig.status: creating icons/scalable/Makefileconfig.status: creating plugins/Makefileconfig.status: creating plugins/thunar-apr/Makefileconfig.status: creating plugins/thunar-sbr/Makefileconfig.status: creating plugins/thunar-sendto-email/Makefileconfig.status: creating plugins/thunar-tpa/Makefileconfig.status: creating plugins/thunar-uca/Makefileconfig.status: creating plugins/thunar-wallpaper/Makefileconfig.status: creating po/Makefile.inconfig.status: creating thunar/Makefileconfig.status: creating thunarx/Makefileconfig.status: creating thunarx/thunarx-3.pcconfig.status: creating thunarx/thunarx-config.hconfig.status: creating config.hconfig.status: executing depfiles commandsconfig.status: executing libtool commandsconfig.status: executing po/stamp-it commandsBuild Configuration:* GIO UNIX features: yes* GUDev (required for thunar-volman): yes* Mount notification support: yes* Debug Support: yes* GObject Instrospection support: yesAdditional Plugins:* Advanced Properties: yes* Simple Builtin Renamers: yes* Trash Panel Applet: yes* User Customizable Actions: yes* Wallpaper support: yesNow type "make" to compile.
Edited your answer to collapse the output, in order to keep the issue readable.
Hmm, not sure what is wrong for your build . Here some more things which possibly could help:
make clean to remove old stuff (or a fresh git clone in a new folder)
Make sure that you have the latest xfce-dev-tools installed (there were some changes on the Makefile recently which make use of new dev-tools makros .. though in theory the version of dev-tools should be checked in -/autogen.sh)
Hi Alexander @alexxcons, sorry I took so long to respond, you're putting in effort and here I am, forgetting...
So today I made both your patches work with latest master on my own fork, they work flawlessly!
start copy job 1 A -> B
start copy job 2 C -> B: gets queued, starts when job 1 is done
start copy job 3 B -> D: gets queued, starts when job 2 is done
Also, I added the only-when-idle mode instead of replacing it, so you get to keep only-same-device-mode.
But I had to use my launcher since the translations are missing, system laungae is not english for me and from what I can tell, they appear to be auto-generated.
Or would we need to add anything manually?
With the launcher it works fine.
Should I do the merge request or do you want to?
Of course the work was all done by you and I'd state that.
The compile errors (Manjaro) werse solved by replacing xfce4-dev-tools and libxfce4util with libxfce4util-devel and xfce4-dev-tools-devel from AUR (version missmatch to thunar source).
Sorry for the late reply. Glad you got it to build, thanks a lot for testing!
Your changes look good to me! Please go ahead and open a MR with them!
But I had to use my launcher since the translations are missing, system laungae is not english for me and from what I can tell, they appear to be auto-generated.
There are translators for most languages which will do the translations, once the MR got merged into master. So there is nothing special we need to do about it. (Prefixing a string with underscore, e.g. _("this will be translated") will trigger translations)