You are not logged in.
I have a distro that boots from iso and injects files into the system post boot. So I need a script to create a panel launcher and then add multiple items to that launcher. I have been tailoring https://gist.github.com/debxp/aada42c87 … 5b9a7921da which is pretty good but it only creates a single launcher.
I have successfully written script to scrape all my config files and create a *.desktop file for each item. Script creates the folder, adds a bunch of .desktop files to that folder, creates the launcher and then adds one item for one .desktop file. Even if I itenerate over item --create, I only get one item in the launcher.
I cannot figure out how to run xfconf-query to append additional .desktop files or if they all have to be submitted with a single xfconf-query call. When I do through the UI, I find an xml file that lists all the launchers, including mine, and items nested underneath. When I create via script I only find the launcher and one .desktop file in the XML. They are all in the directory, just not in the XML .I need the command to nest the other .desktop files under my launcher. Ideas?
Last edited by carver6 (2023-01-17 00:44:35)
Offline
Hello and welcome.
It would be helpful to know which version of Xfce and specifically xfce4-panel you are working with as functionality changes over time.
I cannot figure out how to run xfconf-query to append additional .desktop files or if they all have to be submitted with a single xfconf-query call.
Testing on xfce4-panel 4.19.0, all you need to do is drop the .desktop file into the launcher folder that was created - xfce4-panel will automatically notice the file and adjust the xfconf properties to accommodate (including adding the the application to the launcher).
I'll have to test this on earlier panel versions to see if it works that way.
If not, the xfconf property is an array property, so you would need to use something like:
xfconf-query -c xfce4-panel -p /plugins/plugin-XX/items -t string -t string -t string -s "123.desktop, 456.desktop,789.desktop"
...replace XX with the launcher ID. You could script something to create the command and then execute it.
Please remember to mark your thread [SOLVED] to make it easier for others to find
--- How To Ask For Help | FAQ | Developer Wiki | Community | Contribute ---
Offline
Looks like its 4.12 . I have 150 items to put in that menu. Good times! May split it up.
Even with the files in the launcher folder, if I restart XFCE it still only shows the first .desktop file. I suspect adding them all in one call may be the answer as suggested. I've searched a lot of docs. Launcher no problem. Launcher items is another matter. I'll give it a shot. Thanks.
Offline
You could also try to manually manipulate the xml file (if you can get it right). You need to make sure that you are not logged into Xfce, that the xfconf process isn't running, and that all the pieces in place for when the panel fires up (e.g desktop files, the new launcher plugin ID added to the list of plugins for the specific panel).
Please remember to mark your thread [SOLVED] to make it easier for others to find
--- How To Ask For Help | FAQ | Developer Wiki | Community | Contribute ---
Offline
Finally got it all hashed out. To resolve my issue it was
create_array='-t string -s VPN.desktop '
for i in $(ls *.desktop | grep -v "VPN"); do
create_array="${create_array} -t string -s ${i}"
done
xfconf-query -c xfce4-panel -p /plugins/plugin-${next_plugin}/items $create_array -a --create
Or based on a simple command:
xfconf-query -c xfce4-panel -p /plugins/plugin-XX/items -t string -s 123.desktop -t string -s 456.desktop -t string -s 789.desktop
There's a switch to append to the array but as suggested above, that does not work. Has to all be submitted in a single command. The prior command applied all desktop files under one launcher item.
*** next_plugin = launcher id
Last edited by carver6 (2023-01-20 03:52:06)
Offline
[ Generated in 0.008 seconds, 7 queries executed - Memory usage: 548.59 KiB (Peak: 549.43 KiB) ]