How to work with Nemo file manager?
Thiago Macieira
thiago at kde.org
Tue Jul 4 03:51:10 UTC 2023
On Monday, 3 July 2023 16:31:04 PDT Ahmad Ismail wrote:
> busctl --user call org.Nemo /org/Nemo org.Nemo.FileOperations CopyFile ssss
> file:$HOME/Downloads/test.txt test.txt file:$HOME/Downloads test2.txt
> busctl --user call org.Nemo /org/Nemo org.Nemo.FileOperations CopyURIs ass
> 2 file:$HOME/Downloads/test.txt file:$HOME/Downloads/test2.txt file:$HOME
>
> busctl --user tree org.Nemo --list | grep -P "window/\d+"
> busctl --user call org.Nemo /org/Nemo/window/1 org.freedesktop.DBus.Peer
> GetMachineId
>
> These solutions work for me. However, I am all invested in dbus. So, please
> let me know if anything can be improved here.
Two things with the above:
First, why Nemo? What if the user doesn't use Nemo? I have no idea what it is,
aside from a character who got lost in a kids movie and his dad had to look
find him. You should reconsider your usage if you can't guarantee that the user
will have this software installed. You're just copying files, you don't need a
file manager for that.
Second, you're not properly encoding URLs. Just prepending "file:" isn't
correct if the file name contains any URI special characters (for paths, that's
a question mark or a hash, but the application might balk if you fail to
encode some other characters too, like space). If you want to do anything that
isn't just a toy, you must encode the URIs correctly, which probably means
using a proper scripting language, not shell scripts.
If you do the latter, then you should also abandon using busctl or dbus-send
and just use that language's D-Bus binding.
Please note you haven't explained what you're trying to do yet. I am assuming
you're just trying to learn stuff (though it isn't clear if it is D-Bus, Nemo,
a combination of them or something else), not actually program a long-term
solution.
> Is it? Is there anything more we need to know or look at *to find the
> correct command line syntax*?
Yes. You should read the documentation for the API you're calling. D-Feet and
other bus-querying mechanisms only tell you that certain API exist, not what
they do, what their constraint and failure conditions are, etc. That
documentation may only exist in the form of the source code for the
application in question, so be prepared to read it. And if no such
documentation exists, you should reconsider using that API you've found...
maybe it's not meant for you to use in the first place.
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel DCAI Cloud Engineering
More information about the dbus
mailing list