diff --git a/configure.ac b/configure.ac index 78f9f560..e5720842 100644 --- a/configure.ac +++ b/configure.ac @@ -125,9 +125,6 @@ esac # Checks for header files. AS_BOX([Header Files]) -AC_HEADER_STDC -AC_HEADER_DIRENT -AC_HEADER_SYS_WAIT AC_PATH_X AC_PATH_XTRA AC_CHECK_HEADERS([execinfo.h sched.h sys/sched.h]) @@ -139,7 +136,6 @@ AC_CHECK_HEADER_STDBOOL AC_C_INLINE AC_TYPE_PID_T AC_TYPE_SIZE_T -AC_HEADER_TIME AC_STRUCT_TM AC_CHECK_SIZEOF(char, 1) diff --git a/doc/Makefile.am b/doc/Makefile.am index 86becca3..287c1226 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -13,11 +13,13 @@ adoc_input = $(srcdir)/icewm.adoc $(html_documentation): $(AM_V_GEN)if test -x "`which $(MARKDOWN) 2>/dev/null`"; then \ - if test $(mark_input) -nt $(html_documentation); then \ + if test $(mark_input) -nt $(html_documentation) \ + -o ! -s $(html_documentation); then \ $(MARKDOWN) $(mark_input) >$@; \ fi; \ elif test -x "`which $(ASCIIDOC) 2>/dev/null`"; then \ - if test $(adoc_input) -nt $(html_documentation); then \ + if test $(adoc_input) -nt $(html_documentation) \ + -o ! -s $(html_documentation); then \ $(ASCIIDOC) $(ASCIIDOC_BACKEND) -o $@ $(adoc_input); \ fi; \ else \ diff --git a/man/icesh.pod b/man/icesh.pod index f8cd6e7f..31eeee6b 100644 --- a/man/icesh.pod +++ b/man/icesh.pod @@ -413,6 +413,8 @@ by 50% and increases the height by 200 pixels. Move the selected window or windows to the screen position I I. To specify I or I values relative to the right side or bottom side precede the value with an extra minus sign, like in C. +When I or I end with a percent sign C<%>, they refer to a percentage +of the desktop work area. =item B I I diff --git a/man/icewm-preferences.pod b/man/icewm-preferences.pod index a052dac1..093e8915 100644 --- a/man/icewm-preferences.pod +++ b/man/icewm-preferences.pod @@ -642,7 +642,7 @@ Favour Xft fonts over core X11 fonts where possible. =item B="" -A colon separated list of paths of your mailboxes. +A list of paths of your mailboxes separated by spaces. If this is empty, $MAILPATH or $MAIL is used instead. Path to a mbox file. Remote mail boxes are accessed by specifying an URL diff --git a/man/icewm.pod b/man/icewm.pod index b4ae0caa..e0730531 100644 --- a/man/icewm.pod +++ b/man/icewm.pod @@ -10,12 +10,12 @@ B [I] =head2 DESCRIPTION -B is a window manager for the X11 window system. -It aims to be small, fast and familiar to new users. +B is a small and fast window manager for the X11 window system. It +is best started by L, which also starts L. -B is called a re-parenting window manager, -because it draws small frames around application windows. -By dragging this frame with the mouse, windows are resized or moved. +B is called I, because it draws frames around +application windows. Drag this frame with the mouse, to move or resize +a window. Because windows may overlap, B is also a stacking window manager. Many windows may exist, some hidden behind others. @@ -26,6 +26,7 @@ By switching between workspaces, the user can attend to different tasks, while keeping oversight. This is supported by a task bar and a pager. The installation comes with several themes. Choose a theme via a menu. +Install extra themes automatically with the B<--install> option. B is compliant with the ICCCM and EWMH window manager specifications. @@ -523,22 +524,29 @@ also be changed by bringing the drag icon to the screen edge. The task bar contains a command-line prompt called the address bar, if B=1. It is always shown when B=1, -otherwise it is activated by B=C. -In it a shell command can be typed, which is executed by the -B=C when pressing C. -On C this command is executed in a new terminal -as given by B. +otherwise it is activated by B=C. +In it a shell command can be typed. On I it is executed by the +B=C. On I this command is +executed in a new terminal as given by B. Commands are executed relative to the working directory of icewm. -This can be shown by executing C. It can be changed using the C -command. Without argument it defaults to the home directory. With one -argument it is changed. This argument is expanded when it starts with a -dollar or tilde. When it is equal to C<->, it reverts to the previous -directory. +This is shown by C. Change it with C. Without argument C +defaults to the home directory. With one argument it is changed. +This argument is expanded when it starts with a dollar or tilde. +When it is equal to C<->, it reverts to the previous directory. The address bar has a history that is navigable by I and I. -It supports file completion using C or C, cut/copy/paste -and these editing operations: +This history is saved in a file F in your icewm directory +and restored when icewm starts. + +Completion is supported using I or I. The leading command +is completed from directories in your PATH, while file arguments are +expanded from the location in the file system. In addition usernames +and environment variables can also be expanded. For example, C +and I may expand to C and C and I may +expand to C. + +The address bar implements cut/copy/paste and these editing operations: =over @@ -834,7 +842,7 @@ Rolls up the active window. Hides the active window. -=item B=C +=item B=C Posts the window menu. @@ -938,7 +946,7 @@ Activates the IceWM root menu in the lower left corner. Opens the IceWM system window list in the center of the screen. -=item B=C +=item B=C Opens the address bar in the task bar where a command can be typed. diff --git a/po/LINGUAS b/po/LINGUAS index ada11f90..92461012 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -36,7 +36,6 @@ pt pt_BR ro ru -si sk sl sv diff --git a/po/pt.po b/po/pt.po index 030fd68c..ad675fdb 100644 --- a/po/pt.po +++ b/po/pt.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: icewm 1.6.6.83\n" "Report-Msgid-Bugs-To: https://github.com/bbidulock/icewm/issues\n" -"POT-Creation-Date: 2024-05-20 16:47+0200\n" -"PO-Revision-Date: 2023-07-23 12:15+0000\n" +"POT-Creation-Date: 2024-05-09 20:44+0200\n" +"PO-Revision-Date: 2024-05-23 01:46+0000\n" "Last-Translator: Hugo Carvalho \n" "Language-Team: Portuguese \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.9.1\n" +"X-Generator: Weblate 5.5.5\n" #: src/aapm.cc:113 #, c-format @@ -2268,7 +2268,7 @@ msgstr " -o, --output=FILE Redirecionar todos os resultados para FILE.\n" #: src/wmapp.cc:1655 msgid " -i, --install=THEME Install THEME from extra or 'list'.\n" -msgstr "" +msgstr " -i, --install=TEMA Instalar TEMA a partir de extra ou 'lista'.\n" #: src/wmapp.cc:1658 #, c-format @@ -2440,15 +2440,15 @@ msgstr "Recarregar win_options" msgid "Reload ke_ys" msgstr "Recarregar tec_las" -#: src/wmframe.cc:1376 +#: src/wmframe.cc:1375 msgid "Rename" msgstr "Renomear" -#: src/wmframe.cc:1377 +#: src/wmframe.cc:1376 msgid "Rename the window title" msgstr "Renomear o título da janela" -#: src/wmframe.cc:1871 +#: src/wmframe.cc:1868 msgid "" "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" @@ -2456,7 +2456,7 @@ msgstr "" "ATENÇÃO! Qualquer alteração não guardada será perdida\n" "ao interromper este cliente. Deseja continuar?" -#: src/wmframe.cc:1876 +#: src/wmframe.cc:1873 msgid "Kill Client: " msgstr "Interromper cliente: " @@ -2839,7 +2839,7 @@ msgstr "" msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv não supre (suficientes) %s para conversores %s." -#: src/ylocale.cc:241 +#: src/ylocale.cc:247 #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Cadeia multibyte \"%s\" inválida: %s" diff --git a/po/pt_BR.po b/po/pt_BR.po index cfd6f7b0..a59e10c5 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: icewm 1.3.4pre2\n" "Report-Msgid-Bugs-To: https://github.com/bbidulock/icewm/issues\n" -"POT-Creation-Date: 2024-05-20 16:47+0200\n" -"PO-Revision-Date: 2023-10-04 23:15+0000\n" -"Last-Translator: Luiz Fernando Ranghetti \n" +"POT-Creation-Date: 2024-05-09 20:44+0200\n" +"PO-Revision-Date: 2024-05-23 22:46+0000\n" +"Last-Translator: Rodrigo Macedo \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.9.1\n" +"X-Generator: Weblate 5.5.5\n" "X-Language: pt_BR\n" #: src/aapm.cc:113 @@ -2297,7 +2297,7 @@ msgstr " -o, --output=ARQUIVO Redireciona toda as saídas para o ARQUIVO.\n" #: src/wmapp.cc:1655 msgid " -i, --install=THEME Install THEME from extra or 'list'.\n" -msgstr "" +msgstr " -i, --install=THEME Instale o TEMA do extra ou da 'list'.\n" #: src/wmapp.cc:1658 #, c-format @@ -2469,15 +2469,15 @@ msgstr "Recarregar win_options" msgid "Reload ke_ys" msgstr "Recarregar c_haves" -#: src/wmframe.cc:1376 +#: src/wmframe.cc:1375 msgid "Rename" msgstr "Renomear" -#: src/wmframe.cc:1377 +#: src/wmframe.cc:1376 msgid "Rename the window title" msgstr "Renomear o título da janela" -#: src/wmframe.cc:1871 +#: src/wmframe.cc:1868 msgid "" "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" @@ -2487,7 +2487,7 @@ msgstr "" "perdidas quando este cliente for finalizado.\n" "Você quer continuar?" -#: src/wmframe.cc:1876 +#: src/wmframe.cc:1873 msgid "Kill Client: " msgstr "Interromper o Cliente: " @@ -2878,7 +2878,7 @@ msgstr "" msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "O iconv não supre (suficientemente) %s para os conversores %s." -#: src/ylocale.cc:241 +#: src/ylocale.cc:247 #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "A cadeia de vários bytes \"%s\" não é válida: %s" diff --git a/po/si.po b/po/si.po deleted file mode 100644 index 4dfbda41..00000000 --- a/po/si.po +++ /dev/null @@ -1,2638 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Marko Macek -# This file is distributed under the same license as the icewm package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: icewm 1.9.2.42\n" -"Report-Msgid-Bugs-To: https://github.com/bbidulock/icewm/issues\n" -"POT-Creation-Date: 2024-05-20 16:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: si\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/aapm.cc:113 -#, c-format -msgid "Can't open the APM device %s" -msgstr "" - -#: src/aapm.cc:121 src/aapm.cc:139 -#, c-format -msgid "Can't ioctl the APM device %s" -msgstr "" - -#: src/aapm.cc:169 -#, c-format -msgid "Unknown format used by APM device %s (%d)." -msgstr "" - -#: src/aapm.cc:201 src/aapm.cc:473 src/aapm.cc:632 src/aapm.cc:758 -msgid " - Power" -msgstr "" - -#: src/aapm.cc:203 src/aapm.cc:476 src/aapm.cc:635 -msgid "P" -msgstr "" - -#: src/aapm.cc:207 src/aapm.cc:450 src/aapm.cc:615 src/aapm.cc:726 -msgid " - Charging" -msgstr "" - -#: src/aapm.cc:209 src/aapm.cc:452 src/aapm.cc:617 -msgid "C" -msgstr "" - -#: src/aapm.cc:454 -msgid " - Full" -msgstr "" - -#: src/aapm.cc:940 -#, c-format -msgid "power:\t%s" -msgstr "" - -#: src/aclock.cc:195 -msgid "CLOCK" -msgstr "" - -#: src/aclock.cc:201 -msgid "Date" -msgstr "" - -#: src/aclock.cc:202 src/themes.cc:83 -msgid "Default" -msgstr "" - -#: src/aclock.cc:203 src/acpustatus.cc:912 src/amailbox.cc:964 -#: src/amemstatus.cc:264 -msgid "_Disable" -msgstr "" - -#: src/aclock.cc:204 -msgid "_UTC" -msgstr "" - -#. TRANSLATORS: Please translate the string "C" into "Celsius Temperature" in your language. -#. TRANSLATORS: Please make sure the translated string could be shown in your non-utf8 locale. -#: src/acpustatus.cc:348 -msgid "°C" -msgstr "" - -#: src/acpustatus.cc:552 -#, c-format -msgid "CPU %s Load: %3.2f %3.2f %3.2f, %u" -msgstr "" - -#: src/acpustatus.cc:558 -#, c-format -msgid "" -"\n" -"Ram (free): %5.3f (%.3f) G" -msgstr "" - -#: src/acpustatus.cc:563 -#, c-format -msgid "" -"\n" -"Swap (free): %.3f (%.3f) G" -msgstr "" - -#: src/acpustatus.cc:571 -#, c-format -msgid "" -"\n" -"ACPI Temp: " -msgstr "" - -#: src/acpustatus.cc:592 src/acpustatus.cc:630 -#, c-format -msgid "" -"\n" -"CPU Freq: %.3fGHz" -msgstr "" - -#: src/acpustatus.cc:607 src/acpustatus.cc:907 -msgid "CPU" -msgstr "" - -#: src/acpustatus.cc:607 -msgid "Load: " -msgstr "" - -#: src/acpustatus.cc:622 -#, c-format -msgid "" -"\n" -"Ram (user): %5.3f (%.3f) G" -msgstr "" - -#: src/acpustatus.cc:908 -#, c-format -msgid "CPU%d" -msgstr "" - -#: src/acpustatus.cc:914 -msgid "_Combine" -msgstr "" - -#: src/acpustatus.cc:916 -msgid "_Separate" -msgstr "" - -#: src/akeyboard.cc:78 src/icesm.cc:468 src/wmmenu.cc:503 -#, c-format -msgid "%s exited with status %d." -msgstr "" - -#: src/akeyboard.cc:81 src/icesm.cc:474 src/icesm.cc:628 src/wmmenu.cc:506 -#, c-format -msgid "%s was killed by signal %d." -msgstr "" - -#: src/akeyboard.cc:94 -msgid "rules:" -msgstr "" - -#: src/akeyboard.cc:95 -msgid "model:" -msgstr "" - -#: src/akeyboard.cc:96 -msgid "layout:" -msgstr "" - -#: src/akeyboard.cc:97 -msgid "options:" -msgstr "" - -#: src/akeyboard.cc:153 -msgid "Keyboard" -msgstr "" - -#: src/amailbox.cc:64 -#, c-format -msgid "Invalid mailbox protocol: \"%s\"" -msgstr "" - -#: src/amailbox.cc:66 -#, c-format -msgid "Invalid mailbox path: \"%s\"" -msgstr "" - -#: src/amailbox.cc:140 -#, c-format -msgid "DNS name lookup failed for %s" -msgstr "" - -#: src/amailbox.cc:156 -#, c-format -msgid "Invalid mailbox port: \"%s\"" -msgstr "" - -#: src/amailbox.cc:314 -#, c-format -msgid "Could not connect to %s: %s" -msgstr "" - -#: src/amailbox.cc:334 -#, c-format -msgid "Failed to find %s command" -msgstr "" - -#: src/amailbox.cc:363 src/wmmenu.cc:471 src/wmmenu.cc:488 src/yapp.cc:433 -#, c-format -msgid "Failed to execute %s" -msgstr "" - -#: src/amailbox.cc:447 -#, c-format -msgid "Write to socket failed: %s" -msgstr "" - -#: src/amailbox.cc:694 -#, c-format -msgid "Using MailBox \"%s\"\n" -msgstr "" - -#: src/amailbox.cc:801 -msgid "Suspended" -msgstr "" - -#: src/amailbox.cc:805 -msgid "Error checking mailbox." -msgstr "" - -#: src/amailbox.cc:812 -#, c-format -msgid "%ld mail message, %ld unread." -msgstr "" - -#: src/amailbox.cc:813 -#, c-format -msgid "%ld mail messages, %ld unread." -msgstr "" - -#: src/amailbox.cc:819 -#, c-format -msgid "%ld mail message." -msgstr "" - -#: src/amailbox.cc:820 -#, c-format -msgid "%ld mail messages." -msgstr "" - -#: src/amailbox.cc:961 -msgid "MAIL" -msgstr "" - -#: src/amailbox.cc:963 -msgid "_Check" -msgstr "" - -#: src/amailbox.cc:965 -msgid "_Suspend" -msgstr "" - -#: src/amemstatus.cc:144 -msgid "GB" -msgstr "" - -#: src/amemstatus.cc:148 -msgid "MB" -msgstr "" - -#: src/amemstatus.cc:152 -msgid "kB" -msgstr "" - -#: src/amemstatus.cc:156 -msgid "bytes" -msgstr "" - -#: src/amemstatus.cc:176 -msgid "Memory Total: " -msgstr "" - -#: src/amemstatus.cc:177 -msgid "Free: " -msgstr "" - -#: src/amemstatus.cc:178 -msgid "Cached: " -msgstr "" - -#: src/amemstatus.cc:179 -msgid "Buffers: " -msgstr "" - -#: src/amemstatus.cc:180 -msgid "User: " -msgstr "" - -#: src/amemstatus.cc:262 -msgid "MEM" -msgstr "" - -#: src/apppstatus.cc:268 -#, c-format -msgid "" -"Interface %s:\n" -" Current rate (in/out):\t%li %s/%li %s\n" -" Current average (in/out):\t%lli %s/%lli %s\n" -" Transferred (in/out):\t%lli %s/%lli %s\n" -" Online time:\t%ld:%02ld:%02ld%s%s" -msgstr "" - -#: src/apppstatus.cc:284 -msgid "disconnected" -msgstr "" - -#: src/apppstatus.cc:284 -msgid "down" -msgstr "" - -#: src/apppstatus.cc:705 -msgid "NET" -msgstr "" - -#: src/aworkspaces.cc:685 src/wmstatus.cc:204 -msgid "Workspace: " -msgstr "" - -#: src/decorate.cc:132 -msgid "Tabs" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Graphics -#: src/fdospecgen.h:43 -msgid "2DGraphics" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Graphics -#: src/fdospecgen.h:45 -msgid "3DGraphics" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Settings or Utility -#: src/fdospecgen.h:47 src/fdospecgen.h:49 -msgid "Accessibility" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:51 -msgid "Accessories" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Game -#: src/fdospecgen.h:53 -msgid "ActionGame" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:55 -msgid "Adult" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Game -#: src/fdospecgen.h:57 -msgid "AdventureGame" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:59 -msgid "Amusement" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Game -#: src/fdospecgen.h:61 -msgid "ArcadeGame" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Utility -#: src/fdospecgen.h:63 -msgid "Archiving" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:65 -msgid "Art" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:67 -msgid "ArtificialIntelligence" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:69 -msgid "Astronomy" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:71 -msgid "Audio" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:73 -msgid "AudioVideo" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Audio or Video or AudioVideo -#: src/fdospecgen.h:75 -msgid "AudioVideoEditing" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:77 -msgid "Biology" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Game -#: src/fdospecgen.h:79 -msgid "BlocksGame" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Game -#: src/fdospecgen.h:81 -msgid "BoardGame" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Development -#: src/fdospecgen.h:83 -msgid "Building" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Utility -#: src/fdospecgen.h:85 -msgid "Calculator" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Office -#: src/fdospecgen.h:87 -msgid "Calendar" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Game -#: src/fdospecgen.h:89 -msgid "CardGame" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Office -#: src/fdospecgen.h:91 -msgid "Chart" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Network -#: src/fdospecgen.h:93 -msgid "Chat" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:95 -msgid "Chemistry" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Utility -#: src/fdospecgen.h:97 -msgid "Clock" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Utility;Archiving -#: src/fdospecgen.h:99 -msgid "Compression" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:101 -msgid "ComputerScience" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:103 -msgid "Construction" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Office -#: src/fdospecgen.h:105 -msgid "ContactManagement" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:107 -msgid "Core" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:109 -msgid "DataVisualization" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Office or Development or AudioVideo -#: src/fdospecgen.h:111 -msgid "Database" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Development -#: src/fdospecgen.h:113 -msgid "Debugger" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Settings -#: src/fdospecgen.h:115 -msgid "DesktopSettings" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:117 -msgid "Development" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Network -#: src/fdospecgen.h:119 -msgid "Dialup" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Office or TextTools -#: src/fdospecgen.h:121 -msgid "Dictionary" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: AudioVideo -#: src/fdospecgen.h:123 -msgid "DiscBurning" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:125 -msgid "Documentation" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:127 -msgid "Economy" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:129 -msgid "Editors" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:131 -msgid "Education" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:133 -msgid "Electricity" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:135 -msgid "Electronics" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Office or Network -#: src/fdospecgen.h:137 -msgid "Email" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: System or Game -#: src/fdospecgen.h:139 -msgid "Emulator" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:141 -msgid "Engineering" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Network -#: src/fdospecgen.h:143 -msgid "Feed" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: System;FileTools -#: src/fdospecgen.h:145 -msgid "FileManager" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Utility or System -#: src/fdospecgen.h:147 -msgid "FileTools" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Network -#: src/fdospecgen.h:149 -msgid "FileTransfer" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: System -#: src/fdospecgen.h:151 -msgid "Filesystem" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Office -#: src/fdospecgen.h:153 -msgid "Finance" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Office -#: src/fdospecgen.h:155 -msgid "FlowChart" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Development -#: src/fdospecgen.h:157 -msgid "GUIDesigner" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:159 -msgid "Game" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:161 -msgid "Geography" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:163 -msgid "Geology" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:165 -msgid "Geoscience" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:167 -msgid "Graphics" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Network or Audio -#: src/fdospecgen.h:169 -msgid "HamRadio" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Settings -#: src/fdospecgen.h:171 -msgid "HardwareSettings" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:173 -msgid "History" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:175 -msgid "Humanities" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Development -#: src/fdospecgen.h:177 -msgid "IDE" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Network -#: src/fdospecgen.h:179 -msgid "IRCClient" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:181 -msgid "ImageProcessing" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Network -#: src/fdospecgen.h:183 -msgid "InstantMessaging" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Game -#: src/fdospecgen.h:185 -msgid "KidsGame" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:187 -msgid "Languages" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:189 -msgid "Literature" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Game -#: src/fdospecgen.h:191 -msgid "LogicGame" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science or Utility -#: src/fdospecgen.h:193 -msgid "Maps" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:195 -msgid "Math" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:197 -msgid "MedicalSoftware" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: AudioVideo;Audio -#: src/fdospecgen.h:199 -msgid "Midi" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: AudioVideo;Audio -#: src/fdospecgen.h:201 -msgid "Mixer" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: System or Network -#: src/fdospecgen.h:203 -msgid "Monitor" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:205 -msgid "Motif" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:207 -msgid "Multimedia" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: AudioVideo or Education -#: src/fdospecgen.h:209 -msgid "Music" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:211 -msgid "Network" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Network -#: src/fdospecgen.h:213 -msgid "News" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education;Math or Science;Math -#: src/fdospecgen.h:215 -msgid "NumericalAnalysis" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Graphics;Scanning -#: src/fdospecgen.h:217 -msgid "OCR" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:219 -msgid "Office" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:221 -msgid "Other" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Network -#: src/fdospecgen.h:223 -msgid "P2P" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Office -#: src/fdospecgen.h:225 -msgid "PDA" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Settings -#: src/fdospecgen.h:227 -msgid "PackageManager" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education;ComputerScience or Science;ComputerScience -#: src/fdospecgen.h:229 -msgid "ParallelComputing" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Graphics or Office -#: src/fdospecgen.h:231 -msgid "Photography" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:233 -msgid "Physics" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Audio or Video or AudioVideo -#: src/fdospecgen.h:235 -msgid "Player" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Office -#: src/fdospecgen.h:237 -msgid "Presentation" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Settings;HardwareSettings -#: src/fdospecgen.h:239 -msgid "Printing" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Development -#: src/fdospecgen.h:241 -msgid "Profiling" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Office or Development -#: src/fdospecgen.h:243 -msgid "ProjectManagement" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Graphics or Office -#: src/fdospecgen.h:245 -msgid "Publishing" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Graphics;2DGraphics -#: src/fdospecgen.h:247 -msgid "RasterGraphics" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Audio or Video or AudioVideo -#: src/fdospecgen.h:249 -msgid "Recorder" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Network -#: src/fdospecgen.h:251 -msgid "RemoteAccess" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Development -#: src/fdospecgen.h:253 -msgid "RevisionControl" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:255 -msgid "Robotics" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Game -#: src/fdospecgen.h:257 -msgid "RolePlaying" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Graphics -#: src/fdospecgen.h:259 -msgid "Scanning" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:261 -msgid "Science" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:263 -msgid "Screensavers" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Settings or System -#: src/fdospecgen.h:265 -msgid "Security" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: AudioVideo;Audio -#: src/fdospecgen.h:267 -msgid "Sequencer" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:269 -msgid "Settings" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Game -#: src/fdospecgen.h:271 -msgid "Shooter" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Game -#: src/fdospecgen.h:273 -msgid "Simulation" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science or Utility -#: src/fdospecgen.h:275 -msgid "Spirituality" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Education or Science -#: src/fdospecgen.h:277 -msgid "Sports" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Game -#: src/fdospecgen.h:279 -msgid "SportsGame" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Office -#: src/fdospecgen.h:281 -msgid "Spreadsheet" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Game -#: src/fdospecgen.h:283 -msgid "StrategyGame" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:285 -msgid "System" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: AudioVideo;Video -#: src/fdospecgen.h:287 -msgid "TV" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Network -#: src/fdospecgen.h:289 -msgid "Telephony" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Utility -#: src/fdospecgen.h:291 -msgid "TelephonyTools" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: System -#: src/fdospecgen.h:293 -msgid "TerminalEmulator" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Utility -#: src/fdospecgen.h:295 -msgid "TextEditor" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Utility -#: src/fdospecgen.h:297 -msgid "TextTools" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Development -#: src/fdospecgen.h:299 -msgid "Translation" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: AudioVideo;Audio -#: src/fdospecgen.h:301 -msgid "Tuner" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:303 -msgid "Utility" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Graphics;2DGraphics -#: src/fdospecgen.h:305 -msgid "VectorGraphics" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:307 -msgid "Video" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Network -#: src/fdospecgen.h:309 -msgid "VideoConference" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Graphics or Office -#: src/fdospecgen.h:311 -msgid "Viewer" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. -#: src/fdospecgen.h:313 -msgid "WINE" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Network -#: src/fdospecgen.h:315 -msgid "WebBrowser" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Network or Development -#: src/fdospecgen.h:317 -msgid "WebDevelopment" -msgstr "" - -#. TRANSLATORS: This is a menu category name from freedesktop.org. Please add spaces as needed but no double-quotes. Context: Office -#: src/fdospecgen.h:319 -msgid "WordProcessor" -msgstr "" - -#: src/icehelp.cc:1348 -msgid "Back" -msgstr "" - -#: src/icehelp.cc:1348 -msgid "Alt+Left" -msgstr "" - -#: src/icehelp.cc:1350 -msgid "Forward" -msgstr "" - -#: src/icehelp.cc:1350 -msgid "Alt+Right" -msgstr "" - -#: src/icehelp.cc:1353 -msgid "Previous" -msgstr "" - -#: src/icehelp.cc:1354 -msgid "Next" -msgstr "" - -#: src/icehelp.cc:1356 -msgid "Contents" -msgstr "" - -#: src/icehelp.cc:1357 -msgid "Index" -msgstr "" - -#: src/icehelp.cc:1359 -msgid "Find..." -msgstr "" - -#: src/icehelp.cc:1359 -msgid "Ctrl+F" -msgstr "" - -#: src/icehelp.cc:1360 -msgid "Find next" -msgstr "" - -#: src/icehelp.cc:1360 -msgid "F3" -msgstr "" - -#: src/icehelp.cc:1362 -msgid "Open in Browser" -msgstr "" - -#: src/icehelp.cc:1362 -msgid "Ctrl+B" -msgstr "" - -#: src/icehelp.cc:1364 -msgid "Reload" -msgstr "" - -#: src/icehelp.cc:1364 src/icesame.cc:60 -msgid "Ctrl+R" -msgstr "" - -#: src/icehelp.cc:1365 src/icesame.cc:62 src/iceview.cc:63 src/wmbutton.cc:147 -msgid "Close" -msgstr "" - -#: src/icehelp.cc:1365 src/icesame.cc:62 src/iceview.cc:63 -msgid "Ctrl+Q" -msgstr "" - -#: src/icehelp.cc:1370 -msgid "Icewm(1)" -msgstr "" - -#: src/icehelp.cc:1370 -msgid "Ctrl+I" -msgstr "" - -#: src/icehelp.cc:1372 -msgid "Icewmbg(1)" -msgstr "" - -#: src/icehelp.cc:1374 -msgid "Icesound(1)" -msgstr "" - -#: src/icehelp.cc:1376 -msgid "FAQ" -msgstr "" - -#: src/icehelp.cc:1378 -msgid "Manual" -msgstr "" - -#: src/icehelp.cc:1378 -msgid "Ctrl+M" -msgstr "" - -#: src/icehelp.cc:1380 -msgid "Support" -msgstr "" - -#: src/icehelp.cc:1382 -msgid "Theme Howto" -msgstr "" - -#: src/icehelp.cc:1382 src/iceview.cc:60 -msgid "Ctrl+T" -msgstr "" - -#: src/icehelp.cc:1384 -msgid "Website" -msgstr "" - -#: src/icehelp.cc:1384 src/iceview.cc:61 -msgid "Ctrl+W" -msgstr "" - -#: src/icehelp.cc:1386 -msgid "Github" -msgstr "" - -#: src/icehelp.cc:1390 src/yinputline.cc:19 -msgid "Ctrl+X" -msgstr "" - -#: src/icehelp.cc:1395 src/yinputline.cc:20 -msgid "Ctrl+V" -msgstr "" - -#: src/icehelp.cc:2204 -msgid "Unsupported protocol." -msgstr "" - -#: src/icehelp.cc:2283 -#, c-format -msgid "Invalid path: %s\n" -msgstr "" - -#: src/icehelp.cc:2307 -msgid "Path does not refer to a file." -msgstr "" - -#: src/icehelp.cc:2312 -msgid "Failed to open file for reading." -msgstr "" - -#: src/icehelp.cc:2341 -msgid "Failed to create a temporary file" -msgstr "" - -#: src/icehelp.cc:2431 -#, c-format -msgid "Failed to execute system(%s) (%d)" -msgstr "" - -#: src/icehelp.cc:2453 -#, c-format -msgid "Failed to decompress %s" -msgstr "" - -#: src/icehelp.cc:2461 -msgid "Could not locate curl or wget in PATH" -msgstr "" - -#: src/icehelp.cc:2465 -msgid "Unsafe characters in URL" -msgstr "" - -#: src/icehelp.cc:2502 -#, c-format -msgid "" -"Usage: %s [OPTIONS] [ FILENAME | URL ]\n" -"\n" -"IceHelp is a very simple HTML browser for the IceWM window manager.\n" -"It can display a HTML document from file, or browse a website.\n" -"It remembers visited pages in a history, which is navigable\n" -"by key bindings and a context menu (right mouse click).\n" -"It neither supports rendering of images nor JavaScript.\n" -"If no file or URL is given it will display the IceWM Manual\n" -"from %s.\n" -"\n" -"Options:\n" -" -d, --display=NAME NAME of the X server to use.\n" -" --sync Synchronize X11 commands.\n" -"\n" -" -B Display the IceWM icewmbg manpage.\n" -" -b, --bugs Display the IceWM bug reports (primitively).\n" -" -f, --faq Display the IceWM FAQ and Howto.\n" -" -g Display the IceWM Github website.\n" -" -i, --icewm Display the IceWM icewm manpage.\n" -" -m, --manual Display the IceWM Manual (default).\n" -" -s Display the IceWM icesound manpage.\n" -" -t, --theme Display the IceWM themes Howto.\n" -" -w, --website Display the IceWM website.\n" -"\n" -" -V, --version Prints version information and exits.\n" -" -h, --help Prints this usage screen and exits.\n" -"\n" -"Environment variables:\n" -" DISPLAY=NAME Name of the X server to use.\n" -"\n" -"To report bugs, support requests, comments please visit:\n" -"%s\n" -"\n" -msgstr "" - -#: src/icehelp.cc:2592 -#, c-format -msgid "Ignoring option '%s'" -msgstr "" - -#: src/icelist.cc:60 -msgid "List View" -msgstr "" - -#: src/icelist.cc:61 -msgid "Icon View" -msgstr "" - -#: src/icelist.cc:65 -msgid "Open" -msgstr "" - -#: src/icesame.cc:57 -msgid "Undo" -msgstr "" - -#: src/icesame.cc:57 -msgid "Ctrl+Z" -msgstr "" - -#: src/icesame.cc:59 -msgid "New" -msgstr "" - -#: src/icesame.cc:59 -msgid "Ctrl+N" -msgstr "" - -#: src/icesame.cc:60 -msgid "Restart" -msgstr "" - -#: src/icesame.cc:65 -msgid "Same Game" -msgstr "" - -#: src/icesh.cc:76 -msgid "For help please consult the man page icesh(1).\n" -msgstr "" - -#: src/icesh.cc:1667 -#, c-format -msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" -msgstr "" - -#: src/icesh.cc:1736 -#, c-format -msgid "Workspace out of range: %ld" -msgstr "" - -#: src/icesh.cc:1757 -#, c-format -msgid "Invalid workspace name: `%s'" -msgstr "" - -#: src/icesh.cc:2204 -msgid "GNOME window layer" -msgstr "" - -#: src/icesh.cc:2205 -msgid "IceWM tray option" -msgstr "" - -#: src/icesh.cc:2206 -msgid "Gravity symbols" -msgstr "" - -#: src/icesh.cc:2207 -msgid "Motif functions" -msgstr "" - -#: src/icesh.cc:2208 -msgid "Motif decorations" -msgstr "" - -#: src/icesh.cc:2209 -msgid "EWMH window state" -msgstr "" - -#: src/icesh.cc:2291 src/icesh.cc:2364 -#, c-format -msgid "workspace #%d: `%s'\n" -msgstr "" - -#: src/icesh.cc:2615 src/icesh.cc:4446 src/icesh.cc:5077 -#, c-format -msgid "Invalid state: `%s'." -msgstr "" - -#: src/icesh.cc:2644 src/icesh.cc:4025 src/icesh.cc:4075 src/icesh.cc:5398 -#, c-format -msgid "Invalid argument: `%s'" -msgstr "" - -#: src/icesh.cc:3645 -#, c-format -msgid "Cannot get geometry of window 0x%lx" -msgstr "" - -#: src/icesh.cc:3670 -#, c-format -msgid "Invalid Xinerama: `%s'." -msgstr "" - -#: src/icesh.cc:3802 src/icesh.cc:3810 src/wmconfig.cc:148 src/wmsave.cc:65 -#: src/wmsave.cc:298 src/wmsave.cc:301 -#, c-format -msgid "Unable to write to %s" -msgstr "" - -#: src/icesh.cc:4041 -#, c-format -msgid "Action `%s' requires at least %d arguments." -msgstr "" - -#: src/icesh.cc:4050 -#, c-format -msgid "Invalid expression: `%s'" -msgstr "" - -#: src/icesh.cc:4061 src/icesound.cc:800 src/icewmbg.cc:1087 -#: src/icewmhint.cc:37 src/wmapp.cc:1293 src/yxapp.cc:1046 -#, c-format -msgid "Can't open display: %s. X must be running and $DISPLAY set." -msgstr "" - -#: src/icesh.cc:4177 -#, c-format -msgid "Unexpected: `%s'." -msgstr "" - -#: src/icesh.cc:4209 -msgid "No windows found." -msgstr "" - -#: src/icesh.cc:4225 -msgid "No actions specified." -msgstr "" - -#: src/icesh.cc:4370 -#, c-format -msgid "Invalid window identifier: `%s'" -msgstr "" - -#: src/icesh.cc:4386 -#, c-format -msgid "Invalid PID: `%s'" -msgstr "" - -#: src/icesh.cc:4419 -#, c-format -msgid "Invalid layer: `%s'." -msgstr "" - -#: src/icesh.cc:5529 -#, c-format -msgid "Unknown action: `%s'" -msgstr "" - -#: src/iceskt.cc:41 -#, c-format -msgid "Socket error: %d" -msgstr "" - -#: src/icesm.cc:69 -msgid "" -" -c, --config=FILE Let IceWM load preferences from FILE.\n" -" -t, --theme=FILE Let IceWM load the theme from FILE.\n" -"\n" -" -d, --display=NAME Use NAME to connect to the X server.\n" -" -a, --alpha Use a 32-bit visual for translucency.\n" -" --sync Synchronize communication with X11 server.\n" -"\n" -" -i, --icewm=FILE Use FILE as the IceWM window manager.\n" -" -o, --output=FILE Redirect all output to FILE.\n" -"\n" -" -b, --nobg Do not start icewmbg.\n" -" -n, --notray Do not start icewmtray.\n" -" -s, --sound Also start icesound.\n" -msgstr "" - -#: src/icesm.cc:85 -msgid "" -"\n" -"Debugging options:\n" -" -v, --valgrind Let \"/usr/bin/valgrind\" run icewm.\n" -" Thoroughly examines the execution of icewm.\n" -" -g, --catchsegv Let \"/usr/bin/catchsegv\" run icewm.\n" -" Gives a backtrace if icewm segfaults.\n" -msgstr "" - -#: src/icesm.cc:188 -#, c-format -msgid "Unknown option '%s'" -msgstr "" - -#: src/icesm.cc:462 src/icesm.cc:622 -#, c-format -msgid "restart %s." -msgstr "" - -#: src/icesm.cc:513 -msgid "" -" IceWM crashed for the second time in 10 seconds. \n" -" Do you wish to:\n" -"\n" -"\t1: Restart IceWM?\n" -"\t2: Abort this session?\n" -"\t3: Run a terminal?\n" -msgstr "" - -#: src/icesm.cc:519 -msgid "IceWM crash response" -msgstr "" - -#: src/icesound.cc:211 src/icesound.cc:319 src/icesound.cc:479 -#, c-format -msgid "Playing sample #%d (%s)" -msgstr "" - -#: src/icesound.cc:329 -#, c-format -msgid "%s: Invalid number of channels" -msgstr "" - -#: src/icesound.cc:335 src/icesound.cc:340 -msgid "Could not set OSS channels" -msgstr "" - -#: src/icesound.cc:345 src/icesound.cc:373 -msgid "Could not sync OSS" -msgstr "" - -#: src/icesound.cc:357 -msgid "OSS write failed" -msgstr "" - -#: src/icesound.cc:361 -#, c-format -msgid "OSS incomplete write (%d/%d)" -msgstr "" - -#: src/icesound.cc:368 -msgid "Could not post OSS" -msgstr "" - -#: src/icesound.cc:397 -#, c-format -msgid "Could not open OSS device %s" -msgstr "" - -#: src/icesound.cc:402 -msgid "Could not set OSS stereo" -msgstr "" - -#: src/icesound.cc:407 -msgid "Could not reset OSS DSP" -msgstr "" - -#: src/icesound.cc:412 -msgid "Could not set OSS format" -msgstr "" - -#: src/icesound.cc:499 -#, c-format -msgid "ao_open_live failed with %d" -msgstr "" - -#: src/icesound.cc:510 -msgid "ao_play failed" -msgstr "" - -#: src/icesound.cc:680 -#, c-format -msgid "Unrecognized option: %s\n" -msgstr "" - -#: src/icesound.cc:683 src/icesound.cc:978 -#, c-format -msgid "Unrecognized argument: %s\n" -msgstr "" - -#: src/icesound.cc:694 -#, c-format -msgid "" -"Usage: %s [OPTION]...\n" -"\n" -"Plays audio files on GUI events raised by IceWM.\n" -"The currently configured sound interfaces are: %s.\n" -"Icesound will choose the first of these which is usable.\n" -"\n" -"Options:\n" -"\n" -" -d, --display=DISPLAY X11 display used by IceWM (default: $DISPLAY).\n" -"\n" -" -s, --sample-dir=DIR Specifies a directory with sound files.\n" -" Default is $HOME/.config/icewm/sounds.\n" -"\n" -" -i, --interface=LIST Specifies audio output interfaces. One or more of:\n" -" %s separated by commas.\n" -"\n" -" -D, --device=DEVICE Backwards compatibility only: the default device. \n" -" Please prefer one of the -A/-O/-S options.\n" -"\n" -" -O, --oss=DEVICE Specifies the OSS device (default: \"%s\").\n" -"\n" -" -A, --alsa=DEVICE Specifies the ALSA device (default: \"%s\").\n" -"\n" -" -z, --snooze=millisecs Specifies the snooze interval between sound events\n" -" in milliseconds. Default is 500 milliseconds.\n" -"\n" -" -p, --play=sound Plays the given sound (name or number) and exits.\n" -"\n" -" -l, --list-files Lists the available sound file paths and exits.\n" -"\n" -" --list-sounds Lists the supported sound filenames and exits.\n" -"\n" -" --list-interfaces Lists the supported audio interfaces and exits.\n" -"\n" -" -v, --verbose Be verbose and print out each sound event.\n" -"\n" -" -V, --version Prints version information and exits.\n" -"\n" -" -h, --help Prints this help screen and exits.\n" -"\n" -"Return values:\n" -"\n" -" 0 Success.\n" -" 1 General error.\n" -" 2 Command line error.\n" -" 3 Subsystems error (ie cannot connect to server).\n" -"\n" -msgstr "" - -#: src/icesound.cc:785 -#, c-format -msgid "No audio for %s" -msgstr "" - -#: src/icesound.cc:862 -msgid "Could not get GUI event property" -msgstr "" - -#: src/icesound.cc:866 -#, c-format -msgid "Received invalid GUI event %d" -msgstr "" - -#: src/icesound.cc:870 -#, c-format -msgid "Received GUI event %s" -msgstr "" - -#: src/icesound.cc:884 -#, c-format -msgid "Too quick; ignoring %s." -msgstr "" - -#: src/icesound.cc:888 -#, c-format -msgid "Support for the %s interface not compiled." -msgstr "" - -#: src/icesound.cc:921 -#, c-format -msgid "Unsupported interface: %s." -msgstr "" - -#: src/icesound.cc:930 -#, c-format -msgid "Using %s audio." -msgstr "" - -#: src/icesound.cc:934 -#, c-format -msgid "Failed to connect to audio interfaces %s." -msgstr "" - -#: src/icesound.cc:946 -#, c-format -msgid "Received signal %s: Terminating..." -msgstr "" - -#: src/icetray.cc:220 -msgid "" -" -n, --notify Notify parent process by sending signal USR1.\n" -" --display=NAME Use NAME to connect to the X server.\n" -" --sync Synchronize communication with X11 server.\n" -"\n" -" -c, --config=FILE Load preferences from FILE.\n" -" -t, --theme=FILE Load the theme from FILE.\n" -msgstr "" - -#: src/iceview.cc:59 -msgid "Hex View" -msgstr "" - -#: src/iceview.cc:59 -msgid "Ctrl+H" -msgstr "" - -#: src/iceview.cc:60 -msgid "Expand Tabs" -msgstr "" - -#: src/iceview.cc:61 -msgid "Wrap Lines" -msgstr "" - -#: src/icewmbg.cc:35 src/icewmbg.cc:372 -#, c-format -msgid "Failed to load image '%s'." -msgstr "" - -#: src/icewmbg.cc:969 -msgid "" -"Usage: icewmbg [OPTIONS]\n" -"Where multiple values can be given they are separated by commas.\n" -"When image is a directory then all images from that directory are used.\n" -"\n" -"Options:\n" -" -p, --replace Replace an existing icewmbg.\n" -" -q, --quit Tell the running icewmbg to quit.\n" -" -r, --restart Tell the running icewmbg to restart itself.\n" -" -u, --shuffle Shuffle/reshuffle the list of background images.\n" -"\n" -" -c, --config=FILE Load preferences from FILE.\n" -" -t, --theme=NAME Load the theme with name NAME.\n" -"\n" -" -i, --image=FILE(S) Load background image(s) from FILE(S).\n" -" -k, --color=NAME(S) Use background color(s) from NAME(S).\n" -"\n" -" -s, --semis=FILE(S) Load transparency image(s) from FILE(S).\n" -" -x, --trans=NAME(S) Use transparency color(s) from NAME(S).\n" -"\n" -" -e, --center=0/1 Disable/Enable centering background.\n" -" -a, --scaled=0/1 Disable/Enable scaling background.\n" -" -m, --multi=0/1 Disable/Enable multihead background.\n" -" -y, --cycle=SECONDS Cycle backgrounds every SECONDS.\n" -"\n" -" --display=NAME Use NAME to connect to the X server.\n" -" --sync Synchronize communication with X11 server.\n" -"\n" -" -h, --help Print this usage screen and exit.\n" -" -V, --version Prints version information and exits.\n" -"\n" -"Loads desktop background according to preferences file:\n" -" DesktopBackgroundCenter - Display desktop background centered\n" -" DesktopBackgroundScaled - Display desktop background scaled\n" -" DesktopBackgroundColor - Desktop background color(s)\n" -" DesktopBackgroundImage - Desktop background image(s)\n" -" ShuffleBackgroundImages - Shuffle the list of background images\n" -" SupportSemitransparency - Support for semitransparent terminals\n" -" DesktopTransparencyColor - Semitransparency background color(s)\n" -" DesktopTransparencyImage - Semitransparency background image(s)\n" -" DesktopBackgroundMultihead - One background over all monitors\n" -" CycleBackgroundsPeriod - Seconds between cycling over backgrounds\n" -"\n" -" center:0 scaled:0 = tiled\n" -" center:1 scaled:0 = centered\n" -" center:1 scaled:1 = fill one dimension and keep aspect ratio\n" -" center:0 scaled:1 = fill both dimensions and keep aspect ratio\n" -"\n" -msgstr "" - -#: src/icewmbg.cc:1248 src/wmapp.cc:1900 -#, c-format -msgid "Unrecognized option '%s'." -msgstr "" - -#: src/icewmbg.cc:1335 -msgid "Cannot start, because another icewmbg is still running." -msgstr "" - -#: src/icewmhint.cc:20 -msgid "Usage: icewmhint class.instance option arg\n" -msgstr "" - -#: src/icewmhint.cc:57 -#, c-format -msgid "Out of memory (len=%d)." -msgstr "" - -#: src/misc.cc:71 src/misc.cc:83 -msgid "Warning: " -msgstr "" - -#: src/misc.cc:394 -#, c-format -msgid "" -"Usage: %s [OPTIONS]\n" -"Options:\n" -"%s\n" -" -C, --copying Prints license information and exits.\n" -" -V, --version Prints version information and exits.\n" -" -h, --help Prints this usage screen and exits.\n" -"\n" -msgstr "" - -#: src/movesize.cc:905 -#, c-format -msgid "Unknown direction in move/resize request: %d" -msgstr "" - -#: src/wmabout.cc:29 -msgid "(C)" -msgstr "" - -#: src/wmabout.cc:45 -msgid "Theme:" -msgstr "" - -#: src/wmabout.cc:46 -msgid "Theme Description:" -msgstr "" - -#: src/wmabout.cc:47 -msgid "Theme Author:" -msgstr "" - -#: src/wmabout.cc:56 -msgid "CodeSet:" -msgstr "" - -#: src/wmabout.cc:57 -msgid "Language:" -msgstr "" - -#: src/wmabout.cc:61 -msgid "DoubleBuffer" -msgstr "" - -#: src/wmabout.cc:62 -msgid "AlphaBlending" -msgstr "" - -#: src/wmabout.cc:63 -msgid "Renderer:" -msgstr "" - -#: src/wmabout.cc:71 -msgid "icewm - About" -msgstr "" - -#: src/wmapp.cc:91 -msgid "A window manager is already running, use --replace to replace it" -msgstr "" - -#: src/wmapp.cc:107 -#, c-format -msgid "Failed to become the owner of the %s selection" -msgstr "" - -#: src/wmapp.cc:111 -msgid "Waiting to replace the old window manager" -msgstr "" - -#: src/wmapp.cc:116 -msgid "done." -msgstr "" - -#: src/wmapp.cc:529 -msgid "_Logout" -msgstr "" - -#: src/wmapp.cc:530 -msgid "_Cancel logout" -msgstr "" - -#: src/wmapp.cc:536 -msgid "Lock _Workstation" -msgstr "" - -#: src/wmapp.cc:538 src/wmdialog.cc:89 -msgid "Re_boot" -msgstr "" - -#: src/wmapp.cc:540 src/wmdialog.cc:90 -msgid "Shut_down" -msgstr "" - -#: src/wmapp.cc:542 src/wmdialog.cc:86 -msgid "_Sleep mode" -msgstr "" - -#: src/wmapp.cc:544 src/wmdialog.cc:91 -msgid "_Hibernate" -msgstr "" - -#: src/wmapp.cc:548 -msgid "Restart _Icewm" -msgstr "" - -#: src/wmapp.cc:550 -msgid "Restart _Xterm" -msgstr "" - -#: src/wmapp.cc:560 -msgid "_Menu" -msgstr "" - -#: src/wmapp.cc:561 -msgid "_Above Dock" -msgstr "" - -#: src/wmapp.cc:562 -msgid "_Dock" -msgstr "" - -#: src/wmapp.cc:563 -msgid "_OnTop" -msgstr "" - -#: src/wmapp.cc:564 -msgid "_Normal" -msgstr "" - -#: src/wmapp.cc:565 -msgid "_Below" -msgstr "" - -#: src/wmapp.cc:566 -msgid "D_esktop" -msgstr "" - -#: src/wmapp.cc:610 src/wmwinlist.cc:381 -msgid "Move to New _Window" -msgstr "" - -#: src/wmapp.cc:620 -msgid "Left Half" -msgstr "" - -#: src/wmapp.cc:621 -msgid "Right Half" -msgstr "" - -#: src/wmapp.cc:622 -msgid "Top Half" -msgstr "" - -#: src/wmapp.cc:623 -msgid "Bottom Half" -msgstr "" - -#: src/wmapp.cc:625 -msgid "Top Left" -msgstr "" - -#: src/wmapp.cc:626 -msgid "Top Right" -msgstr "" - -#: src/wmapp.cc:627 -msgid "Bottom Left" -msgstr "" - -#: src/wmapp.cc:628 -msgid "Bottom Right" -msgstr "" - -#: src/wmapp.cc:629 -msgid "Center" -msgstr "" - -#. TRANSLATORS: This appears in a group with others items, so please make the hotkeys unique in the set: # T_ile Horizontally, Ca_scade, _Arrange, _Minimize All, _Hide All, _Undo, Arrange _Icons, _Windows, _Refresh, _About, _Logout -#: src/wmapp.cc:631 src/wmtaskbar.cc:217 src/wmwinlist.cc:468 -#: src/wmwinlist.cc:501 -msgid "T_ile Horizontally" -msgstr "" - -#. TRANSLATORS: This appears in a group with others items, so please make the hotkeys unique in the set: # T_ile Horizontally, Ca_scade, _Arrange, _Minimize All, _Hide All, _Undo, Arrange _Icons, _Windows, _Refresh, _About, _Logout -#: src/wmapp.cc:633 src/wmtaskbar.cc:215 src/wmwinlist.cc:467 -#: src/wmwinlist.cc:500 -msgid "Tile _Vertically" -msgstr "" - -#: src/wmapp.cc:645 src/wmwinlist.cc:448 -msgid "_Restore" -msgstr "" - -#: src/wmapp.cc:647 -msgid "_Move" -msgstr "" - -#: src/wmapp.cc:649 -msgid "_Size" -msgstr "" - -#: src/wmapp.cc:651 src/wmwinlist.cc:449 -msgid "Mi_nimize" -msgstr "" - -#: src/wmapp.cc:653 src/wmwinlist.cc:450 -msgid "Ma_ximize" -msgstr "" - -#: src/wmapp.cc:654 src/wmwinlist.cc:451 -msgid "Maximize_Vert" -msgstr "" - -#: src/wmapp.cc:655 src/wmwinlist.cc:452 -msgid "MaximizeHori_z" -msgstr "" - -#: src/wmapp.cc:658 src/wmwinlist.cc:453 -msgid "_Fullscreen" -msgstr "" - -#: src/wmapp.cc:661 src/wmwinlist.cc:455 -msgid "_Hide" -msgstr "" - -#: src/wmapp.cc:663 src/wmwinlist.cc:456 -msgid "Roll_up" -msgstr "" - -#: src/wmapp.cc:670 -msgid "R_aise" -msgstr "" - -#: src/wmapp.cc:672 src/wmwinlist.cc:458 -msgid "_Lower" -msgstr "" - -#: src/wmapp.cc:674 src/wmwinlist.cc:459 -msgid "La_yer" -msgstr "" - -#: src/wmapp.cc:677 src/wmwinlist.cc:460 -msgid "Tile" -msgstr "" - -#: src/wmapp.cc:681 src/wmwinlist.cc:462 -msgid "Move _To" -msgstr "" - -#: src/wmapp.cc:682 src/wmwinlist.cc:463 -msgid "Occupy _All" -msgstr "" - -#: src/wmapp.cc:688 -msgid "Limit _Workarea" -msgstr "" - -#: src/wmapp.cc:692 src/wmwinlist.cc:464 -msgid "Tray _icon" -msgstr "" - -#: src/wmapp.cc:694 src/wmwinlist.cc:465 -msgid "R_ename title" -msgstr "" - -#: src/wmapp.cc:699 src/wmwinlist.cc:480 src/wmwinlist.cc:488 -msgid "_Close" -msgstr "" - -#: src/wmapp.cc:701 src/wmwinlist.cc:482 -msgid "_Kill Client" -msgstr "" - -#: src/wmapp.cc:704 src/wmdialog.cc:92 src/wmwinmenu.cc:141 -msgid "_Window list" -msgstr "" - -#: src/wmapp.cc:743 -msgid "Another window manager already running, exiting..." -msgstr "" - -#: src/wmapp.cc:818 -#, c-format -msgid "" -"Could not restart: %s\n" -"Does $PATH lead to %s?" -msgstr "" - -#: src/wmapp.cc:1006 -msgid "Confirm Restart as Terminal" -msgstr "" - -#: src/wmapp.cc:1007 -msgid "" -"Unmanage all applications and restart\n" -"as a terminal. Proceed?" -msgstr "" - -#: src/wmapp.cc:1294 src/yxapp.cc:1047 -msgid "" -msgstr "" - -#: src/wmapp.cc:1624 -msgid "" -" --client-id=ID Client id to use when contacting session manager.\n" -msgstr "" - -#: src/wmapp.cc:1630 -msgid "" -"\n" -" --debug Print generic debug messages.\n" -" --debug-z Print debug messages regarding window stacking.\n" -msgstr "" - -#: src/wmapp.cc:1638 -msgid "" -"\n" -" -a, --alpha Use a 32-bit visual for translucency.\n" -" -c, --config=FILE Load preferences from FILE.\n" -" -t, --theme=FILE Load theme from FILE.\n" -" -s, --splash=IMAGE Briefly show IMAGE on startup.\n" -" -p, --postpreferences Print preferences after all processing.\n" -" --rewrite-preferences Update an existing preferences file.\n" -" --trace=conf,icon Trace paths used to load configuration.\n" -msgstr "" - -#: src/wmapp.cc:1649 -msgid " -o, --output=FILE Redirect all output to FILE.\n" -msgstr "" - -#: src/wmapp.cc:1655 -msgid " -i, --install=THEME Install THEME from extra or 'list'.\n" -msgstr "" - -#: src/wmapp.cc:1658 -#, c-format -msgid "" -"Usage: %s [OPTIONS]\n" -"Starts the IceWM window manager.\n" -"\n" -"Options:\n" -" -d, --display=NAME NAME of the X server to use.\n" -"%s --sync Synchronize X11 commands.\n" -"%s\n" -" -V, --version Prints version information and exits.\n" -" -h, --help Prints this usage screen and exits.\n" -"%s\n" -" --replace Replace an existing window manager.\n" -" -r, --restart Tell the running icewm to restart itself.\n" -"\n" -" --configured Print the compile time configuration.\n" -" --directories Print the configuration directories.\n" -" -l, --list-themes Print a list of all available themes.\n" -"%s\n" -"Environment variables:\n" -" ICEWM_PRIVCFG=PATH Directory for user configuration files,\n" -" \"$XDG_CONFIG_HOME/icewm\" if exists or\n" -" \"$HOME/.icewm\" by default.\n" -" DISPLAY=NAME Name of the X server to use.\n" -" MAIL=URL Location of your mailbox.\n" -"\n" -"To report bugs, support requests, comments please visit:\n" -"%s\n" -"\n" -msgstr "" - -#: src/wmapp.cc:1724 -#, c-format -msgid "%s configuration directories:\n" -msgstr "" - -#: src/wmapp.cc:1809 -#, c-format -msgid "%s configured options:%s\n" -msgstr "" - -#: src/wmapp.cc:1950 -msgid "Confirm Logout" -msgstr "" - -#: src/wmapp.cc:1951 -msgid "" -"Logout will close all active applications.\n" -"Proceed?" -msgstr "" - -#: src/wmbutton.cc:124 -msgid "Raise/Lower" -msgstr "" - -#: src/wmbutton.cc:127 -msgid "Hide" -msgstr "" - -#: src/wmbutton.cc:131 -msgid "Restore" -msgstr "" - -#: src/wmbutton.cc:133 -msgid "Maximize" -msgstr "" - -#: src/wmbutton.cc:137 -msgid "Minimize" -msgstr "" - -#: src/wmbutton.cc:141 -msgid "Rolldown" -msgstr "" - -#: src/wmbutton.cc:143 -msgid "Rollup" -msgstr "" - -#: src/wmclient.cc:470 -#, c-format -msgid "" -"Client %s with PID %ld fails to respond.\n" -"Do you wish to terminate this client?\n" -msgstr "" - -#: src/wmconfig.cc:35 src/wmconfig.cc:40 src/wmconfig.cc:46 -#, c-format -msgid "Failed to load theme %s" -msgstr "" - -#: src/wmconfig.cc:113 -#, c-format -msgid "Unknown value '%s' for option '%s'." -msgstr "" - -#: src/wmconfig.cc:121 -#, c-format -msgid "Unable to create directory %s" -msgstr "" - -#: src/wmconfig.cc:184 src/wmsave.cc:306 -#, c-format -msgid "Unable to rename %s to %s" -msgstr "" - -#: src/wmdialog.cc:85 -msgid "Loc_k Workstation" -msgstr "" - -#: src/wmdialog.cc:87 src/ymsgbox.cc:51 -msgid "_Cancel" -msgstr "" - -#. TRANSLATORS: This appears in a group with others items, so please make the hotkeys unique in the set: # T_ile Horizontally, Ca_scade, _Arrange, _Minimize All, _Hide All, _Undo, Arrange _Icons, _Windows, _Refresh, _About, _Logout -#: src/wmdialog.cc:88 src/wmprog.cc:466 src/wmprog.cc:468 src/wmtaskbar.cc:243 -#: src/wmtaskbar.cc:245 -msgid "_Logout..." -msgstr "" - -#: src/wmdialog.cc:93 -msgid "_Restart icewm" -msgstr "" - -#. TRANSLATORS: This appears in a group with others items, so please make the hotkeys unique in the set: # T_ile Horizontally, Ca_scade, _Arrange, _Minimize All, _Hide All, _Undo, Arrange _Icons, _Windows, _Refresh, _About, _Logout -#: src/wmdialog.cc:94 src/wmprog.cc:434 src/wmtaskbar.cc:238 -msgid "_About" -msgstr "" - -#: src/wmdialog.cc:95 -msgid "Reload win_options" -msgstr "" - -#: src/wmdialog.cc:96 -msgid "Reload ke_ys" -msgstr "" - -#: src/wmframe.cc:1376 -msgid "Rename" -msgstr "" - -#: src/wmframe.cc:1377 -msgid "Rename the window title" -msgstr "" - -#: src/wmframe.cc:1871 -msgid "" -"WARNING! All unsaved changes will be lost when\n" -"this client is killed. Do you wish to proceed?" -msgstr "" - -#: src/wmframe.cc:1876 -msgid "Kill Client: " -msgstr "" - -#: src/wmmenu.cc:37 -msgid "Missing command argument" -msgstr "" - -#: src/wmmenu.cc:55 -#, c-format -msgid "Bad argument %d to command '%s'" -msgstr "" - -#: src/wmmenu.cc:110 -#, c-format -msgid "Error at keyword '%s' for %s" -msgstr "" - -#: src/wmmenu.cc:156 -#, c-format -msgid "Error at %s '%s'" -msgstr "" - -#: src/wmmenu.cc:222 -#, c-format -msgid "Unexepected menu keyword: '%s'" -msgstr "" - -#: src/wmmenu.cc:276 -#, c-format -msgid "Error at menuprog '%s'" -msgstr "" - -#: src/wmmenu.cc:320 -#, c-format -msgid "Error at menuprogreload: '%s'" -msgstr "" - -#: src/wmmenu.cc:347 -msgid "Missing filename argument to include statement" -msgstr "" - -#: src/wmmenu.cc:365 -#, c-format -msgid "Error at includeprog '%s'" -msgstr "" - -#: src/wmmenu.cc:408 -#, c-format -msgid "Unknown keyword '%s'" -msgstr "" - -#: src/wmmenu.cc:419 -#, c-format -msgid "" -"Unknown keyword for a non-container: '%s'.\n" -"Expected either 'key' or 'runonce' here.\n" -msgstr "" - -#: src/wmmenu.cc:498 -#, c-format -msgid "'%s' timed out!" -msgstr "" - -#: src/wmmenu.cc:512 -#, c-format -msgid "'%s' produces no output" -msgstr "" - -#: src/wmmgr.cc:3669 -msgid "Missing program setxkbmap" -msgstr "" - -#: src/wmmgr.cc:3670 -msgid "For keyboard switching, please install setxkbmap." -msgstr "" - -#: src/wmoption.cc:285 -#, c-format -msgid "Unknown window option: %s" -msgstr "" - -#: src/wmoption.cc:357 -#, c-format -msgid "Syntax error in window options on line %d of %s" -msgstr "" - -#: src/wmpref.cc:101 -msgid "Save Modifications" -msgstr "" - -#: src/wmpref.cc:179 -#, c-format -msgid "Enter a new value for %s: " -msgstr "" - -#: src/wmprog.cc:341 -msgid "_Click to focus" -msgstr "" - -#: src/wmprog.cc:342 -msgid "_Explicit focus" -msgstr "" - -#: src/wmprog.cc:343 -msgid "_Sloppy mouse focus" -msgstr "" - -#: src/wmprog.cc:344 -msgid "S_trict mouse focus" -msgstr "" - -#: src/wmprog.cc:345 -msgid "_Quiet sloppy focus" -msgstr "" - -#: src/wmprog.cc:346 -msgid "Custo_m" -msgstr "" - -#: src/wmprog.cc:368 -msgid "_Manual" -msgstr "" - -#: src/wmprog.cc:369 -msgid "_Icewm(1)" -msgstr "" - -#: src/wmprog.cc:370 -msgid "Icewm_Bg(1)" -msgstr "" - -#: src/wmprog.cc:371 -msgid "Ice_Sound(1)" -msgstr "" - -#: src/wmprog.cc:420 -msgid "Programs" -msgstr "" - -#: src/wmprog.cc:424 -msgid "_Run..." -msgstr "" - -#. TRANSLATORS: This appears in a group with others items, so please make the hotkeys unique in the set: # T_ile Horizontally, Ca_scade, _Arrange, _Minimize All, _Hide All, _Undo, Arrange _Icons, _Windows, _Refresh, _About, _Logout -#: src/wmprog.cc:428 src/wmtaskbar.cc:233 -msgid "_Windows" -msgstr "" - -#: src/wmprog.cc:439 -msgid "_Help" -msgstr "" - -#: src/wmprog.cc:444 -msgid "_Focus" -msgstr "" - -#: src/wmprog.cc:449 -msgid "_Preferences" -msgstr "" - -#: src/wmprog.cc:454 -msgid "_Themes" -msgstr "" - -#: src/wmprog.cc:458 -msgid "Se_ttings" -msgstr "" - -#: src/wmsession.cc:214 src/wmsession.cc:230 src/wmsession.cc:240 -#, c-format -msgid "Session Manager: Unknown line %s" -msgstr "" - -#. TRANSLATORS: This appears in a group with others items, so please make the hotkeys unique in the set: # T_ile Horizontally, Ca_scade, _Arrange, _Minimize All, _Hide All, _Undo, Arrange _Icons, _Windows, _Refresh, _About, _Logout -#: src/wmtaskbar.cc:219 src/wmwinlist.cc:469 src/wmwinlist.cc:502 -msgid "Ca_scade" -msgstr "" - -#. TRANSLATORS: This appears in a group with others items, so please make the hotkeys unique in the set: # T_ile Horizontally, Ca_scade, _Arrange, _Minimize All, _Hide All, _Undo, Arrange _Icons, _Windows, _Refresh, _About, _Logout -#: src/wmtaskbar.cc:221 src/wmwinlist.cc:470 src/wmwinlist.cc:503 -msgid "_Arrange" -msgstr "" - -#. TRANSLATORS: This appears in a group with others items, so please make the hotkeys unique in the set: # T_ile Horizontally, Ca_scade, _Arrange, _Minimize All, _Hide All, _Undo, Arrange _Icons, _Windows, _Refresh, _About, _Logout -#: src/wmtaskbar.cc:223 src/wmwinlist.cc:472 src/wmwinlist.cc:504 -msgid "_Minimize All" -msgstr "" - -#. TRANSLATORS: This appears in a group with others items, so please make the hotkeys unique in the set: # T_ile Horizontally, Ca_scade, _Arrange, _Minimize All, _Hide All, _Undo, Arrange _Icons, _Windows, _Refresh, _About, _Logout -#: src/wmtaskbar.cc:225 src/wmwinlist.cc:473 src/wmwinlist.cc:505 -msgid "_Hide All" -msgstr "" - -#. TRANSLATORS: This appears in a group with others items, so please make the hotkeys unique in the set: # T_ile Horizontally, Ca_scade, _Arrange, _Minimize All, _Hide All, _Undo, Arrange _Icons, _Windows, _Refresh, _About, _Logout -#: src/wmtaskbar.cc:227 src/wmwinlist.cc:474 src/wmwinlist.cc:506 -msgid "_Undo" -msgstr "" - -#. TRANSLATORS: This appears in a group with others items, so please make the hotkeys unique in the set: # T_ile Horizontally, Ca_scade, _Arrange, _Minimize All, _Hide All, _Undo, Arrange _Icons, _Windows, _Refresh, _About, _Logout -#: src/wmtaskbar.cc:230 -msgid "Arrange _Icons" -msgstr "" - -#. TRANSLATORS: This appears in a group with others items, so please make the hotkeys unique in the set: # T_ile Horizontally, Ca_scade, _Arrange, _Minimize All, _Hide All, _Undo, Arrange _Icons, _Windows, _Refresh, _About, _Logout -#: src/wmtaskbar.cc:236 -msgid "_Refresh" -msgstr "" - -#: src/wmtaskbar.cc:313 src/wmtaskbar.cc:1025 -msgid "Hide Taskbar" -msgstr "" - -#: src/wmtaskbar.cc:336 -msgid "Favorite Applications" -msgstr "" - -#: src/wmtaskbar.cc:362 -msgid "Window List Menu" -msgstr "" - -#: src/wmtaskbar.cc:372 -msgid "Show Desktop" -msgstr "" - -#: src/wmtaskbar.cc:1025 -msgid "Show Taskbar" -msgstr "" - -#: src/wmwinlist.cc:83 -msgid "All Workspaces" -msgstr "" - -#: src/wmwinlist.cc:454 -msgid "_Show" -msgstr "" - -#: src/wmwinlist.cc:457 -msgid "_Raise" -msgstr "" - -#: src/wmwinlist.cc:480 -msgid "Del" -msgstr "" - -#: src/wmwinlist.cc:484 -msgid "_Terminate Process" -msgstr "" - -#: src/wmwinlist.cc:485 -msgid "Kill _Process" -msgstr "" - -#: src/wmwinlist.cc:520 src/wmwinlist.cc:521 -msgid "Window list" -msgstr "" - -#: src/wmwinmenu.cc:100 -#, c-format -msgid "%lu. Workspace %-.32s" -msgstr "" - -#: src/wpixres.cc:93 src/wpixres.cc:100 -#, c-format -msgid "Image not readable: %s" -msgstr "" - -#: src/yapp.cc:296 -#, c-format -msgid "%s: select failed" -msgstr "" - -#: src/ycolor.cc:229 src/ycolor.cc:240 -#, c-format -msgid "Could not parse color \"%s\"" -msgstr "" - -#: src/yconfig.cc:84 -#, c-format -msgid "Unknown key name %s in %s" -msgstr "" - -#: src/yconfig.cc:171 src/yconfig.cc:182 src/yconfig.cc:194 -#, c-format -msgid "Bad argument: %s for %s [%d,%d]" -msgstr "" - -#: src/ycursor.cc:110 -#, c-format -msgid "Loading of pixmap \"%s\" failed: %s" -msgstr "" - -#: src/ycursor.cc:135 -#, c-format -msgid "Loading of pixmap \"%s\" failed" -msgstr "" - -#: src/ycursor.cc:179 -#, c-format -msgid "BUG? Imlib was able to read \"%s\"" -msgstr "" - -#: src/ycursor.cc:204 -#, c-format -msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" -msgstr "" - -#: src/ycursor.cc:212 -#, c-format -msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" -msgstr "" - -#: src/ycursor.cc:215 -#, c-format -msgid "BUG? Unexpected character but Imlib was able to parse \"%s\"" -msgstr "" - -#: src/yfontcore.cc:121 src/yfontxft.cc:117 -#, c-format -msgid "Could not load font \"%s\"." -msgstr "" - -#: src/yfontcore.cc:233 -#, c-format -msgid "Missing codesets for fontset \"%s\":" -msgstr "" - -#: src/yfontcore.cc:261 -#, c-format -msgid "Could not load fontset \"%s\"." -msgstr "" - -#: src/yinputline.cc:18 -msgid "_Copy" -msgstr "" - -#: src/yinputline.cc:18 -msgid "Ctrl+C" -msgstr "" - -#: src/yinputline.cc:19 -msgid "Cu_t" -msgstr "" - -#: src/yinputline.cc:20 -msgid "_Paste" -msgstr "" - -#: src/yinputline.cc:21 -msgid "Paste _Selection" -msgstr "" - -#: src/yinputline.cc:21 -msgid "Ctrl+P" -msgstr "" - -#: src/yinputline.cc:23 -msgid "Select _All" -msgstr "" - -#: src/yinputline.cc:23 -msgid "Ctrl+A" -msgstr "" - -#: src/ylocale.cc:60 -msgid "Locale not supported by C library or Xlib. Falling back to 'C' locale'." -msgstr "" - -#: src/ylocale.cc:95 -msgid "" -"Failed to determinate the current locale's codeset. Assuming ISO-8859-1.\n" -msgstr "" - -#: src/ylocale.cc:128 src/ylocale.cc:136 -#, c-format -msgid "iconv doesn't supply (sufficient) %s to %s converters." -msgstr "" - -#: src/ylocale.cc:241 -#, c-format -msgid "Invalid multibyte string \"%s\": %s" -msgstr "" - -#: src/ymsgbox.cc:48 -msgid "_OK" -msgstr "" - -#: src/ysmapp.cc:98 -msgid "$USER or $LOGNAME not set?" -msgstr "" - -#: src/yurl.cc:145 -#, c-format -msgid "Failed to parse URL \"%s\"." -msgstr "" - -#: src/yurl.cc:161 -#, c-format -msgid "Incomplete hex escape in URL at position %d." -msgstr "" - -#: src/yurl.cc:168 -#, c-format -msgid "Invalid hex escape in URL at position %d." -msgstr "" - -#: src/yxapp.cc:1005 -msgid "" -" -d, --display=NAME NAME of the X server to use.\n" -" --sync Synchronize X11 commands.\n" -msgstr "" - -#: src/yximage.cc:173 -msgid "Support for PNG images was not enabled" -msgstr "" - -#: src/yximage.cc:181 -msgid "Support for JPEG images was not enabled" -msgstr "" - -#: src/yximage.cc:187 -#, c-format -msgid "Unsupported file format: %s" -msgstr "" - -#: src/yximage.cc:191 src/yximage.cc:214 -#, c-format -msgid "Could not load image \"%s\"" -msgstr "" diff --git a/src/aaddressbar.cc b/src/aaddressbar.cc index 2845d96b..7b152ead 100644 --- a/src/aaddressbar.cc +++ b/src/aaddressbar.cc @@ -12,6 +12,7 @@ #include "default.h" #include #include +#include #include #include "ywordexp.h" @@ -19,12 +20,15 @@ AddressBar::AddressBar(IApp *app, YWindow *parent): YInputLine(parent, this), app(app), location(0), + restored(0), curdir(upath::cwd()), olddir(curdir) { + loadHistoryTimer->setTimer(500L, this, true); } AddressBar::~AddressBar() { + saveHistory(); } bool AddressBar::handleKey(const XKeyEvent &key) { @@ -67,6 +71,9 @@ void AddressBar::handleReturn(bool control) { if (line.nonempty()) { history.append(line); location = history.getCount(); + if (saveHistoryTimer == nullptr) { + saveHistoryTimer->setTimer(minute(), this, true); + } } if (internal(line)) return; @@ -87,8 +94,10 @@ void AddressBar::handleReturn(bool control) { if (line.isEmpty()) args.replace(control, nullptr); if (args[0]) { - upath cwd(upath::cwd()); - bool change = (cwd != curdir); + bool change = false; + upath cwd; + if (curdir != null && curdir != (cwd = upath::cwd())) + change = true; if (change) curdir.chdir(); app->runProgram(args[0], args.getCArray()); @@ -113,8 +122,10 @@ bool AddressBar::internal(mstring line) { if (strchr("$~", arg[0])) arg = upath(arg).expand(); else if (arg == "-") - arg = olddir; - upath newdir((arg[0] == '/') ? upath(arg) : curdir + arg); + arg = (olddir != null) ? olddir.path() : upath::cwd(); + upath newdir((arg[0] == '/') ? upath(arg) : + (curdir != null) ? curdir + arg : + upath(upath::cwd()) + arg); upath realdir = upath(newdir).real(); if (realdir.isEmpty()) { arg.fmt("%s: %m", newdir.string()); @@ -124,7 +135,7 @@ bool AddressBar::internal(mstring line) { arg.fmt("%s: %m", realdir.string()); return setText(arg, true), true; } else { - olddir = curdir; + olddir = (curdir != null) ? curdir : upath(upath::cwd()); curdir = realdir; return setText(curdir, true), true; } @@ -176,4 +187,63 @@ void AddressBar::inputEscape(YInputLine* input) { void AddressBar::inputLostFocus(YInputLine* input) { } +bool AddressBar::handleTimer(YTimer* timer) { + if (timer == loadHistoryTimer) { + loadHistory(); + loadHistoryTimer = null; + } + else if (timer == saveHistoryTimer) { + saveHistory(); + saveHistoryTimer = null; + } + else { + return YInputLine::handleTimer(timer); + } + return false; +} + +upath AddressBar::historyFile() { + return YApplication::getPrivConfFile("ahistory"); +} + +void AddressBar::loadHistory() { + upath path(historyFile()); + FILE* fp = path.fopen("r"); + if (fp) { + char buf[4096]; + int n = 0; + while (fgets(buf, sizeof buf, fp)) + ++n; + rewind(fp); + for (int i = saveLines; i < n && fgets(buf, sizeof buf, fp); ++i) + ; + for (int i = 0; i < saveLines && fgets(buf, sizeof buf, fp); ++i) { + char* nl = strchr(buf, '\n'); + if (nl) + *nl = '\0'; + history.insert(i, buf); + location++; + restored++; + } + fclose(fp); + } +} + +void AddressBar::saveHistory() { + if (restored < history.getCount()) { + upath path(historyFile()); + FILE* fp = path.fopen("w"); + if (fp) { + fchmod(fileno(fp), 0600); + const int first = max(0, history.getCount() - saveLines); + for (int i = first; i < history.getCount(); ++i) { + fputs(history[i], fp); + fputc('\n', fp); + } + fclose(fp); + restored = history.getCount(); + } + } +} + // vim: set sw=4 ts=4 et: diff --git a/src/aaddressbar.h b/src/aaddressbar.h index 94e8500f..6284e507 100644 --- a/src/aaddressbar.h +++ b/src/aaddressbar.h @@ -6,7 +6,10 @@ class IApp; -class AddressBar: public YInputLine, private YInputListener { +class AddressBar: + public YInputLine, + private YInputListener +{ public: AddressBar(IApp *app, YWindow *parent = nullptr); virtual ~AddressBar(); @@ -22,15 +25,23 @@ class AddressBar: public YInputLine, private YInputListener { void handleReturn(bool control); bool appendCommand(const char* cmd, class YStringArray& args); bool internal(mstring line); + void loadHistory(); + void saveHistory(); + upath historyFile(); void inputReturn(YInputLine* input, bool control); void inputEscape(YInputLine* input); void inputLostFocus(YInputLine* input); + bool handleTimer(YTimer* timer); IApp *app; MStringArray history; int location; + int restored; + const int saveLines = 64; upath curdir, olddir; + lazy loadHistoryTimer; + lazy saveHistoryTimer; }; #endif diff --git a/src/base.h b/src/base.h index ed3d9b71..4bc2e761 100644 --- a/src/base.h +++ b/src/base.h @@ -156,6 +156,7 @@ void show_backtrace(const int limit = 0); int strpcmp(char const *str, char const *pfx, char const *delim = "=:"); const char* errno_string(); const char *my_basename(const char *filename); +bool strequal(const char* a, const char* b); inline const char* boolstr(bool bval) { return bval ? "true" : "false"; diff --git a/src/bindkey.h b/src/bindkey.h index dfbf4133..06af358f 100644 --- a/src/bindkey.h +++ b/src/bindkey.h @@ -54,8 +54,8 @@ #define defgKeySysWindowList XK_Escape, kfCtrl+kfAlt, "Alt+Ctrl+Esc" #define defgKeySysWinListMenu 0, 0, "" #define defgKeySysKeyboardNext 0, 0, "" -#define defgKeySysAddressBar ' ', kfAlt+kfCtrl, "Alt+Ctrl+Space" -#define defgKeyWinMenu ' ', kfAlt, "Alt+Space" +#define defgKeySysAddressBar ' ', kfAlt+kfCtrl, "Alt+Ctrl+space" +#define defgKeyWinMenu ' ', kfAlt, "Alt+space" #define defgKeySysWorkspacePrev XK_Left, kfAlt+kfCtrl, "Alt+Ctrl+Left" #define defgKeySysWorkspaceNext XK_Right, kfAlt+kfCtrl, "Alt+Ctrl+Right" #define defgKeySysWorkspaceLast XK_Down, kfAlt+kfCtrl, "Alt+Ctrl+Down" diff --git a/src/default.h b/src/default.h index 2ff05895..6adbe95d 100644 --- a/src/default.h +++ b/src/default.h @@ -443,7 +443,7 @@ cfoption icewm_preferences[] = { /// OSV("Theme", &themeName, "Theme name"), OSV("IconPath", &iconPath, "Icon search path (colon separated)"), OSV("IconThemes", &iconThemes, "Colon separated icon theme list with wildcard support. Minus prefix - can be used to exclude themes."), - OSV("MailBoxPath", &mailBoxPath, "Colon separated paths of your mailboxes, otherwise $MAILPATH or $MAIL is used"), + OSV("MailBoxPath", &mailBoxPath, "Paths of mailboxes separated by a space, otherwise $MAILPATH or $MAIL is used"), OSV("MailCommand", &mailCommand, "Command to run on mailbox"), OSV("MailClassHint", &mailClassHint, "WM_CLASS to allow runonce for MailCommand"), OSV("NewMailCommand", &newMailCommand, "Command to run when new mail arrives"), diff --git a/src/icesh.cc b/src/icesh.cc index f0c37b6a..e46871fc 100644 --- a/src/icesh.cc +++ b/src/icesh.cc @@ -1416,6 +1416,7 @@ class IceSh { void setBorderTitle(int border, int title); void sizeto(); void sizeby(); + void moveto(); void detail(); void extents(); void details(Window window); @@ -2144,6 +2145,70 @@ void IceSh::sizeby() } } +void IceSh::moveto() +{ + char* xa = getArg(); + char* ya = getArg(); + char* xs = &xa[isSign(xa[0]) && isSign(xa[1])]; + char* ys = &ya[isSign(ya[0]) && isSign(ya[1])]; + bool xper = *xs && xs[strlen(xs)-1] == '%'; + bool yper = *ys && ys[strlen(ys)-1] == '%'; + if (xper) xs[strlen(xs)-1] = '\0'; + if (yper) ys[strlen(ys)-1] = '\0'; + bool xneg = (xa < xs && *xa == '-'); + bool yneg = (ya < ys && *ya == '-'); + long lx = 0, ly = 0; + float fx = 0, fy = 0; + if ((xper ? tofloat(xs, fx) : tolong(xs, lx)) && + (yper ? tofloat(ys, fy) : tolong(ys, ly))) { + FOREACH_WINDOW(window) { + use(window); + Window frame = getFrameWindow(window); + if (frame) { + int ax = 0, ay = 0, aw = displayWidth(), ah = displayHeight(); + long xpos = lx; + long ypos = ly; + if (xper | yper) { + getArea(window, ax, ay, aw, ah); + } + int gx, gy, gw, gh; + if (::getGeometry(frame, gx, gy, gw, gh)) { + if (xneg && xper) { + xpos = ax + aw - long(fx * aw / 100.0f) - gw; + } + else if (xper) { + xpos = ax + long(fx * aw / 100.0f); + } + else if (xneg) { + xpos = displayWidth() - gw + lx; + } + xpos = clamp(xpos, -30000L, 30000L); + + if (yneg && yper) { + ypos = ay + ah - long(fy * ah / 100.0f) - gh; + } + else if (yper) { + ypos = ay + long(fy * ah / 100.0f); + } + else if (yneg) { + ypos = displayHeight() - gh + ly; + } + ypos = clamp(ypos, -30000L, 30000L); + + moveResize(window, NorthWestGravity, + xpos, ypos, None, None, CWX | CWY); + modified(window); + } else { + window.discard(); + } + } + } + } + else { + invalidArgument("move parameters"); + } +} + void IceSh::queryXembed(Window parent) { YWindowTree windowList(parent); @@ -4920,41 +4985,7 @@ void IceSh::parseAction() sizeby(); } else if (isAction("move", 2)) { - const char* xa = getArg(); - const char* ya = getArg(); - const char* xs = &xa[isSign(xa[0]) && isSign(xa[1])]; - const char* ys = &ya[isSign(ya[0]) && isSign(ya[1])]; - long lx, ly; - if (tolong(xs, lx) && tolong(ys, ly)) { - FOREACH_WINDOW(window) { - use(window); - Window frame = getFrameWindow(window); - if (frame) { - int x, y, w, h; - if (::getGeometry(frame, x, y, w, h)) { - int tx, ty; - if (xa < xs && *xa == '-') { - tx = displayWidth() - w + lx; - } else { - tx = lx; - } - if (ya < ys && *ya == '-') { - ty = displayHeight() - h + ly; - } else { - ty = ly; - } - moveResize(window, NorthWestGravity, - tx, ty, None, None, CWX | CWY); - modified(window); - } else { - window.discard(); - } - } - } - } - else { - invalidArgument("move parameters"); - } + moveto(); } else if (isAction("moveby", 2)) { const char* xs = getArg(); diff --git a/src/strtest.cc b/src/strtest.cc index ff3fe5ce..149f6742 100644 --- a/src/strtest.cc +++ b/src/strtest.cc @@ -367,6 +367,8 @@ static void test_upath() expect(hm.expand(), getenv("HOME")); hm = "~/"; assert(strlen(hm.expand()), 1 + strlen(getenv("HOME"))); + hm = "~/bin"; + assert(strlen(hm.expand()), 4 + strlen(getenv("HOME"))); } upath hm = "$HOME"; expect(hm.expand(), getenv("HOME")); diff --git a/src/upath.cc b/src/upath.cc index fe0a167e..4c445d2e 100644 --- a/src/upath.cc +++ b/src/upath.cc @@ -9,6 +9,7 @@ #include "sysdep.h" #include #include "base.h" +#include "intl.h" const mstring upath::slash("/"); const upath upath::rootPath(slash); @@ -81,24 +82,24 @@ upath upath::replaceExtension(const char* ext) const { mstring upath::expand() const { int c = fPath[0]; if (c == '~') { - int k = fPath[1]; - if (k == -1 || isSeparator(k)) { + const int k = fPath.indexOf('/'); + if (length() == 1) { csmart home(userhome(nullptr)); - return (upath(home) + - fPath.substring(size_t(min(2, length())))).fPath; + return upath(home); + } + else if (k == 1) { + csmart home(userhome(nullptr)); + return upath(home) + fPath.substring(1); + } + else if (k == -1) { + mstring user(fPath.substring(1, k - 1)); + csmart home(userhome(user)); + return upath(home); } else { - k = 2; - while (k < length() && isSeparator(fPath[k]) == false) - k++; mstring user(fPath.substring(1, k - 1)); csmart home(userhome(user)); - if (home) { - upath path(home); - if (k < length()) - path += fPath.substring(k); - return path.fPath; - } + return upath(home) + fPath.substring(k); } } else if (c == '$') { @@ -159,6 +160,19 @@ bool upath::dirExists() { return false; } +bool upath::ensureDirectory() { + struct stat sb; + if (stat(&sb) == 0) { + if (S_ISDIR(sb.st_mode)) + return true; + errno = EEXIST; + } + else if (mkdir()) + return true; + fail(_("Unable to create directory %s"), string()); + return false; +} + bool upath::isReadable() { return access(R_OK) == 0; } diff --git a/src/upath.h b/src/upath.h index 6b03cbb9..c1fbbaba 100644 --- a/src/upath.h +++ b/src/upath.h @@ -56,6 +56,7 @@ class upath { fcsmart loadText(); bool copyFrom(upath from, int mode = 0666); bool testWritable(int mode = 0666); + bool ensureDirectory(); int fnMatch(const char* pattern, int flags = 0); upath& operator=(const upath& p) { diff --git a/src/wmapp.cc b/src/wmapp.cc index 5827128a..7c9be6c9 100644 --- a/src/wmapp.cc +++ b/src/wmapp.cc @@ -1361,6 +1361,8 @@ YWMApp::YWMApp(int *argc, char ***argv, const char *displayName, delete desktop; managerWindow = registerProtocols1(*argv, *argc); + if (notifyParent == false && strequal("icewm", getenv("DESKTOP_SESSION"))) + warn("Better start icewm via icewm-session"); manager = new YWindowManager(this, this, this, nullptr, root()); PRECONDITION(desktop != nullptr); diff --git a/src/wmconfig.cc b/src/wmconfig.cc index fb4e45b2..ac83ccb2 100644 --- a/src/wmconfig.cc +++ b/src/wmconfig.cc @@ -114,18 +114,9 @@ void setLook(const char *name, const char *arg, bool) { } } -static bool ensureDirectory(upath path) { - if (path.dirExists()) - return true; - if (path.mkdir() != 0) { - fail(_("Unable to create directory %s"), path.string()); - } - return path.dirExists(); -} - -static upath getDefaultsFilePath(const mstring& basename) { - upath prv(YApplication::getPrivConfDir()); - if (ensureDirectory(prv)) { +static upath getDefaultsFilePath(const char* basename) { + upath prv(YApplication::getPrivConfDir(true)); + if (prv.dirExists()) { return prv + basename; } return null; @@ -314,6 +305,9 @@ int WMConfig::rewritePrefs(cfoption* start_preferences, const char* config) { upath source(nonempty(config) ? config : getDefaultsFilePath("preferences")); + if (source == null) { + return EXIT_FAILURE; + } if (origin == source) { errno = EDEADLK; fail("%s", origin.string()); diff --git a/src/wmframe.cc b/src/wmframe.cc index 71c5d417..02f9c6d7 100644 --- a/src/wmframe.cc +++ b/src/wmframe.cc @@ -2106,7 +2106,7 @@ void YFrameWindow::maybeFocus() { } } -void YFrameWindow::focus(bool canWarp) { +void YFrameWindow::limitPos() { if (limitPosition && (x() >= int(desktop->width()) - borderX() || y() >= int(desktop->height()) - borderY() - titleY() || @@ -2125,6 +2125,10 @@ void YFrameWindow::focus(bool canWarp) { newY = int(- borderY()); setCurrentPositionOuter(newX, newY); } +} + +void YFrameWindow::focus(bool canWarp) { + limitPos(); manager->setFocus(this, canWarp); if (raiseOnFocus && manager->isRunning()) { wmRaise(); diff --git a/src/wmframe.h b/src/wmframe.h index 9c462272..827eecfb 100644 --- a/src/wmframe.h +++ b/src/wmframe.h @@ -54,6 +54,7 @@ class YFrameWindow: void createPointerWindows(); void grabKeys(); + void limitPos(); void maybeFocus(); void focus(bool canWarp = false); void activate(bool canWarp = false, bool curWork = true); diff --git a/src/wmmgr.cc b/src/wmmgr.cc index f8a0dba8..6c4dc400 100644 --- a/src/wmmgr.cc +++ b/src/wmmgr.cc @@ -3877,7 +3877,11 @@ void YWindowManager::updateScreenSize(XEvent *event) { /// TODO #warning "make something better" if (arrangeWindowsOnScreenSizeChange && resize) { - wmActionListener->actionPerformed(actionArrange, 0); + for (YFrameIter frame(focusedIterator()); ++frame; ) { + if (frame->visible()) { + frame->limitPos(); + } + } } if (resize) { arrangeIcons(); diff --git a/src/wmsave.cc b/src/wmsave.cc index 53bf662e..29064d0f 100644 --- a/src/wmsave.cc +++ b/src/wmsave.cc @@ -34,7 +34,7 @@ upath SavePrefs::preferencesPath(const char* configFile) { return defaultPrefs(path); } - upath priv(YApplication::getPrivConfFile("preferences", true)); + upath priv(YApplication::getPrivConfFile("preferences")); if (priv.isWritable()) return priv; if (!priv.fileExists() && priv.testWritable(perm)) diff --git a/src/yapp.cc b/src/yapp.cc index d58809e3..57dd5e33 100644 --- a/src/yapp.cc +++ b/src/yapp.cc @@ -516,35 +516,28 @@ const upath& YApplication::getPrivConfDir(bool create) { static upath dir; if (dir.isEmpty()) { const char *env = getenv("ICEWM_PRIVCFG"); - if (env) { + if (nonempty(env)) dir = env; - if (create && ! dir.dirExists()) - dir.mkdir(); - } else { + const upath home = getHomeDir(); env = getenv("XDG_CONFIG_HOME"); - if (env) - dir = env; - else { - dir = getHomeDir() + "/.config"; - } - dir += "/icewm"; - if (!dir.dirExists()) { - dir = getHomeDir() + "/.icewm"; - if (create && ! dir.dirExists()) - dir.mkdir(); - } + if (nonempty(env)) + dir = upath(env) + "/icewm"; + else if (home != null) + dir = home + "/.config/icewm"; + if ( !dir.dirExists()) + dir = home + "/.icewm"; } MSG(("using %s for private configuration files", dir.string())); } - else if (create && ! dir.dirExists()) { - dir.mkdir(); + if (create && dir.nonempty()) { + dir.ensureDirectory(); } return dir; } -upath YApplication::getPrivConfFile(mstring basename, bool create) { - return getPrivConfDir(create) + basename; +upath YApplication::getPrivConfFile(mstring basename) { + return getPrivConfDir() + basename; } upath YApplication::getHomeDir() { diff --git a/src/yapp.h b/src/yapp.h index c273d252..c8a48b45 100644 --- a/src/yapp.h +++ b/src/yapp.h @@ -69,7 +69,7 @@ class YApplication: public IApp, public IMainLoop, public IResourceLocator { static const upath& getLibDir(); static const upath& getConfigDir(); static const upath& getPrivConfDir(bool create = false); - static upath getPrivConfFile(mstring basename, bool create = false); + static upath getPrivConfFile(mstring basename); static upath getHomeDir(); private: diff --git a/src/yarray.cc b/src/yarray.cc index 73b47d38..58dbffef 100644 --- a/src/yarray.cc +++ b/src/yarray.cc @@ -213,7 +213,7 @@ YStringArray::YStringArray(const char* cstr[], SizeType num, SizeType cap) : } } -static bool strequal(const char *a, const char *b) { +bool strequal(const char* a, const char* b) { return a ? b && !strcmp(a, b) : !b; } diff --git a/src/yinputline.cc b/src/yinputline.cc index 27de088f..9b43a3a4 100644 --- a/src/yinputline.cc +++ b/src/yinputline.cc @@ -708,25 +708,53 @@ void YInputLine::autoScroll(int delta, const XMotionEvent *motion) { } void YInputLine::complete() { - char* res = nullptr; mstring mstr(fText); + if (mstr[0] == '~' && mstr.length() > 1 + && mstr.lastIndexOf(' ') == -1 + && mstr.lastIndexOf('/') == -1) { + mstring var = mstr.substring(1); + mstring exp = completeUsername(var); + if (exp != var) { + setText(mstr.substring(0, 1) + exp, false); + return; + } + } + csmart res; int res_count = globit_best(mstr, &res, nullptr, nullptr); // directory is not a final match if (res_count == 1 && upath(res).dirExists()) res_count++; if (1 <= res_count) - setText(res, res_count == 1); + setText(mstring(res), res_count == 1); else { int i = mstr.lastIndexOf(' '); if (i > 0 && size_t(i + 1) < mstr.length()) { + mstring pre(mstr.substring(0, i + 1)); mstring sub(mstr.substring(i + 1)); - YStringArray list; - if (sub[0] == '~' && upath::glob(sub, list, "/ST") && - list.getCount() == 1) { - mstring found(mstr.substring(0, i + 1) + list[0]); - setText(found, true); + if (sub[0] == '$' || sub[0] == '~') { + mstring exp = upath(sub).expand(); + if (exp != sub && exp != null) { + setText(pre + exp, false); + } + else if (sub.indexOf('/') == -1) { + mstring var = sub.substring(1); + if (var.nonempty()) { + if (sub[0] == '$') { + exp = completeVariable(var); + } else { + exp = completeUsername(var); + } + if (exp != var) { + char doti[] = { char(sub[0]), '\0' }; + setText(pre + doti + exp, false); + } + } + } + return; } - else if (upath::glob(sub + "*", list, "/S") && list.nonempty()) { + + YStringArray list; + if (upath::glob(sub + "*", list, "/S") && list.nonempty()) { if (list.getCount() == 1) { mstring found(mstr.substring(0, i + 1) + list[0]); setText(found, true); @@ -748,8 +776,72 @@ void YInputLine::complete() { } } } + else if (i == -1 && mstr.length() > 1 && mstr.indexOf('/') == -1) { + if (mstr[0] == '$') { + mstring var = completeVariable(mstr.substring(1)); + if (var != mstr.substring(1)) + setText(mstr.substring(0, 1) + var, false); + } + } + } +} + +static size_t commonPrefix(const char* s, const char* t) { + size_t i = 0; + while (s[i] && s[i] == t[i]) + i++; + return i; +} + +mstring YInputLine::completeVariable(mstring var) { + extern char** environ; + char* best = nullptr; + size_t len = 0; + for (int i = 0; environ[i]; ++i) { + if ( !strncmp(environ[i], var, var.length())) { + char* eq = strchr(environ[i], '='); + size_t k = eq - environ[i]; + if (eq && k >= var.length()) { + if (best == nullptr) { + best = environ[i]; + len = k; + } else { + size_t c = commonPrefix(best, environ[i]); + if (len > c) + len = c; + } + } + } + } + return (len > var.length()) ? mstring(best, len) : var; +} + +mstring YInputLine::completeUsername(mstring var) { + FILE* fp = fopen("/etc/passwd", "r"); + if (fp == nullptr) + return var; + char line[1024], best[1024]; + size_t len = 0; + *best = '\0'; + while (fgets(line, sizeof line, fp)) { + if ( !strncmp(line, var, var.length())) { + char* sep = strchr(line, ':'); + if (sep && sep - line >= (ptrdiff_t) var.length()) { + *sep = '\0'; + size_t k = sep - line; + if (*best == '\0') { + memcpy(best, line, k + 1); + len = k; + } else { + size_t c = commonPrefix(best, line); + if (len > c) + len = c; + } + } + } } - free(res); + fclose(fp); + return (len > var.length()) ? mstring(best, len) : var; } bool YInputLine::isFocusTraversable() { diff --git a/src/yinputline.h b/src/yinputline.h index 5da07c40..3f673fc9 100644 --- a/src/yinputline.h +++ b/src/yinputline.h @@ -22,7 +22,7 @@ class YInputListener { class YInputLine: public YWindow, - private YTimerListener, + protected YTimerListener, private YActionListener, private YPopDownListener { @@ -70,13 +70,16 @@ class YInputLine: bool copySelection(); void complete(); -private: +protected: virtual bool handleTimer(YTimer *timer); +private: virtual bool handleAutoScroll(const XMotionEvent &mouse); void limit(); void autoScroll(int delta, const XMotionEvent *mouse); unsigned offsetToPos(int offset); + static mstring completeVariable(mstring var); + static mstring completeUsername(mstring user); YWideString fText; unsigned markPos; diff --git a/src/ysmapp.cc b/src/ysmapp.cc index 37034b80..77d302db 100644 --- a/src/ysmapp.cc +++ b/src/ysmapp.cc @@ -20,11 +20,8 @@ static char *newSessionId = nullptr; static char *sessionProg; upath getsesfile() { - upath path(YApplication::getPrivConfDir()); - if (false == path.dirExists()) - path.mkdir(); - path += mstring("/.session-", newSessionId); - return path; + mstring name(".session-", newSessionId); + return YApplication::getPrivConfFile(name); } static void iceWatchFD(IceConn conn, diff --git a/src/ytime.h b/src/ytime.h index 12e20a88..d9c983f3 100644 --- a/src/ytime.h +++ b/src/ytime.h @@ -54,6 +54,8 @@ inline double toDouble(const timeval& t) { inline timeval zerotime() { return (timeval) { 0L, 0L }; } +inline long minute() { return 60*1000L; } + #endif // vim: set sw=4 ts=4 et: