You are not logged in.
Hello!
I want to know how to modify the panel (or create another one if it's easier), setting launchers and options, in command line.
I found the xfconf-query command but i've no idea how to use it and i don't understand the documentation http://docs.xfce.org/xfce/xfconf/xfconf-query
I hope you can help me!
Thanks
Offline
Why? Different settings for different users?
Offline
Setting options is easy. You can either look at the Settings Editor to see a graphic display of the configuration tree, or for xfce4-panels:
To view the panel IDs:
xfconf-query -c xfce4-panel -p /panels
To view the settings for a specific ID (in my case. panel-1):
xfconf-query -c xfce4-panel -p /panels/panel-1 -lv
To change one of the non-array settings (ie enable autohide):
xfconf-query -c xfce4-panel -p /panels/panel-1/autohide -s true
...and to disable it again:
xfconf-query -c xfce4-panel -p /panels/panel-1/autohide -s false
Working with array values is tougher because I don't think xfconf allows you to manipulate individual elements of the array. And since creating a new panel or a launcher requires array manipulation, it may not be possible. You might be able to create a wrapper function to read, store and re-write the array values (as a complete set), but I've never tested this.
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
thanks it works great!
where can i find the list of option to modify (like height, width, color, shortcurts,...)?
Offline
thanks it works great!
where can i find the list of option to modify (like height, width, color, shortcurts,...)?
I'm not sure I understand, but if you're asking which properties are available for modification, look at the Settings Editor (found in the Settings Manager or by running "xfce4-settings-editor").
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
Thanks!
i can modify what i want exept one thing :
How can i add a launcher?
Last edited by pandageek (2014-02-06 20:25:50)
Offline
As I explained earlier, it won't be easy (impossible?) because you need to manipulate array values (see panel-1/plugin-ids) and as far as I know, xfconf-query can't manipulate individual elements of an array (I might be wrong, but I can't find any info on how to do this). Thinking out loud, you may be able to create a wrapper function to read, store and re-write the array as a complete set, but these are uncharted waters (don't know if its possible).
As for what needs to be done, I would guess an array element would need to be added to /panel-Y/plugin-ids that corresponds to an entry in /plugins/plugin-XX of which the items array property points a desktop file in ~/.config/xfce4/panel/launcher-XX (where Y is a panel ID and where XX is a unique numeric value).
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
It's not a "command line" solution, but can't you just find the app you want in your desktop menu, drag (a representation of) it from there to the desktop, and then on to the panel you wish to place the launcher on?
Regards,
MDM
Offline
DISCLAIMER: Be very careful with this code. If possible, test on spare system or in a vm. This works on my test system (in this case fedora), but I can't vouch for others. You have been warned.
Here are some steps for manually adding the abiword launcher to the bottom panel.
Informational
# list all panel properties
xfconf-query -c xfce4-panel -p /panels -lv
# list panel IDs
xfconf-query -c xfce4-panel -p /panels | grep -v "Value is an\|^$"
# list all panel plugins info (going to model after existing launcher plugin)
xfconf-query -c xfce4-panel -p /plugins -lv
Add launcher to panel-2
# 1. determine launcher id number to use - must be unique. (using 16). Determine the id of the panel to add to - must exist (using 2).
# 2. create the launcher directory (~/.config/xfce4/panel/launcher-xx)
mkdir ~/.config/xfce4/panel/launcher-16
# 3. copy launcher's .desktop file into that folder
cp /usr/share/applications/abiword.desktop ~/.config/xfce4/panel/launcher-16
# 4. create the plugin xfconf entry
# 4a. create the plugin group
xfconf-query -c xfce4-panel -p /plugins/plugin-16 -t string -s "launcher" --create
# 4b. create the plugin items property
xfconf-query -c xfce4-panel -p /plugins/plugin-16/items -t string -s "abiword.desktop" -a --create
# 5. add the new plugin ID to the existing panel array of plugins
# 5a. list the current contents of the array (make note of results for future use)
xfconf-query -c xfce4-panel -p /panels/panel-2/plugin-ids| grep -v "Value is an\|^$"
# 5b. delete the plugin-ids array
xfconf-query -c xfce4-panel -p /panels/panel-2/plugin-ids -rR
# 5c. re-create the array using the old existing ids + the new id, placing them in the order they are to be displayed (inserting 16)
xfconf-query -c xfce4-panel -p /panels/panel-2/plugin-ids -t int -s 7 -t int -s 8 -t int -s 9 -t int -s 16 -t int -s 10 -t int -s 11 -t int -s 12 -t int -s 13 -t int -s 14 --create
# 6. restart xfce4-panel
xfce4-panel -r
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
# 3. copy launcher's .desktop file into that folder
cp /usr/share/applications/abiword.desktop ~/.config/xfce4/panel/launcher-16
Not sure if I'm supposed to resurrect an old thread such as this one, but here's a little Perl script to create a typical ".desktop" file for an XFCE launcher item:
#!/usr/bin/perl
use Glib ;
$x_xfce_source = $ARGV [ 0 ] ;
$x_xfce_dest = $ARGV [ 1 ] ;
$keyfile = Glib::KeyFile -> new ;
$keyfile -> load_from_file ( $x_xfce_source , 'G_KEY_FILE_NONE' ) ;
$keyfile -> set_string ( 'Desktop Entry', 'X-XFCE-Source' , Glib -> filename_to_uri ( $x_xfce_source , undef ) ) ;
open OUTPUT_FILE , '>' . $x_xfce_dest ;
print OUTPUT_FILE $keyfile -> to_data ;
close OUTPUT_FILE ;
It requires two command-line arguments:
The full path to the source ".desktop" file, e.g., /usr/share/applications/abiword.desktop;
The full path to the destination file, e.g., ~/.config/xfce4/panel/launcher-16/147481732321.desktop.
By the way, I have recently developed a Bash script that sets up the XFCE panels for me. If anyone is interested, I won't mind posting it here.
Offline
Thanks for posting the script - I'm sure it will be helpful
By the way, I have recently developed a Bash script that sets up the XFCE panels for me. If anyone is interested, I won't mind posting it here.
Feel free to post it - I'm sure it will be useful to someone and this will be a good reference place for it.
BTW, welcome to the forum.
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
If you want to develop a shell script to set up your Xfce panels, then you will obviously have to understand how you can access the Xfce configuration from the command line. In this post, I will explain what I learned in order to write such a script.
The configuration of the Xfce desktop—including the panels—is maintained by the Xfconf storage system. As the Xfce documentation describes it:
Xfconf is a hierarchical (tree-like) configuration system where the immediate child nodes of the root are called “channels”. All settings beneath the channel nodes are called “properties”.
To access the Xfconf configuration data from the command line, you can run the “xfconf-query” utility. In its simplest form, the xfconf-query command will list the Xfconf channels—e.g.:
$ xfconf-query --list
The output from this command will look something like this:
Channels:
thunar-volman
xsettings
displays
ristretto
thunar
xfce4-desktop
xfce4-power-manager
xfce4-mixer
xfce4-session
xfce4-panel
xfce4-appfinder
xfce4-keyboard-shortcuts
xfce4-settings-editor
xfwm4
keyboards
If you want to access the panel settings, then you can list the contents of the “xfce4-panel” channel:
$ xfconf-query --channel 'xfce4-panel' --list
This command will list all properties that the Xfconf system maintains about the panels and the plugins that you added to them.
To view the value of one specific property, you can specify it on the “xfconf-query” command line—e.g.:
$ xfconf-query --channel 'xfce4-panel' --property '/panels'
Assuming that you are using a dual-panel setup, the output will, then, look like the following:
Value is an array with 2 items:
1
2
Note: The actual panel ids may be different. Under Xubuntu, for instance, panel ids apparently start counting from 0, instead of 1, by default.
You can also list all subproperties of a specific property, like so:
$ xfconf-query --channel 'xfce4-panel' --property '/panels' --list
If you want to obtain not only the names, but also the values of the listed properties, then you can request verbose output:
$ xfconf-query --channel 'xfce4-panel' --property '/panels' --list --verbose
Some values may be displayed as “<<UNSUPPORTED>>”; these are array values, which will get displayed only if you query their specific properties—e.g.:
$ xfconf-query --channel 'xfce4-panel' --property '/panels/panel-1/plugin-ids'
Perhaps contrary to what its name implies, the xfconf-query command can also update values in the Xfconf system. Furthermore, it can optionally create a property if it does not yet exist.
To set a single-valued (i.e., non-array) property, you will have to specify both its type and its value. The following types are supported:
“bool”—A boolean value, either “true” or “false”;
“int”—A 32-bit signed integer value, in the range from -2·147·483·648 through 2·147·483·647;
“uint”—A 32-bit unsigned integer value, in the range from 0 through 4·294·967·295;
“int64”—A 64-bit signed integer value, in the range from -9·223·372·036·854·775·808 through 9·223·372·036·854·775·807;
“uint64”—A 64-bit unsigned integer value, in the range from 0 through 18·446·744·073·709·551·615;
“double”—Presumably a double-precision floating-point value, even though it will be stored as a fixed-point value instead, with six decimal places following the decimal point;
“string”—A character string.
Of course, the value to which you want to set a property will have to match its type.
(P.S.: Many thanks to ToZ and jharms for pointing out the existence of the additional integer types and of the “double” type.)
Note: Positive integer values can be expressed not only in decimal notation, but also as hexadecimal or octal numbers. For instance, the biggest 32-bit signed integer value is 2147483647, which can also be written as 0x7FFFFFFF (i.e., with a leading "0x" to denote hexadecimal), or as 017777777777 (i.e., with a leading "0" to denote octal). The absolute value of a negative number can also be expressed in any of the three supported notations, e.g., -2147483647 is the same value as -0x7FFFFFFF or as -017777777777. There is one caveat to this feature, however, in that the most negative value—i.e., -2147483648, in the case of 32-bit signed integers—can only be expressed in decimal, since its absolute value (i.e., 2147483648, or 0x80000000, or 020000000000) is out of range for the type.
As an example, you may decide that you want to modify the size of your first panel (i.e., for a horizontal panel, its height, or, for a vertical panel, its width). First, you may want to find out what its current size is:
$ xfconf-query --channel 'xfce4-panel' --property '/panels/panel-1/size'
The following command will, then, modify the panel size to 32:
$ xfconf-query --channel 'xfce4-panel' --property '/panels/panel-1/size' --type int --set 32
The above command will happily update an existing property, but it will refuse to create one that does not yet exist. If you want to make sure that the property will be set, even if it is a new one, then you will have to specify the “--create” option:
$ xfconf-query --channel 'xfce4-panel' --property '/panels/panel-1/size' --create --type int --set 32
To set an array property, you will have to repeat the “--type” and “--set” options for each successive array element. There is no option to remove an element from an array, or to add an element to it; you will have to set the entire array from scratch whenever you want to modify it in any way.
For instance, if you want to add a panel, then you will first have to query the currently active panel ids:
$ xfconf-query --channel 'xfce4-panel' --property '/panels'
Value is an array with 2 items:
1
2
The following command will, then, add a third panel to your setup:
$ xfconf-query --channel 'xfce4-panel' --property '/panels' --type int --set 1 --type int --set 2 --type int --set 3
Even though the new panel will not show up on your desktop, it will have been added to the “/panels” array. To actually display the new panel, you can restart the running panel instance:
$ xfce4-panel --restart
Note that, in order to set up an array, you will have to specify at least two values; if you enter only one value, then the xfconf-query command will create a single-valued property instead. If you ever need to create an array with just a single value, then you will have to use the “--force-array” option—e.g., to request just a single panel:
$ xfconf-query --channel 'xfce4-panel' --property '/panels' --force-array --type int --set 1
Note: The --force-array option is supported, but entirely optional, if you specify multiple values on an array assignment.
If you created a third panel, as discussed above, and subsequently updated the “/panels” array to remove the new panel again, then any of its properties will remain present in the Xfconf system—as the following command will demonstrate:
$ xfconf-query --channel 'xfce4-panel' --property '/panels/panel-3' --list
Unless you made any modifications to its setup, only the “/panels/panel-3/position” property will be listed.
To delete the value of a property, you can run the xfconf-query command with the “--reset” option—e.g.:
$ xfconf-query --channel 'xfce4-panel' --property '/panels/panel-3/position' --reset
Additionally, if you want to delete a property, and all properties beneath it, then you can add the “--recursive” option to the command:
$ xfconf-query --channel 'xfce4-panel' --property '/panels/panel-3' --reset --recursive
Once you understand how you can access the “Xfconf” system from the command line, you are ready to study the types of plugins that can be added to the Xfce panels, and the methods to configure them. Some plugins, such as the Clock or the Separator, will keep their configuration entirely within the “Xfconf” storage hierarchy, while other plugins, such as the Network Monitor or the Weather Update, store their settings in external resource files. In addition, the Launcher plugin is a special case, in that it uses “.desktop” files to determine which items it will provide.
Last edited by luvr (2016-10-14 14:23:16)
Offline
The code below is an example of my bash script to set up the Xfce panel configuration.
It is heavily data-driven, in that it consists of a bunch of array declarations that describe the panels and the plugins that must be added to them, in a sort of top-down tree-like hierarchy.
The top of the hierarchy is the “XFCE_PANELS” array, which names the panels that you want to create. The example below, for instance, will set up two panels, which it names “TOP_PANEL” and “BOTTOM_PANEL”. Each of these is the name of another array, which contains two elements; the first element identifies the panel properties (e.g., “TOP_PANEL_PROPERTIES”), while the second one identifies the panel plugins (e.g., “TOP_PANEL_PLUGINS”).
The panel properties are represented by yet another array, which identifies one or more subsets of properties—each of which is represented by a further array that lists the individual properties that make up the group. Next, each actual property is represented by a three-element array, which specifies the property name, the property type, and the property value.
The panel plugins are listed in an array, of which each element identifies a plugin. Each individual plugin is represented by a three-element array, in which the first element specifies the plugin name, the second element is an indicator of the plugin type, and the third element identifies a further variable that, depending on the plugin type, will be either an array or a string.
The script defines five plugin types:
“PluginProperties”—The plugin will store its configuration settings entirely in the Xfconf storage tree. Its properties will be listed in an array.
“PluginResources”—The plugin will store its configuration settings in a resource file. Its properties will be listed in a string variable.
“PluginLauncher”—The plugin is a launcher. Its configuration will be listed in two arrays, one for the launcher properties, and another one for the launcher items. Note that the launcher properties, as listed in the example code, will all remain unset (i.e., their defaults will be used).
“PluginNetLoad”—The plugin is the Network Monitor. This is actually a special case of the PluginResources type. It is handled separately, because the Network Monitor plugin needs to know the name of the network interface that it must monitor. However, the number of network interfaces, and their names, are system-dependent, and must, therefore, be dynamically filled in. Note that the list of network interface names (excluding the local loopback interface) is stored in the “IP_LINKS” array variable, near the top of the script.
The empty string—The plugin does not expose any configuration settings. No further setup is required.
A plugin property is represented by a three-element array that specifies the property name, the property type, and the property value; if the value is the empty string, then the property will remain unset (i.e., its default will be used).
A plugin resource string is simply a verbatim copy of the resource file of the plugin.
Two types of launcher items are supported by the script:
“LauncherSourceFile”—The item value is the full path to the “.desktop” file from which the item file must be created.
“LauncherSourceString”—The item value is the name of a string variable that is a verbatim copy of the item file.
Notes:
The script is meant to be run on a Debian system, and begins by testing if the computer is running Debian, and if the desktop environment is Xfce. To my knowledge, however, the script does not use any Debian-specific features, and it should be perfectly safe to remove the test for the system distribution name (or to make it test for a different distribution). I haven't tested it on any system except Debian, though.
The panel setup as created by this code is just meant as a demonstration. For instance, it adds both a Whisker Menu and an Applications Menu to the top panel—which is pretty unlikely to be used in practice. In addition, it sets up a custom launcher that does nothing but display the “/etc/hosts” file—again, this will not be considered particularly useful in practice.
One of my major goals in developing this script was avoiding the need to manually keep track of panel ids and plugin ids. Thus, if you want to adapt the script to your own preference, you can simply list the panels that you wish to have it create for you, and the plugins that you want it to add to each panel, without worrying about their ids. The script will automatically assign the appropriate ids to the panels and plugins.
#!/bin/bash
declare -r XFCE_PANEL_DIRECTORY="${HOME}"'/.config/xfce4/panel'
declare -ar IP_LINKS=( $(ip -brief link | sed --regexp-extended --quiet --expression='/^lo\b/! s/[[:space:]].*$//p' | sort) )
declare -ar XFCE_PANELS=( 'TOP_PANEL' 'BOTTOM_PANEL' )
declare -ar TOP_PANEL=( 'TOP_PANEL_PROPERTIES' 'TOP_PANEL_PLUGINS' )
declare -ar BOTTOM_PANEL=( 'BOTTOM_PANEL_PROPERTIES' 'BOTTOM_PANEL_PLUGINS' )
declare -ar TOP_PANEL_PROPERTIES=( 'TOP_PANEL_PROPERTIES_POSITION' 'COMMON_PANEL_PROPERTIES' )
declare -ar BOTTOM_PANEL_PROPERTIES=( 'BOTTOM_PANEL_PROPERTIES_POSITION' 'COMMON_PANEL_PROPERTIES' )
declare -ar TOP_PANEL_PROPERTIES_POSITION=(
'PANEL_PROPERTY_POSITION_TOP'
)
declare -ar BOTTOM_PANEL_PROPERTIES_POSITION=(
'PANEL_PROPERTY_POSITION_BOTTOM'
)
declare -ar COMMON_PANEL_PROPERTIES=(
'PANEL_PROPERTY_AUTOHIDE_BEHAVIOR'
'PANEL_PROPERTY_BACKGROUND_ALPHA'
'PANEL_PROPERTY_BACKGROUND_STYLE'
'PANEL_PROPERTY_DISABLE_STRUTS'
'PANEL_PROPERTY_ENTER_OPACITY'
'PANEL_PROPERTY_LEAVE_OPACITY'
'PANEL_PROPERTY_LENGTH'
'PANEL_PROPERTY_LENGTH_ADJUST'
'PANEL_PROPERTY_MODE'
'PANEL_PROPERTY_NROWS'
'PANEL_PROPERTY_POSITION_LOCKED'
'PANEL_PROPERTY_SIZE'
'PANEL_PROPERTY_SPAN_MONITORS'
)
declare -ar PANEL_PROPERTY_AUTOHIDE_BEHAVIOR=( 'autohide-behavior' 'int' '0' )
declare -ar PANEL_PROPERTY_BACKGROUND_ALPHA=( 'background-alpha' 'int' '80' )
declare -ar PANEL_PROPERTY_BACKGROUND_STYLE=( 'background-style' 'int' '0' )
declare -ar PANEL_PROPERTY_DISABLE_STRUTS=( 'disable-struts' 'bool' 'false' )
declare -ar PANEL_PROPERTY_ENTER_OPACITY=( 'enter-opacity' 'int' '100' )
declare -ar PANEL_PROPERTY_LEAVE_OPACITY=( 'leave-opacity' 'int' '100' )
declare -ar PANEL_PROPERTY_LENGTH=( 'length' 'int' '100' )
declare -ar PANEL_PROPERTY_LENGTH_ADJUST=( 'length-adjust' 'bool' 'false' )
declare -ar PANEL_PROPERTY_MODE=( 'mode' 'int' '0' )
declare -ar PANEL_PROPERTY_NROWS=( 'nrows' 'int' '1' )
declare -ar PANEL_PROPERTY_POSITION_BOTTOM=( 'position' 'string' 'p=8;x=0;y=0' )
declare -ar PANEL_PROPERTY_POSITION_LOCKED=( 'position-locked' 'bool' 'true' )
declare -ar PANEL_PROPERTY_POSITION_TOP=( 'position' 'string' 'p=6;x=0;y=0' )
declare -ar PANEL_PROPERTY_SIZE=( 'size' 'int' '24' )
declare -ar PANEL_PROPERTY_SPAN_MONITORS=( 'span-monitors' 'bool' 'false' )
declare -ar TOP_PANEL_PLUGINS=(
'PANEL_PLUGIN_WHISKER_MENU'
'PANEL_PLUGIN_APPLICATIONS_MENU'
'PANEL_PLUGIN_PLACES'
'PANEL_PLUGIN_DIRECTORY_MENU'
'PANEL_PLUGIN_SCREENSHOT'
'PANEL_PLUGIN_LAUNCHER_WEB_BROWSER'
'PANEL_PLUGIN_LAUNCHER_HOSTS_FILE_VIEWER'
'PANEL_PLUGIN_LAUNCHER_LIBREOFFICE'
'PANEL_PLUGIN_LAUNCHER_LIBREOFFICE_WRITER'
'PANEL_PLUGIN_LAUNCHER_LIBREOFFICE_CALC'
'PANEL_PLUGIN_LAUNCHER_LIBREOFFICE_IMPRESS'
'PANEL_PLUGIN_LAUNCHER_LIBREOFFICE_DRAW'
'PANEL_PLUGIN_LAUNCHER_LIBREOFFICE_BASE'
'PANEL_PLUGIN_LAUNCHER_LIBREOFFICE_MATH'
'PANEL_PLUGIN_SEPARATOR_EXPANDING'
'PANEL_PLUGIN_NOTIFICATION_AREA'
'PANEL_PLUGIN_PULSEAUDIO'
'PANEL_PLUGIN_BATTERY'
'PANEL_PLUGIN_WEATHER_UPDATE'
'PANEL_PLUGIN_SEPARATOR_TRANSPARENT'
'PANEL_PLUGIN_CLOCK'
'PANEL_PLUGIN_ACTION_BUTTONS'
)
declare -ar BOTTOM_PANEL_PLUGINS=(
'PANEL_PLUGIN_SHOW_DESKTOP'
'PANEL_PLUGIN_SEPARATOR_DOTS'
'PANEL_PLUGIN_WINDOW_MENU'
'PANEL_PLUGIN_SEPARATOR_DOTS'
'PANEL_PLUGIN_WINDOW_BUTTONS'
'PANEL_PLUGIN_SEPARATOR_EXPANDING'
'PANEL_PLUGIN_WORKSPACE_SWITCHER'
'PANEL_PLUGIN_CPU_GRAPH'
'PANEL_PLUGIN_NETWORK_MONITOR'
'PANEL_PLUGIN_TRASH_APPLET'
)
declare -ar PANEL_PLUGIN_ACTION_BUTTONS=( 'actions' 'PluginProperties' 'ACTION_BUTTONS_PLUGIN_PROPERTIES' )
declare -ar PANEL_PLUGIN_APPLICATIONS_MENU=( 'applicationsmenu' 'PluginProperties' 'APPLICATIONS_MENU_PLUGIN_PROPERTIES' )
declare -ar PANEL_PLUGIN_BATTERY=( 'battery' 'PluginResources' 'BATTERY_PLUGIN_RESOURCES' )
declare -ar PANEL_PLUGIN_CLOCK=( 'clock' 'PluginProperties' 'CLOCK_PLUGIN_PROPERTIES' )
declare -ar PANEL_PLUGIN_CPU_GRAPH=( 'cpugraph' 'PluginResources' 'CPU_GRAPH_PLUGIN_RESOURCES' )
declare -ar PANEL_PLUGIN_DIRECTORY_MENU=( 'directorymenu' 'PluginProperties' 'DIRECTORY_MENU_PLUGIN_PROPERTIES' )
declare -ar PANEL_PLUGIN_LAUNCHER_HOSTS_FILE_VIEWER=( 'launcher' 'PluginLauncher' 'LAUNCHER_HOSTS_FILE_VIEWER_PLUGIN_SETUP' )
declare -ar PANEL_PLUGIN_LAUNCHER_LIBREOFFICE=( 'launcher' 'PluginLauncher' 'LAUNCHER_LIBREOFFICE_SETUP' )
declare -ar PANEL_PLUGIN_LAUNCHER_LIBREOFFICE_BASE=( 'launcher' 'PluginLauncher' 'LAUNCHER_LIBREOFFICE_BASE_PLUGIN_SETUP' )
declare -ar PANEL_PLUGIN_LAUNCHER_LIBREOFFICE_CALC=( 'launcher' 'PluginLauncher' 'LAUNCHER_LIBREOFFICE_CALC_PLUGIN_SETUP' )
declare -ar PANEL_PLUGIN_LAUNCHER_LIBREOFFICE_DRAW=( 'launcher' 'PluginLauncher' 'LAUNCHER_LIBREOFFICE_DRAW_PLUGIN_SETUP' )
declare -ar PANEL_PLUGIN_LAUNCHER_LIBREOFFICE_IMPRESS=( 'launcher' 'PluginLauncher' 'LAUNCHER_LIBREOFFICE_IMPRESS_PLUGIN_SETUP' )
declare -ar PANEL_PLUGIN_LAUNCHER_LIBREOFFICE_MATH=( 'launcher' 'PluginLauncher' 'LAUNCHER_LIBREOFFICE_MATH_PLUGIN_SETUP' )
declare -ar PANEL_PLUGIN_LAUNCHER_LIBREOFFICE_WRITER=( 'launcher' 'PluginLauncher' 'LAUNCHER_LIBREOFFICE_WRITER_PLUGIN_SETUP' )
declare -ar PANEL_PLUGIN_LAUNCHER_WEB_BROWSER=( 'launcher' 'PluginLauncher' 'LAUNCHER_WEB_BROWSER_PLUGIN_SETUP' )
declare -ar PANEL_PLUGIN_NETWORK_MONITOR=( 'netload' 'PluginNetLoad' 'NETWORK_MONITOR_PLUGIN_TEMPLATE_RC' )
declare -ar PANEL_PLUGIN_NOTIFICATION_AREA=( 'systray' 'PluginProperties' 'NOTIFICATION_AREA_PLUGIN_PROPERTIES' )
declare -ar PANEL_PLUGIN_PLACES=( 'places' 'PluginProperties' 'PLACES_PLUGIN_PROPERTIES' )
declare -ar PANEL_PLUGIN_PULSEAUDIO=( 'pulseaudio' 'PluginProperties' 'PULSEAUDIO_PLUGIN_PROPERTIES' )
declare -ar PANEL_PLUGIN_SCREENSHOT=( 'screenshooter' 'PluginResources' '' )
declare -ar PANEL_PLUGIN_SEPARATOR_DOTS=( 'separator' 'PluginProperties' 'SEPARATOR_DOTS_PLUGIN_PROPERTIES' )
declare -ar PANEL_PLUGIN_SEPARATOR_EXPANDING=( 'separator' 'PluginProperties' 'SEPARATOR_EXPANDING_PLUGIN_PROPERTIES' )
declare -ar PANEL_PLUGIN_SEPARATOR_TRANSPARENT=( 'separator' 'PluginProperties' 'SEPARATOR_TRANSPARENT_PLUGIN_PROPERTIES' )
declare -ar PANEL_PLUGIN_SHOW_DESKTOP=( 'showdesktop' '' '' )
declare -ar PANEL_PLUGIN_TRASH_APPLET=( 'thunar-tpa' '' '' )
declare -ar PANEL_PLUGIN_WEATHER_UPDATE=( 'weather' 'PluginResources' 'WEATHER_PLUGIN_RESOURCES' )
declare -ar PANEL_PLUGIN_WHISKER_MENU=( 'whiskermenu' 'PluginResources' '' )
declare -ar PANEL_PLUGIN_WINDOW_BUTTONS=( 'tasklist' 'PluginProperties' 'WINDOW_BUTTONS_PLUGIN_PROPERTIES' )
declare -ar PANEL_PLUGIN_WINDOW_MENU=( 'windowmenu' 'PluginProperties' 'WINDOW_MENU_PLUGIN_PROPERTIES' )
declare -ar PANEL_PLUGIN_WORKSPACE_SWITCHER=( 'pager' 'PluginProperties' 'WORKSPACE_SWITCHER_PLUGIN_PROPERTIES' )
declare -ar ACTION_BUTTONS_PLUGIN_PROPERTIES=(
'ACTION_BUTTONS_APPEARANCE'
'ACTION_BUTTONS_ASK_CONFIRMATION'
'ACTION_BUTTONS_INVERT_ORIENTATION'
'ACTION_BUTTONS_ITEMS'
)
declare -ar APPLICATIONS_MENU_PLUGIN_PROPERTIES=(
'APPLICATIONS_MENU_BUTTON_ICON'
'APPLICATIONS_MENU_BUTTON_TITLE'
'APPLICATIONS_MENU_CUSTOM_MENU'
'APPLICATIONS_MENU_CUSTOM_MENU_FILE'
'APPLICATIONS_MENU_SHOW_BUTTON_TITLE'
'APPLICATIONS_MENU_SHOW_GENERIC_NAMES'
'APPLICATIONS_MENU_SHOW_MENU_ICONS'
'APPLICATIONS_MENU_SHOW_TOOLTIPS'
)
declare -ar CLOCK_PLUGIN_PROPERTIES=(
'CLOCK_DIGITAL_FORMAT'
'CLOCK_FLASH_SEPARATORS'
'CLOCK_FUZZINESS'
'CLOCK_MODE'
'CLOCK_SHOW_GRID'
'CLOCK_SHOW_INACTIVE'
'CLOCK_SHOW_MERIDIEM'
'CLOCK_SHOW_MILITARY'
'CLOCK_SHOW_SECONDS'
'CLOCK_TIMEZONE'
'CLOCK_TOOLTIP_FORMAT'
'CLOCK_TRUE_BINARY'
)
declare -ar DIRECTORY_MENU_PLUGIN_PROPERTIES=(
'DIRECTORY_MENU_BASE_DIRECTORY'
'DIRECTORY_MENU_FILE_PATTERN'
'DIRECTORY_MENU_HIDDEN_FILES'
'DIRECTORY_MENU_ICON_NAME'
)
declare -ar NOTIFICATION_AREA_PLUGIN_PROPERTIES=(
'NOTIFICATION_AREA_NAMES_VISIBLE'
'NOTIFICATION_AREA_SHOW_FRAME'
'NOTIFICATION_AREA_SIZE_MAX'
)
declare -ar PLACES_PLUGIN_PROPERTIES=(
'PLACES_BUTTON_LABEL'
'PLACES_MOUNT_OPEN_VOLUMES'
'PLACES_SEARCH_CMD'
'PLACES_SHOW_BOOKMARKS'
'PLACES_SHOW_BUTTON_TYPE'
'PLACES_SHOW_ICONS'
'PLACES_SHOW_RECENT'
'PLACES_SHOW_RECENT_CLEAR'
'PLACES_SHOW_VOLUMES'
)
declare -ar PULSEAUDIO_PLUGIN_PROPERTIES=(
'PULSEAUDIO_ENABLE_KEYBOARD_SHORTCUTS'
'PULSEAUDIO_MIXER_COMMAND'
'PULSEAUDIO_SHOW_NOTIFICATIONS'
)
declare -ar SEPARATOR_DOTS_PLUGIN_PROPERTIES=(
'SEPARATOR_EXPAND_NO'
'SEPARATOR_STYLE_DOTS'
)
declare -ar SEPARATOR_EXPANDING_PLUGIN_PROPERTIES=(
'SEPARATOR_EXPAND_ON'
'SEPARATOR_STYLE_TRANSPARENT'
)
declare -ar SEPARATOR_TRANSPARENT_PLUGIN_PROPERTIES=(
'SEPARATOR_EXPAND_NO'
'SEPARATOR_STYLE_TRANSPARENT'
)
declare -ar WINDOW_BUTTONS_PLUGIN_PROPERTIES=(
'WINDOW_BUTTONS_FLAT_BUTTONS'
'WINDOW_BUTTONS_GROUPING'
'WINDOW_BUTTONS_INCLUDE_ALL_MONITORS'
'WINDOW_BUTTONS_INCLUDE_ALL_WORKSPACES'
'WINDOW_BUTTONS_MIDDLE_CLICK'
'WINDOW_BUTTONS_SHOW_HANDLE'
'WINDOW_BUTTONS_SHOW_LABELS'
'WINDOW_BUTTONS_SHOW_ONLY_MINIMIZED'
'WINDOW_BUTTONS_SHOW_WIREFRAMES'
'WINDOW_BUTTONS_SORT_ORDER'
'WINDOW_BUTTONS_SWITCH_WORKSPACE_ON_UNMINIMIZE'
'WINDOW_BUTTONS_WINDOW_SCROLLING'
)
declare -ar WINDOW_MENU_PLUGIN_PROPERTIES=(
'WINDOW_MENU_ALL_WORKSPACES'
'WINDOW_MENU_STYLE'
'WINDOW_MENU_URGENCY_NOTIFICATION'
'WINDOW_MENU_WORKSPACE_ACTIONS'
'WINDOW_MENU_WORKSPACE_NAMES'
)
declare -ar WORKSPACE_SWITCHER_PLUGIN_PROPERTIES=(
'WORKSPACE_SWITCHER_ROWS'
'WORKSPACE_SWITCHER_WORKSPACE_SCROLLING'
)
declare -ar ACTION_BUTTONS_APPEARANCE=( 'appearance' 'int' '0' )
declare -ar ACTION_BUTTONS_ASK_CONFIRMATION=( 'ask-confirmation' 'bool' 'true' )
declare -ar ACTION_BUTTONS_INVERT_ORIENTATION=( 'invert-orientation' 'bool' 'false' )
declare -ar ACTION_BUTTONS_ITEMS=( 'items' 'array' 'ACTION_BUTTONS_ITEMS_ARRAY' )
declare -ar APPLICATIONS_MENU_BUTTON_ICON=( 'button-icon' 'string' 'debian-swirl' )
declare -ar APPLICATIONS_MENU_BUTTON_TITLE=( 'button-title' 'string' 'Applications' )
declare -ar APPLICATIONS_MENU_CUSTOM_MENU=( 'custom-menu' 'bool' 'false' )
declare -ar APPLICATIONS_MENU_CUSTOM_MENU_FILE=( 'custom-menu-file' 'string' '' )
declare -ar APPLICATIONS_MENU_SHOW_BUTTON_TITLE=( 'show-button-title' 'bool' 'true' )
declare -ar APPLICATIONS_MENU_SHOW_GENERIC_NAMES=( 'show-generic-names' 'bool' 'false' )
declare -ar APPLICATIONS_MENU_SHOW_MENU_ICONS=( 'show-menu-icons' 'bool' 'true' )
declare -ar APPLICATIONS_MENU_SHOW_TOOLTIPS=( 'show-tooltips' 'bool' 'true' )
declare -ar CLOCK_DIGITAL_FORMAT=( 'digital-format' 'string' '%a %F %R' )
declare -ar CLOCK_FLASH_SEPARATORS=( 'flash-separators' 'bool' 'false' )
declare -ar CLOCK_FUZZINESS=( 'fuzziness' 'int' '' )
declare -ar CLOCK_MODE=( 'mode' 'int' '2' )
declare -ar CLOCK_SHOW_GRID=( 'show-grid' 'bool' '' )
declare -ar CLOCK_SHOW_INACTIVE=( 'show-inactive' 'bool' '' )
declare -ar CLOCK_SHOW_MERIDIEM=( 'show-meridiem' 'bool' '' )
declare -ar CLOCK_SHOW_MILITARY=( 'show-military' 'bool' '' )
declare -ar CLOCK_SHOW_SECONDS=( 'show-seconds' 'bool' '' )
declare -ar CLOCK_TIMEZONE=( 'timezone' 'string' '' )
declare -ar CLOCK_TOOLTIP_FORMAT=( 'tooltip-format' 'string' '%A, %-d %B %Y%t%T %Z (%z)%nDay %Y.%j%nWeek %G.%V' )
declare -ar CLOCK_TRUE_BINARY=( 'true-binary' 'bool' '' )
declare -ar DIRECTORY_MENU_BASE_DIRECTORY=( 'base-directory' 'string' "${HOME}" )
declare -ar DIRECTORY_MENU_FILE_PATTERN=( 'file-pattern' 'string' '' )
declare -ar DIRECTORY_MENU_HIDDEN_FILES=( 'hidden-files' 'bool' 'false' )
declare -ar DIRECTORY_MENU_ICON_NAME=( 'icon-name' 'string' 'user-home' )
declare -ar NOTIFICATION_AREA_NAMES_VISIBLE=( 'names-visible' 'array' '' )
declare -ar NOTIFICATION_AREA_SHOW_FRAME=( 'show-frame' 'bool' 'false' )
declare -ar NOTIFICATION_AREA_SIZE_MAX=( 'size-max' 'int' '22' )
declare -ar PLACES_BUTTON_LABEL=( 'button-label' 'string' 'Places' )
declare -ar PLACES_MOUNT_OPEN_VOLUMES=( 'mount-open-volumes' 'bool' 'false' )
declare -ar PLACES_SEARCH_CMD=( 'search-cmd' 'string' '' )
declare -ar PLACES_SHOW_BOOKMARKS=( 'show-bookmarks' 'bool' 'true' )
declare -ar PLACES_SHOW_BUTTON_TYPE=( 'show-button-type' 'int' '2' )
declare -ar PLACES_SHOW_ICONS=( 'show-icons' 'bool' 'true' )
declare -ar PLACES_SHOW_RECENT=( 'show-recent' 'bool' 'true' )
declare -ar PLACES_SHOW_RECENT_CLEAR=( 'show-recent-clear' 'bool' 'true' )
declare -ar PLACES_SHOW_VOLUMES=( 'show-volumes' 'bool' 'true' )
declare -ar PULSEAUDIO_ENABLE_KEYBOARD_SHORTCUTS=( 'enable-keyboard-shortcuts' 'bool' 'true' )
declare -ar PULSEAUDIO_MIXER_COMMAND=( 'mixer-command' 'string' 'pavucontrol' )
declare -ar PULSEAUDIO_SHOW_NOTIFICATIONS=( 'show-notifications' 'bool' 'true' )
declare -ar SEPARATOR_EXPAND_NO=( 'expand' 'bool' 'false' )
declare -ar SEPARATOR_EXPAND_ON=( 'expand' 'bool' 'true' )
declare -ar SEPARATOR_STYLE_TRANSPARENT=( 'style' 'int' '0' )
declare -ar SEPARATOR_STYLE_DOTS=( 'style' 'int' '3' )
declare -ar WINDOW_BUTTONS_FLAT_BUTTONS=( 'flat-buttons' 'bool' 'false' )
declare -ar WINDOW_BUTTONS_GROUPING=( 'grouping' 'int' '0' )
declare -ar WINDOW_BUTTONS_INCLUDE_ALL_MONITORS=( 'include-all-monitors' 'bool' 'true' )
declare -ar WINDOW_BUTTONS_INCLUDE_ALL_WORKSPACES=( 'include-all-workspaces' 'bool' 'false' )
declare -ar WINDOW_BUTTONS_MIDDLE_CLICK=( 'middle-click' 'int' '0' )
declare -ar WINDOW_BUTTONS_SHOW_HANDLE=( 'show-handle' 'bool' 'false' )
declare -ar WINDOW_BUTTONS_SHOW_LABELS=( 'show-labels' 'bool' 'true' )
declare -ar WINDOW_BUTTONS_SHOW_ONLY_MINIMIZED=( 'show-only-minimized' 'bool' 'false' )
declare -ar WINDOW_BUTTONS_SHOW_WIREFRAMES=( 'show-wireframes' 'bool' 'false' )
declare -ar WINDOW_BUTTONS_SORT_ORDER=( 'sort-order' 'int' '4' )
declare -ar WINDOW_BUTTONS_SWITCH_WORKSPACE_ON_UNMINIMIZE=( 'switch-workspace-on-unminimize' 'bool' 'true' )
declare -ar WINDOW_BUTTONS_WINDOW_SCROLLING=( 'window-scrolling' 'bool' 'false' )
declare -ar WINDOW_MENU_ALL_WORKSPACES=( 'all-workspaces' 'bool' 'true' )
declare -ar WINDOW_MENU_STYLE=( 'style' 'int' '1' )
declare -ar WINDOW_MENU_URGENCY_NOTIFICATION=( 'urgentcy-notification' 'bool' 'true' )
declare -ar WINDOW_MENU_WORKSPACE_ACTIONS=( 'workspace-actions' 'bool' 'false' )
declare -ar WINDOW_MENU_WORKSPACE_NAMES=( 'workspace-names' 'bool' 'true' )
declare -ar WORKSPACE_SWITCHER_ROWS=( 'rows' 'int' '1' )
declare -ar WORKSPACE_SWITCHER_WORKSPACE_SCROLLING=( 'workspace-scrolling' 'bool' 'false' )
declare -ar ACTION_BUTTONS_ITEMS_ARRAY=( 'string'
'+lock-screen' '+logout-dialog' '+restart' '+shutdown' '+logout'
'-hibernate' '-suspend' '-switch-user' '-separator' '-separator' '-separator' )
declare -r BATTERY_PLUGIN_RESOURCES="$(cat <<-'//*EOF_QUOTED'
display_label=false
display_icon=false
display_power=false
display_percentage=true
display_bar=true
display_time=false
tooltip_display_percentage=true
tooltip_display_time=true
low_percentage=10
critical_percentage=5
action_on_low=1
action_on_critical=1
hide_when_full=0
colorA=#8888FF
colorH=#00FF00
colorL=#FFFF00
colorC=#FF0000
command_on_low=
command_on_critical=
//*EOF_QUOTED
)"
declare -r CPU_GRAPH_PLUGIN_RESOURCES="$(cat <<-'//*EOF_QUOTED'
UpdateInterval=3
TimeScale=0
Size=32
Mode=0
Frame=0
Border=0
Bars=1
TrackedCore=0
Command=xfce4-taskmanager
InTerminal=0
StartupNotification=1
ColorMode=0
Foreground1=#0000ffff0000
Foreground2=#ffff00000000
Foreground3=#00000000ffff
Background=#444444444444
//*EOF_QUOTED
)"
declare -r NETWORK_MONITOR_PLUGIN_TEMPLATE_RC="$(cat <<-'//*EOF_QUOTED'
Use_Label=false
Show_Values=false
Show_Bars=true
Colorize_Values=false
Color_In=#FF4F00
Color_Out=#FFE500
Text=
Network_Device=
Max_In=4096
Max_Out=4096
Auto_Max=true
Update_Interval=1000
Values_As_Bits=false
//*EOF_QUOTED
)"
declare NETWORK_MONITOR_PLUGIN_RESOURCES
declare -r WEATHER_PLUGIN_RESOURCES="$(cat <<-'//*EOF_QUOTED'
loc_name=Antwerpen, Vlaanderen
lat=51.248329
lon=4.757375
msl=18
timezone=Europe/Brussels
cache_file_max_age=172800
power_saving=true
units_temperature=0
units_pressure=0
units_windspeed=0
units_precipitation=0
units_altitude=0
model_apparent_temperature=0
round=true
single_row=true
tooltip_style=1
forecast_layout=1
forecast_days=5
scrollbox_animate=false
theme_dir=/usr/share/xfce4/weather/icons/liquid
show_scrollbox=true
scrollbox_lines=1
scrollbox_color=#000000000000
scrollbox_use_color=false
label0=3
//*EOF_QUOTED
)"
declare -ar LAUNCHER_HOSTS_FILE_VIEWER_PLUGIN_SETUP=( 'LAUNCHER_HOSTS_FILE_VIEWER_PLUGIN_PROPERTIES' 'LAUNCHER_HOSTS_FILE_VIEWER_PLUGIN_ITEMS' )
declare -ar LAUNCHER_LIBREOFFICE_SETUP=( 'LAUNCHER_LIBREOFFICE_PLUGIN_PROPERTIES' 'LAUNCHER_LIBREOFFICE_PLUGIN_ITEMS' )
declare -ar LAUNCHER_LIBREOFFICE_BASE_PLUGIN_SETUP=( 'LAUNCHER_LIBREOFFICE_BASE_PLUGIN_PROPERTIES' 'LAUNCHER_LIBREOFFICE_BASE_PLUGIN_ITEMS' )
declare -ar LAUNCHER_LIBREOFFICE_CALC_PLUGIN_SETUP=( 'LAUNCHER_LIBREOFFICE_CALC_PLUGIN_PROPERTIES' 'LAUNCHER_LIBREOFFICE_CALC_PLUGIN_ITEMS' )
declare -ar LAUNCHER_LIBREOFFICE_DRAW_PLUGIN_SETUP=( 'LAUNCHER_LIBREOFFICE_DRAW_PLUGIN_PROPERTIES' 'LAUNCHER_LIBREOFFICE_DRAW_PLUGIN_ITEMS' )
declare -ar LAUNCHER_LIBREOFFICE_IMPRESS_PLUGIN_SETUP=( 'LAUNCHER_LIBREOFFICE_IMPRESS_PLUGIN_PROPERTIES' 'LAUNCHER_LIBREOFFICE_IMPRESS_PLUGIN_ITEMS' )
declare -ar LAUNCHER_LIBREOFFICE_MATH_PLUGIN_SETUP=( 'LAUNCHER_LIBREOFFICE_MATH_PLUGIN_PROPERTIES' 'LAUNCHER_LIBREOFFICE_MATH_PLUGIN_ITEMS' )
declare -ar LAUNCHER_LIBREOFFICE_WRITER_PLUGIN_SETUP=( 'LAUNCHER_LIBREOFFICE_WRITER_PLUGIN_PROPERTIES' 'LAUNCHER_LIBREOFFICE_WRITER_PLUGIN_ITEMS' )
declare -ar LAUNCHER_WEB_BROWSER_PLUGIN_SETUP=( 'LAUNCHER_WEB_BROWSER_PLUGIN_PROPERTIES' 'LAUNCHER_WEB_BROWSER_PLUGIN_ITEMS' )
declare -ar LAUNCHER_PROPERTIES_UNSET=(
'LAUNCHER_ARROW_POSITION_UNSET'
'LAUNCHER_DISABLE_TOOLTIPS_UNSET'
'LAUNCHER_MOVE_FIRST_UNSET'
'LAUNCHER_SHOW_LABEL_UNSET'
)
declare -ar LAUNCHER_ARROW_POSITION_UNSET=( 'arrow-position' 'int' '' )
declare -ar LAUNCHER_DISABLE_TOOLTIPS_UNSET=( 'disable-tooltips' 'bool' '' )
declare -ar LAUNCHER_MOVE_FIRST_UNSET=( 'move-first' 'bool' '' )
declare -ar LAUNCHER_SHOW_LABEL_UNSET=( 'show-label' 'bool' '' )
declare -nr LAUNCHER_HOSTS_FILE_VIEWER_PLUGIN_PROPERTIES='LAUNCHER_PROPERTIES_UNSET'
declare -nr LAUNCHER_LIBREOFFICE_PLUGIN_PROPERTIES='LAUNCHER_PROPERTIES_UNSET'
declare -nr LAUNCHER_LIBREOFFICE_BASE_PLUGIN_PROPERTIES='LAUNCHER_PROPERTIES_UNSET'
declare -nr LAUNCHER_LIBREOFFICE_CALC_PLUGIN_PROPERTIES='LAUNCHER_PROPERTIES_UNSET'
declare -nr LAUNCHER_LIBREOFFICE_DRAW_PLUGIN_PROPERTIES='LAUNCHER_PROPERTIES_UNSET'
declare -nr LAUNCHER_LIBREOFFICE_IMPRESS_PLUGIN_PROPERTIES='LAUNCHER_PROPERTIES_UNSET'
declare -nr LAUNCHER_LIBREOFFICE_MATH_PLUGIN_PROPERTIES='LAUNCHER_PROPERTIES_UNSET'
declare -nr LAUNCHER_LIBREOFFICE_WRITER_PLUGIN_PROPERTIES='LAUNCHER_PROPERTIES_UNSET'
declare -nr LAUNCHER_WEB_BROWSER_PLUGIN_PROPERTIES='LAUNCHER_PROPERTIES_UNSET'
declare -ar LAUNCHER_HOSTS_FILE_VIEWER_PLUGIN_ITEMS=( 'LAUNCHER_HOSTS_FILE_VIEWER_ITEM' )
declare -ar LAUNCHER_LIBREOFFICE_PLUGIN_ITEMS=(
'LAUNCHER_LIBREOFFICE_ITEM'
'LAUNCHER_LIBREOFFICE_BASE_ITEM'
'LAUNCHER_LIBREOFFICE_CALC_ITEM'
'LAUNCHER_LIBREOFFICE_DRAW_ITEM'
'LAUNCHER_LIBREOFFICE_IMPRESS_ITEM'
'LAUNCHER_LIBREOFFICE_MATH_ITEM'
'LAUNCHER_LIBREOFFICE_WRITER_ITEM'
)
declare -ar LAUNCHER_LIBREOFFICE_BASE_PLUGIN_ITEMS=( 'LAUNCHER_LIBREOFFICE_BASE_ITEM' )
declare -ar LAUNCHER_LIBREOFFICE_CALC_PLUGIN_ITEMS=( 'LAUNCHER_LIBREOFFICE_CALC_ITEM' )
declare -ar LAUNCHER_LIBREOFFICE_DRAW_PLUGIN_ITEMS=( 'LAUNCHER_LIBREOFFICE_DRAW_ITEM' )
declare -ar LAUNCHER_LIBREOFFICE_IMPRESS_PLUGIN_ITEMS=( 'LAUNCHER_LIBREOFFICE_IMPRESS_ITEM' )
declare -ar LAUNCHER_LIBREOFFICE_MATH_PLUGIN_ITEMS=( 'LAUNCHER_LIBREOFFICE_MATH_ITEM' )
declare -ar LAUNCHER_LIBREOFFICE_WRITER_PLUGIN_ITEMS=( 'LAUNCHER_LIBREOFFICE_WRITER_ITEM' )
declare -ar LAUNCHER_WEB_BROWSER_PLUGIN_ITEMS=( 'LAUNCHER_WEB_BROWSER_ITEM' )
declare -ar LAUNCHER_HOSTS_FILE_VIEWER_ITEM=( 'LauncherSourceString' 'LAUNCHER_HOSTS_FILE_VIEWER_SOURCE_STRING' )
declare -ar LAUNCHER_LIBREOFFICE_ITEM=( 'LauncherSourceFile' '/usr/share/applications/libreoffice-startcenter.desktop' )
declare -ar LAUNCHER_LIBREOFFICE_BASE_ITEM=( 'LauncherSourceFile' '/usr/share/applications/libreoffice-base.desktop' )
declare -ar LAUNCHER_LIBREOFFICE_CALC_ITEM=( 'LauncherSourceFile' '/usr/share/applications/libreoffice-calc.desktop' )
declare -ar LAUNCHER_LIBREOFFICE_DRAW_ITEM=( 'LauncherSourceFile' '/usr/share/applications/libreoffice-draw.desktop' )
declare -ar LAUNCHER_LIBREOFFICE_IMPRESS_ITEM=( 'LauncherSourceFile' '/usr/share/applications/libreoffice-impress.desktop' )
declare -ar LAUNCHER_LIBREOFFICE_MATH_ITEM=( 'LauncherSourceFile' '/usr/share/applications/libreoffice-math.desktop' )
declare -ar LAUNCHER_LIBREOFFICE_WRITER_ITEM=( 'LauncherSourceFile' '/usr/share/applications/libreoffice-writer.desktop' )
declare -ar LAUNCHER_WEB_BROWSER_ITEM=( 'LauncherSourceFile' '/usr/share/applications/exo-web-browser.desktop' )
declare -r LAUNCHER_HOSTS_FILE_VIEWER_SOURCE_STRING="$(cat <<-'//*EOF_QUOTED'
[Desktop Entry]
Version=1.0
Type=Application
Name=Hosts File Viewer
Comment=View the /etc/hosts configuration file
Exec=whiptail --scrolltext --textbox /etc/hosts 20 72
Icon=text-x-preview
//*EOF_QUOTED
)
$(cat <<-//*EOF_UNQUOTED
Path=${HOME}
//*EOF_UNQUOTED
)
$(cat <<-'//*EOF_QUOTED'
Terminal=true
StartupNotify=false
//*EOF_QUOTED
)"
declare -r PERL_GENERATE_XFCE_DESKTOP_FILE="$(cat <<-'//*EOF_QUOTED'
#!/usr/bin/perl
use Glib ;
$x_xfce_source = $ARGV [ 0 ] ;
$x_xfce_dest = $ARGV [ 1 ] ;
$keyfile = Glib::KeyFile -> new ;
$keyfile -> load_from_file ( $x_xfce_source , 'G_KEY_FILE_NONE' ) ;
$keyfile -> set_string ( 'Desktop Entry', 'X-XFCE-Source' , Glib -> filename_to_uri ( $x_xfce_source , undef ) ) ;
open OUTPUT_FILE , '>' . $x_xfce_dest or exit ( 4 ) ;
print OUTPUT_FILE $keyfile -> to_data ;
close OUTPUT_FILE ;
//*EOF_QUOTED
)"
declare -i PANEL_COUNT=0
declare PANEL_XFCONF_PATH
declare -i PANEL_FIRST_PLUGIN
declare -i PLUGIN_COUNT=0
declare PLUGIN_XFCONF_PATH
declare -a LAUNCHER_ITEMS
declare LAUNCHER_ITEMS_DESKTOP_DIRECTORY_PATH
declare -i LAUNCHER_ITEM_DESKTOP_FILENAME_HI="$(date +'%s')"
declare -i LAUNCHER_ITEM_DESKTOP_FILENAME_LO='0'
declare LAUNCHER_ITEM_DESKTOP_FILENAME
declare LAUNCHER_ITEM_DESKTOP_FILE_FULL_PATH
function xfce_restart_panel_instance ( )
{
echo 'NOTE: Restarting the XFCE panel instance.'
xfce4-panel --restart
sleep 1
}
function xfce_open_panel ( )
{
PANEL_XFCONF_PATH='/panels/panel-'"$(( ++ PANEL_COUNT ))"
PANEL_FIRST_PLUGIN="$(( PLUGIN_COUNT + 1 ))"
echo ' This is panel number '"${PANEL_COUNT}"', property hierarchy '"'${PANEL_XFCONF_PATH}'"'.'
}
function xfce_close_panel ( )
{
xfconf-query --channel 'xfce4-panel' --property '/panels' --create --force-array $(seq --format='--type int --set %.0f' --separator=' ' ${PANEL_COUNT})
xfce_restart_panel_instance
}
function xfce_open_panel_plugin ( )
{
local PLUGIN_NAME="${1}"
PLUGIN_XFCONF_PATH='/plugins/plugin-'"$(( ++ PLUGIN_COUNT ))"
xfconf-query --channel 'xfce4-panel' --property "${PLUGIN_XFCONF_PATH}" --create --type 'string' --set "${PLUGIN_NAME}"
echo ' This is plugin number '"${PLUGIN_COUNT}"', property hierarchy '"'${PLUGIN_XFCONF_PATH}'"', value '"'${PLUGIN_NAME}'"'.'
}
function xfce_close_panel_plugin ( )
{
xfconf-query --channel 'xfce4-panel' --property "${PANEL_XFCONF_PATH}"'/plugin-ids' --create --force-array $(seq --format '--type int --set %.0f' --separator=' ' ${PANEL_FIRST_PLUGIN} ${PLUGIN_COUNT})
}
function xfce_open_launcher_plugin ( )
{
LAUNCHER_ITEMS=( )
LAUNCHER_ITEMS_DESKTOP_DIRECTORY_PATH="${XFCE_PANEL_DIRECTORY}"'/launcher-'"${PLUGIN_COUNT}"
mkdir --verbose "${LAUNCHER_ITEMS_DESKTOP_DIRECTORY_PATH}"
}
function xfce_close_launcher_plugin ( )
{
:
}
function xfce_open_launcher_item ( )
{
LAUNCHER_ITEM_DESKTOP_FILENAME="$(( ++ LAUNCHER_ITEM_DESKTOP_FILENAME_HI ))$(( ++ LAUNCHER_ITEM_DESKTOP_FILENAME_LO ))"'.desktop'
LAUNCHER_ITEM_DESKTOP_FILE_FULL_PATH="${LAUNCHER_ITEMS_DESKTOP_DIRECTORY_PATH}"'/'"${LAUNCHER_ITEM_DESKTOP_FILENAME}"
LAUNCHER_ITEMS+=( "${LAUNCHER_ITEM_DESKTOP_FILENAME}" )
}
function xfce_close_launcher_item ( )
{
xfconf-query --channel 'xfce4-panel' --property "${PLUGIN_XFCONF_PATH}"'/items' --create --force-array$(printf ' --type string --set %s' "${LAUNCHER_ITEMS[@]}")
}
function xfce_set_plugin_property ( )
{
local -nr __PLUGIN_PROPERTY__="${1}"
local -r PROPERTY_NAME="${__PLUGIN_PROPERTY__[0]}"
local -r PROPERTY_TYPE="${__PLUGIN_PROPERTY__[1]}"
local -r PROPERTY_VALUE="${__PLUGIN_PROPERTY__[2]}"
if [ -n "${PROPERTY_TYPE}" ] && [ -n "${PROPERTY_VALUE}" ]
then
if [ "${PROPERTY_TYPE}" == 'array' ]
then
{
local -nr __VALUE_ARRAY__="${PROPERTY_VALUE}"
echo 'NOTE: Setting plugin property '"'${PROPERTY_NAME}'"' of type '"'${__VALUE_ARRAY__[0]}'"' array to value ('"$(printf " '%s'" "${__VALUE_ARRAY__[@]:1}")"' ).'
xfconf-query --channel 'xfce4-panel' --property "${PLUGIN_XFCONF_PATH}"'/'"${PROPERTY_NAME}" --create --force-array$(printf ' --type '"${__VALUE_ARRAY__[0]}"' --set %s' "${__VALUE_ARRAY__[@]:1}")
}
else
echo 'NOTE: Setting plugin property '"'${PROPERTY_NAME}'"' of type '"'${PROPERTY_TYPE}'"' to value '"'${PROPERTY_VALUE}'"'.'
xfconf-query --channel 'xfce4-panel' --property "${PLUGIN_XFCONF_PATH}"'/'"${PROPERTY_NAME}" --create --type "${PROPERTY_TYPE}" --set "${PROPERTY_VALUE}"
fi
else
echo 'NOTE: Clearing plugin property '"'${PROPERTY_NAME}'"'.'
xfconf-query --channel 'xfce4-panel' --property "${PLUGIN_XFCONF_PATH}"'/'"${PROPERTY_NAME}" --reset
fi
}
function xfce_set_plugin_properties ( )
{
local -nr __PLUGIN_PROPERTIES__="${1}"
local PLUGIN_PROPERTY
for PLUGIN_PROPERTY in "${__PLUGIN_PROPERTIES__[@]}"
do
xfce_set_plugin_property "${PLUGIN_PROPERTY}"
done
}
function xfce_set_plugin_resources ( )
{
local -r PLUGIN_NAME="${1}"
local -nr PLUGIN_RESOURCES="${2}"
local -r RESOURCE_FILE="${XFCE_PANEL_DIRECTORY}"'/'"${PLUGIN_NAME}"'-'"${PLUGIN_COUNT}"'.rc'
echo 'NOTE: Saving plugin configuration to resource file '"'${RESOURCE_FILE}'"'.'
echo "${PLUGIN_RESOURCES}" > "${RESOURCE_FILE}"
}
function xfce_setup_launcher_item ( )
{
local -nr __LAUNCHER_ITEM__="${1}"
local -r ITEM_TYPE="${__LAUNCHER_ITEM__[0]}"
local -r ITEM_VALUE="${__LAUNCHER_ITEM__[1]}"
echo 'NOTE: Creating launcher item '"'${1}'"'.'
xfce_open_launcher_item
case "${ITEM_TYPE}" in
'LauncherSourceFile' )
echo ' Launcher item configuration source file is '"'${ITEM_VALUE}'"'.'
echo ' Saving launcher item configuration to file '"'${LAUNCHER_ITEM_DESKTOP_FILE_FULL_PATH}'"'.'
perl -e "${PERL_GENERATE_XFCE_DESKTOP_FILE}" "${ITEM_VALUE}" "${LAUNCHER_ITEM_DESKTOP_FILE_FULL_PATH}"
;;
'LauncherSourceString' )
{
local -nr LAUNCHER_ITEM_DESKTOP_CONTENTS="${ITEM_VALUE}"
echo ' Saving launcher item configuration to file '"'${LAUNCHER_ITEM_DESKTOP_FILE_FULL_PATH}'"'.'
echo "${LAUNCHER_ITEM_DESKTOP_CONTENTS}" > "${LAUNCHER_ITEM_DESKTOP_FILE_FULL_PATH}"
}
;;
esac
xfce_close_launcher_item
}
function xfce_setup_launcher_items ( )
{
local -nr __LAUNCHER_ITEMS__="${1}"
local LAUNCHER_ITEM
echo 'NOTE: Processing launcher item set '"'${1}'"'.'
for LAUNCHER_ITEM in "${__LAUNCHER_ITEMS__[@]}"
do
xfce_setup_launcher_item "${LAUNCHER_ITEM}"
done
}
function xfce_setup_launcher_plugin ( )
{
local -nr __PLUGIN_SETUP__="${1}"
local -r PLUGIN_PROPERTIES="${__PLUGIN_SETUP__[0]}"
local -r PLUGIN_ITEMS="${__PLUGIN_SETUP__[1]}"
xfce_open_launcher_plugin
xfce_set_plugin_properties "${PLUGIN_PROPERTIES}"
xfce_setup_launcher_items "${PLUGIN_ITEMS}"
xfce_close_launcher_plugin
}
function xfce_create_panel_plugin ( )
{
local -nr __PANEL_PLUGIN__="${1}"
local -r PLUGIN_NAME="${__PANEL_PLUGIN__[0]}"
local -r PLUGIN_CONFTYPE="${__PANEL_PLUGIN__[1]}"
local -r PLUGIN_CONF="${__PANEL_PLUGIN__[2]}"
if [ "${PLUGIN_CONFTYPE}" == 'PluginNetLoad' ]
then
{
local IP_LINK
local -nr __CONFIG_TEMPLATE__="${PLUGIN_CONF}"
local -r CONFIG_NAME="${PLUGIN_CONF%TEMPLATE_RC}"'RESOURCES'
local -n __CONFIG__="${CONFIG_NAME}"
for IP_LINK in "${IP_LINKS[@]}"
do
echo 'NOTE: Creating panel plugin '"'${1}'"' for '"'"'Network_Device='"${IP_LINK}'"'.'
xfce_open_panel_plugin "${PLUGIN_NAME}"
__CONFIG__="$(sed --regexp-extended --expression='s/(Network_Device=)$/\1'"${IP_LINK}"'/' <<< "${__CONFIG_TEMPLATE__}")"
xfce_set_plugin_resources "${PLUGIN_NAME}" "${CONFIG_NAME}"
xfce_close_panel_plugin
done
}
else
echo 'NOTE: Creating panel plugin '"'${1}'"'.'
xfce_open_panel_plugin "${PLUGIN_NAME}"
[ -z "${PLUGIN_CONFTYPE}" ] ||
[ -z "${PLUGIN_CONF}" ] ||
case "${PLUGIN_CONFTYPE}" in
'PluginLauncher' )
xfce_setup_launcher_plugin "${PLUGIN_CONF}"
;;
'PluginProperties' )
xfce_set_plugin_properties "${PLUGIN_CONF}"
;;
'PluginResources' )
if [ -n "${PLUGIN_CONF}" ]
then
xfce_set_plugin_resources "${PLUGIN_NAME}" "${PLUGIN_CONF}"
fi
;;
esac
xfce_close_panel_plugin
fi
}
function xfce_set_panel_property ( )
{
local -nr __PANEL_PROPERTY__="${1}"
local -r PROPERTY_NAME="${__PANEL_PROPERTY__[0]}"
local -r PROPERTY_TYPE="${__PANEL_PROPERTY__[1]}"
local -r PROPERTY_VALUE="${__PANEL_PROPERTY__[2]}"
if [ -n "${PROPERTY_TYPE}" ] && [ -n "${PROPERTY_VALUE}" ]
then
echo 'NOTE: Setting panel property '"'${PROPERTY_NAME}'"' of type '"'${PROPERTY_TYPE}'"' to value '"'${PROPERTY_VALUE}'"'.'
xfconf-query --channel 'xfce4-panel' --property "${PANEL_XFCONF_PATH}"'/'"${PROPERTY_NAME}" --create --type "${PROPERTY_TYPE}" --set "${PROPERTY_VALUE}"
else
echo 'NOTE: Clearing panel property '"'${PROPERTY_NAME}'"'.'
xfconf-query --channel 'xfce4-panel' --property "${PANEL_XFCONF_PATH}"'/'"${PROPERTY_NAME}" --reset
fi
}
function xfce_set_panel_properties ( )
{
local -nr __PANEL_PROPERTIES__="${1}"
local PANEL_PROPERTY
echo 'NOTE: Processing panel property set '"'${1}'"'.'
for PANEL_PROPERTY in "${__PANEL_PROPERTIES__[@]}"
do
xfce_set_panel_property "${PANEL_PROPERTY}"
done
}
function xfce_create_panel ( )
{
local -nr __PANEL__="${1}"
local -nr __PANEL_PROPERTY_SETS__="${__PANEL__[0]}"
local -nr __PANEL_PLUGINS__="${__PANEL__[1]}"
local PANEL_PROPERTY_SET
local PANEL_PLUGIN
echo 'NOTE: Creating panel '"'${1}'"'.'
xfce_open_panel
for PANEL_PROPERTY_SET in "${__PANEL_PROPERTY_SETS__[@]}"
do
xfce_set_panel_properties "${PANEL_PROPERTY_SET}"
done
for PANEL_PLUGIN in "${__PANEL_PLUGINS__[@]}"
do
xfce_create_panel_plugin "${PANEL_PLUGIN}"
done
xfce_close_panel
}
function xfce_create_panels ( )
{
local -nr __PANELS__="${1}"
local PANEL
for PANEL in "${__PANELS__[@]}"
do
xfce_create_panel "${PANEL}"
done
}
function xfce_clear_panels ( )
{
echo 'NOTE: Clearing the XFCE panels.'
xfconf-query --channel 'xfce4-panel' --property '/panels' --reset --recursive
xfconf-query --channel 'xfce4-panel' --property '/panels' --create --force-array --type int --set 1
xfce_restart_panel_instance
xfconf-query --channel 'xfce4-panel' --property '/plugins' --reset --recursive
rm --force --recursive --verbose "${XFCE_PANEL_DIRECTORY}"
mkdir --parents --verbose "${XFCE_PANEL_DIRECTORY}"
}
function desktop_is_xfce ( )
{
[ "${XDG_CURRENT_DESKTOP}" == 'XFCE' ]
}
function system_is_debian ( )
{
[ "$(command lsb_release --id --short 2> /dev/null)" == 'Debian' ]
}
#*****************************
#* *
#* Bash Script Entry Point *
#* *
#*****************************
{
system_is_debian && echo 'NOTE: This is a Debian system.'
} &&
{
desktop_is_xfce && echo 'NOTE: The current desktop environment is XFCE.'
} &&
{
xfce_clear_panels && xfce_create_panels 'XFCE_PANELS'
}
Last edited by luvr (2016-12-01 17:13:08)
Offline
Great information, thanks.
Just would like to state that xfconf variables can be more than just bool, int, or string: uint is also supported (see https://forum.xfce.org/viewtopic.php?pid=43348#p43348. In addition, it would appear that the following types are also supported:
- uint64
- double
(source).
Since your post #12 is very detailed and useful, would you consider updating it to include this information?
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
Since your post #12 is very detailed and useful, would you consider updating it to include this information?
Done: Added 'uint', 'int64', 'uint64', and 'double' to the list of supported types.
Also included a paragraph about decimal, hexadecimal, and octal notation of integer values.
Offline
Not to open this thread up again, but it is the exactly the topic I am looking to solve. I am trying to write a script that will build panels for me. I have 20 laptops that this script will run on.
I have tried to run the bash script provided above but am getting errors:
Option "-brief" is unknown, try "ip -help".
./panel2: line 436: declare: -n: invalid option
declare: usage: declare [-aAfFgilrtux] [-p] [name[=value] ...]
./panel2: line 437: declare: -n: invalid option
declare: usage: declare [-aAfFgilrtux] [-p] [name[=value] ...]
./panel2: line 438: declare: -n: invalid option
declare: usage: declare [-aAfFgilrtux] [-p] [name[=value] ...]
./panel2: line 439: declare: -n: invalid option
declare: usage: declare [-aAfFgilrtux] [-p] [name[=value] ...]
./panel2: line 440: declare: -n: invalid option
declare: usage: declare [-aAfFgilrtux] [-p] [name[=value] ...]
./panel2: line 441: declare: -n: invalid option
declare: usage: declare [-aAfFgilrtux] [-p] [name[=value] ...]
./panel2: line 442: declare: -n: invalid option
declare: usage: declare [-aAfFgilrtux] [-p] [name[=value] ...]
./panel2: line 443: declare: -n: invalid option
declare: usage: declare [-aAfFgilrtux] [-p] [name[=value] ...]
./panel2: line 444: declare: -n: invalid option
declare: usage: declare [-aAfFgilrtux] [-p] [name[=value] ...]
Is this the only way to be able to do something like this? Just looking for some suggestions, I've got pretty much everything all set in the script, dealing with the panels is the last thing.
Offline
Your first error, "Option "-brief" is unknown, try "ip -help"", indicates that you are not using a compatible version of the program "ip". It is used in the line, "ip -brief link". Try running that at the command line. I get:
euterpe@euterpe:~$ ip -brief link
lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
eth0 UP 00:25:22:39:0e:83 <BROADCAST,MULTICAST,UP,LOWER_UP>
This is bash version 4.4.5(1)-release (x86_64-pc-linux-gnu) (bash --version) running on debian testing.
If you get something different (like your error message), you are going to have to figure out how to do something comparable on your distro. Likewise "-n" is a perfectly legal option in the version of bash I am running:
declare: usage: declare [-aAfFgilnrtux] [-p] [name[=value] ...]
Are you running an older version of bash, or is it possible you are unintentionally running in a shell other than bash?
JR
Last edited by jrv (2016-12-06 23:55:41)
Offline
Are you running an older version of bash, or is it possible you are unintentionally running in a shell other than bash?
JR
That is where things get interesting. This is all being done on a Chromebook, running Ubuntu.
Linux localhost 3.14.0 #1 SMP PREEMPT Tue Nov 15 18:12:58 PST 2016 armv7l armv7l armv7l GNU/Linux
The -brief arguement is showing not found. This Chromebook is running the latest version of Ubuntu ARM. So first it looks like I need to get ip link figured out, and than look into the version of bash that is running on ARM.
Any suggestions are much appreciated, thanks for replying!
firms
Offline
The -brief arguement is showing not found. This Chromebook is running the latest version of Ubuntu ARM. So first it looks like I need to get ip link figured out, and than look into the version of bash that is running on ARM.
The "-brief" option on the ip command isn't really essential, but if you leave it out, then you will have to rework the sed command that extracts the network interface names from the output. In fact, that is how I initially considered doing this, but then I discovered the "-brief" option, which made it a whole lot easier.
Also, if you won't be using the Network Manager plugin anyway, you can simply leave the IP_LINKS variable blank. Alternatively, if all your computers use the same names for their network interfaces, you could even hard-code them.
The "-n" option on the declare or local command, on the other hand, is a pretty important feature, since the operation of the script is centered around the idea that the value of one variable can be interpreted as the name of another variable that you want to address (somewhat similar to references or pointers in typical programming languages, I guess). Without this feature, the dynamic nature of the script falls apart.
Offline
@firms:
As a historical note the "-n" argument for the declare bash builtin first shows up in documentation (but not in the changelogs) of bash 4.3. The current is bash 4.4 so you are almost certainly running an older version of bash.
The declare -n syntax, as best I can tell, makes the variable a synonym for another variable. Since the use in the script is all very readonly, it looks to me like you could just explicitly spell out each array, e.g. change:
declare -nr LAUNCHER_HOSTS_FILE_VIEWER_PLUGIN_PROPERTIES='LAUNCHER_PROPERTIES_UNSET'
to:
declare -ar LAUNCHER_HOSTS_FILE_VIEWER_PLUGIN_PROPERTIES=(
'LAUNCHER_ARROW_POSITION_UNSET'
'LAUNCHER_DISABLE_TOOLTIPS_UNSET'
'LAUNCHER_MOVE_FIRST_UNSET'
'LAUNCHER_SHOW_LABEL_UNSET'
)
That won't improve maintainability, but it probably will run.
JR
Last edited by jrv (2016-12-07 14:13:55)
Offline
declare -ar LAUNCHER_HOSTS_FILE_VIEWER_PLUGIN_PROPERTIES=( 'LAUNCHER_ARROW_POSITION_UNSET' 'LAUNCHER_DISABLE_TOOLTIPS_UNSET' 'LAUNCHER_MOVE_FIRST_UNSET' 'LAUNCHER_SHOW_LABEL_UNSET' )
That won't improve maintainability, but it probably will run.
I don't really believe that will solve the problem. Yes, you do eliminate the indirection to the LAUNCHER_PROPERTIES_UNSET variable, but now you're left with indirections to each of the individual *_UNSET variables--which you would have to further expand. You may arrive at a workable solution if you do it intelligently, but it's not immediately clear to me how it would be done.
If you really cannot get access to the 'declare -n' feature, then you will likely be better off hard-coding the panel and plugin parameters (which is exactly what I tried to avoid, since I didn't want to manually have to keep track of panel ids and plugin ids). While this may make the script look more staightforward, it will certainly get far more painful to maintain. Another option, of course, may be to recode it in, say, Perl or Python (which I had also considered, but given that the process really just consists of a sequence of, mainly "xfconf-query", commands, I preferred a shell solution instead).
Offline
I don't really believe that will solve the problem. Yes, you do eliminate the indirection to the LAUNCHER_PROPERTIES_UNSET variable, but now you're left with indirections to each of the individual *_UNSET variables--which you would have to further expand. You may arrive at a workable solution if you do it intelligently, but it's not immediately clear to me how it would be done.
Forgive my lack of knowledge, but it looks to me like if the only problem were the handful of "declare -nr" statements, the solution I suggested would work ok. But I think you are suggesting that even though the error messages posted did not show them, there will be similar problems with "local -n" statements used in function calls. Is that what you are saying?
JR
Offline
I really appreciate the input guys, definitely have given me some things to think about. Let me be a bit more clear about exactly what I am trying to acheive. The reason I was trying to run luvr script was because it was the only thing I found online that did any sort of thing like creating panels.
Thinking it over though, and for this current situation I am sure it is slightly overkill.
Since we are using ChromeOS to control most of the main functionality like WiFi, and such I am not worried about loosing access to those settings in XFCE panel because I can jump over to ChromeOS and connect to the correctnetwork in a matter of seconds.
Really all I want is one top panel that contains an Application Menu, shows currently opened programs, as well as workspaces, time, and battery level. These Chromebooks are being used in elementary and middle school learning environments and so cleaning up the Applications Menu to show ONLY the things that I want it is the biggest of my priorities in generating the panel.
Currently the script will update, and download all the software that we use. It will change the background image, delete the bottom panel, configures touchpad for Palm Detection, and right clicking, and hides all desktop items.
Really getting this panel set up is the last thing I need to do, and it's been the most pain in the butt! Was hoping I could just edit the XML files with new ones, or just do everything through xfconf-query but it seems to be a little more complex when working with the panels.
Thanks!
firms
Offline
Applications Menu to show ONLY the things that I want it is the biggest of my priorities in generating the panel.
Messing around with the Application Menu seems easy enough as just editing some files, etc.. So maybe my solution isn't to delete both panels and make a new one. Maybe it is to just delete the bottom panel, do some Application Menu changes, and pretty much I am good to go. The time is showing in 24 HR format but I am sure that can be changed easily.
Let me know what you think ...
Offline
it looks to me like if the only problem were the handful of "declare -nr" statements, the solution I suggested would work ok.
That's correct, indeed. Your suggestion certainly shows a line of thinking that could eventually get the issues sorted out. The complication is, though, that there are multiple levels to "unwind", (i.e., one variable references another variable by name, and that variable references yet another variable by name, etc.). You would need to work out a pretty elaborate strategy to tackle the complete picture--though I'm sure that it should be possible, in the end.
But I think you are suggesting that even though the error messages posted did not show them, there will be similar problems with "local -n" statements used in function calls.
That is, indeed, yet another complication. Again, though, I'm sure that with the right approach this, too, could be overcome.
Offline
[ Generated in 0.018 seconds, 7 queries executed - Memory usage: 992.12 KiB (Peak: 1.08 MiB) ]