1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-09-29 05:29:11 +00:00
conky/README

1183 lines
32 KiB
Plaintext

conky(1) conky(1)
NAME
conky - A system monitor for X originally based on the torsmo code, but
more kickass. It just keeps on given'er. Yeah.
SYNOPSIS
conky [options]
DESCRIPTION
Conky is a system monitor for X originally based on the torsmo code.
Since it's original conception, Conky has changed a fair bit from it's
predecessor. Conky can display just about anything, either on your
root desktop or in it's own window. Conky has many built-in objects,
as well as the ability to execute programs and scripts, then display
the output from stdout.
We are always looking for help, and anyone interested in becoming a
developer is welcome. Please use the facilities at SourceForge to make
bug reports, feature requests, and submit patches.
Thanks for your interest in Conky.
COMPILING
For users compiling from source, make sure you have the X development
libraries installed. This should be a package along the lines of
"libx11-dev or xorg-x11-dev".
Gentoo users -- Conky is in Gentoo's Portage... simply use "emerge app-
admin/conky" for installation. There is also usually an up-to-date
ebuild within Conky's package or in Svn.
Debian,etc. users -- Conky will be in Debian's repositories soon (by
mid-September, hopefully), and then Ubuntu shortly thereafter. Until
then, "dpkg -i" the .deb package to install.
Example to compile and run Conky with all optional components (note
that some configure options may differ for your system):
sh autogen.sh # Only required if building from Svn
./configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc
--localstatedir=/var/lib --enable-xft --enable-seti --enable-dou-
ble-buffer --enable-own-window --enable-proc-uptime --enable-mpd
--enable-mldonkey --enable-x11 --enable-portmon --enable-xmms
--enable-bmp --enable-audacious --enable-infopipe --enable-bmpx
make
make install # Optional
src/conky
Conky probably doesn't compile with compilers other than gcc and icc.
It doesn't compile with C89 compiler and not even with pure C99. It
uses a few things that might not exist: strdup(), strcasecmp(), strn-
casecmp(), optarg variable with getopt() and long long (not in C89).
Crashes in file system statistics stuff when compiled with icc, I don't
know exactly why.
You can disable 'drawing to own window' feature in case you don't need
it by passing --disable-own-window to configure -script.
YOU SHOULD KNOW
Conky is generally very good on resources. However, certain objects in
Conky are harder on resources then others. In particular, the $tail,
$top, $font, and $graph objects are quite costly in comparison to the
rest of Conky.
If you do use them, please do not complain about memory or CPU usage,
unless you think something's seriously wrong (mem leak, etc.).
An easy way to force Conky to reload your ~/.conkyrc: "killall -SIGUSR1
conky". Saves you the trouble of having to kill and then restart.
IMPORTANT: For previous Conky users, Conky 1.3 no longer supports the
metar stuff. mdsplib was causing way too many problems. Hopefully
there'll be a better solution in Conky 2.x...
OPTIONS
Command line options override configurations defined in configuration
file.
-v | -V
Prints version and exits
-a ALIGNMENT
Text alignment on screen, {top,bottom}_{left,right} or none
-b Use double buffering (eliminates "flicker")
-c FILE
Config file to load instead of $HOME/.conkyrc
-d Daemonize Conky, aka fork to background
-f FONT
Font to use
-h Prints command line help and exits
-o Create own window to draw
-t TEXT
Text to render, remember single quotes, like -t ' $uptime '
-u SECONDS
Update interval
-w WIN_ID
Window id to draw
-x X_COORDINATE
X position
-y Y_COORDINATE
Y position
CONFIGURATION SETTINGS
Default configuration file is $HOME/.conkyrc (can be changed from
conky.c among other things). See conkyrc.sample. If installing from
Debian package, this should be in /usr/share/doc/conky/examples ("gun-
zip conkyrc.sample.gz" to get conkyrc.sample).
You might want to copy it to $HOME/.conkyrc and then start modifying
it. Other configs can be found at http://conky.sf.net
alignment
Aligned position on screen, may be top_left, top_right, bot-
tom_left, bottom_right, or none
background
Boolean value, if true, Conky will be forked to background when
started
on_bottom
Set Conky on the bottom of all other applications
border_margin
Border margin in pixels
border_width
Border width in pixels
cpu_avg_samples
The number of samples to average for CPU monitoring
default_color
Default color and border color
default_shade_color
Default shading color and border's shading color
default_outline_color
Default outline color
double_buffer
Use the Xdbe extension? (eliminates flicker) It is highly recom-
mended to use own window with this one so double buffer won't be
so big.
draw_borders
Draw borders around text?
draw_graph_borders
Draw borders around graphs?
draw_shades
Draw shades?
draw_outline
Draw outlines?
font Font name in X, xfontsel can be used to get a nice font
gap_x Gap between right or left border of screen, same as passing -x
at command line
gap_y Gap between top or bottom border of screen, same as passing -y
at command line
imap Default global IMAP server. Arguments are: "host user pass [-i
interval] [-f folder] [-p port] [-e command]". Default port is
143, default folder is 'INBOX', default interval is 5 minutes.
If the password is supplied as '*', you will be prompted to
enter the password when Conky starts.
no_buffers
Substract (file system) buffers from used memory?
mail_spool
Mail spool for mail checking
maximum_width pixels
Maximum width of window
minimum_size width (height)
Minimum size of window
min_port_monitors
Allow for the creation of at least this number of port monitors
(if 0 or not set, default is 16)
min_port_monitor_connections
Allow each port monitor to track at least this many connections
(if 0 or not set, default is 256)
mldonkey_hostname
Hostname for mldonkey stuff, defaults to localhost
mldonkey_port
Mldonkey port, 4001 default
mldonkey_login
Mldonkey login, default none
mldonkey_password
Mldonkey password, default none
mpd_host
Host of MPD server
mpd_port
Port of MPD server
mpd_password
MPD server password
net_avg_samples
The number of samples to average for net data
override_utf8_locale
Force UTF8? requires XFT
own_window
Boolean, create own window to draw?
own_window_transparent
Boolean, set pseudo-transparency?
own_window_type
if own_window is yes, you may specify type normal, desktop or
override (default: normal). Desktop windows are special windows
that have no window decorations; are always visible on your
desktop; do not appear in your pager or taskbar; and are sticky
across all workspaces. Override windows are not under the con-
trol of the window manager. Hints are ignored. This type of win-
dow can be useful for certain situations.
own_window_colour colour
If own_window_transparent no, set a specified background colour
(defaults to black). Takes either a hex value (#ffffff) or a
valid RGB name (see /usr/lib/X11/rgb.txt)
own_window_hints undecorated,below,above,sticky,skip_taskbar,skip_pager
If own_window is yes, you may use these window manager hints to
affect the way Conky displays. Notes: Use own_window_type desk-
top as another way to implement many of these hints implicitly.
If you use own_window_type override, window manager hints have
no meaning and are ignored.
out_to_console
Print text to stdout.
pad_percents
Pad percentages to this many decimals (0 = no padding)
pop3 Default global POP3 server. Arguments are: "host user pass [-i
interval] [-p port] [-e command]". Default port is 110, default
interval is 5 minutes. If the password is supplied as '*', you
will be prompted to enter the password when Conky starts.
stippled_borders
Border stippling (dashing) in pixels
total_run_times
Total number of times for Conky to update before quitting. Zero
makes Conky run forever
update_interval
Update interval in seconds
uppercase
Boolean value, if true, text is rendered in upper case
use_spacer
Adds spaces after certain objects to stop them from moving other
things around. Note that this only helps if you are using a mono
font, such as Bitstream Vera Sans Mono.
use_xft
Use Xft (anti-aliased font and stuff)
wm_class_name
Manually set the WM_CLASS name. Defaults to "conky".
xftalpha
Alpha of Xft font. Must be a value at or between 1 and 0.
xftfont
Xft font to use.
xmms_player
Use specified player/plugin for the xmms status variables. Valid
items are: none, xmms, bmp, audacious and infopipe. (default is
none). Note that bmpx is currently handled separately.
TEXT After this begins text to be formatted on screen
VARIABLES
Colors are parsed using XParsecolor(), there might be a list of them:
/usr/X11R6/lib/X11/rgb.txt. Also, http://sedition.com/perl/rgb.html
[http://sedition.com/perl/rgb.html]. Color can be also in #rrggbb for-
mat (hex). Note that when displaying bytes, power is 1024 and not 1000
so 1M really means 1024*1024 bytes and not 1000*1000.
addr interface
IP address for an interface
acpiacadapter
ACPI ac adapter state.
acpifan
ACPI fan state
acpitemp
ACPI temperature in C.
acpitempf
ACPI temperature in F.
adt746xcpu
CPU temperature from therm_adt746x
adt746xfan
Fan speed from therm_adt746x
alignr (num)
Right-justify text, with space of N
alignc (num)
Align text to centre
apm_adapter
Display APM AC adapter status (FreeBSD only)
apm_battery_life
Display APM battery life in percent (FreeBSD only)
apm_battery_time
Display remaining APM battery life in hh:mm:ss or "unknown" if
AC adapterstatus is on-line or charging (FreeBSD only)
battery (num)
Remaining capacity in ACPI or APM battery. ACPI battery number
can be given as argument (default is BAT0).
bmpx_artist
Artist in current BMPx track
bmpx_album
Album in current BMPx track
bmpx_title
Title of the current BMPx track
bmpx_track
Track number of the current BMPx track
bmpx_bitrate
Bitrate of the current BMPx track
bmpx_uri
URI of the current BMPx track
buffers
Amount of memory buffered
cached Amount of memory cached
color (color)
Change drawing color to color
cpu (cpuN)
CPU usage in percents. For SMP machines, the CPU number can be
provided as an argument. cpu0 is the total usage, and >=cpu1 are
individual CPUs.
cpubar (cpu number) (height),(width)
Bar that shows CPU usage, height is bar's height in pixels. See
$cpu for more info on SMP.
cpugraph (cpu number) (height),(width) (gradient colour 1) (gradient
colour 2)
CPU usage graph, with optional colours in hex, minus the #. See
$cpu for more info on SMP.
diskio Displays current disk IO.
diskiograph (height),(width) (gradient colour 1) (gradient colour 2)
(scale)
Disk IO graph, colours defined in hex, minus the #. If scale is
non-zero, it becomes the scale for the graph.
downspeed net
Download speed in kilobytes
downspeedf net
Download speed in kilobytes with one decimal
downspeedgraph net (height),(width) (gradient colour 1) (gradient
colour 2) (scale)
Download speed graph, colours defined in hex, minus the #. If
scale is non-zero, it becomes the scale for the graph.
else Text to show if any of the above are not true
exec command
Executes a shell command and displays the output in conky. warn-
ing: this takes a lot more resources than other variables. I'd
recommend coding wanted behaviour in C and posting a patch.
execbar command
Same as exec, except if the first value return is a value
between 0-100, it will use that number for a bar. The size for
the bar is currently fixed, but that may change in the future.
execgraph command
Same as execbar, but graphs values.
execi interval command
Same as exec but with specific interval. Interval can't be less
than update_interval in configuration. See also $texeci
execibar interval command
Same as execbar, except with an interval
execigraph interval command
Same as execigraph, but takes an interval arg graphs values
font (font)
Specify a different font. This new font will apply to the cur-
rent line and everything following. You can use a $font with no
arguments to change back to the default font (much like with
$color)
freq (n)
Returns CPU #n's frequency in MHz. CPUs are counted from 1. If
omitted, the parameter defaults to 1.
freq_g (n)
Returns CPU #n's frequency in GHz. CPUs are counted from 1. If
omitted, the parameter defaults to 1.
freq_dyn
Returns CPU frequency in MHz, but is calculated by counting to
clock cycles to complete an instruction. Only available for
x86/amd64.
freq_dyn_g
Returns CPU frequency in GHz, but is calculated by counting to
clock cycles to complete an instruction. Only available for
x86/amd64.
fs_bar (height),(width) fs
Bar that shows how much space is used on a file system. height
is the height in pixels. fs is any file on that file system.
fs_free (fs)
Free space on a file system available for users.
fs_free_perc (fs)
Free percentage of space on a file system available for users.
fs_size (fs)
File system size
fs_used (fs)
File system used space
head logfile lines (interval)
Displays first N lines of supplied text text file. If interval
is not supplied, Conky assumes 2x Conky's interval. Max of 30
lines can be displayed, or until the text buffer is filled.
hr (height)
Horizontal line, height is the height in pixels
iconv_start codeset_from codeset_to
Convert text from one codeset to another using GNU iconv. Needs
to be stopped with iconv_stop.
iconv_stop
Stop iconv codeset conversion.
i2c (dev) type n
I2C sensor from sysfs (Linux 2.6). dev may be omitted if you
have only one I2C device. type is either in (or vol) meaning
voltage, fan meaning fan or temp/tempf (first in C, second in F)
meaning temperature. n is number of the sensor. See
/sys/bus/i2c/devices/ on your local computer.
i8k_ac_status
If running the i8k kernel driver for Inspiron laptops, displays
whether ac power is on, as listed in /proc/i8k (translated to
human-readable). Beware that this is by default not enabled by
i8k itself.
i8k_bios
If running the i8k kernel driver for Inspiron laptops, displays
the bios version as listed in /proc/i8k.
i8k_buttons_status
If running the i8k kernel driver for Inspiron laptops, displays
the volume buttons status as listed in /proc/i8k.
i8k_cpu_temp
If running the i8k kernel driver for Inspiron laptops, displays
the cpu temperature in Celsius, as reported by /proc/i8k.
i8k_cpu_tempf
If running the i8k kernel driver for Inspiron laptops, displays
the cpu temperature in Farenheit, as reported by /proc/i8k.
i8k_left_fan_rpm
If running the i8k kernel driver for Inspiron laptops, displays
the left fan's rate of rotation, in revolutions per minute as
listed in /proc/i8k. Beware, some laptops i8k reports these fans
in reverse order.
i8k_left_fan_status
If running the i8k kernel driver for Inspiron laptops, displays
the left fan status as listed in /proc/i8k (translated to human-
readable). Beware, some laptops i8k reports these fans in
reverse order.
i8k_right_fan_rpm
If running the i8k kernel driver for Inspiron laptops, displays
the right fan's rate of rotation, in revolutions per minute as
listed in /proc/i8k. Beware, some laptops i8k reports these fans
in reverse order.
i8k_right_fan_status
If running the i8k kernel driver for Inspiron laptops, displays
the right fan status as listed in /proc/i8k (translated to
human-readable). Beware, some laptops i8k reports these fans in
reverse order.
i8k_serial
If running the i8k kernel driver for Inspiron laptops, displays
your laptop serial number as listed in /proc/i8k.
i8k_version
If running the i8k kernel driver for Inspiron laptops, displays
the version formatting of /proc/i8k.
ibm_fan
If running the IBM ACPI, displays the fan speed.
ibm_temps N
If running the IBM ACPI, displays the temperatures from the IBM
temperature sensors (N=0..7) Sensor 0 is on the CPU, 3 is on the
GPU.
ibm_volume
If running the IBM ACPI, displays the "master" volume, con-
trolled by the volume keys (0-14).
ibm_brightness
If running the IBM ACPI, displays the brigtness of the laptops's
LCD (0-7).
if_running (process)
if PROCESS is running, display everything if_running and the
matching $endif
if_existing (file)
if FILE exists, display everything between if_existing and the
matching $endif
if_mounted (mountpoint)
if MOUNTPOINT is mounted, display everything between if_mounted
and the matching $endif
imap_messages (args)
Displays the number of messages in your global IMAP inbox by
default. You can define individual IMAP inboxes seperately by
passing arguments to this object. Arguments are: "host user pass
[-i interval] [-p port] [-e command]". Default port is 110,
default interval is 5 minutes. If the password is supplied as
'*', you will be prompted to enter the password when Conky
starts.
imap_unseen (args)
Displays the number of unseen messages in your global IMAP inbox
by default. You can define individual IMAP inboxes seperately by
passing arguments to this object. Arguments are: "host user pass
[-i interval] [-p port] [-e command]". Default port is 110,
default interval is 5 minutes. If the password is supplied as
'*', you will be prompted to enter the password when Conky
starts.
kernel Kernel version
linkstatus interface
Get the link status for wireless connections
loadavg
(1,2,3)> System load average, 1 is for past 1 minute, 2 for past
5 minutes and 3 for past 15 minutes.
machine
Machine, i686 for example
mails Mail count in mail spool. You can use program like fetchmail to
get mails from some server using your favourite protocol. See
also new_mails.
mem Amount of memory in use
membar (height),(width)
Bar that shows amount of memory in use
memmax Total amount of memory
memperc
Percentage of memory in use
mpd_artist
Artist in current MPD song must be enabled at compile
mpd_album
Album in current MPD song
mpd_bar (height),(width)
Bar of mpd's progress
mpd_bitrate
Bitrate of current song
mpd_status
Playing, stopped, et cetera.
mpd_title
Title of current MPD song
mpd_vol
MPD's volume
mpd_elapsed
Song's elapsed time
mpd_length
Song's length
mpd_percent
Percent of song's progress
mpd_random
Random status (On/Off)
mpd_repeat
Repeat status (On/Off)
mpd_track
Prints the MPD track field
mpd_name
Prints the MPD name field
mpd_file
Prints the file name of the current MPD song
mpd_smart
Prints the song name in either the form "artist - title" or file
name, depending on whats available
new_mails
Unread mail count in mail spool.
nodename
Hostname
outlinecolor (color)
Change outline color
pb_battery item
If running on Apple powerbook/ibook, display information on bat-
tery status. The item parameter specifies, what information to
display. Exactly one item must be specified. Valid items are:
status: Display if battery is fully charged, charging, discharg-
ing or absent (running on AC)
percent: Display charge of battery in percent, if charging or
discharging. Nothing will be displayed, if battery is fully
charged or absent.
time: Display the time remaining until the battery will be fully
charged or discharged at current rate. Nothing is displayed, if
battery is absent or if it's present but fully charged and not
discharging.
pop3_unseen (args)
Displays the number of unseen messages in your global POP3 inbox
by default. You can define individual POP3 inboxes seperately by
passing arguments to this object. Arguments are: "host user pass
[-i interval] [-p port] [-e command]". Default port is 110,
default interval is 5 minutes. If the password is supplied as
'*', you will be prompted to enter the password when Conky
starts.
pop3_used (args)
Displays the amount of space (in MiB, 2^20) used in your global
POP3 inbox by default. You can define individual POP3 inboxes
seperately by passing arguments to this object. Arguments are:
"host user pass [-i interval] [-p port] [-e command]". Default
port is 110, default interval is 5 minutes. If the password is
supplied as '*', you will be prompted to enter the password when
Conky starts.
pre_exec shell command
Executes a shell command one time before conky displays anything
and puts output as text.
processes
Total processes (sleeping and running)
running_processes
Running processes (not sleeping), requires Linux 2.6
shadecolor (color)
Change shading color
stippled_hr (space)
Stippled (dashed) horizontal line
swapbar (height),(width)
Bar that shows amount of swap in use
swap Amount of swap in use
swapmax
Total amount of swap
swapperc
Percentage of swap in use
sysname
System name, Linux for example
tcp_portmon port_begin port_end item (index) (ip4 only at present)
TCP port monitor for specified local ports. Port numbers must be
in the range 1 to 65535. Valid items are:
count - total number of connections in the range
rip - remote ip address
rhost - remote host name
rport - remote port number
rservice - remote service name from /etc/services
lip - local ip address
lhost - local host name
lport - local port number
lservice - local service name from /etc/services
The connection index provides you with access to each connection
in the port monitor. The monitor will return information for
index values from 0 to n-1 connections. Values higher than n-1
are simply ignored. For the "count" item, the connection index
must be omitted. It is required for all other items.
Examples:
${tcp_portmon 6881 6999 count} - displays the number of connec-
tions in the bittorrent port range
${tcp_portmon 22 22 rip 0} - displays the remote host ip of the
first sshd connection
${tcp_portmon 22 22 rip 9} - displays the remote host ip of the
tenth sshd connection
${tcp_portmon 1 1024 rhost 0} - displays the remote host name of
the first connection on a privileged port
${tcp_portmon 1 1024 rport 4} - displays the remote host port of
the fifth connection on a privileged port
${tcp_portmon 1 65535 lservice 14} - displays the local service
name of the fifteenth connection in the range of all ports
Note that port monitor variables which share the same port range
actually refer to the same monitor, so many references to a sin-
gle port range for different items and different indexes all use
the same monitor internally. In other words, the program avoids
creating redundant monitors.
texeci interval command
Runs a command at an interval inside a thread and displays the
output. Same as $execi, except the command is run inside a
thread. Use this if you have a slow script to keep Conky updat-
ing. You should make the interval slightly longer then the time
it takes your script to execute. For example, if you have a
script that take 5 seconds to execute, you should make the
interval at least 6 seconds. See also $execi.
offset (pixels)
Move text over by N pixels. See also $voffset.
tail logfile lines (interval)
Displays last N lines of supplied text text file. If interval is
not supplied, Conky assumes 2x Conky's interval. Max of 30 lines
can be displayed, or until the text buffer is filled.
time (format)
Local time, see man strftime to get more information about for-
mat
totaldown net
Total download, overflows at 4 GB on Linux with 32-bit arch and
there doesn't seem to be a way to know how many times it has
already done that before conky has started.
top type, num
This takes arguments in the form:top (name) (number) Basically,
processes are ranked from highest to lowest in terms of cpu
usage, which is what (num) represents. The types are: "name",
"pid", "cpu", and "mem". There can be a max of 10 processes
listed.
top_mem type, num
Same as top, except sorted by mem usage instead of cpu
totalup net
Total upload, this one too, may overflow
updates Number of updates
for debugging
upspeed net
Upload speed in kilobytes
upspeedf net
Upload speed in kilobytes with one decimal
upspeedgraph net (height),(width) (gradient colour 1) (gradient colour
2) (scale)
Upload speed graph, colours defined in hex, minus the #. If
scale is non-zero, it becomes the scale for the graph.
uptime Uptime
uptime_short
Uptime in a shorter format
seti_prog
Seti@home current progress
seti_progbar (height),(width)
Seti@home current progress bar
seti_credit
Seti@home total user credit
voffset (pixels)
Change vertical offset by N pixels. Negative values will cause
text to overlap. See also $offset.
voltage_mv (n)
Returns CPU #n's voltage in mV. CPUs are counted from 1. If
omitted, the parameter defaults to 1.
voltage_v (n)
Returns CPU #n's voltage in V. CPUs are counted from 1. If omit-
ted, the parameter defaults to 1.
xmms_bar (height),(width)
xmms / bmp / audacious / infopipe: progress bar
xmms_bitrate
xmms / bmp / audacious / infopipe: bitrate of current tune
xmms_channels
xmms / bmp / audacious / infopipe: number of audio channels of
current tune
xmms_filename
xmms / bmp / audacious / infopipe: full path and filename of
current tune
xmms_frequency
xmms / bmp / audacious / infopipe: sampling frequency of current
tune
xmms_length
xmms / bmp / audacious / infopipe: total length of current tune
as MM:SS
xmms_length_seconds
xmms / bmp / audacious / infopipe: total length of current tune
in seconds
xmms_playlist_position
xmms / bmp / audacious / infopipe: playlist position of current
tune
xmms_playlist_length
xmms / bmp / audacious / infopipe: number of tunes in playlist
xmms_position
xmms / bmp / audacious / infopipe: MM:SS position of current
tune
xmms_position_seconds
xmms / bmp / audacious / infopipe: position of current tune in
seconds
xmms_status
xmms / bmp / audacious / infopipe: player status (Play-
ing/Paused/Stopped/Not running)
xmms_title
xmms / bmp / audacious / infopipe: title of current tune
EXAMPLES
conky -t '${time %D %H:%m}' -o -u 30
Start Conky in its own window with date and clock as text and 30
sec update interval.
conky -a top_left -x 5 -y 500 -d
Start Conky to background at coordinates (5, 500).
FILES
~/.conkyrc default configuration file
BUGS
Drawing to root or some other desktop window directly doesn't work with
all window managers. Especially doesn't work well with Gnome and it has
been reported that it doesn't work with KDE either. Nautilus can be
disabled from drawing to desktop with program gconf-editor. Uncheck
show_desktop in /apps/nautilus/preferences/. There is -w switch in
Conky to set some specific window id. You might find xwininfo -tree
useful to find the window to draw to. You can also use -o argument
which makes Conky to create its own window.
SEE ALSO
http://conky.sourceforge.net [http://conky.sourceforge.net]
http://www.sourceforge.net/projects/conky [http://www.source-
forge.net/projects/conky]
#conky on irc.freenode.net
AUTHORS
The Conky dev team. What's up now!
2006-05-13 conky(1)