From c2a1319008d21c76c0cb9881b14f68197f6703c0 Mon Sep 17 00:00:00 2001 From: Victor Ananjevsky Date: Wed, 7 Apr 2021 21:01:24 +0300 Subject: [PATCH] Initial import --- .gitignore | 58 + AUTHORS | 1 + COPYING | 674 ++++++ Makefile.am | 5 + NEWS | 0 README.md | 0 TODO | 0 configure.ac | 176 ++ data/Makefile.am | 9 + data/fdo/Makefile.am | 4 + data/fdo/notification.service.in | 3 + data/icons/16x16/Makefile.am | 1 + data/icons/16x16/apps/Makefile.am | 2 + data/icons/16x16/apps/ynotes.png | Bin 0 -> 704 bytes data/icons/16x16/apps/ypanel.png | Bin 0 -> 796 bytes data/icons/16x16/categories/Makefile.am | 3 + data/icons/16x16/categories/ydesk.png | Bin 0 -> 306 bytes data/icons/16x16/devices/Makefile.am | 2 + data/icons/16x16/devices/cpu.png | Bin 0 -> 592 bytes data/icons/16x16/devices/memory.png | Bin 0 -> 660 bytes data/icons/16x16/status/Makefile.am | 2 + data/icons/16x16/status/newmail.png | Bin 0 -> 603 bytes data/icons/16x16/status/nomail.png | Bin 0 -> 531 bytes data/icons/24x24/Makefile.am | 1 + data/icons/24x24/apps/Makefile.am | 2 + data/icons/24x24/apps/ynotes.png | Bin 0 -> 1239 bytes data/icons/24x24/apps/ypanel.png | Bin 0 -> 901 bytes data/icons/24x24/categories/Makefile.am | 2 + data/icons/24x24/categories/ydesk.png | Bin 0 -> 397 bytes data/icons/24x24/devices/Makefile.am | 2 + data/icons/24x24/devices/cpu.png | Bin 0 -> 1033 bytes data/icons/24x24/devices/memory.png | Bin 0 -> 1285 bytes data/icons/24x24/status/Makefile.am | 2 + data/icons/24x24/status/newmail.png | Bin 0 -> 1396 bytes data/icons/24x24/status/nomail.png | Bin 0 -> 1355 bytes data/icons/32x32/Makefile.am | 1 + data/icons/32x32/apps/Makefile.am | 2 + data/icons/32x32/apps/ynotes.png | Bin 0 -> 1757 bytes data/icons/32x32/apps/ypanel.png | Bin 0 -> 995 bytes data/icons/32x32/categories/Makefile.am | 2 + data/icons/32x32/categories/ydesk.png | Bin 0 -> 552 bytes data/icons/32x32/devices/Makefile.am | 2 + data/icons/32x32/devices/cpu.png | Bin 0 -> 1524 bytes data/icons/32x32/devices/memory.png | Bin 0 -> 1580 bytes data/icons/32x32/status/Makefile.am | 2 + data/icons/32x32/status/newmail.png | Bin 0 -> 1998 bytes data/icons/32x32/status/nomail.png | Bin 0 -> 1833 bytes data/icons/48x48/Makefile.am | 1 + data/icons/48x48/apps/Makefile.am | 2 + data/icons/48x48/apps/ynotes.png | Bin 0 -> 3235 bytes data/icons/48x48/apps/ypanel.png | Bin 0 -> 1122 bytes data/icons/48x48/categories/Makefile.am | 2 + data/icons/48x48/categories/ydesk.png | Bin 0 -> 733 bytes data/icons/48x48/devices/Makefile.am | 2 + data/icons/48x48/devices/cpu.png | Bin 0 -> 2774 bytes data/icons/48x48/devices/memory.png | Bin 0 -> 2683 bytes data/icons/48x48/status/Makefile.am | 2 + data/icons/48x48/status/newmail.png | Bin 0 -> 3405 bytes data/icons/48x48/status/nomail.png | Bin 0 -> 2928 bytes data/icons/Makefile.am | 17 + data/menu/Makefile.am | 4 + data/menu/applications.menu | 127 + .../AudioVideo.directory.in | 5 + .../Development.directory.in | 5 + .../Education.directory.in | 4 + .../desktop-directories/Game.directory.in | 5 + .../desktop-directories/Graphics.directory.in | 5 + data/menu/desktop-directories/Makefile.am | 20 + .../desktop-directories/Network.directory.in | 5 + .../desktop-directories/Office.directory.in | 5 + .../desktop-directories/Settings.directory.in | 5 + .../System-Tools.directory.in | 5 + .../desktop-directories/Utility.directory.in | 5 + data/misc/Makefile.am | 2 + data/misc/conky.conf | 36 + data/misc/trayrc | 6 + data/misc/xxkbrc | 46 + data/settings/Makefile.am | 12 + data/settings/desk.desktop.in | 10 + data/settings/interface.desktop.in | 10 + data/settings/mime.desktop.in | 10 + data/settings/panel.desktop.in | 10 + data/settings/printer.desktop.in | 10 + data/settings/session.desktop.in | 10 + data/settings/sound.desktop.in | 10 + data/settings/term.desktop.in | 10 + data/settings/ysettings.desktop.in | 10 + data/theme/Makefile.am | 7 + data/theme/gtk-3.0/Makefile.am | 5 + data/theme/gtk-3.0/gtk-apps.css | 17 + data/theme/gtk-3.0/gtk-widgets.css | 2104 +++++++++++++++++ data/theme/gtk-3.0/gtk.css | 59 + data/theme/icons/16x16/Makefile.am | 1 + data/theme/icons/16x16/actions/Makefile.am | 7 + .../actions/pan-down-symbolic.symbolic.png | Bin 0 -> 221 bytes .../actions/pan-end-symbolic-rtl.symbolic.png | Bin 0 -> 218 bytes .../actions/pan-end-symbolic.symbolic.png | Bin 0 -> 214 bytes .../pan-start-symbolic-rtl.symbolic.png | Bin 0 -> 214 bytes .../actions/pan-start-symbolic.symbolic.png | Bin 0 -> 218 bytes .../actions/pan-up-symbolic.symbolic.png | Bin 0 -> 219 bytes data/theme/icons/24x24/Makefile.am | 1 + data/theme/icons/24x24/actions/Makefile.am | 7 + .../actions/pan-down-symbolic.symbolic.png | Bin 0 -> 260 bytes .../actions/pan-end-symbolic-rtl.symbolic.png | Bin 0 -> 266 bytes .../actions/pan-end-symbolic.symbolic.png | Bin 0 -> 253 bytes .../pan-start-symbolic-rtl.symbolic.png | Bin 0 -> 253 bytes .../actions/pan-start-symbolic.symbolic.png | Bin 0 -> 266 bytes .../actions/pan-up-symbolic.symbolic.png | Bin 0 -> 261 bytes data/theme/icons/32x32/Makefile.am | 1 + data/theme/icons/32x32/actions/Makefile.am | 7 + .../actions/pan-down-symbolic.symbolic.png | Bin 0 -> 321 bytes .../actions/pan-end-symbolic-rtl.symbolic.png | Bin 0 -> 321 bytes .../actions/pan-end-symbolic.symbolic.png | Bin 0 -> 303 bytes .../pan-start-symbolic-rtl.symbolic.png | Bin 0 -> 303 bytes .../actions/pan-start-symbolic.symbolic.png | Bin 0 -> 321 bytes .../actions/pan-up-symbolic.symbolic.png | Bin 0 -> 320 bytes data/theme/icons/48x48/Makefile.am | 1 + data/theme/icons/48x48/actions/Makefile.am | 7 + .../actions/pan-down-symbolic.symbolic.png | Bin 0 -> 418 bytes .../actions/pan-end-symbolic-rtl.symbolic.png | Bin 0 -> 441 bytes .../actions/pan-end-symbolic.symbolic.png | Bin 0 -> 414 bytes .../pan-start-symbolic-rtl.symbolic.png | Bin 0 -> 414 bytes .../actions/pan-start-symbolic.symbolic.png | Bin 0 -> 441 bytes .../actions/pan-up-symbolic.symbolic.png | Bin 0 -> 428 bytes data/theme/icons/64x64/Makefile.am | 1 + data/theme/icons/64x64/actions/Makefile.am | 7 + .../actions/pan-down-symbolic.symbolic.png | Bin 0 -> 512 bytes .../actions/pan-end-symbolic-rtl.symbolic.png | Bin 0 -> 545 bytes .../actions/pan-end-symbolic.symbolic.png | Bin 0 -> 536 bytes .../pan-start-symbolic-rtl.symbolic.png | Bin 0 -> 536 bytes .../actions/pan-start-symbolic.symbolic.png | Bin 0 -> 545 bytes .../actions/pan-up-symbolic.symbolic.png | Bin 0 -> 507 bytes data/theme/icons/96x96/Makefile.am | 1 + data/theme/icons/96x96/actions/Makefile.am | 7 + .../actions/pan-down-symbolic.symbolic.png | Bin 0 -> 720 bytes .../actions/pan-end-symbolic-rtl.symbolic.png | Bin 0 -> 745 bytes .../actions/pan-end-symbolic.symbolic.png | Bin 0 -> 748 bytes .../pan-start-symbolic-rtl.symbolic.png | Bin 0 -> 748 bytes .../actions/pan-start-symbolic.symbolic.png | Bin 0 -> 745 bytes .../actions/pan-up-symbolic.symbolic.png | Bin 0 -> 718 bytes data/theme/icons/Makefile.am | 20 + data/theme/icons/index.theme.in | 44 + data/theme/icons/scalable/Makefile.am | 1 + data/theme/icons/scalable/actions/Makefile.am | 7 + .../scalable/actions/pan-down-symbolic.svg | 39 + .../scalable/actions/pan-end-symbolic-rtl.svg | 39 + .../scalable/actions/pan-end-symbolic.svg | 39 + .../actions/pan-start-symbolic-rtl.svg | 39 + .../scalable/actions/pan-start-symbolic.svg | 39 + .../scalable/actions/pan-up-symbolic.svg | 39 + data/theme/lock.xcursor | Bin 0 -> 1088 bytes data/theme/settings.ini | 8 + data/utils/Makefile.am | 14 + data/utils/yfind.desktop.in | 11 + data/utils/yimage.desktop.in | 12 + data/utils/ynotes.desktop.in | 9 + data/utils/yps.desktop.in | 11 + data/utils/ysession.desktop.in | 6 + data/utils/ysysinfo.desktop.in | 11 + data/utils/ywifi.desktop.in | 11 + data/ydesk.gschema.xml | 236 ++ fdo/Makefile.am | 4 + fdo/notifyd | 40 + fvwm/Makefile.am | 32 + fvwm/config/applets/bat.fvwm | 4 + fvwm/config/applets/clock.fvwm | 3 + fvwm/config/applets/cpu.fvwm | 1 + fvwm/config/applets/desk.fvwm | 1 + fvwm/config/applets/kbd.fvwm | 1 + fvwm/config/applets/leds.fvwm | 1 + fvwm/config/applets/mail.fvwm | 3 + fvwm/config/applets/media.fvwm | 1 + fvwm/config/applets/menu.fvwm | 2 + fvwm/config/applets/pager.fvwm | 1 + fvwm/config/applets/qlaunch.fvwm | 1 + fvwm/config/applets/run.fvwm | 1 + fvwm/config/applets/shot.fvwm | 1 + fvwm/config/applets/sysinfo.fvwm | 1 + fvwm/config/applets/taskbar.fvwm | 1 + fvwm/config/applets/tray.fvwm | 1 + fvwm/config/applets/volume.fvwm | 3 + fvwm/config/applets/wact.fvwm | 1 + fvwm/config/applets/weather.fvwm | 3 + fvwm/config/applets/wifi.fvwm | 4 + fvwm/config/applets/xeyes.fvwm | 1 + fvwm/config/colors.fvwm | 25 + fvwm/config/decor.fvwm | 34 + fvwm/config/functions.fvwm | 85 + fvwm/config/keys.fvwm | 93 + fvwm/config/main.fvwm | 40 + fvwm/config/menus.fvwm | 89 + fvwm/config/modules.fvwm | 96 + fvwm/cpu.c | 336 +++ fvwm/images/check.png | Bin 0 -> 237 bytes fvwm/images/close.png | Bin 0 -> 220 bytes fvwm/images/default.png | Bin 0 -> 345 bytes fvwm/images/max.png | Bin 0 -> 166 bytes fvwm/images/min.png | Bin 0 -> 145 bytes fvwm/images/side.png | Bin 0 -> 2552 bytes fvwm/scripts/battery.sh | 52 + fvwm/scripts/clipman.sh.in | 108 + fvwm/scripts/clock.sh | 12 + fvwm/scripts/icons.sh | 21 + fvwm/scripts/infostore.sh | 12 + fvwm/scripts/mail.sh.in | 71 + fvwm/scripts/media.sh.in | 48 + fvwm/scripts/panel.sh | 33 + fvwm/scripts/prun.sh | 19 + fvwm/scripts/qlaunch.sh | 13 + fvwm/scripts/shot.sh.in | 40 + fvwm/scripts/volume.sh | 42 + fvwm/scripts/weather.sh.in | 41 + fvwm/scripts/wifi.sh | 42 + fvwm/scripts/ymenu.py | 178 ++ misc/fvwm-borders.patch | 208 ++ misc/fvwm-datadir.patch | 27 + misc/fvwm-iconman.patch | 111 + misc/fvwm-menusep.patch | 147 ++ misc/fvwm-pager.patch | 47 + misc/fvwm-tips.patch | 310 +++ po/LINGUAS | 2 + po/POTFILES.in | 68 + po/ru.po | 1616 +++++++++++++ po/uk.po | 1430 +++++++++++ settings/Makefile.am | 7 + settings/desktop.sh.in | 125 + settings/interface.sh.in | 121 + settings/mime.sh.in | 31 + settings/panel.sh.in | 68 + settings/panel/Makefile.am | 5 + settings/panel/bat.sh.in | 20 + settings/panel/clock.sh.in | 25 + settings/panel/cpu.sh.in | 27 + settings/panel/mail.sh.in | 18 + settings/panel/menu.sh.in | 19 + settings/panel/run.sh.in | 25 + settings/panel/shot.sh.in | 22 + settings/panel/sysinfo.sh.in | 19 + settings/panel/taskbar.sh.in | 19 + settings/panel/volume.sh.in | 25 + settings/panel/weather.sh.in | 30 + settings/panel/wifi.sh.in | 18 + settings/printer.sh.in | 23 + settings/session.sh.in | 96 + settings/term.sh.in | 145 ++ settings/ysettings.in | 24 + shot.sh | 40 + utils/Makefile.am | 9 + utils/ydentry.in | 21 + utils/yfind.in | 66 + utils/yimage.in | 41 + utils/ylogout.in | 43 + utils/ymedia.in | 52 + utils/ymixer.in | 12 + utils/ynotes.in | 39 + utils/ynotify.in | 29 + utils/ypass.in | 14 + utils/yps.in | 18 + utils/yrun.in | 46 + utils/ysession.in | 91 + utils/ysysinfo.in | 82 + utils/yterm.in | 37 + utils/ywget.in | 28 + utils/ywifi.in | 10 + 264 files changed, 11449 insertions(+) create mode 100644 .gitignore create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 Makefile.am create mode 100644 NEWS create mode 100644 README.md create mode 100644 TODO create mode 100644 configure.ac create mode 100644 data/Makefile.am create mode 100644 data/fdo/Makefile.am create mode 100644 data/fdo/notification.service.in create mode 100644 data/icons/16x16/Makefile.am create mode 100644 data/icons/16x16/apps/Makefile.am create mode 100644 data/icons/16x16/apps/ynotes.png create mode 100644 data/icons/16x16/apps/ypanel.png create mode 100644 data/icons/16x16/categories/Makefile.am create mode 100644 data/icons/16x16/categories/ydesk.png create mode 100644 data/icons/16x16/devices/Makefile.am create mode 100644 data/icons/16x16/devices/cpu.png create mode 100644 data/icons/16x16/devices/memory.png create mode 100644 data/icons/16x16/status/Makefile.am create mode 100644 data/icons/16x16/status/newmail.png create mode 100644 data/icons/16x16/status/nomail.png create mode 100644 data/icons/24x24/Makefile.am create mode 100644 data/icons/24x24/apps/Makefile.am create mode 100644 data/icons/24x24/apps/ynotes.png create mode 100644 data/icons/24x24/apps/ypanel.png create mode 100644 data/icons/24x24/categories/Makefile.am create mode 100644 data/icons/24x24/categories/ydesk.png create mode 100644 data/icons/24x24/devices/Makefile.am create mode 100644 data/icons/24x24/devices/cpu.png create mode 100644 data/icons/24x24/devices/memory.png create mode 100644 data/icons/24x24/status/Makefile.am create mode 100644 data/icons/24x24/status/newmail.png create mode 100644 data/icons/24x24/status/nomail.png create mode 100644 data/icons/32x32/Makefile.am create mode 100644 data/icons/32x32/apps/Makefile.am create mode 100644 data/icons/32x32/apps/ynotes.png create mode 100644 data/icons/32x32/apps/ypanel.png create mode 100644 data/icons/32x32/categories/Makefile.am create mode 100644 data/icons/32x32/categories/ydesk.png create mode 100644 data/icons/32x32/devices/Makefile.am create mode 100644 data/icons/32x32/devices/cpu.png create mode 100644 data/icons/32x32/devices/memory.png create mode 100644 data/icons/32x32/status/Makefile.am create mode 100644 data/icons/32x32/status/newmail.png create mode 100644 data/icons/32x32/status/nomail.png create mode 100644 data/icons/48x48/Makefile.am create mode 100644 data/icons/48x48/apps/Makefile.am create mode 100644 data/icons/48x48/apps/ynotes.png create mode 100644 data/icons/48x48/apps/ypanel.png create mode 100644 data/icons/48x48/categories/Makefile.am create mode 100644 data/icons/48x48/categories/ydesk.png create mode 100644 data/icons/48x48/devices/Makefile.am create mode 100644 data/icons/48x48/devices/cpu.png create mode 100644 data/icons/48x48/devices/memory.png create mode 100644 data/icons/48x48/status/Makefile.am create mode 100644 data/icons/48x48/status/newmail.png create mode 100644 data/icons/48x48/status/nomail.png create mode 100644 data/icons/Makefile.am create mode 100644 data/menu/Makefile.am create mode 100644 data/menu/applications.menu create mode 100644 data/menu/desktop-directories/AudioVideo.directory.in create mode 100644 data/menu/desktop-directories/Development.directory.in create mode 100644 data/menu/desktop-directories/Education.directory.in create mode 100644 data/menu/desktop-directories/Game.directory.in create mode 100644 data/menu/desktop-directories/Graphics.directory.in create mode 100644 data/menu/desktop-directories/Makefile.am create mode 100644 data/menu/desktop-directories/Network.directory.in create mode 100644 data/menu/desktop-directories/Office.directory.in create mode 100644 data/menu/desktop-directories/Settings.directory.in create mode 100644 data/menu/desktop-directories/System-Tools.directory.in create mode 100644 data/menu/desktop-directories/Utility.directory.in create mode 100644 data/misc/Makefile.am create mode 100644 data/misc/conky.conf create mode 100644 data/misc/trayrc create mode 100644 data/misc/xxkbrc create mode 100644 data/settings/Makefile.am create mode 100644 data/settings/desk.desktop.in create mode 100644 data/settings/interface.desktop.in create mode 100644 data/settings/mime.desktop.in create mode 100644 data/settings/panel.desktop.in create mode 100644 data/settings/printer.desktop.in create mode 100644 data/settings/session.desktop.in create mode 100644 data/settings/sound.desktop.in create mode 100644 data/settings/term.desktop.in create mode 100644 data/settings/ysettings.desktop.in create mode 100644 data/theme/Makefile.am create mode 100644 data/theme/gtk-3.0/Makefile.am create mode 100644 data/theme/gtk-3.0/gtk-apps.css create mode 100644 data/theme/gtk-3.0/gtk-widgets.css create mode 100644 data/theme/gtk-3.0/gtk.css create mode 100644 data/theme/icons/16x16/Makefile.am create mode 100644 data/theme/icons/16x16/actions/Makefile.am create mode 100644 data/theme/icons/16x16/actions/pan-down-symbolic.symbolic.png create mode 100644 data/theme/icons/16x16/actions/pan-end-symbolic-rtl.symbolic.png create mode 100644 data/theme/icons/16x16/actions/pan-end-symbolic.symbolic.png create mode 100644 data/theme/icons/16x16/actions/pan-start-symbolic-rtl.symbolic.png create mode 100644 data/theme/icons/16x16/actions/pan-start-symbolic.symbolic.png create mode 100644 data/theme/icons/16x16/actions/pan-up-symbolic.symbolic.png create mode 100644 data/theme/icons/24x24/Makefile.am create mode 100644 data/theme/icons/24x24/actions/Makefile.am create mode 100644 data/theme/icons/24x24/actions/pan-down-symbolic.symbolic.png create mode 100644 data/theme/icons/24x24/actions/pan-end-symbolic-rtl.symbolic.png create mode 100644 data/theme/icons/24x24/actions/pan-end-symbolic.symbolic.png create mode 100644 data/theme/icons/24x24/actions/pan-start-symbolic-rtl.symbolic.png create mode 100644 data/theme/icons/24x24/actions/pan-start-symbolic.symbolic.png create mode 100644 data/theme/icons/24x24/actions/pan-up-symbolic.symbolic.png create mode 100644 data/theme/icons/32x32/Makefile.am create mode 100644 data/theme/icons/32x32/actions/Makefile.am create mode 100644 data/theme/icons/32x32/actions/pan-down-symbolic.symbolic.png create mode 100644 data/theme/icons/32x32/actions/pan-end-symbolic-rtl.symbolic.png create mode 100644 data/theme/icons/32x32/actions/pan-end-symbolic.symbolic.png create mode 100644 data/theme/icons/32x32/actions/pan-start-symbolic-rtl.symbolic.png create mode 100644 data/theme/icons/32x32/actions/pan-start-symbolic.symbolic.png create mode 100644 data/theme/icons/32x32/actions/pan-up-symbolic.symbolic.png create mode 100644 data/theme/icons/48x48/Makefile.am create mode 100644 data/theme/icons/48x48/actions/Makefile.am create mode 100644 data/theme/icons/48x48/actions/pan-down-symbolic.symbolic.png create mode 100644 data/theme/icons/48x48/actions/pan-end-symbolic-rtl.symbolic.png create mode 100644 data/theme/icons/48x48/actions/pan-end-symbolic.symbolic.png create mode 100644 data/theme/icons/48x48/actions/pan-start-symbolic-rtl.symbolic.png create mode 100644 data/theme/icons/48x48/actions/pan-start-symbolic.symbolic.png create mode 100644 data/theme/icons/48x48/actions/pan-up-symbolic.symbolic.png create mode 100644 data/theme/icons/64x64/Makefile.am create mode 100644 data/theme/icons/64x64/actions/Makefile.am create mode 100644 data/theme/icons/64x64/actions/pan-down-symbolic.symbolic.png create mode 100644 data/theme/icons/64x64/actions/pan-end-symbolic-rtl.symbolic.png create mode 100644 data/theme/icons/64x64/actions/pan-end-symbolic.symbolic.png create mode 100644 data/theme/icons/64x64/actions/pan-start-symbolic-rtl.symbolic.png create mode 100644 data/theme/icons/64x64/actions/pan-start-symbolic.symbolic.png create mode 100644 data/theme/icons/64x64/actions/pan-up-symbolic.symbolic.png create mode 100644 data/theme/icons/96x96/Makefile.am create mode 100644 data/theme/icons/96x96/actions/Makefile.am create mode 100644 data/theme/icons/96x96/actions/pan-down-symbolic.symbolic.png create mode 100644 data/theme/icons/96x96/actions/pan-end-symbolic-rtl.symbolic.png create mode 100644 data/theme/icons/96x96/actions/pan-end-symbolic.symbolic.png create mode 100644 data/theme/icons/96x96/actions/pan-start-symbolic-rtl.symbolic.png create mode 100644 data/theme/icons/96x96/actions/pan-start-symbolic.symbolic.png create mode 100644 data/theme/icons/96x96/actions/pan-up-symbolic.symbolic.png create mode 100644 data/theme/icons/Makefile.am create mode 100644 data/theme/icons/index.theme.in create mode 100644 data/theme/icons/scalable/Makefile.am create mode 100644 data/theme/icons/scalable/actions/Makefile.am create mode 100644 data/theme/icons/scalable/actions/pan-down-symbolic.svg create mode 100644 data/theme/icons/scalable/actions/pan-end-symbolic-rtl.svg create mode 100644 data/theme/icons/scalable/actions/pan-end-symbolic.svg create mode 100644 data/theme/icons/scalable/actions/pan-start-symbolic-rtl.svg create mode 100644 data/theme/icons/scalable/actions/pan-start-symbolic.svg create mode 100644 data/theme/icons/scalable/actions/pan-up-symbolic.svg create mode 100644 data/theme/lock.xcursor create mode 100644 data/theme/settings.ini create mode 100644 data/utils/Makefile.am create mode 100644 data/utils/yfind.desktop.in create mode 100644 data/utils/yimage.desktop.in create mode 100644 data/utils/ynotes.desktop.in create mode 100644 data/utils/yps.desktop.in create mode 100644 data/utils/ysession.desktop.in create mode 100644 data/utils/ysysinfo.desktop.in create mode 100644 data/utils/ywifi.desktop.in create mode 100644 data/ydesk.gschema.xml create mode 100644 fdo/Makefile.am create mode 100755 fdo/notifyd create mode 100644 fvwm/Makefile.am create mode 100644 fvwm/config/applets/bat.fvwm create mode 100644 fvwm/config/applets/clock.fvwm create mode 100644 fvwm/config/applets/cpu.fvwm create mode 100644 fvwm/config/applets/desk.fvwm create mode 100644 fvwm/config/applets/kbd.fvwm create mode 100644 fvwm/config/applets/leds.fvwm create mode 100644 fvwm/config/applets/mail.fvwm create mode 100644 fvwm/config/applets/media.fvwm create mode 100644 fvwm/config/applets/menu.fvwm create mode 100644 fvwm/config/applets/pager.fvwm create mode 100644 fvwm/config/applets/qlaunch.fvwm create mode 100644 fvwm/config/applets/run.fvwm create mode 100644 fvwm/config/applets/shot.fvwm create mode 100644 fvwm/config/applets/sysinfo.fvwm create mode 100644 fvwm/config/applets/taskbar.fvwm create mode 100644 fvwm/config/applets/tray.fvwm create mode 100644 fvwm/config/applets/volume.fvwm create mode 100644 fvwm/config/applets/wact.fvwm create mode 100644 fvwm/config/applets/weather.fvwm create mode 100644 fvwm/config/applets/wifi.fvwm create mode 100644 fvwm/config/applets/xeyes.fvwm create mode 100644 fvwm/config/colors.fvwm create mode 100644 fvwm/config/decor.fvwm create mode 100644 fvwm/config/functions.fvwm create mode 100644 fvwm/config/keys.fvwm create mode 100644 fvwm/config/main.fvwm create mode 100644 fvwm/config/menus.fvwm create mode 100644 fvwm/config/modules.fvwm create mode 100644 fvwm/cpu.c create mode 100644 fvwm/images/check.png create mode 100644 fvwm/images/close.png create mode 100644 fvwm/images/default.png create mode 100644 fvwm/images/max.png create mode 100644 fvwm/images/min.png create mode 100644 fvwm/images/side.png create mode 100644 fvwm/scripts/battery.sh create mode 100644 fvwm/scripts/clipman.sh.in create mode 100644 fvwm/scripts/clock.sh create mode 100644 fvwm/scripts/icons.sh create mode 100644 fvwm/scripts/infostore.sh create mode 100644 fvwm/scripts/mail.sh.in create mode 100644 fvwm/scripts/media.sh.in create mode 100644 fvwm/scripts/panel.sh create mode 100644 fvwm/scripts/prun.sh create mode 100644 fvwm/scripts/qlaunch.sh create mode 100644 fvwm/scripts/shot.sh.in create mode 100644 fvwm/scripts/volume.sh create mode 100644 fvwm/scripts/weather.sh.in create mode 100644 fvwm/scripts/wifi.sh create mode 100644 fvwm/scripts/ymenu.py create mode 100644 misc/fvwm-borders.patch create mode 100644 misc/fvwm-datadir.patch create mode 100644 misc/fvwm-iconman.patch create mode 100644 misc/fvwm-menusep.patch create mode 100644 misc/fvwm-pager.patch create mode 100644 misc/fvwm-tips.patch create mode 100644 po/LINGUAS create mode 100644 po/POTFILES.in create mode 100644 po/ru.po create mode 100644 po/uk.po create mode 100644 settings/Makefile.am create mode 100644 settings/desktop.sh.in create mode 100644 settings/interface.sh.in create mode 100644 settings/mime.sh.in create mode 100644 settings/panel.sh.in create mode 100644 settings/panel/Makefile.am create mode 100644 settings/panel/bat.sh.in create mode 100644 settings/panel/clock.sh.in create mode 100644 settings/panel/cpu.sh.in create mode 100644 settings/panel/mail.sh.in create mode 100644 settings/panel/menu.sh.in create mode 100644 settings/panel/run.sh.in create mode 100644 settings/panel/shot.sh.in create mode 100644 settings/panel/sysinfo.sh.in create mode 100644 settings/panel/taskbar.sh.in create mode 100644 settings/panel/volume.sh.in create mode 100644 settings/panel/weather.sh.in create mode 100644 settings/panel/wifi.sh.in create mode 100644 settings/printer.sh.in create mode 100644 settings/session.sh.in create mode 100644 settings/term.sh.in create mode 100644 settings/ysettings.in create mode 100755 shot.sh create mode 100644 utils/Makefile.am create mode 100644 utils/ydentry.in create mode 100644 utils/yfind.in create mode 100644 utils/yimage.in create mode 100644 utils/ylogout.in create mode 100644 utils/ymedia.in create mode 100644 utils/ymixer.in create mode 100644 utils/ynotes.in create mode 100644 utils/ynotify.in create mode 100644 utils/ypass.in create mode 100644 utils/yps.in create mode 100644 utils/yrun.in create mode 100644 utils/ysession.in create mode 100644 utils/ysysinfo.in create mode 100644 utils/yterm.in create mode 100644 utils/ywget.in create mode 100644 utils/ywifi.in diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..92818da --- /dev/null +++ b/.gitignore @@ -0,0 +1,58 @@ +Makefile +Makefile.in +configure +build.sh +build.log +build/ +autom4te.cache/ +m4/ +.deps/ +.dirstamp +*.o +*~ +TAGS +aclocal.m4 +config.h +config.h.in +config.log +config.status +libtool +po/.intltool-merge-cache +po/Makefile.in.in +po/POTFILES +po/*.gmo +po/*.pot +po/stamp-it +stamp-h1 +*.desktop +*.directory +*.gschema.valid +fvwm/ycpu +fvwm/scripts/clipman.sh +fvwm/scripts/mail.sh +fvwm/scripts/media.sh +fvwm/scripts/shot.sh +fvwm/scripts/weather.sh +settings/*.sh +settings/panel/*.sh +settings/ysettings +utils/*.sh +utils/ydentry +utils/yfind +utils/yimage +utils/ylogout +utils/ymedia +utils/ymixer +utils/ynotes +utils/ynotify +utils/ypass +utils/yps +utils/yrun +utils/ysession +utils/ysysinfo +utils/yterm +utils/ywget +utils/ywifi +data/theme/icons/index.theme +data/fdo/notification.service +*.tar.* diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..6473180 --- /dev/null +++ b/AUTHORS @@ -0,0 +1 @@ +Victor Ananjevsky diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..0f49fca --- /dev/null +++ b/Makefile.am @@ -0,0 +1,5 @@ +SUBDIRS = fvwm utils fdo data po settings + +ACLOCAL_AMFLAGS = -I m4 + +EXTRA_DIST = README.md NEWS AUTHORS COPYING TODO misc diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/TODO b/TODO new file mode 100644 index 0000000..e69de29 diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..a13589e --- /dev/null +++ b/configure.ac @@ -0,0 +1,176 @@ +dnl Process this file with autoconf to produce a configure script. + +AC_INIT([ydesk],[0.88],[victor@sanana.kiev.ua],[ydesk],[http://sanana.kiev.ua/ydesk/]) +AC_CONFIG_AUX_DIR([build]) + +AM_INIT_AUTOMAKE(1.11 foreign subdir-objects dist-xz no-dist-gzip) +AM_SILENT_RULES([yes]) + +AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_SRCDIR([.]) + +AC_CONFIG_MACRO_DIR([m4]) + +AM_MAINTAINER_MODE + +AC_PROG_CC +AM_PROG_CC_STDC +AC_HEADER_STDC + +AM_PROG_CC_C_O + +GLIB_GSETTINGS + +PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= 3.24.0]) +AC_SUBST([GTK_CFLAGS]) +AC_SUBST([GTK_LIBS]) + +dnl --------------------------------------------------- +dnl Utilities +dnl --------------------------------------------------- + +AC_PATH_PROG([BASH], [bash]) +AC_PATH_PROG([YAD], [yad]) + +dnl --------------------------------------------------- +dnl Optional features +dnl --------------------------------------------------- + +AC_ARG_WITH([icons], + [AS_HELP_STRING([--with-icons=THEME,...],[add fallback icon themes (default - mate,Adwaita,hicolor)])], + [FALLBACK_ICONS=$withval], [FALLBACK_ICONS=mate,Adwaita,hicolor]) +AC_SUBST(FALLBACK_ICONS) + +dnl --------------------------------------------------- +dnl i18n +dnl --------------------------------------------------- + +IT_PROG_INTLTOOL([0.40.0]) + +INTLTOOL_CONF_RULE='%.conf: %.conf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' +_IT_SUBST(INTLTOOL_CONF_RULE) + +GETTEXT_PACKAGE=ydesk +AC_SUBST(GETTEXT_PACKAGE) +AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Gettext package]) + +AM_GLIB_GNU_GETTEXT + +dnl Generate output + +AC_CONFIG_LINKS([ +settings/ysettings.sh:settings/ysettings.in +utils/ydentry.sh:utils/ydentry.in +utils/yfind.sh:utils/yfind.in +utils/yimage.sh:utils/yimage.in +utils/ylogout.sh:utils/ylogout.in +utils/ymedia.sh:utils/ymedia.in +utils/ymixer.sh:utils/ymixer.in +utils/ynotes.sh:utils/ynotes.in +utils/ypass.sh:utils/ypass.in +utils/yps.sh:utils/yps.in +utils/yrun.sh:utils/yrun.in +utils/ysysinfo.sh:utils/ysysinfo.in +utils/yterm.sh:utils/yterm.in +utils/ywget.sh:utils/ywget.in +utils/ywifi.sh:utils/ywifi.in +]) + +AC_CONFIG_FILES([ +Makefile +fvwm/Makefile +fvwm/scripts/clipman.sh +fvwm/scripts/mail.sh +fvwm/scripts/media.sh +fvwm/scripts/shot.sh +fvwm/scripts/weather.sh +fdo/Makefile +settings/Makefile +settings/ysettings +settings/desktop.sh +settings/interface.sh +settings/mime.sh +settings/panel.sh +settings/printer.sh +settings/session.sh +settings/term.sh +settings/panel/Makefile +settings/panel/bat.sh +settings/panel/clock.sh +settings/panel/cpu.sh +settings/panel/mail.sh +settings/panel/menu.sh +settings/panel/run.sh +settings/panel/shot.sh +settings/panel/sysinfo.sh +settings/panel/taskbar.sh +settings/panel/volume.sh +settings/panel/weather.sh +settings/panel/wifi.sh +utils/Makefile +utils/ydentry +utils/yfind +utils/yimage +utils/ylogout +utils/ymedia +utils/ymixer +utils/ynotes +utils/ynotify +utils/ypass +utils/yps +utils/yrun +utils/ysession +utils/ysysinfo +utils/yterm +utils/ywget +utils/ywifi +data/Makefile +data/icons/Makefile +data/icons/16x16/Makefile +data/icons/16x16/apps/Makefile +data/icons/16x16/categories/Makefile +data/icons/16x16/devices/Makefile +data/icons/16x16/status/Makefile +data/icons/24x24/Makefile +data/icons/24x24/apps/Makefile +data/icons/24x24/categories/Makefile +data/icons/24x24/devices/Makefile +data/icons/24x24/status/Makefile +data/icons/32x32/Makefile +data/icons/32x32/apps/Makefile +data/icons/32x32/categories/Makefile +data/icons/32x32/devices/Makefile +data/icons/32x32/status/Makefile +data/icons/48x48/Makefile +data/icons/48x48/apps/Makefile +data/icons/48x48/categories/Makefile +data/icons/48x48/devices/Makefile +data/icons/48x48/status/Makefile +data/fdo/Makefile +data/fdo/notification.service +data/menu/Makefile +data/menu/desktop-directories/Makefile +data/misc/Makefile +data/settings/Makefile +data/theme/Makefile +data/theme/gtk-3.0/Makefile +data/theme/icons/Makefile +data/theme/icons/index.theme +data/theme/icons/16x16/Makefile +data/theme/icons/16x16/actions/Makefile +data/theme/icons/24x24/Makefile +data/theme/icons/24x24/actions/Makefile +data/theme/icons/32x32/Makefile +data/theme/icons/32x32/actions/Makefile +data/theme/icons/48x48/Makefile +data/theme/icons/48x48/actions/Makefile +data/theme/icons/64x64/Makefile +data/theme/icons/64x64/actions/Makefile +data/theme/icons/96x96/Makefile +data/theme/icons/96x96/actions/Makefile +data/theme/icons/scalable/Makefile +data/theme/icons/scalable/actions/Makefile +data/utils/Makefile +po/Makefile.in +]) +AC_OUTPUT diff --git a/data/Makefile.am b/data/Makefile.am new file mode 100644 index 0000000..2f4d98d --- /dev/null +++ b/data/Makefile.am @@ -0,0 +1,9 @@ +SUBDIRS = icons fdo menu utils misc settings theme + +gsettings_SCHEMAS = ydesk.gschema.xml + +.PRECIOUS: $(gsettings_SCHEMAS) + +@GSETTINGS_RULES@ + +EXTRA_DIST = $(gsettings_SCHEMAS) diff --git a/data/fdo/Makefile.am b/data/fdo/Makefile.am new file mode 100644 index 0000000..7e77c28 --- /dev/null +++ b/data/fdo/Makefile.am @@ -0,0 +1,4 @@ +dbusdir = $(datadir)/dbus-1/services +dbus_DATA = notification.service + +DISTCLEANFILES = $(dbus_DATA) diff --git a/data/fdo/notification.service.in b/data/fdo/notification.service.in new file mode 100644 index 0000000..7ec2f7d --- /dev/null +++ b/data/fdo/notification.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.freedesktop.Notifications +Exec=@prefix@/lib/ydesk/fdo/notifyd diff --git a/data/icons/16x16/Makefile.am b/data/icons/16x16/Makefile.am new file mode 100644 index 0000000..0411318 --- /dev/null +++ b/data/icons/16x16/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = apps categories devices status diff --git a/data/icons/16x16/apps/Makefile.am b/data/icons/16x16/apps/Makefile.am new file mode 100644 index 0000000..b050f90 --- /dev/null +++ b/data/icons/16x16/apps/Makefile.am @@ -0,0 +1,2 @@ +iconsdir = $(datadir)/icons/hicolor/16x16/apps +dist_icons_DATA = ynotes.png ypanel.png diff --git a/data/icons/16x16/apps/ynotes.png b/data/icons/16x16/apps/ynotes.png new file mode 100644 index 0000000000000000000000000000000000000000..08245e94cff5c3eda95bce54ce5a61d04437325c GIT binary patch literal 704 zcmV;x0zdtUP)gYGVJg6g1rnu z7H9M6DF8A%I`uu&?kNvW`(w|>Z?G_h=6Do;p2dE073yM?|)a2fNW+Fg6|iG(O$!*n>LNu)zWVTo687( zzaK==2q>KZ!chdrgeX;NRu} zN#Y?Bi$EHuazI7F>cp3&5xrixZYmMq{rLw2{dK(0C%dPom)c|*b!xRt0mrdWTWzOZ zFhCF?U%$o2FeZcUt-8^duV#N7Jn}+a^Am@kHW=e^Wp^|h>v1{@12xr~Q8<*D|GBt) z%jMENn3+jV?%4S}z3wjb^;U6SkEV2PK6ALD%wn`yrH2B~d@l7oj&69FR_xy0I=!#L m%)faX3ZK6iB>%LH8?|5CIqyQ{^drFl0000(}6TtKSRv1wTBrP7#DiFIEGl9K0C=bPuNkQb^oiEGZo9G zu(IhypOEH0D`3gKp@zfnAm2~6eY4gxCQ0`spL8_i@_O`cUD8AQB!Os+m!5yGT)nzJ zPV~=ffdh=`4&SERFn?j;46v8riR*V;{C#iS`t9C#_8B-B+`N>LwtZFA;#I|=b7$Wa zPk6Zd?z_(q3x2G-|33a~nsMBos!o0GD?I8+GmEF#^=mGBEpX_$#N*`xhmKDP^3hyd zJ1uoes^`4t9Tr!5j#YN1^xdhhtlRIc9dp0DwN;T-3= zoz72p|7H(K5N4XT;6#zZVax9{N3Dc0yXG@Z1BlUPR%P$We7_w%FHh<)=?-;%quQQ%*i=%A+H^%Q5>W(IKQ+gIh6rPRu|~n#AQ49-GEAL5K7`h zgM1h=N=gc>^z{o8ld}`kQ;YRdQj;}>TI;w7{eQ5$Qm zMX|KV#$=<}WV06gd;|hI!xX>a`)20NB%8HAE#pi_TgSRJE0%mK^mKjta3bSN-$a5W zzN^(1)J=t+zDgRAIslnvq?B^Gt{taFy4ucVa=EerCJIAC_X>Lk_T73@7^oVcRt3Ly zWXpl8pu-IBp2BF)4jp@R6Li|d*d+R;T^CV}n+l~#{N5`bqAKTsDKjbnBUMaQAsQRa z19!G(?ht^fG$elaINLB|!>UB4r6t8QZeh`jtpf&!=!0f7V( zM4_XIZmlk^UOq7-X1x0P`sL>1&2JiD zPI?cw-+sS2{;^9Kwh;)DG(`x3F$TwRaBK(5wh%(HxMs6ZEKGr?5+F*`!Sw%_weuHf zSq}eQyUK8RxwaA-TibZ9M;L^3+97eQ@jd?>fCNNb#Qm};ne6Tn1Oe|hKT?*4$z%`T z_i$aeUSZodmStgP5V*k^0NuURwK9|SY-~znIQSJ~SvL7>M%d|~wXW}$RtPDnl~XOK z0;KMZdVSY%rIM;@sDQt$R09hk0I1eRA{qc%c8A@;yq@PU1a0YhqSjUeYK4@Q<*@Fgm0>WvoA2axQ`6d=R^*tF+)P83CCagG`(l}^*=dMRA$ckM2b zj;e+x4J610+Z!ZrX&kubP8SW%-pqubKR>x`+>ec$Iud6DCLZXMKW zIT!;$;FD!J^r0}t8}Z=9y=Pge@4KIU+M>-#m5mPA&nAy_&v*NC^KG`Bl*#@CB^6Tq zc{k$t=Z!Ixrfgi6te^GS{^_phtuNCp&o1BBpp+cLqJfVjj6fp60403-Fl9X6-4TES eH2m)vMH`hfEXYaK)) z5dwId%@$Nubr;oTK@cPYu;!3(B1zKw`F#Fvr3c|~m=r}}uo#BCZ!j3r&=RT=k`Zu( zWG}2%>od38{q-*gKA(>!lL^D&CaUZrP{y{1WPgHx;xk_2>=F9XLo-i;v)L>a3I(>k zy&VQynM~#vMy4hb2_>0Ks?Zbg0PnakQYw{7q(J~F5C~AW+htCtbIW8h-9hFQs6*oj z)JhNF;tli@tUnC~13ElBBn=$06KpXcG@VZGp-D+->G=4VG-5r*vk5-O+`o;-V`{Zp zC)TUgssQ_&<#PEgY|UU(g;qe#_EA2cKY-q7G#V6*Mrj49RO)&h@2IFCk&5Px(8$NoSL*dT6^lhW4Fcx-5#xFY&d`e* z_LdmaD_oR)i^cM#)9H}Lv%ul9Ncd?Ie!suz^?ILrJe~-WoWq$JG=d_?gWOsdpann8 uC3N|Q*=&wMUj?1uWzYd?$@JjL)&C7CROKYrOuzvE0000flgC#cG#;wGinTxKLW$GYKtpzCc5hNvTM|t)&iy4jsC< zbdYv%Du_eCse(`~6s@(fF$u{fclTZg^+f96+CMz_;QxKU$NRqz{(Bi`MLL~cPb3nf zLWpj|FfdK?LZecOFbpwGvr(_tch=U{#sS1xgJoI60|Nuyg+hVe-d=(*jOZE=mc?PE z!pp_QM7dlZI-85Gky4V&$(8gwvBDu0JyHp^z<}iV`E(J=@AzIrK}t`jZR!j$>iiDj^mKe=c(0d)M_>I`8O&KE=)X4yz>hBl4tBpr-u5raaBQFbsy_LJ*~b}{ z*9Uo$yL%eD=FOZ-=JqH6-&TL}^jQ)72AYsp?>3mtNakOxoB)FIM=bvlx(@hl@I4NW z6_v_ws)ye>{L`ehvw~1EOfe1Q2+<|WqE^cSgj-91WkBo_bx002ovPDHLkV1lZ66~O=i literal 0 HcmV?d00001 diff --git a/data/icons/16x16/status/nomail.png b/data/icons/16x16/status/nomail.png new file mode 100644 index 0000000000000000000000000000000000000000..752edf927b608a50b9cc2de64387c832c8e0e430 GIT binary patch literal 531 zcmV+u0_^>XP)RH}$G!hK@ZXmzn%mpkU#{!^v@ENxltL->Nhl&1V^B)PNs{~? z4u=;2b|J8ByK{biUhnt&c%D~?OS5HJ?Du=TwPr;nM}yC3}Xy= zo|ES}#u&0JBZ?w=y&gdN1yHS4?M9Y5Uy0+G$HzyEF&Jam?RF$dLZ0V;?!a|j*6Ve-y0f!0rqd}|mZ7y~wOV0}K}0?s zSP7`t>r|^%-rn9g9*?AH%JFzaYh6CQ02pJw0=C;N-<8%Ht@U4LHo(Kf!?)&t)jMsA V^prXFUT!FI~ZP-PcJgpA&)X z8_PDr2T#5}|8XwCs% zTb>s7G`t89d`l0MlmVi`>)x4$(D8VUTD^H5h9XiS6ws2Fvj|t-G_(2r@#<6RmH~R& z(p`=v_K85GnQ7V$Bl6$WQ4U?(nxQJiNRtPLi18kwNpRgPJ(o^s%-k$O-=3Wn;MK*M z7Q4XS*F?!9LN}1o_&e*0WJqmzsRdges3hYexXM(v1E?`n^hJ_EL!}tA(6%Q`&L(zc zO{+IndBU#^c4v}Lm57p00wobKyo)YJ zkc6Kz(?{Sr=M4R9NhbX@#51z@$95gXF;6)Egrmns_Tb90@^|Zuz)sKbnFB=0>J|uw z5@0(4p!xxGB-p|P#t?{iu&A;c-jKZ*+?O4aE#No}`9c;71%PAyqkHkeXna>X7<$_y ze#7nr#%c{nWs<5f(?D4gZLU!Rm&>8_Hqx4DmLp$|yob+L*OnOJ@PhGtu5<0S*vpv(;d!2&-xXYgbVHrWq-s&B zAaMGyyi~RZ$PB3%OkplR4OY=sGcE50uq@a8;nd}RO~akO@`c70A-I-l?JjLFRc>oz zQ)nH%^aj`On9@iDmMm%jJrJcvW58__ibdkuEzp47d=#Djd2*mwaQ3&im!G7%4c;`# zeTO?Mc#vfV1}0aQM&Om2YQ35QDDr_``({#=kgP3JQrbv#DW%=WdU)8pcz(qEsI4t_ zBvLBIq*Nn`Cvy&l)J9VoH;YGA{2Ie64k-P^#Gs?4V)sV zlcz6!6AJMU7q-TJr!D8n@x+{u>uYFMaa~|~WMr~_Y`nO&tu^}Sl6z~lvx8R$uTIMY z?d|dJsG~+rQ;ww?5B=l4FsB=>@AKs`$5E+s!}+G#yW(XFTjK+o0Ui4G*UFbyWZW002ovPDHLkV1kjx BShD~C literal 0 HcmV?d00001 diff --git a/data/icons/24x24/apps/ypanel.png b/data/icons/24x24/apps/ypanel.png new file mode 100644 index 0000000000000000000000000000000000000000..f41425f27fb1bdc1b6d3e2a0913b00bc2ffda244 GIT binary patch literal 901 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjY)RhkE}%W;&J@#6kk7SM}gM;S;y4)0)-4L zCQjIsGEvoiL&OuNoi2PQ3?nu?W@|`2T5ovnOvqlHv^E|-m5Ql46+tU^XDxeO`qy;N zgZRU*N*QX_d_A_Tx8D3KgV%x#&&AJs=P{O5RsDMU=FOYe4<9b{oGS0RWJ<;tcaKjU zGd!fcclCBedzx>JaX(^eaE_tv@WTWXsah$%_A_b5VXH;i+1aNEa$GE!(U@3bE!kEX zIqmwpf9LLgzq9xCyJzo~?q08y^y-~vD7)?%pGiCR?0NF%&z##IXPo>ay;JneC)LYe zneG=p``NWe$Iv*mQ7c4Qsi0h`sl!3&W?G=1pPz-D-Lug3?v5wh|JkknI*ViD|8KnJ zlQXBjJj=8-=;l3p1p{NYW=2ibXQx%4_P14i_3F`W>KpdA#62zD{Uv9~3&G_Ftj=??GPp*DZN1U-!o2CX2hW}owa=_` zbq+T?y(@cnF5liQzulLomEHG@O!m;UopI;xIla4nes#}9Gz|`Tcl4d8l02ysHym`Z%=Md?gYLwDrXxs4W^ppuiDDIXWh}Pv$CXr zbN>_m!=l%o>^RA^W(_cjsFt`!l%yn~>+1IrLYb1P$0DY8tJFs~M{@I=Pe5}RJYD@< J);T3K0RZjqY8wCm literal 0 HcmV?d00001 diff --git a/data/icons/24x24/categories/Makefile.am b/data/icons/24x24/categories/Makefile.am new file mode 100644 index 0000000..acd6854 --- /dev/null +++ b/data/icons/24x24/categories/Makefile.am @@ -0,0 +1,2 @@ +iconsdir = $(datadir)/icons/hicolor/24x24/categories +dist_icons_DATA = ydesk.png diff --git a/data/icons/24x24/categories/ydesk.png b/data/icons/24x24/categories/ydesk.png new file mode 100644 index 0000000000000000000000000000000000000000..af3fe7bf69b8bcfc488d8e7684d859e53690b725 GIT binary patch literal 397 zcmV;80doF{P)1VPaBK%*AbqUf_HUW%f9m%fW)&JBQtMx)kfocrd$!Xx`W z2{}`1Ec-RImg|M`(QB{lxbRgP?A~<`oH-vI&j$y#y>mK>R{cn6!{6I=<;x^K80mV{ z>$el978{>M+XHDd>*};OVfyp`PoWxBcL00?AkhF>lR-a*{m1qm3}qmgnL)eV z#Bex5!F90v=N_bKV(ZqgIw?tlWms@b2ae-FS~Be@0e;yh6x_n`N%3Q$0TtPdv;tp_tQ5k(P}9$!Fbdk4So+|^JJq1WqYNmGbSW79NQ8ZNYIXYDP%}NiwVCh;m>av)2V^L2&_uWSpRA7fpZ3Z!thj04-CPe8Aaeu>VI8Crc-n zZ&{oq5K5pMb*VU8oS&|#XM1hW@DQ5Ov;)BaA@YP-Or&Gd00GM8hZHsphv-rlUd@{V z$aB0#feIK{gNMhE1M;N8n2aSKPiEus81XRHIh>MnOdnhG*``%?%K-y;1*c~qa){8L zs~6J_M4lW;lHl<0J`N5JKqCT=+ji|a2AGv&l|soWRo&P{U-ZGI6KDYYT!OOEq>AGh zqtS@P5M3Nw7=~~>hXIBt){8aY^Q9}?v~s=EI{Bm%p;z(g(z3Ka?Df%V&a&6fs=5MsWOQzHKBe>Toqx4)s_|uVGr_`e0i8|(+lEJtoCefZ-i#)z7cx_e+Plc(@DJ{_XwGY4Vrt;Qz5P9(nrz4H(u!9&1WB??Mx?K10ejKR~>-M4R59+-*92Z7~C zN8JylQ@83=72z3i^ypC>Ja`bjUe9lCZqDU-KAY$Hw>vvKH<`J*dGjU!z&?xk+}s={ zCns^^#tpk?&z@Imwc7hc^jcY#$zU+}I!)6D&N)m>OgvkH>FH@~Zf^3_)YPlq`wx>O zc`L^FV!z*~EX(dcc<^ALs`mlN|CM0x-n|$fA4i_&w$W(3>YO|4oI71rRcmW&E4g>? z-g87W%glSqvg`ub;-?j#pPz?_z&YoVBsm}==d87F#28y5Vq=VwB*_#J{UOiuMpaeo z0JhE3i0|IL8`rO2M+m_IIAE{n}CQg zKR=Jf#YI0cG4WEZR(szV^L7ZK8A7nuS}-$I6(Ryv&66a#m8R*Ub8flc@Bi;7bYtf-Y zhtTPCaOu(|XRUn+z!?#F<1MT5CqV77?}95;F&D?QJ6Zn=$6|dcD5ZY&PMX!@|PC zLmx-thYue{2myn^z|G9e9Pr+s5s`O_qG%EkS!+oj0wNNbxn$;5W6Z~@dQnx^`u)C6 zPEKNRaq*`|^T^O{w~Jb>W|{dwS(ay+`Az5CJ^&`hIGQT5)~c#*i^#uXj7voH4`yB$ z5nWzh{*|9UnLIT$#f?T|t|*FgMNym%A+(6d8e>322q8d3l$is7RS`KKLilHrB)y_2 zeML=$8HY5*|D*)H<-Cu6omz#qkVABk%&~rm|Lp)nK5Sh?%lf^RaNQA z%F1JRiJ3XI*1k+c=Ryd72GAlRW@c4Y4BJE2+QK<^TU9?Iq9tbTwpuN{eEIV4UIH%5 za!N!_S!-Vh@TU-h0U*X0s49gJVvKRydw<(ndr?&{ipV+<$&}JP*vg;k|DF zm;m622t-7xnpIWxrM31GX1->vUANZC($dls#R0(1&dwHDmi-W8>=IF(h@Kabx`>df z=0xeZ`HB@O`g&Ye4P|Ni|O#+W;0S&pgd3#!_PF=isNI=m}i zq-ol{cI_J0*Vms~92jo$+S(e4NF<_)h{md_s>-tbCWP>JRbA?II{#T+UA4n_dW25| z;o&_>0HkS}HfCmK+C=nXmSuzO?d@*{gTa4AM1~_<0SExfAp?Loq&}_!8h(?is$5YN vSyffNJkPuRe*eCzJ{mW|D53u1|5x}C#<5~v$Arb000000NkvXXu0mjflyYwR literal 0 HcmV?d00001 diff --git a/data/icons/24x24/status/Makefile.am b/data/icons/24x24/status/Makefile.am new file mode 100644 index 0000000..b8bf83d --- /dev/null +++ b/data/icons/24x24/status/Makefile.am @@ -0,0 +1,2 @@ +iconsdir = $(datadir)/icons/hicolor/24x24/status +dist_icons_DATA = newmail.png nomail.png diff --git a/data/icons/24x24/status/newmail.png b/data/icons/24x24/status/newmail.png new file mode 100644 index 0000000000000000000000000000000000000000..f2fe0ce74e32d24a2a806a00a360b82475e1d4a6 GIT binary patch literal 1396 zcmV-)1&jKLP)*`ATY>|D z04|s7<{sO&NvG2UckN=&o;~c{ySEFtdq7)TTe;&nZ>?Cd;+^*PcB0WJ!C(-z)ba8f z9v-H-xf$EG35UZ38XKQi6y+DOSnQ+QbzG(E`o67Ox5|A74#<&_5os8Pv@Gk6>+s>j z(y}aRnx-@iL&jn;sq1>;e{K+oM1JmeyL&o1I*3N2Y}l{?O}qPeCMG7Rt*u2$iEY~m zA!uo7As7s927VQf$3MKedCQh9{fR_ET9ze$XdOFtOlGrLX&8oF$mL`%hUAu;17`WYTyk74eyHBUnjE#*Ur6iR~F>e?+j)U9nrmCun z(b3Vh9*<{ydU|?P1(=$e`j-&mrES}`t<7e$B$G+v@i@t3l2j^1p-{l<^-@+=2EeIP zr|9VDprN6G%F0R{$03u+aOKJs(&;pHb#+|4c(HzLZ0yL*hn75J@gM))KJu>z8&bsf8 z)vOSy)|a37T8sTouXAgzHcv(6_P>qFnxjXLvOFM@$zWO5A}-}E_|&CK^z`;JJUmQi z(oH=s_uh)y;??>sYK{HLBC<^um96ayaP`H4c z{VU9VhM3*I2wFx7Ho>&Ow9%I1SSFb{fnQl1+RmLjIez>&?}bb#3M|8+ke7Hw9x?P| zunHx(0L5Yn6-d*;HYLK6Xv=YgNqQF6EAtdxW1Q-}jQi>UwEPF3&q^u_laQNPM2jYv z0!#;KIS5lCii^1g1GMEh)&g60)>%(~o4avsYRJAaZ?8&w9hYS&H}QNHSQv-Qbtu|M z^H$U>!sS`=r!Vm3H);N$t&I-+`k6+L{=#z)`#PUf>jIC8b+t84P3=k-&onvwH=ex# zc5W0gXD;?sg6D2v{$-5uq04;o=W`qa@=G6@3X}tn0_!ywO&c4ORy{ytdjsp9UWLyo z%CaRqp9THhSGa!iV~Pd%VuA}F|C6EEC5{wr5`cNv-*BmvQfNKU-c-fgKW(D#omS3v zN4Rbz+U2WH@wr#yO`z#s(EU_7-~(0y-vXEKb>QFDixl1-hWw`h0000QuZ?RI(q%PD5(v77X;%<+FWb}Tz(L1eGX?{pFSaZ%&C5U- zV<5;Fn|%>Gs4)64hjr3FYX&mRkZNN>ll3+!Nz^v+=HA?U&)I_{BxI05;*SZ)^s`zuh)yYxj7Vz#nFk0i637{!G#MK?Dcy6oFE8OO>kddA9$W` z@cuqk)9`CW)Y~zHGFG8UZLZJ|3S?&NgBcIQMQi{RB zK`_QJJw1&=q44qf^XI3ZQxK2GJ)$U{BZN$Z!(oKO;a$PaP!t6xPMiQ^42&@h4-ezY zl`Am-tpWl7Boc{_y1ToR(P;FY)2B}(5{ba=c7x}6a2)r-RW6rd7zSin24f7CWx?%s zBcIRvjvYI;F+V^52LSK@!1Mg4qoboZb?OwnUhhA?bu%)V3=SPS1jZOBr2qiSvYLuw z9STmKJgE^vKB!i!Fbo5P5Qw6j{D7Sw|_?n**bjq@G3VuJL|LAY$IJ=UGHvfZM{t? z^^c8>wcx6%LQ#}fuTx4}@P`i{Vr69oYinz8I-Th2>jPs9cDo%Oj|aWIy&$qIXLVgC zj4|~0_al``A)C#@@Am@$N~IDcN$P-?N~IRq<#OTR!GqYlcQ5ws+Xt7+1zp!stJP30 zmq7$UAa=XG1?cMP!otD={C+=lU5BpgaJ$`LjG(^P$(2osZ?6PW}a!9Pg}PgZdn#IO#`JA%gf7%Mx$6-T51hZbD5@z#l^*4 zp-mp86r>$aDMh2v0MGL<37fUYLovMe<3EXEkh<#J|y zef@VuQ7$5=dEU+QymI~e^}k-W=Wpu)6PwrN<;Va4 N002ovPDHLkV1iuPdE@{9 literal 0 HcmV?d00001 diff --git a/data/icons/32x32/Makefile.am b/data/icons/32x32/Makefile.am new file mode 100644 index 0000000..0411318 --- /dev/null +++ b/data/icons/32x32/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = apps categories devices status diff --git a/data/icons/32x32/apps/Makefile.am b/data/icons/32x32/apps/Makefile.am new file mode 100644 index 0000000..91d01ca --- /dev/null +++ b/data/icons/32x32/apps/Makefile.am @@ -0,0 +1,2 @@ +iconsdir = $(datadir)/icons/hicolor/32x32/apps +dist_icons_DATA = ynotes.png ypanel.png diff --git a/data/icons/32x32/apps/ynotes.png b/data/icons/32x32/apps/ynotes.png new file mode 100644 index 0000000000000000000000000000000000000000..7e39fc30ab2c528f8685fd05d0a4e11db9ca9720 GIT binary patch literal 1757 zcmV<31|s>1P)6+U<7&SQ6G*6ZE%D~=O;ZO3bGo=wtMsv2lg)KcX~B@_rz(xxIU2q}=Jl`0~k z7AT@6BL7My+M-m@{DW3heE_0Tnou=@BtR1tXhR^a!08%$*WP*DdGwpf+I5m`>qJyl z5!V{;oO|!w^WE<|=iC`aA9G{>2XHwL?Oxee_U!0kB4vZjX^cr?uO!pH9~}F8_>ls* zdqr<95cELk>vw8qhD(x^^anyv;7`6{va|8)TOUeU*WFS<*({C+jvlH-bU z(VQrXDAzUVY<)=G)4oXhAvcfBi;WKjaQBM7^`6c4am6aDsZ`TBW=^FW@9d)0Hz~x} zB+!f<4#H@=YQFmVWdpcpRk0sB?~S7LM%^?S+C_6@h0%4J7SX4+Eg(H@qX(Og0`fzf zgg@b^^7ywv%wE-eC73sW-7AZh?}d8;q3zVoj3&u)(+A6=ZFJMumQcPMazxdJ3`C9( zU{Xk`>{1j~$rh7GRN1*rHC{gPfdCNMEDY#2;m8lFsZ1wV)uxU+2Q0ef>qFGPI+yI0 zD0Uu^E8_n|dLuks5y1{gkS7qb#IWt%+M`6 zm(k$zJov;zhMe&0;XaBy1X!J7m0~*xW8K-jY~hE1qx@;@L~IyKSjO(-E|yRK|~j}pB;GfF7}1?1=&!RS5<_!txb|QeeRo` z`V4?LaDs?Yq1B*~azAN$Tas2>RwzVd`;#t7DNfu_8)@fb43}h67*yfdAt9PqVcYio z$DjD?t!!)OLP^oI0bGTDPSuvK-E4m2%F%3TE&v4u1xiwBu$%gNyAc;UF-gTPk!N+E zJlmtllu1*;4(N95DRLaq)G^{BI&^sKWVI$9DGjw8m@Ro=*t0*8cKHb{t*t^^dl$176eP_{Hbf7f{*yDizl{ z{-?_3<>l1ow56tI0B|tk1CW{KG+gQ;O_P(8IB9bLcwP|v_N9OQPS@o})?M5FH(6$N zbf1Rf+Iff3`+!gYq6nJuM~_uXVI+1fFB>BOz-9p;0EbE)l!}kQIRIjvUp?~98)Ijk zAANeX^RQuX2P0?T`0Ry#KJ<;~S1)WpJ*MLLxMv+desMU+Oxa%ulobDFE*Rhsf>^sJdc500000NkvXXu0mjfVs~W- literal 0 HcmV?d00001 diff --git a/data/icons/32x32/apps/ypanel.png b/data/icons/32x32/apps/ypanel.png new file mode 100644 index 0000000000000000000000000000000000000000..6134a154ffecf1e5d707a3d569bdc1369733730c GIT binary patch literal 995 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 Xre@+?x_`~S00000NkvXXu0mjfU|MOI literal 0 HcmV?d00001 diff --git a/data/icons/48x48/Makefile.am b/data/icons/48x48/Makefile.am new file mode 100644 index 0000000..0411318 --- /dev/null +++ b/data/icons/48x48/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = apps categories devices status diff --git a/data/icons/48x48/apps/Makefile.am b/data/icons/48x48/apps/Makefile.am new file mode 100644 index 0000000..8ad0a65 --- /dev/null +++ b/data/icons/48x48/apps/Makefile.am @@ -0,0 +1,2 @@ +iconsdir = $(datadir)/icons/hicolor/48x48/apps +dist_icons_DATA = ynotes.png ypanel.png diff --git a/data/icons/48x48/apps/ynotes.png b/data/icons/48x48/apps/ynotes.png new file mode 100644 index 0000000000000000000000000000000000000000..53703e4f43a12b01c5c660eb7f495d0c0bccbaba GIT binary patch literal 3235 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 VBfgHwO^g5l002ovPDHLkV1i+LS#|&b literal 0 HcmV?d00001 diff --git a/data/icons/48x48/apps/ypanel.png b/data/icons/48x48/apps/ypanel.png new file mode 100644 index 0000000000000000000000000000000000000000..b37f1dafd5195beb7310ded7eed21305bc537c89 GIT binary patch literal 1122 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCwj^(N7a$D;Kb?2i11Zh|kH}&M z25tcmW?ZYhw-h8;R^XTpq`~?b&b{jiXJBA@?&;zfl5y|t4DWnlLxJP<-7;r+rHgXXaj?zKtWZN)wPDI zz4NkuxgP202)vq-=X&JW5~UTIC(*Y&N3q_&g{2QTZER`cXpJX zi+nz(x3euV!}W;8b03K|+uvs9orjV(o_P08ue!Qggo~Bo+y0uirL(Ubq|kh z{93g+z31=Y{N&#GrK;*m0U9C}R#sBC(tD0>j{Q3?opbK%OlE_XeN(2eEIasl`RkbW zyu4%Q<{vorE5!ZvT;+tfNBrJ?E76Ndc1vJlI(N3tcZV>GP5#sR+f(}v)H=B_ID`nk zoyV}MOW3jW-*TrcrbVY*w;pp{+U4=v_KEqdKX#UjD@$wnIXVLNttlvrJnC6}EW20D z{{K7yljrZxUJ|_U&Gjtb&Sy%yCd6x84Sn>wu=DED)K|T1Tz@RBk4rg!el@G>{pXjz z4Yj>3&uNF=+gDS%ouj7We_h&ArAhC6XC2sEzL;4%Kx?Xng~fsxz4N{+S1C=Lef68$ zMVGys%eU~luq68|x0!a}+_`f~>H)%@LOWGn-3ovAk;n6UVq@q7&JB!f7`;oBi~o8p zJNuh=*GjvIF-5E*9F1-v{4d(Xryi8NVAv`7d)ZrgDe2zFi+1k&S9#Pi_#_{<_>p-p zmvMYmS$-wgeI@&oWu4_d%DZ1|uWbV*#)<_$*srPmxsZ2iLm)8ytCqM%l%yn~>+1IrLYb1P#rDk>tZM?iiX_$l+3hB+!~~N-tGiy&;{Ax zlbM{FSDeZamROXTUs|lAP@I~okdmKVtnU~a;^7|@9G_TFpqrUjT#}fRbK*iCC?|`9 zGzRCF7A2=LAj#?iU7NUU2frIoi48(Yd}xplLqFVdQ&MBb@05)FQ-2eap literal 0 HcmV?d00001 diff --git a/data/icons/48x48/categories/Makefile.am b/data/icons/48x48/categories/Makefile.am new file mode 100644 index 0000000..97c07a6 --- /dev/null +++ b/data/icons/48x48/categories/Makefile.am @@ -0,0 +1,2 @@ +iconsdir = $(datadir)/icons/hicolor/48x48/categories +dist_icons_DATA = ydesk.png diff --git a/data/icons/48x48/categories/ydesk.png b/data/icons/48x48/categories/ydesk.png new file mode 100644 index 0000000000000000000000000000000000000000..bb32a53eb3c7eacca676256d333ae12ec9583480 GIT binary patch literal 733 zcmV<30wVp1P)VDPmdmb`t;I%q5%Ot0wfZRMx`2Oy2y@6Pw)UJ03v=O5J-em$&Lmv+0m_< zGpXGSuwa(vOW64<^=vWDo?&hSG;wA~w3=;(84RilP^rl-5L0TCBsl?P^FAr6CMl_o z0}vPdKWq%fYIPkzR1Aume$jLLthNT#3e*{QL-OAo5ttNUr{)VE5uE3eWoE%!=4^1y ziOT`92q+Q zt^vR|1hD5Zk}4qIdrgz_7ne41JP&-P`2#vdkd$nt5lBFGjlidLNd!J49d8xwen|rF z2s#1&Ab~}<6#3NP6IVP;*8u!hk-v0G(UAat%hX?1o}%@yL8oPUB)|y<|JD444d`>c z#TU2KeK#Dl0Ra~fNF*}-;11HWTm>Tg4z9kDCa+sMefY|<1FQQhVg2PFm#J?)H-S7> P00000NkvXXu0mjfZ%jAz literal 0 HcmV?d00001 diff --git a/data/icons/48x48/devices/Makefile.am b/data/icons/48x48/devices/Makefile.am new file mode 100644 index 0000000..31ffdcf --- /dev/null +++ b/data/icons/48x48/devices/Makefile.am @@ -0,0 +1,2 @@ +iconsdir = $(datadir)/icons/hicolor/48x48/devices +dist_icons_DATA = cpu.png memory.png diff --git a/data/icons/48x48/devices/cpu.png b/data/icons/48x48/devices/cpu.png new file mode 100644 index 0000000000000000000000000000000000000000..f7473aa12d8263541f3677dfa88cd42bb8cef17c GIT binary patch literal 2774 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 literal 0 HcmV?d00001 diff --git a/data/icons/48x48/devices/memory.png b/data/icons/48x48/devices/memory.png new file mode 100644 index 0000000000000000000000000000000000000000..e19ffcf0cf5d6a23b98610be1eed401593c7ce3f GIT binary patch literal 2683 zcmV->3WW8EP)Ye$Y`kn7y z_p#8papTlj5bb{j5a?>~3l}bQ(P%W>t5>hQtgNh^p-^b^ix)4%Wv^bnn#njkb?Q{Nbm>y} z(b0kh3*7YS(?e_5uAQ@O+qSQE?AQ_8x^-(CuG5y2lk;HOv}wOBC@2`=pn3D=eLNNz zK76?Tc` zm^pKSn=U3Fn;`a2kRe9V|JzTfK)5ukuT zEr*L(iezMDc=R2u69G`*C5%7UuU|ihbu^Y$JYpe$0L^S|#5#{r$kR?0VDR9#^Sil5OapCvP0YFn5$4i6+%7f6ahFr z-G~t*R31q4JK30&`=Z29WZqesUmKVn+< z(hZ*C%S@e5`uh}s#kf)gz@FTIHZ|L5ENz<*W)Y3ejgmZR7Fu%BQ)c=YJe=){Q= z-IXg>Trk}w@xzA?LzujPfGtzD!3q(C@HH=z5CSI>aE&b&tBfUV)rs zPn@+Htg;vI6{OLagRWh>mcCL#IUdj|5kdgZ1#GFn12zJCRz9$100rLf1578b)&oh0KpeWl8M?QRpLuhTqzcjCOfJjX>_rdCOu56kCO68iybnobQ^69kg>EkG^X zXq;q!9IoMazXbdtE;IsflpX=7Ds_LA*+T%x0c0rx6w>;KlmZb!EHKsBp`_NvR_jai z5=g(-fzGFuxa}4xKu6DmHueY*$rPm0kgKP(fh;U0XB@L z^Wbu({eT680@ep)L=e8_<076>uxd?vt@hFS9fbQDLFyYC8k#NW|5pmW&EL7oSyh>v znVDIRhKm5;=Xtqcf2larl$Ab0j1FUyO6Yo zhC>4e49G!%GPoFlA_(Hw^I`*Qd0t~H&~*JXGVqpdbVwoCH(W@X?%uuYTgNCZ7T`UL zQd}4<<-+9vD26jrFCzkK6{E(fr>osms$QZzJK`4nKKRC)^x&JS^Qq) zS%-J>YQktX4{MjAwPJuqNSmJ3>&oqRG0~jmcso@sBiRYd{seQi2(h33!ILLXM)h** z`t|DuAUzh?v}uzx7eaISDv8lr5#W5E2e|pLg4(i-fTmu;#p;_?l=I{CRaN@6jZ&o+ z^ok^%l%c{*Aafh5>&@3K|6556NTIgi)^l0#3Y;oHVFY#g0(Q;#QF>PGSkw0MNLgjY}l}2 zuG0i)*IWw#nlW$U_U+qAtYNjgG@CRb%vJ1#lbx{I1L>_|!6MMhmm48-C}};>C;I z`Sa&pXOgF8^XAP;pFwTtzvVietdux#;DFn(VMA*q61fbRhwTA71})~060_~TYFS1ZNn?N};kaHpvGx~y z{#%}D(fj-^qmd&=y3arVJjf@{r88#CsNxpZ$^n-wE-r3ku8q&2Np5B0HohFb%K&cYjaE~AG?SJ4FQReX2eQow#RR8msn^Tv%ECB$?NyFYQ&t44^=_}udgO6|XKM=oW4;I3V}x)iII(gxu` zdz)cnYN0T1g7r~u83Ecrij9(aS~-QQaUBJ`Q8J}%Q=8Hkx2k=EowcdYcT@m@4#C~w z9_`#yt>&~wM(Qzi=+Lp08skWlkI41^BAqt6*U3P)rf>_KfaCBhvBqMpiM8(?!X?EW zDW^Sq=*>STfSaIt`u`?X-bDLR`c3f5_O@B9v9)h-Tx`G%u(bx(09(H!F7&2Fytgrw pglr%DRx%LoT`rQ!@8dqA{{Rl`eC(63A>IH0002ovPDHLkV1j1GA6ozb literal 0 HcmV?d00001 diff --git a/data/icons/48x48/status/Makefile.am b/data/icons/48x48/status/Makefile.am new file mode 100644 index 0000000..5cee24c --- /dev/null +++ b/data/icons/48x48/status/Makefile.am @@ -0,0 +1,2 @@ +iconsdir = $(datadir)/icons/hicolor/48x48/status +dist_icons_DATA = newmail.png nomail.png diff --git a/data/icons/48x48/status/newmail.png b/data/icons/48x48/status/newmail.png new file mode 100644 index 0000000000000000000000000000000000000000..404df7f69804a458420b4a265c8c989ce61321d8 GIT binary patch literal 3405 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 literal 0 HcmV?d00001 diff --git a/data/icons/48x48/status/nomail.png b/data/icons/48x48/status/nomail.png new file mode 100644 index 0000000000000000000000000000000000000000..f589896be35de88c63c2a390c2d6c068e2a12af2 GIT binary patch literal 2928 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 ackv&@It}PFR*u{N0000 + + + + Applications + + + + + + + + + + + Accessories + Utility.directory + + + Utility + System + + + + + + + Development + Development.directory + + + Development + + emacs.desktop + + + + + + Education + Education.directory + + + Education + + + + + + + Games + Game.directory + + + Game + + + + + + + Graphics + Graphics.directory + + + Graphics + + + + + + + Internet + Network.directory + + + Network + + + + + + + Multimedia + AudioVideo.directory + + + AudioVideo + + + + + + + Office + Office.directory + + + Office + + + + + + + System + System-Tools.directory + + + System + + + + + + + Settings + Settings.directory + + + Settings + + + + + diff --git a/data/menu/desktop-directories/AudioVideo.directory.in b/data/menu/desktop-directories/AudioVideo.directory.in new file mode 100644 index 0000000..966fda1 --- /dev/null +++ b/data/menu/desktop-directories/AudioVideo.directory.in @@ -0,0 +1,5 @@ +[Desktop Entry] +_Name=Sound & Video +_Comment=Multimedia menu +Icon=applications-multimedia +Type=Directory diff --git a/data/menu/desktop-directories/Development.directory.in b/data/menu/desktop-directories/Development.directory.in new file mode 100644 index 0000000..d7e9de9 --- /dev/null +++ b/data/menu/desktop-directories/Development.directory.in @@ -0,0 +1,5 @@ +[Desktop Entry] +_Name=Programming +_Comment=Tools for software development +Icon=applications-development +Type=Directory diff --git a/data/menu/desktop-directories/Education.directory.in b/data/menu/desktop-directories/Education.directory.in new file mode 100644 index 0000000..689168a --- /dev/null +++ b/data/menu/desktop-directories/Education.directory.in @@ -0,0 +1,4 @@ +[Desktop Entry] +_Name=Education +Icon=applications-science +Type=Directory diff --git a/data/menu/desktop-directories/Game.directory.in b/data/menu/desktop-directories/Game.directory.in new file mode 100644 index 0000000..610bbd8 --- /dev/null +++ b/data/menu/desktop-directories/Game.directory.in @@ -0,0 +1,5 @@ +[Desktop Entry] +_Name=Games +_Comment=Games and amusements +Icon=applications-games +Type=Directory diff --git a/data/menu/desktop-directories/Graphics.directory.in b/data/menu/desktop-directories/Graphics.directory.in new file mode 100644 index 0000000..d2b4bb6 --- /dev/null +++ b/data/menu/desktop-directories/Graphics.directory.in @@ -0,0 +1,5 @@ +[Desktop Entry] +_Name=Graphics +_Comment=Graphics applications +Icon=applications-graphics +Type=Directory diff --git a/data/menu/desktop-directories/Makefile.am b/data/menu/desktop-directories/Makefile.am new file mode 100644 index 0000000..6252078 --- /dev/null +++ b/data/menu/desktop-directories/Makefile.am @@ -0,0 +1,20 @@ +directorydir = $(datadir)/desktop-directories + +directory_in_files = \ + AudioVideo.directory.in \ + Development.directory.in \ + Education.directory.in \ + Game.directory.in \ + Graphics.directory.in \ + Network.directory.in \ + Office.directory.in \ + Settings.directory.in \ + System-Tools.directory.in \ + Utility.directory.in + +directory_DATA = $(directory_in_files:.directory.in=.directory) + +@INTLTOOL_DIRECTORY_RULE@ + +EXTRA_DIST = $(directory_in_files) +DISTCLEANFILES = $(directory_DATA) diff --git a/data/menu/desktop-directories/Network.directory.in b/data/menu/desktop-directories/Network.directory.in new file mode 100644 index 0000000..bc88bee --- /dev/null +++ b/data/menu/desktop-directories/Network.directory.in @@ -0,0 +1,5 @@ +[Desktop Entry] +_Name=Internet +_Comment=Programs for Internet access such as web and email +Icon=applications-internet +Type=Directory diff --git a/data/menu/desktop-directories/Office.directory.in b/data/menu/desktop-directories/Office.directory.in new file mode 100644 index 0000000..d6c8d9e --- /dev/null +++ b/data/menu/desktop-directories/Office.directory.in @@ -0,0 +1,5 @@ +[Desktop Entry] +_Name=Office +_Comment=Office Applications +Icon=applications-office +Type=Directory diff --git a/data/menu/desktop-directories/Settings.directory.in b/data/menu/desktop-directories/Settings.directory.in new file mode 100644 index 0000000..161bd8a --- /dev/null +++ b/data/menu/desktop-directories/Settings.directory.in @@ -0,0 +1,5 @@ +[Desktop Entry] +_Name=Settings +_Comment=System settings +Icon=preferences-system +Type=Directory diff --git a/data/menu/desktop-directories/System-Tools.directory.in b/data/menu/desktop-directories/System-Tools.directory.in new file mode 100644 index 0000000..d1d85be --- /dev/null +++ b/data/menu/desktop-directories/System-Tools.directory.in @@ -0,0 +1,5 @@ +[Desktop Entry] +_Name=System Tools +_Comment=System configuration and monitoring +Icon=applications-system +Type=Directory diff --git a/data/menu/desktop-directories/Utility.directory.in b/data/menu/desktop-directories/Utility.directory.in new file mode 100644 index 0000000..0edeeef --- /dev/null +++ b/data/menu/desktop-directories/Utility.directory.in @@ -0,0 +1,5 @@ +[Desktop Entry] +_Name=Accessories +_Comment=Desktop accessories +Icon=applications-accessories +Type=Directory diff --git a/data/misc/Makefile.am b/data/misc/Makefile.am new file mode 100644 index 0000000..68b0fbb --- /dev/null +++ b/data/misc/Makefile.am @@ -0,0 +1,2 @@ +rcdir = $(datadir)/ydesk/fvwm/misc +dist_rc_DATA = trayrc xxkbrc conky.conf diff --git a/data/misc/conky.conf b/data/misc/conky.conf new file mode 100644 index 0000000..603a12b --- /dev/null +++ b/data/misc/conky.conf @@ -0,0 +1,36 @@ +conky.config = { + alignment = 'bottom_middle', + background = false, + border_width = 1, + cpu_avg_samples = 2, + default_color = 'cyan', + double_buffer = true, + draw_borders = false, + draw_graph_borders = true, + draw_outline = false, + draw_shades = false, + use_xft = true, + font = 'DejaVu Sans Mono:size=10', + minimum_height = 5, + minimum_width = 5, + net_avg_samples = 2, + no_buffers = true, + out_to_console = false, + out_to_stderr = false, + extra_newline = false, + own_window = true, + own_window_class = 'Conky', + own_window_type = 'override', + own_window_transparent = true, + stippled_borders = 0, + update_interval = 1.0, + uppercase = false, + use_spacer = 'none', + show_graph_scale = false, + show_graph_range = false, + short_units = true +} + +conky.text = [[ +${color grey}CPU: ${color green}${cpugraph 16,40}$color $cpu% ${hwmon 0 temp 2}°C ($processes/$running_processes) ${color grey}Net:$color ${totalup wlan}/${totaldown wlan} +]] diff --git a/data/misc/trayrc b/data/misc/trayrc new file mode 100644 index 0000000..f3737c9 --- /dev/null +++ b/data/misc/trayrc @@ -0,0 +1,6 @@ +decorations none +icon_size 16 +slot_size 19 +kludges force_icons_size +parent_bg true +icon_gravity SE diff --git a/data/misc/xxkbrc b/data/misc/xxkbrc new file mode 100644 index 0000000..b39422c --- /dev/null +++ b/data/misc/xxkbrc @@ -0,0 +1,46 @@ +XXkb.image.path: /usr/share/icons/xxkb + +XXkb.group.base: 1 +XXkb.group.alt: 2 + +XXkb.mainwindow.enable: yes +XXkb.mainwindow.geometry: 30x19 +XXkb.mainwindow.image.1: us.svg +XXkb.mainwindow.image.2: ru.svg +XXkb.mainwindow.image.3: ua.svg +XXkb.mainwindow.image.4: + +XXkb.*.border.color: black +XXkb.*.border.width: 1 + +XXkb.*.label.enable: no + +XXkb.mainwindow.type: normal +! possible values - normal, top, tray, wmaker + +XXkb.button.enable: no + +XXkb.controls.add_when_start: yes +XXkb.controls.add_when_create: yes +XXkb.controls.add_when_change: no +XXkb.controls.focusout: no +XXkb.controls.two_state: yes +XXkb.controls.button_delete: yes +XXkb.controls.button_delete_and_forget: yes +XXkb.controls.mainwindow_delete: yes + +XXkb.mousebutton.1.reverse: no +XXkb.mousebutton.3.reverse: no + +XXkb.bell.enable: no + +XXkb.ignore.reverse: no + +! XXkb.app_list..: +! is one of "wm_class_class", "wm_class_name", "wm_name", "property" +! is one of "ignore", "start_alt", "alt_groupM" (M - 1..4) +! For example: +XXkb.app_list.wm_class_class.ignore: *clock Fvwm* +! +! ignore windows in KDE tray +! XXkb.app_list.property.ignore: _KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR diff --git a/data/settings/Makefile.am b/data/settings/Makefile.am new file mode 100644 index 0000000..5bcbe73 --- /dev/null +++ b/data/settings/Makefile.am @@ -0,0 +1,12 @@ +desktopdir = $(datadir)/applications +desktop_in_files = ysettings.desktop.in +desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) + +confdir = $(datadir)/settings +conf_in_files = desk.desktop.in mime.desktop.in panel.desktop.in printer.desktop.in sound.desktop.in interface.desktop.in session.desktop.in term.desktop.in +conf_DATA = $(conf_in_files:.desktop.in=.desktop) + +@INTLTOOL_DESKTOP_RULE@ + +EXTRA_DIST = $(desktop_in_files) $(conf_in_files) +DISTCLEANFILES = $(desktop_DATA) $(conf_DATA) diff --git a/data/settings/desk.desktop.in b/data/settings/desk.desktop.in new file mode 100644 index 0000000..e26f282 --- /dev/null +++ b/data/settings/desk.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=desktop +_GenericName=Desktop Settings +_Comment=Common ydesk settions +Categories=Plugin +Exec=desktop.sh +Icon=desktop +Terminal=false +Type=Application +StartupNotify=false diff --git a/data/settings/interface.desktop.in b/data/settings/interface.desktop.in new file mode 100644 index 0000000..ad80a33 --- /dev/null +++ b/data/settings/interface.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=interface +_GenericName=Interace Settings +_Comment=Configure ixdesktop GTK+ settings +Categories=Plugin +Exec=interface.sh +Icon=preferences-desktop-theme +Terminal=false +Type=Application +StartupNotify=false diff --git a/data/settings/mime.desktop.in b/data/settings/mime.desktop.in new file mode 100644 index 0000000..162c78b --- /dev/null +++ b/data/settings/mime.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=mime +_GenericName=MIME Types Editor +_Comment=Edit MIME types +Categories=Plugin +Exec=mime.sh +Icon=application-executable +Terminal=false +Type=Application +StartupNotify=false diff --git a/data/settings/panel.desktop.in b/data/settings/panel.desktop.in new file mode 100644 index 0000000..5d56591 --- /dev/null +++ b/data/settings/panel.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=panels +_GenericName=Panels Settings +_Comment=Configure desktop panels +Categories=Plugin +Exec=panel.sh +Icon=ypanel +Terminal=false +Type=Application +StartupNotify=false diff --git a/data/settings/printer.desktop.in b/data/settings/printer.desktop.in new file mode 100644 index 0000000..59ea819 --- /dev/null +++ b/data/settings/printer.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=printer +_GenericName=Printer Settings +_Comment=Configure printers +Categories=Plugin +Exec=printer.sh +Icon=printer +Terminal=false +Type=Application +StartupNotify=false diff --git a/data/settings/session.desktop.in b/data/settings/session.desktop.in new file mode 100644 index 0000000..bec1288 --- /dev/null +++ b/data/settings/session.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Session +_GenericName=Session settings +_Comment=Edit Ydesk session settings +Categories=Plugin +Exec=session.sh +Icon=system-run +Terminal=false +Type=Application +StartupNotify=false diff --git a/data/settings/sound.desktop.in b/data/settings/sound.desktop.in new file mode 100644 index 0000000..bff147d --- /dev/null +++ b/data/settings/sound.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=sound +_GenericName=Sound Settings +_Comment=Configure ALSA sound volumes +Categories=Plugin +Exec=ymixer +Icon=audio-card +Terminal=false +Type=Application +StartupNotify=false diff --git a/data/settings/term.desktop.in b/data/settings/term.desktop.in new file mode 100644 index 0000000..f333fc1 --- /dev/null +++ b/data/settings/term.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=term +_GenericName=Terminal Settings +_Comment=Configure terminal (urxvt) settings +Categories=Plugin +Exec=term.sh +Icon=utilities-terminal +Terminal=false +Type=Application +StartupNotify=false diff --git a/data/settings/ysettings.desktop.in b/data/settings/ysettings.desktop.in new file mode 100644 index 0000000..5f62830 --- /dev/null +++ b/data/settings/ysettings.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Ysettings +_GenericName=Control center +_Comment=Ydesk control center +Categories=GTK;Settings; +Exec=ysettings +Icon=preferences-other +Terminal=false +Type=Application +StartupNotify=false diff --git a/data/theme/Makefile.am b/data/theme/Makefile.am new file mode 100644 index 0000000..39c519f --- /dev/null +++ b/data/theme/Makefile.am @@ -0,0 +1,7 @@ +SUBDIRS = gtk-3.0 icons + +settingsdir = $(sysconfdir)/xdg/gtk-3.0 +dist_settings_DATA = settings.ini + +xcursordir = $(datadir)/ydesk +dist_xcursor_DATA = lock.xcursor diff --git a/data/theme/gtk-3.0/Makefile.am b/data/theme/gtk-3.0/Makefile.am new file mode 100644 index 0000000..2a9f122 --- /dev/null +++ b/data/theme/gtk-3.0/Makefile.am @@ -0,0 +1,5 @@ +themedir = $(datadir)/themes/Y/gtk-3.0 +dist_theme_DATA = \ + gtk.css \ + gtk-widgets.css \ + gtk-apps.css diff --git a/data/theme/gtk-3.0/gtk-apps.css b/data/theme/gtk-3.0/gtk-apps.css new file mode 100644 index 0000000..28a2e8f --- /dev/null +++ b/data/theme/gtk-3.0/gtk-apps.css @@ -0,0 +1,17 @@ +/* +# name: Y +# author: Victor Ananjevsky +# description: based on Darkilouche by Maxime Doyen +*/ + +#ypanel { + background-image: linear-gradient(to bottom, + shade (@bg_color, 0.8), + shade (@bg_color, 0.6)); +} + +.atril-window scrolledwindow.frame > widget:active, +.atril-window scrolledwindow.frame > widget:selected { + color: @selected_fg_color; + background-color: @selected_bg_color; +} diff --git a/data/theme/gtk-3.0/gtk-widgets.css b/data/theme/gtk-3.0/gtk-widgets.css new file mode 100644 index 0000000..6fed9c3 --- /dev/null +++ b/data/theme/gtk-3.0/gtk-widgets.css @@ -0,0 +1,2104 @@ +/* +# name: Y +# author: Victor Ananjevsky +# description: based on Darkilouche by Maxime Doyen +*/ + +* { + padding: 0; + -GtkToolButton-icon-spacing: 2; + -GtkTextView-error-underline-color: #cc0000; + -GtkScrolledWindow-scrollbar-spacing: 0; + -GtkToolItemGroup-expander-size: 11; + -GtkWidget-text-handle-width: 20; + -GtkWidget-text-handle-height: 24; + -GtkButton-always-show-image: 1; + -GtkDialog-button-spacing: 4; + -GtkDialog-action-area-border: 0; + -GtkDialog-use-header-bar: 0; + outline-color: alpha(@fg_color, 0.4); + outline-style: dashed; + outline-offset: -4px; + outline-width: 0px; + -gtk-outline-radius: 2px; + -gtk-icon-style: regular; +} + +/*************** + * Base States * + ***************/ +.background { + color: @fg_color; + background-color: @bg_color; +} + +/* + These wildcard seems unavoidable, need to investigate. + Wildcards are bad and troublesome, use them with care, + or better, just don't. + Everytime a wildcard is used a kitten dies, painfully. +*/ +*:disabled { + -gtk-icon-effect: dim; +} + +.gtkstyle-fallback { + background-color: @bg_color; + color: @fg_color; +} + +.gtkstyle-fallback:hover { + background-color: shade (@bg_color, 1.2); + color: @fg_color; +} + +.gtkstyle-fallback:active { + background-color: @bg_color; + color: @fg_color; +} + +.gtkstyle-fallback:disabled { + background-color: shade (@bg_color, 0.8); + color: @fg_color; +} + +.gtkstyle-fallback:selected { + background-color: @selected_bg_color; + color: @selected_fg_color; +} + +.monospace { + font-family: monospace; +} + +.context-menu { + font: initial; +} + +.view, +iconview, +.view text, +iconview text, +textview text { + color: @text_color; + background-color: @base_color; +} + +.rubberband, +rubberband, +flowbox rubberband, +treeview.view rubberband, +.content-view rubberband { + border: 1px solid @borders; + background-color: rgba(0.1, 0.1, 0.4, 0.3); +} + +label { + color: @fg_color; +} + +label:disabled { + color: darker (@bg_color); + text-shadow: 1px 1px shade(@shadow_color, 0.91); + border-color: darker (@bg_color); +} + +assistant .sidebar { + background-color: shade(@bg_color, 0.87); +} + +assistant .sidebar label { + padding: 6px 12px; +} + +assistant .sidebar label.highlight { + color: @selected_fg_color; + background-color: @selected_bg_color; +} + +/********************* + * Spinner Animation * + *********************/ +@keyframes spin { + to { + -gtk-icon-transform: rotate(1turn); + } +} + +spinner { + background: none; + opacity: 0; + -gtk-icon-source: -gtk-icontheme("process-working"); +} + +spinner:checked { + opacity: 1; + animation: spin 1s linear infinite; +} + +spinner:checked:disabled { + opacity: 0.5; +} + +/**************** + * Text Entries * + ****************/ +entry { + border: 1px solid @borders; + background-color: @base_color; + color: @text_color; + border-radius: 3px; + padding: 2px; + box-shadow: inset 1px 0 shade(@shadow_color,0.93), inset 0 1px shade(@shadow_color,0.93); +} + +entry:focus { + border: 1px solid shade(@bg_color, 0.7); + box-shadow: inset 1px 0 @border_focus_color, + inset 0 1px @border_focus_color, + inset -1px 0 @border_focus_color, + inset 0 -1px @border_focus_color; +} + +entry:selected { + background-color: shade (@bg_color, 0.9); +} + +entry:selected:focus { + background-color: @selected_bg_color; + color: @selected_fg_color; +} + +entry:disabled { + background-color: darker (@base_color); + color: darker (@text_color); + box-shadow: none; +} + +entry image.left { + padding-right: 4px; +} + +entry image.right { + padding-left: 4px; +} + +* { + caret-color: @text_color; +} + +/*********** + * Buttons * + ***********/ +switch slider, +button { + transition: all 200ms ease-out; + padding: 3px 4px; + min-width: 19px; + min-height: 19px; + border: 1px solid @borders; + border-radius: 3px; + background-image: -gtk-gradient(linear, left top, left bottom, + from (shade(@bg_color,1.09)), + to (shade(@bg_color, 0.98))); + box-shadow: inset 1px 0 shade(@shadow_color,0.92), + inset 0 1px shade(@shadow_color,0.92), + inset -1px 0 shade(@shadow_color,0.70), + inset 0 -1px shade(@shadow_color,0.70); +} + +button:hover, +button.flat:hover { + background-image: -gtk-gradient(linear, left top, left bottom, + from (shade(@bg_color,1.15)), + to (shade(@bg_color, 1.04))); +} + +button:active, +button.flat:active, +button:checked, +button.flat:checked { + border: 1px solid @borders; + background-image: -gtk-gradient(linear, left top, left bottom, + from (shade(@bg_color,1.6)), + to (shade(@bg_color, 1.4))); + box-shadow: inset 1px 0 2px #6d6e6b, + inset 0 1px 2px #6d6e6b; +} + +button:disabled { + background-image: none; + color: darker(@bg_color); + text-shadow: 1px 1px shade(@shadow_color, 0.91); + border-color: darker(@bg_color); + box-shadow: inset 1px 0 shade(@shadow_color, 0.91), + inset 0 1px shade(@shadow_color, 0.91); +} + +.inline-toolbar toolbutton > button { + border-width: 1px; + border-style: solid; + color: @fg_color; + background-image: linear-gradient(to bottom, @gradient_normal_s, @gradient_normal_e); + border-color: @borders; +} + +.inline-toolbar toolbutton > button:hover { + border-width: 1px; + border-style: solid; + color: @fg_color; + border-color: @borders; + background-image: linear-gradient(to bottom, @gradient_hover_s, @gradient_hover_e); +} + +.inline-toolbar toolbutton > button:active { + border-width: 1px; + border-style: solid; + border-color: @border_active; + background-image: linear-gradient(to bottom, @gradient_active_s, @gradient_active_e); + color: @fg_color; +} + +.inline-toolbar toolbutton > button:disabled { + -gtk-icon-shadow: none; + border-width: 1px; + border-style: solid; + color: @insensitive_fg_color; + border-color: @insensitive_borders; + background-color: @insensitive_bg_color; + background-image: none; + text-shadow: none; +} + +.inline-toolbar toolbutton > button:disabled:active { + border-width: 1px; + border-style: solid; + color: @insensitive_fg_color; + border-color: @insensitive_borders; + background-color: @insensitive_bg_color; + background-image: none; +} + +.inline-toolbar.toolbar toolbutton > button.flat { + border-radius: 0; + border-left-style: none; +} + +.inline-toolbar.toolbar toolbutton:first-child > button.flat { + border-radius: 0; + border-left-style: solid; +} + +.inline-toolbar.toolbar toolbutton:last-child > button.flat { + border-radius: 0; +} + +.inline-toolbar.toolbar toolbutton:last-child:dir(rtl) > button.flat { + border-right-style: solid; +} + +.inline-toolbar.toolbar toolbutton:only-child > button.flat { + border-radius: 0; + border-style: solid; +} + +toolbar toolbutton button:hover { + border: solid 1px @borders; +} + +osd button, +osd button:hover, +osd button:active, +osd button:checked, +osd button:disabled, +inline-toolbar button, +.linked button, +.linked > combobox > box > button:dir(ltr) { + border-radius: 0; + border-left-style: none; +} + +osd button:dir(rtl), +inline-toolbar button:dir(rtl), +.linked button:dir(rtl), +.linked > combobox > box > button:dir(rtl) { + border-right-style: none; + border-left-style: solid; +} + +osd button:first-child, +inline-toolbar button:first-child, +.linked button:first-child, +.linked > combobox:first-child > box > button { + border-radius: 3px 0 0 3px; + border-left-style: solid; +} + +osd button:last-child, +inline-toolbar button:last-child, +.linked button:last-child, +.linked > combobox:last-child > box > button { + border-radius: 0 3px 3px 0; +} + +osd button:last-child:dir(rtl), +inline-toolbar button:last-child:dir(rtl), +.linked button:last-child:dir(rtl), +.linked > combobox:last-child > box > button:dir(rtl) { + border-color: red; + border-right-style: solid; +} + +osd button:only-child, +inline-toolbar button:only-child, +.linked button:only-child, +.linked > combobox:only-child > box > button { + border-radius: 3px; + border-style: solid; +} + +button.flat, +menuitembutton.flat, +button:link, +button:visited, +button:link:hover, +button:link:active, +button:visited:hover, +button:visited:active, +notebook tab button, +.list-rowbutton, GtkCalendarbutton, GtkCalendarbutton:hover { + border-color: transparent; + background-color: transparent; + background-image: none; + box-shadow: inset 0 1px rgba(255, 255, 255, 0); + text-shadow: none; + -gtk-icon-shadow: none; +} + +.stack-switcher > button > label { + padding-left: 9px; + padding-right: 9px; +} + +/* menu buttons */ +modelbutton.flat, +popover.background checkbutton, +popover.background radiobutton, +.menuitem.button.flat { + padding: 2px; + outline-offset: -1px; +} + +modelbutton.flat:hover, +popover.background checkbutton:hover, +popover.background radiobutton:hover, +.menuitem.button.flat:hover { + color: @selected_fg_color; + background-color: @selected_bg_color; +} + +modelbutton.flat check:last-child, +popover.background checkbutton check:last-child, +popover.background radiobutton check:last-child, +modelbutton.flat radio:last-child, +popover.background checkbutton radio:last-child, +popover.background radiobutton radio:last-child, +.menuitem.button.flat check:last-child, +.menuitem.button.flat radio:last-child { + margin-left: 4px; +} + +modelbutton.flat check:first-child, +popover.background checkbutton check:first-child, +popover.background radiobutton check:first-child, +modelbutton.flat radio:first-child, +popover.background checkbutton radio:first-child, +popover.background radiobutton radio:first-child, +.menuitem.button.flat check:first-child, +.menuitem.button.flat radio:first-child { + margin-right: 4px; +} + +modelbutton.flat arrow, +popover.background checkbutton arrow, +popover.background radiobutton arrow { + background: none; +} + +modelbutton.flat arrow:hover, +popover.background checkbutton arrow:hover, +popover.background radiobutton arrow:hover { + background: none; +} + +modelbutton.flat arrow.left, +popover.background checkbutton arrow.left, +popover.background radiobutton arrow.left { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +modelbutton.flat arrow.right, +popover.background checkbutton arrow.right, +popover.background radiobutton arrow.right { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +button.color { + padding: 2px; +} + +/********* + * Links * + *********/ +*:link { + color: @link_color; +} + +*:link:hover, +*:link:active, +*:link:visited { + color: @visited_link_color; +} + +button:link, +button:visited { + color: @link_color; + font-weight: bold; + text-shadow: none; +} + +button:link:hover, +button:link:active, +button:visited:hover, +button:visited:active { + color: @visited_link_color; + text-shadow: none; +} + +/***************** + * GtkSpinButton * + *****************/ +spinbutton { + color: @text_color; +} + +spinbutton button { + padding: 2px 4px; + color: shade(@selected_fg_color, 0.8); +} + +spinbutton button:disabled { + color: darker(@bg_color); +} + +spinbutton button:active, +spinbutton button:hover { + color: @fg_color; +} + +spinbutton button:first-child { + border-radius: 0px; +} + +spinbutton button:last-child { + border-radius: 0px 3px 3px 0px; +} + +spinbutton.vertical button { + border-width: 1px; + border-style: solid; + border-color: shade(@bg_color, 0.8); + border-radius: 2px; + color: @fg_color; + background-color: shade(@bg_color, 1.08); + background-image: none; +} + +spinbutton.vertical button:hover { + border-color: shade(@bg_color, 0.7); + background-color: shade(@bg_color, 1.10); + background-image: none; +} + +spinbutton.vertical button:active { + border-color: shade(@bg_color, 0.8); + background-color: shade(@bg_color, 0.95); + background-image: none; +} + +spinbutton.vertical button:active:hover { + border-color: shade(@bg_color, 0.7); +} + +spinbutton.vertical button:focus, +spinbutton.vertical button:hover:focus, +spinbutton.vertical button:active:focus, +spinbutton.vertical button:active:hover:focus { + border-color: shade(@bg_color, 0.7); +} + +spinbutton.vertical button:disabled { + border-color: shade(@bg_color, 0.85); + background-color: shade(@bg_color, 0.9); + background-image: none; +} + +spinbutton.vertical button:first-child { + border-width: 1px; + border-bottom-width: 0; + border-radius: 2px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +spinbutton.vertical button:last-child { + border-width: 1px; + border-top-width: 0; + border-radius: 2px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +spinbutton.vertical entry { + border-width: 1px; + border-style: solid; + border-radius: 0; +} + +/************** + * ComboBoxes * + **************/ +combobox { + padding: 0; +} + +combobox arrow { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + margin: 1px; + min-height: 14px; + min-width: 14px; +} + +combobox:drop(active) { + box-shadow: none; +} + +combobox *:disabled { + color: darker (@bg_color); +} + +combobox entry { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: 0; +} + +combobox button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +/************ + * Toolbars * + ************/ +toolbar, +searchbar { + padding: 2px; + border-bottom: 1px solid shade(@bg_color, 0.82); +} + +/*************** + * Header bars * + ***************/ +.titlebar, +headerbar { + background-color: @bg_color; + padding: 2px; +} + +.titlebar .title, +headerbar .title { + font-weight: bold; + padding: 0px 12px; +} + +.titlebar .subtitle, +headerbar .subtitle { + font-size: 80%; + padding: 0px 10px; +} + +.titlebar headerbar-separator, +.titlebar > GtkBox > .separator.vertical, +headerbar headerbar-separator, +headerbar > GtkBox > .separator.vertical { + border-width: 0px 1px; + border-image: linear-gradient(to bottom, rgba(127, 127, 127, 0), #7f7f7f 30%, #7f7f7f 70%, rgba(127, 127, 127, 0) 100%) 0 1/0 1px stretch; +} + +.titlebar.selection-mode, +headerbar.selection-mode { + color: @fg_color; + text-shadow: 0px 1px rgba(0, 0, 0, 0.5); + background-image: linear-gradient(to bottom, #0d0d0d, #050505); + box-shadow: inset 0px -1px #d8d8d8, inset 0px 1px #7f7f7f; +} + +.titlebar.selection-mode button, +headerbar.selection-mode button { + border-width: 1px; + border-style: solid; + color: @fg_color; + background-image: linear-gradient(to bottom, #0d0d0d, @fg_color 40%, @fg_color); + border-color: @fg_color; +} + +.titlebar.selection-mode button:hover, +headerbar.selection-mode button:hover { + border-width: 1px; + border-style: solid; + color: @fg_color; + border-color: @fg_color; + background-image: linear-gradient(to bottom, #242424, #0a0a0a 40%, @fg_color); +} + +.titlebar.selection-mode button:active, +headerbar.selection-mode button:active { + border-width: 1px; + border-style: solid; + border-color: @fg_color; + background-image: linear-gradient(to bottom, @fg_color, shade (@fg_color, 0.8)); + color: @fg_color; +} + +.titlebar.selection-mode button:disabled, +headerbar.selection-mode button:disabled { + border-width: 1px; + border-style: solid; + color: #7f7f7f; + border-color: @borders; + background-image: linear-gradient(to bottom, @fg_color, shade (@fg_color, 0.8)); + text-shadow: none; + -gtk-icon-shadow: none; +} + +.titlebar.selection-mode button.suggested-action, +headerbar.selection-mode button.suggested-action { + border-width: 1px; + border-style: solid; + color: @fg_color; + background-image: linear-gradient(to bottom, @fg_color, @fg_color 40%, #f2f2f2); + border-color: @borders; +} + +.titlebar.selection-mode button.suggested-action:hover, +headerbar.selection-mode button.suggested-action:hover { + border-width: 1px; + border-style: solid; + color: @fg_color; + border-color: @borders; + background-image: linear-gradient(to bottom, @fg_color, @fg_color 40%, @fg_color); +} + +.titlebar.selection-mode button.suggested-action:active, +headerbar.selection-mode button.suggested-action:active { + border-width: 1px; + border-style: solid; + border-color: @borders; + background-image: linear-gradient(to bottom, #7f7f7f, #4f4f4f, #7f7f7f); + color: @fg_color; +} + +.titlebar.selection-mode button.suggested-action:disabled, +headerbar.selection-mode button.suggested-action:disabled { + border-width: 1px; + border-style: solid; + color: #7f7f7f; + border-color: @borders; + background-image: linear-gradient(to bottom, @fg_color, shade (@fg_color, 0.8)); + text-shadow: none; + -gtk-icon-shadow: none; +} + +.titlebar.selection-mode .selection-menu, +headerbar.selection-mode .selection-menu { + border-width: 0; + background-image: none; + box-shadow: none; +} + +.tiled .titlebar, .maximized .titlebar, +.tiled headerbar, .maximized headerbar { + border-radius: 0; +} + +/************ + * Pathbars * + ************/ +.path-bar button { + padding: 2px 3px 3px; +} + +.path-bar button:first-child { + padding-left: 6px; +} + +.path-bar button:last-child { + padding-right: 6px; +} + +.path-bar button:only-child { + padding-left: 10px; + padding-right: 10px; +} + +.path-bar button label:last-child { + padding-left: 1px; +} + +.path-bar button label:first-child { + padding-right: 1px; +} + +.path-bar button label:only-child { + padding-right: 0; + padding-left: 0; +} + +.path-bar button image { + padding-top: 1px; +} + +/************** + * Tree Views * + **************/ + +treeview.view header button, +treeview.view header button:active { + border-radius: 0; + background-image: linear-gradient(to bottom, shade(@bg_color, 1.15), shade(@bg_color, 1.02)); + /*background-image: none;*/ + color: @fg_color; + background-color: @bg_color; + border-width: 0; + padding: 0 4px; +} + +column-header button:hover, +column-header button:active:hover, +column-header button:hover:focus, +column-header button:active:hover:focus { + background-image: none; + background-color: shade(@bg_color, 0.9); +} + +column-header:last-child button { + border-right: none; +} + +GtkScrolledWindow.frame { + border: 1px solid shade(@bg_color, 0.85); + border-radius: 0; +} + +GtkTreeView.dnd { + border-color: shade(@selected_bg_color, 1.12); + border-radius: 2px; + border-width: 1px; + border-style: solid; +} + +GtkTreeView row { + background-color: @base_color; +} + +GtkTreeView row:nth-child(even) { + background-color: shade(@base_color, 0.6); +} + +GtkTreeView entry { + background-image: none; + border-radius: 0; +} + +/********* + * Menus * + *********/ +menubar, +.menubar { + background-image: linear-gradient(to bottom, + shade (@bg_color, 0.8), + shade (@bg_color, 0.6)); + padding: 2px; +} + +menubar > menuitem, +.menubar > menuitem { + padding: 2px 5px; + border: 1px solid transparent; +} + +menubar > menuitem:hover, +.menubar > menuitem:hover { + border-radius: 1px 1px 0 0; + background-image: -gtk-gradient(linear, left top, left bottom, + from (@selected_color_s), + to (@selected_color_e)); +} + +menu, +.menu { + background-color: @bg_color; + border: 1px solid @border_menu_color; + padding: 2px; +} + +menu menuitem, +.menu menuitem { + padding: 2px 2px 2px 2px; + border: 1px solid transparent; + background-color: transparent; +} + +menuitem:hover, +menu .menuitem:hover { + background-image: -gtk-gradient(linear, left top, left bottom, + from (@selected_color_s), + to (@selected_color_e)); + border-radius: 1px; +} + +menu menuitem:disabled *, +menu .menuitem:disabled * { + color: darker(@fg_color); + text-shadow: 1px 1px shade(@bg_color, 1.3); +} + +menu menuitem arrow, +.menu menuitem arrow { + min-height: 10px; + min-width: 10px; +} + +menu menuitem arrow:dir(ltr), +.menu menuitem arrow:dir(ltr) { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); + margin-left: 10px; +} + +menu menuitem arrow:dir(rtl), +.menu menuitem arrow:dir(rtl) { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); + margin-right: 10px; +} + +menuitem accelerator { + color: alpha(currentColor, 0.50); +} + +menuitem check, +menuitem radio { + min-height: 11px; + min-width: 11px; +} + +menuitem check:dir(ltr), +menuitem radio:dir(ltr) { + margin-right: 7px; +} + +menuitem check:dir(rtl), +menuitem radio:dir(rtl) { + margin-left: 7px; +} + +/************ + * Popovers * + ************/ +popover { + padding: 2px; + border-color: @borders; + border-width: 1px; + border-style: solid; + border-radius: 1px; + background-color: @bg_color; + box-shadow: 0 2px 3px rgba(0, 0, 0, 0.5); +} + +popover > .list, +.popover > .view, +.popover > .toolbar { + background-color: transparent; +} + +popover separator { + font-size: 80%; + color: #cccccc; + text-shadow: none; + background-color: transparent; + -gtk-icon-shadow: none; + border: 0; +} + +popover button.flat, +popover button.flat:hover { + color: @selected_fg_color; + text-shadow: none; + transition: none; +} + +popover.osd { + background-image: none; + background-color: rgba(0, 0, 0, 0.8); + border: 1px solid #7f7f7f; + color: @fg_color; +} + +popover.osd button { + color: @fg_color; + text-shadow: none; + border-width: 1px; + border-style: solid; + background-image: none; + background-color: rgba(0, 0, 0, 0.8); + border-color: rgba(255, 255, 255, 0.2); + box-shadow: none; +} + +popover.osd button:hover { + border-width: 1px; + border-style: solid; + background-color: rgba(255, 255, 255, 0.01); + border-color: rgba(255, 255, 255, 0.2); + box-shadow: none; +} + +popover.osd button:active { + border-width: 1px; + border-style: solid; + background-color: rgba(255, 255, 255, 0.03); + border-color: rgba(255, 255, 255, 0.2); + box-shadow: none; +} + +popover.osd button:disabled { + border-width: 1px; + border-style: solid; + border-color: rgba(255, 255, 255, 0.2); + color: #7f7f7f; } + +.cursor-handle { + background-color: transparent; + background-image: none; +} + +.cursor-handle.top { + -gtk-icon-source: -gtk-icontheme("selection-start"); +} + +.cursor-handle.bottom { + -gtk-icon-source: -gtk-icontheme("selection-end"); +} + +/********************** + * Notebooks and Tabs * + **********************/ +notebook { + background: @bg_color; +} + +notebook header { + min-height: 14px; + background: @bg_color; +} + +notebook header tab { + border: 1px solid @borders; +} + +notebook header tab > label, +notebook label { + padding: 2px 8px; +} + +notebook header.top tab:not(:checked) { + margin: 2px -1px -1px 0; + border-radius: 3px 3px 0 0; + background: shade(@bg_color, 0.86); +} + +notebook header.top tab:checked { + margin: 0 -1px -1px 0; + background-image: -gtk-gradient(linear, left top, left bottom, + from (shade(@bg_color,1.09)), + to (shade(@bg_color, 0.98)) ); + border-radius: 3px 3px 0 0; + border-top: 1px solid @borders; + border-bottom: 1px solid @bg_color +} + +notebook header.right tab:not(:checked) { + margin: 0 2px -1px -1px; + border-radius: 0 3px 3px 0; + background: shade(@bg_color, 0.86); +} + +notebook header.right tab:checked { + margin: 0 0 -1px -1px; + border-radius: 0 3px 3px 0; + border-right: 1px solid @borders; + border-left: 1px solid @bg_color +} + +notebook header.bottom tab:not(:checked) { + margin: -1px 0 2px -1px; + border-radius: 0 0 4px 4px; + background: shade(@bg_color, 0.86); +} + +notebook header.bottom tab:checked { + margin: -1px 0 0 0; + border-radius: 0 0 3px 3px; + border-bottom: 1px solid @borders; + border-top: 1px solid @bg_color +} + +notebook header.left tab:not(:checked) { + margin: 0 -1px 0 2px; + border-radius: 3px 0 0 3px; + background: shade(@bg_color, 0.86); +} + +notebook header.left tab:checked { + margin: 0 -1px 0 0; + border-radius: 3px 0 0 3px; + border-left: 1px solid @borders; + border-right: 1px solid @bg_color +} + +notebook > stack:not(:only-child) { + border: 1px solid shade(@bg_color, 0.72); + background-color: @bg_color; +} + + +/************** + * Scrollbars * + **************/ +* { + -GtkScrollbar-has-backward-stepper: false; + -GtkScrollbar-has-forward-stepper: false; +} + +scrollbar, +.scrollbar { + background-color: @bg_color; + border-width: 1px; +} + +scrollbar.top, +.scrollbar.top { + border-bottom: 0px solid @borders; +} + +scrollbar.bottom, +.scrollbar.bottom { + border-top: 0px solid @borders; +} + +scrollbar.left, +.scrollbar.left { + border-right: 0px solid @borders; +} + +scrollbar.right, +.scrollbar.right { + border-left: 0px solid @borders; +} + +scrollbar.vertical slider, +scrollbar.vertical .slider { + min-width: 8px; + min-height: 30px; + margin: 0px 0px 0px 0px; + background-image: linear-gradient(to right, shade(@scrollbar_slider, 0.95), shade(@scrollbar_slider, 0.8)); + border-radius: 4px; + border-style: solid; + border-image: none; + border-color: shade(@scrollbar_slider, 0.65); + border-width: 1px; +} + +scrollbar.vertical slider:hover, +scrollbar.vertical slider:hover:active, +scrollbar.vertical .slider:hover, +scrollbar.vertical .slider:hover:active { + background-image: linear-gradient(to right, shade(@scrollbar_slider, 0.85), shade(@scrollbar_slider, 0.7)); + border-style: solid; + border-image: none; + border-color: shade(@scrollbar_slider, 0.65); + border-width: 1px; +} + +scrollbar.horizontal slider, +scrollbar.horizontal .slider { + min-width: 30px; + min-height: 8px; + margin: 0px 0px 0px 0px; + background-image: linear-gradient(to bottom, shade(@scrollbar_slider, 0.95), shade(@scrollbar_slider, 0.8)); + border-radius: 4px; + border-style: solid; + border-image: none; + border-color: shade(@scrollbar_slider, 0.65); + border-width: 1px; +} + +scrollbar.horizontal slider:hover, +scrollbar.horizontal slider:hover:active, +scrollbar.horizontal .slider:hover, +scrollbar.horizontal .slider:hover:active { + background-image: linear-gradient(to bottom, shade(@scrollbar_slider, 0.85), shade(@scrollbar_slider, 0.7)); + border-style: solid; + border-image: none; + border-color: shade(@scrollbar_slider, 0.65); + border-width: 1px; +} + +scrollbar slider:disabled, +scrollbar .slider:disabled { + background-color: shade(@scrollbar_slider, 0.85); + border-style: solid; + border-image: none; + border-color: shade(@scrollbar_slider, 0.75); + border-width: 1px; +} + +treeview ~ scrollbar.vertical { + border-top: 0px solid transparent; + margin-top: -1px; +} + +/********** + * Switch * + **********/ +switch { + font-size: 80%; + padding: 0; + border-radius: 3px; + background-image: none; + background-color: shade(@bg_color, 0.85); + color: @text_color; + border: 1px solid @borders; +} + +switch:checked { + background-image: -gtk-gradient(linear, left top, left bottom, + from (@selected_bg_color), + to (shade(@selected_bg_color, 0.92))); + color: @selected_fg_color; + text-shadow: 0 1px alpha(@text_color, 0.5), 0 0 2px alpha(@selected_fg_color, 0.6); +} + +switch:disabled { + background-image: none; + background-color: shade(@bg_color, 0.9); + color: shade(@bg_color, 0.7); + border-color: shade(@bg_color, 0.8); +} + +switch slider { + padding: 2px 8px; + min-width: 8px; + min-height: 8px; +} + +switch:disabled slider { + background-image: none; + background-color: @bg_color; + color: darker (@bg_color); + text-shadow: 1px 1px shade(@shadow_color, 0.91); + border-color: darker (@bg_color); + box-shadow: inset 1px 0 shade(@shadow_color, 0.91), + inset 0 1px shade(@shadow_color, 0.91); +} + +/************************* + * Check and Radio items * + *************************/ +checkbutton > label, +radiobutton > label { + padding-left: 6px; +} + +check { + min-height: 14px; + min-width: 14px; + color: @fg_color; + background-image: none; + -gtk-icon-source: -gtk-icontheme("checkbox-symbolic"); +} + +check:hover { + color: shade (@fg_color, 0.7); +} + +check:checked, +check:active { + -gtk-icon-source: -gtk-icontheme("checkbox-checked-symbolic"); +} + +check:checked:hover, +check:active:hover { + color: shade (@fg_color, 0.7); +} + +check:checked:disabled, +check:active:disabled { + color: shade (@fg_color, 0.67); +} + +check:disabled { + color: shade (@fg_color, 0.8); +} + +check:indeterminate { + -gtk-icon-source: -gtk-icontheme("checkbox-mixed-symbolic"); +} + +radio { + min-height: 14px; + min-width: 14px; + color: @fg_color; + background-image: none; + -gtk-icon-source: -gtk-icontheme("radio-symbolic"); +} + +radio:hover { + color: shade (@fg_color, 0.6); +} + +radio:checked, +radio:active { + -gtk-icon-source: -gtk-icontheme("radio-checked-symbolic"); +} + +radio:checked:hover, +radio:active:hover { + color: shade (@fg_color, 0.6); +} + +radio:checked:disabled, +radio:active:disabled { + color: shade (@fg_color, 0.8); +} + +radio:disabled { + color: shade (@fg_color, 0.8); +} + +radio:indeterminate { + -gtk-icon-source: -gtk-icontheme("radio-mixed-symbolic"); +} + +/************ + * GtkScale * + ************/ +scale trough, +scale fill { + border: 1px solid @borders; + background-color: @bg_color; + box-shadow: none; +} + +scale trough:disabled, +scale fill:disabled { + border-color: @insensitive_borders; + background-color: @insensitive_bg_color; +} + +row:selected scale trough, +scale row:selected trough, +row:selected scale fill, +scale row:selected fill, +row:selected scale trough:disabled, +scale row:selected trough:disabled, +row:selected scale fill:disabled, +scale row:selected fill:disabled { + border-color: @insensitive_borders; +} + +.osd scale trough, +scale .osd trough, +.osd scale fill, +scale .osd fill { + border-color: rgba(255, 255, 255, 0.2); + background-color: rgba(255, 255, 255, 0); + box-shadow: none; + outline-color: rgba(255, 255, 255, 0.2); +} + +.osd scale trough:disabled, +scale .osd trough:disabled, +.osd scale fill:disabled, +scale .osd fill:disabled { + background-color: @insensitive_borders; +} + +scale highlight { + border: 1px solid @borders; + background-color: shade(@selected_bg_color, 1.17); +} + +scale highlight:disabled { + background-color: transparent; + border-color: transparent; +} + +row:selected scale highlight, +scale row:selected highlight, +row:selected scale highlight:disabled, +scale row:selected highlight:disabled { + border-color: #000; +} + +.osd scale highlight, +scale .osd highlight { + border-color: rgba(255, 255, 255, 0.2); +} + +.osd scale highlight:disabled, +scale .osd highlight:disabled { + border-color: transparent; +} + +scale { + min-height: 14px; + min-width: 14px; + padding: 7px; + outline-offset: 2px; +} + +scale fill, +scale highlight { + border-color: shade(@selected_bg_color, 0.8); + margin: -1px; +} + +scale slider { + margin: -7px; +} + +scale slider:hover { +} + +scale.fine-tune.horizontal { + padding-top: 9px; + padding-bottom: 9px; + min-height: 16px; +} + +scale.fine-tune.vertical { + padding-left: 9px; + padding-right: 9px; + min-width: 16px; +} + +scale.fine-tune slider { + margin: -6px; +} + +scale.fine-tune fill, +scale.fine-tune highlight, +scale.fine-tune trough { + background-color: shade (@bg_color, 0.96); +} + +scale trough { + min-width: 4px; + min-height: 4px; + outline-offset: 2px; + -gtk-outline-radius: 0px; + background-color: shade (@bg_color, 0.96); +} + +scale.horizontal slider { + min-width: 25px; + min-height: 14px; + background-image: linear-gradient(to bottom, shade(@bg_color, 1.02), shade(@bg_color, 1.2)); + border-radius: 4px; + box-shadow: inset 0 -1px @borders, inset 0 1px @borders, inset -1px 0 @borders, inset 1px 0 @borders; +} + +scale.horizontal slider:hover { + background-image: linear-gradient(to bottom, shade(@bg_color, 1.1), shade(@bg_color, 1.3)); +} + +scale.horizontal slider:disabled { + background-image: linear-gradient(to bottom, shade(@bg_color, 0.9), shade(@bg_color, 0.95)); +} + +scale.vertical slider { + min-width: 14px; + min-height: 25px; + background-image: linear-gradient(to right, shade(@bg_color, 1.02), shade(@bg_color, 1.2)); + border-radius: 4px; + box-shadow: inset 0 -1px @borders, inset 0 1px @borders, inset -1px 0 @borders, inset 1px 0 @borders; +} + +scale.vertical slider:hover { + background-image: linear-gradient(to right, shade(@bg_color, 1.1), shade(@bg_color, 1.3)); +} + +scale.vertical slider:disabled { + background-image: linear-gradient(to right, shade(@bg_color, 0.9), shade(@bg_color, 0.95)); +} + +row:selected scale slider, +row:selected scale slider:disabled { + border-color: @insensitive_borders; +} + +scale value { + color: alpha(currentColor,0.4); +} + +scale marks { + color: alpha(currentColor,0.4); +} + +scale marks.top { + margin-bottom: 6px; + margin-top: -12px; +} + +scale marks.bottom { + margin-top: 6px; + margin-bottom: -12px; +} + +scale marks.top { + margin-right: 6px; + margin-left: -12px; +} + +scale marks.bottom { + margin-left: 6px; + margin-right: -12px; +} + +scale.fine-tune marks.top { + margin-bottom: 6px; + margin-top: -9px; +} + +scale.fine-tune marks.bottom { + margin-top: 6px; + margin-bottom: -9px; +} + +scale.fine-tune marks.top { + margin-right: 6px; + margin-left: -9px; +} + +scale.fine-tune marks.bottom { + margin-left: 6px; + margin-right: -9px; +} + +scale.horizontal indicator { + min-height: 6px; + min-width: 1px; +} + +scale.horizontal.fine-tune indicator { + min-height: 3px; +} + +scale.vertical indicator { + min-height: 1px; + min-width: 6px; +} + +scale.vertical.fine-tune indicator { + min-width: 3px; +} + +/***************** + * Progress bars * + *****************/ +progressbar { + padding: 0; + font-size: 83%; + color: @fg_color; +} +progressbar trough { + border-width: 1px; + border-style: solid; + border-color: @borders; + background-color: shade (@bg_color, 0.96); +} +progressbar.osd trough { + background-color: transparent; + box-shadow: none; + border-width: 0; +} + +progressbar.horizontal trough, +progressbar.horizontal progress { + min-height: 8px; +} + +progressbar.vertical trough, +progressbar.vertical progress { + min-width: 8px; +} + +progressbar progress { + border: 1px solid shade(@bg_color, 0.8); + box-shadow: inset 1px 0 shade(@selected_bg_color,1.29), + inset 0 1px shade(@selected_bg_color,1.29); + background-color: shade(@selected_bg_color, 1.17); +} + +treeview.view.progressbar, +treeview.view.progressbar:hover, +row progressbar progress, +row:hover progressbar progress, +row:selected progressbar progress, +row:selected:focus progressbar progress { + border: 1px solid shade(@bg_color, 0.8); + box-shadow: inset 1px 0 shade(@selected_bg_color,1.29), + inset 0 1px shade(@selected_bg_color,1.29); + background-color: shade(@selected_bg_color, 1.17); + border-radius: 3px; + border-width: 1px; +} + +progressbar.horizontal trough { + padding: 1px 0; +} + +progressbar.vertical trough { + padding: 0 1px; +} + +progressbar progress.vertical { +} + +progressbar progress.osd { + border-width: 0; + border-radius: 1px; +} + +/************* + * Level Bar * + *************/ +levelbar trough { + padding: 2px; + background-color: transparent; + border-style: solid; + border-color: @borders; +} + +levelbar block { + min-width: 34px; + min-height: 3px; +} + +levelbar.vertical block { + min-width: 3px; + min-height: 34px; +} + +levelbar.horizontal.discrete block { + margin: 0 1px; +} + +levelbar.vertical.discrete block { + margin: 1px 0; +} + +levelbar block.filled.low { + border-color: #c26000; + background-color: #f57900; +} + +levelbar block.filled.high { + border-width: 1px; + border-style: solid; + border-color: @borders; + background-color: shade(@selected_bg_color, 1.17); +} + +levelbar block.filled.full { + border-color: #5aa411; + background-color: #73d216; +} + +levelbar block.empty { + border-width: 1px; + border-style: solid; + background-color: transparent; + border-color: rgba(0, 0, 0, 0.2); + border-radius: 1px; + box-shadow: none; +} + +.view:selected, +textview text:selected, +iconview:selected, +calendar:selected, +.view:selected:focus, +textview text:selected:focus, +iconview:selected:focus, +calendar:focus:selected, +textview text:selected:hover, +calendar:hover:selected, +textview text selection, +textview text selection:focus, +textview text selection:hover, +flowbox flowboxchild:selected, +label selection, +label selection:focus, +label selection:hover, +label selection:backdrop, +spinbutton:not(.vertical) selection:focus, +spinbutton:not(.vertical) selection, +entry selection:focus, +entry selection, +modelbutton.flat:selected, +popover.background checkbutton:selected, +popover.background radiobutton:selected, +.menuitem.button.flat:selected, +treeview.view:selected, +row.activatable:selected, +.sidebar:selected { + color: @selected_fg_color; + background-color: @selected_bg_color; + background-image: -gtk-gradient(linear, left top, left bottom, from (@selected_color_s), to (@selected_color_e) ); +} + +/********** + * Frames * + **********/ +frame border { + border: 1px solid @borders; + border-radius: 3px; + padding: 0; +} + +frame border.flat, +.frame.flat { + border-style: none; +} + +.frame { + border: 0; +} + +.frame:not(notebook) { + border: 1px solid @borders; +} + +scrolledwindow viewport.frame { + border-style: none; +} + +actionbar > revealer > box { + padding: 6px; + border-width: 1px 0 0; + border-color: @borders; + border-style: solid none none; +} + +separator, +.sidebar separator { + background: @text_color; + min-width: 1px; + min-height: 1px; + padding: 0px; + margin: 2px; +} + +/********* + * Lists * + *********/ +list { + color: @text_color; + background-color: @base_color; +} + +list label, +list image { + color: @text_color; + padding: 2px; +} + +list row:selected label { + color: @selected_fg_color; +} + +row.activatable, +row.activatable:disabled:active, +row.activatable:disabled:checked { + background-color: @base_color; + border-style: none; + border-radius: 0; + box-shadow: none; +} + +row.activatable:hover { + color: @fg_color; + background-color: shade(@base_color, 0.96); +} + +row.activatable:selected { + background-color: @selected_bg_color; + color: @selected_fg_color; +} + +row.activatable:selected:active { + background-color: alpha(@selected_bg_color, 0.15); +} + +row.activatable:selected:hover { + background-color: alpha(@selected_bg_color, 0.33); +} + +row, +row.activatable { + background-color: @base_color; + transition: all 300ms cubic-bezier(0.25, 0.46, 0.45, 0.94); +} + +row:hover, +row.activatable:hover { + transition: none; +} + +/********************* + * App Notifications * + *********************/ +.app-notification, +.app-notification.frame { + border-width: 0 1px 1px; + border-style: solid; + border-color: @borders; + border-radius: 0 0 6px 6px; + background-color: alpha(@fg_color, 0.2); + /*padding: 0 4px;*/ +} + +app-notification button { + padding: 6px; +} + +/************* + * Expanders * + *************/ +expander arrow { + min-width: 16px; + min-height: 16px; + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +expander arrow:dir(rtl) { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); +} +expander arrow:hover { + color: #4d4d4d; +} +expander arrow:checked { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +/************ + * Calendar * + ***********/ +calendar { + color: @text_color; + border: 1px solid @borders; +} + +calendar.button { + padding: 0 4px; + color: shade(@bg_color, 0.85); +} + +calendar.button:hover { + color: @fg_color; +} + +calendar.header { + border-radius: 2px; + border-width: 1px; + background-image: -gtk-gradient (linear, + left top, + left bottom, + from (shade (@bg_color, 1.04)), + to (shade (@bg_color, 0.8))); +} + +calendar.highlight { + color: @selected_fg_color; + background-color: @selected_bg_color; +} + +calendar.disabled { + color: shade(@fg_color, 0.8); + border-color: @insensitive_borders; +} + +calendar:selected, +calendar:selected:focus { + background-color: @selected_bg_color; + color: @selected_fg_color; +} + +/*********** + * Dialogs * + ***********/ +/* -- todo -- */ + +messagedialog .dialog-action-area button { + padding: 2px; + margin: 4px; + border: 1px solid shade(@bg_color, 0.59); + background-image: -gtk-gradient(linear, left top, left bottom, + from (shade(@bg_color,1.04)), + to (shade(@bg_color, 0.99))); + box-shadow: inset 1px 0 shade(@bg_color, 1.25), + inset 0 1px shade(@bg_color, 1.25), + inset -1px 0 shade(@bg_color, 1.25), + inset 0 -1px shade(@bg_color, 1.25); +} + +messagedialog .dialog-action-area button:hover { + border: 1px solid shade(@selected_bg_color, 0.72); + background-image: -gtk-gradient(linear, left top, left bottom, + from (shade(@bg_color,1.24)), + to (shade(@bg_color, 1.16))); + box-shadow: none; +} + +messagedialog .titlebar { + border-style: none; + box-shadow: inset 0 1px #fff; +} + +filechooser #pathbarbox { + background-color: @bg_color; +} + +filechooserbutton:drop(active) { + box-shadow: none; + border-color: transparent; +} + +/*********** + * Sidebar * + ***********/ +.sidebar { + border: none; + background-color: @base_color; + color: @text_color; +} + +.sidebar:hover { + color: @text_color; +} + +.sidebar .frame { + padding: 2px; + border-style: none; +} + +.sidebar > scrolledwindow > .frame { + border-right: 1px solid shade (@bg_color, 0.87); +} + +.sidebar > scrolledwindow > .frame:dir(rtl) { + border-right: none; + border-left: 1px solid shade (@bg_color, 0.87); +} + +stacksidebar row { + padding: 5px 2px; +} + +stacksidebar row > label { + padding-left: 6px; + padding-right: 6px; +} + +stacksidebar row.needs-attention > label { + background-size: 6px 6px, 0 0; +} + +/********* + * Paned * + *********/ +paned > separator { + -gtk-icon-source: none; + background-color: @bg_color; + min-width: 5px; + min-height: 5px; +} + +paned > separator:hover { + background-color: shade(@bg_color, 1.3); +} + +/************** + * GtkInfoBar * + **************/ +infobar { + border-style: none; +} + +.info, +.question, +.warning, +.error { + color: @fg_color; + text-shadow: 0 1px @fg_color; + border-color: @fg_color; +} +.info { + background-color: @selected_bg_color; +} +.question { + background-color: @question_color; +} +.warning { + background-color: @warning_color; +} +.error { + background-color: @error_color; +} + + +/*********** + * tooltip * + ***********/ +tooltip { + padding: 0px; + box-shadow: none; +} +tooltip.background { + background-color: @tooltip_bg_color; + background-clip: padding-box; + border: 1px solid alpha(darker(@borders), 0.7); +} +tooltip decoration { + box-shadow: none; + background-color: transparent; +} +tooltip * { + padding: 0px; + background-color: transparent; + color: @tooltip_fg_color; +} + +/***************** + * Color Chooser * + *****************/ +colorswatch { + border: 1px solid @borders; + border-radius: 3px; + box-shadow: inset 1px 0 shade(@bg_color,0.92), + inset 0 1px shade(@bg_color,0.92), + inset -1px 0 shade(@bg_color,0.70), + inset 0 -1px shade(@bg_color,0.70); +} +colorswatch.color-light:hover { + background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0) 40%, rgba(255, 255, 255, 0.4)); +} +colorswatch.color-dark:hover { + background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0) 40%, rgba(255, 255, 255, 0.2)); +} +colorswatch:hover { + border-color: @selected_bg_color; +} +colorswatch.color-active-badge { + border-width: 1px; +} +colorswatch.color-active-badge:hover { + background-image: none; +} +colorswatch.color-active-badge.color-light, +colorswatch.color-active-badge.color-light:hover { + color: rgba(0, 0, 0, 0.3); + border-color: rgba(0, 0, 0, 0.3); +} +colorswatch.color-active-badge.color-dark, +colorswatch.color-active-badge.color-dark:hover { + color: rgba(255, 255, 255, 0.5); + border-color: rgba(255, 255, 255, 0.5); +} + +GtkColorChooserWidget #add-color-button { + border-color: #bfbfbf; + background-color: #bfbfbf; + color: @fg_color; + box-shadow: none; +} +GtkColorChooserWidget #add-color-button:hover { + border-color: @borders; + background-color: #7f7f7f; +} + +/********************** + * Window Decorations * + *********************/ +decoration { + box-shadow: 0 3px 9px 1px rgba(0, 0, 0, 0.5), 0 0 0 1px shade(@shadow_color, 0.86); + /* this is used for the resize cursor area */ + margin: 8px; +} + +.popup decoration { + border: none; + box-shadow: none; +} + +decoration.tiled { + border-radius: 0; +} + +button.titlebutton { + padding: 4px; + border-color: transparent; + background-image: none; + transition-property: border, box-shadow, color; + box-shadow: inset 0 1px rgba(255, 255, 255, 0), 0 1px rgba(255, 255, 255, 0); +} + +button.titlebutton:hover { + border-width: 1px; + border-style: solid; + color: @fg_color; + background-image: linear-gradient(to bottom, @bg_color, shade(@bg_color,0.8)); + border-color: @borders; +} + +button.titlebutton:active { + border-width: 1px; + border-style: solid; + border-color: @borders; + background-image: linear-gradient(to bottom, @bg_color, shade(@bg_color,0.8)); + color: @fg_color; +} + +wnck-pager { + background: shade(@bg_color, 0.7); +} + +wnck-pager:selected { + background: shade(@selected_bg_color, 0.7); +} + +wnck-pager:hover { + background: shade(@bg_color, 1.3); +} diff --git a/data/theme/gtk-3.0/gtk.css b/data/theme/gtk-3.0/gtk.css new file mode 100644 index 0000000..737af2b --- /dev/null +++ b/data/theme/gtk-3.0/gtk.css @@ -0,0 +1,59 @@ +/* +# name: Y +# author: Victor Ananjevsky +# description: based on Darkilouche by Maxime Doyen +*/ + +/* GTK NAMED COLORS */ +@define-color fg_color #ccccc0; +@define-color text_color #000000; +@define-color bg_color #44484a; +@define-color base_color #658572; +@define-color selected_bg_color #0b255e; +@define-color selected_fg_color #fefefe; + +@define-color insensitive_bg_color @bg_color; +@define-color insensitive_fg_color shade (@bg_color, 0.70); + +@define-color borders shade(@bg_color, 0.68); +@define-color insensitive_borders shade(@bg_color, 0.82); + +@define-color shadow_color #808080; + +/* widget colors : to be defined later with shade */ +@define-color border_menu_color #363635; +@define-color border_frame_color #5a5b59; + +@define-color border_separator_color #7a7c77; +@define-color border_focus_color mix(@shadow_color, @theme_bg_color, 0.49); +@define-color border_progress_color #b5671b; +@define-color selected_color_s #07215b; +@define-color selected_color_e #0e224d; + +@define-color scrollbar_slider #030e28; + +@define-color tooltip_bg_color #9D9C43; +@define-color tooltip_fg_color #000000; + +@define-color question_color #9a9d4b; +@define-color warning_color #980085; +@define-color error_color #e42a18; + +@define-color link_color #000080; +@define-color visited_link_color #020202; + +/* widget colors */ +@define-color toolbar_bg_color @bg_color; +@define-color toolbar_fg_color @fg_color; +@define-color menu_border_color #979797; +@define-color menu_bg_color @bg_color; +@define-color menu_fg_color @fg_color; +@define-color panel_bg_color @bg_color; +@define-color panel_fg_color @fg_color; + +/*********** + * imports * + ***********/ + +@import url("gtk-widgets.css"); +@import url("gtk-apps.css"); diff --git a/data/theme/icons/16x16/Makefile.am b/data/theme/icons/16x16/Makefile.am new file mode 100644 index 0000000..0224d45 --- /dev/null +++ b/data/theme/icons/16x16/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = actions diff --git a/data/theme/icons/16x16/actions/Makefile.am b/data/theme/icons/16x16/actions/Makefile.am new file mode 100644 index 0000000..85605f6 --- /dev/null +++ b/data/theme/icons/16x16/actions/Makefile.am @@ -0,0 +1,7 @@ +iconsdir = $(datadir)/icons/Y/16x16/actions +dist_icons_DATA = pan-down-symbolic.symbolic.png \ + pan-end-symbolic-rtl.symbolic.png \ + pan-end-symbolic.symbolic.png \ + pan-start-symbolic-rtl.symbolic.png \ + pan-start-symbolic.symbolic.png \ + pan-up-symbolic.symbolic.png diff --git a/data/theme/icons/16x16/actions/pan-down-symbolic.symbolic.png b/data/theme/icons/16x16/actions/pan-down-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..9be3145ddae4cac0e841f719a9eb5dbfa4ebd4b5 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1T|JY5_^ zEPCIb+sNw>Ai{d#vuahZX^2~*nDz_@o4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UTJzX3_ zEPCHwu;y)W5OBT7%*l1_#4bnv6%K5C1`dr38=O{f+-*Bk)^hvY?DKdi(Vj&LSy+j=e?Xa$3(tDnm{ Hr-UW|4Q)oN literal 0 HcmV?d00001 diff --git a/data/theme/icons/16x16/actions/pan-end-symbolic.symbolic.png b/data/theme/icons/16x16/actions/pan-end-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d9b7731e0312cfdcf8b32abd0958b1dc009f88 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1ToJzX3_ zEP9g@Bv^kOaAjj-WA@_VNJ&W8asI#o1-DK`UmhMFcL@oJ8z)Q~CN?%EnldvVHi_Yy z(P8k!o|&1MeWzYV+JXbzjyxi4k0jZ+78fpIU@$7<%-^1QF&t<-gQu&X%Q~loCIG`& BI%@y` literal 0 HcmV?d00001 diff --git a/data/theme/icons/16x16/actions/pan-start-symbolic-rtl.symbolic.png b/data/theme/icons/16x16/actions/pan-start-symbolic-rtl.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d9b7731e0312cfdcf8b32abd0958b1dc009f88 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1ToJzX3_ zEP9g@Bv^kOaAjj-WA@_VNJ&W8asI#o1-DK`UmhMFcL@oJ8z)Q~CN?%EnldvVHi_Yy z(P8k!o|&1MeWzYV+JXbzjyxi4k0jZ+78fpIU@$7<%-^1QF&t<-gQu&X%Q~loCIG`& BI%@y` literal 0 HcmV?d00001 diff --git a/data/theme/icons/16x16/actions/pan-start-symbolic.symbolic.png b/data/theme/icons/16x16/actions/pan-start-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..e15ba7ec7ecd82d152e6ecbe46a753b3a78d0638 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UTJzX3_ zEPCHwu;y)W5OBT7%*l1_#4bnv6%K5C1`dr38=O{f+-*Bk)^hvY?DKdi(Vj&LSy+j=e?Xa$3(tDnm{ Hr-UW|4Q)oN literal 0 HcmV?d00001 diff --git a/data/theme/icons/16x16/actions/pan-up-symbolic.symbolic.png b/data/theme/icons/16x16/actions/pan-up-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..e0b493898af21ac9509b70efb3af7dc20769fd4d GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1SdJY5_^ zEPCIb+sNw>Akgrzzk~M(kJQw_8ArLo47z7HBr~;onymjaDZKMh?bG?E?@s(1-O8%{ z>PCR%OWv}QjE$|+mK+ydH(kTv@v#Y;9vt~`NnK`Td`f&3!?bf86#<1?cz|{=c)I$z JtaD0e0sucsO4I-V literal 0 HcmV?d00001 diff --git a/data/theme/icons/24x24/Makefile.am b/data/theme/icons/24x24/Makefile.am new file mode 100644 index 0000000..0224d45 --- /dev/null +++ b/data/theme/icons/24x24/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = actions diff --git a/data/theme/icons/24x24/actions/Makefile.am b/data/theme/icons/24x24/actions/Makefile.am new file mode 100644 index 0000000..17dd305 --- /dev/null +++ b/data/theme/icons/24x24/actions/Makefile.am @@ -0,0 +1,7 @@ +iconsdir = $(datadir)/icons/Y/24x24/actions +dist_icons_DATA = pan-down-symbolic.symbolic.png \ + pan-end-symbolic-rtl.symbolic.png \ + pan-end-symbolic.symbolic.png \ + pan-start-symbolic-rtl.symbolic.png \ + pan-start-symbolic.symbolic.png \ + pan-up-symbolic.symbolic.png diff --git a/data/theme/icons/24x24/actions/pan-down-symbolic.symbolic.png b/data/theme/icons/24x24/actions/pan-down-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..33dd51c3b009360862157ac0b273716fd1e3bc15 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEX7WqAsj$Z!;#Vf4nJ zh^c}wqi2xH2cV#2iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0wGo-U3d z9-VJ5ZscS#6lr+4-cY(CPf^UOE5fqV;#lY7j<9Kd2@91q$__r_>F79mxAE-nQ+qzx zdvGZJxhg2VM7~@oYtAj52*t+@uTIx|nU%WcwoZd(-j1YiWp)Q8`E_m|>;CAT(`c4nJ zh^c}wqi2xH2cV#2iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0xRo-U3d z9-VJ5Z{%bO6mY$`ctga2rbgd2joXyIDMh#KxZ2T~kipEwR;D1O$+l_6uZR3<|BvOr zYffx)dKkZ^pktE$heK*kc1L-udx}nH&nY};v3<`WzVb6grx$*{`P-|O(%#Ng@b=d#Wz Gp$P!g#AG7? literal 0 HcmV?d00001 diff --git a/data/theme/icons/24x24/actions/pan-end-symbolic.symbolic.png b/data/theme/icons/24x24/actions/pan-end-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..a062c9ddd74776597696a0e9e2d9d458fd0a3daf GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEX7WqAsj$Z!;#Vf4nJ zh^c}wqi2xH2cV#2iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0vjo-U3d z9-VJ5@8)C*6mWaU?|Se?cWF+7dehk)+0)yUlM-?mn`~Dsl*n156Z7xQyo$7Q2K-XJ zQPYec=V@3hmy-N&&`>qvVT<`U&68r~HXFP>t@acgv{JR4@y+lIXIw~!ndnaYmmfr= r0tI7={`j~*bl<(mUo_w3-)B~TH4%qb6Tck=x`M&e)z4*}Q$iB}1>;rc literal 0 HcmV?d00001 diff --git a/data/theme/icons/24x24/actions/pan-start-symbolic-rtl.symbolic.png b/data/theme/icons/24x24/actions/pan-start-symbolic-rtl.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..a062c9ddd74776597696a0e9e2d9d458fd0a3daf GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEX7WqAsj$Z!;#Vf4nJ zh^c}wqi2xH2cV#2iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0vjo-U3d z9-VJ5@8)C*6mWaU?|Se?cWF+7dehk)+0)yUlM-?mn`~Dsl*n156Z7xQyo$7Q2K-XJ zQPYec=V@3hmy-N&&`>qvVT<`U&68r~HXFP>t@acgv{JR4@y+lIXIw~!ndnaYmmfr= r0tI7={`j~*bl<(mUo_w3-)B~TH4%qb6Tck=x`M&e)z4*}Q$iB}1>;rc literal 0 HcmV?d00001 diff --git a/data/theme/icons/24x24/actions/pan-start-symbolic.symbolic.png b/data/theme/icons/24x24/actions/pan-start-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..94bb07c8d1693736ecea23215e0aa32b5204a52c GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEX7WqAsj$Z!;#Vf4nJ zh^c}wqi2xH2cV#2iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0xRo-U3d z9-VJ5Z{%bO6mY$`ctga2rbgd2joXyIDMh#KxZ2T~kipEwR;D1O$+l_6uZR3<|BvOr zYffx)dKkZ^pktE$heK*kc1L-udx}nH&nY};v3<`WzVb6grx$*{`P-|O(%#Ng@b=d#Wz Gp$P!g#AG7? literal 0 HcmV?d00001 diff --git a/data/theme/icons/24x24/actions/pan-up-symbolic.symbolic.png b/data/theme/icons/24x24/actions/pan-up-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..cfe17a66d4b33844ead1d58f8b179e4ec6eb5307 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEX7WqAsj$Z!;#Vf4nJ zh^c}wqi2xH2cV#2iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0vbo-U3d z9-VJ5F63nj6mY$$e4^~YCDs{Br287w8%WPgg&ebxsLQ01$gx A4FCWD literal 0 HcmV?d00001 diff --git a/data/theme/icons/32x32/Makefile.am b/data/theme/icons/32x32/Makefile.am new file mode 100644 index 0000000..0224d45 --- /dev/null +++ b/data/theme/icons/32x32/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = actions diff --git a/data/theme/icons/32x32/actions/Makefile.am b/data/theme/icons/32x32/actions/Makefile.am new file mode 100644 index 0000000..650e9a3 --- /dev/null +++ b/data/theme/icons/32x32/actions/Makefile.am @@ -0,0 +1,7 @@ +iconsdir = $(datadir)/icons/Y/32x32/actions +dist_icons_DATA = pan-down-symbolic.symbolic.png \ + pan-end-symbolic-rtl.symbolic.png \ + pan-end-symbolic.symbolic.png \ + pan-start-symbolic-rtl.symbolic.png \ + pan-start-symbolic.symbolic.png \ + pan-up-symbolic.symbolic.png diff --git a/data/theme/icons/32x32/actions/pan-down-symbolic.symbolic.png b/data/theme/icons/32x32/actions/pan-down-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..8215991b6c187fe6df613b0c8aae6537d433c227 GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@;M7UB8wRq zWZOZQvH$7ERG^?_iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0xfJY5_^ zB3j>`+wawsD8l|=`2nSj42>ModbU!6w6UJk4Fb(?Nh;-|3?6ttJJn z*uD?GSsz|1Jf9hN@ALC=56z`hwn-;6{jyKXGBnnE++aBE$AQ0mf6FWSXL?Gq$1D=( zuK%!Q;djCN7jGXAm1IBQ$@2f$C-E4OSI=L#z2!e|p{u=TMeBJEsfS|b72W&wZQdyF zSkW2Da&BYCcah%O_VuxkO`E1mEUH@ZVXJY;1-GXc9s+IbJI)n#MVG)y{KrlxTa{K6%c9sOG~>%d;Iq%jGw8ZDLQ^-NM$aB$459SyiO{$W=%EM?43` zjp}EeneF3tcF+Ag{}u*lh^#xzYc|9Eg!Y~X?D>L>YM%St?YIA7yl?TyZu=j;`LnL} z7oE1gq4qO4ud+9F()tVMWD{mRu`bb{yXM#78SAfX4?6AF+nOdG$11~kR`rjE;yh)h z0|$Oe_APdr!*!AI@Ct$cb4z!K3obb1^B|pNd&O}pEr*2xKlcA&YEe_onbi190_YP4 MPgg&ebxsLQ0BHbx&j0`b literal 0 HcmV?d00001 diff --git a/data/theme/icons/32x32/actions/pan-end-symbolic.symbolic.png b/data/theme/icons/32x32/actions/pan-end-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..4ea3a40e7ef08dddbe052c134f84e65c06a1c857 GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@;M7UB8wRq zWZOZQvH$7ERG^?_iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0v(JY5_^ zB3j>Gb>wPvlxY7L-?b@0)0!_a^SO}ULB$-pukgAGOJv=jGH*7PIhaY;aL^TF{(5X@(nzgFOEpgPuteKSLh&#Z5V4<2mPI zm%xgo$tv4cxO!|U^c32>Y4ZMyZmv=R{|{9yU6G{wfx}7vVMKy7-v^N|0;PqYZ~lF9 t{b7O6LvF|U7rCrWlnxosJoEn}TdKcWp2p{QZ-DM*@O1TaS?83{1OU3Hb4&mL literal 0 HcmV?d00001 diff --git a/data/theme/icons/32x32/actions/pan-start-symbolic-rtl.symbolic.png b/data/theme/icons/32x32/actions/pan-start-symbolic-rtl.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..4ea3a40e7ef08dddbe052c134f84e65c06a1c857 GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@;M7UB8wRq zWZOZQvH$7ERG^?_iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0v(JY5_^ zB3j>Gb>wPvlxY7L-?b@0)0!_a^SO}ULB$-pukgAGOJv=jGH*7PIhaY;aL^TF{(5X@(nzgFOEpgPuteKSLh&#Z5V4<2mPI zm%xgo$tv4cxO!|U^c32>Y4ZMyZmv=R{|{9yU6G{wfx}7vVMKy7-v^N|0;PqYZ~lF9 t{b7O6LvF|U7rCrWlnxosJoEn}TdKcWp2p{QZ-DM*@O1TaS?83{1OU3Hb4&mL literal 0 HcmV?d00001 diff --git a/data/theme/icons/32x32/actions/pan-start-symbolic.symbolic.png b/data/theme/icons/32x32/actions/pan-start-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..f1f9fd36cd0a14f953cc71a30d4d8b786bcf581b GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@;M7UB8wRq zWZOZQvH$7ERG^?_iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0xfJY5_^ zB3j>G)y{KrlxTa{K6%c9sOG~>%d;Iq%jGw8ZDLQ^-NM$aB$459SyiO{$W=%EM?43` zjp}EeneF3tcF+Ag{}u*lh^#xzYc|9Eg!Y~X?D>L>YM%St?YIA7yl?TyZu=j;`LnL} z7oE1gq4qO4ud+9F()tVMWD{mRu`bb{yXM#78SAfX4?6AF+nOdG$11~kR`rjE;yh)h z0|$Oe_APdr!*!AI@Ct$cb4z!K3obb1^B|pNd&O}pEr*2xKlcA&YEe_onbi190_YP4 MPgg&ebxsLQ0BHbx&j0`b literal 0 HcmV?d00001 diff --git a/data/theme/icons/32x32/actions/pan-up-symbolic.symbolic.png b/data/theme/icons/32x32/actions/pan-up-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..f49b643449c3f58be5836e2affde6f23ac6bccc4 GIT binary patch literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@;M7UB8wRq zWZOZQvH$7ERG^?_iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0v}JzX3_ zB3j>G+V9nrDAMpTUQph`#o5uq%Y4FgfjH;c#oI6FR`5Q2@lIq53vbee3#KYtTcZV3 zYOG2e#2w%MmU(3J;n3-y-(@P|C#iT&N-6KVa9Fmh_O$=Uj>pzMfGMr^`IQYoEi))>08ltBtN-fwpN&iBB%**fjGGVIr#|+xeCrvE9^FTf8 zePPg1ruBv&gu|t;lpAcVS!VyaM|{h+7dt!VwQGra0B!qc&b?s2+AC|N%hP}!VeoYI Kb6Mw<&;$S!7=9iA literal 0 HcmV?d00001 diff --git a/data/theme/icons/48x48/Makefile.am b/data/theme/icons/48x48/Makefile.am new file mode 100644 index 0000000..0224d45 --- /dev/null +++ b/data/theme/icons/48x48/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = actions diff --git a/data/theme/icons/48x48/actions/Makefile.am b/data/theme/icons/48x48/actions/Makefile.am new file mode 100644 index 0000000..3a4927a --- /dev/null +++ b/data/theme/icons/48x48/actions/Makefile.am @@ -0,0 +1,7 @@ +iconsdir = $(datadir)/icons/Y/48x48/actions +dist_icons_DATA = pan-down-symbolic.symbolic.png \ + pan-end-symbolic-rtl.symbolic.png \ + pan-end-symbolic.symbolic.png \ + pan-start-symbolic-rtl.symbolic.png \ + pan-start-symbolic.symbolic.png \ + pan-up-symbolic.symbolic.png diff --git a/data/theme/icons/48x48/actions/pan-down-symbolic.symbolic.png b/data/theme/icons/48x48/actions/pan-down-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..6abbc39c13cc1fa8775bd4d183d76c709c9f5e7b GIT binary patch literal 418 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmSQK*5Dp-y;YjHK@;M7UB8wRq zbi6^BajEUJl|Vts64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq!<_&- zLoyoQUUk%FNt9s!aDP&%B45{T5p~t{ba8jfT|c>sibcdl*yEdo-P?8NJ9KqFa+?&@ zd80HUHSKoUG}+xNpNALEcv(5`yZvQr;}!uY4n-jG!~R-9zwMXj2J1Uwr)->gc#jYN ziaObJiR|QS8eW~1>vNZ99}G)6sFi22d<&h(8pwwCD5I=1yo zS?2TN+oH-AUuE|#`F8nNc$dWiyI;HJsKUJQ&W@2SJp9OgTe~DWM4f DPg$t2 literal 0 HcmV?d00001 diff --git a/data/theme/icons/48x48/actions/pan-end-symbolic-rtl.symbolic.png b/data/theme/icons/48x48/actions/pan-end-symbolic-rtl.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..32445d63cc94fcf5ee56c188064822d6046610b6 GIT binary patch literal 441 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmSQK*5Dp-y;YjHK@;M7UB8wRq zbi6^BajEUJl|Vts64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq!<_&%{*Nk zLoyoQUf=7*>?qRqaJt6^p%#&*FtISPTSu%f915~t@3i3~(-HYKJWDnjcuQ<-|hHn1qk|2j&=^crDTWo_Td>P3B|% z>#zPlzBM(2>G_S|3g%}^T_vLq$eJC|HLdEL%zEnf3rW*kZj((<)u;TvHOI#K1_N_e z*_4JP@mGO%XSMnGo@=%f`t`@Gh;_@3g@DM4PEUk~xcZIG4?dM%hgfBn`6)3mBjHH7ON zd1hkXpqzTdR!zA%tLKrIWMSvT3yZjnD}vl)7TIrEaY$&_sgB+obF5~cYS0TyDxUTF zaHG*9$>N2sqE;5+ZZXL^Ks6?EQv}r|cyw27c=7n*H`Ap3;o|RJUu~_s`1fPokAA!D z>dR{OxB3~1L|t)UPmlVgn)mnoi)mu^C#G%vp<%fCX#38>I~pIwqe|w;9oYE3K10o^ zTk2N$qj&@P*_ZFkHA*nuvGkNx-bPv3NkDHb{Sv>2`Dkp&>)moQ8h~NR;OXk;vd$@? F2>^pysYCz( literal 0 HcmV?d00001 diff --git a/data/theme/icons/48x48/actions/pan-start-symbolic-rtl.symbolic.png b/data/theme/icons/48x48/actions/pan-start-symbolic-rtl.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..790826fbd6284739e0a470c6a4db55ad9e26c83c GIT binary patch literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmSQK*5Dp-y;YjHK@;M7UB8wRq zbi6^BajEUJl|Vts64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq!<_&r9E97 zLoyoQUO%tpk|=Zhp}LdUnGo@=%f`t`@Gh;_@3g@DM4PEUk~xcZIG4?dM%hgfBn`6)3mBjHH7ON zd1hkXpqzTdR!zA%tLKrIWMSvT3yZjnD}vl)7TIrEaY$&_sgB+obF5~cYS0TyDxUTF zaHG*9$>N2sqE;5+ZZXL^Ks6?EQv}r|cyw27c=7n*H`Ap3;o|RJUu~_s`1fPokAA!D z>dR{OxB3~1L|t)UPmlVgn)mnoi)mu^C#G%vp<%fCX#38>I~pIwqe|w;9oYE3K10o^ zTk2N$qj&@P*_ZFkHA*nuvGkNx-bPv3NkDHb{Sv>2`Dkp&>)moQ8h~NR;OXk;vd$@? F2>^pysYCz( literal 0 HcmV?d00001 diff --git a/data/theme/icons/48x48/actions/pan-start-symbolic.symbolic.png b/data/theme/icons/48x48/actions/pan-start-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..32445d63cc94fcf5ee56c188064822d6046610b6 GIT binary patch literal 441 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmSQK*5Dp-y;YjHK@;M7UB8wRq zbi6^BajEUJl|Vts64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq!<_&%{*Nk zLoyoQUf=7*>?qRqaJt6^p%#&*FtISPTSu%f915~t@3i3~(-HYKJWDnjcuQ<-|hHn1qk|2j&=^crDTWo_Td>P3B|% z>#zPlzBM(2>G_S|3g%}^T_vLq$eJC|HLdEL%zEnf3rW*kZj((<)u;TvHOI#K1_N_e z*_4JP@mGO%XSMNFou z*Qz*UQ^2pB`zHLTW7_`JWz2QQyPgQ|d{tg2_-jL-x2()!kY_+XdRxUFBOku0=f=gi Qz>sC|boFyt=akR{0OR4nJ zSo47}n}LFoC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)l)_S@) zhE&XXdu?MsPofOlgXbKNx-NUPI30CW7h-LFVWQ;dxcK6o{R^gMXoM`9bm8Ls6{1`h zSDbKj5jZIt?cwo6&pl7Hywmox@13{j-l)8;owV}V?C;;}c3W?Dc0qt6*XBC%zb`Ch z`mFa@d0Igs)8~IH+YeqSWVeo zobx!B9Jw`y|1<9s`J=a;{&DG9VZ#OFWt{mb1u!i)0? zAKzMO&^+60|Iw?m**kLop3Q$1bCCb*?D%bU);?Pw|5&o?r@qC_*tI8b^*{fY^N*FU r4nJ zSo47}n}LFoC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)l&hvC} z45^s&_J(cNlt7V&hwT$RL|hI!HJNGVv;Q54ft*ul7&g?Zx%HkRBH)>|2> zWlaluom@PW9bFX#0+jxx=p366lb3T|@VSk_S(E$KdiUQiof71w2_{tUr>;q2eLgw* z(A~tX9fncRjkd$s=e&m+qMwtqdWzg+CC5r@UG^S1wP z%NN|KKgKfe#rdY!GXpR7Nxl8_Ca&TAjtP>YZ%y`Ph(BCxSjm$&`|^H{y+;n7S&`BG z>-WLGR~98O+ZY^^ckZ!kkAG?3uAl1WdOO=WMONK-@uI)E-fs%hLbkB}{rg~|;Z2dd zW#Rid%!9j|d>`#BW8BtrPx{!g!adjZ4rOHpHWmL!OJ}@RR9tjM(pJv?p;wVNB-DUG d_s@AhBlEZE@9Z{(cmt!8!PC{xWt~$(698zR>RA8) literal 0 HcmV?d00001 diff --git a/data/theme/icons/64x64/actions/pan-end-symbolic.symbolic.png b/data/theme/icons/64x64/actions/pan-end-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..81b8cf539cc4b9c433528a64f07595395d5ea44e GIT binary patch literal 536 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ zSo47}n}LFoC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lPW5zg z45^s&_NKkQbD+fWkL$fMRC;}zP9BiX@UW8bG8{Mg); zaj9{k&c9rbknA0kzCF33aPhh1yZ4hzUKZ_to>}#7r)~!n{MqmNK(d0V>zuBhT*I^T zubDM|JiD=bscD1SNe8#s?jF%bwub_Gjcd}UY~?+~Xwt}hT`Af2fZ|7iQ}Y6^6&(T{E&LDpB#Ls3wtMZ7pTkfKG`y^%eZ%dy-D$gO8|_z= zSL7eqbLb@3$K~~0Uw~RpPJZ*}ZTEh5H=D(4{*+12`O>p#66?86ekaxQ8s2mJ4n?nX zZM)|A@$dzmle+6`KbkLjQdq%Mp}N$*<4HsIp`+IuEzfIcOFroMQN90}WNPN@ijTj6 zI;M4q*SmH7lUOOFx6iGJ$)}fV?a}?r!TT(~E%Pk4nJ zSo47}n}LFoC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lPW5zg z45^s&_NKkQbD+fWkL$fMRC;}zP9BiX@UW8bG8{Mg); zaj9{k&c9rbknA0kzCF33aPhh1yZ4hzUKZ_to>}#7r)~!n{MqmNK(d0V>zuBhT*I^T zubDM|JiD=bscD1SNe8#s?jF%bwub_Gjcd}UY~?+~Xwt}hT`Af2fZ|7iQ}Y6^6&(T{E&LDpB#Ls3wtMZ7pTkfKG`y^%eZ%dy-D$gO8|_z= zSL7eqbLb@3$K~~0Uw~RpPJZ*}ZTEh5H=D(4{*+12`O>p#66?86ekaxQ8s2mJ4n?nX zZM)|A@$dzmle+6`KbkLjQdq%Mp}N$*<4HsIp`+IuEzfIcOFroMQN90}WNPN@ijTj6 zI;M4q*SmH7lUOOFx6iGJ$)}fV?a}?r!TT(~E%Pk4nJ zSo47}n}LFoC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)l&hvC} z45^s&_J(cNlt7V&hwT$RL|hI!HJNGVv;Q54ft*ul7&g?Zx%HkRBH)>|2> zWlaluom@PW9bFX#0+jxx=p366lb3T|@VSk_S(E$KdiUQiof71w2_{tUr>;q2eLgw* z(A~tX9fncRjkd$s=e&m+qMwtqdWzg+CC5r@UG^S1wP z%NN|KKgKfe#rdY!GXpR7Nxl8_Ca&TAjtP>YZ%y`Ph(BCxSjm$&`|^H{y+;n7S&`BG z>-WLGR~98O+ZY^^ckZ!kkAG?3uAl1WdOO=WMONK-@uI)E-fs%hLbkB}{rg~|;Z2dd zW#Rid%!9j|d>`#BW8BtrPx{!g!adjZ4rOHpHWmL!OJ}@RR9tjM(pJv?p;wVNB-DUG d_s@AhBlEZE@9Z{(cmt!8!PC{xWt~$(698zR>RA8) literal 0 HcmV?d00001 diff --git a/data/theme/icons/64x64/actions/pan-up-symbolic.symbolic.png b/data/theme/icons/64x64/actions/pan-up-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..909564e437d77aef72fa794d1376627f6d50204c GIT binary patch literal 507 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ zSo47}n}LFoC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lR(QHN zhE&XXdu?x)sG|hi19hz*!5N9dEfFgtmI}BqIa%rYIEV;J&u-ZMfb~X3qGDV_>jdtO zh-D% z-MhqabIm!|bcz z8f<8iy2Twj>C^E{8glXvH0&1tLh!1q3S4}-XW#~xLR ldzi!h+tmdQj?_OA&taM)>vv}QQD8(dc)I$ztaD0e0syF%*HHif literal 0 HcmV?d00001 diff --git a/data/theme/icons/96x96/Makefile.am b/data/theme/icons/96x96/Makefile.am new file mode 100644 index 0000000..0224d45 --- /dev/null +++ b/data/theme/icons/96x96/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = actions diff --git a/data/theme/icons/96x96/actions/Makefile.am b/data/theme/icons/96x96/actions/Makefile.am new file mode 100644 index 0000000..bda9536 --- /dev/null +++ b/data/theme/icons/96x96/actions/Makefile.am @@ -0,0 +1,7 @@ +iconsdir = $(datadir)/icons/Y/96x96/actions +dist_icons_DATA = pan-down-symbolic.symbolic.png \ + pan-end-symbolic-rtl.symbolic.png \ + pan-end-symbolic.symbolic.png \ + pan-start-symbolic-rtl.symbolic.png \ + pan-start-symbolic.symbolic.png \ + pan-up-symbolic.symbolic.png diff --git a/data/theme/icons/96x96/actions/pan-down-symbolic.symbolic.png b/data/theme/icons/96x96/actions/pan-down-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..8665ab5bd7369896fb47e82c30a1896dabbd7d4f GIT binary patch literal 720 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEX7WqAsj$Z!;#Vf4nJ zL`(%?#+$k3mw|$kC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)l`FgrI zhE&XXd&_%;PoWI^hx1RXrnw8Lo@@%zIntJsqhjrOa?;UQ&B&XcIcq#}be4#uE?g23 zaUyx~l$<@Mc+D$SG}o`QIhJ&$$-4Obo$BZ3b{g-S|0{o)<^TWRzt6Y)|JgphtphhW zR<(h@|6>2)8G%`gel2^%5cf#8?_cHG$8VjV&My=1KF#yBzja4$#<|Ilq$P1=-KRx2JJ**MUA^V*qoo_$Eputdfhg;?duC~~ zdX#^JPI&DiZQMIMZcgwY#hAl;%%05bUhVs2=L&DVL#EXqFMn{gKYFV0%mx{LZlgaz zw$@g4FIT2>+ey?h*(GLoCg)4HZ&aW1v|`E5{6v55W3La^9Ziq758Ilsr_Vroy6F1D z;s(V$kA05cR6Dk_lQmglx$@OACD+Nt^4{(j|0i9Q-nZzVf8wbZr(e{#R)6HWm-v|D z*PRA))>^)#a&4{`Y}p?UeGvX8TRrQ=YX19Nzp7eGb=NN7);T1*INqqLa8Kvs_lYMh zu3fyi>|xI%&pl7ycR#C%$$zxtv)Z%CH#nF3m!8Z_yS+o|JlDP7&ZXK?${Qj-_Fi^B zD*oa7jVsUI#3oD1X~acIZB>uB`0Yw;nwXyC&nNK*=Lmf&TPi0L^5@5nMW^MLP0eNB zmtpgB{>HsqO8$3Vt;l=vgg+s-a^pY!&xOv9e>Y_`XIiZNb-uOi-yBInoPe>8xu_*x VGwj>FFktFq@O1TaS?83{1OO~`NqGPO literal 0 HcmV?d00001 diff --git a/data/theme/icons/96x96/actions/pan-end-symbolic-rtl.symbolic.png b/data/theme/icons/96x96/actions/pan-end-symbolic-rtl.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..7b51762ba423e7947ee415bac0c1fdb2de35627c GIT binary patch literal 745 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEX7WqAsj$Z!;#Vf4nJ zL`(%?#+$k3mw|$kC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lrFptI zhE&XXd&{?@H&No)$Nw`Wo$b0je|Ah_<#zU*mUJ*rXUfz~lQ${dJkz!zG4WE0>ZVPH zyrxW9G)0u_r2AquDc6eBqJ-2te_W9bsSy@?T|KI&S^T_5ra~cNt-!J#T z!hp$!m5)I;Gf+wQfzpL}pEk!!PCcnm&%dA7CeSU_kiq9tCFA+lSj{zTc9$xDPAzSH&9+XEzn&*TZMAnoN5zl(jlR3Ke0r-US0{aAvA6bpwg=oF zKeU%*K8Uak-_t)^+L*t>$L0_Fj~NRMV-JKrdbpo;+UZw97M_0%52wXO{VZeJ z-yyyse0tcvuLsf}J>-9V>C|=(301j&vJ1k)!goj>$OURSbeyNx%G>6T|ADC3Tl=ps z<$LiU`t1Fx6?~7@INBc2ee}P{{6J7-tWfO%??M21h{RAJ$ zsh-`hN=jZa`DrfR^pf>lz+Tl^KR)k{zdREiL_V%#wknONn)B)uKQLJ`c)I$ztaD0e F0sxyhP96XN literal 0 HcmV?d00001 diff --git a/data/theme/icons/96x96/actions/pan-end-symbolic.symbolic.png b/data/theme/icons/96x96/actions/pan-end-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..f86973372bea5c2903c2a9f4435d25c5171c46ef GIT binary patch literal 748 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEX7WqAsj$Z!;#Vf4nJ zL`(%?#+$k3mw|$kC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lWqP_e zhE&XXd&jq6+c9iLIL^Bqg`sT{1z0JC!SS?Ttte z&qY&$P6RDB(BY7lS3Z_;CcALWnVsh&_ZC0hxjx?a?5F#+{%7Yrue{G_j0QHBR9#_| z{K`DNq42@&`|p1*bv-$UeO3LwbRnJ@?VY6iVQvNI;ayv7$}azUDy{o)fu3&v z<|EucSaU8eeR_fUj!N92>V%nV^g0mYe!@Lm8|WOGZf+uX~ss$ zwFC9Az5!ZOIJ1J&zM*v27MWdl756ZTb>F)5qOAP`gMDn^?!0mi@siB9Q@^F(Vp;2d zcw*yBu9F#zADVtF|F38e9TvXB?t$FL5BC|pQ%gBxROJ3yY>1m4w(oDrKZR}KVbcz% zJy8G1bneBaQ|25s3UdE)7lZ?~sC}4G@#B1B<)&SSN_S8A$+c$ERn>x?iXZzMWp{1) zlzVvkCnN1f{Ue9JCu^F{@_(MpWFFoSd~ z`D}RDGB)bxG=crPk&NXZw7s^@WVTU~`=_z?cl_#;nU5a!Gp;VpwA`a)mv%$*jaPEZ zH*Sd_x74DRmxuRv{f|7}lgZGYxmWm`kVU6{*co*2#{Ls~Q-5Uhf2Va(z?8}0>FVdQ I&MBb@0F<*-+W-In literal 0 HcmV?d00001 diff --git a/data/theme/icons/96x96/actions/pan-start-symbolic-rtl.symbolic.png b/data/theme/icons/96x96/actions/pan-start-symbolic-rtl.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..f86973372bea5c2903c2a9f4435d25c5171c46ef GIT binary patch literal 748 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEX7WqAsj$Z!;#Vf4nJ zL`(%?#+$k3mw|$kC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lWqP_e zhE&XXd&jq6+c9iLIL^Bqg`sT{1z0JC!SS?Ttte z&qY&$P6RDB(BY7lS3Z_;CcALWnVsh&_ZC0hxjx?a?5F#+{%7Yrue{G_j0QHBR9#_| z{K`DNq42@&`|p1*bv-$UeO3LwbRnJ@?VY6iVQvNI;ayv7$}azUDy{o)fu3&v z<|EucSaU8eeR_fUj!N92>V%nV^g0mYe!@Lm8|WOGZf+uX~ss$ zwFC9Az5!ZOIJ1J&zM*v27MWdl756ZTb>F)5qOAP`gMDn^?!0mi@siB9Q@^F(Vp;2d zcw*yBu9F#zADVtF|F38e9TvXB?t$FL5BC|pQ%gBxROJ3yY>1m4w(oDrKZR}KVbcz% zJy8G1bneBaQ|25s3UdE)7lZ?~sC}4G@#B1B<)&SSN_S8A$+c$ERn>x?iXZzMWp{1) zlzVvkCnN1f{Ue9JCu^F{@_(MpWFFoSd~ z`D}RDGB)bxG=crPk&NXZw7s^@WVTU~`=_z?cl_#;nU5a!Gp;VpwA`a)mv%$*jaPEZ zH*Sd_x74DRmxuRv{f|7}lgZGYxmWm`kVU6{*co*2#{Ls~Q-5Uhf2Va(z?8}0>FVdQ I&MBb@0F<*-+W-In literal 0 HcmV?d00001 diff --git a/data/theme/icons/96x96/actions/pan-start-symbolic.symbolic.png b/data/theme/icons/96x96/actions/pan-start-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..7b51762ba423e7947ee415bac0c1fdb2de35627c GIT binary patch literal 745 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEX7WqAsj$Z!;#Vf4nJ zL`(%?#+$k3mw|$kC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lrFptI zhE&XXd&{?@H&No)$Nw`Wo$b0je|Ah_<#zU*mUJ*rXUfz~lQ${dJkz!zG4WE0>ZVPH zyrxW9G)0u_r2AquDc6eBqJ-2te_W9bsSy@?T|KI&S^T_5ra~cNt-!J#T z!hp$!m5)I;Gf+wQfzpL}pEk!!PCcnm&%dA7CeSU_kiq9tCFA+lSj{zTc9$xDPAzSH&9+XEzn&*TZMAnoN5zl(jlR3Ke0r-US0{aAvA6bpwg=oF zKeU%*K8Uak-_t)^+L*t>$L0_Fj~NRMV-JKrdbpo;+UZw97M_0%52wXO{VZeJ z-yyyse0tcvuLsf}J>-9V>C|=(301j&vJ1k)!goj>$OURSbeyNx%G>6T|ADC3Tl=ps z<$LiU`t1Fx6?~7@INBc2ee}P{{6J7-tWfO%??M21h{RAJ$ zsh-`hN=jZa`DrfR^pf>lz+Tl^KR)k{zdREiL_V%#wknONn)B)uKQLJ`c)I$ztaD0e F0sxyhP96XN literal 0 HcmV?d00001 diff --git a/data/theme/icons/96x96/actions/pan-up-symbolic.symbolic.png b/data/theme/icons/96x96/actions/pan-up-symbolic.symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..e45b7fe0b6e57011143bb40d478b8431d8d825e5 GIT binary patch literal 718 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEX7WqAsj$Z!;#Vf4nJ zL`(%?#+$k3mw|$kC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)ld3(Az zhE&XXd&74{PoT{4kL%y%?%0%|!{Mpv6sd9OoYSNu(^`WzrDQJMuuFT>f_KN9G`Ocd zNp%-eUAkx5(UN4vhs$19?G@`k8S}Ylp5gg3JI@>6_n&*$=J}s<`;DJho@4Z!q=JE} z@&zQ=^cb8cZvHa&=YiaWPyV~vb$Vv4=wHJc_j&t|t7cp|9Wz$zzhSWpjQ^AMo9RvW zv~>s47~C7?o9Nf&TJ!R_ct$xCH>_TwU6Z?;?@aH6?E%x6{WJFexcW^f;_BxstQ$ou z{9iNmGbcCRuVL8s)uQ^HEX%%&yEZI7P?ezi!REtld6oA9tY=ux3Eqo(XY_UV{xesK z9XFS8^5^>MGQAVld&Cit^`Yi#icHl%!3|rwKc84y>d< zM=55`=>u>0j?HA9<8OG5HzAJw@e{9E=a0o7Fr1{_;kR_}u?p5TClmH$=CXg7c&$}} zxvVtt&0Edm_wKfCT%4UQy6#<4pXhR literal 0 HcmV?d00001 diff --git a/data/theme/icons/Makefile.am b/data/theme/icons/Makefile.am new file mode 100644 index 0000000..66c1bd0 --- /dev/null +++ b/data/theme/icons/Makefile.am @@ -0,0 +1,20 @@ +SUBDIRS = 16x16 24x24 32x32 48x48 64x64 96x96 scalable + +themedir = $(datadir)/icons/Y +theme_DATA = index.theme + +gtk_update_icon_cache = gtk-update-icon-cache -f -t $(themedir) + +install-data-hook: + @-if test -z "$(DESTDIR)"; then \ + echo "Updating Gtk icon cache."; \ + $(gtk_update_icon_cache); \ + else \ + echo "*** Icon cache not updated. Remember to run:"; \ + echo "***"; \ + echo "*** $(gtk_update_icon_cache)"; \ + echo "***"; \ + fi + +uninstall-local: + rm -f $(DESTDIR)$(themedir)/icon-theme.cache; diff --git a/data/theme/icons/index.theme.in b/data/theme/icons/index.theme.in new file mode 100644 index 0000000..0f39099 --- /dev/null +++ b/data/theme/icons/index.theme.in @@ -0,0 +1,44 @@ +[Icon Theme] +Name=Y +Comment=Some icons for improving user expirience using Y gtk theme +Inherits=@FALLBACK_ICONS@ + +# Directory list +Directories=16x16/actions,24x24/actions,32x32/actions,48x48/actions,64x64/actions,96x96/actions,scalable/actions, + +[16x16/actions] +Context=Actions +Size=16 +Type=Fixed + +[24x24/actions] +Context=Actions +Size=24 +Type=Fixed + +[32x32/actions] +Context=Actions +Size=32 +Type=Fixed + +[48x48/actions] +Context=Actions +Size=48 +Type=Fixed + +[64x64/actions] +Context=Actions +Size=64 +Type=Fixed + +[96x96/actions] +Context=Actions +Size=96 +Type=Fixed + +[scalable/actions] +Context=Actions +Size=16 +MinSize=8 +MaxSize=512 +Type=Scalable diff --git a/data/theme/icons/scalable/Makefile.am b/data/theme/icons/scalable/Makefile.am new file mode 100644 index 0000000..0224d45 --- /dev/null +++ b/data/theme/icons/scalable/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = actions diff --git a/data/theme/icons/scalable/actions/Makefile.am b/data/theme/icons/scalable/actions/Makefile.am new file mode 100644 index 0000000..eadf0ba --- /dev/null +++ b/data/theme/icons/scalable/actions/Makefile.am @@ -0,0 +1,7 @@ +iconsdir = $(datadir)/icons/Y/scalable/actions +dist_icons_DATA = pan-down-symbolic.svg \ + pan-end-symbolic-rtl.svg \ + pan-end-symbolic.svg \ + pan-start-symbolic-rtl.svg \ + pan-start-symbolic.svg \ + pan-up-symbolic.svg diff --git a/data/theme/icons/scalable/actions/pan-down-symbolic.svg b/data/theme/icons/scalable/actions/pan-down-symbolic.svg new file mode 100644 index 0000000..4415c71 --- /dev/null +++ b/data/theme/icons/scalable/actions/pan-down-symbolic.svg @@ -0,0 +1,39 @@ + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/theme/icons/scalable/actions/pan-end-symbolic-rtl.svg b/data/theme/icons/scalable/actions/pan-end-symbolic-rtl.svg new file mode 100644 index 0000000..64fa7b9 --- /dev/null +++ b/data/theme/icons/scalable/actions/pan-end-symbolic-rtl.svg @@ -0,0 +1,39 @@ + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/theme/icons/scalable/actions/pan-end-symbolic.svg b/data/theme/icons/scalable/actions/pan-end-symbolic.svg new file mode 100644 index 0000000..c76d1dd --- /dev/null +++ b/data/theme/icons/scalable/actions/pan-end-symbolic.svg @@ -0,0 +1,39 @@ + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/theme/icons/scalable/actions/pan-start-symbolic-rtl.svg b/data/theme/icons/scalable/actions/pan-start-symbolic-rtl.svg new file mode 100644 index 0000000..149b947 --- /dev/null +++ b/data/theme/icons/scalable/actions/pan-start-symbolic-rtl.svg @@ -0,0 +1,39 @@ + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/theme/icons/scalable/actions/pan-start-symbolic.svg b/data/theme/icons/scalable/actions/pan-start-symbolic.svg new file mode 100644 index 0000000..a0f3271 --- /dev/null +++ b/data/theme/icons/scalable/actions/pan-start-symbolic.svg @@ -0,0 +1,39 @@ + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/theme/icons/scalable/actions/pan-up-symbolic.svg b/data/theme/icons/scalable/actions/pan-up-symbolic.svg new file mode 100644 index 0000000..e56c849 --- /dev/null +++ b/data/theme/icons/scalable/actions/pan-up-symbolic.svg @@ -0,0 +1,39 @@ + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/theme/lock.xcursor b/data/theme/lock.xcursor new file mode 100644 index 0000000000000000000000000000000000000000..edd12837c22598d966cd560f917e0d0b03215c22 GIT binary patch literal 1088 zcmaKp4M3Vwhd=GQW+vfES1M_k_JjGGW-VKpr52hQsAy&hL74`jFcC562SrL| zT2j*_5lRh-qG=*VCaKp@!c1{ANh4hn@+?kXrLD9Eog7>3Z$@D!n;!S88p62mZwSy`71 z6BFZTZG8=vWmEsRM@dPMZg_YA{{FiKHjc_gsFg@0KK1o=-#M;B;0vh53jXrYYD;zf z{XI}Bopm%f&o0zxG`U@ReG}HMl@(IYZo#)4%kCEGK6SUl#d+fc>Pszi5APLswY_Pe zyj>pkSN6BIl}6vMX)kJOg(Bogi%8*?Y~vddWwrfqjATogIxVMaC^xSXGP!3BYR3BanU9AP&uhjk~&?@=D7+*eAWFXx@z2A3W3}a|qz( z;PiY3qGAKc#TF1%KFFRVh=Vg=?WPvq$HS7B)%2JS&YBTE&cp9Bj}6Vg!BmWaTxkP| zsi6OU9%NTE#DQr7-$B`}mi)S^9#eqH43EKC$Qma>ZqdFOv~Of7NJtK4<3YR+LF}6Z zYuA;$V>M^;{y7I}>oiE|SCFg@kT@MkmT_yGQPvv?_D_1aT}HADiZPn%TO)GAE=^7N&o-= literal 0 HcmV?d00001 diff --git a/data/theme/settings.ini b/data/theme/settings.ini new file mode 100644 index 0000000..4719dd1 --- /dev/null +++ b/data/theme/settings.ini @@ -0,0 +1,8 @@ +[Settings] +gtk-theme-name = Y +gtk-icon-theme-name = Y +gtk-cursor-theme-name = whiteglass +gtk-cursor-theme-size = 16 +gtk-font-name = Sans 9 +gtk-overlay-scrolling = 0 +gtk-dialogs-use-header = 0 diff --git a/data/utils/Makefile.am b/data/utils/Makefile.am new file mode 100644 index 0000000..0fefa6b --- /dev/null +++ b/data/utils/Makefile.am @@ -0,0 +1,14 @@ + +desktopdir = $(datadir)/applications +desktop_in_files = yps.desktop.in ynotes.desktop.in yfind.desktop.in ysysinfo.desktop.in \ + yimage.desktop.in ywifi.desktop.in +desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) + +xsessiondir = $(datadir)/xsessions +xsession_in_files = ysession.desktop.in +xsession_DATA = $(xsession_in_files:.desktop.in=.desktop) + +@INTLTOOL_DESKTOP_RULE@ + +EXTRA_DIST = $(desktop_in_files) $(xsession_in_files) +DISTCLEANFILES = $(desktop_DATA) $(xsession_DATA) diff --git a/data/utils/yfind.desktop.in b/data/utils/yfind.desktop.in new file mode 100644 index 0000000..27a663b --- /dev/null +++ b/data/utils/yfind.desktop.in @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.0 +Encoding=UTF-8 +Name=Yfind +_GenericName=File search +_Comment=Search for Files or Folders on disk +Categories=Application;System; +Exec=yfind +Icon=system-search +Type=Application +Terminal=false diff --git a/data/utils/yimage.desktop.in b/data/utils/yimage.desktop.in new file mode 100644 index 0000000..300bc71 --- /dev/null +++ b/data/utils/yimage.desktop.in @@ -0,0 +1,12 @@ +[Desktop Entry] +Name=Yimage +_GenericName=Image viewer +_Comment=Simple image viewer +Categories=GTK;Graphics; +Exec=yimage %F +Icon=image +Terminal=false +Type=Application +NoDisplay=true +MimeType=image/png;image/gif;image/jpeg;image/tiff + diff --git a/data/utils/ynotes.desktop.in b/data/utils/ynotes.desktop.in new file mode 100644 index 0000000..3d54720 --- /dev/null +++ b/data/utils/ynotes.desktop.in @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Ynotes +_GenericName=Quick Notes +_Comment=Keep small pieces of text +Categories=GTK;Utility; +Exec=ynotes +Icon=ynotes +Terminal=false +Type=Application diff --git a/data/utils/yps.desktop.in b/data/utils/yps.desktop.in new file mode 100644 index 0000000..487ec88 --- /dev/null +++ b/data/utils/yps.desktop.in @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.0 +Encoding=UTF-8 +Name=Yps +_GenericName=Processes viewer +_Comment=Show running processes +Categories=Application;System; +Exec=yps +Icon=utilities-system-monitor +Type=Application +Terminal=false diff --git a/data/utils/ysession.desktop.in b/data/utils/ysession.desktop.in new file mode 100644 index 0000000..0649947 --- /dev/null +++ b/data/utils/ysession.desktop.in @@ -0,0 +1,6 @@ +[Desktop Entry] +_Name=Y desktop +_Comment=Default session for Y desktop +Exec=ysession +Icon=ydesk +Type=XSession diff --git a/data/utils/ysysinfo.desktop.in b/data/utils/ysysinfo.desktop.in new file mode 100644 index 0000000..d92e744 --- /dev/null +++ b/data/utils/ysysinfo.desktop.in @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.0 +Encoding=UTF-8 +Name=Ysysinfo +_GenericName=System info +_Comment=Show information about system +Categories=Application;System; +Exec=ysysinfo +Icon=dialog-information +Type=Application +Terminal=false diff --git a/data/utils/ywifi.desktop.in b/data/utils/ywifi.desktop.in new file mode 100644 index 0000000..ce010ce --- /dev/null +++ b/data/utils/ywifi.desktop.in @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.0 +Encoding=UTF-8 +Name=Ywifi +_GenericName=Wireless manager +_Comment=Manager of wireless networks +Categories=Application;Network;Internet; +Exec=ywifi +Icon=network-wireless +Type=Application +Terminal=false diff --git a/data/ydesk.gschema.xml b/data/ydesk.gschema.xml new file mode 100644 index 0000000..64e77a6 --- /dev/null +++ b/data/ydesk.gschema.xml @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + 5 + Number of desktops + + + 25 + Clipboard history size + + + + + + true + Update user directories + + + false + Run EMACS server + + + true + Run URXVT server + + + false + Enable compositing manager + + + "#071a30" + Default background color + + + '' + Default wallpaper + + + + + + 'xft:Sans:pixelsize=12' + Default font + + + 'xft:Sans:Bold:Italic:pixelsize=13' + Menu title font + + + 'xft:Sans:pixelsize=12' + Popup tips font + + + 'xft:Sans:pixelsize=11' + Window title font + + + + + + 'yterm' + Terminal command + + + 'spacefm' + File manager command + + + 'emacs' + Editor command + + + 'firefox' + Web browser command + + + 'claws-mail' + Mail client command + + + 'xtrlock' + Lock screen command + + + + + + true + Enable Ydesk panel + + + 'top' + Ydesk panel position + + + 16 + Panel icons size + + + 'menu,qlaunch,run,taskbar,tray,pager,cpu,shot,media,wifi,bat,volume,kbd,clock,wact' + List of panel applets + + + + + + 'xft:Sans:Bold:pixelsize=12' + Font for panel menubar + + + 'root' + Default action for screenshot + + + '%R' + Time format of panel clock + + + 50 + Size of panel clock + + + 'xft:Monospace:Bold:pixelsize=13' + Font for panel clock + + + '#00a000' + Foreground color for panel clock + + + 800 + Size of panel taskbar + + + 200 + Size of panel run applet + + + '#e0e0e0' + Foreground color for panel run applet + + + '#081C12' + Background color for panel run applet + + + 'xft:Monospace:pixelsize=12' + Font for panel run applet + + + 50 + Size of CPU load applet + + + 40 + Size of keyboard indicator applet + + + 600 + Size of sysinfo applet + + + 120 + Size of system tray applet + + + 600000 + Period for mail check (milliseconds) + + + 'BAT0' + Default battery name + + + 'ADP0' + AC power adapter name + + + 'Master' + Mixer control for changing volume + + + 'wlan0' + Wifi network interface name + + + 1200000 + Period for weather check (milliseconds) + + + + + + '#00a000' + Foreground color for ycpu + + + '#000000' + Background color for ycpu + + + true + Show memory statistic + + + 1500 + Update period in miliseconds + + + + + + 'Kiev' + City name for weather forecast + + + 'UA' + Country code for weather forecast + + + 'metric' + Measure units for weather forecast + + + + diff --git a/fdo/Makefile.am b/fdo/Makefile.am new file mode 100644 index 0000000..e05806a --- /dev/null +++ b/fdo/Makefile.am @@ -0,0 +1,4 @@ +fdodir = $(libdir)/ydesk/fdo +fdo_SCRIPTS = notifyd + +EXTRA_DIST = notifyd \ No newline at end of file diff --git a/fdo/notifyd b/fdo/notifyd new file mode 100755 index 0000000..580e32b --- /dev/null +++ b/fdo/notifyd @@ -0,0 +1,40 @@ +#! /usr/bin/python + +from typing import Any, List, Dict, Tuple + +from gi.repository import GLib +from dbus.mainloop.glib import DBusGMainLoop + +import dbus.service +import dbus +import os +import sys + +os.environ["YAD_OPTIONS"] = "--sticky --fixed --on-top --skip-taskbar --undecorated --no-focus --no-buttons --borders=15 --width=250 --name=Popup --image-on-top --posx=-15 --posy=-15" + +class Notifications(dbus.service.Object): + def __init__(self, bus_name: str, object_path: str): + dbus.service.Object.__init__(self, bus_name, object_path) + + @dbus.service.method(dbus_interface='org.freedesktop.Notifications', out_signature='as') + def GetCapabilities(self) -> List[str]: + return ['body', 'persistent', 'body-hyperlinks', 'body-markup', 'icon-static'] + + @dbus.service.method(dbus_interface='org.freedesktop.Notifications', in_signature='susssasa{sv}i', out_signature='u') + def Notify(self, app_name: str, replaces_id: int, app_icon: str, summary: str, body: str, actions: List[str], hints: Dict[str, Any], expire_timeout: int) -> int: + txt = '%s\n%s' % (summary, body) + cmd = "yad --text='%s' --image='%s' --timeout=%d" % (txt, app_icon, expire_timeout / 100) + GLib.spawn_command_line_async(cmd) + return replaces_id + + @dbus.service.method(dbus_interface='org.freedesktop.Notifications', out_signature='ssss') + def GetServerInformation(self) -> Tuple[str, str, str, str]: + return ('notifyd', 'ydesk', '1.0', '1.2') + +DBusGMainLoop(set_as_default=True) + +loop = GLib.MainLoop() +bus = dbus.SessionBus() +bus_name = dbus.service.BusName('org.freedesktop.Notifications', bus=bus) +Notifications(bus_name, '/org/freedesktop/Notifications') +loop.run() diff --git a/fvwm/Makefile.am b/fvwm/Makefile.am new file mode 100644 index 0000000..e1ee527 --- /dev/null +++ b/fvwm/Makefile.am @@ -0,0 +1,32 @@ +AM_CPPFLAGS = -DLOCALEDIR=\""$(datadir)/locale"\" + +fvwmdir = $(datadir)/ydesk/fvwm +dist_fvwm_DATA = config/colors.fvwm config/decor.fvwm config/functions.fvwm \ + config/keys.fvwm config/main.fvwm config/menus.fvwm config/modules.fvwm + +appletdir = $(fvwmdir)/applets +dist_applet_DATA = config/applets/bat.fvwm config/applets/clock.fvwm config/applets/cpu.fvwm \ + config/applets/desk.fvwm config/applets/kbd.fvwm config/applets/leds.fvwm \ + config/applets/menu.fvwm config/applets/pager.fvwm config/applets/qlaunch.fvwm \ + config/applets/shot.fvwm config/applets/sysinfo.fvwm config/applets/tray.fvwm \ + config/applets/taskbar.fvwm config/applets/media.fvwm config/applets/volume.fvwm \ + config/applets/xeyes.fvwm config/applets/run.fvwm config/applets/mail.fvwm \ + config/applets/wact.fvwm config/applets/wifi.fvwm config/applets/weather.fvwm + +imagedir = $(fvwmdir)/images +dist_image_DATA = images/min.png images/max.png images/check.png images/close.png images/side.png images/default.png + +flib_files = scripts/ymenu.py scripts/panel.sh scripts/qlaunch.sh scripts/infostore.sh scripts/icons.sh \ + scripts/clock.sh scripts/volume.sh scripts/battery.sh scripts/prun.sh scripts/wifi.sh + +flibdir = $(libdir)/ydesk/fvwm +flib_SCRIPTS = $(flib_files) scripts/clipman.sh scripts/shot.sh scripts/media.sh \ + scripts/weather.sh scripts/mail.sh + +flib_PROGRAMS = ycpu + +ycpu_SOURCES = cpu.c +ycpu_CFLAGS = $(GTK_CFLAGS) +ycpu_LDADD = $(GTK_LIBS) $(INTLLIBS) + +EXTRA_DIST = $(flib_files) diff --git a/fvwm/config/applets/bat.fvwm b/fvwm/config/applets/bat.fvwm new file mode 100644 index 0000000..2fd7bce --- /dev/null +++ b/fvwm/config/applets/bat.fvwm @@ -0,0 +1,4 @@ +*FvwmPanel: (Id bat, 25x1, Padding 2 2, Icon "$[infostore.p_battery]", Action (Mouse 1) Exec exec ysysinfo 6) + +Schedule Periodic 60000 PipeRead "$[FVWM_LIBDIR]/battery.sh" +PipeRead "$[FVWM_LIBDIR]/battery.sh" diff --git a/fvwm/config/applets/clock.fvwm b/fvwm/config/applets/clock.fvwm new file mode 100644 index 0000000..64e1a23 --- /dev/null +++ b/fvwm/config/applets/clock.fvwm @@ -0,0 +1,3 @@ +*FvwmPanel (Id clock, $[infostore.clock_sz]x1, Colorset 12, Font $[infostore.clock_fn], Title $[infostore.p_clock], Action (Mouse 1) Exec exec $[FVWM_LIBDIR]/clock.sh cal) + +Schedule Periodic 10000 PipeRead "$[FVWM_LIBDIR]/clock.sh" diff --git a/fvwm/config/applets/cpu.fvwm b/fvwm/config/applets/cpu.fvwm new file mode 100644 index 0000000..4d47285 --- /dev/null +++ b/fvwm/config/applets/cpu.fvwm @@ -0,0 +1 @@ +*FvwmPanel: (Id cpu, $[infostore.cpu_sz]x1, Padding 2 2, Action (Mouse 1) 'Exec exec yps', Swallow(UseOld,NoKill) "YCPU" 'Exec exec $[FVWM_LIBDIR]/ycpu -w $[infostore.cpu_sz]') diff --git a/fvwm/config/applets/desk.fvwm b/fvwm/config/applets/desk.fvwm new file mode 100644 index 0000000..c4266ff --- /dev/null +++ b/fvwm/config/applets/desk.fvwm @@ -0,0 +1 @@ +*FvwmPanel: (Id desk, 25x1, Padding 2 2, Icon "desk.png", ActionOnPress, Action (Mouse 1) All (CurrentPage, !Iconic) Iconify, Action (Mouse 3) `WindowList rectangle 1x1+$left+$bottom +0 +0 NoGeometry, NoCurrentDeskTitle, SelectOnRelease`, Action (Mouse 2) 'All (CurrentPage) Iconify') diff --git a/fvwm/config/applets/kbd.fvwm b/fvwm/config/applets/kbd.fvwm new file mode 100644 index 0000000..5769311 --- /dev/null +++ b/fvwm/config/applets/kbd.fvwm @@ -0,0 +1 @@ +*FvwmPanel: (Id kbd, $[infostore.kbd_sz]x1, Padding 2 2, Swallow(UseOld,NoKill) "XXkb" 'Exec exec xxkb') diff --git a/fvwm/config/applets/leds.fvwm b/fvwm/config/applets/leds.fvwm new file mode 100644 index 0000000..e92b0f9 --- /dev/null +++ b/fvwm/config/applets/leds.fvwm @@ -0,0 +1 @@ +*FvwmPanel: (Id leds, 30x1, Padding 2 2, Swallow(UseOld,NoKill) "XkbLEDPanel" 'Exec exec xkbvleds -watch 3') diff --git a/fvwm/config/applets/mail.fvwm b/fvwm/config/applets/mail.fvwm new file mode 100644 index 0000000..417a0ee --- /dev/null +++ b/fvwm/config/applets/mail.fvwm @@ -0,0 +1,3 @@ +*FvwmPanel: (Id mail, 25x1, Padding 2 2, Icon $[infostore.p_mail], Action (Mouse 1) `Exec $[FVWM_LIBDIR]/mail.sh $[infostore.mailer]`, Action (Mouse 3) `Menu MailMenu rectangle 1x1+$left+$bottom +0 +0`) + +Schedule Periodic $[infostore.mail_time] PipeRead "$[FVWM_LIBDIR]/mail.sh check" diff --git a/fvwm/config/applets/media.fvwm b/fvwm/config/applets/media.fvwm new file mode 100644 index 0000000..e4b7030 --- /dev/null +++ b/fvwm/config/applets/media.fvwm @@ -0,0 +1 @@ +*FvwmPanel: (Id media, 25x1, Padding 2 2, Icon $[infostore.p_media], TipsLabel "$[gt.Manage removable media]", Action (Mouse 1) Exec exec xdg-open /mnt/usb, Action (Mouse 3) `Menu MediaMenu rectangle 1x1+$left+$bottom +0 +0`) diff --git a/fvwm/config/applets/menu.fvwm b/fvwm/config/applets/menu.fvwm new file mode 100644 index 0000000..6750b6b --- /dev/null +++ b/fvwm/config/applets/menu.fvwm @@ -0,0 +1,2 @@ +*FvwmPanel: (Id menu1, 120x1, Padding 2 2, ActiveColorset 3, PressColorset 3, Font $[infostore.mb_fn], Icon "y.png", Center, Title (Side) " $[gt.Applications] ", ActionOnPress, Action (Mouse 1) `Menu Applications rectangle 1x1+$left+$bottom +0 +0`) +*FvwmPanel: (Id menu2, 80x1, Padding 2 2, ActiveColorset 3, PressColorset 3, Font $[infostore.mb_fn], Left, Title " $[gt.Actions] ", ActionOnPress, Action (Mouse 1) `Menu ActionMenu rectangle 1x1+$left+$bottom +0 +0`) diff --git a/fvwm/config/applets/pager.fvwm b/fvwm/config/applets/pager.fvwm new file mode 100644 index 0000000..d19a648 --- /dev/null +++ b/fvwm/config/applets/pager.fvwm @@ -0,0 +1 @@ +*FvwmPanel: (Id pager, 200x1, Padding 2 2, Swallow(UseOld,NoKill) "FvwmPager" 'Module FvwmPager') diff --git a/fvwm/config/applets/qlaunch.fvwm b/fvwm/config/applets/qlaunch.fvwm new file mode 100644 index 0000000..892b525 --- /dev/null +++ b/fvwm/config/applets/qlaunch.fvwm @@ -0,0 +1 @@ +PipeRead "$[FVWM_LIBDIR]/qlaunch.sh" diff --git a/fvwm/config/applets/run.fvwm b/fvwm/config/applets/run.fvwm new file mode 100644 index 0000000..1ef8215 --- /dev/null +++ b/fvwm/config/applets/run.fvwm @@ -0,0 +1 @@ +*FvwmPanel: (Id run, $[infostore.run_sz]x1, Padding 2 2, Action (Mouse 1) `Exec xdotool search --classname YRun windowfocus`, Swallow(UseOld,NoKill) "YRun" 'Exec exec urxvt -name YRun +sb -bg "$[infostore.run_bg]" -fg "$[infostore.run_fg]" -fn "$[infostore.run_fn]" -g 35x1-1500-1500 -dockapp -e rlwrap -c -o -H $[XDG_CACHE_HOME]/ydesk/run.history -S "> " -pRed $[FVWM_LIBDIR]/prun.sh') diff --git a/fvwm/config/applets/shot.fvwm b/fvwm/config/applets/shot.fvwm new file mode 100644 index 0000000..bc439ed --- /dev/null +++ b/fvwm/config/applets/shot.fvwm @@ -0,0 +1 @@ +*FvwmPanel: (Id shot, 25x1, Padding 2 2, Icon "shot.png", TipsLabel "$[gt.Make a screenshot]", Action (Mouse 1) Exec exec $[FVWM_LIBDIR]/shot.sh $[infostore.shot_act], Action (Mouse 3) `Menu ShotMenu rectangle 1x1+$left+$bottom +0 +0`) diff --git a/fvwm/config/applets/sysinfo.fvwm b/fvwm/config/applets/sysinfo.fvwm new file mode 100644 index 0000000..16b7659 --- /dev/null +++ b/fvwm/config/applets/sysinfo.fvwm @@ -0,0 +1 @@ +*FvwmPanel: (Id sysinfo, $[infostore.si_sz]x1, Padding 2 2, Action (Mouse 1) `Exec ysysinfo`, Swallow(UseOld,NoKill) "Conky" 'Exec exec conky -d -q -c $[FVWM_DATADIR]/misc/conky.conf') diff --git a/fvwm/config/applets/taskbar.fvwm b/fvwm/config/applets/taskbar.fvwm new file mode 100644 index 0000000..59bd025 --- /dev/null +++ b/fvwm/config/applets/taskbar.fvwm @@ -0,0 +1 @@ +*FvwmPanel: (Id taskbar, $[infostore.tb_sz]x1, Padding 2 0, Left, Swallow(UseOld,NoKill) "FvwmIconMan" 'Module FvwmIconMan') diff --git a/fvwm/config/applets/tray.fvwm b/fvwm/config/applets/tray.fvwm new file mode 100644 index 0000000..cd39cab --- /dev/null +++ b/fvwm/config/applets/tray.fvwm @@ -0,0 +1 @@ +*FvwmPanel: (Id tray, $[infostore.tray_sz]x1, Padding 5 1, Right, Swallow(UseOld,NoKill) "stalonetray" 'Exec exec stalonetray -c $[FVWM_DATADIR]/misc/trayrc') diff --git a/fvwm/config/applets/volume.fvwm b/fvwm/config/applets/volume.fvwm new file mode 100644 index 0000000..24a035e --- /dev/null +++ b/fvwm/config/applets/volume.fvwm @@ -0,0 +1,3 @@ +*FvwmPanel: (Id volume, 25x1, TipsLabel "$[gt.Sound volume]", Icon "$[infostore.p_vol]", Action (Mouse 1) `Exec exec $[FVWM_LIBDIR]/volume.sh show`, Action (Mouse 3) `Exec exec $[FVWM_LIBDIR]/volume.sh vol`, Action (Mouse 4) `Exec exec $[FVWM_LIBDIR]/volume.sh dec`, Action (Mouse 5) `Exec exec $[FVWM_LIBDIR]/volume.sh inc`) + +PipeRead "$[FVWM_LIBDIR]/volume.sh upd" diff --git a/fvwm/config/applets/wact.fvwm b/fvwm/config/applets/wact.fvwm new file mode 100644 index 0000000..263b902 --- /dev/null +++ b/fvwm/config/applets/wact.fvwm @@ -0,0 +1 @@ +*FvwmPanel: (Id desk, 25x1, Padding 2 2, Icon "winclose.png", ActionOnPress, Action (Mouse 1) Current Close, Action (Mouse 3) `Menu WindowOptionsMenu rectangle 1x1+$left+$bottom +0 +0`) diff --git a/fvwm/config/applets/weather.fvwm b/fvwm/config/applets/weather.fvwm new file mode 100644 index 0000000..0194e58 --- /dev/null +++ b/fvwm/config/applets/weather.fvwm @@ -0,0 +1,3 @@ +*FvwmPanel: (Id wthr, 50x1, Padding 2 2, Icon "$[infostore.p_wthr]", Title (Side) "N/A", Action (Mouse 1) Exec exec $[FVWM_LIBDIR]/weather.sh show) + +Schedule Periodic $[infostore.wthr_time] PipeRead "$[FVWM_LIBDIR]/weather.sh upd" diff --git a/fvwm/config/applets/wifi.fvwm b/fvwm/config/applets/wifi.fvwm new file mode 100644 index 0000000..b59738b --- /dev/null +++ b/fvwm/config/applets/wifi.fvwm @@ -0,0 +1,4 @@ +*FvwmPanel: (Id wifi, 25x1, Padding 2 2, Icon "$[infostore.p_wifi]", Action (Mouse 1) "Exec exec $[FVWM_LIBDIR]/wifi.sh ctrl") + +Schedule Periodic 60000 PipeRead "$[FVWM_LIBDIR]/wifi.sh upd" +PipeRead "$[FVWM_LIBDIR]/wifi.sh upd" diff --git a/fvwm/config/applets/xeyes.fvwm b/fvwm/config/applets/xeyes.fvwm new file mode 100644 index 0000000..e863919 --- /dev/null +++ b/fvwm/config/applets/xeyes.fvwm @@ -0,0 +1 @@ +*FvwmPanel: (Id eyes, 50x1, Padding 3 5, Swallow(UseOld,NoKill) "XEyes" 'Exec exec xeyes') diff --git a/fvwm/config/colors.fvwm b/fvwm/config/colors.fvwm new file mode 100644 index 0000000..6b77fc0 --- /dev/null +++ b/fvwm/config/colors.fvwm @@ -0,0 +1,25 @@ +# Main colorsets (1 - base, 2 - light, 3 - select) +Colorset 1 fg #c0c0c0, bg #000000, hi #000000, sh #000000, VGradient 128 1 #44484a 50 #303030 +Colorset 2 fg #c0c0c0, bg #000000, hi #000000, sh #000000, VGradient 128 1 #707070 50 #404040 +Colorset 3 fg #f0f0f0, bg #000000, hi #000000, sh #000000, VGradient 128 1 #07215b 50 #0e224d + +# Menu title +Colorset 4 fg #a0a0e0, VGradient 128 1 #44484a 50 #303030 + +# Highlight taskbar +Colorset 5 fg #c0c0c0, bg #000000, hi #000000, VGradient 128 1 #808080 50 #696969 + +# Tooltip +Colorset 6 fg #000000, bg #9d9c43, VGradient 128 1 #9d9c43 50 #9d9a41 + +# Pager colorsets +Colorset 7 fg #808080, bg #606060 +Colorset 8 fg #ffffff, bg #30536f +Colorset 9 fg #000000, bg #a0a0a0 +Colorset 10 fg #ffffe0, bg #628cb2 + +# Ident colorset +Colorset 11 fg #dbdbdb, bg #07536d + +# Clock applet colorset +Colorset 12 fg $[infostore.clock_fg], VGradient 128 1 #44484a 50 #303030 diff --git a/fvwm/config/decor.fvwm b/fvwm/config/decor.fvwm new file mode 100644 index 0000000..92602e9 --- /dev/null +++ b/fvwm/config/decor.fvwm @@ -0,0 +1,34 @@ +# -*- mode: fvwm -*- + +AddToDecor SimpleDecor ++ TitleStyle LeftJustified Height 16 ++ TitleStyle ActiveUp VGradient 128 #658748 #5d6e43 -- Flat ++ TitleStyle ActiveDown VGradient 128 #5d6e43 #658748 -- Flat ++ TitleStyle Inactive VGradient 128 #606060 #404040 -- Flat ++ ButtonStyle 1 Vector 6 35x25@3 65x25@3 35x45@4 65x45@3 35x65@4 65x65@3 -- Flat UseTitleStyle ++ ButtonStyle 2 Vector 4 35x35@3 65x65@3 65x35@4 35x65@3 -- Flat UseTitleStyle ++ ButtonStyle 4 Vector 3 35x60@3 50x40@3 70x60@3 -- Flat UseTitleStyle ++ ButtonStyle 6 Vector 3 35x40@3 50x60@3 70x40@3 -- Flat UseTitleStyle ++ ButtonStyle 1 - Clear MwmDecorMenu ++ ButtonStyle 2 - Clear ++ ButtonStyle 4 - Clear MwmDecorMax ++ ButtonStyle 6 - Clear MwmDecorMin ++ BorderStyle Inactive Solid #606060 -- HiddenHandles NoInset ++ BorderStyle Active Solid #788661 -- HiddenHandles NoInset + +Style SimpleStyle \ + UseDecor SimpleDecor, \ + BorderWidth 4, HandleWidth 4, BorderUnderTitle, \ + Font $[infostore.wfn], \ + ForeColor "#f0f0f0", BackColor "#707070", \ + HilightFore "#f0f0f0", HilightBack "#90a96a" + +Style * UseStyle SimpleStyle + +Style yrun !Button 3, !Button 4 +Style ylogout !Button 3, !Button 4 +Style FvwmIdent !Button 3, !Button 4, MiniIcon info.png +Style xdemineur MiniIcon xdemineur.png +Style URxvt MiniIcon term.png +Style YPs MiniIcon sysmon.png +Style YMixer MiniIcon mixer.png diff --git a/fvwm/config/functions.fvwm b/fvwm/config/functions.fvwm new file mode 100644 index 0000000..3dbf02b --- /dev/null +++ b/fvwm/config/functions.fvwm @@ -0,0 +1,85 @@ +DestroyFunc ResizeOrRaiseOrLowerFunc +AddToFunc ResizeOrRaiseOrLowerFunc ++ C Raise ++ M Resize ++ D Lower + +DestroyFunc MoveOrRaiseOrLowerFunc +AddToFunc MoveOrRaiseOrLowerFunc ++ I Raise ++ I Current (!Raised) Raise ++ M Move ++ D Maximize 100 100 + +DestroyFunc RaiseFocus +AddToFunc RaiseFocus ++ I Focus ++ I Raise + +# don't intercept focus +DestroyFunc UrgencyFunc +AddToFunc UrgencyFunc ++ I Nop + +# maximize window without title +DestroyFunc MaximizeNoTitle +AddToFunc MaximizeNoTitle ++ I WindowStyle !Title ++ I UpdateStyles ++ I Maximize screen c 100 100 ++ I Move screen c 50-50w 50-50w + +DestroyFunc RestoreWithTitle +AddToFunc RestoreWithTitle ++ I WindowStyle Title ++ I UpdateStyles ++ I Maximize off + +DestroyFunc ToggleMaximized +AddToFunc ToggleMaximized ++ I ThisWindow (!Maximized) MaximizeNoTitle ++ I TestRc (NoMatch) RestoreWithTitle + +# make window fullscreen +DestroyFunc MaximizeFullscreen +AddToFunc MaximizeFullscreen ++ I WindowStyle StaysOnTop ++ I UpdateStyles ++ I Maximize fullscreen ++ I Exec exec xset s off s noblank -dpms + +DestroyFunc RestoreFullscreen +AddToFunc RestoreFullscreen ++ I WindowStyle StaysPut ++ I UpdateStyles ++ I Maximize off ++ I Raise ++ I Exec exec xset s default +dpms + +DestroyFunc ToggleFullscreen +AddToFunc ToggleFullscreen ++ I ThisWindow (!Maximized) MaximizeFullscreen ++ I TestRc (NoMatch) RestoreFullscreen + +DestroyFunc CurrentPageFocusFunc +AddToFunc CurrentPageFocusFunc ++ I Next (CurrentPage, State 2) Focus ++ I None (CurrentPage, Focused) Prev (CurrentPage, !Iconified, !Sticky) Focus + +DestroyFunc MarkWindowAsActiveFunc +AddToFunc MarkWindowAsActiveFunc ++ I Current (!Iconified) All (CurrentPage, !Focused) State 2 False ++ I Current (!Iconified) State 2 True + +DestroyFunc StartFunction +AddToFunc StartFunction ++ I Exec exec $[FVWM_LIBDIR]/icons.sh ++ I Module FvwmMFL ++ I Module FvwmAnimate ++ I Module FvwmEvent ++ I Module FvwmButtons FvwmPanel ++ I Schedule Periodic 500 Exec exec $[FVWM_LIBDIR]/clipman.sh update + +DestroyFunc InitFunction +AddToFunc InitFunction +PipeRead "$[FVWM_LIBDIR]/ymenu.py autostart" diff --git a/fvwm/config/keys.fvwm b/fvwm/config/keys.fvwm new file mode 100644 index 0000000..cdcb9a6 --- /dev/null +++ b/fvwm/config/keys.fvwm @@ -0,0 +1,93 @@ +## menus +Mouse 1 R A Menu MainMenu mouse -1p -1p +Mouse 3 R A WindowList mouse -1p -1p NoGeometry +Mouse 3 R C WindowList mouse -1p -1p NoGeometry OnlyListSkip +Mouse 2 R A Menu Window mouse -1p -1p + +## window frame and side +Mouse 1 F A Function ResizeOrRaiseOrLowerFunc +Mouse 3 F A RaiseLower + +Mouse 1 S A Function ResizeOrRaiseOrLowerFunc +Mouse 3 S A RaiseLower + +## title bar + 2 decoration buttons +Mouse 1 T A Function MoveOrRaiseOrLowerFunc +Mouse 2 T A RaiseLower +Mouse 3 T A WindowShade + +## window title buttons +Mouse 1 1 A Popup WindowOptionsMenu +Mouse 1 1 C Module FvwmIdent +Mouse 3 1 A Stick + +Mouse 1 6 A Iconify on +Mouse 1 4 A Maximize +Mouse 1 4 C Maximize 100 0 +Mouse 1 4 M Maximize 0 100 +Mouse 1 2 A Close +Mouse 3 2 A Exec exec xkill -id $[w.id] + +## Move or resize windows +Mouse 1 W M Move +Mouse 3 W M Resize + +# Scroll pages on mouse wheel +Mouse 4 R A GotoPage wrapx wrapy +1p +0p +Mouse 5 R A GotoPage wrapx wrapy -1p -0p + +## Keys defs +Key Tab A M WindowList Root c c CurrentDesk, NoGeometry, CurrentAtEnd, IconifiedAtEnd + +Key Left A CM GotoPage wrapx wrapy -1p -0p +Key Right A CM GotoPage wrapx wrapy +1p +0p + +Key Left WTSF CS Move w-1 keep +Key Right WTSF CS Move w+1 keep +Key Up WTSF CS Move keep w-1 +Key Down WTSF CS Move keep w+1 + +Key Left WTSF MS Resize w-1c keep +Key Right WTSF MS Resize w+1c keep +Key Up WTSF MS Resize keep w-1c +Key Down WTSF MS Resize keep w+1c + +Key F4 WTSF M Close +Key F4 WTSF C ToggleMaximized +Key F4 WTSF CS Minimize + +Key F11 WTSF C ToggleFullscreen + +Key 1 WTSF CM MoveToPage 0 0 +Key 2 WTSF CM MoveToPage 1 0 +Key 3 WTSF CM MoveToPage 2 0 +Key 4 WTSF CM MoveToPage 3 0 +Key 5 WTSF CM MoveToPage 4 0 + +Key XF86MonBrightnessUp A A Exec exec xbacklight +10 +Key XF86MonBrightnessDown A A Exec exec xbacklight -10 + +Key XF86AudioLowerVolume A A Exec exec $[FVWM_LIBDIR]/volume.sh dec +Key XF86AudioRaiseVolume A A Exec exec $[FVWM_LIBDIR]/volume.sh inc +Key XF86AudioMute A A Exec exec $[FVWM_LIBDIR]/volume.sh mute + +Key Print A A Exec exec $[FVWM_LIBDIR]/shot.sh root + +Key Super_L A A Menu MainMenu Root c c +Key H A CM Menu ClipboardMenu Root c c + +Key D A CM Exec exec $[FVWM_LIBDIR]/clipman.sh trans +Key L A CM Exec exec $[infostore.lock] + +Key Delete A CM Menu ExitMenu Root c c +Key Escape A CM Exec exec xkill + +Key F2 A M Exec exec xdotool search --classname YRun windowfocus +Key R A CM Exec exec xdotool search --classname YRun windowfocus + +Key T A CM Exec exec $[infostore.term] +Key F A CM Exec exec $[infostore.fm] +Key E A CM Exec exec $[infostore.editor] +Key B A CM Exec exec $[infostore.browser] +Key M A CM Exec exec $[FVWM_LIBDIR]/mail.sh $[infostore.mailer] +Key P A CM Exec exec yps diff --git a/fvwm/config/main.fvwm b/fvwm/config/main.fvwm new file mode 100644 index 0000000..1d66f85 --- /dev/null +++ b/fvwm/config/main.fvwm @@ -0,0 +1,40 @@ +ImagePath +:$[FVWM_CACHEDIR]/icons:$[FVWM_DATADIR]/images:$[XDG_DATA_HOME]/ydesk/images:/usr/share/pixmaps +LocalePath ;ydesk:+ + +PipeRead $[FVWM_LIBDIR]/infostore.sh + +HideGeometryWindow + +Emulate Win + +SetAnimation 10 + +OpaqueMoveSize 0 + +EdgeScroll 0 0 +EdgeResistance 500 +EdgeThickness 1 + +IgnoreModifiers L25 + +DesktopSize $[infostore.ndesk]x1 +DesktopName 0 "Y Desktop" +EwmhNumberOfDesktops 1 + +CursorStyle ROOT left_ptr +CursorStyle TITLE left_ptr +CursorStyle DEFAULT left_ptr +CursorStyle SYS left_ptr +CursorStyle MENU left_ptr + +BusyCursor DynamicMenu True, Read True + +Style * EdgeMoveDelay 500 +Style * EdgeMoveResistance 15 +Style * ResizeOutline +Style * WindowShadeSteps 10 +Style * ClickToFocus, MouseFocusClickRaises, GrabFocus +Style * MwmDecor, MwmFunctions +Style * CascadePlacement, UsePPosition +Style * HintOverride, !Icon, DecorateTransient +Style * MiniIcon default.png diff --git a/fvwm/config/menus.fvwm b/fvwm/config/menus.fvwm new file mode 100644 index 0000000..f08b392 --- /dev/null +++ b/fvwm/config/menus.fvwm @@ -0,0 +1,89 @@ +# -*- mode: fvwm -*- + +#------------------------------------------------------------------------------- +#- menus +#------------------------------------------------------------------------------- + +Style fvwm_menu NoButton 1, NoButton 3, NoButton 4, NoButton 6, !Borders, Sticky, WindowListSkip + +MenuStyle * Win, TitleUnderlines2, SeparatorsShort, Animation, TrianglesUseFore +MenuStyle * BorderWidth 1, FlatSeparators +MenuStyle * Font $[infostore.fn], TitleFont $[infostore.tfn] +MenuStyle * MenuColorset 1, ActiveColorset 3, TitleColorset 4 +MenuStyle * ItemFormat "%.4s%.1| %.5i%.5l %.5l %.5r %.5i %2.3> %.1|" +MenuStyle * VerticalItemSpacing 4 4, VerticalTitleSpacing 5 5 + +CopyMenuStyle * WindowMenu + +PipeRead "$[FVWM_LIBDIR]/ymenu.py applications" + +PipeRead "$[FVWM_LIBDIR]/ymenu.py settings" + +DestroyMenu WindowOptionsMenu +AddToMenu WindowOptionsMenu ++ "%min.png%$[gt.Iconify]" Iconify ++ "%max.png%$[gt.Maximize]" Maximize 100 100 ++ "$[gt.Move]" Move ++ "$[gt.Resize]" Resize ++ "$[gt.Shade]" WindowShade ++ "$[gt.Stick]" Stick ++ "" Nop ++ "%close.png%$[gt.Close]" Close ++ "" Nop ++ "%info.png%$[gt.Indent]" Module FvwmIdent + +DestroyMenu MainMenu +AddToMenu MainMenu@side.png@^#0F5983^ ++ "$[gt.Main menu]" Title +PipeRead "$[FVWM_LIBDIR]/ymenu.py qlaunch" ++ "" Nop +PipeRead "$[FVWM_LIBDIR]/ymenu.py -t applications" ++ "" Nop ++ "$[gt.Recent]%recent.png%" Popup RecentMenu ++ "$[gt.Search]...%search.png%" Exec exec yfind ++ "$[gt.Run]...%run.png%" Exec exec yrun ++ "" Nop ++ "$[gt.Shutdown]...%shutdown.png%" Popup ExitMenu + +DestroyMenu ExitMenu +AddToMenu ExitMenu ++ "$[gt.Power Off]" Exec exec /sbin/poweroff ++ "$[gt.Reboot]" Exec exec /sbin/reboot ++ "$[gt.Suspend]" Exec exec /sbin/hibernate disk ++ "$[gt.Logout]" Quit + +DestroyMenu ActionMenu +AddToMenu ActionMenu ++ "$[gt.Settings]%settings.png%" Popup SettingsMenu ++ "$[gt.Recent]%recent.png%" Popup RecentMenu ++ "$[gt.Media]%media.png%" Popup MediaMenu ++ "" Nop ++ "$[gt.Process viewer]%sysmon.png%" Exec exec $[FVWM_LIBDIR]/ps.sh ++ "" Nop ++ "$[gt.Screenshot]%shot.png%" Popup ShotMenu ++ "" Nop ++ "$[gt.Search]...%search.png%" Exec exec yfind ++ "$[gt.Run]...%run.png%" Exec exec yrun ++ "" Nop ++ "$[gt.FVWM console]...%term.png%" Module FvwmConsole -bg #3b003b ++ "$[gt.Update icons]" Exec exec $[FVWM_LIBDIR]/icons.sh -f ++ "" Nop ++ "$[gt.Lock screen]%lock.png%" Exec exec $[infostore.lock] ++ "$[gt.Restart FVWM]%restart.png%" Restart ++ "$[gt.Shutdown]%shutdown.png%" Popup ExitMenu + +AddToMenu RecentMenu DynamicPopupAction PipeRead "$[FVWM_LIBDIR]/ymenu.py recent" + +AddToMenu ClipboardMenu DynamicPopupAction PipeRead "$[FVWM_LIBDIR]/clipman.sh menu" + +AddToMenu MediaMenu DynamicPopupAction PipeRead "$[FVWM_LIBDIR]/media.sh menu" + +DestroyMenu ShotMenu +AddToMenu ShotMenu ++ "$[gt.Whole screen]" Exec exec $[FVWM_LIBDIR]/shot.sh root ++ "$[gt.Window/Region]" Exec exec $[FVWM_LIBDIR]/shot.sh reg + +DestroyMenu MailMenu +AddToMenu MailMenu ++ "$[gt.Check mail]" Exec exec $[FVWM_LIBDIR]/mail.sh check ++ "$[gt.Configuration]" Exec exec $[FVWM_LIBDIR]/mail.sh cfg diff --git a/fvwm/config/modules.fvwm b/fvwm/config/modules.fvwm new file mode 100644 index 0000000..c5548f6 --- /dev/null +++ b/fvwm/config/modules.fvwm @@ -0,0 +1,96 @@ + +### Events +DestroyModuleConfig FvwmEvent: * + +*FvwmEvent: new_page CurrentPageFocusFunc +*FvwmEvent: destroy_window CurrentPageFocusFunc +*FvwmEvent: focus_change MarkWindowAsActiveFunc + +#*FvwmEvent: Cmd Function + +### Ident +DestroyModuleConfig FvwmIdent: * + +*FvwmIdent: Colorset 11 +*FvwmIdent: Font $[infostore.fn] + +Style FvwmIdent NoButton 3, NoButton 4 + +### Pager +DestroyModuleConfig FvwmPager: * + +*FvwmPager: Label * "Pager" +*FvwmPager: Geometry 64x25 +*FvwmPager: Font none +*FvwmPager: SolidSeparators +*FvwmPager: UseSkipList +*FvwmPager: MiniIcons + +*FvwmPager: Colorset * 7 +*FvwmPager: HilightColorset * 8 +*FvwmPager: WindowColorsets 9 10 + +*FvwmPager: Balloons All +*FvwmPager: BalloonFont $[infostore.bfn] +*FvwmPager: BallonStringFormat "%i" +*FvwmPager: BalloonYOffset +2 +*FvwmPager: BalloonBorderWidth 0 +*FvwmPager: BalloonColorset * 6 + +### Taskbar +DestroyModuleConfig FvwmIconMan: * + +*FvwmIconMan: DrawIcons always +*FvwmIconMan: ManagerGeometry 0x1 +*FvwmIconMan: ButtonGeometry 150x23 +*FvwmIconMan: Font $[infostore.fn] +*FvwmIconMan: Format "%i" +*FvwmIconMan: ReliefThickness 1 +*FvwmIconMan: UseWinList true +*FvwmIconMan: Padding 1 +*FvwmIconMan: RoundedCorners true +*FvwmIconMan: Title "" + +*FvwmIconMan: SelectButton up +*FvwmIconMan: FocusAndSelectButton up +*FvwmIconMan: IconButton up +*FvwmIconMan: TitleButton flat + +*FvwmIconMan: Colorset 1 +*FvwmIconMan: TitleColorset 1 +*FvwmIconMan: IconColorset 2 +*FvwmIconMan: FocusColorset 5 +*FvwmIconMan: FocusAndSelectColorset 5 +*FvwmIconMan: SelectColorset 2 + +*FvwmIconMan: Tips always +*FvwmIconMan: TipsFont $[infostore.bfn] +*FvwmIconMan: TipsFormat "%i" +*FvwmIconMan: TipsBorderWidth 0 +*FvwmIconMan: TipsColorset 6 + +*FvwmIconMan: Action Mouse 1 N sendcommand "RaiseFocus" +*FvwmIconMan: Action Mouse 2 N sendcommand "Iconify" +*FvwmIconMan: Action Mouse 3 N sendcommand "Popup WindowOptionsMenu" + +### Panel +DestroyModuleConfig FvwmPanel: * + +*FvwmPanel: Colorset 1 +*FvwmPanel: Font $[infostore.fn] +*FvwmPanel: Frame 0 +*FvwmPanel: Rows 1 +*FvwmPanel: Columns $[vp.width] +*FvwmPanel: Geometry $[vp.width]x27+0+0 + +*FvwmPanel: UseTips +*FvwmPanel: TipsFont $[infostore.bfn] +*FvwmPanel: TipsColorset 6 +*FvwmPanel: TipsBorderWidth 0 +*FvwmPanel: TipsDelay 1 + +Style FvwmPanel* NoTitle, !Borders, NoHandles, Sticky, WindowListSkip, NeverFocus, !Closable, !Iconifiable, !Maximizable + +*FvwmPanel: (2x1) +PipeRead $[FVWM_LIBDIR]/panel.sh +*FvwmPanel: (2x1) diff --git a/fvwm/cpu.c b/fvwm/cpu.c new file mode 100644 index 0000000..74c3d56 --- /dev/null +++ b/fvwm/cpu.c @@ -0,0 +1,336 @@ +/* + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include + +#include +#include + +#define WIDTH 50 +#define HEIGHT 20 + +typedef struct { + guint64 u, n, s, i; /* User, nice, system, idle */ +} cpu_stat_t; + +typedef struct { + GtkWidget *ev; + GtkWidget *da; + cairo_surface_t *pixmap; + + GString *tip; + + cpu_stat_t st; + + float *stats; + gint s_cur; + + GdkRGBA fore; + GdkRGBA back; + + gint n_cpu; + guint width; + guint height; + + gboolean mem; +} cpu_data_t; + +/* draw chart */ +static void +cpu_redraw_pixmap (cpu_data_t *cp) +{ + gint i, si = cp->s_cur; + cairo_t *cr = cairo_create (cp->pixmap); + + cairo_set_line_width (cr, 1.0); + + /* Erase pixmap. */ + cairo_rectangle (cr, 0, 0, cp->width, cp->height); + gdk_cairo_set_source_rgba (cr, &cp->back); + cairo_fill (cr); + + /* Recompute pixmap. */ + gdk_cairo_set_source_rgba (cr, &cp->fore); + for (i = 0; i < cp->width; i++) + { + /* Draw one bar of the CPU usage graph. */ + if (cp->stats[si] != 0.0) + { + cairo_move_to (cr, (gdouble) i, (gdouble) cp->height); + cairo_line_to (cr, (gdouble) i, (gdouble) cp->height - cp->stats[si] * cp->height); + cairo_stroke (cr); + } + + si--; + if (si < 0) + si = cp->width - 1; + } + + /* Redraw pixmap. */ + gtk_widget_queue_draw(cp->da); +} + +static void +get_mem_usage (GString *tip) +{ + FILE *stat; + + /* get memory usage */ + if ((stat = fopen ("/proc/meminfo", "r")) != NULL) + { + guint64 mem_total = 0; + guint64 mem_free = 0; + guint64 mem_cached = 0; + guint64 mem_buffered = 0; + + guint64 swap_total = 0; + guint64 swap_free = 0; + + gchar *su, *st, buf[1024]; + + gint reach = 0; + + while (fgets (buf, 100, stat) != NULL) + { + if (!strncmp (buf, "MemTotal:", 9)) + mem_total = atoi (buf + 10), reach++; + else if (!strncmp (buf, "MemFree:", 8)) + mem_free = atoi (buf + 9), reach++; + else if (!strncmp (buf, "Cached:", 7)) + mem_cached += atoi (buf + 8), reach++; + else if (!strncmp (buf, "SReclaimable:", 13)) + mem_cached += atoi (buf + 14), reach++; + else if (!strncmp (buf, "Bufs:", 8)) + mem_buffered = atoi (buf + 9), reach++; + else if (!strncmp (buf, "SwapTotal:", 10)) + swap_total = atoi (buf + 11), reach++; + else if (!strncmp (buf, "SwapFree:", 9)) + swap_free = atoi (buf + 10), reach++; + if (reach == 7) + break; + } + fclose (stat); + + /* append to tip string */ + su = g_format_size ((mem_total - mem_free - mem_cached -mem_buffered) * 1024); + st = g_format_size (mem_total * 1024); + g_string_append_printf (tip, _("\nMemory usage: %s / %s"), su, st); + g_free (st); + g_free (su); + + su = g_format_size ((swap_total - swap_free) * 1024); + st = g_format_size (swap_total * 1024); + g_string_append_printf (tip, _("\nSwap usage: %s / %s"), su, st); + g_free (st); + g_free (su); + } +} + +static volatile gboolean update_lock = FALSE; + +/* Periodic timer callback. */ +static gboolean +cpu_update (cpu_data_t *cp) +{ + if (update_lock) + return TRUE; + + update_lock = TRUE; + + if ((cp->stats != NULL) && (cp->pixmap != NULL)) + { + /* Open statistics file and scan out CPU usage. */ + cpu_stat_t cpu; + FILE *stat; + gchar *tmpl, buf[4096]; + gint offset, res = 0; + + if ((stat = fopen ("/proc/stat", "r")) == NULL) + return TRUE; + + if (cp->n_cpu == -1) + tmpl = g_strdup ("cpu "); + else + tmpl = g_strdup_printf ("cpu%d ", cp->n_cpu); + offset = strlen (tmpl); + + while (!feof (stat)) + { + fgets (buf, 4096, stat); + if (strncmp (buf, tmpl, offset) == 0) + { + res = sscanf (buf + offset, "%llu %llu %llu %llu", &cpu.u, &cpu.n, &cpu.s, &cpu.i); + break; + } + } + fclose(stat); + + g_free (tmpl); + + /* Ensure that fscanf succeeded. */ + if (res == 4) + { + /* Compute delta from previous statistics. */ + cpu_stat_t cpu_delta; + float cpu_uns; + + cpu_delta.u = cpu.u - cp->st.u; + cpu_delta.n = cpu.n - cp->st.n; + cpu_delta.s = cpu.s - cp->st.s; + cpu_delta.i = cpu.i - cp->st.i; + + /* Copy current to previous. */ + memcpy (&cp->st, &cpu, sizeof (cpu_stat_t)); + + /* Compute user+nice+system as a fraction of total. + * Introduce this sample to ring buffer, increment and wrap ring buffer cursor. */ + cpu_uns = cpu_delta.u + cpu_delta.n + cpu_delta.s; + + cp->s_cur++; + if (cp->s_cur >= cp->width) + cp->s_cur = 0; + cp->stats[cp->s_cur] = cpu_uns / (cpu_uns + cpu_delta.i); + + cpu_redraw_pixmap (cp); + + /* set tooltip */ + if (cp->n_cpu == -1) + g_string_printf (cp->tip, _("CPU Load - %d%%"), (gint) (cp->stats[cp->s_cur] * 100)); + else + g_string_printf (cp->tip, _("CPU%d Load - %d%%"), cp->n_cpu, (gint) (cp->stats[cp->s_cur] * 100)); + + if (cp->mem) + get_mem_usage (cp->tip); + + gtk_widget_set_tooltip_markup (cp->ev, cp->tip->str); + } + } + + update_lock = FALSE; + + return TRUE; +} + +static gboolean +cpu_cfg_cb (GtkWidget *w, GdkEventConfigure *ev, cpu_data_t *cp) +{ + GtkAllocation al; + + gtk_widget_get_allocation (w, &al); + + /* Allocate or reallocate pixmap. */ + cp->height = MAX (al.height, HEIGHT); + cp->width = MAX (al.width, WIDTH); + + cp->stats = g_renew (float, cp->stats, cp->width); + bzero (cp->stats, cp->width); + cp->s_cur = cp->width; + + if (cp->pixmap) + cairo_surface_destroy (cp->pixmap); + cp->pixmap = cairo_image_surface_create (CAIRO_FORMAT_RGB24, cp->width, cp->height); + + /* Redraw pixmap at the new size. */ + cpu_redraw_pixmap (cp); + + return TRUE; +} + +static gboolean +cpu_draw_cb (GtkWidget *w, cairo_t *cr, cpu_data_t *cp) +{ + if (cp->pixmap) + { + cairo_set_source_rgb (cr, 0, 0, 0); + cairo_set_source_surface (cr, cp->pixmap, 0, 0); + cairo_paint (cr); + } + + return FALSE; +} + +int +main (int argc, char *argv[]) +{ + cpu_data_t *cp; + GtkWidget *win; + + gint n_cpu = -1; + guint width = WIDTH; + guint period; + + GSettings *settings; + + GOptionEntry opts[] = { + { "width", 'w', 0, G_OPTION_ARG_INT, &width, N_("Set window width"), N_("WIDTH") }, + { "cpu", 'c', 0, G_OPTION_ARG_INT, &n_cpu, N_("Set CPU number"), N_("NUM") }, + { NULL } + }; + +#ifdef ENABLE_NLS + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); +#endif + + gtk_init_with_args (&argc, &argv, _("- CPU load monitor"), opts, GETTEXT_PACKAGE, NULL); + + settings = g_settings_new ("ydesk.cpu"); + + /* set defaults */ + cp = g_new0 (cpu_data_t, 1); + cp->width = width; + cp->n_cpu = n_cpu; + cp->tip = g_string_new (NULL); + + cp->mem = g_settings_get_boolean (settings, "mem"); + + gdk_rgba_parse (&cp->fore, g_settings_get_string (settings, "fg")); + gdk_rgba_parse (&cp->back, g_settings_get_string (settings, "bg")); + + cp->stats = g_new0 (float, cp->width); + + win = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (win), "YCPU"); + + cp->ev = gtk_event_box_new (); + gtk_container_add (GTK_CONTAINER (win), cp->ev); + + cp->da = gtk_drawing_area_new (); + gtk_widget_set_size_request (cp->da, cp->width, HEIGHT); + gtk_container_add (GTK_CONTAINER (cp->ev), cp->da); + + g_signal_connect (G_OBJECT (win), "delete-event", G_CALLBACK (gtk_main_quit), NULL); + g_signal_connect (G_OBJECT (cp->da), "configure-event", G_CALLBACK (cpu_cfg_cb), cp); + g_signal_connect (G_OBJECT (cp->da), "draw", G_CALLBACK (cpu_draw_cb), cp); + + gtk_widget_show_all (win); + cpu_update (cp); + + period = g_settings_get_int (settings, "period"); + g_timeout_add (period, (GSourceFunc) cpu_update, (gpointer) cp); + + gtk_main (); + + return 0; +} diff --git a/fvwm/images/check.png b/fvwm/images/check.png new file mode 100644 index 0000000000000000000000000000000000000000..b4ad94cd2506efd491137b328c22449a983cc3d4 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)ryMssJJTg@PN0x%W=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6c6-taSX9Iotz-?sX=h&=l}ofADI{`Z84mhZf literal 0 HcmV?d00001 diff --git a/fvwm/images/close.png b/fvwm/images/close.png new file mode 100644 index 0000000000000000000000000000000000000000..429401cb7ba316e6286cafd58ac0de20c8e0c603 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPmhmeSlXs-b4I-rnjiEBiObAE1aYF-J0b5UwyNotBh zd1gt5LP$ocg1e`0!21-{JfK1cPZ!4!i_^&o5@iqUMTB+Fx40`BCh_#Jh!{N*JeQL70(Y)*K0-AbW|YuPgfv4q;(tdG!FEUVgff3~@?k&P772{-wF_J{3%I<2$lx!=CEZToD0hM20KTW^O;z58yJ`j%l? zvwhlRz5DsREFOod`&A|g9GbLi>ekGE&(3@{W>sTu6gZ*WQX->QEi^|c;)cMcuP$a2 z61h$#y_?P{qRPhoQO3OOmtLc+bTXS}W~P2x8{~ kuKnv(J(#ukiDeFVdQ&MBb@0JvF#9RL6T literal 0 HcmV?d00001 diff --git a/fvwm/images/max.png b/fvwm/images/max.png new file mode 100644 index 0000000000000000000000000000000000000000..6f1084058e214f21884b4e307f0b7b0e52bb6ce3 GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G^tAk28_ZrvZCAbW|YuPgf{R(U=)*_iBAoJz5nNj)cQ=> z)sVy-ae-CNc31m5T@eNKlSHhw>3V9@ZW#e|1}LHItKXd7FSE>Jszr>mdKI;Vst E0OCI|fdBvi literal 0 HcmV?d00001 diff --git a/fvwm/images/min.png b/fvwm/images/min.png new file mode 100644 index 0000000000000000000000000000000000000000..a22e3c45b0fa870ce093aff2726a7ab9f97360b9 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G^tAk28_ZrvZCAbW|YuPgf{R(U=)?iuTPEP+CDo-U3d6?2jkBv=wJoCTbB;$e) zzyZu*%nc0~LNFn8I6{-ALr5nBQ_{(lHZ-M~NhT#FAt@oHgmx%b!_kCIZ`% z5Bbtz$vQ1t@};AHJo{mcE$bm8I6|BuuX$)4q%}v^OYw{G&3z>AKQ>2Dt`AqQu$btc7gKE80byUzyzMu+>h zruDVL?6+3t%}kMyHuh9mH2}yl&QRg;TaN*NMx&C3!&nT5r~40^3sc2UJtgC_0YKei zA?>>@1z7;VW5%4_vq9Z#Zn8Lgeg49!$#%E*_oquE3}bvvog|t%Nrb=l`TPf7Evz-! zH3n;)$*wipI=sF377~Ik?%%jjA>k*-bE#BH=r5bH>(JQRy?f#s08mjhMa)x3F=Ya# zkYecx{MeZ2$aB^g2xyHqt}}d90uLx?HL;`no9Y4=bB8pkdXNOfg{(yKX~chXr(1o3D~hHXJu~M zGf|2nImu!UgI=m>B^|~~vXb$-biQ1Bv9hj4Z^h*s=Vs<6Cy+i08J`0H+YWtOJqR>K zCOEKpaiW0z^6V)ObtZD!`TPL@Xf!(sNtNEZ``Bdw$et`BZLHDJ0RTUq@l4gznH>PY zkBuP>ceA<$0QMHm*;|yK9M7eqCN1ahy@usG z3W_Qu*z@xF8HrpbJzTh=naT{AAbRwY`RQvbO80LK*Vx|_F8~04Ab>xvpOsPHX0JCp zy1M)DG7||$A!6da_4Du-W@l%;*@5$wKp+?{oVvxFD&{kyXv5?pZk&i4HxQCt-QmK$ z^6?n}kYlV%zuE)lv_;5h&gvKgsjeu{`E;jx;m z&Xad)NQZGjW>R%)yQRZ3K4kWTR|;e4Q6p}}#YB;YW727#ZeRZVCzVqEsdru?4d?d< zWCHewn-`-9LI_vSR2+Y6orKRO4Y&VvDFDn-%HLjlbo>_i;>St z%vUB3oJk-60N%d-6Su1H3y3HXW5Bh$JVFk0#B#uhqT%JB&*y6}IoE&mkFntje*G6N zldh0r3W-1^#nL5MqJT|QmjPNurK;qDaE*0(ddg}IWwi$UkxrweCt&FkOew__QbC%S zA7P;2tEb5M!wq%M<|d0z@7|D_z`Lq$ z1OSx`TalY4U@=;(uF>dXDD7UHu85`6?Cx#=cp+W-`Hqzo3JL)C>Wx4B?EHwa5-MkL zPI$4R4rij2!A>+URr1m-CFv3%;>7|$Lz{z1r)4LJ0YGoao!QluC}0=mDT!wINwdZ3_5c7QI*L3;snaJ4*uN~w#~&@O zE}g~6iirjQZ*L!IW52rgsMGtDEFHU{1^|VG4*)ugi?ntoN9X#FPHoK3Wyda zYXM+MRtf;zt<^`86?&Wdz}Y)PCCwJst(ul^%WFyBvjb60X(O%bPCw&xK3#JXl!qPo2fNda(DYYH0_6oKaf5P}=qO`2b+p0IS{Y1%M<0c^1%O z?Erw4IcdYX0|1D5j!cei?6oIN8FJy?wQ~s42>`g&qa|4=xNk}yZhdPNIp9piMMY91x)XiqnVLV$Q1Ay`dBf&v0R@T4s^<^G2 z=F-Ck@*{i%1%Sm^vu`PjggdqYJK~IdSjB1 zE8;#KaF#r3c>i>1zd!JUN^qI{)% z+~DwuLUI0-aq}I8g1)cQ>HW1^_x!;O$+7b@yvW1{fi zP9_OC`AYfC>SoUX3PWCE2;K=7!r;D%y7XfS?xrGgkU5YsjlsaZfE z5d3#l^PjI)JZWuzez&u`?|!{8T)1-&v`4O1HnqDVNHS#NPhbBlaQ^{*T##@f<}gtJ O0000|k literal 0 HcmV?d00001 diff --git a/fvwm/scripts/battery.sh b/fvwm/scripts/battery.sh new file mode 100644 index 0000000..1be8a9c --- /dev/null +++ b/fvwm/scripts/battery.sh @@ -0,0 +1,52 @@ +#! /bin/bash +# Battery applet engine + +[[ -d /sys/class/power_supply ]] || exit 1 + +eval BAT=$(gsettings get ydesk.applets bat_dev) +eval AC=$(gsettings get ydesk.applets bat_ac) + +AC_STATE=$(< /sys/class/power_supply/$AC/online) + +BAT_FULL=$(< /sys/class/power_supply/$BAT/energy_full) +BAT_NOW=$(< /sys/class/power_supply/$BAT/energy_now) +BAT_STATE=$(< /sys/class/power_supply/$BAT/status) + +BAT_PERCENT=$(echo $BAT_NOW.0 / $BAT_FULL.0 \* 100 | bc -l) + +case $BAT_STATE in + Discharging) + if [[ $BAT_PERCENT -ge 80 ]]; then + icon="battery-full" + elif [[ $BAT_PERCENT -ge 60 ]]; then + icon="battery-good" + elif [[ $BAT_PERCENT -ge 40 ]]; then + icon="battery-low" + elif [[ $BAT_PERCENT -ge 20 ]]; then + icon="battery-caution" + else + icon="battery-empty" + fi + ;; + Charging) + if [[ $BAT_PERCENT -ge 80 ]]; then + icon="battery-full-charging" + elif [[ $BAT_PERCENT -ge 60 ]]; then + icon="battery-good-charging" + elif [[ $BAT_PERCENT -ge 40 ]]; then + icon="battery-low-charging" + else + icon="battery-caution-charging" + fi + ;; + *) + if [[ $AC_STATE -eq 1 ]]; then + icon="ac-adapter" + else + icon="battery-missing" + fi + ;; +esac + +isize=$(gsettings get ydesk.panel isize) +echo "SendToModule FvwmPanel Silent ChangeButton bat Icon $(yad-tools --icon --size=$isize $icon)" diff --git a/fvwm/scripts/clipman.sh.in b/fvwm/scripts/clipman.sh.in new file mode 100644 index 0000000..94c2f06 --- /dev/null +++ b/fvwm/scripts/clipman.sh.in @@ -0,0 +1,108 @@ +#! /bin/bash +# -*- mode: sh -*- +# manage clipboards + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +prog="$0" + +LOCKFILE="/var/lock/fvwm-clipman.lock" + +# supress errors output +exec 2> /dev/null + +# single instance +[[ -f $LOCKFILE && $1 != menu && $1 != trans ]] && exit 0 +touch $LOCKFILE +trap "rm -f $LOCKFILE" EXIT + +CLIPDIR="${XDG_CACHE_HOME:-$HOME/.cache}/clipboard" +CLIPS="primary secondary clipboard" +SIZE=25 +LENGTH=50 + +function clip_update +{ + [[ -d $CLIPDIR ]] || mkdir -p $CLIPDIR + for c in $CLIPS; do + tmpfile=$(mktemp -q --tmpdir=/tmp/ydesk clip.XXXXXXXX) + xclip -selection "$c" -o > $tmpfile + if [[ -s $tmpfile ]]; then + md5=$(md5sum $tmpfile | cut -f1 -d' ') + [[ -e $CLIPDIR/$md5 ]] && touch $CLIPDIR/$md5 || mv -f $tmpfile $CLIPDIR/$md5 + fi + rm -f $tmpfile + done + + # remove oldest + pushd $CLIPDIR &> /dev/null + OLD=$(ls -1tr | head -n -$SIZE) + [[ -n $OLD ]] && rm -rf $OLD + popd &> /dev/null +} + +function clip_set +{ + for c in $CLIPS; do + xclip -selection "$c" -i "$CLIPDIR/$1" + done +} + +function clip_cleanup +{ + [[ -d $CLIPDIR ]] || mkdir -p $CLIPDIR + rm -rf $CLIPDIR/* + for c in $CLIPS; do + echo -n '' | xclip -selection "$c" -i + done +} + +function clip_trans +{ + for c in $CLIPS; do + txt=$(xclip -o -selection $c) + [[ -n $txt ]] && break + done + + if [[ -n $txt ]]; then + sdcv -n "$txt" | yad --mouse --on-top --undecorated --skip-taskbar --text-info \ + --width=400 --height=200 --no-buttons --close-on-unfocus + fi +} + +function clip_menu +{ + current=$(xclip -o | md5sum | cut -f1 -d' ') + + isize=$(gsettings get ydesk.panel isize) + icon=$(yad-tools --icon --size=$isize edit-clear-all) + + echo "DestroyMenu recreate ClipboardMenu" + echo "AddToMenu ClipboardMenu Clipboard Title" + for f in $(ls -1t $CLIPDIR); do + line="$(head -n 1 $CLIPDIR/$f)" + lsize=${#line} + fsize=$(stat --printf='%s' $CLIPDIR/$f) + [[ $f == $current ]] && mline="*" || mline=" " + if [[ $lsize -lt $fsize || $lsize -ge $LENGTH ]]; then + mline+=$(printf '%q' "${line:0:$LENGTH}") + mline+="..." + else + mline+=$(printf '%q' "$line") + fi + echo "AddToMenu ClipboardMenu \"$mline\" Exec exec $prog set $f" + done + cleanup=$"Clear clipboard history" + echo "AddToMenu ClipboardMenu \"\" Nop" + echo "AddToMenu ClipboardMenu \"&${cleanup}%$icon%\" Exec exec $prog clear" +} + +case $1 in + update) clip_update ;; + set) clip_set $2 ;; + clear) clip_cleanup ;; + menu) clip_menu ;; + trans) clip_trans ;; + *) exit 1 ;; +esac diff --git a/fvwm/scripts/clock.sh b/fvwm/scripts/clock.sh new file mode 100644 index 0000000..1a021e5 --- /dev/null +++ b/fvwm/scripts/clock.sh @@ -0,0 +1,12 @@ +#! /bin/bash + +if [[ $1 == cal ]]; then + xlsclients | grep -q FVWM-Cal || exec yad --name=FVWM-Cal \ + --undecorated --close-on-unfocus --posx="-10" --posy="45" \ + --no-buttons --skip-taskbar --calendar +fi + +tm="$(date +'%R')" +dt="$(date +'%A, %d %B %Y')" + +echo "SendToModule FvwmPanel Silent ChangeButton clock Title \"$tm\", TipsLabel \"$dt\"" diff --git a/fvwm/scripts/icons.sh b/fvwm/scripts/icons.sh new file mode 100644 index 0000000..d503959 --- /dev/null +++ b/fvwm/scripts/icons.sh @@ -0,0 +1,21 @@ +#! /bin/bash +# Update icons used by fvwm + +# remove icon cache cache +[[ $1 == -f ]] && rm -rf ${XDG_CACHE_HOME:-$HOME/.share}/ydesk/fvwm/icons + +declare -A common=([desk]=emblem-desktop [edit]=accessories-text-editor [media]=drive-removable-media + [info]=dialog-information [lock]=system-lock-screen [mixer]=multimedia-volume-control + [prefs]=preferences-system [recent]=document-open-recent [restart]=view-refresh [run]=system-run + [search]=system-search [shot]=applets-screenshooter [shutdown]=system-shutdown + [settings]=preferences-other [sysmon]=utilities-system-monitor [term]=utilities-terminal + [web]=web-browser [winclose]=window-close [y]=ydesk) + +imagedir="${XDG_DATA_HOME:-$HOME/.share}/ydesk/images" +mkdir -p $imagedir + +isize=$(gsettings get ydesk.panel isize) +for k in ${!common[@]}; do + i="$(yad-tools -i -s $isize ${common[$k]})" + [[ -e $i ]] && ln -sf $i $imagedir/$k.png +done diff --git a/fvwm/scripts/infostore.sh b/fvwm/scripts/infostore.sh new file mode 100644 index 0000000..8763763 --- /dev/null +++ b/fvwm/scripts/infostore.sh @@ -0,0 +1,12 @@ +#! /bin/bash +# Add infostore items from gsettings + +SCHEMAS=(ydesk.common ydesk.fonts ydesk.apps ydesk.applets) + +for sch in ${SCHEMAS[@]}; do + for key in $(gsettings list-keys $sch); do + val=$(gsettings get $sch $key) + echo "InfoStoreAdd $key $val" + done +done + diff --git a/fvwm/scripts/mail.sh.in b/fvwm/scripts/mail.sh.in new file mode 100644 index 0000000..b30755b --- /dev/null +++ b/fvwm/scripts/mail.sh.in @@ -0,0 +1,71 @@ +#! /bin/bash + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +sfile=${XDG_DATA_HOME:-$HOME/.local}/ydesk/mail.conf +touch $sfile + +export isize=$(gsettings get ydesk.panel isize) + +function mail_check { + icon="nomail" + txt= + while IFS=';' read srv acc; do + pass=$(secret-tool lookup server "${srv#*://}" user "$acc") + if [[ -n $pass ]]; then + nm=$(curl -s -u "$acc:$pass" $srv -X 'STATUS INBOX (UNSEEN)' | sed -r 's/.* ([0-9]+)\).*/\1/') + [[ $nm -gt 0 ]] && new_mail="y" + txt+="${srv#*://} - $nm\n" + fi + done < $sfile + if [[ $new_mail == y ]]; then + icon="newmail" + ynotify -i mail-new $"New mail" "$txt" + fi + + echo "SendToModule FvwmPanel Silent ChangeButton mail Icon $(yad-tools --icon --size=$isize $icon)" +} + +function add_mail_acc { + [[ $1 != add ]] && return + ACC=($(yad --form --field=$"Server:" --field=$"Account:" --field=$"Password::h" \ + --separator="\n" --title $"Mail account" --image=user-info --text=$"Add new mail account")) + if [[ -n ${ACC[0]} ]]; then + echo -n "${ACC[2]}" | secret-tool store --label $"Ydesk mail checker" server "${ACC[0]#*://}" user "${ACC[1]}" + echo -e "${ACC[0]}\n${ACC[1]}" + else + return 1 + fi +} +export -f add_mail_acc + +function mail_cfg { + rfile=$(mktemp --tmpdir=/tmp/ydesk mails-XXXXXXXX) + sed "s/;/\n/g" $sfile | yad --title $"Mail configuration" \ + --text $"List of mail acconts to check" --image="mail-unread" \ + --list --print-all --separator=";" --use-interp --editable \ + --expand-column=0 --row-action="add_mail_acc" \ + --column=$"Server" --column=$"User" | sed "s/;$//" > $rfile + if [[ ${PIPESTATUS[1]} -eq 0 ]]; then + mv -f $rfile $sfile + else + rm -f $rfile + fi +} + +function mail_open { + FvwmCommand "SendToModule FvwmPanel Silent ChangeButton mail Icon $(yad-tools --icon --size=$isize nomail)" + if [[ -z $1 ]]; then + eval mexec=$(gsettings get ydesk.apps mailer) + else + mexec="$1" + fi + exec $mexec +} + +case $1 in + check) ( mail_check ) & ;; + cfg) mail_cfg ;; + *) mail_open "$1" ;; +esac diff --git a/fvwm/scripts/media.sh.in b/fvwm/scripts/media.sh.in new file mode 100644 index 0000000..aafd38f --- /dev/null +++ b/fvwm/scripts/media.sh.in @@ -0,0 +1,48 @@ +#! /bin/bash +# -*- mode: sh -*- +# Media applet engine + +[[ -e /etc/conf.d/automount ]] && source /etc/conf.d/automount + +export MEDIADIR="${MOUNT_BASE:-/media}" + +function dm_update { + icon="drive-removable-media" + for d in $(find $MEDIADIR -mindepth 1 -maxdepth 1 -type d); do + if mountpoint -q $d; then + icon="media-flash" + break + fi + done + + isize=$(gsettings get ydesk.panel isize) + FvwmCommand "SendToModule FvwmPanel Silent ChangeButton media Icon $(yad-tools --icon --size=${isize:-16} $icon)" +} + +function dm_eject { + eject $1 || umount -nf $1 + dm_update +} + +function dm_menu { + echo -e 'DestroyMenu recreate MediaMenu\nAddToMenu MediaMenu' + for d in $MEDIADIR/*; do + mountpoint -q $d || continue + + dev=$(findmnt -n -o SOURCE $d) + vendor=$(echo $(< /sys/block/${dev:5:3}/device/vendor)) + model=$(echo $(< /sys/block/${dev:5:3}/device/model)) + + echo "+ \"${vendor:-Unknown} $model ($d)\" Exec exec \$[FVWM_LIBDIR]/media.sh eject $d" + + unset dev rd vendor model + done + echo '+ "" Nop' + echo '+ "$[gt.Media manager]" Exec exec @prefix@/lib/ydesk/misc/ymedia' +} + +case $1 in + eject) dm_eject $2 ;; + menu) dm_menu ;; + *) dm_update ;; +esac diff --git a/fvwm/scripts/panel.sh b/fvwm/scripts/panel.sh new file mode 100644 index 0000000..f7d9736 --- /dev/null +++ b/fvwm/scripts/panel.sh @@ -0,0 +1,33 @@ +#! /bin/bash +# create panel + +eval ENABLE=$(gsettings get ydesk.panel enable) +[[ $ENABLE == false ]] && exit 0 + +eval POS=$(gsettings get ydesk.panel pos) +if [[ $POS == bottom ]]; then + echo "EwmhBaseStruts 0 0 0 27" +else + echo "EwmhBaseStruts 0 0 27 0" +fi + +isize=$(gsettings get ydesk.panel isize) +echo "InfoStoreAdd p_clock '$(date +%R)'" +echo "InfoStoreAdd p_bat $(yad-tools --icon --size=$isize battery-missing)" +echo "InfoStoreAdd p_media $(yad-tools --icon --size=$isize drive-removable-media)" +echo "InfoStoreAdd p_mail $(yad-tools --icon --size=$isize nomail)" +echo "InfoStoreAdd p_vol $(yad-tools --icon --size=$isize audio-volume-muted)" +echo "InfoStoreAdd p_wifi $(yad-tools --icon --size=$isize nm-signal-00)" +echo "InfoStoreAdd p_wthr $(yad-tools --icon --size=$isize weather-overcast)" + +eval APPLETS=($(gsettings get ydesk.panel applets | sed "s/,/ /g")) + +# load config +for a in ${APPLETS[@]}; do + if [[ $a == sep* ]]; then + sz=${a:3} + echo "*FvwmPanel: (${sz:-1}x1)" + else + [[ -e $FVWM_DATADIR/applets/$a.fvwm ]] && grep -v "^#" $FVWM_DATADIR/applets/$a.fvwm + fi +done diff --git a/fvwm/scripts/prun.sh b/fvwm/scripts/prun.sh new file mode 100644 index 0000000..cff51d5 --- /dev/null +++ b/fvwm/scripts/prun.sh @@ -0,0 +1,19 @@ +#! /bin/bash +# -*- mode: sh -*- + +TRM=${XTERM:-xterm} + +while : ; do + read cmd + echo -ne '\ec' + # run command + export cmd + ( case $cmd in + http://*|https://*|ftp://*|file://*) xdg-open $cmd ;; + mailto://*) xdg-email $cmd ;; + man://*) $TRM -e man ${cmd:6} ;; + telnet |ssh |man ) $TRM -e $cmd ;; + t:*) $TRM -e ${cmd:2} ;; + *) $cmd ;; + esac ) &> /dev/null & +done diff --git a/fvwm/scripts/qlaunch.sh b/fvwm/scripts/qlaunch.sh new file mode 100644 index 0000000..3579841 --- /dev/null +++ b/fvwm/scripts/qlaunch.sh @@ -0,0 +1,13 @@ +#! /bin/bash +# Create quicklaunch panel applet + +isize=$(gsettings get ydesk.panel isize) + +echo "*FvwmPanel: (1x1)" +for f in ${XDG_DATA_HOME:-$HOME/.share}/ydesk/qlaunch/*.desktop; do + eval $(grep -E '^[[:blank:]]*(Icon|Name|Exec)=' "$f" | sed -r 's/=(.*)$/="\1"/') + ficon=$(yad-tools --icon --size=$isize ${Icon:-system-run}) + echo "*FvwmPanel: (25x1, Padding 2 2, ActiveColorset 2, Icon \"$ficon\", TipsLabel \"$Name\", Action Exec exec ${Exec%% \%*})" + unset Icon Name Exec ficon +done +echo "*FvwmPanel: (1x1)" diff --git a/fvwm/scripts/shot.sh.in b/fvwm/scripts/shot.sh.in new file mode 100644 index 0000000..3579649 --- /dev/null +++ b/fvwm/scripts/shot.sh.in @@ -0,0 +1,40 @@ +#! /bin/bash +# Make a screenshot + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +export ifile=$(mktemp -u --tmpdir=/tmp/ydesk shot-XXXXXXXX.png) + +trap "rm -f $ifile" EXIT + +function save_file +{ + idir="$(xdg-user-dir PICTURES)/screenshots" + mkdir -p "$idir" + ofile=$(yad --title=$"Save screenshot" --width=500 --height=400 \ + --file --save --filename="$idir/screenshot-$EPOCHSECONDS.png") + [[ -n $ofile ]] && mv -f $ifile $ofile +} +export -f save_file + +function copy_file +{ + xclip -selection primary -target image/png -i $ifile +} +export -f copy_file + +case $1 in + root) xrefresh && gm import -window root $ifile ;; + reg) xrefresh && gm import -frame $ifile ;; + *) exit 1 ;; +esac + +if [[ -e $ifile ]]; then + yad --title=$"Screenshot" --width=500 --height=400 \ + --window-icon="applets-screenshooter" \ + --button=$"Clipboard!yad-paste:bash -c copy_file" \ + --button="yad-save:bash -c save_file" \ + --button="yad-close:0" \ + --picture --size=fit --filename="$ifile" +fi diff --git a/fvwm/scripts/volume.sh b/fvwm/scripts/volume.sh new file mode 100644 index 0000000..e6e705c --- /dev/null +++ b/fvwm/scripts/volume.sh @@ -0,0 +1,42 @@ +#! /bin/bash +# Volume control + +function slider { + vol=$(amixer sget $SCTRL | tail -n 1 | sed -r 's/.*\[([0-9]+)\%\].*/\1/') + yad --scale --vertical --close-on-unfocus --undecorated --mouse --on-top \ + --skip-taskbar --height=200 --no-buttons \ + --print-partial --page=5 --value=$vol | while read v; do + amixer -q sset $SCTRL ${v}% + done +} + +eval SCTRL=$(gsettings get ydesk.applets vol_ctl) +export SCTRL + +upd=0 +case $1 in + inc) amixer -q sset $SCTRL 2%+ ;; + dec) amixer -q sset $SCTRL 2%- ;; + mute) amixer -q sset $SCTRL toggle mute ;; + vol) slider ;; + show) ymixer ;; + upd) upd=1 ;; +esac + +vol=$(amixer sget $SCTRL | tail -n 1 | sed -r 's/.*\[([0-9]+)\%\].*/\1/') +if [[ $vol -ge 75 ]]; then + icon="audio-volume-high" +elif [[ $vol -ge 35 ]]; then + icon="audio-volume-medium" +elif [[ $vol -ge 0 ]]; then + icon="audio-volume-low" +else + icon="audio-volume-muted" +fi + +isize=$(gsettings get ydesk.panel isize) +if [[ $upd -eq 0 ]]; then + exec FvwmCommand "SendToModule FvwmPanel Silent ChangeButton volume Icon $(yad-tools --icon --size=$isize $icon)" +else + echo "SendToModule FvwmPanel Silent ChangeButton volume Icon $(yad-tools --icon --size=$isize $icon)" +fi diff --git a/fvwm/scripts/weather.sh.in b/fvwm/scripts/weather.sh.in new file mode 100644 index 0000000..e96a8a7 --- /dev/null +++ b/fvwm/scripts/weather.sh.in @@ -0,0 +1,41 @@ +#! /bin/bash +# Weather applet engine + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +wfile=${XDG_CACHE_HOME:-$HOME/.cache}/ydesk/weather.json + +declare -A icons=([01d]=weather-clear [01n]=weather-clear-night [02d]=weather-few-clouds [02n]=weather-few-clouds-night + [03d]=weather-overcast [03n]=weather-overcast [04d]=weather-severe-alert [04n]=weather-severe-alert + [09d]=weather-showers [09n]=weather-showers [10d]=weather-showers-scattered [10n]=weather-showers-scattered + [11d]=weather-storm [11n]=weather-storm [13d]=weather-snow [13n]=weather-snow [50d]=weather-fog [50n]=weather-fog) + +function wthr_update { + APIKEY=$(< ${XDG_DATA_HOME:-$HOME/.share}/ydesk/weather.key) + if [[ -z $APIKEY ]]; then + echo "API key missing" > /dev/stderr + exit 1 + fi + eval CITY=$(gsettings get ydesk.weather city) + eval COUNTRY=$(gsettings get ydesk.weather country) + eval UNITS=$(gsettings get ydesk.weather units) + + mkdir -p $(dirname $wfile) + curl -s -o $wfile "http://api.openweathermap.org/data/2.5/weather?q=${CITY},${COUNTRY}&APPID=${APIKEY}&units=${UNITS}" + + printf -v temp "%.f°C" "$(jq '.main.temp' $wfile)" + eval i="$(jq '.weather[0].icon' $wfile)" + + isize=$(gsettings get ydesk.panel isize) + echo "SendToModule FvwmPanel Silent ChangeButton wthr Title (Side) '$temp', Icon '$(yad-tools --icon --size=$isize ${icons[$i]})'" +} + +function wthr_show { + yad +} + +case $1 in + update|upd) wthr_update ;; + show) wthr_show ;; +esac diff --git a/fvwm/scripts/wifi.sh b/fvwm/scripts/wifi.sh new file mode 100644 index 0000000..03e40ba --- /dev/null +++ b/fvwm/scripts/wifi.sh @@ -0,0 +1,42 @@ +#! /bin/bash +# Wifi applet engine + +eval iface=$(gsettings get ydesk.applets wifi_iface) + +function wifi_upd { + eval $(wpa_cli -i ${iface:-wlan0} signal_poll | grep "^RSSI") + + if [[ -n $RSSI ]]; then + if [[ $RSSI -le -100 ]]; then + QUALITY=0 + elif [[ $RSSI -ge -50 ]]; then + QUALITY=100 + else + QUALITY=$((2 * ($RSSI + 100))) + fi + + if [[ $QUALITY -gt 75 ]]; then + icon="nm-signal-100" + elif [[ $QUALITY -gt 50 ]]; then + icon="nm-signal-75" + elif [[ $QUALITY -gt 50 ]]; then + icon="nm-signal-75" + elif [[ $QUALITY -gt 25 ]]; then + icon="nm-signal-50" + elif [[ $QUALITY -gt 10 ]]; then + icon="nm-signal-25" + else + icon="nm-signal-00" + fi + else + icon="nm-signal-00" + fi + + isize=$(gsettings get ydesk.panel isize) + echo "SendToModule FvwmPanel Silent ChangeButton wifi Icon $(yad-tools --icon --size=$isize $icon)" +} + +case $1 in + ctrl|control) ywifi ;; + *) wifi_upd ;; +esac diff --git a/fvwm/scripts/ymenu.py b/fvwm/scripts/ymenu.py new file mode 100644 index 0000000..092fbd9 --- /dev/null +++ b/fvwm/scripts/ymenu.py @@ -0,0 +1,178 @@ +#!/usr/bin/python +# +# Description: create different menus for Ydesk with icon caching +# Author: Victor Ananjevsky, 2007 - 2021 +# License: GPL +# + +import sys +import os +from glob import glob + +import xdg.Menu +from xdg.DesktopEntry import * +from xdg.BaseDirectory import * + +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk, GdkPixbuf + +# default size for cached icons +icon_size = 16 + +# default size of recent menu +recent_size = 15 + +def cache_icon (icon): + ''' cache an icon ''' + icon_file = "%s/%s.png" % (cache_path, os.path.basename(icon)) + if os.path.exists(icon_file): + return + try: + icon_theme.load_icon(icon, icon_size, Gtk.IconLookupFlags.FORCE_SIZE).savev(icon_file, "png", [], []) + except: + pass + +def print_dentry (de, prefix = ''): + ''' output desktop entry ''' + if de.getHidden() or not de.getNoDisplay: + return + icon = de.getIcon() + cache_icon(icon) + cmd = de.getExec().rstrip('%FUfu') + nm = de.getGenericName() + t = de.getTerminal() + if not nm: + nm = de.getName() + if (t): + print('+ "%s%%%s.png%%" Exec exec $[infostore.term] -e "%s%s"' % (nm, os.path.basename(icon), prefix, cmd)) + else: + print('+ "%s%%%s.png%%" Exec exec %s%s' % (nm, os.path.basename(icon), prefix, cmd)) + +def parse_menu (menu): + ''' parse menu file ''' + print('DestroyMenu %s\nAddToMenu %s' % (menu, menu)) + + for entry in menu.getEntries(): + if isinstance(entry, xdg.Menu.Menu): + icon = entry.getIcon() + cache_icon(icon) + print('+ "%s%%%s.png%%" Popup "%s"' % (entry.getName(), os.path.basename(icon), entry)) + elif isinstance(entry, xdg.Menu.MenuEntry): + desktop = DesktopEntry(entry.DesktopEntry.getFileName()) + print_dentry(desktop) + else: + pass + + for entry in menu.getEntries(): + if isinstance(entry, xdg.Menu.Menu): + parse_menu(entry) + +def parse_toplevel (menu): + ''' parse menu file for embedding ''' + for entry in menu.getEntries(): + if isinstance(entry, xdg.Menu.Menu): + icon = entry.getIcon() + cache_icon(icon) + print('+ "%s%%%s.png%%" Popup "%s"' % (entry.getName(), os.path.basename(icon), entry)) + elif isinstance(entry, xdg.Menu.MenuEntry): + desktop = DesktopEntry(entry.DesktopEntry.getFileName()) + print_dentry(desktop) + else: + pass + +def parse_recent (): + ''' parse recently opened files ''' + print('DestroyMenu recreate RecentMenu\nAddToMenu RecentMenu') + + cnt = 1 + rm = Gtk.RecentManager() + for rf in rm.get_items(): + print('+ "%d: %s" Exec exec xdg-open "%s"' % (cnt, rf.get_display_name(), rf.get_uri())) + cnt += 1 + if (cnt > recent_size): + break + +def parse_qlaunch (): + ''' parse recently opened files ''' + for f in sorted(glob("%s/ydesk/qlaunch/*.desktop" % xdg_data_home)): + if f.endswith(".desktop"): + desktop = DesktopEntry(f) + icon = desktop.getIcon() + cache_icon(icon) + cmd = desktop.getExec().rstrip('%FUfu') + print('+ "%s%%%s.png%%" Exec exec %s' % (desktop.getName(), os.path.basename(icon), cmd)) + +def parse_autostart (): + ''' parse autostart items ''' + cmds = [] + for d in xdg_config_dirs: + for f in glob("%s/autostart/*.desktop" % d): + desktop = DesktopEntry(f) + if not desktop.getHidden(): + cmds.append(desktop.getExec().rstrip('%FUfu')) + for f in glob("%s/autostart/*.desktop" % xdg_config_home): + desktop = DesktopEntry(f) + cmd = desktop.getExec().rstrip('%FUfu') + if not desktop.getHidden(): + cmds.append(cmd) + else: + try: + cmds.remove(cmd) + except ValueError: + pass + # output + for c in set(cmds): + print('+ I Exec exec %s' % c) + +def parse_settings (): + ''' create settings menu ''' + print('DestroyMenu SettingsMenu\nAddToMenu SettingsMenu') + for d in xdg_data_dirs: + for f in glob("%s/settings/*.desktop" % d): + desktop = DesktopEntry(f) + print_dentry(desktop, prefix="/usr/lib/ydesk/settings/") + +# Start + +cache_path = "%s/ydesk/fvwm/icons" % xdg_cache_home +icon_theme = Gtk.IconTheme.get_default() + +if not os.path.exists(cache_path): + os.makedirs(cache_path) + +argc = 1 +toplevel = False +if sys.argv[argc] == "-t": + toplevel = True + argc = 2 + +for arg in sys.argv[argc:]: + if arg == "recent": + parse_recent () + elif arg == "qlaunch": + parse_qlaunch () + elif arg == "autostart": + parse_autostart () + elif arg == "settings": + parse_settings () + else: + filename = "" + if os.path.exists(arg): + filename = arg + else: + tmpfile = "%s/menus/%s.menu" % (xdg_config_home, arg) + if os.path.exists(tmpfile): + filename = tmpfile + else: + for dir in xdg_config_dirs: + tmpfile = "%s/menus/%s.menu" % (dir, arg) + if os.path.exists(tmpfile): + filename = tmpfile + break + if filename == "": + break + if toplevel: + parse_toplevel(xdg.Menu.parse(filename)) + else: + parse_menu(xdg.Menu.parse(filename)) diff --git a/misc/fvwm-borders.patch b/misc/fvwm-borders.patch new file mode 100644 index 0000000..d86936e --- /dev/null +++ b/misc/fvwm-borders.patch @@ -0,0 +1,208 @@ +diff -urNp fvwm3-1.0.2-orig/fvwm/borders.c fvwm3-1.0.2/fvwm/borders.c +--- fvwm3-1.0.2-orig/fvwm/borders.c 2020-08-17 01:59:05.000000000 +0300 ++++ fvwm3-1.0.2/fvwm/borders.c 2021-03-13 11:04:02.541578926 +0200 +@@ -4584,6 +4584,7 @@ void border_get_part_geometry( + rectangle *ret_g, Window *ret_w) + { + int bw; ++ Bool title; + + bw = fw->boundary_width; + /* ret_g->x and ret->y is just an offset relatively to the w, +@@ -4654,7 +4655,32 @@ void border_get_part_geometry( + ret_g->height = sidebar_g->y; + break; + default: +- return; ++ break; ++ } ++ ++ if (HAS_BORDER_UNDER_TITLE(fw)) ++ { ++ title = False; ++ switch (GET_TITLE_DIR(fw)) ++ { ++ case DIR_N: title = part & PART_TOP; break; ++ case DIR_E: title = part & PART_RIGHT; break; ++ case DIR_S: title = part & PART_BOTTOM; break; ++ case DIR_W: title = part & PART_LEFT; break; ++ } ++ if (title) ++ { ++ ret_g->width = max(ret_g->width, 2 * bw + fw->title_thickness); ++ ret_g->height = max(ret_g->height, 2 * bw + fw->title_thickness); ++ if (part & PART_RIGHT) ++ { ++ ret_g->x = 2 * sidebar_g->x + sidebar_g->width - ret_g->width; ++ } ++ if (part & PART_BOTTOM) ++ { ++ ret_g->y = 2 * sidebar_g->y + sidebar_g->height - ret_g->height; ++ } ++ } + } + + return; +diff -urNp fvwm3-1.0.2-orig/fvwm/borders.h fvwm3-1.0.2/fvwm/borders.h +--- fvwm3-1.0.2-orig/fvwm/borders.h 2020-12-12 02:37:08.000000000 +0200 ++++ fvwm3-1.0.2/fvwm/borders.h 2021-03-13 11:04:02.541578926 +0200 +@@ -38,7 +38,12 @@ typedef enum + PART_FRAME = 0xff, + PART_TITLEBAR = 0x300, + PART_HANDLES = 0xc00, +- PART_ALL = 0xfff ++ PART_ALL = 0xfff, ++ ++ PART_TOP = 0x31, ++ PART_BOTTOM = 0xc2, ++ PART_LEFT = 0x58, ++ PART_RIGHT = 0xa4 + } window_parts; + + typedef enum +diff -urNp fvwm3-1.0.2-orig/fvwm/fvwm.h fvwm3-1.0.2/fvwm/fvwm.h +--- fvwm3-1.0.2-orig/fvwm/fvwm.h 2020-12-12 02:37:08.000000000 +0200 ++++ fvwm3-1.0.2/fvwm/fvwm.h 2021-03-13 11:04:02.541578926 +0200 +@@ -264,6 +264,7 @@ typedef struct + #define WINDOWSHADE_LAZY_MASK 0x3 + unsigned windowshade_laziness : 2; + unsigned use_title_decor_rotation : 1; ++ unsigned has_border_under_title : 1; + focus_policy_t focus_policy; + } s; + } common_flags_t; +diff -urNp fvwm3-1.0.2-orig/fvwm/geometry.c fvwm3-1.0.2/fvwm/geometry.c +--- fvwm3-1.0.2-orig/fvwm/geometry.c 2020-12-12 02:37:08.000000000 +0200 ++++ fvwm3-1.0.2/fvwm/geometry.c 2021-03-13 11:04:02.542578926 +0200 +@@ -45,6 +45,9 @@ + + /* ---------------------------- forward declarations ----------------------- */ + ++static void __get_window_borders( ++ const FvwmWindow *fw, size_borders *borders, Bool is_shaded); ++ + /* ---------------------------- local variables ---------------------------- */ + + /* ---------------------------- exported variables (globals) --------------- */ +@@ -356,7 +359,7 @@ void get_shaded_geometry( + get_window_borders_no_title(fw, &b); + break; + default: +- get_window_borders(fw, &b); ++ __get_window_borders(fw, &b, 1); + break; + } + *small_g = *big_g; +@@ -484,23 +487,38 @@ void get_shaded_client_window_pos( + void get_window_borders( + const FvwmWindow *fw, size_borders *borders) + { ++ __get_window_borders(fw, borders, 0); ++} ++ ++static void __get_window_borders( ++ const FvwmWindow *fw, size_borders *borders, Bool is_shaded) ++{ ++ int title_thickness; ++ + borders->top_left.width = fw->boundary_width; + borders->bottom_right.width = fw->boundary_width; + borders->top_left.height = fw->boundary_width; + borders->bottom_right.height = fw->boundary_width; ++ ++ title_thickness = fw->title_thickness; ++ if (HAS_TITLE(fw) && HAS_BORDER_UNDER_TITLE(fw) && !is_shaded) ++ { ++ title_thickness += fw->boundary_width / 2; ++ } ++ + switch (GET_TITLE_DIR(fw)) + { + case DIR_N: +- borders->top_left.height += fw->title_thickness; ++ borders->top_left.height += title_thickness; + break; + case DIR_S: +- borders->bottom_right.height += fw->title_thickness; ++ borders->bottom_right.height += title_thickness; + break; + case DIR_W: +- borders->top_left.width += fw->title_thickness; ++ borders->top_left.width += title_thickness; + break; + case DIR_E: +- borders->bottom_right.width += fw->title_thickness; ++ borders->bottom_right.width += title_thickness; + break; + } + borders->total_size.width = +diff -urNp fvwm3-1.0.2-orig/fvwm/geometry.h fvwm3-1.0.2/fvwm/geometry.h +--- fvwm3-1.0.2-orig/fvwm/geometry.h 2020-12-12 02:37:08.000000000 +0200 ++++ fvwm3-1.0.2/fvwm/geometry.h 2021-03-13 11:04:02.542578926 +0200 +@@ -45,6 +45,8 @@ void get_client_geometry( + FvwmWindow *fw, rectangle *ret_g); + void get_window_borders( + const FvwmWindow *fw, size_borders *borders); ++void get_window_borders_shaded( ++ const FvwmWindow *fw, size_borders *borders); + void get_window_borders_no_title( + const FvwmWindow *fw, size_borders *borders); + void set_window_border_size( +diff -urNp fvwm3-1.0.2-orig/fvwm/style.c fvwm3-1.0.2/fvwm/style.c +--- fvwm3-1.0.2-orig/fvwm/style.c 2020-12-12 02:37:08.000000000 +0200 ++++ fvwm3-1.0.2/fvwm/style.c 2021-03-13 11:04:02.543578926 +0200 +@@ -2148,6 +2148,12 @@ static Bool style_parse_one_style_option + { + rest = style_parse_button_style(ps, rest, on); + } ++ else if (StrEquals(token, "BORDERUNDERTITLE")) ++ { ++ S_SET_HAS_BORDER_UNDER_TITLE(SCF(*ps), on); ++ S_SET_HAS_BORDER_UNDER_TITLE(SCM(*ps), 1); ++ S_SET_HAS_BORDER_UNDER_TITLE(SCC(*ps), 1); ++ } + else if (StrEquals(token, "BorderWidth")) + { + if (GetIntegerArguments(rest, &rest, val, 1)) +@@ -4858,6 +4864,11 @@ void check_window_style_change( + { + flags->do_update_rotated_title = 1; + } ++ ++ if (S_HAS_BORDER_UNDER_TITLE(SCC(*ret_style))) ++ { ++ flags->do_redecorate = True; ++ } + + /* has_mwm_border + * has_mwm_buttons */ +diff -urNp fvwm3-1.0.2-orig/fvwm/style.h fvwm3-1.0.2/fvwm/style.h +--- fvwm3-1.0.2-orig/fvwm/style.h 2020-12-12 02:37:08.000000000 +0200 ++++ fvwm3-1.0.2/fvwm/style.h 2021-03-13 11:04:02.543578926 +0200 +@@ -336,6 +336,10 @@ + ((c).s.use_title_decor_rotation) + #define S_SET_USE_TITLE_DECOR_ROTATION(c,x) \ + ((c).s.use_title_decor_rotation = !!(x)) ++#define S_HAS_BORDER_UNDER_TITLE(c) \ ++ ((c).s.has_border_under_title) ++#define S_SET_HAS_BORDER_UNDER_TITLE(c,x) \ ++ ((c).s.has_border_under_title = !!(x)) + #define S_DO_EWMH_MINI_ICON_OVERRIDE(c) \ + ((c).s.do_ewmh_mini_icon_override) + #define S_SET_DO_EWMH_MINI_ICON_OVERRIDE(c,x) \ +diff -urNp fvwm3-1.0.2-orig/fvwm/window_flags.h fvwm3-1.0.2/fvwm/window_flags.h +--- fvwm3-1.0.2-orig/fvwm/window_flags.h 2020-12-12 02:37:08.000000000 +0200 ++++ fvwm3-1.0.2/fvwm/window_flags.h 2021-03-13 11:04:02.543578926 +0200 +@@ -326,6 +326,12 @@ + (fw)->flags.common.s.use_title_decor_rotation = !!(x) + #define SETM_USE_TITLE_DECOR_ROTATION(fw,x) \ + (fw)->flag_mask.common.s.use_title_decor_rotation = !!(x) ++#define HAS_BORDER_UNDER_TITLE(fw) \ ++ ((fw)->flags.common.s.has_border_under_title) ++#define SET_HAS_BORDER_UNDER_TITLE(fw,x) \ ++ (fw)->flags.common.s.has_border_under_title = !!(x) ++#define SETM_HAS_BORDER_UNDER_TITLE(fw,x) \ ++ (fw)->flag_mask.common.s.has_border_under_title = !!(x) + + /* access to the special flags of a window */ + #define DO_REUSE_DESTROYED(fw) \ diff --git a/misc/fvwm-datadir.patch b/misc/fvwm-datadir.patch new file mode 100644 index 0000000..b773f9a --- /dev/null +++ b/misc/fvwm-datadir.patch @@ -0,0 +1,27 @@ +--- fvwm3-1.0.2/fvwm/read.c.orig 2021-03-13 09:33:08.622201282 +0200 ++++ fvwm3-1.0.2/fvwm/read.c 2021-03-13 09:38:32.757223726 +0200 +@@ -195,6 +195,7 @@ + char *filename, const exec_context_t *exc) + { + char *full_filename; ++ char *ddir; + FILE *f = NULL; + + /* We attempt to open the filename by doing the following: +@@ -231,6 +232,16 @@ + + if((f = fopen(full_filename, "r")) == NULL) + { ++ free(full_filename); ++ ddir = getenv ("FVWM_DATADIR"); ++ if (ddir) ++ { ++ xasprintf(&full_filename, "%s/%s", ddir, filename); ++ } ++ } ++ ++ if((f = fopen(full_filename, "r")) == NULL) ++ { + free(full_filename); + xasprintf(&full_filename, "%s/%s", FVWM_DATADIR, filename); + f = fopen(full_filename, "r"); diff --git a/misc/fvwm-iconman.patch b/misc/fvwm-iconman.patch new file mode 100644 index 0000000..3a94de1 --- /dev/null +++ b/misc/fvwm-iconman.patch @@ -0,0 +1,111 @@ +diff -urNp fvwm3-1.0.2-orig/modules/FvwmIconMan/FvwmIconMan.h fvwm3-1.0.2/modules/FvwmIconMan/FvwmIconMan.h +--- fvwm3-1.0.2-orig/modules/FvwmIconMan/FvwmIconMan.h 2020-12-12 02:37:08.000000000 +0200 ++++ fvwm3-1.0.2/modules/FvwmIconMan/FvwmIconMan.h 2021-03-13 11:12:38.576614657 +0200 +@@ -314,6 +314,8 @@ typedef struct win_manager { + char *tips_fontname; + char *tips_formatstring; + ftips_config *tips_conf; ++ Uchar roundedcorners; ++ int padding; + + /* X11 state */ + Window theWindow, theFrame; +diff -urNp fvwm3-1.0.2-orig/modules/FvwmIconMan/readconfig.c fvwm3-1.0.2/modules/FvwmIconMan/readconfig.c +--- fvwm3-1.0.2-orig/modules/FvwmIconMan/readconfig.c 2020-08-17 01:59:05.000000000 +0300 ++++ fvwm3-1.0.2/modules/FvwmIconMan/readconfig.c 2021-03-13 11:11:00.673607878 +0200 +@@ -2027,6 +2027,40 @@ void read_in_resources(void) + } + SET_MANAGER(manager, relief_thickness, n); + } ++ else if (!strcasecmp(option1, "padding")) { ++ p = read_next_cmd(READ_ARG); ++ if (!p) { ++ ConsoleMessage("Bad line: %s\n", current_line); ++ continue; ++ } ++ if (extract_int(p, &n) == 0) { ++ ConsoleMessage("This is not a number: %s\n", p); ++ ConsoleMessage("Bad line: %s\n", current_line); ++ continue; ++ } ++ SET_MANAGER(manager, padding, n); ++ } ++ else if (!strcasecmp(option1, "roundedcorners")) { ++ p = read_next_cmd(READ_ARG); ++ if (!p) { ++ ConsoleMessage("Bad line: %s\n", current_line); ++ ConsoleMessage("Need argument to roundedcorners\n"); ++ continue; ++ } ++ if (!strcasecmp(p, "true")) { ++ i = 1; ++ } ++ else if (!strcasecmp(p, "false")) { ++ i = 0; ++ } ++ else { ++ ConsoleMessage("Bad line: %s\n", current_line); ++ ConsoleMessage("What is this: %s?\n", p); ++ continue; ++ } ++ ConsoleDebug(CONFIG, "Setting roundedcorners to: %d\n", i); ++ SET_MANAGER(manager, roundedcorners, i); ++ } + else if (!strcasecmp(option1, "tips")) { + p = read_next_cmd(READ_ARG); + if (!p) { +diff -urNp fvwm3-1.0.2-orig/modules/FvwmIconMan/xmanager.c fvwm3-1.0.2/modules/FvwmIconMan/xmanager.c +--- fvwm3-1.0.2-orig/modules/FvwmIconMan/xmanager.c 2020-12-12 02:37:08.000000000 +0200 ++++ fvwm3-1.0.2/modules/FvwmIconMan/xmanager.c 2021-03-13 11:11:00.673607878 +0200 +@@ -1413,6 +1413,8 @@ static void get_button_geometry(WinManag + + g->text_y = g->button_y + text_pad; + g->text_base = g->text_y + man->FButtonFont->ascent; ++ ++ g->button_w -= man->padding; + } + + static void draw_button_background( +@@ -1685,6 +1687,33 @@ static void draw_relief(WinManager *man, + } + } + ++static void __draw_rounded_corner(WinManager *man, ButtonGeometry *g, ++ int x, int y, int width, int height, GC gc) ++{ ++ int x1 = g->button_x + x; ++ int x2 = g->button_x + g->button_w - x - width; ++ int y1 = g->button_y + y; ++ int y2 = g->button_y + g->button_h - y - height; ++ ++ XFillRectangle(theDisplay, man->theWindow, gc, x1, y1, width, height); ++ XFillRectangle(theDisplay, man->theWindow, gc, x2, y1, width, height); ++ XFillRectangle(theDisplay, man->theWindow, gc, x1, y2, width, height); ++ XFillRectangle(theDisplay, man->theWindow, gc, x2, y2, width, height); ++} ++ ++static void draw_rounded_corners(WinManager *man, ButtonGeometry *g, GC gc) ++{ ++ if (man->roundedcorners) ++ { ++ __draw_rounded_corner(man, g, 0, 0, 2, 1, man->backContext[TITLE_CONTEXT]); ++ __draw_rounded_corner(man, g, 0, 1, 1, 1, man->backContext[TITLE_CONTEXT]); ++ __draw_rounded_corner(man, g, 1, 1, 1, 1, gc); ++ } ++ ++ XFillRectangle(theDisplay, man->theWindow, man->backContext[TITLE_CONTEXT], ++ g->button_x + g->button_w, g->button_y, man->padding, g->button_h); ++} ++ + static void draw_button(WinManager *man, int button, int force) + { + Button *b; +@@ -1873,6 +1902,8 @@ static void draw_button(WinManager *man, + draw_relief( + man, button_state, &g, context1, + context2); ++ ++ draw_rounded_corners(man, &g, context1); + } + else if (button_state == SELECT_CONTEXT || + button_state == FOCUS_SELECT_CONTEXT || diff --git a/misc/fvwm-menusep.patch b/misc/fvwm-menusep.patch new file mode 100644 index 0000000..c59c9b8 --- /dev/null +++ b/misc/fvwm-menusep.patch @@ -0,0 +1,147 @@ +diff -urNp fvwm3-1.0.2-orig/fvwm/menuitem.c fvwm3-1.0.2/fvwm/menuitem.c +--- fvwm3-1.0.2-orig/fvwm/menuitem.c 2020-08-29 20:53:34.000000000 +0300 ++++ fvwm3-1.0.2/fvwm/menuitem.c 2021-03-13 11:14:23.923621952 +0200 +@@ -81,10 +81,14 @@ static void clear_menu_item_background( + * + */ + static void draw_separator( +- Window w, GC TopGC, GC BottomGC, int x1, int y, int x2) ++ Window w, GC TopGC, GC BottomGC, GC ForeGC, int x1, int y, int x2, ++ Bool do_flat_separators) + { + XDrawLine(dpy, w, TopGC , x1, y, x2, y); +- XDrawLine(dpy, w, BottomGC, x1-1, y+1, x2+1, y+1); ++ if (!do_flat_separators) ++ { ++ XDrawLine(dpy, w, BottomGC, x1-1, y+1, x2+1, y+1); ++ } + + return; + } +@@ -378,6 +382,7 @@ void menuitem_paint( + /*Pixel fg, fgsh;*/ + int relief_thickness = ST_RELIEF_THICKNESS(ms); + Bool is_item_selected; ++ Bool do_flat_separators; + Bool item_cleared = False; + Bool xft_clear = False; + Bool empty_inter = False; +@@ -596,6 +601,8 @@ void menuitem_paint( + * Draw the item itself. + */ + ++ do_flat_separators = ST_DO_FLAT_SEPARATOR(ms); ++ + /* Calculate the separator offsets. */ + if (ST_HAS_LONG_SEPARATORS(ms)) + { +@@ -616,9 +623,9 @@ void menuitem_paint( + { + /* It's a separator. */ + draw_separator( +- mpip->w, gcs.shadow_gc, gcs.hilight_gc, sx1, +- y_offset + y_height - MENU_SEPARATOR_HEIGHT, +- sx2); ++ mpip->w, gcs.shadow_gc, gcs.hilight_gc, gcs.fore_gc, ++ sx1, y_offset + y_height - MENU_SEPARATOR_HEIGHT, ++ sx2, do_flat_separators); + /* Nothing else to do. */ + } + return; +@@ -658,8 +665,8 @@ void menuitem_paint( + if (sx1 < sx2) + { + draw_separator( +- mpip->w, gcs.shadow_gc, gcs.hilight_gc, +- sx1, y, sx2); ++ mpip->w, gcs.shadow_gc, gcs.hilight_gc, gcs.fore_gc, ++ sx1, y, sx2, do_flat_separators); + } + } + /* Underline the title. */ +@@ -672,8 +679,8 @@ void menuitem_paint( + { + y = y_offset + y_height - MENU_SEPARATOR_HEIGHT; + draw_separator( +- mpip->w, gcs.shadow_gc, gcs.hilight_gc, +- sx1, y, sx2); ++ mpip->w, gcs.shadow_gc, gcs.hilight_gc, gcs.fore_gc, ++ sx1, y, sx2, do_flat_separators); + } + break; + default: +diff -urNp fvwm3-1.0.2-orig/fvwm/menus.c fvwm3-1.0.2/fvwm/menus.c +--- fvwm3-1.0.2-orig/fvwm/menus.c 2020-12-12 02:37:08.000000000 +0200 ++++ fvwm3-1.0.2/fvwm/menus.c 2021-03-13 11:14:23.924621952 +0200 +@@ -1625,6 +1625,10 @@ static Bool size_menu_vertically(MenuSiz + separator_height = (last_item_has_relief) ? + MENU_SEPARATOR_HEIGHT + relief_thickness : + MENU_SEPARATOR_TOTAL_HEIGHT; ++ if (MST_DO_FLAT_SEPARATOR(msp->menu)) ++ { ++ separator_height += 1; ++ } + MI_Y_OFFSET(mi) = y; + if (MI_IS_TITLE(mi)) + { +diff -urNp fvwm3-1.0.2-orig/fvwm/menustyle.c fvwm3-1.0.2/fvwm/menustyle.c +--- fvwm3-1.0.2-orig/fvwm/menustyle.c 2020-12-12 02:37:08.000000000 +0200 ++++ fvwm3-1.0.2/fvwm/menustyle.c 2021-03-13 11:14:23.925621952 +0200 +@@ -425,7 +425,7 @@ static int menustyle_get_styleopt_index( + "TrianglesUseFore", + "TitleColorset", "HilightTitleBack", + "TitleFont", +- "VerticalMargins", ++ "VerticalMargins", "FlatSeparators", + "UniqueHotkeyActivatesImmediate", + NULL + }; +@@ -895,6 +895,7 @@ MenuStyle *menustyle_parse_style(F_CMD_A + ST_SCROLL_OFF_PAGE(tmpms) = 1; + ST_DO_HILIGHT_TITLE_BACK(tmpms) = 0; + ST_USING_DEFAULT_TITLEFONT(tmpms) = True; ++ ST_DO_FLAT_SEPARATOR(tmpms) = 0; + has_gc_changed = True; + option = "fvwm"; + } +@@ -1596,7 +1597,10 @@ MenuStyle *menustyle_parse_style(F_CMD_A + &ST_VERTICAL_MARGIN_BOTTOM(tmpms), + 0, 0); + break; +- case 63: /* UniqueHotKeyActivatesImmediate */ ++ case 63: /* FlatSeparators */ ++ ST_DO_FLAT_SEPARATOR(tmpms) = on; ++ break; ++ case 64: /* UniqueHotKeyActivatesImmediate */ + ST_HOTKEY_ACTIVATES_IMMEDIATE(tmpms) = on; + break; + +@@ -1857,6 +1861,8 @@ void menustyle_copy(MenuStyle *origms, M + ST_TRIANGLES_USE_FORE(destms) = ST_TRIANGLES_USE_FORE(origms); + /* Title */ + ST_DO_HILIGHT_TITLE_BACK(destms) = ST_DO_HILIGHT_TITLE_BACK(origms); ++ /* FlatSeparators */ ++ ST_DO_FLAT_SEPARATOR(destms) = ST_DO_FLAT_SEPARATOR(origms); + + menustyle_update(destms); + +diff -urNp fvwm3-1.0.2-orig/fvwm/menustyle.h fvwm3-1.0.2/fvwm/menustyle.h +--- fvwm3-1.0.2-orig/fvwm/menustyle.h 2020-12-12 02:37:08.000000000 +0200 ++++ fvwm3-1.0.2/fvwm/menustyle.h 2021-03-13 11:14:23.925621952 +0200 +@@ -24,6 +24,8 @@ + #define MST_FACE(m) ((m)->s->ms->look.face) + #define ST_DO_HILIGHT_BACK(s) ((s)->look.flags.do_hilight_back) + #define MST_DO_HILIGHT_BACK(m) ((m)->s->ms->look.flags.do_hilight_back) ++#define ST_DO_FLAT_SEPARATOR(s) ((s)->look.flags.do_flat_separator) ++#define MST_DO_FLAT_SEPARATOR(m) ((m)->s->ms->look.flags.do_flat_separator) + #define ST_DO_HILIGHT_FORE(s) ((s)->look.flags.do_hilight_fore) + #define MST_DO_HILIGHT_FORE(m) ((m)->s->ms->look.flags.do_hilight_fore) + #define ST_DO_HILIGHT_TITLE_BACK(s) ((s)->look.flags.do_hilight_title_back) +@@ -283,6 +285,7 @@ typedef struct MenuLook + unsigned has_title_cset : 1; + unsigned do_hilight_title_back : 1; + unsigned using_default_titlefont : 1; ++ unsigned do_flat_separator : 1; + } flags; + unsigned char ReliefThickness; + unsigned char TitleUnderlines; diff --git a/misc/fvwm-pager.patch b/misc/fvwm-pager.patch new file mode 100644 index 0000000..5bc757b --- /dev/null +++ b/misc/fvwm-pager.patch @@ -0,0 +1,47 @@ +--- fvwm3-1.0.2/modules/FvwmPager/x_pager.c.orig 2021-03-13 09:25:36.386169968 +0200 ++++ fvwm3-1.0.2/modules/FvwmPager/x_pager.c 2021-03-13 09:32:35.409198982 +0200 +@@ -1079,7 +1079,7 @@ + do_ignore_next_button_release = False; + break; + } +- if (Event->xbutton.button == 3) ++ if (Event->xbutton.button == 2) + { + for(i=0;ixbutton.button == 1)|| +- (Event->xbutton.button == 2)) ++ (Event->xbutton.button == 3)) + { + for(i=0;ixbutton.button == 2)|| +- ((Event->xbutton.button == 3)&& ++ if (((Event->xbutton.button == 3)|| ++ ((Event->xbutton.button == 2)&& + (Event->xbutton.state & Mod1Mask)))&& + (Event->xbutton.subwindow != None)) + { + MoveWindow(Event); + } +- else if (Event->xbutton.button == 3) ++ else if (Event->xbutton.button == 2) + { + /* save initial virtual desk position for drag */ + MyVx=mon->virtual_scr.Vx; +@@ -1176,7 +1176,7 @@ + while(FCheckMaskEvent(dpy, PointerMotionMask | ButtonMotionMask,Event)) + ; + +- if(Event->xmotion.state & Button3MotionMask) ++ if(Event->xmotion.state & Button2MotionMask) + { + for(i=0;ic->tips_config, ++ (void *)UberButton, b->tipslabel, ++ b->x, b->y, Width,Height); ++ FTipsUpdateLabel(Dpy, b->tipslabel); ++ } + break; + + case MotionNotify: ++ + b = handle_new_position(b, Event.xmotion.x, Event.xmotion.y); ++ ++ x = Event.xbutton.x; ++ y = Event.xbutton.y; ++ ++ if(b->tipslabel != NULL) ++ { ++ FTipsOn(Dpy,MyWindow,UberButton->c->tips_config, (void *)UberButton, b->tipslabel, x, y, w, h); ++ FTipsUpdateLabel(Dpy, b->tipslabel); ++ } else { ++ FTipsCancel(Dpy); ++ } ++ + break; + + case LeaveNotify: +@@ -1229,11 +1260,13 @@ void Loop(void) + b = ActiveButton; + ActiveButton = NULL; + RedrawButton(b, DRAW_FORCE, NULL); ++ + } + if (CurrentButton) + { + RedrawButton(b, DRAW_FORCE, NULL); + } ++ FTipsCancel(Dpy); + } + break; + +@@ -1255,8 +1288,8 @@ void Loop(void) + Window dummy; + + XTranslateCoordinates( +- Dpy, Event.xbutton.window, MyWindow, Event.xbutton.x, +- Event.xbutton.y, &x, &y, &dummy); ++ Dpy, Event.xbutton.window, MyWindow, Event.xbutton.x, ++ Event.xbutton.y, &x, &y, &dummy); + } + if (CurrentButton) + { +@@ -1298,7 +1331,10 @@ void Loop(void) + RedrawButton(tmp, DRAW_FORCE, NULL); + } + else ++ { + RedrawButton(b, DRAW_FORCE, NULL); ++ } ++ + if (!act) + { + break; +diff -urNp fvwm3-1.0.2-orig/modules/FvwmButtons/FvwmButtons.h fvwm3-1.0.2/modules/FvwmButtons/FvwmButtons.h +--- fvwm3-1.0.2-orig/modules/FvwmButtons/FvwmButtons.h 2020-12-12 02:37:08.000000000 +0200 ++++ fvwm3-1.0.2/modules/FvwmButtons/FvwmButtons.h 2021-03-16 12:02:02.657961052 +0200 +@@ -36,6 +36,9 @@ + #include "libs/Picture.h" + #include "libs/Flocale.h" + #include "libs/FScreen.h" ++#include "libs/FTips.h" ++ ++#define FONT_STRING "-*-fixed-medium-r-normal--13-*" + + /* ------------------------------- structs --------------------------------- */ + +@@ -80,6 +83,7 @@ typedef struct + unsigned b_PressIcon : 1; /* Use alternate Icon on press */ + unsigned b_PressColorset : 1; /* Use alternate Colorset on press */ + unsigned b_PressTitle : 1; /* Use alternate Title text on press */ ++ unsigned b_UseTips : 1; /* Whether to use tips or not. */ + unsigned b_WindowName : 1; /* Use alternate Window and Icon name */ + } flags_type; + +@@ -130,6 +134,9 @@ struct container_info_struct + int colorset; /* b_Colorset */ + int activeColorset; /* b_ActiveColorset */ + int pressColorset; /* b_PressColorset */ ++ char *tipsfont; /* b_TipsFont*/ ++ ftips_config *tips_config; /* Struct that holds tips info.*/ ++ + Pixel fc; /* b_Fore */ + Pixel bc, hc, sc; /* b_Back && !b_IconBack */ + FvwmPicture *backicon; /* b_Back && b_IconBack */ +@@ -186,6 +193,7 @@ struct button_info_struct + FvwmPicture *pressicon; /* b_PressIcon */ + int activeColorset; /* b_ActiveColorset */ + int pressColorset; /* b_PressColorset */ ++ char *tipslabel; /* b_TipsLabel */ + Window IconWin; /* b_Swallow */ + Window PanelWin; /* b_Panel */ + Window BackIconWin; /* b_Back && b_IconBack */ +diff -urNp fvwm3-1.0.2-orig/modules/FvwmButtons/parse.c fvwm3-1.0.2/modules/FvwmButtons/parse.c +--- fvwm3-1.0.2-orig/modules/FvwmButtons/parse.c 2020-12-12 02:37:08.000000000 +0200 ++++ fvwm3-1.0.2/modules/FvwmButtons/parse.c 2021-03-16 12:20:18.874960921 +0200 +@@ -912,6 +912,7 @@ static void ParseButton(button_info **ub + "presstitle", + "activecolorset", + "presscolorset", ++ "tipslabel", + "top", + NULL + }; +@@ -1642,7 +1643,6 @@ static void ParseButton(button_info **ub + b->flags.b_ActiveColorset = 0; + } + break; +- + /* --------------- --------------- */ + case 26: /* PressColorset */ + i = strtol(s, &t, 10); +@@ -1658,8 +1658,31 @@ static void ParseButton(button_info **ub + b->flags.b_PressColorset = 0; + } + break; +- +- case 27: /* top */ ++ /* --------------- --------------- */ ++ case 27: /* TipsLabel */ ++ s = trimleft(s); ++ t = seekright(&s); ++ if(b->flags.b_UseTips) ++ { ++ if (*s == '(') ++ { ++ fprintf(stderr, ++ "%s: justification not allowed " ++ "for TipsLabel.\n", MyName); ++ } ++ if (t && *t && (t[0] != '-' || t[1] != 0)) ++ { ++ if (b->tipslabel != NULL) ++ { ++ free(b->tipslabel); ++ } else { ++ b->tipslabel = t; ++ } ++ } ++ } ++ break; ++ /* --------------- --------------- */ ++ case 28: /* top */ + b->flags.b_Top = 1; + break; + /* --------------- --------------- */ +@@ -1815,6 +1838,14 @@ static void ParseConfigLine(button_info + "activecolorset", + "presscolorset", + "windowname", ++ "usetips", ++ "tipsfont", ++ "tipsdelay", ++ "tipscolorset", ++ "tipsborderwidth", ++ "tipsplacement", ++ "tipsjustification", ++ "tipsoffset", + NULL + }; + int i, j, k; +@@ -1980,6 +2011,100 @@ static void ParseConfigLine(button_info + break; + } + ++ case 16: /* UseTips */ ++ /* We're using tips.*/ ++ ub->c->flags.b_UseTips = 1; ++ ++ /* Set the defaults up. */ ++ ub->c->tips_config = FTipsNewConfig(); ++ ++ /* Include fonts. */ ++ CopyStringWithQuotes(&ub->c->tipsfont,FONT_STRING); ++ ub->c->tips_config->Ffont = FlocaleLoadFont(Dpy, ++ ub->c->tipsfont, MyName); ++ break; ++ ++ case 17: /* TipsFont */ ++ if(ub->c->flags.b_UseTips) ++ { ++ CopyStringWithQuotes(&ub->c->tipsfont,s); ++ ++ ub->c->tips_config->Ffont = FlocaleLoadFont(Dpy, ub->c->tipsfont, ++ MyName); ++ } ++ break; ++ ++ case 18: /*TipsDelay */ ++ if(ub->c->flags.b_UseTips) ++ { ++ i = sscanf(s, "%d %d", &j, &k); ++ if( i > 0) ++ { ++ /* Then only one value was given. Set the ++ * mapped_delay option to this given value ++ * also since it's optional. ++ */ ++ ub->c->tips_config->delay = ub->c->tips_config->mapped_delay = j; ++ } ++ if( i > 1) ++ { ++ /* Two values passed in. We only need to ++ * change the value for mapped_delay here. ++ */ ++ ub->c->tips_config->mapped_delay = k; ++ } ++ } ++ break; ++ ++ case 19: /* TipsColorset */ ++ if (ub->c->flags.b_UseTips) ++ { ++ i = sscanf(s, "%d", &j); ++ if (i > 0) ++ { ++ ub->c->tips_config->colorset = j; ++ AllocColorset(j); ++ } ++ } ++ break; ++ ++ case 20: /* TipsBorderWidth */ ++ if (ub->c->flags.b_UseTips) ++ { ++ i = sscanf(s, "%d", &j); ++ ++ if(i > 0) ++ { ++ ub->c->tips_config->border_width = j; ++ } ++ } ++ break; ++ ++ case 21: /* TipsPlacement */ ++ if(ub->c->flags.b_UseTips) ++ { ++ s = trimleft(s); ++ ++ /* Options ... */ ++ if(!strcasecmp(s, "up")) ++ { ++ i = FTIPS_PLACEMENT_UP; ++ } else if(!strcasecmp(s, "down")) { ++ i = FTIPS_PLACEMENT_DOWN; ++ } else if(!strcasecmp(s, "left")) { ++ i = FTIPS_PLACEMENT_LEFT; ++ } else if(!strcasecmp(s, "right")) { ++ i = FTIPS_PLACEMENT_RIGHT; ++ } else if(!strcasecmp(s, "updown")) { ++ i = FTIPS_PLACEMENT_AUTO_UPDOWN; ++ } else if(!strcasecmp(s, "leftright")) { ++ i = FTIPS_PLACEMENT_AUTO_LEFTRIGHT; ++ } ++ ++ ub->c->tips_config->placement = i; ++ } ++ break; ++ + default: + s = trimleft(s); + ParseButton(ubb, s); diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 0000000..d3bf14c --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1,2 @@ +ru +uk diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 0000000..90515a1 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,68 @@ +fvwm/scripts/clipman.sh.in +fvwm/scripts/mail.sh.in +fvwm/scripts/shot.sh.in +fvwm/scripts/weather.sh.in +fvwm/cpu.c +settings/ysettings.sh +settings/desktop.sh.in +settings/interface.sh.in +settings/mime.sh.in +settings/panel.sh.in +settings/printer.sh.in +settings/session.sh.in +settings/term.sh.in +settings/panel/bat.sh.in +settings/panel/clock.sh.in +settings/panel/cpu.sh.in +settings/panel/mail.sh.in +settings/panel/menu.sh.in +settings/panel/run.sh.in +settings/panel/shot.sh.in +settings/panel/sysinfo.sh.in +settings/panel/taskbar.sh.in +settings/panel/volume.sh.in +settings/panel/weather.sh.in +settings/panel/wifi.sh.in +utils/ydentry.sh +utils/yfind.sh +utils/yimage.sh +utils/ylogout.sh +utils/ymedia.sh +utils/ymixer.sh +utils/ynotes.sh +utils/ypass.sh +utils/yps.sh +utils/yrun.sh +utils/ysysinfo.sh +utils/yterm.sh +utils/ywget.sh +utils/ywifi.sh +data/menu/desktop-directories/AudioVideo.directory.in +data/menu/desktop-directories/Development.directory.in +data/menu/desktop-directories/Education.directory.in +data/menu/desktop-directories/Game.directory.in +data/menu/desktop-directories/Graphics.directory.in +data/menu/desktop-directories/Network.directory.in +data/menu/desktop-directories/Office.directory.in +data/menu/desktop-directories/Settings.directory.in +data/menu/desktop-directories/System-Tools.directory.in +data/menu/desktop-directories/Utility.directory.in +data/settings/ysettings.desktop.in +data/settings/desk.desktop.in +data/settings/interface.desktop.in +data/settings/mime.desktop.in +data/settings/panel.desktop.in +data/settings/printer.desktop.in +data/settings/session.desktop.in +data/settings/sound.desktop.in +data/settings/term.desktop.in +data/utils/yfind.desktop.in +data/utils/yimage.desktop.in +data/utils/ynotes.desktop.in +data/utils/ysession.desktop.in +data/utils/ysysinfo.desktop.in +[type: gettext/fvwm] fvwm/config/menus.fvwm +[type: gettext/fvwm] fvwm/config/applets/menu.fvwm +[type: gettext/fvwm] fvwm/config/applets/shot.fvwm +[type: gettext/fvwm] fvwm/config/applets/volume.fvwm +[type: gettext/fvwm] fvwm/config/applets/media.fvwm diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 0000000..7b15bd6 --- /dev/null +++ b/po/ru.po @@ -0,0 +1,1616 @@ +# Russian translation for ydesk +# Copyright (C) 2010-2021 Victor Ananjevsky +# This file is distributed under the same license as the Ydesk package. +# Victor Ananjevsky , 2010-2021 +# +msgid "" +msgstr "" +"Project-Id-Version: ydesk\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-04-07 07:48+0300\n" +"PO-Revision-Date: 2009-09-01 17:42+0300\n" +"Last-Translator: Victor Ananjevsky \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../fvwm/scripts/clipman.sh:95 +msgid "Clear clipboard history" +msgstr "Очистить историю" + +#: ../fvwm/scripts/mail.sh:24 +msgid "New mail" +msgstr "Новая почта" + +#: ../fvwm/scripts/mail.sh:32 +msgid "Server:" +msgstr "Сервер:" + +#: ../fvwm/scripts/mail.sh:32 +msgid "Account:" +msgstr "Учетная запись:" + +#: ../fvwm/scripts/mail.sh:32 +msgid "Password::h" +msgstr "Пароль::h" + +#: ../fvwm/scripts/mail.sh:33 +msgid "Mail account" +msgstr "Почта" + +#: ../fvwm/scripts/mail.sh:33 +msgid "Add new mail account" +msgstr "Добавление новой почтовой учетной записи" + +#: ../fvwm/scripts/mail.sh:35 +msgid "Ydesk mail checker" +msgstr "Проверка почты Ydesk" + +#: ../fvwm/scripts/mail.sh:45 +msgid "Mail configuration" +msgstr "Настройки почты" + +#: ../fvwm/scripts/mail.sh:46 +msgid "List of mail acconts to check" +msgstr "Список проверяемых почтовых учетных записей" + +#: ../fvwm/scripts/mail.sh:49 +msgid "Server" +msgstr "Сервер" + +#: ../fvwm/scripts/mail.sh:49 +msgid "User" +msgstr "Пользователь" + +#: ../fvwm/scripts/shot.sh:15 +msgid "Save screenshot" +msgstr "Сохранить снимок" + +#: ../fvwm/scripts/shot.sh:34 ../fvwm/config/menus.fvwm.h:21 +msgid "Screenshot" +msgstr "Снимок экрана" + +#: ../fvwm/scripts/shot.sh:36 +msgid "Clipboard!yad-paste:bash -c copy_file" +msgstr "Буфер обмена!yad-paste:bash -c copy_file" + +#: ../fvwm/cpu.c:137 +#, c-format +msgid "" +"\n" +"Memory usage: %s / %s" +msgstr "" +"\n" +"Использование памяти: %s / %s" + +#: ../fvwm/cpu.c:143 +#, c-format +msgid "" +"\n" +"Swap usage: %s / %s" +msgstr "" +"\n" +"Использование подкачки: %s / %s" + +#: ../fvwm/cpu.c:218 +#, c-format +msgid "CPU Load - %d%%" +msgstr "Загрузка ЦПУ - %d%%" + +#: ../fvwm/cpu.c:220 +#, c-format +msgid "CPU%d Load - %d%%" +msgstr "Загрузка ЦПУ%d - %d%%" + +#: ../fvwm/cpu.c:285 +msgid "Set window width" +msgstr "Задать ширину окна" + +#: ../fvwm/cpu.c:285 +msgid "WIDTH" +msgstr "ШИРИНА" + +#: ../fvwm/cpu.c:286 +msgid "Set CPU number" +msgstr "Задать номер ЦПУ" + +#: ../fvwm/cpu.c:286 +msgid "NUM" +msgstr "НОМЕР" + +#: ../fvwm/cpu.c:296 +msgid "- CPU load monitor" +msgstr "- Монитор загрузки ЦПУ" + +#: ../settings/ysettings.sh:18 +msgid "" +"Ydesktop settings manager\\nSelect " +"applet for configure corresponding settings\\n\\n" +msgstr "" +"Менеджер настроек Y desktop" +"\\nВыберите нужный апплет для запуска диалога настроек\\n\\n" + +#: ../settings/ysettings.sh:21 +msgid "Ydesktop settings" +msgstr "Настройки Ydesktop" + +#: ../settings/desktop.sh.in:27 +msgid "Quicklaunch item" +msgstr "Элемент быстрого доступа" + +#: ../settings/desktop.sh.in:27 +msgid "Quicklaunch item editor" +msgstr "Редактор элемента быстрого доступа" + +#: ../settings/desktop.sh.in:29 +msgid "Icon:" +msgstr "Иконка:" + +#: ../settings/desktop.sh.in:30 ../settings/session.sh.in:29 +msgid "Name:" +msgstr "Имя:" + +#: ../settings/desktop.sh.in:31 ../settings/session.sh.in:30 +msgid "Description:" +msgstr "Описание:" + +#: ../settings/desktop.sh.in:32 ../settings/session.sh.in:31 +msgid "Command:" +msgstr "Команда:" + +#. first tab (common) +#: ../settings/desktop.sh.in:39 +msgid "Common settings" +msgstr "Общие настройки" + +#: ../settings/desktop.sh.in:41 +msgid "Number of desktops::NUM" +msgstr "Количество рабочих столов::NUM" + +#: ../settings/desktop.sh.in:42 +msgid "Clipboard history size::NUM" +msgstr "Размер истории буфера обмена::NUM" + +#: ../settings/desktop.sh.in:43 +msgid "0 will disable clipboard management:LBL" +msgstr "0 запрещает управление буфером обмена:LBL" + +#. second tab (fonts) +#: ../settings/desktop.sh.in:46 +msgid "Fonts settings" +msgstr "Настройки шрифтов" + +#: ../settings/desktop.sh.in:48 +msgid "Default font::FN" +msgstr "Шрифт по-умолчанию::FN" + +#: ../settings/desktop.sh.in:49 +msgid "Menu title font::FN" +msgstr "Шрифт заголовка меню::FN" + +#: ../settings/desktop.sh.in:50 +msgid "Tooltips font::FN" +msgstr "Шрифт всплывающих подсказок::FN" + +#: ../settings/desktop.sh.in:51 +msgid "Window title font::FN" +msgstr "Шрифт заголовка окна::FN" + +#. third tab (apps) +#: ../settings/desktop.sh.in:54 +msgid "Application settings" +msgstr "Настройки приложений" + +#: ../settings/desktop.sh.in:56 +msgid "Terminal command:" +msgstr "Команда терминала:" + +#: ../settings/desktop.sh.in:57 +msgid "Filemanager command:" +msgstr "Команда менеджера файлов:" + +#: ../settings/desktop.sh.in:58 +msgid "Editor command:" +msgstr "Команда редактора:" + +#: ../settings/desktop.sh.in:59 +msgid "Web browser command:" +msgstr "Команда веб-броузера:" + +#: ../settings/desktop.sh.in:60 +msgid "E-mail client command:" +msgstr "Команда клиента e-mail:" + +#: ../settings/desktop.sh.in:61 +msgid "Lock screen command:" +msgstr "Команда блокировки экрана:" + +#: ../settings/desktop.sh.in:71 +msgid "Add/remove quicklaunch items" +msgstr "Добавление/удаление элементов быстрого доступа" + +#: ../settings/desktop.sh.in:73 ../settings/session.sh.in:58 +#: ../utils/ydentry.sh:13 ../utils/yfind.sh:55 ../utils/yfind.sh:60 +#: ../utils/ysysinfo.sh:49 +msgid "Name" +msgstr "Имя" + +#: ../settings/desktop.sh.in:73 ../settings/session.sh.in:58 +msgid "Description:TIP" +msgstr "Описание:TIP" + +#: ../settings/desktop.sh.in:73 ../settings/session.sh.in:58 +msgid "Command" +msgstr "Команда" + +#. main dialog +#: ../settings/desktop.sh.in:76 +msgid "Desktop settings" +msgstr "Общие настройки рабочего стола" + +#: ../settings/desktop.sh.in:78 +msgid "" +"\\nEdit settings of Ydesk\\nChanges will be applied on the next " +"startup\\n\\n" +msgstr "" +"\\nРедактирование настроек рабочего стола Ydesk\\nИзменения будут " +"применены при следующем старте\\n\\n" + +#: ../settings/desktop.sh.in:79 ../settings/session.sh.in:64 +msgid "Common" +msgstr "Общие" + +#: ../settings/desktop.sh.in:79 +msgid "Fonts" +msgstr "Шрифты" + +#: ../settings/desktop.sh.in:79 ../fvwm/config/applets/menu.fvwm.h:1 +msgid "Applications" +msgstr "Приложения" + +#: ../settings/desktop.sh.in:79 +msgid "Quick launch" +msgstr "Быстрый доступ" + +#: ../settings/interface.sh.in:10 +msgid "Interface settings" +msgstr "Настройки интерфейса" + +#: ../settings/interface.sh.in:11 +msgid "GTK+ interface settings" +msgstr "Настройки интерфейса GTK+" + +#: ../settings/interface.sh.in:12 +msgid "Theme name:" +msgstr "Имя темы:" + +#: ../settings/interface.sh.in:13 +msgid "Icon theme name:" +msgstr "Тема иконок:" + +#: ../settings/interface.sh.in:14 +msgid "Cursor theme name:" +msgstr "Тема курсора:" + +#: ../settings/interface.sh.in:15 +msgid "Cursor theme size::NUM" +msgstr "Размер курсора::NUM" + +#: ../settings/interface.sh.in:16 +msgid "Font name::FN" +msgstr "Имя шрифта::FN" + +#: ../settings/mime.sh.in:18 +msgid "MIME types editor" +msgstr "Редактор типов MIME" + +#: ../settings/panel.sh.in:21 +msgid "Add applet" +msgstr "Добавление апплета" + +#: ../settings/panel.sh.in:21 +msgid "Select panel applet" +msgstr "Выбрать апплет панели" + +#: ../settings/panel.sh.in:27 +msgid "Separator" +msgstr "Разделитель" + +#: ../settings/panel.sh.in:28 +msgid "Add size after sep in applet name to set separator width" +msgstr "" +"Добавьте размер после sep в имени апплета для установки ширины разделителя" + +#: ../settings/panel.sh.in:30 +msgid "Warning" +msgstr "Предупреждение" + +#: ../settings/panel.sh.in:31 +msgid "There is no additional configuration for applet '$2'" +msgstr "Для апплета '$2' не существует дополнительных настроек" + +#: ../settings/panel.sh.in:43 +msgid "Panel main settings" +msgstr "Основные настройки панели" + +#: ../settings/panel.sh.in:44 +msgid "Enable panel:CHK" +msgstr "Разрешить панель:CHK" + +#: ../settings/panel.sh.in:45 +msgid "Panel position::CB" +msgstr "Расположение панели::CB" + +#: ../settings/panel.sh.in:46 +msgid "Panel icons size::NUM" +msgstr "Размер иконок на панели::NUM" + +#: ../settings/panel.sh.in:47 +msgid "You must restart FVWM for changes will take effect" +msgstr "Вы должны перезапустить FVWM, чтобы изменения вступили в силу" + +#: ../settings/panel.sh.in:50 +msgid "Panel applets settings" +msgstr "Настройки апплетов панели" + +#: ../settings/panel.sh.in:51 +msgid "Module" +msgstr "Модуль" + +#. main dialog +#: ../settings/panel.sh.in:54 +msgid "Panel settings" +msgstr "Настройки панели" + +#: ../settings/panel.sh.in:54 +msgid "Ydesk panel settings" +msgstr "Настройки панели Ydesk" + +#: ../settings/panel.sh.in:56 ../settings/session.sh.in:63 +msgid "" +"\\nEdit settings of Ydesk session\\nChanges will be applied on the " +"next startup\\n\\n" +msgstr "" +"\\nРедактирование настроек сессии Ydesk\\nИзменения будут " +"применены при следующем старте\\n\\n" + +#. main dialog +#: ../settings/panel.sh.in:57 ../settings/term.sh.in:104 +msgid "Main" +msgstr "Основные" + +#: ../settings/panel.sh.in:57 +msgid "Applets" +msgstr "апплеты" + +#: ../settings/printer.sh.in:18 ../utils/ymedia.sh:33 +msgid "Error" +msgstr "Ошибка" + +#: ../settings/printer.sh.in:19 +#, sh-format +msgid "CUPS server at $SRV not available" +msgstr "Сервер CUPS на $SRV недоступен" + +#: ../settings/printer.sh.in:21 +msgid "Printer settings" +msgstr "Настройки принтера" + +#: ../settings/session.sh.in:27 +msgid "Autostart item" +msgstr "Автостарт" + +#: ../settings/session.sh.in:27 +msgid "Autostart item editor" +msgstr "Редактор элемента автостарта" + +#. first tab +#: ../settings/session.sh.in:39 +msgid "Base Configuration:LBL" +msgstr "Базовая конфигурация:LBL" + +#: ../settings/session.sh.in:40 +msgid "Update XDG users directories at startup:CHK" +msgstr "Создавать/обновлять каталоги XDG при старте:CHK" + +#: ../settings/session.sh.in:41 +msgid "Run URXVT server at startup:CHK" +msgstr "Запускать сервер URXVT при старте:CHK" + +#: ../settings/session.sh.in:42 +msgid "Run EMACS server at startup:CHK" +msgstr "Запускать сервер EMACS при старте:CHK" + +#: ../settings/session.sh.in:43 +msgid "Background settings:LBL" +msgstr "Настройки фона:LBL" + +#: ../settings/session.sh.in:44 +msgid "Background::CLR" +msgstr "Цвет фона::CLR" + +#: ../settings/session.sh.in:45 +msgid "Wallpaper::MFL" +msgstr "Обои::MFL" + +#: ../settings/session.sh.in:46 +msgid "Other settings:LBL" +msgstr "Другие настройки:LBL" + +#: ../settings/session.sh.in:47 +msgid "Enable compositing:CHK" +msgstr "Разрешить композитинг:CHK" + +#: ../settings/session.sh.in:57 +msgid "" +"Add/remove autostart items\\n(only users autostart directory proceeded)" +msgstr "" +"Автозапускаемые команды\\n(Обрабатываются только определенные " +"пользователем)" + +#. main dialog +#: ../settings/session.sh.in:61 ../data/settings/session.desktop.in.h:1 +msgid "Session settings" +msgstr "Настройки сессии" + +#: ../settings/session.sh.in:64 +msgid "Autostart" +msgstr "Автостарт" + +#. main page +#: ../settings/term.sh.in:66 +msgid "Title:" +msgstr "Заголовок:" + +#: ../settings/term.sh.in:67 +msgid "Width::num" +msgstr "Ширина::num" + +#: ../settings/term.sh.in:68 +msgid "Height::num" +msgstr "Высота::num" + +#: ../settings/term.sh.in:69 +msgid "Font::fn" +msgstr "Шрифт::fn" + +#: ../settings/term.sh.in:70 +msgid "Term:" +msgstr "Терминал:" + +#: ../settings/term.sh.in:71 +msgid "Enable login shell:chk" +msgstr "Использовать регистрационную оболочку:chk" + +#: ../settings/term.sh.in:72 +msgid "Enable scrollbars:chk" +msgstr "Использовать полосу прокрутки:chk" + +#: ../settings/term.sh.in:73 +msgid "Use bold font:chk" +msgstr "Использовать жирный шрифт:chk" + +#: ../settings/term.sh.in:75 +msgid "Foreground::clr" +msgstr "Цвет символов::clr" + +#: ../settings/term.sh.in:76 +msgid "Background::clr" +msgstr "Цвет фона::clr" + +#: ../settings/term.sh.in:77 +msgid "Highlight::clr" +msgstr "Цвет выделения::clr" + +#: ../settings/term.sh.in:78 +msgid "Highlight text::clr" +msgstr "Цвет текста выделения::clr" + +#. palette page +#: ../settings/term.sh.in:82 +msgid "Black::clr" +msgstr "Черный::clr" + +#: ../settings/term.sh.in:83 +msgid "Red::clr" +msgstr "Красный::clr" + +#: ../settings/term.sh.in:84 +msgid "Green::clr" +msgstr "Зеленый::clr" + +#: ../settings/term.sh.in:85 +msgid "Brown::clr" +msgstr "Коричневый::clr" + +#: ../settings/term.sh.in:86 +msgid "Blue::clr" +msgstr "Синий::clr" + +#: ../settings/term.sh.in:87 +msgid "Magenta::clr" +msgstr "Пурпурный::clr" + +#: ../settings/term.sh.in:88 +msgid "Cyan::clr" +msgstr "Голубой::clr" + +#: ../settings/term.sh.in:89 +msgid "Light gray::clr" +msgstr "Светло-серый::clr" + +#: ../settings/term.sh.in:90 +msgid "Gray::clr" +msgstr "Серый::clr" + +#: ../settings/term.sh.in:91 +msgid "Light red::clr" +msgstr "Светло-красный::clr" + +#: ../settings/term.sh.in:92 +msgid "Light green::clr" +msgstr "Светло-зеленый::clr" + +#: ../settings/term.sh.in:93 +msgid "Yellow::clr" +msgstr "Желтый::clr" + +#: ../settings/term.sh.in:94 +msgid "Light blue::clr" +msgstr "Светло-синий::clr" + +#: ../settings/term.sh.in:95 +msgid "Light magenta::clr" +msgstr "Розовый::clr" + +#: ../settings/term.sh.in:96 +msgid "Light cyan::clr" +msgstr "Светло-голубой::clr" + +#: ../settings/term.sh.in:97 +msgid "White::clr" +msgstr "Белый::clr" + +#: ../settings/term.sh.in:104 +msgid "Palette" +msgstr "Палитра" + +#: ../settings/term.sh.in:104 +msgid "Misc" +msgstr "Разное" + +#: ../settings/term.sh.in:105 +msgid "Terminal settings" +msgstr "Настройки терминала" + +#: ../settings/term.sh.in:106 +msgid "Terminal settings (URxvt)" +msgstr "Настройки терминала (URxvt)" + +#: ../settings/panel/bat.sh.in:10 +msgid "Battery applet" +msgstr "Апплет батареи" + +#: ../settings/panel/bat.sh.in:11 +msgid "Battery applet configuration" +msgstr "Настройки апплета батареи" + +#: ../settings/panel/bat.sh.in:12 +msgid "Battery name:" +msgstr "Название батареи:" + +#: ../settings/panel/bat.sh.in:13 +msgid "AC adapter name:" +msgstr "Название адаптера:" + +#: ../settings/panel/clock.sh.in:10 +msgid "Clock applet" +msgstr "Апплет часов" + +#: ../settings/panel/clock.sh.in:12 +msgid "Clock applet configuration" +msgstr "Настройки апплета часов" + +#: ../settings/panel/clock.sh.in:13 +msgid "Time format:" +msgstr "Формат времени:" + +#: ../settings/panel/clock.sh.in:14 +msgid "Clock foreground color::CLR" +msgstr "Цвет символов часов::CLR" + +#: ../settings/panel/clock.sh.in:15 +msgid "Clock font::FN" +msgstr "Шрифт часов::FN" + +#: ../settings/panel/clock.sh.in:16 +msgid "Clock width::NUM" +msgstr "Ширина часов::NUM" + +#: ../settings/panel/cpu.sh.in:10 +msgid "CPU applet" +msgstr "Апплет ЦПУ" + +#: ../settings/panel/cpu.sh.in:12 +msgid "CPU load applet configuration" +msgstr "Настройки апплета загрузки ЦПУ" + +#: ../settings/panel/cpu.sh.in:13 +msgid "Indicator foregroung color::CLR" +msgstr "Цвет индикатора::CLR" + +#: ../settings/panel/cpu.sh.in:14 +msgid "Indicator backgroung color::CLR" +msgstr "Цвет фона индикатора::CLR" + +#: ../settings/panel/cpu.sh.in:15 +msgid "Show memory usage:CHK" +msgstr "Показывать использование памяти:CHK" + +#: ../settings/panel/cpu.sh.in:16 ../settings/panel/weather.sh.in:19 +msgid "Update interval::NUM" +msgstr "Интервал обновления::NUM" + +#: ../settings/panel/cpu.sh.in:17 +msgid "Indicator width::NUM" +msgstr "Ширина индикатора::NUM" + +#: ../settings/panel/mail.sh.in:10 ../settings/panel/wifi.sh.in:10 +msgid "Mail applet" +msgstr "Апплет почты" + +#: ../settings/panel/mail.sh.in:11 ../settings/panel/wifi.sh.in:11 +#, fuzzy +msgid "Mail applet configuration" +msgstr "Настройки почты" + +#: ../settings/panel/mail.sh.in:12 +msgid "Mail check time::NUM" +msgstr "" + +#: ../settings/panel/menu.sh.in:10 +msgid "Menubar applet" +msgstr "" + +#: ../settings/panel/menu.sh.in:12 +#, fuzzy +msgid "Menubar applet configuration" +msgstr "Настройки почты" + +#: ../settings/panel/menu.sh.in:13 +#, fuzzy +msgid "Menubar font::FN" +msgstr "Шрифт заголовка меню::FN" + +#: ../settings/panel/run.sh.in:10 +#, fuzzy +msgid "Run applet" +msgstr "Добавление апплета" + +#: ../settings/panel/run.sh.in:12 +#, fuzzy +msgid "Run applet configuration" +msgstr "Настройки почты" + +#: ../settings/panel/run.sh.in:13 +#, fuzzy +msgid "Foreground color::CLR" +msgstr "Цвет символов::clr" + +#: ../settings/panel/run.sh.in:14 +#, fuzzy +msgid "Background color::CLR" +msgstr "Цвет фона::CLR" + +#: ../settings/panel/run.sh.in:15 +#, fuzzy +msgid "Run applet font::FN" +msgstr "Шрифт по-умолчанию::FN" + +#: ../settings/panel/run.sh.in:16 +msgid "Run applet width::NUM" +msgstr "" + +#: ../settings/panel/shot.sh.in:13 +#, fuzzy +msgid "Screenshot applet" +msgstr "Снимок экрана" + +#: ../settings/panel/shot.sh.in:15 +#, fuzzy +msgid "Screenshot applet configuration" +msgstr "Настройки почты" + +#: ../settings/panel/shot.sh.in:16 +#, fuzzy +msgid "Default action::CB" +msgstr "Шрифт по-умолчанию::FN" + +#: ../settings/panel/sysinfo.sh.in:10 +#, fuzzy +msgid "Sysinfo applet" +msgstr "Добавление апплета" + +#: ../settings/panel/sysinfo.sh.in:12 +#, fuzzy +msgid "Sysinfo applet configuration" +msgstr "Настройки почты" + +#: ../settings/panel/sysinfo.sh.in:13 +#, fuzzy +msgid "Sysinfo width::NUN" +msgstr "Ширина часов::NUM" + +#: ../settings/panel/taskbar.sh.in:10 +msgid "Taskbar applet" +msgstr "" + +#: ../settings/panel/taskbar.sh.in:12 +#, fuzzy +msgid "Taskbar applet configuration" +msgstr "Настройки почты" + +#: ../settings/panel/taskbar.sh.in:13 +msgid "Taskbar width::NUN" +msgstr "" + +#: ../settings/panel/volume.sh.in:16 +#, fuzzy +msgid "Volume applet" +msgstr "Добавление апплета" + +#: ../settings/panel/volume.sh.in:18 +#, fuzzy +msgid "Volume applet configuration" +msgstr "Настройки почты" + +#: ../settings/panel/volume.sh.in:19 +#, fuzzy +msgid "Default control device::CB" +msgstr "Шрифт по-умолчанию::FN" + +#: ../settings/panel/weather.sh.in:12 +#, fuzzy +msgid "Weather applet" +msgstr "Выбрать апплет панели" + +#: ../settings/panel/weather.sh.in:14 +#, fuzzy +msgid "Weather applet configuration" +msgstr "Настройки почты" + +#: ../settings/panel/weather.sh.in:15 +#, fuzzy +msgid "City name:" +msgstr "Имя шрифта::FN" + +#: ../settings/panel/weather.sh.in:16 +msgid "Country code:" +msgstr "" + +#: ../settings/panel/weather.sh.in:17 +msgid "Measure units:" +msgstr "" + +#: ../settings/panel/weather.sh.in:18 +msgid "APi key:" +msgstr "" + +#: ../settings/panel/wifi.sh.in:12 +msgid "Wifi interface name:" +msgstr "" + +#: ../utils/ydentry.sh:10 +msgid "Desktop entry editor" +msgstr "Редактор desktop файлов" + +#: ../utils/ydentry.sh:10 +msgid "Edit desktop entry ${1%%*/}" +msgstr "Редактирование описания ${1%%*/}" + +#: ../utils/ydentry.sh:12 +msgid "Type:CB" +msgstr "Тип:CB" + +#: ../utils/ydentry.sh:14 +msgid "Generic name" +msgstr "Общее имя" + +#: ../utils/ydentry.sh:15 +msgid "Comment" +msgstr "Комментарий" + +#: ../utils/ydentry.sh:16 +msgid "Command:FL" +msgstr "Команда:FL" + +#: ../utils/ydentry.sh:17 +msgid "Icon" +msgstr "Иконка" + +#: ../utils/ydentry.sh:18 +msgid "In terminal:CHK" +msgstr "Запустить в терминале:chk" + +#: ../utils/ydentry.sh:19 +msgid "Startup notify:CHK" +msgstr "Уведомление о запуске:CHK" + +#: ../utils/yfind.sh:55 +msgid "Use regex:chk" +msgstr "Использовать регулярные выражения:chk" + +#: ../utils/yfind.sh:56 +msgid "Directory:dir" +msgstr "Каталог:dir" + +#: ../utils/yfind.sh:56 +msgid "Newer than:dt" +msgstr "Новее чем:dt" + +#: ../utils/yfind.sh:57 +msgid "Content" +msgstr "Содержимое" + +#: ../utils/yfind.sh:60 +msgid "Search results:" +msgstr "Результаты поиска:" + +#: ../utils/yfind.sh:60 +msgid "Size:sz" +msgstr "Размер:sz" + +#: ../utils/yfind.sh:60 +msgid "Perms" +msgstr "Права" + +#: ../utils/yfind.sh:61 +msgid "Date" +msgstr "Дата" + +#: ../utils/yfind.sh:61 +msgid "Owner" +msgstr "Владелец" + +#: ../utils/yfind.sh:64 +msgid "Find files" +msgstr "Найти файлы" + +#: ../utils/yimage.sh:12 +msgid "Select image" +msgstr "Выбрать изображение" + +#: ../utils/yimage.sh:12 +msgid "Images" +msgstr "Изображения" + +#: ../utils/yimage.sh:18 +#, sh-format +msgid "No such file - $filename" +msgstr "Нет такого файла - $filename" + +#: ../utils/yimage.sh:25 +msgid "Exif data" +msgstr "Данные Exif" + +#: ../utils/yimage.sh:26 +#, sh-format +msgid "Show EXIF data for file:\\n$fn" +msgstr "Отображение данных EXIF для файла:\\n$fn" + +#: ../utils/yimage.sh:27 +msgid "Field" +msgstr "Поле" + +#: ../utils/yimage.sh:27 +msgid "Data" +msgstr "Данные" + +#: ../utils/yimage.sh:32 +msgid "" +"\\tFile: %f\\n\\tSize: %b\\n\\tGeometry: %G\\n" +"\\tType: %m\\n\\t%c" +msgstr "" +"\\tФайл: %f\\n\\tРазмер: %b\\n\\tГеометрия: %G\\n" +"\\tТип: %m\\n\\t%c" + +#: ../utils/yimage.sh:36 ../data/utils/yimage.desktop.in.h:1 +msgid "Image viewer" +msgstr "Просмотр изображений" + +#: ../utils/yimage.sh:37 +msgid "EXIF Info!info:bash -c 'show_info \\" +msgstr "Данные EXIF!info:bash -c 'show_info \\" + +#: ../utils/ylogout.sh:11 ../fvwm/config/menus.fvwm.h:14 +msgid "Power Off" +msgstr "Выключить" + +#: ../utils/ylogout.sh:11 ../fvwm/config/menus.fvwm.h:15 +msgid "Reboot" +msgstr "Перезагрузить" + +#: ../utils/ylogout.sh:11 ../fvwm/config/menus.fvwm.h:16 +msgid "Suspend" +msgstr "Спящий режим" + +#: ../utils/ylogout.sh:11 ../utils/ylogout.sh:26 ../fvwm/config/menus.fvwm.h:17 +msgid "Logout" +msgstr "Выход" + +#: ../utils/ylogout.sh:26 +msgid "\\nChoose logout action:\\n" +msgstr "\\nВыберите действие:\\n" + +#: ../utils/ylogout.sh:27 +msgid "Action:cb" +msgstr "Действие:cb" + +#: ../utils/ylogout.sh:27 +msgid "Save last choise:chk" +msgstr "Сохранить выбранное действие:chk" + +#: ../utils/ymedia.sh:24 +msgid "$mp\\n${vendor:-Unknown} $model ($dev)" +msgstr "$mp\\n${vendor:-Неизвестно} $model ($dev)" + +#: ../utils/ymedia.sh:34 +msgid "Error\\nUnable to unplug $2" +msgstr "Ошибка\\nНевозможно отключить $2" + +#: ../utils/ymedia.sh:42 +msgid "Removable media" +msgstr "Сменные носители" + +#: ../utils/ymedia.sh:45 +msgid "Manage removable media\\nDouble click on media for unplug it" +msgstr "" +"Управление внешними носителями\\nДвойной щелчок по носителю отключает его" + +#: ../utils/ymedia.sh:46 ../utils/ysysinfo.sh:35 +msgid "Mountpoint" +msgstr "Смонтировано" + +#: ../utils/ymedia.sh:46 ../utils/ysysinfo.sh:35 ../utils/ysysinfo.sh:42 +#: ../utils/ysysinfo.sh:54 +msgid "Device" +msgstr "Устройство" + +#: ../utils/ymixer.sh:9 +msgid "ALSA Mixer" +msgstr "ALSA Миксер" + +#: ../utils/ynotes.sh:14 +msgid "Notes" +msgstr "Заметки" + +#: ../utils/ynotes.sh:39 +msgid "Text notes" +msgstr "Текстовые заметки" + +#: ../utils/ypass.sh:11 +msgid "Password authentication is required\\n$1\\n" +msgstr "Требуется авторизация по паролю\\n$1\\n" + +#: ../utils/ypass.sh:13 +msgid "Password prompt" +msgstr "Запрос пароля" + +#: ../utils/yps.sh:6 ../fvwm/config/menus.fvwm.h:20 +msgid "Process viewer" +msgstr "Список процессов" + +#. create and run dialog +#: ../utils/yrun.sh:25 +msgid "Run command" +msgstr "Запустить команду" + +#: ../utils/yrun.sh:25 +msgid "\\nEnter command or uri to execute:\\n" +msgstr "\\nВведите команду или адрес для запуска:\\n" + +#: ../utils/yrun.sh:27 +msgid "Command:cbe" +msgstr "Команда:cbe" + +#: ../utils/yrun.sh:27 +msgid "Run in terminal:chk" +msgstr "Запустить в терминале:chk" + +#: ../utils/ysysinfo.sh:17 +msgid "Module information" +msgstr "Информация о модуле" + +#. CPU tab +#: ../utils/ysysinfo.sh:24 +msgid "CPU information" +msgstr "Информация о процессоре" + +#: ../utils/ysysinfo.sh:25 ../utils/ysysinfo.sh:30 +msgid "Parameter" +msgstr "Параметр" + +#: ../utils/ysysinfo.sh:25 ../utils/ysysinfo.sh:30 ../utils/ysysinfo.sh:71 +msgid "Value" +msgstr "Значение" + +#. Memory tab +#: ../utils/ysysinfo.sh:29 +msgid "Memory usage information" +msgstr "Использование памяти" + +#. Harddrive tab +#: ../utils/ysysinfo.sh:34 +msgid "Disk space usage" +msgstr "Использование дискового пространства" + +#: ../utils/ysysinfo.sh:35 +msgid "Type" +msgstr "Тип" + +#: ../utils/ysysinfo.sh:36 +msgid "Total:sz" +msgstr "Всего:sz" + +#: ../utils/ysysinfo.sh:36 +msgid "Free:sz" +msgstr "Свободно:sz" + +#: ../utils/ysysinfo.sh:36 +msgid "Usage:bar" +msgstr "Использовано:bar" + +#. PCI tab +#: ../utils/ysysinfo.sh:40 +msgid "PCI bus devices" +msgstr "Устройства на шине PCI" + +#: ../utils/ysysinfo.sh:41 +msgid "ID" +msgstr "ID" + +#: ../utils/ysysinfo.sh:41 +msgid "Class" +msgstr "Класс" + +#: ../utils/ysysinfo.sh:42 +msgid "Vendor" +msgstr "Производитель" + +#: ../utils/ysysinfo.sh:42 +msgid "Rev" +msgstr "Ревизия" + +#. Modules tab +#: ../utils/ysysinfo.sh:46 +msgid "Loaded kernel modules" +msgstr "Загруженные модули ядра" + +#: ../utils/ysysinfo.sh:49 +msgid "Used" +msgstr "Используется" + +#: ../utils/ysysinfo.sh:49 +msgid "Depends" +msgstr "Зависимости" + +#. Battery tab +#: ../utils/ysysinfo.sh:53 +msgid "Battery state" +msgstr "Состояние батареи" + +#: ../utils/ysysinfo.sh:54 +msgid "Details" +msgstr "Подробности" + +#: ../utils/ysysinfo.sh:70 +msgid "Temperature sensors information" +msgstr "Информация температурных сенсоров" + +#: ../utils/ysysinfo.sh:71 +msgid "Sensor" +msgstr "Сенсор" + +#. main dialog +#: ../utils/ysysinfo.sh:74 +msgid "Hardware system information\\\\n\\\\n" +msgstr "Информация об оборудовании\\\\n\\\\n" + +#: ../utils/ysysinfo.sh:75 +msgid "\\\\tOS: $(lsb_release -ds) on $(hostname)\\\\n" +msgstr "\\\\tОС: $(lsb_release -ds) на $(hostname)\\\\n" + +#: ../utils/ysysinfo.sh:76 +msgid "\\\\tKernel: $(uname -sr)\\\\n\\\\n" +msgstr "\\\\tЯдро: $(uname -sr)\\\\n\\\\n" + +#: ../utils/ysysinfo.sh:79 ../data/utils/ysysinfo.desktop.in.h:1 +msgid "System info" +msgstr "Информация о системе" + +#: ../utils/ysysinfo.sh:80 +msgid "Processes!system-run:yps" +msgstr "Процессы!system-run:yps" + +#: ../utils/ysysinfo.sh:81 +msgid "CPU" +msgstr "ЦПУ" + +#: ../utils/ysysinfo.sh:81 +msgid "Memory" +msgstr "Память" + +#: ../utils/ysysinfo.sh:81 +msgid "Disks" +msgstr "Диски" + +#: ../utils/ysysinfo.sh:81 +msgid "PCI" +msgstr "Шина PCI" + +#: ../utils/ysysinfo.sh:81 +msgid "Modules" +msgstr "Модули" + +#: ../utils/ysysinfo.sh:82 +msgid "Battery" +msgstr "Батарея" + +#: ../utils/ysysinfo.sh:82 +msgid "Sensors" +msgstr "Сенсоры" + +#: ../utils/yterm.sh:20 +msgid "Yterm error" +msgstr "Ошибка Yterm" + +#: ../utils/yterm.sh:21 +msgid "No suitable terminal emulator found" +msgstr "Не найден подходящий эмулятор терминала" + +#: ../utils/ywget.sh:13 +msgid "Select file name" +msgstr "Выбрать файл" + +#: ../utils/ywget.sh:19 +#, sh-format +msgid "Download $url" +msgstr "Скачивание $url" + +#: ../utils/ywget.sh:24 +#, sh-format +msgid "URI '$url' is not supported" +msgstr "Адрес '$url' не поддерживается" + +#: ../data/menu/desktop-directories/AudioVideo.directory.in.h:1 +msgid "Sound & Video" +msgstr "Аудио/Видео" + +#: ../data/menu/desktop-directories/AudioVideo.directory.in.h:2 +msgid "Multimedia menu" +msgstr "Меню мультимедиа" + +#: ../data/menu/desktop-directories/Development.directory.in.h:1 +msgid "Programming" +msgstr "Разработка" + +#: ../data/menu/desktop-directories/Development.directory.in.h:2 +msgid "Tools for software development" +msgstr "Средства разработки" + +#: ../data/menu/desktop-directories/Education.directory.in.h:1 +msgid "Education" +msgstr "Образование" + +#: ../data/menu/desktop-directories/Game.directory.in.h:1 +msgid "Games" +msgstr "Игры" + +#: ../data/menu/desktop-directories/Game.directory.in.h:2 +msgid "Games and amusements" +msgstr "Игры и развлечения" + +#: ../data/menu/desktop-directories/Graphics.directory.in.h:1 +msgid "Graphics" +msgstr "Графика" + +#: ../data/menu/desktop-directories/Graphics.directory.in.h:2 +msgid "Graphics applications" +msgstr "Графические приложения" + +#: ../data/menu/desktop-directories/Network.directory.in.h:1 +msgid "Internet" +msgstr "Интернет" + +#: ../data/menu/desktop-directories/Network.directory.in.h:2 +msgid "Programs for Internet access such as web and email" +msgstr "Программы для доступа к сети Интернет" + +#: ../data/menu/desktop-directories/Office.directory.in.h:1 +msgid "Office" +msgstr "Офис" + +#: ../data/menu/desktop-directories/Office.directory.in.h:2 +msgid "Office Applications" +msgstr "Оыисные приложения" + +#: ../data/menu/desktop-directories/Settings.directory.in.h:1 +#: ../fvwm/config/menus.fvwm.h:18 +msgid "Settings" +msgstr "Настройки" + +#: ../data/menu/desktop-directories/Settings.directory.in.h:2 +msgid "System settings" +msgstr "Системные настройки" + +#: ../data/menu/desktop-directories/System-Tools.directory.in.h:1 +msgid "System Tools" +msgstr "Системные" + +#: ../data/menu/desktop-directories/System-Tools.directory.in.h:2 +msgid "System configuration and monitoring" +msgstr "Управление системой" + +#: ../data/menu/desktop-directories/Utility.directory.in.h:1 +msgid "Accessories" +msgstr "Стандартные" + +#: ../data/menu/desktop-directories/Utility.directory.in.h:2 +msgid "Desktop accessories" +msgstr "Стандартные приложения" + +#: ../data/settings/ysettings.desktop.in.h:1 +msgid "Control center" +msgstr "Центр управления" + +#: ../data/settings/ysettings.desktop.in.h:2 +msgid "Ydesk control center" +msgstr "Центр управления Ydesk" + +#: ../data/settings/desk.desktop.in.h:1 +msgid "Desktop Settings" +msgstr "Настройки рабочего стола" + +#: ../data/settings/desk.desktop.in.h:2 +msgid "Common ydesk settions" +msgstr "Настройки рабочего стола Ydesk" + +#: ../data/settings/interface.desktop.in.h:1 +msgid "Interace Settings" +msgstr "Настройки интерфейса" + +#: ../data/settings/interface.desktop.in.h:2 +msgid "Configure ixdesktop GTK+ settings" +msgstr "Настройки внешнего вида GTK+ для ixdesktop" + +#: ../data/settings/mime.desktop.in.h:1 +msgid "MIME Types Editor" +msgstr "Редактор типов MIME" + +#: ../data/settings/mime.desktop.in.h:2 +msgid "Edit MIME types" +msgstr "Редактирование типов MIME" + +#: ../data/settings/panel.desktop.in.h:1 +msgid "Panels Settings" +msgstr "Настройки панелей" + +#: ../data/settings/panel.desktop.in.h:2 +msgid "Configure desktop panels" +msgstr "Изменение настроек панелей" + +#: ../data/settings/printer.desktop.in.h:1 +msgid "Printer Settings" +msgstr "Настройки принтера" + +#: ../data/settings/printer.desktop.in.h:2 +msgid "Configure printers" +msgstr "Настройка принтера" + +#: ../data/settings/session.desktop.in.h:2 +msgid "Edit Ydesk session settings" +msgstr "Редактирование настроек сессии Ydesk" + +#: ../data/settings/sound.desktop.in.h:1 +msgid "Sound Settings" +msgstr "Настройки звука" + +#: ../data/settings/sound.desktop.in.h:2 +msgid "Configure ALSA sound volumes" +msgstr "Настройки звуковой подсистемы ALSA" + +#: ../data/settings/term.desktop.in.h:1 +msgid "Terminal Settings" +msgstr "Настройки терминала" + +#: ../data/settings/term.desktop.in.h:2 +msgid "Configure terminal (urxvt) settings" +msgstr "Настройки терминала (urxvt)" + +#: ../data/utils/yfind.desktop.in.h:1 +msgid "File search" +msgstr "Поиск файлов" + +#: ../data/utils/yfind.desktop.in.h:2 +msgid "Search for Files or Folders on disk" +msgstr "Поиск файлов или каталогов на диске" + +#: ../data/utils/yimage.desktop.in.h:2 +msgid "Simple image viewer" +msgstr "Просмотр изображений" + +#: ../data/utils/ynotes.desktop.in.h:1 +msgid "Quick Notes" +msgstr "Заметки" + +#: ../data/utils/ynotes.desktop.in.h:2 +msgid "Keep small pieces of text" +msgstr "Сохранение кусочков текста" + +#: ../data/utils/ysession.desktop.in.h:1 +msgid "Y desktop" +msgstr "Y desktop" + +#: ../data/utils/ysession.desktop.in.h:2 +msgid "Default session for Y desktop" +msgstr "Основная сессия для Y desktop" + +#: ../data/utils/ysysinfo.desktop.in.h:2 +msgid "Show information about system" +msgstr "Показать информацию о системе" + +#: ../fvwm/config/menus.fvwm.h:1 +msgid "Iconify" +msgstr "Свернуть" + +#: ../fvwm/config/menus.fvwm.h:2 +msgid "Maximize" +msgstr "Развернуть" + +#: ../fvwm/config/menus.fvwm.h:3 +msgid "Move" +msgstr "Переместить" + +#: ../fvwm/config/menus.fvwm.h:4 +msgid "Resize" +msgstr "Изменить размер" + +#: ../fvwm/config/menus.fvwm.h:5 +msgid "Shade" +msgstr "В заголовок" + +#: ../fvwm/config/menus.fvwm.h:6 +msgid "Stick" +msgstr "Прилепить" + +#: ../fvwm/config/menus.fvwm.h:7 +msgid "Close" +msgstr "Закрыть" + +#: ../fvwm/config/menus.fvwm.h:8 +msgid "Indent" +msgstr "Информация" + +#: ../fvwm/config/menus.fvwm.h:9 +msgid "Main menu" +msgstr "Главное меню" + +#: ../fvwm/config/menus.fvwm.h:10 +msgid "Recent" +msgstr "Недавно открытые" + +#: ../fvwm/config/menus.fvwm.h:11 +msgid "Search" +msgstr "Поиск" + +#: ../fvwm/config/menus.fvwm.h:12 +msgid "Run" +msgstr "Запустить" + +#: ../fvwm/config/menus.fvwm.h:13 +msgid "Shutdown" +msgstr "Остановить" + +#: ../fvwm/config/menus.fvwm.h:19 +msgid "Media" +msgstr "Внешние носители" + +#: ../fvwm/config/menus.fvwm.h:22 +msgid "FVWM console" +msgstr "Консоль FVWM" + +#: ../fvwm/config/menus.fvwm.h:23 +msgid "Update icons" +msgstr "Обновить иконки" + +#: ../fvwm/config/menus.fvwm.h:24 +msgid "Lock screen" +msgstr "Запереть экран" + +#: ../fvwm/config/menus.fvwm.h:25 +msgid "Restart FVWM" +msgstr "Перезапустить FVWM" + +#: ../fvwm/config/menus.fvwm.h:26 +msgid "Whole screen" +msgstr "Весь экран" + +#: ../fvwm/config/menus.fvwm.h:27 +msgid "Window/Region" +msgstr "Окно/Область" + +#: ../fvwm/config/menus.fvwm.h:28 +msgid "Check mail" +msgstr "Проверка почты" + +#: ../fvwm/config/menus.fvwm.h:29 +msgid "Configuration" +msgstr "Настройки" + +#: ../fvwm/config/applets/menu.fvwm.h:2 +msgid "Actions" +msgstr "Действия" + +#: ../fvwm/config/applets/shot.fvwm.h:1 +msgid "Make a screenshot" +msgstr "Снимок экрана" + +#: ../fvwm/config/applets/volume.fvwm.h:1 +msgid "Sound volume" +msgstr "Громкость звука" + +#: ../fvwm/config/applets/media.fvwm.h:1 +msgid "Manage removable media" +msgstr "Управление сменными носителями" + +#~ msgid "Root!Region" +#~ msgstr "Весь экран!Окно/Область" + +#~ msgid "Include window frames:chk" +#~ msgstr "Включать обрамление окон:chk" + +#~ msgid "Delay::scl" +#~ msgstr "Задержка::scl" + +#~ msgid "Enable clipboard management?:NUM" +#~ msgstr "Разрешить управление буфером обмена?:NUM" + +#~ msgid "Default" +#~ msgstr "По умолчанию" + +#~ msgid "Icons only" +#~ msgstr "Иконки" + +#~ msgid "Text only" +#~ msgstr "Текст" + +#~ msgid "Text below icons" +#~ msgstr "Текст под иконкой" + +#~ msgid "Text beside icons" +#~ msgstr "Текст слева от иконки" + +#~ msgid "Menu" +#~ msgstr "Меню" + +#~ msgid "Small toolbar" +#~ msgstr "Маленькая панель" + +#~ msgid "Large toolbar" +#~ msgstr "Большая панель" + +#~ msgid "Buttons" +#~ msgstr "Кнопки" + +#~ msgid "DND" +#~ msgstr "DND" + +#~ msgid "Dialog" +#~ msgstr "Диалог" + +#~ msgid "GTK+ theme::cb" +#~ msgstr "Тема GTK+::cb" + +#~ msgid "GTK+ key theme::cb" +#~ msgstr "Тема клавиш GTK+::cb" + +#, sh-format +#~ msgid "$keythemelist" +#~ msgstr "$keythemelist" + +#, sh-format +#~ msgid "$iconthemelist" +#~ msgstr "$iconthemelist" + +#, sh-format +#~ msgid "$cursorthemelist" +#~ msgstr "$cursorthemelist" + +#~ msgid "Toolbar style::cb" +#~ msgstr "Стиль панели инструментов::cb" + +#, sh-format +#~ msgid "$tbstylelist" +#~ msgstr "$tbstylelist" + +#, sh-format +#~ msgid "$tbiconsizelist" +#~ msgstr "$tbiconsizelist" + +#~ msgid "Button images:chk" +#~ msgstr "Иконки на кнопках:chk" + +#~ msgid "Menu images:chk" +#~ msgstr "Иконки в меню:chk" + +#~ msgid "None" +#~ msgstr "Нет" + +#~ msgid "Slight" +#~ msgstr "Легкий" + +#~ msgid "Medium" +#~ msgstr "Средний" + +#~ msgid "Full" +#~ msgstr "Полный" + +#~ msgid "Use antialiasing:chk" +#~ msgstr "Использовать антиалиасинг:chk" + +#~ msgid "Use hinting:chk" +#~ msgstr "Использовать хинтинг:chk" + +#~ msgid "Hinting style::cb" +#~ msgstr "Стиль хинтинга::cb" + +#, sh-format +#~ msgid "$hintstylelist" +#~ msgstr "$hintstylelist" + +#~ msgid "RGBA type::cb" +#~ msgstr "Тип RGBA::cb" + +#, sh-format +#~ msgid "$rgbalist" +#~ msgstr "$rgbalist" + +#~ msgid "Text::clr" +#~ msgstr "Цвет текста::clr" + +#~ msgid "Base::clr" +#~ msgstr "Цвет фона текста::clr" + +#~ msgid "Selected fore::clr" +#~ msgstr "Цвет текста выделения::clr" + +#~ msgid "Selected back::clr" +#~ msgstr "Фон выделения::clr" + +#~ msgid "Tooltip back::clr" +#~ msgstr "Фон подсказок::clr" + +#~ msgid "Colors" +#~ msgstr "Цвета" + +#~ msgid "Common interface settings" +#~ msgstr "Общие настройки интерфейса" + +#~ msgid "" +#~ "\\nChoose panel configuration\\ndefault is for edit " +#~ "default config\\n\\n" +#~ msgstr "" +#~ "\\nВыберите конфигурацию панели\\ndefault - для " +#~ "конфигурации по-умолчанию\\n\\n" + +#~ msgid "Simple desktop entry editor" +#~ msgstr "Простой редактор desctop файлов" + +#~ msgid "WiFi manager" +#~ msgstr "WiFi менеджер" + +#~ msgid "Manage WiFi connections" +#~ msgstr "Управление WiFi соединениями" diff --git a/po/uk.po b/po/uk.po new file mode 100644 index 0000000..abfb7a7 --- /dev/null +++ b/po/uk.po @@ -0,0 +1,1430 @@ +# Ukrainian translation for Ixdesktop +# Copyright (C) 2010-2017 +# This file is distributed under the same license as the Ixdesktop package. +# Victor Ananjevsky , 2015 +# +msgid "" +msgstr "" +"Project-Id-Version: Ixdesktop 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-04-07 07:48+0300\n" +"PO-Revision-Date: 2014-11-23 22:37+0200\n" +"Last-Translator: Victor Ananjevsky \n" +"Language-Team: \n" +"Language: Ukrainian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../fvwm/scripts/clipman.sh:95 +msgid "Clear clipboard history" +msgstr "" + +#: ../fvwm/scripts/mail.sh:24 +msgid "New mail" +msgstr "" + +#: ../fvwm/scripts/mail.sh:32 +msgid "Server:" +msgstr "" + +#: ../fvwm/scripts/mail.sh:32 +msgid "Account:" +msgstr "" + +#: ../fvwm/scripts/mail.sh:32 +msgid "Password::h" +msgstr "" + +#: ../fvwm/scripts/mail.sh:33 +msgid "Mail account" +msgstr "" + +#: ../fvwm/scripts/mail.sh:33 +msgid "Add new mail account" +msgstr "" + +#: ../fvwm/scripts/mail.sh:35 +msgid "Ydesk mail checker" +msgstr "" + +#: ../fvwm/scripts/mail.sh:45 +msgid "Mail configuration" +msgstr "" + +#: ../fvwm/scripts/mail.sh:46 +msgid "List of mail acconts to check" +msgstr "" + +#: ../fvwm/scripts/mail.sh:49 +msgid "Server" +msgstr "" + +#: ../fvwm/scripts/mail.sh:49 +msgid "User" +msgstr "" + +#: ../fvwm/scripts/shot.sh:15 +msgid "Save screenshot" +msgstr "" + +#: ../fvwm/scripts/shot.sh:34 ../fvwm/config/menus.fvwm.h:21 +msgid "Screenshot" +msgstr "" + +#: ../fvwm/scripts/shot.sh:36 +msgid "Clipboard!yad-paste:bash -c copy_file" +msgstr "" + +#: ../fvwm/cpu.c:137 +#, c-format +msgid "" +"\n" +"Memory usage: %s / %s" +msgstr "" + +#: ../fvwm/cpu.c:143 +#, c-format +msgid "" +"\n" +"Swap usage: %s / %s" +msgstr "" + +#: ../fvwm/cpu.c:218 +#, c-format +msgid "CPU Load - %d%%" +msgstr "" + +#: ../fvwm/cpu.c:220 +#, c-format +msgid "CPU%d Load - %d%%" +msgstr "" + +#: ../fvwm/cpu.c:285 +msgid "Set window width" +msgstr "" + +#: ../fvwm/cpu.c:285 +msgid "WIDTH" +msgstr "" + +#: ../fvwm/cpu.c:286 +msgid "Set CPU number" +msgstr "" + +#: ../fvwm/cpu.c:286 +msgid "NUM" +msgstr "" + +#: ../fvwm/cpu.c:296 +msgid "- CPU load monitor" +msgstr "" + +#: ../settings/ysettings.sh:18 +msgid "" +"Ydesktop settings manager\\nSelect " +"applet for configure corresponding settings\\n\\n" +msgstr "" + +#: ../settings/ysettings.sh:21 +msgid "Ydesktop settings" +msgstr "" + +#: ../settings/desktop.sh.in:27 +msgid "Quicklaunch item" +msgstr "" + +#: ../settings/desktop.sh.in:27 +msgid "Quicklaunch item editor" +msgstr "" + +#: ../settings/desktop.sh.in:29 +msgid "Icon:" +msgstr "" + +#: ../settings/desktop.sh.in:30 ../settings/session.sh.in:29 +msgid "Name:" +msgstr "" + +#: ../settings/desktop.sh.in:31 ../settings/session.sh.in:30 +msgid "Description:" +msgstr "" + +#: ../settings/desktop.sh.in:32 ../settings/session.sh.in:31 +msgid "Command:" +msgstr "" + +#. first tab (common) +#: ../settings/desktop.sh.in:39 +msgid "Common settings" +msgstr "" + +#: ../settings/desktop.sh.in:41 +msgid "Number of desktops::NUM" +msgstr "" + +#: ../settings/desktop.sh.in:42 +msgid "Clipboard history size::NUM" +msgstr "" + +#: ../settings/desktop.sh.in:43 +msgid "0 will disable clipboard management:LBL" +msgstr "" + +#. second tab (fonts) +#: ../settings/desktop.sh.in:46 +msgid "Fonts settings" +msgstr "" + +#: ../settings/desktop.sh.in:48 +msgid "Default font::FN" +msgstr "" + +#: ../settings/desktop.sh.in:49 +msgid "Menu title font::FN" +msgstr "" + +#: ../settings/desktop.sh.in:50 +msgid "Tooltips font::FN" +msgstr "" + +#: ../settings/desktop.sh.in:51 +msgid "Window title font::FN" +msgstr "" + +#. third tab (apps) +#: ../settings/desktop.sh.in:54 +msgid "Application settings" +msgstr "" + +#: ../settings/desktop.sh.in:56 +msgid "Terminal command:" +msgstr "" + +#: ../settings/desktop.sh.in:57 +msgid "Filemanager command:" +msgstr "" + +#: ../settings/desktop.sh.in:58 +msgid "Editor command:" +msgstr "" + +#: ../settings/desktop.sh.in:59 +msgid "Web browser command:" +msgstr "" + +#: ../settings/desktop.sh.in:60 +msgid "E-mail client command:" +msgstr "" + +#: ../settings/desktop.sh.in:61 +msgid "Lock screen command:" +msgstr "" + +#: ../settings/desktop.sh.in:71 +msgid "Add/remove quicklaunch items" +msgstr "" + +#: ../settings/desktop.sh.in:73 ../settings/session.sh.in:58 +#: ../utils/ydentry.sh:13 ../utils/yfind.sh:55 ../utils/yfind.sh:60 +#: ../utils/ysysinfo.sh:49 +msgid "Name" +msgstr "" + +#: ../settings/desktop.sh.in:73 ../settings/session.sh.in:58 +msgid "Description:TIP" +msgstr "" + +#: ../settings/desktop.sh.in:73 ../settings/session.sh.in:58 +msgid "Command" +msgstr "" + +#. main dialog +#: ../settings/desktop.sh.in:76 +msgid "Desktop settings" +msgstr "" + +#: ../settings/desktop.sh.in:78 +msgid "" +"\\nEdit settings of Ydesk\\nChanges will be applied on the next " +"startup\\n\\n" +msgstr "" + +#: ../settings/desktop.sh.in:79 ../settings/session.sh.in:64 +msgid "Common" +msgstr "" + +#: ../settings/desktop.sh.in:79 +msgid "Fonts" +msgstr "" + +#: ../settings/desktop.sh.in:79 ../fvwm/config/applets/menu.fvwm.h:1 +msgid "Applications" +msgstr "" + +#: ../settings/desktop.sh.in:79 +msgid "Quick launch" +msgstr "" + +#: ../settings/interface.sh.in:10 +msgid "Interface settings" +msgstr "" + +#: ../settings/interface.sh.in:11 +msgid "GTK+ interface settings" +msgstr "" + +#: ../settings/interface.sh.in:12 +msgid "Theme name:" +msgstr "" + +#: ../settings/interface.sh.in:13 +msgid "Icon theme name:" +msgstr "" + +#: ../settings/interface.sh.in:14 +msgid "Cursor theme name:" +msgstr "" + +#: ../settings/interface.sh.in:15 +msgid "Cursor theme size::NUM" +msgstr "" + +#: ../settings/interface.sh.in:16 +msgid "Font name::FN" +msgstr "" + +#: ../settings/mime.sh.in:18 +msgid "MIME types editor" +msgstr "" + +#: ../settings/panel.sh.in:21 +msgid "Add applet" +msgstr "" + +#: ../settings/panel.sh.in:21 +msgid "Select panel applet" +msgstr "" + +#: ../settings/panel.sh.in:27 +msgid "Separator" +msgstr "" + +#: ../settings/panel.sh.in:28 +msgid "Add size after sep in applet name to set separator width" +msgstr "" + +#: ../settings/panel.sh.in:30 +msgid "Warning" +msgstr "" + +#: ../settings/panel.sh.in:31 +msgid "There is no additional configuration for applet '$2'" +msgstr "" + +#: ../settings/panel.sh.in:43 +msgid "Panel main settings" +msgstr "" + +#: ../settings/panel.sh.in:44 +msgid "Enable panel:CHK" +msgstr "" + +#: ../settings/panel.sh.in:45 +msgid "Panel position::CB" +msgstr "" + +#: ../settings/panel.sh.in:46 +msgid "Panel icons size::NUM" +msgstr "" + +#: ../settings/panel.sh.in:47 +msgid "You must restart FVWM for changes will take effect" +msgstr "" + +#: ../settings/panel.sh.in:50 +msgid "Panel applets settings" +msgstr "" + +#: ../settings/panel.sh.in:51 +msgid "Module" +msgstr "" + +#. main dialog +#: ../settings/panel.sh.in:54 +msgid "Panel settings" +msgstr "" + +#: ../settings/panel.sh.in:54 +msgid "Ydesk panel settings" +msgstr "" + +#: ../settings/panel.sh.in:56 ../settings/session.sh.in:63 +msgid "" +"\\nEdit settings of Ydesk session\\nChanges will be applied on the " +"next startup\\n\\n" +msgstr "" + +#. main dialog +#: ../settings/panel.sh.in:57 ../settings/term.sh.in:104 +msgid "Main" +msgstr "" + +#: ../settings/panel.sh.in:57 +msgid "Applets" +msgstr "" + +#: ../settings/printer.sh.in:18 ../utils/ymedia.sh:33 +msgid "Error" +msgstr "" + +#: ../settings/printer.sh.in:19 +#, sh-format +msgid "CUPS server at $SRV not available" +msgstr "" + +#: ../settings/printer.sh.in:21 +msgid "Printer settings" +msgstr "" + +#: ../settings/session.sh.in:27 +msgid "Autostart item" +msgstr "" + +#: ../settings/session.sh.in:27 +msgid "Autostart item editor" +msgstr "" + +#. first tab +#: ../settings/session.sh.in:39 +msgid "Base Configuration:LBL" +msgstr "" + +#: ../settings/session.sh.in:40 +msgid "Update XDG users directories at startup:CHK" +msgstr "" + +#: ../settings/session.sh.in:41 +msgid "Run URXVT server at startup:CHK" +msgstr "" + +#: ../settings/session.sh.in:42 +msgid "Run EMACS server at startup:CHK" +msgstr "" + +#: ../settings/session.sh.in:43 +msgid "Background settings:LBL" +msgstr "" + +#: ../settings/session.sh.in:44 +msgid "Background::CLR" +msgstr "" + +#: ../settings/session.sh.in:45 +msgid "Wallpaper::MFL" +msgstr "" + +#: ../settings/session.sh.in:46 +msgid "Other settings:LBL" +msgstr "" + +#: ../settings/session.sh.in:47 +msgid "Enable compositing:CHK" +msgstr "" + +#: ../settings/session.sh.in:57 +msgid "" +"Add/remove autostart items\\n(only users autostart directory proceeded)" +msgstr "" + +#. main dialog +#: ../settings/session.sh.in:61 ../data/settings/session.desktop.in.h:1 +msgid "Session settings" +msgstr "" + +#: ../settings/session.sh.in:64 +msgid "Autostart" +msgstr "" + +#. main page +#: ../settings/term.sh.in:66 +msgid "Title:" +msgstr "" + +#: ../settings/term.sh.in:67 +msgid "Width::num" +msgstr "" + +#: ../settings/term.sh.in:68 +msgid "Height::num" +msgstr "" + +#: ../settings/term.sh.in:69 +msgid "Font::fn" +msgstr "" + +#: ../settings/term.sh.in:70 +msgid "Term:" +msgstr "" + +#: ../settings/term.sh.in:71 +msgid "Enable login shell:chk" +msgstr "" + +#: ../settings/term.sh.in:72 +msgid "Enable scrollbars:chk" +msgstr "" + +#: ../settings/term.sh.in:73 +msgid "Use bold font:chk" +msgstr "" + +#: ../settings/term.sh.in:75 +msgid "Foreground::clr" +msgstr "" + +#: ../settings/term.sh.in:76 +msgid "Background::clr" +msgstr "" + +#: ../settings/term.sh.in:77 +msgid "Highlight::clr" +msgstr "" + +#: ../settings/term.sh.in:78 +msgid "Highlight text::clr" +msgstr "" + +#. palette page +#: ../settings/term.sh.in:82 +msgid "Black::clr" +msgstr "" + +#: ../settings/term.sh.in:83 +msgid "Red::clr" +msgstr "" + +#: ../settings/term.sh.in:84 +msgid "Green::clr" +msgstr "" + +#: ../settings/term.sh.in:85 +msgid "Brown::clr" +msgstr "" + +#: ../settings/term.sh.in:86 +msgid "Blue::clr" +msgstr "" + +#: ../settings/term.sh.in:87 +msgid "Magenta::clr" +msgstr "" + +#: ../settings/term.sh.in:88 +msgid "Cyan::clr" +msgstr "" + +#: ../settings/term.sh.in:89 +msgid "Light gray::clr" +msgstr "" + +#: ../settings/term.sh.in:90 +msgid "Gray::clr" +msgstr "" + +#: ../settings/term.sh.in:91 +msgid "Light red::clr" +msgstr "" + +#: ../settings/term.sh.in:92 +msgid "Light green::clr" +msgstr "" + +#: ../settings/term.sh.in:93 +msgid "Yellow::clr" +msgstr "" + +#: ../settings/term.sh.in:94 +msgid "Light blue::clr" +msgstr "" + +#: ../settings/term.sh.in:95 +msgid "Light magenta::clr" +msgstr "" + +#: ../settings/term.sh.in:96 +msgid "Light cyan::clr" +msgstr "" + +#: ../settings/term.sh.in:97 +msgid "White::clr" +msgstr "" + +#: ../settings/term.sh.in:104 +msgid "Palette" +msgstr "" + +#: ../settings/term.sh.in:104 +msgid "Misc" +msgstr "" + +#: ../settings/term.sh.in:105 +msgid "Terminal settings" +msgstr "" + +#: ../settings/term.sh.in:106 +msgid "Terminal settings (URxvt)" +msgstr "" + +#: ../settings/panel/bat.sh.in:10 +msgid "Battery applet" +msgstr "" + +#: ../settings/panel/bat.sh.in:11 +msgid "Battery applet configuration" +msgstr "" + +#: ../settings/panel/bat.sh.in:12 +msgid "Battery name:" +msgstr "" + +#: ../settings/panel/bat.sh.in:13 +msgid "AC adapter name:" +msgstr "" + +#: ../settings/panel/clock.sh.in:10 +msgid "Clock applet" +msgstr "" + +#: ../settings/panel/clock.sh.in:12 +msgid "Clock applet configuration" +msgstr "" + +#: ../settings/panel/clock.sh.in:13 +msgid "Time format:" +msgstr "" + +#: ../settings/panel/clock.sh.in:14 +msgid "Clock foreground color::CLR" +msgstr "" + +#: ../settings/panel/clock.sh.in:15 +msgid "Clock font::FN" +msgstr "" + +#: ../settings/panel/clock.sh.in:16 +msgid "Clock width::NUM" +msgstr "" + +#: ../settings/panel/cpu.sh.in:10 +msgid "CPU applet" +msgstr "" + +#: ../settings/panel/cpu.sh.in:12 +msgid "CPU load applet configuration" +msgstr "" + +#: ../settings/panel/cpu.sh.in:13 +msgid "Indicator foregroung color::CLR" +msgstr "" + +#: ../settings/panel/cpu.sh.in:14 +msgid "Indicator backgroung color::CLR" +msgstr "" + +#: ../settings/panel/cpu.sh.in:15 +msgid "Show memory usage:CHK" +msgstr "" + +#: ../settings/panel/cpu.sh.in:16 ../settings/panel/weather.sh.in:19 +msgid "Update interval::NUM" +msgstr "" + +#: ../settings/panel/cpu.sh.in:17 +msgid "Indicator width::NUM" +msgstr "" + +#: ../settings/panel/mail.sh.in:10 ../settings/panel/wifi.sh.in:10 +msgid "Mail applet" +msgstr "" + +#: ../settings/panel/mail.sh.in:11 ../settings/panel/wifi.sh.in:11 +msgid "Mail applet configuration" +msgstr "" + +#: ../settings/panel/mail.sh.in:12 +msgid "Mail check time::NUM" +msgstr "" + +#: ../settings/panel/menu.sh.in:10 +msgid "Menubar applet" +msgstr "" + +#: ../settings/panel/menu.sh.in:12 +msgid "Menubar applet configuration" +msgstr "" + +#: ../settings/panel/menu.sh.in:13 +msgid "Menubar font::FN" +msgstr "" + +#: ../settings/panel/run.sh.in:10 +msgid "Run applet" +msgstr "" + +#: ../settings/panel/run.sh.in:12 +msgid "Run applet configuration" +msgstr "" + +#: ../settings/panel/run.sh.in:13 +msgid "Foreground color::CLR" +msgstr "" + +#: ../settings/panel/run.sh.in:14 +msgid "Background color::CLR" +msgstr "" + +#: ../settings/panel/run.sh.in:15 +msgid "Run applet font::FN" +msgstr "" + +#: ../settings/panel/run.sh.in:16 +msgid "Run applet width::NUM" +msgstr "" + +#: ../settings/panel/shot.sh.in:13 +msgid "Screenshot applet" +msgstr "" + +#: ../settings/panel/shot.sh.in:15 +msgid "Screenshot applet configuration" +msgstr "" + +#: ../settings/panel/shot.sh.in:16 +msgid "Default action::CB" +msgstr "" + +#: ../settings/panel/sysinfo.sh.in:10 +msgid "Sysinfo applet" +msgstr "" + +#: ../settings/panel/sysinfo.sh.in:12 +msgid "Sysinfo applet configuration" +msgstr "" + +#: ../settings/panel/sysinfo.sh.in:13 +msgid "Sysinfo width::NUN" +msgstr "" + +#: ../settings/panel/taskbar.sh.in:10 +msgid "Taskbar applet" +msgstr "" + +#: ../settings/panel/taskbar.sh.in:12 +msgid "Taskbar applet configuration" +msgstr "" + +#: ../settings/panel/taskbar.sh.in:13 +msgid "Taskbar width::NUN" +msgstr "" + +#: ../settings/panel/volume.sh.in:16 +msgid "Volume applet" +msgstr "" + +#: ../settings/panel/volume.sh.in:18 +msgid "Volume applet configuration" +msgstr "" + +#: ../settings/panel/volume.sh.in:19 +msgid "Default control device::CB" +msgstr "" + +#: ../settings/panel/weather.sh.in:12 +msgid "Weather applet" +msgstr "" + +#: ../settings/panel/weather.sh.in:14 +msgid "Weather applet configuration" +msgstr "" + +#: ../settings/panel/weather.sh.in:15 +msgid "City name:" +msgstr "" + +#: ../settings/panel/weather.sh.in:16 +msgid "Country code:" +msgstr "" + +#: ../settings/panel/weather.sh.in:17 +msgid "Measure units:" +msgstr "" + +#: ../settings/panel/weather.sh.in:18 +msgid "APi key:" +msgstr "" + +#: ../settings/panel/wifi.sh.in:12 +msgid "Wifi interface name:" +msgstr "" + +#: ../utils/ydentry.sh:10 +msgid "Desktop entry editor" +msgstr "" + +#: ../utils/ydentry.sh:10 +msgid "Edit desktop entry ${1%%*/}" +msgstr "" + +#: ../utils/ydentry.sh:12 +msgid "Type:CB" +msgstr "" + +#: ../utils/ydentry.sh:14 +msgid "Generic name" +msgstr "" + +#: ../utils/ydentry.sh:15 +msgid "Comment" +msgstr "" + +#: ../utils/ydentry.sh:16 +msgid "Command:FL" +msgstr "" + +#: ../utils/ydentry.sh:17 +msgid "Icon" +msgstr "" + +#: ../utils/ydentry.sh:18 +msgid "In terminal:CHK" +msgstr "" + +#: ../utils/ydentry.sh:19 +msgid "Startup notify:CHK" +msgstr "" + +#: ../utils/yfind.sh:55 +msgid "Use regex:chk" +msgstr "" + +#: ../utils/yfind.sh:56 +msgid "Directory:dir" +msgstr "" + +#: ../utils/yfind.sh:56 +msgid "Newer than:dt" +msgstr "" + +#: ../utils/yfind.sh:57 +msgid "Content" +msgstr "" + +#: ../utils/yfind.sh:60 +msgid "Search results:" +msgstr "" + +#: ../utils/yfind.sh:60 +msgid "Size:sz" +msgstr "" + +#: ../utils/yfind.sh:60 +msgid "Perms" +msgstr "" + +#: ../utils/yfind.sh:61 +msgid "Date" +msgstr "" + +#: ../utils/yfind.sh:61 +msgid "Owner" +msgstr "" + +#: ../utils/yfind.sh:64 +msgid "Find files" +msgstr "" + +#: ../utils/yimage.sh:12 +msgid "Select image" +msgstr "" + +#: ../utils/yimage.sh:12 +msgid "Images" +msgstr "" + +#: ../utils/yimage.sh:18 +#, sh-format +msgid "No such file - $filename" +msgstr "" + +#: ../utils/yimage.sh:25 +msgid "Exif data" +msgstr "" + +#: ../utils/yimage.sh:26 +#, sh-format +msgid "Show EXIF data for file:\\n$fn" +msgstr "" + +#: ../utils/yimage.sh:27 +msgid "Field" +msgstr "" + +#: ../utils/yimage.sh:27 +msgid "Data" +msgstr "" + +#: ../utils/yimage.sh:32 +msgid "" +"\\tFile: %f\\n\\tSize: %b\\n\\tGeometry: %G\\n" +"\\tType: %m\\n\\t%c" +msgstr "" + +#: ../utils/yimage.sh:36 ../data/utils/yimage.desktop.in.h:1 +msgid "Image viewer" +msgstr "" + +#: ../utils/yimage.sh:37 +msgid "EXIF Info!info:bash -c 'show_info \\" +msgstr "" + +#: ../utils/ylogout.sh:11 ../fvwm/config/menus.fvwm.h:14 +msgid "Power Off" +msgstr "" + +#: ../utils/ylogout.sh:11 ../fvwm/config/menus.fvwm.h:15 +msgid "Reboot" +msgstr "" + +#: ../utils/ylogout.sh:11 ../fvwm/config/menus.fvwm.h:16 +msgid "Suspend" +msgstr "" + +#: ../utils/ylogout.sh:11 ../utils/ylogout.sh:26 ../fvwm/config/menus.fvwm.h:17 +msgid "Logout" +msgstr "" + +#: ../utils/ylogout.sh:26 +msgid "\\nChoose logout action:\\n" +msgstr "" + +#: ../utils/ylogout.sh:27 +msgid "Action:cb" +msgstr "" + +#: ../utils/ylogout.sh:27 +msgid "Save last choise:chk" +msgstr "" + +#: ../utils/ymedia.sh:24 +msgid "$mp\\n${vendor:-Unknown} $model ($dev)" +msgstr "" + +#: ../utils/ymedia.sh:34 +msgid "Error\\nUnable to unplug $2" +msgstr "" + +#: ../utils/ymedia.sh:42 +msgid "Removable media" +msgstr "" + +#: ../utils/ymedia.sh:45 +msgid "Manage removable media\\nDouble click on media for unplug it" +msgstr "" + +#: ../utils/ymedia.sh:46 ../utils/ysysinfo.sh:35 +msgid "Mountpoint" +msgstr "" + +#: ../utils/ymedia.sh:46 ../utils/ysysinfo.sh:35 ../utils/ysysinfo.sh:42 +#: ../utils/ysysinfo.sh:54 +msgid "Device" +msgstr "" + +#: ../utils/ymixer.sh:9 +msgid "ALSA Mixer" +msgstr "" + +#: ../utils/ynotes.sh:14 +msgid "Notes" +msgstr "" + +#: ../utils/ynotes.sh:39 +msgid "Text notes" +msgstr "" + +#: ../utils/ypass.sh:11 +msgid "Password authentication is required\\n$1\\n" +msgstr "" + +#: ../utils/ypass.sh:13 +msgid "Password prompt" +msgstr "" + +#: ../utils/yps.sh:6 ../fvwm/config/menus.fvwm.h:20 +msgid "Process viewer" +msgstr "" + +#. create and run dialog +#: ../utils/yrun.sh:25 +msgid "Run command" +msgstr "" + +#: ../utils/yrun.sh:25 +msgid "\\nEnter command or uri to execute:\\n" +msgstr "" + +#: ../utils/yrun.sh:27 +msgid "Command:cbe" +msgstr "" + +#: ../utils/yrun.sh:27 +msgid "Run in terminal:chk" +msgstr "" + +#: ../utils/ysysinfo.sh:17 +msgid "Module information" +msgstr "" + +#. CPU tab +#: ../utils/ysysinfo.sh:24 +msgid "CPU information" +msgstr "" + +#: ../utils/ysysinfo.sh:25 ../utils/ysysinfo.sh:30 +msgid "Parameter" +msgstr "" + +#: ../utils/ysysinfo.sh:25 ../utils/ysysinfo.sh:30 ../utils/ysysinfo.sh:71 +msgid "Value" +msgstr "" + +#. Memory tab +#: ../utils/ysysinfo.sh:29 +msgid "Memory usage information" +msgstr "" + +#. Harddrive tab +#: ../utils/ysysinfo.sh:34 +msgid "Disk space usage" +msgstr "" + +#: ../utils/ysysinfo.sh:35 +msgid "Type" +msgstr "" + +#: ../utils/ysysinfo.sh:36 +msgid "Total:sz" +msgstr "" + +#: ../utils/ysysinfo.sh:36 +msgid "Free:sz" +msgstr "" + +#: ../utils/ysysinfo.sh:36 +msgid "Usage:bar" +msgstr "" + +#. PCI tab +#: ../utils/ysysinfo.sh:40 +msgid "PCI bus devices" +msgstr "" + +#: ../utils/ysysinfo.sh:41 +msgid "ID" +msgstr "" + +#: ../utils/ysysinfo.sh:41 +msgid "Class" +msgstr "" + +#: ../utils/ysysinfo.sh:42 +msgid "Vendor" +msgstr "" + +#: ../utils/ysysinfo.sh:42 +msgid "Rev" +msgstr "" + +#. Modules tab +#: ../utils/ysysinfo.sh:46 +msgid "Loaded kernel modules" +msgstr "" + +#: ../utils/ysysinfo.sh:49 +msgid "Used" +msgstr "" + +#: ../utils/ysysinfo.sh:49 +msgid "Depends" +msgstr "" + +#. Battery tab +#: ../utils/ysysinfo.sh:53 +msgid "Battery state" +msgstr "" + +#: ../utils/ysysinfo.sh:54 +msgid "Details" +msgstr "" + +#: ../utils/ysysinfo.sh:70 +msgid "Temperature sensors information" +msgstr "" + +#: ../utils/ysysinfo.sh:71 +msgid "Sensor" +msgstr "" + +#. main dialog +#: ../utils/ysysinfo.sh:74 +msgid "Hardware system information\\\\n\\\\n" +msgstr "" + +#: ../utils/ysysinfo.sh:75 +msgid "\\\\tOS: $(lsb_release -ds) on $(hostname)\\\\n" +msgstr "" + +#: ../utils/ysysinfo.sh:76 +msgid "\\\\tKernel: $(uname -sr)\\\\n\\\\n" +msgstr "" + +#: ../utils/ysysinfo.sh:79 ../data/utils/ysysinfo.desktop.in.h:1 +msgid "System info" +msgstr "" + +#: ../utils/ysysinfo.sh:80 +msgid "Processes!system-run:yps" +msgstr "" + +#: ../utils/ysysinfo.sh:81 +msgid "CPU" +msgstr "" + +#: ../utils/ysysinfo.sh:81 +msgid "Memory" +msgstr "" + +#: ../utils/ysysinfo.sh:81 +msgid "Disks" +msgstr "" + +#: ../utils/ysysinfo.sh:81 +msgid "PCI" +msgstr "" + +#: ../utils/ysysinfo.sh:81 +msgid "Modules" +msgstr "" + +#: ../utils/ysysinfo.sh:82 +msgid "Battery" +msgstr "" + +#: ../utils/ysysinfo.sh:82 +msgid "Sensors" +msgstr "" + +#: ../utils/yterm.sh:20 +msgid "Yterm error" +msgstr "" + +#: ../utils/yterm.sh:21 +msgid "No suitable terminal emulator found" +msgstr "" + +#: ../utils/ywget.sh:13 +msgid "Select file name" +msgstr "" + +#: ../utils/ywget.sh:19 +#, sh-format +msgid "Download $url" +msgstr "" + +#: ../utils/ywget.sh:24 +#, sh-format +msgid "URI '$url' is not supported" +msgstr "" + +#: ../data/menu/desktop-directories/AudioVideo.directory.in.h:1 +msgid "Sound & Video" +msgstr "" + +#: ../data/menu/desktop-directories/AudioVideo.directory.in.h:2 +msgid "Multimedia menu" +msgstr "" + +#: ../data/menu/desktop-directories/Development.directory.in.h:1 +msgid "Programming" +msgstr "" + +#: ../data/menu/desktop-directories/Development.directory.in.h:2 +msgid "Tools for software development" +msgstr "" + +#: ../data/menu/desktop-directories/Education.directory.in.h:1 +msgid "Education" +msgstr "" + +#: ../data/menu/desktop-directories/Game.directory.in.h:1 +msgid "Games" +msgstr "" + +#: ../data/menu/desktop-directories/Game.directory.in.h:2 +msgid "Games and amusements" +msgstr "" + +#: ../data/menu/desktop-directories/Graphics.directory.in.h:1 +msgid "Graphics" +msgstr "" + +#: ../data/menu/desktop-directories/Graphics.directory.in.h:2 +msgid "Graphics applications" +msgstr "" + +#: ../data/menu/desktop-directories/Network.directory.in.h:1 +msgid "Internet" +msgstr "" + +#: ../data/menu/desktop-directories/Network.directory.in.h:2 +msgid "Programs for Internet access such as web and email" +msgstr "" + +#: ../data/menu/desktop-directories/Office.directory.in.h:1 +msgid "Office" +msgstr "" + +#: ../data/menu/desktop-directories/Office.directory.in.h:2 +msgid "Office Applications" +msgstr "" + +#: ../data/menu/desktop-directories/Settings.directory.in.h:1 +#: ../fvwm/config/menus.fvwm.h:18 +msgid "Settings" +msgstr "" + +#: ../data/menu/desktop-directories/Settings.directory.in.h:2 +msgid "System settings" +msgstr "" + +#: ../data/menu/desktop-directories/System-Tools.directory.in.h:1 +msgid "System Tools" +msgstr "" + +#: ../data/menu/desktop-directories/System-Tools.directory.in.h:2 +msgid "System configuration and monitoring" +msgstr "" + +#: ../data/menu/desktop-directories/Utility.directory.in.h:1 +msgid "Accessories" +msgstr "" + +#: ../data/menu/desktop-directories/Utility.directory.in.h:2 +msgid "Desktop accessories" +msgstr "" + +#: ../data/settings/ysettings.desktop.in.h:1 +msgid "Control center" +msgstr "" + +#: ../data/settings/ysettings.desktop.in.h:2 +msgid "Ydesk control center" +msgstr "" + +#: ../data/settings/desk.desktop.in.h:1 +msgid "Desktop Settings" +msgstr "" + +#: ../data/settings/desk.desktop.in.h:2 +msgid "Common ydesk settions" +msgstr "" + +#: ../data/settings/interface.desktop.in.h:1 +msgid "Interace Settings" +msgstr "" + +#: ../data/settings/interface.desktop.in.h:2 +msgid "Configure ixdesktop GTK+ settings" +msgstr "" + +#: ../data/settings/mime.desktop.in.h:1 +msgid "MIME Types Editor" +msgstr "" + +#: ../data/settings/mime.desktop.in.h:2 +msgid "Edit MIME types" +msgstr "" + +#: ../data/settings/panel.desktop.in.h:1 +msgid "Panels Settings" +msgstr "" + +#: ../data/settings/panel.desktop.in.h:2 +msgid "Configure desktop panels" +msgstr "" + +#: ../data/settings/printer.desktop.in.h:1 +msgid "Printer Settings" +msgstr "" + +#: ../data/settings/printer.desktop.in.h:2 +msgid "Configure printers" +msgstr "" + +#: ../data/settings/session.desktop.in.h:2 +msgid "Edit Ydesk session settings" +msgstr "" + +#: ../data/settings/sound.desktop.in.h:1 +msgid "Sound Settings" +msgstr "" + +#: ../data/settings/sound.desktop.in.h:2 +msgid "Configure ALSA sound volumes" +msgstr "" + +#: ../data/settings/term.desktop.in.h:1 +msgid "Terminal Settings" +msgstr "" + +#: ../data/settings/term.desktop.in.h:2 +msgid "Configure terminal (urxvt) settings" +msgstr "" + +#: ../data/utils/yfind.desktop.in.h:1 +msgid "File search" +msgstr "" + +#: ../data/utils/yfind.desktop.in.h:2 +msgid "Search for Files or Folders on disk" +msgstr "" + +#: ../data/utils/yimage.desktop.in.h:2 +msgid "Simple image viewer" +msgstr "" + +#: ../data/utils/ynotes.desktop.in.h:1 +msgid "Quick Notes" +msgstr "" + +#: ../data/utils/ynotes.desktop.in.h:2 +msgid "Keep small pieces of text" +msgstr "" + +#: ../data/utils/ysession.desktop.in.h:1 +msgid "Y desktop" +msgstr "" + +#: ../data/utils/ysession.desktop.in.h:2 +msgid "Default session for Y desktop" +msgstr "" + +#: ../data/utils/ysysinfo.desktop.in.h:2 +msgid "Show information about system" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:1 +msgid "Iconify" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:2 +msgid "Maximize" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:3 +msgid "Move" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:4 +msgid "Resize" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:5 +msgid "Shade" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:6 +msgid "Stick" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:7 +msgid "Close" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:8 +msgid "Indent" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:9 +msgid "Main menu" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:10 +msgid "Recent" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:11 +msgid "Search" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:12 +msgid "Run" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:13 +msgid "Shutdown" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:19 +msgid "Media" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:22 +msgid "FVWM console" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:23 +msgid "Update icons" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:24 +msgid "Lock screen" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:25 +msgid "Restart FVWM" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:26 +msgid "Whole screen" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:27 +msgid "Window/Region" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:28 +msgid "Check mail" +msgstr "" + +#: ../fvwm/config/menus.fvwm.h:29 +msgid "Configuration" +msgstr "" + +#: ../fvwm/config/applets/menu.fvwm.h:2 +msgid "Actions" +msgstr "" + +#: ../fvwm/config/applets/shot.fvwm.h:1 +msgid "Make a screenshot" +msgstr "" + +#: ../fvwm/config/applets/volume.fvwm.h:1 +msgid "Sound volume" +msgstr "" + +#: ../fvwm/config/applets/media.fvwm.h:1 +msgid "Manage removable media" +msgstr "" diff --git a/settings/Makefile.am b/settings/Makefile.am new file mode 100644 index 0000000..cba8fa4 --- /dev/null +++ b/settings/Makefile.am @@ -0,0 +1,7 @@ + +SUBDIRS = panel + +bin_SCRIPTS = ysettings + +confdir = $(libdir)/ydesk/settings +conf_SCRIPTS = desktop.sh interface.sh mime.sh panel.sh printer.sh session.sh term.sh diff --git a/settings/desktop.sh.in b/settings/desktop.sh.in new file mode 100644 index 0000000..7d40059 --- /dev/null +++ b/settings/desktop.sh.in @@ -0,0 +1,125 @@ +#! /bin/bash +# -*- mode: sh -*- +# +# Author: Victor Ananjevsky , 2017-2021 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +res1=$(mktemp --tmpdir=/tmp/ydesk desk-tab1.XXXXXXXX) +res2=$(mktemp --tmpdir=/tmp/ydesk desk-tab2.XXXXXXXX) +res3=$(mktemp --tmpdir=/tmp/ydesk desk-tab3.XXXXXXXX) +res4=$(mktemp --tmpdir=/tmp/ydesk desk-tab4.XXXXXXXX) +trap "rm -f $res1 $res2 $res3 $res4" EXIT + +function ql_edit { + case $1 in + add|edit) + ICON="$2" + NAME="$3" + DESCR="$4" + CMD="$5" + ;; + del) return 0 ;; + *) return 1 ;; + esac + eval flds=($(yad --title=$"Quicklaunch item" --text=$"Quicklaunch item editor" \ + --width=300 --quoted-output --separator=" " --form \ + --field=$"Icon:" "$ICON" \ + --field=$"Name:" "$NAME" \ + --field=$"Description:" "$DESCR" \ + --field=$"Command:" "$CMD")) + echo -e "${flds[0]}\n${flds[1]}\n${flds[2]}\n${flds[3]}\n${flds[0]}" +} +export -f ql_edit + +KEY=$RANDOM + +# first tab (common) +yad --plug=$KEY --tabnum=1 --bool-fmt=t --text=$"Common settings" \ + --image=desktop --form --quoted-output --separator=" " \ + --field=$"Number of desktops::NUM" $(gsettings get ydesk.common ndesk) \ + --field=$"Clipboard history size::NUM" $(gsettings get ydesk.common clip) \ + --field=$"0 will disable clipboard management:LBL" > $res1 & + +# second tab (fonts) +yad --plug=$KEY --tabnum=2 --quoted-output --text=$"Fonts settings" \ + --image=preferences-desktop-font --form --separator=" " \ + --field=$"Default font::FN" "$(eval yad-tools -f -p $(gsettings get ydesk.fonts fn))" \ + --field=$"Menu title font::FN" "$(eval yad-tools -f -p $(gsettings get ydesk.fonts tfn))" \ + --field=$"Tooltips font::FN" "$(eval yad-tools -f -p $(gsettings get ydesk.fonts bfn))" \ + --field=$"Window title font::FN" "$(eval yad-tools -f -p $(gsettings get ydesk.fonts wfn))" > $res2 & + +# third tab (apps) +yad --plug=$KEY --tabnum=3 --quoted-output --text=$"Application settings" \ + --image=preferences-desktop-default-applications --form --separator=" " \ + --field=$"Terminal command:" "$(eval echo $(gsettings get ydesk.apps term))" \ + --field=$"Filemanager command:" "$(eval echo $(gsettings get ydesk.apps fm))" \ + --field=$"Editor command:" "$(eval echo $(gsettings get ydesk.apps editor))" \ + --field=$"Web browser command:" "$(eval echo $(gsettings get ydesk.apps browser))" \ + --field=$"E-mail client command:" "$(eval echo $(gsettings get ydesk.apps mailer))" \ + --field=$"Lock screen command:" "$(eval echo $(gsettings get ydesk.apps lock))" > $res3 & + +# fourth tab (quick launch) +qldir="${XDG_DATA_HOME:-$HOME/.share}/ydesk/qlaunch" +for f in $qldir/*.desktop; do + [[ -e $f ]] || continue + # FIXME: use only awk here + eval $(grep -E '^[[:blank:]]*(Icon|Name|Exec)=' "$f" | sed -r 's/=(.*)$/="\1"/') + echo -e "${Icon}\n$(basename $f .desktop | sed -r 's/^[0-9]+\-//')\n${Name}\n${Exec}\n${Icon}" + unset Icon Name Comment Exec +done | yad --plug=$KEY --tabnum=4 --editable --print-all --text=$"Add/remove quicklaunch items" \ + --image=emblem-symbolic-link --use-interp --row-action="ql_edit" \ + --list --column=":IMG" --column=$"Name" --column=$"Description:TIP" \ + --column=$"Command" --column="Icon:HD" > $res4 & + +# main dialog +yad --title=$"Desktop settings" --window-icon=desktop \ + --button="yad-save:0" --button="yad-close:1" --width=440 --height=540 \ + --text=$"\nEdit settings of Ydesk\nChanges will be applied on the next startup\n\n" \ + --notebook --key=$KEY --tab=$"Common" --tab=$"Fonts" --tab=$"Applications" --tab=$"Quick launch" + +if [[ $? -eq 0 ]]; then + eval r1=($(< $res1)) + eval r2=($(< $res2)) + eval r3=($(< $res3)) + + # update common settings + gsettings set ydesk.common ndesk ${r1[0]} + gsettings set ydesk.common clip ${r1[1]} + + # update fonts settings + gsettings set ydesk.fonts fn $(yad-tools -f -x "${r2[0]}") + gsettings set ydesk.fonts tfn $(yad-tools -f -x "${r2[1]}") + gsettings set ydesk.fonts bfn $(yad-tools -f -x "${r2[2]}") + gsettings set ydesk.fonts wfn $(yad-tools -f -x "${r2[3]}") + + # update apps settings + gsettings set ydesk.apps term "${r3[0]}" + gsettings set ydesk.apps fm "${r3[1]}" + gsettings set ydesk.apps editor "${r3[2]}" + gsettings set ydesk.apps browser "${r3[3]}" + gsettings set ydesk.apps mailer "${r3[4]}" + gsettings set ydesk.apps lock "${r3[5]}" + + # create qlaunch items + rm -f $qldir/*.desktop + i=0 + cat $res4 | while read line; do + eval $(echo $line | awk -F'|' '{printf "ICON=\"%s\" NAME=\"%s\" DESCR=\"%s\" CMD=\"%s\"\n", $5, $2, $3, $4}') + printf -v filename "$qldir/%03d-%s.desktop" $i ${NAME// /_} + cat > $filename << EOF +[Desktop Entry] +Type=Application +Encoding=UTF-8 +Name=$DESCR +Icon=$ICON +Exec=$CMD +StartupNotify=true +Terminal=false +EOF + unset ICON NAME DESCR CMD + ((i++)) + done +fi diff --git a/settings/interface.sh.in b/settings/interface.sh.in new file mode 100644 index 0000000..16adbda --- /dev/null +++ b/settings/interface.sh.in @@ -0,0 +1,121 @@ +#! /bin/bash +# -*- mode: sh -*- +# +# Author: Victor Ananjevsky , 2013 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +res=$(mktemp --tmpdir=/tmp/ydesk iface.XXXXXXXX) +trap "rm -f $res" EXIT + +# create list of gtk themes +eval GTKTHEME=$(gtk-query-settings gtk-theme-name | sed "s/.*: //") +eval KEYTHEME=$(gtk-query-settings gtk-key-theme-name | sed "s/.*: //") +themelist=$"None" +keythemelist=$"Default" +for d in /usr/share/themes/*; do + theme=${d##*/} + if [[ -e $d/gtk-3.0/gtk.css ]]; then + if [[ $theme == $GTKTHEME ]]; then + themelist+="!^$theme" + else + themelist+="!$theme" + fi + fi + if [[ -e $d/gtk-3.0/gtk-keys.css ]]; then + if [[ $theme == $KEYTHEME ]]; then + keythemelist+="!^$theme" + else + keythemelist+="!$theme" + fi + fi +done + +# create list of icon themes +eval ICONTHEME=$(gtk-query-settings gtk-icon-theme-name | sed "s/.*: //") +eval CURSORTHEME=$(gtk-query-settings gtk-cursor-theme-name | sed "s/.*: //") +iconthemelist=$"Default" +cursorthemelist=$"Default" +for d in /usr/share/icons/*; do + theme=${d##*/} + if [[ -e $d/index.theme ]]; then + if [[ $theme == $ICONTHEME ]]; then + iconthemelist+="!^$theme" + else + iconthemelist+="!$theme" + fi + fi + if [[ -e $d/cursors ]]; then + if [[ $theme == $CURSORTHEME ]]; then + cursorthemelist+="!^$theme" + else + cursorthemelist+="!$theme" + fi + fi +done + +CSIZE=$(gtk-query-settings gtk-cursor-theme-size | sed "s/.*: //") + +FONT=$(gtk-query-settings gtk-font-name | sed "s/.*: //") +AALIAS=$(gtk-query-settings gtk-xft-antialias | sed "s/.*: //") +HINTING=$(gtk-query-settings gtk-xft-hinting | sed "s/.*: //") +eval HINTSTYLE=$(gtk-query-settings gtk-xft-hintstyle | sed "s/.*: //") +eval RGBA=$(gtk-query-settings gtk-xft-rgba | sed "s/.*: //") + +DHDR=$(gtk-query-settings gtk-dialogs-use-header | sed "s/.*: //") +SCROLL=$(gtk-query-settings gtk-overlay-scrolling | sed "s/.*: //") +ANIM=$(gtk-query-settings gtk-enable-animations | sed "s/.*: //") +MNEMONIC=$(gtk-query-settings gtk-enable-mnemonics | sed "s/.*: //") +ACCEL=$(gtk-query-settings gtk-enable-accels | sed "s/.*: //") +eval MBACCEL=$(gtk-query-settings gtk-menu-bar-accel | sed "s/.*: //") + +yad --title=$"Interface settings" --width=450 --bool-fmt=1 \ + --quoted-output --separator=" " \ + --image=preferences-desktop-theme \ + --text=$"GTK+ interface settings" --form \ + --field=$"Theme name::CB" "$themelist" \ + --field=$"Key theme name::CB" "$keythemelist" \ + --field=$"Icon theme name::CB" "$iconthemelist" \ + --field=$"Cursor theme name::CB" "$cursorthemelist" \ + --field=$"Cursor theme size::NUM" "$CSIZE" \ + --field=":LBL" "" \ + --field=$"Font name::FN" "$FONT" \ + --field=$"Enable xft antialiasing:CHK" "$AALIAS" \ + --field=$"Enable xft hinting:CHK" "$HINTING" \ + --field=$"Xft hint style:" "$HINTSTYLE" \ + --field=$"Xft RGBA:" "$RGBA" \ + --field=":LBL" "" \ + --field=$"Use dialog headers:CHK" "$DHDR" \ + --field=$"Enable owerlay scrolling:CHK" "$SCROLL" \ + --field=$"Enable animation:CHK" "$ANIM" \ + --field=$"Enable mnemonics:CHK" "$MNEMONIC" \ + --field=$"Enable acceleration:CHK" "$ACCEL" \ + --field=$"Menubar accelerator:" "$MBACCEL" > $res + +if [[ $? -eq 0 ]]; then + eval r=($(< $res)) + + sfile="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini" + mkdir -p $(dirname $sfile) + cat > $sfile <, 2020 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +pipe=$(mktemp -uq --tmpdir=/tmp/ydesk mime.XXXXXXXX) + +trap "rm -f $pipe" EXIT + +mkfifo $pipe +exec 3<> $pipe + +cat $pipe | yad --image=system-run --text=$"MIME types editor" \ + --list --column=":img" --column="Mime type" --column="Application" & +PID=$! + +while read ln; do + if [[ -e /usr/share/mime/$ln.xml ]]; then + icon=$(sed -nr 's/.*generic-icon name="(.*)".*/\1/p' "/usr/share/mime/$ln.xml" 2> /dev/null) + fi + app=$(xdg-mime query default "$ln" 2> /dev/null) + printf "%s\n%s\n%s\n" "$icon" "$ln" "$app" >&3 + unset icon app +done < /usr/share/mime/types + +wait $PID diff --git a/settings/panel.sh.in b/settings/panel.sh.in new file mode 100644 index 0000000..ede8b9c --- /dev/null +++ b/settings/panel.sh.in @@ -0,0 +1,68 @@ +#! /bin/bash +# -*- mode: sh -*- +# +# Author: Victor Ananjevsky , 2011 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +res1=$(mktemp --tmpdir=/tmp/ydesk panel-tab1.XXXXXXXX) +res2=$(mktemp --tmpdir=/tmp/ydesk panel-tab2.XXXXXXXX) +trap "rm -f $res1 $res2" EXIT + +function set_mod { + case $1 in + add) + LIST= + for a in $FVWM_DATADIR/applets/*.fvwm; do + LIST+="$(basename a .fvwm) " + done + yad --title=$"Add applet" --text=$"Select panel applet" --entry $LIST + ;; + edit) + if [[ -e @prefix@/lib/ydesk/settings/panel/$2.sh ]]; then + @prefix@/lib/ydesk/settings/panel/$2.sh &> /dev/null & + elif [[ $2 == sep* ]]; then + yad --title=$"Separator" --image=dialog-info --button=yad-close \ + --text=$"Add size after sep in applet name to set separator width" + else + yad --title=$"Warning" --image=dialog-warning --button=yad-close \ + --text=$"There is no additional configuration for applet '$2'" + fi + ;; + esac +} +export -f set_mod + +KEY=$RANDOM + +eval pos=$(gsettings get ydesk.panel pos) +[[ $pos == top ]] && PANEL_POS="^top!bottom" || PANEL_POS="top!^bottom" + +yad --plug=$KEY --tabnum=1 --text=$"Panel main settings" --form \ + --field=$"Enable panel:CHK" $(gsettings get ydesk.panel enable) \ + --field=$"Panel position::CB" $PANEL_POS \ + --field=$"Panel icons size::NUM" $(gsettings get ydesk.panel izise) \ + --field=":LBL" --field=$"You must restart FVWM for changes will take effect:LBL" > $res1 & + +eval APPLETS=($(gsettings get ydesk.panel applets | sed "s/,/ /g")) +for a in ${APPLETS[@]}; do echo $a; done | yad --plug=$KEY --tabnum=2 --text=$"Panel applets settings" \ + --image="application-x-addon" --separator="," --use-interp --list --editable --row-action="set_mod" \ + --column=$"Module" > $res2 & + +# main dialog +yad --title=$"Panel settings" --window-icon=system-run --text=$"Ydesk panel settings" \ + --image=ypanel --button="yad-save:0" --button="yad-close:1" --width=400 --height=500 \ + --text=$"\nEdit settings of Ydesk panel\n\nChanges will be applied on the next startup\n\n" \ + --notebook --key=$KEY --tab=$"Main" --tab=$"Applets" + +if [[ $? -eq 0 ]]; then + eval r1=($(< $res1)) + + gsettings set ydesk.panel enable ${r[0]} + gsettings set ydesk.panel pos ${r[1]} + gsettings set ydesk.panel isize ${r[2]} + + gsettings set ydesk.panel applets "$(< $res2)" +fi diff --git a/settings/panel/Makefile.am b/settings/panel/Makefile.am new file mode 100644 index 0000000..62ed45c --- /dev/null +++ b/settings/panel/Makefile.am @@ -0,0 +1,5 @@ + +aconfdir = $(libdir)/ydesk/settings/panel +aconf_SCRIPTS = bat.sh clock.sh cpu.sh mail.sh menu.sh run.sh \ + shot.sh sysinfo.sh taskbar.sh volume.sh weather.sh \ + wifi.sh diff --git a/settings/panel/bat.sh.in b/settings/panel/bat.sh.in new file mode 100644 index 0000000..192b677 --- /dev/null +++ b/settings/panel/bat.sh.in @@ -0,0 +1,20 @@ +#! /bin/bash +# -*- mode: sh -*- + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +res=$(mktemp --tmpdir=/tmp/ydesk battery.XXXXXXXX) +trap "rm -f $res" EXIT + +yad --title=$"Battery applet" --window-icon="application-x-addon" --width=300 \ + --image=battery --text=$"Battery applet configuration" --separator=" " --form \ + --field=$"Battery name:" "$(gsettings get ydesk.applets bat_dev)" \ + --field=$"AC adapter name:" "$(gsettings get ydesk.applets bat_ac)" > $res + +if [[ $? -eq 0 ]]; then + eval r=($(< $res)) + + gsettings set ydesk.applets bat_dev "${r[0]}" + gsettings set ydesk.applets bat_ac "${r[1]}" +fi diff --git a/settings/panel/clock.sh.in b/settings/panel/clock.sh.in new file mode 100644 index 0000000..fc476d8 --- /dev/null +++ b/settings/panel/clock.sh.in @@ -0,0 +1,25 @@ +#! /bin/bash +# -*- mode: sh -*- + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +res=$(mktemp --tmpdir=/tmp/ydesk clock.XXXXXXXX) +trap "rm -f $res" EXIT + +yad --title=$"Clock applet" --window-icon="application-x-addon" \ + --width=300 --separator=" " --image=preferences-system-time \ + --text=$"Clock applet configuration" --form \ + --field=$"Time format:" "$(gsettings get ydesk.applets clock_fmt)" \ + --field=$"Clock foreground color::CLR" "$(gsettings get ydesk.applets clock_fg)" \ + --field=$"Clock font::FN" "$(eval yad-tools -f -p $(gsettings get ydesk.applets clock_fn))" \ + --field=$"Clock width::NUM" "$(gsettings get ydesk.applets clock_sz)" > $res + +if [[ $? -eq 0 ]]; then + eval r=($(< $res)) + + gsettings set ydesk.applets clock_fmt "${r[0]}" + gsettings set ydesk.applets clock_fg "${r[1]}" + gsettings set ydesk.applets clock_fn $(yad-tools -f -x "${r[2]}") + gsettings set ydesk.applets clock_sz "${r[3]}" +fi diff --git a/settings/panel/cpu.sh.in b/settings/panel/cpu.sh.in new file mode 100644 index 0000000..2190369 --- /dev/null +++ b/settings/panel/cpu.sh.in @@ -0,0 +1,27 @@ +#! /bin/bash +# -*- mode: sh -*- + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +res=$(mktemp --tmpdir=/tmp/ydesk cpu.XXXXXXXX) +trap "rm -f $res" EXIT + +yad --title=$"CPU applet" --window-icon="application-x-addon" \ + --width=300 --separator=" " --image=cpu --bool-fmt=t \ + --text=$"CPU load applet configuration" --form \ + --field=$"Indicator foregroung color::CLR" "$(gsettings get ydesk.cpu fg)" \ + --field=$"Indicator backgroung color::CLR" "$(gsettings get ydesk.cpu fg)" \ + --field=$"Show memory usage:CHK" "$(gsettings get ydesk.cpu mem)" \ + --field=$"Update interval::NUM" "$(gsettings get ydesk.cpu period)" \ + --field=$"Indicator width::NUM" "$(gsettings get ydesk.applets cpu_sz)" > $res + +if [[ $? -eq 0 ]]; then + eval r=($(< $res)) + + gsettings set ydesk.cpu fg "${r[0]}" + gsettings set ydesk.cpu bg "${r[1]}" + gsettings set ydesk.cpu mem "${r[2]}" + gsettings set ydesk.cpu period "${r[3]}" + gsettings set ydesk.applets cpu_sz "${r[4]}" +fi diff --git a/settings/panel/mail.sh.in b/settings/panel/mail.sh.in new file mode 100644 index 0000000..12c7418 --- /dev/null +++ b/settings/panel/mail.sh.in @@ -0,0 +1,18 @@ +#! /bin/bash +# -*- mode: sh -*- + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +res=$(mktemp --tmpdir=/tmp/ydesk mail.XXXXXXXX) +trap "rm -f $res" EXIT + +yad --title=$"Mail applet" --window-icon="application-x-addon" --width=300 \ + --image=mail-send --text=$"Mail applet configuration" --separator=" " --form \ + --field=$"Mail check time::NUM" "$(gsettings get ydesk.applets mail_time)" > $res + +if [[ $? -eq 0 ]]; then + eval r=($(< $res)) + + gsettings set ydesk.applets mail_tine "${r[0]}" +fi diff --git a/settings/panel/menu.sh.in b/settings/panel/menu.sh.in new file mode 100644 index 0000000..903c1ee --- /dev/null +++ b/settings/panel/menu.sh.in @@ -0,0 +1,19 @@ +#! /bin/bash +# -*- mode: sh -*- + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +res=$(mktemp --tmpdir=/tmp/ydesk mbar.XXXXXXXX) +trap "rm -f $res" EXIT + +yad --title=$"Menubar applet" --window-icon="application-x-addon" \ + --width=300 --image=preferences-desktop-default-applications \ + --text=$"Menubar applet configuration" --separator=" " --form \ + --field=$"Menubar font::FN" "$(eval yad-tools -f -p $(gsettings get ydesk.applets mb_fn))" > $res + +if [[ $? -eq 0 ]]; then + eval r=($(< $res)) + + gsettings set ydesk.applets mb_fn $(yad-tools -f -x "${r[0]}") +fi diff --git a/settings/panel/run.sh.in b/settings/panel/run.sh.in new file mode 100644 index 0000000..2406ce6 --- /dev/null +++ b/settings/panel/run.sh.in @@ -0,0 +1,25 @@ +#! /bin/bash +# -*- mode: sh -*- + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +res=$(mktemp --tmpdir=/tmp/ydesk run.XXXXXXXX) +trap "rm -f $res" EXIT + +yad --title=$"Run applet" --window-icon="application-x-addon" \ + --width=300 --separator=" " --image=system-run \ + --text=$"Run applet configuration" --form \ + --field=$"Foreground color::CLR" "$(gsettings get ydesk.applets run_fg)" \ + --field=$"Background color::CLR" "$(gsettings get ydesk.applets run_bg)" \ + --field=$"Run applet font::FN" "$(eval yad-tools -f -p $(gsettings get ydesk.applets run_fn))" \ + --field=$"Run applet width::NUM" "$(gsettings get ydesk.applets run_sz)" > $res + +if [[ $? -eq 0 ]]; then + eval r=($(< $res)) + + gsettings set ydesk.applets run_fg "${r[0]}" + gsettings set ydesk.applets run_bg "${r[1]}" + gsettings set ydesk.applets run_fn $(yad-tools -f -x "${r[2]}") + gsettings set ydesk.applets run_sz "${r[3]}" +fi diff --git a/settings/panel/shot.sh.in b/settings/panel/shot.sh.in new file mode 100644 index 0000000..9f5261c --- /dev/null +++ b/settings/panel/shot.sh.in @@ -0,0 +1,22 @@ +#! /bin/bash +# -*- mode: sh -*- + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +res=$(mktemp --tmpdir=/tmp/ydesk shot.XXXXXXXX) +trap "rm -f $res" EXIT + +eval act=$(gsettings get ydesk.applets shot_act) +[[ $act == root ]] && ACTS="^root!reg" || ACTS="root!^reg" + +yad --title=$"Screenshot applet" --window-icon="application-x-addon" \ + --width=300 --image=applets-screenshooter \ + --text=$"Screenshot applet configuration" --separator=" " --form \ + --field=$"Default action::CB" "$(gsettings get ydesk.applets tb_sz)" > $res + +if [[ $? -eq 0 ]]; then + eval r=($(< $res)) + + gsettings set ydesk.applets shot_act ${r[0]} +fi diff --git a/settings/panel/sysinfo.sh.in b/settings/panel/sysinfo.sh.in new file mode 100644 index 0000000..f0a6604 --- /dev/null +++ b/settings/panel/sysinfo.sh.in @@ -0,0 +1,19 @@ +#! /bin/bash +# -*- mode: sh -*- + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +res=$(mktemp --tmpdir=/tmp/ydesk si.XXXXXXXX) +trap "rm -f $res" EXIT + +yad --title=$"Sysinfo applet" --window-icon="application-x-addon" \ + --width=300 --image=utilities-system-monitor \ + --text=$"Sysinfo applet configuration" --separator=" " --form \ + --field=$"Sysinfo width::NUN" "$(gsettings get ydesk.applets si_sz)" > $res + +if [[ $? -eq 0 ]]; then + eval r=($(< $res)) + + gsettings set ydesk.applets si_sz ${r[0]} +fi diff --git a/settings/panel/taskbar.sh.in b/settings/panel/taskbar.sh.in new file mode 100644 index 0000000..654f321 --- /dev/null +++ b/settings/panel/taskbar.sh.in @@ -0,0 +1,19 @@ +#! /bin/bash +# -*- mode: sh -*- + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +res=$(mktemp --tmpdir=/tmp/ydesk tbar.XXXXXXXX) +trap "rm -f $res" EXIT + +yad --title=$"Taskbar applet" --window-icon="application-x-addon" \ + --width=300 --image=window-new \ + --text=$"Taskbar applet configuration" --separator=" " --form \ + --field=$"Taskbar width::NUN" "$(gsettings get ydesk.applets tb_sz)" > $res + +if [[ $? -eq 0 ]]; then + eval r=($(< $res)) + + gsettings set ydesk.applets tb_sz ${r[0]} +fi diff --git a/settings/panel/volume.sh.in b/settings/panel/volume.sh.in new file mode 100644 index 0000000..3af0b96 --- /dev/null +++ b/settings/panel/volume.sh.in @@ -0,0 +1,25 @@ +#! /bin/bash +# -*- mode: sh -*- + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +res=$(mktemp --tmpdir=/tmp/ydesk volume.XXXXXXXX) +trap "rm -f $res" EXIT + +eval ctl=$(gsettings get ydesk.applets vol_ctl) +CTRL="Master" +for d in PCM Headphone Speaker; do + [[ $ctl == $d ]] && CTRL+="!^$d" || CTRL="!$d" +done + +yad --title=$"Volume applet" --window-icon="application-x-addon" \ + --width=300 --image=volume-knob \ + --text=$"Volume applet configuration" --separator=" " --form \ + --field=$"Default control device::CB" "$CTRL" > $res + +if [[ $? -eq 0 ]]; then + eval r=($(< $res)) + + gsettings set ydesk.applets vol_ctl "${r[0]}" +fi diff --git a/settings/panel/weather.sh.in b/settings/panel/weather.sh.in new file mode 100644 index 0000000..e66e2df --- /dev/null +++ b/settings/panel/weather.sh.in @@ -0,0 +1,30 @@ +#! /bin/bash +# -*- mode: sh -*- + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +res=$(mktemp --tmpdir=/tmp/ydesk wthr.XXXXXXXX) +trap "rm -f $res" EXIT + +apikey=$(< ${XDG_DATA_HOME:-$HOME/.share}/ydesk/weather.key) + +yad --title=$"Weather applet" --window-icon="application-x-addon" \ + --width=300 --separator=" " --image=weather-clear --bool-fmt=t \ + --text=$"Weather applet configuration" --form \ + --field=$"City name:" $(gsettings get ydesk.weather city) \ + --field=$"Country code:" $(gsettings get ydesk.weather country) \ + --field=$"Measure units:" $(gsettings get ydesk.weather units) \ + --field=$"APi key:" "$(< $apikey)" \ + --field=$"Update interval::NUM" $(gsettings get ydesk.applets wthr_time) > $res + +if [[ $? -eq 0 ]]; then + eval r=($(< $res)) + + gsettings set ydesk.weather city "${r[0]}" + gsettings set ydesk.weather country "${r[1]}" + gsettings set ydesk.weather measure "${r[2]}" + gsettings set ydesk.applets cpu_sz "${r[4]}" + + echo "${r[3]}" > $apikey +fi diff --git a/settings/panel/wifi.sh.in b/settings/panel/wifi.sh.in new file mode 100644 index 0000000..34b1323 --- /dev/null +++ b/settings/panel/wifi.sh.in @@ -0,0 +1,18 @@ +#! /bin/bash +# -*- mode: sh -*- + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +res=$(mktemp --tmpdir=/tmp/ydesk wifi.XXXXXXXX) +trap "rm -f $res" EXIT + +yad --title=$"Mail applet" --window-icon="application-x-addon" --width=300 \ + --image=network-wireless --text=$"Mail applet configuration" --separator=" " --form \ + --field=$"Wifi interface name:" "$(gsettings get ydesk.applets wifi_iface)" > $res + +if [[ $? -eq 0 ]]; then + eval r=($(< $res)) + + gsettings set ydesk.applets wifi_iface "${r[0]}" +fi diff --git a/settings/printer.sh.in b/settings/printer.sh.in new file mode 100644 index 0000000..4db469c --- /dev/null +++ b/settings/printer.sh.in @@ -0,0 +1,23 @@ +#! /bin/bash +# -*- mode: sh -*- +# +# Author: Victor Ananjevsky , 2011-2019 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +SRV=${CUPS_SERVER:-localhost} + +# check if server is up +exec 6<>/dev/tcp/$SRV/631 || IS_DOWN=1 +exec 6>&- # close output connection +exec 6<&- # close input connection + +if [[ $IS_DOWN -eq 1 ]]; then + exec yad --image="information-error" --title=$"Error" --button="yad-close:0" \ + --text=$"CUPS server at $SRV not available" +else + exec yad --width=900 --height=650 --title=$"Printer settings" --no-buttons \ + --html --browser --uri="http://${CUPS_SERVER:-localhost}:631" +fi diff --git a/settings/session.sh.in b/settings/session.sh.in new file mode 100644 index 0000000..3c96cf1 --- /dev/null +++ b/settings/session.sh.in @@ -0,0 +1,96 @@ +#! /bin/bash +# -*- mode: sh -*- +# +# Author: Victor Ananjevsky , 2011-2021 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +confdir=${XDG_CONFIG_HOME:-$HOME/.config} +datadir=${XDG_CONFIG_HOME:-$HOME/.share} + +res1=$(mktemp --tmpdir=/tmp/ydesk sess-tab1.XXXXXXXX) +res2=$(mktemp --tmpdir=/tmp/ydesk sess-tab2.XXXXXXXX) +trap "rm -f $res1 $res2" EXIT + +function as_edit { + case $1 in + add|edit) + NAME="$2" + DESCR="$3" + CMD="$4" + ;; + del) return 0 ;; + *) return 1 ;; + esac + yad --title=$"Autostart item" --text=$"Autostart item editor" \ + --width=300 --separator="\n" --form \ + --field=$"Name:" "$NAME" \ + --field=$"Description:" "$DESCR" \ + --field=$"Command:" "$CMD" +} +export -f as_edit + +KEY=$RANDOM + +# first tab +yad --plug=$KEY --tabnum=1 --bool-fmt=t --form --scroll \ + --field=$"Base Configuration:LBL" "" \ + --field=$"Update XDG users directories at startup:CHK" $(gsettings get ydesk.session userdirs) \ + --field=$"Run URXVT server at startup:CHK" $(gsettings get ydesk.session run-urxvt) \ + --field=$"Run EMACS server at startup:CHK" $(gsettings get ydesk.session run-emacs) \ + --field=$"Background settings:LBL" "" \ + --field=$"Background::CLR" "$(eval echo $(gsettings get ydesk.session bg))" \ + --field=$"Wallpaper::MFL" "$(eval echo $(gsettings get ydesk.session wallpaper))" \ + --field=$"Other settings:LBL" "" \ + --field=$"Enable compositing:CHK" $(gsettings get ydesk.session compose) > $res1 & + +# second tab +for f in $confdir/autostart/*.desktop; do + [[ -e $f ]] || continue + # FIXME: use only awk here + eval $(grep -E '^[[:blank:]]*(Name|Comment|Exec)=' "$f" | sed -r 's/=(.*)$/="\1"/') + echo -e "${Name}\n${Comment}\n${Exec}" + unset Name Comment Exec +done | yad --plug=$KEY --tabnum=2 --editable --print-all --use-interp --row-action="as_edit" \ + --text=$"Add/remove autostart items\n(only users autostart directory proceeded)" \ + --list --column=$"Name" --column=$"Description:TIP" --column=$"Command" > $res2 & + +# main dialog +yad --title=$"Session settings" --window-icon=system-run --image=system-run \ + --button="yad-save:0" --button="yad-close:1" --width=400 --height=500 \ + --text=$"\nEdit settings of Ydesk session\nChanges will be applied on the next startup\n\n" \ + --notebook --key=$KEY --tab=$"Common" --tab=$"Autostart" + +if [[ $? -eq 0 ]]; then + eval r1=($(< $res1)) + + # session settings + gsettings set ydesk.session userdirs ${r1[1]} + gsettings set ydesk.session run-urxvt ${r1[2]} + gsettings set ydesk.session run-emacs ${r1[3]} + gsettings set ydesk.session bg "${r1[5]}" + gsettings set ydesk.session wallpaper "${r1[6]}" + gsettings set ydesk.session compose ${r1[8]} + + # autostart items + rm -f $confdir/autostart/*.desktop + i=0 + cat $res2 | while read line; do + eval $(echo $line | awk -F'|' '{printf "NAME=\"%s\" COMMENT=\"%s\" COMMAND=\"%s\"\n", $1, $2, $3}') + printf -v filename "$confdir/autostart/%03d-%s.desktop" $i ${NAME// /_} + cat > $filename << EOF +[Desktop Entry] +Type=Application +Encoding=UTF-8 +Name=$NAME +Comment=$COMMENT +Exec=$COMMAND +StartupNotify=true +Terminal=false +EOF + unset NAME COMMENT COMMAND + ((i++)) + done +fi diff --git a/settings/term.sh.in b/settings/term.sh.in new file mode 100644 index 0000000..3665a84 --- /dev/null +++ b/settings/term.sh.in @@ -0,0 +1,145 @@ +#! /bin/bash +# -*- mode: sh -*- +# +# Author: Victor Ananjevsky , 2019 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +KEY=$RANDOM + +res1=$(mktemp --tmpdir=/tmp/ydesk yterm-tab1.XXXXXXXX) +res2=$(mktemp --tmpdir=/tmp/ydesk yterm-tab2.XXXXXXXX) +res3=$(mktemp --tmpdir=/tmp/ydesk yterm-tab3.XXXXXXXX) + +# cleanup +trap "rm -f $res1 $res2 $res3" EXIT + +export YAD_OPTIONS="--bool-fmt=t --separator='\n' --quoted-output" + +rc_file="${XDG_DATA_HOME:-$HOME/.share}/app-defaults/urxvt.ad" +[[ -n $1 ]] && rc_file=$1 + +# parse rc file +while read ln; do + case $ln in + *allow_bold:*) bold=$(echo ${ln#*:}) ;; + *font:*) font=$(echo ${ln#*:}) ;; + *scrollBar:*) sb=$(echo ${ln#*:}) ;; + *loginShell:*) ls=$(echo ${ln#*:}) ;; + *title:*) title=$(echo ${ln#*:}) ;; + *termName:*) term=$(echo ${ln#*:}) ;; + *geometry:*) geom=$(echo ${ln#*:}) ;; + *foreground:*) fg=$(echo ${ln#*:}) ;; + *background:*) bg=$(echo ${ln#*:}) ;; + *highlightColor:*) hl=$(echo ${ln#*:}) ;; + *highlightTextColor:*) hlt=$(echo ${ln#*:}) ;; + *color0:*) cl0=$(echo ${ln#*:}) ;; + *color1:*) cl1=$(echo ${ln#*:}) ;; + *color2:*) cl2=$(echo ${ln#*:}) ;; + *color3:*) cl3=$(echo ${ln#*:}) ;; + *color4:*) cl4=$(echo ${ln#*:}) ;; + *color5:*) cl5=$(echo ${ln#*:}) ;; + *color6:*) cl6=$(echo ${ln#*:}) ;; + *color7:*) cl7=$(echo ${ln#*:}) ;; + *color8:*) cl8=$(echo ${ln#*:}) ;; + *color9:*) cl9=$(echo ${ln#*:}) ;; + *color10:*) cl10=$(echo ${ln#*:}) ;; + *color11:*) cl11=$(echo ${ln#*:}) ;; + *color12:*) cl12=$(echo ${ln#*:}) ;; + *color13:*) cl13=$(echo ${ln#*:}) ;; + *color14:*) cl14=$(echo ${ln#*:}) ;; + *color15:*) cl15=$(echo ${ln#*:}) ;; + !*) ;; # skip comments + "") ;; # skip empty lines + *) misc+="$ln\n" ;; + esac +done < <(xrdb -query | grep -i rxvt) + +width=${geom%%x*} +height=${geom##*x} +fn=$(yad-tools -f -p "$font") + +# main page +yad --plug=$KEY --tabnum=1 --form \ + --field=$"Title:" "${title:-Terminal}" \ + --field=$"Width::num" ${width:-80} \ + --field=$"Height::num" ${height:-25} \ + --field=$"Font::fn" "${fn:-Monospace 10}" \ + --field=$"Term:" "${term:-rxvt-256color}" \ + --field=$"Enable login shell:chk" ${ls:-false} \ + --field=$"Enable scrollbars:chk" ${sb:-false} \ + --field=$"Use bold font:chk" ${bold:-false} \ + --field=":lbl" "" \ + --field=$"Foreground::clr" ${fg:-#ffffff} \ + --field=$"Background::clr" ${bg:-#000000} \ + --field=$"Highlight::clr" ${hl:-#0000f0} \ + --field=$"Highlight text::clr" ${hlt:-#ffffff} > $res1 & + +# palette page +yad --plug=$KEY --tabnum=2 --form --columns=2 \ + --field=$"Black::clr" ${cl0:-#2e3436} \ + --field=$"Red::clr" ${cl1:-#cc0000} \ + --field=$"Green::clr" ${cl2:-#4e9a06} \ + --field=$"Brown::clr" ${cl3:-#c4a000} \ + --field=$"Blue::clr" ${cl4:-#3465a4} \ + --field=$"Magenta::clr" ${cl5:-#75507b} \ + --field=$"Cyan::clr" ${cl6:-#06989a} \ + --field=$"Light gray::clr" ${cl7:-#d3d7cf} \ + --field=$"Gray::clr" ${cl8:-#555753} \ + --field=$"Light red::clr" ${cl9:-#ef2929} \ + --field=$"Light green::clr" ${cl10:-#8ae234} \ + --field=$"Yellow::clr" ${cl11:-#fce94f} \ + --field=$"Light blue::clr" ${cl12:-#729fcf} \ + --field=$"Light magenta::clr" ${cl13:-#ad7fa8} \ + --field=$"Light cyan::clr" ${cl14:-#34e2e2} \ + --field=$"White::clr" ${cl15:-#eeeeec} > $res2 & + +# misc page +echo -e $misc | yad --plug=$KEY --tabnum=3 --text-info --editable > $res3 & + +# main dialog +yad --window-icon=utilities-terminal \ + --notebook --key=$KEY --tab=$"Main" --tab=$"Palette" --tab=$"Misc" \ + --title=$"Terminal settings" --image=terminal --width=400 \ + --text=$"Terminal settings (URxvt)" + +# recreate rc file +if [[ $? -eq 0 ]]; then + mkdir -p ${rc_file%/*} + + eval TAB1=($(< $res1)) + eval TAB2=($(< $res2)) + + echo -e "! urxvt settings (this file was generated automatically)\n" > $rc_file + + # add main + cat <> $rc_file +URxvt.title: ${TAB1[0]} +URxvt.geometry: ${TAB1[1]}x${TAB1[2]} +URxvt.font: $(yad-tools -f -x "${TAB1[3]}") +URxvt.termName: ${TAB1[4]} +URxvt.loginShell: ${TAB1[5]} +URxvt.scrollBar: ${TAB1[6]} +URxvt.allow_bold: ${TAB1[7]} + +URxvt.foreground: ${TAB1[9]} +URxvt.background: ${TAB1[10]} +URxvt.highlightColor: ${TAB1[11]} +URxvt.highlightTextColor: ${TAB1[12]} +EOF + # add palette + echo >> $rc_file + for i in {0..15}; do + echo "URxvt.color$i: ${TAB2[$i]}" >> $rc_file + done + echo >> $rc_file + + # add misc + cat $res3 >> $rc_file + echo >> $rc_file + + # load new settings + xrdb -merge $rc_file +fi diff --git a/settings/ysettings.in b/settings/ysettings.in new file mode 100644 index 0000000..e3c764b --- /dev/null +++ b/settings/ysettings.in @@ -0,0 +1,24 @@ +#! /bin/bash +# -*- mode: sh -*- + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +datadir=@datadir@ + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +spath=$datadir/settings + +# add path for ydesk specific settings +epath=$libdir/ydesk/settings +export PATH="$epath:$PATH" + +txt=$"Ydesktop settings manager\nSelect applet for configure corresponding settings\n\n" + +exec yad --class=Ysettings --window-icon=preferences-desktop \ + --title=$"Ydesktop settings" --width=700 --height=500 \ + --image=preferences-desktop --image-on-top --no-buttons \ + --text="$txt" --icons --generic --read-dir="$spath" \ + --item-width=100 --sort-by-name diff --git a/shot.sh b/shot.sh new file mode 100755 index 0000000..49d679f --- /dev/null +++ b/shot.sh @@ -0,0 +1,40 @@ +#! /bin/bash +# make a screenshot + +TEXTDOMAIN=ydesk +TEXTDOMAINDIR=/usr/share/locale + +export ifile=$(mktemp -u --tmpdir=/tmp/ydesk shot-XXXXXXXX.png) + +trap "rm -f $ifile" EXIT + +function save_file +{ + idir="$(xdg-user-dir PICTURES)/screenshots" + mkdir -p "$idir" + ofile=$(yad --title=$"Save screenshot" --width=500 --height=400 \ + --file --save --filename="$idir/screenshot-$EPOCHSECONDS.png") + [[ -n $ofile ]] && mv -f $ifile $ofile +} +export -f save_file + +function copy_file +{ + xclip -selection primary -target image/png -i $ifile +} +export -f copy_file + +case $1 in + root) xrefresh && gm import -window root $ifile ;; + reg) xrefresh && gm import -frame $ifile ;; + *) exit 1 ;; +esac + +if [[ -e $ifile ]]; then + yad --title=$"Screenshot" --width=500 --height=400 \ + --window-icon="applets-screenshooter" \ + --button=$"Clipboard!yad-paste:bash -c copy_file" \ + --button="yad-save:bash -c save_file" \ + --button="yad-close:0" \ + --picture --size=fit --filename="$ifile" +fi diff --git a/utils/Makefile.am b/utils/Makefile.am new file mode 100644 index 0000000..4921c4c --- /dev/null +++ b/utils/Makefile.am @@ -0,0 +1,9 @@ + +bin_SCRIPTS = ysession ynotify yterm yps yrun ylogout \ + ynotes yfind yimage ymixer ysysinfo ywifi + +miscdir = $(libdir)/ydesk/misc +misc_SCRIPTS = ydentry ymedia ywget ypass + +install-exec-hook: + $(LN_S) -f ynotify$(EXEEXT) $(DESTDIR)$(bindir)/notify-send diff --git a/utils/ydentry.in b/utils/ydentry.in new file mode 100644 index 0000000..412b011 --- /dev/null +++ b/utils/ydentry.in @@ -0,0 +1,21 @@ +#! /bin/bash +# +# Simple desktop entry editor +# Author: Victor Ananjevsky , 2015-2021 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +yad --title=$"Desktop entry editor" --text=$"Edit desktop entry ${1%%*/}" \ + --image=system-run --form \ + --field=$"Type:CB" "Application!URI" \ + --field=$"Name" "" \ + --field=$"Generic name" "" \ + --field=$"Comment" "" \ + --field=$"Command:FL" "" \ + --field=$"Icon" "" \ + --field=$"In terminal:CHK" FALSE \ + --field=$"Startup notify:CHK" FALSE > $res + + diff --git a/utils/yfind.in b/utils/yfind.in new file mode 100644 index 0000000..7285ad1 --- /dev/null +++ b/utils/yfind.in @@ -0,0 +1,66 @@ +#! /bin/bash +# +# Frontend for find(1) +# Author: Victor Ananjevsky , 2015-2017 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +# try to run spacefm first +if [[ -n $(command -v spacefm) ]]; then + exec spacefm --find-files +fi + +export find_cmd='@sh -c "run_find %1 %2 %3 %4 %5"' + +export fpipe=$(mktemp -u --tmpdir=/tmp/ydesk find.XXXXXXXX) +mkfifo "$fpipe" + +trap "rm -f $fpipe" EXIT + +fkey=$(($RANDOM * $$)) + +function run_find { + echo "6:@disable@" + if [[ $2 != TRUE ]]; then + ARGS="-name '$1'" + else + ARGS="-regex '$1'" + fi + if [[ -n "$4" ]]; then + dt=$(echo "$4" | awk -F. '{printf "%s-%s-%s", $3, $2, $1}') + d1=$(date +%j -d $dt) + d2=$(date +%j) + d=$(($d1 - $d2)) + ARGS+=" -ctime $d" + fi + if [[ -n "$5" ]]; then + ARGS+=" -exec grep -q -E '$5' {} \;" + fi + ARGS+=" -printf '%p\n%s\n%M\n%TD %TH:%TM\n%u/%g\n'" + echo -e '\f' >> "$fpipe" + eval find "$3" $ARGS >> "$fpipe" + echo "6:$find_cmd" +} +export -f run_find + +function open_file { + xdg-open "$1" &> /dev/null +} +export -f open_file + +exec 3<> $fpipe + +yad --plug="$fkey" --tabnum=1 --form --field=$"Name" '*' --field=$"Use regex:chk" '' \ + --field=$"Directory:dir" '' --field=$"Newer than:dt" '' \ + --field=$"Content" '' --field="yad-search:fbtn" "$find_cmd" & + +yad --plug="$fkey" --tabnum=2 --list --no-markup --dclick-action='bash -c "open_file %s"' \ + --text $"Search results:" --column=$"Name" --column=$"Size:sz" --column=$"Perms" \ + --column=$"Date" --column=$"Owner" --search-column=1 --expand-column=1 <&3 & + +yad --paned --key="$fkey" --button="yad-close:1" --width=700 --height=500 \ + --title=$"Find files" --window-icon="find" + +exec 3>&- diff --git a/utils/yimage.in b/utils/yimage.in new file mode 100644 index 0000000..d92fc3f --- /dev/null +++ b/utils/yimage.in @@ -0,0 +1,41 @@ +#! /bin/bash + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +# try geeqie first +if [[ -n $(command -v geeqie) ]]; then + exec geeqie -t $@ +fi + +if [[ -z "$1" ]]; then + filename=$(yad --file --title=$"Select image" --width=600 --height=400 --image-filter=$"Images") +else + filename="$1" +fi + +if [[ ! -e "$filename" ]]; then + echo $"No such file - $filename" > /dev/stderr + exit 1 +fi + +function show_info { + fn=$1 + exiv2 -q "$fn" | sed "s/:/\n/" | sed -r "s/^\s*(.*)\s*$/\1/" |\ + yad --title=$"Exif data" --window-icon=gtk-index --image="image" --button="yad-close:0" \ + --width=450 --height=500 --text=$"Show EXIF data for file:\n$fn" \ + --list --column=$"Field" --column=$"Data" + unset fn +} +export -f show_info + +FMT=$"\tFile: %f\n\tSize: %b\n\tGeometry: %G\n\tType: %m\n\t%c" + +descr=$(gm identify -format "$FMT" "$filename" 2> /dev/null) + +yad --picture --title=$"Image viewer" --text="$descr" \ + --button=$"EXIF Info!info:bash -c 'show_info \"$filename\"'" \ + --button="yad-close:0" --width=800 --height=600 --filename="$filename" --size=fit + +# always return 0, doesn't matter how yad was closed +exit 0 diff --git a/utils/ylogout.in b/utils/ylogout.in new file mode 100644 index 0000000..4307872 --- /dev/null +++ b/utils/ylogout.in @@ -0,0 +1,43 @@ +#! /bin/bash +# -*- mode: sh -*- +# +# Logout script +# Author: Victor Ananjevsky , 2009-2014 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +acts=("" $"Power Off" $"Reboot" $"Suspend" $"Logout") + +histdir=${XDG_CACHE_HOME:-$HOME/.cache}/ixdesktop +histfile=$histdir/logout +[[ -e $histfile ]] && LASTACT=$(< $histfile) + +ACTIONS=${acts[1]} +for (( i=2 ; i<5; i++ )); do + ACTIONS+="!" + [[ $i -eq ${LASTACT:-0} ]] && ACTIONS+="^" + ACTIONS+="${acts[$i]}" +done + +eval $(yad --width=350 --center --sticky --on-top --class="${0##*/}" \ + --window-icon="system-log-out" --image="system-log-out" --num-output \ + --title=$"Logout" --text=$"\nChoose logout action:\n" \ + --form --field=$"Action:cb" "$ACTIONS" --field=$"Save last choise:chk" FALSE |\ + awk -F'|' '{printf "act=%s\nsave=%s\n", $1, $2}') +[[ -z $act ]] && exit 0 + +if [[ $save == "TRUE" ]]; then + mkdir -p $histdir + echo "$act" > $histfile +fi + +case $act in + 1) cmd="/sbin/poweroff" ;; + 2) cmd="/sbin/reboot" ;; + 3) cmd="/sbin/hibernate disk" ;; + 4) cmd="FvwmCommand Quit" ;; +esac + +eval exec $cmd diff --git a/utils/ymedia.in b/utils/ymedia.in new file mode 100644 index 0000000..424b000 --- /dev/null +++ b/utils/ymedia.in @@ -0,0 +1,52 @@ +#! /bin/bash +# Manage removable media + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +[[ -e /etc/conf.d/automount ]] && source /etc/conf.d/automount +export BASEDIR=${MOUNT_BASE:-/media} + +PERIOD=${1:-10} + +export fpipe=$(mktemp -u --tmpdir=/tmp/ydesk media.XXXXXXXX) +mkfifo "$fpipe" + +trap "rm -f $fpipe" EXIT + +function update_list { + echo -e '\f' >> $fpipe + for mp in $BASEDIR/*; do + mountpoint -q $mp || continue + dev=$(findmnt -n -o SOURCE $mp) + vendor=$(< /sys/block/${dev:5:3}/device/vendor) + model=$(< /sys/block/${dev:5:3}/device/model) + echo -e $"$mp\n${vendor:-Unknown} $model ($dev)" >> $fpipe + unset dev vendor model + done +} +export -f update_list + +function unplug_dev { + eject "$1" &> /dev/null + if [[ $? -ne 0 ]]; then + yad --image=dialog-error --title=$"Error" --button=yad-close \ + --text=$"Error\nUnable to unplug $2" + fi + update_list +} +export -f unplug_dev + +exec 3<> $fpipe + +yad --title=$"Removable media" --window-icon=media-removable --image=media-removable \ + --width=600 --height=500 --center --kill-parent --listen \ + --button="yad-refresh:bash -c update_list" --button="yad-close:0" \ + --text=$"Manage removable media\nDouble click on media for unplug it" \ + --list --column=$"Mountpoint" --column $"Device" --expand-column=2 \ + --dclick-action='bash -c "unplug_dev %s"' <&3 & + +while : ; do + update_list + sleep $PERIOD +done diff --git a/utils/ymixer.in b/utils/ymixer.in new file mode 100644 index 0000000..c568e3e --- /dev/null +++ b/utils/ymixer.in @@ -0,0 +1,12 @@ +#! /bin/bash +# +# Author: Victor Ananjevsky , 2011-2021 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +${XTERM:-xterm} -T $"ALSA Mixer" +sb -e alsamixer + +# update panel applet +exec $FVWM_LIBDIR/volume.sh diff --git a/utils/ynotes.in b/utils/ynotes.in new file mode 100644 index 0000000..ccb0ef3 --- /dev/null +++ b/utils/ynotes.in @@ -0,0 +1,39 @@ +#! /bin/bash +# -*- mode: sh -*- +# +# Simple notes +# Author: Victor Ananjevsky , 2010-2012 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +PIDFILE=/var/run/ynotes.pid + +NOTES_FILE=${XDG_CACHE_HOME:-$HOME/.cache}/ydesk/notes +NOTES_TITLE=$"Notes" +export NOTES_FILE NOTES_TITLE + +function show_note () { + xlsclients | grep -q "Ynotes-txt" || yad --sticky --name="Ynotes-txt" \ + --width=400 --height=250 --posx=-2 --posy=-2 \ + --window-icon="ynotes" --no-buttons --title="$NOTES_TITLE" \ + --text-info --show-uri --editable --always-print-result \ + --lang="makrdown" --filename=$NOTES_FILE > /tmp/.notes + [[ $? -eq 0 ]] && mv -f /tmp/.notes $NOTES_FILE +} +export -f show_note + +# check if we are already running +if pkill -0 $(< $PIDFILE); then + kill -USR1 $(< $PIDFILE) + exit 0 +else + echo $$ > $PIDFILE + trap show_note USR1 +fi + +mkdir -p $(dirname $NOTES_FILE) +touch $NOTES_FILE + +exec yad --notification --name="Ynotes" --text=$"Text notes" --image="ynotes" --command "sh -c show_note" diff --git a/utils/ynotify.in b/utils/ynotify.in new file mode 100644 index 0000000..0d2a9d3 --- /dev/null +++ b/utils/ynotify.in @@ -0,0 +1,29 @@ +#! /bin/bash + +# Defaults +APP="ynotify" +TIMEOUT=600 +ICON="dialog-information" +TITLE= +BODY= + +# Parse command line +OPTIND=1 +while getopts a:i:t: opt ; do + case "$opt" in + a) APP=$OPTARG ;; + i) ICON=$OPTARG ;; + t) TIMEOUT=$OPTARG ;; + esac +done +shift $(($OPTIND - 1)) +[[ "$1" == '--' ]] && shift + +TITLE="$1" +shift +BODY="$@" + +gdbus call --session --dest org.freedesktop.Notifications \ + --object-path /org/freedesktop/Notifications \ + --method org.freedesktop.Notifications.Notify \ + "$APP" 0 "$ICON" "$TITLE" "$BODY" "[]" "{}" $TIMEOUT &> /dev/null diff --git a/utils/ypass.in b/utils/ypass.in new file mode 100644 index 0000000..feeb67a --- /dev/null +++ b/utils/ypass.in @@ -0,0 +1,14 @@ +#! /bin/bash +# -*- mode: sh -*- +# +# Passowrd helper +# Author: Victor Ananjevsky , 2013-2018 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +text=$"Password authentication is required\n$1\n" + +exec yad --class="YPass" --title=$"Password prompt" \ + --image=dialog-password --entry --hide-text --text="$text" diff --git a/utils/yps.in b/utils/yps.in new file mode 100644 index 0000000..dbb5890 --- /dev/null +++ b/utils/yps.in @@ -0,0 +1,18 @@ +#! /bin/bash + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +TITLE=$"Process viewer" + +# FIXME: add more process managers +if [[ -x $(command -v lxtask) ]]; then + exec lxtask +elif [[ -x $(command -v htop) ]]; then + exec ${XTERM:-xterm} -T "$TITLE" -name YPs +sb -e htop +else + exec ${XTERM:-xterm} -T "$TITLE" -name YPs +sb -e top +fi + +# must not be reached +exit 1 diff --git a/utils/yrun.in b/utils/yrun.in new file mode 100644 index 0000000..8d7ae0a --- /dev/null +++ b/utils/yrun.in @@ -0,0 +1,46 @@ +#! /bin/bash +# -*- mode: sh -*- + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +XTERM="urxvt" + +# cleanup +resfile=$(mktemp --tmpfile=/tmp/ydesk yrun-$$) +trap "rm -f $resfile" EXIT + +# create history file +CACHEDIR="${XDG_CACHE_HOME:-$HOME/.cache}/ydesk" +mkdir -p "$CACHEDIR" +HISTFILE="$CACHEDIR/run.history" +touch $HISTFILE + +while read ln; do + HIST+="${ln}!" +done < $HISTFILE + +# create and run dialog +yad --width=550 --center --fixed --window-icon="system-run" --class="YRun" \ + --title=$"Run command" --text=$"\nEnter command or uri to execute:\n" \ + --image="system-run" --separator="\n" --button="yad-execute:0" --button="yad-cancel:1" \ + --form --field=$"Command:cbe" "${HIST/%!}" --field=$"Run in terminal:chk" FALSE > $resfile +[[ $? -ne 0 ]] && exit 1 + +# read form output +exec 3< $resfile +read -u 3 cmd +read -u 3 in_term +exec 3<&- + +# add command to history +grep -q -F "$cmd" $HISTFILE || echo "$cmd" >> $HISTFILE + +# run command +case $cmd in + http://*|https://*|ftp://*|file://*) exec xdg-open $cmd ;; + mailto://*) exec xdg-email $cmd ;; + man://*) exec $XTERM -e man ${cmd#man://} ;; + telnet*|ssh*) exec $XTERM -e $cmd ;; + *) [[ $in_term == TRUE ]] && exec $XTERM -e $cmd || exec $cmd ;; +esac diff --git a/utils/ysession.in b/utils/ysession.in new file mode 100644 index 0000000..430c9c1 --- /dev/null +++ b/utils/ysession.in @@ -0,0 +1,91 @@ +#! /bin/bash +# +# Start Ydesk session +# + +shopt -s nocasematch + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@/ydesk +sysconfdir=@sysconfdir@/ydesk + +trap '' SIGCHLD + +# make sure misc bin directory in PATH +export PATH="$libdir/bin:$PATH" + +# create xdg user directory structure +userconfdir="${XDG_CONFIG_HOME:-$HOME/.config}/ydesk" +mkdir -p $userconfdir + +usercachedir="${XDG_CACHE_HOME:-$HOME/.cache}/ydesk" +mkdir -p $usercachedir + +# set xdg session name +export XDG_CURRENT_DESKTOP="YDESK" + +# make sure some service directories exists +[[ -n $XDG_RUNTIME_DIR ]] && mkdir -p $XDG_RUNTIME_DIR +[[ -n $GNUPGHOME ]] && mkdir -m 0700 -p $GNUPGHOME + +# load some specific X resources +AD_DIR=${XDG_DATA_HOME:-$HOME:/.share}/app-defaults +mkdir -p $AD_DIR && touch $AD_DIR/empty.ad +cat $AD_DIR/*.ad | xrdb -merge + +# load settings +eval UPDATE_USERDIRS=$(gsettings get ydesk.session userdirs) +eval RUN_EMACS=$(gsettings get ydesk.session run-emacs) +eval RUN_RXVT=$(gsettings get ydesk.session run-rxvt) +eval BACKGROUND=$(gsettings get ydesk.session bg) +eval WALLPAPER=$(gsettings get ydesk.session wallpaper) +eval ENABLE_COMPOSE=$(gsettings get ydesk.session compose) + +# recreate user directories tree +[[ $UPDATE_USERDIRS == true ]] && xdg-user-dirs-update --force + +# run emacs server +[[ $RUN_EMACS == true && -x $(command -v emacs) ]] && emacs --daemon + +# run rxvt server +[[ $RUN_RXVT == true && -x $(command -v urxvtd) ]] && urxvtd -q -o -f + +# set root window background +if [[ -e $WALLPAPER ]]; then + fvwm-root $WALLPAPER +else + xsetroot -solid ${BACKGROUND:-#071a30} +fi + +# compositing +[[ $ENABLE_COMPOSE == true && $(command -v xcompmgr) ]] && xcompmgr -c -t-5 -l-5 -r4.2 -o.55 & + +# set fvwm variables +FVWM_LIBDIR="$libdir/fvwm" +FVWM_DATADIR="$prefix/share/ydesk/fvwm" +FVWM_USERDIR="$userconfdir/fvwm" +FVWM_CACHEDIR="$usercachedir/fvwm" +export FVWM_LIBDIR FVWM_DATADIR FVWM_USERDIR FVWM_CACHEDIR + +mkdir -p $FVWM_USERDIR $FVWM_CACHEDIR /tmp/ydesk + +# recreate fvwm configs +touch $FVWM_USERDIR/custom.fvwm +cat > $FVWM_USERDIR/config <, 2015-2021 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +YAD_OPTIONS="--window-icon='dialog-information' --name=YSysinfo" + +KEY=$RANDOM + +function show_mod_info { + TXT="\\n$(modinfo $1 | sed 's/&/\&/g;s//\>/g')" + yad --title=$"Module information" --button="yad-close" --width=500 \ + --image="application-x-addon" --text="$TXT" +} +export -f show_mod_info + +# CPU tab +lscpu | sed -r "s/:[ ]*/\n/" |\ + yad --plug=$KEY --tabnum=1 --image=cpu --text=$"CPU information" \ + --list --no-selection --column=$"Parameter" --column=$"Value" & + +# Memory tab +sed -r "s/:[ ]*/\n/" /proc/meminfo |\ + yad --plug=$KEY --tabnum=2 --image=memory --text=$"Memory usage information" \ + --list --no-selection --column=$"Parameter" --column=$"Value" & + +# Harddrive tab +df -T | tail -n +2 | awk '{printf "%s\n%s\n%s\n%s\n%s\n%s\n", $1,$7, $2, $3, $4, $6}' |\ + yad --plug=$KEY --tabnum=3 --image=drive-harddisk --text=$"Disk space usage" \ + --list --no-selection --column=$"Device" --column=$"Mountpoint" --column=$"Type" \ + --column=$"Total:sz" --column=$"Free:sz" --column=$"Usage:bar" & + +# PCI tab +lspci -vmm | sed 's/\&/\&/g' | grep -E "^(Slot|Class|Vendor|Device|Rev):" | cut -f2 |\ + yad --plug=$KEY --tabnum=4 --text=$"PCI bus devices" \ + --list --no-selection --column=$"ID" --column=$"Class" \ + --column=$"Vendor" --column=$"Device" --column=$"Rev" & + +# Modules tab +awk '{printf "%s\n%s\n%s\n", $1, $3, $4}' /proc/modules | sed "s/[,-]$//" |\ + yad --plug=$KEY --tabnum=5 --text=$"Loaded kernel modules" \ + --image="application-x-addon" --image-on-top \ + --list --dclick-action='bash -c "show_mod_info %s"' \ + --column=$"Name" --column=$"Used" --column=$"Depends" & + +# Battery tab +( acpi -i ; acpi -a ) | sed -r "s/:[ ]*/\n/" | yad --plug=$KEY --tabnum=6 \ + --image=battery --text=$"Battery state" --list --no-selection \ + --column=$"Device" --column=$"Details" & + +# Sensors tab +SENSORS=($(sensors | grep -E '^[^:]+$')) +sid=1 +cid=1 + +for s in ${SENSORS[@]}; do + echo -e "s$sid\n$s\n" + sensors -A "$s" | tail -n +2 | while read ln; do + [[ $ln == "" ]] && continue + echo "$cid:s$sid" + echo $ln | sed -r 's/:[ ]+/\n/' + ((cid++)) + done + ((sid++)) +done | yad --plug=$KEY --tabnum=7 --text=$"Temperature sensors information" \ + --list --tree --tree-expanded --no-selection --column=$"Sensor" --column=$"Value" & + +# main dialog +TXT=$"Hardware system information\\n\\n" +TXT+=$"\\tOS: $(lsb_release -ds) on $(hostname)\\n" +TXT+=$"\\tKernel: $(uname -sr)\\n\\n" +TXT+="\\t$(uptime)" + +yad --notebook --width=600 --height=450 --title=$"System info" --text="$TXT" \ + --button="yad-close" --button=$"Processes!system-run:yps" \ + --key=$KEY --tab=$"CPU" --tab=$"Memory" --tab=$"Disks" --tab=$"PCI" --tab=$"Modules" \ + --tab=$"Battery" --tab=$"Sensors" --active-tab=${1:-1} diff --git a/utils/yterm.in b/utils/yterm.in new file mode 100644 index 0000000..6661982 --- /dev/null +++ b/utils/yterm.in @@ -0,0 +1,37 @@ +#! /bin/bash +# +# Frontend for xterm+tmux/screen +# Author: Victor Ananjevsky , 2016-2021 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +TERMS="urxvtc urxvt xterm" + +for t in $TERMS; do + if [[ -n $(command -v $t) ]]; then + XTERM=$t + break + fi +done + +if [[ -z $XTERM ]]; then + yad --image=dialog-error --title=$"Yterm error" \ + --text $"No suitable terminal emulator found" \ + --button="yad-close:0" --width=300 --window-icon="terminal" + exit 1 +fi + +if [[ -n $(command -v tmux) ]]; then + sname=$(tmux ls -F "#S (#{session_attached})" | awk '/\(0\)$/ {print $1}') + if [[ -n $sname ]]; then + exec $XTERM -e tmux attach -t $sname + else + exec $XTERM -e tmux + fi +elif [[ -n $(command -v screen) ]]; then + exec $XTERM -e screen -ARR +else + exec $XTERM +fi diff --git a/utils/ywget.in b/utils/ywget.in new file mode 100644 index 0000000..d575f6f --- /dev/null +++ b/utils/ywget.in @@ -0,0 +1,28 @@ +#! /bin/bash +# FlashGot arguments are: [URL] [REFERER] [POST] + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale + +dir="$(xdg-user-dir DOWNLOAD)" +url="$1" + +case $url in + http*|ftp*) + filename=$(yad --width 500 --height 450 --file --save --confirm-overwrite \ + --title="Ywget" --text=$"Select file name" \ + --filename $dir/$(basename $URL)) + if [[ $? -eq 0 ]]; then + id=$(wget -c -b -o /tmp/wget-$$.log --referer="$2" --post-data="$3" -O "$filename" "$URL" | egrep -o "[0-9]+") + tail -f --pid="$id" /tmp/wget-$$.log \ + | sed -u -n 's/.*\.[ ]*\([[:print:]]*\)%[ ]*\([[:graph:]]*\) \([[:graph:]]*\)$/#\1% [\2] (\3)\n\1/p' \ + | yad --title="Ywget" --no-markup --text $"Download $url" --button=yad-close --progress --auto-close + rm -f /tmp/wget-$$.log + fi + ;; + *) + yad --title="Ywget" --image=dialog-error --text=$"URI '$url' is not supported" + exit 1 + ;; +esac + \ No newline at end of file diff --git a/utils/ywifi.in b/utils/ywifi.in new file mode 100644 index 0000000..0c6a3b4 --- /dev/null +++ b/utils/ywifi.in @@ -0,0 +1,10 @@ +#! @BASH@ +# -*- mode: sh -*- +# +# Manage wireless networks +# Author: Victor Ananjevsky , 2015-2021 +# + +TEXTDOMAIN=@GETTEXT_PACKAGE@ +TEXTDOMAINDIR=@prefix@/share/locale +