icewm-1.3.7/0000775000076600007660000000000011463274256011636 5ustar develdevelicewm-1.3.7/icewm-set-gnomewm0000775000076600007660000000046111463274240015122 0ustar develdevel#!/bin/sh echo Previous window manager: gconftool-2 -g /desktop/gnome/session/required_components/windowmanager gconftool-2 -s /desktop/gnome/session/required_components/windowmanager --type string icewm echo New window manager: gconftool-2 -g /desktop/gnome/session/required_components/windowmanager icewm-1.3.7/BUGS0000644000076600007660000000011111463274240012301 0ustar develdevelPlease report bugs at: http://sourceforge.net/tracker/?group_id=31 icewm-1.3.7/install.in0000664000076600007660000000077511463274240013636 0ustar develdevelAPPLICATIONS = @APPLICATIONS@ prefix = @prefix@ exec_prefix = @exec_prefix@ libdir = @libdir@ sysconfdir = @sysconfdir@ datadir = @datadir@ PREFIX = @prefix@ BINDIR = @bindir@ LIBDIR = @libdatadir@ CFGDIR = @cfgdatadir@ LOCDIR = @localedir@ KDEDIR = @kdedatadir@ DOCDIR = @docdir@ INSTALL = @INSTALL@ INSTALLDIR = @INSTALL@ -m 755 -d INSTALLBIN = @INSTALL_PROGRAM@ INSTALLLIB = @INSTALL_DATA@ #INSTALLETC = @INSTALL_DATA@ MKFONTDIR = @MKFONTDIR@ icewm-1.3.7/src/0000775000076600007660000000000011463274255012424 5ustar develdevelicewm-1.3.7/src/aworkspaces.cc0000644000076600007660000002451511463274240015254 0ustar develdevel#include "config.h" #ifdef CONFIG_TASKBAR #include "ylib.h" #include "aworkspaces.h" #include "wmtaskbar.h" #include "prefs.h" #include "wmmgr.h" #include "wmapp.h" #include "wmframe.h" #include "yrect.h" #include "yicon.h" #include "wmwinlist.h" #include "intl.h" #include #include #include #include #include #include #include #include "base.h" YColor * WorkspaceButton::normalButtonBg(NULL); YColor * WorkspaceButton::normalButtonFg(NULL); YColor * WorkspaceButton::activeButtonBg(NULL); YColor * WorkspaceButton::activeButtonFg(NULL); ref WorkspaceButton::normalButtonFont; ref WorkspaceButton::activeButtonFont; ref workspacebuttonPixmap; ref workspacebuttonactivePixmap; #ifdef CONFIG_GRADIENTS ref workspacebuttonPixbuf; ref workspacebuttonactivePixbuf; #endif WorkspaceButton::WorkspaceButton(long ws, YWindow *parent): ObjectButton(parent, (YAction *)0) { fWorkspace = ws; //setDND(true); } void WorkspaceButton::handleClick(const XButtonEvent &up, int /*count*/) { switch (up.button) { #ifdef CONFIG_WINLIST case 2: if (windowList) windowList->showFocused(-1, -1); break; #endif #ifdef CONFIG_WINMENU case 3: manager->popupWindowListMenu(this, up.x_root, up.y_root); break; #endif case 4: manager->switchToPrevWorkspace(false); break; case 5: manager->switchToNextWorkspace(false); break; } } void WorkspaceButton::handleDNDEnter() { if (fRaiseTimer == 0) fRaiseTimer = new YTimer(autoRaiseDelay); if (fRaiseTimer) { fRaiseTimer->setTimerListener(this); fRaiseTimer->startTimer(); } repaint(); } void WorkspaceButton::handleDNDLeave() { if (fRaiseTimer && fRaiseTimer->getTimerListener() == this) { fRaiseTimer->stopTimer(); fRaiseTimer->setTimerListener(0); } repaint(); } bool WorkspaceButton::handleTimer(YTimer *t) { if (t == fRaiseTimer) { manager->activateWorkspace(fWorkspace); } return false; } void WorkspaceButton::actionPerformed(YAction */*action*/, unsigned int modifiers) { if (modifiers & ShiftMask) { manager->switchToWorkspace(fWorkspace, true); } else if (modifiers & xapp->AltMask) { if (manager->getFocus()) manager->getFocus()->wmOccupyWorkspace(fWorkspace); } else { manager->activateWorkspace(fWorkspace); return; } } WorkspacesPane::WorkspacesPane(YWindow *parent): YWindow(parent) { long w; if (workspaceCount > 0) fWorkspaceButton = new WorkspaceButton *[workspaceCount]; else fWorkspaceButton = 0; if (fWorkspaceButton) { ref paths = YResourcePaths::subdirs(null, false); int ht = smallIconSize + 8; int leftX = 0; for (w = 0; w < workspaceCount; w++) { WorkspaceButton *wk = new WorkspaceButton(w, this); if (wk) { if (pagerShowPreview) { wk->setSize((int) round((double) (ht * desktop->width() / desktop->height())), ht); } else { ref image (paths->loadImage("workspace/", workspaceNames[w])); if (image != null) wk->setImage(image); else wk->setText(workspaceNames[w]); } #if 0 ref image (paths->loadImage("workspace/", workspaceNames[w])); if (image != null) wk->setImage(image); else wk->setText(workspaceNames[w]); #endif /// TODO "why my_basename here?" char * wn(newstr(my_basename(workspaceNames[w]))); char * ext(strrchr(wn, '.')); if (ext) *ext = '\0'; wk->setToolTip(ustring(_("Workspace: ")).append(wn)); //if ((int)wk->height() + 1 > ht) ht = wk->height() + 1; } fWorkspaceButton[w] = wk; } for (w = 0; w < workspaceCount; w++) { YButton *wk = fWorkspaceButton[w]; //leftX += 2; if (wk) { wk->setGeometry(YRect(leftX, 0, wk->width(), ht)); wk->show(); leftX += wk->width(); } } setSize(leftX, ht); } } WorkspacesPane::~WorkspacesPane() { if (fWorkspaceButton) { for (long w = 0; w < workspaceCount; w++) delete fWorkspaceButton[w]; delete [] fWorkspaceButton; } } void WorkspacesPane::configure(const YRect &r) { YWindow::configure(r); int ht = height(); int leftX = 0; for (int w = 0; w < workspaceCount; w++) { YButton *wk = fWorkspaceButton[w]; //leftX += 2; if (wk) { wk->setGeometry(YRect(leftX, 0, wk->width(), ht)); leftX += wk->width(); } } } WorkspaceButton *WorkspacesPane::workspaceButton(long n) { return (fWorkspaceButton ? fWorkspaceButton[n] : NULL); } ref WorkspaceButton::getFont() { return isPressed() ? (*activeWorkspaceFontName || *activeWorkspaceFontNameXft) ? activeButtonFont != null ? activeButtonFont : activeButtonFont = YFont::getFont(XFA(activeWorkspaceFontName)) : YButton::getFont() : (*normalWorkspaceFontName || *normalWorkspaceFontNameXft) ? normalButtonFont != null ? normalButtonFont : normalButtonFont = YFont::getFont(XFA(normalWorkspaceFontName)) : YButton::getFont(); } YColor * WorkspaceButton::getColor() { return isPressed() ? *clrWorkspaceActiveButtonText ? activeButtonFg ? activeButtonFg : activeButtonFg = new YColor(clrWorkspaceActiveButtonText) : YButton::getColor() : *clrWorkspaceNormalButtonText ? normalButtonFg ? normalButtonFg : normalButtonFg = new YColor(clrWorkspaceNormalButtonText) : YButton::getColor(); } YSurface WorkspaceButton::getSurface() { if (activeButtonBg == 0) activeButtonBg = new YColor(*clrWorkspaceActiveButton ? clrWorkspaceActiveButton : clrActiveButton); if (normalButtonBg == 0) normalButtonBg = new YColor(*clrWorkspaceNormalButton ? clrWorkspaceNormalButton : clrNormalButton); #ifdef CONFIG_GRADIENTS return (isPressed() ? YSurface(activeButtonBg, workspacebuttonactivePixmap, workspacebuttonactivePixbuf) : YSurface(normalButtonBg, workspacebuttonPixmap, workspacebuttonPixbuf)); #else return (isPressed() ? YSurface(activeButtonBg, workspacebuttonactivePixmap) : YSurface(normalButtonBg, workspacebuttonPixmap)); #endif } void WorkspacesPane::repaint() { if (!pagerShowPreview) return; for (int w = 0; w < workspaceCount; w++) { fWorkspaceButton[w]->repaint(); } } void WorkspaceButton::paint(Graphics &g, const YRect &/*r*/) { if (!pagerShowPreview) { YButton::paint(g, YRect(0,0,0,0)); return; } int x(0), y(0), w(width()), h(height()); if (w > 1 && h > 1) { YSurface surface(getSurface()); g.setColor(surface.color); g.drawSurface(surface, x, y, w, h); if (pagerShowBorders) { x += 1; y += 1; w -= 2; h -= 2; } int wx, wy, ww, wh; double sf = (double) desktop->width() / w; ref icon; YColor *colors[] = { surface.color, surface.color->brighter(), surface.color->darker(), getColor(), NULL, // getColor()->brighter(), getColor()->darker() }; for (YFrameWindow *yfw = manager->bottomLayer(WinLayerBelow); yfw && yfw->getActiveLayer() <= WinLayerDock; yfw = yfw->prevLayer()) { if (yfw->isHidden() || !yfw->visibleOn(fWorkspace) || (yfw->frameOptions() & YFrameWindow::foIgnoreWinList)) continue; wx = (int) round(yfw->x() / sf) + x; wy = (int) round(yfw->y() / sf) + y; ww = (int) round(yfw->width() / sf); wh = (int) round(yfw->height() / sf); if (ww < 1 || wh < 1) continue; if (yfw->isMaximizedVert()) { // !!! hack wy = y; wh = h; } if (yfw->isMinimized()) { if (!pagerShowMinimized) continue; g.setColor(colors[2]); } else { if (ww > 2 && wh > 2) { if (yfw->focused()) g.setColor(colors[1]); else g.setColor(colors[2]); g.fillRect(wx+1, wy+1, ww-2, wh-2); #ifndef LITE if (pagerShowWindowIcons && ww > smallIconSize+1 && wh > smallIconSize+1 && (icon = yfw->clientIcon()) != null && icon->small() != null) { g.drawImage(icon->small(), wx + (ww-smallIconSize)/2, wy + (wh-smallIconSize)/2); } #endif } g.setColor(colors[5]); } if (ww == 1 && wh == 1) g.drawPoint(wx, wy); else g.drawRect(wx, wy, ww-1, wh-1); } if (pagerShowBorders) { g.setColor(surface.color); g.draw3DRect(x-1, y-1, w+1, h+1, !isPressed()); } if (pagerShowNumbers) { ref font = getFont(); char label[3]; sprintf(label, "%ld", (fWorkspace+1) % 100); wx = (w - font->textWidth(label)) / 2 + x; wy = (h - font->height()) / 2 + font->ascent() + y; g.setFont(font); g.setColor(colors[0]); g.drawChars(label, 0, strlen(label), wx+1, wy+1); g.setColor(colors[3]); g.drawChars(label, 0, strlen(label), wx, wy); } } } #endif icewm-1.3.7/src/wmabout.cc0000644000076600007660000001152211463274240014402 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2003 Marko Macek * * Dialogs */ #include "config.h" #ifndef LITE #include "ylib.h" #include "wmabout.h" #include "yprefs.h" #include "prefs.h" #include "wmapp.h" #include "wmframe.h" #include "sysdep.h" #include "WinMgr.h" #include "intl.h" AboutDlg *aboutDlg = 0; AboutDlg::AboutDlg(): YDialog() { char const *version("IceWM "VERSION" ("HOSTOS"/"HOSTCPU")"); ustring copyright = ustring("Copyright ") .append(_("(C)")) .append(" 1997-2008 Marko Macek, ") .append(_("(C)")) .append(" 2001 Mathias Hasselmann"); fProgTitle = new YLabel(version, this); fCopyright = new YLabel(copyright, this); fThemeNameS = new YLabel(_("Theme:"), this); fThemeDescriptionS = new YLabel(_("Theme Description:"), this); fThemeAuthorS = new YLabel(_("Theme Author:"), this); fThemeName = new YLabel(themeName, this); fThemeDescription = new YLabel(themeDescription, this); fThemeAuthor = new YLabel(themeAuthor, this); fCodeSetS = new YLabel(_("CodeSet:"), this); fLanguageS = new YLabel(_("Language:"), this); const char *codeset = ""; const char *language = ""; #ifdef CONFIG_I18N codeset = nl_langinfo(CODESET); language = getenv("LANG"); #endif fCodeSet = new YLabel(codeset, this); fLanguage = new YLabel(language, this); autoSize(); fProgTitle->show(); fCopyright->show(); fThemeNameS->show(); fThemeName->show(); fThemeDescriptionS->show(); fThemeDescription->show(); fThemeAuthorS->show(); fThemeAuthor->show(); fCodeSetS->show(); fCodeSet->show(); fLanguageS->show(); fLanguage->show(); setWindowTitle(_("icewm - About")); //setIconTitle("icewm - About"); setWinLayerHint(WinLayerAboveDock); setWinStateHint(WinStateAllWorkspaces, WinStateAllWorkspaces); setWinHintsHint(WinHintsSkipWindowMenu); { MwmHints mwm; memset(&mwm, 0, sizeof(mwm)); mwm.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; mwm.functions = MWM_FUNC_MOVE | MWM_FUNC_CLOSE; mwm.decorations = MWM_DECOR_BORDER | MWM_DECOR_TITLE | MWM_DECOR_MENU; setMwmHints(mwm); } } #define RX(w) (int((w)->x() + (w)->width())) #define XMAX(x,nx) ((nx) > (x) ? (nx) : (x)) void AboutDlg::autoSize() { int dx = 20, dx1 = 20; int dy = 20; int W = 0, H; int cy; fProgTitle->setPosition(dx, dy); dy += fProgTitle->height(); W = XMAX(W, RX(fProgTitle)); dy += 4; fCopyright->setPosition(dx, dy); dy += fCopyright->height(); W = XMAX(W, RX(fCopyright)); dy += 20; fThemeNameS->setPosition(dx, dy); fThemeDescriptionS->setPosition(dx, dy); fThemeAuthorS->setPosition(dx, dy); fCodeSetS->setPosition(dx, dy); fLanguageS->setPosition(dx, dy); dx = XMAX(dx, RX(fThemeNameS)); dx = XMAX(dx, RX(fThemeDescriptionS)); dx = XMAX(dx, RX(fThemeAuthorS)); dx = XMAX(dx, RX(fCodeSetS)); dx = XMAX(dx, RX(fLanguageS)); dx += 20; fThemeNameS->setPosition(dx1, dy); cy = fThemeNameS->height(); W = XMAX(W, RX(fThemeName)); fThemeName->setPosition(dx, dy); cy = XMAX(cy, int(fThemeName->height())); W = XMAX(W, RX(fThemeName)); dy += cy; dy += 4; fThemeDescriptionS->setPosition(dx1, dy); cy = fThemeDescriptionS->height(); W = XMAX(W, RX(fThemeDescriptionS)); fThemeDescription->setPosition(dx, dy); cy = XMAX(cy, int(fThemeDescription->height())); W = XMAX(W, RX(fThemeDescription)); dy += cy; dy += 4; fThemeAuthorS->setPosition(dx1, dy); cy = fThemeAuthorS->height(); W = XMAX(W, RX(fThemeAuthorS)); fThemeAuthor->setPosition(dx, dy); cy = XMAX(cy, int(fThemeAuthor->height())); W = XMAX(W, RX(fThemeAuthor)); dy += cy; dy += 20; fCodeSetS->setPosition(dx1, dy); cy = fCodeSetS->height(); W = XMAX(W, RX(fCodeSetS)); fCodeSet->setPosition(dx, dy); cy = XMAX(cy, int(fCodeSet->height())); W = XMAX(W, RX(fCodeSet)); dy += cy; dy += 4; fLanguageS->setPosition(dx1, dy); cy = fLanguageS->height(); W = XMAX(W, RX(fLanguageS)); fLanguage->setPosition(dx, dy); cy = XMAX(cy, int(fLanguage->height())); W = XMAX(W, RX(fLanguage)); dy += cy; H = dy + 20; W += 20; setSize(W, H); } void AboutDlg::showFocused() { int dx, dy, dw, dh; manager->getScreenGeometry(&dx, &dy, &dw, &dh); if (getFrame() == 0) manager->manageClient(handle(), false); if (getFrame() != 0) { getFrame()->setNormalPositionOuter( dx + dw / 2 - getFrame()->width() / 2, dy + dh / 2 - getFrame()->height() / 2); getFrame()->activateWindow(true); } } void AboutDlg::handleClose() { if (!getFrame()->isHidden()) getFrame()->wmHide(); } #endif icewm-1.3.7/src/yrect.h0000644000076600007660000000271711463274240013722 0ustar develdevel#ifndef __YRECT_H #define __YRECT_H #include "ypoint.h" // change this to use x,y,w,h internal representation? class YRect { public: #if 0 YRect(): x1(0), y1(0), x2(0), y2(0) {} #endif YRect(int x, int y, int w, int h) :xx(x), yy(y), ww(w), hh(h) { } int x() const { return xx; } int y() const { return yy; } int width() const { return ww; } int height() const { return hh; } #if 0 int left() const { return x1; } int right() const { return x2; } int top() const { return y1; } int bottom() const { return y2; } void setX(int x) { x1 = x; } void setY(int y) { y2 = y; } void setWidth(int w) { x2 = x1 + w - 1; } void setHeight(int h) { y2 = y1 + h - 1; } void setLeft(int x) { x1 = x; } void setRight(int x) { x2 = x; } void setTop(int y) { y1 = y; } void setBottom(int y) { y2 = y; } #endif void setRect(int x, int y, int w, int h) { xx = x; yy = y; ww = w; hh = h; } void setRect(const YRect &r) { xx = r.x(); yy = r.y(); ww = r.width(); hh = r.height(); } //YPoint center() { return YPoint((x1 + x2) / 2, // (y1 + y2) / 2); } #if 0 bool inside(const YPoint &p) { return (p.x() >= x1 && p.y() >= y1 && p.x() <= x2 && p.y() <= y2) ? true : false; } #endif private: int xx, yy, ww, hh; }; #endif icewm-1.3.7/src/yapp.h0000644000076600007660000000374011463274240013542 0ustar develdevel#ifndef __YAPP_H #define __YAPP_H #include #include "ypaths.h" #include "upath.h" #include "ypoll.h" class YTimer; class YClipboard; class YSignalPoll: public YPoll { public: virtual void notifyRead(); virtual void notifyWrite(); virtual bool forRead(); virtual bool forWrite(); }; class YApplication { public: YApplication(int *argc, char ***argv); virtual ~YApplication(); int mainLoop(); void exitLoop(int exitCode); void exit(int exitCode); #if 0 upath executable() { return fExecutable; } #endif virtual void handleSignal(int sig); virtual bool handleIdle(); void catchSignal(int sig); void resetSignals(); //void unblockSignal(int sig); int runProgram(const char *path, const char *const *args); int startWorker(int socket, const char *path, const char *const *args); int waitProgram(int p); void runCommand(const char *prog); static upath findConfigFile(upath relativePath); static const char *getLibDir(); static const char *getConfigDir(); static const char *getPrivConfDir(); static char const *& Name; private: YTimer *fFirstTimer, *fLastTimer; YPollBase *fFirstPoll, *fLastPoll; YSignalPoll sfd; friend class YSignalPoll; int fLoopLevel; int fExitLoop; int fExitCode; int fExitApp; #if 0 upath fExecutable; #endif friend class YSocket; friend class YPipeReader; void getTimeout(struct timeval *timeout); void handleTimeouts(); void decreaseTimeouts(struct timeval difftime); void handleSignalPipe(); void initSignals(); protected: friend class YTimer; friend class YPollBase; void registerTimer(YTimer *t); void unregisterTimer(YTimer *t); void registerPoll(YPollBase *t); void unregisterPoll(YPollBase *t); protected: virtual void flushXEvents() {}; virtual bool handleXEvents() { return false; } void closeFiles(); }; extern YApplication *app; #endif icewm-1.3.7/src/acpustatus.cc0000644000076600007660000004532611463274240015131 0ustar develdevel/* * IceWM * * Copyright (C) 1998-2001 Marko Macek * * CPU Status * * KNOWN BUGS: * 1. On startup, the second bar shows always zero, and the first bar shows * total cpu info from bootup time (maybe this can be also considered as * a feature) -stibor- * * 2. There are no checks for overflows: when sys, user, nice or idle time * in /proc/stat will exceed usigned long (256^4), CPU monitor will * probably show nonsenses. (but it is at least after 500 days of uptime) * -stibor- */ #include "config.h" #ifdef CONFIG_APPLET_CPU_STATUS #include "ylib.h" #include "wmapp.h" #include "acpustatus.h" #include "sysdep.h" #include "default.h" #if defined(linux) //#include #include #endif #if defined(sun) && defined(SVR4) #include #endif #ifdef HAVE_KSTAT_H #include #include #include #endif #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_SYS_SYSCTL_H #include #endif #ifdef HAVE_UVM_UVM_PARAM_H #include #endif #ifdef HAVE_SYS_DKSTAT_H #include #endif #ifdef HAVE_SCHED_H #include #endif #include #include "intl.h" #if (defined(linux) || defined(HAVE_KSTAT_H)) || defined(HAVE_SYSCTL_CP_TIME) extern ref taskbackPixmap; CPUStatus::CPUStatus(YWindow *aParent, bool cpustatusShowRamUsage, bool cpustatusShowSwapUsage, bool cpustatusShowAcpiTemp, bool cpustatusShowCpuFreq): YWindow(aParent) { cpu = new int *[taskBarCPUSamples]; for (int a(0); a < taskBarCPUSamples; a++) cpu[a] = new int[IWM_STATES]; fUpdateTimer = new YTimer(taskBarCPUDelay); if (fUpdateTimer) { fUpdateTimer->setTimerListener(this); fUpdateTimer->startTimer(); } color[IWM_USER] = new YColor(clrCpuUser); color[IWM_NICE] = new YColor(clrCpuNice); color[IWM_SYS] = new YColor(clrCpuSys); color[IWM_INTR] = new YColor(clrCpuIntr); color[IWM_IOWAIT] = new YColor(clrCpuIoWait); color[IWM_SOFTIRQ] = new YColor(clrCpuSoftIrq); color[IWM_IDLE] = *clrCpuIdle ? new YColor(clrCpuIdle) : NULL; for (int i = 0; i < taskBarCPUSamples; i++) { cpu[i][IWM_USER] = cpu[i][IWM_NICE] = cpu[i][IWM_SYS] = cpu[i][IWM_INTR] = cpu[i][IWM_IOWAIT] = cpu[i][IWM_SOFTIRQ] = 0; cpu[i][IWM_IDLE] = 1; } setSize(taskBarCPUSamples, 20); last_cpu[IWM_USER] = last_cpu[IWM_NICE] = last_cpu[IWM_SYS] = last_cpu[IWM_IDLE] = last_cpu[IWM_INTR] = last_cpu[IWM_IOWAIT] = last_cpu[IWM_SOFTIRQ] = 0; ShowRamUsage = cpustatusShowRamUsage; ShowSwapUsage = cpustatusShowSwapUsage; ShowAcpiTemp = cpustatusShowAcpiTemp; ShowCpuFreq = cpustatusShowCpuFreq; getStatus(); updateStatus(); updateToolTip(); } CPUStatus::~CPUStatus() { for (int a(0); a < taskBarCPUSamples; a++) { delete cpu[a]; cpu[a] = 0; } delete cpu; cpu = 0; delete color[IWM_USER]; color[IWM_USER] = 0; delete color[IWM_NICE]; color[IWM_NICE] = 0; delete color[IWM_SYS]; color[IWM_SYS] = 0; delete color[IWM_IDLE]; color[IWM_IDLE] = 0; delete color[IWM_INTR]; color[IWM_INTR] = 0; delete color[IWM_IOWAIT]; color[IWM_IOWAIT] = 0; delete color[IWM_SOFTIRQ]; color[IWM_SOFTIRQ] = 0; } void CPUStatus::paint(Graphics &g, const YRect &/*r*/) { int h = height(); for (int i(0); i < taskBarCPUSamples; i++) { int user = cpu[i][IWM_USER]; int nice = cpu[i][IWM_NICE]; int sys = cpu[i][IWM_SYS]; int idle = cpu[i][IWM_IDLE]; int intr = cpu[i][IWM_INTR]; int iowait = cpu[i][IWM_IOWAIT]; int softirq = cpu[i][IWM_SOFTIRQ]; int total = user + sys + intr + nice + idle + iowait + softirq; int y = height() - 1; if (total > 1) { /* better show 0 % CPU than nonsense on startup */ int intrbar, sysbar, nicebar, userbar, iowaitbar, softirqbar; int round = total / h / 2; /* compute also with rounding errs */ if ((intrbar = (h * (intr + round)) / total)) { g.setColor(color[IWM_INTR]); g.drawLine(i, y, i, y - (intrbar - 1)); y -= intrbar; } if ((softirqbar = (h * (softirq + round)) / total)) { g.setColor(color[IWM_SOFTIRQ]); g.drawLine(i, y, i, y - (softirqbar - 1)); y -= softirqbar; } iowaitbar = (h * (iowait + round)) / total; if ((sysbar = (h * (sys + round)) / total)) { g.setColor(color[IWM_SYS]); g.drawLine(i, y, i, y - (sysbar - 1)); y -= sysbar; } nicebar = (h * (nice + round)) / total; /* minor rounding errors are counted into user bar: */ if ((userbar = (h * ((sys + nice + user + intr + iowait + softirq) + round)) / total - (sysbar + nicebar + intrbar + iowaitbar + softirqbar) )) { g.setColor(color[IWM_USER]); g.drawLine(i, y, i, y - (userbar - 1)); y -= userbar; } if (nicebar) { g.setColor(color[IWM_NICE]); g.drawLine(i, y, i, y - (nicebar - 1)); y -= nicebar; } if (iowaitbar) { g.setColor(color[IWM_IOWAIT]); g.drawLine(i, y, i, y - (iowaitbar - 1)); y -= iowaitbar; } #if 0 msg("stat:\tuser = %i, nice = %i, sys = %i, idle = %i", cpu[i][IWM_USER], cpu[i][IWM_NICE], cpu[i][IWM_SYS], cpu[i][IWM_IDLE]); msg("bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n", userbar, nicebar, sysbar, h); #endif } if (y > 0) { if (color[IWM_IDLE]) { g.setColor(color[IWM_IDLE]); g.drawLine(i, 0, i, y); } else { #ifdef CONFIG_GRADIENTS ref gradient = parent()->getGradient(); if (gradient != null) g.drawImage(gradient, this->x() + i, this->y(), width(), y + 1, i, 0); else #endif if (taskbackPixmap != null) g.fillPixmap(taskbackPixmap, i, 0, width(), y + 1, this->x() + i, this->y()); } } } } bool CPUStatus::handleTimer(YTimer *t) { if (t != fUpdateTimer) return false; if (toolTipVisible()) updateToolTip(); updateStatus(); return true; } void CPUStatus::updateToolTip() { #ifdef linux char load[31], ram[31] = "", swap[31] = "", acpitemp[61] = "", cpufreq[31] = ""; struct sysinfo sys; double l1, l5, l15; sysinfo(&sys); l1 = (float)sys.loads[0] / 65536.0; l5 = (float)sys.loads[1] / 65536.0; l15 = (float)sys.loads[2] / 65536.0; sprintf(load, _("CPU Load: %3.2f %3.2f %3.2f, %d"), l1, l5, l15, sys.procs); if (ShowRamUsage) { float tr =(float)sys.totalram * (float)sys.mem_unit / 1048576.0f; float fr =(float)sys.freeram * (float)sys.mem_unit / 1048576.0f; sprintf(ram, _("\nRam: %5.2f/%.2fM"), tr, fr); } if (ShowSwapUsage) { float ts =(float)sys.totalswap * (float)sys.mem_unit / 1048576.0f; float fs =(float)sys.freeswap * (float)sys.mem_unit / 1048576.0f; sprintf(swap, _("\nSwap: %.2f/%.2fM"), ts, fs); } if (ShowAcpiTemp) { int headlen; sprintf(acpitemp, _("\nACPI Temp:")); headlen = strlen(acpitemp); getAcpiTemp(acpitemp + headlen, (sizeof(acpitemp) - headlen) / sizeof(char)); } if (ShowCpuFreq) { sprintf(cpufreq, _("\nCPU Freq: %.3fGHz"), getCpuFreq(0) / 1e6); } char *loadmsg = cstrJoin(load, ram, swap, acpitemp, cpufreq, NULL); setToolTip(ustring(loadmsg)); #elif defined HAVE_GETLOADAVG2 char load[31]; // enough for "CPU Load: 999.99 999.99 999.99\0" double loadavg[3]; if (getloadavg(loadavg, 3) < 0) return; snprintf(load, sizeof(load), "CPU Load: %3.2f %3.2f %3.2f", loadavg[0], loadavg[1], loadavg[2]); char *loadmsg = cstrJoin(_("CPU Load: "), load, NULL); setToolTip(loadmsg); delete [] loadmsg; #endif } void CPUStatus::handleClick(const XButtonEvent &up, int count) { if (up.button == 1) { if (cpuCommand && cpuCommand[0] && (taskBarLaunchOnSingleClick ? count == 1 : !(count % 2))) wmapp->runCommandOnce(cpuClassHint, cpuCommand); } } void CPUStatus::updateStatus() { for (int i(1); i < taskBarCPUSamples; i++) { cpu[i - 1][IWM_USER] = cpu[i][IWM_USER]; cpu[i - 1][IWM_NICE] = cpu[i][IWM_NICE]; cpu[i - 1][IWM_SYS] = cpu[i][IWM_SYS]; cpu[i - 1][IWM_IDLE] = cpu[i][IWM_IDLE]; cpu[i - 1][IWM_INTR] = cpu[i][IWM_INTR]; cpu[i - 1][IWM_IOWAIT] = cpu[i][IWM_IOWAIT]; cpu[i - 1][IWM_SOFTIRQ] = cpu[i][IWM_SOFTIRQ]; } getStatus(), repaint(); } int CPUStatus::getAcpiTemp(char *tempbuf, int buflen) { int retbuflen = 0; char namebuf[64]; char buf[64]; memset(tempbuf, 0, buflen); DIR *dir; if ((dir = opendir("/proc/acpi/thermal_zone")) != NULL) { struct dirent *de; while ((de = readdir(dir)) != NULL) { int fd, seglen; if (strcmp(de->d_name, ".") == 0 || strcmp(de->d_name, "..") == 0) continue; sprintf(namebuf, "/proc/acpi/thermal_zone/%s/temperature", de->d_name); fd = open(namebuf, O_RDONLY); if (fd != -1) { int len = read(fd, buf, sizeof(buf) - 1); buf[len - 1] = '\0'; seglen = strlen(buf + len - 7); if (retbuflen + seglen >= buflen) { retbuflen = -retbuflen; close(fd); closedir(dir); break; } retbuflen += seglen; strncat(tempbuf, buf + len - 7, seglen); close(fd); } } closedir(dir); } return retbuflen; } float CPUStatus::getCpuFreq(unsigned int cpu) { char buf[16], namebuf[64]; int fd; float cpufreq = 0; sprintf(namebuf, "/sys/devices/system/cpu/cpu%d/cpufreq/scaling_cur_freq", cpu); fd = open(namebuf, O_RDONLY); if (fd != -1) { int len = read(fd, buf, sizeof(buf) - 1); buf[len-1] = '\0'; sscanf(buf, "%f", &cpufreq); close(fd); } return(cpufreq); } void CPUStatus::getStatus() { #ifdef linux char *p, buf[4096]; unsigned long long cur[IWM_STATES]; int len, s, fd = open("/proc/stat", O_RDONLY); cpu[taskBarCPUSamples - 1][IWM_USER] = 0; cpu[taskBarCPUSamples - 1][IWM_NICE] = 0; cpu[taskBarCPUSamples - 1][IWM_INTR] = 0; cpu[taskBarCPUSamples - 1][IWM_IOWAIT] = 0; cpu[taskBarCPUSamples - 1][IWM_SOFTIRQ] = 0; cpu[taskBarCPUSamples - 1][IWM_SYS] = 0; cpu[taskBarCPUSamples - 1][IWM_IDLE] = 0; if (fd == -1) return; len = read(fd, buf, sizeof(buf) - 1); if (len < 0) { close(fd); return; } close(fd); buf[len] = 0; p = buf; while (*p && (*p < '0' || *p > '9')) p++; /* Linux 2.4: cpu 3557 8 1052 7049 * Linux 2.6: cpu 3537 44 1064 676229 7792 142 5 */ if ((s = strcspn(p, "\n")) <= 60) strcpy(p + s, " 0 0 0\n"); /* Linux 2.4 */ int i = 0; for (i = 0; i < 7; i++) { int d = -1; /* linux/Documentation/filesystems/proc.txt: 1.8 */ switch (i) { case 0: d = IWM_USER; break; case 1: d = IWM_NICE; break; case 2: d = IWM_SYS; break; case 3: d = IWM_IDLE; break; case 4: d = IWM_IOWAIT; break; case 5: d = IWM_INTR; break; case 6: d = IWM_SOFTIRQ; break; } cur[d] = strtoll(p, &p, 10); cpu[taskBarCPUSamples - 1][d] = (int)(cur[d] - last_cpu[d]); last_cpu[d] = cur[d]; } #if 0 msg("cpu: %d %d %d %d %d %d %d", cpu[taskBarCPUSamples-1][IWM_USER], cpu[taskBarCPUSamples-1][IWM_NICE], cpu[taskBarCPUSamples-1][IWM_SYS], cpu[taskBarCPUSamples-1][IWM_IDLE], cpu[taskBarCPUSamples-1][IWM_IOWAIT], cpu[taskBarCPUSamples-1][IWM_INTR], cpu[taskBarCPUSamples-1][IWM_SOFTIRQ]); #endif #endif /* linux */ #ifdef HAVE_KSTAT_H #ifdef HAVE_OLD_KSTAT #define ui32 ul #endif static kstat_ctl_t *kc = NULL; static kid_t kcid; kid_t new_kcid; kstat_t *ks = NULL; kstat_named_t *kn = NULL; int changed,change,total_change; unsigned int thiscpu; register int i,j; static unsigned int ncpus; static kstat_t **cpu_ks=NULL; static cpu_stat_t *cpu_stat=NULL; static long cp_old[CPU_STATES]; long cp_time[CPU_STATES], cp_pct[CPU_STATES]; /* Initialize the kstat */ if (!kc) { kc = kstat_open(); if (!kc) { perror("kstat_open "); return;/* FIXME : need err handler? */ } changed = 1; kcid = kc->kc_chain_id; fcntl(kc->kc_kd, F_SETFD, FD_CLOEXEC); } else { changed = 0; } /* Fetch the kstat data. Whenever we detect that the kstat has been changed by the kernel, we 'continue' and restart this loop. Otherwise, we break out at the end. */ while (1) { new_kcid = kstat_chain_update(kc); if (new_kcid) { changed = 1; kcid = new_kcid; } if (new_kcid < 0) { perror("kstat_chain_update "); return;/* FIXME : need err handler? */ } if (new_kcid != 0) continue; /* kstat changed - start over */ ks = kstat_lookup(kc, "unix", 0, "system_misc"); if (kstat_read(kc, ks, 0) == -1) { perror("kstat_read "); return;/* FIXME : need err handler? */ } if (changed) { /* the kstat has changed - reread the data */ thiscpu = 0; ncpus = 0; kn = (kstat_named_t *)kstat_data_lookup(ks, "ncpus"); if ((kn) && (kn->value.ui32 > ncpus)) { /* I guess I should be using 'new' here... FIXME */ ncpus = kn->value.ui32; if ((cpu_ks = (kstat_t **) realloc(cpu_ks, ncpus * sizeof(kstat_t *))) == NULL) { perror("realloc: cpu_ks "); return;/* FIXME : need err handler? */ } if ((cpu_stat = (cpu_stat_t *) realloc(cpu_stat, ncpus * sizeof(cpu_stat_t))) == NULL) { perror("realloc: cpu_stat "); return;/* FIXME : need err handler? */ } } for (ks = kc->kc_chain; ks; ks = ks->ks_next) { if (strncmp(ks->ks_name, "cpu_stat", 8) == 0) { new_kcid = kstat_read(kc, ks, NULL); if (new_kcid < 0) { perror("kstat_read "); return;/* FIXME : need err handler? */ } if (new_kcid != kcid) break; cpu_ks[thiscpu] = ks; thiscpu++; if (thiscpu > ncpus) { warn("kstat finds too many cpus: should be %d", ncpus); return;/* FIXME : need err handler? */ } } } if (new_kcid != kcid) continue; ncpus = thiscpu; changed = 0; } for (i = 0; i<(int)ncpus; i++) { new_kcid = kstat_read(kc, cpu_ks[i], &cpu_stat[i]); if (new_kcid < 0) { perror("kstat_read "); return;/* FIXME : need err handler? */ } } if (new_kcid != kcid) continue; /* kstat changed - start over */ else break; } /* while (1) */ /* Initialize the cp_time array */ for (i = 0; i < CPU_STATES; i++) cp_time[i] = 0L; for (i = 0; i < (int)ncpus; i++) { for (j = 0; j < CPU_STATES; j++) cp_time[j] += (long) cpu_stat[i].cpu_sysinfo.cpu[j]; } /* calculate the percent utilization for each category */ /* cpu_state calculations */ total_change = 0; for (i = 0; i < CPU_STATES; i++) { change = cp_time[i] - cp_old[i]; if (change < 0) /* The counter rolled over */ change = (int) ((unsigned long)cp_time[i] - (unsigned long)cp_old[i]); cp_pct[i] = change; total_change += change; cp_old[i] = cp_time[i]; /* copy the data for the next run */ } /* this percent calculation isn't really needed, since the repaint routine takes care of this... */ for (i = 0; i < CPU_STATES; i++) cp_pct[i] = ((total_change > 0) ? ((int)(((1000.0 * cp_pct[i]) / total_change) + 0.5)) : ((i == CPU_IDLE) ? (1000) : (0))); /* OK, we've got the data. Now copy it to cpu[][] */ cpu[taskBarCPUSamples-1][IWM_USER] = cp_pct[CPU_USER]; cpu[taskBarCPUSamples-1][IWM_NICE] = cp_pct[CPU_WAIT]; cpu[taskBarCPUSamples-1][IWM_SYS] = cp_pct[CPU_KERNEL]; cpu[taskBarCPUSamples-1][IWM_IDLE] = cp_pct[CPU_IDLE]; #endif /* have_kstat_h */ #if defined HAVE_SYSCTL_CP_TIME && defined CP_INTR #if defined __NetBSD__ typedef u_int64_t cp_time_t; #else typedef long cp_time_t; #endif #if defined KERN_CPTIME static int mib[] = { CTL_KERN, KERN_CPTIME }; #elif defined KERN_CP_TIME static int mib[] = { CTL_KERN, KERN_CP_TIME }; #else static int mib[] = { 0, 0 }; #endif cpu[taskBarCPUSamples - 1][IWM_USER] = 0; cpu[taskBarCPUSamples - 1][IWM_NICE] = 0; cpu[taskBarCPUSamples - 1][IWM_SYS] = 0; cpu[taskBarCPUSamples - 1][IWM_INTR] = 0; cpu[taskBarCPUSamples - 1][IWM_IOWAIT] = 0; cpu[taskBarCPUSamples - 1][IWM_SOFTIRQ] = 0; cpu[taskBarCPUSamples - 1][IWM_IDLE] = 0; cp_time_t cp_time[CPUSTATES]; size_t len = sizeof( cp_time ); #if defined HAVE_SYSCTLBYNAME if (sysctlbyname("kern.cp_time", cp_time, &len, NULL, 0) < 0) return; #else if (sysctl(mib, 2, cp_time, &len, NULL, 0) < 0) return; #endif unsigned long long cur[IWM_STATES]; cur[IWM_USER] = cp_time[CP_USER]; cur[IWM_NICE] = cp_time[CP_NICE]; cur[IWM_SYS] = cp_time[CP_SYS]; cur[IWM_INTR] = cp_time[CP_INTR]; cur[IWM_IOWAIT] = 0; cur[IWM_SOFTIRQ] = 0; cur[IWM_IDLE] = cp_time[CP_IDLE]; for (int i = 0; i < IWM_STATES; i++) { cpu[taskBarCPUSamples - 1][i] = cur[i] - last_cpu[i]; last_cpu[i] = cur[i]; } #endif } #endif #endif icewm-1.3.7/src/preferences.xml0000644000076600007660000000304611463274240015442 0ustar develdevel icewm-1.3.7/src/testlocale.cc0000644000076600007660000000422711463274240015067 0ustar develdevel#include "config.h" #include "ylocale.h" #include "yapp.h" #include #include char const *ApplicationName("testlocale"); bool multiByte(true); #ifdef CONFIG_I18N static char * foreign_str(char const *charset, char const *foreign) { size_t len(strlen(charset) + strlen(foreign)); char * str = new char [len + 8]; sprintf (str, "\033%%/1\\%03o\\%03o%s\002%s", 128 + len / 128, 128 + len % 128, charset, foreign); return str; } static void print_string(const YLChar *lstr, YUChar *ustr) { printf ("In locale encoding: \"%s\"\n", lstr); printf ("In unicode encoding: \""); for (YUChar * u(ustr); *u; ++u) printf("\\U%04x", *u); puts ("\""); } #define TEST_RATING(LocaleFragment) \ printf("Rating for '" LocaleFragment "': %d\n", \ YLocale::getRating(LocaleFragment)); #endif int main() { #ifdef CONFIG_I18N size_t ulen; const YLChar *lstr("Möhrenkäuter"); YUChar *ustr(YLocale("de_DE.iso-8859-1"). unicodeString(lstr, strlen(lstr), ulen)); print_string(lstr, ustr); lstr = foreign_str ("ISO8859-15", "Euro sign: ¤"); ustr = YLocale("de_DE.iso-8859-1"). unicodeString(lstr, strlen(lstr), ulen); print_string(lstr, ustr); /* YLChar * utf8(YLocale("de_DE.utf8").localeString(unicode)); printf("utf8: %s\n", utf8); YLChar * latin1(YLocale("de_DE.iso-8859-1").localeString(unicode)); printf("iso-8859-1: %s\n", latin1); */ { YLocale locale("de_DE@euro"); printf("Current locale: %s\n", YLocale::getLocaleName()); TEST_RATING("C"); TEST_RATING("en"); TEST_RATING("de"); TEST_RATING("de_CH"); TEST_RATING("de_DE"); TEST_RATING("de_DE@DEM"); TEST_RATING("de_DE@euro"); } { YLocale locale("ru_RU.koi8r"); printf("Current locale: %s\n", YLocale::getLocaleName()); TEST_RATING("C"); TEST_RATING("en"); TEST_RATING("ru"); TEST_RATING("ru_UA"); TEST_RATING("ru_RU"); TEST_RATING("ru_RU.cp1251"); TEST_RATING("ru_RU.koi8r"); } #else puts("I18N disabled."); #endif return 0; } icewm-1.3.7/src/yprefs.h0000644000076600007660000001071711463274240014103 0ustar develdevel#ifndef __YPREFS_H #define __YPREFS_H #include "yconfig.h" XIV(bool, dontRotateMenuPointer, true) XIV(bool, menuMouseTracking, false) XIV(bool, replayMenuCancelClick, false) XIV(bool, showPopupsAbovePointer, false) XIV(bool, showEllipsis, true) #ifdef CONFIG_I18N XIV(bool, multiByte, true) #endif XIV(bool, modSuperIsCtrlAlt, true) XIV(bool, doubleBuffer, true) XIV(bool, xrrDisable, false) XIV(int, xineramaPrimaryScreen, 0) XIV(int, MenuActivateDelay, 40) XIV(int, SubmenuActivateDelay, 300) XIV(int, ClickMotionDistance, 4) XIV(int, ClickMotionDelay, 200) XIV(int, MultiClickTime, 400) XIV(int, autoScrollStartDelay, 500) XIV(int, autoScrollDelay, 60) #ifdef CONFIG_TOOLTIP XIV(int, ToolTipDelay, 1000) XIV(int, ToolTipTime, 0) #endif ///#warning "move this one back to WM" XIV(bool, grabRootWindow, true) #ifdef CONFIG_XFREETYPE XIV(bool, haveXft, true) #endif XSV(const char *, iconPath, 0) #define CONFIG_DEFAULT_THEME "icedesert/default.theme" XSV(const char *, themeName, CONFIG_DEFAULT_THEME) XSV(const char *, xineramaPrimaryScreenName, 0) #define CONFIG_DEFAULT_LOOK lookNice /************************************************************************************************************************************************************/ // !!! make these go away (make individual specific options) #define CONFIG_LOOK_NICE #define CONFIG_LOOK_WARP3 #define CONFIG_LOOK_WIN95 #define CONFIG_LOOK_WARP4 #define CONFIG_LOOK_MOTIF #define CONFIG_LOOK_PIXMAP #define CONFIG_LOOK_METAL #define CONFIG_LOOK_GTK #define CONFIG_LOOK_FLAT #ifndef WMLOOK #define WMLOOK typedef enum { #ifdef CONFIG_LOOK_WIN95 lookWin95, #endif #ifdef CONFIG_LOOK_MOTIF lookMotif, #endif #ifdef CONFIG_LOOK_WARP3 lookWarp3, #endif #ifdef CONFIG_LOOK_WARP4 lookWarp4, #endif #ifdef CONFIG_LOOK_NICE lookNice, #endif #ifdef CONFIG_LOOK_PIXMAP lookPixmap, #endif #ifdef CONFIG_LOOK_METAL lookMetal, #endif #ifdef CONFIG_LOOK_GTK lookGtk, #endif #ifdef CONFIG_LOOK_FLAT lookFlat, #endif lookMAX } WMLook; #endif XIV(WMLook, wmLook, CONFIG_DEFAULT_LOOK) #ifdef CONFIG_LOOK_WIN95 #define LOOK_IS_WIN95 (wmLook == lookWin95) #define CASE_LOOK_WIN95 case lookWin95 #else #define LOOK_IS_WIN95 false #define CASE_LOOK_WIN95 #endif #ifdef CONFIG_LOOK_MOTIF #define LOOK_IS_MOTIF (wmLook == lookMotif) #define CASE_LOOK_MOTIF case lookMotif #else #define LOOK_IS_MOTIF false #define CASE_LOOK_MOTIF #endif #ifdef CONFIG_LOOK_WARP3 #define LOOK_IS_WARP3 (wmLook == lookWarp3) #define CASE_LOOK_WARP3 case lookWarp3 #else #define LOOK_IS_WARP3 false #define CASE_LOOK_WARP3 #endif #ifdef CONFIG_LOOK_WARP4 #define LOOK_IS_WARP4 (wmLook == lookWarp4) #define CASE_LOOK_WARP4 case lookWarp4 #else #define LOOK_IS_WARP4 false #define CASE_LOOK_WARP4 #endif #ifdef CONFIG_LOOK_NICE #define LOOK_IS_NICE (wmLook == lookNice) #define CASE_LOOK_NICE case lookNice #else #define LOOK_IS_NICE false #define CASE_LOOK_NICE #endif #ifdef CONFIG_LOOK_PIXMAP #define LOOK_IS_PIXMAP (wmLook == lookPixmap) #define CASE_LOOK_PIXMAP case lookPixmap #else #define LOOK_IS_PIXMAP false #define CASE_LOOK_PIXMAP #endif #ifdef CONFIG_LOOK_METAL #define LOOK_IS_METAL (wmLook == lookMetal) #define CASE_LOOK_METAL case lookMetal #else #define LOOK_IS_METAL false #define CASE_LOOK_METAL #endif #ifdef CONFIG_LOOK_GTK #define LOOK_IS_GTK (wmLook == lookGtk) #define CASE_LOOK_GTK case lookGtk #else #define LOOK_IS_GTK false #define CASE_LOOK_GTK #endif #ifdef CONFIG_LOOK_FLAT #define LOOK_IS_FLAT (wmLook == lookFlat) #define CASE_LOOK_FLAT case lookFlat #else #define LOOK_IS_FLAT false #define CASE_LOOK_FLAT #endif #ifdef CONFIG_TOOLTIP XSV(const char *, clrToolTip, "rgb:E0/E0/00") XSV(const char *, clrToolTipText, "rgb:00/00/00") #endif XFV(const char *, toolTipFontName, FONT(120), "sans-serif:size=12") #endif icewm-1.3.7/src/themes.h0000644000076600007660000000204711463274240014055 0ustar develdevel#ifndef __THEMES_H #define __THEMES_H #ifndef NO_CONFIGURE_MENUS #include "objmenu.h" #include "obj.h" #include class YMenu; class DTheme: public DObject { public: DTheme(const ustring &label, const ustring &theme); virtual ~DTheme(); virtual void open(); private: ustring fTheme; }; class ThemesMenu: public ObjectMenu { public: ThemesMenu(YWindow *parent = 0); virtual ~ThemesMenu(); void updatePopup(); void refresh(); private: void findThemes(char const *path, YMenu *container); static YMenuItem *newThemeItem(char const *label, char const *theme, const char *relThemeName); static void findThemeAlternatives(char const *path, const char *relName, YMenuItem *item); // this solution isn't nice. Saving it globaly somewhere would be // much better, we would have a themeCound from the last refresh // cycle and update it after menu construction, counting themes that // are actually added to menues int countThemes(char const *path); int themeCount; }; #endif #endif icewm-1.3.7/src/decorate.cc0000644000076600007660000005407511463274240014524 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek */ #include "config.h" #include "yfull.h" #include "wmframe.h" #include "wmaction.h" #include "wmtitle.h" #include "wmapp.h" #include "wmclient.h" #include "wmcontainer.h" #include "ymenuitem.h" #include "yrect.h" #include "prefs.h" #include "yprefs.h" #ifdef CONFIG_LOOK_PIXMAP ref frameTL[2][2]; ref frameT[2][2]; ref frameTR[2][2]; ref frameL[2][2]; ref frameR[2][2]; ref frameBL[2][2]; ref frameB[2][2]; ref frameBR[2][2]; #endif #ifdef CONFIG_GRADIENTS ref rgbFrameT[2][2]; ref rgbFrameL[2][2]; ref rgbFrameR[2][2]; ref rgbFrameB[2][2]; #endif void YFrameWindow::updateMenu() { YMenu *windowMenu = this->windowMenu(); // enable all commands windowMenu->setActionListener(this); windowMenu->enableCommand(0); if (isMaximized()) windowMenu->disableCommand(actionMaximize); if (isMinimized()) windowMenu->disableCommand(actionMinimize); if (!(isMaximized() || isMinimized() || isHidden())) windowMenu->disableCommand(actionRestore); if (isMinimized() || isHidden() || isRollup() || !visibleNow()) windowMenu->disableCommand(actionSize); if (isMinimized() || isHidden() || !visibleNow()) windowMenu->disableCommand(actionMove); if (!canLower()) windowMenu->disableCommand(actionLower); if (!canRaise()) windowMenu->disableCommand(actionRaise); unsigned long func = frameFunctions(); if (!(func & ffMove)) windowMenu->disableCommand(actionMove); if (!(func & ffResize)) windowMenu->disableCommand(actionSize); if (!(func & ffMinimize)) windowMenu->disableCommand(actionMinimize); #ifndef CONFIG_PDA if (!(func & ffHide)) windowMenu->disableCommand(actionHide); #endif if (!(func & ffRollup) || !titlebar()->visible()) windowMenu->disableCommand(actionRollup); if (!(func & ffMaximize)) windowMenu->disableCommand(actionMaximize); if (!(func & ffClose)) windowMenu->disableCommand(actionClose); YMenuItem *item; if ((item = windowMenu->findAction(actionRollup))) item->setChecked(isRollup()); if ((item = windowMenu->findAction(actionOccupyAllOrCurrent))) item->setChecked(isSticky()); #if DO_NOT_COVER_OLD if ((item = windowMenu->findAction(actionDoNotCover))) item->setChecked(doNotCover()); #endif if ((item = windowMenu->findAction(actionFullscreen))) item->setChecked(isFullscreen()); if ((item = windowMenu->findSubmenu(moveMenu))) item->setEnabled(!isSticky()); for (int i(0); i < moveMenu->itemCount(); i++) { item = moveMenu->getItem(i); for (int w(0); w < workspaceCount; w++) if (item && item->getAction() == workspaceActionMoveTo[w]) item->setEnabled(w != getWorkspace()); } for (int j(0); j < layerMenu->itemCount(); j++) { item = layerMenu->getItem(j); for (int layer(0); layer < WinLayerCount; layer++) if (item && item->getAction() == layerActionSet[layer]) { bool const e(layer == getActiveLayer()); item->setEnabled(!e); item->setChecked(e); } } #ifdef CONFIG_TRAY /// if (trayMenu) { for (int k = 0; k < windowMenu->itemCount(); k++) { item = windowMenu->getItem(k); if (item->getAction() == actionToggleTray) { item->setChecked(getTrayOption() != WinTrayIgnore); } } /// } #if 0 if (trayMenu) for (int k(0); k < trayMenu->itemCount(); k++) { item = trayMenu->getItem(k); for (int opt(0); opt < WinTrayOptionCount; opt++) if (item && item->getAction() == trayOptionActionSet[opt]) { bool const e(opt == getTrayOption()); item->setEnabled(!e); item->setChecked(e); } } #endif #endif } #ifdef CONFIG_SHAPE void YFrameWindow::setShape() { if (!shapesSupported) return ; if (client()->shaped()) { MSG(("setting shape w=%d, h=%d", width(), height())); if (isRollup() || isIconic()) { XRectangle full; full.x = 0; full.y = 0; full.width = width(); full.height = height(); XShapeCombineRectangles(xapp->display(), handle(), ShapeBounding, 0, 0, &full, 1, ShapeSet, Unsorted); } else { XRectangle rect[6]; int nrect = 0; if ((frameDecors() & (fdResize | fdBorder)) == fdResize + fdBorder) { rect[0].x = 0; rect[0].y = 0; rect[0].width = width(); rect[0].height = borderY(); rect[1] = rect[0]; rect[1].y = height() - borderY(); rect[2].x = 0; rect[2].y = borderY(); rect[2].width = borderX(); rect[2].height = height() - 2 * borderY(); rect[3] = rect[2]; rect[3].x = width() - borderX(); nrect = 4; } if (titleY() > 0) { rect[nrect].x = borderX(); #ifdef TITLEBAR_BOTTOM rect[nrect].y = height() - borderY() - titleY(); #else rect[nrect].y = borderY(); #endif rect[nrect].width = width() - 2 * borderX(); rect[nrect].height = titleY(); nrect++; } if (nrect != 0) XShapeCombineRectangles(xapp->display(), handle(), ShapeBounding, 0, 0, rect, nrect, ShapeSet, Unsorted); XShapeCombineShape(xapp->display(), handle(), ShapeBounding, borderX(), borderY() #ifndef TITLEBAR_BOTTOM + titleY() #endif , client()->handle(), ShapeBounding, nrect ? ShapeUnion : ShapeSet); } } } #endif void YFrameWindow::layoutShape() { if (fShapeWidth != width() || fShapeHeight != height() || fShapeTitleY != titleY() || fShapeBorderX != borderX() || fShapeBorderY != borderY()) { fShapeWidth = width(); fShapeHeight = height(); fShapeTitleY = titleY(); fShapeBorderX = borderX(); fShapeBorderY = borderY(); #ifdef CONFIG_SHAPED_DECORATION if (shapesSupported && (frameDecors() & fdBorder) && !(isIconic() || isFullscreen())) { int const a(focused() ? 1 : 0); int const t((frameDecors() & fdResize) ? 0 : 1); Pixmap shape = XCreatePixmap(xapp->display(), desktop->handle(), width(), height(), 1); Graphics g(shape, width(), height()); g.setColorPixel(1); g.fillRect(0, 0, width(), height()); const int xTL(frameTL[t][a] != null ? frameTL[t][a]->width() : 0), xTR(width() - (frameTR[t][a] != null ? frameTR[t][a]->width() : 0)), xBL(frameBL[t][a] != null ? frameBL[t][a]->width() : 0), xBR(width() - (frameBR[t][a] != null ? frameBR[t][a]->width() : 0)); const int yTL(frameTL[t][a] != null ? frameTL[t][a]->height() : 0), yBL(height() - (frameBL[t][a] != null ? frameBL[t][a]->height() : 0)), yTR(frameTR[t][a] != null ? frameTR[t][a]->height() : 0), yBR(height() - (frameBR[t][a] != null ? frameBR[t][a]->height() : 0)); if (frameTL[t][a] != null) { g.copyDrawable(frameTL[t][a]->mask(), 0, 0, frameTL[t][a]->width(), frameTL[t][a]->height(), 0, 0); if (protectClientWindow) g.fillRect(borderX(), borderY(), frameTL[t][a]->width() - borderX(), frameTL[t][a]->height() - borderY()); } if (frameTR[t][a] != null) { g.copyDrawable(frameTR[t][a]->mask(), 0, 0, frameTR[t][a]->width(), frameTR[t][a]->height(), xTR, 0); if (protectClientWindow) g.fillRect(xTR, borderY(), frameTR[t][a]->width() - borderX(), frameTR[t][a]->height() - borderY()); } if (frameBL[t][a] != null) { g.copyDrawable(frameBL[t][a]->mask(), 0, 0, frameBL[t][a]->width(), frameBL[t][a]->height(), 0, yBL); if (protectClientWindow) g.fillRect(borderX(), yBL, frameBL[t][a]->width() - borderX(), frameBL[t][a]->height() - borderY()); } if (frameBR[t][a] != null) { g.copyDrawable(frameBR[t][a]->mask(), 0, 0, frameBR[t][a]->width(), frameBL[t][a]->height(), xBR, yBR); if (protectClientWindow) g.fillRect(xBR, yBR, frameBR[t][a]->width() - borderX(), frameBR[t][a]->width() - borderY()); } if (frameT[t][a] != null) g.repHorz(frameT[t][a]->mask(), frameT[t][a]->width(), frameT[t][a]->height(), xTL, 0, xTR - xTL); if (frameB[t][a] != null) g.repHorz(frameB[t][a]->mask(), frameB[t][a]->width(), frameB[t][a]->height(), xBL, height() - frameB[t][a]->height(), xBR - xBL); if (frameL[t][a] != null) g.repVert(frameL[t][a]->mask(), frameL[t][a]->width(), frameL[t][a]->height(), 0, yTL, yBL - yTL); if (frameR[t][a] != null) g.repVert(frameR[t][a]->mask(), frameR[t][a]->width(), frameR[t][a]->height(), width() - frameR[t][a]->width(), yTR, yBR - yTR); if (titlebar() && titleY()) titlebar()->renderShape(shape); XShapeCombineMask(xapp->display(), handle(), ShapeBounding, 0, 0, shape, ShapeSet); XFreePixmap(xapp->display(), shape); } else { XShapeCombineMask(xapp->display(), handle(), ShapeBounding, 0, 0, None, ShapeSet); } #endif #ifdef CONFIG_SHAPE setShape(); #endif } } void YFrameWindow::configure(const YRect &r) { MSG(("configure %d %d %d %d", r.x(), r.y(), r.width(), r.height())); YWindow::configure(r); performLayout(); } void YFrameWindow::performLayout() { layoutTitleBar(); layoutButtons(); layoutResizeIndicators(); layoutClient(); layoutShape(); if (affectsWorkArea()) manager->updateWorkArea(); sendConfigure(); } void YFrameWindow::layoutTitleBar() { if (titleY() == 0) { titlebar()->hide(); } else { titlebar()->show(); int title_width = width() - 2 * borderX(); titlebar()->setGeometry( YRect(borderX(), borderY() #ifdef TITLEBAR_BOTTOM + height() - titleY() - 2 * borderY() #endif , (title_width > 0) ? title_width : 1, titleY())); } } YFrameButton *YFrameWindow::getButton(char c) { unsigned long decors = frameDecors(); switch (c) { case 's': if (decors & fdSysMenu) return fMenuButton; break; case 'x': if (decors & fdClose) return fCloseButton; break; case 'm': if (decors & fdMaximize) return fMaximizeButton; break; case 'i': if (decors & fdMinimize) return fMinimizeButton; break; case 'h': if (decors & fdHide) return fHideButton; break; case 'r': if (decors & fdRollup) return fRollupButton; break; case 'd': if (decors & fdDepth) return fDepthButton; break; default: return 0; } return 0; } void YFrameWindow::positionButton(YFrameButton *b, int &xPos, bool onRight) { /// !!! clean this up if (b == fMenuButton) { const unsigned bw(((wmLook == lookPixmap || wmLook == lookMetal || wmLook == lookGtk || wmLook == lookFlat ) && showFrameIcon) || b->getPixmap(0) == null ? titleY() : b->getPixmap(0)->width()); if (onRight) xPos -= bw; b->setGeometry(YRect(xPos, 0, bw, titleY())); if (!onRight) xPos += bw; } else if (wmLook == lookPixmap || wmLook == lookMetal || wmLook == lookGtk || wmLook == lookFlat ) { const unsigned bw(b->getPixmap(0) != null ? b->getPixmap(0)->width() : titleY()); if (onRight) xPos -= bw; b->setGeometry(YRect(xPos, 0, bw, titleY())); if (!onRight) xPos += bw; } else if (wmLook == lookWin95) { if (onRight) xPos -= titleY(); b->setGeometry(YRect(xPos, 2, titleY(), titleY() - 3)); if (!onRight) xPos += titleY(); } else { if (onRight) xPos -= titleY(); b->setGeometry(YRect(xPos, 0, titleY(), titleY())); if (!onRight) xPos += titleY(); } } void YFrameWindow::layoutButtons() { if (titleY() == 0) return ; unsigned long decors = frameDecors(); if (fMinimizeButton) { if (decors & fdMinimize) fMinimizeButton->show(); else fMinimizeButton->hide(); } if (fMaximizeButton) { if (decors & fdMaximize) fMaximizeButton->show(); else fMaximizeButton->hide(); } if (fRollupButton) { if (decors & fdRollup) fRollupButton->show(); else fRollupButton->hide(); } if (fHideButton) { if (decors & fdHide) fHideButton->show(); else fHideButton->hide(); } if (fCloseButton) { if ((decors & fdClose)) fCloseButton->show(); else fCloseButton->hide(); } if (fMenuButton) { if (decors & fdSysMenu) fMenuButton->show(); else fMenuButton->hide(); } if (fDepthButton) { if (decors & fdDepth) fDepthButton->show(); else fDepthButton->hide(); } #ifdef CONFIG_LOOK_PIXMAP const int pi(focused() ? 1 : 0); #endif if (titleButtonsLeft) { #ifdef CONFIG_LOOK_PIXMAP int xPos(titleJ[pi] != null ? titleJ[pi]->width() : 0); #else int xPos(0); #endif for (const char *bc = titleButtonsLeft; *bc; bc++) { YFrameButton *b = 0; switch (*bc) { case ' ': xPos++; b = 0; break; default: b = getButton(*bc); break; } if (b) positionButton(b, xPos, false); } } if (titleButtonsRight) { #ifdef CONFIG_LOOK_PIXMAP int xPos(width() - 2 * borderX() - (titleQ[pi] != null ? titleQ[pi]->width() : 0)); #else int xPos(width() - 2 * borderX()); #endif for (const char *bc = titleButtonsRight; *bc; bc++) { YFrameButton *b = 0; switch (*bc) { case ' ': xPos--; b = 0; break; default: b = getButton(*bc); break; } if (b) positionButton(b, xPos, true); } } } void YFrameWindow::layoutResizeIndicators() { if (((frameDecors() & (fdResize | fdBorder)) == (fdResize | fdBorder)) && !isRollup() && !isMinimized() && (frameFunctions() & ffResize)) { if (!indicatorsVisible) { indicatorsVisible = 1; XMapWindow(xapp->display(), topSide); XMapWindow(xapp->display(), leftSide); XMapWindow(xapp->display(), rightSide); XMapWindow(xapp->display(), bottomSide); XMapWindow(xapp->display(), topLeftCorner); XMapWindow(xapp->display(), topRightCorner); XMapWindow(xapp->display(), bottomLeftCorner); XMapWindow(xapp->display(), bottomRightCorner); } } else { if (indicatorsVisible) { indicatorsVisible = 0; XUnmapWindow(xapp->display(), topSide); XUnmapWindow(xapp->display(), leftSide); XUnmapWindow(xapp->display(), rightSide); XUnmapWindow(xapp->display(), bottomSide); XUnmapWindow(xapp->display(), topLeftCorner); XUnmapWindow(xapp->display(), topRightCorner); XUnmapWindow(xapp->display(), bottomLeftCorner); XUnmapWindow(xapp->display(), bottomRightCorner); } } if (!indicatorsVisible) return; XMoveResizeWindow(xapp->display(), topSide, 0, 0, width(), borderY()); XMoveResizeWindow(xapp->display(), leftSide, 0, 0, borderX(), height()); XMoveResizeWindow(xapp->display(), rightSide, width() - borderX(), 0, borderY(), height()); XMoveResizeWindow(xapp->display(), bottomSide, 0, height() - borderY(), width(), borderY()); XMoveResizeWindow(xapp->display(), topLeftCorner, 0, 0, wsCornerX, wsCornerY); XMoveResizeWindow(xapp->display(), topRightCorner, width() - wsCornerX, 0, wsCornerX, wsCornerY); XMoveResizeWindow(xapp->display(), bottomLeftCorner, 0, height() - wsCornerY, wsCornerX, wsCornerY); XMoveResizeWindow(xapp->display(), bottomRightCorner, width() - wsCornerX, height() - wsCornerY, wsCornerX, wsCornerY); } void YFrameWindow::layoutClient() { if (!isRollup() && !isIconic()) { //int x = this->x() + borderX(); //int y = this->y() + borderY(); int w = this->width() - 2 * borderX(); int h = this->height() - 2 * borderY() - titleY(); fClientContainer->setGeometry( YRect(borderX(), borderY() #ifndef TITLEBAR_BOTTOM + titleY() #endif , w, h)); fClient->setGeometry(YRect(0, 0, w, h)); } } bool YFrameWindow::canClose() { if (frameFunctions() & ffClose) return true; else return false; } bool YFrameWindow::canMaximize() { if (frameFunctions() & ffMaximize) return true; else return false; } bool YFrameWindow::canMinimize() { if (frameFunctions() & ffMinimize) return true; else return false; } bool YFrameWindow::canRollup() { if ((frameFunctions() & ffRollup) && titleY() > 0) return true; else return false; } bool YFrameWindow::canHide() { if (frameFunctions() & ffHide) return true; else return false; } bool YFrameWindow::canLower() { if (this != manager->bottom(getActiveLayer())) return true; else return false; } bool YFrameWindow::canRaise() { for (YFrameWindow *w = prev(); w; w = w->prev()) { if (w->visibleNow()) { YFrameWindow *o = w; while (o) { o = o->owner(); if (o == this) break; else if (o == 0) return true; } } } return false; } bool YFrameWindow::Overlaps(bool above) { YFrameWindow *f; int w1x2 , w1y2 , w2x2 , w2y2; long curWorkspace = manager->activeWorkspace(); bool B,C,D,E,F,H; if (above) f = prev(); else f = next(); while (f) { if (!f->isMinimized() && !f->isHidden() && f->visibleOn(curWorkspace)) { w2x2 = f->x() + (int)f->width() - 1; w2y2 = f->y() + (int)f->height() - 1; w1x2 = x() + (int)width() - 1; w1y2 = y() + (int)height() - 1; B = w2x2 >= x(); C = y() >= f->y(); E = w1x2 >= f->x(); F = w2x2 >= w1x2; H = w2y2 >= w1y2; if (w1y2 >= f->y()) { if (F) { if (E && H) { return true; } } else { if (B && !C) { return true; } } } D = w2y2 >= y(); if (x() >= f->x()) { if (C) { if (B && D) { return true; } } else { if (F && !H) { return true; } } } else { if (H) { if (C && !F) { return true; } } else { if (E && D) { return true; } } } } if (above) f = f->prev(); else f = f->next(); } return false; } /// TODO #warning "should precalculate these" int YFrameWindow::borderX() const { return isFullscreen() ? 0 : borderXN(); } int YFrameWindow::borderXN() const { return (frameDecors() & fdBorder) ? ((frameDecors() & fdResize) ? wsBorderX : wsDlgBorderX) : 0; } int YFrameWindow::borderY() const { return isFullscreen() ? 0 : borderYN(); } int YFrameWindow::borderYN() const { return (frameDecors() & fdBorder) ? ((frameDecors() & fdResize) ? wsBorderY : wsDlgBorderY) : 0; } int YFrameWindow::titleY() const { return isFullscreen() ? 0 : titleYN(); } int YFrameWindow::titleYN() const { if (hideTitleBarWhenMaximized && isMaximized()) return 0; return (frameDecors() & fdTitleBar) ? wsTitleBar : 0; } icewm-1.3.7/src/yapp.cc0000644000076600007660000003665511463274240013713 0ustar develdevel/* * IceWM * * Copyright (C) 1998-2002 Marko Macek */ #include "config.h" #include "yapp.h" #include "ypoll.h" #include "ytimer.h" #include "yprefs.h" #include "sysdep.h" #include "sys/resource.h" #include "intl.h" #warning "get rid of this global" extern char const *ApplicationName; char const *&YApplication::Name = ApplicationName; YApplication *app = 0; static int signalPipe[2] = { 0, 0 }; static sigset_t oldSignalMask; static sigset_t signalMask; static int measure_latency = 0; static const char * libDir = LIBDIR; static const char * configDir = CFGDIR; void YApplication::initSignals() { sigemptyset(&signalMask); sigaddset(&signalMask, SIGHUP); sigprocmask(SIG_BLOCK, &signalMask, &oldSignalMask); sigemptyset(&signalMask); sigprocmask(SIG_BLOCK, &signalMask, &oldSignalMask); if (pipe(signalPipe) != 0) die(2, "Failed to create anonymous pipe (errno=%d).", errno); fcntl(signalPipe[1], F_SETFL, O_NONBLOCK); fcntl(signalPipe[0], F_SETFD, FD_CLOEXEC); fcntl(signalPipe[1], F_SETFD, FD_CLOEXEC); sfd.registerPoll(this, signalPipe[0]); } #ifdef linux void alrm_handler(int /*sig*/) { show_backtrace(); } #endif YApplication::YApplication(int * /*argc*/, char ***/*argv*/) { app = this; fLoopLevel = 0; fExitApp = 0; fFirstTimer = fLastTimer = 0; fFirstPoll = fLastPoll = 0; #if 0 { char const * cmd(**argv); char cwd[PATH_MAX + 1]; if ('/' == *cmd) fExecutable = newstr(cmd); else if (strchr (cmd, '/')) fExecutable = cstrJoin(getcwd(cwd, sizeof(cwd)), "/", cmd, NULL); else fExecutable = findPath(ustring(getenv("PATH")), X_OK, upath(cmd)); } #endif initSignals(); #if 0 struct sigaction sig; sig.sa_handler = SIG_IGN; sigemptyset(&sig.sa_mask); sig.sa_flags = 0; sigaction(SIGCHLD, &sig, &oldSignalCHLD); #endif #ifdef linux if (measure_latency) { struct sigaction sa; sa.sa_handler = alrm_handler; sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sigaction(SIGALRM, &sa, NULL); } #endif } YApplication::~YApplication() { sfd.unregisterPoll(); app = NULL; } void YApplication::registerTimer(YTimer *t) { t->fPrev = 0; t->fNext = fFirstTimer; if (fFirstTimer) fFirstTimer->fPrev = t; else fLastTimer = t; fFirstTimer = t; } void YApplication::unregisterTimer(YTimer *t) { if (t->fPrev) t->fPrev->fNext = t->fNext; else fFirstTimer = t->fNext; if (t->fNext) t->fNext->fPrev = t->fPrev; else fLastTimer = t->fPrev; t->fPrev = t->fNext = 0; } void YApplication::getTimeout(struct timeval *timeout) { YTimer *t; struct timeval curtime; bool fFirst = true; if (fFirstTimer == 0) return; gettimeofday(&curtime, 0); timeout->tv_sec += curtime.tv_sec; timeout->tv_usec += curtime.tv_usec; while (timeout->tv_usec >= 1000000) { timeout->tv_usec -= 1000000; timeout->tv_sec++; } t = fFirstTimer; while (t) { if (t->isRunning() && (fFirst || timercmp(timeout, &t->timeout, >))) { *timeout = t->timeout; fFirst = false; } t = t->fNext; } if ((curtime.tv_sec == timeout->tv_sec && curtime.tv_usec == timeout->tv_usec) || timercmp(&curtime, timeout, >)) { timeout->tv_sec = 0; timeout->tv_usec = 1; } else { timeout->tv_sec -= curtime.tv_sec; timeout->tv_usec -= curtime.tv_usec; while (timeout->tv_usec < 0) { timeout->tv_usec += 1000000; timeout->tv_sec--; } } PRECONDITION(timeout->tv_sec >= 0); PRECONDITION(timeout->tv_usec >= 0); } void YApplication::handleTimeouts() { YTimer *t, *n; struct timeval curtime; gettimeofday(&curtime, 0); t = fFirstTimer; while (t) { n = t->fNext; if (t->isRunning() && timercmp(&curtime, &t->timeout, >)) { YTimerListener *l = t->getTimerListener(); t->stopTimer(); if (l && l->handleTimer(t)) t->startTimer(); } t = n; } } void YApplication::decreaseTimeouts(struct timeval difftime) { YTimer *t = fFirstTimer; while (t) { t->timeout.tv_sec += difftime.tv_sec; t->timeout.tv_usec += difftime.tv_usec; if (t->timeout.tv_usec < 0) { t->timeout.tv_sec--; t->timeout.tv_usec += difftime.tv_usec; } t = t->fNext; } } void YApplication::registerPoll(YPollBase *t) { PRECONDITION(t->fFd != -1); t->fPrev = 0; t->fNext = fFirstPoll; if (fFirstPoll) fFirstPoll->fPrev = t; else fLastPoll = t; fFirstPoll = t; } void YApplication::unregisterPoll(YPollBase *t) { if (t->fPrev) t->fPrev->fNext = t->fNext; else fFirstPoll = t->fNext; if (t->fNext) t->fNext->fPrev = t->fPrev; else fLastPoll = t->fPrev; t->fPrev = t->fNext = 0; } YPollBase::~YPollBase() { unregisterPoll(); } void YPollBase::unregisterPoll() { if (fFd != -1) { app->unregisterPoll(this); fFd = -1; } } void YPollBase::registerPoll(int fd) { unregisterPoll(); fFd = fd; if (fFd != -1) app->registerPoll(this); } int YApplication::mainLoop() { fLoopLevel++; if (!fExitApp) fExitLoop = 0; struct timeval timeout, *tp; struct timeval prevtime; struct timeval idletime; gettimeofday(&idletime, 0); gettimeofday(&prevtime, 0); while (!fExitApp && !fExitLoop) { int rc; fd_set read_fds; fd_set write_fds; bool didIdle = handleIdle(); #if 0 gettimeofday(&idletime, 0); { struct timeval difftime; struct timeval curtime; gettimeofday(&curtime, 0); difftime.tv_sec = curtime.tv_sec - idletime.tv_sec; difftime.tv_usec = curtime.tv_usec - idletime.tv_usec; if (difftime.tv_usec < 0) { difftime.tv_sec--; difftime.tv_usec += 1000000; } if (difftime.tv_sec != 0 || difftime.tv_usec > 50 * 1000) { didIdle = handleIdle(); gettimeofday(&idletime, 0); } } #endif { struct timeval difftime; struct timeval curtime; gettimeofday(&curtime, 0); difftime.tv_sec = curtime.tv_sec - prevtime.tv_sec; difftime.tv_usec = curtime.tv_usec - prevtime.tv_usec; if (difftime.tv_usec < 0) { difftime.tv_sec--; difftime.tv_usec += 1000000; } if (difftime.tv_sec > 0 || difftime.tv_usec >= 50 * 1000) { DBG warn("latency: %d.%06d", difftime.tv_sec, difftime.tv_usec); } } FD_ZERO(&read_fds); FD_ZERO(&write_fds); { for (YPollBase *s = fFirstPoll; s; s = s->fNext) { PRECONDITION(s->fFd != -1); if (s->forRead()) { FD_SET(s->fd(), &read_fds); //MSG(("wait read")); } if (s->forWrite()) { FD_SET(s->fd(), &write_fds); //MSG(("wait connect")); } } } gettimeofday(&prevtime, 0); tp = &timeout; if (didIdle) { timeout.tv_sec = 0; timeout.tv_usec = 0; } else { timeout.tv_sec = 0; timeout.tv_usec = 0; getTimeout(&timeout); if (timeout.tv_sec == 0 && timeout.tv_usec == 0) tp = 0; } #if 0 if (tp == NULL) { msg("sleeping"); } else { msg("waiting: %d.%06d", tp->tv_sec, tp->tv_usec); } #endif sigprocmask(SIG_UNBLOCK, &signalMask, NULL); if (measure_latency) { itimerval it; it.it_interval.tv_sec = 0; it.it_interval.tv_usec = 0; it.it_value.tv_sec = 0; it.it_value.tv_usec = 0; setitimer(ITIMER_REAL, &it, 0); } rc = select(sizeof(fd_set) * 8, SELECT_TYPE_ARG234 &read_fds, SELECT_TYPE_ARG234 &write_fds, 0, tp); if (measure_latency) { itimerval it; it.it_interval.tv_sec = 0; it.it_interval.tv_usec = 10000; it.it_value.tv_sec = 0; it.it_value.tv_usec = 10000; setitimer(ITIMER_REAL, &it, 0); } sigprocmask(SIG_BLOCK, &signalMask, NULL); #if 0 sigset_t mask; sigpending(&mask); if (sigismember(&mask, SIGINT)) handleSignal(SIGINT); if (sigismember(&mask, SIGTERM)) handleSignal(SIGTERM); if (sigismember(&mask, SIGHUP)) handleSignal(SIGHUP); #endif { struct timeval difftime; struct timeval curtime; gettimeofday(&curtime, 0); difftime.tv_sec = curtime.tv_sec - prevtime.tv_sec; difftime.tv_usec = curtime.tv_usec - prevtime.tv_usec; if (difftime.tv_usec < 0) { difftime.tv_sec--; difftime.tv_usec += 1000000; } // if time travel to past, decrease the timeouts if (difftime.tv_sec < 0 || (difftime.tv_sec == 0 && difftime.tv_usec < 0)) { warn("time warp of %d.%06d", difftime.tv_sec, difftime.tv_usec); decreaseTimeouts(difftime); } else { // no detection for time travel to the future } } gettimeofday(&prevtime, 0); if (rc == 0) { handleTimeouts(); } else if (rc == -1) { if (errno != EINTR) warn(_("Message Loop: select failed (errno=%d)"), errno); } else { for (YPollBase *s = fFirstPoll; s; s = s->fNext) { PRECONDITION(s->fFd != -1); int fd = s->fd(); if (FD_ISSET(fd, &read_fds)) { //MSG(("got read")); s->notifyRead(); } if (FD_ISSET(fd, &write_fds)) { MSG(("got connect")); s->notifyWrite(); } } } } fLoopLevel--; return fExitCode; } void YApplication::exitLoop(int exitCode) { fExitLoop = 1; fExitCode = exitCode; } void YApplication::exit(int exitCode) { fExitApp = 1; exitLoop(exitCode); } void YApplication::handleSignal(int sig) { if (sig == SIGCHLD) { int s, rc; do { rc = waitpid(-1, &s, WNOHANG); } while (rc > 0); } } bool YApplication::handleIdle() { return false; } void sig_handler(int sig) { unsigned char uc = (unsigned char)sig; static const char *s = "icewm: signal error\n"; if (write(signalPipe[1], &uc, 1) != 1) write(2, s, strlen(s)); } void YApplication::catchSignal(int sig) { sigaddset(&signalMask, sig); sigprocmask(SIG_BLOCK, &signalMask, NULL); struct sigaction sa; sa.sa_handler = sig_handler; sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sigaction(sig, &sa, NULL); } void YApplication::resetSignals() { sigset_t mask; //struct sigaction old_sig; //sigaction(SIGCHLD, &oldSignalCHLD, &old_sig); sigprocmask(SIG_SETMASK, &oldSignalMask, &mask); } void YApplication::closeFiles() { #ifdef linux /* for now, some debugging code */ int i, max = 1024; struct rlimit lim; if (getrlimit(RLIMIT_NOFILE, &lim) == 0) max = lim.rlim_max; for (i = 3; i < max; i++) { int fl = 0; if (fcntl(i, F_GETFD, &fl) == 0) { if (!(fl & FD_CLOEXEC)) { char path[64]; char buf[1024]; memset(buf, 0, sizeof(buf)); sprintf(path, "/proc/%d/fd/%d", getpid(), i); readlink(path, buf, sizeof(buf) - 1); warn("File still open: fd=%d, target='%s' (missing FD_CLOEXEC?)", i, buf); warn("Closing file descriptor: %d", i); close (i); } } } #endif } int YApplication::runProgram(const char *path, const char *const *args) { flushXEvents(); int cpid = -1; if (path && (cpid = fork()) == 0) { app->resetSignals(); sigemptyset(&signalMask); sigaddset(&signalMask, SIGHUP); sigprocmask(SIG_UNBLOCK, &signalMask, NULL); /* perhaps the right thing to to: create ptys .. and show console window when an application attempts to use it (how do we detect input with no output?) */ setsid(); #if 0 close(0); if (open("/dev/null", O_RDONLY) != 0) _exit(1); #endif closeFiles(); if (args) execvp(path, (char **)args); else execlp(path, path, (void *)NULL); _exit(99); } return cpid; } int YApplication::startWorker(int socket, const char *path, const char *const *args) { flushXEvents(); int cpid = -1; if (path && (cpid = fork()) == 0) { app->resetSignals(); sigemptyset(&signalMask); sigaddset(&signalMask, SIGHUP); sigprocmask(SIG_UNBLOCK, &signalMask, NULL); close(0); if (dup2(socket, 0) != 0) _exit(1); close(1); if (dup2(socket, 1) != 1) _exit(1); close(socket); closeFiles(); if (args) execvp(path, (char **)args); else execlp(path, path, (void *)NULL); _exit(99); } return cpid; } int YApplication::waitProgram(int p) { int status; if (p == -1) return -1; if (waitpid(p, &status, 0) != p) return -1; return status; } void YApplication::runCommand(const char *cmdline) { /// TODO #warning calling /bin/sh is considered to be bloat char const * argv[] = { "/bin/sh", "-c", cmdline, NULL }; runProgram(argv[0], argv); } void YApplication::handleSignalPipe() { unsigned char sig; if (read(signalPipe[0], &sig, 1) == 1) { handleSignal(sig); } } void YSignalPoll::notifyRead() { owner()->handleSignalPipe(); } void YSignalPoll::notifyWrite() { } bool YSignalPoll::forRead() { return true; } bool YSignalPoll::forWrite() { return false; } const char *YApplication::getLibDir() { return libDir; } const char *YApplication::getConfigDir() { return configDir; } const char *YApplication::getPrivConfDir() { static char cfgdir[PATH_MAX] = ""; if (*cfgdir == '\0') { const char *env = getenv("ICEWM_PRIVCFG"); if (NULL == env) { env = getenv("HOME"); strcpy(cfgdir, env ? env : ""); strcat(cfgdir, "/.icewm"); } else { strcpy(cfgdir, env); } msg("using %s for private configuration files", cfgdir); } return cfgdir; } upath YApplication::findConfigFile(upath name) { upath p; if (name.isAbsolute()) return name; p = upath(getPrivConfDir()).relative(name); if (p.fileExists()) return p; p = upath(configDir).relative(name); if (p.fileExists()) return p; p = upath(REDIR_ROOT(libDir)).relative(name); if (p.fileExists()) return p; return null; } icewm-1.3.7/src/wmaction.h0000644000076600007660000000345711463274240014417 0ustar develdevel#ifndef WMACTION_H_ class YAction; #define ICEWM_ACTION_NOP 0 //#define ICEWM_ACTION_PING 1 #define ICEWM_ACTION_LOGOUT 2 #define ICEWM_ACTION_CANCEL_LOGOUT 3 #define ICEWM_ACTION_REBOOT 4 #define ICEWM_ACTION_SHUTDOWN 5 #define ICEWM_ACTION_ABOUT 6 #define ICEWM_ACTION_WINDOWLIST 7 extern YAction *actionCascade; extern YAction *actionArrange; extern YAction *actionTileVertical; extern YAction *actionTileHorizontal; extern YAction *actionUndoArrange; extern YAction *actionArrangeIcons; extern YAction *actionMinimizeAll; extern YAction *actionHideAll; extern YAction *actionShowDesktop; #ifndef CONFIG_PDA extern YAction *actionHide; #endif extern YAction *actionShow; extern YAction *actionRaise; extern YAction *actionLower; extern YAction *actionDepth; extern YAction *actionMove; extern YAction *actionSize; extern YAction *actionMaximize; extern YAction *actionMaximizeVert; extern YAction *actionMinimize; extern YAction *actionRestore; extern YAction *actionRollup; extern YAction *actionClose; extern YAction *actionKill; extern YAction *actionOccupyAllOrCurrent; #if DO_NOT_COVER_OLD extern YAction *actionDoNotCover; #endif extern YAction *actionFullscreen; extern YAction *actionToggleTray; extern YAction *actionCollapseTaskbar; extern YAction *actionWindowList; extern YAction *actionLogout; extern YAction *actionCancelLogout; extern YAction *actionLock; extern YAction *actionReboot; extern YAction *actionRestart; extern YAction *actionShutdown; extern YAction *actionRefresh; extern YAction *actionAbout; extern YAction *actionHelp; extern YAction *actionLicense; extern YAction *actionRun; extern YAction *actionExit; extern YAction *actionFocusClickToFocus; extern YAction *actionFocusMouseSloppy; extern YAction *actionFocusCustom; void initActions(); bool canShutdown(bool reboot); bool canLock(); #endif icewm-1.3.7/src/Makefile.os20000664000076600007660000000017711463274240014565 0ustar develdevelall: copy MakeConfig.OS2 MakeConfig $(MAKE) EXEEXT=.exe LIBDIR=/XFree86/lib/X11/icewm all clean: $(MAKE) EXEEXT=.exe clean icewm-1.3.7/src/ylibrary.cc0000644000076600007660000000140511463274240014560 0ustar develdevel/* * IceWM - Implementation of support for runtime bound shared libraries * Copyright (C) 2002 The Authors of IceWM * * Release under terms of the GNU Library General Public License */ #include "ylibrary.h" #include YSharedLibrary::YSharedLibrary(const char *filename, bool global, bool lazy) { fLibrary = ::dlopen(filename, (global ? RTLD_GLOBAL : 0) | (lazy ? RTLD_LAZY : RTLD_NOW)); } YSharedLibrary::~YSharedLibrary() { unload(); } void *YSharedLibrary::getSymbol(const char *symname) { return (fLibrary ? dlsym(fLibrary, symname) : 0); } const char *YSharedLibrary::getLastError() { return dlerror(); } void YSharedLibrary::unload() { if (fLibrary) dlclose(fLibrary); fLibrary = 0; } icewm-1.3.7/src/wmwinlist.h0000644000076600007660000000362411463274240014627 0ustar develdevel#ifndef __WINLIST_H #define __WINLIST_H #ifdef CONFIG_WINLIST #include "wmclient.h" // !!! should be ywindow #include "ylistbox.h" #include "yscrollview.h" #include "yaction.h" #include "yarray.h" class WindowListItem; class WindowListBox; class YMenu; class WindowListItem: public YListItem { public: WindowListItem(ClientData *frame, int workspace = 0); virtual ~WindowListItem(); virtual int getOffset(); virtual ustring getText(); virtual ref getIcon(); ClientData *getFrame() const { return fFrame; } int getWorkspace() const { return fWorkspace; } private: ClientData *fFrame; int fWorkspace; }; class WindowListBox: public YListBox, public YActionListener { public: WindowListBox(YScrollView *view, YWindow *aParent); virtual ~WindowListBox(); virtual bool handleKey(const XKeyEvent &key); virtual void handleClick(const XButtonEvent &up, int count); virtual void activateItem(YListItem *item); virtual void actionPerformed(YAction *action, unsigned int modifiers); void enableCommands(YMenu *popup); void getSelectedWindows(YArray &frames); }; class WindowList: public YFrameClient { public: WindowList(YWindow *aParent); virtual ~WindowList(); void handleFocus(const XFocusChangeEvent &focus); virtual void handleClose(); virtual void configure(const YRect &r); void relayout(); WindowListItem *addWindowListApp(YFrameWindow *frame); void removeWindowListApp(WindowListItem *item); void updateWindowListApp(WindowListItem *item); void repaintItem(WindowListItem *item) { list->repaintItem(item); } void showFocused(int x, int y); WindowListBox *getList() const { return list; } private: WindowListBox *list; YScrollView *scroll; WindowListItem **workspaceItem; void insertApp(WindowListItem *item); }; extern WindowList *windowList; #endif #endif icewm-1.3.7/src/themable.h0000644000076600007660000006227011463274240014355 0ustar develdevel#ifndef THEAMABLE_H #define THEAMABLE_H // themable preferences (themes can set only these) #if defined(CONFIG_I18N) || 1 // maybe not such a good idea XIV(bool, prettyClock, false) #else XIV(bool, prettyClock, true) #endif XIV(bool, rolloverTitleButtons, false) XIV(bool, trayDrawBevel, false) XIV(bool, titleBarCentered, false) XIV(bool, titleBarJoinLeft, false) XIV(bool, titleBarJoinRight, false) XIV(bool, showFrameIcon, true) XIV(int, wsBorderX, 6) XIV(int, wsBorderY, 6) XIV(int, wsDlgBorderX, 2) XIV(int, wsDlgBorderY, 2) XIV(int, wsCornerX, 24) XIV(int, wsCornerY, 24) XIV(int, wsTitleBar, 20) XIV(int, titleBarJustify, 0) XIV(int, titleBarHorzOffset, 0) XIV(int, titleBarVertOffset, 0) XIV(int, scrollBarWidth, 16) XIV(int, scrollBarHeight, 16) XIV(int, menuIconSize, 16) XIV(int, smallIconSize, 16) XIV(int, largeIconSize, 32) XIV(int, hugeIconSize, 48) XIV(int, quickSwitchHMargin, 3) // !!! XIV(int, quickSwitchVMargin, 3) // !!! XIV(int, quickSwitchIMargin, 4) // !!! XIV(int, quickSwitchIBorder, 2) // !!! XIV(int, quickSwitchSepSize, 6) // !!! XSV(const char *, titleButtonsLeft, "s") XSV(const char *, titleButtonsRight, "xmir") XSV(const char *, titleButtonsSupported, "xmis"); XSV(const char *, themeAuthor, 0) XSV(const char *, themeDescription, 0) XFV(const char *, titleFontName, FONT(120), "sans-serif:size=12") XFV(const char *, menuFontName, BOLDFONT(100), "sans-serif:size=10:bold") XFV(const char *, statusFontName, BOLDTTFONT(120), "monospace:size=12:bold") XFV(const char *, switchFontName, BOLDTTFONT(120), "monospace:size=12:bold") XFV(const char *, normalButtonFontName, FONT(120), "sans-serif:size=12") XFV(const char *, activeButtonFontName, BOLDFONT(120), "sans-serif:size=12:bold") #ifdef CONFIG_TASKBAR XFV(const char *, normalTaskBarFontName, FONT(120), "sans-serif:size=12") XFV(const char *, activeTaskBarFontName, BOLDFONT(120), "sans-serif:size=12:bold") XFV(const char *, toolButtonFontName, FONT(120), "sans-serif:size=12") XFV(const char *, normalWorkspaceFontName, FONT(120), "sans-serif:size=12") XFV(const char *, activeWorkspaceFontName, FONT(120), "sans-serif:size=12") #endif XFV(const char *, minimizedWindowFontName, FONT(120), "sans-serif:size=12") XFV(const char *, listBoxFontName, FONT(120), "sans-serif:size=12") XFV(const char *, labelFontName, FONT(140), "sans-serif:size=12") XFV(const char *, clockFontName, TTFONT(140), "monospace:size=12") XFV(const char *, apmFontName, TTFONT(140), "monospace:size=12") XFV(const char *, inputFontName, TTFONT(140), "monospace:size=12") XSV(const char *, clrDialog, "rgb:C0/C0/C0") XSV(const char *, clrActiveBorder, "rgb:C0/C0/C0") XSV(const char *, clrInactiveBorder, "rgb:C0/C0/C0") XSV(const char *, clrNormalTitleButton, "rgb:C0/C0/C0") XSV(const char *, clrNormalTitleButtonText, "rgb:00/00/00") XSV(const char *, clrActiveTitleBar, "rgb:00/00/A0") XSV(const char *, clrInactiveTitleBar, "rgb:80/80/80") XSV(const char *, clrActiveTitleBarText, "rgb:FF/FF/FF") XSV(const char *, clrInactiveTitleBarText, "rgb:00/00/00") XSV(const char *, clrActiveTitleBarShadow, "") XSV(const char *, clrInactiveTitleBarShadow, "") XSV(const char *, clrNormalMinimizedWindow, "rgb:C0/C0/C0") XSV(const char *, clrNormalMinimizedWindowText, "rgb:00/00/00") XSV(const char *, clrActiveMinimizedWindow, "rgb:E0/E0/E0") XSV(const char *, clrActiveMinimizedWindowText, "rgb:00/00/00") XSV(const char *, clrNormalMenu, "rgb:C0/C0/C0") XSV(const char *, clrActiveMenuItem, "rgb:A0/A0/A0") XSV(const char *, clrActiveMenuItemText, "rgb:00/00/00") XSV(const char *, clrNormalMenuItemText, "rgb:00/00/00") XSV(const char *, clrDisabledMenuItemText, "rgb:80/80/80") XSV(const char *, clrDisabledMenuItemShadow, "") XSV(const char *, clrMoveSizeStatus, "rgb:C0/C0/C0") XSV(const char *, clrMoveSizeStatusText, "rgb:00/00/00") XSV(const char *, clrQuickSwitch, "rgb:C0/C0/C0") XSV(const char *, clrQuickSwitchText, "rgb:00/00/00") XSV(const char *, clrQuickSwitchActive, 0) //#ifdef CONFIG_TASKBAR XSV(const char *, clrDefaultTaskBar, "rgb:C0/C0/C0") //#endif XSV(const char *, clrNormalButton, "rgb:C0/C0/C0") XSV(const char *, clrNormalButtonText, "rgb:00/00/00") XSV(const char *, clrActiveButton, "rgb:E0/E0/E0") XSV(const char *, clrActiveButtonText, "rgb:00/00/00") XSV(const char *, clrToolButton, "") XSV(const char *, clrToolButtonText, "") XSV(const char *, clrWorkspaceActiveButton, "") XSV(const char *, clrWorkspaceActiveButtonText, "") XSV(const char *, clrWorkspaceNormalButton, "") XSV(const char *, clrWorkspaceNormalButtonText, "") #ifdef CONFIG_TASKBAR XSV(const char *, clrNormalTaskBarApp, "rgb:C0/C0/C0") XSV(const char *, clrNormalTaskBarAppText, "rgb:00/00/00") XSV(const char *, clrActiveTaskBarApp, "rgb:E0/E0/E0") XSV(const char *, clrActiveTaskBarAppText, "rgb:00/00/00") XSV(const char *, clrMinimizedTaskBarApp, "rgb:A0/A0/A0") XSV(const char *, clrMinimizedTaskBarAppText, "rgb:00/00/00") XSV(const char *, clrInvisibleTaskBarApp, "rgb:80/80/80") XSV(const char *, clrInvisibleTaskBarAppText, "rgb:00/00/00") #endif XSV(const char *, clrScrollBar, "rgb:A0/A0/A0") XSV(const char *, clrScrollBarArrow, "rgb:00/00/00") XSV(const char *, clrScrollBarInactive, "rgb:80/80/80") XSV(const char *, clrScrollBarSlider, "rgb:C0/C0/C0") XSV(const char *, clrScrollBarButton, "rgb:C0/C0/C0") XSV(const char *, clrListBox, "rgb:C0/C0/C0") XSV(const char *, clrListBoxText, "rgb:00/00/00") XSV(const char *, clrListBoxSelected, "rgb:80/80/80") XSV(const char *, clrListBoxSelectedText, "rgb:00/00/00") XSV(const char *, clrClock, "rgb:00/00/00") XSV(const char *, clrClockText, "rgb:00/FF/00") XSV(const char *, clrApm, "rgb:00/00/00") XSV(const char *, clrApmText, "rgb:00/FF/00") XSV(const char *, clrApmBat, "rgb:FF/FF/00") // hatred: Yellow XSV(const char *, clrApmLine, "rgb:00/FF/00") // hatred: Green XSV(const char *, clrApmGraphBg, "rgb:00/00/00") // hatred: Black XSV(const char *, clrInput, "rgb:FF/FF/FF") XSV(const char *, clrInputText, "rgb:00/00/00") XSV(const char *, clrInputSelection, "rgb:80/80/80") XSV(const char *, clrInputSelectionText, "rgb:00/00/00") XSV(const char *, clrLabel, "rgb:C0/C0/C0") XSV(const char *, clrLabelText, "rgb:00/00/00") XSV(const char *, clrCpuUser, "rgb:00/FF/00") XSV(const char *, clrCpuSys, "rgb:FF/00/00") XSV(const char *, clrCpuIntr, "rgb:FF/FF/00") XSV(const char *, clrCpuIoWait, "rgb:60/00/60") XSV(const char *, clrCpuSoftIrq, "rgb:00/FF/FF") XSV(const char *, clrCpuNice, "rgb:00/00/FF") XSV(const char *, clrCpuIdle, "rgb:00/00/00") XSV(const char *, clrNetSend, "rgb:FF/FF/00") XSV(const char *, clrNetReceive, "rgb:FF/00/FF") XSV(const char *, clrNetIdle, "rgb:00/00/00") #ifdef CONFIG_GRADIENTS XSV(const char *, gradients, 0) #endif #if defined(CFGDEF) && !defined(NO_CONFIGURE) cfoption icewm_themable_preferences[] = { #ifndef LITE OBV("RolloverButtonsSupported", &rolloverTitleButtons, "Does it support the 'O' title bar button images (for mouse rollover)"), #endif OBV("TaskBarClockLeds", &prettyClock, "Task bar clock/APM uses nice pixmapped LCD display (but then it doesn't display correctly in many languages anymore, e.g. for Japanese and Korean it works only when a real font is used and not the LEDs"), OBV("TrayDrawBevel", &trayDrawBevel, "Surround the tray with plastic border"), OBV("TitleBarCentered", &titleBarCentered, "Draw window title centered (obsoleted by TitleBarJustify)"), OBV("TitleBarJoinLeft", &titleBarJoinLeft, "Join title*S and title*T"), OBV("TitleBarJoinRight", &titleBarJoinRight, "Join title*T and title*B"), OBV("ShowMenuButtonIcon", &showFrameIcon, "Show application icon over menu button"), OIV("BorderSizeX", &wsBorderX, 0, 128, "Horizontal window border"), OIV("BorderSizeY", &wsBorderY, 0, 128, "Vertical window border"), OIV("DlgBorderSizeX", &wsDlgBorderX, 0, 128, "Horizontal dialog window border"), OIV("DlgBorderSizeY", &wsDlgBorderY, 0, 128, "Vertical dialog window border"), OIV("CornerSizeX", &wsCornerX, 0, 64, "Resize corner width"), OIV("CornerSizeY", &wsCornerY, 0, 64, "Resize corner height"), OIV("TitleBarHeight", &wsTitleBar, 0, 128, "Title bar height"), OIV("TitleBarJustify", &titleBarJustify, 0, 100, "Justification of the window title"), OIV("TitleBarHorzOffset", &titleBarHorzOffset, -128, 128, "Horizontal offset for the window title text"), OIV("TitleBarVertOffset", &titleBarVertOffset, -128, 128, "Vertical offset for the window title text"), OIV("ScrollBarX", &scrollBarWidth, 0, 64, "Scrollbar width"), OIV("ScrollBarY", &scrollBarHeight, 0, 64, "Scrollbar (button) height"), OIV("MenuIconSize", &menuIconSize, 8, 128, "Menu icon size"), OIV("SmallIconSize", &smallIconSize, 8, 128, "Dimension of the small icons"), OIV("LargeIconSize", &largeIconSize, 8, 128, "Dimension of the large icons"), OIV("HugeIconSize", &hugeIconSize, 8, 128, "Dimension of the large icons"), OIV("QuickSwitchHorzMargin", &quickSwitchHMargin, 0, 64, "Horizontal margin of the quickswitch window"), OIV("QuickSwitchVertMargin", &quickSwitchVMargin, 0, 64, "Vertical margin of the quickswitch window"), OIV("QuickSwitchIconMargin", &quickSwitchIMargin, 0, 64, "Vertical margin in the quickswitch window"), OIV("QuickSwitchIconBorder", &quickSwitchIBorder, 0, 64, "Distance between the active icon and it's border"), OIV("QuickSwitchSeparatorSize", &quickSwitchSepSize, 0, 64, "Height of the separator between (all reachable) icons and text, 0 to avoid it"), OSV("ThemeAuthor", &themeAuthor, "Theme author, e-mail address, credits"), OSV("ThemeDescription", &themeDescription, "Description of the theme, credits"), OSV("TitleButtonsLeft", &titleButtonsLeft, "Titlebar buttons from left to right (x=close, m=max, i=min, h=hide, r=rollup, s=sysmenu, d=depth)"), OSV("TitleButtonsRight", &titleButtonsRight, "Titlebar buttons from right to left (x=close, m=max, i=min, h=hide, r=rollup, s=sysmenu, d=depth)"), OSV("TitleButtonsSupported", &titleButtonsSupported, "Titlebar buttons supported by theme (x,m,i,r,h,s,d)"), /************************************************************************************************************************************************************ * Font definitions ************************************************************************************************************************************************************/ OFV("TitleFontName", &titleFontName, ""), OFV("MenuFontName", &menuFontName, ""), OFV("StatusFontName", &statusFontName, ""), OFV("QuickSwitchFontName", &switchFontName, ""), OFV("NormalButtonFontName", &normalButtonFontName, ""), OFV("ActiveButtonFontName", &activeButtonFontName, ""), #ifdef CONFIG_TASKBAR OFV("NormalTaskBarFontName", &normalTaskBarFontName, ""), OFV("ActiveTaskBarFontName", &activeTaskBarFontName, ""), OFV("ToolButtonFontName", &toolButtonFontName, "fallback: NormalButtonFontName"), OFV("NormalWorkspaceFontName", &normalWorkspaceFontName, "fallback: NormalButtonFontName"), OFV("ActiveWorkspaceFontName", &activeWorkspaceFontName, "fallback: ActiveButtonFontName"), #endif OFV("MinimizedWindowFontName", &minimizedWindowFontName, ""), OFV("ListBoxFontName", &listBoxFontName, ""), OFV("ToolTipFontName", &toolTipFontName, ""), OFV("ClockFontName", &clockFontName, ""), OFV("ApmFontName", &apmFontName, ""), OFV("InputFontName", &inputFontName, ""), OFV("LabelFontName", &labelFontName, ""), /************************************************************************************************************************************************************ * Color definitions ************************************************************************************************************************************************************/ OSV("ColorDialog", &clrDialog, "Background of dialog windows"), OSV("ColorNormalBorder", &clrInactiveBorder, "Border of inactive windows"), OSV("ColorActiveBorder", &clrActiveBorder, "Border of active windows"), OSV("ColorNormalButton", &clrNormalButton, "Background of regular buttons"), OSV("ColorNormalButtonText", &clrNormalButtonText, "Textcolor of regular buttons"), OSV("ColorActiveButton", &clrActiveButton, "Background of pressed buttons"), OSV("ColorActiveButtonText", &clrActiveButtonText, "Textcolor of pressed buttons"), OSV("ColorNormalTitleButton", &clrNormalTitleButton, "Background of titlebar buttons"), OSV("ColorNormalTitleButtonText", &clrNormalTitleButtonText, "Textcolor of titlebar buttons"), OSV("ColorToolButton", &clrToolButton, "Background of toolbar buttons, ColorNormalButton is used if empty"), OSV("ColorToolButtonText", &clrToolButtonText, "Textcolor of toolbar buttons, ColorNormalButtonText is used if empty"), OSV("ColorNormalWorkspaceButton", &clrWorkspaceNormalButton, "Background of workspace buttons, ColorNormalButton is used if empty"), OSV("ColorNormalWorkspaceButtonText", &clrWorkspaceNormalButtonText, "Textcolor of workspace buttons, ColorNormalButtonText is used if empty"), OSV("ColorActiveWorkspaceButton", &clrWorkspaceActiveButton, "Background of the active workspace button, ColorActiveButton is used if empty"), OSV("ColorActiveWorkspaceButtonText", &clrWorkspaceActiveButtonText, "Textcolor of the active workspace button, ColorActiveButtonText is used if empty"), OSV("ColorNormalTitleBar", &clrInactiveTitleBar, "Background of the titlebar of regular windows"), OSV("ColorNormalTitleBarText", &clrInactiveTitleBarText, "Textcolor of the titlebar of regular windows"), OSV("ColorNormalTitleBarShadow", &clrInactiveTitleBarShadow, "Textshadow of the titlebar of regular windows"), OSV("ColorActiveTitleBar", &clrActiveTitleBar, "Background of the titlebar of active windows"), OSV("ColorActiveTitleBarText", &clrActiveTitleBarText, "Textcolor of the titlebar of active windows"), OSV("ColorActiveTitleBarShadow", &clrActiveTitleBarShadow, "Textshadow of the titlebar of active windows"), OSV("ColorNormalMinimizedWindow", &clrNormalMinimizedWindow, "Background for mini icons of regular windows"), OSV("ColorNormalMinimizedWindowText", &clrNormalMinimizedWindowText, "Textcolor for mini icons of regular windows"), OSV("ColorActiveMinimizedWindow", &clrActiveMinimizedWindow, "Background for mini icons of active windows"), OSV("ColorActiveMinimizedWindowText", &clrActiveMinimizedWindowText, "Textcolor for mini icons of active windows"), OSV("ColorNormalMenu", &clrNormalMenu, "Background of pop-up menus"), OSV("ColorNormalMenuItemText", &clrNormalMenuItemText, "Textcolor of regular menu items"), OSV("ColorActiveMenuItem", &clrActiveMenuItem, "Background of selected menu item, leave empty to force transparency"), OSV("ColorActiveMenuItemText", &clrActiveMenuItemText, "Textcolor of selected menu items"), OSV("ColorDisabledMenuItemText", &clrDisabledMenuItemText, "Textcolor of disabled menu items"), OSV("ColorDisabledMenuItemShadow", &clrDisabledMenuItemShadow, "Shadow of regular menu items"), OSV("ColorMoveSizeStatus", &clrMoveSizeStatus, "Background of move/resize status window"), OSV("ColorMoveSizeStatusText", &clrMoveSizeStatusText, "Textcolor of move/resize status window"), OSV("ColorQuickSwitch", &clrQuickSwitch, "Background of the quick switch window"), OSV("ColorQuickSwitchText", &clrQuickSwitchText, "Textcolor in the quick switch window"), OSV("ColorQuickSwitchActive", &clrQuickSwitchActive, "Rectangle arround the active icon in the quick switch window"), #ifdef CONFIG_TASKBAR OSV("ColorDefaultTaskBar", &clrDefaultTaskBar, "Background of the taskbar"), OSV("ColorNormalTaskBarApp", &clrNormalTaskBarApp, "Background for task buttons of regular windows"), OSV("ColorNormalTaskBarAppText", &clrNormalTaskBarAppText, "Textcolor for task buttons of regular windows"), OSV("ColorActiveTaskBarApp", &clrActiveTaskBarApp, "Background for task buttons of the active window"), OSV("ColorActiveTaskBarAppText", &clrActiveTaskBarAppText, "Textcolor for task buttons of the active window"), OSV("ColorMinimizedTaskBarApp", &clrMinimizedTaskBarApp, "Background for task buttons of minimized windows"), OSV("ColorMinimizedTaskBarAppText", &clrMinimizedTaskBarAppText, "Textcolor for task buttons of minimized windows"), OSV("ColorInvisibleTaskBarApp", &clrInvisibleTaskBarApp, "Background for task buttons of windows on other workspaces"), OSV("ColorInvisibleTaskBarAppText", &clrInvisibleTaskBarAppText, "Textcolor for task buttons of windows on other workspaces"), #endif OSV("ColorScrollBar", &clrScrollBar, "Scrollbar background (sliding area)"), OSV("ColorScrollBarSlider", &clrScrollBarSlider, "Background of the slider button in scrollbars"), OSV("ColorScrollBarButton", &clrScrollBarButton, "Background of the arrow buttons in scrollbars"), OSV("ColorScrollBarArrow", &clrScrollBarButton, "Background of the arrow buttons in scrollbars (obsolete)"), OSV("ColorScrollBarButtonArrow", &clrScrollBarArrow, "Color of active arrows on scrollbar buttons"), OSV("ColorScrollBarInactiveArrow", &clrScrollBarInactive, "Color of inactive arrows on scrollbar buttons"), OSV("ColorListBox", &clrListBox, "Background of listboxes"), OSV("ColorListBoxText", &clrListBoxText, "Textcolor in listboxes"), OSV("ColorListBoxSelection", &clrListBoxSelected, "Background of selected listbox items"), OSV("ColorListBoxSelectionText", &clrListBoxSelectedText, "Textcolor of selected listbox items"), #ifdef CONFIG_TOOLTIP OSV("ColorToolTip", &clrToolTip, "Background of tooltips"), OSV("ColorToolTipText", &clrToolTipText, "Textcolor of tooltips"), #endif OSV("ColorLabel", &clrLabel, "Background of labels, leave empty to force transparency"), OSV("ColorLabelText", &clrLabelText, "Textcolor of labels"), OSV("ColorInput", &clrInput, "Background of text entry fields (e.g. the addressbar)"), OSV("ColorInputText", &clrInputText, "Textcolor of text entry fields (e.g. the addressbar)"), OSV("ColorInputSelection", &clrInputSelection, "Background of selected text in an entry field"), OSV("ColorInputSelectionText", &clrInputSelectionText, "Selected text in an entry field"), #ifdef CONFIG_APPLET_CLOCK OSV("ColorClock", &clrClock, "Background of non-LCD clock, leave empty to force transparency"), OSV("ColorClockText", &clrClockText, "Background of non-LCD monitor"), #endif #ifdef CONFIG_APPLET_APM OSV("ColorApm", &clrApm, "Background of APM monitor, leave empty to force transparency"), OSV("ColorApmText", &clrApmText, "Textcolor of APM monitor"), OSV("ColorApmBattary", &clrApmBat, "Color of APM monitor in battary mode"), // hatred OSV("ColorApmLine", &clrApmLine, "Color of APM monitor in line mode"), // hatred OSV("ColorApmGraphBg", &clrApmGraphBg, "Background color for graph mode"), // hatred #endif #ifdef CONFIG_APPLET_CPU_STATUS OSV("ColorCPUStatusUser", &clrCpuUser, "User load on the CPU monitor"), OSV("ColorCPUStatusSystem", &clrCpuSys, "System load on the CPU monitor"), OSV("ColorCPUStatusInterrupts", &clrCpuIntr, "Interrupts on the CPU monitor"), OSV("ColorCPUStatusIoWait", &clrCpuIoWait, "IO Wait on the CPU monitor"), OSV("ColorCPUStatusSoftIrq", &clrCpuSoftIrq, "Soft Interrupts on the CPU monitor"), OSV("ColorCPUStatusNice", &clrCpuNice, "Nice load on the CPU monitor"), OSV("ColorCPUStatusIdle", &clrCpuIdle, "Idle (non) load on the CPU monitor, leave empty to force transparency"), #endif #ifdef CONFIG_APPLET_NET_STATUS OSV("ColorNetSend", &clrNetSend, "Outgoing load on the network monitor"), OSV("ColorNetReceive", &clrNetReceive, "Incoming load on the network monitor"), OSV("ColorNetIdle", &clrNetIdle, "Idle (non) load on the network monitor, leave empty to force transparency"), #endif #ifdef CONFIG_GRADIENTS OSV("Gradients", &gradients, "List of gradient pixmaps in the current theme"), #endif OKF("Look", setLook, ""), OK0() }; #endif #endif icewm-1.3.7/src/ytimer.h0000644000076600007660000000161311463274240014077 0ustar develdevel#ifndef __YTIMER_H #define __YTIMER_H #include "base.h" #include class YTimer; class YTimerListener { public: virtual bool handleTimer(YTimer *timer) = 0; protected: virtual ~YTimerListener() {}; }; class YTimer { public: YTimer(long ms = 0); ~YTimer(); void setTimerListener(YTimerListener *listener) { fListener = listener; } YTimerListener *getTimerListener() const { return fListener; } void setInterval(long ms) { fInterval = ms; } long getInterval() const { return fInterval; } void startTimer(); void startTimer(long ms); void stopTimer(); void runTimer(); // run timer handler immediatelly bool isRunning() const { return fRunning; } private: YTimerListener *fListener; long fInterval; bool fRunning; YTimer *fPrev; YTimer *fNext; struct timeval timeout; friend class YApplication; }; #endif icewm-1.3.7/src/strtest.cc0000664000076600007660000000043611463274240014440 0ustar develdevel#include "config.h" #include "mstring.h" char *ApplicationName = "strtest"; int main() { ustring x("foo"); ustring n(0); ustring y = x; ustring z = y.remove(1, 1); for (int i = 0; i < 10000; i++) { z = x.replace(x.length(), 0, y); } return 0; } icewm-1.3.7/src/ymenuitem.h0000644000076600007660000000306611463274240014606 0ustar develdevel#ifndef __YMENUITEM_H #define __YMENUITEM_H #include "ypaint.h" #include "ypixbuf.h" #include "yicon.h" class YMenu; class YAction; class YActionListener; class YMenuItem { public: YMenuItem(const ustring &name, int hotCharPos, const ustring ¶m, YAction *action, YMenu *submenu); YMenuItem(const ustring &name); YMenuItem(); virtual ~YMenuItem(); ustring getName() const { return fName; } ustring getParam() const { return fParam; } YAction *getAction() const { return fAction; } YMenu *getSubmenu() const { return fSubmenu; } int getHotChar() const { return (fName != null && fHotCharPos >= 0) ? fName.charAt(fHotCharPos) : -1; } int getHotCharPos() const { return fHotCharPos; } ref getIcon() const { return fIcon; } void setChecked(bool c); int isChecked() const { return fChecked; } int isEnabled() const { return fEnabled; } void setEnabled(bool e) { fEnabled = e; } void setSubmenu(YMenu *submenu) { fSubmenu = submenu; } virtual void actionPerformed(YActionListener *listener, YAction *action, unsigned int modifiers); int queryHeight(int &top, int &bottom, int &pad) const; int getIconWidth() const; int getNameWidth() const; int getParamWidth() const; bool isSeparator() { return getName() == null && getSubmenu() == 0; } void setIcon(ref icon); private: ustring fName; ustring fParam; YAction *fAction; int fHotCharPos; YMenu *fSubmenu; ref fIcon; bool fChecked; bool fEnabled; }; #endif icewm-1.3.7/src/ysmapp.cc0000644000076600007660000001667311463274240014251 0ustar develdevel#include "config.h" #ifdef CONFIG_SESSION #include "ysmapp.h" #include "sysdep.h" #include "base.h" #include "yconfig.h" #include "intl.h" #include YSMApplication *smapp = 0; int IceSMfd = -1; IceConn IceSMconn = NULL; SmcConn SMconn = NULL; char *oldSessionId = NULL; char *newSessionId = NULL; char *sessionProg; char *getsesfile() { static char filename[PATH_MAX] = ""; if (*filename == '\0') { strcpy(filename, YApplication::getPrivConfDir()); mkdir(filename, 0755); strcat(filename, "/.session-"); strcat(filename, newSessionId); MSG(("Storing session in %s", filename)); } return filename; } static void iceWatchFD(IceConn conn, IcePointer /*client_data*/, Bool opening, IcePointer */*watch_data*/) { if (opening) { if (IceSMfd != -1) { // shouldn't happen warn("TOO MANY ICE CONNECTIONS -- not supported"); } else { IceSMfd = IceConnectionNumber(conn); fcntl(IceSMfd, F_SETFD, FD_CLOEXEC); } } else { if (IceConnectionNumber(conn) == IceSMfd) IceSMfd = -1; } } void saveYourselfPhase2Proc(SmcConn /*conn*/, SmPointer /*client_data*/) { smapp->smSaveYourselfPhase2(); } void saveYourselfProc(SmcConn /*conn*/, SmPointer /*client_data*/, int /*save_type*/, Bool shutdown, int /*interact_style*/, Bool fast) { smapp->smSaveYourself(shutdown ? true : false, fast ? true : false); } void shutdownCancelledProc(SmcConn /*conn*/, SmPointer /*client_data*/) { smapp->smShutdownCancelled(); } void saveCompleteProc(SmcConn /*conn*/, SmPointer /*client_data*/) { smapp->smSaveComplete(); } void dieProc(SmcConn /*conn*/, SmPointer /*client_data*/) { smapp->smDie(); } static void setSMProperties() { SmPropValue programVal = { 0, NULL }; SmPropValue userIDVal = { 0, NULL }; SmPropValue restartVal[3] = { { 0, NULL }, { 0, NULL }, { 0, NULL } }; SmPropValue discardVal[4] = { { 0, NULL }, { 0, NULL }, { 0, NULL } }; // broken headers in SMlib? SmProp programProp = { (char *)SmProgram, (char *)SmLISTofARRAY8, 1, &programVal }; SmProp userIDProp = { (char *)SmUserID, (char *)SmARRAY8, 1, &userIDVal }; SmProp restartProp = { (char *)SmRestartCommand, (char *)SmLISTofARRAY8, 3, (SmPropValue *)&restartVal }; SmProp cloneProp = { (char *)SmCloneCommand, (char *)SmLISTofARRAY8, 1, (SmPropValue *)&restartVal }; SmProp discardProp = { (char *)SmDiscardCommand, (char *)SmLISTofARRAY8, 3, (SmPropValue *)&discardVal }; SmProp *props[] = { &programProp, &userIDProp, &restartProp, &cloneProp, &discardProp }; char *user = getenv("USER"); if (!user) // not a user? user = getenv("LOGNAME"); if (!user) { msg(_("$USER or $LOGNAME not set?")); return ; } const char *clientId = "--client-id"; programVal.length = strlen(sessionProg); programVal.value = sessionProg; userIDVal.length = strlen(user); userIDVal.value = (SmPointer)user; restartVal[0].length = strlen(sessionProg); restartVal[0].value = sessionProg; restartVal[1].length = strlen(clientId); restartVal[1].value = (char *)clientId; restartVal[2].length = strlen(newSessionId); restartVal[2].value = newSessionId; const char *rmprog = "/bin/rm"; const char *rmarg = "-f"; char *sidfile = getsesfile(); discardVal[0].length = strlen(rmprog); discardVal[0].value = (char *)rmprog; discardVal[1].length = strlen(rmarg); discardVal[1].value = (char *)rmarg; discardVal[2].length = strlen(sidfile); discardVal[2].value = sidfile; SmcSetProperties(SMconn, sizeof(props)/sizeof(props[0]), (SmProp **)&props); } static void initSM() { if (getenv("SESSION_MANAGER") == 0) return; if (IceAddConnectionWatch(&iceWatchFD, NULL) == 0) { warn("Session Manager: IceAddConnectionWatch failed."); return ; } char error_str[256]; SmcCallbacks smcall; memset(&smcall, 0, sizeof(smcall)); smcall.save_yourself.callback = &saveYourselfProc; smcall.save_yourself.client_data = NULL; smcall.die.callback = &dieProc; smcall.die.client_data = NULL; smcall.save_complete.callback = &saveCompleteProc; smcall.save_complete.client_data = NULL; smcall.shutdown_cancelled.callback = &shutdownCancelledProc; smcall.shutdown_cancelled.client_data = NULL; if ((SMconn = SmcOpenConnection(NULL, /* network ids */ NULL, /* context */ 1, 0, /* protocol major, minor */ SmcSaveYourselfProcMask | SmcSaveCompleteProcMask | SmcShutdownCancelledProcMask | SmcDieProcMask, &smcall, oldSessionId, &newSessionId, sizeof(error_str), error_str)) == NULL) { warn("Session Manager: Init error: %s", error_str); return ; } IceSMconn = SmcGetIceConnection(SMconn); setSMProperties(); } void YSMApplication::smSaveYourself(bool /*shutdown*/, bool /*fast*/) { SmcRequestSaveYourselfPhase2(SMconn, &saveYourselfPhase2Proc, NULL); } void YSMApplication::smSaveYourselfPhase2() { SmcSaveYourselfDone(SMconn, True); } void YSMApplication::smSaveDone() { SmcSaveYourselfDone(SMconn, True); } void YSMApplication::smSaveComplete() { } void YSMApplication::smShutdownCancelled() { SmcSaveYourselfDone(SMconn, False); } void YSMApplication::smCancelShutdown() { SmcSaveYourselfDone(SMconn, False); /// !!! broken } void YSMApplication::smDie() { app->exit(0); } bool YSMApplication::haveSessionManager() { if (SMconn != NULL) return true; return false; } void YSMApplication::smRequestShutdown() { // !!! doesn't seem to work with xsm SmcRequestSaveYourself(SMconn, SmSaveLocal, //!!! True, SmInteractStyleAny, False, True); } YSMApplication::YSMApplication(int *argc, char ***argv, const char *displayName): YXApplication(argc, argv, displayName) { smapp = this; for (char ** arg = *argv + 1; arg < *argv + *argc; ++arg) { if (**arg == '-') { char *value; if ((value = GET_LONG_ARGUMENT("client-id")) != NULL) oldSessionId = value; } } sessionProg = (*argv)[0]; //ICEWMEXE; initSM(); psm.registerPoll(this, IceSMfd); } YSMApplication::~YSMApplication() { if (SMconn != 0) { SmcCloseConnection(SMconn, 0, NULL); SMconn = NULL; IceSMconn = NULL; IceSMfd = -1; unregisterPoll(&psm); } } void YSMPoll::notifyRead() { Bool rep; if (IceProcessMessages(IceSMconn, NULL, &rep) == IceProcessMessagesIOError) { SmcCloseConnection(SMconn, 0, NULL); IceSMconn = NULL; IceSMfd = -1; unregisterPoll(); } } void YSMPoll::notifyWrite() { } bool YSMPoll::forRead() { return true; } bool YSMPoll::forWrite() { return false; } #endif /* CONFIG_SESSION */ icewm-1.3.7/src/wmmgr.cc0000644000076600007660000025134011463274240014061 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2003 Marko Macek */ #include "config.h" #include "yfull.h" #include "wmmgr.h" #include "aaddressbar.h" #include "atray.h" #include "aworkspaces.h" #include "sysdep.h" #include "wmtaskbar.h" #include "wmwinlist.h" #include "objmenu.h" #include "wmswitch.h" #include "wmstatus.h" #include "wmminiicon.h" #include "wmcontainer.h" #include "wmframe.h" #include "wmdialog.h" #include "wmsession.h" #include "wmapp.h" #include "wmaction.h" #include "wmprog.h" #include "prefs.h" #include "yprefs.h" #include "yrect.h" XContext frameContext; XContext clientContext; YAction *layerActionSet[WinLayerCount]; YWindowManager::YWindowManager(YWindow *parent, Window win): YDesktop(parent, win) { fWmState = wmSTARTUP; fShuttingDown = false; fOtherScreenFocused = false; fFocusWin = 0; lockFocusCount = 0; for (int l(0); l < WinLayerCount; l++) { layerActionSet[l] = new YAction(); fTop[l] = fBottom[l] = 0; } fFirst = fLast = 0; fFirstFocus = fLastFocus = 0; fColormapWindow = 0; fActiveWorkspace = WinWorkspaceInvalid; fLastWorkspace = WinWorkspaceInvalid; fArrangeCount = 0; fArrangeInfo = 0; fWorkAreaMoveWindows = false; fWorkArea = 0; fWorkAreaWorkspaceCount = 0; fWorkAreaScreenCount = 0; fFullscreenEnabled = true; fFocusedWindow = new YFrameWindow *[workspaceCount()]; for (int w = 0; w < workspaceCount(); w++) fFocusedWindow[w] = 0; frameContext = XUniqueContext(); clientContext = XUniqueContext(); setStyle(wsManager); setPointer(YXApplication::leftPointer); #ifdef CONFIG_XRANDR if (xrandrSupported) { #if RANDR_MAJOR >= 1 XRRSelectInput(xapp->display(), handle(), RRScreenChangeNotifyMask #if RANDR_MINOR >= 2 | RRCrtcChangeNotifyMask | RROutputChangeNotifyMask | RROutputPropertyNotifyMask #endif ); #else XRRScreenChangeSelectInput(xapp->display(), handle(), True); #endif } #endif fTopWin = new YWindow();; fTopWin->setStyle(YWindow::wsOverrideRedirect); fTopWin->setGeometry(YRect(-1, -1, 1, 1)); fTopWin->show(); if (edgeHorzWorkspaceSwitching) { fLeftSwitch = new EdgeSwitch(this, -1, false); if (fLeftSwitch) { fLeftSwitch->setGeometry(YRect(0, 0, 1, height())); fLeftSwitch->show(); } fRightSwitch = new EdgeSwitch(this, +1, false); if (fRightSwitch) { fRightSwitch->setGeometry(YRect(width() - 1, 0, 1, height())); fRightSwitch->show(); } } else { fLeftSwitch = fRightSwitch = 0; } if (edgeVertWorkspaceSwitching) { fTopSwitch = new EdgeSwitch(this, -1, true); if (fTopSwitch) { fTopSwitch->setGeometry(YRect(0, 0, width(), 1)); fTopSwitch->show(); } fBottomSwitch = new EdgeSwitch(this, +1, true); if (fBottomSwitch) { fBottomSwitch->setGeometry(YRect(0, height() - 1, width(), 1)); fBottomSwitch->show(); } } else { fTopSwitch = fBottomSwitch = 0; } XSync(xapp->display(), False); YWindow::setWindowFocus(); } YWindowManager::~YWindowManager() { } void YWindowManager::grabKeys() { XUngrabKey(xapp->display(), AnyKey, AnyModifier, handle()); #ifdef CONFIG_ADDRESSBAR ///if (taskBar && taskBar->addressBar()) GRAB_WMKEY(gKeySysAddressBar); #endif /// if (runDlgCommand && runDlgCommand[0]) /// GRAB_WMKEY(gKeySysRun); if (quickSwitch) { GRAB_WMKEY(gKeySysSwitchNext); GRAB_WMKEY(gKeySysSwitchLast); } GRAB_WMKEY(gKeySysWinNext); GRAB_WMKEY(gKeySysWinPrev); GRAB_WMKEY(gKeySysDialog); GRAB_WMKEY(gKeySysWorkspacePrev); GRAB_WMKEY(gKeySysWorkspaceNext); GRAB_WMKEY(gKeySysWorkspaceLast); GRAB_WMKEY(gKeySysWorkspacePrevTakeWin); GRAB_WMKEY(gKeySysWorkspaceNextTakeWin); GRAB_WMKEY(gKeySysWorkspaceLastTakeWin); GRAB_WMKEY(gKeySysWinMenu); GRAB_WMKEY(gKeySysMenu); GRAB_WMKEY(gKeySysWindowList); GRAB_WMKEY(gKeySysWinListMenu); GRAB_WMKEY(gKeySysWorkspace1); GRAB_WMKEY(gKeySysWorkspace2); GRAB_WMKEY(gKeySysWorkspace3); GRAB_WMKEY(gKeySysWorkspace4); GRAB_WMKEY(gKeySysWorkspace5); GRAB_WMKEY(gKeySysWorkspace6); GRAB_WMKEY(gKeySysWorkspace7); GRAB_WMKEY(gKeySysWorkspace8); GRAB_WMKEY(gKeySysWorkspace9); GRAB_WMKEY(gKeySysWorkspace10); GRAB_WMKEY(gKeySysWorkspace11); GRAB_WMKEY(gKeySysWorkspace12); GRAB_WMKEY(gKeySysWorkspace1TakeWin); GRAB_WMKEY(gKeySysWorkspace2TakeWin); GRAB_WMKEY(gKeySysWorkspace3TakeWin); GRAB_WMKEY(gKeySysWorkspace4TakeWin); GRAB_WMKEY(gKeySysWorkspace5TakeWin); GRAB_WMKEY(gKeySysWorkspace6TakeWin); GRAB_WMKEY(gKeySysWorkspace7TakeWin); GRAB_WMKEY(gKeySysWorkspace8TakeWin); GRAB_WMKEY(gKeySysWorkspace9TakeWin); GRAB_WMKEY(gKeySysWorkspace10TakeWin); GRAB_WMKEY(gKeySysWorkspace11TakeWin); GRAB_WMKEY(gKeySysWorkspace12TakeWin); GRAB_WMKEY(gKeySysTileVertical); GRAB_WMKEY(gKeySysTileHorizontal); GRAB_WMKEY(gKeySysCascade); GRAB_WMKEY(gKeySysArrange); GRAB_WMKEY(gKeySysUndoArrange); GRAB_WMKEY(gKeySysArrangeIcons); GRAB_WMKEY(gKeySysMinimizeAll); GRAB_WMKEY(gKeySysHideAll); GRAB_WMKEY(gKeySysShowDesktop); #ifdef CONFIG_TASKBAR if (taskBar != 0) GRAB_WMKEY(gKeySysCollapseTaskBar); #endif #ifndef NO_CONFIGURE_MENUS { KProgram *k = keyProgs; while (k) { grabVKey(k->key(), k->modifiers()); k = k->getNext(); } } #endif if (xapp->WinMask && win95keys) { if (xapp->Win_L) { KeyCode keycode = XKeysymToKeycode(xapp->display(), xapp->Win_L); if (keycode != 0) XGrabKey(xapp->display(), keycode, AnyModifier, desktop->handle(), False, GrabModeAsync, GrabModeSync); } if (xapp->Win_R) { KeyCode keycode = XKeysymToKeycode(xapp->display(), xapp->Win_R); if (keycode != 0) XGrabKey(xapp->display(), keycode, AnyModifier, desktop->handle(), False, GrabModeAsync, GrabModeSync); } } if (useMouseWheel) { grabButton(4, ControlMask | xapp->AltMask); grabButton(5, ControlMask | xapp->AltMask); if (xapp->WinMask) { grabButton(4, xapp->WinMask); grabButton(5, xapp->WinMask); } } { YFrameWindow *ff = topLayer(); while (ff != 0) { ff->grabKeys(); ff = ff->nextLayer(); } } } YProxyWindow::YProxyWindow(YWindow *parent): YWindow(parent) { setStyle(wsOverrideRedirect); } YProxyWindow::~YProxyWindow() { } void YProxyWindow::handleButton(const XButtonEvent &/*button*/) { } void YWindowManager::setupRootProxy() { if (grabRootWindow) { rootProxy = new YProxyWindow(0); if (rootProxy) { rootProxy->setStyle(wsOverrideRedirect); XID rid = rootProxy->handle(); XChangeProperty(xapp->display(), manager->handle(), _XA_WIN_DESKTOP_BUTTON_PROXY, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&rid, 1); XChangeProperty(xapp->display(), rootProxy->handle(), _XA_WIN_DESKTOP_BUTTON_PROXY, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&rid, 1); } } } bool YWindowManager::handleWMKey(const XKeyEvent &key, KeySym k, unsigned int /*m*/, unsigned int vm) { YFrameWindow *frame = getFocus(); #ifndef NO_CONFIGURE_MENUS KProgram *p = keyProgs; while (p) { //msg("%X=%X %X=%X", k, p->key(), vm, p->modifiers()); if (p->isKey(k, vm)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); p->open(); return true; } p = p->getNext(); } #endif if (quickSwitch && switchWindow) { if (IS_WMKEY(k, vm, gKeySysSwitchNext)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchWindow->begin(1, key.state); return true; } else if (IS_WMKEY(k, vm, gKeySysSwitchLast)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchWindow->begin(0, key.state); return true; } } if (IS_WMKEY(k, vm, gKeySysWinNext)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); if (frame) frame->wmNextWindow(); return true; } else if (IS_WMKEY(k, vm, gKeySysWinPrev)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); if (frame) frame->wmPrevWindow(); return true; } else if (IS_WMKEY(k, vm, gKeySysWinMenu)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); if (frame) frame->popupSystemMenu(this); return true; #ifndef LITE } else if (IS_WMKEY(k, vm, gKeySysDialog)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); if (ctrlAltDelete) ctrlAltDelete->activate(); return true; #endif #ifdef CONFIG_WINMENU } else if (IS_WMKEY(k, vm, gKeySysWinListMenu)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); popupWindowListMenu(this); return true; #endif } else if (IS_WMKEY(k, vm, gKeySysMenu)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); popupStartMenu(this); return true; #ifdef CONFIG_WINLIST } else if (IS_WMKEY(k, vm, gKeySysWindowList)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); if (windowList) windowList->showFocused(-1, -1); return true; #endif } else if (IS_WMKEY(k, vm, gKeySysWorkspacePrev)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToPrevWorkspace(false); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspaceNext)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToNextWorkspace(false); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspaceLast)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToLastWorkspace(false); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspacePrevTakeWin)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToPrevWorkspace(true); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspaceNextTakeWin)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToNextWorkspace(true); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspaceLastTakeWin)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToLastWorkspace(true); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace1)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(0, false); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace2)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(1, false); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace3)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(2, false); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace4)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(3, false); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace5)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(4, false); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace6)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(5, false); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace7)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(6, false); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace8)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(7, false); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace9)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(8, false); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace10)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(9, false); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace11)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(10, false); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace12)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(11, false); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace1TakeWin)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(0, true); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace2TakeWin)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(1, true); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace3TakeWin)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(2, true); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace4TakeWin)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(3, true); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace5TakeWin)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(4, true); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace6TakeWin)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(5, true); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace7TakeWin)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(6, true); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace8TakeWin)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(7, true); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace9TakeWin)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(8, true); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace10TakeWin)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(9, true); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace11TakeWin)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(10, true); return true; } else if (IS_WMKEY(k, vm, gKeySysWorkspace12TakeWin)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); switchToWorkspace(11, true); return true; } else if (IS_WMKEY(k, vm, gKeySysTileVertical)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); wmapp->actionPerformed(actionTileVertical, 0); return true; } else if (IS_WMKEY(k, vm, gKeySysTileHorizontal)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); wmapp->actionPerformed(actionTileHorizontal, 0); return true; } else if (IS_WMKEY(k, vm, gKeySysCascade)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); wmapp->actionPerformed(actionCascade, 0); return true; } else if (IS_WMKEY(k, vm, gKeySysArrange)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); wmapp->actionPerformed(actionArrange, 0); return true; } else if (IS_WMKEY(k, vm, gKeySysUndoArrange)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); wmapp->actionPerformed(actionUndoArrange, 0); return true; } else if (IS_WMKEY(k, vm, gKeySysArrangeIcons)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); wmapp->actionPerformed(actionArrangeIcons, 0); return true; } else if (IS_WMKEY(k, vm, gKeySysMinimizeAll)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); wmapp->actionPerformed(actionMinimizeAll, 0); return true; } else if (IS_WMKEY(k, vm, gKeySysHideAll)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); wmapp->actionPerformed(actionHideAll, 0); return true; #ifdef CONFIG_ADDRESSBAR } else if (IS_WMKEY(k, vm, gKeySysAddressBar)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); if (taskBar) { taskBar->showAddressBar(); return true; } #endif /// } else if (IS_WMKEY(k, vm, gKeySysRun)) { /// if (runDlgCommand && runDlgCommand[0]) /// app->runCommand(runDlgCommand); } else if(IS_WMKEY(k, vm, gKeySysShowDesktop)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); wmapp->actionPerformed(actionShowDesktop, 0); return true; } else if(IS_WMKEY(k, vm, gKeySysCollapseTaskBar)) { XAllowEvents(xapp->display(), AsyncKeyboard, key.time); #ifdef CONFIG_TASKBAR if (taskBar) taskBar->handleCollapseButton(); #endif return true; } return false; } bool YWindowManager::handleKey(const XKeyEvent &key) { if (key.type == KeyPress) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); unsigned int m = KEY_MODMASK(key.state); unsigned int vm = VMod(m); MSG(("down key: %d, mod: %d", k, m)); bool handled = handleWMKey(key, k, m, vm); if (xapp->WinMask && win95keys) { if (handled) { } else if (k == xapp->Win_L || k == xapp->Win_R) { /// !!! needs sync grab XAllowEvents(xapp->display(), SyncKeyboard, key.time); } else { //if (m & xapp->WinMask) { /// !!! needs sync grab XAllowEvents(xapp->display(), ReplayKeyboard, key.time); } } return handled; } else if (key.type == KeyRelease) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); unsigned int m = KEY_MODMASK(key.state); (void)m; #ifdef DEBUG MSG(("up key: %d, mod: %d", k, m)); #endif if (xapp->WinMask && win95keys) { if (k == xapp->Win_L || k == xapp->Win_R) { /// !!! needs sync grab XAllowEvents(xapp->display(), ReplayKeyboard, key.time); return true; } } XAllowEvents(xapp->display(), SyncKeyboard, key.time); } return true; } void YWindowManager::handleButton(const XButtonEvent &button) { if (rootProxy && button.window == handle() && !(useRootButtons & (1 << (button.button - 1))) && !((button.state & (ControlMask + xapp->AltMask)) == ControlMask + xapp->AltMask)) { if (button.send_event == False) { XUngrabPointer(xapp->display(), CurrentTime); XSendEvent(xapp->display(), rootProxy->handle(), False, SubstructureNotifyMask, (XEvent *) &button); } return ; } YFrameWindow *frame = 0; if (useMouseWheel && ((frame = getFocus()) != 0) && button.type == ButtonPress && ((KEY_MODMASK(button.state) == xapp->WinMask && xapp->WinMask) || (KEY_MODMASK(button.state) == ControlMask + xapp->AltMask && xapp->AltMask))) { if (button.button == 4) frame->wmNextWindow(); else if (button.button == 5) frame->wmPrevWindow(); } if (button.type == ButtonPress) do { #ifndef NO_CONFIGURE_MENUS if (button.button + 10 == (unsigned) rootMenuButton) { if (rootMenu) rootMenu->popup(0, 0, 0, button.x, button.y, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu | YPopupWindow::pfButtonDown); break; } #endif #ifdef CONFIG_WINMENU if (button.button + 10 == (unsigned) rootWinMenuButton) { popupWindowListMenu(this, button.x, button.y); break; } #endif } while (0); YWindow::handleButton(button); } void YWindowManager::handleClick(const XButtonEvent &up, int count) { if (count == 1) do { #ifndef NO_CONFIGURE_MENUS if (up.button == (unsigned) rootMenuButton) { if (rootMenu) rootMenu->popup(0, 0, 0, up.x, up.y, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu); break; } #endif #ifdef CONFIG_WINMENU if (up.button == (unsigned) rootWinMenuButton) { popupWindowListMenu(this, up.x, up.y); break; } #endif #ifdef CONFIG_WINLIST if (up.button == (unsigned) rootWinListButton) { if (windowList) windowList->showFocused(up.x_root, up.y_root); break; } #endif } while (0); } void YWindowManager::handleConfigure(const XConfigureEvent &configure) { if (configure.window == handle()) { #ifdef CONFIG_XRANDR UpdateScreenSize((XEvent *)&configure); #endif } } void YWindowManager::handleConfigureRequest(const XConfigureRequestEvent &configureRequest) { YFrameWindow *frame = findFrame(configureRequest.window); if (frame) { MSG(("root configure request -- frame")); frame->configureClient(configureRequest); } else { MSG(("root configure request -- client")); XWindowChanges xwc; xwc.x = configureRequest.x; xwc.y = configureRequest.y; xwc.width = configureRequest.width; xwc.height = configureRequest.height; xwc.border_width = configureRequest.border_width; xwc.stack_mode = configureRequest.detail; xwc.sibling = configureRequest.above; XConfigureWindow(xapp->display(), configureRequest.window, configureRequest.value_mask, &xwc); } } void YWindowManager::handleMapRequest(const XMapRequestEvent &mapRequest) { mapClient(mapRequest.window); } void YWindowManager::handleUnmapNotify(const XUnmapEvent &unmap) { #if 1 if (unmap.send_event) { if (unmap.window != handle() && handle() != 0) { xapp->handleWindowEvent(unmap.window, *(XEvent *)&unmap); } else { MSG(("unhandled root window unmap: %lX %lX", (long)unmap.window, (long)handle())); } } #endif } void YWindowManager::handleDestroyWindow(const XDestroyWindowEvent &destroyWindow) { if (destroyWindow.window == handle()) YWindow::handleDestroyWindow(destroyWindow); } void YWindowManager::handleClientMessage(const XClientMessageEvent &message) { #ifdef WMSPEC_HINTS if (message.message_type == _XA_NET_CURRENT_DESKTOP) { setWinWorkspace(message.data.l[0]); return; } #endif #ifdef GNOME1_HINTS if (message.message_type == _XA_WIN_WORKSPACE) { setWinWorkspace(message.data.l[0]); return; } #endif if (message.message_type == _XA_ICEWM_ACTION) { switch (message.data.l[1]) { case ICEWM_ACTION_LOGOUT: rebootOrShutdown = 0; wmapp->doLogout(); break; case ICEWM_ACTION_CANCEL_LOGOUT: wmapp->actionPerformed(actionCancelLogout, 0); break; case ICEWM_ACTION_SHUTDOWN: rebootOrShutdown = 2; wmapp->doLogout(); break; case ICEWM_ACTION_REBOOT: rebootOrShutdown = 1; wmapp->doLogout(); break; case ICEWM_ACTION_WINDOWLIST: wmapp->actionPerformed(actionWindowList, 0); break; case ICEWM_ACTION_ABOUT: #ifndef LITE wmapp->actionPerformed(actionAbout, 0); #endif break; } } } void YWindowManager::handleFocus(const XFocusChangeEvent &focus) { MSG(("window=0x%lX: %s mode=%d, detail=%d", focus.window, (focus.type == FocusIn) ? "focusIn" : "focusOut", focus.mode, focus.detail)); if (focus.mode == NotifyNormal) { if (focus.type == FocusIn) { if (focus.detail != NotifyInferior) { fOtherScreenFocused = false; } if (focus.detail == NotifyDetailNone) { if (clickFocus || !strongPointerFocus) focusLastWindow(); } } else { if (focus.detail != NotifyInferior) { fOtherScreenFocused = true; switchFocusFrom(fFocusWin); } } } } Window YWindowManager::findWindow(const char *resource) { char *wmInstance = 0, *wmClass = 0; char const * dot(resource ? strchr(resource, '.') : 0); if (dot) { wmInstance = (dot != resource ? newstr(resource, dot - resource) : 0); wmClass = newstr(dot + 1); } else if (resource) wmInstance = newstr(resource); Window win = findWindow(desktop->handle(), wmInstance, wmClass); delete[] wmClass; delete[] wmInstance; return win; } Window YWindowManager::findWindow(Window root, char const * wmInstance, char const * wmClass) { Window firstMatch = None; Window parent, *clients; unsigned nClients; XQueryTree(xapp->display(), root, &root, &parent, &clients, &nClients); if (clients) { unsigned n; for (n = 0; !firstMatch && n < nClients; ++n) { XClassHint wmclass; if (XGetClassHint(xapp->display(), clients[n], &wmclass)) { if ((wmInstance == NULL || strcmp(wmInstance, wmclass.res_name) == 0) && (wmClass == NULL || strcmp(wmClass, wmclass.res_class) == 0)) firstMatch = clients[n]; XFree(wmclass.res_name); XFree(wmclass.res_class); } if (!firstMatch) firstMatch = findWindow(clients[n], wmInstance, wmClass); } XFree(clients); } return firstMatch; } YFrameWindow *YWindowManager::findFrame(Window win) { union { YFrameWindow *ptr; XPointer xptr; } frame; if (XFindContext(xapp->display(), win, frameContext, &(frame.xptr)) == 0) return frame.ptr; else return 0; } YFrameClient *YWindowManager::findClient(Window win) { union { YFrameClient *ptr; XPointer xptr; } client; if (XFindContext(xapp->display(), win, clientContext, &(client.xptr)) == 0) return client.ptr; else return 0; } #ifndef LITE void YWindowManager::setFocus(YFrameWindow *f, bool canWarp) { #else void YWindowManager::setFocus(YFrameWindow *f, bool /*canWarp*/) { #endif // updateFullscreenLayerEnable(false); YFrameClient *c = f ? f->client() : 0; Window w = None; if (focusLocked()) return; MSG(("SET FOCUS f=%lX", f)); if (f == 0) { YFrameWindow *ff = getFocus(); if (ff) switchFocusFrom(ff); } bool input = f ? f->getInputFocusHint() : false; #if 0 XWMHints *hints = c ? c->hints() : 0; if (!f || !(f->frameOptions() & YFrameWindow::foIgnoreNoFocusHint)) { if (hints && (hints->flags & InputHint) && !hints->input) input = false; } if (f && (f->frameOptions() & YFrameWindow::foDoNotFocus)) input = false; #endif if (f && f->visible()) { if (c && c->visible() && !(f->isRollup() || f->isIconic())) w = c->handle(); else w = f->handle(); if (input) switchFocusTo(f); f->setWmUrgency(false); } #ifdef DEBUG if (w == desktop->handle()) { MSG(("%lX Focus 0x%lX desktop", xapp->getEventTime("focus1"), w)); } else if (f && w == f->handle()) { MSG(("%lX Focus 0x%lX frame %s", xapp->getEventTime("focus1"), w, cstring(f->getTitle()).c_str())); } else if (f && c && w == c->handle()) { MSG(("%lX Focus 0x%lX client %s", xapp->getEventTime("focus1"), w, cstring(f->getTitle()).c_str())); } else { MSG(("%lX Focus 0x%lX", xapp->getEventTime("focus1"), w)); } #endif if (w != None) {// input || w == desktop->handle()) { XSetInputFocus(xapp->display(), w, RevertToNone, xapp->getEventTime("setFocus")); } else { XSetInputFocus(xapp->display(), fTopWin->handle(), RevertToNone, xapp->getEventTime("setFocus")); } if (c && w == c->handle() && c->protocols() & YFrameClient::wpTakeFocus) { c->sendTakeFocus(); } if (!pointerColormap) setColormapWindow(f); #ifndef LITE /// !!! /* warp pointer sucks */ if (f && canWarp && !clickFocus && warpPointer && wmState() == wmRUNNING) { XWarpPointer(xapp->display(), None, handle(), 0, 0, 0, 0, f->x() + f->borderX(), f->y() + f->borderY() + f->titleY()); } #endif MSG(("SET FOCUS END")); updateFullscreenLayer(); } /// TODO lose this function void YWindowManager::loseFocus(YFrameWindow *window) { (void)window; PRECONDITION(window != 0); focusLastWindow(); } void YWindowManager::activate(YFrameWindow *window, bool raise, bool canWarp) { if (window) { if (raise) window->wmRaise(); window->activateWindow(canWarp); } } void YWindowManager::setTop(long layer, YFrameWindow *top) { if (true || !clientMouseActions) // some programs are buggy if (fTop[layer]) { if (raiseOnClickClient) fTop[layer]->container()->grabButtons(); } fTop[layer] = top; if (true || !clientMouseActions) // some programs are buggy if (fTop[layer]) { if (raiseOnClickClient && !(focusOnClickClient && !fTop[layer]->focused())) fTop[layer]->container()->releaseButtons(); } } void YWindowManager::installColormap(Colormap cmap) { if (xapp->hasColormap()) { //MSG(("installing colormap 0x%lX", cmap)); if (xapp->grabWindow() == 0) { if (cmap == None) { XInstallColormap(xapp->display(), xapp->colormap()); } else { XInstallColormap(xapp->display(), cmap); } } } } void YWindowManager::setColormapWindow(YFrameWindow *frame) { if (fColormapWindow != frame) { fColormapWindow = frame; if (colormapWindow() && colormapWindow()->client()) installColormap(colormapWindow()->client()->colormap()); else installColormap(None); } } void YWindowManager::manageClients() { unsigned int clientCount; Window winRoot, winParent, *winClients; manager->fWmState = YWindowManager::wmSTARTUP; XGrabServer(xapp->display()); XSync(xapp->display(), False); XQueryTree(xapp->display(), handle(), &winRoot, &winParent, &winClients, &clientCount); if (winClients) for (unsigned int i = 0; i < clientCount; i++) if (findClient(winClients[i]) == 0) manageClient(winClients[i]); XUngrabServer(xapp->display()); if (winClients) XFree(winClients); updateWorkArea(); fWmState = wmRUNNING; focusTopWindow(); } void YWindowManager::unmanageClients() { Window w; manager->fWmState = YWindowManager::wmSHUTDOWN; #ifdef CONFIG_TASKBAR if (taskBar) taskBar->detachDesktopTray(); #endif setFocus(0); XGrabServer(xapp->display()); for (unsigned int l = 0; l < WinLayerCount; l++) { while (bottom(l)) { w = bottom(l)->client()->handle(); unmanageClient(w, true); } } XSetInputFocus(xapp->display(), PointerRoot, RevertToNone, CurrentTime); XSync(xapp->display(), False); XUngrabServer(xapp->display()); } int addco(int *v, int &n, int c) { int l, r, m; /* find */ l = 0; r = n; while (l < r) { m = (l + r) / 2; if (v[m] == c) return 0; else if (v[m] > c) r = m; else l = m + 1; } /* insert if not found */ memmove(v + l + 1, v + l, (n - l) * sizeof(int)); v[l] = c; n++; return 1; } int YWindowManager::calcCoverage(bool down, YFrameWindow *frame1, int x, int y, int w, int h) { int cover = 0; int factor = down ? 2 : 1; // try harder not to cover top windows YFrameWindow *frame = 0; if (down) { frame = top(frame1->getActiveLayer()); } else { frame = frame1; } for (YFrameWindow * f = frame; f ; f = (down ? f->next() : f->prev())) { if (f == frame1 || f->isMinimized() || f->isHidden() || !f->isManaged()) continue; if (!f->isSticky() && f->getWorkspace() != frame1->getWorkspace()) continue; cover += intersection(f->x(), f->x() + f->width(), x, x + w) * intersection(f->y(), f->y() + f->height(), y, y + h) * factor; if (factor > 1) factor /= 2; } //msg("coverage %d %d %d %d = %d", x, y, w, h, cover); return cover; } void YWindowManager::tryCover(bool down, YFrameWindow *frame, int x, int y, int w, int h, int &px, int &py, int &cover, int xiscreen) { int ncover; int mx, my, Mx, My; manager->getWorkArea(frame, &mx, &my, &Mx, &My, xiscreen); if (x < mx) return ; if (y < my) return ; if (x + w > Mx) return ; if (y + h > My) return ; ncover = calcCoverage(down, frame, x, y, w, h); if (ncover < cover) { //msg("min: %d %d %d", ncover, x, y); px = x; py = y; cover = ncover; } } bool YWindowManager::getSmartPlace(bool down, YFrameWindow *frame1, int &x, int &y, int w, int h, int xiscreen) { int mx, my, Mx, My; manager->getWorkArea(frame1, &mx, &my, &Mx, &My, xiscreen); x = mx; y = my; int cover, px, py; int *xcoord, *ycoord; int xcount, ycount; int n = 0; YFrameWindow *frame = 0; if (down) { frame = top(frame1->getActiveLayer()); } else { frame = frame1; } YFrameWindow *f = 0; for (f = frame; f; f = (down ? f->next() : f->prev())) n++; n = (n + 1) * 2; xcoord = new int[n]; if (xcoord == 0) return false; ycoord = new int[n]; if (ycoord == 0) return false; xcount = ycount = 0; addco(xcoord, xcount, mx); addco(ycoord, ycount, my); for (f = frame; f; f = (down ? f->next() : f->prev())) { if (f == frame1 || f->isMinimized() || f->isHidden() || !f->isManaged() || f->isMaximized()) continue; if (!f->isSticky() && f->getWorkspace() != frame1->getWorkspace()) continue; addco(xcoord, xcount, f->x()); addco(xcoord, xcount, f->x() + f->width()); addco(ycoord, ycount, f->y()); addco(ycoord, ycount, f->y() + f->height()); } addco(xcoord, xcount, Mx); addco(ycoord, ycount, My); assert(xcount <= n); assert(ycount <= n); int xn = 0, yn = 0; px = x; py = y; cover = calcCoverage(down, frame1, x, y, w, h); while (1) { x = xcoord[xn]; y = ycoord[yn]; tryCover(down, frame1, x - w, y - h, w, h, px, py, cover, xiscreen); tryCover(down, frame1, x - w, y , w, h, px, py, cover, xiscreen); tryCover(down, frame1, x , y - h, w, h, px, py, cover, xiscreen); tryCover(down, frame1, x , y , w, h, px, py, cover, xiscreen); if (cover == 0) break; xn++; if (xn >= xcount) { xn = 0; yn++; if (yn >= ycount) break; } } x = px; y = py; delete [] xcoord; delete [] ycoord; return true; } void YWindowManager::smartPlace(YFrameWindow **w, int count) { saveArrange(w, count); if (count == 0) return; int n = xiInfo.getCount(); for (int s = 0; s < n; s++) { for (int i = 0; i < count; i++) { YFrameWindow *f = w[i]; int x = f->x(); int y = f->y(); if (s != f->getScreen()) continue; if (getSmartPlace(false, f, x, y, f->width(), f->height(), s)) { f->setNormalPositionOuter(x, y); } } } } void YWindowManager::getCascadePlace(YFrameWindow *frame, int &lastX, int &lastY, int &x, int &y, int w, int h) { int mx, my, Mx, My; manager->getWorkArea(frame, &mx, &my, &Mx, &My); /// !!! make auto placement cleaner and (optionally) smarter if (lastX < mx) lastX = mx; if (lastY < my) lastY = my; x = lastX; y = lastY; lastX += wsTitleBar; lastY += wsTitleBar; if (int(y + h) >= My) { y = my; lastY = wsTitleBar; } if (int(x + w) >= Mx) { x = mx; lastX = wsTitleBar; } } void YWindowManager::cascadePlace(YFrameWindow **w, int count) { saveArrange(w, count); if (count == 0) return; int mx, my, Mx, My; manager->getWorkArea(0, &mx, &my, &Mx, &My); int lx = mx; int ly = my; for (int i = count; i > 0; i--) { YFrameWindow *f = w[i - 1]; int x; int y; getCascadePlace(f, lx, ly, x, y, f->width(), f->height()); f->setNormalPositionOuter(x, y); } } void YWindowManager::setWindows(YFrameWindow **w, int count, YAction *action) { saveArrange(w, count); if (count == 0) return; lockFocus(); for (int i = 0; i < count; ++i) { YFrameWindow *f = w[i]; if (action == actionHideAll) { if (!f->isHidden()) f->setState(WinStateHidden, WinStateHidden); } else if (action == actionMinimizeAll) { if (!f->isMinimized()) f->setState(WinStateMinimized, WinStateMinimized); } } unlockFocus(); focusTopWindow(); } void YWindowManager::getNewPosition(YFrameWindow *frame, int &x, int &y, int w, int h, int xiscreen) { if (centerTransientsOnOwner && frame->owner() != 0) { x = frame->owner()->x() + frame->owner()->width() / 2 - w / 2; y = frame->owner()->y() + frame->owner()->height() / 2 - h / 2; } else if (smartPlacement) { getSmartPlace(true, frame, x, y, w, h, xiscreen); } else { static int lastX = 0; static int lastY = 0; getCascadePlace(frame, lastX, lastY, x, y, w, h); } if (centerLarge) { int mx, my, Mx, My; manager->getWorkArea(frame, &mx, &my, &Mx, &My); if (w > (Mx - mx) / 2 && h > (My - my) / 2) { x = (mx + Mx - w) / 2; /* = mx + (Mx - mx - w) / 2 */ if (x < mx) x = mx; y = (my + My - h) / 2; /* = my + (My - my - h) / 2 */ if (y < my) y = my; } } } void YWindowManager::placeWindow(YFrameWindow *frame, int x, int y, int cw, int ch, bool newClient, bool & #ifdef CONFIG_SESSION doActivate #endif ) { YFrameClient *client = frame->client(); int frameWidth = 2 * frame->borderXN(); int frameHeight = 2 * frame->borderYN() + frame->titleYN(); int posWidth = cw + frameWidth; int posHeight = ch + frameHeight; int posX = x; int posY = y; #ifdef CONFIG_SESSION if (smapp->haveSessionManager() && findWindowInfo(frame)) { if (frame->getWorkspace() != manager->activeWorkspace()) doActivate = false; } #ifndef NO_WINDOW_OPTIONS else #endif #endif #ifndef NO_WINDOW_OPTIONS if (newClient) { WindowOption wo(null); frame->getWindowOptions(wo, true); //msg("positioning %d %d %d %d %X", wo.gx, wo.gy, wo.gw, wo.gh, wo.gflags); if (wo.gh != 0 && wo.gw != 0) { if ((wo.gflags & (WidthValue | HeightValue)) == (WidthValue | HeightValue)) { posWidth = wo.gw + frameWidth; posHeight = wo.gh + frameHeight; } } if ((wo.gflags & (XValue | YValue)) == (XValue | YValue)) { int wox = wo.gx; int woy = wo.gy; if (wo.gflags & XNegative) wox = desktop->width() - frame->width() - wox; if (wo.gflags & YNegative) woy = desktop->height() - frame->height() - woy; posX = wox; posY = woy; goto setGeo; /// FIX } } #endif if (newClient && client->adopted() && client->sizeHints() && (!(client->sizeHints()->flags & (USPosition | PPosition)) || ((client->sizeHints()->flags & PPosition) #ifndef NO_WINDOW_OPTIONS && (frame->frameOptions() & YFrameWindow::foIgnorePosition) #endif ))) { int xiscreen = 0; if (frame->owner()) xiscreen = frame->owner()->getScreen(); if (fFocusWin) xiscreen = fFocusWin->getScreen(); getNewPosition(frame, x, y, posWidth, posHeight, xiscreen); posX = x; posY = y; newClient = false; } else { if (client->sizeHints() && (client->sizeHints()->flags & PWinGravity) && client->sizeHints()->win_gravity == StaticGravity) { posX -= frame->borderXN(); posY -= frame->borderYN() + frame->titleYN(); } else { int gx, gy; client->gravityOffsets(gx, gy); if (gx > 0) posX -= 2 * frame->borderXN() - client->getBorder() - 1; if (gy > 0) posY -= 2 * frame->borderYN() + frame->titleYN() - client->getBorder() - 1; } } setGeo: MSG(("mapping geometry 1 (%d:%d %dx%d)", posX, posY, posWidth, posHeight)); frame->setNormalGeometryOuter(posX, posY, posWidth, posHeight); } YFrameWindow *YWindowManager::manageClient(Window win, bool mapClient) { YFrameWindow *frame(NULL); YFrameClient *client(NULL); int cx = 0; int cy = 0; int cw = 1; int ch = 1; bool canManualPlace = false; bool doActivate = (wmState() == YWindowManager::wmRUNNING); bool requestFocus = true; MSG(("managing window 0x%lX", win)); frame = findFrame(win); PRECONDITION(frame == 0); XGrabServer(xapp->display()); #if 0 XSync(xapp->display(), False); { XEvent xev; if (XCheckTypedWindowEvent(xapp->display(), win, DestroyNotify, &xev)) goto end; } #endif client = findClient(win); if (client == 0) { XWindowAttributes attributes; if (!XGetWindowAttributes(xapp->display(), win, &attributes)) goto end; if (attributes.override_redirect) goto end; ///!!! is this correct ? if (!mapClient && attributes.map_state == IsUnmapped) goto end; client = new YFrameClient(0, 0, win); if (client == 0) goto end; if (client->isKdeTrayWindow()) { #ifdef CONFIG_TASKBAR #ifdef CONFIG_TRAY if (taskBar) { if (taskBar->windowTrayRequestDock(win)) { delete client; goto end; } } #endif #endif } // temp workaround for flashblock problems if (client->isEmbed()) { warn("app trying to map XEmbed window 0x%X, ignoring", client->handle()); delete client; goto end; } client->setBorder(attributes.border_width); client->setColormap(attributes.colormap); } MSG(("initial geometry 1 (%d:%d %dx%d)", client->x(), client->y(), client->width(), client->height())); cx = client->x(); cy = client->y(); cw = client->width(); ch = client->height(); if (client->visible() && wmState() == wmSTARTUP) mapClient = true; manager->updateFullscreenLayerEnable(false); frame = new YFrameWindow(0); if (frame == 0) { delete client; goto end; } MSG(("initial geometry 2 (%d:%d %dx%d)", client->x(), client->y(), client->width(), client->height())); if (!mapClient) { /// !!! fix (new internal state) //frame->setState(WinStateHidden, WinStateHidden); doActivate = false; } frame->doManage(client, doActivate, requestFocus); MSG(("initial geometry 3 (%d:%d %dx%d)", client->x(), client->y(), client->width(), client->height())); placeWindow(frame, cx, cy, cw, ch, (wmState() != wmSTARTUP), doActivate); if ((limitSize || limitPosition) && (wmState() != wmSTARTUP) && !frame->affectsWorkArea()) { int posX(frame->x() + frame->borderXN()), posY(frame->y() + frame->borderYN()), posWidth(frame->width() - 2 * frame->borderXN()), posHeight(frame->height() - 2 * frame->borderYN()); MSG(("mapping geometry 2 (%d:%d %dx%d)", posX, posY, posWidth, posHeight)); if (limitSize) { int Mw, Mh; manager->getWorkAreaSize(frame, &Mw, &Mh); posWidth = min(posWidth, Mw); posHeight = min(posHeight, Mh); /// TODO #warning "cleanup the constrainSize code, there is some duplication" posHeight -= frame->titleYN(); frame->client()->constrainSize(posWidth, posHeight, 0); posHeight += frame->titleYN(); } if (limitPosition && !(client->sizeHints() && (client->sizeHints()->flags & USPosition))) { int mx, my, Mx, My; manager->getWorkArea(frame, &mx, &my, &Mx, &My); posX = clamp(posX, mx, Mx - posWidth); posY = clamp(posY, my, My - posHeight); } posHeight -= frame->titleYN(); MSG(("mapping geometry 3 (%d:%d %dx%d)", posX, posY, posWidth, posHeight)); frame->setNormalGeometryInner(posX, posY, posWidth, posHeight); } if (wmState() == YWindowManager::wmRUNNING) { #ifndef NO_WINDOW_OPTIONS if (frame->frameOptions() & YFrameWindow::foAllWorkspaces) frame->setSticky(true); #endif #ifndef NO_WINDOW_OPTIONS if (frame->frameOptions() & YFrameWindow::foFullscreen) frame->setState(WinStateFullscreen, WinStateFullscreen); #endif #ifndef NO_WINDOW_OPTIONS if (frame->frameOptions() & (YFrameWindow::foMaximizedVert | YFrameWindow::foMaximizedHorz)) frame->setState(WinStateMaximizedVert | WinStateMaximizedHoriz, ((frame->frameOptions() & YFrameWindow::foMaximizedVert) ? WinStateMaximizedVert : 0) | ((frame->frameOptions() & YFrameWindow::foMaximizedHorz) ? WinStateMaximizedHoriz : 0)); #endif if (frame->frameOptions() & YFrameWindow::foMinimized) { frame->setState(WinStateMinimized, WinStateMinimized); doActivate = false; requestFocus = false; } if (frame->frameOptions() & YFrameWindow::foNoFocusOnMap) requestFocus = false; } frame->setManaged(true); if (doActivate && manualPlacement && wmState() == wmRUNNING && #ifdef CONFIG_WINLIST client != windowList && #endif !frame->owner() && (!client->sizeHints() || !(client->sizeHints()->flags & (USPosition | PPosition)))) canManualPlace = true; if (doActivate) { if (!(frame->getState() & (WinStateHidden | WinStateMinimized | WinStateFullscreen))) { if (canManualPlace && !opaqueMove) frame->manualPlace(); } } frame->updateState(); frame->updateProperties(); #ifdef CONFIG_TASKBAR frame->updateTaskBar(); #endif if (frame->affectsWorkArea()) updateWorkArea(); if (wmState() == wmRUNNING) { if (doActivate == true) { frame->activateWindow(true); if (canManualPlace && opaqueMove) frame->wmMove(); } else if (requestFocus) { if (mapInactiveOnTop) frame->wmRaise(); frame->setWmUrgency(true); } } manager->updateFullscreenLayerEnable(true); end: XUngrabServer(xapp->display()); return frame; } YFrameWindow *YWindowManager::mapClient(Window win) { YFrameWindow *frame = findFrame(win); MSG(("mapping window 0x%lX", win)); if (frame == 0) return manageClient(win, true); else { frame->setState(WinStateMinimized | WinStateHidden, 0); if (clickFocus || !strongPointerFocus) frame->activate(true);/// !!! is this ok } return frame; } void YWindowManager::unmanageClient(Window win, bool mapClient, bool reparent) { YFrameWindow *frame = findFrame(win); MSG(("unmanaging window 0x%lX", win)); if (frame) { YFrameClient *client = frame->client(); // !!! cleanup client->hide(); frame->hide(); frame->unmanage(reparent); delete frame; if (mapClient) client->show(); delete client; } else { MSG(("unmanage: unknown window: 0x%lX", win)); } } void YWindowManager::destroyedClient(Window win) { YFrameWindow *frame = findFrame(win); if (frame) delete frame; else { MSG(("destroyed: unknown window: 0x%lX", win)); } } void YWindowManager::focusTopWindow() { if (wmState() != wmRUNNING) return ; if (!clickFocus && strongPointerFocus) { XSetInputFocus(xapp->display(), PointerRoot, RevertToNone, CurrentTime); return ; } if (!focusTop(topLayer(WinLayerNormal))) focusTop(topLayer()); } bool YWindowManager::focusTop(YFrameWindow *f) { if (!f) return false; f = f->findWindow(YFrameWindow::fwfVisible | YFrameWindow::fwfFocusable | YFrameWindow::fwfWorkspace | YFrameWindow::fwfSame | YFrameWindow::fwfLayers | YFrameWindow::fwfCycle); //msg("found focus %lX", f); if (!f) { setFocus(0); return false; } setFocus(f); return true; } YFrameWindow *YWindowManager::getLastFocus(bool skipSticky, long workspace) { if (workspace == -1) workspace = activeWorkspace(); YFrameWindow *toFocus = 0; toFocus = fFocusedWindow[workspace]; if (toFocus != 0) { if (toFocus->isMinimized() || toFocus->isHidden() || !toFocus->visibleOn(workspace) || toFocus->avoidFocus()) toFocus = 0; } if (toFocus == 0) { int pass = 0; if (!skipSticky) pass = 1; for (; pass < 3; pass++) { for (YFrameWindow *w = lastFocusFrame(); w; w = w->prevFocus()) { #if 1 if ((w->client() && !w->client()->adopted())) continue; #endif if (w->isMinimized()) continue; if (w->isHidden()) continue; if (!w->visibleOn(workspace)) continue; if (w->avoidFocus() || pass == 2) continue; if (w->isSticky() || pass == 1) continue; toFocus = w; goto gotit; } } } gotit: #if 0 YFrameWindow *f = toFocus; YWindow *c = f ? f->client() : 0; Window w = c ? c->handle() : 0; if (w == desktop->handle()) { msg("%lX Focus 0x%lX desktop", app->getEventTime(), w); } else if (f && w == f->handle()) { msg("%lX Focus 0x%lX frame %s", app->getEventTime(), w, f->getTitle()); } else if (f && c && w == c->handle()) { msg("%lX Focus 0x%lX client %s", app->getEventTime(), w, f->getTitle()); } else { msg("%lX Focus 0x%lX", app->getEventTime(), w); } #endif return toFocus; } void YWindowManager::focusLastWindow() { if (wmState() != wmRUNNING) return ; if (focusLocked()) return; if (!clickFocus && strongPointerFocus) { XSetInputFocus(xapp->display(), PointerRoot, RevertToNone, CurrentTime); return ; } /// TODO #warning "per workspace?" YFrameWindow *toFocus = getLastFocus(false); if (toFocus == 0) { focusTopWindow(); } else { if (raiseOnFocus) toFocus->wmRaise(); setFocus(toFocus); } } YFrameWindow *YWindowManager::topLayer(long layer) { for (long l = layer; l >= 0; l--) if (fTop[l]) return fTop[l]; return 0; } YFrameWindow *YWindowManager::bottomLayer(long layer) { for (long l = layer; l < WinLayerCount; l++) if (fBottom[l]) return fBottom[l]; return 0; } void YWindowManager::updateFullscreenLayerEnable(bool enable) { fFullscreenEnabled = enable; updateFullscreenLayer(); } void YWindowManager::updateFullscreenLayer() { /// HACK !!! YFrameWindow *w = topLayer(); while (w) { if (w->getActiveLayer() == WinLayerFullscreen || w->isFullscreen()) w->updateLayer(); w = w->nextLayer(); } #ifdef CONFIG_TASKBAR if (taskBar) taskBar->updateFullscreen(getFocus() && getFocus()->isFullscreen()); if (taskBar && taskBar->workspacesPane()) { taskBar->workspacesPane()->repaint(); } #endif } void YWindowManager::restackWindows(YFrameWindow *) { int count = 0; YFrameWindow *f; YPopupWindow *p; for (f = topLayer(); f; f = f->nextLayer()) count++; #ifndef LITE if (statusMoveSize && statusMoveSize->visible()) count++; #endif p = xapp->popup(); while (p) { count++; p = p->prevPopup(); } #ifndef LITE if (ctrlAltDelete && ctrlAltDelete->visible()) count++; if (taskBar) count++; #endif if (fLeftSwitch && fLeftSwitch->visible()) count++; if (fRightSwitch && fRightSwitch->visible()) count++; if (fTopSwitch && fTopSwitch->visible()) count++; if (fBottomSwitch && fBottomSwitch->visible()) count++; if (count == 0) return ; count++; // permanent top window Window *w = new Window[count]; if (w == 0) return ; int i = 0; w[i++] = fTopWin->handle(); p = xapp->popup(); while (p) { w[i++] = p->handle(); p = p->prevPopup(); } #ifndef LITE if (taskBar) w[i++] = taskBar->edgeTriggerWindow();; #endif if (fLeftSwitch && fLeftSwitch->visible()) w[i++] = fLeftSwitch->handle(); if (fRightSwitch && fRightSwitch->visible()) w[i++] = fRightSwitch->handle(); if (fTopSwitch && fTopSwitch->visible()) w[i++] = fTopSwitch->handle(); if (fBottomSwitch && fBottomSwitch->visible()) w[i++] = fBottomSwitch->handle(); #ifndef LITE if (ctrlAltDelete && ctrlAltDelete->visible()) w[i++] = ctrlAltDelete->handle(); #endif #ifndef LITE if (statusMoveSize->visible()) w[i++] = statusMoveSize->handle(); #endif for (f = topLayer(); f; f = f->nextLayer()) { w[i++] = f->handle(); } if (count > 1) { XRestackWindows(xapp->display(), w, count); } if (i != count) { warn("i=%d, count=%d", i, count); } PRECONDITION(i == count); delete[] w; } void YWindowManager::getWorkArea(YFrameWindow *frame, int *mx, int *my, int *Mx, int *My, int xiscreen) const { bool whole = false; long ws = -1; if (frame) { if (xiscreen == -1) xiscreen = frame->getScreen(); if (!frame->inWorkArea()) whole = true; ws = frame->getWorkspace(); if (frame->isSticky()) ws = activeWorkspace(); if (ws < 0 || ws >= fWorkAreaWorkspaceCount) whole = true; } else whole = true; if (whole) { *mx = 0; *my = 0; *Mx = width(); *My = height(); } else { *mx = fWorkArea[ws][xiscreen].fMinX; *my = fWorkArea[ws][xiscreen].fMinY; *Mx = fWorkArea[ws][xiscreen].fMaxX; *My = fWorkArea[ws][xiscreen].fMaxY; } if (xiscreen != -1) { int dx, dy, dw, dh; manager->getScreenGeometry(&dx, &dy, &dw, &dh, xiscreen); if (*mx < dx) *mx = dx; if (*my < dy) *my = dy; if (*Mx > dx + dw) *Mx = dx + dw; if (*My > dy + dh) *My = dy + dh; } } void YWindowManager::getWorkAreaSize(YFrameWindow *frame, int *Mw,int *Mh) { int mx, my, Mx, My; manager->getWorkArea(frame, &mx, &my, &Mx, &My); *Mw = Mx - mx; *Mh = My - my; } void YWindowManager::updateArea(long workspace, int screen_number, int l, int t, int r, int b) { if (workspace >= 0 && workspace < fWorkAreaWorkspaceCount) { struct WorkAreaRect *wa = &(fWorkArea[workspace][screen_number]); if (l > wa->fMinX) wa->fMinX = l; if (t > wa->fMinY) wa->fMinY = t; if (r < wa->fMaxX) wa->fMaxX = r; if (b < wa->fMaxY) wa->fMaxY = b; } else if (workspace == -1) { for (int ws = 0; ws < fWorkAreaWorkspaceCount; ws++) { struct WorkAreaRect *wa = fWorkArea[ws] + screen_number; if (l > wa->fMinX) wa->fMinX = l; if (t > wa->fMinY) wa->fMinY = t; if (r < wa->fMaxX) wa->fMaxX = r; if (b < wa->fMaxY) wa->fMaxY = b; } } } void YWindowManager::updateWorkArea() { int fOldWorkAreaWorkspaceCount = fWorkAreaWorkspaceCount; struct WorkAreaRect **fOldWorkArea = fWorkArea; fWorkAreaWorkspaceCount = 0; fWorkAreaScreenCount = 0; fWorkArea = 0; fWorkArea = new struct WorkAreaRect *[::workspaceCount]; if (fWorkArea == 0) return; fWorkAreaWorkspaceCount = ::workspaceCount; for (int i = 0; i < fWorkAreaWorkspaceCount; i++) { fWorkAreaScreenCount = xiInfo.getCount(); fWorkArea[i] = new struct WorkAreaRect[fWorkAreaScreenCount]; if (fWorkArea[i] == 0) { fWorkArea = 0; fWorkAreaWorkspaceCount = 0; fWorkAreaScreenCount = 0; return; } for (int j = 0; j < fWorkAreaScreenCount; j++) { fWorkArea[i][j].fMinX = xiInfo[j].x_org; fWorkArea[i][j].fMinY = xiInfo[j].y_org; fWorkArea[i][j].fMaxX = xiInfo[j].x_org + xiInfo[j].width; fWorkArea[i][j].fMaxY = xiInfo[j].y_org + xiInfo[j].height; } } for (int i = 0; i < fWorkAreaWorkspaceCount; i++) { for (int j = 0; j < fWorkAreaScreenCount; j++) { MSG(("before: workarea w:%d s:%d %d %d %d %d", i, j, fWorkArea[i][j].fMinX, fWorkArea[i][j].fMinY, fWorkArea[i][j].fMaxX, fWorkArea[i][j].fMaxY)); } } for (YFrameWindow *w = topLayer(); w; w = w->nextLayer()) { if (w->client() == 0 || w->isHidden() || w->isRollup() || w->isIconic() || w->isMinimized()) continue; long ws = w->getWorkspace(); if (w->isSticky()) ws = -1; int s = w->getScreen(); int sx = xiInfo[s].x_org; int sy = xiInfo[s].y_org; int sw = xiInfo[s].width; int sh = xiInfo[s].height; MSG(("workarea window %s: ws:%d s:%d x:%d y:%d w:%d h:%d", cstring(w->getTitle()).c_str(), ws, s, w->x(), w->y(), w->width(), w->height())); { int l = sx + w->strutLeft(); int t = sy + w->strutTop(); int r = sx + sw - w->strutRight(); int b = sy + sh - w->strutBottom(); MSG(("strut %d %d %d %d", w->strutLeft(), w->strutTop(), w->strutRight(), w->strutBottom())); MSG(("limit %d %d %d %d", l, t, r, b)); updateArea(ws, s, l, t, r, b); } if (w->doNotCover() || (limitByDockLayer && w->getActiveLayer() == WinLayerDock)) { int lowX = sx + sw / 4; int lowY = sy + sh / 4; int hiX = sx + 3 * sw / 4; int hiY = sy + 3 * sh / 4; bool const isHoriz(w->width() > w->height()); int l = sx; int t = sy; int r = sx + sw; int b = sy + sh; if (isHoriz) { if (w->y() + int(w->height()) < lowY) { t = w->y() + w->height(); } else if (w->y() + height() > hiY) { b = w->y(); } } else { if (w->x() + int(w->width()) < lowX) { l = w->x() + w->width(); } else if (w->x() + width() > hiX) { r = w->x(); } } MSG(("dock limit %d %d %d %d", l, t, r, b)); updateArea(ws, s, l, t, r, b); } for (int i = 0; i < fWorkAreaWorkspaceCount; i++) { for (int j = 0; j < fWorkAreaScreenCount; j++) { if (0) { MSG(("updated: workarea w:%d s:%d %d %d %d %d", i, j, fWorkArea[i][j].fMinX, fWorkArea[i][j].fMinY, fWorkArea[i][j].fMaxX, fWorkArea[i][j].fMaxY)); } } } } for (int i = 0; i < fWorkAreaWorkspaceCount; i++) { for (int j = 0; j < fWorkAreaScreenCount; j++) { MSG(("after: workarea w:%d s:%d %d %d %d %d", i, j, fWorkArea[i][j].fMinX, fWorkArea[i][j].fMinY, fWorkArea[i][j].fMaxX, fWorkArea[i][j].fMaxY)); } } announceWorkArea(); if (fWorkAreaMoveWindows) { for (long ws = 0; ws < fWorkAreaWorkspaceCount; ws++) { if (ws >= fOldWorkAreaWorkspaceCount) break; for (int s = 0; s < fWorkAreaScreenCount; s++) { int const deltaX = fWorkArea[ws][s].fMinX - fOldWorkArea[ws][s].fMinX; int const deltaY = fWorkArea[ws][s].fMinY - fOldWorkArea[ws][s].fMinY; if (deltaX != 0 || deltaY != 0) relocateWindows(ws, s, deltaX, deltaY); } } } if (fOldWorkArea) { delete [] fOldWorkArea; } resizeWindows(); } void YWindowManager::announceWorkArea() { int nw = workspaceCount(); #ifdef WMSPEC_HINTS long *area = new long[nw * 4]; if (!area) return; for (int ws = 0; ws < nw; ws++) { area[ws * 4 ] = fWorkArea[ws][0].fMinX; area[ws * 4 + 1] = fWorkArea[ws][0].fMinY; area[ws * 4 + 2] = fWorkArea[ws][0].fMaxX - fWorkArea[ws][0].fMinX; area[ws * 4 + 3] = fWorkArea[ws][0].fMaxY - fWorkArea[ws][0].fMinY; } XChangeProperty(xapp->display(), handle(), _XA_NET_WORKAREA, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)area, nw * 4); delete [] area; #endif #ifdef GNOME1_HINTS if (fActiveWorkspace != -1) { long area[4]; int cw = fActiveWorkspace; area[0] = fWorkArea[cw][0].fMinX; area[1] = fWorkArea[cw][0].fMinY; area[2] = fWorkArea[cw][0].fMaxX; area[3] = fWorkArea[cw][0].fMaxY; XChangeProperty(xapp->display(), handle(), _XA_WIN_WORKAREA, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)area, 4); } #endif } void YWindowManager::relocateWindows(long workspace, int screen, int dx, int dy) { /// TODO #warning "needs a rewrite (save old work area) for each workspace" #if 1 for (YFrameWindow * f = topLayer(); f; f = f->nextLayer()) if (f->inWorkArea() && f->getScreen() == screen) { if (f->getWorkspace() == workspace || (f->isSticky() && workspace == activeWorkspace())) { f->setNormalPositionOuter(f->x() + dx, f->y() + dy); } } #endif } void YWindowManager::resizeWindows() { for (YFrameWindow * f = topLayer(); f; f = f->nextLayer()) { if (f->inWorkArea()) { if (f->isMaximized()) f->updateDerivedSize(WinStateMaximizedVert | WinStateMaximizedHoriz); f->updateLayout(); } } } void YWindowManager::activateWorkspace(long workspace) { if (workspace != fActiveWorkspace) { YFrameWindow *toFocus = getLastFocus(true, workspace); lockFocus(); /// XSetInputFocus(app->display(), desktop->handle(), RevertToNone, CurrentTime); #ifdef CONFIG_TASKBAR if (taskBar && fActiveWorkspace != (long)WinWorkspaceInvalid) { taskBar->setWorkspaceActive(fActiveWorkspace, 0); } #endif fLastWorkspace = fActiveWorkspace; fActiveWorkspace = workspace; #ifdef CONFIG_TASKBAR if (taskBar) { taskBar->setWorkspaceActive(fActiveWorkspace, 1); } #endif long ws = fActiveWorkspace; #ifdef GNOME1_HINTS XChangeProperty(xapp->display(), handle(), _XA_WIN_WORKSPACE, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&ws, 1); #endif #ifdef WMSPEC_HINTS XChangeProperty(xapp->display(), handle(), _XA_NET_CURRENT_DESKTOP, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&ws, 1); #endif #if 1 // not needed when we drop support for GNOME hints updateWorkArea(); #endif resizeWindows(); YFrameWindow *w; for (w = topLayer(); w; w = w->nextLayer()) if (w->visibleNow()) { w->updateState(); #ifdef CONFIG_TASKBAR w->updateTaskBar(); #endif } for (w = bottomLayer(); w; w = w->prevLayer()) if (!w->visibleNow()) { w->updateState(); #ifdef CONFIG_TASKBAR w->updateTaskBar(); #endif } unlockFocus(); setFocus(toFocus); resetColormap(true); #ifdef CONFIG_TASKBAR if (taskBar) taskBar->relayoutNow(); #endif #ifndef LITE if (workspaceSwitchStatus #ifdef CONFIG_TASKBAR && (!showTaskBar || !taskBarShowWorkspaces || taskBarAutoHide) #endif ) statusWorkspace->begin(workspace); #endif #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWorkspaceChange); #endif updateWorkArea(); } } void YWindowManager::setWinWorkspace(long workspace) { if (workspace >= workspaceCount() || workspace < 0) { MSG(("invalid workspace switch %ld", (long)workspace)); return; } activateWorkspace(workspace); } void YWindowManager::wmCloseSession() { // ----------------- shutdow started --- for (YFrameWindow * f(topLayer()); f; f = f->nextLayer()) if (f->client()->adopted()) // not to ourselves? f->wmClose(); } void YWindowManager::getIconPosition(YFrameWindow *frame, int *iconX, int *iconY) { static int row, col; static bool init = false; MiniIcon *iw = frame->getMiniIcon(); int mrow, mcol, Mrow, Mcol; /* Minimum and maximum for rows and columns */ int width, height; /* column width and row height */ int drow, dcol; /* row and column directions */ int *iconRow, *iconCol; if (miniIconsPlaceHorizontal) { manager->getWorkArea(frame, &mcol, &mrow, &Mcol, &Mrow); width = iw->width(); height = iw->height(); drow = (int)miniIconsBottomToTop * -2 + 1; dcol = (int)miniIconsRightToLeft * -2 + 1; iconRow = iconY; iconCol = iconX; } else { manager->getWorkArea(frame, &mrow, &mcol, &Mrow, &Mcol); width = iw->height(); height = iw->width(); drow = (int)miniIconsRightToLeft * -2 + 1; dcol = (int)miniIconsBottomToTop * -2 + 1; iconRow = iconX; iconCol = iconY; } /* Calculate start row and start column */ int srow = (drow > 0) ? mrow : (Mrow - height); int scol = (dcol > 0) ? mcol : (Mcol - width); if (!init) { row = srow; col = scol; init = true; } /* Return values */ *iconRow = row; *iconCol = col; /* Set row and column to new position */ col += width * dcol; int w2 = width / 2; if (col >= Mcol - w2 || col < mcol - w2) { row += height * drow; col = scol; int h2 = height / 2; if (row >= Mrow - h2 || row < mrow - h2) init = false; } } int YWindowManager::windowCount(long workspace) { int count = 0; for (int layer = 0 ; layer <= WinLayerCount; layer++) { for (YFrameWindow *frame = top(layer); frame; frame = frame->next()) { if (!frame->visibleOn(workspace)) continue; #ifndef NO_WINDOW_OPTIONS if (frame->frameOptions() & YFrameWindow::foIgnoreWinList) continue; #endif if (workspace != activeWorkspace() && frame->visibleOn(activeWorkspace())) continue; count++; } } return count; } void YWindowManager::resetColormap(bool active) { if (active) { if (manager->colormapWindow() && manager->colormapWindow()->client()) manager->installColormap(manager->colormapWindow()->client()->colormap()); } else { manager->installColormap(None); } } void YWindowManager::handleProperty(const XPropertyEvent &property) { #ifndef NO_WINDOW_OPTIONS if (property.atom == XA_IcewmWinOptHint) { Atom type; int format; unsigned long nitems, lbytes; unsigned char *propdata; if (XGetWindowProperty(xapp->display(), handle(), XA_IcewmWinOptHint, 0, 8192, True, XA_IcewmWinOptHint, &type, &format, &nitems, &lbytes, &propdata) == Success && propdata) { char *p = (char *)propdata; char *e = (char *)propdata + nitems; while (p < e) { char *clsin; char *option; char *arg; clsin = p; while (p < e && *p) p++; if (p == e) break; p++; option = p; while (p < e && *p) p++; if (p == e) break; p++; arg = p; while (p < e && *p) p++; if (p == e) break; p++; if (p != e) break; hintOptions->setWinOption(clsin, option, arg); } XFree(propdata); } } #endif } void YWindowManager::updateClientList() { #if defined(GNOME1_HINTS) || defined(WMSPEC_HINTS) int count = 0; XID *ids = 0; for (YFrameWindow *frame = topLayer(); frame; frame = frame->nextLayer()) { if (frame->client() && frame->client()->adopted()) count++; } if ((ids = new XID[count]) != 0) { int w = 0; for (YFrameWindow *frame2 = topLayer(); frame2; frame2 = frame2->nextLayer()) { if (frame2->client() && frame2->client()->adopted()) ids[count - 1 - w++] = frame2->client()->handle(); } PRECONDITION(w == count); } #ifdef GNOME1_HINTS XChangeProperty(xapp->display(), desktop->handle(), _XA_WIN_CLIENT_LIST, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)ids, count); #endif #ifdef WMSPEC_HINTS XChangeProperty(xapp->display(), desktop->handle(), _XA_NET_CLIENT_LIST_STACKING, XA_WINDOW, 32, PropModeReplace, (unsigned char *)ids, count); if (ids) { int w = 0; for (YFrameWindow *frame2 = firstFrame(); frame2; frame2 = frame2->nextCreated()) { if (frame2->client() && frame2->client()->adopted()) ids[w++] = frame2->client()->handle(); } PRECONDITION(w == count); } XChangeProperty(xapp->display(), desktop->handle(), _XA_NET_CLIENT_LIST, XA_WINDOW, 32, PropModeReplace, (unsigned char *)ids, count); #endif delete [] ids; #endif checkLogout(); } void YWindowManager::checkLogout() { if (fShuttingDown && !haveClients()) { if (rebootOrShutdown == 1 && rebootCommand && rebootCommand[0]) { msg("reboot... (%s)", rebootCommand); system(rebootCommand); } else if (rebootOrShutdown == 2 && shutdownCommand && shutdownCommand[0]) { msg("shutdown ... (%s)", shutdownCommand); system(shutdownCommand); } else app->exit(0); } } void YWindowManager::removeClientFrame(YFrameWindow *frame) { if (fArrangeInfo) { for (int i = 0; i < fArrangeCount; i++) if (fArrangeInfo[i].frame == frame) fArrangeInfo[i].frame = 0; } for (int w = 0; w < workspaceCount(); w++) { if (fFocusedWindow[w] == frame) { fFocusedWindow[w] = frame->nextLayer(); } } if (frame == getFocus()) manager->loseFocus(frame); if (frame == getFocus()) setFocus(0); if (colormapWindow() == frame) setColormapWindow(getFocus()); if (frame->affectsWorkArea()) updateWorkArea(); } void YWindowManager::notifyFocus(YFrameWindow *frame) { long wnd = frame ? frame->client()->handle() : None; XChangeProperty(xapp->display(), handle(), _XA_NET_ACTIVE_WINDOW, XA_WINDOW, 32, PropModeReplace, (unsigned char *)&wnd, 1); } void YWindowManager::switchFocusTo(YFrameWindow *frame, bool reorderFocus) { if (frame != fFocusWin) { if (fFocusWin) fFocusWin->loseWinFocus(); fFocusWin = frame; ///msg("setting %lX", fFocusWin); if (fFocusWin) fFocusWin->setWinFocus(); fFocusedWindow[activeWorkspace()] = frame; } if (frame && frame->nextFocus() && reorderFocus) { frame->removeFocusFrame(); frame->insertFocusFrame(true); } notifyFocus(frame); } void YWindowManager::switchFocusFrom(YFrameWindow *frame) { if (frame == fFocusWin) { if (fFocusWin) { ///msg("losing %lX", fFocusWin); fFocusWin->loseWinFocus(); } fFocusWin = 0; } } #ifdef CONFIG_WINMENU void YWindowManager::popupWindowListMenu(YWindow *owner, int x, int y) { windowListMenu->popup(owner, 0, 0, x, y, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu); } #endif void YWindowManager::popupStartMenu(YWindow *owner) { // !! fix #ifdef CONFIG_TASKBAR if (showTaskBar && taskBar && taskBarShowStartMenu) taskBar->popupStartMenu(); else #endif { #ifndef NO_CONFIGURE_MENUS rootMenu->popup(owner, 0, 0, 0, 0, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu); #endif } } #ifdef CONFIG_WINMENU void YWindowManager::popupWindowListMenu(YWindow *owner) { #ifdef CONFIG_TASKBAR if (showTaskBar && taskBar && taskBarShowWindowListMenu) taskBar->popupWindowListMenu(); else #endif popupWindowListMenu(owner, 0, 0); } #endif void YWindowManager::switchToWorkspace(long nw, bool takeCurrent) { if (nw >= 0 && nw < workspaceCount()) { YFrameWindow *frame = getFocus(); if (takeCurrent && frame && !frame->isSticky()) { lockFocus(); frame->wmOccupyAll(); frame->wmRaise(); activateWorkspace(nw); frame->wmOccupyOnlyWorkspace(nw); unlockFocus(); frame->wmRaise(); setFocus(frame); } else { activateWorkspace(nw); } } } void YWindowManager::switchToPrevWorkspace(bool takeCurrent) { long nw = (activeWorkspace() + workspaceCount() - 1) % workspaceCount(); switchToWorkspace(nw, takeCurrent); } void YWindowManager::switchToNextWorkspace(bool takeCurrent) { long nw = (activeWorkspace() + 1) % workspaceCount(); switchToWorkspace(nw, takeCurrent); } void YWindowManager::switchToLastWorkspace(bool takeCurrent) { switchToWorkspace(lastWorkspace(), takeCurrent); } void YWindowManager::tilePlace(YFrameWindow *w, int tx, int ty, int tw, int th) { w->setState(WinStateMinimized | WinStateRollup | WinStateMaximizedVert | WinStateMaximizedHoriz | WinStateHidden, 0); tw -= 2 * w->borderXN(); th -= 2 * w->borderYN() + w->titleYN(); w->client()->constrainSize(tw, th, ///WinLayerNormal, 0); tw += 2 * w->borderXN(); th += 2 * w->borderYN() + w->titleYN(); w->setNormalGeometryOuter(tx, ty, tw, th); } void YWindowManager::tileWindows(YFrameWindow **w, int count, bool vertical) { saveArrange(w, count); if (count == 0) return ; int curWin = 0; int cols = 1; while (cols * cols <= count) cols++; cols--; int areaX, areaY, areaW, areaH; int mx, my, Mx, My; manager->getWorkArea(w[0], &mx, &my, &Mx, &My); if (vertical) { // swap meaning of rows/cols areaY = mx; areaX = my; areaH = Mx - mx; areaW = My - my; } else { areaX = mx; areaY = my; areaW = Mx - mx; areaH = My - my; } int normalRows = count / cols; int normalWidth = areaW / cols; int windowX = areaX; for (int col = 0; col < cols; col++) { int rows = normalRows; int windowWidth = normalWidth; int windowY = areaY; if (col >= (cols * (1 + normalRows) - count)) rows++; if (col >= (cols * (1 + normalWidth) - areaW)) windowWidth++; int normalHeight = areaH / rows; for (int row = 0; row < rows; row++) { int windowHeight = normalHeight; if (row >= (rows * (1 + normalHeight) - areaH)) windowHeight++; if (vertical) // swap meaning of rows/cols tilePlace(w[curWin++], windowY, windowX, windowHeight, windowWidth); else tilePlace(w[curWin++], windowX, windowY, windowWidth, windowHeight); windowY += windowHeight; } windowX += windowWidth; } } void YWindowManager::getWindowsToArrange(YFrameWindow ***win, int *count, bool sticky, bool skipNonMinimizable) { YFrameWindow *w = topLayer(WinLayerNormal); *count = 0; while (w) { if (w->owner() == 0 && // not transient ? w->visibleOn(activeWorkspace()) && // visible (sticky || !w->isSticky()) && // not on all workspaces !w->isRollup() && !w->isMinimized() && !w->isHidden() && (!skipNonMinimizable || w->canMinimize())) { ++*count; } w = w->next(); } *win = new YFrameWindow *[*count]; int n = 0; w = topLayer(WinLayerNormal); if (*win) { while (w) { if (w->owner() == 0 && // not transient ? w->visibleOn(activeWorkspace()) && // visible (sticky || !w->isSticky()) && // not on all workspaces !w->isRollup() && !w->isMinimized() && !w->isHidden()&& (!skipNonMinimizable || w->canMinimize())) { (*win)[n] = w; n++; } w = w->next(); } } PRECONDITION(n == *count); } void YWindowManager::saveArrange(YFrameWindow **w, int count) { delete [] fArrangeInfo; fArrangeCount = count; fArrangeInfo = new WindowPosState[count]; if (fArrangeInfo) { for (int i = 0; i < count; i++) { fArrangeInfo[i].x = w[i]->x(); fArrangeInfo[i].y = w[i]->y(); fArrangeInfo[i].w = w[i]->width(); fArrangeInfo[i].h = w[i]->height(); fArrangeInfo[i].state = w[i]->getState(); fArrangeInfo[i].frame = w[i]; } } } void YWindowManager::undoArrange() { if (fArrangeInfo) { lockFocus(); for (int i = 0; i < fArrangeCount; i++) { YFrameWindow *f = fArrangeInfo[i].frame; if (f) { f->setState(WIN_STATE_ALL, fArrangeInfo[i].state); f->setNormalGeometryOuter(fArrangeInfo[i].x, fArrangeInfo[i].y, fArrangeInfo[i].w, fArrangeInfo[i].h); } } delete [] fArrangeInfo; fArrangeInfo = 0; fArrangeCount = 0; unlockFocus(); focusTopWindow(); } } bool YWindowManager::haveClients() { for (YFrameWindow * f(topLayer()); f ; f = f->nextLayer()) if (f->canClose() && f->client()->adopted()) return true; return false; } void YWindowManager::exitAfterLastClient(bool shuttingDown) { fShuttingDown = shuttingDown; checkLogout(); } YTimer *EdgeSwitch::fEdgeSwitchTimer(NULL); EdgeSwitch::EdgeSwitch(YWindowManager *manager, int delta, bool vertical): YWindow(manager), fManager(manager), fCursor(delta < 0 ? vertical ? YWMApp::scrollUpPointer : YWMApp::scrollLeftPointer : vertical ? YWMApp::scrollDownPointer : YWMApp::scrollRightPointer), fDelta(delta) { setStyle(wsOverrideRedirect | wsInputOnly); setPointer(YXApplication::leftPointer); } EdgeSwitch::~EdgeSwitch() { if (fEdgeSwitchTimer && fEdgeSwitchTimer->getTimerListener() == this) { fEdgeSwitchTimer->stopTimer(); fEdgeSwitchTimer->setTimerListener(NULL); delete fEdgeSwitchTimer; fEdgeSwitchTimer = NULL; } } void EdgeSwitch::handleCrossing(const XCrossingEvent &crossing) { if (crossing.type == EnterNotify && crossing.mode == NotifyNormal) { if (!fEdgeSwitchTimer) fEdgeSwitchTimer = new YTimer(edgeSwitchDelay); if (fEdgeSwitchTimer) { fEdgeSwitchTimer->setTimerListener(this); fEdgeSwitchTimer->startTimer(); setPointer(fCursor); } } else if (crossing.type == LeaveNotify && crossing.mode == NotifyNormal) { if (fEdgeSwitchTimer && fEdgeSwitchTimer->getTimerListener() == this) { fEdgeSwitchTimer->stopTimer(); fEdgeSwitchTimer->setTimerListener(NULL); setPointer(YXApplication::leftPointer); } } } bool EdgeSwitch::handleTimer(YTimer *t) { if (t != fEdgeSwitchTimer) return false; int w = desktop->width() - 5; if (fDelta == -1) { fManager->switchToPrevWorkspace(false); if (warpPointerOnEdgeSwitch) { XWarpPointer(xapp->display(), None, None, 0, 0, 0, 0, w, 0); } } else { fManager->switchToNextWorkspace(false); if (warpPointerOnEdgeSwitch) { XWarpPointer(xapp->display(), None, None, 0, 0, 0, 0, -w, 0); } } if (edgeContWorkspaceSwitching) { return true; } else { setPointer(YXApplication::leftPointer); return false; } } int YWindowManager::getScreen() { if (fFocusWin) return fFocusWin->getScreen(); return 0; } void YWindowManager::doWMAction(long action) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = handle(); xev.message_type = _XA_ICEWM_ACTION; xev.format = 32; xev.data.l[0] = CurrentTime; xev.data.l[1] = action; MSG(("new mask/state: %d/%d", xev.data.l[0], xev.data.l[1])); XSendEvent(xapp->display(), handle(), False, SubstructureNotifyMask, (XEvent *) &xev); } #ifdef CONFIG_XRANDR void YWindowManager::handleRRScreenChangeNotify(const XRRScreenChangeNotifyEvent &xrrsc) { UpdateScreenSize((XEvent *)&xrrsc); } void YWindowManager::UpdateScreenSize(XEvent *event) { #if RANDR_MAJOR >= 1 XRRUpdateConfiguration(event); #endif int nw = DisplayWidth(xapp->display(), DefaultScreen(xapp->display())); int nh = DisplayHeight(xapp->display(), DefaultScreen(xapp->display())); updateXineramaInfo(nw, nh); if (width() != nw || height() != nh) { MSG(("xrandr: %d %d", nw, nh)); setSize(nw, nh); updateWorkArea(); #ifdef CONFIG_TASKBAR if (taskBar) { taskBar->relayout(); taskBar->relayoutNow(); taskBar->updateLocation(); } #endif /// TODO #warning "make something better" wmapp->actionPerformed(actionArrange, 0); } } #endif icewm-1.3.7/src/aaddressbar.cc0000644000076600007660000000352511463274240015203 0ustar develdevel/* * IceWM * * Copyright (C) 1998-2001 Marko Macek * * AddressBar */ #include "config.h" #include "ykey.h" #include "aaddressbar.h" #ifdef CONFIG_ADDRESSBAR #include "yxapp.h" #include "wmmgr.h" #include "sysdep.h" #include "default.h" AddressBar::AddressBar(YWindow *parent): YInputLine(parent) { } AddressBar::~AddressBar() { } bool AddressBar::handleKey(const XKeyEvent &key) { if (key.type == KeyPress) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); int m = KEY_MODMASK(key.state); if (k == XK_KP_Enter || k == XK_Return) { cstring t(getText()); const char *args[7]; int i = 0; hideNow(); if (m & ControlMask) { args[i++] = terminalCommand; args[i++] = "-e"; } if (addressBarCommand && addressBarCommand[0]) { args[i++] = addressBarCommand; } else { /// TODO #warning calling /bin/sh is considered to be bloat args[i++] = "/bin/sh"; args[i++] = "-c"; } args[i++] = t.c_str(); args[i++] = 0; if (m & ControlMask) if (t.c_str_len() == 0 || t.c_str()[0] == 0) args[1] = 0; app->runProgram(args[0], args); selectAll(); return true; } else if (k == XK_Escape) { hideNow(); return true; } } return YInputLine::handleKey(key); } void AddressBar::showNow() { if (!showAddressBar || (taskBarShowWindows && !taskBarDoubleHeight) ) { raise(); show(); } setWindowFocus(); } void AddressBar::hideNow() { manager->focusLastWindow(); if (!showAddressBar || (taskBarShowWindows && !taskBarDoubleHeight) ) { hide(); } } #endif icewm-1.3.7/src/objmenu.h0000644000076600007660000000133111463274240014222 0ustar develdevel#ifndef __OBJMENU_H #define __OBJMENU_H #include "ymenu.h" #include "ymenuitem.h" #include "yaction.h" #include "obj.h" class DObject; class DObjectMenuItem: public YMenuItem, public YAction { public: DObjectMenuItem(DObject *object); virtual ~DObjectMenuItem(); virtual void actionPerformed(YActionListener *listener, YAction *action, unsigned int modifiers); private: DObject *fObject; }; class ObjectMenu: public YMenu, public ObjectContainer { public: ObjectMenu(YWindow *parent = 0); virtual ~ObjectMenu(); virtual void addObject(DObject *object); virtual void addSeparator(); virtual void addContainer(const ustring &name, ref icon, ObjectContainer *container); }; #endif icewm-1.3.7/src/objbar.cc0000644000076600007660000000706511463274240014172 0ustar develdevel/* * IceWM * * Copyright (C) 1999-2002 Marko Macek */ #include "config.h" #ifndef NO_CONFIGURE_MENUS #include "objmenu.h" #endif #ifdef CONFIG_TASKBAR #include "objbar.h" #include "objbutton.h" #include "ybutton.h" #include "prefs.h" #include "wmtaskbar.h" #include "wmapp.h" #include "yrect.h" #include "yicon.h" YColor * ObjectBar::bgColor(NULL); ref ObjectButton::font; YColor * ObjectButton::bgColor(NULL); YColor * ObjectButton::fgColor(NULL); ref toolbuttonPixmap; #ifdef CONFIG_GRADIENTS ref toolbuttonPixbuf; #endif ObjectBar::ObjectBar(YWindow *parent): YWindow(parent) { if (bgColor == 0) bgColor = new YColor(clrDefaultTaskBar); setSize(1, 1); } ObjectBar::~ObjectBar() { } void ObjectBar::addButton(const ustring &name, ref icon, YButton *button) { button->setToolTip(name); #ifndef LITE if (icon != null) { button->setIcon(icon, YIcon::smallSize()); button->setSize(button->width() + 4, button->width() + 4); } else #endif button->setText(name); button->setPosition(width(), 0); int h = button->height(); if (h < height()) h = height(); if (h < height()) h = height(); button->setSize(button->width(), h); setSize(width() + button->width(), h); button->show(); objects.append(button); } void ObjectBar::paint(Graphics &g, const YRect &/*r*/) { #ifdef CONFIG_GRADIENTS ref gradient(parent()->getGradient()); if (gradient != null) g.drawImage(gradient, this->x(), this->y(), width(), height(), 0, 0); else #endif if (taskbackPixmap != null) g.fillPixmap(taskbackPixmap, 0, 0, width(), height()); else { g.setColor(bgColor); g.fillRect(0, 0, width(), height()); } } void ObjectBar::addObject(DObject *object) { YButton *button = new ObjectButton(this, object); addButton(object->getName(), object->getIcon(), button); } void ObjectBar::addSeparator() { setSize(width() + 4, height()); objects.append(0); } void ObjectBar::addContainer(const ustring &name, ref icon, ObjectContainer *container) { if (container) { YButton *button = new ObjectButton(this, (ObjectMenu*) container); addButton(name, icon, button); } } void ObjectBar::configure(const YRect &r) { YWindow::configure(r); int left = 0; for (int i = 0; i < objects.getCount(); i++) { YButton *obj = objects[i]; if (obj) { obj->setGeometry(YRect(left, 0, obj->width(), height())); left += obj->width(); } else left += 4; } } ref ObjectButton::getFont() { return font != null ? font : font = (*toolButtonFontName ? YFont::getFont(XFA(toolButtonFontName)) : YButton::getFont()); } YColor * ObjectButton::getColor() { return *clrToolButtonText ? fgColor ? fgColor : fgColor = new YColor(clrToolButtonText) : YButton::getColor(); } YSurface ObjectButton::getSurface() { if (bgColor == 0) bgColor = new YColor(*clrToolButton ? clrToolButton : clrNormalButton); #ifdef CONFIG_GRADIENTS return YSurface(bgColor, toolbuttonPixmap, toolbuttonPixbuf); #else return YSurface(bgColor, toolbuttonPixmap); #endif } void ObjectButton::actionPerformed(YAction * action, unsigned modifiers) { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geLaunchApp); #endif if (fObject) fObject->open(); else YButton::actionPerformed(action, modifiers); } #endif /* CONFIG_TASKBAR */ #ifndef NO_CONFIGURE_MENUS ObjectMenu *rootMenu(NULL); #endif icewm-1.3.7/src/ymenu.h0000644000076600007660000001014611463274240013724 0ustar develdevel#ifndef __YMENU_H #define __YMENU_H #include "ypopup.h" #include "ytimer.h" #include "yarray.h" class YAction; class YActionListener; class YMenuItem; class YMenu: public YPopupWindow, public YTimerListener { public: YMenu(YWindow *parent = 0); virtual ~YMenu(); virtual void sizePopup(int hspace); virtual void activatePopup(int flags); virtual void deactivatePopup(); virtual void donePopup(YPopupWindow *popup); virtual void paint(Graphics &g, const YRect &r); virtual bool handleKey(const XKeyEvent &key); virtual void handleButton(const XButtonEvent &button); virtual void handleMotion(const XMotionEvent &motion); virtual void handleMotionOutside(bool top, const XMotionEvent &motion); virtual bool handleAutoScroll(const XMotionEvent &mouse); void trackMotion(const int x_root, const int y_root, const unsigned state, bool submenu); YMenuItem *add(YMenuItem *item); YMenuItem *addSorted(YMenuItem *item, bool duplicates); YMenuItem *addItem(const ustring &name, int hotCharPos, const ustring ¶m, YAction *action); YMenuItem *addItem(const ustring &name, int hotCharPos, YAction *action, YMenu *submenu); YMenuItem *addSubmenu(const ustring &name, int hotCharPos, YMenu *submenu); YMenuItem *addSeparator(); YMenuItem *addLabel(const ustring &name); void removeAll(); YMenuItem *findAction(const YAction *action); YMenuItem *findSubmenu(const YMenu *sub); YMenuItem *findName(const ustring &name, const int first = 0); int findFirstLetRef(char firstLet, const int first, const int ignCase = 1); void enableCommand(YAction *action); // 0 == All void disableCommand(YAction *action); // 0 == All int itemCount() const { return fItems.getCount(); } YMenuItem *getItem(int n) const { return fItems[n]; } void setItem(int n, YMenuItem *ref) { fItems[n] = ref; return; } bool isShared() const { return fShared; } void setShared(bool shared) { fShared = shared; } void setActionListener(YActionListener *actionListener); YActionListener *getActionListener() const { return fActionListener; } virtual bool handleTimer(YTimer *timer); private: YObjectArray fItems; int selectedItem; int paintedItem; int paramPos; int namePos; YPopupWindow *fPopup; YPopupWindow *fPopupActive; bool fShared; YActionListener *fActionListener; int activatedX, activatedY; int submenuItem; #ifdef CONFIG_GRADIENTS ref fGradient; #endif static YMenu *fPointedMenu; static YTimer *fMenuTimer; int fTimerX, fTimerY; int fTimerSubmenuItem; static int fAutoScrollDeltaX, fAutoScrollDeltaY; static int fAutoScrollMouseX, fAutoScrollMouseY; void getOffsets(int &left, int &top, int &right, int &bottom); void getArea(int &x, int &y, int &w, int &h); void drawBackground(Graphics &g, int x, int y, int w, int h); void drawSeparator(Graphics &g, int x, int y, int w); void drawSubmenuArrow(Graphics &g, YMenuItem *mitem, int left, int top); void paintItem(Graphics &g, const int i, const int l, const int t, const int r, const int minY, const int maxY, bool draw); void repaintItem(int item); void paintItems(); int findItemPos(int item, int &x, int &y, int &h); int findItem(int x, int y); int findActiveItem(int cur, int direction); int findHotItem(char k); void focusItem(int item); void activateSubMenu(int item, bool byMouse); int activateItem(int modifiers, bool byMouse = false); bool isCondCascade(int selectedItem); int onCascadeButton(int selectedItem, int x, int y, bool checkPopup); void autoScroll(int deltaX, int deltaY, int mx, int my, const XMotionEvent *motion); void finishPopup(YMenuItem *item, YAction *action, unsigned int modifiers); void hideSubmenu(); }; extern ref menubackPixmap; extern ref menuselPixmap; extern ref menusepPixmap; #ifdef CONFIG_GRADIENTS //class YPixbuf; extern ref menubackPixbuf; extern ref menuselPixbuf; extern ref menusepPixbuf; #endif #endif icewm-1.3.7/src/mstring.h0000664000076600007660000000612111463274240014252 0ustar develdevel#ifndef __MSTRING_H #define __MSTRING_H #include "base.h" #include "ref.h" #include #pragma interface struct MStringData { int fRefCount; char fStr[]; }; class mstring { private: friend class cstring; MStringData *fStr; int fOffset; int fCount; // mstring(unsigned char *str, int len); void acquire() { ++fStr->fRefCount; // msg("+"); } void release() { // msg("-"); if (--fStr->fRefCount == 0) destroy(); fStr = 0; } void destroy(); mstring(MStringData *fStr, int fOffset, int fCount); void init(const char *str, int len); const char *data() const { return fStr->fStr + fOffset; } public: mstring(const char *str); mstring(const char *str, int len); mstring(int); mstring(const class null_ref &): fStr(0), fOffset(0), fCount(0) {} // mstring(const mstring &r); mstring(const mstring &r): fStr(r.fStr), fOffset(r.fOffset), fCount(r.fCount) { if (fStr) acquire(); } ~mstring(); int length() const { return fCount; } #if 0 const char *c_str() const { if (fStr) return fStr->fStr + fOffset; else return 0; } int c_str_len() const { return fCount; } #endif mstring operator=(const mstring& rv); bool operator==(const class null_ref &) const { return fStr == 0; } bool operator!=(const class null_ref &) const { return fStr != 0; } mstring operator=(const class null_ref &); mstring substring(int pos); mstring substring(int pos, int len); int charAt(int pos) const; int indexOf(char ch) const; bool equals(const mstring &s) const; int compareTo(const mstring &s) const; bool copy(char *dst, size_t len) const; bool startsWith(const mstring &s) const; bool endsWith(const mstring &s) const; bool split(unsigned char token, mstring *left, mstring *remain) const; bool splitall(unsigned char token, mstring *left, mstring *remain) const; mstring join(const mstring &append) const; mstring trim() const; mstring replace(int position, int len, const mstring &insert); mstring remove(int position, int len); mstring insert(int position, const mstring &s); mstring append(const mstring &s); public: #if 0 static mstring fromUTF32(const UChar *str, int len); static mstring fromUTF8(const unsigned char *str, int len); #endif static mstring fromMultiByte(const char *str, int len); static mstring fromMultiByte(const char *str); static mstring newstr(const char *str); static mstring newstr(const char *str, int len); static mstring format(const char *fmt, ...); static mstring join(const char *str, ...); }; typedef class mstring ustring; class cstring { public: cstring(const mstring &str); const char *c_str() const { if (str.fStr) return str.fStr->fStr + str.fOffset; else return ""; } int c_str_len() const { return str.fCount; } private: mstring str; cstring(const cstring &); cstring &operator=(const cstring &); }; #endif icewm-1.3.7/src/ybase.h0000664000076600007660000000014711463274240013674 0ustar develdevel#ifndef __YBASE_H #define __YBASE_H #include "base.h" #define __YIMP_X__ #include #endif icewm-1.3.7/src/icewmhint.cc0000644000076600007660000000414111463274240014712 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek */ #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include #include #ifdef CONFIG_GUIEVENTS #define GUI_EVENT_NAMES #include "guievent.h" #endif #include "intl.h" char *displayName = 0; Display *display = 0; Window root = 0; Atom XA_IcewmWinOptHint; int main(int argc, char **argv) { #ifdef ENABLE_NLS bindtextdomain(PACKAGE, LOCDIR); textdomain(PACKAGE); #endif if (argc < 4) { fputs(_("Usage: icewmhint [class.instance] option arg\n"), stderr); exit(1); } char *clsin = argv[1]; char *option = argv[2]; char *arg = argv[3]; int clsin_len = strlen(clsin) + 1;; int option_len = strlen(option) + 1; int arg_len = strlen(arg) + 1; int hint_len = clsin_len + option_len + arg_len; unsigned char *hint = (unsigned char *)malloc(hint_len); if (hint == 0) { fprintf(stderr, _("Out of memory (len=%d)."), hint_len); fputs("\n", stderr); exit(1); } memcpy(hint, clsin, clsin_len); memcpy(hint + clsin_len, option, option_len); memcpy(hint + clsin_len + option_len, arg, arg_len); if (!(display = XOpenDisplay(displayName))) { fprintf(stderr, _("Can't open display: %s. " "X must be running and $DISPLAY set."), displayName ? displayName : _("")); fputs("\n", stderr); exit(1); } root = RootWindow(display, DefaultScreen(display)); XA_IcewmWinOptHint = XInternAtom(display, "_ICEWM_WINOPTHINT", False); XChangeProperty(display, root, XA_IcewmWinOptHint, XA_IcewmWinOptHint, 8, PropModeAppend, hint, hint_len); XCloseDisplay(display); } icewm-1.3.7/src/debug.h0000644000076600007660000000057411463274240013661 0ustar develdevel#ifndef __DEBUG_H #define __DEBUG_H #ifdef DEBUG extern bool debug; extern bool debug_z; #define DBG if (debug) #define MSG(x) DBG msg x #define PRECONDITION(x) \ if (!(x)) \ do { \ precondition("PRECONDITION FAILED at %s:%d: (" #x ")", __FILE__, __LINE__); \ } while (0) #else #define DBG if (0) #define MSG(x) #define PRECONDITION(x) // nothing #endif #endif icewm-1.3.7/src/yscrollbar.cc0000644000076600007660000005746211463274240015115 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek * * ScrollBar */ #include "config.h" #ifndef LITE #include "ykey.h" #include "yscrollbar.h" #include "yxapp.h" #include "yprefs.h" #include "prefs.h" YColor *scrollBarBg(NULL); static YColor *scrollBarSlider(NULL); static YColor *scrollBarButton(NULL); static YColor *scrollBarActiveArrow(NULL); static YColor *scrollBarInactiveArrow(NULL); static bool didInit = false; YTimer *YScrollBar::fScrollTimer = 0; static void initColors() { if (didInit) return ; scrollBarBg = new YColor(clrScrollBar); scrollBarSlider= new YColor(clrScrollBarSlider); scrollBarButton= new YColor(clrScrollBarButton); scrollBarActiveArrow = new YColor(clrScrollBarArrow); scrollBarInactiveArrow = new YColor(clrScrollBarInactive); didInit = true; } YScrollBar::YScrollBar(YWindow *aParent): YWindow(aParent) { if (!didInit) initColors(); fOrientation = Vertical; fMinimum = fMaximum = fValue = fVisibleAmount = 0; fUnitIncrement = fBlockIncrement = 1; fListener = 0; fScrollTo = goNone; fDNDScroll = false; } YScrollBar::YScrollBar(Orientation anOrientation, YWindow *aParent): YWindow(aParent) { if (!didInit) initColors(); fOrientation = anOrientation; fMinimum = fMaximum = fValue = fVisibleAmount = 0; fUnitIncrement = fBlockIncrement = 1; fListener = 0; fScrollTo = goNone; fDNDScroll = false; } YScrollBar::YScrollBar(Orientation anOrientation, int aValue, int aVisibleAmount, int aMin, int aMax, YWindow *aParent): YWindow(aParent) { if (!didInit) initColors(); fOrientation = anOrientation; fMinimum = aMin; fMaximum = aMax; fVisibleAmount = aVisibleAmount; fValue = aValue; fUnitIncrement = fBlockIncrement = 1; fListener = 0; fScrollTo = goNone; } YScrollBar::~YScrollBar() { if (fScrollTimer && fScrollTimer->getTimerListener() == this) fScrollTimer->setTimerListener(0); } void YScrollBar::setOrientation(Orientation anOrientation) { if (anOrientation != fOrientation) { fOrientation = anOrientation; repaint(); } } void YScrollBar::setMaximum(int aMaximum) { if (aMaximum < fMinimum) aMaximum = fMinimum; if (aMaximum != fMaximum) { fMaximum = aMaximum; repaint(); } } void YScrollBar::setMinimum(int aMinimum) { if (aMinimum > fMaximum) aMinimum = fMaximum; if (aMinimum != fMinimum) { fMinimum = aMinimum; repaint(); } } void YScrollBar::setVisibleAmount(int aVisibleAmount) { if (fVisibleAmount > fMaximum - fMinimum) fVisibleAmount = fMaximum - fMinimum; if (fVisibleAmount < 0) fVisibleAmount = 0; if (aVisibleAmount != fVisibleAmount) { fVisibleAmount = aVisibleAmount; repaint(); } } void YScrollBar::setUnitIncrement(int anUnitIncrement) { fUnitIncrement = anUnitIncrement; } void YScrollBar::setBlockIncrement(int aBlockIncrement) { fBlockIncrement = aBlockIncrement; } void YScrollBar::setValue(int aValue) { if (aValue > fMaximum - fVisibleAmount) aValue = fMaximum - fVisibleAmount; if (aValue < fMinimum) aValue = fMinimum; if (aValue != fValue) { fValue = aValue; repaint(); } } void YScrollBar::setValues(int aValue, int aVisibleAmount, int aMin, int aMax) { int v = aValue; if (aMax < aMin) aMax = aMin; if (aVisibleAmount > aMax - aMin) aVisibleAmount = aMax - aMin; if (aVisibleAmount < 0) aVisibleAmount = 0; if (aValue > aMax - aVisibleAmount) aValue = aMax - aVisibleAmount; if (aValue < aMin) aValue = aMin; if (aMax != fMaximum || aMin != fMinimum || aValue != fValue || aVisibleAmount != fVisibleAmount) { fMinimum = aMin; fMaximum = aMax; fValue = aValue; fVisibleAmount = aVisibleAmount; repaint(); if (v != fValue) fListener->move(this, fValue); } } void YScrollBar::getCoord(int &beg, int &end, int &min, int &max, int &nn) { int dd = (fMaximum - fMinimum); if (fOrientation == Vertical) { beg = scrollBarHeight; end = height() - scrollBarHeight - 1; } else { beg = scrollBarHeight; end = width() - scrollBarHeight - 1; } nn = end - beg; if (dd <= 0) { min = 0; max = nn; return ; } int aa = nn; int vv = aa * fVisibleAmount / dd; if (vv < SCROLLBAR_MIN) { vv = SCROLLBAR_MIN; aa = nn - vv; if (aa < 0) aa = 0; dd -= fVisibleAmount; if (dd <= 0) { min = 0; max = nn; return ; } } if (vv > nn) vv = nn; min = aa * fValue / dd; max = min + vv; } // !!!! TODO: Warp3, Warp4, Motif borders void YScrollBar::paint(Graphics &g, const YRect &/*r*/) { int beg, end, min, max, nn; getCoord(beg, end, min, max, nn); /// !!! optimize this if (fOrientation == Vertical) { // ============================ vertical === const int y(beg + min), h(max - min); g.setColor(scrollBarBg); // -------------------- background, buttons --- switch(wmLook) { case lookWin95: g.fillRect(0, beg, width(), min); g.fillRect(0, y + h + 2, width(), ::max(0, end - h - y - 1)); g.setColor(scrollBarButton); g.drawBorderW(0, 0, width() - 1, beg - 1, fScrollTo != goUp); g.fillRect(1, 1, width() - 3, beg - 3); g.drawBorderW(0, end + 1, width() - 1, beg - 1, fScrollTo != goDown); g.fillRect(1, end + 2, width() - 3, beg - 3); break; case lookWarp3: g.fillRect(0, beg, width(), min); g.fillRect(0, y + h + 2, width(), ::max(0, end - h - y - 1)); g.setColor(scrollBarButton); g.draw3DRect(0, 0, width() - 1, beg - 1, fScrollTo != goUp); g.fillRect(1, 1, width() - 2, beg - 2); g.draw3DRect(0, end + 1, width() - 1, beg - 1, fScrollTo != goDown); g.fillRect(1, end + 2, width() - 2, beg - 2); break; case lookNice: case lookPixmap: case lookWarp4: g.draw3DRect(0, 0, width() - 1, height() - 1, false); g.fillRect(1, beg, width() - 2, min); g.fillRect(1, y + h + 1, width() - 2, ::max(0, end - h - y)); g.setColor(scrollBarButton); g.drawBorderW(1, 1, width() - 3, beg - 2, fScrollTo != goUp); g.fillRect(2, 2, width() - 5, beg - 4); g.drawBorderW(1, end + 1, width() - 3, beg - 2, fScrollTo != goDown); g.fillRect(2, end + 2, width() - 5, beg - 4); break; case lookMotif: g.drawBorderW(0, 0, width() - 1, height() - 1, false); g.fillRect(2, 2, width() - 3, y - 3); g.drawLine(width() - 2, y - 1, width() - 2, y + h + 1); g.fillRect(2, y + h + 2, width() - 3, height() - h - y - 3); break; case lookGtk: g.drawBorderG(0, 0, width() - 1, height() - 1, false); g.fillRect(2, 2, width() - 3, y - 3); g.drawLine(width() - 2, y - 1, width() - 2, y + h + 1); g.fillRect(2, y + h + 2, width() - 3, height() - h - y - 3); break; case lookFlat: case lookMetal: g.fillRect(0, beg, width(), min); g.fillRect(0, y + h + 2, width(), end - h - y - 1); g.setColor(scrollBarButton); g.drawBorderM(0, 0, width() - 1, beg - 1, fScrollTo != goUp); g.fillRect(2, 2, width() - 4, beg - 4); g.drawBorderM(0, end + 1, width() - 1, beg - 1, fScrollTo != goDown); g.fillRect(2, end + 3, width() - 4, beg - 4); break; case lookMAX: break; } // --------------------- upper arrow --- g.setColor(fValue > fMinimum ? scrollBarActiveArrow : scrollBarInactiveArrow); switch(wmLook) { case lookWin95: case lookWarp3: case lookWarp4: g.drawArrow(Up, 3, (beg - width() + 10) / 2, width() - 8, fScrollTo == goUp); break; case lookNice: case lookPixmap: g.drawArrow(Up, 4, (beg - width() + 10) / 2, width() - 10, fScrollTo == goUp); break; case lookMotif: case lookGtk: g.drawArrow(Up, 2, 2, width() - 5, fScrollTo == goUp); break; case lookFlat: case lookMetal: g.drawArrow(Up, 4, (beg - width() + 12) / 2, width() - 8, fScrollTo == goUp); break; case lookMAX: break; } // --------------------- lower arrow --- g.setColor(fValue < fMaximum - fVisibleAmount ? scrollBarActiveArrow : scrollBarInactiveArrow); switch(wmLook) { case lookWin95: case lookWarp3: case lookWarp4: g.drawArrow(Down, 3, end + (beg - width() + 12) / 2, width() - 8, fScrollTo == goDown); break; case lookNice: case lookPixmap: g.drawArrow(Down, 4, end + (beg - width() + 12) / 2, width() - 10, fScrollTo == goDown); break; case lookMotif: case lookGtk: g.drawArrow(Down, 2, end + 2, width() - 5, fScrollTo == goDown); break; case lookFlat: case lookMetal: g.drawArrow(Down, 4, end + (beg - width() + 14) / 2, width() - 8, fScrollTo == goDown); break; case lookMAX: break; } g.setColor(scrollBarSlider); // ----------------------------- slider --- switch(wmLook) { case lookWin95: g.drawBorderW(0, y, width() - 1, h + 1, true); g.fillRect(1, y + 1, width() - 3, h - 1); break; case lookWarp3: g.draw3DRect(0, y, width() - 1, h + 1, true); g.fillRect(1, y + 1, width() - 2, h); break; case lookNice: case lookPixmap: case lookWarp4: g.drawBorderW(1, y, width() - 3, h, true); g.fillRect(2, y + 1, width() - 5, h - 2); g.setColor(scrollBarSlider->darker()); for (int hy = y + h / 2 - 6; hy < (y + h / 2 + 5); hy+= 2) g.drawLine(4, hy, width() - 6, hy); g.setColor(scrollBarSlider->brighter()); for (int hy = y + h / 2 - 5; hy < (y + h / 2 + 6); hy+= 2) g.drawLine(4, hy, width() - 6, hy); break; case lookMotif: g.drawBorderW(2, y - 1, width() - 5, h + 2, true); g.fillRect(3, y, width() - 7, h); break; case lookGtk: g.drawBorderG(2, y - 1, width() - 5, h + 2, true); g.fillRect(3, y, width() - 7, h); break; case lookFlat: case lookMetal: g.drawBorderM(0, y, width() - 1, h + 1, true); g.fillRect(2, y + 2, width() - 4, h - 2); break; case lookMAX: break; } } else { // ================================================= horizontal === const int x(beg + min), w(max - min); g.setColor(scrollBarBg); // -------------------- background, buttons --- switch(wmLook) { case lookWin95: g.fillRect(beg, 0, min, height()); g.fillRect(x + w + 2, 0, ::max(0, end - w - x - 1), height()); g.setColor(scrollBarButton); g.drawBorderW(0, 0, beg - 1, height() - 1, fScrollTo != goUp); g.fillRect(1, 1, beg - 3, height() - 3); g.drawBorderW(end + 1, 0, beg - 1, height() - 1, fScrollTo != goDown); g.fillRect(end + 2, 1, beg - 3, height() - 3); break; case lookWarp3: g.fillRect(beg, 0, min, height()); g.fillRect(x + w + 2, 0, ::max(0, end - w - x - 1), height()); g.setColor(scrollBarButton); g.draw3DRect(0, 0, beg - 1, height() - 1, fScrollTo != goUp); g.fillRect(1, 1, beg - 2, height() - 2); g.draw3DRect(end + 1, 0, beg - 1, height() - 1, fScrollTo != goDown); g.fillRect(end + 2, 1, beg - 2, height() - 2); break; case lookNice: case lookPixmap: case lookWarp4: g.draw3DRect(0, 0, width() - 1, height() - 1, false); g.fillRect(beg, 1, min, height() - 2); g.fillRect(x + w + 2, 1, ::max(0, end - w - x), height() - 2); g.setColor(scrollBarButton); g.drawBorderW(1, 1, beg - 2, height() - 3, fScrollTo != goUp); g.fillRect(2, 2, beg - 4, height() - 5); g.drawBorderW(end + 1, 1, beg - 2, height() - 3, fScrollTo != goDown); g.fillRect(end + 2, 2, beg - 4, height() - 5); break; case lookMotif: g.drawBorderW(0, 0, width() - 1, height() - 1, false); g.fillRect(2, 2, x - 3, height() - 3); g.drawLine(x - 1, height() - 2, x + w + 1, height() - 2); g.fillRect(x + w + 2, 2, width() - w - x - 3, height() - 3); break; case lookGtk: g.drawBorderG(0, 0, width() - 1, height() - 1, false); g.fillRect(2, 2, x - 3, height() - 3); g.drawLine(x - 1, height() - 2, x + w + 1, height() - 2); g.fillRect(x + w + 2, 2, width() - w - x - 3, height() - 3); break; case lookFlat: case lookMetal: g.fillRect(beg, 0, min, height()); g.fillRect(x + w + 2, 0, end - w - x - 1, height()); g.setColor(scrollBarButton); g.drawBorderM(0, 0, beg - 1, height() - 1, fScrollTo != goUp); g.fillRect(2, 2, beg - 4, height() - 4); g.drawBorderM(end + 1, 0, beg - 1, height() - 1, fScrollTo != goDown); g.fillRect(end + 3, 2, beg - 4, height() - 4); break; case lookMAX: break; } // ---------------------- left arrow --- g.setColor(fValue > fMinimum ? scrollBarActiveArrow : scrollBarInactiveArrow); switch(wmLook) { case lookWin95: case lookWarp3: case lookWarp4: g.drawArrow(Left, (beg - height() + 10) / 2, 3, height() - 8, fScrollTo == goUp); break; case lookNice: case lookPixmap: g.drawArrow(Left, (beg - height() + 10) / 2, 4, height() - 10, fScrollTo == goUp); break; case lookMotif: case lookGtk: g.drawArrow(Left, 2, 2, height() - 5, fScrollTo == goUp); break; case lookFlat: case lookMetal: g.drawArrow(Left, (beg - height() + 12) / 2, 4, height() - 8, fScrollTo == goUp); break; case lookMAX: break; } // --------------------- right arrow --- g.setColor(fValue < fMaximum - fVisibleAmount ? scrollBarActiveArrow : scrollBarInactiveArrow); switch(wmLook) { case lookWin95: case lookWarp3: case lookWarp4: g.drawArrow(Right, end + (beg - height() + 12) / 2, 3, height() - 8, fScrollTo == goDown); break; case lookNice: case lookPixmap: g.drawArrow(Right, end + (beg - height() + 12) / 2, 4, height() - 10, fScrollTo == goDown); break; case lookMotif: case lookGtk: g.drawArrow(Right, end + 2, 2, height() - 5, fScrollTo == goDown); break; case lookFlat: case lookMetal: g.drawArrow(Right, end + (beg - height() + 14) / 2, 4, height() - 8, fScrollTo == goDown); break; case lookMAX: break; } g.setColor(scrollBarSlider); // ----------------------------- slider --- switch(wmLook) { case lookWin95: g.drawBorderW(x, 0, w + 1, height() - 1, true); g.fillRect(x + 1, 1, w - 1, height() - 3); break; case lookWarp3: g.draw3DRect(x, 0, w + 1, height() - 1, true); g.fillRect(x + 1, 1, w, height() - 2); break; case lookNice: case lookPixmap: case lookWarp4: g.drawBorderW(x, 1, w + 1, height() - 3, true); g.fillRect(x + 1, 2, w - 1, height() - 5); g.setColor(scrollBarSlider->darker()); for (int hx = x + w / 2 - 6; hx < (x + w / 2 + 5); hx+= 2) g.drawLine(hx, 4, hx, height() - 6); g.setColor(scrollBarSlider->brighter()); for (int hx = x + w / 2 - 5; hx < (x + w / 2 + 6); hx+= 2) g.drawLine(hx, 4, hx, height() - 6); break; case lookMotif: g.drawBorderW(x - 1, 2, w + 3, height() - 5, true); g.fillRect(x, 3, w + 1, height() - 7); break; case lookGtk: g.drawBorderG(x - 1, 2, w + 3, height() - 5, true); g.fillRect(x, 3, w + 1, height() - 7); break; case lookFlat: case lookMetal: g.drawBorderM(x, 0, w + 1, height() - 1, true); g.fillRect(x + 2, 2, w - 2, height() - 4); break; case lookMAX: break; } } } void YScrollBar::scroll(int delta) { int fNewPos = fValue; if (delta == 0) return ; fNewPos += delta; if (fNewPos >= fMaximum - fVisibleAmount) fNewPos = fMaximum - fVisibleAmount; if (fNewPos < fMinimum) fNewPos = fMinimum; if (fNewPos != fValue) { delta = fNewPos - fValue; fValue = fNewPos; repaint(); fListener->scroll(this, delta); } } void YScrollBar::move(int pos) { int fNewPos = pos; if (fNewPos >= fMaximum - fVisibleAmount) fNewPos = fMaximum - fVisibleAmount; if (fNewPos < fMinimum) fNewPos = fMinimum; if (fValue != fNewPos) { fValue = fNewPos; repaint(); fListener->move(this, fValue); } } void YScrollBar::handleButton(const XButtonEvent &button) { if (handleScrollMouse(button) == true) return ; if (button.button != Button1) return ; if (fMinimum >= fMaximum) return ; if (button.type == ButtonPress) { fScrollTo = getOp(button.x, button.y); doScroll(); if (fScrollTimer == 0) fScrollTimer = new YTimer(scrollBarStartDelay); if (fScrollTimer) { fScrollTimer->setInterval(scrollBarStartDelay); fScrollTimer->setTimerListener(this); fScrollTimer->startTimer(); } repaint(); } else if (button.type == ButtonRelease) { fScrollTo = goNone; if (fScrollTimer && fScrollTimer->getTimerListener() == this) { fScrollTimer->setTimerListener(0); fScrollTimer->stopTimer(); } repaint(); } } void YScrollBar::handleMotion(const XMotionEvent &motion) { if (BUTTON_MASK(motion.state) != Button1Mask) return; if (fOrientation == Vertical) { int h = height() - 2 * width(); if (h <= 0 || fMinimum >= fMaximum) return ; int min, max; min = h * fValue / (fMaximum - fMinimum); max = h * (fValue + fVisibleAmount) / (fMaximum - fMinimum); if (fScrollTo == goPosition) { int y = motion.y - fGrabDelta - width(); if (y < 0) y = 0; int pos = y * (fMaximum - fMinimum) / h; move(pos); } } else { int w = width() - 2 * height(); if (w <= 0 || fMinimum >= fMaximum) return ; int min, max; min = w * fValue / (fMaximum - fMinimum); max = w * (fValue + fVisibleAmount) / (fMaximum - fMinimum); if (fScrollTo == goPosition) { int x = motion.x - fGrabDelta - height(); if (x < 0) x = 0; int pos = x * (fMaximum - fMinimum) / w; move(pos); } } } bool YScrollBar::handleScrollKeys(const XKeyEvent &key) { if (key.type == KeyPress) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); int m = KEY_MODMASK(key.state); switch (k) { case XK_Prior: if (m & ControlMask) move(0); else scroll(-fBlockIncrement); return true; case XK_Next: if (m & ControlMask) move(fMaximum - fVisibleAmount); else scroll(+fBlockIncrement); return true; } } return false; } bool YScrollBar::handleScrollMouse(const XButtonEvent &button) { if (button.type == ButtonPress) { if (button.button == Button4) { scroll(-fBlockIncrement); return true; } else if (button.button == Button5) { scroll(+fBlockIncrement); return true; } } return false; } void YScrollBar::doScroll() { switch (fScrollTo) { case goNone: break; case goUp: scroll(-fUnitIncrement); break; case goDown: scroll(+fUnitIncrement); break; case goPageUp: scroll(-fBlockIncrement); break; case goPageDown: scroll(+fBlockIncrement); break; case goPosition: break; } } bool YScrollBar::handleTimer(YTimer *timer) { if (timer != fScrollTimer) return false; doScroll(); if (!fDNDScroll || (fScrollTo != goPageUp && fScrollTo != goPageDown)) timer->setInterval(scrollBarDelay); return true; } YScrollBar::ScrollOp YScrollBar::getOp(int x, int y) { int beg, end, min, max, nn; ScrollOp fScrollTo; getCoord(beg, end, min, max, nn); fScrollTo = goNone; if (fOrientation == Vertical) { if (y > end) { if (fValue < fMaximum - fVisibleAmount) fScrollTo = goDown; } else if (y < beg) { if (fValue > 0) fScrollTo = goUp; } else { if (y < beg + min) { fScrollTo = goPageUp; } else if (y > beg + max) { fScrollTo = goPageDown; } else { fScrollTo = goPosition; fGrabDelta = y - min - beg; } } } else { if (x > end) { if (fValue < fMaximum - fVisibleAmount) fScrollTo = goDown; } else if (x < beg) { if (fValue > 0) fScrollTo = goUp; } else { if (x < beg + min) { fScrollTo = goPageUp; } else if (x > beg + max) { fScrollTo = goPageDown; } else { fScrollTo = goPosition; fGrabDelta = x - min - beg; } } } return fScrollTo; } void YScrollBar::handleDNDEnter() { fScrollTo = goNone; fDNDScroll = true; if (fScrollTimer && fScrollTimer->getTimerListener() == this) { fScrollTimer->setTimerListener(0); fScrollTimer->stopTimer(); } } void YScrollBar::handleDNDLeave() { fScrollTo = goNone; fDNDScroll = false; repaint(); if (fScrollTimer && fScrollTimer->getTimerListener() == this) { fScrollTimer->setTimerListener(0); fScrollTimer->stopTimer(); } } void YScrollBar::handleDNDPosition(int x, int y) { fScrollTo = getOp(x, y); if (fScrollTimer == 0) fScrollTimer = new YTimer(scrollBarStartDelay); if (fScrollTimer) { fScrollTimer->setInterval(scrollBarStartDelay); fScrollTimer->setTimerListener(this); fScrollTimer->startTimer(); } repaint(); } #endif icewm-1.3.7/src/icerun.cc0000644000076600007660000000424711463274240014217 0ustar develdevel#include "config.h" #include "yxapp.h" #include "yinputline.h" #include "ylabel.h" #include "ybutton.h" #include "prefs.h" #include "ylocale.h" #include "intl.h" const char *ApplicationName = "icerun"; int main(int argc, char **argv) { YLocale locale; #ifdef ENABLE_NLS bindtextdomain(PACKAGE, LOCDIR); textdomain(PACKAGE); #endif YXApplication app(&argc, &argv); YInputLine *input = new YInputLine(); input->setSize(100, 20); input->setText(terminalCommand); input->show(); #if 0 //YLabel *label = new YLabel("this is a string\na second line\n\nlast after empty"); //label->show(); { YButton *a = new YButton(0); a->setText("A"); a->setSize(800, 600); YButton *b = new YButton(a); b->setText("B"); b->setGeometry(50, 50, 150, 150); b->show(); YButton *c = new YButton(a); c->setText("C"); c->setGeometry(50, 300, 150, 150); c->show(); YButton *d = new YButton(c); d->setText("D"); d->setGeometry(50, 50, 50, 50); d->show(); YButton *dd = new YButton(d); dd->setText("D"); dd->setGeometry(20, 20, 20, 20); dd->show(); YButton *e = new YButton(a); e->setText("C"); e->setGeometry(300, 300, 250, 150); e->show(); YButton *f = new YButton(e); f->setText("D"); f->setGeometry(50, 50, 50, 50); f->show(); YButton *g = new YButton(e); g->setText("D"); g->setGeometry(120, 50, 50, 50); g->show(); a->show(); a->setToplevel(true); } { YButton *a = new YButton(0); a->setText("A"); a->setSize(700, 700); YButton *c = new YButton(a); c->setText("C"); c->setGeometry(50, 50, 250, 250); c->show(); YButton *d = new YButton(c); d->setText("D"); d->setGeometry(5, 5, 100, 100); d->show(); YButton *dd = new YButton(d); dd->setText("E"); dd->setGeometry(10, 10, 20, 20); dd->show(); a->show(); a->setToplevel(true); } #endif return app.mainLoop(); } icewm-1.3.7/src/yactionbutton.h0000664000076600007660000000035311463274240015472 0ustar develdevel#ifndef __YACTIONBUTTON_H #define __YACTIONBUTTON_H #include "ybutton.h" #include "yaction.h" class YActionButton: public YButton, public YAction { public: YActionButton(YWindow *parent): YButton(parent, this) { } }; #endif icewm-1.3.7/src/aapm.cc0000644000076600007660000011013011463274240013635 0ustar develdevel/* * IceWM * * Copyright (C) 1999 Andreas Hinz * * Mostly derrived from aclock.cc and aclock.h by Marko Macek * * Apm status */ #define NEED_TIME_H #include "config.h" #include "aapm.h" #ifdef CONFIG_APPLET_APM #include "ylib.h" #include "sysdep.h" #include "aclock.h" #include "yapp.h" #include "prefs.h" #include "intl.h" #include #include #include #ifdef __FreeBSD__ #include #include #include #ifdef i386 #include #endif #include #include #endif #ifdef __NetBSD__ #include #include #include #include #endif YColor *YApm::apmBg = 0; YColor *YApm::apmFg = 0; ref YApm::apmFont; YColor *YApm::apmColorOnLine = 0; YColor *YApm::apmColorBattery = 0; YColor *YApm::apmColorGraphBg = 0; extern ref taskbackPixmap; static YColor *taskBarBg = 0; #define AC_UNKNOWN 0 #define AC_ONLINE 1 #define AC_OFFLINE 2 #define BAT_ABSENT 0 #define BAT_PRESENT 1 #define BAT_UNKNOWN 0 #define BAT_CHARGING 1 #define BAT_DISCHARGING 2 #define BAT_FULL 3 void YApm::ApmStr(char *s, bool Tool) { #if defined(__FreeBSD__) && defined(i386) struct apm_info ai; #elif defined __NetBSD__ struct apm_power_info ai; #else char buf[80]; #endif int len, i, fd = open(APMDEV, O_RDONLY); char driver[16]; char apmver[16]; int apmflags; int ACstatus=0; int BATstatus=0; int BATflag=0; int BATlife=1; int BATtime; char units[16]; if (fd == -1) { static int error = 0; if (!error) perror("Can't open the apm device"); error = 1; return ; } #if defined(__FreeBSD__) && defined(i386) if (ioctl(fd,APMIO_GETINFO, &ai) == -1) { static int error = 0; if (!error) perror("Can't ioctl the apm device"); error = 1; close(fd); return; } close(fd); sprintf(apmver, "%u.%u", ai.ai_major, ai.ai_minor); ACstatus = ai.ai_acline; BATflag = ai.ai_batt_stat == 3 ? 8 : 0; BATlife = ai.ai_batt_life; BATtime = ai.ai_batt_time == 0 ? -1 : ai.ai_batt_time; strcpy(units, "sec"); #elif defined __NetBSD__ memset(&ai, 0, sizeof(ai)); if (ioctl(fd, APM_IOC_GETPOWER, &ai) == -1) { perror("Cannot ioctl the apm device"); close(fd); return; } close(fd); strcpy(apmver, "?.?"); ACstatus = (ai.ac_state == APM_AC_ON) ? 1 : 0; BATflag = (ai.battery_state == APM_BATT_CHARGING) ? 8 : 0; BATlife = ai.battery_life; BATtime = (ai.minutes_left == 0) ? -1 : ai.minutes_left; strcpy(units, "min"); #else len = read(fd, buf, sizeof(buf) - 1); close(fd); buf[len] = 0; // hatred: for ApmGraph acIsOnLine = (ACstatus == 0x1); chargeStatus = 0; if ((i = sscanf(buf, "%s %s 0x%x 0x%x 0x%x 0x%x %d%% %d %s", driver, apmver, &apmflags, &ACstatus, &BATstatus, &BATflag, &BATlife, &BATtime, units)) != 9) { static int error = 1; if (error) { error = 0; warn("%s - unknown format (%d)", APMDEV, i); } return ; } #endif if (BATlife == -1) BATlife = 0; if (strcmp(units, "min") != 0 && BATtime != -1) BATtime /= 60; chargeStatus = BATlife; if (!Tool) { if (taskBarShowApmTime) { // mschy if (BATtime == -1) { // -1 indicates that apm-bios can't // calculate time for akku // no wonder -> we're plugged! sprintf(s, "%3d%%", BATlife); } else { sprintf(s, "%d:%02d", BATtime/60, (BATtime)%60); } } else sprintf(s, "%3d%%", BATlife); #if 0 while ((i < 3) && (buf[28 + i] != '%')) i++; for (len = 2; i; i--, len--) { *(s + len) = buf[28 + i - 1]; } #endif } else { sprintf(s, "%d%%", BATlife); } if (ACstatus == 0x1) { if (Tool) strcat(s, _(" - Power")); else strcat(s, _("P")); } if ((BATflag & 8)) { if (Tool) strcat(s, _(" - Charging")); else strcat(s, _("C")); } } int ignore_directory_entry(struct dirent *de) { return !strcmp(de->d_name, ".") || \ !strcmp(de->d_name, ".."); } void strcat3(char* dest, const char* src1, const char* src2, const char* src3, size_t n) { if (!dest) return; int len = n; *dest = '\0'; len -= 1; if (len < 0) return; strncat(dest, src1, len); len -= strlen(src1); if (len < 0) return; strncat(dest, src2, len); len -= strlen(src2); if (len < 0) return; strncat(dest, src3, len); } int YApm::ignore_directory_bat_entry(struct dirent *de) { return ignore_directory_entry(de) || \ strstr("AC", de->d_name) || \ (acpiIgnoreBatteries && strstr(acpiIgnoreBatteries, de->d_name)); } int YApm::ignore_directory_ac_entry(struct dirent *de) { return ignore_directory_entry(de) || \ strstr("BAT", de->d_name) || \ (acpiIgnoreBatteries && strstr(acpiIgnoreBatteries, de->d_name)); } void YApm::AcpiStr(char *s, bool Tool) { char buf[80], buf2[80], bat_info[250]; FILE *fd; //name of the battery char *BATname; //battery is present or absent int BATpresent; //battery status charging/discharging/unknown int BATstatus; //maximal battery capacity (mWh) int BATcapacity_full; //design capacity (mAh) int BATcapacity_design; //current battery capacity (mWh) int BATcapacity_remain; //how much energy is used atm (mW) int BATrate; //time until the battery is discharged (min) int BATtime_remain; //status of ac-adapter online/offline int ACstatus; int i; *s='\0'; //assign some default values, in case //the file in /proc/acpi will contain unexpected values ACstatus = -1; #ifndef __FreeBSD__ if (acpiACName && acpiACName[0] != 0) { strcat3(buf, "/proc/acpi/ac_adapter/", acpiACName, "/state", sizeof(buf)); fd = fopen(buf, "r"); if (fd == NULL) { //try older /proc/acpi format strcat3(buf, "/proc/acpi/ac_adapter/", acpiACName, "/status", sizeof(buf)); fd = fopen(buf, "r"); } if (fd != NULL) { while (fgets(buf, sizeof(buf), fd)) { if ((strncasecmp(buf, "state:", 6) == 0 && sscanf(buf + 6, "%s", buf2) > 0) || //older /proc/acpi format (strncasecmp(buf, "Status:", 7) == 0 && sscanf(buf + 7, "%s", buf2) > 0)) { if (strncasecmp(buf2, "on-line", 7) == 0) { ACstatus = AC_ONLINE; } else if (strncasecmp(buf2, "off-line", 8) == 0) { ACstatus = AC_OFFLINE; } else { ACstatus = AC_UNKNOWN; } } } fclose(fd); } } #else len = sizeof(i); if (sysctlbyname("hw.acpi.acline", &i, &len, NULL, 0) >= 0) { if (i == 1) ACstatus = AC_ONLINE; else if (i = 0) ACstatus = AC_OFFLINE; else ACstatus = AC_UNKNOWN; } #endif // hatred: for ApmGraph acIsOnLine = (ACstatus == AC_ONLINE); chargeStatus = 0; int batCount = 0; int n = 0; for (i = 0; i < batteryNum; i++) { BATname = acpiBatteries[i]->name; //assign some default values, in case //the files in /proc/acpi will contain unexpected values BATpresent = -1; BATstatus = -1; BATcapacity_full = -1; BATcapacity_design = -1; BATcapacity_remain = -1; BATrate = -1; BATtime_remain = -1; #ifndef __FreeBSD__ strcat3(buf, "/proc/acpi/battery/", BATname, "/state", sizeof(buf)); fd = fopen(buf, "r"); if (fd == NULL) { //try older /proc/acpi format strcat3(buf, "/proc/acpi/battery/", BATname, "/status", sizeof(buf)); fd = fopen(buf, "r"); } if (fd != NULL) { while (fgets(buf, sizeof(buf), fd)) { if ((strncasecmp(buf, "charging state:", 15) == 0 && sscanf(buf + 15, "%s", buf2) > 0) || //older /proc/acpi format (strncasecmp(buf, "State:", 6) == 0 && sscanf(buf + 6, "%s", buf2) > 0)) { if (strncasecmp(buf2, "charging", 8) == 0) { BATstatus = BAT_CHARGING; } else if (strncasecmp(buf2, "discharging", 11) == 0) { BATstatus = BAT_DISCHARGING; } else { BATstatus = BAT_UNKNOWN; } } else if (strncasecmp(buf,"present rate:", 13) == 0) { //may contain non-numeric value if (sscanf(buf+13,"%d", &BATrate) <= 0) { BATrate = -1; } } else if (strncasecmp(buf,"remaining capacity:", 19) == 0) { //may contain non-numeric value if (sscanf(buf+19,"%d", &BATcapacity_remain) <= 0) { BATcapacity_remain = -1; } } else if (strncasecmp(buf, "present:", 8) == 0) { sscanf(buf + 8, "%s", buf2); if (strncasecmp(buf2, "yes", 3) == 0) { BATpresent = BAT_PRESENT; } else { BATpresent = BAT_ABSENT; } } } fclose(fd); } #else int acpifd; #define ACPIDEV "/dev/acpi" acpifd = open(ACPIDEV, O_RDONLY); if (acpifd != -1) { union acpi_battery_ioctl_arg battio; battio.unit = i; if (ioctl(acpifd, ACPIIO_BATT_GET_BATTINFO, &battio) != -1) { if (battio.battinfo.state != ACPI_BATT_STAT_NOT_PRESENT) { BATpresent = BAT_PRESENT; if (battio.battinfo.state == 0) BATstatus = BAT_FULL; else if (battio.battinfo.state & ACPI_BATT_STAT_CHARGING) BATstatus = BAT_CHARGING; else if (battio.battinfo.state & ACPI_BATT_STAT_DISCHARG) BATstatus = BAT_DISCHARGING; else BATstatus = BAT_UNKNOWN; if (battio.battinfo.cap != -1 && acpiBatteries[i]->capacity_full != -1) BATcapacity_remain = acpiBatteries[i]->capacity_full * battio.battinfo.cap / 100; if (battio.battinfo.min != -1) BATtime_remain = battio.battinfo.min; if (battio.battinfo.rate != -1) BATrate = battio.battinfo.rate; } else BATpresent = BAT_ABSENT; } } #endif if (BATpresent == BAT_PRESENT) { //battery is present now if (acpiBatteries[i]->present == BAT_ABSENT) { //and previously was absent //read full-capacity value #ifndef __FreeBSD__ strcat3(buf, "/proc/acpi/battery/", BATname, "/info", sizeof(buf)); fd = fopen(buf, "r"); if (fd != NULL) { while (fgets(buf, sizeof(buf), fd)) { if (strncasecmp(buf, "design capacity:", 16) == 0) { //may contain non-numeric value if (sscanf(buf, "%*[^0-9]%d", &BATcapacity_design)<=0) { BATcapacity_design = -1; } } if (strncasecmp(buf, "last full capacity:", 19) == 0) { //may contain non-numeric value if (sscanf(buf, "%*[^0-9]%d", &BATcapacity_full)<=0) { BATcapacity_full = -1; } } } fclose(fd); if (BATcapacity_remain > BATcapacity_full && BATcapacity_design > 0) BATcapacity_full = BATcapacity_design; } #else union acpi_battery_ioctl_arg battio; #define UNKNOWN_CAP 0xffffffff #define UNKNOWN_VOLTAGE 0xffffffff battio.unit = i; if (ioctl(acpifd, ACPIIO_BATT_GET_BIF, &battio) != -1) { if (battio.bif.dcap != UNKNOWN_CAP) BATcapacity_design = battio.bif.dcap; if (battio.bif.lfcap != UNKNOWN_CAP) BATcapacity_full = battio.bif.lfcap; if (BATcapacity_remain > BATcapacity_full && BATcapacity_design > 0) BATcapacity_full = BATcapacity_design; } #endif acpiBatteries[i]->capacity_full = BATcapacity_full; } else { BATcapacity_full = acpiBatteries[i]->capacity_full; } } acpiBatteries[i]->present = BATpresent; #ifdef __FreeBSD__ close(acpifd); #endif // hatred: for ApmGraph if (BATpresent == BAT_PRESENT && //did we parse the needed values successfully? BATcapacity_remain >= 0 && BATcapacity_full >= 0) { chargeStatus += 100 * (double)BATcapacity_remain / BATcapacity_full; batCount++; } bat_info[0] = 0; if (!Tool && taskBarShowApmTime && BATpresent == BAT_PRESENT && //bios calculates remaining time, only while discharging BATstatus == BAT_DISCHARGING && //did we parse the needed values successfully? BATcapacity_full >= 0 && BATcapacity_remain >= 0 && BATrate > 0) { if (BATtime_remain == -1) BATtime_remain = (int) (60 * (double)(BATcapacity_remain) / BATrate); sprintf(bat_info, "%d:%02d", BATtime_remain / 60, BATtime_remain % 60); } else if (BATpresent == BAT_PRESENT && //did we parse the needed values successfully? BATcapacity_remain >= 0 && BATcapacity_full >= 0) { sprintf(bat_info, "%3.0f%%", 100 * (double)BATcapacity_remain / BATcapacity_full); } if (BATstatus == BAT_CHARGING) { if (Tool) strcat(bat_info, _(" - Charging")); else strcat(bat_info, _("C")); } else if (BATstatus == BAT_FULL && Tool) strcat(bat_info, _(" - Full")); if (Tool && BATrate > 0) { sprintf(buf, " %d", BATrate); strcat(bat_info, buf); } if ((n > 0) && (*bat_info)) { if (Tool) strcat(s, " / "); else strcat(s, "/"); } n++; strcat(s, bat_info); } // hatred: for ApmGraph chargeStatus /= batCount; if (ACstatus == AC_ONLINE) { if (Tool) strcat(s,_(" - Power")); else { /// if (!prettyClock) strcat(s, " "); strcat(s,_("P")); } } } void YApm::SysStr(char *s, bool Tool) { char buf[80], bat_info[250]; FILE *fd; //name of the battery char *BATname; //battery is present or absent int BATpresent; //battery status charging/discharging/unknown int BATstatus; //maximal battery capacity (mWh) int BATcapacity_full; //design capacity (mAh) int BATcapacity_design; //current battery capacity (mWh) int BATcapacity_remain; //how much energy is used atm (mW) int BATrate; //time until the battery is discharged (min) int BATtime_remain; //status of ac-adapter online/offline int ACstatus; int i; *s='\0'; //assign some default values, in case //the file in /sys/class/power_supply will contain unexpected values ACstatus = -1; if (acpiACName && acpiACName[0] != 0) { strcat3(buf, "/sys/class/power_supply/", acpiACName, "/online", sizeof(buf)); fd = fopen(buf, "r"); if (fd != NULL) { while (fgets(buf, sizeof(buf), fd)) { if (strncmp(buf, "1", 1) == 0) { ACstatus = AC_ONLINE; } else if (strncmp(buf, "0", 1) == 0) { ACstatus = AC_OFFLINE; } else { ACstatus = AC_UNKNOWN; } } fclose(fd); } } // hatred: for ApmGraph acIsOnLine = (ACstatus == AC_ONLINE); chargeStatus = 0; int batCount = 0; int n = 0; for (i = 0; i < batteryNum; i++) { BATname = acpiBatteries[i]->name; //assign some default values, in case //the files in /sys/class/power_supply will contain unexpected values BATpresent = -1; BATstatus = -1; BATcapacity_full = -1; BATcapacity_design = -1; BATcapacity_remain = -1; BATrate = -1; BATtime_remain = -1; strcat3(buf, "/sys/class/power_supply/", BATname, "/status", sizeof(buf)); fd = fopen(buf, "r"); if (fd != NULL && fgets(buf, sizeof(buf), fd)) { if (strncasecmp(buf, "charging", 8) == 0) { BATstatus = BAT_CHARGING; } else if (strncasecmp(buf, "discharging", 11) == 0) { BATstatus = BAT_DISCHARGING; } else if (strncasecmp(buf, "full", 4) == 0) { BATstatus = BAT_FULL; } else { BATstatus = BAT_UNKNOWN; } fclose(fd); } strcat3(buf, "/sys/class/power_supply/", BATname, "/current_now", sizeof(buf)); fd = fopen(buf, "r"); if (fd != NULL && fgets(buf, sizeof(buf), fd)) { //In case it contains non-numeric value if (sscanf(buf,"%d", &BATrate) <= 0) { BATrate = -1; } fclose(fd); } strcat3(buf, "/sys/class/power_supply/", BATname, "/energy_now", sizeof(buf)); fd = fopen(buf, "r"); if (fd == NULL) { strcat3(buf, "/sys/class/power_supply/", BATname, "/charge_now", sizeof(buf)); fd = fopen(buf, "r"); } if (fd != NULL && fgets(buf, sizeof(buf), fd)) { //In case it contains non-numeric value if (sscanf(buf,"%d", &BATcapacity_remain) <= 0) { BATcapacity_remain = -1; } fclose(fd); } strcat3(buf, "/sys/class/power_supply/", BATname, "/present", sizeof(buf)); fd = fopen(buf, "r"); if (fd != NULL && fgets(buf, sizeof(buf), fd)) { if (strncmp(buf, "1", 1) == 0) { BATpresent = BAT_PRESENT; } else { BATpresent = BAT_ABSENT; } fclose(fd); } if (BATpresent == BAT_PRESENT) { //battery is present now if (acpiBatteries[i]->present == BAT_ABSENT) { //and previously was absent //read full-capacity value strcat3(buf, "/sys/class/power_supply/", BATname, "/energy_full_design", sizeof(buf)); fd = fopen(buf, "r"); if (fd == NULL) { strcat3(buf, "/sys/class/power_supply/", BATname, "/charge_full_design", sizeof(buf)); fd = fopen(buf, "r"); } if (fd != NULL) { if (fgets(buf, sizeof(buf), fd)) { //in case it contains non-numeric value if (sscanf(buf, "%d", &BATcapacity_design)<=0) { BATcapacity_design = -1; } } fclose(fd); } strcat3(buf, "/sys/class/power_supply/", BATname, "/energy_full", sizeof(buf)); fd = fopen(buf, "r"); if (fd == NULL) { strcat3(buf, "/sys/class/power_supply/", BATname, "/charge_full", sizeof(buf)); fd = fopen(buf, "r"); } if (fd != NULL) { if (fgets(buf, sizeof(buf), fd)) { //in case it contains non-numeric value if (sscanf(buf, "%d", &BATcapacity_full)<=0) { BATcapacity_full = -1; } } fclose(fd); } if (BATcapacity_remain > BATcapacity_full && BATcapacity_design > 0) BATcapacity_full = BATcapacity_design; acpiBatteries[i]->capacity_full = BATcapacity_full; } else { BATcapacity_full = acpiBatteries[i]->capacity_full; } } acpiBatteries[i]->present = BATpresent; // hatred: for ApmGraph if (BATpresent == BAT_PRESENT && //did we parse the needed values successfully? BATcapacity_remain >= 0 && BATcapacity_full >= 0) { chargeStatus += 100 * (double)BATcapacity_remain / BATcapacity_full; batCount++; } if (!Tool && taskBarShowApmTime && BATpresent == BAT_PRESENT && //bios calculates remaining time, only while discharging BATstatus == BAT_DISCHARGING && //did we parse the needed values successfully? BATcapacity_full >= 0 && BATcapacity_remain >= 0 && BATrate > 0) { BATtime_remain = (int) (60 * (double)(BATcapacity_remain) / BATrate); sprintf(bat_info, "%d:%02d", BATtime_remain / 60, BATtime_remain % 60); } else if (BATpresent == BAT_PRESENT && //did we parse the needed values successfully? BATcapacity_remain >= 0 && BATcapacity_full >= 0) { sprintf(bat_info, "%3.0f%%", 100 * (double)BATcapacity_remain / BATcapacity_full); } else { //battery is absent or we didn't parse some needed values bat_info[0] = 0; } if (BATstatus == BAT_CHARGING) { if (Tool) strcat(bat_info, _(" - Charging")); else strcat(bat_info, _("C")); } if ((n > 0) && (*bat_info)) { if (Tool) strcat(s, " / "); else strcat(s, "/"); } n++; strcat(s, bat_info); } // hatred: for ApmGraph chargeStatus /= batCount; if (ACstatus == AC_ONLINE) { if (Tool) strcat(s,_(" - Power")); else { /// if (!prettyClock) strcat(s, " "); strcat(s,_("P")); } } } void YApm::PmuStr(char *s, const bool tool_tip) { FILE *fd = fopen("/proc/pmu/info", "r"); if (fd == NULL) { strcpy(s, "Err"); // this is somewhat difficult, because pmu support seams to be gone return; } char line[80]; int power_present; while ( fgets(line, 80, fd) != NULL ) if (strncmp("AC Power", line, strlen("AC Power")) == 0) { sscanf(strchr(line, ':')+2, "%d", &power_present); break; } fclose(fd); // hatred: for ApmGraph acIsOnLine = (power_present != 0); chargeStatus = 0; int batCount = 0; char* s_end = s; for (int i=0; i < batteryNum; ++i) { char file_name[20]; snprintf(file_name, 20, "/proc/pmu/battery_%d", i); fd = fopen(file_name, "r"); if (fd == NULL) { strcpy(s_end, "Err"); s_end += 3; continue; } int flags=0, rem_time=-1, charge=0, max_charge=0, voltage=0; while ( fgets(line, 80, fd) != NULL ) if (strncmp("flags", line, strlen("flags")) == 0) sscanf(strchr(line, ':')+2, "%x", &flags); else if (strncmp("time rem.", line, strlen("time rem.")) == 0) sscanf(strchr(line, ':')+2, "%d", &rem_time); else if (strncmp("charge", line, strlen("charge")) == 0) sscanf(strchr(line, ':')+2, "%d", &charge); else if (strncmp("max_charge", line, strlen("max_charge")) == 0) sscanf(strchr(line, ':')+2, "%d", &max_charge); else if (strncmp("voltage", line, strlen("voltage")) == 0) sscanf(strchr(line, ':')+2, "%d", &voltage); fclose(fd); const bool battery_present = flags & 0x1, battery_charging = (flags & 0x2), battery_full = !battery_charging && power_present, time_in_min= rem_time>600; if (time_in_min) rem_time /= 60; // hatred: for ApmGraph if (battery_present && //did we parse the needed values successfully? charge >= 0 && max_charge >= 0) { chargeStatus += 100.0 * (double)charge / (double)max_charge; batCount++; } if (tool_tip) { if (i > 0) { strcpy(s_end, " / "); s_end += 3; } if (battery_present) { if ( !battery_full ) s_end += sprintf(s_end, " %d%c%02d%s", rem_time/60, time_in_min?':':'.', rem_time%60, time_in_min?"h":"m"); s_end += sprintf(s_end, " %.0f%% %d/%dmAh %.3fV", 100.0*charge/max_charge, charge, max_charge, voltage/1e3); if (battery_charging) s_end += sprintf(s_end, _(" - Charging")); } else { // Battery not present strcpy(s_end, "--"); s_end += 2; } } else { // Taskbar if (i > 0) strcpy(s_end++, "/"); if (! battery_present ) { strcpy(s_end, "--"); s_end += 2; } else if (taskBarShowApmTime && !battery_full) s_end += sprintf(s_end, "%d%c%02d", rem_time/60, time_in_min?':':'.', rem_time%60); else s_end += sprintf(s_end, "%3.0f%%", 100.0*charge/max_charge); if (battery_charging) strcpy(s_end++, "C"); } } // hatred: for ApmGraph chargeStatus /= batCount; if (power_present) { if (tool_tip) strcpy(s_end, _(" - Power")); else strcpy(s_end, "P"); } } YApm::YApm(YWindow *aParent): YWindow(aParent) { struct dirent **de; int n, i; FILE *pmu_info; char buf[80]; FILE *fd; batteryNum = 0; acpiACName = 0; fCurrentState = 0; acIsOnLine = false; // hatred chargeStatus = 0.0; //search for acpi info first #ifndef __FreeBSD__ n = scandir("/sys/class/power_supply", &de, 0, alphasort); if (n < 0) { n = scandir("/proc/acpi/battery", &de, 0, alphasort); //use sysfs info if (n > 0) mode = ACPI; } //use acpi info else mode = SYSFS; if (n > 0) { //scan for batteries i = 0; while (i < n && batteryNum < MAX_ACPI_BATTERY_NUM) { if (mode == SYSFS) { strcat3(buf, "/sys/class/power_supply/", de[i]->d_name, "/online", sizeof(buf)); fd = fopen(buf, "r"); if (fd != NULL) { fclose(fd); free(de[i]); i++; continue; } } if (!ignore_directory_bat_entry(de[i])) { //found a battery acpiBatteries[batteryNum] = (bat_info*)malloc(sizeof(bat_info)); acpiBatteries[batteryNum]->name = (char*)calloc(strlen(de[i]->d_name) + 1, sizeof(char)); strcpy(acpiBatteries[batteryNum]->name, de[i]->d_name); //initially set as absent, to force reading of //full-capacity value acpiBatteries[batteryNum]->present = BAT_ABSENT; acpiBatteries[batteryNum]->capacity_full = -1; batteryNum++; } free(de[i]); i++; } free(de); //scan for first ac_adapter if (mode == ACPI) n = scandir("/proc/acpi/ac_adapter", &de, 0, alphasort); else if (mode == SYSFS) n = scandir("/sys/class/power_supply", &de, 0, alphasort); if (n > 0) { i = 0; while (i < n) { if (mode == SYSFS) { strcat3(buf, "/sys/class/power_supply/", de[i]->d_name, "/online", sizeof(buf)); fd = fopen(buf, "r"); if (fd != NULL) { acpiACName = (char*)calloc(strlen(de[i]->d_name) + 1, sizeof(char)); strcpy(acpiACName, de[i]->d_name); fclose(fd); break; } } else { if (!ignore_directory_ac_entry(de[i])) { //found an ac_adapter acpiACName = (char*)calloc(strlen(de[i]->d_name) + 1, sizeof(char)); strcpy(acpiACName, de[i]->d_name); break; } } free(de[i]); i++; } free(de); } if (!acpiACName) { //no ac_adapter was found acpiACName = (char*)malloc(sizeof(char)); *acpiACName = '\0'; } #else int acpifd; acpifd = open(ACPIDEV, O_RDONLY); if (acpifd != -1) { mode = ACPI; //scan for batteries i = 0; while (i < 64 && batteryNum < MAX_ACPI_BATTERY_NUM) { union acpi_battery_ioctl_arg battio; battio.unit = i; if (ioctl(acpifd, ACPIIO_BATT_GET_BATTINFO, &battio) != -1) { acpiBatteries[batteryNum] = (bat_info*)malloc(sizeof(bat_info)); asprintf(&acpiBatteries[batteryNum]->name, "Battery%d", i); //initially set as absent, to force reading of //full-capacity value acpiBatteries[batteryNum]->present = BAT_ABSENT; acpiBatteries[batteryNum]->capacity_full = -1; batteryNum++; } i++; } asprintf(&acpiACName, "AC1"); #endif } else if ( (pmu_info = fopen("/proc/pmu/info", "r")) != NULL) { mode = PMU; char line[80]; while ( fgets(line, 80, pmu_info) != NULL ) if (strncmp("Battery count", line, strlen("Battery count")) == 0) sscanf(strchr(line, ':')+2, "%d", &batteryNum); fclose(pmu_info); } else { //use apm info mode = APM; batteryNum = 1; } if (apmBg == 0 && *clrApm) apmBg = new YColor(clrApm); if (apmFg == 0) apmFg = new YColor(clrApmText); if (apmFont == null) apmFont = YFont::getFont(XFA(apmFontName)); if (taskBarBg == 0) { taskBarBg = new YColor(clrDefaultTaskBar); } // hatred if (apmColorOnLine == 0) apmColorOnLine = new YColor(clrApmLine); if (apmColorBattery == 0) apmColorBattery = new YColor(clrApmBat); if (apmColorGraphBg == 0) apmColorGraphBg = new YColor(clrApmGraphBg); updateState(); apmTimer = new YTimer(1000 * batteryPollingPeriod); apmTimer->setTimerListener(this); apmTimer->startTimer(); if (taskBarShowApmGraph) setSize(taskBarApmGraphWidth, 20); else setSize(calcInitialWidth(), 20); updateToolTip(); // setDND(true); } YApm::~YApm() { int i; delete apmTimer; apmTimer = 0; if (ACPI == mode || mode == SYSFS) { for (i=0; iname); free(acpiBatteries[i]); acpiBatteries[i] = 0; } batteryNum = 0; free(acpiACName); acpiACName = 0; } } void YApm::updateToolTip() { char s[64] = {' ', ' ', ' ', 0, 0, 0, 0, 0}; switch (mode) { case ACPI: AcpiStr(s, 1); break; case SYSFS: SysStr(s, 1); break; case APM: ApmStr(s, 1); break; case PMU: PmuStr(s, 1); break; } setToolTip(s); } int YApm::calcInitialWidth() { char buf[80] = { 0 }; int i; int n = 0; //estimate applet's size for (i = 0; i < batteryNum; i++) { if ((mode == ACPI || mode == SYSFS) && acpiBatteries[i]->present == BAT_ABSENT) continue; if (taskBarShowApmTime) strcat(buf, "0:00"); else strcat(buf, "100%"); strcat(buf, "C"); if (n > 0) strcat(buf, "/"); n++; } /// if (!prettyClock) strcat(buf, " "); strcat(buf, "P"); return calcWidth(buf, strlen(buf)); } void YApm::updateState() { char s[64] = {' ', ' ', ' ', 0, 0, 0, 0, 0}; switch (mode) { case ACPI: AcpiStr(s, 0); break; case SYSFS: SysStr(s, 0); break; case APM: ApmStr(s, 0); break; case PMU: PmuStr(s, 0); break; } if (fCurrentState != 0) free(fCurrentState); fCurrentState = strdup(s); } void YApm::paint(Graphics &g, const YRect &/*r*/) { unsigned int x = 0; int len, i; len = fCurrentState ? strlen(fCurrentState) : 0; //clean background of current size first, so that //it is possible to use transparent apm-background #ifdef CONFIG_GRADIENTS ref gradient(parent()->getGradient()); if (gradient != null) { g.drawImage(gradient, this->x(), this->y(), width(), height(), 0, 0); } else #endif if (taskbackPixmap != null) { g.fillPixmap(taskbackPixmap, 0, 0, width(), height(), this->x(), this->y()); } else { g.setColor(taskBarBg); g.fillRect(0, 0, width(), height()); } unsigned int new_width = width(); //calcWidth(s, len); /// unsigned int old_width = width(); #if 0 //if enlarging then resize immediately, to avoid //of a delay until the added rectangle is drawed if (new_width>old_width) setSize(new_width, 20); #endif //draw foreground if (taskBarShowApmGraph) { // Draw graph indicator g.setColor(apmColorGraphBg); g.fillRect(0, 0, taskBarApmGraphWidth, height()); int new_h = (int)(chargeStatus/100.0 * (double)height()); if (acIsOnLine == true) { // onLine g.setColor(apmColorOnLine); } else { g.setColor(apmColorBattery); } g.fillRect(0, height() - new_h, taskBarApmGraphWidth, new_h); } else if (prettyClock) { ref p; for (i = 0; x < new_width; i++) { if (i < len) { p = getPixmap(fCurrentState[i]); } else p = PixSpace; if (p != null) { g.drawPixmap(p, x, 0); x += p->width(); } else if (i >= len) { g.setColor(apmBg); g.fillRect(x, 0, new_width - x, height()); break; } } } else if (fCurrentState) { if (apmBg) { g.setColor(apmBg); g.fillRect(0, 0, new_width, height()); } int y = (height() - 1 - apmFont->height()) / 2 + apmFont->ascent(); g.setColor(apmFg); g.setFont(apmFont); g.drawChars(fCurrentState, 0, len, 2, y); } //if diminishing then resize only at the end, to avoid //of a delay until the removed rectangle is cleared #if 0 if (new_width < old_width) setSize(new_width, 20); #endif } bool YApm::handleTimer(YTimer *t) { if (t != apmTimer) return false; updateState(); if (toolTipVisible()) updateToolTip(); repaint(); return true; } ref YApm::getPixmap(char c) { ref pix; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': pix = PixNum[c - '0']; break; case ' ': pix = PixSpace; break; case ':': pix = PixColon; break; case '.': pix = PixDot; break; case 'P': pix = PixP; break; case 'M': pix = PixM; break; case '/': pix = PixSlash; break; case '%': pix = PixPercent; break; } return pix; } int YApm::calcWidth(const char *s, int count) { if (!prettyClock) //leave 2px space on both sides return (apmFont != null ? apmFont->textWidth(s, count) : 0) + 4; else { int len = 0; while (count--) { ref p = getPixmap(*s++); if (p != null) len += p->width(); } return len; } } #endif icewm-1.3.7/src/iceclock.cc0000644000076600007660000000040011463274240014471 0ustar develdevel#include "config.h" #include "yapp.h" #include "aclock.h" const char *ApplicationName = "iceclock"; int main(int argc, char **argv) { YApplication app(&argc, &argv); YClock *clock = new YClock(); clock->show(); return app.mainLoop(); } icewm-1.3.7/src/iceview.cc0000644000076600007660000004057611463274240014372 0ustar develdevel#include "config.h" #include "ylib.h" #include #include "ylistbox.h" #include "yscrollview.h" #include "ymenu.h" #include "yxapp.h" #include "sysdep.h" #include "yaction.h" #include "yrect.h" #include "ylocale.h" #include "prefs.h" #include "yicon.h" #include extern "C" { #include } #include "intl.h" char const *ApplicationName = "iceview"; ref file; extern Atom _XA_WIN_ICONS; class TextView: public YWindow, public YScrollBarListener, public YScrollable, public YActionListener { public: TextView(YScrollView *v, YWindow *parent): YWindow(parent) { expandTabs = true; hexView = false; wrapLines = true; view = v; fVerticalScroll = view->getVerticalScrollBar();; fVerticalScroll->setScrollBarListener(this); fHorizontalScroll = view->getHorizontalScrollBar(); fHorizontalScroll->setScrollBarListener(this); setBitGravity(NorthWestGravity); maxWidth = 0; tx = ty = 0; buf = 0; bufLen = 0; lineCount = 0; linePos = 0; lineWCount = 0; lineWPos = 0; maxLineLen = 80; // for buffer fmt = 0; wrapWidth = 0; fWidth = 0; fHeight = 0; bg = new YColor("rgb:C0/C0/C0"); fg = YColor::black; //new YColor("rgb:00/00/00"); font = YFont::getFont("-adobe-courier-medium-r-*-*-*-100-*-*-*-*-*-*", "monospace:size=10"); fontWidth = font->textWidth("M"); fontHeight = font->height(); actionClose = new YAction(); actionToggleExpandTabs = new YAction(); actionToggleWrapLines = new YAction(); actionToggleHexView = new YAction(); menu = new YMenu(); menu->setActionListener(this); //menu->addItem(_("Find..."), 0, _("Ctrl+F"), actionFind); menu->addSeparator(); menu->addItem(_("Hex View"), 0, _("Ctrl+H"), actionToggleHexView); menu->addItem(_("Expand Tabs"), 0, _("Ctrl+T"), actionToggleExpandTabs); menu->addItem(_("Wrap Lines"), 0, _("Ctrl+W"), actionToggleWrapLines); menu->addSeparator(); menu->addItem(_("Close"), 0, _("Ctrl+Q"), actionClose); } ~TextView() { } int nextTab(int n) { return (n / 8 + 1) * 8; } char *line(int l) { PRECONDITION(l >= 0 && l < lineCount); return buf + linePos[2 * l]; } int lineChars(int l) { PRECONDITION(l >= 0 && l < lineCount); return linePos[2 * (l + 1)] - linePos[2 * l]; } int lineLen(int l) { PRECONDITION(l >= 0 && l < lineCount); return linePos[2 * l + 1]; } int getLen(int l) { int n = lineChars(l); if (!expandTabs) return n; char *p = line(l); int len = 0; while (n > 0) { if (*p == '\t' && expandTabs) len = nextTab(len); else len++; n--; p++; } return len; } void addLinePos(int p, bool r) { linePos = (int *)realloc(linePos, 2 * (lineCount + 1) * sizeof(int *)); linePos[2 * lineCount] = p; linePos[2 * lineCount + 1] = 0; if (r) { lineCount++; if (lineCount >= 2) { int len = getLen(lineCount - 2); linePos[2 * (lineCount - 2) + 1] = len; if (len > maxLineLen) maxLineLen = len; int w = fontWidth * len; if (w > maxWidth) maxWidth = w; } } } void setData(char *d, int len) { buf = d; bufLen = len; chunkCount = bufLen / 16; if (bufLen % 16) chunkCount++; findLines(); } void findLines() { free(linePos); lineCount = 0; linePos = 0; char *p; char *e = buf + bufLen; addLinePos(0, true); for (p = buf; p < e; p++) { if (*p == '\n') addLinePos(p - buf + 1, true); } addLinePos(bufLen, false); delete fmt; fmt = new char[maxLineLen]; findWLines(width() / fontWidth); } char *lineW(int l) { PRECONDITION(l >= 0 && l < lineWCount); return buf + lineWPos[l]; } int lineWChars(int l) { PRECONDITION(l >= 0 && l < lineWCount); return lineWPos[l + 1] - lineWPos[l]; } void findWLines(int wrap) { if (!wrapLines) { delete [] lineWPos; lineWPos = 0; lineWCount = 0; } int nw = 0; if (wrap < 16) wrap = 16; wrapWidth = wrap; for (int i = 0; i < lineCount; i++) { if (expandTabs) { int l = lineChars(i); char *p = line(i); int len = 0; int w = 0; nw++; while (len < l) { if (*p == '\t') { w = nextTab(w); } else w++; if (w > wrap) { nw++; w = 0; if (*p == '\t') continue; } p++; len++; } } else { int l = lineLen(i); nw += 1 + l / wrap; if ((l % wrap) == 0 && l > 0) nw--; } } if (nw != lineWCount) { delete [] lineWPos; lineWPos = new int[nw + 1]; if (lineWPos == 0) return ; lineWCount = nw; nw = 0; for (int i = 0; i < lineCount; i++) { lineWPos[nw++] = linePos[2 * i]; if (expandTabs) { int l = lineChars(i); char *p = line(i); int len = 0; int w = 0; while (len < l) { if (*p == '\t') { w = nextTab(w); } else w++; if (w > wrap) { lineWPos[nw] = p - buf; nw++; w = 0; if (*p == '\t') continue; } len++; p++; } } else { int l = lineChars(i); if (l > wrap) { while (l > wrap) { lineWPos[nw] = lineWPos[nw - 1] + wrap; nw++; l -= wrap; } } } } lineWPos[nw] = bufLen; assert(nw == lineWCount); } } int format(char *p, int len) { int n = 0; if (hexView) { static char hex[] = "0123456789ABCDEF"; char *e = buf + bufLen; char *d = fmt; int i; int o = p - buf; *d++ = hex[(o >> 28) & 0xF]; *d++ = hex[(o >> 24) & 0xF]; *d++ = hex[(o >> 20) & 0xF]; *d++ = hex[(o >> 16) & 0xF]; *d++ = hex[(o >> 12) & 0xF]; *d++ = hex[(o >> 8) & 0xF]; *d++ = hex[(o >> 4) & 0xF]; *d++ = hex[(o >> 0) & 0xF]; *d++ = ' '; *d++ = ' '; for (i = 0; i < 16; i++) { if (p + i < e) { unsigned char u = p[i]; *d++ = hex[(u >> 4) & 0x0F]; *d++ = hex[u & 0x0F]; } else { *d++ = ' '; *d++ = ' '; } //if ((i % 4) == 3) *d++ = ' '; } #if 0 *d++ = ' '; for (i = 0; i < 16; i++) { if (p + i < e) { unsigned char u = p[i]; *d++ = u; } } #endif n = d - fmt; } else { int n1; while (len > 0) { if (*p == '\t' && expandTabs) { n1 = nextTab(n); while (n < n1) { fmt[n] = ' '; n++; } } else { fmt[n++] = *p; } p++; len--; } } return n; } virtual void paint(Graphics &g, const YRect &r) { int wx = r.x(), wy = r.y(), wwidth = r.width(), wheight = r.height(); g.setColor(bg); g.fillRect(wx, wy, wwidth, wheight); g.setFont(font); g.setColor(fg); int l1 = (ty + wy) / fontHeight; int l2 = (ty + wy + wheight) / fontHeight; if ((ty + wy + wheight) % fontHeight) l2++; int y = l1 * fontHeight - ty; for (int l = l1; l < l2; l++) { if (hexView) { if (l >= chunkCount) break; } else if (wrapLines) { if (l >= lineWCount) break; } else { if (l >= lineCount) break; } int n = 0; if (hexView) { char *p = buf + l * 16; n = format(p, 16); } else if (wrapLines) { char *p = lineW(l); if (p) { int len = lineWChars(l); if (len > 0 && p[len - 1] == '\n') len--; n = format(p, len); } } else { char *p = line(l); if (p) { int len = lineChars(l); if (len > 0 && p[len - 1] == '\n') len--; n = format(p, len); } } int o = tx/fontWidth; int r = width()/fontWidth + 1; if (o < n) { n -= o; if (n > r) n = r; g.drawChars(fmt + o, 0, n, 1 - tx + o * fontWidth, 1 + y + font->ascent()); } y += fontHeight; } resetScroll(); } void resetScroll() { fVerticalScroll->setValues(ty, height(), 0, contentHeight()); fVerticalScroll->setBlockIncrement(height()); fVerticalScroll->setUnitIncrement(fontHeight); fHorizontalScroll->setValues(tx, width(), 0, contentWidth()); fHorizontalScroll->setBlockIncrement(width()); fHorizontalScroll->setUnitIncrement(fontWidth); if (view) view->layout(); } void setPos(int x, int y) { if (x != tx || y != ty) { int dx = x - tx; int dy = y - ty; tx = x; ty = y; scrollWindow(dx, dy); } } virtual void scroll(YScrollBar *sb, int delta) { if (sb == fHorizontalScroll) setPos(tx + delta, ty); else if (sb == fVerticalScroll) setPos(tx, ty + delta); } virtual void move(YScrollBar *sb, int pos) { if (sb == fHorizontalScroll) setPos(pos, ty); else if (sb == fVerticalScroll) setPos(tx, pos); } int contentWidth() { if (hexView) return 78 * fontWidth + 2; else if (wrapLines) return wrapWidth * fontWidth; else return maxWidth + 2; } int contentHeight() { int n; if (hexView) n = chunkCount; if (wrapLines) n = lineWCount; else n = lineCount; return n * fontHeight + 2; // for 1 pixel spacing } YWindow *getWindow() { return this; } int getFontWidth() { return fontWidth; } int getFontHeight() { return fontHeight; } virtual void handleClick(const XButtonEvent &up, int /*count*/) { if (up.button == 3) { menu->popup(this, 0, 0, up.x_root, up.y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu); return ; } } virtual void actionPerformed(YAction *action, unsigned int /*modifiers*/) { if (action == actionToggleHexView) { hexView = hexView ? false : true; repaint(); } else if (action == actionToggleExpandTabs) { expandTabs = expandTabs ? false : true; repaint(); } else if (action == actionToggleWrapLines) { wrapLines = wrapLines ? false : true; findWLines(width() / fontWidth); repaint(); } else if (action == actionClose) exit(0); } virtual void configure(const YRect &r, const bool resized) { YWindow::configure(r, resized); if (fWidth != r.width() || fHeight != r.height()) { fWidth = r.width(); fHeight = r.height(); if (wrapLines) { int nw = lineWCount; findWLines(r.width() / fontWidth); if (lineWCount != nw) repaint(); } resetScroll(); } } private: int bufLen; char *buf; int lineCount; int *linePos; int lineWCount; int *lineWPos; int fWidth; int fHeight; int chunkCount; int maxLineLen; char *fmt; int maxWidth; int tx, ty; int fontWidth, fontHeight; int wrapWidth; YColor *bg, *fg; ref font; YScrollView *view; YScrollBar *fVerticalScroll; YScrollBar *fHorizontalScroll; bool expandTabs; bool hexView; bool wrapLines; YMenu *menu; YAction *actionClose; YAction *actionToggleExpandTabs, *actionToggleWrapLines, *actionToggleHexView; }; class FileView: public YWindow { public: FileView(char *path) { setDND(true); fPath = newstr(path); scroll = new YScrollView(this); view = new TextView(scroll, this); scroll->setView(view); view->show(); scroll->show(); setTitle(fPath); file = YIcon::getIcon("file"); #if 0 Pixmap icons[4]; icons[0] = file->small()->pixmap(); icons[1] = file->small()->mask(); icons[2] = file->large()->pixmap(); icons[3] = file->large()->mask(); XChangeProperty(app->display(), handle(), _XA_WIN_ICONS, XA_PIXMAP, 32, PropModeReplace, (unsigned char *)icons, 4); #endif int x = 80 * view->getFontWidth(); int y = 30 * view->getFontHeight(); setSize(x, y); loadFile(); printf("x:y = %d:%d\n", view->contentWidth(), view->contentHeight()); if (view->contentWidth() < x) x = view->contentWidth(); if (view->contentHeight() < y) y = view->contentHeight(); if (x < 200) x = 200; if (y < 150) y = 150; setSize(x, y); } void loadFile() { struct stat sb; int fd = open(fPath, O_RDONLY); if (fd == -1) return ; if (fstat(fd, &sb) != 0) return ; int len = sb.st_size; char *buf; if ((buf = (char *)mmap(0, len, PROT_READ, MAP_SHARED, fd, 0)) == 0) { buf = (char *)malloc(len); if (buf == 0) return ; if ((len = read(fd, buf, len)) < 0) return ; } view->setData(buf, len); close(fd); } virtual void configure(const YRect &r, const bool resized) { YWindow::configure(r, resized); if (resized) scroll->setGeometry(YRect(0, 0, r.width(), r.height())); } virtual void handleClose() { delete this; app->exit(0); } private: char *fPath; TextView *view; YScrollView *scroll; }; int main(int argc, char **argv) { YLocale locale; #ifdef ENABLE_NLS bindtextdomain(PACKAGE, LOCDIR); textdomain(PACKAGE); #endif YXApplication app(&argc, &argv); if (argc > 1) { FileView *view = new FileView(argv[1]); view->show(); return app.mainLoop(); } } icewm-1.3.7/src/wmapp.h0000644000076600007660000000442611463274240013717 0ustar develdevel#ifndef __WMAPP_H #define __WMAPP_H #include "ysmapp.h" #include "ymenu.h" #include "ymsgbox.h" #ifdef CONFIG_GUIEVENTS #include "guievent.h" #endif class YWindowManager; class YWMApp: public YSMApplication, public YActionListener, public YMsgBoxListener { public: YWMApp(int *argc, char ***argv, const char *displayName = 0); ~YWMApp(); #ifdef CONFIG_GUIEVENTS void signalGuiEvent(GUIEvent ge); #endif virtual void afterWindowEvent(XEvent &xev); virtual void handleSignal(int sig); virtual bool handleIdle(); virtual bool filterEvent(const XEvent &xev); virtual void actionPerformed(YAction *action, unsigned int modifiers); virtual void handleMsgBox(YMsgBox *msgbox, int operation); void doLogout(); void logout(); void cancelLogout(); #ifdef CONFIG_SESSION virtual void smSaveYourselfPhase2(); virtual void smDie(); #endif void setFocusMode(int mode); void restartClient(const char *path, char *const *args); void runOnce(const char *resource, const char *path, char *const *args); void runCommandOnce(const char *resource, const char *cmdline); static YCursor sizeRightPointer; static YCursor sizeTopRightPointer; static YCursor sizeTopPointer; static YCursor sizeTopLeftPointer; static YCursor sizeLeftPointer; static YCursor sizeBottomLeftPointer; static YCursor sizeBottomPointer; static YCursor sizeBottomRightPointer; static YCursor scrollLeftPointer; static YCursor scrollRightPointer; static YCursor scrollUpPointer; static YCursor scrollDownPointer; private: YWindowManager *fWindowManager; YMsgBox *fLogoutMsgBox; void runRestart(const char *path, char *const *args); private: Window managerWindow; }; extern YWMApp * wmapp; extern YMenu *windowMenu; extern YMenu *occupyMenu; extern YMenu *layerMenu; extern YMenu *moveMenu; #ifdef CONFIG_TRAY extern YMenu *trayMenu; #endif #ifdef CONFIG_WINMENU extern YMenu *windowListMenu; #endif #ifdef CONFIG_WINLIST extern YMenu *windowListPopup; extern YMenu *windowListAllPopup; #endif extern YMenu *maximizeMenu; extern YMenu *logoutMenu; #ifndef NO_CONFIGURE_MENUS class ObjectMenu; extern ObjectMenu *rootMenu; #endif class CtrlAltDelete; extern CtrlAltDelete *ctrlAltDelete; extern int rebootOrShutdown; #endif icewm-1.3.7/src/ydialog.cc0000644000076600007660000000327511463274240014362 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek * * Dialogs */ #include "config.h" #ifndef LITE #include "ypixbuf.h" #include "ykey.h" #include "ydialog.h" #include "yxapp.h" #include "prefs.h" #include "WinMgr.h" #include "wmframe.h" #include "wmclient.h" #include "wmmgr.h" #include "wmdialog.h" #include "wmabout.h" #include "sysdep.h" static YColor *dialogBg = 0; YDialog::YDialog(YWindow *owner): YFrameClient(0, 0) INIT_GRADIENT(fGradient, NULL) { if (dialogBg == 0) dialogBg = new YColor(clrDialog); fOwner = owner; } YDialog::~YDialog() { #ifdef CONFIG_GRADIENTS fGradient = null; #endif } void YDialog::paint(Graphics &g, const YRect &/*r*/) { g.setColor(dialogBg); g.draw3DRect(0, 0, width() - 1, height() - 1, true); #ifdef CONFIG_GRADIENTS if (dialogbackPixbuf != null && !(fGradient != null && fGradient->width() == (width() - 2) && fGradient->height() == (height() - 2))) { fGradient = dialogbackPixbuf->scale(width() - 2, height() - 2); repaint(); } if (fGradient != null) g.drawImage(fGradient, 0, 0, width() - 2, height() - 2, 1, 1); else #endif if (dialogbackPixmap != null) g.fillPixmap(dialogbackPixmap, 1, 1, width() -2, height() - 2); else g.fillRect(1, 1, width() - 2, height() - 2); } bool YDialog::handleKey(const XKeyEvent &key) { if (key.type == KeyPress) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); int m = KEY_MODMASK(key.state); if (k == XK_Escape && m == 0) { handleClose(); return true; } } return YFrameClient::handleKey(key); } #endif icewm-1.3.7/src/guievent.h0000644000076600007660000000260111463274240014412 0ustar develdevel#ifndef __GUIEVENT_H #define __GUIEVENT_H /* events don't get queued... is that a problem ? */ #define XA_GUI_EVENT_NAME "ICEWM_GUI_EVENT" enum GUIEvent { geStartup, // geShutdown, // geRestart, // geCloseAll, geLaunchApp, // geWorkspaceChange, // geWindowOpened, // geWindowClosed, // geDialogOpened, geDialogClosed, geWindowMax, // geWindowRestore, // geWindowMin, // geWindowHide, // geWindowRollup, // geWindowMoved, geWindowSized, geWindowLower }; #ifdef GUI_EVENT_NAMES static struct { GUIEvent type; const char *name; } gui_events[] = { { geStartup, "startup" }, { geShutdown, "shutdown" }, { geRestart, "restart" }, { geCloseAll, "closeAll" }, { geLaunchApp, "launchApp" }, { geWorkspaceChange, "workspaceChange" }, { geWindowOpened, "windowOpen" }, { geWindowClosed, "windowClose" }, { geDialogOpened, "dialogOpen" }, { geDialogClosed, "dialogClose" }, { geWindowMin, "windowMin" }, { geWindowMax, "windowMax" }, { geWindowRestore, "windowRestore" }, { geWindowHide, "windowHide" }, { geWindowRollup, "windowRollup" }, { geWindowLower, "windowLower" }, { geWindowSized, "windowSized" }, { geWindowMoved, "windowMoved" } }; #endif #endif icewm-1.3.7/src/atasks.h0000644000076600007660000000527511463274240014064 0ustar develdevel#ifndef ATASKS_H_ #define ATASKS_H_ #include "ywindow.h" #include "wmclient.h" #include "ytimer.h" #include class TaskPane; class TaskBarApp; class IAppletContainer; class TaskBarApp: public YWindow, public YTimerListener { public: TaskBarApp(ClientData *frame, TaskPane *taskPane, YWindow *aParent); virtual ~TaskBarApp(); virtual bool isFocusTraversable(); virtual void paint(Graphics &g, const YRect &r); virtual void handleButton(const XButtonEvent &button); virtual void handleClick(const XButtonEvent &up, int count); virtual void handleCrossing(const XCrossingEvent &crossing); virtual void handleDNDEnter(); virtual void handleDNDLeave(); virtual bool handleTimer(YTimer *t); virtual void handleBeginDrag(const XButtonEvent &down, const XMotionEvent &motion); ClientData *getFrame() const { return fFrame; } void setShown(bool show); bool getShown() const { return fShown || fFlashing; } void setFlash(bool urgent); TaskBarApp *getNext() const { return fNext; } TaskBarApp *getPrev() const { return fPrev; } void setNext(TaskBarApp *next) { fNext = next; } void setPrev(TaskBarApp *prev) { fPrev = prev; } private: ClientData *fFrame; TaskPane *fTaskPane; TaskBarApp *fPrev, *fNext; bool fShown; bool fFlashing; bool fFlashOn; time_t fFlashStart; int selected; YTimer *fFlashTimer; static YTimer *fRaiseTimer; }; class TaskPane: public YWindow { public: TaskPane(IAppletContainer *taskBar, YWindow *parent); ~TaskPane(); void insert(TaskBarApp *tapp); void remove(TaskBarApp *tapp); TaskBarApp *addApp(YFrameWindow *frame); void removeApp(YFrameWindow *frame); TaskBarApp *getFirst() const { return fFirst; } TaskBarApp *getLast() const { return fLast; } void relayout() { fNeedRelayout = true; } void relayoutNow(); virtual void handleClick(const XButtonEvent &up, int count); virtual void handleMotion(const XMotionEvent &motion); virtual void handleButton(const XButtonEvent &button); virtual void paint(Graphics &g, const YRect &r); void startDrag(TaskBarApp *drag, int byMouse, int sx, int sy); void processDrag(int mx, int my); void endDrag(); virtual void handleDrag(const XButtonEvent &down, const XMotionEvent &motion)//LXP {parent()->handleDrag(down,motion);}//LXP virtual void handleEndDrag(const XButtonEvent &down, const XButtonEvent &up)//LXP {parent()->handleEndDrag(down,up);}//LXP private: IAppletContainer *fTaskBar; TaskBarApp *fFirst, *fLast; int fCount; bool fNeedRelayout; TaskBarApp *fDragging; int fDragX; int fDragY; }; #endif icewm-1.3.7/src/yfontxft.cc0000644000076600007660000002140211463274240014603 0ustar develdevel#include "config.h" #ifdef CONFIG_XFREETYPE #include "ystring.h" #include "ypaint.h" #include "yxapp.h" #include "intl.h" /******************************************************************************/ class YXftFont : public YFont { public: #ifdef CONFIG_I18N typedef class YUnicodeString string_t; typedef XftChar32 char_t; #else typedef class YLocaleString string_t; typedef XftChar8 char_t; #endif YXftFont(ustring name, bool xlfd, bool antialias); virtual ~YXftFont(); virtual bool valid() const { return (fFontCount > 0); } virtual int descent() const { return fDescent; } virtual int ascent() const { return fAscent; } virtual int textWidth(const ustring &s) const; virtual int textWidth(char const * str, int len) const; virtual int textWidth(string_t const & str) const; virtual void drawGlyphs(class Graphics & graphics, int x, int y, char const * str, int len); private: struct TextPart { XftFont * font; size_t length; unsigned width; }; TextPart * partitions(char_t * str, size_t len, size_t nparts = 0) const; unsigned fFontCount, fAscent, fDescent; XftFont ** fFonts; }; class XftGraphics { public: #ifdef CONFIG_I18N typedef XftChar32 char_t; #define XftDrawString XftDrawString32 #define XftTextExtents XftTextExtents32 #else typedef XftChar8 char_t; #define XftTextExtents XftTextExtents8 #define XftDrawString XftDrawString8 #endif #if 0 void drawRect(Graphics &g, XftColor * color, int x, int y, unsigned w, unsigned h) { XftDrawRect(fDraw, color, x - xOrigin, y - yOrigin, w, h); } #endif static void drawString(Graphics &g, XftFont * font, int x, int y, char_t * str, size_t len) { XftColor *c = *g.color(); XftDrawString(g.handleXft(), c, font, x - g.xorigin(), y - g.yorigin(), str, len); } static void textExtents(XftFont * font, char_t * str, size_t len, XGlyphInfo & extends) { XftTextExtents(xapp->display (), font, str, len, &extends); } // XftDraw * handle() const { return fDraw; } }; /******************************************************************************/ YXftFont::YXftFont(ustring name, bool use_xlfd, bool /*antialias*/): fFontCount(0), fAscent(0), fDescent(0) { fFontCount = 0; ustring s(null), r(null); for (s = name; s.splitall(',', &s, &r); s = r) { fFontCount++; } XftFont ** fptr(fFonts = new XftFont* [fFontCount]); for (s = name; s.splitall(',', &s, &r); s = r) { // for (char const *s(name); '\0' != *s; s = strnxt(s, ",")) { XftFont *& font(*fptr); ustring fname = s.trim(); //char * fname(newstr(s + strspn(s, " \t\r\n"), ",")); //char * endptr(fname + strlen(fname) - 1); //while (endptr > fname && strchr(" \t\r\n", *endptr)) --endptr; //endptr[1] = '\0'; cstring cs(fname); if (use_xlfd) { font = XftFontOpenXlfd(xapp->display(), xapp->screen(), cs.c_str()); } else { font = XftFontOpenName(xapp->display(), xapp->screen(), cs.c_str()); } if (NULL != font) { fAscent = max(fAscent, (unsigned) max(0, font->ascent)); fDescent = max(fDescent, (unsigned) max(0, font->descent)); ++fptr; } else { warn(_("Could not load font \"%s\"."), cs.c_str()); --fFontCount; } } if (0 == fFontCount) { msg("xft: fallback from '%s'", cstring(name).c_str()); XftFont *sans = XftFontOpen(xapp->display(), xapp->screen(), XFT_FAMILY, XftTypeString, "sans-serif", XFT_PIXEL_SIZE, XftTypeInteger, 12, NULL); if (NULL != sans) { delete[] fFonts; fFontCount = 1; fFonts = new XftFont* [fFontCount]; fFonts[0] = sans; fAscent = sans->ascent; fDescent = sans->descent; } else warn(_("Loading of fallback font \"%s\" failed."), "sans-serif"); } } YXftFont::~YXftFont() { for (unsigned n = 0; n < fFontCount; ++n) { if (xapp != 0) XftFontClose(xapp->display(), fFonts[n]); } delete[] fFonts; } int YXftFont::textWidth(const ustring &s) const { cstring cs(s); return textWidth(cs.c_str(), cs.c_str_len()); } int YXftFont::textWidth(string_t const & text) const { char_t * str((char_t *) text.data()); size_t len(text.length()); TextPart *parts = partitions(str, len); unsigned width(0); for (TextPart * p = parts; p && p->length; ++p) width+= p->width; delete[] parts; return width; } int YXftFont::textWidth(char const * str, int len) const { return textWidth(string_t(str, len)); } void YXftFont::drawGlyphs(Graphics & graphics, int x, int y, char const * str, int len) { string_t xtext(str, len); if (0 == xtext.length()) return; int const y0(y - ascent()); int const gcFn(graphics.function()); char_t * xstr((char_t *) xtext.data()); size_t xlen(xtext.length()); TextPart *parts = partitions(xstr, xlen); /// unsigned w(0); /// unsigned const h(height()); /// for (TextPart *p = parts; p && p->length; ++p) w+= p->width; /// YPixmap *pixmap = new YPixmap(w, h); /// Graphics canvas(*pixmap, 0, 0); // XftGraphics textarea(graphics, xapp->visual(), xapp->colormap()); switch (gcFn) { case GXxor: /// textarea.drawRect(*YColor::black, 0, 0, w, h); break; case GXcopy: /// canvas.copyDrawable(graphics.drawable(), /// x - graphics.xorigin(), y0 - graphics.yorigin(), w, h, 0, 0); break; } int xpos(0); for (TextPart *p = parts; p && p->length; ++p) { if (p->font) { XftGraphics::drawString(graphics, p->font, xpos + x, ascent() + y0, xstr, p->length); } xstr += p->length; xpos += p->width; } delete[] parts; /// graphics.copyDrawable(canvas.drawable(), 0, 0, w, h, x, y0); /// delete pixmap; } YXftFont::TextPart * YXftFont::partitions(char_t * str, size_t len, size_t nparts) const { XGlyphInfo extends; XftFont ** lFont(fFonts + fFontCount); XftFont ** font(NULL); char_t * c(str); for (char_t * endptr(str + len); c < endptr; ++c) { XftFont ** probe(fFonts); while (probe < lFont && !XftGlyphExists(xapp->display(), *probe, *c)) ++probe; if (probe != font) { if (NULL != font) { TextPart *parts = partitions(c, len - (c - str), nparts + 1); parts[nparts].length = (c - str); if (font < lFont) { XftGraphics::textExtents(*font, str, (c - str), extends); parts[nparts].font = *font; parts[nparts].width = extends.xOff; } else { parts[nparts].font = NULL; parts[nparts].width = 0; warn("glyph not found: %d", *(c - 1)); } return parts; } else font = probe; } } TextPart *parts = new TextPart[nparts + 2]; parts[nparts + 1].font = NULL; parts[nparts + 1].width = 0; parts[nparts + 1].length = 0; parts[nparts].length = (c - str); if (NULL != font && font < lFont) { XftGraphics::textExtents(*font, str, (c - str), extends); parts[nparts].font = *font; parts[nparts].width = extends.xOff; } else { parts[nparts].font = NULL; parts[nparts].width = 0; } return parts; } ref getXftFontXlfd(ustring name, bool antialias) { ref font(new YXftFont(name, true, antialias)); if (font == null || !font->valid()) { msg("failed to load font '%s', trying fallback", cstring(name).c_str()); font.init(new YXftFont("sans-serif:size=12", false, antialias)); if (font == null || !font->valid()) msg("Could not load fallback Xft font."); } return font; } ref getXftFont(ustring name, bool antialias) { reffont(new YXftFont(name, false, antialias)); if (font == null || !font->valid()) { msg("failed to load font '%s', trying fallback", cstring(name).c_str()); font.init(new YXftFont("sans-serif:size=12", false, antialias)); if (font == null || !font->valid()) msg("Could not load fallback Xft font."); } return font; } #endif // CONFIG_XFREETYPE icewm-1.3.7/src/icelist.cc0000644000076600007660000002555311463274240014371 0ustar develdevel#include "config.h" #include "yfull.h" #include #include "ylistbox.h" #include "yscrollview.h" #include "ymenu.h" #include "yxapp.h" #include "yaction.h" #include "yinputline.h" #include "wmmgr.h" #include "yrect.h" #include "ypixbuf.h" #include "ypaint.h" #include "sysdep.h" #include "yicon.h" #include "ylocale.h" #include #include "intl.h" const char *ApplicationName = "icelist"; class ObjectList; class ObjectListBox; ref folder; ref file; class ObjectListItem: public YListItem { public: ObjectListItem(char *container, ustring name): fName(name) { fContainer = container; fFolder = false; struct stat sb; char *path = getLocation(); if (lstat(path, &sb) == 0 && S_ISDIR(sb.st_mode)) fFolder = true; delete[] path; } virtual ~ObjectListItem() { } virtual ustring getText() { return fName; } bool isFolder() { return fFolder; } virtual ref getIcon() { return isFolder() ? folder : file; } char *getLocation(); private: char *fContainer; ustring fName; bool fFolder; }; char *ObjectListItem::getLocation() { char *dir = fContainer; ustring name = getText(); int dlen; int nlen = (dlen = strlen(dir)) + 1 + name.length() + 1; char *npath; npath = new char[nlen]; strcpy(npath, dir); if (dlen == 0 || dir[dlen - 1] != '/') { strcpy(npath + dlen, "/"); dlen++; } cstring cs(name); strcpy(npath + dlen, cs.c_str()); return npath; } class ObjectListBox: public YListBox, public YActionListener { public: ObjectListBox(ObjectList *list, YScrollView *view, YWindow *aParent): YListBox(view, aParent) { fObjList = list; actionOpenList = new YAction(); actionOpenIcon = new YAction(); actionOpen = new YAction(); actionClose = new YAction(); YMenu *openMenu = new YMenu(); openMenu->addItem(_("List View"), 0, null, actionOpenList); openMenu->addItem(_("Icon View"), 0, null, actionOpenIcon); folderMenu = new YMenu(); folderMenu->setActionListener(this); folderMenu->addItem(_("Open"), 0, actionOpenList, openMenu); } virtual ~ObjectListBox() { } virtual bool handleKey(const XKeyEvent &key) { return YListBox::handleKey(key); } virtual void handleClick(const XButtonEvent &up, int count) { if (up.button == 3 && count == 1) { YMenu *menu = folderMenu; menu->popup(this, 0, 0, up.x_root, up.y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu); return ; } else return YListBox::handleClick(up, count); } virtual void activateItem(YListItem *item); virtual void actionPerformed(YAction *action, unsigned int /*modifiers*/) { if (action == actionOpenList) { } } private: ObjectList *fObjList; YMenu *folderMenu; YAction *actionClose; YAction *actionOpen; YAction *actionOpenList; YAction *actionOpenIcon; }; class ObjectList: public YWindow { public: static int winCount; ObjectList(const char *path, YWindow *aParent): YWindow(aParent) { setDND(true); fPath = newstr(path); scroll = new YScrollView(this); list = new ObjectListBox(this, scroll, scroll); scroll->setView(list); updateList(); list->show(); scroll->show(); setTitle(fPath); int w = desktop->width(); int h = desktop->height(); setGeometry(YRect(w / 3, h / 3, w / 3, h / 3)); /* Pixmap icons[4]; icons[0] = folder->small()->pixmap(); icons[1] = folder->small()->mask(); icons[2] = folder->large()->pixmap(); icons[3] = folder->large()->mask(); XChangeProperty(app->display(), handle(), _XA_WIN_ICONS, XA_PIXMAP, 32, PropModeReplace, (unsigned char *)icons, 4); */ winCount++; } ~ObjectList() { winCount--; } virtual void handleClose() { if (winCount == 1) app->exit(0); delete this; } void updateList(); virtual void configure(const YRect &r, const bool resized) { YWindow::configure(r, resized); if(resized) scroll->setGeometry(YRect(0, 0, r.width(), r.height())); } char *getPath() { return fPath; } private: ObjectListBox *list; YScrollView *scroll; char *fPath; }; int ObjectList::winCount = 0; void ObjectList::updateList() { DIR *dir; if ((dir = opendir(fPath)) != NULL) { struct dirent *de; while ((de = readdir(dir)) != NULL) { char *n = de->d_name; if (n[0] == '.' && (n[1] == 0 || (n[1] == '.' && n[2] == 0))) ; else { ObjectListItem *o = new ObjectListItem(fPath, n); if (o) list->addItem(o); } } closedir(dir); } } void ObjectListBox::activateItem(YListItem *item) { ObjectListItem *obj = (ObjectListItem *)item; char *path = obj->getLocation(); if (obj->isFolder()) { //if (fork() == 0) // execl("./icelist", "icelist", path, NULL); ObjectList *list = new ObjectList(path, 0); list->show(); } else { if (fork() == 0) execl("./iceview", "iceview", path, (void *)NULL); } delete path; } class Panes; #define NPANES 4 #define TH 20 class Pane: public YWindow { public: Pane(const char *title, const char *path, Panes *aParent); virtual void paint(Graphics &g, const YRect &r); virtual void handleButton(const XButtonEvent &button); virtual void handleMotion(const XMotionEvent &motion); virtual void configure(const YRect &r, const bool resized) { YWindow::configure(r, resized); if (resized) list->setGeometry(YRect(0, TH, r.width(), r.height() - TH)); } private: YColor *titleBg; YColor *titleFg; YColor *bg; char *title; int dragY; ObjectList *list; Panes *owner; }; class Panes: public YWindow { public: Pane *panes[NPANES]; Panes(YWindow *aParent = 0); virtual void handleClose() { //if (winCount == 1) app->exit(0); delete this; } virtual void configure(const YRect &r, const bool resized) { YWindow::configure(r, resized); if (resized) { for (int i = 0; i < NPANES; i++) panes[i]->setSize(r.width(), panes[i]->height()); panes[NPANES - 1]->setSize(r.width(), r.height() - panes[NPANES - 1]->y()); } } void movePane(Pane *pane, int delta); }; Pane::Pane(const char *atitle, const char *path, Panes *aParent): YWindow(aParent) { title = strdup(atitle); titleBg = new YColor("#6666CC"); titleFg = YColor::white; bg = new YColor("#CCCCCC"); list = new ObjectList(path, this); list->show(); owner = aParent; } void Pane::paint(Graphics &g, const YRect &/*r*/) { g.setColor(titleBg); g.fillRect(0, 0, width(), TH); g.setColor(titleFg); /// !!! g.drawPixmap(folder->small(), 2, 4); g.drawChars(title, 0, strlen(title), 20, 17); //g.setColor(bg); //g.fillRect(0, TH, width(), height() - TH); } void Pane::handleButton(const XButtonEvent &button) { dragY = button.y_root - y(); } void Pane::handleMotion(const XMotionEvent &motion) { owner->movePane(this, motion.y_root - dragY); } Panes::Panes(YWindow *aParent): YWindow(aParent) { panes[0] = new Pane("/", "/", this); panes[1] = new Pane("Home", getenv("HOME"), this); panes[2] = new Pane("Windows", "wmwinlist:", this); panes[3] = new Pane("tmp", "/tmp", this); int w = 200, h = 0; int height = 600, h1 = height / (NPANES + 1); for (int i = 0; i < NPANES; i++) { panes[i]->setGeometry(YRect(0, h, w, h1)); h += h1; panes[i]->show(); } } void Panes::movePane(Pane *pane, int delta) { for (int i = 1; i < NPANES; i++) { int oldY = pane->y(); if (panes[i] == pane) { int min = TH * i; int max = height() - TH * (NPANES - i - 1); if (delta < min) delta = min; if (delta > max - TH) delta = max - TH; int ob = pane->y() + pane->height(); int b = ob - delta; if (b < TH) b = TH; pane->setGeometry(YRect(pane->x(), delta, pane->width(), b)); } if (pane->y() < oldY) { int bottom = pane->y(); int n = i - 1; do { if (panes[n]->y() + TH > bottom) { panes[n]->setGeometry(YRect(panes[n]->x(), bottom - TH, panes[n]->width(), TH)); bottom -= TH; } else { panes[n]->setSize(panes[n]->width(), bottom - panes[n]->y()); break; } n--; } while (n > 0); } else if (pane->y() > oldY) { int top = pane->y() + pane->height(); int n = i + 1; panes[i - 1]->setSize(panes[i - 1]->width(), pane->y() - panes[i - 1]->y()); while (n < NPANES) { if (panes[n]->y() < top && panes[n]->height() == TH) { panes[n]->setPosition(panes[n]->x(), top); top += TH; } else if (panes[n]->y() < top) { panes[n]->setGeometry( YRect(panes[n]->x(), top, panes[n]->width(), panes[n]->y() + panes[n]->height() - top)); break; } n++; } } } } int main(int argc, char **argv) { YLocale locale; #ifdef ENABLE_NLS bindtextdomain(PACKAGE, LOCDIR); textdomain(PACKAGE); #endif YXApplication app(&argc, &argv); YWindow *w; folder = YIcon::getIcon("folder"); file = YIcon::getIcon("file"); //ObjectList *list = new ObjectList(argv[1] ? argv[1] : (char *)"/", 0); //list->show(); w = new YWindow(); Panes *p = new Panes(w); p->setGeometry(YRect(0, 0, 200, 700)); p->show(); YInputLine *input = new YInputLine(w); input->setGeometry(YRect(0, 700, 200, 20)); input->setText("http://slashdot.org/"); input->show(); w->setGeometry(YRect(0, 0, 200, 720)); w->show(); return app.mainLoop(); } icewm-1.3.7/src/wmtitle.h0000644000076600007660000000154511463274240014257 0ustar develdevel#ifndef __WMTITLE_H #define __WMTITLE_H #include "ywindow.h" class YFrameWindow; class YFrameTitleBar: public YWindow { public: YFrameTitleBar(YWindow *parent, YFrameWindow *frame); virtual ~YFrameTitleBar(); void activate(); void deactivate(); int titleLen(); virtual void paint(Graphics &g, const YRect &r); #ifdef CONFIG_SHAPED_DECORATION void renderShape(Pixmap shape); #endif virtual void handleButton(const XButtonEvent &button); virtual void handleMotion(const XMotionEvent &motion); virtual void handleClick(const XButtonEvent &up, int count); virtual void handleBeginDrag(const XButtonEvent &down, const XMotionEvent &motion); YFrameWindow *getFrame() const { return fFrame; }; private: YFrameWindow *fFrame; int buttonDownX, buttonDownY; int movingWindow; bool wasCanRaise; }; #endif icewm-1.3.7/src/ylib.h0000664000076600007660000000017611463274240013532 0ustar develdevel#ifndef __YLIB_H #define __YLIB_H #include "base.h" #define __YIMP_XLIB__ #include #include #endif icewm-1.3.7/src/yicon.cc0000644000076600007660000001523411463274240014051 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek */ #include "config.h" #include "yfull.h" #include "ypixbuf.h" #include "ypaint.h" #include "yicon.h" #include "yapp.h" #include "sysdep.h" #include "prefs.h" #include "yprefs.h" #include "wmprog.h" // !!! remove this #include "intl.h" #ifndef LITE static bool didInit = false; static ref iconPaths; void initIcons() { if (!didInit) { didInit = true; iconPaths = YResourcePaths::subdirs("icons/"); } } YIcon::YIcon(upath filename): fSmall(null), fLarge(null), fHuge(null), loadedS(false), loadedL(false), loadedH(false), fPath(filename), fCached(false) { } YIcon::YIcon(ref small, ref large, ref huge) : fSmall(small), fLarge(large), fHuge(huge), loadedS(small != null), loadedL(large != null), loadedH(huge != null), fPath(NULL), fCached(false) { } YIcon::~YIcon() { fHuge = null; fLarge = null; fSmall = null; } static upath joinPath(upath dir, upath name) { if (dir == null) return name; if (name.isAbsolute()) return name; return dir.relative(name); } upath YIcon::findIcon(upath dir, upath base, unsigned size) { char icons_size[1024]; upath fullpath; fullpath = joinPath(dir, base); if (fullpath.fileExists()) return fullpath; sprintf(icons_size, "%s_%dx%d.xpm", cstring(base.path()).c_str(), size, size); fullpath = joinPath(dir, icons_size); if (fullpath.fileExists()) return fullpath; fullpath = joinPath(dir, base.addExtension(".xpm")); if (fullpath.fileExists()) return fullpath; fullpath = joinPath(dir, base.addExtension(".png")); if (fullpath.fileExists()) return fullpath; return 0; } upath YIcon::findIcon(int size) { cstring cs(fPath.path()); initIcons(); if (iconPath != 0 && iconPath[0] != 0) { for (char const *p = iconPath, *q = iconPath; *q; q = p) { while (*p && *p != PATHSEP) p++; unsigned len(p - q); if (*p) ++p; upath path = upath(newstr(q, len)); upath fullpath = findIcon(path.path(), fPath, size); if (fullpath != null) { return fullpath; } } } for (int i = 0; i < iconPaths->getCount(); i++) { upath path = iconPaths->getPath(i)->joinPath(upath("/icons/")); upath fullpath = findIcon(path.path(), fPath, size); if (fullpath != null) return fullpath; } MSG(("Icon \"%s\" not found.", cs.c_str())); return null; } ref YIcon::loadIcon(int size) { ref icon; if (fPath != null) { upath fullPath; upath loadPath; if (fPath.isAbsolute() && fPath.fileExists()) { loadPath = fPath; } else { fullPath = findIcon(size); if (fullPath != null) { loadPath = fullPath; } else if (size != hugeSize() && (fullPath = findIcon(hugeSize())) != null) { loadPath = fullPath; } else if (size != largeSize() && (fullPath = findIcon(largeSize())) != null) { loadPath = fullPath; } else if (size != smallSize() && (fullPath = findIcon(smallSize())) != null) { loadPath = fullPath; } } if (loadPath != null) { cstring cs(loadPath.path()); icon = YImage::load(cs.c_str()); if (icon == null) warn(_("Out of memory for pixmap \"%s\""), cs.c_str()); } } #if 1 if (icon != null) { icon = icon->scale(size, size); } #endif return icon; } ref YIcon::huge() { if (fHuge == null && !loadedH) { fHuge = loadIcon(hugeSize()); loadedH = true; if (fHuge == null && large() != null) fHuge = large()->scale(hugeSize(), hugeSize()); if (fHuge == null && small() != null) fHuge = small()->scale(hugeSize(), hugeSize()); } return fHuge; } ref YIcon::large() { if (fLarge == null && !loadedL) { fLarge = loadIcon(largeSize()); loadedL = true; if (fLarge == null && huge() != null) fLarge = huge()->scale(largeSize(), largeSize()); if (fLarge == null && small() != null) fLarge = small()->scale(largeSize(), largeSize()); } return fLarge; } ref YIcon::small() { if (fSmall == null && !loadedS) { fSmall = loadIcon(smallSize()); loadedS = true; if (fSmall == null && large() != null) fSmall = large()->scale(smallSize(), smallSize()); if (fSmall == null && huge() != null) fSmall = huge()->scale(smallSize(), smallSize()); } return fSmall; } ref YIcon::getScaledIcon(int size) { ref base = null; #if 1 if (size == smallSize()) base = small(); else if (size == largeSize()) base = large(); else if (size == hugeSize()) base = huge(); #endif if (base == null) base = huge(); if (base == null) base = large(); if (base == null) base = small(); if (base != null) { ref img = base->scale(size, size); return img; } return base; } static YRefArray iconCache; void YIcon::removeFromCache() { int n = cacheFind(iconName()); if (n >= 0) { fPath = null; iconCache.remove(n); } } int YIcon::cacheFind(upath name) { int l, r, m; l = 0; r = iconCache.getCount(); while (l < r) { m = (l + r) / 2; ref found = iconCache.getItem(m); int cmp = name.path().compareTo(found->iconName().path()); if (cmp == 0) { return m; } else if (cmp < 0) r = m; else l = m + 1; } return -(l + 1); } ref YIcon::getIcon(const char *name) { int n = cacheFind(name); if (n >= 0) return iconCache.getItem(n); refnewicon; newicon.init(new YIcon(name)); if (newicon != null) { newicon->setCached(true); iconCache.insert(-n - 1, newicon); } return getIcon(name); } void YIcon::freeIcons() { while (iconCache.getCount() > 0) iconCache.getItem(0)->removeFromCache(); } int YIcon::smallSize() { return smallIconSize; } int YIcon::largeSize() { return largeIconSize; } int YIcon::hugeSize() { return hugeIconSize; } void YIcon::draw(Graphics &g, int x, int y, int size) { ref image = getScaledIcon(size); if (image != null) { if (!doubleBuffer) { g.drawImage(image, x, y); } else { g.compositeImage(image, 0, 0, size, size, x, y); } } } #endif icewm-1.3.7/src/ref.cc0000664000076600007660000000013111463274240013474 0ustar develdevel#include "config.h" #include "ref.h" void refcounted::__destroy() { delete this; } icewm-1.3.7/src/ycursor.h0000644000076600007660000000201611463274240014272 0ustar develdevel#ifndef __YCURSOR_H #define __YCURSOR_H #include "config.h" #include "upath.h" class YCursor { public: #if 0 YCursor(char const * filename, int hotSpotX, int hotSpotY): fOwned(true) { load(filename, hotSpotX, hotSpotY); } #endif ~YCursor(); YCursor(Cursor const cursor = None): fCursor(cursor), fOwned(false) { } YCursor(YCursor & other): fCursor(other.fCursor), fOwned(true) { other.fOwned = false; } YCursor(YCursor const & other): fCursor(other.fCursor), fOwned(false) { } YCursor& operator= (YCursor & other) { fCursor = other.fCursor; fOwned = true; other.fOwned = false; return *this; } YCursor& operator= (YCursor const & other) { fCursor = other.fCursor; fOwned = false; return *this; } void load(upath name, unsigned int fallback); Cursor handle() const { return fCursor; } private: Cursor fCursor; bool fOwned; void load(upath path); }; #endif icewm-1.3.7/src/ywindow.h0000644000076600007660000002266211463274240014275 0ustar develdevel#ifndef __YWINDOW_H #define __YWINDOW_H #include "ypaint.h" #include "ycursor.h" #include "yarray.h" class YPopupWindow; class YToolTip; class YTimer; class YAutoScroll; class YRect; #ifdef XINERAMA extern "C" { #include } #endif #ifdef CONFIG_GRADIENTS #define INIT_GRADIENT(Member, Value) , Member(Value) #else #define INIT_GRADIENT(Member, Value) #endif struct DesktopScreenInfo { int screen_number; int x_org; int y_org; int width; int height; }; class YWindow { public: YWindow(YWindow *aParent = 0, Window win = 0); virtual ~YWindow(); void setStyle(unsigned long aStyle); void show(); void hide(); virtual void raise(); virtual void lower(); void repaint(); void repaintFocus(); void repaintSync(); void reparent(YWindow *parent, int x, int y); void setWindowFocus(); void setTitle(char const * title); void setClassHint(char const * rName, char const * rClass); void setGeometry(const YRect &r); void setSize(int width, int height); void setPosition(int x, int y); virtual void configure(const YRect &r); virtual void paint(Graphics &g, const YRect &r); virtual void paintFocus(Graphics &, const YRect &) {} virtual void handleEvent(const XEvent &event); virtual void handleExpose(const XExposeEvent &expose); virtual void handleGraphicsExpose(const XGraphicsExposeEvent &graphicsExpose); virtual void handleConfigure(const XConfigureEvent &configure); virtual bool handleKey(const XKeyEvent &key); virtual void handleButton(const XButtonEvent &button); virtual void handleMotion(const XMotionEvent &motion); virtual void handleCrossing(const XCrossingEvent &crossing); virtual void handleProperty(const XPropertyEvent &) {} virtual void handleColormap(const XColormapEvent &) {} virtual void handleFocus(const XFocusChangeEvent &); virtual void handleClientMessage(const XClientMessageEvent &message); virtual void handleSelectionClear(const XSelectionClearEvent &clear); virtual void handleSelectionRequest(const XSelectionRequestEvent &request); virtual void handleSelection(const XSelectionEvent &selection); #if 0 virtual void handleVisibility(const XVisibilityEvent &visibility); virtual void handleCreateWindow(const XCreateWindowEvent &createWindow); #endif void handleMapNotify(const XMapEvent &map); virtual void handleUnmapNotify(const XUnmapEvent &unmap); virtual void handleUnmap(const XUnmapEvent &unmap); virtual void handleDestroyWindow(const XDestroyWindowEvent &destroyWindow); virtual void handleReparentNotify(const XReparentEvent &) {} virtual void handleConfigureRequest(const XConfigureRequestEvent &); virtual void handleMapRequest(const XMapRequestEvent &) {} #ifdef CONFIG_SHAPE virtual void handleShapeNotify(const XShapeEvent &) {} #endif #ifdef CONFIG_XRANDR virtual void handleRRScreenChangeNotify(const XRRScreenChangeNotifyEvent &/*xrrsc*/) {} #endif virtual void handleClickDown(const XButtonEvent &, int) {} virtual void handleClick(const XButtonEvent &, int) {} virtual void handleBeginDrag(const XButtonEvent &, const XMotionEvent &) {} virtual void handleDrag(const XButtonEvent &, const XMotionEvent &) {} virtual void handleEndDrag(const XButtonEvent &, const XButtonEvent &) {} virtual void handleEndPopup(YPopupWindow *popup); virtual void handleClose(); virtual bool handleAutoScroll(const XMotionEvent &mouse); void beginAutoScroll(bool autoScroll, const XMotionEvent *motion); void setPointer(const YCursor& pointer); void setGrabPointer(const YCursor& pointer); void grabKeyM(int key, unsigned modifiers); void grabKey(int key, unsigned modifiers); void grabVKey(int key, unsigned vmodifiers); unsigned VMod(int modifiers); void grabButtonM(int button, unsigned modifiers); void grabButton(int button, unsigned modifiers); void grabVButton(int button, unsigned vmodifiers); void captureEvents(); void releaseEvents(); Window handle(); YWindow *parent() const { return fParentWindow; } ref beginPaint(YRect &r); void endPaint(Graphics &g, ref pixmap, YRect &r); void paintExpose(int ex, int ey, int ew, int eh); Graphics & getGraphics(); #ifdef CONFIG_GRADIENTS virtual ref getGradient() const { return (parent() ? parent()->getGradient() : null); } #endif int x() const { return fX; } int y() const { return fY; } int width() const { return fWidth; } int height() const { return fHeight; } bool visible() const { return (flags & wfVisible); } bool created() const { return (flags & wfCreated); } bool adopted() const { return (flags & wfAdopted); } bool destroyed() const { return (flags & wfDestroyed); } bool focused() const { return (flags & wfFocused); } virtual void donePopup(YPopupWindow * /*command*/); typedef enum { wsOverrideRedirect = 1 << 0, wsSaveUnder = 1 << 1, wsManager = 1 << 2, wsInputOnly = 1 << 3, wsOutputOnly = 1 << 4, wsPointerMotion = 1 << 5, wsDesktopAware = 1 << 6 } WindowStyle; virtual bool isFocusTraversable(); bool isFocused(); bool isEnabled() const { return fEnabled; } void setEnabled(bool enable); void nextFocus(); void prevFocus(); bool changeFocus(bool next); void requestFocus(bool requestUserFocus); void setFocus(YWindow *window); YWindow *getFocusWindow(); virtual void gotFocus(); virtual void lostFocus(); bool isToplevel() const { return fToplevel; } void setToplevel(bool toplevel) { fToplevel = toplevel; } YWindow *toplevel(); void installAccelerator(unsigned key, unsigned mod, YWindow *win); void removeAccelerator(unsigned key, unsigned mod, YWindow *win); void setToolTip(const ustring &tip); void mapToGlobal(int &x, int &y); void mapToLocal(int &x, int &y); void setWinGravity(int gravity); void setBitGravity(int gravity); void setDND(bool enabled); void XdndStatus(bool acceptDrop, Atom dropAction); virtual void handleXdnd(const XClientMessageEvent &message); virtual void handleDNDEnter(); virtual void handleDNDLeave(); virtual void handleDNDPosition(int x, int y); bool getCharFromEvent(const XKeyEvent &key, char *s, int maxLen); int getClickCount() { return fClickCount; } void scrollWindow(int dx, int dy); bool toolTipVisible(); virtual void updateToolTip(); void acquireSelection(bool selection); void clearSelection(bool selection); void requestSelection(bool selection); bool hasPopup(); void setDoubleBuffer(bool doubleBuffer); private: typedef enum { wfVisible = 1 << 0, wfCreated = 1 << 1, wfAdopted = 1 << 2, wfDestroyed = 1 << 3, wfNullSize = 1 << 5, wfFocused = 1 << 6 } WindowFlags; void create(); void destroy(); void insertWindow(); void removeWindow(); bool nullGeometry(); YWindow *fParentWindow; YWindow *fNextWindow; YWindow *fPrevWindow; YWindow *fFirstWindow; YWindow *fLastWindow; YWindow *fFocusedWindow; Window fHandle; unsigned long flags; unsigned long fStyle; int fX, fY; int fWidth, fHeight; YCursor fPointer; int unmapCount; Graphics *fGraphics; long fEventMask; int fWinGravity, fBitGravity; bool fEnabled; bool fToplevel; bool fDoubleBuffer; typedef struct _YAccelerator { unsigned key; unsigned mod; YWindow *win; struct _YAccelerator *next; } YAccelerator; YAccelerator *accel; #ifdef CONFIG_TOOLTIP YToolTip *fToolTip; #endif static XButtonEvent fClickEvent; static YWindow *fClickWindow; static Time fClickTime; static int fClickCount; static int fClickDrag; static unsigned fClickButton; static unsigned fClickButtonDown; static YTimer *fToolTipTimer; bool fDND; Window XdndDragSource; Window XdndDropTarget; static YAutoScroll *fAutoScroll; void addIgnoreUnmap(Window w); bool ignoreUnmap(Window w); void removeAllIgnoreUnmap(Window w); }; class YDesktop: public YWindow { public: YDesktop(YWindow *aParent = 0, Window win = 0); virtual ~YDesktop(); virtual void resetColormapFocus(bool active); void updateXineramaInfo(int &w, int &h); void getScreenGeometry(int *x, int *y, int *width, int *height, int screen_no = -1); int getScreenForRect(int x, int y, int width, int height); virtual void grabKeys() {} protected: YArray xiInfo; }; extern YDesktop *desktop; #ifdef CONFIG_SHAPE extern int shapesSupported; extern int shapeEventBase, shapeErrorBase; #endif #ifdef CONFIG_XRANDR extern int xrandrSupported; extern bool xrandr12; extern int xrandrEventBase, xrandrErrorBase; #endif extern Atom _XA_WM_PROTOCOLS; extern Atom _XA_WM_DELETE_WINDOW; extern Atom _XA_WM_TAKE_FOCUS; extern Atom _XA_WM_STATE; extern Atom _XA_WM_CHANGE_STATE; extern Atom _XATOM_MWM_HINTS; extern Atom _XA_WM_COLORMAP_WINDOWS; extern Atom _XA_CLIPBOARD; extern Atom _XA_XEMBED_INFO; /* Xdnd */ extern Atom XA_XdndAware; extern Atom XA_XdndEnter; extern Atom XA_XdndLeave; extern Atom XA_XdndPosition; extern Atom XA_XdndStatus; extern Atom XA_XdndDrop; extern Atom XA_XdndFinished; #endif icewm-1.3.7/src/wmtitle.cc0000644000076600007660000004047111463274240014416 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek */ #include "config.h" #include "ylib.h" #include "ypixbuf.h" #include "wmtitle.h" #include "wmframe.h" #include "wmwinlist.h" #include "wmapp.h" #include "yprefs.h" #include "prefs.h" #include static ref titleFont; YColor *activeTitleBarBg = 0; YColor *activeTitleBarFg = 0; YColor *activeTitleBarSt = 0; YColor *inactiveTitleBarBg = 0; YColor *inactiveTitleBarFg = 0; YColor *inactiveTitleBarSt = 0; #ifdef CONFIG_LOOK_PIXMAP ref titleJ[2]; // Frame <=> Left buttons ref titleL[2]; // Left buttons <=> Left pane ref titleS[2]; // Left pane ref titleP[2]; // Left pane <=> Title ref titleT[2]; // Title ref titleM[2]; // Title <=> Right pane ref titleB[2]; // Right pane ref titleR[2]; // Right pane <=> Right buttons ref titleQ[2]; // Right buttons <=> Frame #endif #ifdef CONFIG_GRADIENTS ref rgbTitleS[2]; ref rgbTitleT[2]; ref rgbTitleB[2]; #endif YFrameTitleBar::YFrameTitleBar(YWindow *parent, YFrameWindow *frame): YWindow(parent) { if (titleFont == null) titleFont = YFont::getFont(XFA(titleFontName)); if (activeTitleBarBg == 0) activeTitleBarBg = new YColor(clrActiveTitleBar); if (activeTitleBarFg == 0) activeTitleBarFg = new YColor(clrActiveTitleBarText); if (activeTitleBarSt == 0 && *clrActiveTitleBarShadow) activeTitleBarSt = new YColor(clrActiveTitleBarShadow); if (inactiveTitleBarBg == 0) inactiveTitleBarBg = new YColor(clrInactiveTitleBar); if (inactiveTitleBarFg == 0) inactiveTitleBarFg = new YColor(clrInactiveTitleBarText); if (inactiveTitleBarSt == 0 && *clrInactiveTitleBarShadow) inactiveTitleBarSt = new YColor(clrInactiveTitleBarShadow); movingWindow = 0; fFrame = frame; wasCanRaise = false; } YFrameTitleBar::~YFrameTitleBar() { } void YFrameTitleBar::handleButton(const XButtonEvent &button) { if (button.type == ButtonPress) { if ((buttonRaiseMask & (1 << (button.button - 1))) && !(button.state & (xapp->AltMask | ControlMask | xapp->ButtonMask))) { getFrame()->activate(); wasCanRaise = getFrame()->canRaise(); if (raiseOnClickTitleBar) getFrame()->wmRaise(); } } #ifdef CONFIG_WINLIST else if (button.type == ButtonRelease) { if (button.button == 1 && IS_BUTTON(BUTTON_MODMASK(button.state), Button1Mask + Button3Mask)) { if (windowList) windowList->showFocused(button.x_root, button.y_root); } } #endif YWindow::handleButton(button); } void YFrameTitleBar::handleMotion(const XMotionEvent &motion) { YWindow::handleMotion(motion); } void YFrameTitleBar::handleClick(const XButtonEvent &up, int count) { if (count >= 2 && (count % 2 == 0)) { if (up.button == (unsigned) titleMaximizeButton && ISMASK(KEY_MODMASK(up.state), 0, ControlMask)) { if (getFrame()->canMaximize()) getFrame()->wmMaximize(); } else if (up.button == (unsigned) titleMaximizeButton && ISMASK(KEY_MODMASK(up.state), ShiftMask, ControlMask)) { if (getFrame()->canMaximize()) getFrame()->wmMaximizeVert(); } else if (up.button == (unsigned) titleMaximizeButton && xapp->AltMask && ISMASK(KEY_MODMASK(up.state), xapp->AltMask + ShiftMask, ControlMask)) { if (getFrame()->canMaximize()) getFrame()->wmMaximizeHorz(); } else if (up.button == (unsigned) titleRollupButton && ISMASK(KEY_MODMASK(up.state), 0, ControlMask)) { if (getFrame()->canRollup()) getFrame()->wmRollup(); } else if (up.button == (unsigned) titleRollupButton && ISMASK(KEY_MODMASK(up.state), ShiftMask, ControlMask)) { if (getFrame()->canMaximize()) getFrame()->wmMaximizeHorz(); } } else if (count == 1) { if (up.button == 3 && (KEY_MODMASK(up.state) & (xapp->AltMask)) == 0) { getFrame()->popupSystemMenu(this, up.x_root, up.y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal); } else if (up.button == 1) { if (KEY_MODMASK(up.state) == xapp->AltMask) { if (getFrame()->canLower()) getFrame()->wmLower(); } else if (lowerOnClickWhenRaised && (buttonRaiseMask & (1 << (up.button - 1))) && ((up.state & (ControlMask | xapp->ButtonMask)) == Button1Mask)) { if (!wasCanRaise) { if (getFrame()->canLower()) getFrame()->wmLower(); wasCanRaise = true; } } } } } void YFrameTitleBar::handleBeginDrag(const XButtonEvent &down, const XMotionEvent &/*motion*/) { if (getFrame()->canMove()) { getFrame()->startMoveSize(1, 1, 0, 0, down.x + x(), down.y + y()); } } void YFrameTitleBar::activate() { repaint(); #ifdef CONFIG_LOOK_WIN95 if (wmLook == lookWin95 && getFrame()->menuButton()) getFrame()->menuButton()->repaint(); #endif #ifdef CONFIG_LOOK_PIXMAP if (wmLook == lookPixmap || wmLook == lookMetal || wmLook == lookGtk || wmLook == lookFlat) { if (getFrame()->menuButton()) getFrame()->menuButton()->repaint(); if (getFrame()->closeButton()) getFrame()->closeButton()->repaint(); if (getFrame()->maximizeButton()) getFrame()->maximizeButton()->repaint(); if (getFrame()->minimizeButton()) getFrame()->minimizeButton()->repaint(); if (getFrame()->hideButton()) getFrame()->hideButton()->repaint(); if (getFrame()->rollupButton()) getFrame()->rollupButton()->repaint(); if (getFrame()->depthButton()) getFrame()->depthButton()->repaint(); } #endif } void YFrameTitleBar::deactivate() { activate(); // for now } int YFrameTitleBar::titleLen() { ustring title = getFrame()->client()->windowTitle(); int tlen = title != null ? titleFont->textWidth(title) : 0; return tlen; } void YFrameTitleBar::paint(Graphics &g, const YRect &/*r*/) { if (getFrame()->client() == NULL) return; YColor *bg = getFrame()->focused() ? activeTitleBarBg : inactiveTitleBarBg; YColor *fg = getFrame()->focused() ? activeTitleBarFg : inactiveTitleBarFg; YColor *st = getFrame()->focused() ? activeTitleBarSt : inactiveTitleBarSt; int onLeft(0); int onRight(width()); if (titleButtonsLeft) { for (const char *bc = titleButtonsLeft; *bc; bc++) { YWindow const *b(getFrame()->getButton(*bc)); if (b) onLeft = max(onLeft, (int)(b->x() + b->width())); } } if (titleButtonsRight) { for (const char *bc = titleButtonsRight; *bc; bc++) { YWindow const *b(getFrame()->getButton(*bc)); if (b) onRight = min(onRight, b->x()); } } g.setFont(titleFont); ustring title = getFrame()->getTitle(); int const yPos((height() - titleFont->height()) / 2 + titleFont->ascent() + titleBarVertOffset); int tlen = title != null ? titleFont->textWidth(title) : 0; int stringOffset(onLeft + (onRight - onLeft - tlen) * (int) titleBarJustify / 100); g.setColor(bg); switch (wmLook) { #ifdef CONFIG_LOOK_WIN95 case lookWin95: #endif #ifdef CONFIG_LOOK_NICE case lookNice: #endif g.fillRect(0, 0, width(), height()); break; #ifdef CONFIG_LOOK_WARP3 case lookWarp3: { #ifdef TITLEBAR_BOTTOM int y = 1; int y2 = 0; #else int y = 0; int y2 = height() - 1; #endif g.fillRect(0, y, width(), height() - 1); g.setColor(getFrame()->focused() ? fg->darker() : bg->darker()); g.drawLine(0, y2, width(), y2); } break; #endif #ifdef CONFIG_LOOK_WARP4 case lookWarp4: if (titleBarJustify == 0) stringOffset++; else if (titleBarJustify == 100) stringOffset--; if (getFrame()->focused()) { g.fillRect(1, 1, width() - 2, height() - 2); g.setColor(inactiveTitleBarBg); g.draw3DRect(onLeft, 0, onRight - 1, height() - 1, false); } else { g.fillRect(0, 0, width(), height()); } break; #endif #ifdef CONFIG_LOOK_MOTIF case lookMotif: if (titleBarJustify == 0) stringOffset++; else if (titleBarJustify == 100) stringOffset--; g.fillRect(1, 1, width() - 2, height() - 2); g.draw3DRect(onLeft, 0, onRight - 1 - onLeft, height() - 1, true); break; #endif #ifdef CONFIG_LOOK_PIXMAP case lookPixmap: case lookMetal: case lookFlat: case lookGtk: { int const pi(getFrame()->focused() ? 1 : 0); // !!! we really need a fallback mechanism for small windows if (titleL[pi] != null) { g.drawPixmap(titleL[pi], onLeft, 0); onLeft += titleL[pi]->width(); } if (titleR[pi] != null) { onRight-= titleR[pi]->width(); g.drawPixmap(titleR[pi], onRight, 0); } int lLeft(onLeft + (titleP[pi] != null ? (int)titleP[pi]->width() : 0)), lRight(onRight - (titleM[pi] != null ? (int)titleM[pi]->width() : 0)); tlen = clamp(lRight - lLeft, 0, tlen); stringOffset = lLeft + (lRight - lLeft - tlen) * (int) titleBarJustify / 100; lLeft = stringOffset; lRight = stringOffset + tlen; if (lLeft < lRight) { #ifdef CONFIG_GRADIENTS if (rgbTitleT[pi] != null) { int const gx(titleBarJoinLeft ? lLeft - onLeft : 0); int const gw((titleBarJoinRight ? onRight : lRight) - (titleBarJoinLeft ? onLeft : lLeft)); g.drawGradient(rgbTitleT[pi], lLeft, 0, lRight - lLeft, height(), gx, 0, gw, height()); } else #endif if (titleT[pi] != null) g.repHorz(titleT[pi], lLeft, 0, lRight - lLeft); else g.fillRect(lLeft, 0, lRight - lLeft, height()); } if (titleP[pi] != null) { lLeft-= titleP[pi]->width(); g.drawPixmap(titleP[pi], lLeft, 0); } if (titleM[pi] != null) { g.drawPixmap(titleM[pi], lRight, 0); lRight+= titleM[pi]->width(); } if (onLeft < lLeft) { #ifdef CONFIG_GRADIENTS if (rgbTitleS[pi] != null) { int const gw((titleBarJoinLeft ? titleBarJoinRight ? onRight : lRight : lLeft) - onLeft); g.drawGradient(rgbTitleS[pi], onLeft, 0, lLeft - onLeft, height(), 0, 0, gw, height()); } else #endif if (titleS[pi] != null) g.repHorz(titleS[pi], onLeft, 0, lLeft - onLeft); else g.fillRect(onLeft, 0, lLeft - onLeft, height()); } if (lRight < onRight) { #ifdef CONFIG_GRADIENTS if (rgbTitleB[pi] != null) { int const gx(titleBarJoinRight ? titleBarJoinLeft ? lRight - onLeft: lRight - lLeft : 0); int const gw(titleBarJoinRight ? titleBarJoinLeft ? onRight - onLeft : onRight - lLeft : onRight - lRight); g.drawGradient(rgbTitleB[pi], lRight, 0, onRight - lRight, height(), gx, 0, gw, height()); } else #endif if (titleB[pi] != null) g.repHorz(titleB[pi], lRight, 0, onRight - lRight); else g.fillRect(lRight, 0, onRight - lRight, height()); } if (titleJ[pi] != null) g.drawPixmap(titleJ[pi], 0, 0); if (titleQ[pi] != null) g.drawPixmap(titleQ[pi], width() - titleQ[pi]->width(), 0); break; } #endif default: break; } if (title != null && tlen) { stringOffset+= titleBarHorzOffset; if (st) { g.setColor(st); g.drawStringEllipsis(stringOffset + 1, yPos + 1, title, tlen); } g.setColor(fg); g.drawStringEllipsis(stringOffset, yPos, title, tlen); } } #ifdef CONFIG_SHAPED_DECORATION void YFrameTitleBar::renderShape(Pixmap shape) { #ifdef CONFIG_LOOK_PIXMAP if (wmLook == lookPixmap || wmLook == lookMetal || wmLook == lookGtk || wmLook == lookFlat) { Graphics g(shape, getFrame()->width(), getFrame()->height()); int onLeft(0); int onRight(width()); if (titleButtonsLeft) for (const char *bc = titleButtonsLeft; *bc; bc++) { YFrameButton const *b(getFrame()->getButton(*bc)); if (b) { onLeft = max(onLeft, (int)(b->x() + b->width())); ref pixmap = b->getPixmap(0); if (pixmap != null && b->getPixmap(1) != null ) { g.copyDrawable(pixmap->mask(), 0, 0, b->width(), b->height(), x() + b->x(), y() + b->y()); } } } if (titleButtonsRight) for (const char *bc = titleButtonsRight; *bc; bc++) { YFrameButton const *b(getFrame()->getButton(*bc)); if (b) { onRight = min(onRight, b->x()); ref pixmap = b->getPixmap(0); if ( pixmap != null && b->getPixmap(1) != null ) { g.copyDrawable(pixmap->mask(), 0, 0, b->width(), b->height(), x() + b->x(), y() + b->y()); } } } onLeft+= x(); onRight+= x(); ustring title = getFrame()->getTitle(); int tlen = title != null ? titleFont->textWidth(title) : 0; int stringOffset(onLeft + (onRight - onLeft - tlen) * (int) titleBarJustify / 100); int const pi(getFrame()->focused() ? 1 : 0); if (titleL[pi] != null) { g.drawMask(titleL[pi], onLeft, y()); onLeft+= titleL[pi]->width(); } if (titleR[pi] != null) { onRight-= titleR[pi]->width(); g.drawMask(titleR[pi], onRight, y()); } int lLeft(onLeft + (titleP[pi] != null ? (int)titleP[pi]->width() : 0)), lRight(onRight - (titleM[pi] != null ? (int)titleM[pi]->width() : 0)); tlen = clamp(lRight - lLeft, 0, tlen); stringOffset = lLeft + (lRight - lLeft - tlen) * (int) titleBarJustify / 100; lLeft = stringOffset; lRight = stringOffset + tlen; if (lLeft < lRight && titleT[pi] != null) g.repHorz(titleT[pi]->mask(), titleT[pi]->width(), titleT[pi]->height(), lLeft, y(), lRight - lLeft); if (titleP[pi] != null) { lLeft-= titleP[pi]->width(); g.drawMask(titleP[pi], lLeft, y()); } if (titleM[pi] != null) { g.drawMask(titleM[pi], lRight, y()); lRight+= titleM[pi]->width(); } if (onLeft < lLeft && titleS[pi] != null) g.repHorz(titleS[pi]->mask(), titleS[pi]->width(), titleS[pi]->height(), onLeft, y(), lLeft - onLeft); if (lRight < onRight && titleB[pi] != null) g.repHorz(titleB[pi]->mask(), titleB[pi]->width(), titleB[pi]->height(), lRight, y(), onRight - lRight); if (titleJ[pi] != null) g.drawMask(titleJ[pi], x(), y()); if (titleQ[pi] != null) g.drawMask(titleQ[pi], x() + width() - titleQ[pi]->width(), y()); } #endif } #endif icewm-1.3.7/src/wmwinmenu.cc0000644000076600007660000000740711463274240014761 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek */ #include "config.h" #ifdef CONFIG_WINMENU #include "wmaction.h" #include "ylib.h" #include "ymenu.h" #include "ymenuitem.h" #include "yaction.h" #include "sysdep.h" #include "prefs.h" #include "yicon.h" #include "wmmgr.h" #include "wmframe.h" #include "wmwinmenu.h" #include "intl.h" class ActivateWindowMenuItem: public YMenuItem, public YAction { public: ActivateWindowMenuItem(YFrameWindow *frame): YMenuItem(frame->getTitle(), -1, null, this, 0), fFrame(frame) { #ifndef LITE if (fFrame->clientIcon() != null) setIcon(fFrame->clientIcon()); #endif } virtual void actionPerformed(YActionListener * /*listener*/, YAction * /*action*/, unsigned int modifiers) { YFrameWindow *f = manager->topLayer(); while (f) { if ((void *)f == fFrame) { if (modifiers & ShiftMask) f->wmOccupyOnlyWorkspace(manager->activeWorkspace()); manager->activate(f, true); return ; } f = f->nextLayer(); } } private: YFrameWindow *fFrame; }; YMenu *YWindowManager::createWindowMenu(YMenu *menu, long workspace) { if (!menu) menu = new YMenu(); int level, levelCount, windowLevel, layerCount; YFrameWindow *frame; bool needSeparator = false; /// !!! fix performance (smarter update, on change only) for (int layer = 0 ; layer < WinLayerCount; layer++) { layerCount = 0; if (top(layer) == 0) continue; for (level = 0; level < 4; level++) { levelCount = 0; for (frame = top(layer); frame; frame = frame->next()) { if (!frame->client()->adopted()) continue; if (!frame->visibleOn(workspace)) continue; #ifndef NO_WINDOW_OPTIONS if (frame->frameOptions() & YFrameWindow::foIgnoreWinList) continue; #endif if (workspace != activeWorkspace() && frame->visibleOn(activeWorkspace())) continue; windowLevel = 0; if (frame->isHidden()) windowLevel = 3; else if (frame->isMinimized()) windowLevel = 2; else if (frame->isRollup()) windowLevel = 1; if (level != windowLevel) continue; if ((levelCount == 0 && level > 0) || ((layerCount == 0 && layer > 0) && needSeparator)) menu->addSeparator(); menu->add(new ActivateWindowMenuItem(frame)); levelCount++; layerCount++; needSeparator = true; } } } return menu; } WindowListMenu::WindowListMenu(YWindow *parent): YMenu(parent) { } void WindowListMenu::updatePopup() { removeAll(); manager->createWindowMenu(this, manager->activeWorkspace()); // !!! fix bool first = true; for (long d = 0; d < manager->workspaceCount(); d++) { if (d == manager->activeWorkspace()) continue; if (first) { addSeparator(); first = false; } char s[50]; sprintf(s, _("%lu. Workspace %-.32s"), (unsigned long)(d + 1), manager->workspaceName(d)); YMenu *sub = 0; if (manager->windowCount(d) > 0) // !!! do lazy create menu instead sub = manager->createWindowMenu(0, d); addItem(s, (d < 10) ? 0 : -1, workspaceActionActivate[d], sub); } #ifdef CONFIG_WINLIST addSeparator(); addItem(_("_Window list"), -2, KEY_NAME(gKeySysWindowList), actionWindowList); #endif } #endif icewm-1.3.7/src/binascii.h0000644000076600007660000000043311463274240014346 0ustar develdevel#ifndef __BINASCII_H #define __BINASCII_H class BinAscii { public: static int unhex(int c) { return ((c >= '0' && c <= '9') ? c - '0' : (c >= 'A' && c <= 'F') ? c - 'A' + 10 : (c >= 'a' && c <= 'f') ? c - 'a' + 10 : -1); } }; #endif icewm-1.3.7/src/icesm.cc0000644000076600007660000000602511463274240014026 0ustar develdevel#include "config.h" #include "base.h" #include "yxapp.h" #include "sysdep.h" #include "yconfig.h" char const *ApplicationName = ICESMEXE; class SessionManager: public YApplication { public: SessionManager(int *argc, char ***argv): YApplication(argc, argv) { logout = false; wm_pid = -1; tray_pid = -1; bg_pid = -1; catchSignal(SIGCHLD); catchSignal(SIGTERM); catchSignal(SIGINT); } void runScript(const char *scriptName) { upath scriptFile = YApplication::findConfigFile(scriptName); cstring cs(scriptFile.path()); const char *args[] = { cs.c_str(), 0, 0 }; MSG(("Running session script: %s", cs.c_str())); app->runProgram(cs.c_str(), args); } void runIcewmbg(bool quit = false) { const char *args[] = { ICEWMBGEXE, 0, 0 }; if (quit) { args[1] = "-q"; } bg_pid = app->runProgram(args[0], args); } void runIcewmtray(bool quit = false) { const char *args[] = { ICEWMTRAYEXE, 0 }; if (quit) { if (tray_pid != -1) { kill(tray_pid, SIGTERM); int status; waitpid(tray_pid, &status, 0); } tray_pid = -1; } else tray_pid = app->runProgram(args[0], args); } void runWM(bool quit = false) { const char *args[] = { ICEWMEXE, 0 }; if (quit) { if (wm_pid != -1) { kill(wm_pid, SIGTERM); int status; waitpid(wm_pid, &status, 0); } wm_pid = -1; } else wm_pid = app->runProgram(args[0], args); } void handleSignal(int sig) { if (sig == SIGTERM || sig == SIGINT) { signal(SIGTERM, SIG_IGN); signal(SIGINT, SIG_IGN); exit(0); } if (sig == SIGCHLD) { int status = -1; int pid = -1; while ((pid = waitpid(-1, &status, WNOHANG)) > 0) { MSG(("waitpid()=%d, status=%d", pid, status)); if (pid == wm_pid) { wm_pid = -1; if (WIFEXITED(status)) { exit(0); } else { if (WEXITSTATUS(status) != 0) runWM(); else if (WIFSIGNALED(status) != 0) runWM(); } } if (pid == tray_pid) tray_pid = -1; if (pid == bg_pid) bg_pid = -1; } } } private: int wm_pid; int tray_pid; int bg_pid; bool logout; }; int main(int argc, char **argv) { SessionManager xapp(&argc, &argv); xapp.runIcewmbg(); xapp.runWM(); xapp.runIcewmtray(); xapp.runScript("startup"); xapp.mainLoop(); xapp.runScript("shutdown"); xapp.runIcewmtray(true); xapp.runWM(true); xapp.runIcewmbg(true); return 0; } icewm-1.3.7/src/yurl.h0000644000076600007660000000213111463274240013555 0ustar develdevel/* * IceWM - Definition of an URL decoder * Copyright (C) 2001 The Authors of IceWM * * Release under terms of the GNU Library General Public License */ #ifndef __YURL_H #define __YURL_H #include "ref.h" #include "mstring.h" #include "upath.h" /******************************************************************************* * An URL decoder ******************************************************************************/ class YURL: public refcounted { public: YURL(); YURL(ustring url, bool expectInetScheme = true); ~YURL(); static ref fromPath(upath path); ustring scheme() const { return fScheme; } ustring user() const { return fUser; } ustring password() const { return fPassword; } ustring host() const { return fHost; } ustring port() const { return fPort; } ustring path() const { return fPath; } static ustring unescape(ustring str); private: ustring fScheme; ustring fUser; ustring fPassword; ustring fHost; ustring fPort; ustring fPath; void assign(ustring url, bool expectInetScheme = true); }; #endif icewm-1.3.7/src/amailbox.cc0000644000076600007660000003272311463274240014526 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek * * MailBox Status * !!! this should be external module (replacable for POP,IMAP,...) */ #include "config.h" #include "intl.h" #ifdef CONFIG_APPLET_MAILBOX #include "ylib.h" #include "amailbox.h" #include "sysdep.h" #include "base.h" #include "prefs.h" #include "wmapp.h" #include #include static YColor *taskBarBg = 0; extern ref taskbackPixmap; ref mailPixmap; ref noMailPixmap; ref errMailPixmap; ref unreadMailPixmap; ref newMailPixmap; MailCheck::MailCheck(MailBoxStatus *mbx): state(IDLE), fMbx(mbx), fLastSize(-1), fLastCount(-1), fLastUnseen(0), fLastCountSize(-1), fLastCountTime(0) { sk.setListener(this); } MailCheck::~MailCheck() { sk.close(); } void MailCheck::setURL(ustring url) { if (url.startsWith(mstring("/"))) url = url.insert(0, mstring("file://")); fURL.init(new YURL(url)); if (fURL != null && fURL->scheme() != null) { if (fURL->scheme().equals(mstring("pop3")) || fURL->scheme().equals(mstring("imap"))) { if (fURL->scheme().charAt(0) == 'i') protocol = IMAP; else protocol = POP3; server_addr.sin_family = AF_INET; server_addr.sin_port = htons(fURL->port() != null? atoi(cstring(fURL->port()).c_str()) : (protocol == IMAP ? 143 : 110)); if (fURL->host() != null) { /// !!! fix, need nonblocking resolve struct hostent const * host(gethostbyname(cstring(fURL->host()).c_str())); if (host) memcpy(&server_addr.sin_addr, host->h_addr_list[0], sizeof(server_addr.sin_addr)); else state = ERROR; } else server_addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); } else if (!strcmp(cstring(fURL->scheme()).c_str(), "file")) protocol = LOCALFILE; else warn(_("Invalid mailbox protocol: \"%s\""), cstring(fURL->scheme()).c_str()); } else warn(_("Invalid mailbox path: \"%s\""), cstring(url).c_str()); } void MailCheck::countMessages() { int fd = open(cstring(fURL->path()).c_str(), O_RDONLY); int mails = 0; if (fd != -1) { char buf[4096]; const char *pat = "\nFrom "; int plen = strlen(pat); int pos = 1; int i, len; while ((len = read(fd, buf, sizeof(buf))) > 0) { for (i = 0; i < len;) { if (buf[i] != pat[pos]) if (pos) pos = 0; else i++; else { i++; if (++pos == plen) { pos = 0; mails++; } } } } close(fd); } fLastCount = mails; } void MailCheck::startCheck() { if (state == ERROR) state = IDLE; if (state != IDLE && state != SUCCESS) return ; //puts(protocol == FILE ? "file" : protocol == POP3 ? "POP3" : "IMAP"); if (protocol == LOCALFILE) { struct stat st; //MailBoxStatus::MailBoxState fNewState = fState; if (fURL->path() == null) return; if (!countMailMessages) fLastCount = -1; if (stat(cstring(fURL->path()).c_str(), &st) == -1) { fMbx->mailChecked(MailBoxStatus::mbxNoMail, 0); fLastCount = 0; fLastSize = 0; fLastUnseen = 0; } else { if (countMailMessages && (st.st_size != fLastCountSize || st.st_mtime != fLastCountTime)) { countMessages(); fLastCountTime = st.st_mtime; fLastCountSize = fLastSize; } if (st.st_size == 0) fMbx->mailChecked(MailBoxStatus::mbxNoMail, fLastCount); else if (st.st_size > fLastSize && fLastSize != -1) fMbx->mailChecked(MailBoxStatus::mbxHasNewMail, fLastCount); else if (st.st_mtime > st.st_atime) fMbx->mailChecked(MailBoxStatus::mbxHasUnreadMail, fLastCount); else fMbx->mailChecked(MailBoxStatus::mbxHasMail, fLastCount); fLastSize = st.st_size; } } else { if (sk.connect((struct sockaddr *) &server_addr, sizeof(server_addr)) == 0) { state = CONNECTING; got = 0; } else { error(); } } } void MailCheck::socketConnected() { //puts("CONNECTED"); got = 0; sk.read(bf, sizeof(bf)); state = WAIT_READY; } void MailCheck::socketError(int err) { //if (err) printf("error: %d\n", err); //else puts("EOF"); //app->exit(err ? 1 : 0); if (err != 0 || state != SUCCESS) error(); else { sk.close(); } } void MailCheck::error() { sk.close(); state = ERROR; fMbx->mailChecked(MailBoxStatus::mbxError, -1); } void MailCheck::socketDataRead(char *buf, int len) { //msg("got %d state=%d", len, state); bool found = false; for (int i = 0; i < len; i++) { //putchar(buf[i]); if (buf[i] == '\r') buf[i] = 0; if (buf[i] == '\n') { found = true; buf[i] = 0; break; } } got += len; if (!found) { if (got < sizeof(bf)) { sk.read(bf + got , sizeof(bf) - got); return ; } else { error(); return ; } } if (protocol == POP3) { if (strncmp(bf, "+OK", 3) != 0) { MSG(("pop3: not +OK: %s", bf)); error(); return ; } if (state == WAIT_READY) { MSG(("pop3: ready")); char * user(cstrJoin("USER ", cstring(fURL->user()).c_str(), "\r\n", NULL)); sk.write(user, strlen(user)); state = WAIT_USER; delete[] user; } else if (state == WAIT_USER) { MSG(("pop3: login")); char * pass(cstrJoin("PASS ", cstring(fURL->password()).c_str(), "\r\n", NULL)); sk.write(pass, strlen(pass)); state = WAIT_PASS; delete[] pass; } else if (state == WAIT_PASS) { MSG(("pop3: stat")); static char stat[] = "STAT\r\n"; sk.write(stat, strlen(stat)); state = WAIT_STAT; } else if (state == WAIT_STAT) { static char quit[] = "QUIT\r\n"; MSG(("pop3: quit")); //puts(bf); if (sscanf(bf, "+OK %lu %lu", &fCurCount, &fCurSize) != 2) { fCurCount = 0; fCurSize = 0; } sk.write(quit, strlen(quit)); state = WAIT_QUIT; } else if (state == WAIT_QUIT) { MSG(("pop3: done")); //puts("GOT QUIT"); //app->exit(0); sk.close(); state = SUCCESS; if (fCurSize == 0) fMbx->mailChecked(MailBoxStatus::mbxNoMail, fCurCount); else if (fCurSize > fLastSize && fLastSize != -1) fMbx->mailChecked(MailBoxStatus::mbxHasNewMail, fCurCount); else fMbx->mailChecked(MailBoxStatus::mbxHasMail, fCurCount); fLastSize = fCurSize; fLastCount = fCurCount; return ; } else { MSG(("pop3: what?: %s", bf)); } } else if (protocol == IMAP) { if (state == WAIT_READY) { MSG(("imap: login")); char * login(cstrJoin("0000 LOGIN ", cstring(fURL->user()).c_str(), " ", cstring(fURL->password()).c_str(), "\r\n", NULL)); sk.write(login, strlen(login)); state = WAIT_USER; delete[] login; } else if (state == WAIT_USER) { MSG(("imap: status")); char * status(cstrJoin("0001 STATUS ", (fURL->path() == null || fURL->path().equals("/")) ? "INBOX" : cstring(fURL->path()).c_str() + 1, " (MESSAGES)\r\n", NULL)); sk.write(status, strlen(status)); state = WAIT_STAT; delete[] status; } else if (state == WAIT_STAT) { MSG(("imap: logout")); char logout[] = "0002 LOGOUT\r\n", folder[128]; if (sscanf(bf, "* STATUS %127s (MESSAGES %lu)", folder, &fCurCount) != 2) { fCurCount = 0; } fCurUnseen = 0; sk.write(logout, strlen(logout)); state = WAIT_QUIT; } else if (state == WAIT_QUIT) { MSG(("imap: done")); //app->exit(0); sk.close(); state = SUCCESS; if (fCurCount == 0) fMbx->mailChecked(MailBoxStatus::mbxNoMail, fCurCount); else if (fCurCount > fLastCount && fLastCount != -1) fMbx->mailChecked(MailBoxStatus::mbxHasNewMail, fCurCount); else if (fCurUnseen != 0) fMbx->mailChecked(MailBoxStatus::mbxHasUnreadMail, fCurCount); else fMbx->mailChecked(MailBoxStatus::mbxHasMail, fCurCount); fLastUnseen = fCurUnseen; fLastCount = fCurCount; return ; } else { MSG(("imap: what?: %s", bf)); } } got = 0; sk.read(bf, sizeof(bf)); } MailBoxStatus::MailBoxStatus(mstring mailbox, YWindow *aParent): YWindow(aParent), fMailBox(mailbox), check(this) { if (taskBarBg == 0) { taskBarBg = new YColor(clrDefaultTaskBar); } setSize(16, 16); fMailboxCheckTimer = 0; fState = mbxNoMail; if (fMailBox != null) { cstring cs(fMailBox); MSG((_("Using MailBox \"%s\"\n"), cs.c_str())); check.setURL(fMailBox); fMailboxCheckTimer = new YTimer(mailCheckDelay * 1000); if (fMailboxCheckTimer) { fMailboxCheckTimer->setTimerListener(this); fMailboxCheckTimer->startTimer(); } checkMail(); } } MailBoxStatus::~MailBoxStatus() { if (fMailboxCheckTimer) { fMailboxCheckTimer->stopTimer(); fMailboxCheckTimer->setTimerListener(0); } delete fMailboxCheckTimer; fMailboxCheckTimer = 0; } void MailBoxStatus::paint(Graphics &g, const YRect &/*r*/) { ref pixmap; switch (fState) { case mbxHasMail: pixmap = mailPixmap; break; case mbxHasNewMail: pixmap = newMailPixmap; break; case mbxHasUnreadMail: pixmap = unreadMailPixmap; break; case mbxNoMail: pixmap = noMailPixmap; break; default: pixmap = errMailPixmap; break; } if (pixmap == null || pixmap->mask()) { #ifdef CONFIG_GRADIENTS ref gradient = parent()->getGradient(); if (gradient != null) g.drawImage(gradient, x(), y(), width(), height(), 0, 0); else #endif if (taskbackPixmap != null) g.fillPixmap(taskbackPixmap, 0, 0, width(), height(), this->x(), this->y()); else { g.setColor(taskBarBg); g.fillRect(0, 0, width(), height()); } } if (pixmap != null) g.drawPixmap(pixmap, 0, 0); } void MailBoxStatus::handleClick(const XButtonEvent &up, int count) { if ((taskBarLaunchOnSingleClick ? up.button == 2 : up.button == 1) && count == 1) checkMail(); else if (mailCommand && mailCommand[0] && up.button == 1 && (taskBarLaunchOnSingleClick ? count == 1 : !(count % 2))) wmapp->runCommandOnce(mailClassHint, mailCommand); } void MailBoxStatus::handleCrossing(const XCrossingEvent &crossing) { if (crossing.type == EnterNotify) { #if 0 if (countMailMessages) { struct stat st; unsigned long countSize; time_t countTime; if (stat(fMailBox, &st) != -1) { countSize = st.st_size; countTime = st.st_mtime; } else { countSize = 0; countTime = 0; } if (fLastCountSize != countSize || fLastCountTime != countTime) fLastCountSize = countSize; } else { setToolTip(0); } #endif } YWindow::handleCrossing(crossing); } void MailBoxStatus::checkMail() { check.startCheck(); } void MailBoxStatus::mailChecked(MailBoxState mst, long count) { if (mst != mbxError) fMailboxCheckTimer->startTimer(); if (mst != fState) { fState = mst; repaint(); if (fState == mbxHasNewMail) newMailArrived(); } if (fState == mbxError) setToolTip(_("Error checking mailbox.")); else { char s[128] = ""; if (count != -1) { sprintf(s, count == 1 ? _("%ld mail message.") : _("%ld mail messages."), // too hard to do properly count); } setToolTip(s); } } void MailBoxStatus::newMailArrived() { if (beepOnNewMail) xapp->alert(); if (newMailCommand && newMailCommand[0]) app->runCommand(newMailCommand); } bool MailBoxStatus::handleTimer(YTimer *t) { if (t != fMailboxCheckTimer) return false; checkMail(); return true; } #endif icewm-1.3.7/src/yxtray.h0000644000076600007660000000324711463274240014133 0ustar develdevel#ifndef __YXTRAY_H #define __YXTRAY_H #include "yxembed.h" #define SYSTEM_TRAY_REQUEST_DOCK 0 #define SYSTEM_TRAY_BEGIN_MESSAGE 1 #define SYSTEM_TRAY_CANCEL_MESSAGE 2 class YXTrayProxy; class YXTray; class YXTrayNotifier { public: virtual void trayChanged() = 0; protected: virtual ~YXTrayNotifier() {}; }; class YXTrayEmbedder: public YXEmbed { public: YXTrayEmbedder(YXTray *tray, Window win); ~YXTrayEmbedder(); virtual void paint(Graphics &g, const YRect &r); virtual void handleConfigureRequest(const XConfigureRequestEvent &configureRequest); virtual void destroyedClient(Window win); void detach(); virtual void configure(const YRect &r); Window client_handle() { return fDocked->handle(); } YXEmbedClient *client() { return fDocked; } void handleClientUnmap(Window win); virtual void handleMapRequest(const XMapRequestEvent &mapRequest); bool fVisible; private: YXTray *fTray; YXEmbedClient *fDocked; }; class YXTray: public YWindow { public: YXTray(YXTrayNotifier *notifier, bool internal, const char *atom, YWindow *aParent = 0); virtual ~YXTray(); virtual void paint(Graphics &g, const YRect &r); virtual void configure(const YRect &r); virtual void handleConfigureRequest(const XConfigureRequestEvent &configureRequest); void backgroundChanged(); void relayout(); void trayRequestDock(Window win); void detachTray(); void showClient(Window win, bool show); bool kdeRequestDock(Window win); void destroyedClient(Window win); private: YXTrayProxy *fTrayProxy; YObjectArray fDocked; YXTrayNotifier *fNotifier; bool fInternal; }; #endif icewm-1.3.7/src/ypopup.cc0000644000076600007660000001671211463274240014266 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek */ #include "config.h" #include "ykey.h" #include "ymenu.h" #include "yrect.h" #include "yxapp.h" #include "yprefs.h" bool YXApplication::popup(YWindow *forWindow, YPopupWindow *popup) { PRECONDITION(popup != 0); if (fPopup == 0) { // Cursor changePointer = None; //!!!(popup->popupFlags() & YPopupWindow::pfNoPointerChange) ? None : rightPointer; Cursor changePointer = (dontRotateMenuPointer || (popup->popupFlags() & YPopupWindow::pfNoPointerChange) ? None : rightPointer.handle()); if (!grabEvents(forWindow ? forWindow : popup, changePointer, ButtonPressMask | ButtonReleaseMask | (menuMouseTracking ? PointerMotionMask : ButtonMotionMask))) { return false; } } popup->setPrevPopup(fPopup); fPopup = popup; return true; } void YXApplication::popdown(YPopupWindow *popdown) { PRECONDITION(popdown != 0); PRECONDITION(fPopup != 0); PRECONDITION(fPopup == popdown); if (popdown != fPopup) { MSG(("popdown: 0x%lX fPopup: 0x%lX", popdown, fPopup)); return ; } fPopup = fPopup->prevPopup(); if (fPopup == 0) { releaseEvents(); } } YPopupWindow::YPopupWindow(YWindow *aParent): YWindow(aParent) { fForWindow = 0; fPrevPopup = 0; fFlags = 0; fUp = false; fXiScreen = -1; setStyle(wsSaveUnder | wsOverrideRedirect); } YPopupWindow::~YPopupWindow() { // PRECONDITION(fUp == false); // ^C whilest a popup is open breaks this... } void YPopupWindow::updatePopup() { } void YPopupWindow::sizePopup(int /*hspace*/) { } void YPopupWindow::activatePopup(int /*flags*/) { } void YPopupWindow::deactivatePopup() { } bool YPopupWindow::popup(YWindow *owner, YWindow *forWindow, YPopDownListener *popDown, int xiScreen, unsigned int flags) { PRECONDITION(fUp == false); fPrevPopup = 0; fFlags = flags; fForWindow = forWindow; fPopDownListener = popDown; fOwner = owner; fXiScreen = xiScreen; raise(); show(); if (xapp->popup(forWindow, this)) { fUp = true; activatePopup(flags); return true; } else { hide(); fFlags = 0; fForWindow = 0; return false; } } bool YPopupWindow::popup(YWindow *owner, YWindow *forWindow, YPopDownListener *popDown, int x, int y, int x_delta, int y_delta, int xiScreen, unsigned int flags) { if ((flags & pfPopupMenu) && showPopupsAbovePointer) flags |= pfFlipVertical; fFlags = flags; updatePopup(); /// TODO #warning "FIXME: this logic needs rethink" MSG(("x: %d y: %d x_delta: %d y_delta: %d", x, y, x_delta, y_delta)); int dx, dy, dw, dh; desktop->getScreenGeometry(&dx, &dy, &dw, &dh, xiScreen); { // check available space on left and right int spaceRight = dx + dw - x; int spaceLeft = x - x_delta - dx; int hspace = (spaceLeft < spaceRight) ? spaceRight : spaceLeft; sizePopup(hspace); } int rspace = dw - x; int lspace = x - x_delta; int tspace = dh - y; int bspace = y - y_delta; /* !!! FIX this to maximize visible area */ if ((x + width() > dx + dw) || (fFlags & pfFlipHorizontal)) { if (//(lspace >= rspace) && (fFlags & (pfCanFlipHorizontal | pfFlipHorizontal))) { x -= width() + x_delta; fFlags |= pfFlipHorizontal; } else x = dx + dw - width(); } if ((y + height() > dy + dh) || (fFlags & pfFlipVertical)) { if (//(tspace >= bspace) && (fFlags & (pfCanFlipVertical | pfFlipVertical))) { y -= height() + y_delta; fFlags |= pfFlipVertical; } else y = dy + dh - height(); } if (x < dx && (x + width() < dx + dw / 2)) { if ((rspace >= lspace) && (fFlags & pfCanFlipHorizontal)) x += width() + x_delta; else x = dx; } if (y < dy && (y + height() < dy + dh / 2)) { if ((bspace >= tspace) && (fFlags & pfCanFlipVertical)) y += height() + y_delta; else y = dy; } if (forWindow == 0) { if ((x + width() > dx + dw)) x = dw - width(); if (x < dx) x = dx; if ((y + height() > dy + dh)) y = dh - height(); if (y < dy) y = dy; } setPosition(x, y); return popup(owner, forWindow, popDown, xiScreen, fFlags); } bool YPopupWindow::popup(YWindow *owner, YWindow *forWindow, YPopDownListener *popDown, int x, int y, unsigned int flags) { int xiScreen = desktop->getScreenForRect(x, y, 1, 1); return popup(owner, forWindow, popDown, x, y, -1, -1, xiScreen, flags); } void YPopupWindow::popdown() { if (fUp) { if (fPopDownListener) fPopDownListener->handlePopDown(this); deactivatePopup(); xapp->popdown(this); hide(); fUp = false; fFlags = 0; fForWindow = 0; if (fOwner) { fOwner->handleEndPopup(this); } } } void YPopupWindow::cancelPopup() { // !!! rethink these two (cancel,finish) if (fForWindow) fForWindow->donePopup(this); else popdown(); } void YPopupWindow::finishPopup() { while (xapp->popup()) xapp->popup()->cancelPopup(); } bool YPopupWindow::handleKey(const XKeyEvent &/*key*/) { return true; } void YPopupWindow::handleButton(const XButtonEvent &button) { if ((button.x_root >= x() && button.y_root >= y() && button.x_root < int (x() + width()) && button.y_root < int (y() + height()) && button.window == handle()) /*| button.button == Button4 || button.button == Button5*/) YWindow::handleButton(button); else { if (fForWindow) { XEvent xev; xev.xbutton = button; xapp->handleGrabEvent(fForWindow, xev); } else { if (replayMenuCancelClick) { xapp->replayEvent(); popdown(); } else { if (button.type == ButtonRelease) { popdown(); } } } } } void YPopupWindow::handleMotion(const XMotionEvent &motion) { if (motion.x_root >= x() && motion.y_root >= y() && motion.x_root < int (x() + width()) && motion.y_root < int (y() + height()) && motion.window == handle()) { YWindow::handleMotion(motion); dispatchMotionOutside(true, motion); } else { handleMotionOutside(true, motion); if (fForWindow) { XEvent xev; xev.xmotion = motion; xapp->handleGrabEvent(fForWindow, xev); } } } void YPopupWindow::handleMotionOutside(bool /*top*/, const XMotionEvent &/*motion*/) { } void YPopupWindow::dispatchMotionOutside(bool /*top*/, const XMotionEvent &motion) { if (fPrevPopup) { fPrevPopup->handleMotionOutside(false, motion); fPrevPopup->dispatchMotionOutside(false, motion); } } icewm-1.3.7/src/yxapp.h0000644000076600007660000000501311463274240013725 0ustar develdevel#ifndef __YXAPP_H #define __YXAPP_H #include "yapp.h" #include "ywindow.h" #include "ycursor.h" #include "ypoll.h" class YXPoll: public YPoll { public: virtual void notifyRead(); virtual void notifyWrite(); virtual bool forRead(); virtual bool forWrite(); }; class YXApplication: public YApplication { public: YXApplication(int *argc, char ***argv, const char *displayName = 0); virtual ~YXApplication(); Display * display() const { return fDisplay; } int screen() { return DefaultScreen (display()); } Visual * visual() { return DefaultVisual(display(), screen()); } Colormap colormap() { return DefaultColormap(display(), screen()); } unsigned depth() { return DefaultDepth(display(), screen()); } bool hasColormap(); void saveEventTime(const XEvent &xev); Time getEventTime(const char *debug) const; int grabEvents(YWindow *win, Cursor ptr, unsigned int eventMask, int grabMouse = 1, int grabKeyboard = 1, int grabTree = 0); int releaseEvents(); void handleGrabEvent(YWindow *win, XEvent &xev); bool handleIdle(); void handleWindowEvent(Window xwindow, XEvent &xev); void replayEvent(); void captureGrabEvents(YWindow *win); void releaseGrabEvents(YWindow *win); virtual bool filterEvent(const XEvent &xev); void dispatchEvent(YWindow *win, XEvent &e); virtual void afterWindowEvent(XEvent &xev); YPopupWindow *popup() const { return fPopup; } bool popup(YWindow *forWindow, YPopupWindow *popup); void popdown(YPopupWindow *popdown); YWindow *grabWindow() const { return fGrabWindow; } void initModifiers(); void alert(); void setClipboardText(const ustring &data); static YCursor leftPointer; static YCursor rightPointer; static YCursor movePointer; unsigned int AltMask; unsigned int MetaMask; unsigned int NumLockMask; unsigned int ScrollLockMask; unsigned int SuperMask; unsigned int HyperMask; unsigned int ModeSwitchMask; unsigned int WinMask; unsigned int Win_L; unsigned int Win_R; unsigned int KeyMask; unsigned int ButtonMask; unsigned int ButtonKeyMask; private: Display *fDisplay; Time lastEventTime; YPopupWindow *fPopup; friend class YXPoll; YXPoll xfd; int fGrabTree; YWindow *fXGrabWindow; int fGrabMouse; YWindow *fGrabWindow; YClipboard *fClip; bool fReplayEvent; virtual bool handleXEvents(); virtual void flushXEvents(); }; extern YXApplication *xapp; #endif icewm-1.3.7/src/acpustatus.h0000644000076600007660000000227511463274240014767 0ustar develdevel#ifndef __CPUSTATUS_H #define __CPUSTATUS_H #if defined(linux) || defined(HAVE_KSTAT_H) || defined(HAVE_SYSCTL_CP_TIME) #define IWM_USER (0) #define IWM_NICE (1) #define IWM_SYS (2) #define IWM_INTR (3) #define IWM_IOWAIT (4) #define IWM_SOFTIRQ (5) #define IWM_IDLE (6) #define IWM_STATES (7) #include "ywindow.h" #include "ytimer.h" class CPUStatus: public YWindow, public YTimerListener { public: CPUStatus(YWindow *aParent = 0, bool cpustatusShowRamUsage = 0, bool cpustatusShowSwapUsage = 0, bool cpustatusShowAcpiTemp = 0, bool cpustatusShowCpuFreq = 0); virtual ~CPUStatus(); virtual void paint(Graphics &g, const YRect &r); virtual bool handleTimer(YTimer *t); virtual void handleClick(const XButtonEvent &up, int count); void updateStatus(); void getStatus(); int getAcpiTemp(char* tempbuf, int buflen); float getCpuFreq(unsigned int cpu); void updateToolTip(); private: int **cpu; unsigned long long last_cpu[IWM_STATES]; YColor *color[IWM_STATES]; YTimer *fUpdateTimer; bool ShowRamUsage, ShowSwapUsage, ShowAcpiTemp, ShowCpuFreq; }; #else #undef CONFIG_APPLET_CPU_STATUS #endif #endif icewm-1.3.7/src/ycmdline.h0000644000076600007660000000167011463274240014375 0ustar develdevel/* * IceWM - Definition of a generic command line parser * Copyright (C) 2001 The Authors of IceWM * * Release under terms of the GNU Library General Public License */ #ifndef __YCMDLINE_H #define __YCMDLINE_H /******************************************************************************* * A generic command line parser ******************************************************************************/ class YCommandLine { public: YCommandLine(int & argc, char **& argv): argc(argc), argv(argv) {} virtual ~YCommandLine() {} int parse(); protected: virtual char getArgument(char const * const & arg, char const *& val) = 0; virtual int setOption(char const * arg, char opt, char const * val); virtual int setArgument(int pos, char const * val); char const * getValue(char const * const & arg, char const * vptr); void eatArgument(int idx); int & argc; char **& argv; }; #endif icewm-1.3.7/src/browse.h0000644000076600007660000000046611463274240014074 0ustar develdevel#ifndef __BROWSE_H #define __BROWSE_H #ifndef NO_CONFIGURE_MENUS #include class BrowseMenu: public ObjectMenu { public: BrowseMenu(upath path, YWindow *parent = 0); virtual ~BrowseMenu(); virtual void updatePopup(); private: upath fPath; time_t fModTime; }; #endif #endif icewm-1.3.7/src/wmsession.h0000644000076600007660000000261511463274240014620 0ustar develdevel#ifndef __SMWIN_H #define __SMWIN_H #ifdef CONFIG_SESSION class YFrameWindow; class SMWindowKey { public: SMWindowKey(YFrameWindow *f); SMWindowKey(ustring id, ustring role); SMWindowKey(ustring id, ustring klass, ustring instance); ~SMWindowKey(); friend class SMWindows; private: ustring clientId; ustring windowRole; ustring windowClass; ustring windowInstance; }; class SMWindowInfo { public: SMWindowInfo(YFrameWindow *f); SMWindowInfo(ustring id, ustring role, int x, int y, int w, int h, unsigned long state, int layer, int workspace); SMWindowInfo(ustring id, ustring klass, ustring instance, int x, int y, int w, int h, unsigned long state, int layer, int workspace); ~SMWindowInfo(); friend class SMWindows; private: SMWindowKey key; int x, y; unsigned int width, height; unsigned long state; unsigned int layer; unsigned int workspace; }; class SMWindows { public: void addWindowInfo(SMWindowInfo *info); void setWindowInfo(YFrameWindow *f); bool getWindowInfo(YFrameWindow *f, SMWindowInfo *info); bool removeWindowInfo(YFrameWindow *f); bool findWindowInfo(YFrameWindow *f); private: YObjectArray fWindows; }; void loadWindowInfo(); bool findWindowInfo(YFrameWindow *f); char *getsesfile(); #endif #endif icewm-1.3.7/src/icesh.cc0000644000076600007660000007027111463274240014025 0ustar develdevel/* * IceSH - A command line window manager * Copyright (C) 2001 Mathias Hasselmann * * Based on Mark´s testwinhints.cc. * Inspired by MJ Ray's WindowC * * Release under terms of the GNU Library General Public License * * 2001/07/18: Mathias Hasselmann * - initial version */ #include "config.h" #include "intl.h" #include #include #include #include #include #include #include #include #include #ifdef CONFIG_I18N #include #endif #include "base.h" #include "WinMgr.h" #if 1 #define THROW(Result) { rc = (Result); goto exceptionHandler; } #define TRY(Command) { if ((rc = (Command))) THROW(rc); } #define CATCH(Handler) { exceptionHandler: { Handler } return rc; } #endif /******************************************************************************/ /******************************************************************************/ char const * ApplicationName(NULL); Display *display(NULL); Window root; /******************************************************************************/ /******************************************************************************/ struct Symbol { char const * name; long code; }; struct SymbolTable { long parseIdentifier(char const * identifier, size_t const len) const; long parseIdentifier(char const * identifier) const { return parseIdentifier(identifier, strlen(identifier)); } long parseExpression(char const * expression) const; void listSymbols(char const * label) const; bool valid(long code) const { return code != fErrCode; } bool invalid(long code) const { return code == fErrCode; } Symbol const * fSymbols; long fMin, fMax, fErrCode; }; class YWindowProperty { public: YWindowProperty(Window window, Atom property, Atom type = AnyPropertyType, long length = 0, long offset = 0, Bool deleteProp = False): fType(None), fFormat(0), fCount(0), fAfter(0), fData(NULL), fStatus(XGetWindowProperty(display, window, property, offset, length, deleteProp, type, &fType, &fFormat, &fCount, &fAfter, &fData)) { } virtual ~YWindowProperty() { if (NULL != fData) XFree(fData); } Atom type() const { return fType; } int format() const { return fFormat; } long count() const { return fCount; } unsigned long after() const { return fAfter; } template T data(unsigned index) const { return ((T *) fData)[index]; } operator int() const { return fStatus; } private: Atom fType; int fFormat; unsigned long fCount, fAfter; unsigned char * fData; int fStatus; }; class YTextProperty { public: YTextProperty(Window window, Atom property): fList(NULL), fCount(0), fStatus(XGetTextProperty(display, window, &fProperty, property) ? Success : BadValue) { } virtual ~YTextProperty() { if (NULL != fList) XFreeStringList(fList); } char * item(unsigned index); char ** list(); int count(); operator int() const { return fStatus; } private: void allocateList(); XTextProperty fProperty; char ** fList; int fCount, fStatus; }; char * YTextProperty::item(unsigned index) { return list()[index]; } char ** YTextProperty::list() { allocateList(); return fList; } int YTextProperty::count() { allocateList(); return fCount; } void YTextProperty::allocateList() { if (NULL == fList) XTextPropertyToStringList(&fProperty, &fList, &fCount); } class YWindowTreeNode { public: YWindowTreeNode(Window window): fRoot(None), fParent(None), fChildren(NULL), fCount(0), fSuccess(XQueryTree(display, window, &fRoot, &fParent, &fChildren, &fCount)) { } virtual ~YWindowTreeNode() { if (NULL != fChildren) XFree(fChildren); } operator bool() { return fSuccess; } private: Window fRoot, fParent, * fChildren; unsigned fCount; bool fSuccess; }; /******************************************************************************/ Atom ATOM_WM_STATE; Atom ATOM_WIN_WORKSPACE; Atom ATOM_WIN_WORKSPACE_NAMES; Atom ATOM_WIN_WORKSPACE_COUNT; Atom ATOM_WIN_STATE; Atom ATOM_WIN_HINTS; Atom ATOM_WIN_LAYER; Atom ATOM_WIN_TRAY; /******************************************************************************/ /******************************************************************************/ #define CHECK_ARGUMENT_COUNT(Count) { \ if ((argv + argc - argp) < (Count)) { \ msg(_("Action `%s' requires at least %d arguments."), action, Count); \ THROW(1); \ } \ } #define CHECK_EXPRESSION(SymTab, Code, Str) { \ if ((SymTab).invalid(Code)) { \ msg(_("Invalid expression: `%s'"), Str); \ THROW(1); \ } \ } #define FOREACH_WINDOW(Var) \ for (Window *Var = windowList; Var < windowList + windowCount; ++Var) /******************************************************************************/ Symbol stateIdentifiers[] = { { "AllWorkspaces", WinStateAllWorkspaces }, { "Sticky", WinStateAllWorkspaces }, { "Minimized", WinStateMinimized }, { "Maximized", WinStateMaximizedVert | WinStateMaximizedHoriz }, { "MaximizedVert", WinStateMaximizedVert }, { "MaximizedVertical", WinStateMaximizedVert }, { "MaximizedHoriz", WinStateMaximizedHoriz }, { "MaximizedHorizontal", WinStateMaximizedHoriz }, { "Hidden", WinStateHidden }, { "All", WIN_STATE_ALL }, { NULL, 0 } }; Symbol hintIdentifiers[] = { { "SkipFocus", WinHintsSkipFocus }, { "SkipWindowMenu", WinHintsSkipWindowMenu }, { "SkipTaskBar", WinHintsSkipTaskBar }, { "FocusOnClick", WinHintsFocusOnClick }, { "DoNotCover", WinHintsDoNotCover }, { "All", WIN_HINTS_ALL }, { NULL, 0 } }; Symbol layerIdentifiers[] = { { "Desktop", WinLayerDesktop }, { "Below", WinLayerBelow }, { "Normal", WinLayerNormal }, { "OnTop", WinLayerOnTop }, { "Dock", WinLayerDock }, { "AboveDock", WinLayerAboveDock }, { "Menu", WinLayerMenu }, { NULL, 0 } }; Symbol trayOptionIdentifiers[] = { { "Ignore", WinTrayIgnore }, { "Minimized", WinTrayMinimized }, { "Exclusive", WinTrayExclusive }, { NULL, 0 } }; SymbolTable layers = { layerIdentifiers, 0, WinLayerCount - 1, WinLayerInvalid }; SymbolTable states = { stateIdentifiers, 0, WIN_STATE_ALL, -1 }; SymbolTable hints = { hintIdentifiers, 0, WIN_HINTS_ALL, -1 }; SymbolTable trayOptions = { trayOptionIdentifiers, 0, WinTrayOptionCount - 1, WinTrayInvalid }; /******************************************************************************/ long SymbolTable::parseIdentifier(char const * id, size_t const len) const { for (Symbol const * sym(fSymbols); NULL != sym && NULL != sym->name; ++sym) if (!(sym->name[len] || strncasecmp(sym->name, id, len))) return sym->code; char *endptr; long value(strtol(id, &endptr, 0)); return (NULL != endptr && '\0' == *endptr && value >= fMin && value <= fMax ? value : fErrCode); } #if 0 static char const * strnxt(const char * str, const char * delim) { str+= strcspn(str, delim); str+= strspn(str, delim); return str; } #endif /* * Counts the tokens separated by delim */ unsigned strtoken(const char * str, const char * delim) { unsigned count = 0; if (str) { while (*str) { str = strnxt(str, delim); ++count; } } return count; } long SymbolTable::parseExpression(char const * expression) const { long value(0); for (char const * token(expression); *token != '\0' && value != fErrCode; token = strnxt(token, "+|")) { char const * id(token + strspn(token, " \t")); value|= parseIdentifier(id = newstr(id, "+| \t")); delete[] id; } return value; } void SymbolTable::listSymbols(char const * label) const { printf(_("Named symbols of the domain `%s' (numeric range: %ld-%ld):\n"), label, fMin, fMax); for (Symbol const * sym(fSymbols); NULL != sym && NULL != sym->name; ++sym) printf(" %-20s (%ld)\n", sym->name, sym->code); puts(""); } /******************************************************************************/ Status getState(Window window, long & mask, long & state) { YWindowProperty winState(window, ATOM_WIN_STATE, XA_CARDINAL, 2); if (Success == winState && XA_CARDINAL == winState.type() && 32 == winState.format() && 1L <= winState.count()) { state = winState.data(0); mask = winState.count() >= 2L ? winState.data(1) : WIN_STATE_ALL; return winState; } return BadValue; } Status setState(Window window, long mask, long state) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = window; xev.message_type = ATOM_WIN_STATE; xev.format = 32; xev.data.l[0] = mask; xev.data.l[1] = state; xev.data.l[2] = CurrentTime; return XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); } Status toggleState(Window window, long newState) { long mask, state; if (Success != getState(window, mask, state)) state = mask = 0; MSG(("old mask/state: %d/%d", mask, state)); XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = window; xev.message_type = ATOM_WIN_STATE; xev.format = 32; xev.data.l[0] = newState; xev.data.l[1] = (state & mask & newState) ^ newState; xev.data.l[2] = CurrentTime; MSG(("new mask/state: %d/%d", xev.data.l[0], xev.data.l[1])); return XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); } /******************************************************************************/ Status setHints(Window window, long hints) { return XChangeProperty(display, window, ATOM_WIN_HINTS, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &hints, 1); } /******************************************************************************/ struct WorkspaceInfo { WorkspaceInfo(Window root): fCount(root, ATOM_WIN_WORKSPACE_COUNT, XA_CARDINAL, 1), fNames(root, ATOM_WIN_WORKSPACE_NAMES) { if (fCount == Success) fStatus = fNames; else fStatus = fCount; } int parseWorkspaceName(char const * name); long count(); operator int() const { return fStatus; } YWindowProperty fCount; YTextProperty fNames; int fStatus; }; long WorkspaceInfo::count() { return (Success == fCount ? fCount.data(0) : 0); } int WorkspaceInfo::parseWorkspaceName(char const * name) { long workspace(WinWorkspaceInvalid); if (Success == fStatus) { for (int n(0); n < fNames.count() && WinWorkspaceInvalid == workspace; ++n) if (!strcmp(name, fNames.item(n))) workspace = n; if (WinWorkspaceInvalid == workspace) { char *endptr; workspace = strtol(name, &endptr, 0); if (NULL == endptr || '\0' != *endptr) { msg(_("Invalid workspace name: `%s'"), name); return WinWorkspaceInvalid; } } if (workspace > count()) { msg(_("Workspace out of range: %d"), workspace); return WinWorkspaceInvalid; } } return workspace; } Status setWorkspace(Window window, long workspace) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = window; xev.message_type = ATOM_WIN_WORKSPACE; xev.format = 32; xev.data.l[0] = workspace; xev.data.l[1] = CurrentTime; return XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); } /******************************************************************************/ Status setLayer(Window window, long layer) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = window; xev.message_type = ATOM_WIN_LAYER; xev.format = 32; xev.data.l[0] = layer; xev.data.l[1] = CurrentTime; return XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); } Status setTrayHint(Window window, long trayopt) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = window; xev.message_type = ATOM_WIN_TRAY; xev.format = 32; xev.data.l[0] = trayopt; xev.data.l[1] = CurrentTime; return XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); } /******************************************************************************/ Window getClientWindow(Window window) { if (None != YWindowProperty(window, ATOM_WM_STATE).type()) return window; Window root, parent; unsigned nchildren; Window *children; unsigned int i; if (!XQueryTree (display, window, &root, &parent, &children, &nchildren)) { warn("XQueryTree failed for window 0x%x", window); return None; } Window client(None); for (i = 0; client == None && i < nchildren; ++i) if (None != YWindowProperty(children[i], ATOM_WM_STATE).type()) client = children [i]; for (i = 0; client == None && i < nchildren; ++i) client = getClientWindow(children [i]); XFree(children); return client; } Window pickWindow (void) { Cursor cursor; bool running(true); Window target(None); int count(0); unsigned escape; cursor = XCreateFontCursor(display, XC_crosshair); escape = XKeysymToKeycode(display, XK_Escape); // this is broken XGrabKey(display, escape, 0, root, False, GrabModeAsync, GrabModeAsync); XGrabPointer(display, root, False, ButtonPressMask|ButtonReleaseMask, GrabModeAsync, GrabModeAsync, root, cursor, CurrentTime); do { XEvent event; XNextEvent (display, &event); switch (event.type) { case KeyPress: case KeyRelease: if (event.xkey.keycode == escape) running = false; break; case ButtonPress: ++count; if (target == None) target = event.xbutton.subwindow == None ? event.xbutton.window : event.xbutton.subwindow; break; case ButtonRelease: --count; break; } } while (running && (None == target || 0 != count)); XUngrabPointer(display, CurrentTime); // and this is broken XUngrabKey(display, escape, 0, root); return (None == target || root == target ? target : getClientWindow(target)); } /******************************************************************************/ /******************************************************************************/ static void printUsage() { printf(_("\ Usage: %s [OPTIONS] ACTIONS\n\ \n\ Options:\n\ -display DISPLAY Connects to the X server specified by DISPLAY.\n\ Default: $DISPLAY or :0.0 when not set.\n\ -window WINDOW_ID Specifies the window to manipulate. Special\n\ identifiers are `root' for the root window and\n\ `focus' for the currently focused window.\n\ -class WM_CLASS Window management class of the window(s) to\n\ manipulate. If WM_CLASS contains a period, only\n\ windows with exactly the same WM_CLASS property\n\ are matched. If there is no period, windows of\n\ the same class and windows of the same instance\n\ (aka. `-name') are selected.\n\ \n\ Actions:\n\ setIconTitle TITLE Set the icon title.\n\ setWindowTitle TITLE Set the window title.\n\ setGeometry geometry Set the window geometry\n\ setState MASK STATE Set the GNOME window state to STATE.\n\ Only the bits selected by MASK are affected.\n\ STATE and MASK are expressions of the domain\n\ `GNOME window state'.\n\ toggleState STATE Toggle the GNOME window state bits specified by\n\ the STATE expression.\n\ setHints HINTS Set the GNOME window hints to HINTS.\n\ setLayer LAYER Moves the window to another GNOME window layer.\n\ setWorkspace WORKSPACE Moves the window to another workspace. Select\n\ the root window to change the current workspace.\n\ listWorkspaces Lists the names of all workspaces.\n\ setTrayOption TRAYOPTION Set the IceWM tray option hint.\n\ \n\ Expressions:\n\ Expressions are list of symbols of one domain concatenated by `+' or `|':\n\ \n\ EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n\n"), ApplicationName); states.listSymbols(_("GNOME window state")); hints.listSymbols(_("GNOME window hint")); layers.listSymbols(_("GNOME window layer")); trayOptions.listSymbols(_("IceWM tray option")); } static void usageError(char const *msg, ...) { fprintf(stderr, "%s: ", ApplicationName); fputs(_("Usage error: "), stderr); va_list ap; va_start(ap, msg); vfprintf(stderr, msg, ap); va_end(ap); fputs("\n\n", stderr); printUsage(); } /******************************************************************************/ /******************************************************************************/ int main(int argc, char **argv) { #ifdef CONFIG_I18N setlocale(LC_ALL, ""); #ifdef ENABLE_NLS bindtextdomain(PACKAGE, LOCDIR); textdomain(PACKAGE); #endif #endif ApplicationName = my_basename(*argv); char const *dpyname(NULL); char const *winname(NULL); char *wmclass(NULL); char *wmname(NULL); int rc(0); Window singleWindowList[] = { None }; Window *windowList(NULL); unsigned windowCount(0); char **argp(argv + 1); for (char *arg; argp < argv + argc && '-' == *(arg = *argp); ++argp) { if (arg[1] == '-') ++arg; size_t sep(strcspn(arg, "=:")); char *val(arg[sep] ? arg + sep + 1 : *++argp); if (!(strpcmp(arg, "-display") || val == NULL)) { dpyname = val; } else if (!(strpcmp(arg, "-window") || val == NULL)) { winname = val; } else if (!(strpcmp(arg, "-class") || val == NULL)) { wmname = val; char *p = val; char *d = val; while (*p) { if (*p == '\\') { p++; if (*p == '\0') break; } else if (*p == '.') { *d++ = 0; wmclass = d; p++; continue; } *d++ = *p++; } *d++ = 0; MSG(("wmname: `%s'; wmclass: `%s'", wmname, wmclass)); #ifdef DEBUG } else if (!(strpcmp(arg, "-debug"))) { debug = 1; --argp; #endif } else if (strcmp(arg, "-?") && strcmp(arg, "-help")) { usageError (_("Invalid argument: `%s'."), arg); THROW(1); } else { printUsage(); THROW(0); } } if (argp >= argv + argc) { usageError(_("No actions specified.")); THROW(1); } /******************************************************************************/ if (NULL == (display = XOpenDisplay(dpyname))) { warn(_("Can't open display: %s. X must be running and $DISPLAY set."), XDisplayName(dpyname)); THROW(3); } root = RootWindow(display, DefaultScreen(display)); ATOM_WM_STATE = XInternAtom(display, "WM_STATE", False); ATOM_WIN_WORKSPACE = XInternAtom(display, XA_WIN_WORKSPACE, False); ATOM_WIN_WORKSPACE_NAMES = XInternAtom(display, XA_WIN_WORKSPACE_NAMES, False); ATOM_WIN_WORKSPACE_COUNT = XInternAtom(display, XA_WIN_WORKSPACE_COUNT, False); ATOM_WIN_STATE = XInternAtom(display, XA_WIN_STATE, False); ATOM_WIN_HINTS = XInternAtom(display, XA_WIN_HINTS, False); ATOM_WIN_LAYER = XInternAtom(display, XA_WIN_LAYER, False); ATOM_WIN_TRAY = XInternAtom(display, XA_WIN_TRAY, False); /******************************************************************************/ if (winname) { if (!strcmp(winname, "root")) { *(windowList = singleWindowList) = root; windowCount = 1; MSG(("root window selected")); } else if (!strcmp(winname, "focus")) { int dummy; windowList = singleWindowList; windowCount = 1; XGetInputFocus(display, windowList, &dummy); MSG(("focused window selected")); } else { char *eptr; *(windowList = singleWindowList) = strtol(winname, &eptr, 0); windowCount = 1; if (NULL == eptr || '\0' != *eptr) { msg(_("Invalid window identifier: `%s'"), winname); THROW(1); } MSG(("focused window selected")); } } else { if (NULL == wmname) { *(windowList = singleWindowList) = pickWindow(); windowCount = 1; MSG(("window picked")); } else { Window dummy; XQueryTree(display, root, &dummy, &dummy, &windowList, &windowCount); MSG(("window tree fetched, got %d window handles", windowCount)); } } if (wmname) { unsigned matchingWindowCount = 0; for (unsigned i = 0; i < windowCount; ++i) { XClassHint classhint; windowList[i] = getClientWindow(windowList[i]); if (windowList[i] != None && XGetClassHint(display, windowList[i], &classhint)) { if (wmclass) { if (strcmp(classhint.res_name, wmname) || strcmp(classhint.res_class, wmclass)) windowList[i] = None; } else { if (strcmp(classhint.res_name, wmname) && strcmp(classhint.res_class, wmname)) windowList[i] = None; } if (windowList[i] != None) { MSG(("selected window 0x%x: `%s.%s'", windowList[i], classhint.res_name, classhint.res_class)); windowList[matchingWindowCount++] = windowList[i]; } } } windowCount = matchingWindowCount; } MSG(("windowCount: %d", windowCount)); /******************************************************************************/ while (argp < argv + argc) { char const * action(*argp++); if (!strcmp(action, "setWindowTitle")) { CHECK_ARGUMENT_COUNT (1) char const * title(*argp++); MSG(("setWindowTitle: `%s'", title)); FOREACH_WINDOW(window) XStoreName(display, *window, title); } else if (!strcmp(action, "setIconTitle")) { CHECK_ARGUMENT_COUNT (1) char const * title(*argp++); MSG(("setIconTitle: `%s'", title)); FOREACH_WINDOW(window) XSetIconName(display, *window, title); } else if (!strcmp(action, "setGeometry")) { CHECK_ARGUMENT_COUNT (1) char const * geometry(*argp++); int geom_x, geom_y; unsigned geom_width, geom_height; int status(XParseGeometry(geometry, &geom_x, &geom_y, &geom_width, &geom_height)); FOREACH_WINDOW(window) { XSizeHints normal; long supplied; XGetWMNormalHints(display, *window, &normal, &supplied); Window root; int x, y; unsigned width, height, dummy; XGetGeometry(display, *window, &root, &x, &y, &width, &height, &dummy, &dummy); if (status & XValue) x = geom_x; if (status & YValue) y = geom_y; if (status & WidthValue) width = geom_width; if (status & HeightValue) height = geom_height; if (normal.flags & PResizeInc) { width*= max(1, normal.width_inc); height*= max(1, normal.height_inc); } if (normal.flags & PBaseSize) { width+= normal.base_width; height+= normal.base_height; } if (status & XNegative) x+= DisplayWidth(display, DefaultScreen(display)) - width; if (status & YNegative) y+= DisplayHeight(display, DefaultScreen(display)) - height; MSG(("setGeometry: %dx%d%+i%+i", width, height, x, y)); XMoveResizeWindow(display, *window, x, y, width, height); } } else if (!strcmp(action, "setState")) { CHECK_ARGUMENT_COUNT (2) unsigned mask(states.parseExpression(*argp++)); unsigned state(states.parseExpression(*argp++)); CHECK_EXPRESSION(states, mask, argp[-2]) CHECK_EXPRESSION(states, state, argp[-1]) MSG(("setState: %d %d", mask, state)); FOREACH_WINDOW(window) setState(*window, mask, state); } else if (!strcmp(action, "toggleState")) { CHECK_ARGUMENT_COUNT (1) unsigned state(states.parseExpression(*argp++)); CHECK_EXPRESSION(states, state, argp[-1]) MSG(("toggleState: %d", state)); FOREACH_WINDOW(window) toggleState(*window, state); } else if (!strcmp(action, "setHints")) { CHECK_ARGUMENT_COUNT (1) unsigned hint(hints.parseExpression(*argp++)); CHECK_EXPRESSION(hints, hint, argp[-1]) MSG(("setHints: %d", hint)); FOREACH_WINDOW(window) setHints(*window, hint); } else if (!strcmp(action, "setWorkspace")) { CHECK_ARGUMENT_COUNT (1) const long workspace(WorkspaceInfo(root). parseWorkspaceName(*argp++)); if (WinWorkspaceInvalid == workspace) THROW(1); MSG(("setWorkspace: %d", workspace)); FOREACH_WINDOW(window) setWorkspace(*window, workspace); } else if (!strcmp(action, "listWorkspaces")) { YTextProperty workspaceNames(root, ATOM_WIN_WORKSPACE_NAMES); for (int n(0); n < workspaceNames.count(); ++n) printf(_("workspace #%d: `%s'\n"), n, workspaceNames.item(n)); } else if (!strcmp(action, "setLayer")) { CHECK_ARGUMENT_COUNT (1) unsigned layer(layers.parseExpression(*argp++)); CHECK_EXPRESSION(layers, layer, argp[-1]) MSG(("setLayer: %d", layer)); FOREACH_WINDOW(window) setLayer(*window, layer); } else if (!strcmp(action, "setTrayOption")) { CHECK_ARGUMENT_COUNT (1) unsigned trayopt(trayOptions.parseExpression(*argp++)); CHECK_EXPRESSION(trayOptions, trayopt, argp[-1]) MSG(("setTrayOption: %d", trayopt)); FOREACH_WINDOW(window) setTrayHint(*window, trayopt); } else { msg(_("Unknown action: `%s'"), action); THROW(1); } } CATCH( if (windowList != singleWindowList) { XFree(windowList); } if (display) { XSync(display, False); XCloseDisplay(display); } ) return 0; } icewm-1.3.7/src/wmframe.h0000644000076600007660000004632111463274240014231 0ustar develdevel#ifndef __WMFRAME_H #define __WMFRAME_H #include "ywindow.h" #include "ymenu.h" #include "ytimer.h" #include "ymsgbox.h" #include "yaction.h" #include "wmclient.h" #include "wmbutton.h" #include "wmoption.h" #include "WinMgr.h" #include "wmmgr.h" #include "yicon.h" class YClientContainer; class MiniIcon; class TaskBarApp; class TrayApp; class YFrameTitleBar; class YFrameWindow: public YWindow, public YActionListener, public YTimerListener, public YPopDownListener, public YMsgBoxListener, public ClientData { public: YFrameWindow(YWindow *parent); virtual ~YFrameWindow(); void doManage(YFrameClient *client, bool &doActivate, bool &requestFocus); void afterManage(); void manage(YFrameClient *client); void unmanage(bool reparent = true); void sendConfigure(); void createPointerWindows(); void grabKeys(); void focus(bool canWarp = false); void activate(bool canWarp = false); void activateWindow(bool raise); virtual void paint(Graphics &g, const YRect &r); virtual bool handleKey(const XKeyEvent &key); virtual void handleButton(const XButtonEvent &button); virtual void handleClick(const XButtonEvent &up, int count); virtual void handleBeginDrag(const XButtonEvent &down, const XMotionEvent &motion); virtual void handleDrag(const XButtonEvent &down, const XMotionEvent &motion); virtual void handleEndDrag(const XButtonEvent &down, const XButtonEvent &up); virtual void handleMotion(const XMotionEvent &motion); virtual void handleCrossing(const XCrossingEvent &crossing); virtual void handleFocus(const XFocusChangeEvent &focus); virtual void handleConfigure(const XConfigureEvent &configure); virtual bool handleTimer(YTimer *t); virtual void actionPerformed(YAction *action, unsigned int modifiers); virtual void handleMsgBox(YMsgBox *msgbox, int operation); void wmRestore(); void wmMinimize(); void wmMaximize(); void wmMaximizeVert(); void wmMaximizeHorz(); void wmRollup(); void wmHide(); void wmShow(); void wmLower(); void doLower(); void wmRaise(); void doRaise(); void wmClose(); void wmConfirmKill(); void wmKill(); void wmNextWindow(); void wmPrevWindow(); void wmLastWindow(); void wmMove(); void wmSize(); void wmOccupyAll(); void wmOccupyAllOrCurrent(); void wmOccupyWorkspace(long workspace); void wmOccupyOnlyWorkspace(long workspace); void wmMoveToWorkspace(long workspace); void wmSetLayer(long layer); #ifdef CONFIG_TRAY void wmSetTrayOption(long option); void wmToggleTray(); #endif #if DO_NOT_COVER_OLD void wmToggleDoNotCover(); #endif void wmToggleFullscreen(); void minimizeTransients(); void restoreMinimizedTransients(); void hideTransients(); void restoreHiddenTransients(); void DoMaximize(long flags); void loseWinFocus(); void setWinFocus(); bool focused() const { return fFocused; } void updateFocusOnMap(bool &doActivate); YFrameClient *client() const { return fClient; } YFrameTitleBar *titlebar() const { return fTitleBar; } YClientContainer *container() const { return fClientContainer; } #ifdef WMSPEC_HINTS void startMoveSize(int x, int y, int direction); #endif void startMoveSize(int doMove, int byMouse, int sideX, int sideY, int mouseXroot, int mouseYroot); void endMoveSize(); void moveWindow(int newX, int newY); void manualPlace(); void snapTo(int &wx, int &wy, int rx1, int ry1, int rx2, int ry2, int &flags); void snapTo(int &wx, int &wy); void drawMoveSizeFX(int x, int y, int w, int h, bool interior = true); int handleMoveKeys(const XKeyEvent &xev, int &newX, int &newY); int handleResizeKeys(const XKeyEvent &key, int &newX, int &newY, int &newWidth, int &newHeight, int incX, int incY); void handleMoveMouse(const XMotionEvent &motion, int &newX, int &newY); void handleResizeMouse(const XMotionEvent &motion, int &newX, int &newY, int &newWidth, int &newHeight); void outlineMove(); void outlineResize(); void constrainPositionByModifier(int &x, int &y, const XMotionEvent &motion); void constrainMouseToWorkspace(int &x, int &y); void getDefaultOptions(bool &doActivate); bool canSize(bool boriz = true, bool vert = true); bool canMove(); bool canClose(); bool canMaximize(); bool canMinimize(); bool canRollup(); bool canHide(); bool canLower(); bool canRaise(); bool canFullscreen() { return true; } bool Overlaps(bool below); void insertFrame(bool top); void removeFrame(); void setAbove(YFrameWindow *aboveFrame); // 0 = at the bottom void setBelow(YFrameWindow *belowFrame); // 0 = at the top YFrameWindow *next() const { return fNextFrame; } YFrameWindow *prev() const { return fPrevFrame; } void setNext(YFrameWindow *next) { fNextFrame = next; } void setPrev(YFrameWindow *prev) { fPrevFrame = prev; } typedef enum { fwfVisible = 1 << 0, // visible windows only fwfCycle = 1 << 1, // cycle when bottom(top) reached fwfBackward = 1 << 2, // go up in zorder (default=down) fwfNext = 1 << 3, // start from next window fwfFocusable = 1 << 4, // only focusable windows fwfWorkspace = 1 << 5, // current workspace only fwfSame = 1 << 6, // return same if no match and same matches fwfLayers = 1 << 7, // find windows in other layers fwfSwitchable = 1 << 8, // window can be Alt+Tabbed fwfMinimized = 1 << 9, // minimized/visible windows fwfUnminimized = 1 << 10, // normal/rolledup only fwfHidden = 1 << 11, // hidden fwfNotHidden = 1 << 12 // not hidden } FindWindowFlags; YFrameWindow *findWindow(int flag); YFrameButton *menuButton() const { return fMenuButton; } YFrameButton *closeButton() const { return fCloseButton; } YFrameButton *minimizeButton() const { return fMinimizeButton; } YFrameButton *maximizeButton() const { return fMaximizeButton; } YFrameButton *hideButton() const { return fHideButton; } YFrameButton *rollupButton() const { return fRollupButton; } YFrameButton *depthButton() const { return fDepthButton; } void updateMenu(); virtual void raise(); virtual void lower(); void popupSystemMenu(YWindow *owner, int x, int y, unsigned int flags, YWindow *forWindow = 0); virtual void popupSystemMenu(YWindow *owner); virtual void handlePopDown(YPopupWindow *popup); virtual void configure(const YRect &r); void getNewPos(const XConfigureRequestEvent &cr, int &cx, int &cy, int &cw, int &ch); void configureClient(const XConfigureRequestEvent &configureRequest); void configureClient(int cx, int cy, int cwidth, int cheight); #ifdef CONFIG_SHAPE void setShape(); #endif enum { ffMove = (1 << 0), ffResize = (1 << 1), ffClose = (1 << 2), ffMinimize = (1 << 3), ffMaximize = (1 << 4), ffHide = (1 << 5), ffRollup = (1 << 6) } YFrameFunctions; enum { fdTitleBar = (1 << 0), fdSysMenu = (1 << 1), fdBorder = (1 << 2), fdResize = (1 << 3), fdClose = (1 << 4), fdMinimize = (1 << 5), fdMaximize = (1 << 6), fdHide = (1 << 7), fdRollup = (1 << 8), fdDepth = (1 << 9) } YFrameDecors; /// !!! needs refactoring (some are not optional right now) /// should be #ifndef NO_WINDOW_OPTIONS enum YFrameOptions { foAllWorkspaces = (1 << 0), foIgnoreTaskBar = (1 << 1), foIgnoreWinList = (1 << 2), foFullKeys = (1 << 3), foIgnoreQSwitch = (1 << 4), foNoFocusOnAppRaise = (1 << 5), foIgnoreNoFocusHint = (1 << 6), foIgnorePosition = (1 << 7), foDoNotCover = (1 << 8), foFullscreen = (1 << 9), foMaximizedVert = (1 << 10), foMaximizedHorz = (1 << 11), foNonICCCMConfigureRequest = (1 << 12), foMinimized = (1 << 13), foDoNotFocus = (1 << 14), foForcedClose = (1 << 15), foNoFocusOnMap = (1 << 16), foNoIgnoreTaskBar = (1 << 17), foAppTakesFocus = (1 << 18) }; unsigned long frameFunctions() const { return fFrameFunctions; } unsigned long frameDecors() const { return fFrameDecors; } unsigned long frameOptions() const { return fFrameOptions; } void getFrameHints(); #ifndef NO_WINDOW_OPTIONS void getWindowOptions(WindowOption &opt, bool remove); /// !!! fix kludges void getWindowOptions(WindowOptions *list, WindowOption &opt, bool remove); #endif YMenu *windowMenu(); long getState() const { return fWinState; } void setState(long mask, long state); bool isFullscreen() const { return (getState() & WinStateFullscreen) ? true : false; } int borderXN() const; int borderYN() const; int titleYN() const; int borderX() const; int borderY() const; int titleY() const; void layoutTitleBar(); void layoutButtons(); void layoutResizeIndicators(); void layoutShape(); void layoutClient(); //void workspaceShow(); //void workspaceHide(); YFrameWindow *nextLayer(); YFrameWindow *prevLayer(); #ifdef CONFIG_WINLIST WindowListItem *winListItem() const { return fWinListItem; } void setWinListItem(WindowListItem *i) { fWinListItem = i; } #endif void addAsTransient(); void removeAsTransient(); void addTransients(); void removeTransients(); void setTransient(YFrameWindow *transient) { fTransient = transient; } void setNextTransient(YFrameWindow *nextTransient) { fNextTransient = nextTransient; } void setOwner(YFrameWindow *owner) { fOwner = owner; } YFrameWindow *transient() const { return fTransient; } YFrameWindow *nextTransient() const { return fNextTransient; } YFrameWindow *owner() const { return fOwner; } YFrameWindow *mainOwner(); #ifndef LITE ref getClientIcon() const { return fFrameIcon; } ref clientIcon() const; #endif void getNormalGeometryInner(int *x, int *y, int *w, int *h); void setNormalGeometryOuter(int x, int y, int w, int h); void setNormalPositionOuter(int x, int y); void setNormalGeometryInner(int x, int y, int w, int h); void updateDerivedSize(long flagmask); void setCurrentGeometryOuter(YRect newSize); void setCurrentPositionOuter(int x, int y); void updateNormalSize(); void updateTitle(); void updateIconTitle(); #ifndef LITE void updateIcon(); #endif void updateState(); void updateLayer(bool restack = true); //void updateWorkspace(); void updateLayout(); void performLayout(); void updateMwmHints(); void updateProperties(); #ifdef CONFIG_TASKBAR void updateTaskBar(); #endif void setTypeDesktop(bool typeDesktop) { fTypeDesktop = typeDesktop; } void setTypeDock(bool typeDock) { fTypeDock = typeDock; } void setTypeSplash(bool typeSplash) { fTypeSplash = typeSplash; } bool isTypeDock() { return fTypeDock; } long getWorkspace() const { return fWinWorkspace; } void setWorkspace(long workspace); void setWorkspaceHint(long workspace); long getActiveLayer() const { return fWinActiveLayer; } void setRequestedLayer(long layer); #ifdef CONFIG_TRAY long getTrayOption() const { return fWinTrayOption; } void setTrayOption(long option); #endif void setDoNotCover(bool flag); bool isMaximized() const { return (getState() & (WinStateMaximizedHoriz | WinStateMaximizedVert)) ? true : false; } bool isMaximizedVert() const { return (getState() & WinStateMaximizedVert) ? true : false; } bool isMaximizedHoriz() const { return (getState() & WinStateMaximizedHoriz) ? true : false; } bool isMaximizedFully() const { return isMaximizedVert() && isMaximizedHoriz(); } bool isMinimized() const { return (getState() & WinStateMinimized) ? true : false; } bool isHidden() const { return (getState() & WinStateHidden) ? true : false; } bool isSkipTaskBar() const { return (getState() & WinStateSkipTaskBar) ? true : false; } bool isRollup() const { return (getState() & WinStateRollup) ? true : false; } bool isSticky() const { return (getState() & WinStateAllWorkspaces) ? true : false; } //bool isHidWorkspace() { return (getState() & WinStateHidWorkspace) ? true : false; } //bool isHidTransient() { return (getState() & WinStateHidTransient) ? true : false; } bool wasMinimized() const { return (getState() & WinStateWasMinimized) ? true : false; } bool wasHidden() const { return (getState() & WinStateWasHidden) ? true : false; } bool isIconic() const { return isMinimized() && fMiniIcon; } MiniIcon *getMiniIcon() const { return fMiniIcon; } bool isManaged() const { return fManaged; } void setManaged(bool isManaged) { fManaged = isManaged; } void setSticky(bool sticky); bool visibleOn(long workspace) const { return (isSticky() || getWorkspace() == workspace); } bool visibleNow() const { return visibleOn(manager->activeWorkspace()); } bool isModal(); bool hasModal(); bool canFocus(); bool canFocusByMouse(); bool avoidFocus(); bool getInputFocusHint(); bool inWorkArea() const; bool affectsWorkArea() const; bool doNotCover() const { return (frameOptions() & foDoNotCover) ? true : false; } #ifndef LITE virtual ref getIcon() const { return clientIcon(); } #endif virtual ustring getTitle() const { return client()->windowTitle(); } virtual ustring getIconTitle() const { return client()->iconTitle(); } YFrameButton *getButton(char c); void positionButton(YFrameButton *b, int &xPos, bool onRight); bool isButton(char c); #ifdef WMSPEC_HINTS void updateNetWMStrut(); #endif int strutLeft() { return fStrutLeft; } int strutRight() { return fStrutRight; } int strutTop() { return fStrutTop; } int strutBottom() { return fStrutBottom; } YFrameWindow *nextCreated() { return fNextCreatedFrame; } YFrameWindow *prevCreated() { return fPrevCreatedFrame; } void setNextCreated(YFrameWindow *f) { fNextCreatedFrame = f; } void setPrevCreated(YFrameWindow *f) { fPrevCreatedFrame = f; } YFrameWindow *nextFocus() { return fNextFocusFrame; } YFrameWindow *prevFocus() { return fPrevFocusFrame; } void setNextFocus(YFrameWindow *f) { fNextFocusFrame = f; } void setPrevFocus(YFrameWindow *f) { fPrevFocusFrame = f; } void insertFocusFrame(bool focus); void insertLastFocusFrame(); void removeFocusFrame(); void updateUrgency(); void setWmUrgency(bool wmUrgency); bool isUrgent() { return fWmUrgency || fClientUrgency; } int getScreen(); long getOldLayer() { return fOldLayer; } void saveOldLayer() { fOldLayer = fWinActiveLayer; } private: /*typedef enum { fsMinimized = 1 << 0, fsMaximized = 1 << 1, fsRolledup = 1 << 2, fsHidden = 1 << 3, fsWorkspaceHidden = 1 << 4 } FrameStateFlags;*/ bool fFocused; unsigned long fFrameFunctions; unsigned long fFrameDecors; unsigned long fFrameOptions; int normalX, normalY, normalW, normalH; int posX, posY, posW, posH; int iconX, iconY; YFrameClient *fClient; YClientContainer *fClientContainer; YFrameTitleBar *fTitleBar; YFrameButton *fCloseButton; YFrameButton *fMenuButton; YFrameButton *fMaximizeButton; YFrameButton *fMinimizeButton; YFrameButton *fHideButton; YFrameButton *fRollupButton; YFrameButton *fDepthButton; YPopupWindow *fPopupActive; int buttonDownX, buttonDownY; int grabX, grabY; int movingWindow, sizingWindow; int sizeByMouse; int origX, origY, origW, origH; YFrameWindow *fNextFrame; // window below this one YFrameWindow *fPrevFrame; // window above this one YFrameWindow *fNextCreatedFrame; YFrameWindow *fPrevCreatedFrame; YFrameWindow *fNextFocusFrame; YFrameWindow *fPrevFocusFrame; Window topSide, leftSide, rightSide, bottomSide; Window topLeftCorner, topRightCorner, bottomLeftCorner, bottomRightCorner; int indicatorsVisible; #ifdef CONFIG_TASKBAR TaskBarApp *fTaskBarApp; #endif #ifdef CONFIG_TRAY TrayApp *fTrayApp; #endif MiniIcon *fMiniIcon; #ifdef CONFIG_WINLIST WindowListItem *fWinListItem; #endif #ifndef LITE ref fFrameIcon; #endif YFrameWindow *fOwner; YFrameWindow *fTransient; YFrameWindow *fNextTransient; static YTimer *fAutoRaiseTimer; static YTimer *fDelayFocusTimer; long fWinWorkspace; long fWinRequestedLayer; long fWinActiveLayer; #ifdef CONFIG_TRAY long fWinTrayOption; #endif long fWinState; long fWinStateMask; bool fManaged; long fWinOptionMask; long fOldLayer; YMsgBox *fKillMsgBox; // _NET_WM_STRUT support int fStrutLeft; int fStrutRight; int fStrutTop; int fStrutBottom; int fShapeWidth; int fShapeHeight; int fShapeTitleY; int fShapeBorderX; int fShapeBorderY; bool fWmUrgency; bool fClientUrgency; bool fTypeDesktop; bool fTypeDock; bool fTypeSplash; enum WindowArranges { waTop, waBottom, waCenter, waLeft, waRight }; void wmArrange(int tcb, int lcr); void wmSnapMove(int tcb, int lcr); int getTopCoord(int my, YFrameWindow **w, int count); int getBottomCoord(int My, YFrameWindow **w, int count); int getLeftCoord(int mx, YFrameWindow **w, int count); int getRightCoord(int Mx, YFrameWindow **w, int count); // only focus if mouse moves //static int fMouseFocusX, fMouseFocusY; void setGeometry(const YRect &); void setPosition(int, int); void setSize(int, int); void setWindowGeometry(const YRect &r) { YWindow::setGeometry(r); performLayout(); } friend class MiniIcon; }; //!!! remove this extern ref frameTL[2][2]; extern ref frameT[2][2]; extern ref frameTR[2][2]; extern ref frameL[2][2]; extern ref frameR[2][2]; extern ref frameBL[2][2]; extern ref frameB[2][2]; extern ref frameBR[2][2]; extern ref titleJ[2]; extern ref titleL[2]; extern ref titleS[2]; extern ref titleP[2]; extern ref titleT[2]; extern ref titleM[2]; extern ref titleB[2]; extern ref titleR[2]; extern ref titleQ[2]; extern ref menuButton[3]; #ifdef CONFIG_GRADIENTS extern ref rgbFrameT[2][2]; extern ref rgbFrameL[2][2]; extern ref rgbFrameR[2][2]; extern ref rgbFrameB[2][2]; extern ref rgbTitleS[2]; extern ref rgbTitleT[2]; extern ref rgbTitleB[2]; #endif #endif icewm-1.3.7/src/ypoll.h0000644000076600007660000000141411463274240013724 0ustar develdevel#ifndef __YPOLL_H__ #define __YPOLL_H__ class YPollBase { public: YPollBase(): fFd(-1), fPrev(0), fNext(0) { } virtual ~YPollBase(); virtual void notifyRead() = 0; virtual void notifyWrite() = 0; virtual bool forRead() = 0; virtual bool forWrite() = 0; void registerPoll(int fd); void unregisterPoll(); int fd() const { return fFd; } protected: friend class YApplication; int fFd; YPollBase *fPrev; YPollBase *fNext; }; template class YPoll: public YPollBase { public: YPoll(): YPollBase() {} void registerPoll(T *owner, int fd) { fOwner = owner; YPollBase::registerPoll(fd); } T *owner() { return fOwner; } private: T *fOwner; protected: virtual ~YPoll() {}; }; #endif icewm-1.3.7/src/apppstatus.h0000644000076600007660000000340511463274240014773 0ustar develdevel// ////////////////////////////////////////////////////////////////////////// // IceWM: src/pppstatus.h // // // PPP Status // // ////////////////////////////////////////////////////////////////////////// #ifndef NETSTATUS_H #define NETSTATUS_H #ifdef CONFIG_APPLET_NET_STATUS #if defined(linux) || defined(__FreeBSD__) || defined(__NetBSD__) || \ defined(__OpenBSD__) #define HAVE_NET_STATUS 1 #include "ywindow.h" #include "ytimer.h" #include class IAppletContainer; class NetStatus: public YWindow, public YTimerListener { public: NetStatus(mstring netdev, IAppletContainer *taskBar, YWindow *aParent = 0); ~NetStatus(); private: IAppletContainer *fTaskBar; YColor *color[3]; YTimer *fUpdateTimer; long *ppp_in; /* long could be really enough for rate in B/s */ long *ppp_out; unsigned long long prev_ibytes, start_ibytes, cur_ibytes, offset_ibytes; unsigned long long prev_obytes, start_obytes, cur_obytes, offset_obytes; time_t start_time; struct timeval prev_time; bool wasUp; // previous link status bool useIsdn; // netdevice is an IsdnDevice mstring fNetDev; // name of the device char phoneNumber[32]; void updateVisible(bool aVisible); // methods local to this class bool isUp(); bool isUpIsdn(); void getCurrent(long *in, long *out); void updateStatus(); void updateToolTip(); // methods overloaded from superclasses virtual bool handleTimer(YTimer *t); virtual void handleClick(const XButtonEvent &up, int count); virtual void paint(Graphics & g, const YRect &r); }; #else // linux || __FreeBSD__ || __NetBSD__ #undef CONFIG_APPLET_NET_STATUS #endif #endif // CONFIG_APPLET_NET_STATUS #endif // NETSTATUS_H icewm-1.3.7/src/aapm.h0000644000076600007660000000360211463274240013504 0ustar develdevel #if defined(linux) || (defined (__FreeBSD__)) || (defined(__NetBSD__) && defined(i386)) #include "ywindow.h" #include "ytimer.h" #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) #define APMDEV "/dev/apm" #else #define APMDEV "/proc/apm" #endif //assume there is no laptop with more //than 3 batteries #define MAX_ACPI_BATTERY_NUM 3 typedef struct { //(file)name of battery int present; char *name; int capacity_full; } bat_info; class YApm: public YWindow, public YTimerListener { public: YApm(YWindow *aParent = 0); virtual ~YApm(); virtual void paint(Graphics &g, const YRect &r); void updateToolTip(); virtual bool handleTimer(YTimer *t); private: YTimer *apmTimer; ref getPixmap(char ch); int calcInitialWidth(); int calcWidth(const char *s, int count); void AcpiStr(char *s, bool Tool); void SysStr(char *s, bool Tool); void PmuStr(char *, const bool); void ApmStr(char *s, bool Tool); int ignore_directory_bat_entry(struct dirent *de); int ignore_directory_ac_entry(struct dirent *de); static YColor *apmBg; static YColor *apmFg; static ref apmFont; static YColor *apmColorOnLine; static YColor *apmColorBattery; static YColor *apmColorGraphBg; // display mode: pmu, acpi or apm info enum { APM, ACPI, PMU, SYSFS } mode; //number of batteries (for apm == 1) int batteryNum; //names of batteries to ignore. e.g. //the laptop has two slots but the //user has only one battery static char *acpiIgnoreBatteryNames; //list of batteries (static info) bat_info *acpiBatteries[MAX_ACPI_BATTERY_NUM]; //(file)name of ac adapter char *acpiACName; char *fCurrentState; // On line status and charge persent int acIsOnLine; double chargeStatus; void updateState(); }; #else #undef CONFIG_APPLET_APM #endif icewm-1.3.7/src/ycmdline.cc0000644000076600007660000000356011463274240014533 0ustar develdevel/* * IceWM - Generic command line parser * Copyright (C) 2001 The Authors of IceWM * * Release under terms of the GNU Library General Public License * * 2001/03/12: Mathias Hasselmann * - initial version */ #include "config.h" #include "ycmdline.h" #include "base.h" #include "ascii.h" #include "intl.h" #include int YCommandLine::parse() { int rc(0); for (int n = 1, apos = 0; !rc && n < argc; ) { const char * const *arg = argv + n; if (**arg == '-') { char const * value = NULL; char const option = getArgument(*arg, value); rc = setOption(*arg, option, value); if (option != '\0') eatArgument(n); else ++n; } else rc = setArgument(apos++, argv[n++]); } return rc; } int YCommandLine::setOption(char const * arg, char, char const *) { warn(_("Unrecognized option: %s\n"), arg); return 2; } int YCommandLine::setArgument(int /*pos*/, char const * val) { warn(_("Unrecognized argument: %s\n"), val); return 2; } char const * YCommandLine::getValue(char const * const & arg, char const * vptr) { if (vptr) { // ------------------------------------- eat leading garbage --- if (*vptr == '=') ++vptr; while (ASCII::isSpaceOrTab(*vptr)) ++vptr; } else { // ------------------------- value assumed in the next argument --- int idx = &arg - static_cast(argv) + 1; if (idx < argc) { vptr = argv[idx]; eatArgument(idx); } else warn(_("Argument required for %s switch"), arg); } return vptr; } void YCommandLine::eatArgument(int idx) { if (idx < argc) ::memmove(argv + idx, argv + idx + 1, sizeof(*argv) * (--argc - idx)); } icewm-1.3.7/src/yxapp.cc0000644000076600007660000006664111463274240014101 0ustar develdevel#include "config.h" #include "yxapp.h" #include "yfull.h" #include "wmprog.h" #include "wmmgr.h" #include "MwmUtil.h" #include "prefs.h" #include "yprefs.h" #include "ypixbuf.h" #include "yconfig.h" #include #include #include "intl.h" YXApplication *xapp = 0; YDesktop *desktop = 0; XContext windowContext; YCursor YXApplication::leftPointer; YCursor YXApplication::rightPointer; YCursor YXApplication::movePointer; Atom _XA_WM_PROTOCOLS; Atom _XA_WM_TAKE_FOCUS; Atom _XA_WM_DELETE_WINDOW; Atom _XA_WM_STATE; Atom _XA_WM_CHANGE_STATE; Atom _XATOM_MWM_HINTS; //Atom _XA_MOTIF_WM_INFO;!!! Atom _XA_WM_COLORMAP_WINDOWS; Atom _XA_WM_CLIENT_LEADER; Atom _XA_WM_WINDOW_ROLE; Atom _XA_WINDOW_ROLE; Atom _XA_SM_CLIENT_ID; Atom _XA_ICEWM_ACTION; Atom _XA_CLIPBOARD; Atom _XA_TARGETS; Atom _XA_XEMBED_INFO; Atom _XA_WIN_PROTOCOLS; Atom _XA_WIN_WORKSPACE; Atom _XA_WIN_WORKSPACE_COUNT; Atom _XA_WIN_WORKSPACE_NAMES; Atom _XA_WIN_WORKAREA; #ifdef CONFIG_TRAY Atom _XA_WIN_TRAY; #endif Atom _XA_WIN_ICONS; Atom _XA_WIN_STATE; Atom _XA_WIN_LAYER; Atom _XA_WIN_HINTS; Atom _XA_WIN_SUPPORTING_WM_CHECK; Atom _XA_WIN_CLIENT_LIST; Atom _XA_WIN_DESKTOP_BUTTON_PROXY; Atom _XA_WIN_AREA; Atom _XA_WIN_AREA_COUNT; Atom _XA_NET_SUPPORTED; Atom _XA_NET_SUPPORTING_WM_CHECK; Atom _XA_NET_CLIENT_LIST; Atom _XA_NET_CLIENT_LIST_STACKING; Atom _XA_NET_NUMBER_OF_DESKTOPS; Atom _XA_NET_CURRENT_DESKTOP; Atom _XA_NET_WORKAREA; Atom _XA_NET_WM_MOVERESIZE; Atom _XA_NET_WM_STRUT; Atom _XA_NET_WM_DESKTOP; Atom _XA_NET_CLOSE_WINDOW; Atom _XA_NET_ACTIVE_WINDOW; Atom _XA_NET_WM_STATE; Atom _XA_NET_WM_STATE_SHADED; Atom _XA_NET_WM_STATE_MAXIMIZED_VERT; Atom _XA_NET_WM_STATE_MAXIMIZED_HORZ; Atom _XA_NET_WM_STATE_SKIP_TASKBAR; Atom _XA_NET_WM_STATE_HIDDEN; Atom _XA_NET_WM_STATE_FULLSCREEN; Atom _XA_NET_WM_STATE_ABOVE; Atom _XA_NET_WM_STATE_BELOW; Atom _XA_NET_WM_STATE_MODAL; Atom _XA_NET_WM_WINDOW_TYPE; Atom _XA_NET_WM_WINDOW_TYPE_DOCK; Atom _XA_NET_WM_WINDOW_TYPE_DESKTOP; Atom _XA_NET_WM_WINDOW_TYPE_SPLASH; Atom _XA_NET_WM_NAME; Atom _XA_NET_WM_ICON; Atom _XA_NET_WM_PID; Atom _XA_NET_WM_USER_TIME; Atom _XA_NET_WM_STATE_DEMANDS_ATTENTION; Atom _XA_KWM_WIN_ICON; Atom _XA_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR = 0; Atom XA_XdndAware; Atom XA_XdndEnter; Atom XA_XdndLeave; Atom XA_XdndPosition; Atom XA_XdndStatus; Atom XA_XdndDrop; Atom XA_XdndFinished; YColor *YColor::black(NULL); YColor *YColor::white(NULL); ref buttonIPixmap; ref buttonAPixmap; ref logoutPixmap; ref switchbackPixmap; ref listbackPixmap; ref dialogbackPixmap; ref menubackPixmap; ref menusepPixmap; ref menuselPixmap; #ifdef CONFIG_GRADIENTS ref buttonIPixbuf; ref buttonAPixbuf; ref logoutPixbuf; ref switchbackPixbuf; ref listbackPixbuf; ref dialogbackPixbuf; ref menubackPixbuf; ref menuselPixbuf; ref menusepPixbuf; #endif //changed robc ref closePixmap[3]; ref minimizePixmap[3]; ref maximizePixmap[3]; ref restorePixmap[3]; ref hidePixmap[3]; ref rollupPixmap[3]; ref rolldownPixmap[3]; ref depthPixmap[3]; #ifdef CONFIG_SHAPE int shapesSupported; int shapeEventBase, shapeErrorBase; #endif #ifdef CONFIG_XRANDR int xrandrSupported; bool xrandr12 = false; int xrandrEventBase, xrandrErrorBase; #endif #ifdef DEBUG int xeventcount = 0; #endif class YClipboard: public YWindow { public: YClipboard(): YWindow() { fLen = 0; fData = 0; } ~YClipboard() { if (fData) delete [] fData; fData = 0; fLen = 0; } void setData(const char *data, int len) { if (fData) delete [] fData; fLen = len; fData = new char[len]; if (fData) memcpy(fData, data, len); if (fLen == 0) clearSelection(false); else acquireSelection(false); } void handleSelectionClear(const XSelectionClearEvent &clear) { if (clear.selection == _XA_CLIPBOARD) { if (fData) delete [] fData; fLen = 0; fData = 0; } } void handleSelectionRequest(const XSelectionRequestEvent &request) { if (request.selection == _XA_CLIPBOARD) { XSelectionEvent notify; notify.type = SelectionNotify; notify.requestor = request.requestor; notify.selection = request.selection; notify.target = request.target; notify.time = request.time; notify.property = request.property; if (request.selection == _XA_CLIPBOARD && request.target == XA_STRING && fLen > 0) { XChangeProperty(xapp->display(), request.requestor, request.property, request.target, 8, PropModeReplace, (unsigned char *)(fData ? fData : ""), fLen); } else if (request.selection == _XA_CLIPBOARD && request.target == _XA_TARGETS && fLen > 0) { Atom type = XA_STRING; XChangeProperty(xapp->display(), request.requestor, request.property, request.target, 32, PropModeReplace, (unsigned char *)&type, 1); } else { notify.property = None; } XSendEvent(xapp->display(), notify.requestor, False, 0L, (XEvent *)¬ify); } } private: int fLen; char *fData; }; static void initAtoms() { struct { Atom *atom; const char *name; } atom_info[] = { { &_XA_WM_PROTOCOLS, "WM_PROTOCOLS" }, { &_XA_WM_TAKE_FOCUS, "WM_TAKE_FOCUS" }, { &_XA_WM_DELETE_WINDOW, "WM_DELETE_WINDOW" }, { &_XA_WM_STATE, "WM_STATE" }, { &_XA_WM_CHANGE_STATE, "WM_CHANGE_STATE" }, { &_XA_WM_COLORMAP_WINDOWS, "WM_COLORMAP_WINDOWS" }, { &_XA_WM_CLIENT_LEADER, "WM_CLIENT_LEADER" }, { &_XA_WINDOW_ROLE, "WINDOW_ROLE" }, { &_XA_WM_WINDOW_ROLE, "WM_WINDOW_ROLE" }, { &_XA_SM_CLIENT_ID, "SM_CLIENT_ID" }, { &_XA_ICEWM_ACTION, "_ICEWM_ACTION" }, { &_XATOM_MWM_HINTS, _XA_MOTIF_WM_HINTS }, { &_XA_KWM_WIN_ICON, "KWM_WIN_ICON" }, { &_XA_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR, "_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR" }, { &_XA_WIN_WORKSPACE, XA_WIN_WORKSPACE }, { &_XA_WIN_WORKSPACE_COUNT, XA_WIN_WORKSPACE_COUNT }, { &_XA_WIN_WORKSPACE_NAMES, XA_WIN_WORKSPACE_NAMES }, { &_XA_WIN_WORKAREA, XA_WIN_WORKAREA }, { &_XA_WIN_ICONS, XA_WIN_ICONS }, { &_XA_WIN_LAYER, XA_WIN_LAYER }, #ifdef CONFIG_TRAY { &_XA_WIN_TRAY, XA_WIN_TRAY }, #endif { &_XA_WIN_STATE, XA_WIN_STATE }, { &_XA_WIN_HINTS, XA_WIN_HINTS }, { &_XA_WIN_PROTOCOLS, XA_WIN_PROTOCOLS }, { &_XA_WIN_SUPPORTING_WM_CHECK, XA_WIN_SUPPORTING_WM_CHECK }, { &_XA_WIN_CLIENT_LIST, XA_WIN_CLIENT_LIST }, { &_XA_WIN_DESKTOP_BUTTON_PROXY, XA_WIN_DESKTOP_BUTTON_PROXY }, { &_XA_WIN_AREA, XA_WIN_AREA }, { &_XA_WIN_AREA_COUNT, XA_WIN_AREA_COUNT }, { &_XA_NET_SUPPORTED, "_NET_SUPPORTED" }, { &_XA_NET_SUPPORTING_WM_CHECK, "_NET_SUPPORTING_WM_CHECK" }, { &_XA_NET_CLIENT_LIST, "_NET_CLIENT_LIST" }, { &_XA_NET_CLIENT_LIST_STACKING, "_NET_CLIENT_LIST_STACKING" }, { &_XA_NET_NUMBER_OF_DESKTOPS, "_NET_NUMBER_OF_DESKTOPS" }, { &_XA_NET_CURRENT_DESKTOP, "_NET_CURRENT_DESKTOP" }, { &_XA_NET_WORKAREA, "_NET_WORKAREA" }, { &_XA_NET_WM_MOVERESIZE, "_NET_WM_MOVERESIZE" }, { &_XA_NET_WM_STRUT, "_NET_WM_STRUT" }, { &_XA_NET_WM_DESKTOP, "_NET_WM_DESKTOP" }, { &_XA_NET_CLOSE_WINDOW, "_NET_CLOSE_WINDOW" }, { &_XA_NET_ACTIVE_WINDOW, "_NET_ACTIVE_WINDOW" }, { &_XA_NET_WM_STATE, "_NET_WM_STATE" }, { &_XA_NET_WM_STATE_SHADED, "_NET_WM_STATE_SHADED" }, { &_XA_NET_WM_STATE_MAXIMIZED_VERT, "_NET_WM_STATE_MAXIMIZED_VERT" }, { &_XA_NET_WM_STATE_MAXIMIZED_HORZ, "_NET_WM_STATE_MAXIMIZED_HORZ" }, { &_XA_NET_WM_STATE_SKIP_TASKBAR, "_NET_WM_STATE_SKIP_TASKBAR" }, { &_XA_NET_WM_STATE_HIDDEN, "_NET_WM_STATE_HIDDEN" }, { &_XA_NET_WM_STATE_FULLSCREEN, "_NET_WM_STATE_FULLSCREEN" }, { &_XA_NET_WM_STATE_ABOVE, "_NET_WM_STATE_ABOVE" }, { &_XA_NET_WM_STATE_BELOW, "_NET_WM_STATE_BELOW" }, { &_XA_NET_WM_STATE_MODAL, "_NET_WM_STATE_MODAL" }, { &_XA_NET_WM_WINDOW_TYPE, "_NET_WM_WINDOW_TYPE" }, { &_XA_NET_WM_WINDOW_TYPE_DOCK, "_NET_WM_WINDOW_TYPE_DOCK" }, { &_XA_NET_WM_WINDOW_TYPE_DESKTOP, "_NET_WM_WINDOW_TYPE_DESKTOP" }, { &_XA_NET_WM_WINDOW_TYPE_SPLASH, "_NET_WM_WINDOW_TYPE_SPLASH" }, { &_XA_NET_WM_NAME, "_NET_WM_NAME" }, { &_XA_NET_WM_ICON, "_NET_WM_ICON" }, { &_XA_NET_WM_PID, "_NET_WM_PID" }, { &_XA_NET_WM_USER_TIME, "_NET_WM_USER_TIME" }, { &_XA_NET_WM_STATE_DEMANDS_ATTENTION, "_NET_WM_STATE_DEMANDS_ATTENTION" }, { &_XA_CLIPBOARD, "CLIPBOARD" }, { &_XA_XEMBED_INFO, "_XEMBED_INFO" }, { &_XA_TARGETS, "TARGETS" }, { &XA_XdndAware, "XdndAware" }, { &XA_XdndEnter, "XdndEnter" }, { &XA_XdndLeave, "XdndLeave" }, { &XA_XdndPosition, "XdndPosition" }, { &XA_XdndStatus, "XdndStatus" }, { &XA_XdndDrop, "XdndDrop" }, { &XA_XdndFinished, "XdndFinished" } }; unsigned int i; #ifdef HAVE_XINTERNATOMS const char *names[ACOUNT(atom_info)]; Atom atoms[ACOUNT(atom_info)]; for (i = 0; i < ACOUNT(atom_info); i++) names[i] = atom_info[i].name; XInternAtoms(xapp->display(), (char **)names, ACOUNT(atom_info), False, atoms); for (i = 0; i < ACOUNT(atom_info); i++) *(atom_info[i].atom) = atoms[i]; #else for (i = 0; i < ACOUNT(atom_info); i++) *(atom_info[i].atom) = XInternAtom(xapp->display(), atom_info[i].name, False); #endif } static void initPointers() { YXApplication::leftPointer.load("left.xpm", XC_left_ptr); YXApplication::rightPointer.load("right.xpm", XC_right_ptr); YXApplication::movePointer.load("move.xpm", XC_fleur); } static void initColors() { YColor::black = new YColor("rgb:00/00/00"); YColor::white = new YColor("rgb:FF/FF/FF"); } void YXApplication::initModifiers() { XModifierKeymap *xmk = XGetModifierMapping(xapp->display()); AltMask = MetaMask = WinMask = SuperMask = HyperMask = NumLockMask = ScrollLockMask = ModeSwitchMask = 0; if (xmk) { KeyCode *c = xmk->modifiermap; for (int m = 0; m < 8; m++) for (int k = 0; k < xmk->max_keypermod; k++, c++) { if (*c == NoSymbol) continue; KeySym kc = XKeycodeToKeysym(xapp->display(), *c, 0); if (kc == NoSymbol) kc = XKeycodeToKeysym(xapp->display(), *c, 1); if (kc == XK_Num_Lock && NumLockMask == 0) NumLockMask = (1 << m); if (kc == XK_Scroll_Lock && ScrollLockMask == 0) ScrollLockMask = (1 << m); if ((kc == XK_Alt_L || kc == XK_Alt_R) && AltMask == 0) AltMask = (1 << m); if ((kc == XK_Meta_L || kc == XK_Meta_R) && MetaMask == 0) MetaMask = (1 << m); if ((kc == XK_Super_L || kc == XK_Super_R) && SuperMask == 0) SuperMask = (1 << m); if ((kc == XK_Hyper_L || kc == XK_Hyper_R) && HyperMask == 0) HyperMask = (1 << m); if ((kc == XK_Mode_switch || kc == XK_ISO_Level3_Shift) && ModeSwitchMask == 0) ModeSwitchMask = (1 << m); } XFreeModifiermap(xmk); } if (MetaMask == AltMask) MetaMask = 0; MSG(("alt:%d meta:%d super:%d hyper:%d mode:%d num:%d scroll:%d", AltMask, MetaMask, SuperMask, HyperMask, ModeSwitchMask, NumLockMask, ScrollLockMask)); // some hacks for "broken" modifier configurations if (HyperMask == SuperMask) HyperMask = 0; // this basically does what <0.9.13 versions did if (AltMask != 0 && MetaMask == Mod1Mask) { MetaMask = AltMask; AltMask = Mod1Mask; } if (AltMask == 0 && MetaMask != 0) { if (MetaMask != Mod1Mask) { AltMask = Mod1Mask; } else { AltMask = MetaMask; MetaMask = 0; } } if (AltMask == 0) AltMask = Mod1Mask; if (ModeSwitchMask & (AltMask | MetaMask | SuperMask | HyperMask)) ModeSwitchMask = 0; PRECONDITION(xapp->AltMask != 0); PRECONDITION(xapp->AltMask != ShiftMask); PRECONDITION(xapp->AltMask != ControlMask); PRECONDITION(xapp->AltMask != xapp->MetaMask); KeyMask = ControlMask | ShiftMask | AltMask | MetaMask | SuperMask | HyperMask | ModeSwitchMask; ButtonMask = Button1Mask | Button2Mask | Button3Mask | Button4Mask | Button5Mask; ButtonKeyMask = KeyMask | ButtonMask; #if 0 KeySym wl = XKeycodeToKeysym(app->display(), 115, 0); KeySym wr = XKeycodeToKeysym(app->display(), 116, 0); if (wl == XK_Super_L) { } else if (wl == XK_Meta_L) { } #endif // this will do for now, but we should actualy check the keycodes Win_L = Win_R = 0; if (SuperMask != 0) { WinMask = SuperMask; Win_L = XK_Super_L; Win_R = XK_Super_R; } MSG(("alt:%d meta:%d super:%d hyper:%d win:%d mode:%d num:%d scroll:%d", AltMask, MetaMask, SuperMask, HyperMask, WinMask, ModeSwitchMask, NumLockMask, ScrollLockMask)); } void YXApplication::dispatchEvent(YWindow *win, XEvent &xev) { if (xev.type == KeyPress || xev.type == KeyRelease) { YWindow *w = win; if (!(fGrabWindow != 0 && !fGrabTree)) { if (w->toplevel()) w = w->toplevel(); if (w->getFocusWindow() != 0) w = w->getFocusWindow(); } while (w && (w->handleKey(xev.xkey) == false)) { if (fGrabTree && w == fXGrabWindow) break; w = w->parent(); } } else { Window child; if (xev.type == MotionNotify) { if (xev.xmotion.window != win->handle()) { if (XTranslateCoordinates(xapp->display(), xev.xany.window, win->handle(), xev.xmotion.x, xev.xmotion.y, &xev.xmotion.x, &xev.xmotion.y, &child) == True) xev.xmotion.window = win->handle(); else return ; } } else if (xev.type == ButtonPress || xev.type == ButtonRelease || xev.type == EnterNotify || xev.type == LeaveNotify) { if (xev.xbutton.window != win->handle()) { if (XTranslateCoordinates(xapp->display(), xev.xany.window, win->handle(), xev.xbutton.x, xev.xbutton.y, &xev.xbutton.x, &xev.xbutton.y, &child) == True) xev.xbutton.window = win->handle(); else return ; } } else if (xev.type == KeyPress || xev.type == KeyRelease) { if (xev.xkey.window != win->handle()) { if (XTranslateCoordinates(xapp->display(), xev.xany.window, win->handle(), xev.xkey.x, xev.xkey.y, &xev.xkey.x, &xev.xkey.y, &child) == True) xev.xkey.window = win->handle(); else return ; } } win->handleEvent(xev); } } void YXApplication::handleGrabEvent(YWindow *winx, XEvent &xev) { union { YWindow *ptr; XPointer xptr; } win = { winx }; PRECONDITION(win.ptr != 0); if (fGrabTree) { if (xev.xbutton.subwindow != None) { if (XFindContext(display(), xev.xbutton.subwindow, windowContext, &(win.xptr)) != 0) { if (xev.type == EnterNotify || xev.type == LeaveNotify) win.ptr = 0; else win.ptr = fGrabWindow; } } else { if (XFindContext(display(), xev.xbutton.window, windowContext, &(win.xptr)) != 0) { if (xev.type == EnterNotify || xev.type == LeaveNotify) win.ptr = 0; else win.ptr = fGrabWindow; } } if (win.ptr == 0) return ; { YWindow *p = win.ptr; while (p) { if (p == fXGrabWindow) break; p = p->parent(); } if (p == 0) { if (xev.type == EnterNotify || xev.type == LeaveNotify) return ; else win.ptr = fGrabWindow; } } if (xev.type == EnterNotify || xev.type == LeaveNotify) if (win.ptr != fGrabWindow) return ; if (fGrabWindow != fXGrabWindow) win.ptr = fGrabWindow; } dispatchEvent(win.ptr, xev); } void YXApplication::replayEvent() { if (!fReplayEvent) { fReplayEvent = true; XAllowEvents(xapp->display(), ReplayPointer, CurrentTime); } } void YXApplication::captureGrabEvents(YWindow *win) { if (fGrabWindow == fXGrabWindow && fGrabTree) { fGrabWindow = win; } } void YXApplication::releaseGrabEvents(YWindow *win) { if (win == fGrabWindow && fGrabTree) { fGrabWindow = fXGrabWindow; } } int YXApplication::grabEvents(YWindow *win, Cursor ptr, unsigned int eventMask, int grabMouse, int grabKeyboard, int grabTree) { int rc; if (fGrabWindow != 0) return 0; if (win == 0) return 0; XSync(display(), 0); fGrabTree = grabTree; if (grabMouse) { fGrabMouse = 1; rc = XGrabPointer(display(), win->handle(), grabTree ? True : False, eventMask, GrabModeSync, GrabModeAsync, None, ptr, CurrentTime); if (rc != Success) { MSG(("grab status = %d\x7", rc)); return 0; } } else { fGrabMouse = 0; XChangeActivePointerGrab(display(), eventMask, ptr, CurrentTime); } if (grabKeyboard) { rc = XGrabKeyboard(display(), win->handle(), ///False, grabTree ? True : False, GrabModeSync, GrabModeAsync, CurrentTime); if (rc != Success && grabMouse) { MSG(("grab status = %d\x7", rc)); XUngrabPointer(display(), CurrentTime); return 0; } } XAllowEvents(xapp->display(), SyncPointer, CurrentTime); desktop->resetColormapFocus(false); fXGrabWindow = win; fGrabWindow = win; return 1; } int YXApplication::releaseEvents() { if (fGrabWindow == 0) return 0; fGrabWindow = 0; fXGrabWindow = 0; fGrabTree = 0; if (fGrabMouse) { XUngrabPointer(display(), CurrentTime); fGrabMouse = 0; } XUngrabKeyboard(display(), CurrentTime); desktop->resetColormapFocus(true); return 1; } void YXApplication::afterWindowEvent(XEvent & /*xev*/) { } bool YXApplication::filterEvent(const XEvent &xev) { if (xev.type == MappingNotify) { msg("MappingNotify"); XMappingEvent xmapping = xev.xmapping; XRefreshKeyboardMapping(&xmapping); initModifiers(); desktop->grabKeys(); return true; } return false; } void YXApplication::saveEventTime(const XEvent &xev) { switch (xev.type) { case ButtonPress: case ButtonRelease: lastEventTime = xev.xbutton.time; break; case MotionNotify: lastEventTime = xev.xmotion.time; break; case KeyPress: case KeyRelease: lastEventTime = xev.xkey.time; break; case EnterNotify: case LeaveNotify: lastEventTime = xev.xcrossing.time; break; case PropertyNotify: lastEventTime = xev.xproperty.time; break; case SelectionClear: lastEventTime = xev.xselectionclear.time; break; case SelectionRequest: lastEventTime = xev.xselectionrequest.time; break; case SelectionNotify: lastEventTime = xev.xselection.time; break; } } Time YXApplication::getEventTime(const char */*debug*/) const { return lastEventTime; } extern void logEvent(const XEvent &xev); bool YXApplication::hasColormap() { XVisualInfo pattern; pattern.screen = DefaultScreen(display()); int nVisuals; bool rc = false; XVisualInfo *first_visual(XGetVisualInfo(display(), VisualScreenMask, &pattern, &nVisuals)); XVisualInfo *visual = first_visual; while(visual && nVisuals--) { if (visual->c_class & 1) rc = true; visual++; } if (first_visual) XFree(first_visual); return rc; } void YXApplication::alert() { XBell(display(), 100); } void YXApplication::setClipboardText(const ustring &data) { if (fClip == 0) fClip = new YClipboard(); if (!fClip) return ; cstring s(data); fClip->setData(s.c_str(), s.c_str_len()); } YXApplication::YXApplication(int *argc, char ***argv, const char *displayName): YApplication(argc, argv) { xapp = this; lastEventTime = CurrentTime; fGrabWindow = 0; fGrabTree = 0; fXGrabWindow = 0; fGrabMouse = 0; fPopup = 0; fClip = 0; fReplayEvent = false; bool runSynchronized(false); for (char ** arg = *argv + 1; arg < *argv + *argc; ++arg) { if (**arg == '-') { char *value; if ((value = GET_LONG_ARGUMENT("display")) != NULL) displayName = value; else if (IS_LONG_SWITCH("sync")) runSynchronized = true; } } if (displayName == 0) displayName = getenv("DISPLAY"); else { static char disp[256] = "DISPLAY="; strcat(disp, displayName); putenv(disp); } if (!(fDisplay = XOpenDisplay(displayName))) die(1, _("Can't open display: %s. X must be running and $DISPLAY set."), displayName ? displayName : _("")); if (runSynchronized) XSynchronize(display(), True); xfd.registerPoll(this, ConnectionNumber(display())); windowContext = XUniqueContext(); new YDesktop(0, RootWindow(display(), DefaultScreen(display()))); extern void image_init(); image_init(); initAtoms(); initModifiers(); initPointers(); initColors(); #ifdef CONFIG_SHAPE shapesSupported = XShapeQueryExtension(display(), &shapeEventBase, &shapeErrorBase); #endif #ifdef CONFIG_XRANDR xrandrSupported = XRRQueryExtension(display(), &xrandrEventBase, &xrandrErrorBase); { int major = 0; int minor = 0; XRRQueryVersion(display(), &major, &minor); MSG(("XRRVersion: %d %d", major, minor)); if (major > 1 || (major == 1 && minor >= 2)) { xrandrSupported = 1; xrandr12 = true; } } #endif } YXApplication::~YXApplication() { xfd.unregisterPoll(); XCloseDisplay(display()); fDisplay = 0; xapp = 0; } bool YXApplication::handleXEvents() { if (XPending(display()) > 0) { XEvent xev; XNextEvent(display(), &xev); #ifdef DEBUG xeventcount++; #endif //msg("%d", xev.type); saveEventTime(xev); #ifdef DEBUG DBG logEvent(xev); #endif if (filterEvent(xev)) { ; } else { int ge = (xev.type == ButtonPress || xev.type == ButtonRelease || xev.type == MotionNotify || xev.type == KeyPress || xev.type == KeyRelease /*|| xev.type == EnterNotify || xev.type == LeaveNotify*/) ? 1 : 0; fReplayEvent = false; if (fPopup && ge) { handleGrabEvent(fPopup, xev); } else if (fGrabWindow && ge) { handleGrabEvent(fGrabWindow, xev); } else { handleWindowEvent(xev.xany.window, xev); } if (fGrabWindow) { if (xev.type == ButtonPress || xev.type == ButtonRelease || xev.type == MotionNotify) { if (!fReplayEvent) { XAllowEvents(xapp->display(), SyncPointer, CurrentTime); } } } } XFlush(display()); return true; } return false; } bool YXApplication::handleIdle() { return handleXEvents(); } void YXApplication::handleWindowEvent(Window xwindow, XEvent &xev) { int rc = 0; union { YWindow *ptr; XPointer xptr; } window = { 0 }; if ((rc = XFindContext(display(), xwindow, windowContext, &(window.xptr))) == 0) { if ((xev.type == KeyPress || xev.type == KeyRelease) && window.ptr->toplevel() != 0) { YWindow *w = window.ptr; w = w->toplevel(); if (w->getFocusWindow() != 0) w = w->getFocusWindow(); dispatchEvent(w, xev); } else { window.ptr->handleEvent(xev); } } else { if (xev.type == MapRequest) { // !!! java seems to do this ugliness //YFrameWindow *f = getFrame(xev.xany.window); msg("APP BUG? mapRequest for window %lX sent to destroyed frame %lX!", xev.xmaprequest.parent, xev.xmaprequest.window); desktop->handleEvent(xev); } else if (xev.type == ConfigureRequest) { msg("APP BUG? configureRequest for window %lX sent to destroyed frame %lX!", xev.xmaprequest.parent, xev.xmaprequest.window); desktop->handleEvent(xev); } else if (xev.type != DestroyNotify) { MSG(("unknown window 0x%lX event=%d", xev.xany.window, xev.type)); } } if (xev.type == KeyPress || xev.type == KeyRelease) ///!!! afterWindowEvent(xev); } void YXApplication::flushXEvents() { XSync(display(), False); } void YXPoll::notifyRead() { owner()->handleXEvents(); } void YXPoll::notifyWrite() { } bool YXPoll::forRead() { return true; } bool YXPoll::forWrite() { return false; } icewm-1.3.7/src/ymsgbox.cc0000644000076600007660000001011311463274240014407 0ustar develdevel/* * IceWM * * Copyright (C) 1999-2001 Marko Macek * * MessageBox */ #include "config.h" #ifndef LITE #include "ylib.h" #include "ymsgbox.h" #include "WinMgr.h" #include "yapp.h" #include "yxapp.h" #include "wmframe.h" #include "sysdep.h" #include "yprefs.h" #include "prefs.h" #include "intl.h" YMsgBox::YMsgBox(int buttons, YWindow *owner): YDialog(owner) { fListener = 0; fButtonOK = 0; fButtonCancel = 0; fLabel = new YLabel(null, this); fLabel->show(); setToplevel(true); if (buttons & mbOK) { fButtonOK = new YActionButton(this); if (fButtonOK) { fButtonOK->setText(_("OK")); fButtonOK->setActionListener(this); fButtonOK->show(); } } if (buttons & mbCancel) { fButtonCancel = new YActionButton(this); if (fButtonCancel) { fButtonCancel->setText(_("Cancel")); fButtonCancel->setActionListener(this); fButtonCancel->show(); } } autoSize(); setWinLayerHint(WinLayerAboveDock); setWinStateHint(WinStateAllWorkspaces, WinStateAllWorkspaces); setWinHintsHint(WinHintsSkipWindowMenu); { Atom protocols[2]; protocols[0] = _XA_WM_DELETE_WINDOW; protocols[1] = _XA_WM_TAKE_FOCUS; XSetWMProtocols(xapp->display(), handle(), protocols, 2); getProtocols(true); } { MwmHints mwm; memset(&mwm, 0, sizeof(mwm)); mwm.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; mwm.functions = MWM_FUNC_MOVE | MWM_FUNC_CLOSE; mwm.decorations = MWM_DECOR_BORDER | MWM_DECOR_TITLE | MWM_DECOR_MENU; setMwmHints(mwm); } } YMsgBox::~YMsgBox() { delete fLabel; fLabel = 0; delete fButtonOK; fButtonOK = 0; delete fButtonCancel; fButtonCancel = 0; } void YMsgBox::autoSize() { int lw = fLabel ? fLabel->width() : 0; int w = lw + 24, h; w = clamp(w, 240, desktop->width()); h = 12; if (fLabel) { fLabel->setPosition((w - lw) / 2, h); h += fLabel->height(); } h += 18; unsigned const hh(max(fButtonOK ? fButtonOK->height() : 0, fButtonCancel ? fButtonCancel->height() : 0)); unsigned const ww(max(fButtonOK ? fButtonOK->width() : 0, fButtonCancel ? fButtonCancel->width() : 0) + 3); if (fButtonOK) { fButtonOK->setSize(ww, hh); fButtonOK->setPosition((w - hh)/2 - fButtonOK->width(), h); } if (fButtonCancel) { fButtonCancel->setSize(ww, hh); fButtonCancel->setPosition((w + hh)/2, h); } h += fButtonOK ? fButtonOK->height() : fButtonCancel ? fButtonCancel->height() : 0; h += 12; setSize(w, h); } void YMsgBox::setTitle(const ustring &title) { cstring cs(title); setWindowTitle(cs.c_str()); autoSize(); } void YMsgBox::setText(const ustring &text) { if (fLabel) fLabel->setText(text); autoSize(); } void YMsgBox::setPixmap(ref/*pixmap*/) { } void YMsgBox::actionPerformed(YAction *action, unsigned int /*modifiers*/) { if (fListener) { if (action == fButtonOK) { fListener->handleMsgBox(this, mbOK); } else if (action == fButtonCancel) { fListener->handleMsgBox(this, mbCancel); } } } void YMsgBox::handleClose() { fListener->handleMsgBox(this, 0); } void YMsgBox::handleFocus(const XFocusChangeEvent &/*focus*/) { } void YMsgBox::showFocused() { switch (msgBoxDefaultAction) { case 0: if (fButtonCancel) fButtonCancel->requestFocus(false); break; case 1: if (fButtonOK) fButtonOK->requestFocus(false); break; } if (getFrame() == 0) manager->manageClient(handle(), false); if (getFrame()) { int dx, dy, dw, dh; desktop->getScreenGeometry(&dx, &dy, &dw, &dh); getFrame()->setNormalPositionOuter( dx + dw / 2 - getFrame()->width() / 2, dy + dh / 2 - getFrame()->height() / 2); getFrame()->activateWindow(true); } } #endif icewm-1.3.7/src/icesame.cc0000644000076600007660000002160611463274240014336 0ustar develdevel#include "config.h" #include "yfull.h" #include "ywindow.h" #include "ylabel.h" #include "ymenuitem.h" #include "ymenu.h" #include "yxapp.h" #include "yaction.h" #include "MwmUtil.h" #include "yrect.h" #include "ylocale.h" #include #include #include #include #include "intl.h" #define XCOUNT 15 #define YCOUNT 10 #define XSIZE 32 #define YSIZE 32 #define NCOLOR 4 #define FLAG 64 char const *ApplicationName = "icesame"; class IceSame: public YWindow, public YActionListener { public: IceSame(YWindow *parent): YWindow(parent) { srand(time(NULL) ^ getpid()); score = 0; scoreLabel = new YLabel("0", this); c[0][0] = new YColor("rgb:00/00/00"); c[0][1] = 0; //new YColor("rgb:00/00/00"); c[1][0] = new YColor("rgb:FF/00/00"); c[1][1] = new YColor("rgb:80/00/00"); c[2][0] = new YColor("rgb:FF/FF/00"); c[2][1] = new YColor("rgb:80/80/00"); c[3][0] = new YColor("rgb:00/00/FF"); c[3][1] = new YColor("rgb:00/00/80"); setStyle(wsPointerMotion); setSize(XSIZE * XCOUNT, YSIZE * YCOUNT + scoreLabel->height()); scoreLabel->setGeometry(YRect(0, YSIZE * YCOUNT, width(), scoreLabel->height())); scoreLabel->show(); // !!! keybindings, Menu, Shift+F10 actionUndo = new YAction(); actionNew = new YAction(); actionRestart = new YAction(); actionClose = new YAction(); menu = new YMenu(); menu->setActionListener(this); menu->addItem(_("Undo"), 0, _("Ctrl+Z"), actionUndo); menu->addSeparator(); menu->addItem(_("New"), 0, _("Ctrl+N"), actionNew); menu->addItem(_("Restart"), 0, _("Ctrl+R"), actionRestart); menu->addSeparator(); menu->addItem(_("Close"), 0, _("Ctrl+Q"), actionClose); // !!! fix setTitle(_("Same Game")); { MwmHints mwm; memset(&mwm, 0, sizeof(mwm)); mwm.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; mwm.functions = MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE; mwm.decorations = /*MWM_DECOR_BORDER |*/ MWM_DECOR_TITLE | MWM_DECOR_MENU | MWM_DECOR_MINIMIZE; XChangeProperty(xapp->display(), handle(), _XATOM_MWM_HINTS, _XATOM_MWM_HINTS, 32, PropModeReplace, (unsigned char *)&mwm, sizeof(mwm)/sizeof(long)); ///!!! } XClassHint ch; ch.res_name = "icesame"; ch.res_class = "IceSame"; XSetClassHint(xapp->display(), handle(), &ch); newGame(); } virtual ~IceSame() { } void setScore(int s) { if (s != score) { score = s; char ss[24]; sprintf(ss, "%d", score); ///!!! fix: center, no dynamic resize, add display for selected scoreLabel->setText(ss); scoreLabel->setToolTip(ss); scoreLabel->setGeometry(YRect(0, YSIZE * YCOUNT, width(), scoreLabel->height())); scoreLabel->repaint(); } } int randVal() { int r = rand(); if (r < RAND_MAX / 3) return 1; else if (r < RAND_MAX / 3 * 2) return 2; else return 3; } void newGame() { saveField(); setScore(0); for (int x = 0; x < XCOUNT; x++) for (int y = 0; y < YCOUNT; y++) { field[x][y] = randVal(); restartField[x][y] = field[x][y]; } repaint(); } void restartGame() { saveField(); setScore(0); for (int x = 0; x < XCOUNT; x++) for (int y = 0; y < YCOUNT; y++) field[x][y] = restartField[x][y]; repaint(); } void paint(Graphics &g, const YRect &/*r*/) { for (int x = 0; x < XCOUNT; x++) for (int y = 0; y < YCOUNT; y++) { int v = field[x][y]; if (v > FLAG) g.setColor(c[v & ~FLAG][1]); else g.setColor(c[v][0]); g.fillRect(x * XSIZE, y * YSIZE, XSIZE, YSIZE); } } void saveField() { undoScore = score; for (int x = 0; x < XCOUNT; x++) for (int y = 0; y < YCOUNT; y++) undoField[x][y] = field[x][y]; canUndo = true; } void undo() { //!!! unlimited undo if (!canUndo) return ; setScore(undoScore); for (int x = 0; x < XCOUNT; x++) for (int y = 0; y < YCOUNT; y++) field[x][y] = undoField[x][y]; repaint(); canUndo = false; } int mark(int x, int y); void clean() { int total = 0; for (int x = XCOUNT - 1; x >= 0; x--) { int vert = 0; for (int y = 0; y < YCOUNT; y++) { if (field[x][y] > 0 && field[x][y] < FLAG) vert++; else { for (int j = y; j > 0; j--) field[x][j] = field[x][j - 1]; field[x][0] = 0; //y--; } } total += vert; if (vert == 0) { for (int i = x; i < XCOUNT - 1; i++) for (int j = 0; j < YCOUNT; j++) field[i][j] = field[i + 1][j]; for (int j = 0; j < YCOUNT; j++) field[XCOUNT - 1][j] = 0; } } if (total == 0) { setScore(score + 1000); } } void press(int ax, int ay, bool clr) { release(); if (ax < 0 || ay < 0 || ax >= XCOUNT * XSIZE || ay >= YCOUNT * YSIZE) { repaint(); return ; } int x = ax / XSIZE; int y = ay / YSIZE; int c; if ((c = mark(x, y)) <= 1) field[x][y] &= ~FLAG; else if (clr) { saveField(); clean(); setScore(score + (c - 2) * (c - 2)); if ((c = mark(x, y)) <= 1) field[x][y] &= ~FLAG; } repaint(); } void release() { for (int x = 0; x < XCOUNT; x++) for (int y = 0; y < YCOUNT; y++) field[x][y] &= ~FLAG; } virtual void handleCrossing(const XCrossingEvent &crossing) { if (crossing.type == EnterNotify) { press(crossing.x, crossing.y, false); } else if (crossing.type == LeaveNotify) { release(); repaint(); } YWindow::handleCrossing(crossing); } virtual void handleClick(const XButtonEvent &up, int /*count*/) { if (up.button == 2) { sleep(5); { XWMHints wmh; memset(&wmh, 0, sizeof(wmh)); wmh.flags = InputHint | XUrgencyHint; wmh.input = False; //wmh. XSetWMHints(xapp->display(), handle(), &wmh); } } if (up.button == 3) { menu->popup(this, 0, 0, up.x_root, up.y_root, //-1, -1, -1, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu); return ; } else press(up.x, up.y, true); } virtual void handleMotion(const XMotionEvent &motion) { press(motion.x, motion.y, false); YWindow::handleMotion(motion); } virtual void actionPerformed(YAction *action, unsigned int /*modifiers*/) { if (action == actionNew) newGame(); else if (action == actionRestart) restartGame(); else if (action == actionUndo) undo(); else if (action == actionClose) exit(0); } virtual void handleClose() { exit(0); } private: int field[XCOUNT][YCOUNT]; int undoField[XCOUNT][YCOUNT]; int restartField[XCOUNT][YCOUNT]; bool canUndo; int score, undoScore; YColor *c[NCOLOR][2]; YMenu *menu; YLabel *scoreLabel; YAction *actionUndo, *actionNew, *actionRestart, *actionClose; }; int IceSame::mark(int x, int y) { int c = field[x][y]; if (c == 0) return 0; field[x][y] |= FLAG; int count = 1; if (x > 0 && field[x - 1][y] == c) count += mark(x - 1, y); if (y > 0 && field[x][y - 1] == c) count += mark(x, y - 1); if (x < XCOUNT - 1 && field[x + 1][y] == c) count += mark(x + 1, y); if (y < YCOUNT - 1 && field[x][y + 1] == c) count += mark(x, y + 1); return count; } int main(int argc, char **argv) { YLocale locale; #ifdef ENABLE_NLS bindtextdomain(PACKAGE, LOCDIR); textdomain(PACKAGE); #endif YXApplication app(&argc, &argv); IceSame *game = new IceSame(0); game->show(); return app.mainLoop(); } icewm-1.3.7/src/testmap.cc0000644000076600007660000000647411463274240014413 0ustar develdevel#include #include #include #include #include #include #include #include #include #include #include #include #include "WinMgr.h" /// _SET would be nice to have #define _NET_WM_STATE_REMOVE 0 #define _NET_WM_STATE_ADD 1 #define _NET_WM_STATE_TOGGLE 2 #define KEY_MODMASK(x) ((x) & (ControlMask | ShiftMask | Mod1Mask)) #define BUTTON_MASK(x) ((x) & (Button1Mask | Button2Mask | Button3Mask)) #define BUTTON_MODMASK(x) ((x) & (ControlMask | ShiftMask | Mod1Mask | Button1Mask | Button2Mask | Button3Mask)) static char *displayName = 0; static Display *display = 0; static Colormap defaultColormap; static Window root = None; static Window window = None; int rx = -1, ry = -1; int wx = -1, wy = -1; unsigned int ww = 0, wh = 0; int main(int argc, char ** /*argv*/) { XSetWindowAttributes attr; assert((display = XOpenDisplay(displayName)) != 0); root = RootWindow(display, DefaultScreen(display)); defaultColormap = DefaultColormap(display, DefaultScreen(display)); window = XCreateWindow(display, root, 100, 100, 64, 64, 0, CopyFromParent, InputOutput, CopyFromParent, 0, &attr); XSetWindowBackground(display, window, BlackPixel(display, DefaultScreen(display))); XSelectInput(display, window, StructureNotifyMask | ButtonPressMask | ButtonReleaseMask | KeyPressMask | KeyReleaseMask | PropertyChangeMask); XSelectInput(display, root, PropertyChangeMask); XMapRaised(display, window); while (1) { if (argc > 1) { int nwx, nwy; unsigned int nww, nwh; int nrx, nry; unsigned int bw; unsigned int depth; Window xroot, child; XGetGeometry(display, window, &xroot, &nwx, &nwy, &nww, &nwh, &bw, &depth); XTranslateCoordinates(display, window, root, 0, 0, &nrx, &nry, &child); if (nwx != wx || nwy != wy || nww != ww || nwh != nwh || nrx != rx || nry != ry) { fprintf(stderr, "%d %d %d %d %d %d\n", nwx, nwy, nww, nwh, nrx, nry); wx = nwx; wy = nwy; ww = nww; wh = nwh; rx = nrx; ry = nry; } XFlush(display); } else { XEvent xev; XConfigureEvent &configure = xev.xconfigure; // XMapEvent &map = xev.xmap; XNextEvent(display, &xev); switch (xev.type) { case ConfigureNotify: fprintf(stderr, "ConfigureNotify %d %d %d %d %d\n", configure.x, configure.y, configure.width, configure.height, configure.send_event); break; case MapNotify: fprintf(stderr, "MapNotify\n"); break; case PropertyNotify: break; default: fprintf(stderr, "event=%d\n", xev.type); break; } } } } icewm-1.3.7/src/ylabel.cc0000644000076600007660000000371311463274240014177 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek */ #include "config.h" #ifndef LITE #include "ylabel.h" #include "ydialog.h" // !!! remove #include "base.h" #include "prefs.h" YColor *YLabel::labelFg = 0; YColor *YLabel::labelBg = 0; ref YLabel::labelFont; YLabel::YLabel(const ustring &label, YWindow *parent): YWindow(parent), fLabel(label) { setBitGravity(NorthWestGravity); if (labelFont == null) labelFont = YFont::getFont(XFA(labelFontName)); if (labelBg == 0) labelBg = new YColor(clrLabel); if (labelFg == 0) labelFg = new YColor(clrLabelText); autoSize(); } YLabel::~YLabel() { } void YLabel::paint(Graphics &g, const YRect &/*r*/) { #ifdef CONFIG_GRADIENTS ref gradient(parent() ? parent()->getGradient() : null); if (gradient != null) g.drawImage(gradient, x() - 1, y() - 1, width(), height(), 0, 0); else #endif if (dialogbackPixmap != null) g.fillPixmap(dialogbackPixmap, 0, 0, width(), height(), x() - 1, y() - 1); else { g.setColor(labelBg); g.fillRect(0, 0, width(), height()); } if (fLabel != null) { int y = 1 + labelFont->ascent(); int x = 1; int h = labelFont->height(); ustring s(null), r(null); g.setColor(labelFg); g.setFont(labelFont); for (s = fLabel; s.splitall('\n', &s, &r); s = r) { g.drawChars(s, x, y); y += h; } } } void YLabel::setText(const ustring &label) { fLabel = label; autoSize(); } void YLabel::autoSize() { int h = labelFont->height(); int w = 0; if (fLabel != null) { int w1; ustring s(null), r(null); int n = 0; for (s = fLabel; s.splitall('\n', &s, &r); s = r) { w1 = labelFont->textWidth(s); if (w1 > w) w = w1; n++; } h *= n; } setSize(1 + w + 1, 1 + h + 1); } #endif icewm-1.3.7/src/yimage.h0000664000076600007660000000273511463274240014051 0ustar develdevel#ifndef __YIMAGE_H #define __YIMAGE_H #include "ref.h" #include "ypaint.h" class YPixmap; class Graphics; class YImage: public refcounted { public: static ref create(int width, int height); static ref load(upath filename); static ref createFromPixmap(ref image); static ref createFromPixmapAndMask(Pixmap pix, Pixmap mask, int width, int height); static ref createFromPixmapAndMaskScaled(Pixmap pix, Pixmap mask, int width, int height, int nw, int nh); static ref createFromIconProperty(long *pixels, int width, int height); int width() const { return fWidth; } int height() const { return fHeight; } virtual bool valid() const = 0; virtual ref renderToPixmap() = 0; virtual ref scale(int width, int height) = 0; virtual void draw(Graphics &g, int dx, int dy) = 0; virtual void draw(Graphics &g, int x, int y, int w, int h, int dx, int dy) = 0; virtual void composite(Graphics &g, int x, int y, int w, int h, int dx, int dy) = 0; protected: YImage(int width, int height) { fWidth = width; fHeight = height; } virtual ~YImage() {}; ref createPixmap(Pixmap pixmap, Pixmap mask, int w, int h); private: int fWidth; int fHeight; }; #endif icewm-1.3.7/src/ypoint.h0000644000076600007660000000207711463274240014115 0ustar develdevel#ifndef __YPOINT_H #define __YPOINT_H #pragma interface class YPoint { public: YPoint(): fX(0), fY(0) { } YPoint(int x, int y): fX(x), fY(y) { } ~YPoint() {} int x() const { return fX; } int y() const { return fY; } #if 0 void setX(int x) { fX = x; } void setY(int y) { fY = y; } void setPos(int x, int y) { fX = x; fY = y; } void setPoint(const YPoint &p) { fX = p.x(); fY = p.y(); } #endif bool equals(const YPoint &p) { return ((fX == p.x()) && (fY == p.y())) ? true : false; } #if 0 friend YPoint operator+(const YPoint &a, const YPoint &b); friend YPoint operator-(const YPoint &a, const YPoint &b); friend YPoint operator-(const YPoint &a); #endif private: int fX, fY; }; #if 0 inline YPoint operator+(const YPoint &a, const YPoint &b) { return YPoint(a.fX + b.fX, a.fY + b.fX); } inline YPoint operator-(const YPoint &a, const YPoint &b) { return YPoint(a.fX - b.fX, a.fY - b.fX); } inline YPoint operator-(const YPoint &a) { return YPoint(-a.fX, -a.fY); } #endif #endif icewm-1.3.7/src/wmframe.cc0000644000076600007660000031452611463274240014374 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2003 Marko Macek */ #include "config.h" #include "yfull.h" #include "wmframe.h" #include "yprefs.h" #include "prefs.h" #include "atasks.h" #include "atray.h" #include "aaddressbar.h" #include "wmaction.h" #include "wmclient.h" #include "wmcontainer.h" #include "wmtitle.h" #include "wmbutton.h" #include "wmminiicon.h" #include "wmswitch.h" #include "wmtaskbar.h" #include "wmwinlist.h" #include "wmmgr.h" #include "wmapp.h" #include "ypixbuf.h" #include "sysdep.h" #include "yrect.h" #include "yicon.h" #include "aworkspaces.h" #include "intl.h" static YColor *activeBorderBg = 0; static YColor *inactiveBorderBg = 0; YTimer *YFrameWindow::fAutoRaiseTimer = 0; YTimer *YFrameWindow::fDelayFocusTimer = 0; extern XContext frameContext; extern XContext clientContext; //int YFrameWindow::fMouseFocusX = -1; //int YFrameWindow::fMouseFocusY = -1; extern unsigned int ignore_enternotify_hack; bool YFrameWindow::isButton(char c) { if (strchr(titleButtonsSupported, c) == 0) return false; if (strchr(titleButtonsRight, c) != 0 || strchr(titleButtonsLeft, c) != 0) return true; return false; } YFrameWindow::YFrameWindow(YWindow *parent): YWindow(parent) { if (activeBorderBg == 0) activeBorderBg = new YColor(clrActiveBorder); if (inactiveBorderBg == 0) inactiveBorderBg = new YColor(clrInactiveBorder); setDoubleBuffer(false); fClient = 0; fFocused = false; fNextFrame = fPrevFrame = 0; fNextCreatedFrame = 0; fPrevCreatedFrame = 0; fNextFocusFrame = 0; fPrevFocusFrame = 0; fPopupActive = 0; fWmUrgency = false; fClientUrgency = false; fTypeDesktop = false; fTypeDock = false; fTypeSplash = false; normalX = 0; normalY = 0; normalW = 1; normalH = 1; posX = 0; posY = 0; posW = 1; posH = 1; iconX = -1; iconY = -1; movingWindow = 0; sizingWindow = 0; indicatorsVisible = 0; fFrameFunctions = 0; fFrameDecors = 0; fFrameOptions = 0; #ifndef LITE fFrameIcon = null; #endif #ifdef CONFIG_TASKBAR fTaskBarApp = 0; #endif #ifdef CONFIG_TRAY fTrayApp = 0; #endif #ifdef CONFIG_WINLIST fWinListItem = 0; #endif fMiniIcon = 0; fTransient = 0; fNextTransient = 0; fOwner = 0; fManaged = false; fKillMsgBox = 0; fStrutLeft = 0; fStrutRight = 0; fStrutTop = 0; fStrutBottom = 0; setStyle(wsOverrideRedirect); setPointer(YXApplication::leftPointer); fWinWorkspace = manager->activeWorkspace(); fWinActiveLayer = WinLayerNormal; fWinRequestedLayer = WinLayerNormal; fOldLayer = fWinActiveLayer; #ifdef CONFIG_TRAY fWinTrayOption = WinTrayIgnore; #endif fWinState = 0; fWinOptionMask = ~0; createPointerWindows(); fClientContainer = new YClientContainer(this, this); fClientContainer->show(); fTitleBar = new YFrameTitleBar(this, this); fTitleBar->show(); if (!isButton('m')) /// optimize strchr (flags) fMaximizeButton = 0; else { fMaximizeButton = new YFrameButton(fTitleBar, this, actionMaximize, actionMaximizeVert); //fMaximizeButton->setWinGravity(NorthEastGravity); fMaximizeButton->show(); fMaximizeButton->setToolTip(_("Maximize")); } if (!isButton('i')) fMinimizeButton = 0; else { fMinimizeButton = new YFrameButton(fTitleBar, this, #ifndef CONFIG_PDA actionMinimize, actionHide); #else actionMinimize, 0); #endif //fMinimizeButton->setWinGravity(NorthEastGravity); fMinimizeButton->setToolTip(_("Minimize")); fMinimizeButton->show(); } if (!isButton('x')) fCloseButton = 0; else { fCloseButton = new YFrameButton(fTitleBar, this, actionClose, actionKill); //fCloseButton->setWinGravity(NorthEastGravity); fCloseButton->setToolTip(_("Close")); fCloseButton->show(); } #ifndef CONFIG_PDA if (!isButton('h')) #endif fHideButton = 0; #ifndef CONFIG_PDA else { fHideButton = new YFrameButton(fTitleBar, this, actionHide, actionHide); //fHideButton->setWinGravity(NorthEastGravity); fHideButton->setToolTip(_("Hide")); fHideButton->show(); } #endif if (!isButton('r')) fRollupButton = 0; else { fRollupButton = new YFrameButton(fTitleBar, this, actionRollup, actionRollup); //fRollupButton->setWinGravity(NorthEastGravity); fRollupButton->setToolTip(_("Rollup")); fRollupButton->show(); } if (!isButton('d')) fDepthButton = 0; else { fDepthButton = new YFrameButton(fTitleBar, this, actionDepth, actionDepth); //fDepthButton->setWinGravity(NorthEastGravity); fDepthButton->setToolTip(_("Raise/Lower")); fDepthButton->show(); } if (!isButton('s')) fMenuButton = 0; else { fMenuButton = new YFrameButton(fTitleBar, this, 0); fMenuButton->show(); fMenuButton->setActionListener(this); } #ifndef LITE if (minimizeToDesktop) fMiniIcon = new MiniIcon(this, this); #endif } YFrameWindow::~YFrameWindow() { fManaged = false; if (fKillMsgBox) { manager->unmanageClient(fKillMsgBox->handle()); fKillMsgBox = 0; } #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowClosed); #endif if (fAutoRaiseTimer && fAutoRaiseTimer->getTimerListener() == this) { fAutoRaiseTimer->stopTimer(); fAutoRaiseTimer->setTimerListener(0); } if (fDelayFocusTimer && fDelayFocusTimer->getTimerListener() == this) { fDelayFocusTimer->stopTimer(); fDelayFocusTimer->setTimerListener(0); } if (movingWindow || sizingWindow) endMoveSize(); if (fPopupActive) fPopupActive->cancelPopup(); #ifdef CONFIG_TASKBAR if (fTaskBarApp) { if (taskBar) taskBar->removeTasksApp(this); fTaskBarApp = 0; } #endif #ifdef CONFIG_TRAY if (fTrayApp) { if (taskBar) taskBar->removeTrayApp(this); fTrayApp = 0; } #endif #ifdef CONFIG_WINLIST if (fWinListItem) { if (windowList) windowList->removeWindowListApp(fWinListItem); delete fWinListItem; fWinListItem = 0; } #endif if (fMiniIcon) { delete fMiniIcon; fMiniIcon = 0; } #ifndef LITE fFrameIcon = null; #endif #if 1 fWinState &= ~WinStateFullscreen; updateLayer(false); #endif // perhaps should be done another way removeTransients(); removeAsTransient(); removeFocusFrame(); manager->removeClientFrame(this); { // !!! consider having an array instead if (fNextCreatedFrame) fNextCreatedFrame->setPrevCreated(fPrevCreatedFrame); else manager->setLastFrame(fPrevCreatedFrame); if (fPrevCreatedFrame) fPrevCreatedFrame->setNextCreated(fNextCreatedFrame); else manager->setFirstFrame(fNextCreatedFrame); } removeFrame(); if (switchWindow) switchWindow->destroyedFrame(this); if (fClient != 0) { if (!fClient->destroyed()) XRemoveFromSaveSet(xapp->display(), client()->handle()); XDeleteContext(xapp->display(), client()->handle(), frameContext); } if (affectsWorkArea()) manager->updateWorkArea(); // FIX !!! should actually check if < than current values if (fStrutLeft != 0 || fStrutRight != 0 || fStrutTop != 0 || fStrutBottom != 0) manager->updateWorkArea(); delete fClient; fClient = 0; delete fClientContainer; fClientContainer = 0; delete fMenuButton; fMenuButton = 0; delete fCloseButton; fCloseButton = 0; delete fMaximizeButton; fMaximizeButton = 0; delete fMinimizeButton; fMinimizeButton = 0; delete fHideButton; fHideButton = 0; delete fRollupButton; fRollupButton = 0; delete fTitleBar; fTitleBar = 0; delete fDepthButton; fDepthButton = 0; XDestroyWindow(xapp->display(), topSide); XDestroyWindow(xapp->display(), leftSide); XDestroyWindow(xapp->display(), rightSide); XDestroyWindow(xapp->display(), bottomSide); XDestroyWindow(xapp->display(), topLeftCorner); XDestroyWindow(xapp->display(), topRightCorner); XDestroyWindow(xapp->display(), bottomLeftCorner); XDestroyWindow(xapp->display(), bottomRightCorner); manager->updateClientList(); #ifdef CONFIG_TASKBAR // update pager when unfocused windows are killed, because this // does not call YWindowManager::updateFullscreenLayer() if (!focused() && taskBar && taskBar->workspacesPane()) { taskBar->workspacesPane()->repaint(); } #endif } void YFrameWindow::doManage(YFrameClient *clientw, bool &doActivate, bool &requestFocus) { PRECONDITION(clientw != 0); fClient = clientw; { int x = client()->x(); int y = client()->y(); int w = client()->width(); int h = client()->height(); XSizeHints *sh = client()->sizeHints(); normalX = x; normalY = y; normalW = sh ? (w - sh->base_width) / sh->width_inc : w; normalH = sh ? (h - sh->base_height) / sh->height_inc : h ; if ((sh->flags & PWinGravity) && sh->win_gravity == StaticGravity) { normalX += borderXN(); normalY += borderYN() + titleYN(); } else { int gx, gy; client()->gravityOffsets(gx, gy); if (gx > 0) normalX += 2 * borderXN() - 1 - client()->getBorder(); if (gy > 0) normalY += 2 * borderYN() + titleYN() - 1 - client()->getBorder(); } getNormalGeometryInner(&posX, &posY, &posW, &posH); } #ifndef LITE updateIcon(); #endif manage(fClient); { if (manager->lastFrame()) manager->lastFrame()->setNextCreated(this); else manager->setFirstFrame(this); setPrevCreated(manager->lastFrame()); manager->setLastFrame(this); } bool isRunning = manager->wmState() == YWindowManager::wmRUNNING; insertFrame(!isRunning); insertFocusFrame(!isRunning); getFrameHints(); { #ifdef WMSPEC_HINTS long layer = 0; Atom net_wm_window_type; if (fClient->getNetWMWindowType(&net_wm_window_type)) { if (net_wm_window_type == _XA_NET_WM_WINDOW_TYPE_DOCK) { setSticky(true); setTypeDock(true); updateMwmHints(); } else if (net_wm_window_type == _XA_NET_WM_WINDOW_TYPE_DESKTOP) { /// TODO #warning "this needs some cleanup" setSticky(true); setTypeDesktop(true); updateMwmHints(); } else if (net_wm_window_type == _XA_NET_WM_WINDOW_TYPE_SPLASH) { setTypeSplash(true); updateMwmHints(); } updateLayer(true); } else if (fClient->getWinLayerHint(&layer)) setRequestedLayer(layer); #endif } getDefaultOptions(requestFocus); #ifdef WMSPEC_HINTS updateNetWMStrut(); /// ? here #endif long workspace = getWorkspace(), state_mask(0), state(0); #ifdef CONFIG_TRAY long tray(0); #endif MSG(("Map - Frame: %d", visible())); MSG(("Map - Client: %d", client()->visible())); if (client()->getNetWMStateHint(&state_mask, &state)) { setState(state_mask, state); } if (client()->getWinStateHint(&state_mask, &state)) { setState(state_mask, state); } { FrameState st = client()->getFrameState(); if (st == WithdrawnState) { XWMHints *h = client()->hints(); if (h && (h->flags & StateHint)) st = h->initial_state; else st = NormalState; } MSG(("FRAME state = %d", st)); switch (st) { case IconicState: fFrameOptions |= foMinimized; setState(WinStateMinimized, WinStateMinimized); break; case NormalState: case WithdrawnState: break; } } if (client()->getNetWMDesktopHint(&workspace)) { if (workspace == (long)0xFFFFFFFF) setSticky(true); else setWorkspace(workspace); } else if (client()->getWinWorkspaceHint(&workspace)) setWorkspace(workspace); #ifdef CONFIG_TRAY if (client()->getWinTrayHint(&tray)) setTrayOption(tray); #endif addAsTransient(); if (owner()) setWorkspace(mainOwner()->getWorkspace()); if (isHidden() || isMinimized() || isIconic()) { doActivate = false; requestFocus = false; } updateFocusOnMap(doActivate); addTransients(); manager->restackWindows(this); afterManage(); } void YFrameWindow::afterManage() { if (affectsWorkArea()) manager->updateWorkArea(); manager->updateClientList(); #ifdef CONFIG_SHAPE setShape(); #endif #ifndef NO_WINDOW_OPTIONS if (!(frameOptions() & foFullKeys)) grabKeys(); #endif fClientContainer->grabButtons(); #ifdef CONFIG_WINLIST #ifndef NO_WINDOW_OPTIONS if (windowList && !(frameOptions() & foIgnoreWinList)) fWinListItem = windowList->addWindowListApp(this); #endif #endif #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowOpened); #endif } // create 8 windows that are used to show the proper pointer // on frame (for resize) void YFrameWindow::createPointerWindows() { XSetWindowAttributes attributes; unsigned int klass = InputOnly; attributes.event_mask = 0; attributes.cursor = YWMApp::sizeTopPointer.handle(); topSide = XCreateWindow(xapp->display(), handle(), 0, 0, 1, 1, 0, CopyFromParent, klass, CopyFromParent, CWCursor | CWEventMask, &attributes); attributes.cursor = YWMApp::sizeLeftPointer.handle(); leftSide = XCreateWindow(xapp->display(), handle(), 0, 0, 1, 1, 0, CopyFromParent, klass, CopyFromParent, CWCursor | CWEventMask, &attributes); attributes.cursor = YWMApp::sizeRightPointer.handle(); rightSide = XCreateWindow(xapp->display(), handle(), 0, 0, 1, 1, 0, CopyFromParent, klass, CopyFromParent, CWCursor | CWEventMask, &attributes); attributes.cursor = YWMApp::sizeBottomPointer.handle(); bottomSide = XCreateWindow(xapp->display(), handle(), 0, 0, 1, 1, 0, CopyFromParent, klass, CopyFromParent, CWCursor | CWEventMask, &attributes); attributes.cursor = YWMApp::sizeTopLeftPointer.handle(); topLeftCorner = XCreateWindow(xapp->display(), handle(), 0, 0, 1, 1, 0, CopyFromParent, klass, CopyFromParent, CWCursor | CWEventMask, &attributes); attributes.cursor = YWMApp::sizeTopRightPointer.handle(); topRightCorner = XCreateWindow(xapp->display(), handle(), 0, 0, 1, 1, 0, CopyFromParent, klass, CopyFromParent, CWCursor | CWEventMask, &attributes); attributes.cursor = YWMApp::sizeBottomLeftPointer.handle(); bottomLeftCorner = XCreateWindow(xapp->display(), handle(), 0, 0, 1, 1, 0, CopyFromParent, klass, CopyFromParent, CWCursor | CWEventMask, &attributes); attributes.cursor = YWMApp::sizeBottomRightPointer.handle(); bottomRightCorner = XCreateWindow(xapp->display(), handle(), 0, 0, 1, 1, 0, CopyFromParent, klass, CopyFromParent, CWCursor | CWEventMask, &attributes); XMapSubwindows(xapp->display(), handle()); indicatorsVisible = 1; } void YFrameWindow::grabKeys() { XUngrabKey(xapp->display(), AnyKey, AnyModifier, handle()); GRAB_WMKEY(gKeyWinRaise); GRAB_WMKEY(gKeyWinOccupyAll); GRAB_WMKEY(gKeyWinLower); GRAB_WMKEY(gKeyWinClose); GRAB_WMKEY(gKeyWinRestore); GRAB_WMKEY(gKeyWinNext); GRAB_WMKEY(gKeyWinPrev); GRAB_WMKEY(gKeyWinMove); GRAB_WMKEY(gKeyWinSize); GRAB_WMKEY(gKeyWinMinimize); GRAB_WMKEY(gKeyWinMaximize); GRAB_WMKEY(gKeyWinMaximizeVert); GRAB_WMKEY(gKeyWinMaximizeHoriz); GRAB_WMKEY(gKeyWinHide); GRAB_WMKEY(gKeyWinRollup); GRAB_WMKEY(gKeyWinFullscreen); GRAB_WMKEY(gKeyWinMenu); GRAB_WMKEY(gKeyWinArrangeN); GRAB_WMKEY(gKeyWinArrangeNE); GRAB_WMKEY(gKeyWinArrangeE); GRAB_WMKEY(gKeyWinArrangeSE); GRAB_WMKEY(gKeyWinArrangeS); GRAB_WMKEY(gKeyWinArrangeSW); GRAB_WMKEY(gKeyWinArrangeW); GRAB_WMKEY(gKeyWinArrangeNW); GRAB_WMKEY(gKeyWinArrangeC); GRAB_WMKEY(gKeyWinSnapMoveN); GRAB_WMKEY(gKeyWinSnapMoveNE); GRAB_WMKEY(gKeyWinSnapMoveE); GRAB_WMKEY(gKeyWinSnapMoveSE); GRAB_WMKEY(gKeyWinSnapMoveS); GRAB_WMKEY(gKeyWinSnapMoveSW); GRAB_WMKEY(gKeyWinSnapMoveW); GRAB_WMKEY(gKeyWinSnapMoveNW); GRAB_WMKEY(gKeyWinSmartPlace); container()->regrabMouse(); } void YFrameWindow::manage(YFrameClient *client) { PRECONDITION(client != 0); fClient = client; /// TODO #warning "optimize this, do it only if needed" XSetWindowBorderWidth(xapp->display(), client->handle(), 0); { XSetWindowAttributes xswa; xswa.win_gravity = NorthWestGravity; XChangeWindowAttributes(xapp->display(), client->handle(), CWWinGravity, &xswa); } XAddToSaveSet(xapp->display(), client->handle()); client->reparent(fClientContainer, 0, 0); client->setFrame(this); #if 0 sendConfigure(); #endif } void YFrameWindow::unmanage(bool reparent) { PRECONDITION(fClient != 0); if (!fClient->destroyed()) { int gx, gy; client()->gravityOffsets(gx, gy); XSetWindowBorderWidth(xapp->display(), client()->handle(), client()->getBorder()); int posX, posY, posWidth, posHeight; getNormalGeometryInner(&posX, &posY, &posWidth, &posHeight); if (gx < 0) posX -= borderXN(); else if (gx > 0) posX += borderXN() - 2 * client()->getBorder(); if (gy < 0) posY -= borderYN(); else if (gy > 0) posY += borderYN() + titleYN() - 2 * client()->getBorder(); if (reparent) client()->reparent(manager, posX, posY); client()->setSize(posWidth, posHeight); if (manager->wmState() != YWindowManager::wmSHUTDOWN) client()->setFrameState(WithdrawnState); if (!client()->destroyed()) XRemoveFromSaveSet(xapp->display(), client()->handle()); } client()->setFrame(0); fClient = 0; } void YFrameWindow::getNewPos(const XConfigureRequestEvent &cr, int &cx, int &cy, int &cw, int &ch) { cw = (cr.value_mask & CWWidth) ? cr.width : client()->width(); ch = (cr.value_mask & CWHeight) ? cr.height : client()->height(); int grav = NorthWestGravity; XSizeHints *sh = client()->sizeHints(); if (sh && sh->flags & PWinGravity) grav = sh->win_gravity; int cur_x = x() + container()->x(); int cur_y = y() + container()->y(); //msg("%d %d %d %d", cr.x, cr.y, cr.width, cr.height); if (cr.value_mask & CWX) { if (grav == StaticGravity) cx = cr.x; else { cx = cr.x + container()->x(); if (frameOptions() & foNonICCCMConfigureRequest) { warn("nonICCCMpositioning: adjusting x %d by %d", cx, -container()->x()); cx -= container()->x(); } } } else { if (grav == NorthGravity || grav == CenterGravity || grav == SouthGravity) { cx = cur_x + (client()->width() - cw) / 2; } else if (grav == NorthEastGravity || grav == EastGravity || grav == SouthEastGravity) { cx = cur_x + (client()->width() - cw); } else { cx = cur_x; } } if (cr.value_mask & CWY) { if (grav == StaticGravity) cy = cr.y; else { cy = cr.y + container()->y(); if (frameOptions() & foNonICCCMConfigureRequest) { warn("nonICCCMpositioning: adjusting y %d by %d", cy, -container()->y()); cy -= container()->y(); } } } else { if (grav == WestGravity || grav == CenterGravity || grav == EastGravity) { cy = cur_y + (client()->height() - ch) / 2; } else if (grav == SouthEastGravity || grav == SouthGravity || grav == SouthWestGravity) { cy = cur_y + (client()->height() - ch); } else { cy = cur_y; } } #ifdef CONFIG_TASKBAR // update pager when windows move/resize themselves (like xmms, gmplayer, ...), // because this does not call YFrameWindow::endMoveSize() if (taskBar && taskBar->workspacesPane()) { taskBar->workspacesPane()->repaint(); } #endif } void YFrameWindow::configureClient(const XConfigureRequestEvent &configureRequest) { client()->setBorder((configureRequest.value_mask & CWBorderWidth) ? configureRequest.border_width : client()->getBorder()); int cx, cy, cw, ch; getNewPos(configureRequest, cx, cy, cw, ch); configureClient(cx, cy, cw, ch); if (configureRequest.value_mask & CWStackMode) { union { YFrameWindow *ptr; XPointer xptr; } sibling = { 0 }; XWindowChanges xwc; if ((configureRequest.value_mask & CWSibling) && XFindContext(xapp->display(), configureRequest.above, clientContext, &(sibling.xptr)) == 0) xwc.sibling = sibling.ptr->handle(); else xwc.sibling = configureRequest.above; xwc.stack_mode = configureRequest.detail; /* !!! implement the rest, and possibly fix these: */ if (sibling.ptr && xwc.sibling != None) { /* ICCCM suggests sibling==None */ switch (xwc.stack_mode) { case Above: setAbove(sibling.ptr); break; case Below: setBelow(sibling.ptr); break; default: return; } XConfigureWindow(xapp->display(), handle(), configureRequest.value_mask & (CWSibling | CWStackMode), &xwc); } else if (xwc.sibling == None /*&& manager->top(getLayer()) != 0*/) { switch (xwc.stack_mode) { case Above: if (!focusOnAppRaise) { if (requestFocusOnAppRaise) { if (canRaise()) { setWmUrgency(true); } } } else { if (canRaise()) { wmRaise(); } #if 1 #if 1 if ( #ifndef NO_WINDOW_OPTIONS !(frameOptions() & foNoFocusOnAppRaise) && #endif (clickFocus || !strongPointerFocus)) { if (focusChangesWorkspace || visibleOn(manager->activeWorkspace())) { activate(); } else { setWmUrgency(true); } } #endif #if 1 { /* warning, tcl/tk "fix" here */ XEvent xev; /// TODO #warning "looks like sendConfigure but not quite, investigate!" memset(&xev, 0, sizeof(xev)); xev.xconfigure.type = ConfigureNotify; xev.xconfigure.display = xapp->display(); xev.xconfigure.event = handle(); xev.xconfigure.window = handle(); xev.xconfigure.x = x(); xev.xconfigure.y = y(); xev.xconfigure.width = width(); xev.xconfigure.height = height(); xev.xconfigure.border_width = 0; MSG(("sendConfigureHack %d %d %d %d", xev.xconfigure.x, xev.xconfigure.y, xev.xconfigure.width, xev.xconfigure.height)); xev.xconfigure.above = None; xev.xconfigure.override_redirect = False; XSendEvent(xapp->display(), handle(), False, StructureNotifyMask, &xev); } #endif #endif } break; case Below: wmLower(); break; } } } sendConfigure(); } void YFrameWindow::configureClient(int cx, int cy, int cwidth, int cheight) { MSG(("setting geometry (%d:%d %dx%d)", cx, cy, cwidth, cheight)); cy -= titleYN(); /// TODO #warning "alternative configure mechanism would be nice" if (isFullscreen()) return; else { int posX, posY, posW, posH; getNormalGeometryInner(&posX, &posY, &posW, &posH); if (isMaximizedVert() || isRollup()) { cy = posY; cheight = posH; } if (isMaximizedHoriz()) { cx = posX; cwidth = posW; } } setNormalGeometryInner(cx, cy, cwidth, cheight); } void YFrameWindow::handleClick(const XButtonEvent &up, int /*count*/) { if (up.button == 3) { popupSystemMenu(this, up.x_root, up.y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu); } } void YFrameWindow::handleCrossing(const XCrossingEvent &crossing) { if (crossing.type == EnterNotify && (crossing.mode == NotifyNormal || (strongPointerFocus && crossing.mode == NotifyUngrab)) && crossing.window == handle() && (strongPointerFocus || (crossing.serial != ignore_enternotify_hack && crossing.serial != ignore_enternotify_hack + 1)) #if false && (strongPointerFocus || fMouseFocusX != crossing.x_root || fMouseFocusY != crossing.y_root) #endif ) { //msg("xf: %d %d", fMouseFocusX, crossing.x_root, fMouseFocusY, crossing.y_root); // fMouseFocusX = crossing.x_root; // fMouseFocusY = crossing.y_root; if (!clickFocus && visible() && canFocusByMouse()) { if (!delayPointerFocus) focus(false); else { if (fDelayFocusTimer == 0) fDelayFocusTimer = new YTimer(pointerFocusDelay); if (fDelayFocusTimer) { fDelayFocusTimer->setTimerListener(this); fDelayFocusTimer->startTimer(); } } } else { if (fDelayFocusTimer) { fDelayFocusTimer->stopTimer(); fDelayFocusTimer->setTimerListener(0); } } if (autoRaise) { if (fAutoRaiseTimer == 0) { fAutoRaiseTimer = new YTimer(autoRaiseDelay); } if (fAutoRaiseTimer) { fAutoRaiseTimer->setTimerListener(this); fAutoRaiseTimer->startTimer(); } } } else if (crossing.type == LeaveNotify && fFocused && focusRootWindow && crossing.window == handle()) { // fMouseFocusX = crossing.x_root; // fMouseFocusY = crossing.y_root; if (crossing.detail != NotifyInferior && crossing.mode == NotifyNormal) { if (fDelayFocusTimer && fDelayFocusTimer->getTimerListener() == this) { fDelayFocusTimer->stopTimer(); fDelayFocusTimer->setTimerListener(0); } if (autoRaise) { if (fAutoRaiseTimer && fAutoRaiseTimer->getTimerListener() == this) { fAutoRaiseTimer->stopTimer(); fAutoRaiseTimer->setTimerListener(0); } } } } } void YFrameWindow::handleFocus(const XFocusChangeEvent &focus) { if (switchWindow && switchWindow->visible()) return ; #if 1 if (focus.type == FocusIn && focus.mode != NotifyGrab && focus.window == handle() && focus.detail != NotifyInferior && focus.detail != NotifyPointer && focus.detail != NotifyPointerRoot) manager->switchFocusTo(this); #endif #if 0 else if (focus.type == FocusOut && focus.mode == NotifyNormal && focus.detail != NotifyInferior && focus.detail != NotifyPointer && focus.detail != NotifyPointerRoot && focus.window == handle()) manager->switchFocusFrom(this); #endif layoutShape(); } bool YFrameWindow::handleTimer(YTimer *t) { if (t == fAutoRaiseTimer) { if (canRaise()) wmRaise(); } if (t == fDelayFocusTimer) focus(false); return false; } void YFrameWindow::raise() { if (this != manager->top(getActiveLayer())) { YWindow::raise(); setAbove(manager->top(getActiveLayer())); } } void YFrameWindow::lower() { if (this != manager->bottom(getActiveLayer())) { YWindow::lower(); setAbove(0); } } void YFrameWindow::removeFrame() { #ifdef DEBUG if (debug_z) dumpZorder("before removing", this); #endif if (prev()) prev()->setNext(next()); else manager->setTop(getActiveLayer(), next()); if (next()) next()->setPrev(prev()); else manager->setBottom(getActiveLayer(), prev()); setPrev(0); setNext(0); #ifdef DEBUG if (debug_z) dumpZorder("after removing", this); #endif } void YFrameWindow::insertFrame(bool top) { #ifdef DEBUG if (debug_z) dumpZorder("before inserting", this); #endif if (top) { setNext(manager->top(getActiveLayer())); setPrev(0); manager->setTop(getActiveLayer(), this); if (next()) next()->setPrev(this); else manager->setBottom(getActiveLayer(), this); } else { setPrev(manager->bottom(getActiveLayer())); setNext(0); manager->setBottom(getActiveLayer(), this); if (prev()) prev()->setNext(this); else manager->setTop(getActiveLayer(), this); } #ifdef DEBUG if (debug_z) dumpZorder("after inserting", this); #endif } void YFrameWindow::setAbove(YFrameWindow *aboveFrame) { if (aboveFrame != 0 && getActiveLayer() != aboveFrame->getActiveLayer()) { MSG(("ignore z-order change between layers: win=0x%lX (above: 0x%lX) ", handle(), aboveFrame->client()->handle())); return; } #ifdef DEBUG if (debug_z) dumpZorder("before setAbove", this, aboveFrame); #endif if (aboveFrame != next() && aboveFrame != this) { if (prev()) prev()->setNext(next()); else manager->setTop(getActiveLayer(), next()); if (next()) next()->setPrev(prev()); else manager->setBottom(getActiveLayer(), prev()); setNext(aboveFrame); if (next()) { setPrev(next()->prev()); next()->setPrev(this); } else { setPrev(manager->bottom(getActiveLayer())); manager->setBottom(getActiveLayer(), this); } if (prev()) prev()->setNext(this); else manager->setTop(getActiveLayer(), this); #ifdef DEBUG if (debug_z) dumpZorder("after setAbove", this, aboveFrame); #endif } manager->updateFullscreenLayer(); } void YFrameWindow::setBelow(YFrameWindow *belowFrame) { if (belowFrame != 0 && getActiveLayer() != belowFrame->getActiveLayer()) { MSG(("ignore z-order change between layers: win=0x%lX (below %ld)", handle(), belowFrame->client()->handle())); return; } if (belowFrame != prev() && belowFrame != this) setAbove(belowFrame ? belowFrame->next() : 0); } void YFrameWindow::insertFocusFrame(bool focus) { if (focus || manager->lastFocusFrame() == 0) { if (manager->lastFocusFrame()) manager->lastFocusFrame()->setNextFocus(this); else manager->setFirstFocusFrame(this); setPrevFocus(manager->lastFocusFrame()); manager->setLastFocusFrame(this); } else { setPrevFocus(manager->lastFocusFrame()->prevFocus()); setNextFocus(manager->lastFocusFrame()); manager->lastFocusFrame()->setPrevFocus(this); if (prevFocus() == 0) manager->setFirstFocusFrame(this); else prevFocus()->setNextFocus(this); } } void YFrameWindow::insertLastFocusFrame() { setPrevFocus(0); setNextFocus(manager->firstFocusFrame()); manager->setFirstFocusFrame(this); if (nextFocus() == 0) manager->setLastFocusFrame(this); else nextFocus()->setPrevFocus(this); } void YFrameWindow::removeFocusFrame() { if (fNextFocusFrame) fNextFocusFrame->setPrevFocus(fPrevFocusFrame); else manager->setLastFocusFrame(fPrevFocusFrame); if (fPrevFocusFrame) fPrevFocusFrame->setNextFocus(fNextFocusFrame); else manager->setFirstFocusFrame(fNextFocusFrame); fNextFocusFrame = 0; fPrevFocusFrame = 0; } YFrameWindow *YFrameWindow::findWindow(int flags) { YFrameWindow *p = this; if (flags & fwfNext) goto next; do { if ((flags & fwfMinimized) && !p->isMinimized()) goto next; if ((flags & fwfUnminimized) && p->isMinimized()) goto next; if ((flags & fwfVisible) && !p->visible()) goto next; if ((flags & fwfHidden) && !p->isHidden()) goto next; if ((flags & fwfNotHidden) && p->isHidden()) goto next; if ((flags & fwfFocusable) && !p->canFocus()) goto next; if ((flags & fwfWorkspace) && !p->visibleNow()) goto next; #if 0 #ifndef NO_WINDOW_OPTIONS if ((flags & fwfSwitchable) && (p->frameOptions() & foIgnoreQSwitch)) goto next; #endif #endif if (!p->client()->adopted()) goto next; return p; next: if (flags & fwfBackward) p = (flags & fwfLayers) ? p->prevLayer() : p->prev(); else p = (flags & fwfLayers) ? p->nextLayer() : p->next(); if (p == 0) { if (!(flags & fwfCycle)) return 0; else if (flags & fwfBackward) p = (flags & fwfLayers) ? manager->bottomLayer() : manager->bottom(getActiveLayer()); else p = (flags & fwfLayers) ? manager->topLayer() : manager->top(getActiveLayer()); } } while (p != this); if (!(flags & fwfSame)) return 0; if ((flags & fwfVisible) && !p->visible()) return 0; if ((flags & fwfWorkspace) && !p->visibleNow()) return 0; if (!p->client()->adopted()) return 0; return this; } void YFrameWindow::handleConfigure(const XConfigureEvent &/*configure*/) { } void YFrameWindow::sendConfigure() { XEvent xev; memset(&xev, 0, sizeof(xev)); xev.xconfigure.type = ConfigureNotify; xev.xconfigure.display = xapp->display(); xev.xconfigure.event = client()->handle(); xev.xconfigure.window = client()->handle(); xev.xconfigure.x = x() + borderX(); xev.xconfigure.y = y() + borderY() #ifndef TITLEBAR_BOTTOM + titleY() #endif ; xev.xconfigure.width = client()->width(); xev.xconfigure.height = client()->height(); xev.xconfigure.border_width = client()->getBorder(); xev.xconfigure.above = None; xev.xconfigure.override_redirect = False; MSG(("sendConfigure %d %d %d %d", xev.xconfigure.x, xev.xconfigure.y, xev.xconfigure.width, xev.xconfigure.height)); #ifdef DEBUG_C Status rc = #endif XSendEvent(xapp->display(), client()->handle(), False, StructureNotifyMask, &xev); #ifdef DEBUG_C MSG(("sent %d: x=%d, y=%d, width=%d, height=%d", rc, x(), y(), client()->width(), client()->height())); #endif } void YFrameWindow::actionPerformed(YAction *action, unsigned int modifiers) { if (action == actionRestore) { wmRestore(); } else if (action == actionMinimize) { if (canMinimize()) wmMinimize(); } else if (action == actionMaximize) { if (canMaximize()) wmMaximize(); } else if (action == actionMaximizeVert) { if (canMaximize()) wmMaximizeVert(); } else if (action == actionLower) { if (canLower()) wmLower(); } else if (action == actionRaise) { if (canRaise()) wmRaise(); } else if (action == actionDepth) { if (Overlaps(true) && canRaise()){ wmRaise(); manager->setFocus(this, true); } else if (Overlaps(false) && canLower()) wmLower(); } else if (action == actionRollup) { if (canRollup()) wmRollup(); } else if (action == actionClose) { if (canClose()) wmClose(); } else if (action == actionKill) { wmConfirmKill(); #ifndef CONFIG_PDA } else if (action == actionHide) { if (canHide()) wmHide(); #endif } else if (action == actionShow) { wmShow(); } else if (action == actionMove) { if (canMove()) wmMove(); } else if (action == actionSize) { if (canSize()) wmSize(); } else if (action == actionOccupyAllOrCurrent) { wmOccupyAllOrCurrent(); #if DO_NOT_COVER_OLD } else if (action == actionDoNotCover) { wmToggleDoNotCover(); #endif } else if (action == actionFullscreen) { wmToggleFullscreen(); #ifdef CONFIG_TRAY } else if (action == actionToggleTray) { wmToggleTray(); #endif } else { for (int l(0); l < WinLayerCount; l++) { if (action == layerActionSet[l]) { wmSetLayer(l); return ; } } for (int w(0); w < workspaceCount; w++) { if (action == workspaceActionMoveTo[w]) { wmMoveToWorkspace(w); return ; } } wmapp->actionPerformed(action, modifiers); } } void YFrameWindow::wmSetLayer(long layer) { setRequestedLayer(layer); } #ifdef CONFIG_TRAY void YFrameWindow::wmSetTrayOption(long option) { setTrayOption(option); } #endif #if DO_NOT_COVER_OLD void YFrameWindow::wmToggleDoNotCover() { setDoNotCover(!doNotCover()); } #endif void YFrameWindow::wmToggleFullscreen() { if (isFullscreen()) { setState(WinStateFullscreen, 0); } else { setState(WinStateFullscreen, WinStateFullscreen); } } #ifdef CONFIG_TRAY void YFrameWindow::wmToggleTray() { if (getTrayOption() != WinTrayExclusive) { setTrayOption(WinTrayExclusive); } else { setTrayOption(WinTrayIgnore); } } #endif void YFrameWindow::wmMove() { Window root, child; int rx, ry, wx, wy; unsigned int mask; XQueryPointer(xapp->display(), desktop->handle(), &root, &child, &rx, &ry, &wx, &wy, &mask); if (wx > int(x() + width())) wx = x() + width(); if (wy > int(y() + height())) wy = y() + height(); if (wx < x()) wx = x(); if (wy < y()) wy = y(); startMoveSize(1, 0, 0, 0, wx - x(), wy - y()); } void YFrameWindow::wmSize() { startMoveSize(0, 0, 0, 0, 0, 0); } void YFrameWindow::wmRestore() { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowRestore); #endif setState(WinStateMaximizedVert | WinStateMaximizedHoriz | WinStateMinimized | WinStateHidden | WinStateRollup, 0); } void YFrameWindow::wmMinimize() { #ifdef DEBUG_S MSG(("wmMinimize - Frame: %d", visible())); MSG(("wmMinimize - Client: %d", client()->visible())); #endif manager->lockFocus(); if (isMinimized()) { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowRestore); #endif setState(WinStateMinimized, 0); } else { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowMin); #endif setState(WinStateMinimized, WinStateMinimized); wmLower(); } manager->unlockFocus(); manager->focusLastWindow(); } void YFrameWindow::minimizeTransients() { for (YFrameWindow *w = transient(); w; w = w->nextTransient()) { // Since a) YFrameWindow::setState is too heavy but b) we want to save memory MSG(("> isMinimized: %d\n", w->isMinimized())); if (w->isMinimized()) w->fWinState|= WinStateWasMinimized; else w->fWinState&= ~WinStateWasMinimized; MSG(("> wasMinimized: %d\n", w->wasMinimized())); if (!w->isMinimized()) w->wmMinimize(); } } void YFrameWindow::restoreMinimizedTransients() { for (YFrameWindow *w = transient(); w; w = w->nextTransient()) if (w->isMinimized() && !w->wasMinimized()) w->setState(WinStateMinimized, 0); } void YFrameWindow::hideTransients() { for (YFrameWindow *w = transient(); w; w = w->nextTransient()) { // See YFrameWindow::minimizeTransients() for reason MSG(("> isHidden: %d\n", w->isHidden())); if (w->isHidden()) w->fWinState|= WinStateWasHidden; else w->fWinState&= ~WinStateWasHidden; MSG(("> was visible: %d\n", w->wasHidden()); if (!w->isHidden()) w->wmHide()); } } void YFrameWindow::restoreHiddenTransients() { for (YFrameWindow *w = transient(); w; w = w->nextTransient()) if (w->isHidden() && !w->wasHidden()) w->setState(WinStateHidden, 0); } void YFrameWindow::DoMaximize(long flags) { setState(WinStateRollup, 0); if (isMaximized()) { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowRestore); #endif setState(WinStateMaximizedVert | WinStateMaximizedHoriz | WinStateMinimized, 0); } else { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowMax); #endif setState(WinStateMaximizedVert | WinStateMaximizedHoriz | WinStateMinimized, flags); } } void YFrameWindow::wmMaximize() { DoMaximize(WinStateMaximizedVert | WinStateMaximizedHoriz); } void YFrameWindow::wmMaximizeVert() { if (isMaximizedVert()) { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowRestore); #endif setState(WinStateMaximizedVert, 0); } else { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowMax); #endif setState(WinStateMaximizedVert, WinStateMaximizedVert); } } void YFrameWindow::wmMaximizeHorz() { if (isMaximizedHoriz()) { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowRestore); #endif setState(WinStateMaximizedHoriz, 0); } else { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowMax); #endif setState(WinStateMaximizedHoriz, WinStateMaximizedHoriz); } } void YFrameWindow::wmRollup() { if (isRollup()) { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowRestore); #endif setState(WinStateRollup, 0); } else { //if (!canRollup()) // return ; #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowRollup); #endif setState(WinStateRollup, WinStateRollup); } } void YFrameWindow::wmHide() { if (isHidden()) { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowRestore); #endif setState(WinStateHidden, 0); } else { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowHide); #endif setState(WinStateHidden, WinStateHidden); } manager->focusLastWindow(); } void YFrameWindow::wmLower() { if (this != manager->bottom(getActiveLayer())) { YFrameWindow *w = this; manager->lockFocus(); #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowLower); #endif while (w) { w->doLower(); w = w->owner(); } manager->restackWindows(this); manager->unlockFocus(); manager->focusTopWindow(); } } void YFrameWindow::doLower() { setAbove(0); removeFocusFrame(); insertLastFocusFrame(); } void YFrameWindow::wmRaise() { doRaise(); manager->restackWindows(this); } void YFrameWindow::doRaise() { #ifdef DEBUG if (debug_z) dumpZorder("wmRaise: ", this); #endif if (this != manager->top(getActiveLayer())) { setAbove(manager->top(getActiveLayer())); { for (YFrameWindow * w (transient()); w; w = w->nextTransient()) w->doRaise(); } if (client() && client()->clientLeader() != 0) { YFrameWindow *o = manager->findFrame(client()->clientLeader()); if (o != 0) { for (YFrameWindow * w (o->transient()); w; w = w->nextTransient()) w->doRaise(); } if (client()->ownerWindow() != manager->handle()) { for (YFrameWindow * w = manager->bottomLayer(); w; w = w->prevLayer()) { if (w->client() && w->client()->clientLeader() == client()->clientLeader() && w->client()->ownerWindow() == manager->handle()) w->doRaise(); } } } #ifdef DEBUG if (debug_z) dumpZorder("wmRaise after raise: ", this); #endif } } void YFrameWindow::wmClose() { if (!canClose()) return ; #ifdef CONFIG_PDA wmHide(); #else XGrabServer(xapp->display()); client()->getProtocols(true); if (client()->protocols() & YFrameClient::wpDeleteWindow) { client()->sendDelete(); } else { if (frameOptions() & foForcedClose) { wmKill(); } else { wmConfirmKill(); } } XUngrabServer(xapp->display()); #endif } void YFrameWindow::wmConfirmKill() { #ifndef LITE if (fKillMsgBox == 0) { YMsgBox *msgbox = new YMsgBox(YMsgBox::mbOK|YMsgBox::mbCancel); ustring title = ustring(_("Kill Client: ")).append(getTitle()); fKillMsgBox = msgbox; msgbox->setTitle(title); msgbox->setText(_("WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?")); msgbox->autoSize(); msgbox->setMsgBoxListener(this); msgbox->showFocused(); } #endif } void YFrameWindow::wmKill() { if (!canClose()) return ; #ifdef DEBUG if (debug) msg("No WM_DELETE_WINDOW protocol"); #endif XKillClient(xapp->display(), client()->handle()); } void YFrameWindow::wmPrevWindow() { if (next() != this) { YFrameWindow *f = findWindow(fwfNext | fwfBackward | fwfVisible | fwfCycle | fwfFocusable | fwfWorkspace | fwfSame); if (f) { f->wmRaise(); manager->setFocus(f, true); } } } void YFrameWindow::wmNextWindow() { if (next() != this) { wmLower(); manager->setFocus(findWindow(fwfNext | fwfVisible | fwfCycle | fwfFocusable | fwfWorkspace | fwfSame), true); } } void YFrameWindow::wmLastWindow() { if (next() != this) { YFrameWindow *f = findWindow(fwfNext | fwfVisible | fwfCycle | fwfFocusable | fwfWorkspace | fwfSame); if (f) { f->wmRaise(); manager->setFocus(f, true); } } } void YFrameWindow::loseWinFocus() { if (fFocused && fManaged) { fFocused = false; if (true || !clientMouseActions) if (focusOnClickClient || raiseOnClickClient) if (fClientContainer) fClientContainer->grabButtons(); if (isIconic()) fMiniIcon->repaint(); else { repaint(); titlebar()->deactivate(); } #ifdef CONFIG_TASKBAR updateTaskBar(); #endif } } void YFrameWindow::setWinFocus() { if (!fFocused) { fFocused = true; if (isIconic()) fMiniIcon->repaint(); else { titlebar()->activate(); repaint(); } #ifdef CONFIG_TASKBAR updateTaskBar(); #endif if (true || !clientMouseActions) if (focusOnClickClient && !(raiseOnClickClient && (this != manager->top(getActiveLayer())))) fClientContainer->releaseButtons(); } } void YFrameWindow::updateFocusOnMap(bool& doActivate) { bool onCurrentWorkspace = visibleOn(manager->activeWorkspace()); if (fDelayFocusTimer) { fDelayFocusTimer->stopTimer(); fDelayFocusTimer->setTimerListener(0); } if (fAutoRaiseTimer) { fAutoRaiseTimer->stopTimer(); fAutoRaiseTimer->setTimerListener(0); } if (avoidFocus()) doActivate = false; if (frameOptions() & foNoFocusOnMap) doActivate = false; if (!onCurrentWorkspace && !focusChangesWorkspace) doActivate = false; if (owner() != 0) { if (owner()->focused() || (nextTransient() && nextTransient()->focused())) { if (!focusOnMapTransientActive) doActivate = false; } else { if (!focusOnMapTransient) doActivate = false; } } else { if (!focusOnMap) doActivate = false; } { long userTime = -1; if (client()->getWmUserTime(&userTime)) { } // if (userTime - currentTime < 0) // doFocus = false; } } void YFrameWindow::wmShow() { // recover lost (offscreen) windows !!! (unify with code below) /// TODO #warning "this is really broken" if (x() >= int(manager->width()) || y() >= int(manager->height()) || x() <= - int(width()) || y() <= - int(height())) { int newX = x(); int newY = y(); if (x() >= int(manager->width())) newX = int(manager->width() - width() + borderX()); if (y() >= int(manager->height())) newY = int(manager->height() - height() + borderY()); if (newX < int(- borderX())) newX = int(- borderX()); if (newY < int(- borderY())) newY = int(- borderY()); setCurrentPositionOuter(newX, newY); } setState(WinStateHidden | WinStateMinimized, 0); } void YFrameWindow::focus(bool canWarp) { /// TODO #warning "move focusChangesWorkspace check out of here, to (some) callers" manager->lockFocus(); // recover lost (offscreen) windows !!! if (limitPosition && (x() >= int(manager->width()) || y() >= int(manager->height()) || x() <= - int(width()) || y() <= - int(height()))) { int newX = x(); int newY = y(); if (x() >= int(manager->width())) newX = int(manager->width() - width() + borderX()); if (y() >= int(manager->height())) newY = int(manager->height() - height() + borderY()); if (newX < int(- borderX())) newX = int(- borderX()); if (newY < int(- borderY())) newY = int(- borderY()); setCurrentPositionOuter(newX, newY); } manager->unlockFocus(); manager->setFocus(this, canWarp); #if 1 if (raiseOnFocus && /* clickFocus && */ manager->wmState() == YWindowManager::wmRUNNING) wmRaise(); #endif } void YFrameWindow::activate(bool canWarp) { manager->lockFocus(); if (fWinState & (WinStateHidden | WinStateMinimized)) setState(WinStateHidden | WinStateMinimized, 0); if (!visibleOn(manager->activeWorkspace())) manager->activateWorkspace(getWorkspace()); manager->unlockFocus(); focus(canWarp); } void YFrameWindow::activateWindow(bool raise) { if (raise) wmRaise(); activate(true); } void YFrameWindow::paint(Graphics &g, const YRect &/*r*/) { YColor *bg; if (!(frameDecors() & (fdResize | fdBorder))) return ; if (focused()) bg = activeBorderBg; else bg = inactiveBorderBg; g.setColor(bg); switch (wmLook) { #if defined(CONFIG_LOOK_WIN95) || defined(CONFIG_LOOK_WARP4) || defined(CONFIG_LOOK_NICE) #ifdef CONFIG_LOOK_WIN95 case lookWin95: #endif #ifdef CONFIG_LOOK_WARP4 case lookWarp4: #endif #ifdef CONFIG_LOOK_NICE case lookNice: #endif g.fillRect(1, 1, width() - 3, height() - 3); g.drawBorderW(0, 0, width() - 1, height() - 1, true); break; #endif #if defined(CONFIG_LOOK_MOTIF) || defined(CONFIG_LOOK_WARP3) #ifdef CONFIG_LOOK_MOTIF case lookMotif: #endif #ifdef CONFIG_LOOK_WARP3 case lookWarp3: #endif g.draw3DRect(0, 0, width() - 1, height() - 1, true); g.draw3DRect(borderX() - 1, borderY() - 1, width() - 2 * borderX() + 1, height() - 2 * borderY() + 1, false); g.fillRect(1, 1, width() - 2, borderY() - 2); g.fillRect(1, 1, borderX() - 2, height() - 2); g.fillRect(1, (height() - 1) - (borderY() - 2), width() - 2, borderX() - 2); g.fillRect((width() - 1) - (borderX() - 2), 1, borderX() - 2, height() - 2); #ifdef CONFIG_LOOK_MOTIF if (wmLook == lookMotif && canSize()) { YColor *b(bg->brighter()); YColor *d(bg->darker()); g.setColor(d); g.drawLine(wsCornerX - 1, 0, wsCornerX - 1, height() - 1); g.drawLine(width() - wsCornerX - 1, 0, width() - wsCornerX - 1, height() - 1); g.drawLine(0, wsCornerY - 1, width(),wsCornerY - 1); g.drawLine(0, height() - wsCornerY - 1, width(), height() - wsCornerY - 1); g.setColor(b); g.drawLine(wsCornerX, 0, wsCornerX, height() - 1); g.drawLine(width() - wsCornerX, 0, width() - wsCornerX, height() - 1); g.drawLine(0, wsCornerY, width(), wsCornerY); g.drawLine(0, height() - wsCornerY, width(), height() - wsCornerY); } break; #endif #endif #ifdef CONFIG_LOOK_PIXMAP case lookPixmap: case lookMetal: case lookFlat: case lookGtk: { int n = focused() ? 1 : 0; int t = (frameDecors() & fdResize) ? 0 : 1; if ((frameT[t][n] != null || TEST_GRADIENT(rgbFrameT[t][n] != null)) && (frameL[t][n] != null || TEST_GRADIENT(rgbFrameL[t][n] != null)) && (frameR[t][n] != null || TEST_GRADIENT(rgbFrameR[t][n] != null)) && (frameB[t][n] != null || TEST_GRADIENT(rgbFrameB[t][n] != null)) && frameTL[t][n] != null && frameTR[t][n] != null && frameBL[t][n] != null && frameBR[t][n] != null) { int const xtl(frameTL[t][n]->width()); int const ytl(frameTL[t][n]->height()); int const xtr(frameTR[t][n]->width()); int const ytr(frameTR[t][n]->height()); int const xbl(frameBL[t][n]->width()); int const ybl(frameBL[t][n]->height()); int const xbr(frameBR[t][n]->width()); int const ybr(frameBR[t][n]->height()); int const cx(width()/2); int const cy(height()/2); int mxtl = min(xtl, cx); int mytl = min(ytl, max(titleY() + borderY(), cy)); int mxtr = min(xtr, cx); int mytr = min(ytr, max(titleY() + borderY(), cy)); int mxbl = min(xbl, cx); int mybl = min(ybl, cy); int mxbr = min(xbr, cx); int mybr = min(ybr, cy); g.copyPixmap(frameTL[t][n], 0, 0, mxtl, mytl, 0, 0); g.copyPixmap(frameTR[t][n], max(0, (int)xtr - (int)cx), 0, mxtr, mytr, width() - mxtr, 0); g.copyPixmap(frameBL[t][n], 0, max(0, (int)ybl - (int)cy), mxbl, mybl, 0, height() - mybl); g.copyPixmap(frameBR[t][n], max(0, (int)xbr - (int)cx), max(0, (int)ybr - (int)cy), mxbr, mybr, width() - mxbr, height() - mybr); if (width() > (mxtl + mxtr)) { if (frameT[t][n] != null) g.repHorz(frameT[t][n], mxtl, 0, width() - mxtl - mxtr); #ifdef CONFIG_GRADIENTS else g.drawGradient(rgbFrameT[t][n], mxtl, 0, width() - mxtl - mxtr, borderY()); #endif } if (height() > (mytl + mybl)) { if (frameL[t][n] != null) g.repVert(frameL[t][n], 0, mytl, height() - mytl - mybl); #ifdef CONFIG_GRADIENTS else g.drawGradient(rgbFrameL[t][n], 0, mytl, borderX(), height() - mytl - mybl); #endif } if (height() > (mytr + mybr)) { if (frameR[t][n] != null) g.repVert(frameR[t][n], width() - borderX(), mytr, height() - mytr - mybr); #ifdef CONFIG_GRADIENTS else g.drawGradient(rgbFrameR[t][n], width() - borderX(), mytr, borderX(), height() - mytr - mybr); #endif } if (width() > (mxbl + mxbr)) { if (frameB[t][n] != null) g.repHorz(frameB[t][n], mxbl, height() - borderY(), width() - mxbl - mxbr); #ifdef CONFIG_GRADIENTS else g.drawGradient(rgbFrameB[t][n], mxbl, height() - borderY(), width() - mxbl - mxbr, borderY()); #endif } } else { g.fillRect(1, 1, width() - 3, height() - 3); g.drawBorderW(0, 0, width() - 1, height() - 1, true); } } break; #endif default: break; } } void YFrameWindow::handlePopDown(YPopupWindow *popup) { MSG(("popdown %ld up %ld", popup, fPopupActive)); if (fPopupActive == popup) fPopupActive = 0; } void YFrameWindow::popupSystemMenu(YWindow *owner) { if (fPopupActive == 0) { if (fMenuButton && fMenuButton->visible() && fTitleBar && fTitleBar->visible()) fMenuButton->popupMenu(); else { int ax = x() + container()->x(); int ay = y() + container()->y(); if (isIconic()) { ax = x(); ay = y() + height(); } popupSystemMenu(owner, ax, ay, YPopupWindow::pfCanFlipVertical); } } } void YFrameWindow::popupSystemMenu(YWindow *owner, int x, int y, unsigned int flags, YWindow *forWindow) { if (fPopupActive == 0) { updateMenu(); if (windowMenu()->popup(owner, forWindow, this, x, y, flags)) fPopupActive = windowMenu(); } } void YFrameWindow::updateTitle() { titlebar()->repaint(); layoutShape(); updateIconTitle(); #ifdef CONFIG_WINLIST if (fWinListItem && windowList->visible()) windowList->repaintItem(fWinListItem); #endif #ifdef CONFIG_TASKBAR if (fTaskBarApp) fTaskBarApp->setToolTip(client()->windowTitle()); #endif #ifdef CONFIG_TRAY if (fTrayApp) fTrayApp->setToolTip(client()->windowTitle()); #endif } void YFrameWindow::updateIconTitle() { #ifdef CONFIG_TASKBAR if (fTaskBarApp) { fTaskBarApp->repaint(); fTaskBarApp->setToolTip(client()->windowTitle()); } #endif #ifdef CONFIG_TRAY if (fTrayApp) fTrayApp->setToolTip(client()->windowTitle()); #endif if (isIconic()) { fMiniIcon->repaint(); } } void YFrameWindow::wmOccupyAllOrCurrent() { if (isSticky()) { mainOwner()->setWorkspace(manager->activeWorkspace()); setSticky(false); } else { setSticky(true); } #ifdef CONFIG_TASKBAR if (taskBar) taskBar->relayoutTasks(); #endif #ifdef CONFIG_TRAY if (taskBar) taskBar->relayoutTray(); #endif } void YFrameWindow::wmOccupyAll() { setSticky(!isSticky()); if (affectsWorkArea()) manager->updateWorkArea(); #ifdef CONFIG_TASKBAR if (taskBar) taskBar->relayoutTasks(); #endif #ifdef CONFIG_TRAY if (taskBar) taskBar->relayoutTray(); #endif } void YFrameWindow::wmOccupyWorkspace(long workspace) { PRECONDITION(workspace < workspaceCount); mainOwner()->setWorkspace(workspace); } void YFrameWindow::wmOccupyOnlyWorkspace(long workspace) { PRECONDITION(workspace < workspaceCount); mainOwner()->setWorkspace(workspace); setSticky(false); } void YFrameWindow::wmMoveToWorkspace(long workspace) { wmOccupyOnlyWorkspace(workspace); } void YFrameWindow::getFrameHints() { #ifndef NO_MWM_HINTS long decors = client()->mwmDecors(); long functions = client()->mwmFunctions(); long win_hints = client()->winHints(); MwmHints *mwm_hints = client()->mwmHints(); int functions_only = (mwm_hints && (mwm_hints->flags & (MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS)) == MWM_HINTS_FUNCTIONS); fFrameFunctions = 0; fFrameDecors = 0; fFrameOptions = 0; if (decors & MWM_DECOR_BORDER) fFrameDecors |= fdBorder; if (decors & MWM_DECOR_RESIZEH) fFrameDecors |= fdResize; if (decors & MWM_DECOR_TITLE) fFrameDecors |= fdTitleBar | fdDepth; if (decors & MWM_DECOR_MENU) fFrameDecors |= fdSysMenu; if (decors & MWM_DECOR_MAXIMIZE) fFrameDecors |= fdMaximize; if (decors & MWM_DECOR_MINIMIZE) fFrameDecors |= fdMinimize | fdHide | fdRollup; if (functions & MWM_FUNC_MOVE) { fFrameFunctions |= ffMove; if (functions_only) fFrameDecors |= fdBorder; } if (functions & MWM_FUNC_RESIZE) { fFrameFunctions |= ffResize; if (functions_only) fFrameDecors |= fdResize | fdBorder; } if (functions & MWM_FUNC_MAXIMIZE) { fFrameFunctions |= ffMaximize; if (functions_only) fFrameDecors |= fdMaximize; } if (functions & MWM_FUNC_MINIMIZE) { fFrameFunctions |= ffMinimize | ffHide | ffRollup; if (functions_only) fFrameDecors |= fdMinimize | fdHide | fdRollup; } if (functions & MWM_FUNC_CLOSE) { fFrameFunctions |= ffClose; fFrameDecors |= fdClose; } #else fFrameFunctions = ffMove | ffResize | ffClose | ffMinimize | ffMaximize | ffHide | ffRollup; fFrameDecors = fdTitleBar | fdSysMenu | fdBorder | fdResize | fdDepth | fdClose | fdMinimize | fdMaximize | fdHide | fdRollup; #endif /// !!! fFrameOptions needs refactoring if (win_hints & WinHintsSkipFocus) fFrameOptions |= foIgnoreQSwitch; if (win_hints & WinHintsSkipWindowMenu) fFrameOptions |= foIgnoreWinList; if (win_hints & WinHintsSkipTaskBar) fFrameOptions |= foIgnoreTaskBar; if (win_hints & WinHintsDoNotCover) fFrameOptions |= foDoNotCover; /// TODO #warning "need initial window mapping cleanup" if (fTypeDesktop) { fFrameDecors = 0; fFrameOptions |= foIgnoreTaskBar; } if (fTypeDock) { fFrameDecors = 0; fFrameOptions |= foIgnoreTaskBar; } if (fTypeSplash) { fFrameDecors = 0; } #ifndef NO_WINDOW_OPTIONS WindowOption wo(null); getWindowOptions(wo, false); /*msg("decor: %lX %lX %lX %lX %lX %lX", wo.function_mask, wo.functions, wo.decor_mask, wo.decors, wo.option_mask, wo.options);*/ fFrameFunctions &= ~wo.function_mask; fFrameFunctions |= wo.functions; fFrameDecors &= ~wo.decor_mask; fFrameDecors |= wo.decors; fFrameOptions &= ~(wo.option_mask & fWinOptionMask); fFrameOptions |= (wo.options & fWinOptionMask); #endif } #ifndef NO_WINDOW_OPTIONS void YFrameWindow::getWindowOptions(WindowOption &opt, bool remove) { memset((void *)&opt, 0, sizeof(opt)); opt.workspace = WinWorkspaceInvalid; opt.layer = WinLayerInvalid; #ifdef CONFIG_TRAY opt.tray = WinTrayInvalid; #endif if (defOptions) getWindowOptions(defOptions, opt, false); if (hintOptions) getWindowOptions(hintOptions, opt, remove); } void YFrameWindow::getWindowOptions(WindowOptions *list, WindowOption &opt, bool remove) { XClassHint const *h(client()->classHint()); ustring klass = h ? h->res_class : 0; ustring name = h ? h->res_name : 0; ustring role = client()->windowRole(); if (klass != null) { if (name != null) { ustring klass_instance = name.append(".").append(klass); list->mergeWindowOption(opt, klass_instance, remove); } else list->mergeWindowOption(opt, klass, remove); } if (name != null) { if (role != null) { ustring name_role = name.append(".").append(role); list->mergeWindowOption(opt, name_role, remove); } else list->mergeWindowOption(opt, name, remove); } if (role != null) list->mergeWindowOption(opt, role, remove); list->mergeWindowOption(opt, null, remove); } #endif void YFrameWindow::getDefaultOptions(bool &requestFocus) { #ifndef NO_WINDOW_OPTIONS WindowOption wo(null); getWindowOptions(wo, true); if (wo.icon && wo.icon[0]) { #ifndef LITE fFrameIcon = YIcon::getIcon(wo.icon); #endif } if (wo.workspace != (long)WinWorkspaceInvalid && wo.workspace < workspaceCount) { setWorkspace(wo.workspace); if (wo.workspace != manager->activeWorkspace()) requestFocus = false; } if (wo.layer != (long)WinLayerInvalid && wo.layer < WinLayerCount) setRequestedLayer(wo.layer); #ifdef CONFIG_TRAY if (wo.tray != (long)WinTrayInvalid && wo.tray < WinTrayOptionCount) setTrayOption(wo.tray); #endif #endif } #ifndef LITE ref newClientIcon(int count, int reclen, long * elem) { ref small = null; ref large = null; ref huge = null; if (reclen < 2) return null; for (int i = 0; i < count; i++, elem += reclen) { Pixmap pixmap(elem[0]), mask(elem[1]); if (pixmap == None) { warn("pixmap == None for subicon #%d", i); continue; } Window root; int x, y; int w = 0, h = 0; unsigned border = 0, depth = 0; if (reclen >= 6) { w = elem[2]; h = elem[3]; depth = elem[4]; root = elem[5]; } else { unsigned w1, h1; if (BadDrawable == XGetGeometry(xapp->display(), pixmap, &root, &x, &y, &w1, &h1, &border, &depth)) { warn("BadDrawable for subicon #%d", i); continue; } w = w1; h = h1; } if (w == 0 || h == 0) { MSG(("Invalid pixmap size for subicon #%d: %dx%d", i, w, h)); continue; } MSG(("client icon: %ld %d %d %d %d", pixmap, w, h, depth, xapp->depth())); if (depth == 1) { ref img = YPixmap::create(w, h); Graphics g(img, 0, 0); g.setColorPixel(0xffffff); g.fillRect(0, 0, w, h); g.setColorPixel(0); g.setClipMask(pixmap); g.fillRect(0, 0, w, h); ref img2 = YImage::createFromPixmapAndMaskScaled(img->pixmap(), mask, img->width(), img->height(), w, h); if (w <= YIcon::smallSize()) small = img2; else if (w <= YIcon::largeSize()) large = img2; else huge = img2; img = null; } if (depth == xapp->depth()) { if (w <= YIcon::smallSize()) { small = YImage::createFromPixmapAndMaskScaled( pixmap, mask, w, h, YIcon::smallSize(), YIcon::smallSize()); } else if (w <= YIcon::largeSize()) { large = YImage::createFromPixmapAndMaskScaled( pixmap, mask, w, h, YIcon::largeSize(), YIcon::largeSize()); } else if (w <= YIcon::hugeSize()) { huge = YImage::createFromPixmapAndMaskScaled( pixmap, mask, w, h, YIcon::hugeSize(), YIcon::hugeSize()); } } } ref icon; if (small != null || large != null || huge != null) icon.init(new YIcon(small, large, huge)); return icon; } void YFrameWindow::updateIcon() { int count; long *elem; Pixmap *pixmap; Atom type; /// TODO #warning "think about winoptions specified icon here" ref oldFrameIcon = fFrameIcon; if (client()->getNetWMIcon(&count, &elem)) { ref icons[3], largestIcon; int sizes[] = { YIcon::smallSize(), YIcon::largeSize(), YIcon::hugeSize()}; long *largestIconOffset = elem; int largestIconSize = 0; // Find icons that match Small-/Large-/HugeIconSize and search // for the largest icon from NET_WM_ICON set. for (long *e = elem; e < elem + count && e[0] > 0 && e[1] > 0; e += 2 + e[0] * e[1]) { if (e + 2 + e[0] * e[1] <= elem + count) { if (e[0] > largestIconSize && e[0] == e[1]) { largestIconOffset = e; largestIconSize = e[0]; } // It's possible when huge=large=small, so we must go // through all sizes[] for (int i = 0; i < 3; i++) { if (e[0] == sizes[i] && e[0] == e[1] && icons[i] == null) icons[i] = YImage::createFromIconProperty(e + 2, e[0], e[1]); } } } // create the largest icon if (largestIconSize > 0) { largestIcon = YImage::createFromIconProperty(largestIconOffset + 2, largestIconSize, largestIconSize); } // create the missing icons by downscaling the largest icon // Q: Do we need to upscale the largest icon up to missing icon size? if (largestIcon != null) { for (int i = 0; i < 3; i++) { if (icons[i] == null && sizes[i] < largestIconSize) icons[i] = largestIcon->scale(sizes[i], sizes[i]); } } fFrameIcon.init(new YIcon(icons[0], icons[1], icons[2])); XFree(elem); } else if (client()->getWinIcons(&type, &count, &elem)) { if (type == _XA_WIN_ICONS) fFrameIcon = newClientIcon(elem[0], elem[1], elem + 2); else // compatibility fFrameIcon = newClientIcon(count/2, 2, elem); XFree(elem); } else if (client()->getKwmIcon(&count, &pixmap) && count == 2) { XWMHints *h = client()->hints(); if (h && (h->flags & IconPixmapHint)) { long pix[4]; pix[0] = pixmap[0]; pix[1] = pixmap[1]; pix[2] = h->icon_pixmap; pix[3] = (h->flags & IconMaskHint) ? h->icon_mask : None; fFrameIcon = newClientIcon(2, 2, pix); } else { long pix[2]; pix[0] = pixmap[0]; pix[1] = pixmap[1]; fFrameIcon = newClientIcon(count / 2, 2, pix); } XFree(pixmap); } else { XWMHints *h = client()->hints(); if (h && (h->flags & IconPixmapHint)) { long pix[2]; pix[0] = h->icon_pixmap; pix[1] = (h->flags & IconMaskHint) ? h->icon_mask : None; fFrameIcon = newClientIcon(1, 2, pix); } } if (fFrameIcon != null && !(fFrameIcon->small() != null || fFrameIcon->large() != null)) { fFrameIcon = null; } if (fFrameIcon == null) { fFrameIcon = oldFrameIcon; } // !!! BAH, we need an internal signaling framework if (menuButton()) menuButton()->repaint(); if (getMiniIcon()) getMiniIcon()->repaint(); #ifdef CONFIG_TRAY if (fTrayApp) fTrayApp->repaint(); #endif #ifdef CONFIG_TASKBAR if (fTaskBarApp) fTaskBarApp->repaint(); #endif if (windowList && fWinListItem) windowList->getList()->repaintItem(fWinListItem); } #endif YFrameWindow *YFrameWindow::nextLayer() { if (fNextFrame) return fNextFrame; for (long l(getActiveLayer() - 1); l > -1; --l) if (manager->top(l)) return manager->top(l); return 0; } YFrameWindow *YFrameWindow::prevLayer() { if (fPrevFrame) return fPrevFrame; for (long l(getActiveLayer() + 1); l < WinLayerCount; ++l) if (manager->bottom(l)) return manager->bottom(l); return 0; } YMenu *YFrameWindow::windowMenu() { //if (frameOptions() & foFullKeys) // return windowMenuNoKeys; //else return ::windowMenu; } void YFrameWindow::addAsTransient() { Window groupLeader(client()->ownerWindow()); if (groupLeader) { fOwner = manager->findFrame(groupLeader); if (fOwner) { MSG(("transient for 0x%lX: 0x%lX", groupLeader, fOwner)); PRECONDITION(fOwner->transient() != this); fNextTransient = fOwner->transient(); fOwner->setTransient(this); if (getActiveLayer() < fOwner->getActiveLayer()) { setRequestedLayer(fOwner->getActiveLayer()); } if (fNextTransient != 0) setAbove(fNextTransient); else setAbove(owner()); setWorkspace(owner()->getWorkspace()); } } } void YFrameWindow::removeAsTransient() { if (fOwner) { MSG(("removeAsTransient")); for (YFrameWindow *curr = fOwner->transient(), *prev = NULL; curr; prev = curr, curr = curr->nextTransient()) { if (curr == this) { if (prev) prev->setNextTransient(nextTransient()); else fOwner->setTransient(nextTransient()); break; } } fOwner = NULL; fNextTransient = NULL; } } void YFrameWindow::addTransients() { for (YFrameWindow * w(manager->bottomLayer()); w; w = w->prevLayer()) if (w->owner() == 0) w->addAsTransient(); } void YFrameWindow::removeTransients() { if (transient()) { MSG(("removeTransients")); YFrameWindow *w = transient(), *n; while (w) { n = w->nextTransient(); w->setNextTransient(0); w->setOwner(0); w = n; } fTransient = 0; } } bool YFrameWindow::isModal() { if (!client()) return false; if (getState() & WinStateModal) return true; MwmHints *mwmHints = client()->mwmHints(); if (mwmHints && (mwmHints->flags & MWM_HINTS_INPUT_MODE)) if (mwmHints->input_mode != MWM_INPUT_MODELESS) return true; if (hasModal()) return true; return false; } bool YFrameWindow::hasModal() { YFrameWindow *w = transient(); while (w) { if (w->isModal()) return true; w = w->nextTransient(); } /* !!! missing code for app modal dialogs */ return false; } bool YFrameWindow::canFocus() { if (hasModal()) return false; if (!client()) return false; return true; } bool YFrameWindow::canFocusByMouse() { return canFocus() && !avoidFocus(); } bool YFrameWindow::avoidFocus() { if (frameOptions() & foDoNotFocus) return true; if (getInputFocusHint()) return false; #ifndef NO_WINDOW_OPTIONS if (frameOptions() & foIgnoreNoFocusHint) return false; #endif if (client()->protocols() & YFrameClient::wpTakeFocus) return false; return true; } bool YFrameWindow::getInputFocusHint() { // if (fClient == 0) return true; XWMHints *hints = fClient->hints(); bool input = true; if (!(frameOptions() & YFrameWindow::foIgnoreNoFocusHint)) { if (hints && (hints->flags & InputHint) && !hints->input) { if (!(client()->protocols() & YFrameClient::wpTakeFocus) || (frameOptions() & foAppTakesFocus)) { input = false; } } } if (frameOptions() & foDoNotFocus) { input = false; } return input; } void YFrameWindow::setWorkspace(long workspace) { if (workspace >= workspaceCount || workspace < 0) return ; if (workspace != fWinWorkspace) { fWinWorkspace = workspace; client()->setWinWorkspaceHint(fWinWorkspace); updateState(); manager->focusLastWindow(); #ifdef CONFIG_TASKBAR updateTaskBar(); #endif #ifdef CONFIG_WINLIST windowList->updateWindowListApp(fWinListItem); #endif YFrameWindow *t = transient(); while (t != 0) { t->setWorkspace(getWorkspace()); t = t->nextTransient(); } } } YFrameWindow *YFrameWindow::mainOwner() { YFrameWindow *f = this; while (f->owner() != 0) f = f->owner(); return f; } void YFrameWindow::setRequestedLayer(long layer) { if (layer >= WinLayerCount || layer < 0) return ; if (layer != fWinRequestedLayer) { fWinRequestedLayer = layer; updateLayer(); } } void YFrameWindow::updateLayer(bool restack) { long oldLayer = fWinActiveLayer; long newLayer; newLayer = fWinRequestedLayer; if (fTypeDesktop) newLayer = WinLayerDesktop; if (fTypeDock) newLayer = WinLayerDock; if (getState() & WinStateBelow) newLayer = WinLayerBelow; if (getState() & WinStateAbove) newLayer = WinLayerOnTop; if (fOwner) { if (newLayer < fOwner->getActiveLayer()) newLayer = fOwner->getActiveLayer(); } { YFrameWindow *focus = manager->getFocus(); while (focus) { if (focus == this && isFullscreen() && manager->fullscreenEnabled() && !canRaise()) { newLayer = WinLayerFullscreen; break; } focus = focus->owner(); } } if (newLayer != fWinActiveLayer) { removeFrame(); fWinActiveLayer = newLayer; insertFrame(true); if (client()) client()->setWinLayerHint(fWinActiveLayer); if (limitByDockLayer && (getActiveLayer() == WinLayerDock || oldLayer == WinLayerDock)) manager->updateWorkArea(); YFrameWindow *w = transient(); while (w) { w->updateLayer(false); w = w->nextTransient(); } if (restack) manager->restackWindows(this); } } #ifdef CONFIG_TRAY void YFrameWindow::setTrayOption(long option) { if (option >= WinTrayOptionCount || option < 0) return ; if (option != fWinTrayOption) { fWinTrayOption = option; client()->setWinTrayHint(fWinTrayOption); #ifdef CONFIG_TASKBAR updateTaskBar(); #endif } } #endif void YFrameWindow::updateState() { if (!isManaged()) return ; client()->setWinStateHint(WIN_STATE_ALL, fWinState); FrameState newState = NormalState; bool show_frame = true; bool show_client = true; // some code is probably against the ICCCM. // some applications misbehave either way. // (some hide windows on iconize, this is bad when switching workspaces // or rolling up the window). if (isHidden()) { show_frame = false; show_client = false; newState = IconicState; } else if (!visibleNow()) { show_frame = false; show_client = false; newState = isMinimized() || isIconic() ? IconicState : NormalState; } else if (isMinimized()) { show_frame = minimizeToDesktop; show_client = false; newState = IconicState; } else if (isRollup()) { show_frame = true; show_client = false; newState = NormalState; // ? } else { show_frame = true; show_client = true; } MSG(("updateState: winState=%lX, frame=%d, client=%d", fWinState, show_frame, show_client)); client()->setFrameState(newState); if (show_client) { client()->show(); fClientContainer->show(); } if (show_frame) show(); else hide(); if (!show_client) { fClientContainer->hide(); client()->hide(); } if (!show_frame) { if (fDelayFocusTimer && fDelayFocusTimer->getTimerListener() == this) { fDelayFocusTimer->stopTimer(); fDelayFocusTimer->setTimerListener(0); } if (fAutoRaiseTimer && fAutoRaiseTimer->getTimerListener() == this) { fAutoRaiseTimer->stopTimer(); fAutoRaiseTimer->setTimerListener(0); } } } bool YFrameWindow::affectsWorkArea() const { if (doNotCover()) return true; if (getActiveLayer() == WinLayerDock) return true; if (fStrutLeft != 0 || fStrutRight != 0 || fStrutTop != 0 || fStrutBottom != 0) return true; return false; } bool YFrameWindow::inWorkArea() const { if (doNotCover()) return false; if (isFullscreen()) return false; if (getActiveLayer() >= WinLayerDock) return false; if (fStrutLeft != 0 || fStrutRight != 0 || fStrutTop != 0 || fStrutBottom != 0) return false; return true; } void YFrameWindow::getNormalGeometryInner(int *x, int *y, int *w, int *h) { XSizeHints *sh = client()->sizeHints(); *x = normalX; *y = normalY; *w = sh ? normalW * sh->width_inc + sh->base_width : normalW; *h = sh ? normalH * sh->height_inc + sh->base_height : normalH; } void YFrameWindow::setNormalGeometryOuter(int x, int y, int w, int h) { x += borderXN(); y += borderYN(); w -= 2 * borderXN(); h -= 2 * borderYN() + titleYN(); setNormalGeometryInner(x, y, w, h); } void YFrameWindow::setNormalPositionOuter(int x, int y) { XSizeHints *sh = client()->sizeHints(); x += borderXN(); y += borderYN(); int w = sh ? normalW * sh->width_inc + sh->base_width : normalW; int h = sh ? normalH * sh->height_inc + sh->base_height : normalH; setNormalGeometryInner(x, y, w, h); } void YFrameWindow::setNormalGeometryInner(int x, int y, int w, int h) { XSizeHints *sh = client()->sizeHints(); normalX = x; normalY = y; normalW = sh ? (w - sh->base_width) / sh->width_inc : w; normalH = sh ? (h - sh->base_height) / sh->height_inc : h ; updateDerivedSize((isMaximizedVert() ? WinStateMaximizedVert : 0) | (isMaximizedHoriz() ? WinStateMaximizedHoriz : 0)); updateLayout(); } void YFrameWindow::updateDerivedSize(long flagmask) { XSizeHints *sh = client()->sizeHints(); int nx = normalX; int ny = normalY; int nw = sh ? normalW * sh->width_inc + sh->base_width : normalW; int nh = sh ? normalH * sh->height_inc + sh->base_height : normalH; int xiscreen = manager->getScreenForRect(nx, ny, nw, nh); int mx, my, Mx, My; manager->getWorkArea(this, &mx, &my, &Mx, &My, xiscreen); int Mw = Mx - mx; int Mh = My - my; Mh -= titleYN(); if (1) { // aspect of maximization int aMw, aMh; aMw = Mw; aMh = Mh; client()->constrainSize(aMw, aMh, YFrameClient::csKeepX); if (aMh < Mh) { Mh = aMh; } else { client()->constrainSize(aMw, aMh, YFrameClient::csKeepY); if (aMw < Mw) { Mw = aMw; } } } bool horiz = false; bool vert = false; if (isMaximizedHoriz()) { nw = Mw; if (considerHorizBorder) { nw -= 2 * borderXN(); } horiz = true; } if (isMaximizedVert()) { nh = Mh; if (considerVertBorder) { nh -= 2 * borderYN(); } vert = true; } if (horiz || vert) { client()->constrainSize(nw, nh, ///getLayer(), (nw >= Mw) ? YFrameClient::csKeepY : YFrameClient::csKeepX); } nw += 2 * borderXN(); nh += 2 * borderYN(); if (isFullscreen() || isIconic() || (flagmask & (WinStateFullscreen | WinStateMinimized))) horiz = vert = false; if (horiz) { int cx = mx; if (centerMaximizedWindows && !(sh && (sh->flags & PMaxSize))) cx = mx + (Mw - nw) / 2; else if (!considerHorizBorder) cx -= borderXN(); if (flagmask & WinStateMaximizedHoriz) nx = cx; else nx = x(); } else { nx -= borderXN(); } if (vert) { int cy = my; if (centerMaximizedWindows && !(sh && (sh->flags & PMaxSize))) cy = my + (Mh - nh) / 2; else if (!considerVertBorder) cy -= borderYN(); if (flagmask & WinStateMaximizedVert) ny = cy; else ny = y(); } else { ny -= borderYN(); } bool cx = true; bool cy = true; bool cw = true; bool ch = true; if (isFullscreen() || isIconic()) { cy = ch = false; cx = cw = false; } if (isMaximizedVert() && !vert) cy = ch = false; if (isMaximizedHoriz() && !horiz) cx = cw = false; if (cx) posX = nx; if (cy) posY = ny; if (cw) posW = nw; if (ch) posH = nh + titleYN(); } void YFrameWindow::updateNormalSize() { MSG(("updateNormalSize: %d %d %d %d", normalX, normalY, normalW, normalH)); XSizeHints *sh = client()->sizeHints(); bool cx = true; bool cy = true; bool cw = true; bool ch = true; if (isFullscreen() || isIconic()) cy = ch = cx = cw = false; if (isMaximizedHoriz()) cx = cw = false; if (isMaximizedVert()) cy = ch = false; if (isRollup()) ch = false; if (cx) normalX = posX + borderXN(); if (cy) normalY = posY + borderYN(); if (cw) { normalW = posW - 2 * borderXN(); normalW = sh ? (normalW - sh->base_width) / sh->width_inc : normalW; } if (ch) { normalH = posH - (2 * borderYN() + titleYN()); normalH = sh ? (normalH - sh->base_height) / sh->height_inc : normalH; } MSG(("updateNormalSize> %d %d %d %d", normalX, normalY, normalW, normalH)); } void YFrameWindow::setCurrentGeometryOuter(YRect newSize) { MSG(("setCurrentGeometryOuter: %d %d %d %d", newSize.x(), newSize.y(), newSize.width(), newSize.height())); setWindowGeometry(newSize); bool cx = true; bool cy = true; bool cw = true; bool ch = true; if (isFullscreen() || isIconic()) cy = ch = cx = cw = false; if (isRollup()) ch = false; if (cx) posX = x(); if (cy) posY = y(); if (cw) posW = width(); if (ch) posH = height(); if (isIconic()) { iconX = x(); iconY = y(); } updateNormalSize(); MSG(("setCurrentGeometryOuter> %d %d %d %d", posX, posY, posW, posH)); } void YFrameWindow::setCurrentPositionOuter(int x, int y) { setCurrentGeometryOuter(YRect(x, y, width(), height())); } void YFrameWindow::updateLayout() { if (isIconic()) { if (iconX == -1 && iconY == -1) manager->getIconPosition(this, &iconX, &iconY); setWindowGeometry(YRect(iconX, iconY, fMiniIcon->width(), fMiniIcon->height())); } else { int xiscreen = manager->getScreenForRect(posX, posY, posW, posH); int dx, dy, dw, dh; manager->getScreenGeometry(&dx, &dy, &dw, &dh, xiscreen); if (isFullscreen()) { setWindowGeometry(YRect(dx, dy, dw, dh)); } else { if (isRollup()) { setWindowGeometry(YRect(posX, posY, posW, 2 * borderY() + titleY())); } else { MSG(("updateLayout %d %d %d %d", posX, posY, posW, posH)); setWindowGeometry(YRect(posX, posY, posW, posH)); } } } if (affectsWorkArea()) manager->updateWorkArea(); } void YFrameWindow::setState(long mask, long state) { long fOldState = fWinState; long fNewState = (fWinState & ~mask) | (state & mask); // !!! this should work //if (fNewState == fOldState) // return ; if ((fOldState ^ fNewState) & WinStateFullscreen) { if ((fNewState & WinStateFullscreen)) { // going fullscreen client()->saveSizeHints(); } else { // going back client()->restoreSizeHints(); } } // !!! move here fWinState = fNewState; if ((fOldState ^ fNewState) & WinStateAllWorkspaces) { MSG(("WinStateAllWorkspaces: %d", isSticky())); #ifdef CONFIG_TASKBAR updateTaskBar(); #endif } MSG(("setState: oldState: %lX, newState: %lX, mask: %lX, state: %lX", fOldState, fNewState, mask, state)); //msg("normal1: (%d:%d %dx%d)", normalX, normalY, normalWidth, normalHeight); if ((fOldState ^ fNewState) & (WinStateMaximizedVert | WinStateMaximizedHoriz)) { MSG(("WinStateMaximized: %d", isMaximized())); if (fMaximizeButton) { if (isMaximized()) { fMaximizeButton->setActions(actionRestore, actionRestore); fMaximizeButton->setToolTip(_("Restore")); } else { fMaximizeButton->setActions(actionMaximize, actionMaximizeVert); fMaximizeButton->setToolTip(_("Maximize")); } } } if ((fOldState ^ fNewState) & WinStateMinimized) { MSG(("WinStateMinimized: %d", isMaximized())); if (fNewState & WinStateMinimized) minimizeTransients(); else if (owner() && owner()->isMinimized()) owner()->setState(WinStateMinimized, 0); if (minimizeToDesktop && fMiniIcon) { if (isIconic()) { fMiniIcon->raise(); fMiniIcon->show(); } else { fMiniIcon->hide(); iconX = x(); iconY = y(); } } #ifdef CONFIG_TASKBAR updateTaskBar(); #endif layoutResizeIndicators(); manager->focusLastWindow(); } if ((fOldState ^ fNewState) & WinStateRollup) { MSG(("WinStateRollup: %d", isRollup())); if (fRollupButton) { if (isRollup()) { fRollupButton->setToolTip(_("Rolldown")); } else { fRollupButton->setToolTip(_("Rollup")); } fRollupButton->repaint(); } layoutResizeIndicators(); } if ((fOldState ^ fNewState) & WinStateHidden) { MSG(("WinStateHidden: %d", isHidden())); if (fNewState & WinStateHidden) hideTransients(); else if (owner() && owner()->isHidden()) owner()->setState(WinStateHidden, 0); #ifdef CONFIG_TASKBAR updateTaskBar(); #endif } if ((fOldState ^ fNewState) & WinStateSkipTaskBar) { MSG(("WinStateSkipTaskBar: %d", isSkipTaskBar())); #ifdef CONFIG_TASKBAR updateTaskBar(); #endif } updateState(); updateLayer(); manager->updateFullscreenLayer(); updateDerivedSize(fOldState ^ fNewState); updateLayout(); #ifdef CONFIG_SHAPE if ((fOldState ^ fNewState) & (WinStateRollup | WinStateMinimized)) setShape(); #endif if ((fOldState ^ fNewState) & WinStateMinimized) { if (!(fNewState & WinStateMinimized)) restoreMinimizedTransients(); } if ((fOldState ^ fNewState) & WinStateHidden) { if (!(fNewState & WinStateHidden)) restoreHiddenTransients(); } if ((clickFocus || !strongPointerFocus) && this == manager->getFocus() && ((fOldState ^ fNewState) & WinStateRollup)) { manager->setFocus(this); } if ((fOldState ^ fNewState) & WinStateFullscreen) { if ((fNewState & WinStateFullscreen)) { activate(); } } } void YFrameWindow::setSticky(bool sticky) { setState(WinStateAllWorkspaces, sticky ? WinStateAllWorkspaces : 0); #ifdef CONFIG_WINLIST windowList->updateWindowListApp(fWinListItem); #endif if (affectsWorkArea()) manager->updateWorkArea(); } #if DO_NOT_COVER_OLD void YFrameWindow::setDoNotCover(bool doNotCover) { fWinOptionMask &= ~foDoNotCover; if (doNotCover) { fFrameOptions |= foDoNotCover; } else { fFrameOptions &= ~foDoNotCover; } manager->updateWorkArea(); } #endif void YFrameWindow::updateMwmHints() { int bx = borderX(); int by = borderY(); int ty = titleY(), tt; getFrameHints(); int gx, gy; client()->gravityOffsets(gx, gy); #ifdef TITLEBAR_BOTTOM if (gy == -1) #else if (gy == 1) #endif tt = titleY() - ty; else tt = 0; if (!isRollup() && !isIconic()) /// !!! check (emacs hates this) configureClient(x() + bx + bx - borderX(), y() + by + by - borderY() + titleY(), client()->width(), client()->height()); } #ifndef LITE ref YFrameWindow::clientIcon() const { for(YFrameWindow const *f(this); f != NULL; f = f->owner()) if (f->getClientIcon() != null) return f->getClientIcon(); return defaultAppIcon; } #endif void YFrameWindow::updateProperties() { client()->setWinWorkspaceHint(fWinWorkspace); client()->setWinLayerHint(fWinActiveLayer); #ifdef CONFIG_TRAY client()->setWinTrayHint(fWinTrayOption); #endif client()->setWinStateHint(WIN_STATE_ALL, fWinState); } #ifdef CONFIG_TASKBAR void YFrameWindow::updateTaskBar() { #ifdef CONFIG_TRAY bool needTrayApp(false); if (taskBar && fManaged) { if (!isHidden() && !(frameOptions() & foIgnoreTaskBar) && (getTrayOption() != WinTrayIgnore)) if (trayShowAllWindows || visibleOn(manager->activeWorkspace())) needTrayApp = true; if (needTrayApp && fTrayApp == 0) fTrayApp = taskBar->addTrayApp(this); if (fTrayApp) { fTrayApp->setShown(needTrayApp); if (fTrayApp->getShown()) ///!!! optimize fTrayApp->repaint(); } taskBar->relayoutTray(); } #endif bool needTaskBarApp = true; if (taskBar && fManaged) { if (isSkipTaskBar()) needTaskBarApp = false; if (isHidden()) needTaskBarApp = false; #ifdef CONFIG_TRAY if (getTrayOption() == WinTrayExclusive) needTaskBarApp = false; if (getTrayOption() == WinTrayMinimized && isMinimized()) needTaskBarApp = false; #endif if (owner() != 0 && !taskBarShowTransientWindows) needTaskBarApp = false; if (!visibleOn(manager->activeWorkspace()) && !taskBarShowAllWindows) needTaskBarApp = false; if (isUrgent()) needTaskBarApp = true; if (frameOptions() & foIgnoreTaskBar) needTaskBarApp = false; if (frameOptions() & foNoIgnoreTaskBar) needTaskBarApp = true; if (needTaskBarApp && fTaskBarApp == 0) fTaskBarApp = taskBar->addTasksApp(this); if (fTaskBarApp) { fTaskBarApp->setFlash(isUrgent()); fTaskBarApp->setShown(needTaskBarApp); if (fTaskBarApp->getShown()) ///!!! optimize fTaskBarApp->repaint(); } #if false /// !!! optimize if (fTaskBarApp) { bool shown = fTaskBarApp->getShown(); if (shown != fTaskBarApp->getShown()) if (taskBar && taskBar->taskPane()) taskBar->taskPane()->relayout(); } #endif if (taskBar) taskBar->relayoutTasks(); } } #endif void YFrameWindow::handleMsgBox(YMsgBox *msgbox, int operation) { //msg("msgbox operation %d", operation); if (msgbox == fKillMsgBox && fKillMsgBox) { if (fKillMsgBox) { manager->unmanageClient(fKillMsgBox->handle()); fKillMsgBox = 0; manager->focusTopWindow(); } if (operation == YMsgBox::mbOK) wmKill(); } } #ifdef WMSPEC_HINTS void YFrameWindow::updateNetWMStrut() { int l, r, t, b; client()->getNetWMStrut(&l, &r, &t, &b); if (l != fStrutLeft || r != fStrutRight || t != fStrutTop || b != fStrutBottom) { fStrutLeft = l; fStrutRight = r; fStrutTop = t; fStrutBottom = b; MSG(("strut: %d %d %d %d", l, r, t, b)); manager->updateWorkArea(); } } #endif /* Work around for X11R5 and earlier */ #ifndef XUrgencyHint #define XUrgencyHint (1 << 8) #endif void YFrameWindow::updateUrgency() { fClientUrgency = false; XWMHints *h = client()->hints(); if (h && (h->flags & XUrgencyHint)) fClientUrgency = true; #ifdef CONFIG_TASKBAR updateTaskBar(); #endif /// something else when no taskbar (flash titlebar, flash icon) } void YFrameWindow::setWmUrgency(bool wmUrgency) { fWmUrgency = wmUrgency; updateUrgency(); } int YFrameWindow::getScreen() { int nx, ny, nw, nh; getNormalGeometryInner(&nx, &ny, &nw, &nh); return manager->getScreenForRect(nx, ny, nw, nh); } void YFrameWindow::wmArrange(int tcb, int lcr) { int mx, my, Mx, My, newX = 0, newY = 0; int xiscreen = manager->getScreenForRect(x(), y(), width(), height()); manager->getWorkArea(this, &mx, &my, &Mx, &My, xiscreen); switch (tcb) { case waTop: newY = my - (considerVertBorder ? 0 : borderY()); break; case waCenter: newY = my + ((My - my) >> 1) - (height() >> 1) - (considerVertBorder ? 0 : borderY()); break; case waBottom: newY = My - height() + (considerVertBorder ? 0 : borderY()); break; } switch (lcr) { case waLeft: newX = mx - (considerHorizBorder ? 0 : borderX()); break; case waCenter: newX = mx + ((Mx - mx) >> 1) - ((width()) >> 1) - (considerHorizBorder ? 0 : borderX()); break; case waRight: newX = Mx - width() + (considerHorizBorder ? 0 : borderX()); break; } MSG(("wmArrange: setPosition(x = %d, y = %d)", newX, newY)); setCurrentPositionOuter(newX, newY); } void YFrameWindow::wmSnapMove(int tcb, int lcr) { int mx, my, Mx, My, newX = 0, newY = 0; int xiscreen = manager->getScreenForRect(x(), y(), width(), height()); YFrameWindow **w = 0; int count = 0; manager->getWindowsToArrange(&w, &count); manager->getWorkArea(this, &mx, &my, &Mx, &My, xiscreen); MSG(("WorkArea: mx = %d, my = %d, Mx = %d, My = %d", mx, my, Mx, My)); MSG(("thisFrame: x = %d, y = %d, w = %d, h = %d, bx = %d, by = %d, ty = %d", x(), y(), width(), height(), borderX(), borderY(), titleY())); MSG(("thisClient: w = %d, h = %d", client()->width(), client()->height())); switch (tcb) { case waTop: newY = getTopCoord(my, w, count); if (!considerVertBorder && newY == my) newY -= borderY(); break; case waCenter: newY = y(); break; case waBottom: newY = getBottomCoord(My, w, count) - height(); if (!considerVertBorder && (newY + height()) == My) newY += borderY(); break; } switch (lcr) { case waLeft: newX = getLeftCoord(mx, w, count); if (!considerHorizBorder && newX == mx) newX -= borderX(); break; case waCenter: newX = x(); break; case waRight: newX = getRightCoord(Mx, w, count) - width(); if (!considerHorizBorder && (newX + width()) == Mx) newX += borderX(); break; } MSG(("NewPosition: x = %d, y = %d", newX, newY)); setCurrentPositionOuter(newX, newY); delete [] w; } int YFrameWindow::getTopCoord(int my, YFrameWindow **w, int count) { int i, n; if (y() < my) return y(); for (i = y() - 2; i > my; i--) { for (n = 0; n < count; n++) { if ( (this != w[n]) && (i == (w[n]->y() + w[n]->height())) && ( x() < (w[n]->x() + w[n]->width())) && ((x() + width()) > (w[n]->x())) ) { return i; } } } return my; } int YFrameWindow::getBottomCoord(int My, YFrameWindow **w, int count) { int i, n; if ((y() + height()) > My) return y() + height(); for (i = y() + height() + 2; i < My; i++) { for (n = 0; n < count; n++) { if ( (this != w[n]) && (i == w[n]->y()) && ( x() < (w[n]->x() + w[n]->width())) && ((x() + width()) > (w[n]->x())) ) { return i; } } } return My; } int YFrameWindow::getLeftCoord(int mx, YFrameWindow **w, int count) { int i, n; if (x() < mx) return x(); for (i = x() - 2; i > mx; i--) { for (n = 0; n < count; n++) { if ( (this != w[n]) && (i == (w[n]->x() + w[n]->width())) && ( y() < (w[n]->y() + w[n]->height())) && ((y() + height()) > (w[n]->y())) ) { return i; } } } return mx; } int YFrameWindow::getRightCoord(int Mx, YFrameWindow **w, int count) { int i, n; if ((x() + width()) > Mx) return x() + width(); for (i = x() + width() + 2; i < Mx; i++) { for (n = 0; n < count; n++) { if ( (this != w[n]) && (i == w[n]->x()) && ( y() < (w[n]->y() + w[n]->height())) && ((y() + height()) > (w[n]->y())) ) { return i; } } } return Mx; } icewm-1.3.7/src/ylabel.h0000644000076600007660000000073611463274240014043 0ustar develdevel#ifndef __YLABEL_H #define __YLABEL_H #include "ywindow.h" class YLabel: public YWindow { public: YLabel(const ustring &label, YWindow *parent = 0); virtual ~YLabel(); virtual void paint(Graphics &g, const YRect &r); void setText(const ustring &label); const ustring getText() const { return fLabel; } private: ustring fLabel; void autoSize(); static YColor *labelFg; static YColor *labelBg; static ref labelFont; }; #endif icewm-1.3.7/src/yfontcore.cc0000644000076600007660000001617611463274240014746 0ustar develdevel#include "config.h" #ifdef CONFIG_COREFONTS #include "ypaint.h" #include "sysdep.h" #include "intl.h" #include "yxapp.h" #include "yprefs.h" #include #ifdef CONFIG_I18N #include #endif class YCoreFont : public YFont { public: YCoreFont(char const * name); virtual ~YCoreFont(); virtual bool valid() const { return (NULL != fFont); } virtual int descent() const { return fFont->max_bounds.descent; } virtual int ascent() const { return fFont->max_bounds.ascent; } virtual int textWidth(const ustring &s) const; virtual int textWidth(char const * str, int len) const; virtual void drawGlyphs(class Graphics & graphics, int x, int y, char const * str, int len); private: XFontStruct * fFont; }; #ifdef CONFIG_I18N class YFontSet : public YFont { public: YFontSet(char const * name); virtual ~YFontSet(); virtual bool valid() const { return (None != fFontSet); } virtual int descent() const { return fDescent; } virtual int ascent() const { return fAscent; } int textWidth(const ustring &s) const; virtual int textWidth(char const * str, int len) const; virtual void drawGlyphs(class Graphics & graphics, int x, int y, char const * str, int len); private: static XFontSet getFontSetWithGuess(char const * pattern, char *** missing, int * nMissing, char ** defString); XFontSet fFontSet; int fAscent, fDescent; }; #endif static char *getNameElement(const char *pattern, unsigned const element) { unsigned h(0); const char *p(pattern); while (*p && (*p != '-' || element != ++h)) ++p; return (element == h ? newstr(p + 1, "-") : newstr("*")); } /******************************************************************************/ YCoreFont::YCoreFont(char const * name) { if (NULL == (fFont = XLoadQueryFont(xapp->display(), name))) { warn(_("Could not load font \"%s\"."), name); if (NULL == (fFont = XLoadQueryFont(xapp->display(), "fixed"))) warn(_("Loading of fallback font \"%s\" failed."), "fixed"); } } YCoreFont::~YCoreFont() { if (fFont != 0) { if (xapp != 0) XFreeFont(xapp->display(), fFont); fFont = 0; } } int YCoreFont::textWidth(const ustring &s) const { cstring cs(s); return textWidth(cs.c_str(), cs.c_str_len()); } int YCoreFont::textWidth(const char *str, int len) const { return XTextWidth(fFont, str, len); } void YCoreFont::drawGlyphs(Graphics & graphics, int x, int y, char const * str, int len) { XSetFont(xapp->display(), graphics.handleX(), fFont->fid); XDrawString(xapp->display(), graphics.drawable(), graphics.handleX(), x - graphics.xorigin(), y - graphics.yorigin(), str, len); } /******************************************************************************/ #ifdef CONFIG_I18N YFontSet::YFontSet(char const * name): fFontSet(None), fAscent(0), fDescent(0) { int nMissing; char **missing, *defString; fFontSet = getFontSetWithGuess(name, &missing, &nMissing, &defString); if (None == fFontSet) { warn(_("Could not load fontset \"%s\"."), name); if (nMissing) XFreeStringList(missing); fFontSet = XCreateFontSet(xapp->display(), "fixed", &missing, &nMissing, &defString); if (None == fFontSet) warn(_("Loading of fallback font \"%s\" failed."), "fixed"); } if (fFontSet) { if (nMissing) { warn(_("Missing codesets for fontset \"%s\":"), name); for (int n(0); n < nMissing; ++n) warn(" %s\n", missing[n]); XFreeStringList(missing); } XFontSetExtents * extents(XExtentsOfFontSet(fFontSet)); if (NULL != extents) { fAscent = -extents->max_logical_extent.y; fDescent = extents->max_logical_extent.height - fAscent; } } } YFontSet::~YFontSet() { if (NULL != fFontSet) { if (xapp != 0) XFreeFontSet(xapp->display(), fFontSet); fFontSet = 0; } } int YFontSet::textWidth(const ustring &s) const { cstring cs(s); return textWidth(cs.c_str(), cs.c_str_len()); } int YFontSet::textWidth(const char *str, int len) const { return XmbTextEscapement(fFontSet, str, len); } void YFontSet::drawGlyphs(Graphics & graphics, int x, int y, char const * str, int len) { XmbDrawString(xapp->display(), graphics.drawable(), fFontSet, graphics.handleX(), x - graphics.xorigin(), y - graphics.yorigin(), str, len); } XFontSet YFontSet::getFontSetWithGuess(char const * pattern, char *** missing, int * nMissing, char ** defString) { XFontSet fontset(XCreateFontSet(xapp->display(), pattern, missing, nMissing, defString)); if (None != fontset && !*nMissing) // --------------- got an exact match --- return fontset; if (*nMissing) XFreeStringList(*missing); if (None == fontset) { // --- get a fallback fontset for pattern analyis --- /// TODO #warning "remove this broken locale switching" char const * locale(setlocale(LC_CTYPE, NULL)); setlocale(LC_CTYPE, "C"); fontset = XCreateFontSet(xapp->display(), pattern, missing, nMissing, defString); setlocale(LC_CTYPE, locale); } if (None != fontset) { // ----------------------------- get default XLFD --- char ** fontnames; XFontStruct ** fontstructs; XFontsOfFontSet(fontset, &fontstructs, &fontnames); pattern = *fontnames; } char *weight(getNameElement(pattern, 3)); char *slant(getNameElement(pattern, 4)); char *pxlsz(getNameElement(pattern, 7)); // --- build fuzzy font pattern for better matching for various charsets --- if (!strcmp(weight, "*")) { delete[] weight; weight = newstr("medium"); } if (!strcmp(slant, "*")) { delete[] slant; slant = newstr("r"); } pattern = cstrJoin(pattern, "," "-*-*-", weight, "-", slant, "-*-*-", pxlsz, "-*-*-*-*-*-*-*," "-*-*-*-*-*-*-", pxlsz, "-*-*-*-*-*-*-*,*", NULL); if (fontset) XFreeFontSet(xapp->display(), fontset); delete[] pxlsz; delete[] slant; delete[] weight; MSG(("trying fuzzy fontset pattern: \"%s\"", pattern)); fontset = XCreateFontSet(xapp->display(), pattern, missing, nMissing, defString); delete[] pattern; return fontset; } #endif // CONFIG_I18N ref getCoreFont(const char *name) { ref font; #ifdef CONFIG_I18N if (multiByte && font.init(new YFontSet(name)) != null) { MSG(("FontSet: %s", name)); if (font->valid()) return font; font = null; msg("failed to load fontset '%s'", name); } #endif if (font.init(new YCoreFont(name)) != null) { MSG(("CoreFont: %s", name)); if (font->valid()) return font; font = null; } msg("failed to load font '%s'", name); return null; } #endif icewm-1.3.7/src/ypipereader.cc0000644000076600007660000000424411463274240015240 0ustar develdevel#include "config.h" #include "ypipereader.h" #include "yapp.h" #include #include #include YPipeReader::YPipeReader() { fListener = 0; rdbuf = 0; rdbuflen = 0; reading = false; registered = false; } YPipeReader::~YPipeReader() { if (registered) { app->unregisterPoll(this); registered = false; } if (fFd != -1) close(fFd); fFd = -1; } int YPipeReader::spawnvp(const char *prog, char **args) { int fds[2], rc; if (pipe(fds) == -1) return -1; if ((rc = fork()) == -1) { return -1; } else if (rc == 0) { // child close(fds[0]); dup2(fds[1], 1); int devnull = open("/dev/null", O_RDONLY); if (devnull != -1) { dup2(devnull, 0); close(devnull); } execvp(prog, args); _exit(99); } else { // parent close(fds[1]); fFd = fds[0]; } return 0; } int YPipeReader::read(char *buf, int len) { rdbuf = buf; rdbuflen = len; reading = true; if (!registered) { registered = true; app->registerPoll(this); } return 0; } void YPipeReader::notifyRead() { if (reading) { reading = false; if (registered) { registered = false; app->unregisterPoll(this); } int rc; rc = ::read(fFd, rdbuf, rdbuflen); if (rc == 0) { if (fListener) fListener->pipeError(0); return ; } else if (rc == -1) { if (errno == EAGAIN || errno == EWOULDBLOCK) { reading = true; if (!registered) { registered = true; app->registerPoll(this); } } else { if (fListener) fListener->pipeError(-errno); } return ; } if (fListener) fListener->pipeDataRead(rdbuf, rc); } } bool YPipeReader::forRead() { if (reading) return true; else return false; } void YPipeReader::notifyWrite() { } bool YPipeReader::forWrite() { return false; } icewm-1.3.7/src/wmapp.cc0000644000076600007660000016036011463274240014055 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2003 Marko Macek */ #include "config.h" #include "yfull.h" #include "yutil.h" #include "atray.h" #include "wmapp.h" #include "wmaction.h" #include "wmmgr.h" #include "wmframe.h" #include "wmprog.h" #include "wmswitch.h" #include "wmstatus.h" #include "wmabout.h" #include "wmdialog.h" #include "wmconfig.h" #include "wmwinmenu.h" #include "wmwinlist.h" #include "wmtaskbar.h" #include "wmclient.h" #include "ymenuitem.h" #include "wmsession.h" #include "browse.h" #include "objmenu.h" #include "objbutton.h" #include "aworkspaces.h" #include "themes.h" #include "sysdep.h" #include "prefs.h" #include "yimage.h" #include "ylocale.h" #include #include #include "yrect.h" #include "yprefs.h" #include "yicon.h" #include "prefs.h" #include "upath.h" #include "intl.h" char const *ApplicationName("IceWM"); int rebootOrShutdown = 0; static bool initializing(true); static bool restart(false); YWMApp *wmapp(NULL); YWindowManager *manager(NULL); upath keysFile; Atom XA_IcewmWinOptHint(None); Atom XA_ICEWM_FONT_PATH(None); Atom _XA_XROOTPMAP_ID(None); Atom _XA_XROOTCOLOR_PIXEL(None); YCursor YWMApp::sizeRightPointer; YCursor YWMApp::sizeTopRightPointer; YCursor YWMApp::sizeTopPointer; YCursor YWMApp::sizeTopLeftPointer; YCursor YWMApp::sizeLeftPointer; YCursor YWMApp::sizeBottomLeftPointer; YCursor YWMApp::sizeBottomPointer; YCursor YWMApp::sizeBottomRightPointer; YCursor YWMApp::scrollLeftPointer; YCursor YWMApp::scrollRightPointer; YCursor YWMApp::scrollUpPointer; YCursor YWMApp::scrollDownPointer; YMenu *windowMenu(NULL); YMenu *moveMenu(NULL); YMenu *layerMenu(NULL); #ifdef CONFIG_TRAY YMenu *trayMenu(NULL); #endif #ifdef CONFIG_WINMENU YMenu *windowListMenu(NULL); #endif #ifdef CONFIG_WINLIST YMenu *windowListPopup(NULL); YMenu *windowListAllPopup(NULL); #endif YMenu *logoutMenu(NULL); #ifndef NO_CONFIGURE static char *configFile(NULL); static char *overrideTheme(NULL); #endif char *configArg(NULL); ref defaultAppIcon; bool replace_wm = false; static Window registerProtocols1() { long timestamp = CurrentTime; char buf[32]; sprintf(buf, "WM_S%d", DefaultScreen(xapp->display())); Atom wmSx = XInternAtom(xapp->display(), buf, False); Atom wm_manager = XInternAtom(xapp->display(), "MANAGER", False); Window current_wm = XGetSelectionOwner(xapp->display(), wmSx); if (current_wm != None) { if (!replace_wm) die(1, "A window manager is already running, use --replace to replace it"); XSetWindowAttributes attrs; attrs.event_mask = StructureNotifyMask; XChangeWindowAttributes ( xapp->display(), current_wm, CWEventMask, &attrs); } Window xroot = RootWindow(xapp->display(), DefaultScreen(xapp->display())); Window xid = XCreateSimpleWindow(xapp->display(), xroot, 0, 0, 1, 1, 0, BlackPixel(xapp->display(), DefaultScreen(xapp->display())), BlackPixel(xapp->display(), DefaultScreen(xapp->display()))); XSetSelectionOwner(xapp->display(), wmSx, xid, timestamp); if (XGetSelectionOwner(xapp->display(), wmSx) != xid) die(1, "failed to set %s owner", buf); if (current_wm != None) { XEvent event; msg("Waiting to replace the old window manager"); do { XWindowEvent(xapp->display(), current_wm, StructureNotifyMask, &event); } while (event.type != DestroyNotify); msg("done."); } XClientMessageEvent ev; memset(&ev, 0, sizeof(ev)); ev.type = ClientMessage; ev.window = xroot; ev.message_type = wm_manager; ev.format = 32; ev.data.l[0] = timestamp; ev.data.l[1] = wmSx; ev.data.l[2] = xid; XSendEvent (xapp->display(), xroot, False, StructureNotifyMask, (XEvent*)&ev); return xid; } static void registerProtocols2(Window xid) { Atom win_proto[] = { _XA_WIN_WORKSPACE, _XA_WIN_WORKSPACE_COUNT, _XA_WIN_WORKSPACE_NAMES, _XA_WIN_ICONS, _XA_WIN_WORKAREA, _XA_WIN_STATE, _XA_WIN_HINTS, _XA_WIN_LAYER, #ifdef CONFIG_TRAY _XA_WIN_TRAY, #endif _XA_WIN_SUPPORTING_WM_CHECK, _XA_WIN_CLIENT_LIST #if defined(GNOME1_HINTS) && defined(WMSPEC_HINTS) /**/, #endif #ifdef WMSPEC_HINTS _XA_NET_SUPPORTING_WM_CHECK, _XA_NET_SUPPORTED, _XA_NET_CLIENT_LIST, _XA_NET_CLIENT_LIST_STACKING, _XA_NET_NUMBER_OF_DESKTOPS, _XA_NET_CURRENT_DESKTOP, _XA_NET_WM_DESKTOP, _XA_NET_ACTIVE_WINDOW, _XA_NET_CLOSE_WINDOW, _XA_NET_WM_STRUT, _XA_NET_WORKAREA, _XA_NET_WM_STATE, _XA_NET_WM_STATE_MAXIMIZED_VERT, _XA_NET_WM_STATE_MAXIMIZED_HORZ, _XA_NET_WM_STATE_SHADED, _XA_NET_WM_STATE_FULLSCREEN, _XA_NET_WM_STATE_ABOVE, _XA_NET_WM_STATE_BELOW, _XA_NET_WM_STATE_SKIP_TASKBAR, #if 0 _XA_NET_WM_STATE_MODAL, #endif _XA_NET_WM_WINDOW_TYPE_DESKTOP, _XA_NET_WM_WINDOW_TYPE_DOCK, _XA_NET_WM_WINDOW_TYPE_SPLASH, #endif }; unsigned int i = sizeof(win_proto) / sizeof(win_proto[0]); #ifdef GNOME1_HINTS XChangeProperty(xapp->display(), manager->handle(), _XA_WIN_PROTOCOLS, XA_ATOM, 32, PropModeReplace, (unsigned char *)win_proto, i); #endif #ifdef WMSPEC_HINTS XChangeProperty(xapp->display(), manager->handle(), _XA_NET_SUPPORTED, XA_ATOM, 32, PropModeReplace, (unsigned char *)win_proto, i); #endif pid_t pid = getpid(); const char wmname[] = "IceWM "VERSION" ("HOSTOS"/"HOSTCPU")"; #ifdef GNOME1_HINTS XChangeProperty(xapp->display(), xid, _XA_WIN_SUPPORTING_WM_CHECK, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&xid, 1); XChangeProperty(xapp->display(), manager->handle(), _XA_WIN_SUPPORTING_WM_CHECK, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&xid, 1); #endif #ifdef WMSPEC_HINTS XChangeProperty(xapp->display(), xid, _XA_NET_SUPPORTING_WM_CHECK, XA_WINDOW, 32, PropModeReplace, (unsigned char *)&xid, 1); XChangeProperty(xapp->display(), xid, _XA_NET_WM_PID, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&pid, 1); XChangeProperty(xapp->display(), xid, _XA_NET_WM_NAME, XA_STRING, 8, PropModeReplace, (unsigned char *)wmname, sizeof(wmname)); XChangeProperty(xapp->display(), manager->handle(), _XA_NET_SUPPORTING_WM_CHECK, XA_WINDOW, 32, PropModeReplace, (unsigned char *)&xid, 1); #endif unsigned long ac[2] = { 1, 1 }; unsigned long ca[2] = { 0, 0 }; XChangeProperty(xapp->display(), manager->handle(), _XA_WIN_AREA_COUNT, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&ac, 2); XChangeProperty(xapp->display(), manager->handle(), _XA_WIN_AREA, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&ca, 2); } static void unregisterProtocols() { XDeleteProperty(xapp->display(), manager->handle(), _XA_WIN_PROTOCOLS); } static void initIconSize() { XIconSize *is; is = XAllocIconSize(); if (is) { is->min_width = 32; is->min_height = 32; is->max_width = 32; is->max_height = 32; is->width_inc = 1; is->height_inc = 1; XSetIconSizes(xapp->display(), manager->handle(), is, 1); XFree(is); } } static void initAtoms() { XA_IcewmWinOptHint = XInternAtom(xapp->display(), "_ICEWM_WINOPTHINT", False); XA_ICEWM_FONT_PATH = XInternAtom(xapp->display(), "ICEWM_FONT_PATH", False); _XA_XROOTPMAP_ID = XInternAtom(xapp->display(), "_XROOTPMAP_ID", False); _XA_XROOTCOLOR_PIXEL = XInternAtom(xapp->display(), "_XROOTCOLOR_PIXEL", False); } static void initFontPath() { #ifndef LITE if (themeName) { // =================== find the current theme directory === upath themesFile(themeName); upath themesDir = themesFile.parent(); upath fonts_dirFile = themesDir.child("fonts.dir"); upath fonts_dirPath = YApplication::findConfigFile(fonts_dirFile); upath fonts_dirDir(null); if (fonts_dirPath != null) upath fonts_dirDir = fonts_dirPath.parent(); #if 0 char themeSubdir[PATH_MAX]; strncpy(themeSubdir, themeName, sizeof(themeSubdir) - 1); themeSubdir[sizeof(themeSubdir) - 1] = '\0'; char * strfn(strrchr(themeSubdir, '/')); if (strfn) *strfn = '\0'; // ================================ is there a file named fonts.dir? === upath fontsdir; if (*themeName == '/') fontsdir = cstrJoin(themeSubdir, "/fonts.dir", NULL); else { strfn = cstrJoin("themes/", themeSubdir, "/fonts.dir", NULL); fontsdir = (app->findConfigFile(strfn)); delete[] strfn; } #endif if (fonts_dirDir != null) { // =========================== build a new font path === cstring dir(fonts_dirDir.path()); const char *fontsdir = dir.c_str(); #if CONFIG_XFREETYPE >= 2 MSG(("font dir add %s", fontsdir)); FcConfigAppFontAddDir(0, (FcChar8 *)fontsdir); #endif #ifdef CONFIG_COREFONTS int ndirs; // ------------------- retrieve the old X's font path --- char ** fontPath(XGetFontPath(xapp->display(), &ndirs)); char ** newFontPath = new char *[ndirs + 1]; newFontPath[ndirs] = fontsdir; if (fontPath) memcpy(newFontPath, fontPath, ndirs * sizeof (char *)); else warn(_("Unable to get current font path.")); #ifdef DEBUG for (int n = 0; n < ndirs + 1; ++n) MSG(("Font path element %d: %s", n, newFontPath[n])); #endif char * icewmFontPath; // ---------- find death icewm's font path --- Atom r_type; int r_format; unsigned long count, bytes_remain; if (XGetWindowProperty(xapp->display(), manager->handle(), XA_ICEWM_FONT_PATH, 0, PATH_MAX, False, XA_STRING, &r_type, &r_format, &count, &bytes_remain, (unsigned char **) &icewmFontPath) == Success && icewmFontPath) { if (r_type == XA_STRING && r_format == 8) { for (int n(ndirs - 1); n > 0; --n) // ---- remove death paths --- if (!strcmp(icewmFontPath, newFontPath[n])) { memmove(newFontPath + n, newFontPath + n + 1, (ndirs - n) * sizeof(char *)); --ndirs; } } else warn(_("Unexpected format of ICEWM_FONT_PATH property")); XFree(icewmFontPath); } #ifdef DEBUG for (int n = 0; n < ndirs + 1; ++n) MSG(("Font path element %d: %s", n, newFontPath[n])); #endif // ----------------------------------------- set the new font path --- XChangeProperty(xapp->display(), manager->handle(), XA_ICEWM_FONT_PATH, XA_STRING, 8, PropModeReplace, (unsigned char *) fontsdir, strlen(fontsdir)); XSetFontPath(xapp->display(), newFontPath, ndirs + 1); if (fontPath) XFreeFontPath(fontPath); delete[] fontsdir; delete[] newFontPath; #endif } } #endif } #ifndef LITE static void initIcons() { defaultAppIcon = YIcon::getIcon("app"); } #endif static void initPointers() { YWMApp::sizeRightPointer. load("sizeR.xpm", XC_right_side); YWMApp::sizeTopRightPointer. load("sizeTR.xpm", XC_top_right_corner); YWMApp::sizeTopPointer. load("sizeT.xpm", XC_top_side); YWMApp::sizeTopLeftPointer. load("sizeTL.xpm", XC_top_left_corner); YWMApp::sizeLeftPointer. load("sizeL.xpm", XC_left_side); YWMApp::sizeBottomLeftPointer. load("sizeBL.xpm", XC_bottom_left_corner); YWMApp::sizeBottomPointer. load("sizeB.xpm", XC_bottom_side); YWMApp::sizeBottomRightPointer.load("sizeBR.xpm", XC_bottom_right_corner); YWMApp::scrollLeftPointer. load("scrollL.xpm", XC_sb_left_arrow); YWMApp::scrollRightPointer. load("scrollR.xpm", XC_sb_right_arrow); YWMApp::scrollUpPointer. load("scrollU.xpm", XC_sb_up_arrow); YWMApp::scrollDownPointer. load("scrollD.xpm", XC_sb_down_arrow); } #ifdef CONFIG_GRADIENTS static bool loadGradient(ref paths, char const * tag, ref &gradient, char const * name, char const * path = NULL) { if (!strcmp(tag, name)) { if (gradient == null) gradient = paths->loadImage(path, name /*, false */); else warn(_("Multiple references for gradient \"%s\""), name); return false; } return true; } #endif static void initPixmaps() { ref paths = YResourcePaths::subdirs(null, true); #ifdef CONFIG_LOOK_PIXMAP if (wmLook == lookPixmap || wmLook == lookMetal || wmLook == lookGtk || wmLook == lookFlat) { #ifdef CONFIG_GRADIENTS if (gradients) { for (char const * g(gradients + strspn(gradients, " \t\r\n")); *g != '\0'; g = strnxt(g, " \t\r\n")) { char const * gradient(newstr(g, " \t\r\n")); if (loadGradient(paths, gradient, rgbTitleS[0], "titleIS.xpm") && loadGradient(paths, gradient, rgbTitleT[0], "titleIT.xpm") && loadGradient(paths, gradient, rgbTitleB[0], "titleIB.xpm") && loadGradient(paths, gradient, rgbTitleS[1], "titleAS.xpm") && loadGradient(paths, gradient, rgbTitleT[1], "titleAT.xpm") && loadGradient(paths, gradient, rgbTitleB[1], "titleAB.xpm") && loadGradient(paths, gradient, rgbFrameT[0][0], "frameIT.xpm") && loadGradient(paths, gradient, rgbFrameL[0][0], "frameIL.xpm") && loadGradient(paths, gradient, rgbFrameR[0][0], "frameIR.xpm") && loadGradient(paths, gradient, rgbFrameB[0][0], "frameIB.xpm") && loadGradient(paths, gradient, rgbFrameT[0][1], "frameAT.xpm") && loadGradient(paths, gradient, rgbFrameL[0][1], "frameAL.xpm") && loadGradient(paths, gradient, rgbFrameR[0][1], "frameAR.xpm") && loadGradient(paths, gradient, rgbFrameB[0][1], "frameAB.xpm") && loadGradient(paths, gradient, rgbFrameT[1][0], "dframeIT.xpm") && loadGradient(paths, gradient, rgbFrameL[1][0], "dframeIL.xpm") && loadGradient(paths, gradient, rgbFrameR[1][0], "dframeIR.xpm") && loadGradient(paths, gradient, rgbFrameB[1][0], "dframeIB.xpm") && loadGradient(paths, gradient, rgbFrameT[1][1], "dframeAT.xpm") && loadGradient(paths, gradient, rgbFrameL[1][1], "dframeAL.xpm") && loadGradient(paths, gradient, rgbFrameR[1][1], "dframeAR.xpm") && loadGradient(paths, gradient, rgbFrameB[1][1], "dframeAB.xpm") && #ifdef CONFIG_TASKBAR loadGradient(paths, gradient, taskbackPixbuf, "taskbarbg.xpm", "taskbar/") && loadGradient(paths, gradient, taskbuttonPixbuf, "taskbuttonbg.xpm", "taskbar/") && loadGradient(paths, gradient, taskbuttonactivePixbuf, "taskbuttonactive.xpm", "taskbar/") && loadGradient(paths, gradient, taskbuttonminimizedPixbuf, "taskbuttonminimized.xpm", "taskbar/") && loadGradient(paths, gradient, toolbuttonPixbuf, "toolbuttonbg.xpm", "taskbar/") && loadGradient(paths, gradient, workspacebuttonPixbuf, "workspacebuttonbg.xpm", "taskbar/") && loadGradient(paths, gradient, workspacebuttonactivePixbuf, "workspacebuttonactive.xpm", "taskbar/") && #endif loadGradient(paths, gradient, buttonIPixbuf, "buttonI.xpm") && loadGradient(paths, gradient, buttonAPixbuf, "buttonA.xpm") && loadGradient(paths, gradient, logoutPixbuf, "logoutbg.xpm") && loadGradient(paths, gradient, switchbackPixbuf, "switchbg.xpm") && #ifndef LITE loadGradient(paths, gradient, listbackPixbuf, "listbg.xpm") && #endif loadGradient(paths, gradient, dialogbackPixbuf, "dialogbg.xpm") && loadGradient(paths, gradient, menubackPixbuf, "menubg.xpm") && loadGradient(paths, gradient, menuselPixbuf, "menusel.xpm") && loadGradient(paths, gradient, menusepPixbuf, "menusep.xpm")) warn(_("Unknown gradient name: %s"), gradient); delete[] gradient; } delete[] gradients; gradients = NULL; } #endif closePixmap[0] = paths->loadPixmap(0, "closeI.xpm"); depthPixmap[0] = paths->loadPixmap(0, "depthI.xpm"); maximizePixmap[0] = paths->loadPixmap(0, "maximizeI.xpm"); minimizePixmap[0] = paths->loadPixmap(0, "minimizeI.xpm"); restorePixmap[0] = paths->loadPixmap(0, "restoreI.xpm"); hidePixmap[0] = paths->loadPixmap(0, "hideI.xpm"); rollupPixmap[0] = paths->loadPixmap(0, "rollupI.xpm"); rolldownPixmap[0] = paths->loadPixmap(0, "rolldownI.xpm"); closePixmap[1] = paths->loadPixmap(0, "closeA.xpm"); depthPixmap[1] = paths->loadPixmap(0, "depthA.xpm"); maximizePixmap[1] = paths->loadPixmap(0, "maximizeA.xpm"); minimizePixmap[1] = paths->loadPixmap(0, "minimizeA.xpm"); restorePixmap[1] = paths->loadPixmap(0, "restoreA.xpm"); hidePixmap[1] = paths->loadPixmap(0, "hideA.xpm"); rollupPixmap[1] = paths->loadPixmap(0, "rollupA.xpm"); rolldownPixmap[1] = paths->loadPixmap(0, "rolldownA.xpm"); if (rolloverTitleButtons) { closePixmap[2] = paths->loadPixmap(0, "closeO.xpm"); depthPixmap[2] = paths->loadPixmap(0, "depthO.xpm"); maximizePixmap[2] = paths->loadPixmap(0, "maximizeO.xpm"); minimizePixmap[2] = paths->loadPixmap(0, "minimizeO.xpm"); restorePixmap[2] = paths->loadPixmap(0, "restoreO.xpm"); hidePixmap[2] = paths->loadPixmap(0, "hideO.xpm"); rollupPixmap[2] = paths->loadPixmap(0, "rollupO.xpm"); rolldownPixmap[2] = paths->loadPixmap(0, "rolldownO.xpm"); } frameTL[0][0] = paths->loadPixmap(0, "frameITL.xpm"); frameTR[0][0] = paths->loadPixmap(0, "frameITR.xpm"); frameBL[0][0] = paths->loadPixmap(0, "frameIBL.xpm"); frameBR[0][0] = paths->loadPixmap(0, "frameIBR.xpm"); frameTL[0][1] = paths->loadPixmap(0, "frameATL.xpm"); frameTR[0][1] = paths->loadPixmap(0, "frameATR.xpm"); frameBL[0][1] = paths->loadPixmap(0, "frameABL.xpm"); frameBR[0][1] = paths->loadPixmap(0, "frameABR.xpm"); frameTL[1][0] = paths->loadPixmap(0, "dframeITL.xpm"); frameTR[1][0] = paths->loadPixmap(0, "dframeITR.xpm"); frameBL[1][0] = paths->loadPixmap(0, "dframeIBL.xpm"); frameBR[1][0] = paths->loadPixmap(0, "dframeIBR.xpm"); frameTL[1][1] = paths->loadPixmap(0, "dframeATL.xpm"); frameTR[1][1] = paths->loadPixmap(0, "dframeATR.xpm"); frameBL[1][1] = paths->loadPixmap(0, "dframeABL.xpm"); frameBR[1][1] = paths->loadPixmap(0, "dframeABR.xpm"); if (TEST_GRADIENT(rgbFrameT[0][0] == null)) frameT[0][0] = paths->loadPixmap(0, "frameIT.xpm"); if (TEST_GRADIENT(rgbFrameL[0][0] == null)) frameL[0][0] = paths->loadPixmap(0, "frameIL.xpm"); if (TEST_GRADIENT( rgbFrameR[0][0] == null)) frameR[0][0] = paths->loadPixmap(0, "frameIR.xpm"); if (TEST_GRADIENT(rgbFrameB[0][0] == null)) frameB[0][0] = paths->loadPixmap(0, "frameIB.xpm"); if (TEST_GRADIENT(rgbFrameT[0][1] == null)) frameT[0][1] = paths->loadPixmap(0, "frameAT.xpm"); if (TEST_GRADIENT(rgbFrameL[0][1] == null)) frameL[0][1] = paths->loadPixmap(0, "frameAL.xpm"); if (TEST_GRADIENT(rgbFrameR[0][1] == null)) frameR[0][1] = paths->loadPixmap(0, "frameAR.xpm"); if (TEST_GRADIENT(rgbFrameB[0][1] == null)) frameB[0][1] = paths->loadPixmap(0, "frameAB.xpm"); if (TEST_GRADIENT(rgbFrameT[1][0] == null)) frameT[1][0] = paths->loadPixmap(0, "dframeIT.xpm"); if (TEST_GRADIENT(rgbFrameL[1][0] == null)) frameL[1][0] = paths->loadPixmap(0, "dframeIL.xpm"); if (TEST_GRADIENT(rgbFrameR[1][0] == null)) frameR[1][0] = paths->loadPixmap(0, "dframeIR.xpm"); if (TEST_GRADIENT(rgbFrameB[1][0] == null)) frameB[1][0] = paths->loadPixmap(0, "dframeIB.xpm"); if (TEST_GRADIENT(rgbFrameT[1][1] == null)) frameT[1][1] = paths->loadPixmap(0, "dframeAT.xpm"); if (TEST_GRADIENT(rgbFrameL[1][1] == null)) frameL[1][1] = paths->loadPixmap(0, "dframeAL.xpm"); if (TEST_GRADIENT(rgbFrameR[1][1] == null)) frameR[1][1] = paths->loadPixmap(0, "dframeAR.xpm"); if (TEST_GRADIENT(rgbFrameB[1][1] == null)) frameB[1][1] = paths->loadPixmap(0, "dframeAB.xpm"); titleJ[0] = paths->loadPixmap(0, "titleIJ.xpm"); titleL[0] = paths->loadPixmap(0, "titleIL.xpm"); titleP[0] = paths->loadPixmap(0, "titleIP.xpm"); titleM[0] = paths->loadPixmap(0, "titleIM.xpm"); titleR[0] = paths->loadPixmap(0, "titleIR.xpm"); titleQ[0] = paths->loadPixmap(0, "titleIQ.xpm"); titleJ[1] = paths->loadPixmap(0, "titleAJ.xpm"); titleL[1] = paths->loadPixmap(0, "titleAL.xpm"); titleP[1] = paths->loadPixmap(0, "titleAP.xpm"); titleM[1] = paths->loadPixmap(0, "titleAM.xpm"); titleR[1] = paths->loadPixmap(0, "titleAR.xpm"); titleQ[1] = paths->loadPixmap(0, "titleAQ.xpm"); // if (TEST_GRADIENT(NULL == rgbTitleS[0])) titleS[0] = paths->loadPixmap(0, "titleIS.xpm"); // if (TEST_GRADIENT(NULL == rgbTitleT[0])) titleT[0] = paths->loadPixmap(0, "titleIT.xpm"); // if (TEST_GRADIENT(NULL == rgbTitleB[0])) titleB[0] = paths->loadPixmap(0, "titleIB.xpm"); // if (TEST_GRADIENT(NULL == rgbTitleS[1])) titleS[1] = paths->loadPixmap(0, "titleAS.xpm"); // if (TEST_GRADIENT(NULL == rgbTitleT[1])) titleT[1] = paths->loadPixmap(0, "titleAT.xpm"); // if (TEST_GRADIENT(NULL == rgbTitleB[1])) titleB[1] = paths->loadPixmap(0, "titleAB.xpm"); #ifdef CONFIG_SHAPED_DECORATION bool const copyMask(true); #else bool const copyMask(false); #endif for (int a = 0; a <= 1; a++) { for (int b = 0; b <= 1; b++) { frameT[a][b]->replicate(true, copyMask); frameB[a][b]->replicate(true, copyMask); frameL[a][b]->replicate(false, copyMask); frameR[a][b]->replicate(false, copyMask); } titleS[a]->replicate(true, copyMask); titleT[a]->replicate(true, copyMask); titleB[a]->replicate(true, copyMask); } menuButton[0] = paths->loadPixmap(0, "menuButtonI.xpm"); menuButton[1] = paths->loadPixmap(0, "menuButtonA.xpm"); if (rolloverTitleButtons) { menuButton[2] = paths->loadPixmap(0, "menuButtonO.xpm"); } } #endif { if (depthPixmap[0]==null) depthPixmap[0] = paths->loadPixmap(0, "depth.xpm"); if (closePixmap[0]==null) closePixmap[0] = paths->loadPixmap(0, "close.xpm"); if (maximizePixmap[0]==null) maximizePixmap[0] = paths->loadPixmap(0, "maximize.xpm"); if (minimizePixmap[0]==null) minimizePixmap[0] = paths->loadPixmap(0, "minimize.xpm"); if (restorePixmap[0]==null) restorePixmap[0] = paths->loadPixmap(0, "restore.xpm"); if (hidePixmap[0]==null) hidePixmap[0] = paths->loadPixmap(0, "hide.xpm"); if (rollupPixmap[0]==null) rollupPixmap[0] = paths->loadPixmap(0, "rollup.xpm"); if (rolldownPixmap[0]==null) rolldownPixmap[0] = paths->loadPixmap(0, "rolldown.xpm"); } if (TEST_GRADIENT(logoutPixbuf == null)) logoutPixmap = paths->loadPixmap(0, "logoutbg.xpm"); if (TEST_GRADIENT(switchbackPixbuf == null)) switchbackPixmap = paths->loadPixmap(0, "switchbg.xpm"); if (TEST_GRADIENT(menubackPixbuf == null)) menubackPixmap = paths->loadPixmap(0, "menubg.xpm"); if (TEST_GRADIENT(menuselPixbuf == null)) menuselPixmap = paths->loadPixmap(0, "menusel.xpm"); if (TEST_GRADIENT(menusepPixbuf == null)) menusepPixmap = paths->loadPixmap(0, "menusep.xpm"); #ifndef LITE if (TEST_GRADIENT(listbackPixbuf == null) && (listbackPixmap = paths->loadPixmap(0, "listbg.xpm")) == null) listbackPixmap = menubackPixmap; #endif if (TEST_GRADIENT(dialogbackPixbuf == null) && (dialogbackPixmap = paths->loadPixmap(0, "dialogbg.xpm")) == null) dialogbackPixmap = menubackPixmap; if (TEST_GRADIENT(buttonIPixbuf == null) && (buttonIPixmap = paths->loadPixmap(0, "buttonI.xpm")) == null) buttonIPixmap = paths->loadPixmap("taskbar/", "taskbuttonbg.xpm"); if (TEST_GRADIENT(buttonAPixbuf == null) && (buttonAPixmap = paths->loadPixmap(0, "buttonA.xpm")) == null) buttonAPixmap = paths->loadPixmap("taskbar/", "taskbuttonactive.xpm"); #ifdef CONFIG_TASKBAR if (TEST_GRADIENT(toolbuttonPixbuf == null) && (toolbuttonPixmap = paths->loadPixmap("taskbar/", "toolbuttonbg.xpm")) == null) { IF_CONFIG_GRADIENTS (buttonIPixbuf != null, toolbuttonPixbuf = buttonIPixbuf) else toolbuttonPixmap = buttonIPixmap; } if (TEST_GRADIENT(workspacebuttonPixbuf == null) && (workspacebuttonPixmap = paths->loadPixmap("taskbar/", "workspacebuttonbg.xpm")) == null) { IF_CONFIG_GRADIENTS (buttonIPixbuf != null, workspacebuttonPixbuf = buttonIPixbuf) else workspacebuttonPixmap = buttonIPixmap; } if (TEST_GRADIENT(workspacebuttonactivePixbuf == null) && (workspacebuttonactivePixmap = paths->loadPixmap("taskbar/", "workspacebuttonactive.xpm")) == null) { IF_CONFIG_GRADIENTS (buttonAPixbuf != null, workspacebuttonactivePixbuf = buttonAPixbuf) else workspacebuttonactivePixmap = buttonAPixmap; } #endif if (logoutPixmap != null) { logoutPixmap->replicate(true, false); logoutPixmap->replicate(false, false); } if (switchbackPixmap != null) { switchbackPixmap->replicate(true, false); switchbackPixmap->replicate(false, false); } if (menubackPixmap != null) { menubackPixmap->replicate(true, false); menubackPixmap->replicate(false, false); } if (menusepPixmap != null) menusepPixmap->replicate(true, false); if (menuselPixmap != null) menuselPixmap->replicate(true, false); #ifndef LITE if (listbackPixmap != null) { listbackPixmap->replicate(true, false); listbackPixmap->replicate(false, false); } #endif if (dialogbackPixmap != null) { dialogbackPixmap->replicate(true, false); dialogbackPixmap->replicate(false, false); } if (buttonIPixmap != null) buttonIPixmap->replicate(true, false); if (buttonAPixmap != null) buttonAPixmap->replicate(true, false); } static void initMenus() { #ifdef CONFIG_WINMENU windowListMenu = new WindowListMenu(); windowListMenu->setShared(true); // !!! windowListMenu->setActionListener(wmapp); #endif if (showLogoutMenu) { logoutMenu = new YMenu(); PRECONDITION(logoutMenu != 0); logoutMenu->setShared(true); /// !!! get rid of this (refcount objects) if (showLogoutSubMenu) { logoutMenu->addItem(_("_Logout"), -2, null, actionLogout)->setChecked(true); logoutMenu->addItem(_("_Cancel logout"), -2, null, actionCancelLogout)->setEnabled(false); logoutMenu->addSeparator(); #ifndef NO_CONFIGURE_MENUS YStringArray noargs; #ifdef LITE #define canLock() true #define canShutdown(x) true #endif int const oldItemCount = logoutMenu->itemCount(); if (canLock()) logoutMenu->addItem(_("Lock _Workstation"), -2, null, actionLock); if (canShutdown(true)) logoutMenu->addItem(_("Re_boot"), -2, null, actionReboot); if (canShutdown(false)) logoutMenu->addItem(_("Shut_down"), -2, null, actionShutdown); if (logoutMenu->itemCount() != oldItemCount) logoutMenu->addSeparator(); logoutMenu->addItem(_("Restart _Icewm"), -2, null, actionRestart); DProgram *restartXTerm = DProgram::newProgram(_("Restart _Xterm"), null, true, 0, "xterm", noargs); if (restartXTerm) logoutMenu->add(new DObjectMenuItem(restartXTerm)); #endif } } windowMenu = new YMenu(); assert(windowMenu != 0); windowMenu->setShared(true); layerMenu = new YMenu(); assert(layerMenu != 0); layerMenu->setShared(true); layerMenu->addItem(_("_Menu"), -2, null, layerActionSet[WinLayerMenu]); layerMenu->addItem(_("_Above Dock"), -2, null, layerActionSet[WinLayerAboveDock]); layerMenu->addItem(_("_Dock"), -2, null, layerActionSet[WinLayerDock]); layerMenu->addItem(_("_OnTop"), -2, null, layerActionSet[WinLayerOnTop]); layerMenu->addItem(_("_Normal"), -2, null, layerActionSet[WinLayerNormal]); layerMenu->addItem(_("_Below"), -2, null, layerActionSet[WinLayerBelow]); layerMenu->addItem(_("D_esktop"), -2, null, layerActionSet[WinLayerDesktop]); moveMenu = new YMenu(); assert(moveMenu != 0); moveMenu->setShared(true); for (int w = 0; w < workspaceCount; w++) { char s[128]; sprintf(s, "%lu. %s", (unsigned long)(w + 1), workspaceNames[w]); moveMenu->addItem(s, 0, null, workspaceActionMoveTo[w]); } if (strchr(winMenuItems, 'r')) windowMenu->addItem(_("_Restore"), -2, KEY_NAME(gKeyWinRestore), actionRestore); if (strchr(winMenuItems, 'm')) windowMenu->addItem(_("_Move"), -2, KEY_NAME(gKeyWinMove), actionMove); if (strchr(winMenuItems, 's')) windowMenu->addItem(_("_Size"), -2, KEY_NAME(gKeyWinSize), actionSize); if (strchr(winMenuItems, 'n')) windowMenu->addItem(_("Mi_nimize"), -2, KEY_NAME(gKeyWinMinimize), actionMinimize); if (strchr(winMenuItems, 'x')) windowMenu->addItem(_("Ma_ximize"), -2, KEY_NAME(gKeyWinMaximize), actionMaximize); if (strchr(winMenuItems,'f') && allowFullscreen) windowMenu->addItem(_("_Fullscreen"), -2, KEY_NAME(gKeyWinFullscreen), actionFullscreen); #ifndef CONFIG_PDA if (strchr(winMenuItems, 'h')) windowMenu->addItem(_("_Hide"), -2, KEY_NAME(gKeyWinHide), actionHide); #endif if (strchr(winMenuItems, 'u')) windowMenu->addItem(_("Roll_up"), -2, KEY_NAME(gKeyWinRollup), actionRollup); if (strchr(winMenuItems, 'a') || strchr(winMenuItems,'l') || strchr(winMenuItems,'y') || strchr(winMenuItems,'t')) windowMenu->addSeparator(); if (strchr(winMenuItems, 'a')) windowMenu->addItem(_("R_aise"), -2, KEY_NAME(gKeyWinRaise), actionRaise); if (strchr(winMenuItems, 'l')) windowMenu->addItem(_("_Lower"), -2, KEY_NAME(gKeyWinLower), actionLower); if (strchr(winMenuItems, 'y')) windowMenu->addSubmenu(_("La_yer"), -2, layerMenu); if (strchr(winMenuItems, 't') && workspaceCount > 1) { windowMenu->addSeparator(); windowMenu->addSubmenu(_("Move _To"), -2, moveMenu); windowMenu->addItem(_("Occupy _All"), -2, KEY_NAME(gKeyWinOccupyAll), actionOccupyAllOrCurrent); } /// this should probably go away, cause fullscreen will do mostly the same thing #if DO_NOT_COVER_OLD if (!limitByDockLayer) windowMenu->addItem(_("Limit _Workarea"), -2, null, actionDoNotCover); #endif #ifdef CONFIG_TRAY if (strchr(winMenuItems, 'i') && taskBarShowTray) windowMenu->addItem(_("Tray _icon"), -2, null, actionToggleTray); #endif if (strchr(winMenuItems, 'c') || strchr(winMenuItems, 'k')) windowMenu->addSeparator(); if (strchr(winMenuItems, 'c')) windowMenu->addItem(_("_Close"), -2, KEY_NAME(gKeyWinClose), actionClose); if (strchr(winMenuItems, 'k')) windowMenu->addItem(_("_Kill Client"), -2, KEY_NAME(gKeyWinKill), actionKill); #ifdef CONFIG_WINLIST if (strchr(winMenuItems, 'w')) { windowMenu->addSeparator(); windowMenu->addItem(_("_Window list"), -2, KEY_NAME(gKeySysWindowList), actionWindowList); } #endif #ifndef NO_CONFIGURE_MENUS rootMenu = new StartMenu("menu"); rootMenu->setActionListener(wmapp); #endif } void initWorkspaces() { XTextProperty names; if (XStringListToTextProperty(workspaceNames, workspaceCount, &names)) { XSetTextProperty(xapp->display(), manager->handle(), &names, _XA_WIN_WORKSPACE_NAMES); XFree(names.value); } XChangeProperty(xapp->display(), manager->handle(), _XA_WIN_WORKSPACE_COUNT, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&workspaceCount, 1); XChangeProperty(xapp->display(), manager->handle(), _XA_NET_NUMBER_OF_DESKTOPS, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&workspaceCount, 1); Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; unsigned char *prop; long ws = 0; if (XGetWindowProperty(xapp->display(), manager->handle(), _XA_WIN_WORKSPACE, 0, 1, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 1) { long n = *(long *)prop; if (n < workspaceCount) ws = n; } XFree(prop); } manager->activateWorkspace(ws); } int handler(Display *display, XErrorEvent *xev) { if (initializing && xev->request_code == X_ChangeWindowAttributes && xev->error_code == BadAccess) { msg(_("Another window manager already running, exiting...")); exit(1); } DBG { char message[80], req[80], number[80]; sprintf(number, "%d", xev->request_code); XGetErrorDatabaseText(display, "XRequest", number, "", req, sizeof(req)); if (!req[0]) sprintf(req, "[request_code=%d]", xev->request_code); if (XGetErrorText(display, xev->error_code, message, sizeof(message)) != Success) *message = '\0'; warn("X error %s(0x%lX): %s", req, xev->resourceid, message); } return 0; } #ifdef DEBUG void dumpZorder(const char *oper, YFrameWindow *w, YFrameWindow *a) { YFrameWindow *p = manager->top(w->getActiveLayer()); msg("---- %s ", oper); while (p) { if (p && p->client()) { cstring cs(p->client()->windowTitle()); msg(" %c %c 0x%lX: %s", (p == w) ? '*' : ' ', (p == a) ? '#' : ' ', p->client()->handle(), cs.c_str()); } else msg("?? 0x%lX: %s", p->handle()); PRECONDITION(p->next() != p); PRECONDITION(p->prev() != p); if (p->next()) PRECONDITION(p->next()->prev() == p); p = p->next(); } } #endif void YWMApp::runRestart(const char *path, char *const *args) { XSelectInput(xapp->display(), desktop->handle(), 0); XSync(xapp->display(), False); ///!!! problem with repeated SIGHUP for restart... resetSignals(); closeFiles(); if (path) { if (args) { execvp(path, args); } else { execlp(path, path, (void *)NULL); } } else { const char *c = configArg ? "-c" : NULL; execlp(ICEWMEXE, ICEWMEXE, "--restart", c, configArg, (void *)NULL); } xapp->alert(); die(13, _("Could not restart: %s\nDoes $PATH lead to %s?"), strerror(errno), path ? path : ICEWMEXE); } void YWMApp::restartClient(const char *path, char *const *args) { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geRestart); #endif manager->unmanageClients(); unregisterProtocols(); runRestart(path, args); /* somehow exec failed, try to recover */ managerWindow = registerProtocols1(); registerProtocols2(managerWindow); manager->manageClients(); } void YWMApp::runOnce(const char *resource, const char *path, char *const *args) { Window win(manager->findWindow(resource)); if (win) { YFrameWindow * frame(manager->findFrame(win)); if (frame) frame->activateWindow(true); else XMapRaised(xapp->display(), win); } else runProgram(path, args); } void YWMApp::runCommandOnce(const char *resource, const char *cmdline) { /// TODO #warning calling /bin/sh is considered to be bloat char const *const argv[] = { "/bin/sh", "-c", cmdline, NULL }; if (resource) runOnce(resource, argv[0], (char *const *) argv); else runProgram(argv[0], (char *const *) argv); } void YWMApp::setFocusMode(int mode) { char s[32]; sprintf(s, "FocusMode=%d\n", mode); if (setDefault("focus_mode", s) == 0) { restartClient(0, 0); } } void YWMApp::actionPerformed(YAction *action, unsigned int /*modifiers*/) { if (action == actionLogout) { rebootOrShutdown = 0; doLogout(); } else if (action == actionCancelLogout) { cancelLogout(); } else if (action == actionLock) { app->runCommand(lockCommand); } else if (action == actionShutdown) { manager->doWMAction(ICEWM_ACTION_SHUTDOWN); } else if (action == actionReboot) { manager->doWMAction(ICEWM_ACTION_REBOOT); } else if (action == actionRestart) { restartClient(0, 0); } else if (action == actionRun) { runCommand(runDlgCommand); } else if (action == actionExit) { manager->unmanageClients(); unregisterProtocols(); exit(0); } else if (action == actionFocusClickToFocus) { setFocusMode(1); } else if (action == actionFocusMouseSloppy) { setFocusMode(2); } else if (action == actionFocusCustom) { setFocusMode(0); } else if (action == actionRefresh) { static YWindow *w = 0; if (w == 0) w = new YWindow(); if (w) { w->setGeometry(YRect(0, 0, desktop->width(), desktop->height())); w->raise(); w->show(); w->hide(); } #ifndef LITE } else if (action == actionAbout) { if (aboutDlg) aboutDlg->showFocused(); #endif } else if (action == actionTileVertical || action == actionTileHorizontal) { YFrameWindow **w = 0; int count = 0; manager->getWindowsToArrange(&w, &count); if (w) { manager->tileWindows(w, count, (action == actionTileVertical) ? true : false); delete [] w; } } else if (action == actionArrange) { YFrameWindow **w = 0; int count = 0; manager->getWindowsToArrange(&w, &count); if (w) { manager->smartPlace(w, count); delete [] w; } } else if (action == actionHideAll || action == actionMinimizeAll) { YFrameWindow **w = 0; int count = 0; manager->getWindowsToArrange(&w, &count); if (w) { manager->setWindows(w, count, action); delete [] w; } } else if (action == actionShowDesktop) { YFrameWindow **w = 0; int count = 0; manager->getWindowsToArrange(&w, &count, true, true); if (w && count > 0) { manager->setWindows(w, count, actionMinimizeAll); delete [] w; } else { manager->undoArrange(); } } else if (action == actionCascade) { YFrameWindow **w = 0; int count = 0; manager->getWindowsToArrange(&w, &count); if (w) { manager->cascadePlace(w, count); delete [] w; } } else if (action == actionUndoArrange) { manager->undoArrange(); #ifdef CONFIG_WINLIST } else if (action == actionWindowList) { if (windowList) windowList->showFocused(-1, -1); #endif #ifdef CONFIG_TASKBAR } else if (action == actionCollapseTaskbar && taskBar) { taskBar->handleCollapseButton(); fWindowManager->focusLastWindow(); #endif } else { for (int w = 0; w < workspaceCount; w++) { if (workspaceActionActivate[w] == action) { manager->activateWorkspace(w); return ; } } } } bool configurationNeeded(true); YWMApp::YWMApp(int *argc, char ***argv, const char *displayName): YSMApplication(argc, argv, displayName) { wmapp = this; managerWindow = None; #ifndef NO_CONFIGURE loadConfiguration("preferences"); if (themeName != 0) { MSG(("themeName=%s", themeName)); loadThemeConfiguration(themeName); } { cfoption focus_prefs[] = { OIV("FocusMode", &focusMode, 0, 2, "Focus mode (0 = custom, 1 = click, 2 = mouse, 3 = explicit)"), OK0() }; YConfig::findLoadConfigFile(focus_prefs, "focus_mode"); } loadConfiguration("prefoverride"); switch (focusMode) { case 0: /* custom */ break; default: /* click to focus */ clickFocus = true; focusOnAppRaise = false; requestFocusOnAppRaise = true; raiseOnFocus = true; raiseOnClickClient = true; focusOnMap = true; mapInactiveOnTop = true; focusChangesWorkspace = false; focusOnMapTransient = false; focusOnMapTransientActive = true; break; case 2: /* mouse focus */ clickFocus = false; focusOnAppRaise = false; requestFocusOnAppRaise = true; raiseOnFocus = false; raiseOnClickClient = true; focusOnMap = true; mapInactiveOnTop = true; focusChangesWorkspace = false; focusOnMapTransient = false; focusOnMapTransientActive = true; break; } #endif DEPRECATE(warpPointer == true); DEPRECATE(focusRootWindow == true); DEPRECATE(replayMenuCancelClick == true); //DEPRECATE(manualPlacement == true); //DEPRECATE(strongPointerFocus == true); DEPRECATE(showPopupsAbovePointer == true); DEPRECATE(considerHorizBorder == true); DEPRECATE(considerVertBorder == true); DEPRECATE(sizeMaximized == true); DEPRECATE(dontRotateMenuPointer == false); DEPRECATE(lowerOnClickWhenRaised == true); if (workspaceCount == 0) addWorkspace(0, " 0 ", false); #ifndef NO_WINDOW_OPTIONS if (winOptFile == null) winOptFile = app->findConfigFile("winoptions"); #endif if (keysFile == null) keysFile = app->findConfigFile("keys"); catchSignal(SIGINT); catchSignal(SIGTERM); catchSignal(SIGQUIT); catchSignal(SIGHUP); catchSignal(SIGCHLD); #ifndef NO_WINDOW_OPTIONS defOptions = new WindowOptions(); hintOptions = new WindowOptions(); if (winOptFile != null) loadWinOptions(winOptFile); winOptFile = null; #endif #ifndef NO_CONFIGURE_MENUS if (keysFile != null) loadMenus(keysFile, 0); #endif XSetErrorHandler(handler); fLogoutMsgBox = 0; initAtoms(); initActions(); initPointers(); delete desktop; managerWindow = registerProtocols1(); desktop = manager = fWindowManager = new YWindowManager(0, RootWindow(display(), DefaultScreen(display()))); PRECONDITION(desktop != 0); registerProtocols2(managerWindow); initFontPath(); #ifndef LITE initIcons(); #endif initIconSize(); initPixmaps(); initMenus(); #ifndef NO_CONFIGURE if (scrollBarWidth == 0) { switch(wmLook) { case lookWarp4: scrollBarWidth = 14; break; case lookMotif: case lookGtk: scrollBarWidth = 15; break; case lookNice: case lookWin95: case lookWarp3: case lookPixmap: scrollBarWidth = 16; break; case lookFlat: case lookMetal: scrollBarWidth = 17; break; case lookMAX: break; } } if (scrollBarHeight == 0) { switch(wmLook) { case lookWarp4: scrollBarHeight = 20; break; case lookMotif: case lookGtk: scrollBarHeight = scrollBarWidth; break; case lookNice: case lookWin95: case lookWarp3: case lookPixmap: scrollBarHeight = scrollBarWidth; break; case lookFlat: case lookMetal: scrollBarHeight = scrollBarWidth; break; case lookMAX: break; } } #endif #ifndef LITE statusMoveSize = new MoveSizeStatus(manager); statusWorkspace = new WorkspaceStatus(manager); #endif if (quickSwitch) switchWindow = new SwitchWindow(manager); #ifdef CONFIG_TASKBAR if (showTaskBar) { taskBar = new TaskBar(manager); if (taskBar) taskBar->showBar(true); } else { taskBar = 0; } #endif #ifdef CONFIG_WINLIST windowList = new WindowList(manager); #endif //windowList->show(); #ifndef LITE ctrlAltDelete = new CtrlAltDelete(manager); #endif #ifndef LITE aboutDlg = new AboutDlg(); #endif initWorkspaces(); manager->grabKeys(); manager->setupRootProxy(); manager->updateWorkArea(); #ifdef CONFIG_SESSION if (haveSessionManager()) loadWindowInfo(); #endif initializing = false; } YWMApp::~YWMApp() { if (fLogoutMsgBox) { manager->unmanageClient(fLogoutMsgBox->handle()); fLogoutMsgBox = 0; } #ifndef LITE delete ctrlAltDelete; ctrlAltDelete = 0; #endif #ifdef CONFIG_TASKBAR delete taskBar; taskBar = 0; #endif //delete windowList; windowList = 0; #ifndef LITE delete switchWindow; switchWindow = 0; delete statusMoveSize; statusMoveSize = 0; delete statusWorkspace; statusWorkspace = 0; #endif #ifndef NO_CONFIGURE_MENUS delete rootMenu; rootMenu = 0; #endif #ifdef CONFIG_WINLIST delete windowListPopup; windowListPopup = 0; #endif delete windowMenu; windowMenu = 0; // shared menus last delete moveMenu; moveMenu = 0; #ifdef CONFIG_WINMENU delete windowListMenu; windowListMenu = 0; #endif closePixmap[0] = null; depthPixmap[0] = null; minimizePixmap[0] = null; maximizePixmap[0] = null; restorePixmap[0] = null; hidePixmap[0] = null; rollupPixmap[0] = null; rolldownPixmap[0] = null; menubackPixmap = null; menuselPixmap = null; menusepPixmap = null; switchbackPixmap = null; logoutPixmap = null; #ifdef CONFIG_GRADIENTS menubackPixbuf = null; menuselPixbuf = null; menusepPixbuf = null; #endif #ifdef CONFIG_TASKBAR if (!showTaskBar) { taskbuttonactivePixmap = null; taskbuttonminimizedPixmap = null; } #endif //!!!XFreeGC(display(), outlineGC); lazy init in movesize.cc //!!!XFreeGC(display(), clipPixmapGC); in ypaint.cc XFlush(display()); } void YWMApp::handleSignal(int sig) { switch (sig) { case SIGINT: case SIGTERM: actionPerformed(actionExit, 0); break; case SIGQUIT: actionPerformed(actionLogout, 0); break; case SIGHUP: restartClient(0, 0); break; default: YApplication::handleSignal(sig); break; } } bool YWMApp::handleIdle() { #ifdef CONFIG_TASKBAR /// TODO #warning "make this generic" if (taskBar) { taskBar->relayoutNow(); } #endif return YSMApplication::handleIdle(); } #ifdef CONFIG_GUIEVENTS void YWMApp::signalGuiEvent(GUIEvent ge) { static Atom GUIEventAtom = None; unsigned char num = (unsigned char)ge; if (GUIEventAtom == None) GUIEventAtom = XInternAtom(xapp->display(), XA_GUI_EVENT_NAME, False); XChangeProperty(xapp->display(), desktop->handle(), GUIEventAtom, GUIEventAtom, 8, PropModeReplace, &num, 1); } #endif bool YWMApp::filterEvent(const XEvent &xev) { if (xev.type == SelectionClear) { if (xev.xselectionclear.window == managerWindow) { manager->unmanageClients(); unregisterProtocols(); exit(0); } } return YSMApplication::filterEvent(xev); } void YWMApp::afterWindowEvent(XEvent &xev) { static XEvent lastKeyEvent = { 0 }; if (xev.type == KeyRelease && lastKeyEvent.type == KeyPress) { KeySym k1 = XKeycodeToKeysym(xapp->display(), (KeyCode)xev.xkey.keycode, 0); unsigned int m1 = KEY_MODMASK(lastKeyEvent.xkey.state); KeySym k2 = XKeycodeToKeysym(xapp->display(), (KeyCode)lastKeyEvent.xkey.keycode, 0); if (m1 == 0 && xapp->WinMask && win95keys) { if (k1 == xapp->Win_L && k2 == xapp->Win_L) { manager->popupStartMenu(desktop); } #ifdef CONFIG_WINLIST else if (k1 == xapp->Win_R && k2 == xapp->Win_R) { if (windowList) windowList->showFocused(-1, -1); } #endif } } if (xev.type == KeyPress || xev.type == KeyRelease || xev.type == ButtonPress || xev.type == ButtonRelease) lastKeyEvent = xev; } #ifndef NO_CONFIGURE static void print_version() { puts("IceWM " VERSION ", " "Copyright 1997-2003 Marko Macek, 2001 Mathias Hasselmann"); exit(0); } static void print_usage(const char *argv0) { const char *usage_client_id = #ifdef CONFIG_SESSION " --client-id=ID Client id to use when contacting session manager.\n"; #else ""; #endif const char *usage_debug = #ifdef DEBUG "\n" " --debug Print generic debug messages.\n" " --debug-z Print debug messages regarding window stacking.\n"; #else ""; #endif printf(_("Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s" " --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s" " --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib by default.\n" " MAIL=URL Location of your mailbox. If the schema is omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, " "support requests, comments...\n"), argv0, usage_client_id, usage_debug); exit(0); } #endif int main(int argc, char **argv) { YLocale locale; for (char ** arg = argv + 1; arg < argv + argc; ++arg) { if (**arg == '-') { #ifdef DEBUG if (IS_LONG_SWITCH("debug")) debug = true; else if (IS_LONG_SWITCH("debug-z")) debug_z = true; #endif #ifndef NO_CONFIGURE char *value; if ((value = GET_LONG_ARGUMENT("config")) != NULL || (value = GET_SHORT_ARGUMENT("c")) != NULL) configArg = newstr(configFile = newstr(value)); else if ((value = GET_LONG_ARGUMENT("theme")) != NULL || (value = GET_SHORT_ARGUMENT("t")) != NULL) overrideTheme = value; else if (IS_LONG_SWITCH("restart")) restart = true; else if (IS_LONG_SWITCH("replace")) replace_wm = true; else if (IS_SWITCH("v", "version")) print_version(); else if (IS_SWITCH("h", "help")) print_usage(my_basename(argv[0])); #endif } } #ifndef NO_CONFIGURE { cfoption theme_prefs[] = { OSV("Theme", &themeName, "Theme name"), OK0() }; YConfig::findLoadConfigFile(theme_prefs, "preferences"); YConfig::findLoadConfigFile(theme_prefs, "theme"); } if (overrideTheme) themeName = newstr(overrideTheme); #endif YWMApp app(&argc, &argv); #ifdef CONFIG_GUIEVENTS app.signalGuiEvent(geStartup); #endif manager->manageClients(); int rc = app.mainLoop(); #ifdef CONFIG_GUIEVENTS app.signalGuiEvent(geShutdown); #endif manager->unmanageClients(); unregisterProtocols(); #ifndef LITE YIcon::freeIcons(); #endif #ifndef NO_CONFIGURE freeConfiguration(); #endif #ifndef NO_WINDOW_OPTIONS delete defOptions; defOptions = 0; delete hintOptions; hintOptions = 0; #endif return rc; } void YWMApp::doLogout() { if (!confirmLogout) logout(); else { #ifndef LITE if (fLogoutMsgBox == 0) { YMsgBox *msgbox = new YMsgBox(YMsgBox::mbOK|YMsgBox::mbCancel); fLogoutMsgBox = msgbox; msgbox->setTitle(_("Confirm Logout")); msgbox->setText(_("Logout will close all active applications.\nProceed?")); msgbox->autoSize(); msgbox->setMsgBoxListener(this); msgbox->showFocused(); } #else logout(); #endif } } void YWMApp::logout() { if (logoutCommand && logoutCommand[0]) { runCommand(logoutCommand); #ifdef CONFIG_SESSION } else if (haveSessionManager()) { smRequestShutdown(); #endif } else { manager->wmCloseSession(); // should we always do this?? manager->exitAfterLastClient(true); } if (logoutMenu) { logoutMenu->disableCommand(actionLogout); logoutMenu->enableCommand(actionCancelLogout); } } void YWMApp::cancelLogout() { rebootOrShutdown = 0; if (logoutCancelCommand && logoutCancelCommand[0]) { runCommand(logoutCancelCommand); #ifdef CONFIG_SESSION } else if (haveSessionManager()) { // !!! this doesn't work smCancelShutdown(); #endif } else { // should we always do this?? manager->exitAfterLastClient(false); } if (logoutMenu) { logoutMenu->enableCommand(actionLogout); logoutMenu->disableCommand(actionCancelLogout); } } void YWMApp::handleMsgBox(YMsgBox *msgbox, int operation) { if (msgbox == fLogoutMsgBox && fLogoutMsgBox) { if (fLogoutMsgBox) { manager->unmanageClient(fLogoutMsgBox->handle()); fLogoutMsgBox = 0; } if (operation == YMsgBox::mbOK) { logout(); } } } icewm-1.3.7/src/yxembed.h0000644000076600007660000000133411463274240014223 0ustar develdevel#ifndef __YXEMBED_H #define __YXEMBED_H #include "yarray.h" #include "ywindow.h" class YXEmbedClient; class YXEmbed: public YWindow { public: YXEmbed(YWindow *aParent = 0); virtual ~YXEmbed(); // YObjectArray fClients; // YXEmbedClient *manage(YXEmbed *embedder, Window win); virtual void destroyedClient(Window /*win*/) = 0; virtual void handleClientUnmap(Window win) = 0; }; class YXEmbedClient: public YWindow { public: YXEmbedClient(YXEmbed *embedder, YWindow *aParent = 0, Window win = 0); virtual ~YXEmbedClient(); void handleDestroyWindow(const XDestroyWindowEvent &destroyWindow); void handleUnmap(const XUnmapEvent &unmap); private: YXEmbed *fEmbedder; }; #endif icewm-1.3.7/src/icesound.cc0000644000076600007660000007573511463274240014555 0ustar develdevel/* * IceWM - IceSound * * Based on IceWM code * Copyright (C) 1997-2001 Marko Macek * Copyright (C) 2001 The Authors of IceWM * * 2000-02-13: Christian W. Zuckschwerdt * 2000-08-08: Playback throttling. E.g. switch though * multiple workspaces and get a single sound * 2000-10-02: Support for (pre-loaded) server samples (ESounD only) * Removed forking of esd calls * 2000-12-11: merged patch by Marius Gedminas * 2000-12-16: merged patch by maxim@macomnet.ru * portable way to rip the children * 2001-01-15: merged with IceWM release 1.0.6 * 2001-01-24: Capt Tara Malina * Added Y sound support, fixed command line parsing bugs, * fixed conditional and loop braket compiler warnings, * diversified multiple sound system target support, improved * command line argument parsing and handling, fixed * multiple module referancing of global resources (in this * module), diversified ESounD resource referances handling, * added comments, fixed main() return, fixed signal watching * to handle SIGTERM (removed SIGKILL since that is never sent). * 2001-03-12: Mathias Hasselmann * GNUified usage message, prepared for NLS, minor cleanups, * made arguments case sensitive, converted into a C++ * application * * TODO: a virtual YAudioInterface class the OSS, ESD and YIFF implement * * for now get latest patches as well as sound and cursor themes at * http://triq.net/icewm/ * * Sound output interface types and notes: * * OSS Open Sound Source (generic) * Y Y sound systems * ESounD Enlightenment Sound Daemon (uses caching and *throttling) * * `*' Throttling is max. one sample every 500ms. Comments? */ #include "config.h" #include "intl.h" #if 1 #define THROW(Result) { rc = (Result); goto exceptionHandler; } #define TRY(Command) { if ((rc = (Command))) THROW(rc); } #define CATCH(Handler) { exceptionHandler: { Handler } return rc; } #endif #ifndef CONFIG_GUIEVENTS #error Configure with "--enable-guievents" #else /* CONFIG_GUIEVENTS */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define GUI_EVENT_NAMES #include "guievent.h" #include "base.h" /* strJoin */ #include "ycmdline.h" /******************************************************************************/ char const * ApplicationName = "icesound"; #define OSS_DEFAULT_DEVICE "/dev/dsp" #define YIFF_DEFAULT_SERVER "127.0.0.1:9433" /****************************************************************************** * IceSound application ******************************************************************************/ class IceSound : public YCommandLine { public: IceSound(int & argc, char **& argv): YCommandLine(argc, argv), dpyname(NULL) { ApplicationName = my_basename(argv[0]); } static void printUsage(); int run(); protected: virtual char getArgument(char const * const & arg, char const *& val); virtual int setOption(char const * arg, char opt, char const * val); virtual int setArgument(int, char const *) { return 0; } public: static char const * samples; static bool verbose; static volatile bool running; private: static void exit(); static void exit(int sig); static void hup(int sig); static void chld(int sig); char const * dpyname; static class YAudioInterface * audio; }; /****************************************************************************** * A generic audio interface ******************************************************************************/ class YAudioInterface { public: virtual ~YAudioInterface() {} virtual int init(int & argc, char **& argv) = 0; virtual void play(int sid) = 0; virtual void reload() {} virtual void idle() {} /** * Finds a filename for sample with the specified id. * Returns NULL on error or the the full path to the sample file. * The string returned has to be freed by the caller */ char * findSample(int sid) { char basefname[1024]; strcpy(basefname, gui_events[sid].name); strcat(basefname, ".wav"); return findSample(basefname); } char * findSample(char const * basefname); }; /** * Finds the sample specified. * Returns NULL on error or the the full path to the sample file. * The string returned has to be freed by the caller */ char * YAudioInterface::findSample(char const * basefname) { static char const * paths[] = { IceSound::samples, cstrJoin(getenv("HOME"), "/.icewm/sounds/", NULL), cstrJoin(CFGDIR, "/sounds/", NULL), cstrJoin(LIBDIR, "/sounds/", NULL) }; for(unsigned i(0); i < ACOUNT(gui_events); i++) for (unsigned n(0); n < ACOUNT(paths); ++n) if(paths[n] != NULL) { char * filename = cstrJoin(paths[n], basefname, NULL); if (access(filename, R_OK) == 0) return filename; delete[] filename; } return NULL; } /****************************************************************************** * General (OSS) audio interface ******************************************************************************/ class YOSSAudio : public YAudioInterface { public: YOSSAudio(): device(OSS_DEFAULT_DEVICE) {} virtual void play(int sound); virtual int init(int & argc, char **& argv); private: friend class CommandLine; class CommandLine : public YCommandLine { public: CommandLine(int & argc, char **& argv, YOSSAudio & oss): YCommandLine(argc, argv), oss(oss) {} virtual char getArgument(char const * const & arg, char const *& val) { char const * larg(arg[1] == '-' ? arg + 2 : arg + 1); if (!strpcmp(larg, "device")) { val = getValue(arg, strchr(arg, '=')); return 'D'; } if (strchr("D", arg[1])) { val = getValue(arg, arg[2] ? arg + 2 : NULL); return arg[1]; } return '\0'; } virtual int setOption(char const * arg, char opt, char const * val) { switch(opt) { case 'D': // ======================================== device === oss.device = val; return 0; default: return YCommandLine::setOption(arg, opt, val); } } protected: YOSSAudio & oss; }; friend class CommandLine; char const * device; }; /** * Play a sound sample directly to the digital signal processor. */ void YOSSAudio::play(int sound) { if (device == NULL) return; for(unsigned i(0); i < ACOUNT(gui_events); i++) if(gui_events[i].type == sound) { char * samplefile(findSample(i)); #ifndef DEBUG if (IceSound::verbose) #endif msg(_("Playing sample #%d (%s)"), sound, samplefile); if (samplefile) { int ifd(open(samplefile, O_RDONLY)); if(ifd == -1) { warn("%s: %s", samplefile, strerror(errno)); return; } int ofd(open(device, O_WRONLY)); if(ofd == -1) { warn("%s: %s", device, strerror(errno)); close(ifd); return; } if (IceSound::verbose) msg("TODO: adjust audio format"); // !!! #ifdef DEBUG msg("copying sound %s to %s\n", samplefile, device); #endif delete[] samplefile; char sbuf[4096]; for (int n; (n = read(ifd, sbuf, sizeof(sbuf))) > 0; ) write(ofd, sbuf, n); close(ofd); close(ifd); } } } int YOSSAudio::init(int & argc, char **& argv) { int rc(0); TRY(CommandLine(argc, argv, *this).parse()) if (access(device, W_OK) != 0) { warn(_("No such device: %s"), device); THROW(3) } CATCH(/**/) } /****************************************************************************** * Enlightenment Sound Daemon audio interface ******************************************************************************/ #ifdef ENABLE_ESD #include class YESDAudio : public YAudioInterface { public: YESDAudio(): speaker(getenv("ESPEAKER")), socket(-1) { for (unsigned i = 0; i < ACOUNT(sample); ++i) sample[i] = -1; } virtual ~YESDAudio() { unloadSamples(); if (socket > -1) esd_close(socket); } virtual void play(int sound); virtual void reload() { unloadSamples(); uploadSamples(); } private: unsigned uploadSamples(); unsigned unloadSamples(); int uploadSample(int sound, char const * path); virtual int init(int & argc, char **& argv); private: friend class CommandLine; class CommandLine : public YCommandLine { public: CommandLine(int & argc, char **& argv, YESDAudio & esd): YCommandLine(argc, argv), esd(esd) {} virtual char getArgument(char const * const & arg, char const *& val) { char const * larg(arg[1] == '-' ? arg + 2 : arg + 1); if (!(strpcmp(larg, "server") && strpcmp(larg, "speaker"))) { val = getValue(arg, strchr(arg, '=')); return 'S'; } if (strchr("S", arg[1])) { val = getValue(arg, arg[2] ? arg + 2 : NULL); return arg[1]; } return '\0'; } virtual int setOption(char const * arg, char opt, char const * val) { switch(opt) { case 'S': // ======================================= speaker === esd.speaker = val; return 0; default: return YCommandLine::setOption(arg, opt, val); } } private: YESDAudio & esd; }; protected: friend class CommandLine; char const * speaker; int sample[ACOUNT(gui_events)]; // cache sample ids int socket; // socket to ESound Daemon }; int YESDAudio::init(int & argc, char **& argv) { int rc(0); TRY(CommandLine(argc, argv, *this).parse()) if ((socket = esd_open_sound(speaker)) == -1) { warn(_("Can't connect to ESound daemon: %s"), speaker ? speaker : _("")); THROW(3); } CATCH( uploadSamples(); ) } /** * Upload a sample in the ESounD server. * Returns sample ID or negative on error. */ int YESDAudio::uploadSample(int sound, char const * path) { if(socket < 0) return -1; int rc(esd_file_cache(socket, ApplicationName, path)); if(rc < 0) msg(_("Error <%d> while uploading `%s:%s'"), rc, ApplicationName, path); else { sample[sound] = rc; if (IceSound::verbose) msg(_("Sample <%d> uploaded as `%s:%s'"), rc, ApplicationName, path); } return rc; } /** * Unload all samples from the ESounD server. * Returns number of samples catched. */ unsigned YESDAudio::unloadSamples() { if(socket < 0) return 0; unsigned cnt(0); for(unsigned i(0); i < ACOUNT(gui_events); ++i) if(sample[i] > 0) { esd_sample_free(socket, sample[i]); cnt++; } return cnt; } /** * Upload all samples into the EsounD server. * Returns the number of loaded samples. */ unsigned YESDAudio::uploadSamples() { if(socket < 0) return 0; unsigned cnt(0); for(unsigned i(0); i < ACOUNT(gui_events); i++) { char * samplefile(findSample(i)); if (samplefile != NULL) { if (uploadSample(i, samplefile) >= 0) ++cnt; delete[] samplefile; } } return cnt; } /** * Play a cached sound sample using ESounD. */ void YESDAudio::play(int sound) { if (socket < 0) return; for(unsigned i(0); i < ACOUNT(gui_events); i++) if(gui_events[i].type == sound) { #ifndef DEBUG if (IceSound::verbose) #endif msg(_("Playing sample #%d"), i); if(sample[i] > 0) esd_sample_play(socket, sample[i]); } } #endif /* ENABLE_ESD */ /* *************************** Y Section ************************** */ /* If ENABLE_YIFF is defined then the Y2 header files will be included * and the functions for Y server interfacing will be declared here * in this section. */ #ifdef ENABLE_YIFF #include #include class YY2Audio : public YAudioInterface { public: YY2Audio(): server(NULL), recorder(getenv("RECORDER")), mode(NULL), matchMode(false) { } virtual ~YY2Audio() { if (server) YCloseConnection(server, False); } virtual void play(int sound); virtual int init(int & argc, char **& argv); virtual void idle(); void listAudioModes(); void play(char const * path, Coefficient lVol = 1.0, Coefficient rVol = 1.0); private: friend class CommandLine; class CommandLine : public YCommandLine { public: CommandLine(int & argc, char **& argv, YY2Audio & yiff): YCommandLine(argc, argv), yiff(yiff) {} virtual char getArgument(char const * const & arg, char const *& val) { char const * larg(arg[1] == '-' ? arg + 2 : arg + 1); if (!(strpcmp(larg, "server") && strpcmp(larg, "recorder"))) { val = getValue(arg, strchr(arg, '=')); return 'S'; } else if (!strpcmp(larg, "audio-mode")) { val = getValue(arg, strchr(arg, '=')); return 'm'; } else if (!strcmp(larg, "audio-mode-auto")) return 'A'; if (strchr("Srm", arg[1])) { val = getValue(arg, arg[2] ? arg + 2 : NULL); return arg[1]; } return '\0'; } virtual int setOption(char const * arg, char opt, char const * val); private: YY2Audio & yiff; }; protected: YConnection *server; // Connection to Y server char const * recorder; // Address:port string char const *mode; // Audio mode name bool matchMode; // Automantically adjust audio mode }; int YY2Audio::init(int & argc, char **& argv) { YConnection * con(NULL); int rc(0); TRY(CommandLine(argc, argv, *this).parse()) if (recorder == NULL) recorder = YIFF_DEFAULT_SERVER; con = YOpenConnection(NULL, recorder); if (NULL == con) { warn(_("Can't connect to YIFF server: %s"), recorder ? recorder : _("")); THROW(3); } if(mode != NULL && YChangeAudioModePreset(con, mode)) warn(_("Can't change to audio mode `%s'."), mode); /* Now set descriptor to server, this is incase a SIGHUP * or other async event occured during initialization. */ server = con; CATCH(/**/) } /** * Prints list of preset Audio modes on the Y server. */ void YY2Audio::listAudioModes() { if (recorder == NULL) recorder = YIFF_DEFAULT_SERVER; YConnection * con(YOpenConnection(NULL, recorder)); if (con) { YAudioModeValuesStruct ** modes; int num; if ((modes = YGetAudioModes(con, &num)) != NULL) { for (int i(0); i < num; ++i) { YAudioModeValuesStruct * m_ptr(modes[i]); if(m_ptr != NULL) printf("%s: %i Hz, %i bits, %i ch\n", m_ptr->name, m_ptr->sample_rate, m_ptr->sample_size, m_ptr->channels); } YFreeAudioModesList(modes, num); } YCloseConnection(con, False); } else warn(_("Can't connect to YIFF server: %s"), recorder ? recorder : _("")); } void YY2Audio::play(int sound) { for(unsigned i(0); i < ACOUNT(gui_events); i++) if(gui_events[i].type == sound) { char * samplefile(findSample(i)); if (samplefile != NULL) { #ifndef DEBUG if (IceSound::verbose) #endif msg(_("Playing sample #%d (%s)"), sound, samplefile); play(samplefile); delete[] samplefile; } } } /** * Plays the specified path on the Y server. */ void YY2Audio::play(char const * path, Coefficient lVol, Coefficient rVol) { if(server == NULL || path == NULL) return; lVol = max(lVol, 0.0); rVol = max(rVol, 0.0); if(matchMode) { YEventSoundObjectAttributes sAttr; YAudioModeValuesStruct **modes; int mCount; if(!YGetSoundObjectAttributes(server, path, &sAttr) && (modes = YGetAudioModes(server, &mCount)) != NULL) { YAudioModeValuesStruct *matchingMode(NULL); for(int i(0); i < mCount && matchingMode == NULL; ++i) { YAudioModeValuesStruct *mPtr(modes[i]); if (mPtr && mPtr->sample_rate == sAttr.sample_rate && mPtr->channels == sAttr.channels && mPtr->sample_size == sAttr.sample_size) matchingMode = mPtr; } if(matchingMode) YChangeAudioModePreset(server, matchingMode->name); else { /* No Audio mode matched, try to set explicit Audio * values. */ long cycle(max(100L, YCalculateCycle (server, sAttr.sample_rate, sAttr.channels, sAttr.sample_size, 4096))); YSetAudioModeValues(server, sAttr.sample_rate, sAttr.channels, sAttr.sample_size, 0, 1, 2, 4096); YSyncAll(server, True); YSetCycle(server, cycle); } YFreeAudioModesList(modes, mCount); } } YEventSoundPlay value; value.flags = YPlayValuesFlagPosition | YPlayValuesFlagTotalRepeats | YPlayValuesFlagVolume; value.position = 0; /* `From the top' */ value.total_repeats = 1; /* Repeat once. */ value.left_volume = lVol; value.right_volume = rVol; YStartPlaySoundObject(server, path, &value); } void YY2Audio::idle() { YEvent yev; while(YGetNextEvent(server, &yev, False) > 0) { switch(yev.type) { case YAudioChange: #ifdef DEBUG if(yev.audio.preset) msg("Y server switched to preset Audio `%s'", yev.audio.mode_name); else msg("Y server changed Audio to: " "%i Hz, %i bits, %i ch, %i bytes\n", yev.audio.sample_rate, yev.audio.sample_size, yev.audio.channels, yev.audio.fragment_size_bytes); #endif /* If we are automatically adjusting the Audio mode and some * other Y client or the Y server itself has changed the Audio then * we should stop automatic changing of Audio mode to prevent * `fighting' with the other Y client or Y server. */ if (mode) { msg(_("Audio mode switch detected, " "initial audio mode `%s' no longer in effect."), mode); mode = NULL; } if (matchMode) { msg(_("Audio mode switch detected, " "automatic audio mode changing disabled.")); matchMode = false; } case YSoundObjectKill: #ifdef DEBUG msg("Y sound object #%ld finished playing.", yev.kill.yid); #endif break; case YDisconnect: #ifdef DEBUG msg("Lost connection to Y server, reason `%d'\n", yev.disconnect.reason); #endif YCloseConnection(server, False); server = NULL; break; case YShutdown: #ifdef DEBUG msg("Y server has shutdown, reason `%i'\n", yev.shutdown.reason); #endif YCloseConnection(server, False); server = NULL; break; } /* Has the Y server been detected to disconnected us or * shutdown in the above event handling? */ IceSound::running = (server != NULL); } } int YY2Audio::CommandLine::setOption(char const * arg, char opt, char const * val) { switch(opt) { case 'S': // ====================================== recorder === case 'r': yiff.recorder = val; return 0; case 'm': // ==================================== audio-mode === if (yiff.mode != NULL) warn(_("Overriding previous audio mode `%s'."), yiff.mode); if (val == NULL || strcmp(val, "?") == 0) { yiff.listAudioModes(); return -1; } yiff.mode = val; return 0; case 'A': // =============================== audio-mode-auto === if (yiff.mode != NULL) warn(_("Overriding previous audio mode `%s'."), yiff.mode); yiff.matchMode = true; return 0; default: return YCommandLine::setOption(arg, opt, val); } } #endif /* ENABLE_YIFF */ /****************************************************************************** * IceSound application ******************************************************************************/ char const * IceSound::samples(NULL); volatile bool IceSound::running(true); bool IceSound::verbose(false); YAudioInterface * IceSound::audio(NULL); /** * Print usage information for icesound */ void IceSound::printUsage() { printf(_("\ Usage: %s [OPTION]...\n\ \n\ Plays audio files on GUI events raised by IceWM.\n\ \n\ Options:\n\ \n\ -d, --display=DISPLAY Display used by IceWM (default: $DISPLAY).\n\ -s, --sample-dir=DIR Specifies the directory which contains\n\ the sound files (ie ~/.icewm/sounds).\n\ -i, --interface=TARGET Specifies the sound output target\n\ interface, one of OSS, YIFF, ESD\n\ -D, --device=DEVICE (OSS only) specifies the digital signal\n\ processor (default /dev/dsp).\n\ -S, --server=ADDR:PORT (ESD and YIFF) specifies server address and\n\ port number (default localhost:16001 for ESD\n\ and localhost:9433 for YIFF).\n\ -m, --audio-mode[=MODE] (YIFF only) specifies the Audio mode (leave\n\ blank to get a list).\n\ --audio-mode-auto (YIFF only) change Audio mode on the fly to\n\ best match sample's Audio (can cause\n\ problems with other Y clients, overrides\n\ --audio-mode).\n\ \n\ -v, --verbose Be verbose (prints out each sound event to\n\ stdout).\n\ -V, --version Prints version information and exits.\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"), ApplicationName); return; } /** * The hearth of icesound */ int IceSound::run() { int rc(0); Display * display(NULL); Window root(None); Atom _GUI_EVENT(None); #ifdef ENABLE_NLS bindtextdomain(PACKAGE, LOCDIR); textdomain(PACKAGE); #endif #ifdef DEBUG msg("Compiled with DEBUG flag. Debugging messages will be printed."); #endif TRY(parse()) signal(SIGINT, exit); // ============================= ensure clean exit === signal(SIGTERM, exit); signal(SIGPIPE, exit); if (audio == NULL) audio = new YOSSAudio(); // ==== init audio interface === if ((rc = audio->init(argc, argv))) { printf("%d\n", rc); THROW(max(rc, 0)) } if(NULL == (display = XOpenDisplay(dpyname))) { // ====== connect to X11 === warn(_("Can't open display: %s. X must be running and $DISPLAY set."), XDisplayName(dpyname)); THROW(3) } root = RootWindow(display, DefaultScreen(display)); _GUI_EVENT = XInternAtom(display, XA_GUI_EVENT_NAME, False); XSelectInput(display, root, PropertyChangeMask); signal(SIGCHLD, chld); // ================================= IPC handlers === signal(SIGHUP, hup); struct timeval last; // ================================= X message loop === gettimeofday(&last, NULL); while(running) { audio->idle(); while (XPending(display)) { XEvent xev; XNextEvent(display, &xev); switch(xev.type) { case PropertyNotify: if (xev.xproperty.atom == _GUI_EVENT && xev.xproperty.state == PropertyNewValue) { Atom type; int format; unsigned long nitems, lbytes; unsigned char *propdata; int gev = -1; if (XGetWindowProperty(display, root, _GUI_EVENT, 0, 3, False, _GUI_EVENT, &type, &format, &nitems, &lbytes, &propdata) == Success && propdata) { gev = *(char *) propdata; XFree(propdata); } /* Recieved restart event? */ if(geRestart == gev) { // ------------ restart event --- #ifdef DEBUG msg("Restart event received"); #endif hup(SIGHUP); } struct timeval now; // ---------------- update timing --- gettimeofday(&now, NULL); if((now.tv_sec - last.tv_sec) >= 2 || ((now.tv_sec - last.tv_sec) * 1000000 + now.tv_usec - last.tv_usec) > 500000) { last = now; audio->play(gev); } } break; } } usleep(10000); } CATCH( if (display) XCloseDisplay(display); if (audio) delete audio; ) } char IceSound::getArgument(char const * const & arg, char const *& val) { char const * larg(arg[1] == '-' ? arg + 2 : arg + 1); if (!strpcmp(larg, "help")) return 'h'; else if (!strcmp(larg, "verbose")) return 'v'; else if (!strcmp(larg, "version")) return 'V'; else if (!strpcmp(larg, "display")) { val = getValue(arg, strchr(arg, '=')); return 's'; } else if (!strpcmp(larg, "sample-dir")) { val = getValue(arg, strchr(arg, '=')); return 's'; } else if (!strpcmp(larg, "interface")) { val = getValue(arg, strchr(arg, '=')); return 'i'; } if (strchr("dsi", arg[1])) { val = getValue(arg, arg[2] ? arg + 2 : NULL); return arg[1]; } return (strchr("h?vV", arg[1]) ? arg[1] : '\0'); } int IceSound::setOption(char const * /*arg*/, char opt, char const * val) { switch(opt) { case '?': // ================================================ --help === case 'h': printUsage(); return 2; case 'V': // ============================================= --version === puts(VERSION); return -1; case 'v': // ============================================= --verbose === verbose = true; break; case 'd': // ============================================= --display === dpyname = val; break; case 's': // ========================================== --sample-dir === samples = val; break; case 'i': // ========================================== --interface ==== if(val != NULL) { if (audio != NULL) warn(_("Multiple sound interfaces given.")); if(!(strcmp(val, "OSS") && strcmp(val, "oss"))) { delete audio; audio = new YOSSAudio(); } else if(!(strcmp(val, "ESD") && strcmp(val, "esd") && strcmp(val, "ESOUND") && strcmp(val, "esound") && strcmp(val, "ESounD"))) { #ifdef ENABLE_ESD delete audio; audio = new YESDAudio(); #else warn(_("Support for the %s interface not compiled."), val); return 2; #endif } else if(!(strcmp(val, "Y") && strcmp(val, "y") && strcmp(val, "Y2") && strcmp(val, "y2") && strcmp(val, "YIFF") && strcmp(val, "yiff"))) { #ifdef ENABLE_YIFF delete audio; audio = new YY2Audio(); #else warn(_("Support for the %s interface not compiled."), val); return 2; #endif } else { warn(_("Unsupported interface: %s."), val); return 2; } } break; } return 0; } /** * Signal handler. */ void IceSound::exit(int sig) { signal(sig, SIG_DFL); msg(_("Received signal %d: Terminating..."), sig); running = false; } /** * SIGHUP signal handler, restarts and reloads data. */ void IceSound::hup(int sig) { if (sig == SIGHUP) { msg(_("Received signal %d: Reloading samples..."), sig); if (audio) audio->reload(); } else msg("Internal error: Received signal %i is not SIGHUP", sig); } /** * SIGCHLD signal handler. */ void IceSound::chld(int sig) { if(sig == SIGCHLD) { pid_t pid; int stat; while((pid = waitpid(-1, &stat, WNOHANG)) > 0) { #ifdef DEBUG msg("Child %d terminated", pid); #endif } } else msg("Internal error: Received signal %i is not SIGCHLD", sig); } int main(int argc, char *argv[]) { return IceSound(argc, argv).run(); } #endif icewm-1.3.7/src/wmdialog.cc0000644000076600007660000001553311463274240014535 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek * * Dialogs */ #include "config.h" #include "ykey.h" #include "wmdialog.h" #include "wmaction.h" #include "yactionbutton.h" #include "prefs.h" #include "wmapp.h" #include "wmmgr.h" #include "yrect.h" #include "sysdep.h" #include "intl.h" bool canLock() { if (lockCommand == 0 || lockCommand[0] == 0) return false; // else-case. Defined, but check whether it's executable first char *copy = strdup(lockCommand); char *term = strchr(copy, ' '); if (term) *term = 0x0; term = strchr(copy, '\t'); if (term) *term = 0x0; upath whereis = findPath(getenv("PATH"), X_OK, copy); if (whereis != null) { free(copy); return true; } free(copy); return false; } bool canShutdown(bool reboot) { if (!reboot) if (shutdownCommand == 0 || shutdownCommand[0] == 0) return false; if (reboot) if (rebootCommand == 0 || rebootCommand[0] == 0) return false; if (logoutCommand && logoutCommand[0]) return false; #ifdef CONFIG_SESSION if (smapp->haveSessionManager()) return false; #endif return true; } #ifndef LITE #define HORZ 10 #define MIDH 10 #define VERT 10 #define MIDV 6 static YColor *cadBg = 0; CtrlAltDelete *ctrlAltDelete = 0; CtrlAltDelete::CtrlAltDelete(YWindow *parent): YWindow(parent) { int w = 0, h = 0; YButton *b; if (cadBg == 0) cadBg = new YColor(clrDialog); setStyle(wsOverrideRedirect); setPointer(YXApplication::leftPointer); setToplevel(true); b = lockButton = new YActionButton(this); b->setText(_("Loc_k Workstation"), -2); if (b->width() > w) w = b->width(); if (b->height() > h) h = b->height(); b->setActionListener(this); b->show(); b = logoutButton = new YActionButton(this); b->setText(_("_Logout..."), -2); if (b->width() > w) w = b->width(); if (b->height() > h) h = b->height(); b->setActionListener(this); b->show(); b = cancelButton = new YActionButton(this); b->setText(_("_Cancel"), -2); if (b->width() > w) w = b->width(); if (b->height() > h) h = b->height(); b->setActionListener(this); b->show(); b = restartButton = new YActionButton(this); b->setText(_("_Restart icewm"), -2); if (b->width() > w) w = b->width(); if (b->height() > h) h = b->height(); b->setActionListener(this); b->show(); b = rebootButton = new YActionButton(this); b->setText(_("Re_boot"), -2); if (b->width() > w) w = b->width(); if (b->height() > h) h = b->height(); b->setActionListener(this); b->show(); b = shutdownButton = new YActionButton(this); b->setText(_("Shut_down"), -2); if (b->width() > w) w = b->width(); if (b->height() > h) h = b->height(); b->setActionListener(this); b->show(); b = aboutButton = new YActionButton(this); b->setText(_("_About"), -2); if (b->width() > w) w = b->width(); if (b->height() > h) h = b->height(); b->setActionListener(this); b->show(); b = windowListButton = new YActionButton(this); b->setText(_("_Window list"), -2); if (b->width() > w) w = b->width(); if (b->height() > h) h = b->height(); b->setActionListener(this); b->show(); if (!canShutdown(true)) rebootButton->setEnabled(false); if (!canShutdown(false)) shutdownButton->setEnabled(false); if (!canLock()) lockButton->setEnabled(false); setSize(HORZ + w + MIDH + w + MIDH + w + HORZ, VERT + h + MIDV + h + MIDV + h + VERT); int dx, dy, dw, dh; manager->getScreenGeometry(&dx, &dy, &dw, &dh); setPosition(dx + (dw - width()) / 2, dy + (dh - height()) / 2); lockButton->setGeometry(YRect(HORZ, VERT, w, h)); logoutButton->setGeometry(YRect(HORZ, VERT + h + MIDV, w, h)); cancelButton->setGeometry(YRect(HORZ + w + MIDH + w + MIDH, VERT, w, h)); rebootButton->setGeometry(YRect(HORZ + w + MIDH, VERT + h + MIDV, w, h)); shutdownButton->setGeometry(YRect(HORZ + w + MIDH + w + MIDH, VERT + h + MIDV, w, h)); windowListButton->setGeometry(YRect(HORZ, VERT + 2 * (h + MIDV), w, h)); restartButton->setGeometry(YRect(HORZ + w + MIDH, VERT + 2 * (h + MIDV), w, h)); aboutButton->setGeometry(YRect(HORZ + w + MIDH + w + MIDH, VERT + 2 * (h + MIDV), w, h)); } CtrlAltDelete::~CtrlAltDelete() { delete lockButton; lockButton = 0; delete logoutButton; logoutButton = 0; delete restartButton; restartButton = 0; delete cancelButton; cancelButton = 0; delete rebootButton; rebootButton = 0; delete shutdownButton; shutdownButton = 0; delete aboutButton; aboutButton = 0; delete windowListButton; windowListButton = 0; } void CtrlAltDelete::paint(Graphics &g, const YRect &/*r*/) { #ifdef CONFIG_GRADIENTS YSurface surface(cadBg, logoutPixmap, logoutPixbuf); #else YSurface surface(cadBg, logoutPixmap); #endif g.setColor(surface.color); g.drawSurface(surface, 1, 1, width() - 2, height() - 2); g.draw3DRect(0, 0, width() - 1, height() - 1, true); } void CtrlAltDelete::actionPerformed(YAction *action, unsigned int /*modifiers*/) { deactivate(); if (action == lockButton) { if (lockCommand && lockCommand[0]) app->runCommand(lockCommand); } else if (action == logoutButton) { manager->doWMAction(ICEWM_ACTION_LOGOUT); } else if (action == cancelButton) { // !!! side-effect, not really nice manager->doWMAction(ICEWM_ACTION_CANCEL_LOGOUT); } else if (action == restartButton) { wmapp->restartClient(0, 0); } else if (action == shutdownButton) { manager->doWMAction(ICEWM_ACTION_SHUTDOWN); } else if (action == rebootButton) { manager->doWMAction(ICEWM_ACTION_REBOOT); } else if (action == aboutButton) { manager->doWMAction(ICEWM_ACTION_ABOUT); } else if (action == windowListButton) { manager->doWMAction(ICEWM_ACTION_WINDOWLIST); } } bool CtrlAltDelete::handleKey(const XKeyEvent &key) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); int m = KEY_MODMASK(key.state); if (key.type == KeyPress) { if (k == XK_Escape && m == 0) { deactivate(); return true; } } return YWindow::handleKey(key); } void CtrlAltDelete::activate() { raise(); show(); if (!xapp->grabEvents(this, None, ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | EnterWindowMask | LeaveWindowMask, 1, 1, 1)) hide(); else { lockButton->requestFocus(true); } } void CtrlAltDelete::deactivate() { xapp->releaseEvents(); hide(); XSync(xapp->display(), False); //manager->setFocus(manager->getFocus()); } #endif icewm-1.3.7/src/wmdialog.h0000644000076600007660000000161411463274240014372 0ustar develdevel#ifndef __WMDIALOG_H #define __WMDIALOG_H #include "ywindow.h" #include "yaction.h" class YActionButton; class CtrlAltDelete: public YWindow, public YActionListener { public: CtrlAltDelete(YWindow *parent); virtual ~CtrlAltDelete(); virtual void paint(Graphics &g, const YRect &r); virtual bool handleKey(const XKeyEvent &key); virtual void actionPerformed(YAction *action, unsigned int modifiers); void activate(); void deactivate(); private: YActionButton *lockButton; YActionButton *logoutButton; YActionButton *restartButton; YActionButton *cancelButton; YActionButton *rebootButton; YActionButton *shutdownButton; YActionButton *aboutButton; YActionButton *windowListButton; }; extern CtrlAltDelete *ctrlAltDelete; // !!! remove extern ref logoutPixmap; #ifdef CONFIG_GRADIENTS extern ref logoutPixbuf; #endif #endif icewm-1.3.7/src/ypixmap.h0000664000076600007660000000264011463274240014260 0ustar develdevel#ifndef __YPIXMAP_H #define __YPIXMAP_H #include "ref.h" #include "ylib.h" #include "upath.h" class YImage; class YPixmap: public virtual refcounted { public: static ref create(int w, int h, bool mask = false); static ref load(upath filename); // static ref scale(ref source, int width, int height); static ref createFromImage(ref image); static ref createFromPixmapAndMask(Pixmap pixmap, Pixmap mask, int w, int h); #if 1 static ref createFromPixmapAndMaskScaled(Pixmap pix, Pixmap mask, int width, int height, int nw, int nh); #endif #if 1 void replicate(bool horiz, bool copyMask); #endif #if 1 Pixmap pixmap() const { return fPixmap; } Pixmap mask() const { return fMask; } #endif int width() const { return fWidth; } int height() const { return fHeight; } ref scale(int w, int h); protected: YPixmap(Pixmap pixmap, Pixmap mask, int w, int h) { fPixmap = pixmap; fMask = mask; fWidth = w; fHeight = h; } virtual ~YPixmap(); friend class YImage; private: int fWidth; int fHeight; #if 1 Pixmap fPixmap; Pixmap fMask; #endif }; #endif icewm-1.3.7/src/yscrollview.h0000644000076600007660000000157311463274240015155 0ustar develdevel#ifndef __YSCROLLVIEW_H #define __YSCROLLVIEW_H #include "ywindow.h" class YScrollBar; class YScrollable { public: virtual int contentWidth() = 0; virtual int contentHeight() = 0; virtual YWindow *getWindow() = 0; // !!! hack ? protected: virtual ~YScrollable() {}; }; class YScrollView: public YWindow { public: YScrollView(YWindow *aParent); virtual ~YScrollView(); void setView(YScrollable *l); YScrollBar *getVerticalScrollBar() { return scrollVert; } YScrollBar *getHorizontalScrollBar() { return scrollHoriz; } YScrollable *getScrollable() { return scrollable; } void layout(); virtual void configure(const YRect &r); virtual void paint(Graphics &g, const YRect &r); protected: void getGap(int &dx, int &dy); private: YScrollable *scrollable; YScrollBar *scrollVert; YScrollBar *scrollHoriz; }; #endif icewm-1.3.7/src/ylocale.cc0000644000076600007660000001101011463274240014344 0ustar develdevel/* * IceWM - C++ wrapper for locale/unicode conversion * Copyright (C) 2001 The Authors of IceWM * * Released under terms of the GNU Library General Public License * * 2001/07/21: Mathias Hasselmann * - initial revision */ #include "config.h" #include "ylocale.h" #include "base.h" #include "intl.h" #include #ifdef CONFIG_I18N #include #include #include #include #include #include #endif #include "ylib.h" #include "yprefs.h" #ifdef CONFIG_I18N YLocale * YLocale::instance(NULL); #endif #ifndef CONFIG_I18N YLocale::YLocale(char const * ) { #else YLocale::YLocale(char const * localeName) { assert(NULL == instance); instance = this; if (NULL == (fLocaleName = setlocale(LC_ALL, localeName)) /* || False == XSupportsLocale()*/) { warn(_("Locale not supported by C library. " "Falling back to 'C' locale'.")); fLocaleName = setlocale(LC_ALL, "C"); } #warning "P1 should always use multibyte/fontset if I18N" multiByte = (MB_CUR_MAX > 1); char const * codeset = NULL; int const codesetItems[] = { CONFIG_NL_CODESETS }; for (unsigned int i = 0; i < sizeof(codesetItems)/sizeof(int) - 1 && NULL != (codeset = nl_langinfo(codesetItems[i])) && '\0' == *codeset; ++i) {} if (NULL == codeset || '\0' == *codeset) { warn(_("Failed to determinate the current locale's codeset. " "Assuming ISO-8859-1.\n")); codeset = "ISO-8859-1"; } union { int i; char c[sizeof(int)]; } endian; endian.i = 1; MSG(("locale: %s, MB_CUR_MAX: %d, " "multibyte: %d, codeset: %s, endian: %c", fLocaleName, MB_CUR_MAX, multiByte, codeset, endian.c ? 'b' : 'l')); /// TODO #warning "this is getting way too complicated" char const * unicodeCharsets[] = { #ifdef CONFIG_UNICODE_SET CONFIG_UNICODE_SET, #endif // "WCHAR_T//TRANSLIT", (*endian.c ? "UCS-4LE//TRANSLIT" : "UCS-4BE//TRANSLIT"), // "WCHAR_T", (*endian.c ? "UCS-4LE" : "UCS-4BE"), "UCS-4//TRANSLIT", "UCS-4", NULL }; char const * localeCharsets[] = { cstrJoin(codeset, "//TRANSLIT", NULL), codeset, NULL }; char const ** ucs(unicodeCharsets); if ((iconv_t) -1 == (toUnicode = getConverter (localeCharsets[1], ucs))) die(1, _("iconv doesn't supply (sufficient) " "%s to %s converters."), localeCharsets[1], "Unicode"); MSG(("toUnicode converts from %s to %s", localeCharsets[1], *ucs)); char const ** lcs(localeCharsets); if ((iconv_t) -1 == (toLocale = getConverter (*ucs, lcs))) die(1, _("iconv doesn't supply (sufficient) " "%s to %s converters."), "Unicode", localeCharsets[1]); MSG(("toLocale converts from %s to %s", *ucs, *lcs)); delete[] localeCharsets[0]; #endif #ifdef ENABLE_NLS bindtextdomain(PACKAGE, LOCDIR); textdomain(PACKAGE); #endif } YLocale::~YLocale() { #ifdef CONFIG_I18N instance = NULL; if ((iconv_t) -1 != toUnicode) iconv_close(toUnicode); if ((iconv_t) -1 != toLocale) iconv_close(toLocale); #endif } #ifdef CONFIG_I18N iconv_t YLocale::getConverter (const char *from, const char **&to) { iconv_t cd = (iconv_t) -1; while (NULL != *to) if ((iconv_t) -1 != (cd = iconv_open(*to, from))) return cd; else ++to; return (iconv_t) -1; } /* YLChar * YLocale::localeString(YUChar const * uStr) { YLChar * lStr(NULL); return lStr; } */ YUChar *YLocale::unicodeString(const YLChar *lStr, size_t const lLen, size_t & uLen) { PRECONDITION(instance != NULL); if (NULL == lStr) return NULL; YUChar * uStr(new YUChar[lLen + 1]); char * inbuf((char *) lStr), * outbuf((char *) uStr); size_t inlen(lLen), outlen(4 * lLen); if (0 > (int) iconv(instance->toUnicode, &inbuf, &inlen, &outbuf, &outlen)) warn(_("Invalid multibyte string \"%s\": %s"), lStr, strerror(errno)); *((YUChar *) outbuf) = 0; uLen = ((YUChar *) outbuf) - uStr; return uStr; } #endif const char *YLocale::getLocaleName() { #ifdef CONFIG_I18N return instance->fLocaleName; #else return "C"; #endif } int YLocale::getRating(const char *localeStr) { const char *s1 = getLocaleName(); const char *s2 = localeStr; while (*s1 && *s1++ == *s2++) {} if (*s1) while (--s2 > localeStr && !strchr("_@.", *s2)) {} return s2 - localeStr; } icewm-1.3.7/src/ypixbuf.cc0000644000076600007660000013170311463274240014416 0ustar develdevel/* * IceWM - Implementation of a RGB pixel buffer encapsulating * libxpm and Imlib plus a scaler for RGB pixel buffers * * Copyright (C) 2002 The Authors of IceWM * * Released under terms of the GNU Library General Public License * * 2001/07/06: Mathias Hasselmann * - added 12bpp converters * * 2001/07/05: Mathias Hasselmann * - fixed some 24bpp oddities * * 2001/06/12: Mathias Hasselmann * - 8 bit alpha channel for libxpm version * * 2001/06/10: Mathias Hasselmann * - support for 8 bit alpha channels * - from-drawable-constructor for Imlib version * * 2001/06/03: Mathias Hasselmann * - libxpm version finished (expect for dithering and 8 bit visuals) * * 2001/05/30: Mathias Hasselmann * - libxpm support * * 2001/05/18: Mathias Hasselmann * - initial revision (Imlib only) */ #include "config.h" #include "ypixbuf.h" #include #include typedef unsigned char Pixel; #if 0 #include "base.h" #include "yxapp.h" #include "yprefs.h" #include "default.h" #include "intl.h" #include "X11/X.h" #if SIZEOF_CHAR == 1 typedef signed char yint8; typedef unsigned char yuint8; #else #error Need typedefs for 8 bit data types #endif #if SIZEOF_SHORT == 2 typedef signed short yint16; typedef unsigned short yuint16; #else #error Need typedefs for 16 bit data types #endif #if SIZEOF_INT == 4 typedef signed yint32; typedef unsigned yuint32; #elif SIZEOF_LONG == 4 typedef signed long yint32; typedef unsigned long yuint32; #else #error Need typedefs for 32 bit data types #endif /******************************************************************************/ #define CHANNEL_MASK(I,R,G,B) \ ((I).red_mask == (R) && (I).green_mask == (G) && (I).blue_mask == (B)) /******************************************************************************/ #ifdef CONFIG_XPM #include bool YPixbuf::init() { return false; } #endif /******************************************************************************/ #ifdef CONFIG_IMLIB bool YPixbuf::init() { gdk_pixbuf_xlib_init(xapp->display(), xapp->screen()); if (true) { ImlibInitParams parms; parms.flags = PARAMS_IMAGECACHESIZE | PARAMS_PIXMAPCACHESIZE | PARAMS_VISUALID; parms.imagecachesize = 0; parms.pixmapcachesize = 0; parms.visualid = xapp->visual()->visualid; } return true; } #endif /******************************************************************************/ #endif #if 1 /****************************************************************************** * A scaler for Grayscale/RGB/RGBA pixel buffers ******************************************************************************/ typedef unsigned long fixed; static fixed const fUnit = 1L << 12; static fixed const fPrec = 12; enum { R, G, B, A }; template class YScaler { public: YScaler(Pixel const * src, unsigned const sStep, unsigned const sw, unsigned const sh, Pixel * dst, unsigned const dStep, unsigned const dw, unsigned const dh); protected: YScaler() {} }; /******************************************************************************/ template struct YColumnAccumulator : public YScaler { YColumnAccumulator(Pixel const * src, unsigned const sLen, Pixel * dst, unsigned const dLen) { unsigned long acc(0), accL(0), accR(0), accG(0), accB(0), accA(0); unsigned const inc(dLen), unit(sLen); for (unsigned n(0); n < sLen; ++n, src+= Channels) { if ((acc+= inc) >= unit) { acc-= unit; fixed const p((acc << fPrec) / unit); fixed const q(fUnit - p); if (Channels == 1) { accA+= p * *src; accL+= p; *dst = accA / accL; accA = q * *src; } else if (Channels == 3) { accR+= p * src[R]; accG+= p * src[G]; accB+= p * src[B]; accL+= p; dst[R] = accR / accL; dst[G] = accG / accL; dst[B] = accB / accL; accR = q * src[R]; accG = q * src[G]; accB = q * src[B]; } else if (Channels == 4) { accR+= p * src[R]; accG+= p * src[G]; accB+= p * src[B]; accA+= p * src[A]; accL+= p; dst[R] = accR / accL; dst[G] = accG / accL; dst[B] = accB / accL; dst[A] = accA / accL; accR = q * src[R]; accG = q * src[G]; accB = q * src[B]; accA = q * src[A]; } dst+= Channels; accL = q; } else { if (Channels == 1) { accA+= *src << fPrec; } else if (Channels == 3) { accR+= src[R] << fPrec; accG+= src[G] << fPrec; accB+= src[B] << fPrec; } else if (Channels == 4) { accR+= src[R] << fPrec; accG+= src[G] << fPrec; accB+= src[B] << fPrec; accA+= src[A] << fPrec; } accL+= fUnit; } } } }; template struct YRowAccumulator : public YScaler { YRowAccumulator(Pixel const * src, unsigned const sStep, unsigned const sw, unsigned const sh, Pixel * dst, unsigned const dStep, unsigned const dw, unsigned const dh) { unsigned const len(dw * Channels); unsigned long acc(0), accL(0), * accC(new unsigned long[len]); memset(accC, 0, len * sizeof(*accC)); Pixel * row(new Pixel[len]); unsigned const inc(dh), unit(sh); for (unsigned n(0); n < sh; ++n, src+= sStep) { RowScaler(src, sw, row, dw); if ((acc+= inc) >= unit) { acc-= unit; fixed const p((acc << fPrec) / unit); fixed const q(fUnit - p); accL+= p; for (unsigned c(0); c < len; ++c) { dst[c] = (accC[c] + p * row[c]) / accL; accC[c] = q * row[c]; } dst+= dStep; accL = q; } else { for (unsigned c(0); c < len; ++c) accC[c]+= row[c] << fPrec; accL+= fUnit; } } delete[] row; delete[] accC; } }; /******************************************************************************/ template struct YColumnCopier : public YScaler { YColumnCopier(Pixel const * src, unsigned const /*sLen*/, Pixel * dst, unsigned const dLen) { memcpy(dst, src, Channels * sizeof(Pixel) * dLen); } }; template struct YRowCopier : public YScaler { YRowCopier(Pixel const * src, unsigned const sStep, unsigned const sw, unsigned const /*sh*/, Pixel * dst, unsigned const dStep, unsigned const dw, unsigned const dh) { for (unsigned n(0); n < dh; ++n, src+= sStep, dst+= dStep) RowScaler(src, sw, dst, dw); } }; /******************************************************************************/ template struct YColumnInterpolator : public YScaler { YColumnInterpolator(Pixel const * src, unsigned const sLen, Pixel * dst, unsigned const dLen) { unsigned long acc(0); unsigned const inc(sLen - 1), unit(dLen - 1); for (unsigned n(0); n < dLen; ++n, dst+= Channels) { fixed const p((acc << fPrec) / unit); fixed const q(fUnit - p); if (p) { if (Channels == 1) { *dst = (src[0] * q + src[1] * p) >> fPrec; } else if (Channels == 3) { dst[R] = (src[R] * q + src[3 + R] * p) >> fPrec; dst[G] = (src[G] * q + src[3 + G] * p) >> fPrec; dst[B] = (src[B] * q + src[3 + B] * p) >> fPrec; } else if (Channels == 4) { dst[R] = (src[R] * q + src[4 + R] * p) >> fPrec; dst[G] = (src[G] * q + src[4 + G] * p) >> fPrec; dst[B] = (src[B] * q + src[4 + B] * p) >> fPrec; dst[A] = (src[A] * q + src[4 + A] * p) >> fPrec; } } else memcpy(dst, src, Channels * sizeof(Pixel)); if ((acc+= inc) >= unit) { acc-= unit; src+= Channels; } } } }; template struct YRowInterpolator : public YScaler { YRowInterpolator(Pixel const * src, unsigned const sStep, unsigned const sw, unsigned const sh, Pixel * dst, unsigned const dStep, unsigned const dw, unsigned const dh) { unsigned const len(dw * Channels); Pixel * a(new Pixel[len]); Pixel * b(new Pixel[len]); RowScaler(src, sw, a, dw); if (sh > 1) RowScaler(src+= sStep, sw, b, dw); unsigned long acc(0); unsigned const inc(sh - 1), unit(dh - 1); for (unsigned n(dh); n > 1; --n, dst+= dStep) { fixed const p((acc << fPrec) / unit); fixed const q(fUnit - p); if (p) for (unsigned c(0); c < len; ++c) dst[c] = (a[c] * q + b[c] * p) >> fPrec; else memcpy(dst, a, len * sizeof(Pixel)); if ((acc+= inc) >= unit) { Pixel * c(a); a = b; b = c; if (n > 2) RowScaler(src+= sStep, sw, b, dw); acc-= unit; } } memcpy(dst, a, len * sizeof(Pixel)); delete[] b; delete[] a; } }; /******************************************************************************/ template YScaler::YScaler (Pixel const * src, unsigned const sStep, unsigned const sw, unsigned const sh, Pixel * dst, unsigned const dStep, unsigned const dw, unsigned const dh) { if (sh < dh) if (sw < dw) YRowInterpolator > (src, sStep, sw, sh, dst, dStep, dw, dh); else if (sw > dw) YRowInterpolator > (src, sStep, sw, sh, dst, dStep, dw, dh); else YRowInterpolator > (src, sStep, sw, sh, dst, dStep, dw, dh); else if (sh > dh) if (sw < dw) YRowAccumulator > (src, sStep, sw, sh, dst, dStep, dw, dh); else if (sw > dw) YRowAccumulator > (src, sStep, sw, sh, dst, dStep, dw, dh); else YRowAccumulator > (src, sStep, sw, sh, dst, dStep, dw, dh); else if (sw < dw) YRowCopier > (src, sStep, sw, sh, dst, dStep, dw, dh); else if (sw > dw) YRowCopier > (src, sStep, sw, sh, dst, dStep, dw, dh); else YRowCopier > (src, sStep, sw, sh, dst, dStep, dw, dh); } #endif #if 0 /****************************************************************************** * A scaler for RGB pixel buffers ******************************************************************************/ /// TODO #warning "fix the optimized versions" #if 0 template static void copyRGB32ToPixbuf(char const * src, unsigned const sStep, unsigned char * dst, unsigned const dStep, unsigned const width, unsigned const height) { MSG(("copyRGB32ToPixbuf")); for (unsigned y(height); y > 0; --y, src+= sStep, dst+= dStep) { char const * s(src); unsigned char * d(dst); for (unsigned x(width); x-- > 0; s+= 4, d+= Channels) { d[0] = s[2]; d[1] = s[1]; d[2] = s[0]; } } } template static void copyRGB565ToPixbuf(char const * src, unsigned const sStep, unsigned char * dst, unsigned const dStep, unsigned const width, unsigned const height) { MSG(("copyRGB565ToPixbuf")); for (unsigned y(height); y > 0; --y, src+= sStep, dst+= dStep) { yuint16 const * s((yuint16*)src); unsigned char * d(dst); for (unsigned x(width); x-- > 0; d+= Channels, ++s) { d[0] = (*s >> 8) & 0xf8; d[1] = (*s >> 3) & 0xfc; d[2] = (*s << 3) & 0xf8; } } } template static void copyRGB555ToPixbuf(char const * src, unsigned const sStep, unsigned char * dst, unsigned const dStep, unsigned const width, unsigned const height) { MSG(("copyRGB555ToPixbuf")); for (unsigned y(height); y > 0; --y, src+= sStep, dst+= dStep) { yuint16 const * s((yuint16*)src); unsigned char * d(dst); for (unsigned x(width); x-- > 0; d+= Channels, ++s) { d[0] = (*s >> 7) & 0xf8; d[1] = (*s >> 2) & 0xf8; d[2] = (*s << 3) & 0xf8; } } } template static void copyRGB444ToPixbuf(char const * src, unsigned const sStep, unsigned char * dst, unsigned const dStep, unsigned const width, unsigned const height) { MSG(("copyRGB444ToPixbuf")); for (unsigned y(height); y > 0; --y, src+= sStep, dst+= dStep) { yuint16 const * s((yuint16*)src); unsigned char * d(dst); for (unsigned x(width); x-- > 0; d+= Channels, ++s) { d[0] = (*s >> 4) & 0xf0; d[1] = *s & 0xf0; d[2] = (*s << 4) & 0xf0; } } } #endif template static void copyRGBAnyToPixbuf(XImage *image, char const * src, unsigned const sStep, unsigned char * dst, unsigned const dStep, unsigned const width, unsigned const height, unsigned const rMask, unsigned const gMask, unsigned const bMask) { MSG((_("Using fallback mechanism to convert pixels " "(depth: %d; masks (red/green/blue): %0*x/%0*x/%0*x)"), sizeof(Pixel) * 8, sizeof(Pixel) * 2, rMask, sizeof(Pixel) * 2, gMask, sizeof(Pixel) * 2, bMask)); unsigned const rShift = lowbit(rMask); unsigned const gShift = lowbit(gMask); unsigned const bShift = lowbit(bMask); unsigned const rLoss = 7 + rShift - highbit(rMask); unsigned const gLoss = 7 + gShift - highbit(gMask); unsigned const bLoss = 7 + bShift - highbit(bMask); unsigned char *d = dst; for (unsigned y = height; y > 0; --y, src += sStep, dst += dStep) { for (unsigned x = width; x > 0; x--, d += Channels) { unsigned long pixel = XGetPixel(image, width - x, height - y); ///Pixel const * s = (Pixel*)src; d[0] = ((pixel & rMask) >> rShift) << rLoss; d[1] = ((pixel & gMask) >> gShift) << gLoss; d[2] = ((pixel & bMask) >> bShift) << bLoss; if (Channels == 4) d[3] = 0; } } } template static void copyBitmapToPixbuf(char const * src, unsigned const sStep, unsigned char * dst, unsigned const dStep, unsigned const width, unsigned const height) { MSG(("copyBitmapToPixbuf<%d>(%p,%d,%p,%d,%d,%d)", Channels, src, sStep, dst, dStep, width, height)); for (unsigned y(height); y; --y, src+= sStep, dst+= dStep) { char const * s(src); unsigned char * d(dst); for (unsigned x(width), t(*s), m(1); x; --x, d+= Channels, m<<= 1) { if (m & 256) { m = 1; t = *(++s); } *d = (t & m ? 255 : 0); } } } /******************************************************************************/ template static YPixbuf::Pixel * copyImageToPixbuf(XImage & image, unsigned const rowstride) { unsigned const width(image.width), height(image.height); YPixbuf::Pixel * pixels = new YPixbuf::Pixel[rowstride * height]; if (!(image.red_mask && image.green_mask && image.blue_mask)) { Visual const * visual(xapp->visual()); image.red_mask = visual->red_mask; image.green_mask = visual->green_mask; image.blue_mask = visual->blue_mask; } if (image.depth > 16) { #if 0 if (CHANNEL_MASK(image, 0xff0000, 0x00ff00, 0x0000ff) || CHANNEL_MASK(image, 0x0000ff, 0x00ff00, 0xff0000)) copyRGB32ToPixbuf (image.data, image.bytes_per_line, pixels, rowstride, width, height); else #endif copyRGBAnyToPixbuf (&image, image.data, image.bytes_per_line, pixels, rowstride, width, height, image.red_mask, image.green_mask, image.blue_mask); } else if (image.depth > 8) { #if 0 if (CHANNEL_MASK(image, 0xf800, 0x07e0, 0x001f) || CHANNEL_MASK(image, 0x001f, 0x07e0, 0xf800)) copyRGB565ToPixbuf (image.data, image.bytes_per_line, pixels, rowstride, width, height); else if (CHANNEL_MASK(image, 0x7c00, 0x03e0, 0x001f) || CHANNEL_MASK(image, 0x001f, 0x03e0, 0x7c00)) copyRGB555ToPixbuf (image.data, image.bytes_per_line, pixels, rowstride, width, height); else if (CHANNEL_MASK(image, 0xf00, 0x0f0, 0x00f) || CHANNEL_MASK(image, 0x00f, 0x0f0, 0xf00)) copyRGB444ToPixbuf (image.data, image.bytes_per_line, pixels, rowstride, width, height); else #endif copyRGBAnyToPixbuf (&image, image.data, image.bytes_per_line, pixels, rowstride, width, height, image.red_mask, image.green_mask, image.blue_mask); } else warn(_("%s:%d: %d bit visuals are not supported (yet)"), __FILE__, __LINE__, image.depth); return pixels; } ref YPixbuf::load(upath filename) { ref pix; pix.init(new YPixbuf(filename)); return pix; } ref YPixbuf::scale(int width, int height) { ref pix; pix.init(this); return YPixbuf::scale(pix, width, height); } /******************************************************************************/ /******************************************************************************/ #ifdef CONFIG_XPM template static void copyPixbufToRGB32(unsigned char const * src, unsigned const sStep, char * dst, unsigned const dStep, unsigned const width, unsigned const height) { MSG(("copyPixbufToRGB32")); for (unsigned y(height); y > 0; --y, src+= sStep, dst+= dStep) { unsigned char const * s(src); char * d(dst); for (unsigned x(width); x-- > 0; s+= Channels, d+= 4) { d[0] = s[2]; d[1] = s[1]; d[2] = s[0]; } } } template static void copyPixbufToRGB565(unsigned char const * src, unsigned const sStep, char * dst, unsigned const dStep, unsigned const width, unsigned const height) { MSG(("copyPixbufToRGB565")); for (unsigned y(height); y > 0; --y, src+= sStep, dst+= dStep) { unsigned char const * s(src); yuint16 * d((yuint16*)dst); for (unsigned x(width); x-- > 0; ++d, s+= Channels) *d = ((((yuint16)s[0]) << 8) & 0xf800) | ((((yuint16)s[1]) << 3) & 0x07e0) | ((((yuint16)s[2]) >> 3) & 0x001f); } } template static void copyPixbufToRGB555(unsigned char const * src, unsigned const sStep, char * dst, unsigned const dStep, unsigned const width, unsigned const height) { MSG(("copyPixbufToRGB555")); for (unsigned y(height); y > 0; --y, src+= sStep, dst+= dStep) { unsigned char const * s(src); yuint16 * d((yuint16*)dst); for (unsigned x(width); x-- > 0; ++d, s+= Channels) *d = ((((yuint16)s[0]) << 7) & 0x7c00) | ((((yuint16)s[1]) << 2) & 0x03e0) | ((((yuint16)s[2]) >> 3) & 0x001f); } } template static void copyPixbufToRGB444(unsigned char const * src, unsigned const sStep, char * dst, unsigned const dStep, unsigned const width, unsigned const height) { MSG(("copyPixbufToRGB444")); for (unsigned y(height); y > 0; --y, src+= sStep, dst+= dStep) { unsigned char const * s(src); yuint16 * d((yuint16*)dst); for (unsigned x(width); x-- > 0; ++d, s+= Channels) *d = ((((yuint16)s[0]) << 4) & 0xf00) | (((yuint16)s[1]) & 0x0f0) | ((((yuint16)s[2]) >> 4) & 0x00f); } } template static void copyPixbufToRGBAny(unsigned char const * src, unsigned const sStep, char * dst, unsigned const dStep, unsigned const width, unsigned const height, unsigned const rMask, unsigned const gMask, unsigned const bMask) { warn(_("Using fallback mechanism to convert pixels " "(depth: %d; masks (red/green/blue): %0*x/%0*x/%0*x)"), sizeof(Pixel) * 8, sizeof(Pixel) * 2, rMask, sizeof(Pixel) * 2, gMask, sizeof(Pixel) * 2, bMask); unsigned const rShift(lowbit(rMask)); unsigned const gShift(lowbit(gMask)); unsigned const bShift(lowbit(bMask)); unsigned const rLoss(7 + rShift - highbit(rMask)); unsigned const gLoss(7 + gShift - highbit(gMask)); unsigned const bLoss(7 + bShift - highbit(bMask)); for (unsigned y(height); y > 0; --y, src+= sStep, dst+= dStep) { unsigned char const * s(src); Pixel * d((Pixel*)dst); for (unsigned x(width); x-- > 0; s+= Channels, ++d) *d = (((((Pixel)s[0]) >> rLoss) << rShift) & rMask) | (((((Pixel)s[1]) >> gLoss) << gShift) & gMask) | (((((Pixel)s[2]) >> bLoss) << bShift) & bMask); } } /******************************************************************************/ template static void copyPixbufToImage(YPixbuf::Pixel const * pixels, XImage & image, unsigned const rowstride) { unsigned const width(image.width), height(image.height); if (image.depth > 16) { if (CHANNEL_MASK(image, 0xff0000, 0x00ff00, 0x0000ff) || CHANNEL_MASK(image, 0x0000ff, 0x00ff00, 0xff0000)) copyPixbufToRGB32 (pixels, rowstride, image.data, image.bytes_per_line, width, height); else copyPixbufToRGBAny (pixels, rowstride, image.data, image.bytes_per_line, width, height, image.red_mask, image.green_mask, image.blue_mask); } else if (image.depth > 8) { if (CHANNEL_MASK(image, 0xf800, 0x07e0, 0x001f) || CHANNEL_MASK(image, 0x001f, 0x07e0, 0xf800)) copyPixbufToRGB565 (pixels, rowstride, image.data, image.bytes_per_line, width, height); else if (CHANNEL_MASK(image, 0x7c00, 0x03e0, 0x001f) || CHANNEL_MASK(image, 0x001f, 0x03e0, 0x7c00)) copyPixbufToRGB555 (pixels, rowstride, image.data, image.bytes_per_line, width, height); else if (CHANNEL_MASK(image, 0xf00, 0x0f0, 0x00f) || CHANNEL_MASK(image, 0x00f, 0x0f0, 0xf00)) copyPixbufToRGB444 (pixels, rowstride, image.data, image.bytes_per_line, width, height); else copyPixbufToRGBAny (pixels, rowstride, image.data, image.bytes_per_line, width, height, image.red_mask, image.green_mask, image.blue_mask); } else warn(_("%s:%d: %d bit visuals are not supported (yet)"), __FILE__, __LINE__, image.depth); } #endif /****************************************************************************** * shared code ******************************************************************************/ void YPixbuf::copyArea(YPixbuf const & src, int sx, int sy, int w, int h, int dx, int dy) { gdk_pixbuf_copy_area(src.fImage, sx, sy, w, h, fImage, dx, dy); #if NOIMLIB if (sx < 0) { dx-= sx; w+= sx; sx = 0; } if (sy < 0) { dy-= sy; h+= sy; sy = 0; } if (dx < 0) { sx-= dx; w+= dx; dx = 0; } if (dy < 0) { sy-= dy; h+= dy; dy = 0; } w = min(min(w, width()), src.width()); h = min(min(h, height()), src.height()); if (src.alpha()) { unsigned const deltaS(src.inlineAlpha() ? 4 : 3); unsigned const deltaA(src.inlineAlpha() ? 4 : 1); unsigned const deltaD(alpha () && inlineAlpha() ? 4 : 3); unsigned const sRowStride(src.rowstride()); unsigned const aRowStride(src.inlineAlpha() ? src.rowstride() : src.width()); unsigned const dRowStride(rowstride()); Pixel const * sp(src.pixels() + sy * sRowStride + sx * deltaS); Pixel const * ap(src.alpha() + sy * aRowStride + sx * deltaA); Pixel * dp(pixels() + dy * dRowStride + dx * deltaD); for (unsigned y(h); y; --y, sp+= sRowStride, ap+= aRowStride, dp+= dRowStride) { Pixel const * s(sp), * a(ap); Pixel * d(dp); for (unsigned x(w); x; --x, s+= deltaS, a+= deltaA, d+= deltaD) { unsigned p(*a), q(255 - p); d[0] = (p * s[0] + q * d[0]) / 255; d[1] = (p * s[1] + q * d[1]) / 255; d[2] = (p * s[2] + q * d[2]) / 255; } } if (alpha()) { unsigned const deltaS(src.inlineAlpha() ? 4 : 3); unsigned const deltaD(inlineAlpha() ? 4 : 3); unsigned const sRowStride(src.inlineAlpha() ? src.rowstride() : src.width()); unsigned const dRowStride(inlineAlpha() ? rowstride() : width()); Pixel const * sp(src.alpha() + sy * sRowStride + sx * deltaS); Pixel * dp(alpha() + dy * dRowStride + dx * deltaD); for (unsigned y(h); y; --y, sp+= sRowStride, dp+= dRowStride) { Pixel const * s(sp); Pixel * d(dp); for (unsigned x(w); x; --x, s+= deltaS, d+= deltaD) { unsigned p(*s), q(255 - p); *d = (p * *s + q * *d) / 255; } } } } else { Pixel const * sp(src.pixels() + sy * src.rowstride() + sx * 3); Pixel * dp(pixels() + dy * rowstride() + dx * 3); for (int y = h; y > 0; --y, sp+= src.rowstride(), dp+= rowstride()) memcpy(dp, sp, w * 3); } #endif } #if 0 void YPixbuf::copyAlphaToMask(Pixmap pixmap, GC gc, int sx, int sy, int w, int h, int dx, int dy) { if (sx < 0) { dx-= sx; w+= sx; sx = 0; } if (sy < 0) { dy-= sy; h+= sy; sy = 0; } if (dx < 0) { sx-= dx; w+= dx; dx = 0; } if (dy < 0) { sy-= dy; h+= dy; dy = 0; } w = min(w, width()); h = min(h, height()); XSetForeground(xapp->display(), gc, 1); XFillRectangle(xapp->display(), pixmap, gc, dx, dy, w, h); if (alpha()) { XSetForeground(xapp->display(), gc, 0); unsigned const delta(inlineAlpha() ? 4 : 3); unsigned const rowStride(inlineAlpha() ? rowstride() : width()); Pixel const * row(alpha() + sy * rowStride + sx * delta); for (unsigned y(h); y; --y, row+= rowStride, ++dy) { Pixel const * pixel(row); for (int xa(0), xe(0); xe < w; xa = xe + 1) { while (xe < w && *pixel++ < 128) ++xe; XFillRectangle(xapp->display(), pixmap, gc, dx + xa, dy, xe - xa, 1); while (xe < w && *pixel++ >= 128) ++xe; } } } } #endif /****************************************************************************** * libxpm version of the pixel buffer ******************************************************************************/ /* !!! TODO: dithering, 8 bit visuals */ #ifdef CONFIG_XPM /******************************************************************************/ YPixbuf::YPixbuf(upath filename, bool fullAlpha): fWidth(0), fHeight(0), fRowStride(0), fPixels(NULL), fAlpha(NULL), fPixmap(None) { XpmAttributes xpmAttributes; memset(&xpmAttributes, 0, sizeof(xpmAttributes)); xpmAttributes.colormap = xapp->colormap(); xpmAttributes.closeness = 65535; xpmAttributes.valuemask = XpmSize|XpmReturnPixels|XpmColormap|XpmCloseness; XImage * image(NULL), * alpha(NULL); int const rc(XpmReadFileToImage(xapp->display(), (char *)REDIR_ROOT(filename), // !!! &image, &alpha, &xpmAttributes)); if (rc == XpmSuccess) { fWidth = xpmAttributes.width; fHeight = xpmAttributes.height; fRowStride = (fWidth * (fullAlpha && alpha ? 4 : 3) + 3) & ~3; if (fullAlpha && alpha) { fPixels = copyImageToPixbuf<4>(*image, fRowStride); fAlpha = fPixels + 3; copyBitmapToPixbuf<4>(alpha->data, alpha->bytes_per_line, fAlpha, fRowStride, fWidth, fHeight); } else fPixels = copyImageToPixbuf<3>(*image, fRowStride); XpmFreeAttributes(&xpmAttributes); } else warn(_("Loading of pixmap \"%s\" failed: %s"), filename, XpmGetErrorString(rc)); if (image) XDestroyImage(image); if (alpha) XDestroyImage(alpha); } #if 0 YPixbuf::YPixbuf(char const *filename, int w, int h, bool fullAlpha): fWidth(w), fHeight(h), fRowStride(0), fPixels(NULL), fAlpha(NULL), fPixmap(None) { ref source; source.init(new YPixbuf(filename, fullAlpha)); if (source != null && source->valid()) { fRowStride = ((w * (source->alpha() ? 4 : 3) + 3) & ~3), fPixels = new Pixel[fRowStride * fHeight]; if (source->alpha()) { fAlpha = fPixels + 3; YScaler(source->pixels(), source->rowstride(), source->width(), source->height(), fPixels, fRowStride, fWidth, fHeight); } else { YScaler(source->pixels(), source->rowstride(), source->width(), source->height(), fPixels, fRowStride, fWidth, fHeight); } } } #endif YPixbuf::YPixbuf(int const width, int const height): fWidth(width), fHeight(height), fRowStride((width * 3 + 3) & ~3), fPixels(NULL), fAlpha(NULL), fPixmap(None) { fPixels = new Pixel[fRowStride * fHeight]; } YPixbuf::YPixbuf(const ref &source, int const width, int const height): fWidth(width), fHeight(height), fRowStride((width * (source->alpha() ? 4 : 3) + 3) & ~3), fPixels(NULL), fAlpha(NULL), fPixmap(None) { if (source != null && source->valid()) { fPixels = new Pixel[fRowStride * fHeight]; if (source->alpha()) { fAlpha = fPixels + 3; YScaler(source->pixels(), source->rowstride(), source->width(), source->height(), fPixels, fRowStride, fWidth, fHeight); } else YScaler(source->pixels(), source->rowstride(), source->width(), source->height(), fPixels, fRowStride, fWidth, fHeight); } } YPixbuf::YPixbuf(Drawable drawable, Pixmap mask, int dWidth, int dHeight, int w, int h, int x, int y, bool fullAlpha): fWidth(0), fHeight(0), fRowStride(0), fPixels(NULL), fAlpha(NULL), fPixmap(None) { //#warning "!!! remove call to XGetGeometry" // Window dRoot; int dWidth, dHeight, dDummy; // XGetGeometry(xapp->display(), drawable, &dRoot, // (int*)&dDummy, (int*)&dDummy, // (unsigned int*)&dWidth, (unsigned int*)&dHeight, // (unsigned int*)&dDummy, (unsigned int*)&dDummy); MSG(("YPixbuf::YPixbuf: initial: x=%i, y=%i; w=%i, h=%i", x, y, w, h)); x = clamp(x, 0, (int)dWidth); y = clamp(y, 0, (int)dHeight); w = min(w, dWidth - x); h = min(h, dHeight - y); MSG(("YPixbuf::YPixbuf: after clipping: x=%i, y=%i; w=%i, h=%i", x, y, w, h)); if (!(w && h)) return; XImage * image(XGetImage(xapp->display(), drawable, x, y, w, h, AllPlanes, ZPixmap)); XImage * alpha(fullAlpha && mask != None ? XGetImage(xapp->display(), mask, x, y, w, h, AllPlanes, ZPixmap) : NULL); if (image) { MSG(("depth/padding: %d/%d; r/g/b mask: %d/%d/%d", image->depth, image->bitmap_pad, image->red_mask, image->green_mask, image->blue_mask)); fWidth = w; fHeight = h; if (fullAlpha && alpha) { fRowStride = (fWidth * 4 + 3) & ~3; fPixels = copyImageToPixbuf<4>(*image, fRowStride); fAlpha = fPixels + 3; copyBitmapToPixbuf<4>(alpha->data, alpha->bytes_per_line, fAlpha, fRowStride, w, h); XDestroyImage(image); XDestroyImage(alpha); } else { fRowStride = (fWidth * 3 + 3) & ~3; fPixels = copyImageToPixbuf<3>(*image, fRowStride); XDestroyImage(image); } if (fullAlpha && mask != None && alpha == NULL) warn("%s:%d: Failed to copy drawable 0x%x to pixel buffer", __FILE__, __LINE__, mask); } else { warn("%s:%d: Failed to copy drawable 0x%x to pixel buffer", __FILE__, __LINE__, drawable); } } YPixbuf::~YPixbuf() { if (fPixmap != None) { if (xapp != 0) XFreePixmap(xapp->display(), fPixmap); fPixmap = 0; } delete[] fPixels; } void YPixbuf::copyToDrawable(Drawable drawable, GC gc, int const sx, int const sy, int const w, int const h, int const dx, int const dy, bool useAlpha) { if (fPixmap == None && fPixels) { unsigned const depth(xapp->depth()); unsigned const pixelSize(depth > 16 ? 4 : depth > 8 ? 2 : 1); unsigned const rowStride(((fWidth * pixelSize) + 3) & ~3); char * pixels(new char[rowStride * fHeight]); fPixmap = YPixmap::createPixmap(fWidth, fHeight); XImage * image(XCreateImage(xapp->display(), xapp->visual(), depth, ZPixmap, 0, pixels, fWidth, fHeight, 32, rowStride)); if (image) { copyPixbufToImage<3>(fPixels, *image, fRowStride); Graphics(fPixmap, fWidth, fHeight).copyImage(image, 0, 0); delete[] image->data; image->data = NULL; XDestroyImage(image); } else { warn("%s:%d: Failed to copy drawable 0x%x to pixel buffer", __FILE__, __LINE__, drawable); // delete[] pixels; } } if (useAlpha && alpha()) warn("YPixbuf::copyToDrawable with alpha not implemented yet"); if (fPixmap != None) XCopyArea(xapp->display(), fPixmap, drawable, gc, sx, sy, w, h, dx, dy); } #endif /****************************************************************************** * Imlib version of the pixel buffer ******************************************************************************/ #ifdef CONFIG_IMLIB YPixbuf::YPixbuf(upath filename, bool fullAlpha): fImage(NULL), fAlpha(NULL) { cstring cs(filename.path()); fImage = Imlib_load_image(hImlib, (char *)(cs.c_str())); if (NULL == fImage) warn(_("Loading of image \"%s\" failed"), cs.c_str()); if (fullAlpha) allocAlphaChannel(); MSG(("%s %d %d", cs.c_str(), width(), height())); } #if 0 YPixbuf::YPixbuf(upath filename, int w, int h, bool fullAlpha): fImage(NULL), fAlpha(NULL) { ref source; source.init(new YPixbuf(filename, fullAlpha)); if (source != null && source->valid()) { if (source->alpha()) { fAlpha = new Pixel[w * h]; YScaler(source->alpha(), source->width(), source->width(), source->height(), fAlpha, w, w, h); } const unsigned rowstride(3 * w); Pixel * pixels(new Pixel[rowstride * h]); YScaler(source->pixels(), source->rowstride(), source->width(), source->height(), pixels, rowstride, w, h); fImage = Imlib_create_image_from_data(hImlib, pixels, NULL, w, h); delete[] pixels; } } #endif YPixbuf::YPixbuf(int const width, int const height) { fImage = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 32, width, height); } YPixbuf::YPixbuf(const ref &source, int const width, int const height): fImage(0) { fImage = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 32, width, height); gdk_pixbuf_scale(source->fImage, fImage, 0, 0, width, height, 0, 0, source->width(), source->height(), GDK_INTERP_BILINEAR); #if 0 if (source != null && source->valid()) { if (source->alpha()) { fAlpha = new Pixel[width * height]; YScaler(source->alpha(), source->width(), source->width(), source->height(), fAlpha, width, width, height); } const unsigned rowstride(3 * width); Pixel * pixels(new Pixel[rowstride * height]); YScaler(source->pixels(), source->rowstride(), source->width(), source->height(), pixels, rowstride, width, height); fImage = Imlib_create_image_from_data(hImlib, pixels, NULL, width, height); delete[] pixels; } #endif } #warning "first parameter -> Pixmap" // drawable is broken, really YPixbuf::YPixbuf(Drawable drawable, Pixmap mask, int dWidth, int dHeight, int w, int h, int x, int y): fImage(NULL) { fImage = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 32, dWidth, dHeight); fImage = gdk_pixbuf_xlib_get_from_drawable(fImage, drawable, xapp->colormap(), xapp->visual(), x, y, w, h, dWidth, dHeight); if (mask != None) { #warning "FIX MASK HANDLING" warn("mask not handled"); } #if 0 //#warning "!!! remove call to XGetGeometry" // Window dRoot; int dWidth, dHeight, dDummy; // XGetGeometry(xapp->display(), drawable, &dRoot, // &dDummy, &dDummy, // (unsigned int*)&dWidth, (unsigned int*)&dHeight, (unsigned int*)&dDummy, (unsigned int*)&dDummy); MSG(("YPixbuf::YPixbuf: initial: x=%i, y=%i; w=%i, h=%i", x, y, w, h)); x = clamp(x, 0, (int)dWidth); y = clamp(y, 0, (int)dHeight); w = min(w, dWidth - x); h = min(h, dHeight - y); MSG(("YPixbuf::YPixbuf: after clipping: x=%i, y=%i; w=%i, h=%i", x, y, w, h)); if (!(w && h)) return; XImage * image(XGetImage(xapp->display(), drawable, x, y, w, h, AllPlanes, ZPixmap)); if (image) { MSG(("depth/padding: %d/%d; r/g/b mask: %d/%d/%d", image->depth, image->bitmap_pad, image->red_mask, image->green_mask, image->blue_mask)); Pixel * pixels(copyImageToPixbuf<3>(*image, 3 * w)); fImage = Imlib_create_image_from_data(hImlib, pixels, NULL, w, h); delete[] pixels; XDestroyImage(image); } else { warn("%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%dx%d", __FILE__, __LINE__, drawable, x, y, w, h); } if (fullAlpha && mask != None) { image = XGetImage(xapp->display(), mask, x, y, w, h, AllPlanes, ZPixmap); if (image) { fAlpha = new Pixel[w * h]; copyBitmapToPixbuf<1>(image->data, image->bytes_per_line, fAlpha, w, w, h); XDestroyImage(image); } else { warn("%s:%d: Failed to copy drawable 0x%x to pixel buffer", __FILE__, __LINE__, mask); } } #endif } YPixbuf::~YPixbuf() { gdk_pixbuf_unref(fImage); //Imlib_kill_image(hImlib, fImage); //delete[] fAlpha; } #if 0 void YPixbuf::allocAlphaChannel() { if (fImage) { ImlibColor alpha; Imlib_get_image_shape(hImlib, fImage, &alpha); if (alpha.r != -1 && alpha.g != -1 && alpha.b != -1) { unsigned n(height() * width()); Pixel * a(fAlpha = new Pixel[n]); Pixel * p(pixels()); while(n) { unsigned len; Pixel * q; for (len = 0, q = p; n && (alpha.r == q[0] && alpha.g == q[1] && alpha.b == q[2]); --n, ++len, q+=3); memset(a, 0, len); a+= len; memset(p, 128, q - p); p = q; for (len = 0; n && (alpha.r != p[0] || alpha.g != p[1] || alpha.b != p[2]); --n, ++len, p+=3); memset(a, 255, len); a+= len; }; } } } #endif void YPixbuf::copyToDrawable(Drawable drawable, GC gc, int const sx, int const sy, int const w, int const h, int const dx, int const dy, bool useAlpha) { if (fImage) { gdk_pixbuf_xlib_render_to_drawable(fImage, drawable, gc, sx, sy, dx, dy, w, h, XLIB_RGB_DITHER_NONE, 0, 0); #if 0 if (useAlpha && alpha()) warn("YPixbuf::copyToDrawable with alpha not implemented yet"); if (fImage->pixmap == None) Imlib_render(hImlib, fImage, width(), height()); XCopyArea(xapp->display(), fImage->pixmap, drawable, gc, sx, sy, w, h, dx, dy); #endif } } #endif ref YPixbuf::scale(ref source, int const w, int const h) { ref scaled; if (source->width() != w || source->height() != h) { scaled.init(new YPixbuf(source, w, h)); } else scaled = source; return scaled; } ref YPixbuf::createFromPixmapAndMaskScaled(Pixmap pix, Pixmap mask, int width, int height, int nw, int nh) { ref scaled; scaled.init(new YPixbuf(pix, mask, nw, nh, width, height, 0, 0, true)); return scaled; } void image_init() { YPixbuf::init(); } #endif void pixbuf_scale(unsigned char *source, int source_rowstride, int source_width, int source_height, unsigned char *dest, int dest_rowstride, int dest_width, int dest_height, bool alpha) { if (alpha) { YScaler(source, source_rowstride, source_width, source_height, dest, dest_rowstride, dest_width, dest_height); } else { YScaler(source, source_rowstride, source_width, source_height, dest, dest_rowstride, dest_width, dest_height); } } icewm-1.3.7/src/wmcontainer.h0000644000076600007660000000137711463274240015123 0ustar develdevel#ifndef __WMCONTAINER_H #define __WMCONTAINER_H #include "ywindow.h" class YFrameWindow; class YClientContainer: public YWindow { public: YClientContainer(YWindow *parent, YFrameWindow *frame); virtual ~YClientContainer(); virtual void handleButton(const XButtonEvent &button); virtual void handleConfigureRequest(const XConfigureRequestEvent &configureRequest); virtual void handleMapRequest(const XMapRequestEvent &mapRequest); virtual void handleCrossing(const XCrossingEvent &crossing); void grabButtons(); void releaseButtons(); void grabActions(); void regrabMouse(); YFrameWindow *getFrame() const { return fFrame; }; private: YFrameWindow *fFrame; bool fHaveGrab; bool fHaveActionGrab; }; #endif icewm-1.3.7/src/Makefile.in0000644000076600007660000001541011463274240014462 0ustar develdevelVERSION = @VERSION@ HOSTOS = @HOSTOS@ HOSTCPU = @HOSTCPU@ LIBDIR = @LIBDIR@ CFGDIR = @CFGDIR@ LOCDIR = @LOCDIR@ DOCDIR = @DOCDIR@ ################################################################################ CXX = @CXX@ HOSTCXX = @HOSTCXX@ LD = @CXX_LINK@ HOSTLD = @HOSTCXX_LINK@ EXEEXT = @EXEEXT@ DEBUG = @DEBUG@ GCCDEP = @GCCDEP@ DEFS = @DEFS@ \ -DLIBDIR='"$(LIBDIR)"' \ -DCFGDIR='"$(CFGDIR)"' \ -DLOCDIR='"$(LOCDIR)"' \ -DKDEDIR='"$(KDEDIR)"' \ -DPACKAGE='"icewm"' \ -DVERSION='"$(VERSION)"' \ -DHOSTOS='"$(HOSTOS)"' \ -DHOSTCPU='"$(HOSTCPU)"' \ -DEXEEXT='"$(EXEEXT)"' \ -DICEWMEXE='"icewm$(EXEEXT)"' \ -DICEWMTRAYEXE='"icewmtray$(EXEEXT)"' \ -DICEWMBGEXE='"icewmbg$(EXEEXT)"' \ -DICESMEXE='"icewm-session$(EXEEXT)"' \ -DICEHELPEXE='"icehelp$(EXEEXT)"' \ -DICEHELPIDX='"$(DOCDIR)/icewm-$(VERSION)/icewm.html"' CXXFLAGS = @CXXFLAGS@ $(DEBUG) $(DEFS) `pkg-config gdk-pixbuf-xlib-2.0 --cflags` \ @CORE_CFLAGS@ @IMAGE_CFLAGS@ @AUDIO_CFLAGS@ # `fc-config --cflags` LFLAGS = @LDFLAGS@ LIBS = @LIBS@ `pkg-config gdk-pixbuf-xlib-2.0 --libs` CORE_LIBS = @CORE_LIBS@ # `fc-config --libs` IMAGE_LIBS = @IMAGE_LIBS@ AUDIO_LIBS = @AUDIO_LIBS@ GNOME1_LIBS = @GNOME1_LIBS@ GNOME2_LIBS = @GNOME2_LIBS@ ################################################################################ libice_OBJS = ref.o \ mstring.o \ upath.o \ yapp.o yxapp.o ytimer.o ywindow.o ypaint.o ypopup.o \ yworker.o \ misc.o ycursor.o ysocket.o \ ypaths.o ypixbuf.o ylocale.o yarray.o ypipereader.o \ yxembed.o yconfig.o yprefs.o \ yfont.o yfontcore.o yfontxft.o \ ypixmap.o \ yimage.o \ yimage_gdk.o yimage_imlib.o yimage_xpm.o \ ytooltip.o # FIXME libitk_OBJS = \ ymenu.o ylabel.o yscrollview.o \ ymenuitem.o yscrollbar.o ybutton.o ylistbox.o yinput.o \ yicon.o \ wmconfig.o # FIXME genpref_OBJS = \ genpref.o icewm_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icewm_OBJS = \ ymsgbox.o ydialog.o yurl.o \ wmsession.o wmwinlist.o wmtaskbar.o wmwinmenu.o \ wmdialog.o wmabout.o wmswitch.o wmstatus.o \ wmoption.o wmaction.o \ wmcontainer.o wmclient.o \ wmmgr.o wmapp.o \ wmframe.o wmbutton.o wmminiicon.o wmtitle.o movesize.o \ themes.o decorate.o browse.o \ wmprog.o \ atasks.o aworkspaces.o amailbox.o aclock.o acpustatus.o \ apppstatus.o aaddressbar.o objbar.o aapm.o atray.o ysmapp.o \ yxtray.o \ $(libitk_OBJS) $(libice_OBJS) icesh_LIBS = \ $(CORE_LIBS) icesh_OBJS = \ icesh.o misc.o icewm-session_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icewm-session_OBJS = \ icesm.o $(libice_OBJS) icewmhint_LIBS = \ $(CORE_LIBS) icewmhint_OBJS = \ icewmhint.o icewmbg_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icewmbg_OBJS = \ icewmbg.o $(libice_OBJS) icesound_LIBS = \ $(CORE_LIBS) $(AUDIO_LIBS) icesound_OBJS = \ icesound.o misc.o ycmdline.o icewm-menu-gnome1_LIBS = \ $(CORE_LIBS) $(GNOME1_LIBS) icewm-menu-gnome1_OBJS = \ gnome.o misc.o ycmdline.o yarray.o icewm-menu-gnome2_LIBS = \ $(CORE_LIBS) $(GNOME2_LIBS) icewm-menu-gnome2_OBJS = \ gnome2.o misc.o ycmdline.o yarray.o icehelp_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icehelp_OBJS = \ $(libitk_OBJS) $(libice_OBJS) icehelp.o iceclock_OBJS = \ $(libitk_OBJS) $(libice_OBJS) iceclock.o aclock.o iceclock_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icebar_OBJS = \ $(libitk_OBJS) $(libice_OBJS) \ wmtaskbar.o \ wmprog.o browse.o themes.o wmaction.o \ amailbox.o aclock.o acpustatus.o apppstatus.o aaddressbar.o objbar.o icewmtray_OBJS = \ $(libitk_OBJS) $(libice_OBJS) yxtray.o icetray.o icewmtray_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icesame_OBJS = \ $(libitk_OBJS) $(libice_OBJS) icesame.o icesame_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icelist_OBJS = \ $(libitk_OBJS) $(libice_OBJS) icelist.o icelist_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) iceview_OBJS = \ $(libitk_OBJS) $(libice_OBJS) iceview.o iceview_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) iceicon_OBJS = \ $(libitk_OBJS) $(libice_OBJS) iceicon.o iceicon_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icerun_OBJS = \ $(libitk_OBJS) $(libice_OBJS) icerun.o icerun_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) iceskt_OBJS = \ $(libitk_OBJS) $(libice_OBJS) iceskt.o testmenus_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) testmenus_OBJS = \ $(libitk_OBJS) $(libice_OBJS) testmenus.o wmprog.o wmaction.o themes.o browse.o testwinhints_OBJS= \ testwinhints.o testwinhints_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) testnetwmhints_OBJS= \ testnetwmhints.o testnetwmhints_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) testmap_OBJS = \ testmap.o testmap_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) testlocale_OBJS = \ testlocale.o ylocale.o misc.o testarray_OBJS = \ testarray.o yarray.o misc.o ################################################################################ APPLICATIONS = @APPLICATIONS@ TESTCASES = @TESTCASES@ OBJECTS = @BASEOBJS@ @TESTOBJS@ BINARIES = @BASEBINS@ @TESTBINS@ ################################################################################ all: base base: @BASEBINS@ genpref$(EXEEXT) ../lib/preferences tests: @TESTBINS@ clean: rm -f $(BINARIES) genpref$(EXEEXT) *.o *.d *~ .PHONY: all base tests clean ################################################################################ %.o: %.cc @echo " CXX " $@ @$(CXX) $(CXXFLAGS) $(GCCDEP) -c $< $(BINARIES): @echo " LD " $@ @$(LD) -o $@ $($(@:$(EXEEXT)=)_OBJS) $(LFLAGS) $($(@:$(EXEEXT)=)_LFLAGS) $(LIBS) $($(@:$(EXEEXT)=)_LIBS) genpref.o: genpref.cc @echo " HOSTCXX " $@ @$(HOSTCXX) $(CXXFLAGS) $(GCCDEP) -c $< genpref$(EXEEXT): @echo " HOSTLD " $@ @$(HOSTLD) -o $@ $(genpref_OBJS) ################################################################################ gnome.o: gnome.cc @echo " CXX " $@ @$(CXX) $(CXXFLAGS) @GNOME1_CFLAGS@ $(GCCDEP) -c $< gnome2.o: gnome2.cc @echo " CXX " $@ @$(CXX) $(CXXFLAGS) @GNOME2_CFLAGS@ $(GCCDEP) -c $< ################################################################################ #libice.so: $(libice_OBJS) # -@rm -f $@ # ld -shared -o $@ $(libice_OBJS) wmabout.o: ../VERSION ../lib/preferences: genpref$(EXEEXT) @echo " GENPREF " $@ @./genpref$(EXEEXT) >../lib/preferences genpref$(EXEEXT): $(genpref_OBJS) ################################################################################ check: all tests ./icewm$(EXEEXT) --help >/dev/null ./testarray$(EXEEXT) ./testlocale$(EXEEXT) ################################################################################ #END icewm-1.3.7/src/iceicon.cc0000644000076600007660000003170711463274240014344 0ustar develdevel#include "config.h" #include "ylib.h" #include #include "ywindow.h" #include "yscrollbar.h" #include "yscrollview.h" #include "ymenu.h" #include "yxapp.h" #include "yaction.h" #include "wmmgr.h" #include "ypixbuf.h" #include "yrect.h" #include "sysdep.h" #include "ylocale.h" #include "yrect.h" #include "yicon.h" #include #include "intl.h" #include "yprefs.h" char const *ApplicationName = "iceicon"; class ObjectList; class ObjectIconView; ref folder; ref file; class YScrollView; class YIconItem { public: YIconItem(); virtual ~YIconItem(); YIconItem *getNext(); YIconItem *getPrev(); void setNext(YIconItem *next); void setPrev(YIconItem *prev); virtual const char *getText(); virtual ref getIcon(); int x, y, w, h; int ix; int iy; int tx; int ty; private: YIconItem *fPrevItem, *fNextItem; }; class YIconView: public YWindow, public YScrollBarListener, public YScrollable { public: YIconView(YScrollView *view, YWindow *aParent); virtual ~YIconView(); int addItem(YIconItem *item); //int addAfter(YIconItem *prev, YIconItem *item); //void removeItem(YIconItem *item); virtual void configure(const YRect &r, bool resized); virtual void paint(Graphics &g, const YRect &r); void setPos(int x, int y); virtual void scroll(YScrollBar *sb, int delta); virtual void move(YScrollBar *sb, int pos); void handleClick(const XButtonEvent &up, int count); YIconItem *getFirst() const { return fFirst; } YIconItem *getLast() const { return fLast; } int getItemCount(); YIconItem *getItem(int item); YIconItem *findItemByPoint(int x, int y); int findItem(YIconItem *item); virtual int contentWidth(); virtual int contentHeight(); virtual YWindow *getWindow(); virtual void activateItem(YIconItem *item); bool layout(); private: YScrollBar *fVerticalScroll; YScrollBar *fHorizontalScroll; YScrollView *fView; YIconItem *fFirst, *fLast; int fItemCount; YIconItem **fItems; int fOffsetX; int fOffsetY; int conWidth; int conHeight; void resetScrollBars(); void freeItems(); void updateItems(); YColor *bg, *fg; ref font; int fontWidth, fontHeight; }; YIconItem::YIconItem() { fPrevItem = fNextItem = 0; x = y = w = h = 0; tx = ty = ix = iy = 0; } YIconItem::~YIconItem() { } YIconItem *YIconItem::getNext() { return fNextItem; } YIconItem *YIconItem::getPrev() { return fPrevItem; } void YIconItem::setNext(YIconItem *next) { fNextItem = next; } void YIconItem::setPrev(YIconItem *prev) { fPrevItem = prev; } const char *YIconItem::getText() { return 0; } ref YIconItem::getIcon() { return null; } int YIconView::addItem(YIconItem *item) { PRECONDITION(item->getPrev() == 0); PRECONDITION(item->getNext() == 0); freeItems(); item->setNext(0); item->setPrev(fLast); if (fLast) fLast->setNext(item); else fFirst = item; fLast = item; fItemCount++; return 1; } void YIconView::freeItems() { if (fItems) { delete fItems; fItems = 0; } } void YIconView::updateItems() { if (fItems == 0) { //fMaxWidth = 0; fItems = new YIconItem *[fItemCount]; if (fItems) { YIconItem *a = getFirst(); int n = 0; while (a) { fItems[n++] = a; /*int cw = 3 + 20 + a->getOffset(); if (listBoxFont) { const char *t = a->getText(); if (t) cw += listBoxFont->textWidth(t) + 3; } if (cw > fMaxWidth) fMaxWidth = cw;*/ a = a->getNext(); } } } } YIconView::YIconView(YScrollView *view, YWindow *aParent): YWindow(aParent) { fView = view; bg = new YColor("rgb:CC/CC/CC"); fg = YColor::black; //new YColor("rgb:00/00/00"); font = YFont::getFont("-b&h-lucida-medium-r-*-*-*-120-*-*-*-*-*-*", "monospace:size=10"); fontWidth = font->textWidth("M"); fontHeight = font->height(); if (fView) { fVerticalScroll = view->getVerticalScrollBar();; fHorizontalScroll = view->getHorizontalScrollBar(); } else { fHorizontalScroll = 0; fVerticalScroll = 0; } if (fVerticalScroll) fVerticalScroll->setScrollBarListener(this); if (fHorizontalScroll) fHorizontalScroll->setScrollBarListener(this); fOffsetX = fOffsetY = 0; fItems = 0; fItemCount = 0; fFirst = fLast = 0; setBitGravity(NorthWestGravity); } YIconView::~YIconView() { } void YIconView::activateItem(YIconItem */*item*/) { } void YIconView::configure(const YRect &r, const bool resized) { YWindow::configure(r, resized); if (resized && layout()) repaint(); } bool YIconView::layout() { int sw = this->width(); int cx = 0; int cy = 0; int thisLine = 0; bool layoutChanged = false; conWidth = 0; conHeight = 0; thisLine = 0; YIconItem *icon = getFirst(); while (icon) { const char *text = icon->getText(); int tw = font->textWidth(text) + 4; int th = fontHeight + 2; ref icn = icon->getIcon()->large(); int iw = icn->width() + 4; int ih = icn->height() + 4; int tx, ty, ix, iy; ty = ih; int aw = tw; if (iw > aw) aw = iw; if (aw < 40) aw = 40; aw |= 0xF; ix = (aw - iw) / 2; tx = (aw - tw) / 2; iy = 0; int ah = ih + th; if ((cx + aw > sw) && (thisLine > 0)) { cx = 0; cy += ah; thisLine = 0; } if (icon->x != cx || icon->y != cy) layoutChanged = true; icon->x = cx; icon->y = cy; icon->w = aw; icon->h = ah; icon->tx = tx; icon->ty = ty; icon->ix = ix; icon->iy = iy; cx += aw; thisLine++; if (cx > conWidth) conWidth = cx; icon = icon->getNext(); conHeight = cy + ah; } resetScrollBars(); return layoutChanged; } void YIconView::paint(Graphics &g, const YRect &r) { int ex = r.x(), ey = r.y(), ew = r.width(), eh = r.height(); g.setColor(bg); g.fillRect(ex, ey, ew, eh); g.setColor(fg); g.setFont(font); YIconItem *icon = getFirst(); while (icon) { if ((icon->y + icon->h - fOffsetY) >= ey) break; icon = icon->getNext(); } while (icon) { if ((icon->y - fOffsetY) > (ey + int(eh))) break; const char *text = icon->getText(); ref icn = icon->getIcon()->large(); g.drawImage(icn, icon->x - fOffsetX + icon->ix + 2, icon->y - fOffsetY + icon->iy + 2); g.drawChars(text, 0, strlen(text), icon->x - fOffsetX + icon->tx, icon->y - fOffsetY + icon->ty + font->ascent() + 1); icon = icon->getNext(); } } void YIconView::handleClick(const XButtonEvent &up, int count) { if (up.button == 1 && count == 1) { YIconItem *i = findItemByPoint(up.x + fOffsetX, up.y + fOffsetY); if (i) activateItem(i); } } YIconItem *YIconView::findItemByPoint(int x, int y) { YIconItem *icon = getFirst(); while (icon) { if (x >= icon->x && x < icon->x + icon->w && y >= icon->y && y < icon->y + icon->h) { return icon; } icon = icon->getNext(); } return 0; } void YIconView::setPos(int x, int y) { if (x != fOffsetX || y != fOffsetY) { int dx = x - fOffsetX; int dy = y - fOffsetY; fOffsetX = x; fOffsetY = y; scrollWindow(dx, dy); } } void YIconView::scroll(YScrollBar *sb, int delta) { if (sb == fHorizontalScroll) setPos(fOffsetX + delta, fOffsetY); else if (sb == fVerticalScroll) setPos(fOffsetX, fOffsetY + delta); } void YIconView::move(YScrollBar *sb, int pos) { if (sb == fHorizontalScroll) setPos(pos, fOffsetY); else if (sb == fVerticalScroll) setPos(fOffsetX, pos); } void YIconView::resetScrollBars() { fVerticalScroll->setValues(fOffsetY, height(), 0, conHeight); fVerticalScroll->setBlockIncrement(height()); fVerticalScroll->setUnitIncrement(32); fHorizontalScroll->setValues(fOffsetX, width(), 0, conWidth); fHorizontalScroll->setBlockIncrement(width()); fHorizontalScroll->setUnitIncrement(32); if (fView) fView->layout(); } int YIconView::contentWidth() { return conWidth; } int YIconView::contentHeight() { return conHeight; } YWindow *YIconView::getWindow() { return this; } class ObjectIconItem: public YIconItem { public: ObjectIconItem(char *container, char *name) { fContainer = container; fName = newstr(name); fFolder = false; struct stat sb; char *path = getLocation(); if (stat(path, &sb) == 0 && S_ISDIR(sb.st_mode)) fFolder = true; delete[] path; } virtual ~ObjectIconItem() { delete[] fName; fName = 0; } virtual const char *getText() { return fName; } bool isFolder() { return fFolder; } virtual ref getIcon() { return isFolder() ? folder : file; } char *getLocation(); private: char *fContainer; char *fName; bool fFolder; }; char *ObjectIconItem::getLocation() { char *dir = fContainer; char *name = (char *)getText(); int dlen; int nlen = (dlen = strlen(dir)) + 1 + strlen(name) + 1; char *npath; npath = new char[nlen]; strcpy(npath, dir); if (dlen == 0 || dir[dlen - 1] != '/') { strcpy(npath + dlen, "/"); dlen++; } strcpy(npath + dlen, name); return npath; } class ObjectIconView: public YIconView { public: ObjectIconView(ObjectList *list, YScrollView *view, YWindow *aParent): YIconView(view, aParent) { fObjList = list; } virtual ~ObjectIconView() { } virtual void activateItem(YIconItem *item); private: ObjectList *fObjList; }; class ObjectList: public YWindow { public: static int winCount; ObjectList(char *path) { setDND(true); fPath = newstr(path); scroll = new YScrollView(this); list = new ObjectIconView(this, scroll, scroll); scroll->setView(list); updateList(); list->show(); scroll->show(); setTitle(fPath); int w = desktop->width(); int h = desktop->height(); setGeometry(YRect(w / 3, h / 3, w / 3, h / 3)); /// TODO #warning boo! /* Pixmap icons[4]; icons[0] = folder->small()->pixmap(); icons[1] = folder->small()->mask(); icons[2] = folder->large()->pixmap(); icons[3] = folder->large()->mask(); XChangeProperty(app->display(), handle(), _XA_WIN_ICONS, XA_PIXMAP, 32, PropModeReplace, (unsigned char *)icons, 4); */ winCount++; } ~ObjectList() { winCount--; } virtual void handleClose() { if (winCount == 1) app->exit(0); delete this; } void updateList(); virtual void configure(const YRect &r, const bool resized) { YWindow::configure(r, resized); if (resized) scroll->setGeometry(YRect(0, 0, r.width(), r.height())); } char *getPath() { return fPath; } private: ObjectIconView *list; YScrollView *scroll; char *fPath; }; int ObjectList::winCount = 0; void ObjectList::updateList() { DIR *dir; if ((dir = opendir(fPath)) != NULL) { struct dirent *de; while ((de = readdir(dir)) != NULL) { char *n = de->d_name; if (n[0] == '.' && (n[1] == 0 || (n[1] == '.' && n[2] == 0))) ; else { ObjectIconItem *o = new ObjectIconItem(fPath, n); if (o) list->addItem(o); } } closedir(dir); } if (list->layout()) list->repaint(); } void ObjectIconView::activateItem(YIconItem *item) { ObjectIconItem *obj = (ObjectIconItem *)item; char *path = obj->getLocation(); if (obj->isFolder()) { //if (fork() == 0) // execl("./icelist", "icelist", path, NULL); ObjectList *list = new ObjectList(path); list->show(); } else { if (fork() == 0) execl("./iceview", "iceview", path, (void *)NULL); } delete path; } int main(int argc, char **argv) { YLocale locale; #ifdef ENABLE_NLS bindtextdomain(PACKAGE, LOCDIR); textdomain(PACKAGE); #endif YXApplication app(&argc, &argv); folder = YIcon::getIcon("folder"); file = YIcon::getIcon("file"); ObjectList *list = new ObjectList(argv[1] ? argv[1] : (char *)"/"); list->show(); return app.mainLoop(); } icewm-1.3.7/src/atray.h0000644000076600007660000000420111463274240013702 0ustar develdevel/* * IceWM - Interface of the window tray * Copyright (C) 2001 The Authors of IceWM * * Release under terms of the GNU Library General Public License */ #ifndef ATRAY_H_ #define ATRAY_H_ #ifdef CONFIG_TRAY #include "ywindow.h" #include "wmclient.h" #include "ytimer.h" class TrayApp: public YWindow, public YTimerListener { public: TrayApp(ClientData *frame, YWindow *aParent); virtual ~TrayApp(); virtual bool isFocusTraversable(); virtual void paint(Graphics &g, const YRect &r); virtual void handleButton(const XButtonEvent &button); virtual void handleClick(const XButtonEvent &up, int count); virtual void handleCrossing(const XCrossingEvent &crossing); virtual void handleDNDEnter(); virtual void handleDNDLeave(); virtual bool handleTimer(YTimer *t); ClientData *getFrame() const { return fFrame; } void setShown(bool show); bool getShown() const { return fShown; } TrayApp *getNext() const { return fNext; } TrayApp *getPrev() const { return fPrev; } void setNext(TrayApp *next) { fNext = next; } void setPrev(TrayApp *prev) { fPrev = prev; } private: ClientData *fFrame; TrayApp *fPrev, *fNext; bool fShown; int selected; static YTimer *fRaiseTimer; #ifdef CONFIG_GRADIENTS static ref taskMinimizedGradient; static ref taskActiveGradient; static ref taskNormalGradient; #endif }; class IAppletContainer; class TrayPane: public YWindow { public: TrayPane(IAppletContainer *taskBar, YWindow *parent); ~TrayPane(); void insert(TrayApp *tapp); void remove(TrayApp *tapp); TrayApp *addApp(YFrameWindow *frame); void removeApp(YFrameWindow *frame); TrayApp *getFirst() const { return fFirst; } TrayApp *getLast() const { return fLast; } int getRequiredWidth(); void relayout() { fNeedRelayout = true; } void relayoutNow(); virtual void handleClick(const XButtonEvent &up, int count); virtual void paint(Graphics &g, const YRect &r); private: IAppletContainer *fTaskBar; TrayApp *fFirst, *fLast; int fCount; bool fNeedRelayout; }; #endif #endif icewm-1.3.7/src/ymsgbox.h0000644000076600007660000000214711463274240014261 0ustar develdevel#ifndef __YMSGBOX_H #define __YMSGBOX_H #include "ydialog.h" #include "ylabel.h" #include "yactionbutton.h" class YMsgBox; class YMsgBoxListener { public: virtual void handleMsgBox(YMsgBox *msgbox, int operation) = 0; protected: virtual ~YMsgBoxListener() {}; }; class YMsgBox: public YDialog, public YActionListener { public: YMsgBox(int buttons, YWindow *owner = 0); virtual ~YMsgBox(); void setTitle(const ustring &title); void setText(const ustring &text); void setPixmap(ref pixmap); void setMsgBoxListener(YMsgBoxListener *listener) { fListener = listener; } YMsgBoxListener *getMsgBoxListener() const { return fListener; } void actionPerformed(YAction *action, unsigned int modifiers); virtual void handleClose(); virtual void handleFocus(const XFocusChangeEvent &focus); enum { mbOK = 0x1, mbCancel = 0x2 }; void showFocused(); void autoSize(); private: YLabel *fLabel; YActionButton *fButtonOK; YActionButton *fButtonCancel; int addButton(YButton *button); YMsgBoxListener *fListener; }; #endif icewm-1.3.7/src/icetray.cc0000644000076600007660000001441011463274240014363 0ustar develdevel#include "config.h" #include "ylib.h" #include "ylocale.h" #include "yxapp.h" #include "yxtray.h" #include "base.h" #include "debug.h" #include #include #include #include "yprefs.h" extern void logEvent(const XEvent &xev); char const *ApplicationName = "icewmtray"; #include "yconfig.h" #ifdef CONFIG_TASKBAR YColor *taskBarBg; XSV(const char *, clrDefaultTaskBar, "rgb:C0/C0/C0") XIV(bool, trayDrawBevel, false) cfoption icewmbg_prefs[] = { OSV("ColorDefaultTaskBar", &clrDefaultTaskBar, "Background of the taskbar"), OBV("TrayDrawBevel", &trayDrawBevel, "Surround the tray with plastic border"), OK0() }; #endif class SysTray: public YWindow, public YXTrayNotifier { public: SysTray(); bool checkMessageEvent(const XClientMessageEvent &message); void requestDock(); void handleUnmap(const XUnmapEvent &ev) { YWindow::handleUnmap(ev); MSG(("hide1")); // if (visible() && ev.window == handle()) { MSG(("hide2")); hide(); fManaged = false; // } } void trayChanged(); private: Atom icewm_internal_tray; Atom _NET_SYSTEM_TRAY_OPCODE; YXTray *fTray2; bool fManaged; }; class SysTrayApp: public YXApplication { public: SysTrayApp(int *argc, char ***argv, const char *displayName = 0); ~SysTrayApp(); void loadConfig(); //MCM OFFICIAL bool filterEvent(const XEvent &xev); void handleSignal(int sig); private: SysTray *tray; }; int handler(Display *display, XErrorEvent *xev) { DBG { char message[80], req[80], number[80]; sprintf(number, "%d", xev->request_code); XGetErrorDatabaseText(display, "XRequest", number, "", req, sizeof(req)); if (!req[0]) sprintf(req, "[request_code=%d]", xev->request_code); if (XGetErrorText(display, xev->error_code, message, sizeof(message)) != Success) *message = '\0'; warn("X error %s(0x%lX): %s", req, xev->resourceid, message); } return 0; } SysTrayApp::SysTrayApp(int *argc, char ***argv, const char *displayName): YXApplication(argc, argv, displayName) { desktop->setStyle(YWindow::wsDesktopAware); catchSignal(SIGINT); catchSignal(SIGTERM); catchSignal(SIGHUP); loadConfig(); XSetErrorHandler(handler); tray = new SysTray(); } void SysTrayApp::loadConfig() { #ifdef CONFIG_TASKBAR #ifndef NO_CONFIGURE { clrDefaultTaskBar="rgb:C0/C0/C0"; trayDrawBevel=false; cfoption theme_prefs[] = { OSV("Theme", &themeName, "Theme name"), OK0() }; YConfig::findLoadConfigFile(theme_prefs, "preferences"); YConfig::findLoadConfigFile(theme_prefs, "theme"); } YConfig::findLoadConfigFile(icewmbg_prefs, "preferences"); if (themeName != 0) { MSG(("themeName=%s", themeName)); YConfig::findLoadConfigFile(icewmbg_prefs, upath("themes").child(themeName)); } YConfig::findLoadConfigFile(icewmbg_prefs, "prefoverride"); #endif if (taskBarBg) delete taskBarBg; taskBarBg = new YColor(clrDefaultTaskBar); #endif } SysTrayApp::~SysTrayApp() { } bool SysTrayApp::filterEvent(const XEvent &xev) { #ifdef DEBUG logEvent(xev); #endif if (xev.type == ClientMessage) { tray->checkMessageEvent(xev.xclient); return false; } else if (xev.type == MappingNotify) { MSG(("tray mapping1")); if (xev.xmapping.window == tray->handle()) { MSG(("tray mapping")); } } return false; } void SysTrayApp::handleSignal(int sig) { switch (sig) { case SIGHUP: // Reload config colors from theme file and notify tray to repaint loadConfig(); tray->trayChanged(); return; case SIGINT: case SIGTERM: MSG(("exiting.")); exit(0); return; } YXApplication::handleSignal(sig); } SysTray::SysTray(): YWindow(0) { desktop->setStyle(YWindow::wsDesktopAware); char trayatom[64]; sprintf(trayatom, "_NET_SYSTEM_TRAY_S%d", xapp->screen()); fTray2 = new YXTray(this, false, trayatom, this); char trayatom2[64]; sprintf(trayatom2, "_ICEWM_INTTRAY_S%d", xapp->screen()); icewm_internal_tray = XInternAtom(xapp->display(), trayatom2, False); _NET_SYSTEM_TRAY_OPCODE = XInternAtom(xapp->display(), "_NET_SYSTEM_TRAY_OPCODE", False); fTray2->relayout(); setSize(fTray2->width(), fTray2->height()); fTray2->show(); fManaged = false; requestDock(); } void SysTray::trayChanged() { fTray2->backgroundChanged(); setSize(fTray2->width(), fTray2->height()); if (fTray2->visible()) { if (!fManaged) requestDock(); else show(); } else { fManaged = false; hide(); } } void SysTray::requestDock() { Window w = XGetSelectionOwner(xapp->display(), icewm_internal_tray); if (w && w != handle()) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = w; xev.message_type = _NET_SYSTEM_TRAY_OPCODE; xev.format = 32; xev.data.l[0] = CurrentTime; xev.data.l[1] = SYSTEM_TRAY_REQUEST_DOCK; xev.data.l[2] = handle(); //fTray2->handle(); XSendEvent(xapp->display(), w, False, StructureNotifyMask, (XEvent *) &xev); } fManaged = true; } bool SysTray::checkMessageEvent(const XClientMessageEvent &message) { if (message.message_type == icewm_internal_tray) { MSG(("requestDock %lX", (long)handle())); setSize(fTray2->width(), fTray2->height()); MSG(("requestDock2 %d %d", width(), height())); if (fTray2->visible()) requestDock(); else fManaged = false; } return true; } int main(int argc, char **argv) { YLocale locale; SysTrayApp stapp(&argc, &argv); return app->mainLoop(); } icewm-1.3.7/src/ascii.h0000644000076600007660000000160611463274240013660 0ustar develdevel#ifndef __ASCII_H #define __ASCIIH_ class ASCII { public: static bool isLower(char c) { return c >= 'a' && c <= 'z'; } static bool isUpper(char c) { return c >= 'A' && c <= 'Z'; } static char toUpper(char c) { return isLower(c) ? (char)(c - ' ') : c; } static char toLower(char c) { return isUpper(c) ? (char)(c + ' ') : c; } static bool isSpaceOrTab(char c) { return c == ' ' || c == '\t'; } static bool isLower(int c) { return c >= 'a' && c <= 'z'; } static bool isUpper(int c) { return c >= 'A' && c <= 'Z'; } static int toUpper(int c) { return isLower(c) ? (char)(c - ' ') : c; } static int toLower(int c) { return isUpper(c) ? (char)(c + ' ') : c; } static bool isSpaceOrTab(int c) { return c == ' ' || c == '\t'; } }; #endif icewm-1.3.7/src/ypopup.h0000644000076600007660000000433511463274240014126 0ustar develdevel#ifndef _YPOPUP_H #define _YPOPUP_H #include "ywindow.h" class YPopDownListener { public: virtual void handlePopDown(YPopupWindow *popup) = 0; protected: virtual ~YPopDownListener() {}; }; class YPopupWindow: public YWindow { public: YPopupWindow(YWindow *aParent); virtual ~YPopupWindow(); virtual void sizePopup(int hspace); bool popup(YWindow *owner, YWindow *forWindow, YPopDownListener *popDown, int xiScreen, unsigned int flags); bool popup(YWindow *owner, YWindow *forWindow, YPopDownListener *popDown, int x, int y, unsigned int flags); private: bool popup(YWindow *owner, YWindow *forWindow, YPopDownListener *popDown, int x, int y, int x_delta, int y_delta, int xiScreen, unsigned int flags); friend class YMenu; friend class YButton; public: void popdown(); virtual void updatePopup(); void finishPopup(); void cancelPopup(); virtual bool handleKey(const XKeyEvent &key); virtual void handleButton(const XButtonEvent &button); virtual void handleMotion(const XMotionEvent &motion); virtual void handleMotionOutside(bool top, const XMotionEvent &motion); void dispatchMotionOutside(bool top, const XMotionEvent &motion); virtual void activatePopup(int flags); virtual void deactivatePopup(); unsigned int popupFlags() const { return fFlags; } YPopupWindow *prevPopup() const { return fPrevPopup; } void setPrevPopup(YPopupWindow *prevPopup) { fPrevPopup = prevPopup; } enum { pfButtonDown = 1 << 0, pfCanFlipVertical = 1 << 1, pfCanFlipHorizontal = 1 << 2, pfFlipVertical = 1 << 3, pfFlipHorizontal = 1 << 4, pfNoPointerChange = 1 << 5, pfPopupMenu = 1 << 6 } PopupFlags; YWindow *owner() { return fOwner; } int getXiScreen() { return fXiScreen; } private: unsigned int fFlags; YWindow *fForWindow; YPopDownListener *fPopDownListener; YPopupWindow *fPrevPopup; YWindow *fOwner; bool fUp; int fXiScreen; }; #endif icewm-1.3.7/src/wmtaskbar.cc0000644000076600007660000010210111463274240014711 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek * * TaskBar */ #include "config.h" #ifdef CONFIG_TASKBAR #include "ypixbuf.h" #include "yfull.h" #include "ypaint.h" #include "wmtaskbar.h" #include "yprefs.h" #include "ymenuitem.h" #include "wmmgr.h" #include "wmframe.h" #include "wmclient.h" #include "wmapp.h" #include "wmaction.h" #include "wmprog.h" #include "sysdep.h" #include "wmwinlist.h" #include "aaddressbar.h" #include "aclock.h" #include "acpustatus.h" #include "apppstatus.h" #include "amailbox.h" #include "objbar.h" #include "objbutton.h" #include "objmenu.h" #include "atasks.h" #include "atray.h" #include "aworkspaces.h" #include "yrect.h" #include "yxtray.h" #include "prefs.h" #include "yicon.h" #include "aapm.h" #include "upath.h" #include "intl.h" #ifdef CONFIG_TRAY YTimer *TrayApp::fRaiseTimer(NULL); #endif YTimer *WorkspaceButton::fRaiseTimer(NULL); TaskBar *taskBar = 0; YColor *taskBarBg = 0; static ref startImage; static ref windowsImage; static ref showDesktopImage; static ref collapseImage; static ref expandImage; /// TODO #warning "these should be static/elsewhere" ref taskbackPixmap; #ifdef CONFIG_GRADIENTS ref taskbackPixbuf; ref taskbuttonPixbuf; ref taskbuttonactivePixbuf; ref taskbuttonminimizedPixbuf; #endif static void initPixmaps() { upath base("taskbar"); ref themedirs = YResourcePaths::subdirs(base, true); ref subdirs = YResourcePaths::subdirs(base); /* * that sucks, a neccessary workaround for differering startmenu pixmap * filename. This will be unified and be a forced standard in * icewm-2 */ startImage = themedirs->loadImage(base, "start.xpm"); #if 1 if (startImage == null || !startImage->valid()) startImage = themedirs->loadImage(base, "linux.xpm"); if (startImage == null || !startImage->valid()) startImage = themedirs->loadImage(base, "icewm.xpm"); if (startImage == null || !startImage->valid()) startImage = subdirs->loadImage(base, "icewm.xpm"); if (startImage == null || !startImage->valid()) startImage = subdirs->loadImage(base, "start.xpm"); #endif windowsImage = subdirs->loadImage(base, "windows.xpm"); showDesktopImage = subdirs->loadImage(base, "desktop.xpm"); collapseImage = subdirs->loadImage(base, "collapse.xpm"); expandImage = subdirs->loadImage(base, "expand.xpm"); #ifdef CONFIG_GRADIENTS if (taskbackPixbuf == null) taskbackPixmap = subdirs->loadPixmap(base, "taskbarbg.xpm"); if (taskbuttonPixbuf == null) taskbuttonPixmap = subdirs->loadPixmap(base, "taskbuttonbg.xpm"); if (taskbuttonactivePixbuf == null) taskbuttonactivePixmap = subdirs->loadPixmap(base, "taskbuttonactive.xpm"); if (taskbuttonminimizedPixbuf == null) taskbuttonminimizedPixmap = subdirs->loadPixmap(base, "taskbuttonminimized.xpm"); #else taskbackPixmap = subdirs->loadPixmap(base, "taskbarbg.xpm"); taskbuttonPixmap = subdirs->loadPixmap(base, "taskbuttonbg.xpm"); taskbuttonactivePixmap = subdirs->loadPixmap(base, "taskbuttonactive.xpm"); taskbuttonminimizedPixmap = subdirs->loadPixmap(base, "taskbuttonminimized.xpm"); #endif #ifdef CONFIG_APPLET_MAILBOX base = "mailbox/"; subdirs = YResourcePaths::subdirs(base); mailPixmap = subdirs->loadPixmap(base, "mail.xpm"); noMailPixmap = subdirs->loadPixmap(base, "nomail.xpm"); errMailPixmap = subdirs->loadPixmap(base, "errmail.xpm"); unreadMailPixmap = subdirs->loadPixmap(base, "unreadmail.xpm"); newMailPixmap = subdirs->loadPixmap(base, "newmail.xpm"); #endif #ifdef CONFIG_APPLET_CLOCK base = "ledclock/"; subdirs = YResourcePaths::subdirs(base); PixNum[0] = subdirs->loadPixmap(base, "n0.xpm"); PixNum[1] = subdirs->loadPixmap(base, "n1.xpm"); PixNum[2] = subdirs->loadPixmap(base, "n2.xpm"); PixNum[3] = subdirs->loadPixmap(base, "n3.xpm"); PixNum[4] = subdirs->loadPixmap(base, "n4.xpm"); PixNum[5] = subdirs->loadPixmap(base, "n5.xpm"); PixNum[6] = subdirs->loadPixmap(base, "n6.xpm"); PixNum[7] = subdirs->loadPixmap(base, "n7.xpm"); PixNum[8] = subdirs->loadPixmap(base, "n8.xpm"); PixNum[9] = subdirs->loadPixmap(base, "n9.xpm"); PixSpace = subdirs->loadPixmap(base, "space.xpm"); PixColon = subdirs->loadPixmap(base, "colon.xpm"); PixSlash = subdirs->loadPixmap(base, "slash.xpm"); PixDot = subdirs->loadPixmap(base, "dot.xpm"); PixA = subdirs->loadPixmap(base, "a.xpm"); PixP = subdirs->loadPixmap(base, "p.xpm"); PixM = subdirs->loadPixmap(base, "m.xpm"); PixPercent = subdirs->loadPixmap(base, "percent.xpm"); #endif } EdgeTrigger::EdgeTrigger(TaskBar *owner) { setStyle(wsOverrideRedirect | wsInputOnly); setPointer(YXApplication::leftPointer); setDND(true); fTaskBar = owner; fAutoHideTimer = new YTimer(autoShowDelay); if (fAutoHideTimer) { fAutoHideTimer->setTimerListener(this); } fDoShow = false; } EdgeTrigger::~EdgeTrigger() { if (fAutoHideTimer) { fAutoHideTimer->stopTimer(); fAutoHideTimer->setTimerListener(0); delete fAutoHideTimer; fAutoHideTimer = 0; } } void EdgeTrigger::startHide() { fDoShow = false; if (fAutoHideTimer) fAutoHideTimer->startTimer(autoHideDelay); } void EdgeTrigger::stopHide() { fDoShow = false; if (fAutoHideTimer) fAutoHideTimer->stopTimer(); } extern unsigned int ignore_enternotify_hack; void EdgeTrigger::handleCrossing(const XCrossingEvent &crossing) { if (crossing.type == EnterNotify /* && crossing.mode != NotifyNormal */) { if (crossing.serial != ignore_enternotify_hack && crossing.serial != ignore_enternotify_hack + 1) { MSG(("enter notify %d %d", crossing.mode, crossing.detail)); fDoShow = true; if (fAutoHideTimer) { fAutoHideTimer->startTimer(autoShowDelay); } } } else if (crossing.type == LeaveNotify /* && crossing.mode != NotifyNormal */) { fDoShow = false; MSG(("leave notify")); if (fAutoHideTimer) fAutoHideTimer->stopTimer(); } } void EdgeTrigger::handleDNDEnter() { fDoShow = true; if (fAutoHideTimer) fAutoHideTimer->startTimer(autoShowDelay); } void EdgeTrigger::handleDNDLeave() { fDoShow = false; if (fAutoHideTimer) fAutoHideTimer->startTimer(autoHideDelay); } bool EdgeTrigger::handleTimer(YTimer *t) { MSG(("taskbar handle timer")); if (t == fAutoHideTimer) { fTaskBar->autoTimer(fDoShow); return false; } return false; } TaskBar::TaskBar(YWindow *aParent): #if 1 YFrameClient(aParent, 0) INIT_GRADIENT(fGradient, NULL) #else YWindow(aParent) INIT_GRADIENT(fGradient, NULL) #endif { taskBar = this; fIsMapped = false; fIsHidden = taskBarAutoHide; fIsCollapsed = false; fFullscreen = false; fMenuShown = false; fNeedRelayout = false; fAddressBar = 0; fShowDesktop = 0; if (taskBarBg == 0) { taskBarBg = new YColor(clrDefaultTaskBar); } ///setToplevel(true); initPixmaps(); #if 1 setWindowTitle(_("Task Bar")); setIconTitle(_("Task Bar")); setClassHint("icewm", "TaskBar"); setWinStateHint(WinStateAllWorkspaces, WinStateAllWorkspaces); //!!!setWinStateHint(WinStateDockHorizontal, WinStateDockHorizontal); setWinHintsHint(WinHintsSkipFocus | WinHintsSkipWindowMenu | WinHintsSkipTaskBar); setWinWorkspaceHint(0); setWinLayerHint((taskBarAutoHide || fFullscreen) ? WinLayerAboveAll : fIsCollapsed ? WinLayerAboveDock : taskBarKeepBelow ? WinLayerBelow : WinLayerDock); { XWMHints wmh; memset(&wmh, 0, sizeof(wmh)); wmh.flags = InputHint; wmh.input = False; //wmh. XSetWMHints(xapp->display(), handle(), &wmh); } { long wk[4] = { 0, 0, 0, 0 }; XChangeProperty(xapp->display(), handle(), _XA_NET_WM_STRUT, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&wk, 4); } { MwmHints mwm; memset(&mwm, 0, sizeof(mwm)); mwm.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; mwm.functions = MWM_FUNC_MOVE /*| MWM_FUNC_RESIZE*/; mwm.decorations = 0; //MWM_DECOR_BORDER /*|MWM_DECOR_RESIZEH*/; setMwmHints(mwm); } #else setStyle(wsOverrideRedirect); #endif { long arg[2]; arg[0] = NormalState; arg[1] = 0; XChangeProperty(xapp->display(), handle(), _XA_WM_STATE, _XA_WM_STATE, 32, PropModeReplace, (unsigned char *)arg, 2); } setPointer(YXApplication::leftPointer); setDND(true); fEdgeTrigger = new EdgeTrigger(this); initMenu(); initApplets(); getPropertiesList(); getWMHints(); fIsMapped = true; } TaskBar::~TaskBar() { detachDesktopTray(); delete fEdgeTrigger; fEdgeTrigger = 0; #ifdef CONFIG_APPLET_CLOCK delete fClock; fClock = 0; #endif #ifdef CONFIG_APPLET_MAILBOX for (MailBoxStatus ** m(fMailBoxStatus); m && *m; ++m) delete *m; delete[] fMailBoxStatus; fMailBoxStatus = 0; #endif delete fApplications; fApplications = 0; #ifdef CONFIG_WINMENU delete fWinList; fWinList = 0; #endif #ifndef NO_CONFIGURE_MENUS delete fObjectBar; fObjectBar = 0; #endif delete fWorkspaces; taskbackPixmap = null; taskbuttonPixmap = null; taskbuttonactivePixmap = null; taskbuttonminimizedPixmap = null; #ifdef CONFIG_GRADIENT taskbackPixbuf = null; taskbuttonPixbuf = null; taskbuttonactivePixbuf = null; taskbuttonminimizedPixbuf = null; delete fGradient; #endif startImage = null; windowsImage = null; showDesktopImage = null;; #ifdef CONFIG_APPLET_MAILBOX mailPixmap = null; noMailPixmap = null; errMailPixmap = null; unreadMailPixmap = null; newMailPixmap = null; #endif #ifdef CONFIG_APPLET_CLOCK PixSpace = null; PixSlash = null; PixDot = null; PixA = null; PixP = null; PixM = null; PixColon = null; for (int n = 0; n < 10; n++) PixNum[n] = null; #endif #ifdef CONFIG_APPLET_APM delete fApm; fApm = 0; #endif #ifdef HAVE_NET_STATUS delete [] fNetStatus; #endif taskBar = 0; MSG(("taskBar delete")); } void TaskBar::initMenu() { taskBarMenu = new YMenu(); if (taskBarMenu) { taskBarMenu->setActionListener(this); taskBarMenu->addItem(_("Tile _Vertically"), -2, KEY_NAME(gKeySysTileVertical), actionTileVertical); taskBarMenu->addItem(_("T_ile Horizontally"), -2, KEY_NAME(gKeySysTileHorizontal), actionTileHorizontal); taskBarMenu->addItem(_("Ca_scade"), -2, KEY_NAME(gKeySysCascade), actionCascade); taskBarMenu->addItem(_("_Arrange"), -2, KEY_NAME(gKeySysArrange), actionArrange); taskBarMenu->addItem(_("_Minimize All"), -2, KEY_NAME(gKeySysMinimizeAll), actionMinimizeAll); taskBarMenu->addItem(_("_Hide All"), -2, KEY_NAME(gKeySysHideAll), actionHideAll); taskBarMenu->addItem(_("_Undo"), -2, KEY_NAME(gKeySysUndoArrange), actionUndoArrange); if (minimizeToDesktop) taskBarMenu->addItem(_("Arrange _Icons"), -2, KEY_NAME(gKeySysArrangeIcons), actionArrangeIcons)->setEnabled(false); taskBarMenu->addSeparator(); #ifdef CONFIG_WINMENU taskBarMenu->addItem(_("_Windows"), -2, actionWindowList, windowListMenu); #endif taskBarMenu->addSeparator(); taskBarMenu->addItem(_("_Refresh"), -2, null, actionRefresh); #ifndef LITE #if 0 YMenu *helpMenu; // !!! helpMenu = new YMenu(); helpMenu->addItem(_("_License"), -2, "", actionLicense); helpMenu->addSeparator(); helpMenu->addItem(_("_About"), -2, "", actionAbout); #endif taskBarMenu->addItem(_("_About"), -2, actionAbout, 0); #endif if (logoutMenu) { taskBarMenu->addSeparator(); if (showLogoutSubMenu) taskBarMenu->addItem(_("_Logout..."), -2, actionLogout, logoutMenu); else taskBarMenu->addItem(_("_Logout..."), -2, "", actionLogout); } } } void TaskBar::initApplets() { #ifdef CONFIG_APPLET_CPU_STATUS if (taskBarShowCPUStatus) fCPUStatus = new CPUStatus(this, cpustatusShowRamUsage, cpustatusShowSwapUsage, cpustatusShowAcpiTemp, cpustatusShowCpuFreq); else fCPUStatus = 0; #endif #ifdef CONFIG_APPLET_NET_STATUS fNetStatus = 0; #ifdef HAVE_NET_STATUS if (taskBarShowNetStatus && netDevice) { mstring networkDevices(netDevice); mstring s(null), r(null); int cnt = 0; for (s = networkDevices; s.splitall(' ', &s, &r); s = r) cnt++; networkDevices = netDevice; if (cnt) { fNetStatus = new NetStatus*[cnt + 1]; fNetStatus[cnt--] = NULL; for (s = networkDevices; s.splitall(' ', &s, &r); s = r) { fNetStatus[cnt--] = new NetStatus(s, this, this); } } } #endif #endif #ifdef CONFIG_APPLET_CLOCK if (taskBarShowClock) { fClock = new YClock(this); } else fClock = 0; #endif #ifdef CONFIG_APPLET_APM if (taskBarShowApm && (access(APMDEV, 0) == 0 || access("/proc/acpi", 0) == 0 || access("/dev/acpi", 0) == 0 || access("/proc/pmu", R_OK|X_OK) == 0)) { fApm = new YApm(this); } else fApm = 0; #endif if (taskBarShowCollapseButton) { fCollapseButton = new YButton(this, actionCollapseTaskbar); if (fCollapseButton) { fCollapseButton->setText(">"); fCollapseButton->setImage(collapseImage); fCollapseButton->setActionListener(this); } } else fCollapseButton = 0; #ifdef CONFIG_APPLET_MAILBOX fMailBoxStatus = 0; if (taskBarShowMailboxStatus) { char const * mailboxList(mailBoxPath ? mailBoxPath : getenv("MAIL")); unsigned cnt = 0; mstring mailboxes(mailboxList); mstring s(null), r(null); for (s = mailboxes; s.splitall(' ', &s, &r); s = r) cnt++; if (cnt) { fMailBoxStatus = new MailBoxStatus*[cnt + 1]; fMailBoxStatus[cnt--] = NULL; for (s = mailboxes; s.splitall(' ', &s, &r); s = r) { fMailBoxStatus[cnt--] = new MailBoxStatus(s, this); } } else if (getenv("MAIL")) { fMailBoxStatus = new MailBoxStatus*[2]; fMailBoxStatus[0] = new MailBoxStatus(getenv("MAIL"), this); fMailBoxStatus[1] = NULL; } else if (getlogin()) { char * mbox = cstrJoin("/var/spool/mail/", getlogin(), NULL); if (!access(mbox, R_OK)) { fMailBoxStatus = new MailBoxStatus*[2]; fMailBoxStatus[0] = new MailBoxStatus(mbox, this); fMailBoxStatus[1] = NULL; } delete[] mbox; } } #endif #ifndef NO_CONFIGURE_MENUS if (taskBarShowStartMenu) { fApplications = new ObjectButton(this, rootMenu); fApplications->setActionListener(this); fApplications->setImage(startImage); fApplications->setToolTip(_("Favorite applications")); } else fApplications = 0; fObjectBar = new ObjectBar(this); if (fObjectBar) { upath t = app->findConfigFile("toolbar"); if (t != null) { loadMenus(t, fObjectBar); } } #endif #ifdef CONFIG_WINMENU if (taskBarShowWindowListMenu) { fWinList = new ObjectButton(this, windowListMenu); fWinList->setImage(windowsImage); fWinList->setActionListener(this); fWinList->setToolTip(_("Window list menu")); } else fWinList = 0; #endif if (taskBarShowShowDesktopButton) { fShowDesktop = new ObjectButton(this, actionShowDesktop); fShowDesktop->setText("__"); fShowDesktop->setImage(showDesktopImage); fShowDesktop->setActionListener(wmapp); fShowDesktop->setToolTip(_("Show Desktop")); } if (taskBarShowWorkspaces && workspaceCount > 0) { fWorkspaces = new WorkspacesPane(this); } else fWorkspaces = 0; #ifdef CONFIG_ADDRESSBAR if (enableAddressBar) fAddressBar = new AddressBar(this); #endif if (taskBarShowWindows) { fTasks = new TaskPane(this, this); } else fTasks = 0; #ifdef CONFIG_TRAY if (taskBarShowTray) { fWindowTray = new TrayPane(this, this); } else fWindowTray = 0; #endif char trayatom[64]; sprintf(trayatom,"_ICEWM_INTTRAY_S%d", xapp->screen()); fDesktopTray = new YXTray(this, true, trayatom, this); fDesktopTray->relayout(); } void TaskBar::trayChanged() { relayout(); // updateLayout(); } void TaskBar::updateLayout(int &size_w, int &size_h) { struct { YWindow *w; bool left; int row; // 0 = bottom, 1 = top bool show; int pre, post; bool expand; } *wl, wlist[] = { #ifndef NO_CONFIGURE_MENUS { fApplications, true, 1, true, 0, 0, true }, #endif { fShowDesktop, true, 0, true, 0, 0, true }, #ifdef CONFIG_WINMENU { fWinList, true, 0, true, 0, 0, true}, #endif #ifndef NO_CONFIGURE_MENUS { fObjectBar, true, 1, true, 4, 0, true }, #endif { fWorkspaces, taskBarWorkspacesLeft, 0, true, 4, 4, true }, { fCollapseButton, false, 0, true, 0, 2, true }, #ifdef CONFIG_APPLET_CLOCK { fClock, false, 1, true, 2, 2, false }, #endif #ifdef CONFIG_APPLET_MAILBOX { fMailBoxStatus ? fMailBoxStatus[0] : 0, false, 1, true, 1, 1, false }, /// TODO #warning "a hack" { fMailBoxStatus && fMailBoxStatus[0] ? fMailBoxStatus[1] : 0, false, 1, true, 1, 1, false }, { fMailBoxStatus && fMailBoxStatus[0] && fMailBoxStatus[1] ? fMailBoxStatus[2] : 0, false, 1, true, 1, 1, false }, { fMailBoxStatus && fMailBoxStatus[0] && fMailBoxStatus[1] && fMailBoxStatus[2] ? fMailBoxStatus[3] : 0, false, 1, true, 1, 1, false }, { fMailBoxStatus && fMailBoxStatus[0] && fMailBoxStatus[1] && fMailBoxStatus[2] && fMailBoxStatus[3] ? fMailBoxStatus[4] : 0, false, 1, true, 1, 1, false }, { fMailBoxStatus && fMailBoxStatus[0] && fMailBoxStatus[1] && fMailBoxStatus[2] && fMailBoxStatus[3] && fMailBoxStatus[4] ? fMailBoxStatus[5] : 0, false, 1, true, 1, 1, false }, #endif #ifdef CONFIG_APPLET_CPU_STATUS { fCPUStatus, false, 1, true, 2, 2, false }, #endif #ifdef CONFIG_APPLET_NET_STATUS #ifdef CONFIG_APPLET_MAILBOX { fNetStatus ? fNetStatus[0] : 0, false, 1, false, 1, 1, false }, /// TODO #warning "a hack" { fNetStatus && fNetStatus[0] ? fNetStatus[1] : 0, false, 1, false, 1, 1, false }, { fNetStatus && fNetStatus[0] && fNetStatus[1] ? fNetStatus[2] : 0, false, 1, false, 1, 1, false }, #endif #endif #ifdef CONFIG_APPLET_APM { fApm, false, 1, true, 0, 2, false }, #endif { fDesktopTray, false, 1, true, 1, 1, false }, #ifdef CONFIG_TRAY { fWindowTray, false, 0, true, 1, 1, true }, #endif }; const int wcount = sizeof(wlist)/sizeof(wlist[0]); int w = 0; int y[2] = { 0, 0 }; int h[2] = { 0, 0 }; int left[2] = { 0, 0 }; int right[2] = { 0, 0 }; int i; for (i = 0; wl = wlist + i, i < wcount; i++) { if (!taskBarDoubleHeight) wl->row = 0; } for (i = 0; wl = wlist + i, i < wcount; i++) { if (wl->w == 0) continue; if (wl->w->height() > h[wl->row]) h[wl->row] = wl->w->height(); } { int dx, dy, dw, dh; manager->getScreenGeometry(&dx, &dy, &dw, &dh); w = dw; } if (taskBarAtTop) { // !!! for now y[1] = 0; y[0] = h[1] + y[1]; #if 0 y[0] = 0; if (fIsHidden) y[0]++; y[1] = h[0] + y[0]; #endif } else { y[1] = 1; y[0] = h[1] + y[1]; } right[0] = w; right[1] = w; if (taskBarShowWindows && fTasks != 0) { #ifdef LITE if (h[0] < 16) h[0] = 16; #else if (h[0] < YIcon::smallSize() + 8) h[0] = YIcon::smallSize() + 8; #endif } for (i = 0; wl = wlist + i, i < wcount; i++) { if (wl->w == 0) continue; if (!wl->show && !wl->w->visible()) continue; int xx = 0; int yy = 0; int ww = wl->w->width(); int hh = h[wl->row]; if (wl->expand) { yy = y[wl->row]; } else { hh = wl->w->height(); yy = y[wl->row] + (h[wl->row] - wl->w->height()) / 2; } if (wl->left) { xx = left[wl->row] + wl->pre; left[wl->row] += ww + wl->pre + wl->post; } else { xx = right[wl->row] - ww - wl->pre; right[wl->row] -= ww + wl->pre + wl->post; } wl->w->setGeometry(YRect(xx, yy, ww, hh)); if (wl->show) wl->w->show(); } /* ----------------------------------------------------------------- */ if (taskBarShowWindows) { if (fTasks) { fTasks->setGeometry(YRect(left[0], y[0], right[0] - left[0], h[0])); fTasks->show(); fTasks->relayout(); } } #ifdef CONFIG_ADDRESSBAR if (fAddressBar) { int row = taskBarDoubleHeight ? 1 : 0; fAddressBar->setGeometry(YRect(left[row], y[row] + 2, right[row] - left[row], h[row] - 4)); fAddressBar->raise(); if (::showAddressBar) { if (taskBarDoubleHeight || !taskBarShowWindows) fAddressBar->show(); } } #endif size_w = w; size_h = h[0] + h[1] + 1; } void TaskBar::relayoutNow() { #ifdef CONFIG_TRAY if (taskBar && taskBar->windowTrayPane()) taskBar->windowTrayPane()->relayoutNow(); #endif if (fNeedRelayout) { updateLocation(); fNeedRelayout = false; } if (taskBar->taskPane()) taskBar->taskPane()->relayoutNow(); } void TaskBar::updateFullscreen(bool fullscreen) { fFullscreen = fullscreen; if (fFullscreen || fIsHidden) fEdgeTrigger->show(); else fEdgeTrigger->hide(); } void TaskBar::updateLocation() { int dx, dy, dw, dh; manager->getScreenGeometry(&dx, &dy, &dw, &dh, -1); int x = dx; int y = dy; int w = 0; int h = 0; updateLayout(w, h); if (fIsCollapsed) { if (fCollapseButton) { w = fCollapseButton->width(); h = fCollapseButton->height(); } else { w = h = 0; } x = dw - w; if (taskBarAtTop) y = 0; else y = dh - h; if (fCollapseButton) { fCollapseButton->show(); fCollapseButton->raise(); fCollapseButton->setPosition(0, 0); } } //if (fIsHidden) { // h = 1; // y = taskBarAtTop ? dy : dy + dh - 1; //} else { y = taskBarAtTop ? dy : dy + dh - h; //} int by = taskBarAtTop ? dy : dy + dh - 1; fEdgeTrigger->setGeometry(YRect(x, by, w, 1)); if (fIsHidden) { if (fIsMapped && getFrame()) getFrame()->wmHide(); else hide(); } else { if (fIsMapped && getFrame()) { getFrame()->configureClient(x, y, w, h); getFrame()->wmShow(); } else setGeometry(YRect(x, y, w, h)); } if (fIsHidden || fFullscreen) fEdgeTrigger->show(); else fEdgeTrigger->hide(); /// TODO #warning "optimize this" { MwmHints mwm; memset(&mwm, 0, sizeof(mwm)); mwm.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; mwm.functions = MWM_FUNC_MOVE /*| MWM_FUNC_RESIZE*/; if (fIsHidden) mwm.decorations = 0; else mwm.decorations = 0; //MWM_DECOR_BORDER /*| //MWM_DECOR_RESIZEH*/; XChangeProperty(xapp->display(), handle(), _XATOM_MWM_HINTS, _XATOM_MWM_HINTS, 32, PropModeReplace, (unsigned char *)&mwm, sizeof(mwm)/sizeof(long)); ///!!! getMwmHints(); if (getFrame()) getFrame()->updateMwmHints(); } ///!!! fix updateWMHints(); } void TaskBar::updateWMHints() { int dx, dy, dw, dh; manager->getScreenGeometry(&dx, &dy, &dw, &dh); long wk[4] = { 0, 0, 0, 0 }; if (!taskBarAutoHide && !fIsCollapsed && getFrame()) { if (taskBarAtTop) wk[2] = getFrame()->y() + getFrame()->height(); else wk[3] = dh - getFrame()->y(); } MSG(("SET NET WM STRUT")); XChangeProperty(xapp->display(), handle(), _XA_NET_WM_STRUT, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&wk, 4); if (getFrame()) { getFrame()->updateNetWMStrut(); } } void TaskBar::handleCrossing(const XCrossingEvent &crossing) { if (crossing.serial != ignore_enternotify_hack && crossing.serial != ignore_enternotify_hack + 1) { if (crossing.type == EnterNotify /* && crossing.mode != NotifyNormal */) { fEdgeTrigger->stopHide(); } else if (crossing.type == LeaveNotify /* && crossing.mode != NotifyNormal */) { if (crossing.detail != NotifyInferior && crossing.detail != NotifyVirtual && crossing.detail != NotifyAncestor) { MSG(("taskbar hide: %d", crossing.detail)); fEdgeTrigger->startHide(); } else { fEdgeTrigger->stopHide(); } } } } void TaskBar::handleEndPopup(YPopupWindow *popup) { if (!hasPopup()) { MSG(("taskbar hide2")); //fEdgeTrigger->startHide(); } YWindow::handleEndPopup(popup); } void TaskBar::paint(Graphics &g, const YRect &/*r*/) { #ifdef CONFIG_GRADIENTS if (taskbackPixbuf != null && !(fGradient != null && fGradient->width() == width() && fGradient->height() == height())) { fGradient = taskbackPixbuf->scale(width(), height()); } #endif g.setColor(taskBarBg); //g.draw3DRect(0, 0, width() - 1, height() - 1, true); #ifdef CONFIG_GRADIENTS if (fGradient != null) g.drawImage(fGradient, 0, 0, width(), height(), 0, 0); else #endif if (taskbackPixmap != null) g.fillPixmap(taskbackPixmap, 0, 0, width(), height()); else { int y = taskBarAtTop ? 0 : 1; g.fillRect(0, y, width(), height() - 1); if (!taskBarAtTop) { y++; g.setColor(taskBarBg->brighter()); g.drawLine(0, 0, width(), 0); } else { g.setColor(taskBarBg->darker()); g.drawLine(0, height() - 1, width(), height() - 1); } } } bool TaskBar::handleKey(const XKeyEvent &key) { return YWindow::handleKey(key); } void TaskBar::handleButton(const XButtonEvent &button) { #ifdef CONFIG_WINLIST if ((button.type == ButtonRelease) && (button.button == 1 || button.button == 3) && (BUTTON_MODMASK(button.state) == Button1Mask + Button3Mask)) { if (windowList) windowList->showFocused(button.x_root, button.y_root); } else #endif { if (button.type == ButtonPress) { manager->updateWorkArea(); if (button.button == 1) { if (button.state & xapp->AltMask) lower(); else if (!(button.state & ControlMask)) raise(); } } } YWindow::handleButton(button); } void TaskBar::contextMenu(int x_root, int y_root) { taskBarMenu->popup(this, 0, 0, x_root, y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal); } void TaskBar::handleClick(const XButtonEvent &up, int count) { if (up.button == 1) { } else if (up.button == 2) { #ifdef CONFIG_WINLIST if (windowList) windowList->showFocused(up.x_root, up.y_root); #endif } else { if (up.button == 3 && count == 1 && IS_BUTTON(up.state, Button3Mask)) { contextMenu(up.x_root, up.y_root); } } } void TaskBar::handleEndDrag(const XButtonEvent &/*down*/, const XButtonEvent &/*up*/) { xapp->releaseEvents(); } void TaskBar::handleDrag(const XButtonEvent &/*down*/, const XMotionEvent &motion) { #ifndef NO_CONFIGURE int newPosition = 0; xapp->grabEvents(this, YXApplication::movePointer.handle(), ButtonPressMask | ButtonReleaseMask | PointerMotionMask); if (motion.y_root < int(desktop->height() / 2)) newPosition = 1; if (taskBarAtTop != newPosition) { taskBarAtTop = newPosition; //setPosition(x(), taskBarAtTop ? -1 : int(manager->height() - height() + 1)); manager->setWorkAreaMoveWindows(true); updateLocation(); repaint(); //manager->updateWorkArea(); manager->setWorkAreaMoveWindows(false); } #endif } void TaskBar::popupStartMenu() { if (fApplications) { /*requestFocus(); fApplications->requestFocus(); fApplications->setFocus();*/ popOut(); fApplications->popupMenu(); } } void TaskBar::popupWindowListMenu() { #ifdef CONFIG_WINMENU if (fWinList) { popOut(); fWinList->popupMenu(); } #endif } bool TaskBar::autoTimer(bool doShow) { MSG(("hide taskbar")); if (fFullscreen && doShow && taskBarFullscreenAutoShow) { fIsHidden = false; getFrame()->focus(); manager->switchFocusTo(getFrame(), true); manager->updateFullscreenLayer(); } if (taskBarAutoHide == true) { fIsHidden = doShow ? false : true; if (hasPopup()) fIsHidden = false; updateLocation(); } return fIsHidden == doShow; } void TaskBar::popOut() { if (fIsCollapsed) { handleCollapseButton(); } if (taskBarAutoHide) { fIsHidden = false; updateLocation(); fIsHidden = taskBarAutoHide; if (fEdgeTrigger) { MSG(("start hide 4")); fEdgeTrigger->startHide(); } } relayoutNow(); } void TaskBar::showBar(bool visible) { if (visible) { if (getFrame() == 0) manager->mapClient(handle()); if (getFrame() != 0) { setWinLayerHint((taskBarAutoHide || fFullscreen) ? WinLayerAboveAll : fIsCollapsed ? WinLayerAboveDock : taskBarKeepBelow ? WinLayerBelow : WinLayerDock); getFrame()->setState(WinStateAllWorkspaces, WinStateAllWorkspaces); getFrame()->activate(true); updateLocation(); } } } void TaskBar::actionPerformed(YAction *action, unsigned int modifiers) { wmapp->actionPerformed(action, modifiers); } void TaskBar::handleCollapseButton() { fIsCollapsed = !fIsCollapsed; if (fCollapseButton) { fCollapseButton->setText(fIsCollapsed ? "<": ">"); fCollapseButton->setImage(fIsCollapsed ? expandImage : collapseImage); } relayout(); } void TaskBar::handlePopDown(YPopupWindow */*popup*/) { } void TaskBar::configure(const YRect &r) { YWindow::configure(r); } void TaskBar::detachDesktopTray() { if (fDesktopTray) { MSG(("detach Tray")); fDesktopTray->detachTray(); delete fDesktopTray; fDesktopTray = 0; } } void TaskBar::removeTasksApp(YFrameWindow *w) { if (taskPane()) taskPane()->removeApp(w); } TaskBarApp *TaskBar::addTasksApp(YFrameWindow *w) { if (taskPane()) return taskPane()->addApp(w); else return 0; } void TaskBar::relayoutTasks() { if (taskPane()) taskPane()->relayout(); } void TaskBar::removeTrayApp(YFrameWindow *w) { #ifdef CONFIG_TRAY if (windowTrayPane()) windowTrayPane()->removeApp(w); #endif } TrayApp *TaskBar::addTrayApp(YFrameWindow *w) { #ifdef CONFIG_TRAY if (windowTrayPane()) return windowTrayPane()->addApp(w); else #endif return 0; } void TaskBar::relayoutTray() { #ifdef CONFIG_TRAY if (windowTrayPane()) windowTrayPane()->relayout(); #endif } void TaskBar::showAddressBar() { popOut(); #ifdef CONFIG_ADDRESSBAR if (fAddressBar != 0) fAddressBar->showNow(); #endif } void TaskBar::setWorkspaceActive(long workspace, int active) { if (fWorkspaces != 0 && fWorkspaces->workspaceButton(workspace) != 0) { fWorkspaces->workspaceButton(workspace)->setPressed(active); } } bool TaskBar::windowTrayRequestDock(Window w) { if (fDesktopTray) { fDesktopTray->trayRequestDock(w); return true; } return false; } #endif icewm-1.3.7/src/wmminiicon.h0000644000076600007660000000122011463274240014731 0ustar develdevel#ifndef __WMMINIICON_H #define __WMMINIICON_H #include "ywindow.h" class YFrameWindow; class MiniIcon: public YWindow { public: MiniIcon(YWindow *aParent, YFrameWindow *frame); virtual ~MiniIcon(); virtual void paint(Graphics &g, const YRect &r); virtual void handleButton(const XButtonEvent &button); virtual void handleClick(const XButtonEvent &up, int count); virtual void handleCrossing(const XCrossingEvent &crossing); virtual void handleDrag(const XButtonEvent &down, const XMotionEvent &motion); YFrameWindow *getFrame() const { return fFrame; }; private: YFrameWindow *fFrame; int selected; }; #endif icewm-1.3.7/src/wmwinlist.cc0000644000076600007660000003362411463274240014770 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2003 Marko Macek * * Window list */ #include "config.h" #include "ykey.h" #include "ypaint.h" #include "wmwinlist.h" #include "ymenuitem.h" #include "prefs.h" #include "wmaction.h" #include "wmclient.h" #include "wmframe.h" #include "wmmgr.h" #include "wmapp.h" #include "sysdep.h" #include "yrect.h" #include "intl.h" #ifdef CONFIG_WINLIST WindowList *windowList = 0; WindowListItem::WindowListItem(ClientData *frame, int workspace): YListItem() { fFrame = frame; fWorkspace = workspace; } WindowListItem::~WindowListItem() { if (fFrame) { fFrame->setWinListItem(0); fFrame = 0; } } int WindowListItem::getOffset() { int ofs = -20; ClientData *w = getFrame(); if (w) { ofs += 40; while (w->owner()) { ofs += 20; w = w->owner(); } } return ofs; } ustring WindowListItem::getText() { if (fFrame) return getFrame()->getTitle(); else if (fWorkspace < 0 || fWorkspace >= workspaceCount) return _("All Workspaces"); else return workspaceNames[fWorkspace]; } ref WindowListItem::getIcon() { if (fFrame) return getFrame()->getIcon(); else return null; } WindowListBox::WindowListBox(YScrollView *view, YWindow *aParent): YListBox(view, aParent) { } WindowListBox::~WindowListBox() { } void WindowListBox::activateItem(YListItem *item) { WindowListItem *i = (WindowListItem *)item; ClientData *f = i->getFrame(); if (f) { f->activateWindow(true); windowList->getFrame()->wmHide(); } else { int w = i->getWorkspace(); if (w != -1) { manager->activateWorkspace(w); windowList->getFrame()->wmHide(); } } } void WindowListBox::getSelectedWindows(YArray &frames) { if (hasSelection()) { for (YListItem *i = getFirst(); i; i = i->getNext()) { if (isSelected(i)) { WindowListItem *item = (WindowListItem *)i; ClientData *f = item->getFrame(); if (f) frames.append((YFrameWindow *)f); } } } } void WindowListBox::actionPerformed(YAction *action, unsigned int modifiers) { YArray frameList; getSelectedWindows(frameList); if (action == actionTileVertical || action == actionTileHorizontal) { if (frameList.getCount() > 0) manager->tileWindows(frameList.getItemPtr(0), frameList.getCount(), (action == actionTileVertical) ? true : false); } else if (action == actionCascade || action == actionArrange) { if (frameList.getCount() > 0) { if (action == actionCascade) { manager->cascadePlace(frameList.getItemPtr(0), frameList.getCount()); } else if (action == actionArrange) { manager->smartPlace(frameList.getItemPtr(0), frameList.getCount()); } } } else { for (int i = 0; i < frameList.getCount(); i++) { #ifndef CONFIG_PDA if (action == actionHide) if (frameList[i]->isHidden()) continue; #endif if (action == actionMinimize) if (frameList[i]->isMinimized()) continue; frameList[i]->actionPerformed(action, modifiers); } } } bool WindowListBox::handleKey(const XKeyEvent &key) { if (key.type == KeyPress) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); int m = KEY_MODMASK(key.state); switch (k) { case XK_Escape: windowList->getFrame()->wmHide(); return true; case XK_F10: case XK_Menu: if (k != XK_F10 || m == ShiftMask) { if (hasSelection()) { enableCommands(windowListPopup); windowListPopup->popup(0, 0, 0, key.x_root, key.y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu); } else { windowListAllPopup->popup(0, 0, 0, key.x_root, key.y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu); } } break; case XK_Delete: { if (m & ShiftMask) actionPerformed(actionKill, key.state); else actionPerformed(actionClose, key.state); } break; } } return YListBox::handleKey(key); } void WindowListBox::handleClick(const XButtonEvent &up, int count) { if (up.button == 3 && count == 1 && IS_BUTTON(up.state, Button3Mask)) { int no = findItemByPoint(up.x, up.y); if (no != -1) { YListItem *i = getItem(no); if (!isSelected(i)) { focusSelectItem(no); } else { //fFocusedItem = -1; } enableCommands(windowListPopup); windowListPopup->popup(0, 0, 0, up.x_root, up.y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu); } else { windowListAllPopup->popup(0, 0, 0, up.x_root, up.y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu); } return ; } YListBox::handleClick(up, count); } void WindowListBox::enableCommands(YMenu *popup) { bool noItems = true; long workspace = -1; bool sameWorkspace = false; bool notHidden = false; bool notMinimized = false; // enable minimize,hide if appropriate // enable workspace selections if appropriate popup->enableCommand(0); for (YListItem *i = getFirst(); i; i = i->getNext()) { if (isSelected(i)) { WindowListItem *item = (WindowListItem *)i; if (!item->getFrame()) { continue; } noItems = false; if (!item->getFrame()->isHidden()) notHidden = true; if (!item->getFrame()->isMinimized()) notMinimized = true; long ws = item->getFrame()->getWorkspace(); if (workspace == -1) { workspace = ws; sameWorkspace = true; } else if (workspace != ws) { sameWorkspace = false; } if (item->getFrame()->isSticky()) sameWorkspace = false; } } if (!notHidden) popup->disableCommand(actionHide); if (!notMinimized) popup->disableCommand(actionMinimize); moveMenu->enableCommand(0); if (sameWorkspace && workspace != -1) { for (int i = 0; i < moveMenu->itemCount(); i++) { YMenuItem *item = moveMenu->getItem(i); for (int w = 0; w < workspaceCount; w++) if (item && item->getAction() == workspaceActionMoveTo[w]) item->setEnabled(w != workspace); } } if (noItems) { moveMenu->disableCommand(0); popup->disableCommand(0); } } WindowList::WindowList(YWindow *aParent): YFrameClient(aParent, 0) { scroll = new YScrollView(this); list = new WindowListBox(scroll, scroll); scroll->setView(list); list->show(); scroll->show(); workspaceItem = new WindowListItem *[workspaceCount + 1]; for (int ws = 0; ws < workspaceCount; ws++) { workspaceItem[ws] = new WindowListItem(0, ws); list->addItem(workspaceItem[ws]); } workspaceItem[workspaceCount] = new WindowListItem(0, -1); list->addItem(workspaceItem[workspaceCount]); YMenu *closeSubmenu = new YMenu(); assert(closeSubmenu != 0); closeSubmenu->addItem(_("_Close"), -2, _("Del"), actionClose); closeSubmenu->addSeparator(); closeSubmenu->addItem(_("_Kill Client"), -2, null, actionKill); #if 0 closeSubmenu->addItem(_("_Terminate Process"), -2, 0, actionTermProcess)->setEnabled(false); closeSubmenu->addItem(_("Kill _Process"), -2, 0, actionKillProcess)->setEnabled(false); #endif windowListPopup = new YMenu(); windowListPopup->setActionListener(list); windowListPopup->addItem(_("_Show"), -2, null, actionShow); #ifndef CONFIG_PDA windowListPopup->addItem(_("_Hide"), -2, null, actionHide); #endif windowListPopup->addItem(_("_Minimize"), -2, null, actionMinimize); windowListPopup->addSubmenu(_("Move _To"), -2, moveMenu); windowListPopup->addSeparator(); windowListPopup->addItem(_("Tile _Vertically"), -2, KEY_NAME(gKeySysTileVertical), actionTileVertical); windowListPopup->addItem(_("T_ile Horizontally"), -2, KEY_NAME(gKeySysTileHorizontal), actionTileHorizontal); windowListPopup->addItem(_("Ca_scade"), -2, KEY_NAME(gKeySysCascade), actionCascade); windowListPopup->addItem(_("_Arrange"), -2, KEY_NAME(gKeySysArrange), actionArrange); windowListPopup->addSeparator(); windowListPopup->addItem(_("_Minimize All"), -2, KEY_NAME(gKeySysMinimizeAll), actionMinimizeAll); windowListPopup->addItem(_("_Hide All"), -2, KEY_NAME(gKeySysHideAll), actionHideAll); windowListPopup->addItem(_("_Undo"), -2, KEY_NAME(gKeySysUndoArrange), actionUndoArrange); windowListPopup->addSeparator(); windowListPopup->addItem(_("_Close"), -2, actionClose, closeSubmenu); windowListAllPopup = new YMenu(); windowListAllPopup->setActionListener(wmapp); windowListAllPopup->addItem(_("Tile _Vertically"), -2, KEY_NAME(gKeySysTileVertical), actionTileVertical); windowListAllPopup->addItem(_("T_ile Horizontally"), -2, KEY_NAME(gKeySysTileHorizontal), actionTileHorizontal); windowListAllPopup->addItem(_("Ca_scade"), -2, KEY_NAME(gKeySysCascade), actionCascade); windowListAllPopup->addItem(_("_Arrange"), -2, KEY_NAME(gKeySysArrange), actionArrange); windowListAllPopup->addItem(_("_Minimize All"), -2, KEY_NAME(gKeySysMinimizeAll), actionMinimizeAll); windowListAllPopup->addItem(_("_Hide All"), -2, KEY_NAME(gKeySysHideAll), actionHideAll); windowListAllPopup->addItem(_("_Undo"), -2, KEY_NAME(gKeySysUndoArrange), actionUndoArrange); int dx, dy, dw, dh; manager->getScreenGeometry(&dx, &dy, &dw, &dh, 0); int w = dw; int h = dh; setGeometry(YRect(w / 4, h / 4, w / 2, h / 2)); windowList = this; setWindowTitle(_("Window list")); setIconTitle(_("Window list")); setWinStateHint(WinStateAllWorkspaces, WinStateAllWorkspaces); setWinWorkspaceHint(0); setWinLayerHint(WinLayerAboveDock); } WindowList::~WindowList() { delete list; list = 0; delete scroll; scroll = 0; windowList = 0; } void WindowList::handleFocus(const XFocusChangeEvent &focus) { if (focus.type == FocusIn && focus.mode != NotifyUngrab) { list->setWindowFocus(); } else if (focus.type == FocusOut) { } } void WindowList::relayout() { list->repaint(); } WindowListItem *WindowList::addWindowListApp(YFrameWindow *frame) { if (!frame->client()->adopted()) return 0; WindowListItem *item = new WindowListItem(frame); if (item) { insertApp(item); } return item; } void WindowList::insertApp(WindowListItem *item) { ClientData *frame = item->getFrame(); if (frame->owner() && frame->owner()->winListItem()) { list->addAfter(frame->owner()->winListItem(), item); } else { int nw = frame->getWorkspace(); if (!frame->isSticky()) list->addAfter(workspaceItem[nw], item); else list->addItem(item); } } void WindowList::removeWindowListApp(WindowListItem *item) { if (item) { list->removeItem(item); delete item; } } void WindowList::updateWindowListApp(WindowListItem *item) { if (item) { list->removeItem(item); insertApp(item); } } void WindowList::configure(const YRect &r) { YFrameClient::configure(r); scroll->setGeometry(YRect(0, 0, r.width(), r.height())); } void WindowList::handleClose() { if (!getFrame()->isHidden()) getFrame()->wmHide(); } void WindowList::showFocused(int x, int y) { YFrameWindow *f = manager->getFocus(); if (f != getFrame()) { if (f) list->focusSelectItem(list->findItem(f->winListItem())); else list->focusSelectItem(0); } if (getFrame() == 0) manager->manageClient(handle(), false); if (getFrame() != 0) { if (x != -1 && y != -1) { int px, py; int xiscreen = manager->getScreenForRect(x, y, 1, 1); int dx, dy, dw, dh; manager->getScreenGeometry(&dx, &dy, &dw, &dh, xiscreen); px = x - getFrame()->width() / 2; py = y - getFrame()->height() / 2; if (px + getFrame()->width() > dx + dw) px = dx + dw - getFrame()->width(); if (py + getFrame()->height() > dy + dh) py = dx + dh - getFrame()->height(); if (px < dx) px = dx; if (py < dy) py = dy; getFrame()->setNormalPositionOuter(px, py); } getFrame()->setRequestedLayer(WinLayerAboveDock); getFrame()->setState(WinStateAllWorkspaces, WinStateAllWorkspaces); getFrame()->activateWindow(true); } } #endif icewm-1.3.7/src/testarray.cc0000644000076600007660000001023011463274240014735 0ustar develdevel#include "yarray.h" #include #include #include char const *ApplicationName("testarray"); bool multiByte(true); int strnullcmp(const char *a, const char *b) { return a ? (b ? strcmp(a, b) : 1) : (b ? -1 : 0); } static void dump(const char *label, const YArray &array) { printf("%s: count=%ld, capacity=%ld\n content={", label, array.getCount(), array.getCapacity()); if (array.getCount() > 0) { printf(" %d", array[0]); for (YArray::SizeType i = 1; i < array.getCount(); ++i) printf(", %d", array[i]); } puts(" }"); } static void dump(const char *label, const YArray &array) { printf("%s: count=%ld, capacity=%ld\n content={", label, array.getCount(), array.getCapacity()); for (YArray::SizeType i = 0; i < array.getCount(); ++i) printf(" %s", array[i]); puts(" }"); } static void dump(const char *label, const YStringArray &array) { printf("%s: count=%ld, capacity=%ld\n content={", label, array.getCount(), array.getCapacity()); for (YStringArray::SizeType i = 0; i < array.getCount(); ++i) printf(" %s", array[i]); puts(" }"); } static const char *cmp(const YStringArray &a, const YStringArray &b) { if (a.getCount() != b.getCount()) return "size differs"; for (YStringArray::SizeType i = 0; i < a.getCount(); ++i) if (strnullcmp(a[i], b[i])) return "values differ"; for (YStringArray::SizeType i = 0; i < a.getCount(); ++i) if (a[i] != b[i]) return "pointers differ"; return "equal - MUST BE AN ERROR"; } int main() { YArray a; puts("testing append YArray"); for (int i = 0; i < 13; ++i) { dump("Array", a); a.append(i); } assert(a.getCount() == 13); assert(a[1] = 1); assert(a[12] = 12); dump("Array", a); puts("testing insert for YArray"); a.insert(5, -1); dump("Array", a); a.insert(13, -2); dump("Array", a); a.insert(15, -3); dump("Array", a); a.insert(16, -4); dump("Array", a); // a.insert(42, -5); dump("Array", a); // a.insert(160, -6); dump("Array", a); a.insert(0, -7); dump("Array", a); assert(a.getCount() == 18); assert(a[6] == -1); assert(a[17] == -4); puts("testing clear for YArray"); a.clear(); dump("Array", a); assert(a.getCount() == 0); puts("another insertion test for YArray"); a.insert(0, 1); dump("Array: inserted 1@0", a); a.insert(1, 2); dump("Array: inserted 2@1", a); a.insert(1, 3); dump("Array: inserted 3@1", a); a.insert(0, 4); dump("Array: inserted 4@0", a); a.insert(0, 5); dump("Array: inserted 5@0", a); a.insert(0, 6); dump("Array: inserted 6@0", a); assert(a.getCount() == 6); assert(a[5] == 2); puts("testing append for YArray"); YArray b; dump("Array", b); b.append("this"); dump("Array", b); b.append("is"); dump("Array", b); b.append("the"); dump("Array", b); b.append("stinking"); dump("Array", b); b.append("foo"); dump("Array", b); b.append("bar"); dump("Array", b); puts("testing append for YStringArray"); YStringArray c; dump("YStringArray", c); c.append("this"); dump("YStringArray", c); c.append("is"); dump("YStringArray", c); c.append("the"); dump("YStringArray", c); c.append("stinking"); dump("YStringArray", c); c.append("foo"); dump("YStringArray", c); c.append("bar"); dump("YStringArray", c); puts("copy constructors for YStringArray"); YStringArray orig; orig.append("check"); orig.append("this"); orig.append("out"); dump("orig", orig); const YStringArray copy(orig); const YStringArray copy2(copy); dump("orig", orig); dump("copy", copy); dump("copy2", copy2); printf("orig vs. copy: %s\n", cmp(orig, copy)); printf("orig vs. copy2: %s\n", cmp(orig, copy2)); printf("copy vs. copy2: %s\n", cmp(copy, copy2)); return 0; } icewm-1.3.7/src/ystring.h0000644000076600007660000000611311463274240014265 0ustar develdevel/* * IceWM - string classes * Copyright (C) 2001 The Authors of IceWM * * Release under terms of the GNU Library General Public License */ #ifndef __YSTRING_H #define __YSTRING_H #include "ylocale.h" #include template class YString { public: typedef DataType data_t; YString(data_t const * str): fData(NULL) { set(str); } YString(data_t const * str, size_t len): fData(NULL) { set(str, len); } virtual ~YString() { delete[] fData; } void set(data_t const * str) { set(str, length(str)); } void set(data_t const * str, size_t len) { delete[] fData; fSize = (fLength = len) + 1; fData = new data_t[fSize]; ::memcpy(fData, str, sizeof(data_t) * fLength); } void set(size_t index, data_t const & value) { size_t const size(index + 1); if (size > fSize) { data_t * data(new data_t[size]); ::memcpy(data, fData, fSize); ::memset(data + fSize, 0, (size - fSize - 1) * sizeof(data_t)); delete[] fData; fData = data; fLength = index; fSize = size; } fData[index] = value; } data_t const * cStr() { set(fLength, 0); return fData; } data_t const & get(size_t index) const { return (index < fSize ? fData[index] : 0); } data_t const & operator[](size_t index) const { get(index); } data_t const * data() const { return fData; } size_t length() const { return fLength; } size_t size() const { return fSize; } static size_t length(data_t const * str) { if (NULL == str) return 0; size_t length(0); while (*str++) ++length; return length; } static size_t size(data_t const * str) { return length(str) + 1; } protected: void assign(data_t * data, size_t length, size_t size) { if (data != fData) { delete fData; fData = data; } fLength = length; fSize = size; } protected: YString(): fData(NULL), fLength(0), fSize(0) {} private: data_t * fData; size_t fLength, fSize; }; #ifdef CONFIG_I18N class YUnicodeString : public YString { public: YUnicodeString(YUChar const * str): YString(str) {} YUnicodeString(YUChar const * str, size_t len): YString(str, len) {} YUnicodeString(YLChar const * lstr): YString() { size_t ulen(0); YUChar * ustr(YLocale::unicodeString(lstr, strlen(lstr), ulen)); assign(ustr, ulen, ulen + 1); } YUnicodeString(YLChar const * lstr, size_t llen): YString() { size_t ulen(0); YUChar * ustr(YLocale::unicodeString(lstr, llen, ulen)); assign(ustr, ulen, ulen + 1); } }; #endif class YLocaleString : public YString { public: YLocaleString(YLChar const * str): YString(str) {} YLocaleString(YLChar const * str, size_t len): YString(str, len) {} }; #endif icewm-1.3.7/src/wmconfig.cc0000644000076600007660000000737011463274240014543 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek */ #include "config.h" #include "ykey.h" #include "ylib.h" #include "yprefs.h" #define CFGDEF #include "wmconfig.h" #include "bindkey.h" #include "default.h" #include "wmoption.h" #include "wmmgr.h" #include "yaction.h" #include "yapp.h" #include "sysdep.h" #include "intl.h" long workspaceCount = 0; char *workspaceNames[MAXWORKSPACES]; YAction *workspaceActionActivate[MAXWORKSPACES]; YAction *workspaceActionMoveTo[MAXWORKSPACES]; void loadConfiguration(const char *fileName) { #ifndef NO_CONFIGURE YConfig::findLoadConfigFile(icewm_preferences, fileName); YConfig::findLoadConfigFile(icewm_themable_preferences, fileName); #endif } void loadThemeConfiguration(const char *themeName) { #ifndef NO_CONFIGURE YConfig::findLoadConfigFile(icewm_themable_preferences, upath("themes").child(themeName)); #endif } void freeConfiguration() { #ifndef NO_CONFIGURE YConfig::freeConfig(icewm_preferences); #endif } void addWorkspace(const char */*name*/, const char *value, bool append) { if (!append) { for (int i = 0; i < workspaceCount; i++) { delete[] workspaceNames[i]; delete workspaceActionActivate[i]; delete workspaceActionMoveTo[i]; } workspaceCount = 0; } if (workspaceCount >= MAXWORKSPACES) return; workspaceNames[workspaceCount] = newstr(value); workspaceActionActivate[workspaceCount] = new YAction(); // !! fix workspaceActionMoveTo[workspaceCount] = new YAction(); PRECONDITION(workspaceNames[workspaceCount] != NULL); workspaceCount++; } #ifndef NO_CONFIGURE void setLook(const char */*name*/, const char *arg, bool) { #ifdef CONFIG_LOOK_WARP4 if (strcmp(arg, "warp4") == 0) wmLook = lookWarp4; else #endif #ifdef CONFIG_LOOK_WARP3 if (strcmp(arg, "warp3") == 0) wmLook = lookWarp3; else #endif #ifdef CONFIG_LOOK_WIN95 if (strcmp(arg, "win95") == 0) wmLook = lookWin95; else #endif #ifdef CONFIG_LOOK_MOTIF if (strcmp(arg, "motif") == 0) wmLook = lookMotif; else #endif #ifdef CONFIG_LOOK_NICE if (strcmp(arg, "nice") == 0) wmLook = lookNice; else #endif #ifdef CONFIG_LOOK_PIXMAP if (strcmp(arg, "pixmap") == 0) wmLook = lookPixmap; else #endif #ifdef CONFIG_LOOK_METAL if (strcmp(arg, "metal") == 0) wmLook = lookMetal; else #endif #ifdef CONFIG_LOOK_FLAT if (strcmp(arg, "flat") == 0) wmLook = lookFlat; else #endif #ifdef CONFIG_LOOK_GTK if (strcmp(arg, "gtk") == 0) wmLook = lookGtk; else #endif { msg(_("Bad Look name")); } } #endif int setDefault(const char *basename, const char *config) { const char *confDir = newstr(YApplication::getPrivConfDir()); mkdir(confDir, 0777); const char *conf = cstrJoin(confDir, "/", basename, NULL); const char *confNew = cstrJoin(conf, ".new.tmp", NULL); delete[] confDir; int fd = open(confNew, O_RDWR | O_TEXT | O_CREAT | O_TRUNC | O_EXCL, 0666); if(fd == -1) { fprintf(stderr, "Unable to write %s!", confNew); return -1; } const char *buf = config; int len = strlen(buf); int nlen; nlen = write(fd, buf, len); FILE *fdold = fopen(conf, "r"); if (fdold) { char *tmpbuf = new char[300]; if (tmpbuf) { *tmpbuf = '#'; for (int i = 0; i < 10; i++) if (fgets(tmpbuf + 1, 298, fdold)) write(fd, tmpbuf, strlen(tmpbuf)); else break; delete[] tmpbuf; } fclose(fdold); } close(fd); if (nlen == len) { rename(confNew, conf); } else { remove(confNew); } delete[] confNew; delete[] conf; return 0; } icewm-1.3.7/src/yxembed.cc0000644000076600007660000000127211463274240014362 0ustar develdevel#include "config.h" #include "ylib.h" #include "yxembed.h" #include "yapp.h" YXEmbed::YXEmbed(YWindow *aParent): YWindow(aParent) { } YXEmbed::~YXEmbed() { } YXEmbedClient::YXEmbedClient(YXEmbed *embedder, YWindow *aParent, Window win): YWindow(aParent, win) { fEmbedder = embedder; } YXEmbedClient::~YXEmbedClient() { } void YXEmbedClient::handleDestroyWindow(const XDestroyWindowEvent &destroyWindow) { MSG(("embed client destroy")); fEmbedder->destroyedClient(handle()); YWindow::handleDestroyWindow(destroyWindow); } void YXEmbedClient::handleUnmap(const XUnmapEvent &/*unmap*/) { // YWindow::handleUnmap(unmap); fEmbedder->handleClientUnmap(handle()); } icewm-1.3.7/src/amailbox.h0000644000076600007660000000417111463274240014364 0ustar develdevel#ifndef __MAILBOX_H #define __MAILBOX_H #ifdef CONFIG_APPLET_MAILBOX #include "ywindow.h" #include "ytimer.h" #include "ysocket.h" #include "yurl.h" #include #ifdef __FreeBSD__ #include #endif #include class MailBoxStatus; class MailCheck: public YSocketListener { public: enum { IDLE, CONNECTING, WAIT_READY, WAIT_USER, WAIT_PASS, WAIT_STAT, WAIT_QUIT, ERROR, SUCCESS } state; enum { LOCALFILE, POP3, IMAP } protocol; MailCheck(MailBoxStatus *mbx); virtual ~MailCheck(); void setURL(ustring url); void startCheck(); virtual void socketConnected(); virtual void socketError(int err); virtual void socketDataRead(char *buf, int len); void error(); private: YSocket sk; char bf[512]; unsigned int got; ref fURL; MailBoxStatus *fMbx; long fLastSize; long fLastCount; long fLastUnseen; long fCurSize; long fCurCount; long fCurUnseen; long fLastCountSize; time_t fLastCountTime; sockaddr_in server_addr; void countMessages(); }; class MailBoxStatus: public YWindow, public YTimerListener { public: enum MailBoxState { mbxNoMail, mbxHasMail, mbxHasUnreadMail, mbxHasNewMail, mbxError }; MailBoxStatus(mstring mailBox, YWindow *aParent = 0); virtual ~MailBoxStatus(); virtual void paint(Graphics &g, const YRect &r); virtual void handleClick(const XButtonEvent &up, int count); virtual void handleCrossing(const XCrossingEvent &crossing); void checkMail(); void mailChecked(MailBoxState mst, long count); void newMailArrived(); virtual bool handleTimer(YTimer *t); private: mstring fMailBox; MailBoxState fState; MailCheck check; YTimer *fMailboxCheckTimer; }; #endif // !!! remove this #ifdef CONFIG_APPLET_MAILBOX extern ref noMailPixmap; extern ref errMailPixmap; extern ref mailPixmap; extern ref unreadMailPixmap; extern ref newMailPixmap; #endif #endif icewm-1.3.7/src/ypaint.h0000644000076600007660000002340311463274240014073 0ustar develdevel#ifndef __YPAINT_H #define __YPAINT_H #include "base.h" #include "ref.h" #include "ypixmap.h" #include "yimage.h" #include "mstring.h" #if 0 #include "ypixbuf.h" #endif #include #ifdef CONFIG_SHAPE #include #define __YIMP_XUTIL__ #include #endif #ifdef CONFIG_XRANDR #include #endif #ifdef CONFIG_XFREETYPE //------------------------------------------------------ #if CONFIG_XFREETYPE >= 2 #include #endif #include #define INIT_XFREETYPE(Member, Value) , Member(Value) #else #define INIT_XFREETYPE(Member, Value) #endif // CONFIG_XFREETYPE ----------------------------------------------------- #ifdef CONFIG_GRADIENTS //------------------------------------------------------ #define TEST_GRADIENT(Cond) (Cond) #define IF_CONFIG_GRADIENTS(Cond, Stmt) if (Cond) { Stmt; } #else #define TEST_GRADIENT(Cond) true #define IF_CONFIG_GRADIENTS(Cond, Stmt) if (false) {} #endif // CONFIG_GRADIENTS ----------------------------------------------------- class YWindow; class YIcon; #ifdef SHAPE struct XShapeEvent; #endif enum YDirection { Up, Left, Down, Right }; class YImage; /******************************************************************************/ /******************************************************************************/ class YColor { public: YColor(unsigned short red, unsigned short green, unsigned short blue); YColor(unsigned long pixel); YColor(char const * clr); #ifdef CONFIG_XFREETYPE ~YColor(); operator XftColor * (); void allocXft(); #endif unsigned long pixel() const { return fPixel; } YColor * darker(); YColor * brighter(); static YColor * black; static YColor * white; private: void alloc(); unsigned long fPixel; unsigned short fRed; unsigned short fGreen; unsigned short fBlue; YColor * fDarker; //!!! remove this (needs color caching...) YColor * fBrighter; //!!! removethis #ifdef CONFIG_XFREETYPE XftColor * xftColor; #endif }; struct YDimension { YDimension(unsigned w, unsigned h): w(w), h(h) {} unsigned w, h; }; /******************************************************************************/ /******************************************************************************/ class YFont: public virtual refcounted { public: static ref getFont(ustring name, ustring xftFont, bool antialias = true); virtual ~YFont() {} virtual bool valid() const = 0; virtual int height() const { return ascent() + descent(); } virtual int descent() const = 0; virtual int ascent() const = 0; virtual int textWidth(const ustring &s) const = 0; virtual int textWidth(char const * str, int len) const = 0; virtual void drawGlyphs(class Graphics & graphics, int x, int y, char const * str, int len) = 0; int textWidth(char const * str) const; int multilineTabPos(char const * str) const; YDimension multilineAlloc(char const * str) const; YDimension multilineAlloc(const ustring &str) const; }; /******************************************************************************/ /******************************************************************************/ struct YSurface { #ifdef CONFIG_GRADIENTS YSurface(class YColor * color, ref pixmap, ref gradient): color(color), pixmap(pixmap), gradient(gradient) {} #else YSurface(class YColor * color, ref pixmap): color(color), pixmap(pixmap) {} #endif class YColor * color; ref pixmap; #ifdef CONFIG_GRADIENTS ref gradient; #endif }; class Graphics { public: Graphics(YWindow & window, unsigned long vmask, XGCValues * gcv); Graphics(YWindow & window); Graphics(const ref &pixmap, int x_org, int y_org); Graphics(Drawable drawable, int w, int h, unsigned long vmask, XGCValues * gcv); Graphics(Drawable drawable, int w, int h); virtual ~Graphics(); void copyArea(const int x, const int y, const int width, const int height, const int dx, const int dy); void copyDrawable(const Drawable d, const int x, const int y, const int w, const int h, const int dx, const int dy); #if 0 void copyImage(XImage * im, const int x, const int y, const int w, const int h, const int dx, const int dy); void copyImage(XImage * im, const int x, const int y) { copyImage(im, 0, 0, im->width, im->height, x, y); } #endif void copyPixmap(const ref &p, const int x, const int y, const int w, const int h, const int dx, const int dy) { if (p != null) copyDrawable(p->pixmap(), x, y, w, h, dx, dy); } #if 0 #ifdef CONFIG_ANTIALIASING void copyPixbuf(class YPixbuf & pixbuf, const int x, const int y, const int w, const int h, const int dx, const int dy, bool useAlpha = true); void copyAlphaMask(class YPixbuf & pixbuf, const int x, const int y, const int w, const int h, const int dx, const int dy); #endif #endif void drawPoint(int x, int y); void drawLine(int x1, int y1, int x2, int y2); void drawLines(XPoint * points, int n, int mode = CoordModeOrigin); void drawSegments(XSegment * segments, int n); void drawRect(int x, int y, int width, int height); void drawRects(XRectangle * rects, int n); void drawArc(int x, int y, int width, int height, int a1, int a2); void drawArrow(YDirection direction, int x, int y, int size, bool pressed = false); void drawChars(const ustring &s, int x, int y); void drawChars(char const * data, int offset, int len, int x, int y); void drawCharUnderline(int x, int y, char const * str, int charPos); void drawCharUnderline(int x, int y, const ustring &str, int charPos); void drawString(int x, int y, char const * str); void drawStringEllipsis(int x, int y, char const * str, int maxWidth); void drawStringEllipsis(int x, int y, const ustring &str, int maxWidth); void drawStringMultiline(int x, int y, char const * str); void drawStringMultiline(int x, int y, const ustring &str); void drawPixmap(ref pix, int const x, int const y); void drawImage(ref pix, int const x, int const y); void drawImage(ref pix, int const x, int const y, int w, int h, int dx, int dy); void compositeImage(ref pix, int const x, int const y, int w, int h, int dx, int dy); void drawMask(ref pix, int const x, int const y); void drawClippedPixmap(Pixmap pix, Pixmap clip, int x, int y, int w, int h, int toX, int toY); void fillRect(int x, int y, int width, int height); void fillRects(XRectangle * rects, int n); void fillPolygon(XPoint * points, int const n, int const shape, int const mode); void fillArc(int x, int y, int width, int height, int a1, int a2); void setColor(YColor * aColor); void setColorPixel(unsigned long pixel); void setFont(ref aFont); void setThinLines(void) { setLineWidth(0); } void setWideLines(int width = 1) { setLineWidth(width >= 1 ? width : 1); } void setLineWidth(int width); void setPenStyle(bool dotLine = false); ///!!!hack void setFunction(int function = GXcopy); void draw3DRect(int x, int y, int w, int h, bool raised); void drawBorderW(int x, int y, int w, int h, bool raised); void drawBorderM(int x, int y, int w, int h, bool raised); void drawBorderG(int x, int y, int w, int h, bool raised); void drawCenteredPixmap(int x, int y, int w, int h, ref pixmap); void drawOutline(int l, int t, int r, int b, int iw, int ih); void repHorz(Drawable drawable, int pw, int ph, int x, int y, int w); void repVert(Drawable drawable, int pw, int ph, int x, int y, int h); void fillPixmap(const ref &pixmap, int x, int y, int w, int h, int sx = 0, int sy = 0); void drawSurface(YSurface const & surface, int x, int y, int w, int h, int const sx, int const sy, const int sw, const int sh); void drawSurface(YSurface const & surface, int x, int y, int w, int h) { drawSurface(surface, x, y, w, h, 0, 0, w, h); } #ifdef CONFIG_GRADIENTS void drawGradient(ref gradient, int const x, int const y, const int w, const int h, int const gx, int const gy, const int gw, const int gh); void drawGradient(ref gradient, int const x, int const y, const int w, const int h) { drawGradient(gradient, x, y, w, h, 0, 0, w, h); } #endif void repHorz(ref p, int x, int y, int w) { if (p != null) repHorz(p->pixmap(), p->width(), p->height(), x, y, w); } void repVert(ref p, int x, int y, int h) { if (p != null) repVert(p->pixmap(), p->width(), p->height(), x, y, h); } Display * display() const { return fDisplay; } int drawable() const { return fDrawable; } GC handleX() const { return gc; } #ifdef CONFIG_XFREETYPE XftDraw *handleXft() const { return fDraw; } #endif YColor * color() const { return fColor; } ref font() const { return fFont; } int function() const; int xorigin() const { return xOrigin; } int yorigin() const { return yOrigin; } int rwidth() const { return rWidth; } int rheight() const { return rHeight; } void setClipRectangles(XRectangle *rect, int count); void setClipMask(Pixmap mask = None); void resetClip(); private: Display * fDisplay; Drawable fDrawable; GC gc; #ifdef CONFIG_XFREETYPE XftDraw * fDraw; #endif YColor * fColor; ref fFont; int xOrigin, yOrigin; int rWidth, rHeight; }; #endif icewm-1.3.7/src/upath.h0000664000076600007660000000201711463274240013710 0ustar develdevel#ifndef __UPATH_H #define __UPATH_H #include "mstring.h" typedef mstring pstring; class upath { public: upath(const class null_ref &): fPath(null) {} upath(pstring path): fPath(path) {} upath(const char *path): fPath(path) {} upath(): fPath(null) {}; upath parent() const; pstring name() const; upath relative(const upath &path) const; upath child(const char *path) const; bool isAbsolute(); bool fileExists(); bool dirExists(); bool isReadable(); int access(int mode); upath addExtension(const char *ext) const; upath operator=(const upath& p) { fPath = p.fPath; return *this; } upath operator=(const class null_ref &) { fPath = null; return *this; } bool operator==(const class null_ref &) const { return fPath == null; } bool operator!=(const class null_ref &) const { return fPath != null; } bool equals(const upath &s) const; pstring path() const { return fPath; } private: pstring fPath; }; #endif icewm-1.3.7/src/ref.h0000644000076600007660000000375311463274240013351 0ustar develdevel#ifndef __REF_H #define __REF_H class refcounted { public: int __refcount; protected: virtual ~refcounted() {} public: refcounted(): __refcount(0) {}; void __destroy(); }; class null_ref; template class ref { private: T *ptr; public: #define null (*(class null_ref *)0) void __ref() { ptr->__refcount++; } void __unref() { if (--ptr->__refcount == 0) { ptr->__destroy(); } } ref(): ptr(0) {} ref(class null_ref &): ptr(0) {} explicit ref(T *r) : ptr(r) { if (ptr) __ref(); } ref(const ref &p): ptr(p.ptr) { if (ptr) __ref(); } template ref(const ref &p): ptr(static_cast(p._ptr())) { if (ptr) __ref(); } ~ref() { if (ptr) { __unref(); ptr = 0; } } const T& operator*() const { return *ptr; } T& operator*() { return *ptr; } const T* operator->() const { return ptr; } T *operator->() { return ptr; } ref& operator=(const ref& rv) { if (this != &rv) { if (ptr) __unref(); ptr = rv.ptr; if (ptr) __ref(); } return *this; } template ref& operator=(const ref& rv) { if (this->ptr != rv._ptr()) { if (ptr) __unref(); ptr = (T *)rv._ptr(); if (ptr) __ref(); } return *this; } ref& init(T *rv) { if (this->ptr != rv) { if (ptr) __unref(); ptr = rv; if (ptr) __ref(); } return *this; } bool operator==(const ref &r) const { return ptr == r.ptr; } bool operator!=(const ref &r) const { return ptr != r.ptr; } bool operator==(const class null_ref &) const { return ptr == 0; } bool operator!=(const class null_ref &) const { return ptr != 0; } ref& operator=(const class null_ref &) { if (ptr) __unref(); ptr = 0; return *this; } T *_ptr() const { return ptr; } }; #endif icewm-1.3.7/src/WinMgr.h0000644000076600007660000003141011463274240013767 0ustar develdevel#ifndef __WINMGR_H #define __WINMGR_H /* all of this is still experimental -- feedback welcome */ /* 0.5 * - added WIN_LAYER_MENU */ /* 0.4 * - added WIN_WORKSPACES for windows appearing on multiple workspaces * at the same time. * - added WinStateDocked * - added WinStateSticky for possible virtual desktops * - changed WIN_ICONS format to be extensible and more complete */ /* 0.3 * - renamed WinStateSticky -> WinStateAllWorkspaces */ /* 0.2 * - added separate flags for horizonal/vertical maximized state */ /* 0.1 */ /* TODO: * - packed properties for STATE and HINTS (WIN_ALL_STATE and WIN_ALL_HINTS) * currently planned to look like this: * CARD32 nhints * for each hint: * CARD32 atom (hint type) * CARD32 count (data length) * CARD32 data[count] * ... * this has the advantage of being slightly faster, but * demands that all hints are handled at one place. WM ignores * other hints of the same type if these two are present. * - check out WMaker and KDE hints to make a superset of all * - virtual desktop, handling of virtual (>screen) scrolling * desktops and pages (fvwm like?) * - vroot.h? * - MOZILLA_ZORDER (it should be possible to do the same thing * with WIN_* hints) * - there should be a way to coordinate corner/edge points of the frames * (for placement). ICCCM is vague on this issue. icewm prefers to treat * windows as client-area and titlebar when doing the placement (ignoring * the frame) * - hint limit wm key/mouse bindings on a window * possible * - what does MOTIF_WM_INFO do? * - WIN_MAXIMIZED_GEOMETRY * - WIN_RESIZE (protocol that allows applications to start sizing the frame) * - WIN_FOCUS (protocol for focusing a window) */ #define XA_WIN_PROTOCOLS "_WIN_PROTOCOLS" /* Type: array of Atom * set on Root window by the window manager. * * This property contains all of the protocols/hints supported by * the window manager (WM_HINTS, MWM_HINTS, WIN_*, etc. */ #define XA_WIN_SUPPORTING_WM_CHECK "_WIN_SUPPORTING_WM_CHECK" /* XID of window created by WM, used to check */ #define XA_WIN_ICONS "_WIN_ICONS" /* Type: array of CARD32 * first item is icon count (n) * second item is icon record length (in CARD32s) * this is followed by (n) icon records as follows * pixmap (XID) * mask (XID) * width (CARD32) * height (CARD32) * depth (of pixmap, mask is assumed to be of depth 1) (CARD32) * drawable (screen root drawable of pixmap) (XID) * ... additional fields can be added at the end of this list * * This property contains additional icons for the application. * if this property is set, the WM will ignore default X icon hints * and KWM_WIN_ICON hint. * * Icon Mask can be None if transparency is not required. * * Icewm currenty needs/uses icons of size 16x16 and 32x32 with default * depth. Applications are recommended to set several icons sizes * (recommended 16x16,32x32,48x48 at least) * * TODO: WM should present a wishlist of desired icons somehow. (standard * WM_ICON_SIZES property is only a partial solution). 16x16 icons can be * quite small on large resolutions. */ /* workspace */ #define XA_WIN_WORKSPACE "_WIN_WORKSPACE" /* Type: CARD32 * Root Window: current workspace, set by the window manager * * Application Window: current workspace. The default workspace * can be set by applications, but they must use ClientMessages to * change them. When window is mapped, the propery should only be * updated by the window manager. * * Applications wanting to change the current workspace should send * a ClientMessage to the Root window like this: * xev.type = ClientMessage; * xev.window = root_window or toplevel_window; * xev.message_type = _XA_WIN_WORKSPACE; * xev.format = 32; * xev.data.l[0] = workspace; * xev.data.l[1] = timeStamp; * XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); * */ #define XA_WIN_WORKSPACE_COUNT "_WIN_WORKSPACE_COUNT" /* Type: CARD32 * workspace count, set by window manager * * NOT FINALIZED/IMPLEMENTED YET */ #define XA_WIN_WORKSPACE_NAMES "_WIN_WORKSPACE_NAMES" /* Type: StringList (TextPropery) * * * IMPLEMENTED but not FINALIZED. * perhaps the name should be separate for each workspace (like KDE). * this where WIN_WORKSPACE_COUNT comes into play. */ #define WinWorkspaceInvalid (-1L) /* workspaces */ #define XA_WIN_WORKSPACES "_WIN_WORKSPACES" /* Type: array of CARD32 * bitmask of workspaces that application appears on * * Applications must still set WIN_WORKPACE property to define * the default window (if the WM has to switch workspaces) and * specify the workspace for WMs that do not support this property. * * The same policy applies as for WIN_WORKSPACE: default can be set by * applications, but is only changed by the window manager after the * window is mapped. * * Applications wanting to change the current workspace should send * a ClientMessage to the Root window like this: * xev.type = ClientMessage; * xev.window = root_window or toplevel_window; * xev.message_type = _XA_WIN_WORKSPACES_ADD; // or _REMOVE * xev.format = 32; * xev.data.l[0] = index; // index of item * xev.data.l[1] = bitmask; // to assign, or, or reset * xev.data.l[2] = timestamp; // of event that caused operation * XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); */ #define XA_WIN_WORKSPACES_ADD "_WIN_WORKSPACES_ADD" #define XA_WIN_WORKSPACES_REMOVE "_WIN_WORKSPACES_REMOVE" /* layer */ #define XA_WIN_LAYER "_WIN_LAYER" /* Type: CARD32 * window layer * * Window layer. * Windows with LAYER=WinLayerDock determine size of the Work Area * (WIN_WORKAREA). Windows below dock layer are resized to the size * of the work area when maximized. Windows above dock layer are * maximized to the entire screen space. * * The default can be set by application, but when window is mapped * only window manager can change this. If an application wants to change * the window layer it should send the ClientMessage to the root window * like this: * xev.type = ClientMessage; * xev.window = toplevel_window; * xev.message_type = _XA_WIN_LAYER; * xev.format = 32; * xev.data.l[0] = layer; * xev.data.l[1] = timeStamp; * XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); * * TODO: A few available layers could be used for WMaker menus/submenus * (comments?) * * Partially implemented. Currently requires all docked windows to be * sticky (only one workarea for all workspaces). Otherwise non-docked sticky * windows could (?) move when switching workspaces (annoying). */ #define WinLayerCount 16 #define WinLayerInvalid 0xFFFFFFFFL #define WinLayerDesktop 0L #define WinLayerBelow 2L #define WinLayerNormal 4L #define WinLayerOnTop 6L #define WinLayerDock 8L #define WinLayerAboveDock 10L #define WinLayerMenu 12L #define WinLayerFullscreen 14L // hack, for now #define WinLayerAboveAll 15L // for taskbar auto hide /* task bar tray */ #define XA_WIN_TRAY "_ICEWM_TRAY" /* Type: CARD32 * window task bar tray option * * Window with tray=Ignore (default) has its window button only on TaskPane. * Window with tray=Minimized has its icon on TrayPane and if it is * not minimized it has also window button on TaskPane (no button for * minimized window). * Window with tray=Exclusive has only its icon on TrayPane and there is no * window button on TaskPane. * * The default can be set by application, but when window is mapped * only window manager can change this. If an application wants to change * the window tray option it should send the ClientMessage to the root window * like this: * * xev.type = ClientMessage; * xev.window = toplevel_window; * xev.message_type = _XA_WIN_TRAY; * xev.format = 32; * xev.data.l[0] = tray_opt; * xev.data.l[1] = timeStamp; * XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); */ #define WinTrayOptionCount 3 #define WinTrayInvalid 0xFFFFFFFFL #define WinTrayIgnore 0L #define WinTrayMinimized 1L #define WinTrayExclusive 2L /* state */ #define XA_WIN_STATE "_WIN_STATE" /* Type CARD32[2] * window state. First CARD32 is the mask of set/supported states, * the second one is the state. * * The default value for this property can be set by applications. * When window is mapped, the property is updated by the window manager * as necessary. Applications can request the state change by sending * the client message to the root window like this: * * xev.type = ClientMessage; * xev.window = toplevel_window; * xev.message_type = _XA_WIN_WORKSPACE; * xev.format = 32; * xev.data.l[0] = mask; // mask of the states to change * xev.data.l[1] = state; // new state values * xev.data.l[2] = timeStamp; * XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); */ #define WinStateAllWorkspaces (1 << 0) /* appears on all workspaces */ #define WinStateMinimized (1 << 1) /* to iconbox,taskbar,... */ #define WinStateMaximizedVert (1 << 2) /* maximized vertically */ #define WinStateMaximizedHoriz (1 << 3) /* maximized horizontally */ #define WinStateHidden (1 << 4) /* not on taskbar if any, but still accessible */ #define WinStateRollup (1 << 5) /* only titlebar visible */ #define WinStateFixedPosition (1 << 10) /* fixed position on virtual desktop*/ #define WinStateArrangeIgnore (1 << 11) /* ignore for auto arranging */ //#define WinStateDocked (1 << 9) /* docked, ignore my area for maximizing */ #define WinStateSkipTaskBar (1 << 24) /* skip taskbar */ #define WinStateModal (1 << 25) /* modal */ #define WinStateBelow (1 << 26) /* below layer */ #define WinStateAbove (1 << 27) /* above layer */ #define WinStateFullscreen (1 << 28) /* fullscreen (no lauout limits) */ #define WinStateWasHidden (1 << 29) /* was hidden when parent was minimized/hidden */ #define WinStateWasMinimized (1 << 30) /* was minimized when parent was minimized/hidden */ #define WinStateWithdrawn (1 << 31) /* managed, but not available to user */ #define WIN_STATE_ALL (WinStateAllWorkspaces | WinStateMinimized |\ WinStateMaximizedVert | WinStateMaximizedHoriz |\ WinStateHidden | WinStateRollup) /* hints */ #define XA_WIN_HINTS "_WIN_HINTS" #define WinHintsSkipFocus (1 << 0) #define WinHintsSkipWindowMenu (1 << 1) #define WinHintsSkipTaskBar (1 << 2) #define WinHintsGroupTransient (1 << 3) #define WinHintsFocusOnClick (1 << 4) /* app only accepts focus when clicked */ #define WinHintsDoNotCover (1 << 5) /* attempt to not cover this window */ #define WinHintsDockHorizontal (1 << 6) /* docked horizontally */ #define WIN_HINTS_ALL (WinHintsSkipFocus | WinHintsSkipWindowMenu |\ WinHintsSkipTaskBar | WinHintsGroupTransient |\ WinHintsFocusOnClick | WinHintsDoNotCover) /* Type CARD32[2] * additional window hints * * Handling of this propery is very similiar to WIN_STATE. * * NOT IMPLEMENTED YET. */ /* WinHintsDockHorizontal -- not used * This state is necessary for correct WORKAREA negotiation when * a window is positioned in a screen corner. If set, it determines how * the place where window is subtracted from workare. * * Imagine a square docklet in the corner of the screen (several WMaker docklets * are like this). * * HHHHD * ....V * ....V * ....V * * If WinStateDockHorizontal is set, the WORKAREA will consist of area * covered by '.' and 'V', otherwise the WORKAREA will consist of area * covered by '. and 'H'; * * currently hack is used where: w>h -> horizontal dock, else vertical */ /* work area of current workspace -- */ #define XA_WIN_WORKAREA "_WIN_WORKAREA" /* * CARD32[4] * minX, minY, maxX, maxY of workarea. * set/updated only by the window manager * * When windows are maximized they occupy the entire workarea except for * the titlebar at the top (in icewm window frame is not visible). * * Note: when WORKAREA changes, the application window are automatically * repositioned and maximized windows are also resized. */ #define XA_WIN_CLIENT_LIST "_WIN_CLIENT_LIST" /* * XID[] * * list of clients the WM is currently managing */ /* hack for gmc */ #define XA_WIN_DESKTOP_BUTTON_PROXY "_WIN_DESKTOP_BUTTON_PROXY" /* not really used: */ #define XA_WIN_AREA "_WIN_AREA" #define XA_WIN_AREA_COUNT "_WIN_AREA_COUNT" #endif icewm-1.3.7/src/iceskt.cc0000664000076600007660000000246411463274240014215 0ustar develdevel#include "config.h" #include "yapp.h" #include "ysocket.h" #include "debug.h" #include #include class SockTest: public YSocketListener { public: SockTest() { sk.setListener(this); sockaddr_in in; in.sin_family = AF_INET; in.sin_port = htons(8080); in.sin_addr.s_addr = htonl(INADDR_LOOPBACK); sk.connect((struct sockaddr *) &in, sizeof(in)); } virtual ~SockTest() { sk.close(); } virtual void socketConnected() { MSG("Connected\n"); const char *s = "GET / HTTP/1.0\r\n\r\n"; sk.write((unsigned char *)s, strlen(s)); MSG("Written"); sk.read(bf, sizeof(bf)); } virtual void socketError(int err) { if (err) warn(_("Socket error: %d"), err); else MSG("EOF\n"); app->exit(err ? 1 : 0); } virtual void socketDataRead(unsigned char *buf, int len) { msg("read %d\n", len); if (len > 0) { //write(1, buf, len); sk.read(bf, sizeof(bf)); } } private: YSocket sk; unsigned char bf[4096]; }; int main(int argc, char **argv) { #ifdef ENABLE_NLS bindtextdomain(PACKAGE, LOCDIR); textdomain(PACKAGE); #endif YApplication app(&argc, &argv); SockTest sk; return app.mainLoop(); } icewm-1.3.7/src/wmclient.h0000644000076600007660000001562311463274240014416 0ustar develdevel#ifndef __YCLIENT_H #define __YCLIENT_H #include "yutil.h" #include "ywindow.h" #include "ymenu.h" #include "MwmUtil.h" class YFrameWindow; class WindowListItem; class YIcon; typedef int FrameState; class ClientData { public: #ifdef CONFIG_WINLIST virtual void setWinListItem(WindowListItem *i) = 0; #endif virtual YFrameWindow *owner() const = 0; #ifndef LITE virtual ref getIcon() const = 0; #endif virtual ustring getTitle() const = 0; virtual ustring getIconTitle() const = 0; virtual void activateWindow(bool raise) = 0; virtual bool isHidden() const = 0; virtual bool isMinimized() const = 0; virtual void actionPerformed(YAction *action, unsigned int modifiers) = 0; virtual bool focused() const = 0; virtual bool visibleNow() const = 0; virtual bool canRaise() = 0; virtual void wmRaise() = 0; virtual void wmLower() = 0; virtual void wmMinimize() = 0; virtual long getWorkspace() const = 0; virtual bool isSticky() const = 0; virtual void wmOccupyWorkspace(long workspace) = 0; virtual void wmOccupyOnlyWorkspace(long workspace) = 0; virtual void popupSystemMenu(YWindow *owner) = 0; virtual void popupSystemMenu(YWindow *owner, int x, int y, unsigned int flags, YWindow *forWindow = 0) = 0; protected: virtual ~ClientData() {}; }; class YFrameClient: public YWindow { public: YFrameClient(YWindow *parent, YFrameWindow *frame, Window win = 0); virtual ~YFrameClient(); virtual void handleProperty(const XPropertyEvent &property); virtual void handleColormap(const XColormapEvent &colormap); virtual void handleUnmap(const XUnmapEvent &unmap); virtual void handleDestroyWindow(const XDestroyWindowEvent &destroyWindow); virtual void handleClientMessage(const XClientMessageEvent &message); #ifdef CONFIG_SHAPE virtual void handleShapeNotify(const XShapeEvent &shape); #endif int getBorder() const { return fBorder; } void setBorder(unsigned int border) { fBorder = border; } void setFrame(YFrameWindow *newFrame); YFrameWindow *getFrame() const { return fFrame; }; enum { wpDeleteWindow = 1 << 0, wpTakeFocus = 1 << 1 } WindowProtocols; void sendMessage(Atom msg, Time timeStamp); bool sendTakeFocus(); bool sendDelete(); enum { csKeepX = 1, csKeepY = 2, csRound = 4 }; void constrainSize(int &w, int &h, int flags); void gravityOffsets(int &xp, int &yp); Colormap colormap() const { return fColormap; } void setColormap(Colormap cmap); FrameState getFrameState(); void setFrameState(FrameState state); void getWMHints(); XWMHints *hints() const { return fHints; } void getSizeHints(); XSizeHints *sizeHints() const { return fSizeHints; } // for going fullscreen and back XSizeHints savedSizeHints; void saveSizeHints(); void restoreSizeHints(); unsigned long protocols() const { return fProtocols; } void getProtocols(bool force); void getTransient(); Window ownerWindow() const { return fTransientFor; } void getClassHint(); XClassHint *classHint() const { return fClassHint; } void getNameHint(); void getIconNameHint(); void setWindowTitle(const char *title); void setIconTitle(const char *title); #ifdef CONFIG_I18N void setWindowTitle(const XTextProperty & title); void setIconTitle(const XTextProperty & title); #endif ustring windowTitle() { return fWindowTitle; } ustring iconTitle() { return fIconTitle; } bool getWinIcons(Atom *type, int *count, long **elem); void setWinWorkspaceHint(long workspace); bool getWinWorkspaceHint(long *workspace); void setWinLayerHint(long layer); bool getWinLayerHint(long *layer); #ifdef CONFIG_TRAY void setWinTrayHint(long tray_opt); bool getWinTrayHint(long *tray_opt); #endif void setWinStateHint(long mask, long state); bool getWinStateHint(long *mask, long *state); void setWinHintsHint(long hints); bool getWinHintsHint(long *hints); long winHints() const { return fWinHints; } #ifdef WMSPEC_HINTS bool getNetWMIcon(int *count, long **elem); bool getNetWMStateHint(long *mask, long *state); bool getNetWMDesktopHint(long *workspace); bool getNetWMStrut(int *left, int *right, int *top, int *bottom); bool getNetWMWindowType(Atom *window_type); #endif #ifndef NO_MWM_HINTS MwmHints *mwmHints() const { return fMwmHints; } void getMwmHints(); void setMwmHints(const MwmHints &mwm); long mwmFunctions(); long mwmDecors(); #endif #ifndef NO_KWM_HINTS bool getKwmIcon(int *count, Pixmap **pixmap); #endif #ifdef CONFIG_SHAPE bool shaped() const { return fShaped; } void queryShape(); #endif void getClientLeader(); void getWindowRole(); void getWMWindowRole(); Window clientLeader() const { return fClientLeader; } ustring windowRole() const { return fWMWindowRole != null ? fWMWindowRole : fWindowRole; } ustring getClientId(Window leader); void getPropertiesList(); void configure(const YRect &/*r*/); bool isKdeTrayWindow() { return prop.kde_net_wm_system_tray_window_for; } bool getWmUserTime(long *userTime); bool isEmbed() { return prop.xembed_info; } private: YFrameWindow *fFrame; int fProtocols; int haveButtonGrab; unsigned int fBorder; XSizeHints *fSizeHints; XClassHint *fClassHint; XWMHints *fHints; Colormap fColormap; bool fShaped; long fWinHints; ustring fWindowTitle; ustring fIconTitle; Window fClientLeader; ustring fWMWindowRole; ustring fWindowRole; MwmHints *fMwmHints; Window fTransientFor; Pixmap *kwmIcons; struct { bool wm_state : 1; // no property notify bool wm_hints : 1; bool wm_normal_hints : 1; bool wm_transient_for : 1; bool wm_name : 1; bool wm_icon_name : 1; bool wm_class : 1; bool wm_protocols : 1; bool wm_client_leader : 1; bool wm_window_role : 1; bool window_role : 1; bool sm_client_id : 1; bool kwm_win_icon : 1; bool kde_net_wm_system_tray_window_for : 1; #ifdef WMSPEC_HINTS bool net_wm_icon : 1; bool net_wm_strut : 1; bool net_wm_desktop : 1; // no property notify bool net_wm_state : 1; // no property notify bool net_wm_window_type : 1; bool net_wm_user_time : 1; #endif #ifndef NO_MWM_HINTS bool mwm_hints : 1; #endif #ifdef GNOME1_HINTS bool win_hints : 1; bool win_workspace : 1; // no property notify bool win_state : 1; // no property notify bool win_layer : 1; // no property notify bool win_icons : 1; #endif bool xembed_info : 1; } prop; private: // not-used YFrameClient(const YFrameClient &); YFrameClient &operator=(const YFrameClient &); }; #endif // YCLIENT_H icewm-1.3.7/src/yworker.cc0000664000076600007660000000611311463274240014430 0ustar develdevel#include "config.h" #include "yworker.h" #include "yapp.h" #include "sysdep.h" YWorkerProcess::YWorkerProcess() { body_buffer = 0; body_read = 0; body_len = 0; } int YWorkerProcess::start(const char *command, char **args) { int worker_fd; if (worker.socketpair(&worker_fd) != 0) return -1; worker_pid = app->startWorker(worker_fd, command, args); ::close(worker_fd); if (worker_pid == -1) return -1; int rc = worker.read(head_buffer, sizeof(head_buffer)); if (rc != 0) return -1; readState = rsWAIT; worker.setListener(this); msg("started read %d", rc); return 0; } void YWorkerProcess::socketConnected() { msg("connected"); } void YWorkerProcess::socketError(int err) { msg("socket error: %d", err); content_read(0, 0); } void YWorkerProcess::socketDataRead(char *buf, int len) { msg("socket data read: %d", len); if (readState == rsWAIT) { readState = rsHEAD; const char *content_length = "Content-Length: "; int cl_len = strlen(content_length); if (len < cl_len || strncmp(buf, content_length, cl_len) != 0) { readState = rsERROR; return; } buf += cl_len; len -= cl_len; char *eol = (char *)memchr(buf, '\n', len); if (eol == NULL) { readState = rsERROR; return; } *eol = 0; int length = atoi(buf); msg("content length: %d", length); len -= eol - buf + 1; buf = eol + 1; if (len < 1 || buf[0] != '\n' || length < 0) { readState = rsERROR; return; } buf++; len--; if (len > length) { readState = rsERROR; return; } if (length == 0) { content_read(0, 0); readState = rsWAIT; return; } if (body_buffer != NULL) { free(body_buffer); body_buffer = NULL; } body_len = length; body_buffer = (char *)malloc(body_len); if (body_buffer == NULL) { readState = rsERROR; return; } body_read = len; memcpy(body_buffer, buf, len); if (body_len == body_read) { content_read(body_buffer, body_len); readState = rsWAIT; } else { worker.read(body_buffer + body_read, body_len - body_read); readState = rsBODY; } } else if (readState == rsBODY){ body_read += len; if (body_len == body_read) { content_read(body_buffer, body_len); readState = rsWAIT; free(body_buffer); } else { worker.read(body_buffer + body_read, body_len - body_read); } } else { if (body_buffer != NULL) { free(body_buffer); body_buffer = NULL; } readState = rsERROR; } } void YWorkerProcess::content_read(char *buffer, int length) { if (fListener) fListener->handleMessage(this, buffer, length); } icewm-1.3.7/src/aworkspaces.h0000644000076600007660000000265211463274240015114 0ustar develdevel#ifndef AWORKSPACES_H_ #define AWORKSPACES_H_ #include "ywindow.h" #include "obj.h" #include "objbutton.h" #include "ytimer.h" class WorkspaceButton: public ObjectButton, public YTimerListener { public: WorkspaceButton(long workspace, YWindow *parent); virtual void handleClick(const XButtonEvent &up, int count); virtual void handleDNDEnter(); virtual void handleDNDLeave(); virtual bool handleTimer(YTimer *t); virtual void actionPerformed(YAction *button, unsigned int modifiers); virtual ref getFont(); virtual YColor * getColor(); virtual YSurface getSurface(); private: virtual void paint(Graphics &g, const YRect &r); static YTimer *fRaiseTimer; long fWorkspace; static YColor * normalButtonBg; static YColor * normalButtonFg; static YColor * activeButtonBg; static YColor * activeButtonFg; static ref normalButtonFont; static ref activeButtonFont; }; class WorkspacesPane: public YWindow { public: WorkspacesPane(YWindow *parent); ~WorkspacesPane(); void repaint(); void configure(const YRect &r); WorkspaceButton *workspaceButton(long n); private: WorkspaceButton **fWorkspaceButton; }; extern ref workspacebuttonPixmap; extern ref workspacebuttonactivePixmap; #ifdef CONFIG_GRADIENTS extern ref workspacebuttonPixbuf; extern ref workspacebuttonactivePixbuf; #endif #endif icewm-1.3.7/src/yarray.cc0000644000076600007660000000765611463274240014250 0ustar develdevel/* * IceWM - Simple dynamic array * Copyright (C) 2001 The Authors of IceWM * * Release under terms of the GNU Library General Public License * * 2001/04/14: Mathias Hasselmann * - initial version * 2002/07/31: Mathias Hasselmann * - major rewrite of the code * - introduced YBaseArray to reduce overhead caused by templates * - introduced YObjectArray for easy memory management * - introduced YStringArray */ #include "yarray.h" #include #include YBaseArray::YBaseArray(YBaseArray &other): fElementSize(other.fElementSize), fCapacity(other.fCapacity), fCount(other.fCount), fElements(other.fElements) { other.release(); } void YBaseArray::setCapacity(SizeType nCapacity) { if (nCapacity != fCapacity) { StorageType *nElements = new StorageType[nCapacity * fElementSize]; memcpy(nElements, fElements, min(nCapacity, fCapacity) * fElementSize); delete[] fElements; fElements = nElements; fCapacity = nCapacity; fCount = min(fCount, fCapacity); } } void YBaseArray::append(const void *item) { if (fCount >= fCapacity) { const SizeType nCapacity = (fCapacity ? fCapacity * 2 : 4); StorageType *nElements = new StorageType[nCapacity * fElementSize]; memcpy(nElements, fElements, fCapacity * fElementSize); delete[] fElements; fElements = nElements; fCapacity = nCapacity; } memcpy(getElement(fCount++), item, fElementSize); assert(fCount <= fCapacity); } void YBaseArray::insert(const SizeType index, const void *item) { assert(index <= fCount); const SizeType nCount = max(fCount + 1, index + 1); const SizeType nCapacity(nCount <= fCapacity ? fCapacity : max(nCount, fCapacity * 2)); StorageType *nElements(nCount <= fCapacity ? fElements : new StorageType[nCapacity * fElementSize]); if (nElements != fElements) memcpy(nElements, fElements, min(index, fCount) * fElementSize); if (index < fCount) memmove(nElements + (index + 1) * fElementSize, fElements + (index) * fElementSize, (fCount - index) * fElementSize); if (nElements != fElements) { delete[] fElements; fElements = nElements; fCapacity = nCapacity; } memcpy(getElement(index), item, fElementSize); fCount = nCount; assert(fCount <= fCapacity); assert(index < fCount); } void YBaseArray::remove(const SizeType index) { MSG(("remove %d %d", index, fCount)); PRECONDITION(index < getCount()); if (fCount > 0) memmove(getElement(index), getElement(index + 1), fElementSize * (--fCount - index)); else clear(); } void YBaseArray::clear() { delete[] fElements; fElements = 0; fCapacity = 0; fCount = 0; } void YBaseArray::release() { fElements = 0; fCapacity = 0; fCount = 0; } YStringArray::YStringArray(const YStringArray &other): YBaseArray(sizeof(char *)) { setCapacity(other.getCapacity()); for (SizeType i = 0; i < other.getCount(); ++i) append(other.getString(i)); } static bool strequal(const char *a, const char *b) { return a ? b && !strcmp(a, b) : !b; } YStringArray::SizeType YStringArray::find(const char *str) { for (SizeType i = 0; i < getCount(); ++i) if (strequal(getString(i), str)) return i; return npos; } void YStringArray::remove(const SizeType index) { if (index < getCount()) delete[] getString(index); YBaseArray::remove(index); } void YStringArray::clear() { for (int i = 0; i < getCount(); ++i) delete[] getString(i); YBaseArray::clear(); } char * const *YStringArray::getCArray() const { return (char * const*) getBegin(); } char **YStringArray::release() { char **strings = (char **) getBegin(); YBaseArray::release(); return strings; } icewm-1.3.7/src/config.h.in0000664000076600007660000002063011463274245014447 0ustar develdevel/* src/config.h.in. Generated from configure.in by autoheader. */ /* Address bar */ #undef CONFIG_ADDRESSBAR /* APM status applet */ #undef CONFIG_APPLET_APM /* LCD clock applet */ #undef CONFIG_APPLET_CLOCK /* CPU status applet */ #undef CONFIG_APPLET_CPU_STATUS /* Mailbox applet */ #undef CONFIG_APPLET_MAILBOX /* Network status applet */ #undef CONFIG_APPLET_NET_STATUS /* Define to enable X11 core conts. */ #undef CONFIG_COREFONTS /* Define to use gdk_pixbuf_xlib for image rendering */ #undef CONFIG_GDK_PIXBUF_XLIB /* Define to make IceWM more GNOME-friendly */ #undef CONFIG_GNOME_MENUS /* Define to enable gradient support. */ #undef CONFIG_GRADIENTS /* Define to enable GUI events support. */ #undef CONFIG_GUIEVENTS /* Define to enable internationalization */ #undef CONFIG_I18N /* Define when using libiconv */ #undef CONFIG_LIBICONV /* define how to query the current locale's codeset */ #undef CONFIG_NL_CODESETS /* Define to support the X session managment protocol */ #undef CONFIG_SESSION /* Define to enable X shape extension */ #undef CONFIG_SHAPE /* Define to allow transparent frame borders. */ #undef CONFIG_SHAPED_DECORATION /* Taskbar */ #undef CONFIG_TASKBAR /* Tooltips */ #undef CONFIG_TOOLTIP /* Window tray */ #undef CONFIG_TRAY /* preferred Unicode set */ #undef CONFIG_UNICODE_SET /* OS/2 like window list */ #undef CONFIG_WINLIST /* Window menu */ #undef CONFIG_WINMENU /* Define to enable x86 assembly code. */ #undef CONFIG_X86_ASM /* Define to enable XFreeType support. */ #undef CONFIG_XFREETYPE /* Define to enable XRANDR extension */ #undef CONFIG_XRANDR /* Define if you want to debug IceWM */ #undef DEBUG /* Define to enable ESD support. */ #undef ENABLE_ESD /* Define to enable internationalized message */ #undef ENABLE_NLS /* Define to enable OSS support. */ #undef ENABLE_OSS /* Define to enable YIFF support. */ #undef ENABLE_YIFF /* GNOME1 hints */ #undef GNOME1_HINTS /* Define to 1 if you have the `basename' function. */ #undef HAVE_BASENAME /* define if nl_langinfo supports CODESET */ #undef HAVE_CODESET /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_DIRENT_H /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #undef HAVE_DOPRNT /* Define to 1 if you have the header file. */ #undef HAVE_ESD_H /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* getloadavg() is available */ #undef HAVE_GETLOADAVG2 /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the `iconv' function. */ #undef HAVE_ICONV /* Define to 1 if you have the `iconv_close' function. */ #undef HAVE_ICONV_CLOSE /* Define to 1 if you have the header file. */ #undef HAVE_ICONV_H /* Define to 1 if you have the `iconv_open' function. */ #undef HAVE_ICONV_OPEN /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_KSTAT_H /* Define to 1 if you have the header file. */ #undef HAVE_LANGINFO_H /* Define to 1 if you have the `esd' library (-lesd). */ #undef HAVE_LIBESD /* Define to 1 if you have the header file. */ #undef HAVE_LIBGEN_H /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_LINUX_TASKS_H /* Define to 1 if you have the header file. */ #undef HAVE_LINUX_THREADS_H /* Define to 1 if you have the header file. */ #undef HAVE_MACHINE_APMVAR_H /* Define to 1 if you have the header file. */ #undef HAVE_MACHINE_APM_BIOS_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_NDIR_H /* define if have old kstat (Solaris only?) */ #undef HAVE_OLD_KSTAT /* Define to 1 if you have the `putenv' function. */ #undef HAVE_PUTENV /* Define to 1 if you have the header file. */ #undef HAVE_SCHED_H /* Define to 1 if you have the `select' function. */ #undef HAVE_SELECT /* Define to 1 if you have the `socket' function. */ #undef HAVE_SOCKET /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strftime' function. */ #undef HAVE_STRFTIME /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strtol' function. */ #undef HAVE_STRTOL /* Define to 1 if you have the `strtoul' function. */ #undef HAVE_STRTOUL /* Define to 1 if you have the `sysctlbyname' function. */ #undef HAVE_SYSCTLBYNAME /* kern.cp_time MIB item is available */ #undef HAVE_SYSCTL_CP_TIME /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_DIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_DKSTAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_IOCTL_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SELECT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SYSCTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have that is POSIX.1 compatible. */ #undef HAVE_SYS_WAIT_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the header file. */ #undef HAVE_UVM_UVM_PARAM_H /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF /* Define to 1 if you have the header file. */ #undef HAVE_X11_XFT_XFT_H /* Define to enable XInternAtoms */ #undef HAVE_XINTERNATOMS /* Define to 1 if you have the header file. */ #undef HAVE_Y2_Y_H /* define if nl_langinfo supports _NL_CTYPE_CODESET_NAME */ #undef HAVE__NL_CTYPE_CODESET_NAME /* Lite version */ #undef LITE /* Define to disable preferences support. */ #undef NO_CONFIGURE /* Define to disable configurable menu support. */ #undef NO_CONFIGURE_MENUS /* Define to disable keybinding support. */ #undef NO_KEYBIND /* Define to disable configurable window options support. */ #undef NO_WINDOW_OPTIONS /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE /* Define to the type of arg 1 for `select'. */ #undef SELECT_TYPE_ARG1 /* Define to the type of args 2, 3 and 4 for `select'. */ #undef SELECT_TYPE_ARG234 /* Define to the type of arg 5 for `select'. */ #undef SELECT_TYPE_ARG5 /* The size of `char', as computed by sizeof. */ #undef SIZEOF_CHAR /* The size of `int', as computed by sizeof. */ #undef SIZEOF_INT /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG /* The size of `short', as computed by sizeof. */ #undef SIZEOF_SHORT /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME /* wmspec hints */ #undef WMSPEC_HINTS /* Define to enable Xinerama support */ #undef XINERAMA /* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING /* Define to `unsigned int' if does not define. */ #undef size_t icewm-1.3.7/src/yworker.h0000664000076600007660000000156111463274240014274 0ustar develdevel#ifndef _WORKERPROCESS_H_ #define _WORKERPROCESS_H_ #include "ysocket.h" class YWorkerProcess; class IWorkerListener { public: virtual void handleMessage(YWorkerProcess *worker, char *buffer, int length) = 0; protected: virtual ~IWorkerListener() {}; }; class YWorkerProcess: public YSocketListener { public: YWorkerProcess(); int start(const char *command, char **args); void setListener(IWorkerListener *listener) { fListener = listener; } virtual void socketConnected(); virtual void socketError(int err); virtual void socketDataRead(char *buf, int len); private: YSocket worker; int worker_pid; char head_buffer[128]; enum { rsWAIT, rsHEAD, rsBODY, rsERROR } readState; char *body_buffer; int body_len; int body_read; IWorkerListener *fListener; void content_read(char *buffer, int length); }; #endif icewm-1.3.7/src/wmconfig.h0000644000076600007660000000062011463274240014374 0ustar develdevel#ifndef __WMCONFIG_H #define __WMCONFIG_H extern bool configurationNeeded; void loadConfiguration(const char *fileName); void loadThemeConfiguration(const char *themeName); void addWorkspace(const char *name, const char *value, bool append); void setLook(const char *name, const char *value, bool append); void freeConfiguration(); int setDefault(const char *basename, const char *config); #endif icewm-1.3.7/src/yscrollview.cc0000644000076600007660000000372411463274240015313 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek */ #include "config.h" #ifndef LITE #include "yscrollview.h" #include "ylistbox.h" #include "yscrollbar.h" #include "yrect.h" #include "yapp.h" #include "prefs.h" extern YColor *scrollBarBg; YScrollView::YScrollView(YWindow *aParent): YWindow(aParent) { scrollVert = new YScrollBar(YScrollBar::Vertical, this); scrollVert->show(); scrollHoriz = new YScrollBar(YScrollBar::Horizontal, this); scrollHoriz->show(); scrollable = 0; } YScrollView::~YScrollView() { delete scrollVert; scrollVert = 0; delete scrollHoriz; scrollHoriz = 0; } void YScrollView::setView(YScrollable *s) { scrollable = s; } void YScrollView::getGap(int &dx, int &dy) { int const cw(scrollable->contentWidth()); int const ch(scrollable->contentHeight()); ///msg("content %d %d this %d %d", cw, ch, width(), height()); dx = dy = 0; if (width() < cw) { dy = scrollBarWidth; if (height() - dy < ch) dx = scrollBarWidth; } else if (height() < ch) { dx = scrollBarWidth; if (width() - dx < cw) dy = scrollBarWidth; } } void YScrollView::layout() { if (!scrollable) // !!! fix return ; int const w(width()), h(height()); int dx, dy; getGap(dx, dy); ///msg("gap %d %d", dx, dy); int sw(max(0, w - dx)); int sh(max(0, h - dy)); scrollVert->setGeometry(YRect(w - dx, 0, dx, sh)); scrollHoriz->setGeometry(YRect(0, h - dy, sw, dy)); if (dx > w) dx = w; if (dy > h) dy = h; YWindow *ww = scrollable->getWindow(); //!!! ww->setGeometry(YRect(0, 0, w - dx, h - dy)); } void YScrollView::configure(const YRect &r) { YWindow::configure(r); layout(); } void YScrollView::paint(Graphics &g, const YRect &r) { int dx, dy; getGap(dx, dy); g.setColor(scrollBarBg); if (dx && dy) g.fillRect(width() - dx, height() - dy, dx, dy); YWindow::paint(g, r); } #endif icewm-1.3.7/src/ypaths.h0000644000076600007660000000250311463274240014075 0ustar develdevel/* * IceWM - Definition for resource paths * Copyright (C) 2001 The Authors of IceWM * * Release under terms of the GNU Library General Public License */ #ifndef __YRESOURCEPATH_H #define __YRESOURCEPATH_H #include #include "ypaint.h" #include "yarray.h" #include "upath.h" upath findPath(ustring path, int mode, upath name, bool path_relative = false); struct YPathElement { YPathElement(upath p): fPath(p) {} upath joinPath(upath base) const; upath joinPath(upath base, upath name) const; upath fPath; }; class YResourcePaths: public refcounted { public: static ref paths(); static ref subdirs(upath subdir, bool themeOnly = false); private: YResourcePaths() {} void addDir(upath root, upath rdir, upath sub); public: virtual ~YResourcePaths() { } ref loadPixmap(upath base, upath name) const; /// ref loadPixbuf(upath base, upath name, bool const fullAlpha) const; ref loadImage(upath base, upath name) const; ref loadIcon(upath base, upath name) const; int getCount() const { return fPaths.getCount(); } YPathElement *getPath(int index) const { return fPaths[index]; } protected: void verifyPaths(upath base); private: YArray fPaths; }; #endif icewm-1.3.7/src/wmstatus.h0000644000076600007660000000261311463274240014456 0ustar develdevel#ifndef __WMSTATUS_H #define __WMSTATUS_H #ifndef LITE #include "ywindow.h" class YFrameWindow; class YWindowManagerStatus: public YWindow { public: YWindowManagerStatus(YWindow *aParent, ustring (*templFunc) ()); virtual ~YWindowManagerStatus(); virtual void paint(Graphics &g, const YRect &r); void begin(); void end() { hide(); } virtual ustring getStatus() = 0; protected: static YColor *statusFg; static YColor *statusBg; static ref statusFont; }; class MoveSizeStatus: public YWindowManagerStatus { public: MoveSizeStatus(YWindow *aParent); virtual ~MoveSizeStatus(); virtual ustring getStatus(); void begin(YFrameWindow *frame); void setStatus(YFrameWindow *frame, const YRect &r); void setStatus(YFrameWindow *frame); private: static ustring templateFunction(); int fX, fY, fW, fH; }; class WorkspaceStatus: public YWindowManagerStatus { public: WorkspaceStatus(YWindow *aParent); virtual ~WorkspaceStatus(); virtual ustring getStatus(); void begin(long workspace); virtual void setStatus(long workspace); private: static ustring templateFunction(); static ustring getStatus(const char* name); long workspace; class YTimer *timer; class Timeout; Timeout *timeout; }; extern MoveSizeStatus *statusMoveSize; extern WorkspaceStatus *statusWorkspace; #endif #endif icewm-1.3.7/src/testmenus.cc0000644000076600007660000000566611463274240014767 0ustar develdevel#include "config.h" #include "ywindow.h" #include "ymenu.h" #include "yaction.h" #include "ylocale.h" #include "yxapp.h" #include "yicon.h" #include "ymenuitem.h" #include "wmprog.h" #include "wmapp.h" #include "yprefs.h" #include "default.h" const char *ApplicationName = "testmenus"; YMenu *logoutMenu(NULL); YWMApp *wmapp(NULL); YMenu *windowListMenu(NULL); void YWMApp::restartClient(const char *path, char *const *args) { } void YWMApp::runOnce(const char *resource, const char *path, char *const *args) { } class MenuWindow: public YWindow { public: YMenu *menu; YMenu *submenu0; YMenu *submenu1; YMenu *submenu2; YIcon *file; MenuWindow() { menu = new YMenu(); menu = new StartMenu("menu"); #if 0 file = YIcon::getIcon("file"); YAction *actionNone = new YAction(); submenu0 = new YMenu(); submenu0->addItem("XML Tree", 0, null, actionNone); submenu0->addItem("Text", 0, null, actionNone); submenu0->addItem("Hex", 0, null, actionNone); submenu1 = new YMenu(); submenu1->addItem("Name", 0, null, actionNone); submenu1->addItem("Size", 0, null, actionNone); submenu1->addItem("Modified", 0, null, actionNone); submenu1->addItem("Modified", 0, null, actionNone); submenu2 = new YMenu(); submenu2->addItem("Contents", 0, null, actionNone); submenu2->addItem("Search", 0, null, actionNone); submenu2->addSeparator(); submenu2->addItem("About", 0, null, actionNone); menu = new YMenu(); menu->addItem("Open", 0, 0, submenu0); menu->addItem("Properties", 0, null, actionNone); menu->addSeparator(); menu->addItem("Help", 0, 0, submenu2); menu->addSeparator(); menu->addItem("Cut", 0, null, actionNone)->setIcon(file); menu->addItem("Copy", 0, null, actionNone)->setIcon(file); menu->addItem("Paste", 0, null, actionNone)->setIcon(file); menu->addItem("Delete", 0, null, actionNone)->setIcon(file); menu->addSeparator(); menu->addItem("Sort", 0, actionNone, submenu1); menu->addSeparator(); menu->addItem("Close", 0, null, actionNone); #endif } void handleButton(const XButtonEvent &button) { if ((button.type == ButtonRelease) && (button.button == 3)) { menu->popup(this, 0, 0, button.x_root, button.y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu); } } }; int main(int argc, char **argv) { iconPath = "/usr/share/icons/crystalsvg/48x48/apps/:/usr/share/icons/Bluecurve/16x16/apps/:/usr/share/pixmap"; YLocale locale; YXApplication xapp(&argc, &argv); ////XSynchronize(xapp.display(), True); YWindow *w = new MenuWindow(); w->setSize(200, 200); w->show(); return xapp.mainLoop(); } icewm-1.3.7/src/intl.h0000664000076600007660000000064311463274240013540 0ustar develdevel#undef _ #undef N_ #undef bindtextdomain #undef textdomain #if defined(ENABLE_NLS) # include # # define gettext_noop(String) (String) # # define _(String) gettext(String) # define N_(String) gettext_noop(String) #else # define bindtextdomain(catalog, locale_dir) # define textdomain(catalog) # # define _(String) (String) # define N_(String) (String) #endif icewm-1.3.7/src/movesize.cc0000644000076600007660000010173411463274240014572 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek */ #include "config.h" #include "yfull.h" #include "ykey.h" #include "wmframe.h" #include "wmclient.h" #include "wmstatus.h" #include "yxapp.h" #include "wmapp.h" #include "yrect.h" #include "prefs.h" #include "intl.h" #include "wmtaskbar.h" #include "aworkspaces.h" #include void YFrameWindow::snapTo(int &wx, int &wy, int rx1, int ry1, int rx2, int ry2, int &flags) { int d = snapDistance; if (flags & 4) { // snap to container window (root, workarea) int iw = width(); if (flags & 8) iw -= 2 * borderX(); if (flags & 1) { // x int wxw = wx + iw; if (wx >= rx1 - d && wx <= rx1 + d) { wx = rx1; flags &= ~1; } else if (wxw >= rx2 - d && wxw <= rx2 + d) { wx = rx2 - iw; flags &= ~1; } } } else { // snap to other window int iw = width(); int ih = height(); bool touchY = false; //if (wy >= ry1 && wy <= ry2 || // wy + ih >= rx1 && wy + ih <= ry2) if (wy <= ry2 && wy + ih >= ry1) touchY = true; if ((flags & 1) && touchY) { // x int wxw = wx + iw; if (wx >= rx2 - d && wx <= rx2 + d) { wx = rx2; flags &= ~1; } else if (wxw >= rx1 - d && wxw <= rx1 + d) { wx = rx1 - iw; flags &= ~1; } } } if (flags & 4) { int ih = height(); if (flags & 16) ih -= 2 * borderY(); if (flags & 2) { // y int wyh = wy + ih; if (wy >= ry1 - d && wy <= ry1 + d) { wy = ry1; flags &= ~2; } else if (wyh >= ry2 - d && wyh <= ry2 + d) { wy = ry2 - ih; flags &= ~2; } } } else { int iw = width(); int ih = height(); bool touchX = false; //if (wx >= rx1 && wx <= rx2 || // wx + iw >= rx1 && wx + iw <= rx2) if (wx <= rx2 && wx + iw >= rx1) touchX = true; if ((flags & 2) && touchX) { // y int wyh = wy + ih; if (wy >= ry2 - d && wy <= ry2 + d) { wy = ry2; flags &= ~2; } else if (wyh >= ry1 - d && wyh <= ry1 + d) { wy = ry1 - ih; flags &= ~2; } } } } void YFrameWindow::snapTo(int &wx, int &wy) { YFrameWindow *f = manager->topLayer(); int flags = 1 | 2; int xp = wx, yp = wy; int rx1, ry1, rx2, ry2; int mx, my, Mx, My; manager->getWorkArea(this, &mx, &my, &Mx, &My, getScreen()); /// !!! clean this up, it should snap to the closest thing it finds // try snapping to the border first flags |= 4; if (xp < mx || xp + int(width()) > Mx) { xp += borderX(); flags |= 8; } if (yp < my || yp + int(height()) > My) { yp += borderY(); flags |= 16; } snapTo(xp, yp, mx, my, Mx, My, flags); if (flags & 8) { xp -= borderX(); flags &= ~8; } if (flags & 16) { yp -= borderY(); flags &= ~16; } if (xp < 0 || xp + width() > desktop->width()) { xp += borderX(); flags |= 8; } if (yp < 0 || yp + height() > desktop->height()) { yp += borderY(); flags |= 16; } snapTo(xp, yp, 0, 0, manager->width(), manager->height(), flags); if (flags & 8) { xp -= borderX(); flags &= ~8; } if (flags & 16) { yp -= borderY(); flags &= ~16; } flags &= ~4; if (flags & (1 | 2)) { for (; f; f = f->nextLayer()) { if (affectsWorkArea() && f->inWorkArea()) continue; if (f != this && f->visible()) { rx1 = f->x(); ry1 = f->y(); rx2 = f->x() + f->width(); ry2 = f->y() + f->height(); snapTo(xp, yp, rx1, ry1, rx2, ry2, flags); if (!(flags & (1 | 2))) break; } } } wx = xp; wy = yp; } void YFrameWindow::drawMoveSizeFX(int x, int y, int w, int h, bool) { if ((movingWindow && opaqueMove) || (sizingWindow && opaqueResize)) return; int const bw((wsBorderX + wsBorderY) / 2); int const bo((wsBorderX + wsBorderY) / 4); static Graphics * gc(NULL); if (gc == NULL) { XGCValues gcv; gcv.foreground = YColor(clrActiveBorder).pixel(); gcv.function = GXxor; gcv.graphics_exposures = False; gcv.line_width = bw; gcv.subwindow_mode = IncludeInferiors; gc = new Graphics(*desktop, GCForeground | GCFunction | GCGraphicsExposures | GCLineWidth | GCSubwindowMode, &gcv); } gc->drawRect(x + bo, y + bo, w - bw, h - bw); } int YFrameWindow::handleMoveKeys(const XKeyEvent &key, int &newX, int &newY) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); int m = KEY_MODMASK(key.state); int factor = 1; int mx, my, Mx, My; manager->getWorkArea(this, &mx, &my, &Mx, &My); if (m & ShiftMask) factor = 4; if (m & ControlMask) factor<<= 4; if (k == XK_Left || k == XK_KP_Left) newX -= factor; else if (k == XK_Right || k == XK_KP_Right) newX += factor; else if (k == XK_Up || k == XK_KP_Up) newY -= factor; else if (k == XK_Down || k == XK_KP_Down) newY += factor; else if (k == XK_Home || k == XK_KP_Home) newX = mx - borderX(); else if (k == XK_End || k == XK_KP_End) newX = Mx - width() + borderX(); else if (k == XK_Prior || k == XK_KP_Prior) newY = my - borderY(); else if (k == XK_Next || k == XK_KP_Next) newY = My - height() + borderY(); else if (k == XK_KP_Begin) { newX = (mx + Mx - (int)width()) / 2; newY = (my + My - (int)height()) / 2; } else if (k == XK_Return || k == XK_KP_Enter) return -1; else if (k == XK_Escape) { newX = origX; newY = origY; return -2; } else return 0; return 1; } /******************************************************************************/ int YFrameWindow::handleResizeKeys(const XKeyEvent &key, int &newX, int &newY, int &newWidth, int &newHeight, int incX, int incY) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); int m = KEY_MODMASK(key.state); int factor = 1; if (m & ShiftMask) factor = 4; if (m & ControlMask) factor<<= 4; if (k == XK_Left || k == XK_KP_Left) { if (grabX == 0) { grabX = -1; } if (grabX == 1) { newWidth -= incX * factor; } else if (grabX == -1) { newWidth += incX * factor; newX -= incX * factor; } } else if (k == XK_Right || k == XK_KP_Right) { if (grabX == 0) { grabX = 1; } if (grabX == 1) { newWidth += incX * factor; } else if (grabX == -1) { newWidth -= incX * factor; newX += incX * factor; } } else if (k == XK_Up || k == XK_KP_Up) { if (grabY == 0) { grabY = -1; } if (grabY == 1) { newHeight -= incY * factor; } else if (grabY == -1) { newHeight += incY * factor; newY -= incY * factor; } } else if (k == XK_Down || k == XK_KP_Down) { if (grabY == 0) { grabY = 1; } if (grabY == 1) { newHeight += incY * factor; } else if (grabY == -1) { newHeight -= incY * factor; newY += incY * factor; } } else if (k == XK_Return || k == XK_KP_Enter) return -1; else if (k == XK_Escape) { newX = origX; newY = origY; newWidth = origW; newHeight = origH; return -2; } else return 0; return 1; } void YFrameWindow::handleMoveMouse(const XMotionEvent &motion, int &newX, int &newY) { int mouseX = motion.x_root; int mouseY = motion.y_root; //constrainMouseToWorkspace(mouseX, mouseY); newX = mouseX - buttonDownX; newY = mouseY - buttonDownY; constrainPositionByModifier(newX, newY, motion); newX += borderX(); newY += borderY(); int n = -2; int mx, my, Mx, My; manager->getWorkArea(this, &mx, &my, &Mx, &My); if (!(motion.state & ShiftMask)) { if (/*EdgeResistance >= 0 && %%% */ EdgeResistance < 10000) { if (newX + int(width() + n * borderX()) > Mx) { if (newX + int(width() + n * borderX()) < int(Mx + EdgeResistance)) newX = Mx - width() - n * borderX(); else if (motion.state & ShiftMask) newX -= EdgeResistance; } if (newY + int(height() + n * borderY()) > My) { if (newY + int(height() + n * borderY()) < int(My + EdgeResistance)) newY = My - height() - n * borderY(); else if (motion.state & ShiftMask) newY -= EdgeResistance; } if (newX < mx) { if (newX > int(- EdgeResistance + mx)) newX = mx; else if (motion.state & ShiftMask) newX += EdgeResistance; } if (newY < my) { if (newY > int(- EdgeResistance + my)) newY = my; else if (motion.state & ShiftMask) newY += EdgeResistance; } } if (EdgeResistance == 10000 || isMaximizedHoriz()) { if (newX + int(width() + n * borderX()) > Mx) newX = Mx - width() - n * borderX(); if (newX < mx) newX = mx; } if (EdgeResistance == 10000 || isMaximizedVert()) { if (newY + int(height() + n * borderY()) > My) newY = My - height() - n * borderY(); if (newY < my) newY = my; } } newX -= borderX(); newY -= borderY(); } void YFrameWindow::handleResizeMouse(const XMotionEvent &motion, int &newX, int &newY, int &newWidth, int &newHeight) { int mouseX = motion.x_root; int mouseY = motion.y_root; // constrainMouseToWorkspace(mouseX, mouseY); if (grabX == -1) { newX = mouseX - buttonDownX; newWidth = width() + x() - newX; } else if (grabX == 1) { newWidth = mouseX + buttonDownX - x(); } if (grabY == -1) { newY = mouseY - buttonDownY; newHeight = height() + y() - newY; } else if (grabY == 1) { newHeight = mouseY + buttonDownY - y(); } newWidth -= 2 * borderX(); newHeight -= 2 * borderY() + titleY(); client()->constrainSize(newWidth, newHeight, ///getLayer(), YFrameClient::csRound | ((grabX != 0) ? YFrameClient::csKeepX : 0) | ((grabY != 0) ? YFrameClient::csKeepY : 0)); newWidth += 2 * borderX(); newHeight += 2 * borderY() + titleY(); if (grabX == -1) newX = x() + width() - newWidth; if (grabY == -1) newY = y() + height() - newHeight; } void YFrameWindow::outlineMove() { int xx(x()), yy(y()); unsigned modifiers(0); XGrabServer(xapp->display()); XSync(xapp->display(), False); for(;;) { XEvent xev; XWindowEvent(xapp->display(), handle(), KeyPressMask | ExposureMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask, &xev); switch (xev.type) { case KeyPress: { modifiers = xev.xkey.state; int const ox(xx), oy(yy); int r; switch (r = handleMoveKeys(xev.xkey, xx, yy)) { case 1: case -2: if (xx != ox || yy != oy) { drawMoveSizeFX(ox, oy, width(), height()); #ifndef LITE statusMoveSize->setStatus(this, YRect(xx, yy, width(), height())); #endif drawMoveSizeFX(xx, yy, width(), height()); } if (r == -2) goto end; break; case 0: break; case -1: goto end; } break; } case ButtonPress: case ButtonRelease: modifiers = xev.xbutton.state; goto end; case MotionNotify: { int const ox(xx), oy(yy); handleMoveMouse(xev.xmotion, xx, yy); if (xx != ox || yy != oy) { drawMoveSizeFX(ox, oy, width(), height()); #ifndef LITE statusMoveSize->setStatus(this, YRect(xx, yy, width(), height())); #endif drawMoveSizeFX(xx, yy, width(), height()); } break; } } } end: drawMoveSizeFX(xx, yy, width(), height()); XSync(xapp->display(), False); moveWindow(xx, yy); XUngrabServer(xapp->display()); } void YFrameWindow::outlineResize() { int xx(x()), yy(y()), ww(width()), hh(height()); int incX(1), incY(1); if (client()->sizeHints()) { incX = client()->sizeHints()->width_inc; incY = client()->sizeHints()->height_inc; } XGrabServer(xapp->display()); XSync(xapp->display(), False); for(;;) { XEvent xev; XWindowEvent(xapp->display(), handle(), KeyPressMask | ExposureMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask, &xev); switch (xev.type) { case KeyPress: { int const ox(xx), oy(yy), ow(ww), oh(hh); int r; switch (r = handleResizeKeys(xev.xkey, xx, yy, ww, hh, incX, incY)) { case -2: case 1: if (ox != xx || oy != yy || ow != ww || oh != hh) { drawMoveSizeFX(ox, oy, ow, oh); #ifndef LITE statusMoveSize->setStatus(this, YRect(xx, yy, ww, hh)); #endif drawMoveSizeFX(xx, yy, ww, hh); } if (r == -2) goto end; break; case 0: break; case -1: goto end; } break; } case ButtonPress: case ButtonRelease: goto end; case MotionNotify: { int const ox(xx), oy(yy), ow(ww), oh(hh); handleResizeMouse(xev.xmotion, xx, yy, ww,hh); if (ox != xx || oy != yy || ow != ww || oh != hh) { drawMoveSizeFX(ox, oy, ow, oh); #ifndef LITE statusMoveSize->setStatus(this, YRect(xx, yy, ww, hh)); #endif drawMoveSizeFX(xx, yy, ww, hh); } break; } } } end: drawMoveSizeFX(xx, yy, ww, hh); XSync(xapp->display(), False); setCurrentGeometryOuter(YRect(xx, yy, ww, hh)); XUngrabServer(xapp->display()); } void YFrameWindow::manualPlace() { int xx(x()), yy(y()); grabX = 1; grabY = 1; origX = x(); origY = y(); origW = width(); origH = height(); buttonDownX = 0; buttonDownY = 0; if (!xapp->grabEvents(desktop, YXApplication::movePointer.handle(), ButtonPressMask | ButtonReleaseMask | PointerMotionMask)) return; XGrabServer(xapp->display()); #ifndef LITE statusMoveSize->begin(this); #endif drawMoveSizeFX(xx, yy, width(), height()); for(;;) { XEvent xev; XMaskEvent(xapp->display(), KeyPressMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask, &xev); switch (xev.type) { case KeyPress: { int const ox(xx), oy(yy); int r; switch (r = handleMoveKeys(xev.xkey, xx, yy)) { case 1: case -2: if (xx != ox || yy != oy) { drawMoveSizeFX(ox, oy, width(), height()); #ifndef LITE statusMoveSize->setStatus(this, YRect(xx, yy, width(), height())); #endif drawMoveSizeFX(xx, yy, width(), height()); } if (r == -2) goto end; break; case 0: break; case -1: goto end; } break; } case ButtonPress: case ButtonRelease: goto end; case MotionNotify: { int const ox(xx), oy(yy); handleMoveMouse(xev.xmotion, xx, yy); if (xx != ox || yy != oy) { drawMoveSizeFX(ox, oy, width(), height()); #ifndef LITE statusMoveSize->setStatus(this, YRect(xx, yy, width(), height())); #endif drawMoveSizeFX(xx, yy, width(), height()); } break; } } } end: drawMoveSizeFX(xx, yy, width(), height()); #ifndef LITE statusMoveSize->end(); #endif moveWindow(xx, yy); xapp->releaseEvents(); XUngrabServer(xapp->display()); } bool YFrameWindow::handleKey(const XKeyEvent &key) { if (key.type == KeyPress) { if (movingWindow) { int newX = x(); int newY = y(); switch (handleMoveKeys(key, newX, newY)) { case -2: moveWindow(newX, newY); /* nobreak */ case -1: endMoveSize(); break; case 0: return true; case 1: moveWindow(newX, newY); break; } } else if (sizingWindow) { int newX = x(); int newY = y(); int newWidth = width(); int newHeight = height(); int incX = 1; int incY = 1; if (client()->sizeHints()) { incX = client()->sizeHints()->width_inc; incY = client()->sizeHints()->height_inc; } switch (handleResizeKeys(key, newX, newY, newWidth, newHeight, incX, incY)) { case 0: break; case 1: newWidth -= 2 * borderXN(); newHeight -= 2 * borderYN() + titleYN(); client()->constrainSize(newWidth, newHeight, ///getLayer(), YFrameClient::csRound | (grabX ? YFrameClient::csKeepX : 0) | (grabY ? YFrameClient::csKeepY : 0)); newWidth += 2 * borderXN(); newHeight += 2 * borderYN() + titleYN(); if (grabX == -1) newX = x() + width() - newWidth; if (grabY == -1) newY = y() + height() - newHeight; drawMoveSizeFX(x(), y(), width(), height()); setCurrentGeometryOuter(YRect(newX, newY, newWidth, newHeight)); drawMoveSizeFX(x(), y(), width(), height()); #ifndef LITE statusMoveSize->setStatus(this); #endif break; case -2: drawMoveSizeFX(x(), y(), width(), height()); setCurrentGeometryOuter(YRect(newX, newY, newWidth, newHeight)); drawMoveSizeFX(x(), y(), width(), height()); /* nobreak */ case -1: endMoveSize(); break; } } else if (xapp->AltMask != 0) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); unsigned int m = KEY_MODMASK(key.state); unsigned int vm = VMod(m); if (!isRollup() && !isIconic() && key.window != handle()) return true; if (IS_WMKEY(k, vm, gKeyWinClose)) { if (canClose()) wmClose(); } else if (IS_WMKEY(k, vm, gKeyWinPrev)) { wmPrevWindow(); } else if (IS_WMKEY(k, vm, gKeyWinMaximizeVert)) { wmMaximizeVert(); } else if (IS_WMKEY(k, vm, gKeyWinMaximizeHoriz)) { wmMaximizeHorz(); } else if (IS_WMKEY(k, vm, gKeyWinRaise)) { if (canRaise()) wmRaise(); } else if (IS_WMKEY(k, vm, gKeyWinOccupyAll)) { wmOccupyAllOrCurrent(); } else if (IS_WMKEY(k, vm, gKeyWinLower)) { if (canLower()) wmLower(); } else if (IS_WMKEY(k, vm, gKeyWinRestore)) { wmRestore(); } else if (IS_WMKEY(k, vm, gKeyWinNext)) { wmNextWindow(); } else if (IS_WMKEY(k, vm, gKeyWinMove)) { if (canMove()) wmMove(); } else if (IS_WMKEY(k, vm, gKeyWinSize)) { if (canSize()) wmSize(); } else if (IS_WMKEY(k, vm, gKeyWinMinimize)) { if (canMinimize()) wmMinimize(); } else if (IS_WMKEY(k, vm, gKeyWinMaximize)) { if (canMaximize()) wmMaximize(); } else if (IS_WMKEY(k, vm, gKeyWinHide)) { if (canHide()) wmHide(); } else if (IS_WMKEY(k, vm, gKeyWinRollup)) { if (canRollup()) wmRollup(); } else if (IS_WMKEY(k, vm, gKeyWinFullscreen)) { if (canFullscreen()) wmToggleFullscreen(); } else if (IS_WMKEY(k, vm, gKeyWinMenu)) { popupSystemMenu(this); } else if (IS_WMKEY(k, vm, gKeyWinArrangeN)) { if (canMove()) wmArrange(waTop, waCenter); } else if (IS_WMKEY(k, vm, gKeyWinArrangeNE)) { if (canMove()) wmArrange(waTop, waRight); } else if (IS_WMKEY(k, vm, gKeyWinArrangeE)) { if (canMove()) wmArrange(waCenter, waRight); } else if (IS_WMKEY(k, vm, gKeyWinArrangeSE)) { if (canMove()) wmArrange(waBottom, waRight); } else if (IS_WMKEY(k, vm, gKeyWinArrangeS)) { if (canMove()) wmArrange(waBottom, waCenter); } else if (IS_WMKEY(k, vm, gKeyWinArrangeSW)) { if (canMove()) wmArrange(waBottom, waLeft); } else if (IS_WMKEY(k, vm, gKeyWinArrangeW)) { if (canMove()) wmArrange(waCenter, waLeft); } else if (IS_WMKEY(k, vm, gKeyWinArrangeNW)) { if (canMove()) wmArrange(waTop, waLeft); } else if (IS_WMKEY(k, vm, gKeyWinArrangeC)) { if (canMove()) wmArrange(waCenter, waCenter); } else if (IS_WMKEY(k, vm, gKeyWinSnapMoveN)) { if (canMove()) wmSnapMove(waTop, waCenter); } else if (IS_WMKEY(k, vm, gKeyWinSnapMoveNE)) { if (canMove()) wmSnapMove(waTop, waRight); } else if (IS_WMKEY(k, vm, gKeyWinSnapMoveE)) { if (canMove()) wmSnapMove(waCenter, waRight); } else if (IS_WMKEY(k, vm, gKeyWinSnapMoveSE)) { if (canMove()) wmSnapMove(waBottom, waRight); } else if (IS_WMKEY(k, vm, gKeyWinSnapMoveS)) { if (canMove()) wmSnapMove(waBottom, waCenter); } else if (IS_WMKEY(k, vm, gKeyWinSnapMoveSW)) { if (canMove()) wmSnapMove(waBottom, waLeft); } else if (IS_WMKEY(k, vm, gKeyWinSnapMoveW)) { if (canMove()) wmSnapMove(waCenter, waLeft); } else if (IS_WMKEY(k, vm, gKeyWinSnapMoveNW)) { if (canMove()) wmSnapMove(waTop, waLeft); } else if (IS_WMKEY(k, vm, gKeyWinSmartPlace)) { if (canMove()) { int newX = x(); int newY = y(); if (manager->getSmartPlace(true, this, newX, newY, width(), height(), getScreen())) { setCurrentPositionOuter(newX, newY); } } } else if (isIconic() || isRollup()) { if (k == XK_Return || k == XK_KP_Enter) { wmRestore(); } else if ((k == XK_Menu) || (k == XK_F10 && m == ShiftMask)) { popupSystemMenu(this); } } } } return true; } void YFrameWindow::constrainPositionByModifier(int &x, int &y, const XMotionEvent &motion) { unsigned int mask = motion.state & (ShiftMask | ControlMask); x += borderX(); y += borderY(); x -= borderX(); y -= borderY(); if (snapMove && !(mask & (ControlMask | ShiftMask))) { snapTo(x, y); } } void YFrameWindow::constrainMouseToWorkspace(int &x, int &y) { int mx, my, Mx, My; manager->getWorkArea(this, &mx, &my, &Mx, &My); x = clamp(x, mx, Mx - 1); y = clamp(y, my, My - 1); } bool YFrameWindow::canSize(bool horiz, bool vert) { if (isRollup()) return false; if (isFullscreen()) return false; if (!(frameFunctions() & ffResize)) return false; if (!sizeMaximized) { if ((!vert || isMaximizedVert()) && (!horiz || isMaximizedHoriz())) return false; } return true; } bool YFrameWindow::canMove() { if (!(frameFunctions() & ffMove)) return false; return true; } #ifdef WMSPEC_HINTS void YFrameWindow::startMoveSize(int x, int y, int direction) { int sx[] = { -1, 0, 1, 1, 1, 0, -1, -1, 0 }; int sy[] = { -1, -1, -1, 0, 1, 1, 1, 0, 0 }; if (direction >= 0 && direction < (int)(sizeof(sx)/sizeof(sx[0]))) { MSG(("move size %d %d %d", x, y, direction)); if (direction == _NET_WM_MOVERESIZE_MOVE) { x -= this->x(); y -= this->y(); } startMoveSize((direction == _NET_WM_MOVERESIZE_MOVE) ? 1 : 0, true, sx[direction], sy[direction], x, y); } else warn(_("Unknown direction in move/resize request: %d"), direction); } #endif void YFrameWindow::startMoveSize(int doMove, int byMouse, int sideX, int sideY, int mouseXroot, int mouseYroot) { Cursor grabPointer = None; sizeByMouse = byMouse; grabX = sideX; grabY = sideY; origX = x(); origY = y(); origW = width(); origH = height(); manager->setWorkAreaMoveWindows(true); if (doMove && grabX == 0 && grabY == 0) { buttonDownX = mouseXroot; buttonDownY = mouseYroot; #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowMoved); #endif grabPointer = YXApplication::movePointer.handle(); } else if (!doMove) { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geWindowSized); #endif if (grabY == -1) { if (grabX == -1) grabPointer = YWMApp::sizeTopLeftPointer.handle(); else if (grabX == 1) grabPointer = YWMApp::sizeTopRightPointer.handle(); else grabPointer = YWMApp::sizeTopPointer.handle(); } else if (grabY == 1) { if (grabX == -1) grabPointer = YWMApp::sizeBottomLeftPointer.handle(); else if (grabX == 1) grabPointer = YWMApp::sizeBottomRightPointer.handle(); else grabPointer = YWMApp::sizeBottomPointer.handle(); } else { if (grabX == -1) grabPointer = YWMApp::sizeLeftPointer.handle(); else if (grabX == 1) grabPointer = YWMApp::sizeRightPointer.handle(); else grabPointer = YXApplication::leftPointer.handle(); } if (grabX == 1) buttonDownX = x() + width() - mouseXroot; else if (grabX == -1) buttonDownX = mouseXroot - x(); if (grabY == 1) buttonDownY = y() + height() - mouseYroot; else if (grabY == -1) buttonDownY = mouseYroot - y(); } XSync(xapp->display(), False); if (!xapp->grabEvents(this, grabPointer, ButtonPressMask | ButtonReleaseMask | PointerMotionMask)) { return ; } if (doMove) movingWindow = 1; else sizingWindow = 1; #ifndef LITE statusMoveSize->begin(this); #endif drawMoveSizeFX(x(), y(), width(), height()); if (doMove && !opaqueMove) { outlineMove(); endMoveSize(); } else if (!doMove && !opaqueResize) { outlineResize(); endMoveSize(); } } void YFrameWindow::endMoveSize() { xapp->releaseEvents(); #ifndef LITE statusMoveSize->end(); #endif if ((movingWindow && opaqueMove) || (sizingWindow && opaqueResize)) drawMoveSizeFX(x(), y(), width(), height()); movingWindow = 0; sizingWindow = 0; manager->setWorkAreaMoveWindows(false); #ifdef CONFIG_TASKBAR if (taskBar && taskBar->workspacesPane()) { taskBar->workspacesPane()->repaint(); } #endif } void YFrameWindow::handleBeginDrag(const XButtonEvent &down, const XMotionEvent &motion) { if ((down.button == 3) && canMove()) { startMoveSize(1, 1, 0, 0, down.x, down.y); handleDrag(down, motion); } else if ((down.button == 1) && canSize()) { grabX = 0; grabY = 0; if (down.x < int(borderX())) grabX = -1; else if (width() - down.x <= borderX()) grabX = 1; if (down.y < int(borderY())) grabY = -1; else if (height() - down.y <= borderY()) grabY = 1; if (grabY != 0 && grabX == 0) { if (down.x < int(wsCornerX)) grabX = -1; else if ((int)width() - down.x <= wsCornerX) grabX = 1; } if (grabX != 0 && grabY == 0) { if (down.y < int(wsCornerY)) grabY = -1; else if ((int)height() - down.y <= wsCornerY) grabY = 1; } if (grabX != 0 || grabY != 0) { startMoveSize(0, 1, grabX, grabY, down.x_root, down.y_root); } } } void YFrameWindow::moveWindow(int newX, int newY) { /// TODO #warning "reevaluate if this is legacy" #if 0 if (!doNotCover()) { int mx, my, Mx, My; manager->getWorkArea(this, &mx, &my, &Mx, &My); newX = clamp(newX, (int)(mx + borderX() - width()), (int)(Mx - borderX())); newY = clamp(newY, (int)(my + borderY() - height()), (int)(My - borderY())); } #endif if (opaqueMove) drawMoveSizeFX(x(), y(), width(), height()); setCurrentPositionOuter(newX, newY); if (opaqueMove) drawMoveSizeFX(x(), y(), width(), height()); #ifndef LITE statusMoveSize->setStatus(this); #endif } void YFrameWindow::handleDrag(const XButtonEvent &/*down*/, const XMotionEvent &/*motion*/) { } void YFrameWindow::handleEndDrag(const XButtonEvent &/*down*/, const XButtonEvent &/*up*/) { } void YFrameWindow::handleButton(const XButtonEvent &button) { if (button.type == ButtonPress) { if (button.button == 1 && !(button.state & ControlMask)) { activate(); if (raiseOnClickFrame) wmRaise(); } } else if (button.type == ButtonRelease) { if (movingWindow || sizingWindow) { endMoveSize(); return ; } } YWindow::handleButton(button); } void YFrameWindow::handleMotion(const XMotionEvent &motion) { if (sizingWindow) { int newX = x(), newY = y(); int newWidth = width(), newHeight = height(); handleResizeMouse(motion, newX, newY, newWidth, newHeight); drawMoveSizeFX(x(), y(), width(), height()); setCurrentGeometryOuter(YRect(newX, newY, newWidth, newHeight)); drawMoveSizeFX(x(), y(), width(), height()); #ifndef LITE statusMoveSize->setStatus(this); #endif return ; } else if (movingWindow) { int newX = x(); int newY = y(); handleMoveMouse(motion, newX, newY); moveWindow(newX, newY); return ; } YWindow::handleMotion(motion); } icewm-1.3.7/src/wmmgr.h0000644000076600007660000003250011463274240013716 0ustar develdevel#ifndef __WMMGR_H #define __WMMGR_H #include #include "ywindow.h" #include "ymenu.h" #include "WinMgr.h" #include "ytimer.h" #define MAXWORKSPACES 64 #define INVALID_WORKSPACE 0xFFFFFFFF extern long workspaceCount; extern char *workspaceNames[MAXWORKSPACES]; extern YAction *workspaceActionActivate[MAXWORKSPACES]; extern YAction *workspaceActionMoveTo[MAXWORKSPACES]; extern YAction *layerActionSet[WinLayerCount]; class YWindowManager; class YFrameClient; class YFrameWindow; class EdgeSwitch: public YWindow, public YTimerListener { public: EdgeSwitch(YWindowManager *manager, int delta, bool vertical); virtual ~EdgeSwitch(); virtual void handleCrossing(const XCrossingEvent &crossing); virtual bool handleTimer(YTimer *t); private: YWindowManager *fManager; YCursor & fCursor; int fDelta; static YTimer *fEdgeSwitchTimer; }; class YProxyWindow: public YWindow { public: YProxyWindow(YWindow *parent); virtual ~YProxyWindow(); virtual void handleButton(const XButtonEvent &button); }; class YWindowManager: public YDesktop { public: YWindowManager(YWindow *parent, Window win = 0); virtual ~YWindowManager(); virtual void grabKeys(); virtual void handleButton(const XButtonEvent &button); virtual void handleClick(const XButtonEvent &up, int count); virtual bool handleKey(const XKeyEvent &key); virtual void handleConfigure(const XConfigureEvent &configure); virtual void handleConfigureRequest(const XConfigureRequestEvent &configureRequest); virtual void handleMapRequest(const XMapRequestEvent &mapRequest); virtual void handleUnmapNotify(const XUnmapEvent &unmap); virtual void handleDestroyWindow(const XDestroyWindowEvent &destroyWindow); virtual void handleClientMessage(const XClientMessageEvent &message); virtual void handleProperty(const XPropertyEvent &property); virtual void handleFocus(const XFocusChangeEvent &focus); #ifdef CONFIG_XRANDR virtual void handleRRScreenChangeNotify(const XRRScreenChangeNotifyEvent &xrrsc); #endif void manageClients(); void unmanageClients(); Window findWindow(char const * resource); Window findWindow(Window root, char const * wmInstance, char const * wmClass); YFrameWindow *findFrame(Window win); YFrameClient *findClient(Window win); YFrameWindow *manageClient(Window win, bool mapClient = false); void unmanageClient(Window win, bool mapClient = false, bool reparent = true); void destroyedClient(Window win); YFrameWindow *mapClient(Window win); void setFocus(YFrameWindow *f, bool canWarp = false); YFrameWindow *getFocus() { return fFocusWin; } void loseFocus(YFrameWindow *window); void activate(YFrameWindow *frame, bool raise, bool canWarp = false); void installColormap(Colormap cmap); void setColormapWindow(YFrameWindow *frame); YFrameWindow *colormapWindow() { return fColormapWindow; } void removeClientFrame(YFrameWindow *frame); void UpdateScreenSize(XEvent *event); void getWorkArea(YFrameWindow *frame, int *mx, int *my, int *Mx, int *My, int xiscreen = -1) const; void getWorkAreaSize(YFrameWindow *frame, int *Mw,int *Mh); int calcCoverage(bool down, YFrameWindow *frame, int x, int y, int w, int h); void tryCover(bool down, YFrameWindow *frame, int x, int y, int w, int h, int &px, int &py, int &cover, int xiscreen); bool getSmartPlace(bool down, YFrameWindow *frame, int &x, int &y, int w, int h, int xiscreen); void getNewPosition(YFrameWindow *frame, int &x, int &y, int w, int h, int xiscreen); void placeWindow(YFrameWindow *frame, int x, int y, int cw, int ch, bool newClient, bool &canActivate); YFrameWindow *top(long layer) const { return fTop[layer]; } void setTop(long layer, YFrameWindow *top); YFrameWindow *bottom(long layer) const { return fBottom[layer]; } void setBottom(long layer, YFrameWindow *bottom) { fBottom[layer] = bottom; } YFrameWindow *topLayer(long layer = WinLayerCount - 1); YFrameWindow *bottomLayer(long layer = 0); YFrameWindow *firstFrame() { return fFirst; } YFrameWindow *lastFrame() { return fLast; } void setFirstFrame(YFrameWindow *f) { fFirst = f; } void setLastFrame(YFrameWindow *f) { fLast = f; } YFrameWindow *firstFocusFrame() { return fFirstFocus; } YFrameWindow *lastFocusFrame() { return fLastFocus; } void setFirstFocusFrame(YFrameWindow *f) { fFirstFocus = f; } void setLastFocusFrame(YFrameWindow *f) { fLastFocus = f; } void restackWindows(YFrameWindow *win); void focusTopWindow(); YFrameWindow *getLastFocus(bool skipSticky = false, long workspace = -1); void focusLastWindow(); bool focusTop(YFrameWindow *f); void relocateWindows(long workspace, int screen, int dx, int dy); void updateClientList(); YMenu *createWindowMenu(YMenu *menu, long workspace); int windowCount(long workspace); #ifdef CONFIG_WINMENU void popupWindowListMenu(YWindow *owner, int x, int y); #endif long activeWorkspace() const { return fActiveWorkspace; } long lastWorkspace() const { return fLastWorkspace; } void activateWorkspace(long workspace); long workspaceCount() const { return ::workspaceCount; } const char *workspaceName(long workspace) const { return ::workspaceNames[workspace]; } void announceWorkArea(); void setWinWorkspace(long workspace); void updateWorkArea(); void resizeWindows(); void getIconPosition(YFrameWindow *frame, int *iconX, int *iconY); void wmCloseSession(); void exitAfterLastClient(bool shuttingDown); void checkLogout(); virtual void resetColormap(bool active); void switchFocusTo(YFrameWindow *frame, bool reorderFocus = true); void switchFocusFrom(YFrameWindow *frame); void notifyFocus(YFrameWindow *frame); void popupStartMenu(YWindow *owner); #ifdef CONFIG_WINMENU void popupWindowListMenu(YWindow *owner); #endif void switchToWorkspace(long nw, bool takeCurrent); void switchToPrevWorkspace(bool takeCurrent); void switchToNextWorkspace(bool takeCurrent); void switchToLastWorkspace(bool takeCurrent); void tilePlace(YFrameWindow *w, int tx, int ty, int tw, int th); void tileWindows(YFrameWindow **w, int count, bool vertical); void smartPlace(YFrameWindow **w, int count); void getCascadePlace(YFrameWindow *frame, int &lastX, int &lastY, int &x, int &y, int w, int h); void cascadePlace(YFrameWindow **w, int count); void setWindows(YFrameWindow **w, int count, YAction *action); void getWindowsToArrange(YFrameWindow ***w, int *count, bool sticky = false, bool skipNonMinimizable = false); void saveArrange(YFrameWindow **w, int count); void undoArrange(); bool haveClients(); void setupRootProxy(); void setWorkAreaMoveWindows(bool m) { fWorkAreaMoveWindows = m; } void updateFullscreenLayer(); void updateFullscreenLayerEnable(bool enable); int getScreen(); void doWMAction(long action); void lockFocus() { //MSG(("lockFocus %d", lockFocusCount)); lockFocusCount++; } void unlockFocus() { lockFocusCount--; //MSG(("unlockFocus %d", lockFocusCount)); } bool focusLocked() { return lockFocusCount != 0; } enum WMState { wmSTARTUP, wmRUNNING, wmSHUTDOWN }; WMState wmState() const { return fWmState; } bool fullscreenEnabled() { return fFullscreenEnabled; } private: struct WindowPosState { int x, y, w, h; long state; YFrameWindow *frame; }; void updateArea(long workspace, int screen_number, int l, int t, int r, int b); bool handleWMKey(const XKeyEvent &key, KeySym k, unsigned int m, unsigned int vm); YFrameWindow *fFocusWin; YFrameWindow *fTop[WinLayerCount]; YFrameWindow *fBottom[WinLayerCount]; YFrameWindow *fFirst, *fLast; // creation order YFrameWindow *fFirstFocus, *fLastFocus; // focus order YFrameWindow **fFocusedWindow; long fActiveWorkspace; long fLastWorkspace; YFrameWindow *fColormapWindow; long fWorkAreaWorkspaceCount; int fWorkAreaScreenCount; struct WorkAreaRect { int fMinX, fMinY, fMaxX, fMaxY; } **fWorkArea; EdgeSwitch *fLeftSwitch, *fRightSwitch, *fTopSwitch, *fBottomSwitch; bool fShuttingDown; int fArrangeCount; WindowPosState *fArrangeInfo; YProxyWindow *rootProxy; YWindow *fTopWin; bool fWorkAreaMoveWindows; bool fOtherScreenFocused; int lockFocusCount; bool fFullscreenEnabled; WMState fWmState; }; extern YWindowManager *manager; void dumpZorder(const char *oper, YFrameWindow *w, YFrameWindow *a = 0); extern Atom _XA_WIN_PROTOCOLS; extern Atom _XA_WIN_WORKSPACE; extern Atom _XA_WIN_WORKSPACE_COUNT; extern Atom _XA_WIN_WORKSPACE_NAMES; extern Atom _XA_WIN_WORKAREA; extern Atom _XA_WIN_LAYER; #ifdef CONFIG_TRAY extern Atom _XA_WIN_TRAY; #endif extern Atom _XA_WIN_ICONS; extern Atom _XA_WIN_HINTS; extern Atom _XA_WIN_STATE; extern Atom _XA_WIN_SUPPORTING_WM_CHECK; extern Atom _XA_WIN_CLIENT_LIST; extern Atom _XA_WIN_DESKTOP_BUTTON_PROXY; extern Atom _XA_WIN_AREA; extern Atom _XA_WIN_AREA_COUNT; extern Atom _XA_WM_CLIENT_LEADER; extern Atom _XA_WM_WINDOW_ROLE; extern Atom _XA_WINDOW_ROLE; extern Atom _XA_SM_CLIENT_ID; extern Atom _XA_ICEWM_ACTION; /// _SET would be nice to have #define _NET_WM_STATE_REMOVE 0 #define _NET_WM_STATE_ADD 1 #define _NET_WM_STATE_TOGGLE 2 #define _NET_WM_MOVERESIZE_SIZE_TOPLEFT 0 #define _NET_WM_MOVERESIZE_SIZE_TOP 1 #define _NET_WM_MOVERESIZE_SIZE_TOPRIGHT 2 #define _NET_WM_MOVERESIZE_SIZE_RIGHT 3 #define _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT 4 #define _NET_WM_MOVERESIZE_SIZE_BOTTOM 5 #define _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT 6 #define _NET_WM_MOVERESIZE_SIZE_LEFT 7 #define _NET_WM_MOVERESIZE_MOVE 8 /* Movement only */ //*=testnetwmhints extern Atom _XA_NET_SUPPORTED; // OK extern Atom _XA_NET_CLIENT_LIST; // OK (perf: don't update on stacking changes) extern Atom _XA_NET_CLIENT_LIST_STACKING; // OK extern Atom _XA_NET_NUMBER_OF_DESKTOPS; // implement change request ///extern Atom _XA_NET_DESKTOP_GEOMETRY; // N/A ///extern Atom _XA_NET_DESKTOP_VIEWPORT; // N/A extern Atom _XA_NET_CURRENT_DESKTOP; // OK ///extern Atom _XA_NET_DESKTOP_NAMES; // N/A extern Atom _XA_NET_ACTIVE_WINDOW; // OK extern Atom _XA_NET_WORKAREA; // OK extern Atom _XA_NET_SUPPORTING_WM_CHECK; // OK ///extern Atom _XA_NET_SUPPORTING_WM_CHECK; // N/A extern Atom _XA_NET_CLOSE_WINDOW; // OK extern Atom _XA_NET_WM_MOVERESIZE; //*OK extern Atom _XA_NET_WM_NAME; // TODO extern Atom _XA_NET_WM_VISIBLE_NAME; // TODO extern Atom _XA_NET_WM_ICON_NAME; // TODO extern Atom _XA_NET_WM_VISIBLE_ICON_NAME; // TODO extern Atom _XA_NET_WM_DESKTOP; // OK extern Atom _XA_NET_WM_WINDOW_TYPE; // OK extern Atom _XA_NET_WM_WINDOW_TYPE_DESKTOP; // OK extern Atom _XA_NET_WM_WINDOW_TYPE_DOCK; // OK ///extern Atom _XA_NET_WM_WINDOW_TYPE_TOOLBAR; // N/A ///extern Atom _XA_NET_WM_WINDOW_TYPE_MENU; // N/A ///extern Atom _XA_NET_WM_WINDOW_TYPE_UTILITY; // N/A extern Atom _XA_NET_WM_WINDOW_TYPE_SPLASH; // N/A extern Atom _XA_NET_WM_WINDOW_TYPE_DIALOG; // TODO extern Atom _XA_NET_WM_WINDOW_TYPE_NORMAL; // TODO extern Atom _XA_NET_WM_STATE; // OK extern Atom _XA_NET_WM_STATE_MODAL; // TODO (broken) ///extern Atom _XA_NET_WM_STATE_STICKY; // N/A extern Atom _XA_NET_WM_STATE_MAXIMIZED_VERT; // OK extern Atom _XA_NET_WM_STATE_MAXIMIZED_HORZ; // OK extern Atom _XA_NET_WM_STATE_SHADED; // OK extern Atom _XA_NET_WM_STATE_SKIP_TASKBAR; // OK ///extern Atom _XA_NET_WM_STATE_SKIP_PAGER; // N/A extern Atom _XA_NET_WM_STATE_HIDDEN; // TODO extern Atom _XA_NET_WM_STATE_FULLSCREEN; //*OK extern Atom _XA_NET_WM_STATE_ABOVE; //*OK extern Atom _XA_NET_WM_STATE_BELOW; //*OK extern Atom _XA_NET_WM_ALLOWED_ACTIONS; // TODO extern Atom _XA_NET_WM_ACTION_MOVE; // TODO extern Atom _XA_NET_WM_ACTION_RESIZE; // TODO extern Atom _XA_NET_WM_ACTION_SHADE; // TODO ///extern Atom _XA_NET_WM_ACTION_STICK; // N/A extern Atom _XA_NET_WM_ACTION_MAXIMIZE_HORZ; // TODO extern Atom _XA_NET_WM_ACTION_MAXIMIZE_VERT; // TODO extern Atom _XA_NET_WM_ACTION_CHANGE_DESKTOP; // TODO extern Atom _XA_NET_WM_ACTION_CLOSE; // TODO extern Atom _XA_NET_WM_STRUT; // OK ///extern Atom _XA_NET_WM_ICON_GEOMETRY; // N/A extern Atom _XA_NET_WM_ICON; // TODO extern Atom _XA_NET_WM_PID; // TODO extern Atom _XA_NET_WM_HANDLED_ICONS; // TODO -> toggle minimizeToDesktop extern Atom _XA_NET_WM_PING; // TODO extern Atom _XA_NET_WM_USER_TIME; // TODO extern Atom _XA_NET_WM_STATE_DEMANDS_ATTENTION; // TODO // TODO extra: // original geometry of maximized window // /* KDE specific */ extern Atom _XA_KWM_WIN_ICON; extern Atom _XA_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR; extern Atom XA_IcewmWinOptHint; extern ref defaultAppIcon; #endif icewm-1.3.7/src/ylibrary.h0000644000076600007660000000141311463274240014421 0ustar develdevel/* * IceWM - Definition of support for runtime bound shared libraries * Copyright (C) 2002 The Authors of IceWM * * Release under terms of the GNU Library General Public License */ #ifndef __YSHARED_LIBRARY_H #define __YSHARED_LIBRARY_H #define ASSIGN_SYMBOL(InternName, ExternName) do { \ m ## InternName = (InternName) getSymbol(#ExternName); \ } while(0); class YSharedLibrary { public: YSharedLibrary(const char *filename, bool global = false, bool lazy = true); virtual ~YSharedLibrary(); bool loaded() const { return (fLibrary != 0); } operator bool() const { return loaded(); } void *getSymbol(const char *symname); static const char *getLastError(); protected: virtual void unload(); private: void *fLibrary; }; #endif icewm-1.3.7/src/base.h0000644000076600007660000001400711463274240013501 0ustar develdevel#ifndef __BASE_H #define __BASE_H #if ( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3 #define deprecated __attribute__((deprecated)) #else #define deprecated #endif /*** Atomar Data Types ********************************************************/ #ifdef NEED_BOOL typedef { false = 0, true = 1 } bool; #endif /*** Essential Arithmetic Functions *******************************************/ /* * Decimal digits required to write the largest element of type: * bits(Type) * (2.5 = 5/2 ~ (ln(2) / ln(10))) */ #define DECIMAL_DIGIT_COUNT(Type) ((sizeof(Type) * 5 + 1) / 2) template inline T min(T a, T b) { return (a < b ? a : b); } template inline T max(T a, T b) { return (a > b ? a : b); } template inline T clamp(T value, T minimum, T maximum) { return max(min(value, maximum), minimum); } template inline T abs(T v) { return (v < 0 ? -v : v); } /*** String Functions *********************************************************/ #if 1 char *newstr(char const *str); char *newstr(char const *str, int len); char *newstr(char const *str, char const *delim); char *cstrJoin(char const *str, ...); #endif #if 0 bool isempty(char const *str); bool isreg(char const *path); #endif #if 0 /* * Convert unsigned to string */ template inline char * utoa(T u, char * s, unsigned const len) { if (len > DECIMAL_DIGIT_COUNT(T)) { *(s += DECIMAL_DIGIT_COUNT(u) + 1) = '\0'; do { *--s = '0' + u % 10; } while (u /= 10); return s; } else return 0; } template static char const * utoa(T u) { static char s[DECIMAL_DIGIT_COUNT(int) + 1]; return utoa(u, s, sizeof(s)); } /* * Convert signed to string */ template inline char * itoa(T i, char * s, unsigned const len, bool sign = false) { if (len > DECIMAL_DIGIT_COUNT(T) + 1) { if (i < 0) { s = utoa(-i, s, len); *--s = '-'; } else { s = utoa(i, s, len); if (sign) *--s = '+'; } return s; } else return 0; } template static char const * itoa(T i, bool sign = false) { static char s[DECIMAL_DIGIT_COUNT(int) + 2]; return itoa(i, s, sizeof(s), sign); } #endif /*** Message Functions ********************************************************/ void die(int exitcode, char const *msg, ...); void warn(char const *msg, ...); void msg(char const *msg, ...); void precondition(char const *msg, ...); void show_backtrace(); #define DEPRECATE(x) \ do { \ if (x) warn("Deprecated option: " #x); \ } while (0) /*** Misc Stuff (clean up!!!) *************************************************/ #define ACOUNT(x) (sizeof(x)/sizeof(x[0])) #ifndef DIR_DELIMINATOR #define DIR_DELIMINATOR '/' #endif extern "C" { #ifdef __EMX__ char* __XOS2RedirRoot(char const*); #define REDIR_ROOT(path) __XOS2RedirRoot(path) #else #define REDIR_ROOT(path) (path) #endif } //!!! clean these up #define KEY_MODMASK(x) ((x) & (xapp->KeyMask)) #define BUTTON_MASK(x) ((x) & (xapp->ButtonMask)) #define BUTTON_MODMASK(x) ((x) & (xapp->ButtonKeyMask)) #define IS_BUTTON(s,b) (BUTTON_MODMASK(s) == (b)) #define ISMASK(w,e,n) (((w) & ~(n)) == (e)) #define HASMASK(w,e,n) ((((w) & ~(n)) & (e)) == (e)) #if 0 inline bool strIsEmpty(char const *str) { if (str) while (*str) if (*str++ > ' ') return false; return true; } #endif int strpcmp(char const *str, char const *pfx, char const *delim = "=:"); #if 0 unsigned strtoken(const char *str, const char *delim = " \t"); #endif char const * strnxt(const char *str, const char *delim = " \t"); const char *my_basename(const char *filename); #if 0 bool strequal(const char *a, const char *b); int strnullcmp(const char *a, const char *b); #endif template inline char const * niceUnit(T & val, char const * const units[], T const lim = 10240, T const div = 1024) { char const * uname(0); if (units && *units) { uname = *units++; while (val >= lim && *units) { uname = *units++; /* precise rounding errs */ val = (val + div / 2) / div; } } return uname; } /*** Bit Operations ***********************************************************/ /* * Returns the lowest bit set in mask. */ template inline unsigned lowbit(T mask) { #if defined(CONFIG_X86_ASM) && defined(__i386__) && \ defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ > 208) unsigned bit; asm ("bsf %1,%0" : "=r" (bit) : "r" (mask)); #else unsigned bit(0); while(!(mask & (1 << bit)) && bit < sizeof(mask) * 8) ++bit; #endif return bit; } /* * Returns the highest bit set in mask. */ template inline unsigned highbit(T mask) { #if defined(CONFIG_X86_ASM) && defined(__i386__) && \ defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ > 208) unsigned bit; asm ("bsr %1,%0" : "=r" (bit) : "r" (mask)); #else unsigned bit(sizeof(mask) * 8 - 1); while(!(mask & (1 << bit)) && bit > 0) --bit; #endif return bit; } /******************************************************************************/ #if 1 /// this should be abstracted somehow (maybe in yapp) #define GET_SHORT_ARGUMENT(Name) \ (!strncmp(*arg, "-" Name, 3) ? *++arg : NULL) #define GET_LONG_ARGUMENT(Name) \ (!strpcmp(*arg, "--" Name, "=") ? \ ('=' == (*arg)[sizeof(Name) + 1] ? (*arg) + sizeof(Name) + 2 : *++arg) \ : \ NULL) #define IS_SHORT_SWITCH(Name) (0 == strcmp(*arg, "-" Name)) #define IS_LONG_SWITCH(Name) (0 == strcmp(*arg, "--" Name)) #define IS_SWITCH(Short, Long) (IS_SHORT_SWITCH(Short) || \ IS_LONG_SWITCH(Long)) #endif #include "debug.h" inline int intersection(int s1, int e1, int s2, int e2) { int s, e; if (s1 > e2) return 0; if (s2 > e1) return 0; /* start */ if (s2 > s1) s = s2; else s = s1; /* end */ if (e1 < e2) e = e1; else e = e2; if (e > s) return e - s; else return 0; } #endif icewm-1.3.7/src/icehelp.cc0000644000076600007660000012655611463274240014353 0ustar develdevel#include #include #include #include #include "config.h" #include "ylib.h" #include "ypixbuf.h" #include #include "ylistbox.h" #include "yscrollview.h" #include "ymenu.h" #include "yxapp.h" #include "sysdep.h" #include "yaction.h" #include "ymenuitem.h" #include "ylocale.h" #include "yrect.h" #include "prefs.h" #include "yicon.h" #include "ascii.h" #define DUMP //#define TEXT #include #include "intl.h" #define LINE(c) ((c) == '\r' || (c) == '\n') #define SPACE(c) ((c) == ' ' || (c) == '\t' || LINE(c)) char const * ApplicationName = "icehelp"; class HTListener { public: virtual void activateURL(const char *url) = 0; protected: virtual ~HTListener() {}; }; class text_node { public: text_node(const char *t, int l, int _x, int _y, int _w, int _h) { text = t; len = l; next = 0; x = _x; y = _y; w = _w; h = _h; } int x, y; int w, h, len; const char *text; text_node *next; }; struct attribute { char *name; char *value; }; class node { public: enum node_type { unknown, html, head, title, body, text, pre, line, paragraph, hrule, h1, h2, h3, h4, h5, h6, table, tr, td, div, ul, ol, li, bold, font, italic, center, script, anchor, tt, dl, dd, dt, link, code, meta }; node(node_type t) { next = 0; container = 0; type = t; wrap = 0; txt = 0; nattr = 0; attr = 0; } node_type type; node *next; node *container; char *txt; text_node *wrap; int xr, yr; int nattr; attribute *attr; //int width, height; static const char *to_string(node_type type); }; node *root = NULL; #define PRE 0x01 #define PRE1 0x02 #define BOLD 0x04 #define LINK 0x08 #define sfPar 0x01 #define sfText 0x02 node *add(node **first, node *last, node *n) { if (last) last->next = n; else *first = n; return n; } void add_attribute(node *n, char *abuf, char *vbuf) { //msg("[%s]=[%s]", abuf, vbuf ? vbuf : ""); n->attr = (attribute *)realloc(n->attr, sizeof(attribute) * (n->nattr + 1)); assert(n->attr != 0); n->attr[n->nattr].name = abuf; n->attr[n->nattr].value = vbuf; n->nattr++; } attribute *find_attribute(node *n, const char *name) { for (int i = 0; i < n->nattr; i++) { if (strcmp(name, n->attr[i].name) == 0) return n->attr + i; } return 0; } void dump_tree(int level, node *n); #define TS(x) case x : return #x const char *node::to_string(node_type type) { switch (type) { TS(unknown); TS(html); TS(head); TS(title); TS(body); TS(text); TS(pre); TS(line); TS(paragraph); TS(hrule); TS(anchor); TS(h1); TS(h2); TS(h3); TS(h4); TS(h5); TS(h6); TS(table); TS(tr); TS(td); TS(div); TS(ul); TS(ol); TS(li); TS(bold); TS(font); TS(italic); TS(center); TS(script); TS(tt); TS(dl); TS(dd); TS(dt); TS(link); TS(code); TS(meta); } return "??"; } node::node_type get_type(const char *buf) { node::node_type type ; if (strcmp(buf, "HR") == 0) type = node::hrule; else if (strcmp(buf, "P") == 0) type = node::paragraph; else if (strcmp(buf, "BR") == 0) type = node::line; else if (strcmp(buf, "HTML") == 0) type = node::html; else if (strcmp(buf, "HEAD") == 0) type = node::head; else if (strcmp(buf, "TITLE") == 0) type = node::title; else if (strcmp(buf, "BODY") == 0) type = node::body; else if (strcmp(buf, "H1") == 0) type = node::h1; else if (strcmp(buf, "H2") == 0) type = node::h2; else if (strcmp(buf, "H3") == 0) type = node::h3; else if (strcmp(buf, "H4") == 0) type = node::h4; else if (strcmp(buf, "H5") == 0) type = node::h5; else if (strcmp(buf, "H6") == 0) type = node::h6; else if (strcmp(buf, "PRE") == 0) type = node::pre; else if (strcmp(buf, "FONT") == 0) type = node::font; else if (strcmp(buf, "TABLE") == 0) type = node::table; else if (strcmp(buf, "TR") == 0) type = node::tr; else if (strcmp(buf, "TD") == 0) type = node::td; else if (strcmp(buf, "DIV") == 0) type = node::div; else if (strcmp(buf, "UL") == 0) type = node::ul; else if (strcmp(buf, "OL") == 0) type = node::ol; else if (strcmp(buf, "A") == 0) type = node::anchor; else if (strcmp(buf, "B") == 0) type = node::bold; else if (strcmp(buf, "I") == 0) type = node::italic; else if (strcmp(buf, "CENTER") == 0) type = node::center; else if (strcmp(buf, "SCRIPT") == 0) type = node::script; else if (strcmp(buf, "A") == 0) type = node::anchor; else if (strcmp(buf, "TT") == 0) type = node::tt; else if (strcmp(buf, "DL") == 0) type = node::dl; else if (strcmp(buf, "DT") == 0) type = node::dt; else if (strcmp(buf, "LI") == 0) type = node::li; else if (strcmp(buf, "DD") == 0) type = node::dd; else if (strcmp(buf, "LINK") == 0) type = node::link; else if (strcmp(buf, "CODE") == 0) type = node::code; else if (strcmp(buf, "META") == 0) type = node::meta; else type = node::unknown; return type; } node *parse(FILE *fp, int flags, node *parent, node *&nextsub, node::node_type &close) { int c; node *f = NULL; node *l = NULL; //puts(""); c = getc(fp); while (c != EOF) { switch (c) { case '<': c = getc(fp); if (c == '!') { c = getc(fp); if (c == '-') { c = getc(fp); if (c == '-') { // comment c = getc(fp); if (c != EOF) do { if (c == '-') { c = getc(fp); if (c == '-') { do { c = getc(fp); } while (c == '-'); if (c == '>' || c == EOF) break; } } if (c == EOF) break; c = getc(fp); } while (c != EOF); } } while (c != EOF && c != '>') { c = getc(fp); } } else if (c == '/') { // ignore

... int len = 0; char *buf = 0; c = getc(fp); while (SPACE(c)) c = getc(fp); do { buf = (char *)realloc(buf, ++len); buf[len-1] = ASCII::toUpper((char)c); c = getc(fp); } while (c != EOF && !SPACE(c) && c != '>'); buf = (char *)realloc(buf, ++len); buf[len-1] = 0; node::node_type type = get_type(buf); if (buf != 0) { free(buf); buf = 0; } #if 1 if (type == node::paragraph || type == node::line || type == node::hrule || type == node::link || type == node::meta) { } else { if (parent) { close = type; //puts("
"); return f; } } #endif } else { int len = 0; char *buf = 0; while (SPACE(c)) c = getc(fp); do { buf = (char *)realloc(buf, ++len); buf[len-1] = ASCII::toUpper((char)c); c = getc(fp); } while (c != EOF && !SPACE(c) && c != '>'); buf = (char *)realloc(buf, ++len); buf[len-1] = 0; node::node_type type = get_type(buf); node *n = new node(type); if (buf != 0) { free(buf); buf = 0; } if (n == 0) break; #if 1 while (SPACE(c)) c = getc(fp); while (c != '>') { int alen = 0; char *abuf = 0; int vlen = 0; char *vbuf = 0; do { abuf = (char *)realloc(abuf, ++alen + 1); abuf[alen-1] = ASCII::toUpper((char)c); abuf[alen] = 0; c = getc(fp); } while (c != EOF && !SPACE(c) && c != '=' && c != '>'); while (SPACE(c)) c = getc(fp); if (c == '=') { c = getc(fp); while (SPACE(c)) c = getc(fp); if (c == '"') { c = getc(fp); if (c != EOF && c != '"') do { vbuf = (char *)realloc(vbuf, ++vlen + 1); vbuf[vlen-1] = (char)c; vbuf[vlen] = 0; c = getc(fp); } while (c != EOF && c != '"'); } else { if (c != EOF && c != '>') do { vbuf = (char *)realloc(vbuf, ++vlen + 1); vbuf[vlen-1] = (char)c; vbuf[vlen] = 0; c = getc(fp); } while (c != EOF && !SPACE(c) && c != '>'); } } add_attribute(n, abuf, vbuf); while (SPACE(c)) c = getc(fp); } #endif if (c != '>' && c != EOF) do { c = getc(fp); } while (c != EOF && c != '>'); if (type == node::line || type == node::hrule || type == node::paragraph|| type == node::link || type == node::meta) { l = add(&f, l, n); } else { node *container = 0; if (type == node::li || type == node::dt || type == node::dd || type == node::paragraph || type == node::line ) { if (parent && (parent->type == type || (type == node::dd && parent->type == node::dt) || (type == node::dt && parent->type == node::dd)) ) { nextsub = n; return f; } } node *nextsub; node::node_type close_type; do { nextsub = 0; close_type = node::unknown; container = parse(fp, flags | ((type == node::pre) ? PRE | PRE1 : 0), n, nextsub, close_type); if (container) n->container = container; l = add(&f, l, n); if (nextsub) { //puts("CONTINUATION"); n = nextsub; } if (close_type != node::unknown) { if (n->type != close_type) return f; } } while (nextsub != 0); } } break; default: { int len = 0; char *buf = 0; do { if (c == '&') { char *entity = 0; int elen = 0; do { entity = (char *)realloc(entity, ++elen + 1); entity[elen - 1] = ASCII::toUpper((char)c); c = getc(fp); } while ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')); entity[elen] = 0; if (c != ';') ungetc(c, fp); if (strcmp(entity, "&") == 0) c = '&'; else if (strcmp(entity, "<") == 0) c = '<'; else if (strcmp(entity, ">") == 0) c = '>'; else if (strcmp(entity, "&NBSP") == 0) c = 32+128; free(entity); } if (c == '\r') { c = getc(fp); if (c != '\n') ungetc(c, fp); c = '\n'; } if (!(flags & PRE)) if (SPACE(c)) c = ' '; if ((flags & PRE1) && c == '\n') ; else { if ((flags & PRE) || c != ' ' || len == 0 || buf[len - 1] != ' ') { buf = (char *)realloc(buf, ++len); buf[len-1] = (char)c; } } flags &= ~PRE1; c = getc(fp); } while (c != EOF && c != '<'); if (c == '<') { c = getc(fp); if (c == '/') { if (len && SPACE(buf[len - 1])) len--; } ungetc(c, fp); c = '<'; } if (len) { buf = (char *)realloc(buf, ++len); buf[len-1] = 0; node *n = new node(node::text); n->txt = buf; l = add(&f, l, n); buf = 0; } if (buf != 0) { free(buf); buf = 0; } continue; } } c = getc(fp); } return f; } extern Atom _XA_WIN_ICONS; class HTextView: public YWindow, public YScrollBarListener, public YScrollable, public YActionListener { public: HTextView(HTListener *fL, YScrollView *v, YWindow *parent); ~HTextView() {} void find_link(node *n); void setData(node *root) { fRoot = root; tx = ty = 0; layout(); prevItem->setEnabled(false); nextItem->setEnabled(false); contentsItem->setEnabled(false); if (nextURL != 0) { delete[] prevURL; nextURL = 0; } if (nextURL != 0) { delete[] prevURL; nextURL = 0; } if (contentsURL != 0) { delete[] contentsURL; contentsURL = 0; } find_link(fRoot); } void par(int &state, int &x, int &y, int &h, const int left); void epar(int &state, int &x, int &y, int &h, const int left); void layout(); void layout(node *parent, node *n1, int left, int right, int &x, int &y, int &w, int &h, int flags, int &state); void draw(Graphics &g, node *n1, bool href = false); node *find_node(node *n, int x, int y, node *&anchor, node::node_type type); virtual void paint(Graphics &g, const YRect &r) { g.setColor(bg); g.fillRect(r.x(), r.y(), r.width(), r.height()); g.setColor(normalFg); g.setFont(font); draw(g, fRoot); } void resetScroll() { fVerticalScroll->setValues(ty, height(), 0, contentHeight()); fVerticalScroll->setBlockIncrement(height()); fVerticalScroll->setUnitIncrement(font->height()); fHorizontalScroll->setValues(tx, width(), 0, contentWidth()); fHorizontalScroll->setBlockIncrement(width()); fHorizontalScroll->setUnitIncrement(20); if (view) view->layout(); } void setPos(int x, int y) { if (x != tx || y != ty) { int dx = x - tx; int dy = y - ty; tx = x; ty = y; scrollWindow(dx, dy); } } virtual void scroll(YScrollBar *sb, int delta) { if (sb == fHorizontalScroll) setPos(tx + delta, ty); else if (sb == fVerticalScroll) setPos(tx, ty + delta); } virtual void move(YScrollBar *sb, int pos) { if (sb == fHorizontalScroll) setPos(pos, ty); else if (sb == fVerticalScroll) setPos(tx, pos); } int contentWidth() { return conWidth; } int contentHeight() { return conHeight; } YWindow *getWindow() { return this; } virtual void handleClick(const XButtonEvent &up, int /*count*/); virtual void actionPerformed(YAction *action, unsigned int /*modifiers*/) { if (action == actionClose) exit(0); if (action == actionNext) listener->activateURL(nextURL); if (action == actionPrev) listener->activateURL(prevURL); if (action == actionContents) listener->activateURL(contentsURL); } virtual void configure(const YRect &r) { YWindow::configure(r); layout(); } bool handleKey(const XKeyEvent &key); void handleButton(const XButtonEvent &button); private: node *fRoot; int tx, ty; int conWidth; int conHeight; ref font; YColor *bg, *normalFg, *linkFg, *hrFg, *testBg; YScrollView *view; YScrollBar *fVerticalScroll; YScrollBar *fHorizontalScroll; YMenu *menu; YAction *actionClose; YAction *actionNone; HTListener *listener; char *prevURL; char *nextURL; char *contentsURL; YAction *actionPrev; YAction *actionNext; YAction *actionContents; YMenuItem *prevItem, *nextItem, *contentsItem; }; HTextView::HTextView(HTListener *fL, YScrollView *v, YWindow *parent): YWindow(parent), fRoot(NULL), view(v), listener(fL) { view = v; fVerticalScroll = view->getVerticalScrollBar(); fVerticalScroll->setScrollBarListener(this); fHorizontalScroll = view->getHorizontalScrollBar(); fHorizontalScroll->setScrollBarListener(this); //setBitGravity(NorthWestGravity); tx = ty = 0; conWidth = conHeight = 0; prevURL = nextURL = contentsURL = 0; //font = YFont::getFont("9x15"); //font = YFont::getFont("-adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1"); //font = YFont::getFont("-adobe-helvetica-medium-r-normal--*-140-*-*-*-*-iso8859-1"); //-adobe-helvetica-bold-o-normal--11-80-100-100-p-60-iso8859-1 //font = YFont::getFont("-adobe-helvetica-medium-r-normal--8-80-75-75-p-46-iso8859-1"); //font = YFont::getFont("-adobe-helvetica-medium-r-normal--24-240-75-75-p-130-iso8859-1"); font = YFont::getFont("-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1", "sans-serif-12"); //font = YFont::getFont("-adobe-helvetica-medium-r-normal--11-80-100-100-p-56-iso8859-1"); //font = YFont::getFont("-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"); normalFg = new YColor("rgb:00/00/00"); hrFg = new YColor("rgb:80/80/80"); linkFg = new YColor("rgb:00/00/CC"); bg = new YColor("rgb:CC/CC/CC"); testBg = new YColor("rgb:40/40/40"); actionClose = new YAction(); actionNone = new YAction(); actionPrev = new YAction(); actionNext = new YAction(); actionContents = new YAction(); menu = new YMenu(); menu->setActionListener(this); menu->addItem(_("Back"), 0, _("Alt+Left"), actionNone)->setEnabled(false); menu->addItem(_("Forward"), 0, _("Alt+Right"), actionNone)->setEnabled(false); menu->addSeparator(); prevItem = menu->addItem(_("Previous"), 0, null, actionPrev); nextItem = menu->addItem(_("Next"), 0, null, actionNext); menu->addSeparator(); contentsItem = menu->addItem(_("Contents"), 0, null, actionContents); menu->addItem(_("Index"), 0, null, actionNone)->setEnabled(false); menu->addSeparator(); menu->addItem(_("Close"), 0, _("Ctrl+Q"), actionClose); } node *HTextView::find_node(node *n, int x, int y, node *&anchor, node::node_type type) { while (n) { if (n->container) { node *f; if ((f = find_node(n->container, x, y, anchor, type)) != 0) { if (anchor == 0 && n->type == type) anchor = n; return f; } } if (n->wrap) { text_node *t = n->wrap; while (t) { if (x >= t->x && x < t->x + t->w && y >= t->y && y < t->y + t->h) return n; t = t->next; } } n = n->next; } return 0; } void HTextView::find_link(node *n) { while (n) { if (n->type == node::link) { attribute *rel = find_attribute(n, "REL"); attribute *href = find_attribute(n, "HREF"); if (rel && href && rel->value && href->value) { if (strcasecmp(rel->value, "previous") == 0) { prevURL = newstr(href->value); prevItem->setEnabled(true); } if (strcasecmp(rel->value, "next") == 0) { nextURL = newstr(href->value); nextItem->setEnabled(true); } if (strcasecmp(rel->value, "contents") == 0) { contentsURL = newstr(href->value); contentsItem->setEnabled(true); } } } if (n->container) find_link(n->container); n = n->next; } } void HTextView::layout() { int state = sfPar; int x = 0, y = 0; conWidth = conHeight = 0; layout(0, fRoot, 0, width(), x, y, conWidth, conHeight, 0, state); resetScroll(); } void addState(int &state, int value) { state |= value; //msg("addState=%d %d", state, value); } void removeState(int &state, int value) { state &= ~value; //msg("removeState=%d %d", state, value); } void HTextView::par(int &state, int &x, int &y, int &h, const int left) { if (!(state & sfPar)) { h += font->height(); x = left; y = h; addState(state, sfPar); } } void HTextView::epar(int &state, int &x, int &y, int &h, const int left) { if ((x > left) || ((state & (sfText | sfPar)) == sfText)) { h += font->height(); x = left; y = h; removeState(state, sfText); } removeState(state, sfPar); } void HTextView::layout(node *parent, node *n1, int left, int right, int &x, int &y, int &w, int &h, int flags, int &state) { node *n = n1; ///puts("{"); while (n) { n->xr = x; n->yr = y; switch (n->type) { case node::title: break; case node::script: break; case node::h1: case node::h2: case node::h3: case node::h4: case node::h5: case node::h6: if (x > left) { x = left; y = h + font->height(); } removeState(state, sfPar); x = left; n->xr = x; n->yr = y; if (n->container) { layout(n, n->container, n->xr, right, x, y, w, h, flags, state); } x = left; y = h + font->height(); addState(state, sfText); removeState(state, sfPar); break; case node::text: { char *c; while (n->wrap) { text_node *t = n->wrap; n->wrap = n->wrap->next; delete t; } text_node **pwrap = &n->wrap; for (char *b = n->txt; *b; b = c) { int wc = 0; if (flags & PRE) { c = b; while (*c && *c != '\n') c++; wc = font->textWidth(b, c - b); } else { c = b; if (x == left) while (SPACE(*b)) b++; c = b; do { char *d = c; if (SPACE(*d)) while (SPACE(*d)) d++; else while (*d && !SPACE(*d)) d++; int w1 = font->textWidth(b, d - b); if (x + w1 < right) { wc = w1; c = d; } else if (x == left && wc == 0) { wc = w1; c = d; break; } else if (wc == 0) { x = left; y = h; while (SPACE(*c)) c++; b = c; } else break; ///msg("width=%d %d / %d / %d", wc, x, left, right); } while (*c); } if (!(flags & PRE) && x == left) while (SPACE(*b)) b++; if ((flags & PRE) || c - b > 0) { #ifdef TEXT { char *f = b; int ll; msg("x=%d left=%d line: ", x, left); ll = 0; while (f < c) { putchar(*f); f++; ll++; } msg("[len=%d]", ll); } #endif par(state, x, y, h, left); addState(state, sfText); *pwrap = new text_node(b, c - b, x, y, wc, font->height()); pwrap = &((*pwrap)->next); if (y + (int)font->height() > h) h = y + font->height(); x += wc; if (x > w) w = x; if ((flags & PRE)) { if (*c == '\n') { c++; x = left; y = h; } } } //msg("len=%d x=%d left=%d %s", c - b, x, left, b); } } break; case node::line: //puts("
"); if (x != left) { y = h; //h += font->height(); } else { h += font->height(); y = h; } x = left; break; case node::paragraph: removeState(state, sfPar); //puts("

"); //par(state, x, y, h, left); x = left; y = h; n->xr = x; n->yr = y; break; case node::hrule: //puts("


"); //epar(state, x, y, h, left); if ((state & sfText) && !(state & sfPar)) h += font->height(); x = left; n->xr = x; n->yr = h; h += 10; y = h; addState(state, sfPar); break; case node::center: x = left; y = h; if (n->container) { layout(n, n->container, n->xr, right, x, y, w, h, flags, state); // !!! center } h += font->height(); x = left; y = h; break; case node::anchor: if (n->container) { layout(n, n->container, n->xr, right, x, y, w, h, flags, state); } break; case node::ul: case node::ol: //puts("
    "); //epar(state, x, y, h, left); if (!(parent && parent->type == node::li)) { removeState(state, sfPar); } y = h; x = left; n->xr = x; n->yr = y; x += 40; if (n->container) { layout(n, n->container, x, right, x, y, w, h, flags, state); } addState(state, sfText); x = left; y = h; //state &= ~sfPar; //par(state, x, y, h, left); //x = left; //y = h + font->height(); removeState(state, sfPar); addState(state, sfText); break; case node::dl: //puts("
      "); epar(state, x, y, h, left); n->xr = x; n->yr = y; if (parent && parent->type == node::dt) x += 40; if (n->container) { //puts("
      \n"); layout(n, n->container, x, right, x, y, w, h, flags, state); //puts("
      \n"); } addState(state, sfText); x = left; y = h; removeState(state, sfPar); addState(state, sfText); //state &= ~sfPar; //par(state, x, y, h, left); //x = left; //y = h + font->height(); break; case node::dt: //puts("
    • "); //if (state & sfText) y = h; x = left; n->xr = x; n->yr = y; addState(state, sfPar); if (n->container) { layout(n, n->container, left, right, x, y, w, h, flags, state); } y = h; x = left; //removeState(state, sfPar | sfText); break; case node::dd: //puts("
      "); //if (state & sfText) epar(state, x, y, h, left); y = h; x = left + 40; n->xr = x; n->yr = y; addState(state, sfPar); if (n->container) { //puts("
      \n"); layout(n, n->container, x, right, x, y, w, h, flags, state); //puts("
      \n"); } y = h; x = left; //removeState(state, sfPar | sfText); break; case node::li: //puts("
    • "); //msg("state=%d", state); epar(state, x, y, h, left); //if (state & sfText) y = h; n->xr = x - 12; n->yr = y; addState(state, sfPar); if (n->container) { layout(n, n->container, left, right, x, y, w, h, flags, state); } y = h; x = left; //removeState(state, sfPar | sfText); break; case node::pre: if (x > left) { x = left; h += font->height(); y = h; } if (n->container) { layout(n, n->container, x, right, x, y, w, h, flags | PRE, state); } y = h; x = left; removeState(state, sfPar); addState(state, sfText); //msg("set=%d", state); break; default: if (n->container) layout(n, n->container, left, right, x, y, w, h, flags, state); break; } n = n->next; } ///puts("}"); } void HTextView::draw(Graphics &g, node *n1, bool href) { node *n = n1; while (n) { switch (n->type) { case node::title: break; case node::text: if (n->wrap) { text_node *t = n->wrap; #if 0 g.setColor(testBg); g.fillRect(t->x - tx, t->y - ty, t->w, t->h); g.setColor(normalFg); #endif while (t) { g.drawChars(t->text, 0, t->len, t->x - tx, t->y + font->ascent() - ty); if (href) { g.drawLine(t->x - tx, t->y - ty + font->ascent() + 1, t->x + t->w - tx, t->y - ty + font->ascent() + 1); } t = t->next; } } break; case node::hrule: g.setColor(hrFg); g.drawLine(0 + n->xr - tx, n->yr + 4 - ty, width() - 1 - tx, n->yr + 4 - ty); g.drawLine(0 + n->xr - tx, n->yr + 5 - ty, width() - 1 - tx, n->yr + 5 - ty); g.setColor(normalFg); break; case node::anchor: { attribute *href = find_attribute(n, "HREF"); if (href && href->value) g.setColor(linkFg); if (n->container) draw(g, n->container, href); if (href) g.setColor(normalFg); } break; case node::li: g.fillArc(n->xr - tx, n->yr + (font->height() - 7) / 2 - ty, 7, 7, 0, 360 * 64); default: if (n->container) draw(g, n->container, href); break; } n = n->next; } } bool HTextView::handleKey(const XKeyEvent &key) { if (key.type == KeyPress) { if (fVerticalScroll->handleScrollKeys(key) == false && fHorizontalScroll->handleScrollKeys(key) == false) { return YWindow::handleKey(key); } return true; } return false; } void HTextView::handleButton(const XButtonEvent &button) { if (fVerticalScroll->handleScrollMouse(button) == false) YWindow::handleButton(button); } class FileView: public YWindow, public HTListener { public: FileView(char *path); ~FileView() { if (fPath != 0) { delete[] fPath; fPath = 0; } } void loadFile(); void activateURL(const char *url) { char link[1024]; char *r; //msg("link: %s", url); strcpy(link, fPath); r = strrchr(link, '/'); if (r) r[1] = 0; else link[0] = 0; strcat(link, url); r = strchr(link, '#'); if (r) *r = 0; #if 0 FileView *view = new FileView(link); view->show(); #else free(fPath); fPath = strdup(link); loadFile(); view->repaint(); #endif } virtual void configure(const YRect &r) { YWindow::configure(r); scroll->setGeometry(YRect(0, 0, r.width(), r.height())); } virtual void handleClose() { delete this; app->exit(0); } private: char *fPath; HTextView *view; YScrollView *scroll; ref small_icon; ref large_icon; }; FileView::FileView(char *path) { setDND(true); fPath = newstr(path); scroll = new YScrollView(this); view = new HTextView(this, scroll, this); scroll->setView(view); view->show(); scroll->show(); setTitle(fPath); setClassHint("browser", "IceHelp"); ref file_icon = YIcon::getIcon("file"); small_icon = YPixmap::createFromImage(file_icon->small()); large_icon = YPixmap::createFromImage(file_icon->large()); Pixmap icons[4] = { small_icon->pixmap(), small_icon->mask(), large_icon->pixmap(), large_icon->mask() }; XChangeProperty(xapp->display(), handle(), _XA_WIN_ICONS, XA_PIXMAP, 32, PropModeReplace, (unsigned char *)icons, 4); setSize(640, 640); loadFile(); } void HTextView::handleClick(const XButtonEvent &up, int /*count*/) { if (up.button == 3) { menu->popup(0, 0, 0, up.x_root, up.y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal /*| YPopupWindow::pfPopupMenu*/); return ; } else if (up.button == 1) { node *anchor = 0; node *n = find_node(fRoot, up.x + tx, up.y + ty, anchor, node::anchor); if (n && anchor) { attribute *href = find_attribute(anchor, "HREF"); if (href && href->value) { listener->activateURL(href->value); } } } } int main(int argc, char **argv) { YLocale locale; YXApplication app(&argc, &argv); if (argc == 2) { FileView *view = new FileView(argv[1]); view->show(); return app.mainLoop(); } printf(_("Usage: %s FILENAME\n\n" "A very simple HTML browser displaying the document specified " "by FILENAME.\n\n"), YApplication::Name); return 1; } void FileView::loadFile() { FILE *fp = fopen(fPath, "r"); if (fp == 0) { warn(_("Invalid path: %s\n"), fPath); root = new node(node::div); node * last(NULL); node * txt(new node(node::text)); txt->txt = _("Invalid path: "); last = add(&root, NULL, txt); txt = new node(node::text); txt->txt = fPath; last = add(&root, last, txt); view->setData(root); return ; } if (fp) { node *nextsub = 0; node::node_type close_type = node::unknown; root = parse(fp, 0, 0, nextsub, close_type); assert(nextsub == 0); #ifdef DUMP dump_tree(0, root); #endif view->setData(root); } fclose(fp); } void dump_tree(int level, node *n) { while (n) { printf("%*s<%s>\n", level, "", node::to_string(n->type)); if (n->container) { dump_tree(level + 1, n->container); printf("%*s\n", level, "", node::to_string(n->type)); } n = n->next; } } #if 0 #define S_LINK "\x1B[04m" #define E_LINK "\x1B[0m" #define S_HEAD "\x1B[01;31m" #define E_HEAD "\x1B[0m" #define S_BOLD "\x1B[01m" #define E_BOLD "\x1B[0m" #define S_ITALIC "\x1B[33m" #define E_ITALIC "\x1B[0m" #define S_DEBUG "\x1B[07;31m" #define E_DEBUG "\x1B[0m" int pos = 0; int width = 80; void clear_line() { if (pos != 0) puts(""); pos = 0; } void new_line(int count = 1) { while (count-- > 0) putchar('\n'); pos = 0; } void blank_line(int count = 1) { clear_line(); new_line(count); } void out(char *text) { printf("%s", text); pos += strlen(text); } void tab(int len) { pos += len; while (len-- > 0) putchar(' '); } void pre(int left, char *text) { char *p = text; clear_line(); while (*p) { tab(left); while (*p && *p != '\n') { putchar(*p); pos++; p++; } if (*p == '\n') p++; new_line(); } } void wrap(int left, char *text) { //putchar('['); while (*text) { int chr = 0; int sp = 0; int col = pos; char *p = text; //printf("[%d:%s]", pos, text); while (*p && col <= width) { if (*p == ' ') sp = chr; chr++; col++; p++; } if (col <= width) sp = chr; if (sp == 0) sp = chr; //printf("(%d)", col); while (sp > 0) { putchar(*text); pos++; text++; sp--; } if (*text == ' ') text++; if (*text) { //if (pos != width) puts(""); pos = 0; tab(left); } } //putchar(']'); } node *blank(node *n) { if (n->next && n->next->type == node::text) { if (n->next->content.text[0] == ' ' && n->next->content.text[1] == 0) { if (n->next->next && (n->next->next->type == node::h1 || n->next->next->type == node::h2)) return n->next; blank_line(); return n->next; } } blank_line(); return n; } void dump(int flags, int left, node *n, node *up) { while (n) { switch (n->type) { case node::html: dump(flags, left, n->container, n); break; case node::head: dump(flags, left, n->container, n); break; case node::body: case node::table: case node::font: case node::tr: case node::td: case node::div: dump(flags, left, n->container, n); break; case node::ul: case node::ol: dump(flags, left, n->content.container, n); if (up && up->type != node::li) { n = blank(n); } break; case node::li: clear_line(); tab(left); out(" * "); dump(flags, left + 4, n->content.container, n); break; case node::bold: printf(S_BOLD); dump(flags | BOLD, left, n->content.container, n); printf(E_BOLD); break; case node::italic: printf(S_ITALIC); dump(flags | BOLD, left, n->content.container, n); printf(E_ITALIC); break; case node::h1: case node::h2: case node::h3: case node::h4: case node::h5: case node::h6: blank_line(); printf(S_HEAD); dump(flags, left, n->content.container, n); printf(E_HEAD); n = blank(n); break; case node::pre: dump(flags | PRE, left + 4, n->content.container, n); break; case node::link: printf(S_LINK); dump(flags | LINK, left, n->content.container, n); printf(E_LINK); break; case node::hrule: clear_line(); for (int i = 0; i < 72; i++) pos += printf("-"); clear_line(); break; case node::paragraph: clear_line(); new_line(1); break; case node::line: new_line(1); break; case node::text: if (flags & PRE) pre(left, n->content.text); else { wrap(left, n->content.text); } break; default: printf(S_DEBUG "?" E_DEBUG); } n = n->next; } } int main(int argc, char **argv) { FILE *fp = fopen(argv[1], "r"); if (fp == 0) fp = stdin; char *e = getenv("COLUMNS"); if (e) width = atoi(e); if (fp) { root = parse(fp, 0); dump(0, 0, root, 0); clear_line(); } } #endif icewm-1.3.7/src/ytimer.cc0000644000076600007660000000176311463274240014243 0ustar develdevel/* * IceWM * * Copyright (C) 1998-2001 Marko Macek */ #include "config.h" #include "ytimer.h" #include "yapp.h" YTimer::YTimer(long ms) { fRunning = false; fPrev = fNext = 0; fInterval = ms; fListener = 0; } YTimer::~YTimer() { if (fRunning == true) { fRunning = false; app->unregisterTimer(this); } } void YTimer::startTimer(long ms) { setInterval(ms); startTimer(); } void YTimer::startTimer() { gettimeofday(&timeout, 0); timeout.tv_usec += fInterval * 1000; while (timeout.tv_usec >= 1000000) { timeout.tv_usec -= 1000000; timeout.tv_sec++; } if (fRunning == false) { fRunning = true; app->registerTimer(this); } } void YTimer::runTimer() { gettimeofday(&timeout, 0); if (fRunning == false) { fRunning = true; app->registerTimer(this); } } void YTimer::stopTimer() { if (fRunning == true) { fRunning = false; app->unregisterTimer(this); } } icewm-1.3.7/src/wmtaskbar.h0000644000076600007660000001167011463274240014565 0ustar develdevel#ifndef __TASKBAR_H #define __TASKBAR_H #include "yaction.h" #include "ybutton.h" #include "ymenu.h" #include "ytimer.h" #include "wmclient.h" #include "yxtray.h" class ObjectBar; #if CONFIG_APPLET_CPU_STATUS class CPUStatus; #endif #ifdef CONFIG_APPLET_NET_STATUS class NetStatus; #endif class AddressBar; class MailBoxStatus; class YClock; class YApm; class TaskPane; class TrayPane; class WorkspacesPane; class YXTray; class IAppletContainer { public: virtual void relayout() = 0; virtual void contextMenu(int x_root, int y_root) = 0; protected: virtual ~IAppletContainer() {} }; #ifdef CONFIG_TASKBAR class TaskBar; class EdgeTrigger: public YWindow, public YTimerListener { public: EdgeTrigger(TaskBar *owner); virtual ~EdgeTrigger(); void startHide(); void stopHide(); virtual void handleDNDEnter(); virtual void handleDNDLeave(); virtual void handleCrossing(const XCrossingEvent &crossing); virtual bool handleTimer(YTimer *t); private: TaskBar *fTaskBar; YTimer *fAutoHideTimer; bool fDoShow; }; class TaskBar: public YFrameClient, public YActionListener, public YPopDownListener, public YXTrayNotifier, public IAppletContainer { public: TaskBar(YWindow *aParent); virtual ~TaskBar(); virtual void paint(Graphics &g, const YRect &r); virtual bool handleKey(const XKeyEvent &key); virtual void handleButton(const XButtonEvent &button); virtual void handleClick(const XButtonEvent &up, int count); virtual void handleDrag(const XButtonEvent &down, const XMotionEvent &motion); virtual void handleEndDrag(const XButtonEvent &down, const XButtonEvent &up); virtual void handleCrossing(const XCrossingEvent &crossing); #if false virtual bool handleTimer(YTimer *t); #endif virtual void actionPerformed(YAction *action, unsigned int modifiers); virtual void handlePopDown(YPopupWindow *popup); virtual void handleEndPopup(YPopupWindow *popup); void updateWMHints(); void updateLocation(); void configure(const YRect &r); #ifdef CONFIG_APPLET_CLOCK YClock *clock() { return fClock; } #endif bool windowTrayRequestDock(Window w); void setWorkspaceActive(long workspace, int active); void removeTasksApp(YFrameWindow *w); class TaskBarApp *addTasksApp(YFrameWindow *w); void relayoutTasks(); WorkspacesPane *workspacesPane() const { return fWorkspaces; } void popupStartMenu(); void popupWindowListMenu(); void popOut(); void showAddressBar(); void showBar(bool visible); void handleCollapseButton(); AddressBar *addressBar() const { return fAddressBar; } TaskPane *taskPane() const { return fTasks; } #ifdef CONFIG_TRAY TrayPane *windowTrayPane() const { return fWindowTray; } #endif #ifdef CONFIG_GRADIENTS virtual ref getGradient() const { return fGradient; } #endif void contextMenu(int x_root, int y_root); void relayout() { fNeedRelayout = true; } void relayoutNow(); void detachDesktopTray(); void trayChanged(); YXTray *netwmTray() { return fDesktopTray; } void relayoutTray(); class TrayApp *addTrayApp(YFrameWindow *w); void removeTrayApp(YFrameWindow *w); bool autoTimer(bool show); void updateFullscreen(bool fullscreen); Window edgeTriggerWindow() { return fEdgeTrigger->handle(); } private: TaskPane *fTasks; YButton *fCollapseButton; #ifdef CONFIG_TRAY TrayPane *fWindowTray; #endif #ifdef CONFIG_APPLET_CLOCK YClock *fClock; #endif #ifdef CONFIG_APPLET_MAILBOX MailBoxStatus **fMailBoxStatus; #endif #ifdef CONFIG_APPLET_CPU_STATUS CPUStatus *fCPUStatus; #endif #ifdef CONFIG_APPLET_APM YApm *fApm; #endif #ifdef CONFIG_APPLET_NET_STATUS NetStatus **fNetStatus; #endif #ifndef NO_CONFIGURE_MENUS ObjectBar *fObjectBar; YButton *fApplications; #endif #ifdef CONFIG_WINMENU YButton *fWinList; #endif YButton *fShowDesktop; AddressBar *fAddressBar; WorkspacesPane *fWorkspaces; YXTray *fDesktopTray; bool fIsHidden; bool fFullscreen; bool fIsCollapsed; bool fIsMapped; bool fMenuShown; #if false YTimer *fAutoHideTimer; #endif YMenu *taskBarMenu; friend class WindowList; friend class WindowListBox; #ifdef CONFIG_GRADIENTS ref fGradient; #endif bool fNeedRelayout; void initMenu(); void initApplets(); void updateLayout(int &size_w, int &size_h); EdgeTrigger *fEdgeTrigger; }; extern TaskBar *taskBar; // !!! get rid of this #if 1 extern ref startPixmap; extern ref windowsPixmap; extern ref taskbackPixmap; extern ref taskbuttonPixmap; extern ref taskbuttonactivePixmap; extern ref taskbuttonminimizedPixmap; #endif #ifdef CONFIG_GRADIENTS class YPixbuf; extern ref taskbackPixbuf; extern ref taskbuttonPixbuf; extern ref taskbuttonactivePixbuf; extern ref taskbuttonminimizedPixbuf; #endif #endif #endif icewm-1.3.7/src/yfont.cc0000644000076600007660000000504411463274240014065 0ustar develdevel#include "config.h" #include "ypaint.h" #include "yxapp.h" #include "ywindow.h" #include #if CONFIG_XFREETYPE == 1 static int haveXft = -1; #endif extern ref getXftFont(ustring name, bool antialias); extern ref getXftFontXlfd(ustring name, bool antialias); extern ref getCoreFont(ustring name); #ifdef CONFIG_XFREETYPE ref YFont::getFont(ustring name, ustring xftFont, bool antialias) { #else ref YFont::getFont(ustring name, ustring xftFont, bool) { #endif ref font; #if CONFIG_XFREETYPE == 1 if (haveXft == -1) { int renderEvents, renderErrors; haveXft = (XRenderQueryExtension(xapp->display(), &renderEvents, &renderErrors) && XftDefaultHasRender(xapp->display())) ? 1 : 0; MSG(("RENDER extension: %d", haveXft)); haveXft = 1; } #endif #ifdef CONFIG_XFREETYPE #if CONFIG_XFREETYPE == 1 if (haveXft) #endif { if (xftFont != null && xftFont.length() > 0) return getXftFont(xftFont, antialias); else return getXftFontXlfd(name, antialias); } #endif #ifdef CONFIG_COREFONTS return getCoreFont(name); #else return null; #endif } int YFont::textWidth(char const * str) const { return textWidth(str, strlen(str)); } int YFont::multilineTabPos(const char *str) const { int tabPos(0); for (const char * end(strchr(str, '\n')); end; str = end + 1, end = strchr(str, '\n')) { int const len(end - str); const char * tab((const char *) memchr(str, '\t', len)); if (tab) tabPos = max(tabPos, textWidth(str, tab - str)); } const char * tab(strchr(str, '\t')); if (tab) tabPos = max(tabPos, textWidth(str, tab - str)); return (tabPos ? tabPos + 3 * textWidth(" ", 1) : 0); } YDimension YFont::multilineAlloc(const char *str) const { unsigned const tabPos(multilineTabPos(str)); YDimension alloc(0, ascent()); for (const char * end(strchr(str, '\n')); end; str = end + 1, end = strchr(str, '\n')) { int const len(end - str); const char * tab((const char *) memchr(str, '\t', len)); alloc.w = max(tab ? tabPos + textWidth(tab + 1, end - tab - 1) : textWidth(str, len), alloc.w); alloc.h+= height(); } const char * tab(strchr(str, '\t')); alloc.w = max(alloc.w, tab ? tabPos + textWidth(tab + 1) : textWidth(str)); return alloc; } YDimension YFont::multilineAlloc(const ustring &str) const { cstring cs(str); return multilineAlloc(cs.c_str()); } icewm-1.3.7/src/wmprog.h0000644000076600007660000000520711463274240014104 0ustar develdevel#ifndef __WMPROG_H #define __WMPROG_H #ifndef NO_CONFIGURE_MENUS #include "upath.h" #include "objmenu.h" #include "yarray.h" #include class ObjectContainer; void loadMenus(upath fileName, ObjectContainer *container); class DProgram: public DObject { public: virtual ~DProgram(); virtual void open(); static char *fullname(const char *exe); static DProgram *newProgram(const char *name, ref icon, const bool restart, const char *wmclass, upath exe, YStringArray &args); protected: DProgram(const ustring &name, ref icon, const bool restart, const char *wmclass, upath exe, YStringArray &args); private: const bool fRestart; const char *fRes; upath fCmd; YStringArray fArgs; }; class DFile: public DObject { public: DFile(const ustring &name, ref icon, upath path); virtual ~DFile(); virtual void open(); private: upath fPath; }; class MenuFileMenu: public ObjectMenu { public: MenuFileMenu(ustring name, YWindow *parent = 0); virtual ~MenuFileMenu(); virtual void updatePopup(); virtual void refresh(); private: mstring fName; upath fPath; protected: time_t fModTime; }; class MenuProgMenu: public ObjectMenu { public: MenuProgMenu(ustring name, upath command, YStringArray &args, YWindow *parent = 0); virtual ~MenuProgMenu(); virtual void updatePopup(); virtual void refresh(); private: ustring fName; upath fCommand; YStringArray fArgs; protected: time_t fModTime; }; class MenuProgReloadMenu: public MenuProgMenu { public: MenuProgReloadMenu(const char *name, time_t timeout, const char *command, YStringArray &args, YWindow *parent = 0); virtual void updatePopup(); protected: time_t fTimeout; }; class StartMenu: public MenuFileMenu { public: StartMenu(const char *name, YWindow *parent = 0); virtual bool handleKey(const XKeyEvent &key); virtual void updatePopup(); virtual void refresh(); bool fHasGnomeAppsMenu; bool fHasGnomeUserMenu; bool fHasKDEMenu; }; class KProgram { public: KProgram(const char *key, DProgram *prog); bool isKey(KeySym key, unsigned int mod) { return (key == fKey && mod == fMod) ? true : false; } void open() { if (fProg) fProg->open(); } KeySym key() { return fKey; } unsigned int modifiers() { return fMod; } KProgram *getNext() { return fNext; } private: KProgram *fNext; KeySym fKey; unsigned int fMod; DProgram *fProg; }; extern KProgram *keyProgs; #endif /* NO_CONFIGURE_MENUS */ #endif icewm-1.3.7/src/ycursor.cc0000644000076600007660000002450311463274240014435 0ustar develdevel/* * IceWM - Colored cursor support * * Copyright (C) 2002 The Authors of IceWM * * initially by Oleastre * C++ style implementation by tbf */ #include "config.h" #include "yfull.h" #include "default.h" #include "yxapp.h" #include "wmprog.h" #ifndef LITE #include #include #ifdef CONFIG_XPM #include "X11/xpm.h" #endif #ifdef CONFIG_IMLIB #include extern ImlibData *hImlib; #endif #include "ycursor.h" #include "intl.h" class YCursorPixmap { public: YCursorPixmap(upath path); ~YCursorPixmap(); Pixmap pixmap() const { return fPixmap; } Pixmap mask() const { return fMask; } const XColor& background() const { return fBackground; } const XColor& foreground() const { return fForeground; } #ifdef CONFIG_XPM bool isValid() { return fValid; } unsigned int width() const { return fAttributes.width; } unsigned int height() const { return fAttributes.height; } unsigned int hotspotX() const { return fAttributes.x_hotspot; } unsigned int hotspotY() const { return fAttributes.y_hotspot; } #endif #ifdef CONFIG_IMLIB bool isValid() { return fImage; } unsigned int width() const { return fImage ? fImage->rgb_width : 0; } unsigned int height() const { return fImage ? fImage->rgb_height : 0; } unsigned int hotspotX() const { return fHotspotX; } unsigned int hotspotY() const { return fHotspotY; } #endif #ifdef CONFIG_GDK_PIXBUF_XLIB bool isValid() { return false; } unsigned int width() const { return 0; } unsigned int height() const { return 0; } unsigned int hotspotX() const { return fHotspotX; } unsigned int hotspotY() const { return fHotspotY; } #endif private: Pixmap fPixmap, fMask; XColor fForeground, fBackground; #ifdef CONFIG_XPM bool fValid; XpmAttributes fAttributes; #endif #ifdef CONFIG_IMLIB unsigned int fHotspotX, fHotspotY; ImlibImage *fImage; #endif #ifdef CONFIG_GDK_PIXBUF_XLIB bool fValid; unsigned int fHotspotX, fHotspotY; #endif operator bool(); }; #ifdef CONFIG_XPM // ================== use libXpm to load the cursor pixmap === YCursorPixmap::YCursorPixmap(upath path): fValid(false) { fAttributes.colormap = xapp->colormap(); fAttributes.closeness = 65535; fAttributes.valuemask = XpmColormap|XpmCloseness| XpmReturnPixels|XpmSize|XpmHotspot; fAttributes.x_hotspot = 0; fAttributes.y_hotspot = 0; int const rc(XpmReadFileToPixmap(xapp->display(), desktop->handle(), (char *)REDIR_ROOT(cstring(path.path()).c_str()), // !!! &fPixmap, &fMask, &fAttributes)); if (rc != XpmSuccess) warn(_("Loading of pixmap \"%s\" failed: %s"), path, XpmGetErrorString(rc)); else if (fAttributes.npixels != 2) warn("Invalid cursor pixmap: \"%s\" contains too many unique colors", path); else { fBackground.pixel = fAttributes.pixels[0]; fForeground.pixel = fAttributes.pixels[1]; XQueryColor(xapp->display(), xapp->colormap(), &fBackground); XQueryColor(xapp->display(), xapp->colormap(), &fForeground); fValid = true; } } #endif #ifdef CONFIG_IMLIB // ================= use Imlib to load the cursor pixmap === YCursorPixmap::YCursorPixmap(upath path): fHotspotX(0), fHotspotY(0) { cstring cs(path.path()); fImage = Imlib_load_image(hImlib, (char *)REDIR_ROOT(cs.c_str())); if (fImage == NULL) { warn(_("Loading of pixmap \"%s\" failed"), cs.c_str()); return; } Imlib_render(hImlib, fImage, fImage->rgb_width, fImage->rgb_height); fPixmap = (Pixmap)Imlib_move_image(hImlib, fImage); fMask = (Pixmap)Imlib_move_mask(hImlib, fImage); struct Pixel { // ----------------- find the background/foreground color --- bool operator!= (const Pixel& o) { return (r != o.r || g != o.g || b != o.b); } bool operator!= (const ImlibColor& o) { return (r != o.r || g != o.g || b != o.b); } unsigned char r,g,b; }; Pixel fg = { 0xFF, 0xFF, 0xFF }, bg = { 0, 0, 0 }, *pp((Pixel*) fImage->rgb_data); unsigned ccnt = 0; for (unsigned n = fImage->rgb_width * fImage->rgb_height; n > 0; --n, ++pp) if (*pp != fImage->shape_color) switch (ccnt) { case 0: bg = *pp; ++ccnt; break; case 1: if (*pp != bg) { fg = *pp; ++ccnt; } break; default: if (*pp != bg && *pp != fg) { warn(_("Invalid cursor pixmap: \"%s\" contains too " "much unique colors"), cs.c_str()); Imlib_destroy_image(hImlib, fImage); fImage = NULL; return; } } fForeground.red = (unsigned short)(fg.r << 8); // -- alloc the background/foreground color --- fForeground.green = (unsigned short)(fg.g << 8); fForeground.blue = (unsigned short)(fg.b << 8); XAllocColor(xapp->display(), xapp->colormap(), &fForeground); fBackground.red = (unsigned short)(bg.r << 8); fBackground.green = (unsigned short)(bg.g << 8); fBackground.blue = (unsigned short)(bg.b << 8); XAllocColor(xapp->display(), xapp->colormap(), &fBackground); // ----------------- find the hotspot by reading the xpm header manually --- FILE *xpm = fopen((char *)REDIR_ROOT(cs.c_str()), "rb"); if (xpm == NULL) warn(_("BUG? Imlib was able to read \"%s\""), cs.c_str()); else { while (fgetc(xpm) != '{'); // ----- that's safe since imlib accepted --- for (int c;;) switch (c = fgetc(xpm)) { case '/': if ((c == fgetc(xpm)) == '/') // ------ eat C++ line comment --- while (fgetc(xpm) != '\n'); else { // -------------------------------- eat block comment --- int pc; do { pc = c; c = fgetc(xpm); } while (c != '/' && pc != '*'); } break; case ' ': case '\t': case '\r': case '\n': // ------- whitespace --- break; case '"': { // ---------------------------------- the XPM header --- unsigned foo; int x, y; int tokens = fscanf(xpm, "%u %u %u %u %u %u", &foo, &foo, &foo, &foo, &x, &y); if (tokens == 6) { fHotspotX = (x < 0 ? 0 : x); fHotspotY = (y < 0 ? 0 : y); } else if (tokens != 4) warn(_("BUG? Malformed XPM header but Imlib " "was able to parse \"%s\""), cs.c_str()); fclose(xpm); return; } default: if (c == EOF) warn(_("BUG? Unexpected end of XPM file but Imlib " "was able to parse \"%s\""), cs.c_str()); else warn(_("BUG? Unexpected characted but Imlib " "was able to parse \"%s\""), cs.c_str()); fclose(xpm); return; } } } #endif #ifdef CONFIG_GDK_PIXBUF_XLIB YCursorPixmap::YCursorPixmap(upath /*path*/): fPixmap(None), fMask(None), fHotspotX(0), fHotspotY(0) { } #endif YCursorPixmap::~YCursorPixmap() { if (fPixmap != None) XFreePixmap(xapp->display(), fPixmap); if (fMask != None) XFreePixmap(xapp->display(), fMask); #ifdef CONFIG_XPM XpmFreeAttributes(&fAttributes); #endif #ifdef CONFIG_IMLIB Imlib_destroy_image(hImlib, fImage); #endif } #endif YCursor::~YCursor() { if(fOwned && fCursor && app) XFreeCursor(xapp->display(), fCursor); } #ifndef LITE static Pixmap createMask(int w, int h) { return XCreatePixmap(xapp->display(), desktop->handle(), w, h, 1); } void YCursor::load(upath path) { YCursorPixmap pixmap(path); if (pixmap.isValid()) { // ============ convert coloured pixmap into a bilevel one === Pixmap bilevel(createMask(pixmap.width(), pixmap.height())); // -------------------------- figure out which plane we have to copy --- unsigned long pmask(1 << (xapp->depth() - 1)); if (pixmap.foreground().pixel && pixmap.foreground().pixel != pixmap.background().pixel) while ((pixmap.foreground().pixel & pmask) == (pixmap.background().pixel & pmask)) pmask >>= 1; else if (pixmap.background().pixel) while ((pixmap.background().pixel & pmask) == 0) pmask >>= 1; GC gc; XGCValues gcv; // ------ copy one plane by using a bilevel GC --- gcv.function = (pixmap.foreground().pixel && (pixmap.foreground().pixel & pmask)) ? GXcopyInverted : GXcopy; gc = XCreateGC (xapp->display(), bilevel, GCFunction, &gcv); XFillRectangle(xapp->display(), bilevel, gc, 0, 0, pixmap.width(), pixmap.height()); XCopyPlane(xapp->display(), pixmap.pixmap(), bilevel, gc, 0, 0, pixmap.width(), pixmap.height(), 0, 0, pmask); XFreeGC(xapp->display(), gc); // ==================================== allocate a new pixmap cursor === XColor foreground(pixmap.foreground()), background(pixmap.background()); fCursor = XCreatePixmapCursor(xapp->display(), bilevel, pixmap.mask(), &foreground, &background, pixmap.hotspotX(), pixmap.hotspotY()); XFreePixmap(xapp->display(), bilevel); } } #endif #ifndef LITE void YCursor::load(upath name, unsigned int fallback) { #else void YCursor::load(upath /*name*/, unsigned int fallback) { #endif if(fCursor && fOwned) XFreeCursor(xapp->display(), fCursor); #ifndef LITE char const *cursors = "cursors/"; ref paths = YResourcePaths::subdirs(cursors); for (int i = 0; i < paths->getCount(); i++) { upath path = paths->getPath(i)->joinPath(cursors, name); if (path.fileExists()) load(path.path()); } if (fCursor == None) #endif fCursor = XCreateFontCursor(xapp->display(), fallback); fOwned = true; } icewm-1.3.7/src/yimage.cc0000644000076600007660000002013311463274240014175 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek */ #include "config.h" #include "yfull.h" #include "ypixbuf.h" #include "ypaint.h" #include "yxapp.h" #include "sysdep.h" #include "prefs.h" #include "yprefs.h" #include "wmprog.h" // !!! remove this #include "yimage.h" #include #ifdef CONFIG_XPM #include #endif #include "intl.h" #if 0 #if 0 YPixmap::YPixmap(YPixmap const & pixmap): refcounted(), fPixmap(pixmap.fPixmap), fMask(pixmap.fMask), fWidth(pixmap.fWidth), fHeight(pixmap.fHeight), fOwned(false) { } #endif #if 0 #ifdef CONFIG_ANTIALIASING YPixmap::YPixmap(YPixbuf & pixbuf): fWidth(pixbuf.width()), fHeight(pixbuf.height()), fPixmap(createPixmap(pixbuf.width(), pixbuf.height())), fMask(pixbuf.alpha() ? createMask(pixbuf.width(), pixbuf.height()) : None), fOwned(true) { Graphics(fPixmap, pixbuf.width(), pixbuf.height()).copyPixbuf(pixbuf, 0, 0, fWidth, fHeight, 0, 0, false); Graphics(fMask, pixbuf.width(), pixbuf.height()).copyAlphaMask(pixbuf, 0, 0, fWidth, fHeight, 0, 0); } #endif #endif YPixmap::YPixmap(upath filename): fOwned(true) { cstring cs(filename.path()); #if defined(CONFIG_IMLIB) ImlibImage *im(Imlib_load_image(hImlib, (char *)REDIR_ROOT(cs.c_str()))); if (im) { fWidth = im->rgb_width; fHeight = im->rgb_height; Imlib_render(hImlib, im, fWidth, fHeight); fPixmap = (Pixmap)Imlib_move_image(hImlib, im); fMask = (Pixmap)Imlib_move_mask(hImlib, im); Imlib_destroy_image(hImlib, im); } else { warn(_("Loading of image \"%s\" failed"), cs.c_str()); fPixmap = fMask = None; fWidth = fHeight = 16; } MSG(("%s %d %d", cs.c_str(), fWidth, fHeight)); #elif defined(CONFIG_XPM) XpmAttributes xpmAttributes; memset(&xpmAttributes, 0, sizeof(xpmAttributes)); xpmAttributes.colormap = xapp->colormap(); xpmAttributes.closeness = 65535; xpmAttributes.valuemask = XpmSize|XpmReturnPixels|XpmColormap|XpmCloseness; int const rc(XpmReadFileToPixmap(xapp->display(), desktop->handle(), (char *)REDIR_ROOT(cstring(filename.path()).c_str()), // !!! &fPixmap, &fMask, &xpmAttributes)); if (rc == XpmSuccess) { fWidth = xpmAttributes.width; fHeight = xpmAttributes.height; XpmFreeAttributes(&xpmAttributes); } else { warn(_("Loading of pixmap \"%s\" failed: %s"), cstring(filename.path()).c_str(), XpmGetErrorString(rc)); fWidth = fHeight = 16; /// should be 0, fix fPixmap = fMask = None; } #else fWidth = fHeight = 16; /// should be 0, fix fPixmap = fMask = None; #endif } #endif #if 0 #ifdef CONFIG_IMLIB /* Load pixmap at specified size */ YPixmap::YPixmap(const char *filename, int w, int h) { fOwned = true; fWidth = w; fHeight = h; ImlibImage *im = Imlib_load_image(hImlib, (char *)REDIR_ROOT(filename)); if(im) { Imlib_render(hImlib, im, fWidth, fHeight); fPixmap = (Pixmap) Imlib_move_image(hImlib, im); fMask = (Pixmap) Imlib_move_mask(hImlib, im); Imlib_destroy_image(hImlib, im); } else { warn(_("Loading of image \"%s\" failed"), filename); fPixmap = fMask = None; } MSG(("%s %d %d", filename, fWidth, fHeight)); } #endif #endif #if 0 YPixmap::YPixmap(bool owned, Pixmap pixmap, Pixmap mask, int w, int h) { fOwned = owned; fWidth = w; fHeight = h; fPixmap = pixmap; fMask = mask; } #endif #ifdef CONFIG_IMLIB #if 0 void YPixmap::scaleImage(Pixmap pixmap, Pixmap mask, int x, int y, int w, int h, int nw, int nh) { // abort(); #if 0 if (pixmap != None) { ImlibImage *im = Imlib_create_image_from_drawable (hImlib, pixmap, 0, x, y, w, h); if (im == 0) { warn (_("Imlib: Acquisition of X pixmap failed")); return; } Imlib_render(hImlib, im, nw, nh); fPixmap = Imlib_move_image(hImlib, im); Imlib_destroy_image(hImlib, im); if (fPixmap == 0) { warn (_("Imlib: Imlib image to X pixmap mapping failed")); return; } } if (mask != None) { ImlibImage *im = Imlib_create_image_from_drawable (hImlib, mask, 0, x, y, w, h); if (im == 0) { warn (_("Imlib: Acquisition of X pixmap failed")); return; } // // Initialization of a bilevel pixmap // ImlibImage *sc = Imlib_clone_scaled_image (hImlib, im, nw, nh); Imlib_destroy_image(hImlib, im); fMask = createMask(nw, nh); Graphics g(fMask, nw, nh); g.setColorPixel(1); g.fillRect(0, 0, nw, nh); g.setColorPixel(0); // // nested rendering loop inspired by gdk-pixbuf // unsigned char *px = sc->rgb_data; for (int y = 0; y < nh; ++y) for (int xa = 0, xe; xa < nw; xa = xe) { while (xa < nw && *px < 128) ++xa, px+= 3; xe = xa; while (xe < nw && *px >= 128) ++xe, px+= 3; g.drawLine(xa, y, xe - 1, y); } Imlib_destroy_image(hImlib, sc); } #endif } #endif #if 0 YPixmap::YPixmap(const ref &pixmap, int wScaled, int hScaled) { fOwned = true; fWidth = wScaled; fHeight = hScaled; fPixmap = fMask = None; scaleImage(pixmap->pixmap(), pixmap->mask(), 0, 0, pixmap->width(), pixmap->height(), fWidth, fHeight); } YPixmap::YPixmap(Pixmap pixmap, Pixmap mask, int w, int h, int wScaled, int hScaled) { fOwned = true; fWidth = wScaled; fHeight = hScaled; fPixmap = fMask = None; scaleImage(pixmap, mask, 0, 0, w, h, fWidth, fHeight); } #endif #endif #if 0 YPixmap::YPixmap(int w, int h, bool mask) { fOwned = true; fWidth = w; fHeight = h; fPixmap = createPixmap(fWidth, fHeight); fMask = mask ? createPixmap(fWidth, fHeight) : None; } YPixmap::~YPixmap() { if (fOwned) { if (fPixmap != None) { if (xapp != 0) XFreePixmap(xapp->display(), fPixmap); fPixmap = 0; } if (fMask != None) { if (xapp != 0) XFreePixmap(xapp->display(), fMask); fMask = 0; } } } void YPixmap::replicate(bool horiz, bool copyMask) { if (this == NULL || pixmap() == None || (fMask == None && copyMask)) return; int dim(horiz ? width() : height()); if (dim >= 128) return; dim = 128 + dim - 128 % dim; Pixmap nPixmap(horiz ? createPixmap(dim, height()) : createPixmap(width(), dim)); Pixmap nMask(copyMask ? (horiz ? createMask(dim, height()) : createMask(width(), dim)) : None); if (horiz) Graphics(nPixmap, dim, height()).repHorz(fPixmap, width(), height(), 0, 0, dim); else Graphics(nPixmap, width(), dim).repVert(fPixmap, width(), height(), 0, 0, dim); if (nMask != None) { if (horiz) Graphics(nMask, dim, height()).repHorz(fMask, width(), height(), 0, 0, dim); else Graphics(nMask, width(), dim).repVert(fMask, width(), height(), 0, 0, dim); } if (fOwned) { if (fPixmap != None) XFreePixmap(xapp->display(), fPixmap); if (fMask != None) XFreePixmap(xapp->display(), fMask); } fPixmap = nPixmap; fMask = nMask; (horiz ? fWidth : fHeight) = dim; } ref YPixmap::create(int w, int h, bool useMask) { ref n; Pixmap pixmap = createPixmap(w, h); Pixmap mask = useMask ? createMask(w, h) : None; if (pixmap != None && (!useMask || mask != None)) { n.init(new YPixmap(pixmap, mask, w, h)); n->fOwned = true; } return n; } ref YPixmap::scale(ref source, int const w, int const h) { ref scaled; #ifdef CONFIG_IMLIB if (source->width() != w || source->height() != h) { scaled.init(new YPixmap(source, w, h)); } else #endif #endif icewm-1.3.7/src/gnome2.cc0000644000076600007660000002721211463274240014116 0ustar develdevel/* * IceWM * * Copyright (C) 1998-2003 Marko Macek & Nehal Mistry * * Changes: * * 2003/06/14 * * created gnome2 support from gnome.cc */ #include "config.h" #ifdef CONFIG_GNOME_MENUS #include "ylib.h" #include "default.h" #include "ypixbuf.h" #include "yapp.h" #include "sysdep.h" #include "base.h" #include #include #include #include #include #include "yarray.h" char const * ApplicationName = "icewm-menu-gnome2"; class GnomeMenu; class GnomeMenuItem { public: GnomeMenuItem() { title = 0; icon = 0; dentry = 0; submenu = 0; } const char *title; const char *icon; const char *dentry; GnomeMenu *submenu; }; class GnomeMenu { public: GnomeMenu() { } YObjectArray items; bool isDuplicateName(const char *name); void addEntry(const char *fPath, const char *name, const int plen, const bool firstRun); void populateMenu(const char *fPath); }; void dumpMenu(GnomeMenu *menu) { for (int i = 0; i < menu->items.getCount(); i++) { GnomeMenuItem *item = menu->items.getItem(i); if (item->dentry && !item->submenu) { printf("prog \"%s\" %s icewm-menu-gnome2 --open \"%s\"\n", item->title, item->icon ? item->icon : "-", item->dentry); } else if (item->dentry && item->submenu) { printf("menuprog \"%s\" %s icewm-menu-gnome2 --list \"%s\"\n", item->title, item->icon ? item->icon : "-", (!strcmp(my_basename(item->dentry), ".directory") ? g_dirname(item->dentry) : item->dentry)); } } } bool GnomeMenu::isDuplicateName(const char *name) { for (int i = 0; i < items.getCount(); i++) { GnomeMenuItem *item = items.getItem(i); if (strcmp(name, item->title) == 0) return 1; } return 0; } void GnomeMenu::addEntry(const char *fPath, const char *name, const int plen, const bool firstRun) { const int nlen = (plen == 0 || fPath[plen - 1] != '/') ? plen + 1 + strlen(name) : plen + strlen(name); char *npath = new char[nlen + 1]; if (npath) { strcpy(npath, fPath); if (plen == 0 || npath[plen - 1] != '/') { npath[plen] = '/'; strcpy(npath + plen + 1, name); } else strcpy(npath + plen, name); GnomeMenuItem *item = new GnomeMenuItem(); item->title = name; GnomeDesktopItem *ditem = gnome_desktop_item_new_from_file(npath, (GnomeDesktopItemLoadFlags)0, NULL); struct stat sb; const char *type; bool isDir = (!stat(npath, &sb) && S_ISDIR(sb.st_mode)); type = gnome_desktop_item_get_string(ditem, GNOME_DESKTOP_ITEM_TYPE); if (!isDir && type && strstr(type, "Directory")) { isDir = 1; } if (isDir) { GnomeMenu *submenu = new GnomeMenu(); item->title = g_basename(npath); item->icon = gnome_pixmap_file("gnome-folder.png"); item->submenu = submenu; char *epath = new char[nlen + sizeof("/.directory")]; strcpy(epath, npath); strcpy(epath + nlen, "/.directory"); if (stat(epath, &sb) == -1) { strcpy(epath, npath); } ditem = gnome_desktop_item_new_from_file(epath, (GnomeDesktopItemLoadFlags)0, NULL); if (ditem) { item->title = gnome_desktop_item_get_localestring(ditem, GNOME_DESKTOP_ITEM_NAME); //LXP FX item->icon = gnome_desktop_item_get_string(ditem, GNOME_DESKTOP_ITEM_ICON); } item->dentry = epath; } else { if (type && !strstr(type, "Directory")) { item->title = gnome_desktop_item_get_localestring(ditem, GNOME_DESKTOP_ITEM_NAME); if (gnome_desktop_item_get_string(ditem, GNOME_DESKTOP_ITEM_ICON)) item->icon = gnome_desktop_item_get_string(ditem, GNOME_DESKTOP_ITEM_ICON); item->dentry = npath; } } if (firstRun || !isDuplicateName(item->title)) items.append(item); } } void GnomeMenu::populateMenu(const char *fPath) { struct stat sb; bool isDir = (!stat(fPath, &sb) && S_ISDIR(sb.st_mode)); const int plen = strlen(fPath); char tmp[256]; strcpy(tmp, fPath); strcat(tmp, "/.directory"); if (isDir && !stat(tmp, &sb)) { // looks like kde/gnome1 style char *opath = new char[plen + sizeof("/.order")]; if (opath) { strcpy(opath, fPath); strcpy(opath + plen, "/.order"); FILE * order(fopen(opath, "r")); if (order) { char oentry[100]; while (fgets(oentry, sizeof (oentry), order)) { const int oend = strlen(oentry) - 1; if (oend > 0 && oentry[oend] == '\n') oentry[oend] = '\0'; addEntry(fPath, oentry, plen, true); } fclose(order); } delete[] opath; } DIR *dir = opendir(fPath); if (dir != 0) { struct dirent *file; while ((file = readdir(dir)) != NULL) { if (*file->d_name != '.') addEntry(fPath, file->d_name, plen, false); } closedir(dir); } } else { // gnome2 style char *category = NULL; char dirname[256] = "a"; if (isDir) { strcpy(dirname, fPath); } else if (strstr(fPath, "Settings")) { strcpy(dirname, "/usr/share/control-center-2.0/capplets/"); } else if (strstr(fPath, "Advanced")) { strcpy(dirname, "/usr/share/control-center-2.0/capplets/"); } else { dirname[0] = '\0'; } if (isDir) { DIR *dir = opendir(dirname); if (dir != 0) { struct dirent *file; while ((file = readdir(dir)) != NULL) { if (!strcmp(dirname, fPath) && (strstr(file->d_name, "Accessibility") || strstr(file->d_name, "Advanced") || strstr(file->d_name, "Applications") || strstr(file->d_name, "Root") )) continue; if (*file->d_name != '.') addEntry(dirname, file->d_name, strlen(dirname), false); } closedir(dir); } } strcpy(dirname, "/usr/share/applications/"); if (isDir) { category = strdup("ion;Core"); } else if (strstr(fPath, "Applications")) { category = strdup("ion;Merg"); } else if (strstr(fPath, "Accessories")) { category = strdup("ion;Util"); } else if (strstr(fPath, "Advanced")) { category = strdup("ngs;Adva"); strcpy(dirname, "/usr/share/control-center-2.0/capplets/"); } else if (strstr(fPath, "Accessibility")) { category = strdup("ngs;Acce"); strcpy(dirname, "/usr/share/control-center-2.0/capplets/"); } else if (strstr(fPath, "Development")) { category = strdup("ion;Deve"); } else if (strstr(fPath, "Editors")) { category = strdup("ion;Text"); } else if (strstr(fPath, "Games")) { category = strdup("ion;Game"); } else if (strstr(fPath, "Graphics")) { category = strdup("ion;Grap"); } else if (strstr(fPath, "Internet")) { category = strdup("ion;Netw"); } else if (strstr(fPath, "Root")) { category = strdup("ion;Core"); } else if (strstr(fPath, "Multimedia")) { category = strdup("ion;Audi"); } else if (strstr(fPath, "Office")) { category = strdup("ion;Offi"); } else if (strstr(fPath, "Settings")) { category = strdup("ion;Sett"); strcpy(dirname, "/usr/share/control-center-2.0/capplets/"); } else if (strstr(fPath, "System")) { category = strdup("ion;Syst"); } else { category = strdup("xyz"); } if (!strlen(dirname)) strcpy(dirname, "/usr/share/applications/"); DIR* dir = opendir(dirname); if (dir != 0) { struct dirent *file; while ((file = readdir(dir)) != NULL) { char fullpath[256]; strcpy(fullpath, dirname); strcat(fullpath, file->d_name); GnomeDesktopItem *ditem = gnome_desktop_item_new_from_file(fullpath, (GnomeDesktopItemLoadFlags)0, NULL); const char *categories = gnome_desktop_item_get_string(ditem, GNOME_DESKTOP_ITEM_CATEGORIES); if (categories && strstr(categories, category)) { if (*file->d_name != '.') { if (strstr(fPath, "Settings")) { if (!strstr(categories, "ngs;Adva") && !strstr(categories, "ngs;Acce")) addEntry(dirname, file->d_name, strlen(dirname), false); } else { addEntry(dirname, file->d_name, strlen(dirname), false); } } } } if (strstr(fPath, "Settings")) { addEntry("/usr/share/gnome/vfolders/", "Accessibility.directory", strlen("/usr/share/gnome/vfolders/"), false); addEntry("/usr/share/gnome/vfolders/", "Advanced.directory", strlen("/usr/share/gnome/vfolders/"), false); } closedir(dir); } } } int makeMenu(const char *base_directory) { GnomeMenu *menu = new GnomeMenu(); menu->populateMenu(base_directory); dumpMenu(menu); return 0; } int runFile(const char *dentry_path) { char arg[32]; int i; GnomeDesktopItem *ditem = gnome_desktop_item_new_from_file(dentry_path, (GnomeDesktopItemLoadFlags)0, NULL); if (ditem == NULL) { return 1; } else { // FIXME: leads to segfault for some reason, so using execlp instead // gnome_desktop_item_launch(ditem, NULL, 0, NULL); const char *app = gnome_desktop_item_get_string(ditem, GNOME_DESKTOP_ITEM_EXEC); for (i = 0; app[i] && app[i] != ' '; ++i) { arg[i] = app[i]; } arg[i] = '\0'; execlp(arg, arg, NULL); } return 0; } int main(int argc, char **argv) { gnome_vfs_init(); for (char ** arg = argv + 1; arg < argv + argc; ++arg) { if (**arg == '-') { char *path = 0; if (IS_SWITCH("h", "help")) break; if ((path = GET_LONG_ARGUMENT("open")) != NULL) { return runFile(path); } else if ((path = GET_LONG_ARGUMENT("list")) != NULL) { return makeMenu(path); } } } msg("Usage: %s [ --open PATH | --list PATH ]", argv[0]); } #endif icewm-1.3.7/src/ymenu.cc0000644000076600007660000010731711463274240014071 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek */ #include "config.h" #include "yfull.h" #include "ykey.h" #include "ymenu.h" #include "yaction.h" #include "ymenuitem.h" #include "yrect.h" #include "yxapp.h" #include "prefs.h" #include "yprefs.h" #include "ascii.h" #include "ypixbuf.h" #include YColor *menuBg = 0; YColor *menuItemFg = 0; YColor *activeMenuItemBg = 0; YColor *activeMenuItemFg = 0; YColor *disabledMenuItemFg = 0; YColor *disabledMenuItemSt = 0; ref menuFont; int YMenu::fAutoScrollDeltaX = 0; int YMenu::fAutoScrollDeltaY = 0; int YMenu::fAutoScrollMouseX = -1; int YMenu::fAutoScrollMouseY = -1; YMenu *YMenu::fPointedMenu = 0; void YMenu::setActionListener(YActionListener *actionListener) { fActionListener = actionListener; } void YMenu::finishPopup(YMenuItem *item, YAction *action, unsigned int modifiers) { YActionListener *cmd = fActionListener; YPopupWindow::finishPopup(); if (item) item->actionPerformed(cmd, action, modifiers); } YTimer *YMenu::fMenuTimer = 0; YMenu::YMenu(YWindow *parent): YPopupWindow(parent) INIT_GRADIENT(fGradient, NULL) { if (menuFont == null) menuFont = YFont::getFont(XFA(menuFontName)); if (menuBg == 0) menuBg = new YColor(clrNormalMenu); if (menuItemFg == 0) menuItemFg = new YColor(clrNormalMenuItemText); if (*clrActiveMenuItem && activeMenuItemBg == 0) activeMenuItemBg = new YColor(clrActiveMenuItem); if (activeMenuItemFg == 0) activeMenuItemFg = new YColor(clrActiveMenuItemText); if (disabledMenuItemFg == 0) disabledMenuItemFg = new YColor(clrDisabledMenuItemText); if (disabledMenuItemSt == 0) disabledMenuItemSt = *clrDisabledMenuItemShadow ? new YColor(clrDisabledMenuItemShadow) : menuBg->brighter(); paintedItem = selectedItem = -1; submenuItem = -1; fPopup = 0; fActionListener = 0; fPopupActive = 0; fShared = false; activatedX = -1; activatedY = -1; fTimerX = 0; fTimerY = 0; fTimerSubmenuItem = -1; } YMenu::~YMenu() { if (fMenuTimer && fMenuTimer->getTimerListener() == this) { fMenuTimer->setTimerListener(0); fMenuTimer->stopTimer(); } hideSubmenu(); #ifdef CONFIG_GRADIENTS fGradient = null; #endif } void YMenu::activatePopup(int flags) { if (popupFlags() & pfButtonDown) focusItem(-1); else { if (menuMouseTracking && (flags & pfButtonDown)) focusItem(-1); else focusItem(findActiveItem(itemCount() - 1, 1)); } } void YMenu::deactivatePopup() { hideSubmenu(); if (fPointedMenu == this) fPointedMenu = 0; if (fMenuTimer && fMenuTimer->getTimerListener() == this) { fMenuTimer->setTimerListener(0); fMenuTimer->stopTimer(); } } void YMenu::donePopup(YPopupWindow *popup) { PRECONDITION(popup != 0); PRECONDITION(fPopup != 0); if (fPointedMenu == this) fPointedMenu = 0; if (fPopup) { hideSubmenu(); if (selectedItem != -1) if (getItem(selectedItem)->getSubmenu() == popup) paintItems(); } } bool YMenu::isCondCascade(int selItem) { if (selItem != -1 && getItem(selItem)->getAction() && getItem(selItem)->getSubmenu()) { return true; } return false; } int YMenu::onCascadeButton(int selItem, int x, int /*y*/, bool /*checkPopup*/) { if (isCondCascade(selItem)) { #if 1 ///hmm if (fPopup && fPopup == getItem(selItem)->getSubmenu()) return 0; #endif int fontHeight = menuFont->height() + 1; int h = fontHeight; #ifndef LITE if (getItem(selItem)->getIcon() != null && YIcon::smallSize() > h) h = YIcon::smallSize(); #endif if (x <= int(width() - h - 4)) return 1; } return 0; } void YMenu::focusItem(int itemNo) { if (itemNo != selectedItem) { selectedItem = itemNo; int dx, dy, dw, dh; desktop->getScreenGeometry(&dx, &dy, &dw, &dh, getXiScreen()); if (selectedItem != -1) { if (x() < dx || y() < dy || x() + width() > dx + dw || y() + height() > dy + dh) { int ix, iy, ih; int ny = y(); findItemPos(selectedItem, ix, iy, ih); if (y() + iy + ih > dy + dh) ny = dx + dh - ih - iy; else if (y() + iy < dy) ny = -iy; setPosition(x(), ny); } } } paintItems(); } void YMenu::activateSubMenu(int item, bool byMouse) { YMenu *sub = 0; if (item != -1 && getItem(item)->isEnabled()) sub = getItem(item)->getSubmenu(); if (sub != fPopup) { int repaint = 0; hideSubmenu(); repaint = 1; if (sub) { int xp, yp, ih; int l, t, r, b; getOffsets(l, t, r, b); findItemPos(item, xp, yp, ih); YRect rect(x(), y(), width(), height()); sub->setActionListener(getActionListener()); sub->popup(0, this, 0, x() + width() - r, y() + yp - t, width() - r - l, -1, getXiScreen(), YPopupWindow::pfCanFlipHorizontal | (popupFlags() & YPopupWindow::pfFlipHorizontal) | (byMouse ? (unsigned int)YPopupWindow::pfButtonDown : 0U)); fPopup = sub; repaint = 1; submenuItem = item; } paintItems(); } } int YMenu::findActiveItem(int cur, int direction) { PRECONDITION(direction == -1 || direction == 1); if (itemCount() == 0) return -1; if (cur == -1) { if (direction == 1) cur = itemCount() - 1; else cur = 0; } PRECONDITION(cur >= 0 && cur < itemCount()); int c = cur; do { c += direction; if (c < 0) c = itemCount() - 1; if (c >= itemCount()) c = 0; } while (c != cur && (!getItem(c)->getAction() && !getItem(c)->getSubmenu())); return c; } int YMenu::activateItem(int modifiers, bool byMouse) { PRECONDITION(selectedItem != -1); if (getItem(selectedItem)->isEnabled()) { if (getItem(selectedItem)->getAction() == 0 && getItem(selectedItem)->getSubmenu() != 0) { focusItem(selectedItem); activateSubMenu(selectedItem, byMouse); } else if (getItem(selectedItem)->getAction()) { finishPopup(getItem(selectedItem), getItem(selectedItem)->getAction(), modifiers); } } else { return -1; } return 0; } int YMenu::findHotItem(char k) { int count = 0; for (int i = 0; i < itemCount(); i++) { int hot = getItem(i)->getHotChar(); const YMenuItem *mitem = getItem(i); if (mitem->getAction() || mitem->getSubmenu()) { if (hot != -1 && ASCII::toUpper(hot) == k) count++; } } if (count == 0) return 0; int cur = selectedItem; if (cur == -1) cur = itemCount() - 1; for (int c = cur + 1; ; ++c) { if (c >= itemCount()) c = 0; const YMenuItem *mitem = getItem(c); if (mitem->getAction() || mitem->getSubmenu()) { int hot = mitem->getHotChar(); if (hot != -1 && ASCII::toUpper(hot) == k) { focusItem(c); break; } } if (c == cur) break; } return count; } bool YMenu::handleKey(const XKeyEvent &key) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); int m = KEY_MODMASK(key.state); if (key.type == KeyPress) { if ((m & ~ShiftMask) == 0) { if (k == XK_Escape) { cancelPopup(); } else if (k == XK_Left || k == XK_KP_Left) { if (prevPopup()) cancelPopup(); } else if (itemCount() > 0) { if (k == XK_Up || k == XK_KP_Up) focusItem(findActiveItem(selectedItem, -1)); else if (k == XK_Down || k == XK_KP_Down) focusItem(findActiveItem(selectedItem, 1)); else if (k == XK_Home || k == XK_KP_Home) focusItem(findActiveItem(itemCount() - 1, 1)); else if (k == XK_End || k == XK_KP_End) focusItem(findActiveItem(0, -1)); else if (k == XK_Right || k == XK_KP_Right) { focusItem(selectedItem); activateSubMenu(selectedItem, false); } else if (k == XK_Return || k == XK_KP_Enter) { if (selectedItem != -1 && (getItem(selectedItem)->getAction() != 0 || getItem(selectedItem)->getSubmenu() != 0)) { activateItem(key.state, false); return true; } } else if ((k < 256) && ((m & ~ShiftMask) == 0)) { if (findHotItem(ASCII::toUpper((char)k)) == 1) { if (!(m & ShiftMask)) activateItem(key.state, false); } return true; } } } } return YPopupWindow::handleKey(key); } void YMenu::handleButton(const XButtonEvent &button) { if (button.button == Button5) { if (button.type == ButtonPress) { if (button.x_root >= x() && button.x_root < (int)(x() + width())) { hideSubmenu(); setPosition(x(), clamp(y() - (int)(button.state & ShiftMask ? menuFont->height() * 5/2 : menuFont->height()), button.y_root - (int)height() + 1, button.y_root)); if (menuMouseTracking) trackMotion(clamp(button.x_root, x() + 2, x() + (int)width() - 3), button.y_root, button.state, true); } } } else if (button.button == Button4) { if (button.type == ButtonPress) { if (button.x_root >= x() && button.x_root < (int)(x() + width())) { hideSubmenu(); setPosition(x(), clamp(y() + (int)(button.state & ShiftMask ? menuFont->height() * 5/2 : menuFont->height()), button.y_root - (int)height() + 1, button.y_root)); if (menuMouseTracking) trackMotion(clamp(button.x_root, x() + 2, x() + (int)width() - 3), button.y_root, button.state, true); } } } else if (button.button) { int const selItem = findItem(button.x_root - x(), button.y_root - y()); trackMotion(button.x_root, button.y_root, button.state, false); bool const nocascade(!onCascadeButton(selItem, button.x_root - x(), button.y_root - y(), true) || (button.state & ControlMask)); if (button.type == ButtonPress) { fPopupActive = fPopup; } else if (button.type == ButtonRelease) { if (fPopupActive == fPopup && fPopup != 0 && nocascade) { hideSubmenu(); focusItem(selItem); paintItems(); return; } } focusItem(selItem); activatedX = button.x_root; activatedY = button.y_root; activateSubMenu(nocascade ? selectedItem : -1, true); if (button.type == ButtonRelease) { bool noAction = true; if (selectedItem != -1) { noAction = getItem(selectedItem)->getAction() == 0 && getItem(selectedItem)->getSubmenu() == 0; } if (selectedItem == -1 || noAction) { if (menuMouseTracking) focusItem(-1); else focusItem(findActiveItem(itemCount() - 1, 1)); } else { if ((getItem(selectedItem)->getAction() != 0 || getItem(selectedItem)->getSubmenu() != 0) && (getItem(selectedItem)->getAction() == 0 || getItem(selectedItem)->getSubmenu() == 0 || !nocascade) ) { activateItem(button.state, true); return; } } } } YPopupWindow::handleButton(button); } void YMenu::handleMotion(const XMotionEvent &motion) { if (motion.x_root >= x() && motion.y_root >= y() && motion.x_root < int (x() + width()) && motion.y_root < int (y() + height())) { bool isButton = (motion.state & (Button1Mask | Button2Mask | Button3Mask | Button4Mask | Button5Mask)) ? true : false; if (menuMouseTracking || isButton) trackMotion(motion.x_root, motion.y_root, motion.state, true); if (menuFont != null) { // ================ autoscrolling of large menus === int const fh(menuFont->height()); int dx, dy, dw, dh; desktop->getScreenGeometry(&dx, &dy, &dw, &dh, getXiScreen()); int const sx(motion.x_root < fh ? +fh : motion.x_root >= (dx + dw - fh - 1) ? -fh : 0), sy(motion.y_root < fh ? +fh : motion.y_root >= (dy + dh - fh - 1) ? -fh : 0); if (motion.y_root >= y() && motion.y_root < (y() + height()) && motion.x_root >= x() && motion.x_root < (x() + width())) { autoScroll(sx, sy, motion.x_root, motion.y_root, &motion); } } } YPopupWindow::handleMotion(motion); // ========== default implementation === } void YMenu::trackMotion(const int x_root, const int y_root, const unsigned state, bool trackSubmenu) { int selItem = findItem(x_root - x(), y_root - y()); if (fMenuTimer && fMenuTimer->getTimerListener() == this && (selItem != fTimerSubmenuItem)) /// ok? { fMenuTimer->stopTimer(); } if (selItem != -1) { focusItem(selItem); const bool submenu = state & ControlMask || !onCascadeButton(selItem, x_root - x(), y_root - y(), false); if (trackSubmenu) { bool canFast = true; if (fPopup) { int dx = 0; int dy = y_root - activatedY; int ty = fPopup->y() - activatedY; int by = fPopup->y() + fPopup->height() - activatedY; int px = 0; if (fPopup->x() < activatedX) px = activatedX - (fPopup->x() + fPopup->width()); else px = fPopup->x() - activatedX; if (fPopup->x() > x_root) dx = x_root - activatedX; else dx = activatedX - x_root; dy = dy * px; if (dy >= ty * dx && dy <= by * dx) canFast = false; } if (fMenuTimer == 0) fMenuTimer = new YTimer(); if (!fMenuTimer) return; fMenuTimer->setTimerListener(this); fTimerX = x_root; fTimerY = y_root; fTimerSubmenuItem = submenu ? selectedItem : -1; if (canFast) { fMenuTimer->setInterval(MenuActivateDelay); // if (selectedItem != -1 && // getItem(selectedItem)->getSubmenu() != 0 && // submenu) // { // activatedX = x_root; // activatedY = y_root; // } } else fMenuTimer->setInterval(SubmenuActivateDelay); fMenuTimer->setTimerListener(this); if (!fMenuTimer->isRunning()) fMenuTimer->startTimer(); } } } void YMenu::handleMotionOutside(bool top, const XMotionEvent &motion) { bool isButton = (motion.state & (Button1Mask | Button2Mask | Button3Mask | Button4Mask | Button5Mask)) ? true : false; if (!top || isButton || menuMouseTracking) focusItem(-1); } bool YMenu::handleTimer(YTimer *timer) { if (timer == fMenuTimer) { activatedX = fTimerX; activatedY = fTimerY; activateSubMenu(fTimerSubmenuItem, true); } return false; } bool YMenu::handleAutoScroll(const XMotionEvent & /*mouse*/) { int px = x(); int py = y(); int dx, dy, dw, dh; desktop->getScreenGeometry(&dx, &dy, &dw, &dh, getXiScreen()); if (fAutoScrollDeltaX != 0) { if (fAutoScrollDeltaX < 0) { if (px + width() > dx + dw) px += fAutoScrollDeltaX + 1; } else { if (px < dx) px += fAutoScrollDeltaX + 1; } } if (fAutoScrollDeltaY != 0) { if (fAutoScrollDeltaY < 0) { if (py + height() > dy + dh) py += fAutoScrollDeltaY + 1; } else { if (py < dy) py += fAutoScrollDeltaY + 1; } } if (px != x() || py != y()) { setPosition(px, py); { int mx = fAutoScrollMouseX - x(); int my = fAutoScrollMouseY - y(); int selItem = findItem(mx, my); focusItem(selItem); } } return true; } void YMenu::autoScroll(int deltaX, int deltaY, int mx, int my, const XMotionEvent *motion) { fAutoScrollDeltaX = deltaX; fAutoScrollDeltaY = deltaY; fAutoScrollMouseX = mx; fAutoScrollMouseY = my; beginAutoScroll(deltaX || deltaY, motion); } YMenuItem *YMenu::addItem(const ustring &name, int hotCharPos, const ustring ¶m, YAction *action) { return add(new YMenuItem(name, hotCharPos, param, action, 0)); } YMenuItem *YMenu::addItem(const ustring &name, int hotCharPos, YAction *action, YMenu *submenu) { return add(new YMenuItem(name, hotCharPos, null, action, submenu)); } YMenuItem *YMenu::addSubmenu(const ustring &name, int hotCharPos, YMenu *submenu) { return add(new YMenuItem(name, hotCharPos, null, 0, submenu)); } YMenuItem * YMenu::addSeparator() { return add(new YMenuItem()); } YMenuItem *YMenu::addLabel(const ustring &name) { return add(new YMenuItem(name)); } void YMenu::removeAll() { hideSubmenu(); fItems.clear(); paintedItem = selectedItem = -1; } YMenuItem * YMenu::add(YMenuItem *item) { if (item) fItems.append(item); return item; } YMenuItem * YMenu::addSorted(YMenuItem *item, bool duplicates) { for (int i = 0; i < itemCount(); i++) { if (item->getName() == null || fItems[i]->getName() == null) continue; int cmp = item->getName().compareTo(fItems[i]->getName()); if (cmp > 0) continue; else if (cmp != 0 || duplicates) { fItems.insert(i, item); return item; } else { return 0; } } if (item) fItems.append(item); return item; } YMenuItem *YMenu::findAction(const YAction *action) { for (int i = 0; i < itemCount(); i++) if (action == getItem(i)->getAction()) return getItem(i); return 0; } YMenuItem *YMenu::findSubmenu(const YMenu *sub) { for (int i = 0; i < itemCount(); i++) if (sub == getItem(i)->getSubmenu()) return getItem(i); return 0; } YMenuItem *YMenu::findName(const ustring &name, const int first) { if (name != null) for (int i = first; i < itemCount(); i++) { ustring iname = getItem(i)->getName(); if (iname != null && iname.equals(name)) return getItem(i); } return 0; } int YMenu::findFirstLetRef(char firstLet, const int first, const int ignCase) { if (ignCase) firstLet = ASCII::toUpper(firstLet); for (int i = first; i < itemCount(); i++) { YMenuItem *temp = getItem(i); ustring iLetterRef = temp->getName(); if (iLetterRef != null) { int iLetter = iLetterRef.charAt(0); if (ignCase) iLetter = ASCII::toUpper(iLetter); if (iLetter == firstLet) return i; } } return -1; } void YMenu::enableCommand(YAction *action) { for (int i = 0; i < itemCount(); i++) if (action == 0 || action == getItem(i)->getAction()) getItem(i)->setEnabled(true); } void YMenu::disableCommand(YAction *action) { for (int i = 0; i < itemCount(); i++) if (action == 0 || action == getItem(i)->getAction()) getItem(i)->setEnabled(false); } void YMenu::getOffsets(int &left, int &top, int &right, int &bottom) { if (wmLook == lookMetal || wmLook == lookFlat) { left = 1; right = 1; top = 2; bottom = 2; } else { left = 2; top = 2; right = 3; bottom = 3; } } void YMenu::getArea(int &x, int &y, int &w, int &h) { getOffsets(x, y, w, h); w = width() - 1 - x - w; h = height() - 1 - y - h; } int YMenu::findItemPos(int itemNo, int &x, int &y, int &ih) { x = -1; y = -1; ih = 0; if (itemNo < 0 || itemNo > itemCount()) return -1; int w, h; int top, bottom, pad; getArea(x, y, w, h); for (int i = 0; i < itemNo; i++) { y += getItem(i)->queryHeight(top, bottom, pad); } if (itemNo < itemCount()) ih = getItem(itemNo)->queryHeight(top, bottom, pad); return 0; } int YMenu::findItem(int mx, int my) { int x, y, w, h; getArea(x, y, w, h); for (int i = 0; i < itemCount(); i++) { int top, bottom, pad; h = fItems[i]->queryHeight(top, bottom, pad); if (my >= y && my < y + h && mx > 0 && mx < int(width()) - 1) { if (!fItems[i]->isSeparator()) return i; else return -1; } y += h; } return -1; } void YMenu::sizePopup(int hspace) { int width, height; int maxName(0); int maxParam(0); int maxIcon(16); int l, t, r, b; int padx(1); int left(1); getOffsets(l, t, r, b); int dx, dy, dw, dh; desktop->getScreenGeometry(&dx, &dy, &dw, &dh, getXiScreen()); width = l; height = t; for (int i = 0; i < itemCount(); i++) { const YMenuItem *mitem = getItem(i); int ih, top, bottom, pad; height+= (ih = mitem->queryHeight(top, bottom, pad)); if (pad > padx) padx = pad; if (top > left) left = top; maxIcon = max(maxIcon, mitem->getIconWidth()); maxName = max(maxName, mitem->getNameWidth()); maxParam = max(maxParam, mitem->getParamWidth() + (mitem->getSubmenu() ? 2 + ih : 0)); } maxName = min(maxName, MenuMaximalWidth ? MenuMaximalWidth : dw * 2/3); hspace -= 4 + r + maxIcon + l + left + padx + 2 + maxParam + 6 + 2; hspace = max(hspace, dw / 3); // !!! not correct, to be fixed if (maxName > hspace) maxName = hspace; namePos = l + left + padx + maxIcon + 2; paramPos = namePos + 2 + maxName + 6; width = paramPos + maxParam + 4 + r; height += b; #ifdef CONFIG_GRADIENTS if (menubackPixbuf != null && !(fGradient != null && fGradient->width() == width && fGradient->height() == height)) { fGradient = menubackPixbuf->scale(width, height); } #endif setSize(width, height); } void YMenu::repaintItem(int item) { int x, y, h; if (findItemPos(item, x, y, h) != -1) XClearArea(xapp->display(), handle(), 0, y, width(), h, True); } void YMenu::paintItems() { int highlightItem = selectedItem; if (highlightItem == -1) highlightItem = submenuItem; if (paintedItem != highlightItem) { int oldPaintedItem = paintedItem; paintedItem = highlightItem; if (oldPaintedItem != -1) repaintItem(oldPaintedItem); if (paintedItem != -1) repaintItem(paintedItem); } } void YMenu::drawBackground(Graphics &g, int x, int y, int w, int h) { #ifdef CONFIG_GRADIENTS if (fGradient != null) g.drawImage(fGradient, x, y, w, h, x, y); else #endif if (menubackPixmap != null) g.fillPixmap(menubackPixmap, x, y, w, h); else g.fillRect(x, y, w, h); } void YMenu::drawSeparator(Graphics &g, int x, int y, int w) { g.setColor(menuBg); #ifdef CONFIG_GRADIENTS if (menusepPixbuf != null) { drawBackground(g, x, y, w, 2 - menusepPixbuf->height()/2); g.drawGradient(menusepPixbuf, x, y + 2 - menusepPixbuf->height()/2, w, menusepPixbuf->height()); drawBackground(g, x, y + 2 + (menusepPixbuf->height()+1)/2, w, 2 - (menusepPixbuf->height()+1)/2); } else #endif if (menusepPixmap != null) { drawBackground(g, x, y, w, 2 - menusepPixmap->height()/2); g.fillPixmap(menusepPixmap, x, y + 2 - menusepPixmap->height()/2, w, menusepPixmap->height()); drawBackground(g, x, y + 2 + (menusepPixmap->height()+1)/2, w, 2 - (menusepPixmap->height()+1)/2); } else if (wmLook == lookMetal || wmLook == lookFlat) { drawBackground(g, x, y + 0, w, 1); if (activeMenuItemBg) g.setColor(activeMenuItemBg); g.drawLine(x, y + 1, w, y + 1);; g.setColor(menuBg->brighter()); g.drawLine(x, y + 2, w, y + 2);; g.drawLine(x, y, x, y + 2); } else { drawBackground(g, x, y + 0, w, 1); g.setColor(menuBg->darker()); g.drawLine(x, y + 1, w, y + 1); g.setColor(menuBg->brighter()); g.drawLine(x, y + 2, w, y + 2); g.setColor(menuBg); drawBackground(g, x, y + 3, w, 1); } } void YMenu::paintItem(Graphics &g, const int i, const int l, const int t, const int r, const int minY, const int maxY, bool draw) { int const fontHeight(menuFont->height() + 1); int const fontBaseLine(menuFont->ascent()); YMenuItem *mitem = getItem(i); ustring name = mitem->getName(); ustring param = mitem->getParam(); if (mitem->getName() == null && mitem->getSubmenu() == 0) { if (draw && t + 4 >= minY && t <= maxY) drawSeparator(g, 1, t, width() - 2); } else { bool const active(i == paintedItem && (mitem->getAction() || mitem->getSubmenu())); int eh, top, bottom, pad, ih; eh = getItem(i)->queryHeight(top, bottom, pad); ih = eh - top - bottom - pad - pad; if (t + eh >= minY && t <= maxY) { int const cascadePos(width() - r - 2 - ih - pad); g.setColor((active && activeMenuItemBg) ? activeMenuItemBg : menuBg); if (draw) { if (active) { #ifdef CONFIG_GRADIENTS if (menuselPixbuf != null) { g.drawGradient(menuselPixbuf, l, t, width() - r - l, eh); } else #endif if (menuselPixmap != null) { g.fillPixmap(menuselPixmap, l, t, width() - r - l, eh); } else if (activeMenuItemBg) { g.setColor(activeMenuItemBg); g.fillRect(l, t, width() - r - l, eh); } else { g.setColor(menuBg); drawBackground(g, l, t, width() - r - l, eh); } } else { g.setColor(menuBg); drawBackground(g, l, t, width() - r - l, eh); } if ((wmLook == lookMetal || wmLook == lookFlat) && i != selectedItem) { g.setColor(menuBg->brighter()); g.drawLine(1, t, 1, t + eh - 1); g.setColor(menuBg); } if (wmLook != lookWin95 && wmLook != lookWarp4 && active) { #ifdef OLDMOTIF bool raised(wmLook == lookMotif); #else bool raised(false); #endif g.setColor(menuBg); if (wmLook == lookGtk) { g.drawBorderW(l, t, width() - r - l - 1, eh - 1, true); } else if (wmLook == lookMetal || wmLook == lookFlat) { g.setColor((activeMenuItemBg ? activeMenuItemBg : menuBg)->darker()); g.drawLine(l, t, width() - r - l, t); g.setColor((activeMenuItemBg ? activeMenuItemBg : menuBg)->brighter()); g.drawLine(l, t + eh - 1, width() - r - l, t + eh - 1); } else g.draw3DRect(l, t, width() - r - l - 1, eh - 1, raised); if (wmLook == lookMotif) g.draw3DRect(l + 1, t + 1, width() - r - l - 3, eh - 3, raised); } YColor *fg(mitem->isEnabled() ? active ? activeMenuItemFg : menuItemFg : disabledMenuItemFg); g.setColor(fg); g.setFont(menuFont); int delta = (active) ? 1 : 0; if (wmLook == lookMotif || wmLook == lookGtk || wmLook == lookWarp4 || wmLook == lookWin95 || wmLook == lookMetal || wmLook == lookFlat) delta = 0; int baseLine = t + top + pad + (ih - fontHeight) / 2 + fontBaseLine + delta; if (mitem->isChecked()) { XPoint points[4]; points[0].x = l + 3 + (16 - 10) / 2; points[1].x = 5; points[2].x = 5; points[3].x = -5; points[0].y = t + top + pad + ih / 2; points[1].y = -5; points[2].y = 5; points[3].y = 5; g.fillPolygon(points, 4, Convex, CoordModePrevious); } else if (mitem->getIcon() != null) { #ifndef LITE mitem->getIcon()->draw(g, l + 1 + delta, t + delta + top + pad + (eh - top - pad * 2 - bottom - YIcon::smallSize()) / 2, YIcon::smallSize()); #endif } if (name != null) { int const maxWidth = (param != null ? paramPos - delta : mitem->getSubmenu() ? cascadePos : width()) - namePos; if (!mitem->isEnabled()) { g.setColor(disabledMenuItemSt); g.drawStringEllipsis(1 + delta + namePos, 1 + baseLine, name, maxWidth); if (mitem->getHotCharPos() != -1) g.drawCharUnderline(1 + delta + namePos, 1 + baseLine, name, mitem->getHotCharPos()); } g.setColor(fg); g.drawStringEllipsis(delta + namePos, baseLine, name, maxWidth); if (mitem->getHotCharPos() != -1) g.drawCharUnderline(delta + namePos, baseLine, name, mitem->getHotCharPos()); } if (param != null) { if (!mitem->isEnabled()) { g.setColor(disabledMenuItemSt); g.drawChars(param, paramPos + delta + 1, baseLine + 1); } g.setColor(fg); g.drawChars(param, paramPos + delta, baseLine); } else if (mitem->getSubmenu() != 0) { if (mitem->getAction()) { g.setColor(menuBg); if (0) { drawBackground(g, width() - r - 1 -ih - pad, t + top + pad, ih, ih); g.drawBorderW(width() - r - 1 - ih - pad, t + top + pad, ih - 1, ih - 1, active ? false : true); } else { g.setColor(menuBg->darker()); g.drawLine(cascadePos, t + top + pad, cascadePos, t + top + pad + ih); g.setColor(menuBg->brighter()); g.drawLine(cascadePos + 1, t + top + pad, cascadePos + 1, t + top + pad + ih); } delta = (delta && active ? 1 : 0); } if (wmLook == lookGtk || wmLook == lookMotif) { int asize = 9; int ax = delta + width() - r - 1 - asize * 3 / 2; int ay = delta + t + top + pad + (ih - asize) / 2; g.setColor(menuBg); g.drawArrow(Right, ax, ay, asize, active); } else { int asize = 9; int ax = width() - r - 1 - asize; int ay = delta + t + top + pad + (ih - asize) / 2; g.setColor(fg); g.drawArrow(Right, ax, ay, asize); } } } } } } void YMenu::paint(Graphics &g, const YRect &r1) { if (wmLook == lookMetal || wmLook == lookFlat) { g.setColor(activeMenuItemBg ? activeMenuItemBg : menuBg); g.drawLine(0, 0, width() - 1, 0); g.drawLine(0, 0, 0, height() - 1); g.drawLine(width() - 1, 0, width() - 1, height() - 1); g.drawLine(0, height() - 1, width() - 1, height() - 1); g.setColor(menuBg->brighter()); g.drawLine(1, 1, width() - 2, 1); g.setColor(menuBg); g.drawLine(1, height() - 2, width() - 2, height() - 2); } else { g.setColor(menuBg); g.drawBorderW(0, 0, width() - 1, height() - 1, true); g.drawLine(1, 1, width() - 3, 1); g.drawLine(1, 1, 1, height() - 3); g.drawLine(1, height() - 3, width() - 3, height() - 3); g.drawLine(width() - 3, 1, width() - 3, height() - 3); } int l, t, r, b; getOffsets(l, t, r, b); int x, y, w, h; getArea(x, y, w, h); int iy = y; int top, bottom, pad; for (int i = 0; i < itemCount(); i++) { int ih = getItem(i)->queryHeight(top, bottom, pad); if (iy < r1.y() + r1.height() && iy + ih > r1.y()) { paintItem(g, i, l, iy, r, r1.y(), r1.y() + r1.height(), 1); } iy += ih; } } void YMenu::hideSubmenu() { if (fPopup) fPopup->popdown(); fPopup = 0; fPopupActive = 0; submenuItem = -1; } icewm-1.3.7/src/aclock.h0000644000076600007660000000224311463274240014022 0ustar develdevel#ifndef __CLOCK_H #define __CLOCK_H #include "ywindow.h" #include "ytimer.h" #ifdef CONFIG_APPLET_CLOCK class YClock: public YWindow, public YTimerListener { public: YClock(YWindow *aParent = 0); virtual ~YClock(); void autoSize(); virtual void handleButton(const XButtonEvent &button); virtual void handleCrossing(const XCrossingEvent &crossing); virtual void handleClick(const XButtonEvent &up, int count); virtual void paint(Graphics &g, const YRect &r); void updateToolTip(); virtual bool handleTimer(YTimer *t); private: YTimer *clockTimer; bool clockUTC; bool toolTipUTC; int transparent; ref getPixmap(char ch); int calcWidth(const char *s, int count); bool hasTransparency(); static YColor *clockBg; static YColor *clockFg; static ref clockFont; }; #endif // !!! remove this #ifdef CONFIG_APPLET_CLOCK extern ref PixNum[10]; extern ref PixSpace; extern ref PixColon; extern ref PixSlash; extern ref PixA; extern ref PixP; extern ref PixM; extern ref PixDot; extern ref PixPercent; #endif #endif icewm-1.3.7/src/genpref.cc0000644000076600007660000000522011463274240014350 0ustar develdevel#include "config.h" #ifndef NO_CONFIGURE #define CFGDESC #include "ykey.h" #include "sysdep.h" void addWorkspace(const char *, const char *, bool) {} void setLook(const char *, const char *, bool) {} void addBgImage(const char *, const char *, bool) {} //#include "bindkey.h" //#include "default.h" #define CFGDEF #define GENPREF #include "yprefs.h" #include "bindkey.h" #include "default.h" #include "themable.h" #include "icewmbg_prefs.h" void show(cfoption *options) { for (unsigned int i = 0; options[i].type != cfoption::CF_NONE; i++) { if (options[i].description) printf("# %s\n", options[i].description); switch (options[i].type) { case cfoption::CF_BOOL: printf("# %s=%d # 0/1\n", options[i].name, (*options[i].v.bool_value) ? 1 : 0); break; case cfoption::CF_INT: printf("# %s=%d # [%d-%d]\n", options[i].name, *options[i].v.i.int_value, options[i].v.i.min, options[i].v.i.max); break; case cfoption::CF_STR: if (options[i].v.s.string_value) { printf("# %s=\"%s\"\n", options[i].name, (*options[i].v.s.string_value) ? (*options[i].v.s.string_value) : ""); } break; #ifndef NO_KEYBIND case cfoption::CF_KEY: { WMKey *key = options[i].v.k.key_value; printf("# %s=\"%s\"\n", options[i].name, key->name); } break; #endif case cfoption::CF_NONE: break; } if (options[i].description) puts(""); } } #endif int main() { #ifndef NO_CONFIGURE printf("# preferences(%s) - generated by genpref\n\n", VERSION); printf("# This file should be copied to /etc/icewm/ or $HOME/.icewm/ directory\n"); printf("# NOTE: All settings are commented out by default, be sure to\n" "# uncomment them if you change them!\n\n"); show(icewm_preferences); printf("# -----------------------------------------------------------\n" "# Themable preferences. Themes will override these.\n" "# To override the themes, place them in ~/.icewm/prefoverride\n" "# -----------------------------------------------------------\n\n"); show(icewm_themable_preferences); // special case, for now puts("WorkspaceNames=\" 1 \", \" 2 \", \" 3 \", \" 4 \""); puts("\n#\n# icewmbg preferences\n#"); puts("# IMPORTANT: You MUST run icewmbg (probably before icewm)\n" "# to set the background!\n#\n"); show(icewmbg_prefs); #endif } icewm-1.3.7/src/MwmUtil.h0000644000076600007660000000707411463274240014173 0ustar develdevel/** * * Copyright (C) 1995 Free Software Foundation, Inc. * * This file is part of the GNU LessTif Library. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * **/ #ifndef MWMUTIL_H_INCLUDED #define MWMUTIL_H_INCLUDED //#include #ifdef __cplusplus extern "C" { #endif typedef struct { unsigned long flags; unsigned long functions; unsigned long decorations; long input_mode; unsigned long status; } MwmHints; #define MWM_HINTS_FUNCTIONS (1L << 0) #define MWM_HINTS_DECORATIONS (1L << 1) #define MWM_HINTS_INPUT_MODE (1L << 2) #define MWM_HINTS_STATUS (1L << 3) #define MWM_FUNC_ALL (1L << 0) #define MWM_FUNC_RESIZE (1L << 1) #define MWM_FUNC_MOVE (1L << 2) #define MWM_FUNC_MINIMIZE (1L << 3) #define MWM_FUNC_MAXIMIZE (1L << 4) #define MWM_FUNC_CLOSE (1L << 5) #define MWM_DECOR_ALL (1L << 0) #define MWM_DECOR_BORDER (1L << 1) #define MWM_DECOR_RESIZEH (1L << 2) #define MWM_DECOR_TITLE (1L << 3) #define MWM_DECOR_MENU (1L << 4) #define MWM_DECOR_MINIMIZE (1L << 5) #define MWM_DECOR_MAXIMIZE (1L << 6) #define MWM_INPUT_MODELESS 0 #define MWM_INPUT_PRIMARY_APPLICATION_MODAL 1 #define MWM_INPUT_SYSTEM_MODAL 2 #define MWM_INPUT_FULL_APPLICATION_MODAL 3 #define MWM_INPUT_APPLICATION_MODAL MWM_INPUT_PRIMARY_APPLICATION_MODAL #define MWM_TEAROFF_WINDOW (1L<<0) /* * atoms */ #define _XA_MOTIF_BINDINGS "_MOTIF_BINDINGS" #define _XA_MOTIF_WM_HINTS "_MOTIF_WM_HINTS" #define _XA_MOTIF_WM_MESSAGES "_MOTIF_WM_MESSAGES" #define _XA_MOTIF_WM_OFFSET "_MOTIF_WM_OFFSET" #define _XA_MOTIF_WM_MENU "_MOTIF_WM_MENU" #define _XA_MOTIF_WM_INFO "_MOTIF_WM_INFO" #define _XA_MWM_HINTS _XA_MOTIF_WM_HINTS #define _XA_MWM_MESSAGES _XA_MOTIF_WM_MESSAGES #define _XA_MWM_MENU _XA_MOTIF_WM_MENU #define _XA_MWM_INFO _XA_MOTIF_WM_INFO #define PROP_MOTIF_WM_HINTS_ELEMENTS 5 #define PROP_MWM_HINTS_ELEMENTS PROP_MOTIF_WM_HINTS_ELEMENTS #if 0 typedef unsigned long xCARD32; typedef long xINT32; /* * _MWM_INFO property */ typedef struct { long flags; Window wm_window; } MotifWmInfo; typedef MotifWmInfo MwmInfo; #define MWM_INFO_STARTUP_STANDARD (1L<<0) #define MWM_INFO_STARTUP_CUSTOM (1L<<1) /* * _MWM_HINTS property */ typedef struct { xCARD32 flags; xCARD32 functions; xCARD32 decorations; xINT32 inputMode; xCARD32 status; } PropMotifWmHints; typedef PropMotifWmHints PropMwmHints; /* * _MWM_INFO property, slight return */ typedef struct { xCARD32 flags; xCARD32 wmWindow; } PropMotifWmInfo; typedef PropMotifWmInfo PropMwmInfo; #define PROP_MOTIF_WM_INFO_ELEMENTS 2 #define PROP_MWM_INFO_ELEMENTS PROP_MOTIF_WM_INFO_ELEMENTS #endif #ifdef __cplusplus } #endif #endif /* MWMUTIL_H_INCLUDED */ icewm-1.3.7/src/yimage_xpm.cc0000664000076600007660000000742711463274240015076 0ustar develdevel#include "config.h" #ifdef CONFIG_XPM #include "yimage.h" #include "yxapp.h" #include class YImageXpm: public YImage { public: YImageXpm(int width, int height, XImage *ximage, XImage *xmask): YImage(width, height) { fXImage = ximage; fXMask = xmask; } virtual ~YImageXpm() { if (fXImage != 0) { XDestroyImage(fXImage); fXImage = 0; } if (fXMask != 0) { XDestroyImage(fXMask); fXMask = 0; } } virtual ref renderToPixmap(); virtual ref scale(int width, int height); virtual void draw(Graphics &g, int x, int y); virtual bool valid() const { return fXImage != 0; } private: XImage *fXImage; XImage *fXMask; }; ref YImage::load(upath filename) { ref image; XImage *ximage = 0; XImage *xmask = 0; XpmAttributes xpmAttributes; xpmAttributes.colormap = xapp->colormap(); xpmAttributes.closeness = 65535; xpmAttributes.valuemask = XpmSize|XpmReturnPixels|XpmColormap|XpmCloseness; int rc = XpmReadFileToImage(xapp->display(), (char *)cstring(filename.path()).c_str(), &ximage, &xmask, &xpmAttributes); if (rc == XpmSuccess) { image.init(new YImageXpm(xpmAttributes.width, xpmAttributes.height, ximage, xmask)); XpmFreeAttributes(&xpmAttributes); } return image; } ref YImageXpm::scale(int w, int h) { ref image; image.init(this); return image; } ref YImage::createFromPixmap(ref pixmap) { return createFromPixmapAndMask(pixmap->pixmap(), pixmap->mask(), pixmap->width(), pixmap->height()); } ref YImage::createFromPixmapAndMask(Pixmap pixmap, Pixmap mask, int width, int height) { ref image; XImage *ximage = 0; XImage *xmask = 0; if (pixmap != None) { ximage = XGetImage(xapp->display(), pixmap, 0, 0, width, height, AllPlanes, ZPixmap); } if (mask != None) { xmask = XGetImage(xapp->display(), mask, 0, 0, width, height, AllPlanes, ZPixmap); } if (ximage != 0) { image.init(new YImageXpm(width, height, ximage, xmask)); } return image; } ref YImage::createFromPixmapAndMaskScaled(Pixmap pix, Pixmap mask, int width, int height, int nw, int nh) { ref image = createFromPixmapAndMask(pix, mask, width, height); if (image != null) image = image->scale(nw, nh); return image; } ref YImageXpm::renderToPixmap() { ref pixmap = YPixmap::create(width(), height(), true); GC gc1 = XCreateGC(xapp->display(), pixmap->pixmap(), 0, 0); if (fXImage != 0) XPutImage(xapp->display(), pixmap->pixmap(), gc1, fXImage, 0, 0, 0, 0, width(), height()); XFreeGC(xapp->display(), gc1); GC gc2 = XCreateGC(xapp->display(), pixmap->mask(), 0, 0); if (fXMask != 0) XPutImage(xapp->display(), pixmap->mask(), gc2, fXMask, 0, 0, 0, 0, width(), height()); XFreeGC(xapp->display(), gc2); return pixmap; } ref YImage::createPixmap(Pixmap pixmap, Pixmap mask, int w, int h) { ref n; n.init(new YPixmap(pixmap, mask, w, h)); return n; } void YImageXpm::draw(Graphics &g, int x, int y) { } void image_init() { } #endif icewm-1.3.7/src/wmoption.h0000644000076600007660000000241311463274240014441 0ustar develdevel#ifndef __WMOPTION_H #define __WMOPTION_H #ifndef NO_WINDOW_OPTIONS #include #include "yarray.h" #include "mstring.h" #include "upath.h" struct WindowOption { WindowOption(ustring n_class_instance); ~WindowOption(); ustring w_class_instance; char *icon; unsigned long functions, function_mask; unsigned long decors, decor_mask; unsigned long options, option_mask; long workspace; long layer; #ifdef CONFIG_TRAY long tray; #endif int gflags; int gx, gy; unsigned gw, gh; }; class WindowOptions { public: WindowOption *getWindowOption(ustring a_class_instance, bool create, bool remove = false); void setWinOption(ustring n_class_instance, const char *opt, const char *arg); void mergeWindowOption(WindowOption &cm, ustring a_class_instance, bool remove); private: YObjectArray fWinOptions; static void combineOptions(WindowOption &cm, WindowOption &n); }; extern WindowOptions *defOptions; extern WindowOptions *hintOptions; extern upath winOptFile; //void setWinOptions(WindowOptions *optionSet, ref doc); void loadWinOptions(upath optFile); #endif #endif icewm-1.3.7/src/yicon.h0000644000076600007660000000212311463274240013704 0ustar develdevel#ifndef YICON_H #define YICON_H #include "ypaint.h" #include "ypixbuf.h" #include "upath.h" #include "ref.h" class YIcon: public refcounted { public: YIcon(upath fileName); YIcon(ref small, ref large, ref huge); ~YIcon(); ref huge(); ref large(); ref small(); ref getScaledIcon(int size); upath iconName() const { return fPath; } static ref getIcon(const char *name); static void freeIcons(); bool isCached() { return fCached; } void setCached(bool cached) { fCached = cached; } static int smallSize(); static int largeSize(); static int hugeSize(); void draw(Graphics &g, int x, int y, int size); private: ref fSmall; ref fLarge; ref fHuge; bool loadedS; bool loadedL; bool loadedH; upath fPath; bool fCached; upath findIcon(upath dir, upath base, unsigned size); upath findIcon(int size); void removeFromCache(); static int cacheFind(upath name); ref loadIcon(int size); }; #endif icewm-1.3.7/src/prefs.h0000664000076600007660000000012711463274240013706 0ustar develdevel#ifndef __PREFS_H #define __PREFS_H #include "default.h" #include "bindkey.h" #endif icewm-1.3.7/src/themes.cc0000644000076600007660000001531111463274240014211 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek */ #include "config.h" #ifndef NO_CONFIGURE_MENUS #include "themes.h" #include "yapp.h" #include "ymenu.h" #include "wmmgr.h" #include "wmprog.h" #include "ymenuitem.h" #include "sysdep.h" #include "base.h" #include "prefs.h" #include "yprefs.h" #include #include "wmapp.h" #include "ascii.h" #include "wmconfig.h" #include "intl.h" extern char *configArg; void setDefaultTheme(const char *theme) { const char *buf = cstrJoin("Theme=\"", theme, "\"\n", NULL); setDefault("theme", buf); delete [] buf; } DTheme::DTheme(const ustring &label, const ustring &theme): DObject(label, null), fTheme(theme) { } DTheme::~DTheme() { } void DTheme::open() { if (fTheme == null) return; cstring cTheme(fTheme); setDefaultTheme(cTheme.c_str()); const char *bg[] = { ICEWMBGEXE, "-r", 0 }; int pid = app->runProgram(bg[0], bg); app->waitProgram(pid); YStringArray args(4); wmapp->restartClient(0, 0); } ThemesMenu::ThemesMenu(YWindow *parent): ObjectMenu(parent) { } void ThemesMenu::updatePopup() { refresh(); } void ThemesMenu::refresh() { removeAll(); char *path; if (nestedThemeMenuMinNumber) themeCount = countThemes(cstrJoin(YApplication::getLibDir(), "/themes/", NULL)) + countThemes(cstrJoin(YApplication::getConfigDir(), "/themes/", NULL)) + countThemes(cstrJoin(YApplication::getPrivConfDir(), "/themes/", NULL)); path = cstrJoin(YApplication::getLibDir(), "/themes/", NULL); findThemes(path, this); delete[] path; path = cstrJoin(YApplication::getConfigDir(), "/themes/", NULL); findThemes(path, this); delete[] path; path = cstrJoin(YApplication::getPrivConfDir(), "/themes/", NULL); findThemes(path, this); delete[] path; addSeparator(); add(newThemeItem(_("Default"), CONFIG_DEFAULT_THEME, CONFIG_DEFAULT_THEME)); } int ThemesMenu::countThemes(const char *path) { DIR *dir(opendir(path)); int ret=0; if (dir != NULL) { struct dirent *de; while ((de = readdir(dir)) != NULL) { // assume that OS caches this. Otherwise, construct a new // object to just store the string and an YArrayList of them, // read the entries once and work with List contents later if(de->d_name[0] == '.') continue; ret++; } closedir(dir); } // this just assumes that there is no other trash return ret-1; } ThemesMenu::~ThemesMenu() { } YMenuItem * ThemesMenu::newThemeItem(char const *label, char const */*theme*/, char const *relThemeName) { DTheme *dtheme = new DTheme(label, relThemeName); if (dtheme) { YMenuItem *item(new DObjectMenuItem(dtheme)); if (item) { item->setChecked(themeName && 0 == strcmp(themeName, relThemeName)); return item; } } return NULL; } void ThemesMenu::findThemes(const char *path, YMenu *container) { char const *const tname("/default.theme"); int dplen(strlen(path)); char *npath = NULL, *dpath = NULL; if (dplen == 0 || path[dplen - 1] != '/') { npath = cstrJoin(path, "/", NULL); dplen++; } else { dpath = newstr(path); } bool bNesting=nestedThemeMenuMinNumber && themeCount>nestedThemeMenuMinNumber; DIR *dir(opendir(path)); if (dir != NULL) { struct dirent *de; while ((de = readdir(dir)) != NULL) { if(de->d_name[0] == '.') continue; YMenuItem *im(NULL); npath = cstrJoin(dpath, de->d_name, tname, NULL); if (npath && access(npath, R_OK) == 0) { char *relThemeName = cstrJoin(de->d_name, tname, NULL); im = newThemeItem(de->d_name, npath, relThemeName); if (im) { if (bNesting) { char fLetter = ASCII::toUpper(de->d_name[0]); int targetItem = container->findFirstLetRef(fLetter, 0, 1); if(targetItem<0) // no submenu for us yet, create one { char *smname = strdup("...."); smname[0] = fLetter; YMenu *smenu = new YMenu(); YMenuItem *smItem = new YMenuItem(smname, 0, null, NULL, smenu); if(smItem && smenu) container->addSorted(smItem, false); targetItem = container->findFirstLetRef(fLetter, 0, 1); if(targetItem<0) { warn("Failed to add submenu"); return; } } container->getItem(targetItem)->getSubmenu()->addSorted(im, false); } else //the default method without Extra SubMenues container->addSorted(im, false); } delete [] relThemeName; } delete [] npath; char *subdir(cstrJoin(dpath, de->d_name, NULL)); if (im && subdir) findThemeAlternatives(subdir, de->d_name, im); delete [] subdir; } closedir(dir); } delete [] dpath; } void ThemesMenu::findThemeAlternatives(const char *path, const char *relName, YMenuItem *item) { DIR *dir(opendir(path)); if (dir != NULL) { struct dirent *de; while ((de = readdir(dir)) != NULL) { char const *ext(strstr(de->d_name, ".theme")); if (ext != NULL && ext[sizeof("theme")] == '\0' && strcmp(de->d_name, "default.theme")) { char *npath(cstrJoin(path, "/", de->d_name, NULL)); if (npath && access(npath, R_OK) == 0) { YMenu *sub(item->getSubmenu()); if (sub == NULL) item->setSubmenu(sub = new YMenu()); if (sub) { char *tname(newstr(de->d_name, ext - de->d_name)); char *relThemeName = cstrJoin(relName, "/", de->d_name, NULL); sub->add(newThemeItem(tname, npath, relThemeName)); delete[] tname; delete[] relThemeName; } } delete[] npath; } } closedir(dir); } } #endif icewm-1.3.7/src/yconfig.cc0000644000076600007660000002376211463274240014373 0ustar develdevel#include "config.h" #include "upath.h" #include "ykey.h" #include "yconfig.h" #include "ypaint.h" #include "yprefs.h" #include "ypaths.h" #include "sysdep.h" #include "binascii.h" #include "yapp.h" #include "intl.h" upath findPath(ustring path, int mode, upath name, bool /*path_relative*/) { #ifdef __EMX__ if (mode & X_OK) name = name.addExtension(".exe"); #endif if (name.isAbsolute()) { // check for root in XFreeOS/2 if (name.fileExists()) return name; } else { if (path == null) return null; ustring s(null), r(null); for (s = path; s.splitall(PATHSEP, &s, &r); s = r) { upath prog = upath(s).relative(name); if (prog.access(mode) == 0) return prog; #if 0 if (!(mode & X_OK) && !prog.path().endsWith(".xpm") && !prog.path().endsWith(".png")) { upath prog_png = prog.addExtension(".png"); if (prog_png.access(mode) == 0) return prog_png; } #endif } } return null; } #if !defined(NO_CONFIGURE) || !defined(NO_CONFIGURE_MENUS) static bool appendStr(char **dest, int &bufLen, int &len, char c) { if (*dest && len + 1 < bufLen) { (*dest)[len++] = c; (*dest)[len] = 0; return true; } if (bufLen == 0) bufLen = 8; bufLen *= 2; char *d = new char[bufLen]; if (d == 0) return false; if (len > 0) memcpy(d, *dest, len); if (*dest) delete[] *dest; *dest = d; (*dest)[len++] = c; (*dest)[len] = 0; return true; } char *YConfig::getArgument(char **dest, char *p, bool comma) { *dest = new char[1]; if (*dest == 0) return 0; **dest = 0; int bufLen = 1; int len = 0; int sq_open = 0; int dq_open = 0; while (*p && (*p == ' ' || *p == '\t')) p++; len = 0; while (*p && (sq_open || dq_open || (*p != ' ' && *p != '\t' && *p != '\n' && (!comma || *p != ',')))) { char c = *p++; // get current char and push the pointer to the next if (sq_open) { // single quotes open, pass everything but ' if (c == '\'') sq_open = !sq_open; else appendStr(dest, bufLen, len, c); } else if (dq_open) { // double quotes open, pass everything but ". Extra care for \", unescape once. if (c == '"') dq_open = !dq_open; else if (c == '\\' && *p == '"') { appendStr(dest, bufLen, len, '"'); p++; } else appendStr(dest, bufLen, len, c); } else { if (c == '"') dq_open = !dq_open; else if (c == '\'') sq_open = !sq_open; else if (c == '\\' && *p != '\n' && *p != '\r') { // add any char protected by backslash and move forward // exception: line ending (unwanted, may do bad things). OTOH, if // the two last checks are disable, it will cause a side effect // (multiline argument parsing with \n after \). appendStr(dest, bufLen, len, *p++); } else appendStr(dest, bufLen, len, c); } } return p; } #endif #ifndef NO_CONFIGURE #warning "P1 - parse keys later, not when loading" bool parseKey(const char *arg, KeySym *key, unsigned int *mod) { const char *orig_arg = arg; *mod = 0; for (;;) { if (strncmp("Alt+", arg, 4) == 0) { *mod |= kfAlt; arg += 4; } else if (strncmp("Ctrl+", arg, 5) == 0) { *mod |= kfCtrl; arg += 5; } else if (strncmp("Shift+", arg, 6) == 0) { *mod |= kfShift; arg += 6; } else if (strncmp("Meta+", arg, 5) == 0) { *mod |= kfMeta; arg += 5; } else if (strncmp("Super+", arg, 6) == 0) { *mod |= kfSuper; arg += 6; } else if (strncmp("Hyper+", arg, 6) == 0) { *mod |= kfHyper; arg += 6; } else if (strncmp("AltGr+", arg, 6) == 0) { *mod |= kfAltGr; arg += 6; } else break; } if (modSuperIsCtrlAlt && (*mod & kfSuper)) { *mod &= ~kfSuper; *mod |= kfAlt | kfCtrl; } if (strcmp(arg, "") == 0) { *key = NoSymbol; return true; } else if (strcmp(arg, "Esc") == 0) *key = XK_Escape; else if (strcmp(arg, "Enter") == 0) *key = XK_Return; else if (strcmp(arg, "Space") == 0) *key = ' '; else if (strcmp(arg, "BackSp") == 0) *key = XK_BackSpace; else if (strcmp(arg, "Del") == 0) *key = XK_Delete; else if (strlen(arg) == 1 && arg[0] >= 'A' && arg[0] <= 'Z') { char s[2]; s[0] = (char)(arg[0] - 'A' + 'a'); s[1] = 0; *key = XStringToKeysym(s); } else { *key = XStringToKeysym(arg); } if (*key == NoSymbol) { msg(_("Unknown key name %s in %s"), arg, orig_arg); return false; } return true; } char *setOption(cfoption *options, char *name, char *arg, bool append, char *rest) { unsigned int a; MSG(("SET %s := %s ;", name, arg)); for (a = 0; options[a].type != cfoption::CF_NONE; a++) { if (strcmp(name, options[a].name) != 0) continue; if (options[a].notify) { options[a].notify(name, arg, append); return rest; } switch (options[a].type) { case cfoption::CF_BOOL: if (options[a].v.bool_value) { if ((arg[0] == '1' || arg[0] == '0') && arg[1] == 0) { *(options[a].v.bool_value) = (arg[0] == '1') ? true : false; } else { msg(_("Bad argument: %s for %s"), arg, name); return rest; } return rest; } break; case cfoption::CF_INT: if (options[a].v.i.int_value) { int const v(atoi(arg)); if (v >= options[a].v.i.min && v <= options[a].v.i.max) *(options[a].v.i.int_value) = v; else { msg(_("Bad argument: %s for %s"), arg, name); return rest; } return rest; } break; case cfoption::CF_STR: if (options[a].v.s.string_value) { if (!options[a].v.s.initial) delete[] (char *)*options[a].v.s.string_value; *options[a].v.s.string_value = newstr(arg); options[a].v.s.initial = false; return rest; } break; #ifndef NO_KEYBIND case cfoption::CF_KEY: if (options[a].v.k.key_value) { WMKey *wk = options[a].v.k.key_value; if (parseKey(arg, &wk->key, &wk->mod)) { if (!wk->initial) delete (char *)wk->name; wk->name = newstr(arg); wk->initial = false; } return rest; } break; #endif case cfoption::CF_NONE: break; } } #if 0 msg(_("Bad option: %s"), name); #endif ///!!! check return rest; } // parse option name and argument // name is string without spaces up to = // option is a " quoted string or characters up to next space char *parseOption(cfoption *options, char *str) { char name[64]; char *argument = 0; char *p = str; unsigned int len = 0; bool append = false; while (*p && *p != '=' && *p != ' ' && *p != '\t' && len < sizeof(name) - 1) p++, len++; strncpy(name, str, len); name[len] = 0; while (*p && *p != '=') p++; if (*p != '=') return 0; p++; do { p = YConfig::getArgument(&argument, p, true); if (p == 0) break; p = setOption(options, name, argument, append, p); delete[] argument; append = true; if (p == 0) return 0; while (*p && (*p == ' ' || *p == '\t')) p++; if (*p != ',') break; p++; } while (1); return p; } void parseConfiguration(cfoption *options, char *data) { char *p = data; while (p && *p) { while (*p == ' ' || *p == '\t' || *p == '\n' || (*p == '\\' && p[1] == '\n')) p++; if (*p != '#') p = parseOption(options, p); else { while (*p && *p != '\n') { if (*p == '\\' && p[1] != 0) p++; p++; } } } } void YConfig::loadConfigFile(cfoption *options, upath fileName) { cstring cs(fileName.path()); int fd = open(cs.c_str(), O_RDONLY | O_TEXT); if (fd == -1) return ; struct stat sb; if (fstat(fd, &sb) == -1) return ; int len = sb.st_size; char *buf = new char[len + 1]; if (buf == 0) return ; if ((len = read(fd, buf, len)) < 0) { delete[] buf; return; } buf[len] = 0; close(fd); parseConfiguration(options, buf); delete[] buf; } void YConfig::freeConfig(cfoption *options) { for (unsigned int a = 0; options[a].type != cfoption::CF_NONE; a++) { if (!options[a].v.s.initial) { if (options[a].v.s.string_value) { delete[] (char *)*options[a].v.s.string_value; *options[a].v.s.string_value = 0; } options[a].v.s.initial = false; } } } bool YConfig::findLoadConfigFile(struct cfoption *options, upath name) { upath configFile = YApplication::findConfigFile(name); bool rc = false; if (configFile != null) { YConfig::loadConfigFile(options, configFile); rc = true; } return rc; } #endif icewm-1.3.7/src/wmminiicon.cc0000644000076600007660000001162511463274240015101 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek */ #include "config.h" #ifndef LITE #include "ylib.h" #include "wmminiicon.h" #include "wmframe.h" #include "yxapp.h" #include "yrect.h" #include "yicon.h" #include "prefs.h" #include static ref minimizedWindowFont; static YColor *normalMinimizedWindowBg = 0; static YColor *normalMinimizedWindowFg = 0; static YColor *activeMinimizedWindowBg = 0; static YColor *activeMinimizedWindowFg = 0; MiniIcon::MiniIcon(YWindow *aParent, YFrameWindow *frame): YWindow(aParent) { if (minimizedWindowFont == null) minimizedWindowFont = YFont::getFont(XFA(minimizedWindowFontName)); if (normalMinimizedWindowBg == 0) normalMinimizedWindowBg = new YColor(clrNormalMinimizedWindow); if (normalMinimizedWindowFg == 0) normalMinimizedWindowFg = new YColor(clrNormalMinimizedWindowText); if (activeMinimizedWindowBg == 0) activeMinimizedWindowBg = new YColor(clrActiveMinimizedWindow); if (activeMinimizedWindowFg == 0) activeMinimizedWindowFg = new YColor(clrActiveMinimizedWindowText); fFrame = frame; selected = 0; setGeometry(YRect(0, 0, 120, 24)); } MiniIcon::~MiniIcon() { } void MiniIcon::paint(Graphics &g, const YRect &/*r*/) { bool focused = getFrame()->focused(); YColor *bg = focused ? activeMinimizedWindowBg : normalMinimizedWindowBg;; YColor *fg = focused ? activeMinimizedWindowFg : normalMinimizedWindowFg;; int tx = 2; int x, y, w, h; g.setColor(bg); g.draw3DRect(0, 0, width() - 1, height() - 1, true); g.fillRect(1, 1, width() - 2, height() - 2); x = tx; y = 2; w = width() - 6; h = height() - 6; if (selected == 2) { g.setColor(bg->darker()); g.draw3DRect(x, y, w, h, false); g.fillRect(x + 1, y + 1, w - 1, h - 1); } else { g.setColor(bg->brighter()); g.drawRect(x + 1, y + 1, w, h); g.setColor(bg->darker()); g.drawRect(x, y, w, h); g.setColor(bg); g.fillRect(x + 2, y + 2, w - 2, h - 2); } if (getFrame()->clientIcon() != null) { //int y = (height() - 3 - frame()->clientIcon()->small()->height()) / 2; getFrame()->clientIcon()->draw(g, 2 + tx + 1, 4, YIcon::smallSize()); } ustring str = getFrame()->client()->iconTitle(); if (str == null || str.length() == 0) str = getFrame()->client()->windowTitle(); if (str != null) { g.setColor(fg); ref font = minimizedWindowFont; if (font != null) { g.setFont(font); int ty = (height() - 1 + font->height()) / 2 - font->descent(); if (ty < 2) ty = 2; g.drawStringEllipsis(tx + 4 + YIcon::smallSize() + 2, ty, str, w - 4 - YIcon::smallSize() - 4); } } } void MiniIcon::handleButton(const XButtonEvent &button) { if (button.type == ButtonPress) { if (!(button.state & ControlMask) && (buttonRaiseMask & (1 << (button.button - 1)))) getFrame()->wmRaise(); manager->setFocus(getFrame(), false); if (button.button == 1) { selected = 2; repaint(); } } else if (button.type == ButtonRelease) { if (button.button == 1) { if (selected == 2) { if (button.state & xapp->AltMask) { getFrame()->wmLower(); } else { if (!(button.state & ControlMask)) getFrame()->wmRaise(); getFrame()->activate(); } } selected = 0; repaint(); } } YWindow::handleButton(button); } void MiniIcon::handleClick(const XButtonEvent &up, int /*count*/) { if (up.button == 3) { getFrame()->popupSystemMenu(this, up.x_root, up.y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu); } } void MiniIcon::handleCrossing(const XCrossingEvent &crossing) { if (selected > 0) { if (crossing.type == EnterNotify) { selected = 2; repaint(); } else if (crossing.type == LeaveNotify) { selected = 1; repaint(); } } } void MiniIcon::handleDrag(const XButtonEvent &down, const XMotionEvent &motion) { if (down.button != 1) { int x = motion.x_root - down.x; int y = motion.y_root - down.y; //x += down.x; //y += down.y; int mx, my, Mx, My; manager->getWorkArea(getFrame(), &mx, &my, &Mx, &My); if (x + int(width()) >= Mx) x = Mx - width(); if (y + int(height()) >= My) y = My - height(); if (x < mx) x = mx; if (y < my) y = my; getFrame()->setCurrentGeometryOuter(YRect(x, y, width(), height())); } } #endif icewm-1.3.7/src/ypipereader.h0000644000076600007660000000135711463274240015104 0ustar develdevel#ifndef __YPOPEN_H__ #define __YPOPEN_H__ #include "ypoll.h" class YPipeListener { public: virtual void pipeError(int error) = 0; virtual void pipeDataRead(char *buf, int len) = 0; protected: virtual ~YPipeListener() {}; }; class YPipeReader: public YPollBase { public: YPipeReader(); virtual ~YPipeReader(); int spawnvp(const char *prog, char **args); int read(char *buf, int len); void setListener(YPipeListener *l) { fListener = l; } private: friend class YApplication; YPipeListener *fListener; char *rdbuf; int rdbuflen; bool reading; bool registered; virtual void notifyRead(); virtual void notifyWrite(); virtual bool forRead(); virtual bool forWrite(); }; #endif icewm-1.3.7/src/icewmbg.cc0000644000076600007660000004275111463274240014351 0ustar develdevel#include "config.h" #include "yfull.h" #include "yxapp.h" #include "yarray.h" #if 1 #include #include "intl.h" #include #include #include #endif #include "yconfig.h" #include "yprefs.h" #define CFGDEF #include "icewmbg_prefs.h" char const *ApplicationName = NULL; class DesktopBackgroundManager: public YXApplication { public: DesktopBackgroundManager(int *argc, char ***argv); virtual void handleSignal(int sig); void addImage(const char *imageFileName); void update(); void sendQuit(); void sendRestart(); private: long getWorkspace(); void changeBackground(long workspace); ref loadImage(const char *imageFileName); bool filterEvent(const XEvent &xev); private: ref defaultBackground; ref currentBackground; YArray > backgroundPixmaps; long activeWorkspace; Atom _XA_XROOTPMAP_ID; Atom _XA_XROOTCOLOR_PIXEL; Atom _XA_NET_CURRENT_DESKTOP; Atom _XA_ICEWMBG_QUIT; Atom _XA_ICEWMBG_RESTART; }; DesktopBackgroundManager::DesktopBackgroundManager(int *argc, char ***argv): YXApplication(argc, argv), defaultBackground(0), currentBackground(0), activeWorkspace(-1), _XA_XROOTPMAP_ID(None), _XA_XROOTCOLOR_PIXEL(None) { desktop->setStyle(YWindow::wsDesktopAware); catchSignal(SIGTERM); catchSignal(SIGINT); catchSignal(SIGQUIT); _XA_NET_CURRENT_DESKTOP = XInternAtom(xapp->display(), "_NET_CURRENT_DESKTOP", False); _XA_ICEWMBG_QUIT = XInternAtom(xapp->display(), "_ICEWMBG_QUIT", False); _XA_ICEWMBG_RESTART = XInternAtom(xapp->display(), "_ICEWMBG_RESTART", False); /// TODO #warning "I don't see a reason for this to be conditional...? maybe only as an #ifdef" /// TODO #warning "XXX I see it now, the process needs to hold on to the pixmap to make this work :(" #ifndef NO_CONFIGURE if (supportSemitransparency) { _XA_XROOTPMAP_ID = XInternAtom(xapp->display(), "_XROOTPMAP_ID", False); _XA_XROOTCOLOR_PIXEL = XInternAtom(xapp->display(), "_XROOTCOLOR_PIXEL", False); } #endif } void DesktopBackgroundManager::handleSignal(int sig) { switch (sig) { case SIGINT: case SIGTERM: case SIGQUIT: #ifndef NO_CONFIGURE if (supportSemitransparency) { if (_XA_XROOTPMAP_ID) XDeleteProperty(xapp->display(), desktop->handle(), _XA_XROOTPMAP_ID); if (_XA_XROOTCOLOR_PIXEL) XDeleteProperty(xapp->display(), desktop->handle(), _XA_XROOTCOLOR_PIXEL); } #endif ///XCloseDisplay(display); exit(1); break; default: YApplication::handleSignal(sig); break; } } void DesktopBackgroundManager::addImage(const char *imageFileName) { ref image = loadImage(imageFileName); backgroundPixmaps.append(image); if (defaultBackground == null) defaultBackground = image; } ref DesktopBackgroundManager::loadImage(const char *imageFileName) { if (access(imageFileName, 0) == 0) { ref r = YPixmap::load(imageFileName); return r; } else return null; } void DesktopBackgroundManager::update() { // long w = getWorkspace(); // if (w != activeWorkspace) { // activeWorkspace = w; changeBackground(activeWorkspace); // } } long DesktopBackgroundManager::getWorkspace() { long w; Atom r_type; int r_format; unsigned long nitems, lbytes; unsigned char *prop; if (XGetWindowProperty(xapp->display(), desktop->handle(), _XA_NET_CURRENT_DESKTOP, 0, 1, False, XA_CARDINAL, &r_type, &r_format, &nitems, &lbytes, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && nitems == 1) { w = ((long *)prop)[0]; XFree(prop); return w; } XFree(prop); } return -1; } #if 1 // should be a separate program to reduce memory waste static ref renderBackground(ref paths, char const * filename, YColor * color) { ref back; if (*filename == '/') { if (access(filename, R_OK) == 0) back = YPixmap::load(filename); } else back = paths->loadPixmap(0, filename); #ifndef NO_CONFIGURE if (back != null && (centerBackground || desktopBackgroundScaled)) { ref cBack = YPixmap::create(desktop->width(), desktop->height()); Graphics g(cBack, 0, 0); g.setColor(color); g.fillRect(0, 0, desktop->width(), desktop->height()); if (desktopBackgroundScaled && (desktop->width() != back->width() || desktop->height() != back->height())) { int aw = back->width(); int ah = back->height(); if (aw < desktop->width()) { ah = (int)((long long)desktop->width() * ah / aw); aw = desktop->width(); if (ah * 11 / 10 > desktop->height()) { aw = (int)((long long)desktop->height() * aw / ah); ah = desktop->height(); } } else { aw = (int)((long long)desktop->height() * aw / ah); ah = desktop->height(); if (aw * 11 / 10 > desktop->width()) { ah = (int)((long long)desktop->width() * ah / aw); aw = desktop->width(); } } ref scaled = back->scale(aw, ah); if (scaled != null) { g.drawPixmap(scaled, (desktop->width() - scaled->width()) / 2, (desktop->height() - scaled->height()) / 2); scaled = null; } } else { g.drawPixmap(back, (desktop->width() - back->width()) / 2, (desktop->height() - back->height()) / 2); } back = cBack; } #endif /// TODO #warning "TODO: implement scaled background" return back; } #endif void DesktopBackgroundManager::changeBackground(long /*workspace*/) { /// TODO #warning "fixme: add back handling of multiple desktop backgrounds" #if 0 ref pixmap = defaultBackground; if (workspace >= 0 && workspace < (long)backgroundPixmaps.getCount() && backgroundPixmaps[workspace]) { pixmap = backgroundPixmaps[workspace]; } if (pixmap != currentBackground) { XSetWindowBackgroundPixmap(app->display(), desktop->handle(), pixmap->pixmap()); XClearWindow(app->display(), desktop->handle()); if (supportSemitransparency) { if (_XA_XROOTPMAP_ID) XChangeProperty(app->display(), desktop->handle(), _XA_XROOTPMAP_ID, XA_PIXMAP, 32, PropModeReplace, (const unsigned char*) &pixmap, 1); if (_XA_XROOTCOLOR_PIXEL) { unsigned long black(BlackPixel(app->display(), DefaultScreen(app->display()))); XChangeProperty(app->display(), desktop->handle(), _XA_XROOTCOLOR_PIXEL, XA_CARDINAL, 32, PropModeReplace, (const unsigned char*) &black, 1); } } } XFlush(app->display()); #endif #if 1 ref paths = YResourcePaths::subdirs(null, true); YColor * bColor((DesktopBackgroundColor && DesktopBackgroundColor[0]) ? new YColor(DesktopBackgroundColor) : 0); if (bColor == 0) bColor = YColor::black; unsigned long const bPixel(bColor->pixel()); bool handleBackground(false); Pixmap bPixmap(None); if (DesktopBackgroundPixmap && DesktopBackgroundPixmap[0]) { ref back = renderBackground(paths, DesktopBackgroundPixmap, bColor); if (back != null) { bPixmap = back->pixmap(); XSetWindowBackgroundPixmap(xapp->display(), desktop->handle(), bPixmap); currentBackground = back; handleBackground = true; } } else if (DesktopBackgroundColor && DesktopBackgroundColor[0]) { XSetWindowBackgroundPixmap(xapp->display(), desktop->handle(), 0); XSetWindowBackground(xapp->display(), desktop->handle(), bPixel); handleBackground = true; } if (handleBackground) { #ifndef NO_CONFIGURE if (supportSemitransparency && _XA_XROOTPMAP_ID && _XA_XROOTCOLOR_PIXEL) { if (DesktopBackgroundPixmap && DesktopTransparencyPixmap && !strcmp (DesktopBackgroundPixmap, DesktopTransparencyPixmap)) { delete[] DesktopTransparencyPixmap; DesktopTransparencyPixmap = NULL; } YColor * tColor(DesktopTransparencyColor && DesktopTransparencyColor[0] ? new YColor(DesktopTransparencyColor) : bColor); ref root = DesktopTransparencyPixmap && DesktopTransparencyPixmap[0] != 0 ? renderBackground(paths, DesktopTransparencyPixmap, tColor) : null; if (root != null) currentBackground = root; unsigned long const tPixel(tColor->pixel()); Pixmap const tPixmap(root != null ? root->pixmap() : bPixmap); XChangeProperty(xapp->display(), desktop->handle(), _XA_XROOTPMAP_ID, XA_PIXMAP, 32, PropModeReplace, (unsigned char const*)&tPixmap, 1); XChangeProperty(xapp->display(), desktop->handle(), _XA_XROOTCOLOR_PIXEL, XA_CARDINAL, 32, PropModeReplace, (unsigned char const*)&tPixel, 1); } #endif } #endif XClearWindow(xapp->display(), desktop->handle()); XFlush(xapp->display()); // if (backgroundPixmaps.getCount() <= 1) #ifndef NO_CONFIGURE if (!supportSemitransparency) { exit(0); } #endif } bool DesktopBackgroundManager::filterEvent(const XEvent &xev) { if (xev.type == PropertyNotify) { /// TODO #warning "leak needs to be fixed when multiple background desktops are enabled again" #if 0 if (xev.xproperty.window == desktop->handle() && xev.xproperty.atom == _XA_NET_CURRENT_DESKTOP) { update(); } #endif } else if (xev.type == ClientMessage) { if (xev.xclient.window == desktop->handle() && xev.xproperty.atom == _XA_ICEWMBG_QUIT) { exit(0); } if (xev.xclient.window == desktop->handle() && xev.xproperty.atom == _XA_ICEWMBG_RESTART) { execlp(ICEWMBGEXE, ICEWMBGEXE, (void *)NULL); } } return YXApplication::filterEvent(xev); } void DesktopBackgroundManager::sendQuit() { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = desktop->handle(); xev.message_type = _XA_ICEWMBG_QUIT; xev.format = 32; xev.data.l[0] = getpid(); XSendEvent(xapp->display(), desktop->handle(), False, StructureNotifyMask, (XEvent *) &xev); XSync(xapp->display(), False); } void DesktopBackgroundManager::sendRestart() { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = desktop->handle(); xev.message_type = _XA_ICEWMBG_RESTART; xev.format = 32; xev.data.l[0] = getpid(); XSendEvent(xapp->display(), desktop->handle(), False, StructureNotifyMask, (XEvent *) &xev); XSync(xapp->display(), False); } void printUsage(int rc = 1) { fputs (_("Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent windows\n"), stderr); exit(rc); } void invalidArgument(const char *appName, const char *arg) { fprintf(stderr, _("%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n"), appName, arg, appName); exit(1); } DesktopBackgroundManager *bg; void addBgImage(const char */*name*/, const char *value, bool) { bg->addImage(value); } int main(int argc, char **argv) { ApplicationName = my_basename(*argv); nice(5); #if 0 { int n; int gotOpts = 0; for (n = 1; n < argc; ++n) if (argv[n][0] == '-') if (argv[n][1] == 's' || strcmp(argv[n] + 1, "-semitransparency") == 0 && !supportSemitransparency) { supportSemitransparency = true; gotOpts++; } else if (argv[n][1] == 'h' || strcmp(argv[n] + 1, "-help") == 0) printUsage(0); else invalidArgument("icewmbg", argv[n]); if (argc < 1 + gotOpts + 1) printUsage(); } #endif bg = new DesktopBackgroundManager(&argc, &argv); if (argc > 1) { if ( strcmp(argv[1], "-r") == 0) { bg->sendRestart(); return 0; } else if (strcmp(argv[1], "-q") == 0) { bg->sendQuit(); return 0; } else printUsage(); } #ifndef NO_CONFIGURE { cfoption theme_prefs[] = { OSV("Theme", &themeName, "Theme name"), OK0() }; YConfig::findLoadConfigFile(theme_prefs, "preferences"); YConfig::findLoadConfigFile(theme_prefs, "theme"); } YConfig::findLoadConfigFile(icewmbg_prefs, "preferences"); if (themeName != 0) { MSG(("themeName=%s", themeName)); YConfig::findLoadConfigFile(icewmbg_prefs, upath("themes").child(themeName)); } YConfig::findLoadConfigFile(icewmbg_prefs, "prefoverride"); #endif #if 0 { char *configFile = 0; if (configFile == 0) configFile = app->findConfigFile("preferences"); if (configFile) loadConfig(icewmbg_prefs, configFile); delete configFile; configFile = 0; if (themeName) { if (*themeName == '/') loadConfig(icewmbg_prefs, themeName); else { char *theme(strJoin("themes/", themeName, NULL)); char *themePath(app->findConfigFile(theme)); if (themePath) loadConfig(icewmbg_prefs, themePath); delete[] themePath; delete[] theme; } } } #endif ///XSelectInput(app->display(), desktop->handle(), PropertyChangeMask); bg->update(); return bg->mainLoop(); } /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// #if 0 Pixmap loadPixmap(const char *filename) { Pixmap pixmap = 0; #ifdef CONFIG_IMLIB if (!hImlib) hImlib = Imlib_init(display); ImlibImage *im = Imlib_load_image(hImlib, (char *)filename); if (im) { Imlib_render(hImlib, im, im->rgb_width, im->rgb_height); pixmap = (Pixmap)Imlib_move_image(hImlib, im); Imlib_destroy_image(hImlib, im); } else { fprintf(stderr, _("Loading image %s failed"), filename); fputs("\n", stderr); } #else XpmAttributes xpmAttributes; xpmAttributes.colormap = defaultColormap; xpmAttributes.closeness = 65535; xpmAttributes.valuemask = XpmSize|XpmReturnPixels|XpmColormap|XpmCloseness; Pixmap mask; int const rc(XpmReadFileToPixmap(display, root, (char *)filename, &pixmap, &mask, &xpmAttributes)); if (rc != XpmSuccess) warn(_("Loading of pixmap \"%s\" failed: %s"), filename, XpmGetErrorString(rc)); else if (mask != None) XFreePixmap(display, mask); #endif return pixmap; } #endif #if 0 #ifdef CONFIG_IMLIB #include static ImlibData *hImlib = 0; #else #include #endif #endif #if 0 #include #include #include #include #include #include #include #include #include #include #include #include #include #include ///#include #include "base.h" #include "WinMgr.h" #endif ///#warning duplicates lots of prefs ///#include "default.h" ///#include "wmconfig.h" icewm-1.3.7/src/wmbutton.cc0000644000076600007660000002153011463274240014603 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek */ #include "config.h" #include "ypixbuf.h" #include "ylib.h" #include "wmbutton.h" #include "wmaction.h" #include "wmframe.h" #include "wmtitle.h" #include "yxapp.h" #include "yicon.h" #include "yprefs.h" #include "prefs.h" static YColor *titleButtonBg = 0; static YColor *titleButtonFg = 0; //!!! get rid of this extern YColor *activeTitleBarBg; extern YColor *inactiveTitleBarBg; #ifdef CONFIG_LOOK_PIXMAP ref menuButton[3]; #endif YFrameButton::YFrameButton(YWindow *parent, YFrameWindow *frame, YAction *action, YAction *action2): YButton(parent, 0) { if (titleButtonBg == 0) titleButtonBg = new YColor(clrNormalTitleButton); if (titleButtonFg == 0) titleButtonFg = new YColor(clrNormalTitleButtonText); fFrame = frame; fAction = action; fAction2 = action2; if (fAction == 0) setPopup(frame->windowMenu()); setSize(0,0); } YFrameButton::~YFrameButton() { } void YFrameButton::handleButton(const XButtonEvent &button) { if (button.type == ButtonPress && (buttonRaiseMask & (1 << (button.button - 1)))) { if (!(button.state & ControlMask) && raiseOnClickButton) { getFrame()->activate(); if (raiseOnClickButton && (actionDepth == 0 || fAction != actionDepth)) getFrame()->wmRaise(); } } YButton::handleButton(button); } void YFrameButton::handleClick(const XButtonEvent &up, int count) { if (fAction == 0 && up.button == 1) { if ((count % 2) == 0) { setArmed(false, false); getFrame()->wmClose(); } } else if (up.button == 3 && (KEY_MODMASK(up.state) & (xapp->AltMask)) == 0) { if (!isPopupActive()) getFrame()->popupSystemMenu(this, up.x_root, up.y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal); } } void YFrameButton::handleBeginDrag(const XButtonEvent &down, const XMotionEvent &/*motion*/) { if (down.button == 3 && getFrame()->canMove()) { if (!isPopupActive()) getFrame()->startMoveSize(1, 1, 0, 0, down.x + x() + getFrame()->titlebar()->x(), down.y + y() + getFrame()->titlebar()->y()); } } void YFrameButton::setActions(YAction *action, YAction *action2) { fAction2 = action2; if (action != fAction) { fAction = action; repaint(); } } void YFrameButton::updatePopup() { getFrame()->updateMenu(); } void YFrameButton::actionPerformed(YAction * /*action*/, unsigned int modifiers) { if ((modifiers & ShiftMask) && fAction2 != 0) getFrame()->actionPerformed(fAction2, modifiers); else getFrame()->actionPerformed(fAction, modifiers); } ref YFrameButton::getPixmap(int pn) const { if (fAction == actionMaximize) return maximizePixmap[pn]; else if (fAction == actionMinimize) return minimizePixmap[pn]; else if (fAction == actionRestore) return restorePixmap[pn]; else if (fAction == actionClose) return closePixmap[pn]; #ifndef CONFIG_PDA else if (fAction == actionHide) return hidePixmap[pn]; #endif else if (fAction == actionRollup) return getFrame()->isRollup() ? rolldownPixmap[pn] : rollupPixmap[pn]; else if (fAction == actionDepth) return depthPixmap[pn]; #ifdef CONFIG_LOOK_PIXMAP else if (fAction == 0 && (wmLook == lookPixmap || wmLook == lookMetal || wmLook == lookGtk || wmLook == lookFlat)) return menuButton[pn]; #endif else return null; } void YFrameButton::paint(Graphics &g, const YRect &/*r*/) { int xPos = 1, yPos = 1; int pn = (wmLook == lookPixmap || wmLook == lookMetal || wmLook == lookGtk || wmLook == lookFlat) && getFrame()->focused() ? 1 : 0; const bool armed(isArmed()); g.setColor(titleButtonBg); if (fOver && rolloverTitleButtons) { if (pn == 1) { pn = 2; } else { pn = 0; } } int iconSize = #ifdef LITE 0; #else YIcon::smallSize(); #endif #ifdef LITE ref icon; #else ref icon = (fAction == 0) ? getFrame()->clientIcon() : null; #endif ref pixmap = getPixmap(pn); if (pixmap == null) pixmap = getPixmap(0); switch (wmLook) { #ifdef CONFIG_LOOK_WARP4 case lookWarp4: if (fAction == 0) { g.fillRect(0, 0, width(), height()); if (armed) g.setColor(activeTitleBarBg); g.fillRect(1, 1, width() - 2, height() - 2); if (icon != null && showFrameIcon) icon->draw(g, (width() - iconSize) / 2, (height() - iconSize) / 2, iconSize); } else { g.fillRect(0, 0, width(), height()); if (pixmap != null) g.copyPixmap(pixmap, 0, armed ? 20 : 0, pixmap->width(), pixmap->height() / 2, (width() - pixmap->width()) / 2, (height() - pixmap->height() / 2)); } break; #endif #if defined(CONFIG_LOOK_MOTIF) || \ defined(CONFIG_LOOK_WARP3) || \ defined(CONFIG_LOOK_NICE) CASE_LOOK_MOTIF: CASE_LOOK_WARP3: CASE_LOOK_NICE: { g.draw3DRect(0, 0, width() - 1, height() - 1, !armed); if (!LOOK_IS_MOTIF) { if (armed) { xPos = 3; yPos = 3; g.drawLine(1, 1, width() - 2, 1); g.drawLine(1, 1, 1, height() - 2); g.drawLine(2, 2, width() - 3, 2); g.drawLine(2, 2, 2, height() - 3); } else { xPos = 2; yPos = 2; g.drawRect(1, 1, width() - 3, width() - 3); } } /* else if (LOOK_IS_WIN95) { xPos = 2; yPos = 2; }*/ unsigned const w(LOOK_IS_MOTIF ? width() - 2 : width() - 4); unsigned const h(LOOK_IS_MOTIF ? height() - 2 : height() - 4); if (fAction == 0) { g.fillRect(xPos, yPos, w, h); if (icon != null && showFrameIcon) icon->draw(g, xPos + (w - iconSize) / 2, yPos + (h - iconSize) / 2, iconSize); } else { if (pixmap != null) g.drawCenteredPixmap(xPos, yPos, w, h, pixmap); } break; } #endif #ifdef CONFIG_LOOK_WIN95 CASE_LOOK_WIN95: if (fAction == 0) { if (!armed) { YColor * bg(getFrame()->focused() ? activeTitleBarBg : inactiveTitleBarBg); g.setColor(bg); } g.fillRect(0, 0, width(), height()); if (icon != null && showFrameIcon) icon->draw(g, (width() - iconSize) / 2, (height() - iconSize) / 2, iconSize); } else { g.drawBorderW(0, 0, width() - 1, height() - 1, !armed); if (armed) xPos = yPos = 2; if (pixmap != null) g.drawCenteredPixmap(xPos, yPos, width() - 3, height() - 3, pixmap); } break; #endif #ifdef CONFIG_LOOK_PIXMAP case lookPixmap: case lookMetal: case lookFlat: case lookGtk: if (pixmap != null) { if ( getPixmap(1) != null ) { int const h(pixmap->height() / 2); g.copyPixmap(pixmap, 0, armed ? h : 0, pixmap->width(), h, 0, 0); } else { //If we have only an image we change the over or armed color and paint it g.fillRect(0, 0, width(), height()); if (armed) g.setColor(activeTitleBarBg->darker()); else if (rolloverTitleButtons && fOver) g.setColor(activeTitleBarBg->brighter()); g.fillRect(1, 1, width()-2, height()-3); int x(((int)width() - (int)pixmap->width()) / 2); int y(((int)height() - (int)pixmap->height()) / 2); g.drawPixmap(pixmap, x, y); } } else g.fillRect(0, 0, width(), height()); if (fAction == 0 && icon != null && showFrameIcon) icon->draw(g, ((int)width() - (int)iconSize) / 2, ((int)height() - (int)iconSize) / 2, iconSize); break; #endif default: break; } } void YFrameButton::paintFocus(Graphics &/*g*/, const YRect &/*r*/) { } icewm-1.3.7/src/ysmapp.h0000644000076600007660000000161711463274240014103 0ustar develdevel#ifndef SMAPP_H #define SMAPP_H #include "yxapp.h" #include "ypoll.h" #ifdef CONFIG_SESSION class YSMPoll: public YPoll { public: virtual void notifyRead(); virtual void notifyWrite(); virtual bool forRead(); virtual bool forWrite(); }; class YSMApplication: public YXApplication { /// !!! should be possible without X public: YSMApplication(int *argc, char ***argv, const char *displayName = 0); virtual ~YSMApplication(); bool haveSessionManager(); virtual void smSaveYourself(bool shutdown, bool fast); virtual void smSaveYourselfPhase2(); virtual void smSaveComplete(); virtual void smShutdownCancelled(); virtual void smDie(); void smSaveDone(); void smRequestShutdown(); void smCancelShutdown(); private: YSMPoll psm; }; extern YSMApplication *smapp; #else typedef YXApplication YSMApplication; #endif #endif icewm-1.3.7/src/bindkey.h0000644000076600007660000002441611463274240014221 0ustar develdevel#define defgMouseWinMove XK_Pointer_Button1, kfAlt, "Alt+Pointer_Button1" #define defgMouseWinSize XK_Pointer_Button3, kfAlt, "Alt+Pointer_Button3" #define defgMouseWinRaise XK_Pointer_Button1, kfCtrl+kfAlt, "Ctrl+Alt+Pointer_Button1" #define defgKeyWinRaise XK_F1, kfAlt, "Alt+F1" #define defgKeyWinOccupyAll XK_F2, kfAlt, "Alt+F2" #define defgKeyWinLower XK_F3, kfAlt, "Alt+F3" #define defgKeyWinClose XK_F4, kfAlt, "Alt+F4" #define defgKeyWinKill 0, 0, "" #define defgKeyWinRestore XK_F5, kfAlt, "Alt+F5" #define defgKeyWinNext XK_F6, kfAlt, "Alt+F6" #define defgKeyWinPrev XK_F6, kfAlt+kfShift, "Alt+Shift+F6" #define defgKeyWinMove XK_F7, kfAlt, "Alt+F7" #define defgKeyWinSize XK_F8, kfAlt, "Alt+F8" #define defgKeyWinMinimize XK_F9, kfAlt, "Alt+F9" #define defgKeyWinMaximize XK_F10, kfAlt, "Alt+F10" #define defgKeyWinMaximizeVert XK_F10, kfAlt+kfShift, "Alt+Shift+F10" #define defgKeyWinMaximizeHoriz 0, 0, "" #define defgKeyWinFullscreen XK_F11, kfAlt, "Alt+F11" #define defgKeyWinHide XK_F12, kfAlt+kfShift, "Alt+Shift+F12" #define defgKeyWinRollup XK_F12, kfAlt, "Alt+F12" #define defgKeyWinArrangeN XK_KP_Up, kfCtrl+kfAlt, "Ctrl+Alt+KP_8" #define defgKeyWinArrangeNE XK_KP_Prior, kfCtrl+kfAlt, "Ctrl+Alt+KP_9" #define defgKeyWinArrangeE XK_KP_Right, kfCtrl+kfAlt, "Ctrl+Alt+KP_6" #define defgKeyWinArrangeSE XK_KP_Next, kfCtrl+kfAlt, "Ctrl+Alt+KP_3" #define defgKeyWinArrangeS XK_KP_Down, kfCtrl+kfAlt, "Ctrl+Alt+KP_2" #define defgKeyWinArrangeSW XK_KP_End, kfCtrl+kfAlt, "Ctrl+Alt+KP_1" #define defgKeyWinArrangeW XK_KP_Left, kfCtrl+kfAlt, "Ctrl+Alt+KP_4" #define defgKeyWinArrangeNW XK_KP_Home, kfCtrl+kfAlt, "Ctrl+Alt+KP_7" #define defgKeyWinArrangeC XK_KP_Begin, kfCtrl+kfAlt, "Ctrl+Alt+KP_5" #define defgKeyWinSnapMoveN XK_KP_Up, kfCtrl+kfAlt+kfShift, "Ctrl+Alt+Shift+KP_8" #define defgKeyWinSnapMoveNE XK_KP_Prior, kfCtrl+kfAlt+kfShift, "Ctrl+Alt+Shift+KP_9" #define defgKeyWinSnapMoveE XK_KP_Right, kfCtrl+kfAlt+kfShift, "Ctrl+Alt+Shift+KP_6" #define defgKeyWinSnapMoveSE XK_KP_Next, kfCtrl+kfAlt+kfShift, "Ctrl+Alt+Shift+KP_3" #define defgKeyWinSnapMoveS XK_KP_Down, kfCtrl+kfAlt+kfShift, "Ctrl+Alt+Shift+KP_2" #define defgKeyWinSnapMoveSW XK_KP_End, kfCtrl+kfAlt+kfShift, "Ctrl+Alt+Shift+KP_1" #define defgKeyWinSnapMoveW XK_KP_Left, kfCtrl+kfAlt+kfShift, "Ctrl+Alt+Shift+KP_4" #define defgKeyWinSnapMoveNW XK_KP_Home, kfCtrl+kfAlt+kfShift, "Ctrl+Alt+Shift+KP_7" #define defgKeyWinSmartPlace XK_KP_Begin, kfCtrl+kfAlt+kfShift, "Ctrl+Alt+Shift+KP_5" #define defgKeySysSwitchNext XK_Tab, kfAlt, "Alt+Tab" #define defgKeySysSwitchLast XK_Tab, kfAlt+kfShift, "Alt+Shift+Tab" #define defgKeySysWinNext XK_Escape, kfAlt, "Alt+Esc" #define defgKeySysWinPrev XK_Escape, kfAlt+kfShift, "Alt+Shift+Esc" #define defgKeySysWinMenu XK_Escape, kfShift, "Shift+Esc" #define defgKeySysDialog XK_Delete, kfAlt+kfCtrl, "Alt+Ctrl+Del" #define defgKeySysMenu XK_Escape, kfCtrl, "Ctrl+Esc" #define defgKeySysWindowList XK_Escape, kfCtrl+kfAlt, "Alt+Ctrl+Esc" #define defgKeySysWinListMenu 0, 0, "" ///#define defgKeySysRun 'r', kfAlt+kfCtrl, "Alt+Ctrl+r" #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" #define defgKeySysWorkspacePrevTakeWin XK_Left, kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+Left" #define defgKeySysWorkspaceNextTakeWin XK_Right, kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+Right" #define defgKeySysWorkspaceLastTakeWin XK_Down, kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+Down" #define defgKeySysWorkspace1 '1', kfAlt+kfCtrl, "Alt+Ctrl+1" #define defgKeySysWorkspace2 '2', kfAlt+kfCtrl, "Alt+Ctrl+2" #define defgKeySysWorkspace3 '3', kfAlt+kfCtrl, "Alt+Ctrl+3" #define defgKeySysWorkspace4 '4', kfAlt+kfCtrl, "Alt+Ctrl+4" #define defgKeySysWorkspace5 '5', kfAlt+kfCtrl, "Alt+Ctrl+5" #define defgKeySysWorkspace6 '6', kfAlt+kfCtrl, "Alt+Ctrl+6" #define defgKeySysWorkspace7 '7', kfAlt+kfCtrl, "Alt+Ctrl+7" #define defgKeySysWorkspace8 '8', kfAlt+kfCtrl, "Alt+Ctrl+8" #define defgKeySysWorkspace9 '9', kfAlt+kfCtrl, "Alt+Ctrl+9" #define defgKeySysWorkspace10 '0', kfAlt+kfCtrl, "Alt+Ctrl+0" #define defgKeySysWorkspace11 '-', kfAlt+kfCtrl, "Alt+Ctrl+bracketleft" #define defgKeySysWorkspace12 '=', kfAlt+kfCtrl, "Alt+Ctrl+bracketright" #define defgKeySysWorkspace1TakeWin '1', kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+1" #define defgKeySysWorkspace2TakeWin '2', kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+2" #define defgKeySysWorkspace3TakeWin '3', kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+3" #define defgKeySysWorkspace4TakeWin '4', kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+4" #define defgKeySysWorkspace5TakeWin '5', kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+5" #define defgKeySysWorkspace6TakeWin '6', kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+6" #define defgKeySysWorkspace7TakeWin '7', kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+7" #define defgKeySysWorkspace8TakeWin '8', kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+8" #define defgKeySysWorkspace9TakeWin '9', kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+9" #define defgKeySysWorkspace10TakeWin '0', kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+0" #define defgKeySysWorkspace11TakeWin '-', kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+bracketleft" #define defgKeySysWorkspace12TakeWin '=', kfAlt+kfCtrl+kfShift, "Alt+Ctrl+Shift+bracketright" #define defgKeySysTileVertical XK_F2, kfAlt+kfShift, "Alt+Shift+F2" #define defgKeySysTileHorizontal XK_F3, kfAlt+kfShift, "Alt+Shift+F3" #define defgKeySysCascade XK_F4, kfAlt+kfShift, "Alt+Shift+F4" #define defgKeySysArrange XK_F5, kfAlt+kfShift, "Alt+Shift+F5" #define defgKeySysArrangeIcons XK_F6, kfAlt+kfShift, "Alt+Shift+F8" #define defgKeySysMinimizeAll XK_F9, kfAlt+kfShift, "Alt+Shift+F9" #define defgKeySysHideAll XK_F11, kfAlt+kfShift, "Alt+Shift+F11" #define defgKeySysUndoArrange XK_F7, kfAlt+kfShift, "Alt+Shift+F7" #define defgKeySysShowDesktop 'd', kfAlt+kfCtrl, "Alt+Ctrl+d" #define defgKeySysCollapseTaskBar 'h', kfAlt+kfCtrl, "Alt+Ctrl+h" #ifdef NO_KEYBIND #define IS_WMKEYx2(k,vm,k1,vm1,d) ((k) == (k1) && ((vm) == (vm1))) #define IS_WMKEYx(k,vm,b) IS_WMKEYx2(k,vm,b) #define IS_WMKEY(k,vm,b) IS_WMKEYx(k,vm,def##b) #define GRAB_WMKEYx2(k,vm,d) grabVKey(k,vm) #define GRAB_WMKEYx(k) GRAB_WMKEYx2(k) #define GRAB_WMKEY(k) GRAB_WMKEYx(def##k) #define KEY_NAMEx2(k,m,s) (s) #define KEY_NAMEx(k) KEY_NAMEx2(k) #define KEY_NAME(k) KEY_NAMEx(def##k) #else #ifdef CFGDEF #define DEF_WMKEY(k) WMKey k = { def##k, true } #else #define DEF_WMKEY(k) extern WMKey k #define IS_WMKEY(k,m,b) k == b.key && m == b.mod #define GRAB_WMKEY(k) GRAB_WMKEYx(k); #define GRAB_WMKEYx(k) grabVKey(k.key, k.mod) #define KEY_NAME(k) (k.name ? k.name : "") #endif DEF_WMKEY(gMouseWinMove); DEF_WMKEY(gMouseWinSize); DEF_WMKEY(gMouseWinRaise); DEF_WMKEY(gKeyWinRaise); DEF_WMKEY(gKeyWinOccupyAll); DEF_WMKEY(gKeyWinLower); DEF_WMKEY(gKeyWinClose); DEF_WMKEY(gKeyWinKill); DEF_WMKEY(gKeyWinRestore); DEF_WMKEY(gKeyWinPrev); DEF_WMKEY(gKeyWinNext); DEF_WMKEY(gKeyWinMove); DEF_WMKEY(gKeyWinSize); DEF_WMKEY(gKeyWinMinimize); DEF_WMKEY(gKeyWinMaximize); DEF_WMKEY(gKeyWinMaximizeVert); DEF_WMKEY(gKeyWinMaximizeHoriz); DEF_WMKEY(gKeyWinFullscreen); DEF_WMKEY(gKeyWinHide); DEF_WMKEY(gKeyWinRollup); DEF_WMKEY(gKeyWinArrangeN); DEF_WMKEY(gKeyWinArrangeNE); DEF_WMKEY(gKeyWinArrangeE); DEF_WMKEY(gKeyWinArrangeSE); DEF_WMKEY(gKeyWinArrangeS); DEF_WMKEY(gKeyWinArrangeSW); DEF_WMKEY(gKeyWinArrangeW); DEF_WMKEY(gKeyWinArrangeNW); DEF_WMKEY(gKeyWinArrangeC); DEF_WMKEY(gKeyWinSnapMoveN); DEF_WMKEY(gKeyWinSnapMoveNE); DEF_WMKEY(gKeyWinSnapMoveE); DEF_WMKEY(gKeyWinSnapMoveSE); DEF_WMKEY(gKeyWinSnapMoveS); DEF_WMKEY(gKeyWinSnapMoveSW); DEF_WMKEY(gKeyWinSnapMoveW); DEF_WMKEY(gKeyWinSnapMoveNW); DEF_WMKEY(gKeyWinSmartPlace); DEF_WMKEY(gKeyWinMenu); DEF_WMKEY(gKeySysSwitchNext); DEF_WMKEY(gKeySysSwitchLast); DEF_WMKEY(gKeySysWinNext); DEF_WMKEY(gKeySysWinPrev); DEF_WMKEY(gKeySysWinMenu); DEF_WMKEY(gKeySysDialog); DEF_WMKEY(gKeySysMenu); DEF_WMKEY(gKeySysWindowList); DEF_WMKEY(gKeySysWinListMenu); ///DEF_WMKEY(gKeySysRun); DEF_WMKEY(gKeySysAddressBar); DEF_WMKEY(gKeySysWorkspacePrev); DEF_WMKEY(gKeySysWorkspaceNext); DEF_WMKEY(gKeySysWorkspaceLast); DEF_WMKEY(gKeySysWorkspacePrevTakeWin); DEF_WMKEY(gKeySysWorkspaceNextTakeWin); DEF_WMKEY(gKeySysWorkspaceLastTakeWin); DEF_WMKEY(gKeySysWorkspace1); DEF_WMKEY(gKeySysWorkspace2); DEF_WMKEY(gKeySysWorkspace3); DEF_WMKEY(gKeySysWorkspace4); DEF_WMKEY(gKeySysWorkspace5); DEF_WMKEY(gKeySysWorkspace6); DEF_WMKEY(gKeySysWorkspace7); DEF_WMKEY(gKeySysWorkspace8); DEF_WMKEY(gKeySysWorkspace9); DEF_WMKEY(gKeySysWorkspace10); DEF_WMKEY(gKeySysWorkspace11); DEF_WMKEY(gKeySysWorkspace12); DEF_WMKEY(gKeySysWorkspace1TakeWin); DEF_WMKEY(gKeySysWorkspace2TakeWin); DEF_WMKEY(gKeySysWorkspace3TakeWin); DEF_WMKEY(gKeySysWorkspace4TakeWin); DEF_WMKEY(gKeySysWorkspace5TakeWin); DEF_WMKEY(gKeySysWorkspace6TakeWin); DEF_WMKEY(gKeySysWorkspace7TakeWin); DEF_WMKEY(gKeySysWorkspace8TakeWin); DEF_WMKEY(gKeySysWorkspace9TakeWin); DEF_WMKEY(gKeySysWorkspace10TakeWin); DEF_WMKEY(gKeySysWorkspace11TakeWin); DEF_WMKEY(gKeySysWorkspace12TakeWin); DEF_WMKEY(gKeySysTileVertical); DEF_WMKEY(gKeySysTileHorizontal); DEF_WMKEY(gKeySysCascade); DEF_WMKEY(gKeySysArrange); DEF_WMKEY(gKeySysArrangeIcons); DEF_WMKEY(gKeySysMinimizeAll); DEF_WMKEY(gKeySysHideAll); DEF_WMKEY(gKeySysUndoArrange); DEF_WMKEY(gKeySysShowDesktop); DEF_WMKEY(gKeySysCollapseTaskBar); #undef DEF_WMKEY #endif icewm-1.3.7/src/objbar.h0000644000076600007660000000127111463274240014025 0ustar develdevel#ifndef __OBJBAR_H #define __OBJBAR_H #ifdef CONFIG_TASKBAR #include "ywindow.h" #include "ybutton.h" #include "obj.h" class Program; class ObjectBar: public YWindow, public ObjectContainer { public: ObjectBar(YWindow *parent); virtual ~ObjectBar(); void configure(const YRect &r); virtual void addObject(DObject *object); virtual void addSeparator(); virtual void addContainer(const ustring &name, ref icon, ObjectContainer *container); virtual void paint(Graphics &g, const YRect &r); void addButton(const ustring &name, ref icon, YButton *button); private: YArray objects; static YColor *bgColor; }; #endif #endif icewm-1.3.7/src/yinput.cc0000644000076600007660000004574211463274240014267 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek */ #include "config.h" #ifndef LITE #include "ykey.h" #include "yinputline.h" #include "ymenu.h" #include "ymenuitem.h" #include "yxapp.h" #include "prefs.h" #include #include "intl.h" ref YInputLine::inputFont; YColor *YInputLine::inputBg = 0; YColor *YInputLine::inputFg = 0; YColor *YInputLine::inputSelectionBg = 0; YColor *YInputLine::inputSelectionFg = 0; YTimer *YInputLine::cursorBlinkTimer = 0; YMenu *YInputLine::inputMenu = 0; int YInputLine::fAutoScrollDelta = 0; static YAction *actionCut, *actionCopy, *actionPaste, *actionSelectAll, *actionPasteSelection; YInputLine::YInputLine(YWindow *parent): YWindow(parent), fText(null) { if (inputFont == null) inputFont = YFont::getFont(XFA(inputFontName)); if (inputBg == 0) inputBg = new YColor(clrInput); if (inputFg == 0) inputFg = new YColor(clrInputText); if (inputSelectionBg == 0) inputSelectionBg = new YColor(clrInputSelection); if (inputSelectionFg == 0) inputSelectionFg = new YColor(clrInputSelectionText); if (inputMenu == 0) { inputMenu = new YMenu(); if (inputMenu) { actionCut = new YAction(); actionCopy = new YAction(); actionPaste = new YAction(); actionPasteSelection = new YAction(); actionSelectAll = new YAction(); inputMenu->setActionListener(this); inputMenu->addItem(_("Cu_t"), -2, _("Ctrl+X"), actionCut)->setEnabled(true); inputMenu->addItem(_("_Copy"), -2, _("Ctrl+C"), actionCopy)->setEnabled(true); inputMenu->addItem(_("_Paste"), -2, _("Ctrl+V"), actionPaste)->setEnabled(true); inputMenu->addItem(_("Paste _Selection"), -2, null, actionPasteSelection)->setEnabled(true); inputMenu->addSeparator(); inputMenu->addItem(_("Select _All"), -2, _("Ctrl+A"), actionSelectAll); } } curPos = 0; markPos = 0; leftOfs = 0; fHasFocus = false; fSelecting = false; fCursorVisible = true; if (inputFont != null) setSize(width(), inputFont->height() + 2); } YInputLine::~YInputLine() { if (cursorBlinkTimer) { if (cursorBlinkTimer->getTimerListener() == this) { cursorBlinkTimer->stopTimer(); cursorBlinkTimer->setTimerListener(0); } } } void YInputLine::setText(const ustring &text) { fText = text; markPos = curPos = leftOfs = 0; curPos = fText.length(); limit(); repaint(); } ustring YInputLine::getText() { return fText; } void YInputLine::paint(Graphics &g, const YRect &/*r*/) { ref font = inputFont; int min, max, minOfs = 0, maxOfs = 0; int textLen = fText.length(); if (curPos > markPos) { min = markPos; max = curPos; } else { min = curPos; max = markPos; } if (curPos == markPos || fText == null || font == null || !fHasFocus) { g.setColor(inputBg); g.fillRect(0, 0, width(), height()); } else { minOfs = font->textWidth(fText.substring(0, min)) - leftOfs; maxOfs = font->textWidth(fText.substring(0, max)) - leftOfs; if (minOfs > 0) { g.setColor(inputBg); g.fillRect(0, 0, minOfs, height()); } /// !!! optimize (0, width) if (minOfs < maxOfs) { g.setColor(inputSelectionBg); g.fillRect(minOfs, 0, maxOfs - minOfs, height()); } if (maxOfs < int(width())) { g.setColor(inputBg); g.fillRect(maxOfs, 0, width() - maxOfs, height()); } } if (font != null) { int yp = 1 + font->ascent(); int curOfs = font->textWidth(fText.substring(0, curPos)); int cx = curOfs - leftOfs; g.setFont(font); if (curPos == markPos || !fHasFocus || fText == null) { g.setColor(inputFg); if (fText != null) g.drawChars(fText.substring(0, textLen), -leftOfs, yp); if (fHasFocus && fCursorVisible) g.drawLine(cx, 0, cx, font->height() + 2); } else { if (min > 0) { g.setColor(inputFg); g.drawChars(fText.substring(0, min), -leftOfs, yp); } /// !!! same here if (min < max) { g.setColor(inputSelectionFg); g.drawChars(fText.substring(min, max - min), minOfs, yp); } if (max < textLen) { g.setColor(inputFg); g.drawChars(fText.substring(max, textLen - max), maxOfs, yp); } } } } bool YInputLine::handleKey(const XKeyEvent &key) { if (key.type == KeyPress) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); switch (k) { case XK_KP_Home: case XK_KP_Up: case XK_KP_Prior: case XK_KP_Left: case XK_KP_Begin: case XK_KP_Right: case XK_KP_End: case XK_KP_Down: case XK_KP_Next: case XK_KP_Insert: case XK_KP_Delete: if (key.state & xapp->NumLockMask) { k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 1); } break; } int m = KEY_MODMASK(key.state); bool extend = (m & ShiftMask) ? true : false; int textLen = fText.length(); if (m & ControlMask) { switch(k) { case 'A': case 'a': case '/': selectAll(); return true; case '\\': unselectAll(); return true; case 'v': case 'V': requestSelection(false); return true; case 'X': case 'x': cutSelection(); return true; case 'c': case 'C': case XK_Insert: case XK_KP_Insert: copySelection(); return true; } } if (m & ShiftMask) { switch (k) { case XK_Insert: case XK_KP_Insert: requestSelection(false); return true; case XK_Delete: case XK_KP_Delete: cutSelection(); break; } } switch (k) { case XK_Left: case XK_KP_Left: if (m & ControlMask) { int p = prevWord(curPos, false); if (p != curPos) { if (move(p, extend)) return true; } } else { if (curPos > 0) { if (move(curPos - 1, extend)) return true; } } break; case XK_Right: case XK_KP_Right: if (m & ControlMask) { int p = nextWord(curPos, false); if (p != curPos) { if (move(p, extend)) return true; } } else { if (curPos < textLen) { if (move(curPos + 1, extend)) return true; } } break; case XK_Home: case XK_KP_Home: move(0, extend); return true; case XK_End: case XK_KP_End: move(textLen, extend); return true; case XK_Delete: case XK_KP_Delete: case XK_BackSpace: if (hasSelection()) { if (deleteSelection()) return true; } else { switch (k) { case XK_Delete: case XK_KP_Delete: if (m & ControlMask) { if (m & ShiftMask) { if (deleteToEnd()) return true; } else { if (deleteNextWord()) return true; } } else { if (deleteNextChar()) return true; } break; case XK_BackSpace: if (m & ControlMask) { if (m & ShiftMask) { if (deleteToBegin()) return true; } else { if (deletePreviousWord()) return true; } } else { if (deletePreviousChar()) return true; } break; } } break; case XK_Tab: break; default: { char s[16]; if (getCharFromEvent(key, s, sizeof(s))) { replaceSelection(ustring(s, strlen(s))); return true; } } } } return YWindow::handleKey(key); } void YInputLine::handleButton(const XButtonEvent &button) { if (button.type == ButtonPress) { if (button.button == 1) { if (fHasFocus == false) { setWindowFocus(); } else { fSelecting = true; curPos = markPos = offsetToPos(button.x + leftOfs); limit(); repaint(); } } } else if (button.type == ButtonRelease) { autoScroll(0, 0); if (fSelecting && button.button == 1) { fSelecting = false; //curPos = offsetToPos(button.x + leftOfs); //limit(); repaint(); } } YWindow::handleButton(button); } void YInputLine::handleMotion(const XMotionEvent &motion) { if (fSelecting && (motion.state & Button1Mask)) { if (motion.x < 0) autoScroll(-8, &motion); // fix else if (motion.x >= int(width())) autoScroll(8, &motion); // fix else { autoScroll(0, &motion); int c = offsetToPos(motion.x + leftOfs); if (getClickCount() == 2) { if (c >= markPos) { if (markPos > curPos) markPos = curPos; c = nextWord(c, true); } else if (c < markPos) { if (markPos < curPos) markPos = curPos; c = prevWord(c, true); } } if (curPos != c) { curPos = c; limit(); repaint(); } } } YWindow::handleMotion(motion); } void YInputLine::handleClickDown(const XButtonEvent &down, int count) { if (down.button == 1) { if ((count % 4) == 2) { int l = prevWord(curPos, true); int r = nextWord(curPos, true); if (l != markPos || r != curPos) { markPos = l; curPos = r; limit(); repaint(); } } else if ((count % 4) == 3) { markPos = curPos = 0; curPos = fText.length(); fSelecting = false; limit(); repaint(); } } } void YInputLine::handleClick(const XButtonEvent &up, int /*count*/) { if (up.button == 3 && IS_BUTTON(up.state, Button3Mask)) { if (inputMenu) inputMenu->popup(this, 0, 0, up.x_root, up.y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal); } else if (up.button == 2 && IS_BUTTON(up.state, Button2Mask)) { requestSelection(true); } } void YInputLine::handleSelection(const XSelectionEvent &selection) { if (selection.property != None) { Atom type; long extra; int format; long nitems; union { char *ptr; unsigned char *xptr; } data; XGetWindowProperty(xapp->display(), selection.requestor, selection.property, 0L, 32 * 1024, True, selection.target, &type, &format, (unsigned long *)&nitems, (unsigned long *)&extra, &(data.xptr)); if (nitems > 0 && data.ptr != NULL) { replaceSelection(mstring(data.ptr, nitems)); } if (data.xptr != NULL) XFree(data.xptr); } } int YInputLine::offsetToPos(int offset) { ref font = inputFont; int ofs = 0, pos = 0;; int textLen = fText.length(); if (font != null) { while (pos < textLen) { ofs += font->textWidth(fText.substring(pos, 1)); if (ofs < offset) pos++; else break; } } return pos; } void YInputLine::handleFocus(const XFocusChangeEvent &focus) { if (focus.type == FocusIn /* && fHasFocus == false*/ && focus.detail != NotifyPointer && focus.detail != NotifyPointerRoot) { fHasFocus = true; selectAll(); if (cursorBlinkTimer == 0) cursorBlinkTimer = new YTimer(300); if (cursorBlinkTimer) { cursorBlinkTimer->setTimerListener(this); cursorBlinkTimer->startTimer(); } } else if (focus.type == FocusOut/* && fHasFocus == true*/) { fHasFocus = false; repaint(); if (cursorBlinkTimer) { if (cursorBlinkTimer->getTimerListener() == this) { cursorBlinkTimer->stopTimer(); cursorBlinkTimer->setTimerListener(0); } } } } bool YInputLine::handleAutoScroll(const XMotionEvent & /*mouse*/) { curPos += fAutoScrollDelta; leftOfs += fAutoScrollDelta; int c = curPos; if (fAutoScrollDelta < 0) c = offsetToPos(leftOfs); else if (fAutoScrollDelta > 0) c = offsetToPos(leftOfs + width()); curPos = c; limit(); repaint(); return true; } bool YInputLine::handleTimer(YTimer *t) { if (t == cursorBlinkTimer) { fCursorVisible = fCursorVisible ? false : true; repaint(); return true; } return false; } bool YInputLine::move(int pos, bool extend) { int textLen = fText.length(); if (curPos < 0 || curPos > textLen) return false; if (curPos != pos || (!extend && curPos != markPos)) { curPos = pos; if (!extend) markPos = curPos; limit(); repaint(); } return true; } void YInputLine::limit() { int textLen = fText.length(); if (curPos > textLen) curPos = textLen; if (curPos < 0) curPos = 0; if (markPos > textLen) markPos = textLen; if (markPos < 0) markPos = 0; ref font = inputFont; if (font != null) { int curOfs = font->textWidth(fText.substring(0, curPos)); int curLen = font->textWidth(fText.substring(0, textLen)); if (curOfs >= leftOfs + int(width()) + 1) leftOfs = curOfs - width() + 2; if (curOfs < leftOfs) leftOfs = curOfs; if (leftOfs + int(width()) + 1 > curLen) leftOfs = curLen - width() + 1; if (leftOfs < 0) leftOfs = 0; } } void YInputLine::replaceSelection(const ustring &str) { int min, max; if (curPos > markPos) { min = markPos; max = curPos; } else { min = curPos; max = markPos; } ustring newStr = fText.replace(min, max - min, str); if (newStr != null) { fText = newStr; curPos = markPos = min + str.length(); limit(); repaint(); } } bool YInputLine::deleteSelection() { if (hasSelection()) { replaceSelection(null); return true; } return false; } bool YInputLine::deleteNextChar() { int textLen = fText.length(); if (curPos < textLen) { markPos = curPos + 1; deleteSelection(); return true; } return false; } bool YInputLine::deletePreviousChar() { if (curPos > 0) { markPos = curPos - 1; deleteSelection(); return true; } return false; } bool YInputLine::insertChar(char ch) { char s[2] = { ch, 0 }; replaceSelection(s); return true; } #define CHCLASS(c) ((c) == ' ') int YInputLine::nextWord(int p, bool sep) { int textLen = fText.length(); while (p < textLen && (CHCLASS(fText.charAt(p)) == CHCLASS(fText.charAt(p + 1)) || (!sep && CHCLASS(fText.charAt(p))))) { p++; } if (p < textLen) p++; return p; } int YInputLine::prevWord(int p, bool sep) { if (p > 0 && !sep) p--; while (p > 0 && (CHCLASS(fText.charAt(p)) == CHCLASS(fText.charAt(p - 1)) || (!sep && CHCLASS(fText.charAt(p))))) { p--; } return p; } bool YInputLine::deleteNextWord() { int p = nextWord(curPos, false); if (p != curPos) { markPos = p; return deleteSelection(); } return false; } bool YInputLine::deletePreviousWord() { int p = prevWord(curPos, false); if (p != curPos) { markPos = p; return deleteSelection(); } return false; } bool YInputLine::deleteToEnd() { int textLen = fText.length(); if (curPos < textLen) { markPos = textLen; return deleteSelection(); } return false; } bool YInputLine::deleteToBegin() { if (curPos > 0) { markPos = 0; return deleteSelection(); } return false; } void YInputLine::selectAll() { markPos = curPos = 0; curPos = fText.length(); fSelecting = false; limit(); repaint(); } void YInputLine::unselectAll() { fSelecting = false; if (markPos != curPos) { markPos = curPos; repaint(); } } void YInputLine::cutSelection() { if (fText == null) return ; if (hasSelection()) { copySelection(); deleteSelection(); } } void YInputLine::copySelection() { int min, max; if (hasSelection()) { if (fText == null) return ; if (curPos > markPos) { min = markPos; max = curPos; } else { min = curPos; max = markPos; } xapp->setClipboardText(fText.substring(min, max - min)); } } void YInputLine::actionPerformed(YAction *action, unsigned int /*modifiers*/) { if (action == actionSelectAll) selectAll(); else if (action == actionPaste) requestSelection(false); else if (action == actionPasteSelection) requestSelection(true); else if (action == actionCopy) copySelection(); else if (action == actionCut) cutSelection(); } void YInputLine::autoScroll(int delta, const XMotionEvent *motion) { fAutoScrollDelta = delta; beginAutoScroll(delta ? true : false, motion); } #endif icewm-1.3.7/src/yprefs.cc0000664000076600007660000000011311463274240014230 0ustar develdevel#include "config.h" #include "ylib.h" #define CFGDEF #include "yprefs.h" icewm-1.3.7/src/ysocket.cc0000644000076600007660000001174611463274240014415 0ustar develdevel/* * IceWM * * Copyright (C) 2002 Marko Macek */ #include "config.h" #include "base.h" #include "ysocket.h" #include "yapp.h" #include "debug.h" #include #ifdef __FreeBSD__ #include #endif #include #include #include #include #include #include #include YSocket::YSocket() { fListener = 0; rdbuf = 0; rdbuflen = 0; connecting = false; reading = false; registered = false; } YSocket::~YSocket() { if (registered) { registered = false; app->unregisterPoll(this); } if (fFd != -1) { ::close(fFd); fFd = -1; } } int YSocket::connect(struct sockaddr *server_addr, int addrlen) { int fd; if (this->fFd != -1) { ::close(this->fFd); this->fFd = -1; } fd = socket(PF_INET, SOCK_STREAM, 0); if (fd == -1) return -errno; if (fcntl(fd, F_SETFL, O_NONBLOCK) == -1) { ::close(fd); return -errno; } if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) { ::close(fd); return -errno; } MSG(("connecting.")); if (::connect(fd, server_addr, addrlen) == -1) { if (errno == EINPROGRESS) { MSG(("in progress")); connecting = true; this->fFd = fd; if (!registered) { registered = true; app->registerPoll(this); } return 0; } MSG(("error")); ::close(fd); return -errno; } this->fFd = fd; if (fListener) fListener->socketConnected(); return 0; } int YSocket::socketpair(int *otherfd) { int fds[2] = { 0, 0 }; *otherfd = -1; if (registered) { registered = false; app->unregisterPoll(this); } if (this->fFd != -1) { ::close(this->fFd); this->fFd = -1; } int rc = ::socketpair(AF_UNIX, SOCK_STREAM, PF_UNIX, fds); if (rc != -1) { this->fFd = fds[0]; *otherfd = fds[1]; if (fcntl(this->fFd, F_SETFL, O_NONBLOCK) == -1) { ::close(this->fFd); ::close(*otherfd); return -errno; } if (fcntl(this->fFd, F_SETFD, FD_CLOEXEC) == -1) { ::close(this->fFd); ::close(*otherfd); return -errno; } registered = true; app->registerPoll(this); } return rc; } int YSocket::close() { if (registered) { registered = false; app->unregisterPoll(this); } if (fFd == -1) return -EINVAL; if (::close(fFd) == -1) return -errno; fFd = -1; return 0; } int YSocket::read(char *buf, int len) { rdbuf = buf; rdbuflen = len; reading = true; if (!registered) { registered = true; app->registerPoll(this); } return 0; } int YSocket::write(const char *buf, int len) { int rc; // must loop !!! rc = ::write(fFd, (const void *)buf, len); if (rc == -1) return -errno; else return rc; } void YSocket::notifyRead() { if (reading) { reading = false; if (registered) { registered = false; app->unregisterPoll(this); } int rc; rc = ::read(fFd, rdbuf, rdbuflen); if (rc == 0) { if (fListener) fListener->socketError(0); return ; } else if (rc == -1) { if (errno == EAGAIN || errno == EWOULDBLOCK) { reading = true; if (!registered) { registered = true; app->registerPoll(this); } } else { if (fListener) fListener->socketError(-errno); } return ; } if (fListener) fListener->socketDataRead(rdbuf, rc); } } void YSocket::notifyWrite() { if (connecting) { int err = 0; char x[1]; connecting = false; MSG(("connected")); if (registered) { registered = false; app->unregisterPoll(this); } if (::recv(fFd, x, 0, 0) == -1) { ///!!! MSG(("after connect check")); if (errno == EWOULDBLOCK || errno == EAGAIN) { } else if (errno == ENOTCONN) { connecting = true; if (!registered) { registered = true; app->registerPoll(this); } return ; } else { err = errno; MSG(("here")); if (fListener) fListener->socketError(err); return ; } } if (fListener) fListener->socketConnected(); } } bool YSocket::forRead() { if (reading) return true; else return false; } bool YSocket::forWrite() { if (connecting) return true; else return false; } icewm-1.3.7/src/apppstatus.cc0000644000076600007660000004325511463274240015140 0ustar develdevel// ////////////////////////////////////////////////////////////////////////// // IceWM: src/NetStatus.cc // by Mark Lawrence // // Linux-ISDN/ippp-Upgrade // by Denis Boehme // 6.01.2000 // // !!! share code with cpu status // // KNOWN BUGS: - first measurement is throwed off // // ////////////////////////////////////////////////////////////////////////// #define NEED_TIME_H #include "config.h" #include "ylib.h" #include "sysdep.h" #include "wmtaskbar.h" #include "apppstatus.h" #include "wmapp.h" #ifdef HAVE_NET_STATUS #include "prefs.h" #include "intl.h" #include #include #include #ifdef __FreeBSD__ #include #include #endif extern ref taskbackPixmap; NetStatus::NetStatus(mstring netdev, IAppletContainer *taskBar, YWindow *aParent): YWindow(aParent), fNetDev(netdev) { fTaskBar = taskBar; ppp_in = new long[taskBarNetSamples]; ppp_out = new long[taskBarNetSamples]; // clear out the data for (int i = 0; i < taskBarNetSamples; i++) ppp_in[i] = ppp_out[i] = 0; color[0] = new YColor(clrNetReceive); color[1] = new YColor(clrNetSend); color[2] = *clrNetIdle ? new YColor(clrNetIdle) : NULL; setSize(taskBarNetSamples, 20); fUpdateTimer = new YTimer(); if (fUpdateTimer) { fUpdateTimer->setInterval(taskBarNetDelay); fUpdateTimer->setTimerListener(this); fUpdateTimer->startTimer(); } prev_ibytes = prev_obytes = offset_ibytes = offset_obytes = 0; memset(&prev_time, 0, sizeof(prev_time)); // set prev values for first updateStatus getCurrent(0, 0); wasUp = true; // test for isdn-device useIsdn = fNetDev.startsWith("ippp"); // unset phoneNumber strcpy(phoneNumber,""); updateStatus(); start_time = time(NULL); start_ibytes = cur_ibytes; start_obytes = cur_obytes; updateToolTip(); updateVisible(true); } NetStatus::~NetStatus() { delete[] color; delete[] ppp_in; delete[] ppp_out; delete fUpdateTimer; } void NetStatus::updateVisible(bool aVisible) { if (visible() != aVisible) { if (aVisible) show(); else hide(); fTaskBar->relayout(); } } bool NetStatus::handleTimer(YTimer *t) { if (t != fUpdateTimer) return false; bool up = isUp(); if (up) { if (!wasUp) { for (int i = 0; i < taskBarNetSamples; i++) ppp_in[i] = ppp_out[i] = 0; start_time = time(NULL); cur_ibytes = 0; cur_obytes = 0; updateStatus(); start_ibytes = cur_ibytes; start_obytes = cur_obytes; updateVisible(true); } updateStatus(); if (toolTipVisible()) updateToolTip(); } else // link is down if (wasUp) updateVisible(false); wasUp = up; return true; } void NetStatus::updateToolTip() { char status[400]; cstring netdev(fNetDev); if (isUp()) { char const * const sizeUnits[] = { "B", "KiB", "MiB", "GiB", "TiB", NULL }; char const * const rateUnits[] = { "Bps", "Kps", "Mps", NULL }; long const t(time(NULL) - start_time); long long vi(cur_ibytes - start_ibytes); long long vo(cur_obytes - start_obytes); long ci(ppp_in[taskBarNetSamples - 1]); long co(ppp_out[taskBarNetSamples - 1]); /* ai and oi were keeping nonsenses (if were not reset by * double-click) because of bad control of start_obytes and * start_ibytes (these were zeros that means buggy) * * Note: as start_obytes and start_ibytes now keep right values, * 'Transferred' now displays amount related to 'Online time' (and not * related to uptime of machine as was displayed before) -stibor- */ long ai(t ? vi / t : 0); long ao(t ? vo / t : 0); long long cai = 0; long long cao = 0; for (int ii = 0; ii < taskBarNetSamples; ii++) { cai += ppp_in[ii]; cao += ppp_out[ii]; } cai /= taskBarNetSamples; cao /= taskBarNetSamples; const char * const viUnit(niceUnit(vi, sizeUnits)); const char * const voUnit(niceUnit(vo, sizeUnits)); const char * const ciUnit(niceUnit(ci, rateUnits)); const char * const coUnit(niceUnit(co, rateUnits)); const char * const aiUnit(niceUnit(ai, rateUnits)); const char * const aoUnit(niceUnit(ao, rateUnits)); const char * const caoUnit(niceUnit(cao, rateUnits)); const char * const caiUnit(niceUnit(cai, rateUnits)); sprintf(status, _("Interface %s:\n" " Current rate (in/out):\t%li %s/%li %s\n" " Current average (in/out):\t%lli %s/%lli %s\n" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld" "%s%s"), netdev.c_str(), ci, ciUnit, co, coUnit, cai, caiUnit, cao, caoUnit, ai, aiUnit, ao, aoUnit, vi, viUnit, vo, voUnit, t / 3600, t / 60 % 60, t % 60, *phoneNumber ? _("\n Caller id:\t") : "", phoneNumber); } else { sprintf(status, "%.50s:", netdev.c_str()); } setToolTip(status); } void NetStatus::handleClick(const XButtonEvent &up, int count) { if (up.button == 1) { if (taskBarLaunchOnSingleClick ? count == 1 : !(count % 2)) { if (up.state & ControlMask) { start_time = time(NULL); start_ibytes = cur_ibytes; start_obytes = cur_obytes; } else { if (netCommand && netCommand[0]) wmapp->runCommandOnce(netClassHint, netCommand); } } } } void NetStatus::paint(Graphics &g, const YRect &/*r*/) { long h = height(); long b_in_max = 0; long b_out_max = 0; for (int i = 0; i < taskBarNetSamples; i++) { long in = ppp_in[i]; long out = ppp_out[i]; if (in > b_in_max) b_in_max = in; if (out > b_out_max) b_out_max = out; } long maxBytes = b_in_max + b_out_max; if (maxBytes < 1024) maxBytes = 1024; ///!!! this should really be unified with acpustatus.cc for (int i = 0; i < taskBarNetSamples; i++) { if (1 /* ppp_in[i] > 0 || ppp_out[i] > 0 */) { long round = maxBytes / h / 2; int inbar, outbar; if ((inbar = (h * (long long) (ppp_in[i] + round)) / maxBytes)) { g.setColor(color[0]); /* h - 1 means bottom */ g.drawLine(i, h - 1, i, h - inbar); } if ((outbar = (h * (long long) (ppp_out[i] + round)) / maxBytes)) { g.setColor(color[1]); /* 0 means top */ g.drawLine(i, 0, i, outbar - 1); } if (inbar + outbar < h) { int l = outbar, t = h - inbar - 1; /* g.setColor(color[2]); //g.drawLine(i, 0, i, h - tot - 2); g.drawLine(i, l, i, t - l); */ if (color[2]) { g.setColor(color[2]); g.drawLine(i, l, i, t); } else { #ifdef CONFIG_GRADIENTS ref gradient(parent()->getGradient()); if (gradient != null) g.drawImage(gradient, x() + i, y() + l, width(), t - l, i, l); else #endif if (taskbackPixmap != null) g.fillPixmap(taskbackPixmap, i, l, width(), t - l, x() + i, y() + l); } } } else { /* Not reached: */ if (color[2]) { g.setColor(color[2]); g.drawLine(i, 0, i, h - 1); } else { #ifdef CONFIG_GRADIENTS ref gradient(parent()->getGradient()); if (gradient != null) g.drawImage(gradient, x() + i, y(), width(), h, i, 0); else #endif if (taskbackPixmap != null) g.fillPixmap(taskbackPixmap, i, 0, width(), h, x() + i, y()); } } } } /** * Check isdnstatus, by parsing /dev/isdninfo. * * Need read-access on /dev/isdninfo. */ bool NetStatus::isUpIsdn() { #ifdef linux char str[2048]; char val[5][32]; char *p = str; int busage; int bflags; long long len, i; int f = open("/dev/isdninfo", O_RDONLY); if (f < 0) return false; len = read(f, str, 2047); close(f); if (len <=0) return false; str[len]='\0'; bflags=0; busage=0; //msg("dbs: len is %d", len); while( true ) { if (strncmp(p, "flags:", 6)==0) { sscanf(p, "%s %s %s %s %s", val[0], val[1], val[2], val[3], val[4]); for (i = 0 ; i < 4; i++) { if (strcmp(val[i+1],"0") != 0) bflags|=1< 0) { if (fNetDev.equals(ifr->ifr_name)) { close(s); return true; } len -= sizeof(struct ifreq); ifr++; } close(s); return false; #endif #endif } void NetStatus::updateStatus() { int last = taskBarNetSamples - 1; for (int i = 0; i < last; i++) { ppp_in[i] = ppp_in[i + 1]; ppp_out[i] = ppp_out[i + 1]; } getCurrent(&ppp_in[last], &ppp_out[last]); /* These two lines clears first measurement; you can throw these lines * off, but bug will occur: on startup, the _second_ bar will show * always zero -stibor- */ if (!wasUp) ppp_in[last] = ppp_out[last] = 0; repaint(); } void NetStatus::getCurrent(long *in, long *out) { #if 0 struct ifpppstatsreq req; // from in the linux world memset(&req, 0, sizeof(req)); #ifdef linux #undef ifr_name #define ifr_name ifr__name req.stats_ptr = (caddr_t) &req.stats; #endif // linux sprintf(req.ifr_name, PPP_DEVICE); if (ioctl(s, SIOCGPPPSTATS, &req) != 0) { if (errno == ENOTTY) { //perror("ioctl"); } else { // just not connected? //perror("?? ioctl?"); return; } } #endif cur_ibytes = 0; cur_obytes = 0; #ifdef linux FILE *fp = fopen("/proc/net/dev", "r"); if (!fp) return ; char buf[512]; while (fgets(buf, sizeof(buf), fp) != NULL) { char *p = buf; while (*p == ' ') p++; cstring cs(fNetDev); if (strncmp(p, cs.c_str(), cs.c_str_len()) == 0 && p[cs.c_str_len()] == ':') { int dummy; p = strchr(p, ':') + 1; if (sscanf(p, "%llu %*d %*d %*d %*d %*d %*d %*d" " %llu %*d %*d %*d %*d %*d %*d %d", &cur_ibytes, &cur_obytes, &dummy) != 3) { long long ipackets = 0, opackets = 0; sscanf(p, "%lld %*d %*d %*d %*d" " %lld %*d %*d %*d %*d %*d", &ipackets, &opackets); // for linux<2.0 fake packets as bytes (we only need relative values anyway) cur_ibytes = ipackets; cur_obytes = opackets; } //msg("cur:%lld %lld", cur_ibytes, cur_obytes); break; } } fclose(fp); #endif //linux #ifdef __FreeBSD__ // FreeBSD code by Ronald Klop struct ifmibdata ifmd; size_t ifmd_size=sizeof ifmd; int nr_network_devs; size_t int_size=sizeof nr_network_devs; int name[6]; name[0] = CTL_NET; name[1] = PF_LINK; name[2] = NETLINK_GENERIC; name[3] = IFMIB_IFDATA; name[5] = IFDATA_GENERAL; if(sysctlbyname("net.link.generic.system.ifcount",&nr_network_devs, &int_size,(void*)0,0) == -1) { printf("%s@%d: %s\n",__FILE__,__LINE__,strerror(errno)); } else { for(int i=1;i<=nr_network_devs;i++) { name[4] = i; /* row of the ifmib table */ if (sysctl(name, 6, &ifmd, &ifmd_size, (void *)0, 0) == -1) { warn("%s@%d: %s\n",__FILE__,__LINE__,strerror(errno)); continue; } if (mstring(ifmd.ifmd_name).compareTo(fNetDev) == 0) { cur_ibytes = ifmd.ifmd_data.ifi_ibytes; cur_obytes = ifmd.ifmd_data.ifi_obytes; break; } } } #endif //FreeBSD #ifdef __NetBSD__ struct ifdatareq ifdr; struct if_data * const ifi = &ifdr.ifdr_data; int s; s = socket(AF_INET, SOCK_DGRAM, 0); if (s != -1) { fNetDev.copy(ifdr.ifdr_name, sizeof(ifdr.ifdr_name)); if (ioctl(s, SIOCGIFDATA, &ifdr) != -1) { cur_ibytes = ifi->ifi_ibytes; cur_obytes = ifi->ifi_obytes; } close(s); } #endif //__NetBSD__ #ifdef __OpenBSD__ struct ifreq ifdr; struct if_data ifi; int s; s = socket(AF_INET, SOCK_DGRAM, 0); if (s != -1) { fNetDev.copy(ifdr.ifr_name, sizeof(ifdr.ifr_name)); ifdr.ifr_data = (caddr_t) &ifi; if (ioctl(s, SIOCGIFDATA, &ifdr) != -1) { cur_ibytes = ifi.ifi_ibytes; cur_obytes = ifi.ifi_obytes; } close(s); } #endif //__OpenBSD__ // correct the values and look for overflows //msg("w/o corrections: ibytes: %lld, prev_ibytes; %lld, offset: %lld", cur_ibytes, prev_ibytes, offset_ibytes); cur_ibytes += offset_ibytes; cur_obytes += offset_obytes; if (cur_ibytes < prev_ibytes) // har, har, overflow. Use the recent prev_ibytes value as offset this time cur_ibytes = offset_ibytes = prev_ibytes; if (cur_obytes < prev_obytes) // har, har, overflow. Use the recent prev_obytes value as offset this time cur_obytes = offset_obytes = prev_obytes; struct timeval curr_time; gettimeofday(&curr_time, NULL); double delta_t = (double) ((curr_time.tv_sec - prev_time.tv_sec) * 1000000L + (curr_time.tv_usec - prev_time.tv_usec)) / 1000000.0; if (in) { *in = (long) ((cur_ibytes - prev_ibytes) / delta_t); *out = (long) ((cur_obytes - prev_obytes) / delta_t); } //msg("%d %d", *in, *out); prev_time.tv_sec = curr_time.tv_sec; prev_time.tv_usec = curr_time.tv_usec; prev_ibytes = cur_ibytes; prev_obytes = cur_obytes; } #endif // HAVE_NET_STATUS icewm-1.3.7/src/yxtray.cc0000644000076600007660000002432711463274240014273 0ustar develdevel#include "config.h" #include "ylib.h" #include "yxtray.h" #include "yrect.h" #include "yxapp.h" #include "prefs.h" #include "yprefs.h" #include "wmtaskbar.h" #include "sysdep.h" extern YColor *taskBarBg; // make this configurable #define TICON_H_MAX 24 #define TICON_W_MAX 30 class YXTrayProxy: public YWindow { public: YXTrayProxy(const char *atom, YXTray *tray, YWindow *aParent = 0); ~YXTrayProxy(); virtual void handleClientMessage(const XClientMessageEvent &message); private: Atom _NET_SYSTEM_TRAY_OPCODE; Atom _NET_SYSTEM_TRAY_MESSAGE_DATA; Atom _NET_SYSTEM_TRAY_S0; /// FIXME YXTray *fTray; }; YXTrayProxy::YXTrayProxy(const char *atom, YXTray *tray, YWindow *aParent): YWindow(aParent) { fTray = tray; _NET_SYSTEM_TRAY_OPCODE = XInternAtom(xapp->display(), "_NET_SYSTEM_TRAY_OPCODE", False); _NET_SYSTEM_TRAY_MESSAGE_DATA = XInternAtom(xapp->display(), "_NET_SYSTEM_TRAY_MESSAGE_DATA", False); _NET_SYSTEM_TRAY_S0 = XInternAtom(xapp->display(), atom, False); XSetSelectionOwner(xapp->display(), _NET_SYSTEM_TRAY_S0, handle(), CurrentTime); XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = desktop->handle(); xev.message_type = _NET_SYSTEM_TRAY_S0; xev.format = 32; xev.data.l[0] = CurrentTime; xev.data.l[1] = handle(); XSendEvent(xapp->display(), desktop->handle(), False, StructureNotifyMask, (XEvent *) &xev); } YXTrayProxy::~YXTrayProxy() { XSetSelectionOwner(xapp->display(), _NET_SYSTEM_TRAY_S0, None, CurrentTime); } void YXTrayProxy::handleClientMessage(const XClientMessageEvent &message) { /// TODO #warning "implement systray notifications" if (message.message_type == _NET_SYSTEM_TRAY_OPCODE) { if (message.data.l[1] == SYSTEM_TRAY_REQUEST_DOCK) fTray->trayRequestDock(message.data.l[2]); else if (message.data.l[1] == SYSTEM_TRAY_BEGIN_MESSAGE) msg("systemTrayBeginMessage"); //fTray->trayBeginMessage(); else if (message.data.l[1] == SYSTEM_TRAY_CANCEL_MESSAGE) msg("systemTrayCancelMessage"); //fTray->trayCancelMessage(); else { msg("systemTray???Message"); } } else if (message.message_type == _NET_SYSTEM_TRAY_MESSAGE_DATA) { msg("systemTrayMessageData"); } } YXTrayEmbedder::YXTrayEmbedder(YXTray *tray, Window win): YXEmbed(tray) { fTray = tray; setStyle(wsManager); fDocked = new YXEmbedClient(this, this, win); XSetWindowBorderWidth(xapp->display(), client_handle(), 0); XAddToSaveSet(xapp->display(), client_handle()); client()->reparent(this, 0, 0); fVisible = true; fDocked->show(); } YXTrayEmbedder::~YXTrayEmbedder() { fDocked->hide(); fDocked->reparent(desktop, 0, 0); delete fDocked; fDocked = 0; } void YXTrayEmbedder::detach() { XAddToSaveSet(xapp->display(), fDocked->handle()); fDocked->reparent(desktop, 0, 0); fDocked->hide(); XRemoveFromSaveSet(xapp->display(), fDocked->handle()); } void YXTrayEmbedder::destroyedClient(Window win) { fTray->destroyedClient(win); } void YXTrayEmbedder::handleClientUnmap(Window win) { fTray->showClient(win, false); } void YXTrayEmbedder::paint(Graphics &g, const YRect &/*r*/) { #ifdef CONFIG_TASKBAR if (taskBarBg) g.setColor(taskBarBg); #endif g.fillRect(0, 0, width(), height()); } void YXTrayEmbedder::configure(const YRect &r) { YXEmbed::configure(r); fDocked->setGeometry(YRect(0, 0, r.width(), r.height())); } void YXTrayEmbedder::handleConfigureRequest(const XConfigureRequestEvent &configureRequest) { fTray->handleConfigureRequest(configureRequest); } void YXTrayEmbedder::handleMapRequest(const XMapRequestEvent &mapRequest) { fDocked->show(); fTray->showClient(mapRequest.window, true); } YXTray::YXTray(YXTrayNotifier *notifier, bool internal, const char *atom, YWindow *aParent): YWindow(aParent) { #ifndef LITE if (taskBarBg == 0) { taskBarBg = new YColor(clrDefaultTaskBar); } #endif fNotifier = notifier; fInternal = internal; fTrayProxy = new YXTrayProxy(atom, this); show(); #ifndef LITE XSetWindowBackground(xapp->display(), handle(), taskBarBg->pixel()); #endif } YXTray::~YXTray() { for (int i = 0; i < fDocked.getCount(); i++) { delete fDocked[i]; } delete fTrayProxy; fTrayProxy = 0; } void YXTray::trayRequestDock(Window win) { MSG(("trayRequestDock")); destroyedClient(win); YXTrayEmbedder *embed = new YXTrayEmbedder(this, win); MSG(("size %d %d", embed->client()->width(), embed->client()->height())); int ww = embed->client()->width(); int hh = embed->client()->height(); if (!fInternal) { // !!! hack, hack if (ww < 16 || ww > 8 * TICON_W_MAX) ww = TICON_W_MAX; if (hh < 16 || hh > TICON_H_MAX) hh = TICON_H_MAX; if (ww < hh) ww = hh; } embed->setSize(ww, hh); embed->fVisible = true; fDocked.append(embed); relayout(); } void YXTray::destroyedClient(Window win) { /// MSG(("undock %d", fDocked.getCount())); for (int i = 0; i < fDocked.getCount(); i++) { YXTrayEmbedder *ec = fDocked[i]; /// msg("win %lX %lX", ec->handle(), win); if (ec->client_handle() == win) { /// msg("removing %d %lX", i, win); fDocked.remove(i); break; } } relayout(); } void YXTray::handleConfigureRequest(const XConfigureRequestEvent &configureRequest) { MSG(("tray configureRequest w=%d h=%d", configureRequest.width, configureRequest.height)); bool changed = false; for (int i = 0; i < fDocked.getCount(); i++) { YXTrayEmbedder *ec = fDocked[i]; if (ec->client_handle() == configureRequest.window) { int w = configureRequest.width; int h = configureRequest.height; if (h != TICON_H_MAX) { w = w * h / TICON_H_MAX; //MCM FIX h = TICON_H_MAX; } if (w < h) w = h; if (w != ec->width() || h != ec->height()) changed = true; ec->setSize(w/*configureRequest.width*/, h); } } if (changed) relayout(); } void YXTray::showClient(Window win, bool showClient) { for (int i = 0; i < fDocked.getCount(); i++) { YXTrayEmbedder *ec = fDocked[i]; if (ec->client_handle() == win) { ec->fVisible = showClient; if (showClient) ec->show(); else ec->hide(); } } relayout(); } void YXTray::detachTray() { for (int i = 0; i < fDocked.getCount(); i++) { YXTrayEmbedder *ec = fDocked[i]; ec->detach(); } fDocked.clear(); } void YXTray::paint(Graphics &g, const YRect &/*r*/) { if (fInternal) return; #ifdef CONFIG_TASKBAR if (taskBarBg) g.setColor(taskBarBg); #endif g.fillRect(0, 0, width(), height()); if (trayDrawBevel && fDocked.getCount()) g.draw3DRect(0, 0, width() - 1, height() - 1, false); } void YXTray::configure(const YRect &r) { YWindow::configure(r); relayout(); } void YXTray::backgroundChanged() { if (fInternal) return; #ifdef CONFIG_TASKBAR XSetWindowBackground(xapp->display(),handle(), taskBarBg->pixel()); #endif for (int i = 0; i < fDocked.getCount(); i++) { YXTrayEmbedder *ec = fDocked[i]; #ifdef CONFIG_TASKBAR XSetWindowBackground(xapp->display(), ec->handle(), taskBarBg->pixel()); XSetWindowBackground(xapp->display(), ec->client_handle(), taskBarBg->pixel()); #endif ec->repaint(); } relayout(); repaint(); } void YXTray::relayout() { int aw = 0; int h = TICON_H_MAX; if (!fInternal && trayDrawBevel) aw+=1; int cnt = 0; for (int i = 0; i < fDocked.getCount(); i++) { YXTrayEmbedder *ec = fDocked[i]; if (!ec->fVisible) continue; cnt++; int eh(h), ew=ec->width(), ay(0); if (!fInternal) { ew=min(TICON_W_MAX,ec->width()); if (trayDrawBevel) { eh-=2; ay=1; } } ec->setGeometry(YRect(aw,ay,ew,eh)); aw += ew; } if (!fInternal && trayDrawBevel) aw+=1; int w = aw; if (!fInternal) { if (w < 1) w = 1; } else { if (w < 2) w = 0; } if (cnt == 0) { hide(); w = 0; } else { show(); } MSG(("relayout %d %d : %d %d", w, h, width(), height())); if (w != width() || h != height()) { setSize(w, h); if (fNotifier) fNotifier->trayChanged(); } for (int i = 0; i < fDocked.getCount(); i++) { YXTrayEmbedder *ec = fDocked[i]; if (ec->fVisible) ec->show(); } MSG(("clients %d width: %d %d", fDocked.getCount(), width(), visible() ? 1 : 0)); } bool YXTray::kdeRequestDock(Window win) { if (fDocked.getCount() == 0) return false; puts("trying to dock"); char trayatom[64]; sprintf(trayatom, "_NET_SYSTEM_TRAY_S%d", xapp->screen()); Atom tray = XInternAtom(xapp->display(), trayatom, False); Atom opcode = XInternAtom(xapp->display(), "_NET_SYSTEM_TRAY_OPCODE", False); Window w = XGetSelectionOwner(xapp->display(), tray); if (w && w != handle()) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = w; xev.message_type = opcode; //_NET_SYSTEM_TRAY_OPCODE; xev.format = 32; xev.data.l[0] = CurrentTime; xev.data.l[1] = SYSTEM_TRAY_REQUEST_DOCK; xev.data.l[2] = win; //fTray2->handle(); XSendEvent(xapp->display(), w, False, StructureNotifyMask, (XEvent *) &xev); return true; } return false; } icewm-1.3.7/src/wmswitch.cc0000644000076600007660000005434711463274240014605 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2003 Marko Macek * * Windows/OS2 like Alt{+Shift}+Tab window switching */ #include "config.h" #include "yimage.h" #include "ykey.h" #include "wmswitch.h" #include "wmmgr.h" #include "wmframe.h" #include "yxapp.h" #include "prefs.h" #include "yrect.h" #include "yicon.h" #include "wmwinlist.h" YColor *SwitchWindow::switchFg(NULL); YColor *SwitchWindow::switchBg(NULL); YColor *SwitchWindow::switchHl(NULL); YColor *SwitchWindow::switchMbg(NULL); YColor *SwitchWindow::switchMfg(NULL); ref SwitchWindow::switchFont; SwitchWindow * switchWindow(NULL); SwitchWindow::SwitchWindow(YWindow *parent): YPopupWindow(parent) INIT_GRADIENT(fGradient, NULL) { // why this checks here? if (switchBg == 0) switchBg = new YColor(clrQuickSwitch); if (switchFg == 0) switchFg = new YColor(clrQuickSwitchText); if (/*switchHl == 0 &&*/ clrQuickSwitchActive) switchHl = new YColor(clrQuickSwitchActive); if (switchFont == null) switchFont = YFont::getFont(XFA(switchFontName)); // I prefer clrNormalMenu but some themes use inverted settings where // clrNormalMenu is the same as clrQuickSwitch if (switchHl) switchMbg = switchHl; else if (!strcmp(clrNormalMenu, clrQuickSwitch)) switchMbg = new YColor(clrActiveMenuItem); else switchMbg = new YColor(clrNormalMenu); switchMfg = new YColor(clrActiveTitleBarText); fActiveWindow = 0; fLastWindow = 0; modsDown = 0; isUp = false; fRoot = manager; zCount = 0; zList = 0; resize(-1); setStyle(wsSaveUnder | wsOverrideRedirect); } SwitchWindow::~SwitchWindow() { if (isUp) { cancelPopup(); isUp = false; } #ifdef CONFIG_GRADIENTS fGradient = null; #endif } void SwitchWindow::resize(int xiscreen) { int dx, dy, dw, dh; manager->getScreenGeometry(&dx, &dy, &dw, &dh, xiscreen); MSG(("got geometry for %d: %d %d %d %d", xiscreen, dx, dy, dw, dh)); ustring cTitle = fActiveWindow ? fActiveWindow->client()->windowTitle() : null; int aWidth = quickSwitchSmallWindow ? (int) dw * 1/3 : (int) dw * 3/5; int tWidth=0; if (quickSwitchMaxWidth) { int space = (int) switchFont->textWidth(" "); /* make entries one space character wider */ for (int i = 0; i < zCount; i++) { if(zList[i]) { ustring title = zList[i]->client()->windowTitle(); int oWidth = title != null ? (int) switchFont->textWidth(title) + space : 0; if(oWidth > tWidth) tWidth = oWidth; } } } else { tWidth = cTitle != null ? switchFont->textWidth(cTitle) : 0; } #ifndef LITE if (quickSwitchVertical || !quickSwitchAllIcons) tWidth += 2 * quickSwitchIMargin + YIcon::largeSize() + 3; #endif if (tWidth > aWidth) aWidth = tWidth; int const mWidth(dw * 6/7); int w = aWidth; int h = switchFont->height(); #ifndef LITE if (quickSwitchVertical) { w = aWidth; if (w >= mWidth) w = mWidth; w += quickSwitchSepSize; int step = (YIcon::largeSize() + 2 * quickSwitchIMargin); int maxHeight = (int) dh - YIcon::largeSize(); h = zCount * step; if (h > maxHeight) h= maxHeight - (maxHeight % step); } else { int iWidth = zCount * (YIcon::largeSize() + 2 * quickSwitchIMargin) + (quickSwitchHugeIcon ? YIcon::hugeSize() - YIcon::largeSize() : 0); int const iHeight = (quickSwitchHugeIcon ? YIcon::hugeSize() : YIcon::largeSize()) + quickSwitchIMargin * 2; if (iWidth > aWidth) aWidth = iWidth; if (quickSwitchAllIcons) { if (aWidth > w) w = aWidth; } if (w >= mWidth) w = mWidth; if (quickSwitchAllIcons) h += quickSwitchSepSize + iHeight; else { if (iHeight > h) h = iHeight; } } #endif h += quickSwitchVMargin * 2; w += quickSwitchHMargin * 2; setGeometry(YRect(dx + ((dw - w) >> 1), dy + ((dh - h) >> 1), w, h)); } void SwitchWindow::paint(Graphics &g, const YRect &/*r*/) { #ifdef CONFIG_GRADIENTS if (switchbackPixbuf != null && !(fGradient != null && fGradient->width() == width() - 2 && fGradient->height() == height() - 2)) { fGradient = switchbackPixbuf->scale(width() - 2, height() - 2); } #endif g.setColor(switchBg); g.drawBorderW(0, 0, width() - 1, height() - 1, true); #ifdef CONFIG_GRADIENTS if (fGradient != null) g.drawImage(fGradient, 1, 1, width() - 2, height() - 2, 1, 1); else #endif if (switchbackPixmap != null) g.fillPixmap(switchbackPixmap, 1, 1, width() - 3, height() - 3); else g.fillRect(1, 1, width() - 3, height() - 3); #ifndef LITE // for vertical positioning, continue below. Avoid spagheti code. if(quickSwitchVertical) goto verticalMode; #endif if (fActiveWindow) { int tOfs(0); int ih = 0; #ifndef LITE ih = quickSwitchHugeIcon ? YIcon::hugeSize() : YIcon::largeSize(); if (!quickSwitchAllIcons && fActiveWindow->clientIcon() != null) { int iconSize = quickSwitchHugeIcon ? YIcon::hugeSize() : YIcon::largeSize(); ref icon = fActiveWindow->clientIcon(); int iconWidth = iconSize, iconHeight = iconSize; if (icon != null) { if (quickSwitchTextFirst) { icon->draw(g, width() - iconWidth - quickSwitchIMargin, (height() - iconHeight - quickSwitchIMargin) / 2, iconSize); } else { icon->draw(g, quickSwitchIMargin, (height() - iconHeight - quickSwitchIMargin) / 2, iconSize); tOfs = iconWidth + quickSwitchIMargin + quickSwitchSepSize; } } if (quickSwitchSepSize) { const int ip(iconWidth + 2 * quickSwitchIMargin + quickSwitchSepSize/2); const int x(quickSwitchTextFirst ? width() - ip : ip); g.setColor(switchBg->darker()); g.drawLine(x + 0, 1, x + 0, width() - 2); g.setColor(switchBg->brighter()); g.drawLine(x + 1, 1, x + 1, width() - 2); } } #endif g.setColor(switchFg); g.setFont(switchFont); ustring cTitle = fActiveWindow->client()->windowTitle(); if (cTitle != null) { const int x = max((width() - tOfs - switchFont->textWidth(cTitle)) >> 1, 0) + tOfs; const int y(quickSwitchAllIcons ? quickSwitchTextFirst ? quickSwitchVMargin + switchFont->ascent() : height() - quickSwitchVMargin - switchFont->descent() : ((height() + switchFont->height()) >> 1) - switchFont->descent()); g.drawChars(cTitle, x, y); #ifndef LITE if (quickSwitchAllIcons && quickSwitchSepSize) { int const h(quickSwitchVMargin + ih + quickSwitchIMargin * 2 + quickSwitchSepSize / 2); int const y(quickSwitchTextFirst ? height() - h : h); g.setColor(switchBg->darker()); g.drawLine(1, y + 0, width() - 2, y + 0); g.setColor(switchBg->brighter()); g.drawLine(1, y + 1, width() - 2, y + 1); } #endif } #ifndef LITE if (quickSwitchAllIcons) { int const ds(quickSwitchHugeIcon ? YIcon::hugeSize() - YIcon::largeSize() : 0); int const dx(YIcon::largeSize() + 2 * quickSwitchIMargin); const int visIcons((width() - 2 * quickSwitchHMargin) / dx); int curIcon(-1); int const y(quickSwitchTextFirst ? height() - quickSwitchVMargin - ih - quickSwitchIMargin + ds / 2 : quickSwitchVMargin + ds + quickSwitchIMargin - ds / 2); g.setColor(switchHl ? switchHl : switchBg->brighter()); const int off(max(1 + curIcon - visIcons, 0)); const int end(off + visIcons); int x((width() - min(visIcons, zCount) * dx - ds) / 2 + quickSwitchIMargin); for (int i = 0; i < zCount; i++) { YFrameWindow *frame = zList[i]; if (frame->clientIcon() != null) { if (i >= off && i < end) { if (frame == fActiveWindow) { if (quickSwitchFillSelection) g.fillRect(x - quickSwitchIBorder, y - quickSwitchIBorder - ds/2, ih + 2 * quickSwitchIBorder, ih + 2 * quickSwitchIBorder); else g.drawRect(x - quickSwitchIBorder, y - quickSwitchIBorder - ds/2, ih + 2 * quickSwitchIBorder, ih + 2 * quickSwitchIBorder); int iconSize = quickSwitchHugeIcon ? YIcon::hugeSize() : YIcon::largeSize(); ref icon = fActiveWindow->clientIcon(); if (icon != null) icon->draw(g, x, y - ds/2, iconSize); x+= ds; } else { ref icon = frame->clientIcon(); if (icon != null) icon->draw(g, x, y, YIcon::largeSize()); } x += dx; } } } // {} while ((frame = nextWindow(frame, true, true)) != first); } #endif } #ifndef LITE return; verticalMode: if (fActiveWindow) { int ih = 0; //ih = quickSwitchHugeIcon ? YIcon::hugeSize() : YIcon::largeSize(); ih = YIcon::largeSize(); int pos = quickSwitchVMargin; g.setFont(switchFont); g.setColor(switchFg); for (int i = 0; i < zCount; i++) { YFrameWindow *frame = zList[i]; g.setColor(switchFg); if(frame == fActiveWindow) { g.setColor(switchMbg); g.fillRect(quickSwitchHMargin, pos + quickSwitchVMargin , width() - quickSwitchHMargin*2, ih + quickSwitchIMargin ); g.setColor(switchMfg); } ustring cTitle = frame->client()->windowTitle(); if (cTitle != null) { const int x(1+ih + quickSwitchIMargin *2 + quickSwitchHMargin + quickSwitchSepSize); const int y(pos + quickSwitchIMargin + quickSwitchVMargin + ih/2); g.drawChars(cTitle, x, y); } if (frame->clientIcon() != null) { ref icon = frame->clientIcon(); if (quickSwitchTextFirst) { // prepaint icons because of too long strings g.setColor( (frame == fActiveWindow) ? switchMfg : switchMbg); g.fillRect( width() - ih - quickSwitchIMargin *2 - quickSwitchHMargin, pos + quickSwitchVMargin, ih + 2 * quickSwitchIMargin, ih + quickSwitchIMargin); icon->draw(g, width() - ih - quickSwitchIMargin - quickSwitchHMargin, pos + quickSwitchIMargin, YIcon::largeSize()); } else { icon->draw(g, quickSwitchIMargin, pos + quickSwitchIMargin, YIcon::largeSize()); } } pos += ih + 2* quickSwitchIMargin; } if (quickSwitchSepSize) { const int ip(ih + 2 * quickSwitchIMargin + quickSwitchSepSize/2); const int x(quickSwitchTextFirst ? width() - ip : ip); g.setColor(switchBg->darker()); g.drawLine(x + 0, 1, x + 0, height() - 2); g.setColor(switchBg->brighter()); g.drawLine(x + 1, 1, x + 1, height() - 2); } } #endif } int SwitchWindow::getZListCount() { int count = 0; YFrameWindow *w = fRoot->lastFocusFrame(); while (w) { count++; w = w->prevFocus(); } return count; } int SwitchWindow::getZList(YFrameWindow **list, int max) { if (quickSwitchGroupWorkspaces || !quickSwitchToAllWorkspaces) { int activeWorkspace = fRoot->activeWorkspace(); int count = 0; count += GetZListWorkspace(list, max, true, activeWorkspace); if (quickSwitchToAllWorkspaces) { for (int w = 0; w <= workspaceCount; w++) { if (w != activeWorkspace) count += GetZListWorkspace(list + count, max - count, true, w); } } return count; } else { return GetZListWorkspace(list, max, false, -1); } } int SwitchWindow::GetZListWorkspace(YFrameWindow **list, int max, bool workspaceOnly, int workspace) { int count = 0; for (int pass = 0; pass <= 5; pass++) { YFrameWindow *w = fRoot->lastFocusFrame(); while (w) { // pass 0: focused window // pass 1: normal windows // pass 2: minimized windows // pass 3: hidden windows // pass 4: unfocusable windows if ((w->client() && !w->client()->adopted()) && !w->visible()) { w = w->prevFocus(); continue; } if (!w->isUrgent()) { if (workspaceOnly && w->isSticky() && workspace != fRoot->activeWorkspace()) { w = w->prevFocus(); continue; } if (workspaceOnly && !w->visibleOn(workspace)) { w = w->prevFocus(); continue; } } if (w == fRoot->getFocus()) { if (pass == 0) list[count++] = w; } else if (w->isUrgent()) { if (pass == 1) list[count++] = w; } else if (w->frameOptions() & YFrameWindow::foIgnoreQSwitch) { } else if (w->avoidFocus()) { if (pass == 5) list[count++] = w; } else if (w->isHidden()) { if (pass == 4) if (quickSwitchToHidden) list[count++] = w; } else if (w->isMinimized()) { if (pass == 3) if (quickSwitchToMinimized) list[count++] = w; } else { if (pass == 2) list[count++] = w; } w = w->prevFocus(); if (count > max) { msg("wmswitch BUG: limit=%d pass=%d\n", max, pass); return max; } } } return count; } void SwitchWindow::updateZList() { freeZList(); zCount = getZListCount(); zList = new YFrameWindow *[zCount + 1]; // for bug hunt if (zList == 0) zCount = 0; else zCount = getZList(zList, zCount); } void SwitchWindow::freeZList() { if (zList) delete [] zList; zCount = 0; zList = 0; } /* YFrameWindow *SwitchWindow::nextWindow(YFrameWindow *from, bool zdown, bool next) { if (from == 0) { next = false; from = zdown ? manager->topLayer() : manager->bottomLayer(); } int flags = YFrameWindow::fwfFocusable | (quickSwitchToAllWorkspaces ? 0 : YFrameWindow::fwfWorkspace) | YFrameWindow::fwfLayers | YFrameWindow::fwfSwitchable | (next ? YFrameWindow::fwfNext: 0) | (zdown ? 0 : YFrameWindow::fwfBackward); YFrameWindow *n = 0; if (from == 0) return 0; if (zdown) { n = from->findWindow(flags | YFrameWindow::fwfUnminimized | YFrameWindow::fwfNotHidden); if (n == 0 && quickSwitchToMinimized) n = from->findWindow(flags | YFrameWindow::fwfMinimized | YFrameWindow::fwfNotHidden); if (n == 0 && quickSwitchToHidden) n = from->findWindow(flags | YFrameWindow::fwfHidden); if (n == 0) { flags |= YFrameWindow::fwfCycle; n = from->findWindow(flags | YFrameWindow::fwfUnminimized | YFrameWindow::fwfNotHidden); if (n == 0 && quickSwitchToMinimized) n = from->findWindow(flags | YFrameWindow::fwfMinimized | YFrameWindow::fwfNotHidden); if (n == 0 && quickSwitchToHidden) n = from->findWindow(flags | YFrameWindow::fwfHidden); } } else { if (n == 0 && quickSwitchToHidden) n = from->findWindow(flags | YFrameWindow::fwfHidden); if (n == 0 && quickSwitchToMinimized) n = from->findWindow(flags | YFrameWindow::fwfMinimized | YFrameWindow::fwfNotHidden); if (n == 0) n = from->findWindow(flags | YFrameWindow::fwfUnminimized | YFrameWindow::fwfNotHidden); if (n == 0) { flags |= YFrameWindow::fwfCycle; if (n == 0 && quickSwitchToHidden) n = from->findWindow(flags | YFrameWindow::fwfHidden); if (n == 0 && quickSwitchToMinimized) n = from->findWindow(flags | YFrameWindow::fwfMinimized | YFrameWindow::fwfNotHidden); if (n == 0) n = from->findWindow(flags | YFrameWindow::fwfUnminimized | YFrameWindow::fwfNotHidden); } } if (n == 0) n = from->findWindow(flags | YFrameWindow::fwfVisible | (quickSwitchToMinimized) ? 0 : YFrameWindow::fwfUnminimized | YFrameWindow::fwfSame); if (n == 0) n = fLastWindow; return n; } */ YFrameWindow *SwitchWindow::nextWindow(bool zdown) { if (zdown) { zTarget = zTarget + 1; if (zTarget >= zCount) zTarget = 0; } else { zTarget = zTarget - 1; if (zTarget < 0) zTarget = zCount - 1; } if (zTarget >= zCount || zTarget < 0) zTarget = -1; if (zTarget == -1) return 0; else return zList[zTarget]; } void SwitchWindow::begin(bool zdown, int mods) { modsDown = mods & (xapp->AltMask | xapp->MetaMask | xapp->HyperMask | xapp->SuperMask | xapp->ModeSwitchMask | ControlMask); if (isUp) { cancelPopup(); isUp = false; return; } int xiscreen = manager->getScreen(); fLastWindow = fActiveWindow = manager->getFocus(); updateZList(); zTarget = 0; fActiveWindow = nextWindow(zdown); resize(xiscreen); if (fActiveWindow) { displayFocus(fActiveWindow); isUp = popup(0, 0, 0, xiscreen, YPopupWindow::pfNoPointerChange); } { Window root, child; int root_x, root_y, win_x, win_y; unsigned int mask; XQueryPointer(xapp->display(), handle(), &root, &child, &root_x, &root_y, &win_x, &win_y, &mask); if (!modDown(mask)) accept(); } } void SwitchWindow::activatePopup(int /*flags*/) { } void SwitchWindow::deactivatePopup() { } void SwitchWindow::cancel() { if (isUp) { cancelPopup(); isUp = false; } if (fLastWindow) { displayFocus(fLastWindow); } else if (fActiveWindow) { fRoot->activate(fActiveWindow, false, true); } freeZList(); fLastWindow = fActiveWindow = 0; } void SwitchWindow::accept() { if (fActiveWindow == 0) cancel(); else { fRoot->activate(fActiveWindow, true, true); if (isUp) { cancelPopup(); isUp = false; } fActiveWindow->wmRaise(); //manager->activate(fActiveWindow, true); } freeZList(); fLastWindow = fActiveWindow = 0; } void SwitchWindow::displayFocus(YFrameWindow *frame) { manager->switchFocusTo(frame, false); repaint(); } void SwitchWindow::destroyedFrame(YFrameWindow *frame) { if (zList == 0) return; if (frame == fLastWindow) fLastWindow = 0; updateZList(); if (frame == fActiveWindow) { zTarget = -1; fActiveWindow = nextWindow(true); } displayFocus(fActiveWindow); } bool SwitchWindow::handleKey(const XKeyEvent &key) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); unsigned int m = KEY_MODMASK(key.state); unsigned int vm = VMod(m); if (key.type == KeyPress) { if ((IS_WMKEY(k, vm, gKeySysSwitchNext))) { fActiveWindow = nextWindow(true); displayFocus(fActiveWindow); return true; } else if ((IS_WMKEY(k, vm, gKeySysSwitchLast))) { fActiveWindow = nextWindow(false); displayFocus(fActiveWindow); return true; } else if (k == XK_Escape) { cancel(); return true; } if ((IS_WMKEY(k, vm, gKeySysSwitchNext)) && !modDown(m)) { accept(); return true; } } else if (key.type == KeyRelease) { if ((IS_WMKEY(k, vm, gKeySysSwitchNext)) && !modDown(m)) { accept(); return true; } else if (isModKey((KeyCode)key.keycode)) { accept(); return true; } } return YPopupWindow::handleKey(key); } bool SwitchWindow::isModKey(KeyCode c) { KeySym k = XKeycodeToKeysym(xapp->display(), c, 0); if (k == XK_Control_L || k == XK_Control_R || k == XK_Alt_L || k == XK_Alt_R || k == XK_Meta_L || k == XK_Meta_R || k == XK_Super_L || k == XK_Super_R || k == XK_Hyper_L || k == XK_Hyper_R || k == XK_ISO_Level3_Shift || k == XK_Mode_switch) return true; return false; } bool SwitchWindow::modDown(int mod) { int m = mod & (xapp->AltMask | xapp->MetaMask | xapp->HyperMask | xapp->SuperMask | xapp->ModeSwitchMask | ControlMask); if ((m & modsDown) != modsDown) return false; return true; } void SwitchWindow::handleButton(const XButtonEvent &button) { YPopupWindow::handleButton(button); } icewm-1.3.7/src/wmswitch.h0000644000076600007660000000336711463274240014443 0ustar develdevel#ifndef __SWITCH_H #define __SWITCH_H #include "ymenu.h" class YFrameWindow; class YWindowManager; class SwitchWindow: public YPopupWindow { public: SwitchWindow(YWindow *parent = 0); virtual ~SwitchWindow(); virtual void paint(Graphics &g, const YRect &r); void begin(bool zdown, int mods); virtual void activatePopup(int flags); virtual void deactivatePopup(); virtual bool handleKey(const XKeyEvent &key); virtual void handleButton(const XButtonEvent &button); void destroyedFrame(YFrameWindow *frame); private: YWindowManager *fRoot; YFrameWindow *fActiveWindow; YFrameWindow *fLastWindow; #ifdef CONFIG_GRADIENTS ref fGradient; #endif static YColor *switchFg; static YColor *switchBg; static YColor *switchHl; static YColor *switchMbg; static YColor *switchMfg; static ref switchFont; int modsDown; bool isUp; bool modDown(int m); bool isModKey(KeyCode c); void resize(int xiscreen); int getZListCount(); int getZList(YFrameWindow **list, int max); int GetZListWorkspace(YFrameWindow **list, int max, bool workspaceOnly, int workspace); void updateZList(); void freeZList(); int zCount; int zTarget; YFrameWindow **zList; void cancel(); void accept(); void displayFocus(YFrameWindow *frame); //YFrameWindow *nextWindow(YFrameWindow *from, bool zdown, bool next); YFrameWindow *nextWindow(bool zdown); private: // not-used SwitchWindow(const SwitchWindow &); SwitchWindow &operator=(const SwitchWindow &); }; extern SwitchWindow * switchWindow; extern ref switchbackPixmap; #ifdef CONFIG_GRADIENTS extern ref switchbackPixbuf; #endif #endif icewm-1.3.7/src/browse.cc0000644000076600007660000000411211463274240014222 0ustar develdevel/* * IceWM * * Copyright (C) 1998-2001 Marko Macek */ #include "config.h" #ifndef NO_CONFIGURE_MENUS #include "obj.h" #include "objmenu.h" #include "browse.h" #include "wmmgr.h" #include "wmprog.h" #include "yicon.h" #include "sysdep.h" #include "base.h" #include BrowseMenu::BrowseMenu(upath path, YWindow *parent): ObjectMenu(parent) { fPath = path; fModTime = 0; } BrowseMenu::~BrowseMenu() { } void BrowseMenu::updatePopup() { struct stat sb; if (stat(cstring(fPath.path()).c_str(), &sb) != 0) removeAll(); else if (sb.st_mtime > fModTime) { fModTime = sb.st_mtime; removeAll(); DIR *dir; if ((dir = opendir(cstring(fPath.path()).c_str())) != NULL) { struct dirent *de; bool isDir; YMenu *sub; while ((de = readdir(dir)) != NULL) { if (de->d_name[0] != '.') { ustring name(de->d_name); upath npath(fPath.relative(name)); isDir = npath.dirExists(); sub = 0; if (isDir) sub = new BrowseMenu(npath); DFile *pfile = new DFile(name, null, npath); YMenuItem *item = add(new DObjectMenuItem(pfile)); if (item) { #ifndef LITE static ref file, folder; if (file == null) file = YIcon::getIcon("file"); if (folder == null) folder = YIcon::getIcon("folder"); #endif item->setSubmenu(sub); #ifndef LITE if (sub) { if (folder != null) item->setIcon(folder); } else { if (file != null) item->setIcon(file); } #endif } } } closedir(dir); } } } #endif icewm-1.3.7/src/yimage_gdk.cc0000664000076600007660000002147311463274240015034 0ustar develdevel#include "config.h" #ifdef CONFIG_GDK_PIXBUF_XLIB #include "yimage.h" #include "yxapp.h" #include "ypixbuf.h" extern "C" { #include } class YImageGDK: public YImage { public: YImageGDK(int width, int height, GdkPixbuf *pixbuf): YImage(width, height) { fPixbuf = pixbuf; } virtual ~YImageGDK() { gdk_pixbuf_unref(fPixbuf); } virtual ref renderToPixmap(); virtual ref scale(int width, int height); virtual void draw(Graphics &g, int dx, int dy); virtual void draw(Graphics &g, int x, int y, int w, int h, int dx, int dy); virtual void composite(Graphics &g, int x, int y, int w, int h, int dx, int dy); virtual bool valid() const { return fPixbuf != 0; } private: GdkPixbuf *fPixbuf; }; ref YImage::create(int width, int height) { ref image; GdkPixbuf *pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, width, height); if (pixbuf != NULL) { image.init(new YImageGDK(width, height, pixbuf)); } return image; } ref YImage::load(upath filename) { ref image; GError *gerror = 0; GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(cstring(filename.path()).c_str(), &gerror); if (pixbuf != NULL) { image.init(new YImageGDK(gdk_pixbuf_get_width(pixbuf), gdk_pixbuf_get_height(pixbuf), pixbuf)); } return image; } ref YImageGDK::scale(int w, int h) { ref image; GdkPixbuf *pixbuf = 0; bool alpha = gdk_pixbuf_get_has_alpha(fPixbuf); #if 0 pixbuf = gdk_pixbuf_scale_simple(fPixbuf, w, h, GDK_INTERP_BILINEAR); #else pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, alpha, 8, w, h); pixbuf_scale(gdk_pixbuf_get_pixels(fPixbuf), gdk_pixbuf_get_rowstride(fPixbuf), gdk_pixbuf_get_width(fPixbuf), gdk_pixbuf_get_height(fPixbuf), gdk_pixbuf_get_pixels(pixbuf), gdk_pixbuf_get_rowstride(pixbuf), gdk_pixbuf_get_width(pixbuf), gdk_pixbuf_get_height(pixbuf), alpha); #endif if (pixbuf != NULL) { image.init(new YImageGDK(w, h, pixbuf)); } return image; } ref YImage::createFromPixmap(ref pixmap) { return createFromPixmapAndMask(pixmap->pixmap(), pixmap->mask(), pixmap->width(), pixmap->height()); } ref YImage::createFromPixmapAndMask(Pixmap pixmap, Pixmap mask, int width, int height) { ref image; GdkPixbuf *pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, width, height); if (pixbuf) { pixbuf = gdk_pixbuf_xlib_get_from_drawable(pixbuf, pixmap, xlib_rgb_get_cmap(), xlib_rgb_get_visual(), 0, 0, 0, 0, width, height); if (mask != None) { XImage *image = XGetImage(xapp->display(), mask, 0, 0, width, height, AllPlanes, ZPixmap); guchar *pixels = gdk_pixbuf_get_pixels(pixbuf); if (image) { //unsigned char *pix = image->data; for (int r = 0; r < height; r++) { for (int c = 0; c < width; c++) { unsigned int pix = XGetPixel(image, c, r); pixels[c * 4 + 3] = (unsigned char)(pix ? 255 : 0); } pixels += gdk_pixbuf_get_rowstride(pixbuf); //pix += image->bytes_per_line; } XDestroyImage(image); } } image.init(new YImageGDK(width, height, pixbuf)); } return image; } ref YImage::createFromIconProperty(long *prop_pixels, int width, int height) { ref image; GdkPixbuf *pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, width, height); if (!pixbuf) return null; guchar *pixels = gdk_pixbuf_get_pixels(pixbuf); for (int r = 0; r < height; r++) { for (int c = 0; c < width; c++) { unsigned long pix = prop_pixels[c + r * width]; pixels[c * 4 + 2] = (unsigned char)(pix & 0xFF); pixels[c * 4 + 1] = (unsigned char)((pix >> 8) & 0xFF); pixels[c * 4] = (unsigned char)((pix >> 16) & 0xFF); pixels[c * 4 + 3] = (unsigned char)((pix >> 24) & 0xFF); } pixels += gdk_pixbuf_get_rowstride(pixbuf); } image.init(new YImageGDK(width, height, pixbuf)); return image; } ref YImage::createFromPixmapAndMaskScaled(Pixmap pix, Pixmap mask, int width, int height, int nw, int nh) { ref image = createFromPixmapAndMask(pix, mask, width, height); if (image != null) image = image->scale(nw, nh); return image; } ref YImageGDK::renderToPixmap() { Pixmap pixmap = None, mask = None; gdk_pixbuf_xlib_render_pixmap_and_mask(fPixbuf, &pixmap, &mask, 128); return createPixmap(pixmap, mask, gdk_pixbuf_get_width(fPixbuf), gdk_pixbuf_get_height(fPixbuf)); } ref YImage::createPixmap(Pixmap pixmap, Pixmap mask, int w, int h) { ref n; n.init(new YPixmap(pixmap, mask, w, h)); return n; } void YImageGDK::draw(Graphics &g, int dx, int dy) { #if 1 composite(g, 0, 0, width(), height(), dx, dy); #else gdk_pixbuf_xlib_render_to_drawable_alpha(fPixbuf, g.drawable(), //g.handleX(), 0, 0, dx, dy, width(), height(), GDK_PIXBUF_ALPHA_FULL, 128, XLIB_RGB_DITHER_NORMAL, 0, 0); #endif } void YImageGDK::draw(Graphics &g, int x, int y, int w, int h, int dx, int dy) { #if 1 composite(g, x, y, w, h, dx, dy); #else gdk_pixbuf_xlib_render_to_drawable_alpha(fPixbuf, g.drawable(), //g.handleX(), x, y, dx, dy, w, h, GDK_PIXBUF_ALPHA_BILEVEL, 128, XLIB_RGB_DITHER_NORMAL, 0, 0); #endif } void YImageGDK::composite(Graphics &g, int x, int y, int w, int h, int dx, int dy) { //MSG(("composite -- %d %d %d %d | %d %d", x, y, w, h, dx, dy)); if (g.xorigin() > dx) { w -= g.xorigin() - dx; x += g.xorigin() - dx; dx = g.xorigin(); } if (w <= 0) return; if (g.yorigin() > dy) { h -= g.yorigin() - dy; y += g.yorigin() - dy; dy = g.yorigin(); } if (h <= 0) return; if (dx + w > g.xorigin() + g.rwidth()) w = g.xorigin() + g.rwidth() - dx; if (w <= 0) return; if (dy + h > g.yorigin() + g.rheight()) h = g.yorigin() + g.rheight() - dy; if (h <= 0) return; //MSG(("composite ++ %d %d %d %d | %d %d", x, y, w, h, dx, dy)); GdkPixbuf *pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, w, h); gdk_pixbuf_xlib_get_from_drawable(pixbuf, g.drawable(), xapp->colormap(), xapp->visual(), dx - g.xorigin(), dy - g.yorigin(), 0, 0, w, h); gdk_pixbuf_composite(fPixbuf, pixbuf, 0, 0, w, h, -x, -y, 1.0, 1.0, GDK_INTERP_BILINEAR, 255); gdk_pixbuf_xlib_render_to_drawable(pixbuf, g.drawable(), g.handleX(), 0, 0, dx - g.xorigin(), dy - g.yorigin(), w, h, // GDK_PIXBUF_ALPHA_BILEVEL, 128, XLIB_RGB_DITHER_NONE, 0, 0); gdk_pixbuf_unref(pixbuf); } void image_init() { g_type_init(); xlib_rgb_init(xapp->display(), ScreenOfDisplay(xapp->display(), xapp->screen())); gdk_pixbuf_xlib_init(xapp->display(), xapp->screen()); } #endif icewm-1.3.7/src/ypaths.cc0000644000076600007660000001154011463274240014234 0ustar develdevel/* * IceWM - Resource paths * Copyright (C) 2001 The Authors of IceWM * * Release under terms of the GNU Library General Public License * * 2001/03/24: Mathias Hasselmann * - initial version */ #include "config.h" #include "ylib.h" #include "default.h" #include "ypixbuf.h" #include "base.h" #include "ypaths.h" #include "yapp.h" #include "yprefs.h" #include "intl.h" #include #include #include #include #include upath YPathElement::joinPath(upath base) const { upath p = fPath; if (base != null) p = p.relative(base); return p; } upath YPathElement::joinPath(upath base, upath name) const { upath p = fPath; if (base != null) p = p.relative(base); if (name != null) p = p.relative(name); return p; } void YResourcePaths::addDir(upath root, upath rdir, upath sub) { upath p = upath(root); if (rdir != null) p = p.relative(rdir); if (sub != null) p = p.relative(sub); if (p.dirExists()) fPaths.append(new YPathElement(p)); } ref YResourcePaths::subdirs(upath subdir, bool themeOnly) { ref paths; paths.init(new YResourcePaths()); static char themeSubdir[PATH_MAX]; static char const *themeDir(themeSubdir); static const char *homeDir(YApplication::getPrivConfDir()); strncpy(themeSubdir, themeName, sizeof(themeSubdir)); themeSubdir[sizeof(themeSubdir) - 1] = '\0'; char *dirname(::strrchr(themeSubdir, '/')); if (dirname) *dirname = '\0'; if (themeName && *themeName == '/') { MSG(("Searching `%s' resources at absolute location", cstring(subdir.path()).c_str())); if (themeOnly) { paths->addDir(themeDir, null, null); } else { paths->addDir(homeDir, null, null); paths->addDir(themeDir, null, null); paths->addDir(YApplication::getConfigDir(), null, null); paths->addDir(YApplication::getLibDir(), null, null); } } else { MSG(("Searching `%s' resources at relative locations", cstring(subdir.path()).c_str())); if (themeOnly) { paths->addDir(homeDir, "themes", themeDir); paths->addDir(YApplication::getConfigDir(), "themes", themeDir); paths->addDir(YApplication::getLibDir(), "themes", themeDir); } else { paths->addDir(homeDir, "/themes/", themeDir); paths->addDir(homeDir, null, null); paths->addDir(YApplication::getConfigDir(), "/themes/", themeDir); paths->addDir(YApplication::getConfigDir(), null, null); paths->addDir(YApplication::getLibDir(), "/themes/", themeDir); paths->addDir(YApplication::getLibDir(), null, null); } } DBG { MSG(("Initial search path:")); for (int i = 0; i < paths->getCount(); i++) { upath path = paths->getPath(i)->joinPath("/icons/"); cstring cs(path.path()); MSG(("%s", cs.c_str())); } } paths->verifyPaths(subdir); return paths; } void YResourcePaths::verifyPaths(upath base) { for (int i = 0; i < getCount(); i++) { upath path = getPath(i)->joinPath(base); if (!path.isReadable()) { fPaths.remove(i); i--; } } } ref YResourcePaths::loadPixmap(upath base, upath name) const { ref pixmap; for (int i = 0; i < getCount() && pixmap == null; i++) { upath path = getPath(i)->joinPath(base, name); if (path.fileExists()) { if (!path.isReadable()) { cstring cs(path.path()); warn(_("Image not readable: %s"), cs.c_str()); } else { pixmap = YPixmap::load(path); if (pixmap == null) { cstring cs(path.path()); warn(_("Out of memory for image %s"), cs.c_str()); } } } } #ifdef DEBUG if (debug) warn(_("Could not find image %s"), cstring(name.path()).c_str()); #endif return pixmap; } ref YResourcePaths::loadImage(upath base, upath name) const { ref pixbuf; for (int i = 0; i < getCount() && pixbuf == null; i++) { upath path = getPath(i)->joinPath(base, name); if (path.fileExists()) { if (!path.isReadable()) { cstring cs(path.path()); warn(_("Image not readable: %s"), cs.c_str()); } else { pixbuf = YImage::load(path); if (pixbuf == null) { warn(_("Out of memory for image: %s"), cstring(path.path()).c_str()); } } } } #ifdef DEBUG if (debug) warn(_("Could not find image: %s"), cstring(name.path()).c_str()); #endif return pixbuf; } icewm-1.3.7/src/wmprog.cc0000644000076600007660000005310411463274240014241 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek */ #include "config.h" #ifndef NO_CONFIGURE_MENUS #define NEED_TIME_H #include "ykey.h" #include "objmenu.h" #include "wmprog.h" #include "wmoption.h" #include "wmaction.h" #include "wmconfig.h" #include "ybutton.h" #include "objbutton.h" #include "objbar.h" #include "prefs.h" #include "wmapp.h" #include "sysdep.h" #include "base.h" #include "wmmgr.h" #include "ymenuitem.h" #include "themes.h" #include "browse.h" #include "wmtaskbar.h" #include "yicon.h" #include "intl.h" extern bool parseKey(const char *arg, KeySym *key, unsigned int *mod); DObjectMenuItem::DObjectMenuItem(DObject *object): YMenuItem(object->getName(), -3, null, this, 0) { fObject = object; #ifndef LITE if (object->getIcon() != null) setIcon(object->getIcon()); #endif } DObjectMenuItem::~DObjectMenuItem() { delete fObject; } void DObjectMenuItem::actionPerformed(YActionListener * /*listener*/, YAction * /*action*/, unsigned int /*modifiers*/) { #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geLaunchApp); #endif fObject->open(); } DFile::DFile(const ustring &name, ref icon, upath path): DObject(name, icon) { fPath = path; } DFile::~DFile() { } void DFile::open() { const char *args[] = { openCommand, cstring(fPath.path()).c_str(), 0 }; app->runProgram(openCommand, args); } ObjectMenu::ObjectMenu(YWindow *parent): YMenu(parent) { setActionListener(wmapp); } ObjectMenu::~ObjectMenu() { } void ObjectMenu::addObject(DObject *fObject) { add(new DObjectMenuItem(fObject)); } void ObjectMenu::addSeparator() { YMenu::addSeparator(); } #ifdef LITE void ObjectMenu::addContainer(const ustring &name, ref /*icon*/, ObjectContainer *container) { #else void ObjectMenu::addContainer(const ustring &name, ref icon, ObjectContainer *container) { #endif if (container) { #ifndef LITE YMenuItem *item = #endif addSubmenu(name, -3, (ObjectMenu *)container); #ifndef LITE if (item && icon != null) item->setIcon(icon); #endif } } DObject::DObject(const ustring &name, ref icon): fName(name), fIcon(icon) { } DObject::~DObject() { fIcon = null; } void DObject::open() { } DProgram::DProgram(const ustring &name, ref icon, const bool restart, const char *wmclass, upath exe, YStringArray &args): DObject(name, icon), fRestart(restart), fRes(newstr(wmclass)), fCmd(exe), fArgs(args) { if (fArgs.isEmpty() || fArgs.getString(fArgs.getCount() - 1)) fArgs.append(0); } DProgram::~DProgram() { delete[] fRes; } void DProgram::open() { if (fRestart) wmapp->restartClient(cstring(fCmd.path()).c_str(), fArgs.getCArray()); else if (fRes) wmapp->runOnce(fRes, cstring(fCmd.path()).c_str(), fArgs.getCArray()); else app->runProgram(cstring(fCmd.path()).c_str(), fArgs.getCArray()); } DProgram *DProgram::newProgram(const char *name, ref icon, const bool restart, const char *wmclass, upath exe, YStringArray &args) { if (exe != null) { MSG(("LOOKING FOR: %s\n", cstring(exe.path()).c_str())); upath fullname = findPath(getenv("PATH"), X_OK, exe); if (fullname == null) { MSG(("Program %s (%s) not found.", name, cstring(exe.path()).c_str())); return 0; } DProgram *program = new DProgram(name, icon, restart, wmclass, fullname, args); return program; } return NULL; } char *getWord(char *word, int maxlen, char *p) { while (*p && (*p == ' ' || *p == '\t' || *p == '\r' || *p == '\n')) p++; while (*p && isalnum(*p) && maxlen > 1) { *word++ = *p++; maxlen--; } *word++ = 0; return p; } static char *getCommandArgs(char *p, char **command, YStringArray &args) { p = YConfig::getArgument(command, p, false); if (p == 0) { msg(_("Missing command argument")); return p; } args.append(*command); while (*p) { char *argx; //push to the next word or line end to get the arg while (*p && (*p == ' ' || *p == '\t')) p++; //stop on EOL if (*p == '\n') break; // parse the argument into argx and set the new position p = YConfig::getArgument(&argx, p, false); if (p == 0) { msg(_("Bad argument %d"), args.getCount() + 1); return p; } args.append(argx); MSG(("ARG: %s\n", argx)); delete[] argx; } args.append(0); return p; } KProgram *keyProgs = 0; KProgram::KProgram(const char *key, DProgram *prog) { parseKey(key, &fKey, &fMod); fProg = prog; fNext = keyProgs; keyProgs = this; } char *parseIncludeStatement(char *p, ObjectContainer *container) { char *filename; p = YConfig::getArgument(&filename, p, false); if (p == 0) { warn("invalid include filename"); return p; } upath path(filename); delete[] filename; if (!path.isAbsolute()) path = YApplication::findConfigFile(path); if (path != null) loadMenus(path, container); return p; } char *parseMenus(char *data, ObjectContainer *container) { char *p = data; char word[32]; while (p && *p) { while (*p == ' ' || *p == '\t' || *p == '\n') p++; if (*p == '#') { while (*p && *p != '\n') p++; continue; } p = getWord(word, sizeof(word), p); if (container) { if (!strcmp(word, "separator")) container->addSeparator(); else if (!(strcmp(word, "prog") && strcmp(word, "restart") && strcmp(word, "runonce"))) { char *name; p = YConfig::getArgument(&name, p, false); if (p == 0) return p; char *icons; p = YConfig::getArgument(&icons, p, false); if (p == 0) return p; char *wmclass = 0; if (word[1] == 'u') { p = YConfig::getArgument(&wmclass, p, false); if (p == 0) return p; } char *command; YStringArray args; p = getCommandArgs(p, &command, args); if (p == 0) { msg(_("Error at prog %s"), name); return p; } ref icon; #ifndef LITE if (icons[0] != '-') icon = YIcon::getIcon(icons); #endif DProgram * prog = DProgram::newProgram(name, icon, word[1] == 'e', word[1] == 'u' ? wmclass : 0, command, args); if (prog) container->addObject(prog); delete[] name; delete[] icons; delete[] wmclass; delete[] command; } else if (!strcmp(word, "menu")) { char *name; p = YConfig::getArgument(&name, p, false); if (p == 0) return p; char *icons; p = YConfig::getArgument(&icons, p, false); if (p == 0) return p; p = getWord(word, sizeof(word), p); if (*p != '{') return 0; p++; ref icon; #ifndef LITE if (icons[0] != '-') icon = YIcon::getIcon(icons); #endif ObjectMenu *sub = new ObjectMenu(); if (sub) { p = parseMenus(p, sub); if (sub->itemCount() == 0) delete sub; else container->addContainer(name, icon, sub); } else { msg(_("Unexepected keyword: %s"), word); return p; } delete[] name; delete[] icons; } else if (!strcmp(word, "menufile")) { char *name; p = YConfig::getArgument(&name, p, false); if (p == 0) return p; char *icons; p = YConfig::getArgument(&icons, p, false); if (p == 0) return p; char *menufile; p = YConfig::getArgument(&menufile, p, false); if (p == 0) return p; ref icon; #ifndef LITE if (icons[0] != '-') icon = YIcon::getIcon(icons); #endif ObjectMenu *filemenu = new MenuFileMenu(menufile, 0); if (menufile) container->addContainer(name, icon, filemenu); delete[] name; delete[] icons; delete[] menufile; } else if (!strcmp(word, "menuprog")) { char *name; p = YConfig::getArgument(&name, p, false); if (p == 0) return p; char *icons; p = YConfig::getArgument(&icons, p, false); if (p == 0) return p; char *command; YStringArray args; p = getCommandArgs(p, &command, args); if (p == 0) { msg(_("Error at prog %s"), name); return p; } ref icon; #ifndef LITE if (icons[0] != '-') icon = YIcon::getIcon(icons); #endif MSG(("menuprog %s %s", name, command)); upath fullPath = findPath(getenv("PATH"), X_OK, command); if (fullPath != null) { ObjectMenu *progmenu = new MenuProgMenu(name, command, args, 0); if (progmenu) container->addContainer(name, icon, progmenu); } delete[] name; delete[] icons; delete[] command; } else if (!strcmp(word, "menuprogreload")) { char *name; p = YConfig::getArgument(&name, p, false); if (p == 0) return p; char *icons; p = YConfig::getArgument(&icons, p, false); if (p == 0) return p; time_t timeout; char *timeoutStr; p = YConfig::getArgument(&timeoutStr, p, false); if (p == 0) return p; timeout = atoi(timeoutStr); char *command; YStringArray args; p = getCommandArgs(p, &command, args); if (p == 0) { msg(_("Error at prog %s"), name); return p; } ref icon; #ifndef LITE if (icons[0] != '-') icon = YIcon::getIcon(icons); #endif MSG(("menuprogreload %s %s", name, command)); upath fullPath = findPath(getenv("PATH"), X_OK, command); if (fullPath != null) { ObjectMenu *progmenu = new MenuProgReloadMenu(name, timeout, command, args, 0); if (progmenu) container->addContainer(name, icon, progmenu); } delete[] name; delete[] icons; delete[] timeoutStr; delete[] command; } else if (!strcmp(word, "include")) p = parseIncludeStatement(p, container); else if (*p == '}') return ++p; else { return 0; } } else { if (!(strcmp(word, "key") && strcmp(word, "runonce"))) { char *key; p = YConfig::getArgument(&key, p, false); if (p == 0) return p; char *wmclass = 0; if (*word == 'r') { p = YConfig::getArgument(&wmclass, p, false); if (p == 0) return p; } char *command; YStringArray args; p = getCommandArgs(p, &command, args); if (p == 0) { msg(_("Error at key %s"), key); return p; } DProgram *prog = DProgram::newProgram(key, null, false, *word == 'r' ? wmclass : 0, command, args); if (prog) new KProgram(key, prog); delete[] key; delete[] wmclass; delete[] command; } else { return 0; } } } return p; } static void loadMenus(int fd, ObjectContainer *container) { if (fd == -1) return; struct stat sb; if (fstat(fd, &sb) == -1) { close(fd); return; } MSG(("sb.st_size: %d", sb.st_size)); char *buf = 0; if (sb.st_size == 0) { int len = 0; int got = 0; buf = new char[len + 1]; while (1) { if (len - got == 0) { len += 4096; char *buf2 = new char[len + 1]; memcpy(buf2, buf, got); delete [] buf; buf = buf2; } int len2 = read(fd, buf + got, len - got); if (len2 == 0) break; got += len2; } buf[got] = '\0'; } else { buf = new char[sb.st_size + 1]; if (buf == 0) { close(fd); return; } read(fd, buf, sb.st_size); buf[sb.st_size] = '\0'; } close(fd); parseMenus(buf, container); delete[] buf; } void loadMenus(upath menufile, ObjectContainer *container) { MSG(("menufile: %s", cstring(menufile.path()).c_str())); cstring cs(menufile.path()); loadMenus(open(cs.c_str(), O_RDONLY | O_TEXT), container); } MenuFileMenu::MenuFileMenu(ustring name, YWindow *parent): ObjectMenu(parent), fName(name) { fName = name; fPath = 0; fModTime = 0; /// updatePopup(); /// refresh(); } MenuFileMenu::~MenuFileMenu() { } void MenuFileMenu::updatePopup() { if (!autoReloadMenus && fPath != null) return; upath np = YApplication::findConfigFile(upath(fName)); bool rel = false; if (fPath == null) { fPath = np; rel = true; } else { if (np == null || np.equals(fPath)) { fPath = np; rel = true; } else np = null; } if (fPath == null) { refresh(); } else { struct stat sb; cstring cs(fPath.path()); if (stat(cs.c_str(), &sb) != 0) { fPath = 0; refresh(); } else if (sb.st_mtime > fModTime || rel) { fModTime = sb.st_mtime; refresh(); } } } void MenuFileMenu::refresh() { removeAll(); if (fPath != null) loadMenus(fPath, this); } void loadMenusProg(const char *command, char *const argv[], ObjectContainer *container) { int fds[2]; pid_t child_pid; int status; ///msg("loadMenusProg %s %s %s %s", command, argv[0], argv[1], argv[2]); if (!pipe(fds)) { switch ((child_pid = fork())) { case 0: close(0); close(1); close(fds[0]); dup2(fds[1], 1); execvp(command, argv); _exit(99); break; default: close(fds[1]); loadMenus(fds[0], container); waitpid(child_pid, &status, 0); close(fds[0]); break; case -1: warn("Forking failed (errno=%d)", errno); break; } } } MenuProgMenu::MenuProgMenu(ustring name, upath command, YStringArray &args, YWindow *parent): ObjectMenu(parent), fName(name), fCommand(command), fArgs(args) { fName = name; fCommand = command; fArgs.append(0); fModTime = 0; /// updatePopup(); /// refresh(); } MenuProgMenu::~MenuProgMenu() { } void MenuProgMenu::updatePopup() { #if 0 if (!autoReloadMenus && fPath != 0) return; struct stat sb; char *np = app->findConfigFile(fName); bool rel = false; if (fPath == 0) { fPath = np; rel = true; } else { if (!np || strcmp(np, fPath) != 0) { delete[] fPath; fPath = np; rel = true; } else delete[] np; } if (!autoReloadMenus) return; if (fPath == 0) { refresh(); } else { if (stat(fPath, &sb) != 0) { delete[] fPath; fPath = 0; refresh(); } else if (sb.st_mtime > fModTime || rel) { fModTime = sb.st_mtime; refresh(); } } #endif if (fModTime == 0) refresh(); fModTime = time(NULL); /// TODO #warning "figure out some way for this to work" } void MenuProgMenu::refresh() { removeAll(); if (fCommand != null) loadMenusProg(cstring(fCommand.path()).c_str(), fArgs.getCArray(), this); } MenuProgReloadMenu::MenuProgReloadMenu(const char *name, time_t timeout, const char *command, YStringArray &args, YWindow *parent) : MenuProgMenu(name, command, args, parent) { fTimeout = timeout; } void MenuProgReloadMenu::updatePopup() { if (fModTime == 0 || time(NULL) >= fModTime + fTimeout) { refresh(); fModTime = time(NULL); } } StartMenu::StartMenu(const char *name, YWindow *parent): MenuFileMenu(name, parent) { fHasGnomeAppsMenu = fHasGnomeUserMenu = fHasKDEMenu = false; /// updatePopup(); /// refresh(); } bool StartMenu::handleKey(const XKeyEvent &key) { // If meta key, close the popup if (key.type == KeyPress) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); int m = KEY_MODMASK(key.state); if (((k == xapp->Win_L) || (k == xapp->Win_R)) && m == 0) { cancelPopup(); return true; } } return MenuFileMenu::handleKey(key); } void StartMenu::updatePopup() { MenuFileMenu::updatePopup(); } void StartMenu::refresh() { MenuFileMenu::refresh(); if (itemCount()) addSeparator(); /// TODO #warning "make this into a menuprog (ala gnome.cc), and use mime" if (openCommand && openCommand[0]) { const char *path[2]; YMenu *sub; #ifndef LITE ref folder = YIcon::getIcon("folder"); #endif path[0] = "/"; path[1] = getenv("HOME"); for (unsigned int i = 0; i < sizeof(path)/sizeof(path[0]); i++) { const char *p = path[i]; sub = new BrowseMenu(p); DFile *file = new DFile(p, null, p); YMenuItem *item = add(new DObjectMenuItem(file)); if (item && sub) { item->setSubmenu(sub); #ifndef LITE if (folder != null) item->setIcon(folder); #endif } } addSeparator(); } #ifdef CONFIG_WINLIST int const oldItemCount = itemCount(); #endif if (showPrograms) { ObjectMenu *programs = new MenuFileMenu("programs", 0); /// if (programs->itemCount() > 0) addSubmenu(_("Programs"), 0, programs); } if (showRun) { if (runDlgCommand && runDlgCommand[0]) addItem(_("_Run..."), -2, "", actionRun); } #ifdef CONFIG_WINLIST #ifdef CONFIG_WINMENU if (itemCount() != oldItemCount) addSeparator(); if (showWindowList) addItem(_("_Windows"), -2, actionWindowList, windowListMenu); #endif #endif if ( #ifndef LITE #ifdef CONFIG_TASKBAR (!showTaskBar && showAbout) || #endif showHelp || #endif showSettingsMenu ) #ifdef CONFIG_WINLIST #ifdef CONFIG_WINMENU if (showWindowList) #endif #endif addSeparator(); #ifndef LITE #ifdef CONFIG_TASKBAR if (!showTaskBar) { if (showAbout) addItem(_("_About"), -2, actionAbout, 0); } #endif if (showHelp) { YStringArray args(3); args.append(ICEHELPEXE); args.append(ICEHELPIDX); args.append(0); DProgram *help = DProgram::newProgram(_("_Help"), null, false, "browser.IceHelp", ICEHELPEXE, args); if (help) addObject(help); } #endif if (showSettingsMenu) { YMenu *settings = new YMenu(); if (showFocusModeMenu) { YMenu *focus = new YMenu(); YMenuItem *i = 0; i = focus->addItem(_("_Click to focus"), -2, "", actionFocusClickToFocus); if (focusMode == 1) { i->setEnabled(false); i->setChecked(true); } i = focus->addItem(_("_Sloppy mouse focus"), -2, "", actionFocusMouseSloppy); if (focusMode == 2) { i->setEnabled(false); i->setChecked(true); } i = focus->addItem(_("Custo_m"), -2, "", actionFocusCustom); if (focusMode == 0) { i->setEnabled(false); i->setChecked(true); } settings->addSubmenu(_("_Focus"), -2, focus); } if (showThemesMenu) { YMenu *themes = new ThemesMenu(); if (themes) settings->addSubmenu(_("_Themes"), -2, themes); } addSubmenu(_("Se_ttings"), -2, settings); } if (logoutMenu) { addSeparator(); if (showLogoutSubMenu) addItem(_("_Logout..."), -2, actionLogout, logoutMenu); else addItem(_("_Logout..."), -2, null, actionLogout); } } #endif icewm-1.3.7/src/ypixmap.cc0000664000076600007660000000742511463274240014424 0ustar develdevel#include "config.h" #include "ypixmap.h" #include "yxapp.h" #include static Pixmap createPixmap(int w, int h, int depth) { return XCreatePixmap(xapp->display(), desktop->handle(), w, h, depth); } static Pixmap createPixmap(int w, int h) { return createPixmap(w, h, xapp->depth()); } static Pixmap createMask(int w, int h) { return XCreatePixmap(xapp->display(), desktop->handle(), w, h, 1); } void YPixmap::replicate(bool horiz, bool copyMask) { if (this == NULL || pixmap() == None || (fMask == None && copyMask)) return; int dim(horiz ? width() : height()); if (dim >= 128) return; dim = 128 + dim - 128 % dim; Pixmap nPixmap(horiz ? createPixmap(dim, height()) : createPixmap(width(), dim)); Pixmap nMask(copyMask ? (horiz ? createMask(dim, height()) : createMask(width(), dim)) : None); if (horiz) Graphics(nPixmap, dim, height()).repHorz(fPixmap, width(), height(), 0, 0, dim); else Graphics(nPixmap, width(), dim).repVert(fPixmap, width(), height(), 0, 0, dim); if (nMask != None) { if (horiz) Graphics(nMask, dim, height()).repHorz(fMask, width(), height(), 0, 0, dim); else Graphics(nMask, width(), dim).repVert(fMask, width(), height(), 0, 0, dim); } if ( #if 1 true #else fOwned #endif ) { if (fPixmap != None) XFreePixmap(xapp->display(), fPixmap); if (fMask != None) XFreePixmap(xapp->display(), fMask); } fPixmap = nPixmap; fMask = nMask; (horiz ? fWidth : fHeight) = dim; } YPixmap::~YPixmap() { if (fPixmap != None) { if (xapp != 0) XFreePixmap(xapp->display(), fPixmap); fPixmap = 0; } if (fMask != None) { if (xapp != 0) XFreePixmap(xapp->display(), fMask); fMask = 0; } } #if 0 ref YPixmap::scale(ref source, int const w, int const h) { ref scaled; scaled = source; return scaled; } #endif ref YPixmap::scale(int const w, int const h) { ref pixmap; pixmap.init(this); ref image = YImage::createFromPixmap(pixmap); if (image != null) { image = image->scale(w, h); if (image != null) pixmap = YPixmap::createFromImage(image); } return pixmap; } ref YPixmap::create(int w, int h, bool useMask) { ref n; Pixmap pixmap = createPixmap(w, h); Pixmap mask = useMask ? createMask(w, h) : None; if (pixmap != None && (!useMask || mask != None)) n.init(new YPixmap(pixmap, mask, w, h)); return n; } ref YPixmap::createFromImage(ref image) { return image->renderToPixmap(); } ref YPixmap::createFromPixmapAndMask(Pixmap /*pixmap*/, Pixmap /*mask*/, int /*w*/, int /*h*/) { die(2, "YPixmap::createFromPixmapAndMask"); return null; } ref YPixmap::createFromPixmapAndMaskScaled(Pixmap pix, Pixmap mask, int width, int height, int nw, int nh) { if (pix != None) { ref image = YImage::createFromPixmapAndMaskScaled(pix, mask, width, height, nw, nh); if (image != null) { ref pixmap = YPixmap::createFromImage(image); return pixmap; } } return null; } ref YPixmap::load(upath filename) { ref image = YImage::load(filename); ref pixmap; if (image != null) { pixmap = YPixmap::createFromImage(image); } return pixmap; } icewm-1.3.7/src/misc.cc0000644000076600007660000003062211463274240013661 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek */ #include "config.h" #include "sysdep.h" #include "ylib.h" #include "debug.h" #include "intl.h" #include "ref.h" #ifdef HAVE_LIBGEN_H #include #endif #ifdef linux #include #endif extern char const *ApplicationName; #ifdef DEBUG bool debug = false; bool debug_z = false; void logEvent(const XEvent &xev) { switch (xev.type) { #if 1 case CreateNotify: msg("window=0x%lX: create serial=%10d parent=0x%lX, (%d:%d-%dx%d) border_width=%d, override_redirect=%s", xev.xcreatewindow.window, xev.xany.serial, xev.xcreatewindow.parent, xev.xcreatewindow.x, xev.xcreatewindow.y, xev.xcreatewindow.width, xev.xcreatewindow.height, xev.xcreatewindow.border_width, xev.xcreatewindow.override_redirect ? "True" : "False"); break; case DestroyNotify: msg("window=0x%lX: destroy serial=%10d event=0x%lX", xev.xdestroywindow.window, xev.xany.serial, xev.xdestroywindow.event); break; #else case CreateNotify: case DestroyNotify: break; #endif #if 1 case MapRequest: msg("window=0x%lX: mapRequest serial=%10d parent=0x%lX", xev.xmaprequest.window, xev.xany.serial, xev.xmaprequest.parent); break; #else case MapRequest: break; #endif #if 1 case MapNotify: msg("window=0x%lX: mapNotify serial=%10d event=0x%lX, override_redirect=%s", xev.xmap.window, xev.xany.serial, xev.xmap.event, xev.xmap.override_redirect ? "True" : "False"); break; case UnmapNotify: msg("window=0x%lX: unmapNotify serial=%10d event=0x%lX, from_configure=%s send_event=%s", xev.xunmap.window, xev.xany.serial, xev.xunmap.event, xev.xunmap.from_configure ? "True" : "False", xev.xunmap.send_event ? "True" : "False"); break; #else case MapNotify: case UnmapNotify: break; #endif #if 1 case ConfigureRequest: msg("window=0x%lX: %s configureRequest serial=%10d parent=0x%lX, (%d:%d-%dx%d) border_width=%d, above=0x%lX, detail=%d, value_mask=0x%lX", xev.xconfigurerequest.window, xev.xconfigurerequest.send_event ? "synth" : "real", xev.xany.serial, xev.xconfigurerequest.parent, xev.xconfigurerequest.x, xev.xconfigurerequest.y, xev.xconfigurerequest.width, xev.xconfigurerequest.height, xev.xconfigurerequest.border_width, xev.xconfigurerequest.above, xev.xconfigurerequest.detail, xev.xconfigurerequest.value_mask); break; #else case ConfigureRequest: break; #endif #if 0 case FocusIn: case FocusOut: msg("window=0x%lX: %s mode=%d, detail=%d", xev.xfocus.window, (xev.type == FocusIn) ? "focusIn" : "focusOut", xev.xfocus.mode, xev.xfocus.detail); break; #else case FocusIn: case FocusOut: break; #endif #if 0 case ColormapNotify: msg("window=0x%lX: colormapNotify colormap=%ld new=%s state=%d", xev.xcolormap.window, xev.xcolormap.colormap, xev.xcolormap.c_new ? "True" : "False", xev.xcolormap.state); break; #else case ColormapNotify: break; #endif #if 1 case ReparentNotify: msg("window=0x%lX: reparentNotify serial=%10d event=0x%lX, parent=0x%lX, (%d:%d), override_redirect=%s", xev.xreparent.window, xev.xany.serial, xev.xreparent.event, xev.xreparent.parent, xev.xreparent.x, xev.xreparent.y, xev.xreparent.override_redirect ? "True" : "False"); break; #else case ReparentNotify: break; #endif #if 1 case ConfigureNotify: msg("window=0x%lX: configureNotify serial=%10d event=0x%lX, (%d:%d-%dx%d) border_width=%d, above=0x%lX, override_redirect=%s", xev.xconfigure.window, xev.xany.serial, xev.xconfigure.event, xev.xconfigure.x, xev.xconfigure.y, xev.xconfigure.width, xev.xconfigure.height, xev.xconfigure.border_width, xev.xconfigure.above, xev.xconfigure.override_redirect ? "True" : "False"); break; #else case ConfigureNotify: break; #endif #if 0 case VisibilityNotify: msg("window=0x%lX: visibilityNotify state=%d", xev.xvisibility.window, xev.xvisibility.state); break; #else case VisibilityNotify: break; #endif #if 0 case ClientMessage: msg("window=0x%lX: clientMessage message_type=0x%lX format=%d", xev.xclient.window, xev.xclient.message_type, xev.xclient.format); break; #else case ClientMessage: break; #endif #if 0 case PropertyNotify: msg("window=0x%lX: propertyNotify atom=0x%lX time=%ld state=%d", xev.xproperty.window, xev.xproperty.atom, xev.xproperty.time, xev.xproperty.state); break; #else case PropertyNotify: break; #endif #if 1 case ButtonPress: case ButtonRelease: msg("window=0x%lX: %s root=0x%lX, subwindow=0x%lX, time=%ld, (%d:%d %d:%d) state=0x%X detail=0x%X same_screen=%s", xev.xbutton.window, (xev.type == ButtonPress) ? "buttonPress" : "buttonRelease", xev.xbutton.root, xev.xbutton.subwindow, xev.xbutton.time, xev.xbutton.x, xev.xbutton.y, xev.xbutton.x_root, xev.xbutton.y_root, xev.xbutton.state, xev.xbutton.button, xev.xbutton.same_screen ? "True" : "False"); break; #else case ButtonPress: case ButtonRelease: #endif #if 0 case MotionNotify: msg("window=0x%lX: motionNotify root=0x%lX, subwindow=0x%lX, time=%ld, (%d:%d %d:%d) state=0x%X is_hint=%c same_screen=%s", xev.xmotion.window, xev.xmotion.root, xev.xmotion.subwindow, xev.xmotion.time, xev.xmotion.x, xev.xmotion.y, xev.xmotion.x_root, xev.xmotion.y_root, xev.xmotion.state, xev.xmotion.is_hint, xev.xmotion.same_screen ? "True" : "False"); break; #else case MotionNotify: break; #endif #if 1 case EnterNotify: case LeaveNotify: msg("window=0x%lX: %s serial=%10d root=0x%lX, subwindow=0x%lX, time=%ld, (%d:%d %d:%d) mode=%d detail=%d same_screen=%s, focus=%s state=0x%X", xev.xcrossing.window, (xev.type == EnterNotify) ? "enterNotify" : "leaveNotify", xev.xany.serial, xev.xcrossing.root, xev.xcrossing.subwindow, xev.xcrossing.time, xev.xcrossing.x, xev.xcrossing.y, xev.xcrossing.x_root, xev.xcrossing.y_root, xev.xcrossing.mode, xev.xcrossing.detail, xev.xcrossing.same_screen ? "True" : "False", xev.xcrossing.focus ? "True" : "False", xev.xcrossing.state); break; #else case EnterNotify: case LeaveNotify: break; #endif #if 0 case KeyPress: case KeyRelease: msg("window=0x%lX: %s root=0x%lX, subwindow=0x%lX, time=%ld, (%d:%d %d:%d) state=0x%X keycode=0x%x same_screen=%s", xev.xkey.window, (xev.type == KeyPress) ? "keyPress" : "keyRelease", xev.xkey.root, xev.xkey.subwindow, xev.xkey.time, xev.xkey.x, xev.xkey.y, xev.xkey.x_root, xev.xkey.y_root, xev.xkey.state, xev.xkey.keycode, xev.xkey.same_screen ? "True" : "False"); break; #else case KeyPress: case KeyRelease: break; #endif #if 0 case Expose: msg("window=0x%lX: expose (%d:%d-%dx%d) count=%d", xev.xexpose.window, xev.xexpose.x, xev.xexpose.y, xev.xexpose.width, xev.xexpose.height, xev.xexpose.count); break; #else case Expose: break; #endif #if 1 default: msg("window=0x%lX: unknown type=%d", xev.xany.window, xev.type); break; #endif } } #endif void die(int exitcode, char const *msg, ...) { fprintf(stderr, "%s: ", ApplicationName); va_list ap; va_start(ap, msg); vfprintf(stderr, msg, ap); va_end(ap); fputs("\n", stderr); exit(exitcode); } void precondition(char const *msg, ...) { fprintf(stderr, "%s: ", ApplicationName); va_list ap; va_start(ap, msg); vfprintf(stderr, msg, ap); va_end(ap); fputs("\n", stderr); show_backtrace(); *(char *)0 = 0x42; } void warn(char const *msg, ...) { fprintf(stderr, "%s: ", ApplicationName); fputs(_("Warning: "), stderr); va_list ap; va_start(ap, msg); vfprintf(stderr, msg, ap); va_end(ap); fputs("\n", stderr); } void msg(char const *msg, ...) { fprintf(stderr, "%s: ", ApplicationName); va_list ap; va_start(ap, msg); vfprintf(stderr, msg, ap); va_end(ap); fputs("\n", stderr); } char *cstrJoin(char const *str, ...) { va_list ap; char const *s; char *res, *p; int len = 0; if (str == 0) return 0; va_start(ap, str); s = str; while (s) { len += strlen(s); s = va_arg(ap, char *); } va_end(ap); if ((p = res = new char[len + 1]) == 0) return 0; va_start(ap, str); s = str; while (s) { len = strlen(s); memcpy(p, s, len); p += len; s = va_arg(ap, char *); } va_end(ap); *p = 0; return res; } #if __GNUC__ == 3 extern "C" void __cxa_pure_virtual() { warn("BUG: Pure virtual method called. Terminating."); abort(); } /* time to rewrite in C */ #endif #ifdef NEED_ALLOC_OPERATORS static void *MALLOC(unsigned int len) { if (len == 0) return 0; return malloc(len); } static void FREE(void *p) { if (p) free(p); } void *operator new(size_t len) { return MALLOC(len); } void *operator new[](size_t len) { if (len == 0) len = 1; return MALLOC(len); } void operator delete (void *p) { FREE(p); } void operator delete[](void *p) { FREE(p); } #endif char *newstr(char const *str) { return (str != NULL ? newstr(str, strlen(str)) : NULL); } char *newstr(char const *str, char const *delim) { return (str != NULL ? newstr(str, strcspn(str, delim)) : NULL); } char *newstr(char const *str, int len) { char *s(NULL); if (str != NULL && (s = new char[len + 1]) != NULL) { memcpy(s, str, len); s[len] = '\0'; } return s; } /* * Returns zero if s2 is a prefix of s1. * * Ie the following will match and return 0 with respective given * arguments: * * "--interface=/tmp" "--interface" */ int strpcmp(char const * str, char const * pfx, char const * delim) { if(str == NULL || pfx == NULL) return -1; while(*pfx == *str && *pfx != '\0') ++str, ++pfx; return (*pfx == '\0' && strchr(delim, *str) ? 0 : *str - *pfx); } char const * strnxt(const char * str, const char * delim) { str+= strcspn(str, delim); str+= strspn(str, delim); return str; } #if 0 /* * Counts the tokens separated by delim */ unsigned strtoken(const char * str, const char * delim) { unsigned count = 0; if (str) { while (*str) { str = strnxt(str, delim); ++count; } } return count; } #endif #if 1 const char *my_basename(const char *path) { const char *base = ::strrchr(path, DIR_DELIMINATOR); return (base ? base + 1 : path); } #else const char *my_basename(const char *path) { return basename(path); } #endif #if 0 bool strequal(const char *a, const char *b) { return a ? b && !strcmp(a, b) : !b; } #endif #if 0 int strnullcmp(const char *a, const char *b) { return a ? (b ? strcmp(a, b) : 1) : (b ? -1 : 0); } #endif bool isreg(char const *path) { struct stat sb; return (stat(path, &sb) == 0 && S_ISREG(sb.st_mode)); } void show_backtrace() { #ifdef linux const char head[] = "\nbacktrace:\n"; const char tail[] = "end\n"; void *array[20]; write(2, head, sizeof(head)); int size = backtrace(array, sizeof array / sizeof array[0]); backtrace_symbols_fd(array, size, 2); write(2, tail, sizeof(tail)); #endif } icewm-1.3.7/src/aclock.cc0000644000076600007660000001601011463274240014155 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek * * Clock */ #define NEED_TIME_H #include "config.h" #include "ylib.h" #include "sysdep.h" #include "aclock.h" #include "wmtaskbar.h" #include "wmapp.h" #include "prefs.h" #ifdef CONFIG_APPLET_CLOCK ref PixNum[10]; ref PixSpace; ref PixColon; ref PixSlash; ref PixA; ref PixP; ref PixM; ref PixDot; ref PixPercent; YColor *YClock::clockBg = 0; YColor *YClock::clockFg = 0; ref YClock::clockFont; extern ref taskbackPixmap; static YColor *taskBarBg = 0; inline char const * strTimeFmt(struct tm const & t) { return (fmtTimeAlt && (t.tm_sec & 1) ? fmtTimeAlt : fmtTime); } YClock::YClock(YWindow *aParent): YWindow(aParent) { if (clockBg == 0 && *clrClock) clockBg = new YColor(clrClock); if (clockFg == 0) clockFg = new YColor(clrClockText); if (clockFont == null) clockFont = YFont::getFont(XFA(clockFontName)); if (taskBarBg == 0) { taskBarBg = new YColor(clrDefaultTaskBar); } clockUTC = false; toolTipUTC = false; transparent = -1; clockTimer = new YTimer(1000); clockTimer->setTimerListener(this); clockTimer->startTimer(); autoSize(); updateToolTip(); setDND(true); } YClock::~YClock() { delete clockTimer; clockTimer = 0; } void YClock::autoSize() { char s[64]; time_t newTime = time(NULL); struct tm t = *localtime(&newTime); int maxDay = -1; int maxMonth = -1; int maxWidth = -1; t.tm_hour = 12; for (int m = 0; m < 12 ; m++) { int len, w; t.tm_mon = m; len = strftime(s, sizeof(s), strTimeFmt(t), &t); w = calcWidth(s, len); if (w > maxWidth) { maxMonth = m; maxWidth = w; } } t.tm_mon = maxMonth; for (int dw = 0; dw <= 6; dw++) { int len, w; t.tm_wday = dw; len = strftime(s, sizeof(s), strTimeFmt(t), &t); w = calcWidth(s, len); if (w > maxWidth) { maxDay = dw; maxWidth = w; } } if (!prettyClock) maxWidth += 4; setSize(maxWidth, 20); } void YClock::handleButton(const XButtonEvent &button) { if (button.type == ButtonPress) { if (button.button == 1 && (button.state & ControlMask)) { clockUTC = true; repaint(); } } else if (button.type == ButtonRelease) { if (button.button == 1) { clockUTC = false; repaint(); } } YWindow::handleButton(button); } void YClock::updateToolTip() { char s[128]; time_t newTime = time(NULL); struct tm *t; int len; if (toolTipUTC) t = gmtime(&newTime); else t = localtime(&newTime); len = strftime(s, sizeof(s), fmtDate, t); setToolTip(s); } void YClock::handleCrossing(const XCrossingEvent &crossing) { if (crossing.type == EnterNotify) { if (crossing.state & ControlMask) toolTipUTC = true; else toolTipUTC = false; clockTimer->startTimer(); } clockTimer->runTimer(); YWindow::handleCrossing(crossing); } #ifdef DEBUG static int countEvents = 0; extern int xeventcount; #endif void YClock::handleClick(const XButtonEvent &up, int count) { if (up.button == 1) { if (clockCommand && clockCommand[0] && (taskBarLaunchOnSingleClick ? count == 1 : !(count % 2))) wmapp->runCommandOnce(clockClassHint, clockCommand); #ifdef DEBUG } else if (up.button == 2) { if ((count % 2) == 0) countEvents = !countEvents; #endif } } void YClock::paint(Graphics &g, const YRect &/*r*/) { int x = width(); char s[64]; time_t newTime = time(NULL); struct tm *t; int len, i; if (clockUTC) t = gmtime(&newTime); else t = localtime(&newTime); #ifdef DEBUG if (countEvents) len = sprintf(s, "%d", xeventcount); else #endif len = strftime(s, sizeof(s), strTimeFmt(*t), t); //clean backgroung first, so that it is possible //to use transparent lcd pixmaps if (hasTransparency()) { #ifdef CONFIG_GRADIENTS ref gradient(parent()->getGradient()); if (gradient != null) g.drawImage(gradient, this->x(), this->y(), width(), height(), 0, 0); else #endif if (taskbackPixmap != null) { g.fillPixmap(taskbackPixmap, 0, 0, width(), height(), this->x(), this->y()); } else { g.setColor(taskBarBg); g.fillRect(0, 0, width(), height()); } } if (prettyClock) { i = len - 1; for (i = len - 1; x >= 0; i--) { ref p; if (i >= 0) p = getPixmap(s[i]); else p = PixSpace; if (p != null) { x -= p->width(); g.drawPixmap(p, x, 0); } else if (i < 0) { g.setColor(clockBg); g.fillRect(0, 0, x, height()); break; } } } else { int y = (height() - 1 - clockFont->height()) / 2 + clockFont->ascent(); if (clockBg) { g.setColor(clockBg); g.fillRect(0, 0, width(), height()); } g.setColor(clockFg); g.setFont(clockFont); g.drawChars(s, 0, len, 2, y); } clockTimer->startTimer(); } bool YClock::handleTimer(YTimer *t) { if (t != clockTimer) return false; if (toolTipVisible()) updateToolTip(); repaint(); return true; } ref YClock::getPixmap(char c) { ref pix; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': pix = PixNum[c - '0']; break; case ' ': pix = PixSpace; break; case ':': pix = PixColon; break; case '/': pix = PixSlash; break; case '.': pix = PixDot; break; case 'p': case 'P': pix = PixP; break; case 'a': case 'A': pix = PixA; break; case 'm': case 'M': pix = PixM; break; } return pix; } int YClock::calcWidth(const char *s, int count) { if (!prettyClock) return clockFont->textWidth(s, count); else { int len = 0; while (count--) { ref p = getPixmap(*s++); if (p != null) len += p->width(); } return len; } } bool YClock::hasTransparency() { if (transparent == 0) return false; else if (transparent == 1) return true; if (!prettyClock) { transparent = 1; return true; } ref p = getPixmap('0'); if (p != null && p->mask()) { transparent = 1; return true; } transparent = 0; return false; } #endif icewm-1.3.7/src/ybutton.h0000644000076600007660000000467511463274240014305 0ustar develdevel#ifndef __YBUTTON_H #define __YBUTTON_H #include "ywindow.h" class YAction; class YActionListener; class YMenu; class YButton: public YWindow { public: YButton(YWindow *parent, YAction *action, YMenu *popup = 0); virtual ~YButton(); virtual void paint(Graphics &g, const YRect &r); virtual void paintFocus(Graphics &g, const YRect &r); virtual bool handleKey(const XKeyEvent &key); virtual void handleButton(const XButtonEvent &button); virtual void handleCrossing(const XCrossingEvent &crossing); void setAction(YAction * action); void setPopup(YMenu * popup); void setIcon(ref image, int size); void setImage(ref image); void setText(const ustring &str, int hot = -1); void setPressed(int pressed); virtual bool isFocusTraversable(); void updateSize(); virtual void donePopup(YPopupWindow *popup); void popupMenu(); virtual void updatePopup(); void setActionListener(YActionListener *listener) { fListener = listener; } YActionListener *getActionListener() const { return fListener; } void setSelected(bool selected); void setOver(bool over); void setArmed(bool armed, bool mousedown); bool isPressed() const { return fPressed; } bool isSelected() const { return fSelected; } bool isArmed() const { return fArmed; } bool isPopupActive() const { return fPopupActive; } virtual void actionPerformed(YAction *action, unsigned int modifiers); virtual ref getFont(); virtual YColor * getColor(); virtual YSurface getSurface(); bool fOver; void setEnabled(bool enabled); private: void paint(Graphics &g, int const d, const YRect &r); YAction *fAction; YMenu *fPopup; ref fIcon; int fIconSize; ref fImage; ustring fText; int fPressed; bool fEnabled; int fHotCharPos; int hotKey; YActionListener *fListener; bool fSelected; bool fArmed; bool wasPopupActive; bool fPopupActive; void popup(bool mouseDown); void popdown(); static YColor *normalButtonBg; static YColor *normalButtonFg; static YColor *activeButtonBg; static YColor *activeButtonFg; static ref normalButtonFont; static ref activeButtonFont; }; extern ref buttonIPixmap; extern ref buttonAPixmap; #ifdef CONFIG_GRADIENTS extern ref buttonIPixbuf; extern ref buttonAPixbuf; #endif #endif icewm-1.3.7/src/gnome.cc0000644000076600007660000001310411463274240014027 0ustar develdevel/* * IceWM * * Copyright (C) 1998-2001 Marko Macek * * Changes: * * 2002/12/14 * * rewrite as an external program * 2000/10/20 mathias.hasselmann@gmx.de * * read .order files * * icons for submenus * * clean up * 2000/09/19 mathias.hasselmann@gmx.de * * localized submenus */ #include "config.h" #ifdef CONFIG_GNOME_MENUS #include "ylib.h" #include "default.h" #include "ypixbuf.h" #include "yapp.h" #include "sysdep.h" #include "base.h" #include #include #include #include "yarray.h" char const * ApplicationName = "icewm-menu-gnome1"; class GnomeMenu; class GnomeMenuItem { public: GnomeMenuItem() { title = 0; icon = 0; dentry = 0; submenu = 0; } const char *title; const char *icon; const char *dentry; GnomeMenu *submenu; }; class GnomeMenu { public: GnomeMenu() { } YObjectArray items; bool isDuplicateName(const char *name); void addEntry(const char *fPath, const char *name, const int plen, const bool firstRun); void populateMenu(const char *fPath); }; void dumpMenu(GnomeMenu *menu) { for (unsigned int i = 0; i < menu->items.getCount(); i++) { GnomeMenuItem *item = menu->items.getItem(i); if (item->dentry && !item->submenu) { printf("prog \"%s\" %s icewm-menu-gnome1 --open \"%s\"\n", item->title, item->icon ? item->icon : "-", item->dentry); } else if (item->dentry && item->submenu) { printf("menuprog \"%s\" %s icewm-menu-gnome1 --list \"%s\"\n", item->title, item->icon ? item->icon : "-", g_dirname(item->dentry)); } } } bool GnomeMenu::isDuplicateName(const char *name) { for (unsigned int i = 0; i < items.getCount(); i++) { GnomeMenuItem *item = items.getItem(i); if (strcmp(name, item->title) == 0) return 1; } return 0; } void GnomeMenu::addEntry(const char *fPath, const char *name, const int plen, const bool firstRun) { const int nlen = (plen == 0 || fPath[plen - 1] != '/') ? plen + 1 + strlen(name) : plen + strlen(name); char *npath = new char[nlen + 1]; if (npath) { strcpy(npath, fPath); if (plen == 0 || npath[plen - 1] != '/') { npath[plen] = '/'; strcpy(npath + plen + 1, name); } else strcpy(npath + plen, name); GnomeMenuItem *item = new GnomeMenuItem(); item->title = name; GnomeDesktopEntry *dentry = 0; struct stat sb; const bool isDir = (!stat(npath, &sb) && S_ISDIR(sb.st_mode)); if (isDir) { GnomeMenu *submenu = new GnomeMenu(); item->title = g_basename(npath); item->icon = gnome_pixmap_file("gnome-folder.png"); item->submenu = submenu; char *epath = new char[nlen + sizeof("/.directory")]; strcpy(epath, npath); strcpy(epath + nlen, "/.directory"); dentry = gnome_desktop_entry_load(epath); if (dentry) { item->title = dentry->name; item->icon = dentry->icon; } item->dentry = epath; } else { dentry = gnome_desktop_entry_load(npath); if (dentry) { item->title = newstr(dentry->name); if (dentry->icon) item->icon = newstr(dentry->icon); item->dentry = npath; } } if (firstRun || !isDuplicateName(item->title)) items.append(item); } } void GnomeMenu::populateMenu(const char *fPath) { const int plen = strlen(fPath); char *opath = new char[plen + sizeof("/.order")]; if (opath) { strcpy(opath, fPath); strcpy(opath + plen, "/.order"); FILE * order(fopen(opath, "r")); if (order) { char oentry[100]; while (fgets(oentry, sizeof (oentry), order)) { const int oend = strlen(oentry) - 1; if (oend > 0 && oentry[oend] == '\n') oentry[oend] = '\0'; addEntry(fPath, oentry, plen, true); } fclose(order); } delete[] opath; } DIR *dir = opendir(fPath); if (dir != 0) { struct dirent *file; while ((file = readdir(dir)) != NULL) { if (*file->d_name != '.') addEntry(fPath, file->d_name, plen, false); } closedir(dir); } } int makeMenu(const char *base_directory) { GnomeMenu *menu = new GnomeMenu(); menu->populateMenu(base_directory); dumpMenu(menu); return 0; } int runFile(const char *dentry_path) { GnomeDesktopEntry *dentry = 0; dentry = gnome_desktop_entry_load(dentry_path); if (dentry->exec_length == 0 || dentry->exec == 0) { msg("can't launch: %s", dentry->name); return 1; } gnome_desktop_entry_launch(dentry); return 0; } int main(int argc, char **argv) { for (char ** arg = argv + 1; arg < argv + argc; ++arg) { if (**arg == '-') { char *path = 0; if (IS_SWITCH("h", "help")) break; if ((path = GET_LONG_ARGUMENT("open")) != NULL) { return runFile(path); } else if ((path = GET_LONG_ARGUMENT("list")) != NULL) { return makeMenu(path); } } } msg("Usage: %s [ --open PATH | --list PATH ]", argv[0]); } #endif icewm-1.3.7/src/wmsession.cc0000644000076600007660000002263611463274240014763 0ustar develdevel/* * IceWM * * Copyright (C) 1999-2002 Marko Macek * * Session management support */ #include "config.h" #ifdef CONFIG_SESSION #include "yfull.h" #include "wmframe.h" #include "wmsession.h" #include "base.h" #include "wmapp.h" #include "mstring.h" #include #include #include "intl.h" SMWindowKey::SMWindowKey(YFrameWindow */*f*/): clientId(null), windowRole(null), windowClass(null), windowInstance(null) { } SMWindowKey::SMWindowKey(ustring id, ustring role): clientId(id), windowRole(role), windowClass(null), windowInstance(null) { } SMWindowKey::SMWindowKey(ustring id, ustring klass, ustring instance): clientId(id), windowRole(null), windowClass(klass), windowInstance(instance) { } SMWindowKey::~SMWindowKey() { } SMWindowInfo::SMWindowInfo(YFrameWindow *f): key(f) { } SMWindowInfo::SMWindowInfo(ustring id, ustring role, int ax, int ay, int w, int h, unsigned long astate, int alayer, int aworkspace): key(id, role) { x = ax; y = ay; width = w; height = h; state = astate; layer = alayer; workspace = aworkspace; } SMWindowInfo::SMWindowInfo(ustring id, ustring klass, ustring instance, int ax, int ay, int w, int h, unsigned long astate, int alayer, int aworkspace): key(id, klass, instance) { x = ax; y = ay; width = w; height = h; state = astate; layer = alayer; workspace = aworkspace; } SMWindowInfo::~SMWindowInfo() { } void SMWindows::addWindowInfo(SMWindowInfo *info) { fWindows.append(info); } void SMWindows::setWindowInfo(YFrameWindow */*f*/) { } bool SMWindows::getWindowInfo(YFrameWindow */*f*/, SMWindowInfo */*info*/) { return false; } bool SMWindows::findWindowInfo(YFrameWindow *f) { f->client()->getClientLeader(); Window leader = f->client()->clientLeader(); if (leader == None) return false; ustring cid = f->client()->getClientId(leader); if (cid == null) return false; for (int i = 0; i < fWindows.getCount(); ++i) { const SMWindowInfo *window = fWindows.getItem(i); if (cid.equals(window->key.clientId)) { if (window->key.windowClass != null && window->key.windowInstance != null) { ustring klass = null; ustring instance = null; XClassHint *ch = f->client()->classHint(); if (ch) { klass = ch->res_class; instance = ch->res_name; } if (klass.equals(window->key.windowClass) && instance.equals(window->key.windowInstance)) { MSG(("got c %s %s %s %d:%d:%d:%d %d %ld %d", cstring(cid).c_str(), cstring(klass).c_str(), cstring(instance).c_str(), window->x, window->y, window->width, window->height, window->workspace, window->state, window->layer)); f->configureClient(window->x, window->y, window->width, window->height); f->setRequestedLayer(window->layer); f->setWorkspace(window->workspace); f->setState(WIN_STATE_ALL, window->state); return true; } } } } return false; } bool SMWindows::removeWindowInfo(YFrameWindow */*f*/) { return false; } SMWindows *sminfo = 0; static int wr_str(FILE *f, const char *s) { if (!s) return -1; if (fputc('"', f) == EOF) return -1; while (*s) { if ((*s >= '0' && *s <= '9') || (*s >= 'a' && *s <= 'z') || (*s >= 'A' && *s <= 'Z') || *s == '_' || *s == '-' || *s == '.' || *s == ':') { if (fputc(*s, f) == EOF) return -1; } else { unsigned char c = *s; if (fprintf(f, "=%02X", c) != 3) return -1; } s++; } if (fputc('"', f) == EOF) return -1; if (fputc(' ', f) == EOF) return -1; return 0; } static int rd_str(char *s, char *d) { char c; bool old = true; c = *s++; while (c == ' ') c = *s++; if (c == '"') { old = false; c = *s++; } while (c != 0) { if (c == '"' && !old) { c = *s++; break; } if (c == ' ' && old) break; if (!old && c == '=') { int i = ' '; sscanf(s, "%02X", &i); s += 2; c = (char)(i & 0xFF); } *d++ = c; c = *s++; } *d = 0; return 0; } void loadWindowInfo() { sminfo = new SMWindows(); FILE *fp; char line[1024]; char cid[1024]; char role[1024]; char klass[1024]; char instance[1024]; int x, y, w, h; long workspace, layer; unsigned long state; SMWindowInfo *info; char *name = getsesfile(); if (name == 0) return ; fp = fopen(name, "r"); if (fp == NULL) return ; while (fgets(line, sizeof(line), fp) != 0) { if (line[0] == 'c') { if (sscanf(line, "c %s %s %s %d:%d:%d:%d %ld %lu %ld", cid, klass, instance, &x, &y, &w, &h, &workspace, &state, &layer) == 10) { MSG(("%s %s %s %d:%d:%d:%d %ld %lu %ld", cid, klass, instance, x, y, w, h, workspace, state, layer)); rd_str(cid, cid); rd_str(klass, klass); rd_str(instance, instance); info = new SMWindowInfo(cid, klass, instance, x, y, w, h, state, layer, workspace); sminfo->addWindowInfo(info); } else { msg(_("Session Manager: Unknown line %s"), line); } } else if (line[0] == 'r') { if (sscanf(line, "r %s %s %d:%d:%d:%d %ld %lu %ld", cid, role, &x, &y, &w, &h, &workspace, &state, &layer) == 9) { MSG(("%s %s %s %d:%d:%d:%d %ld %lu %ld\n", cid, klass, instance, x, y, w, h, workspace, state, layer)); rd_str(cid, cid); rd_str(role, role); info = new SMWindowInfo(cid, role, x, y, w, h, state, layer, workspace); sminfo->addWindowInfo(info); } else { msg(_("Session Manager: Unknown line %s"), line); } } else if (line[0] == 'w') { int ws = 0; if (sscanf(line, "w %d", &ws) == 1) { if (ws >= 0 && ws < manager->workspaceCount()) manager->activateWorkspace(ws); } } else { msg(_("Session Manager: Unknown line %s"), line); } } fclose(fp); } bool findWindowInfo(YFrameWindow *f) { if (sminfo && sminfo->findWindowInfo(f)) { return true; } return false; } void YWMApp::smDie() { exit(0); //!!!manager->exitAfterLastClient(true); } void YWMApp::smSaveYourselfPhase2() { FILE *fp; char *name = getsesfile(); YFrameWindow *f = 0; if (name == 0) goto end; fp = fopen(name, "w+"); if (fp == NULL) goto end; f = manager->topLayer(); for (; f; f = f->nextLayer()) { f->client()->getClientLeader(); Window leader = f->client()->clientLeader(); //msg("window=%s", f->client()->windowTitle()); if (leader != None) { //msg("leader=%lX", leader); ustring cid = f->client()->getClientId(leader); if (cid != null) { f->client()->getWindowRole(); ustring role = f->client()->windowRole(); if (role != null) { fprintf(fp, "r "); //%s %s ", cid, role); wr_str(fp, cstring(cid).c_str()); wr_str(fp, cstring(role).c_str()); } else { f->client()->getClassHint(); char *klass = 0; char *instance = 0; XClassHint *ch = f->client()->classHint(); if (ch) { klass = ch->res_class; instance = ch->res_name; } if (klass && instance) { //msg("k=%s, i=%s", klass, instance); fprintf(fp, "c "); //%s %s %s ", cid, klass, instance); wr_str(fp, cstring(cid).c_str()); wr_str(fp, cstring(klass).c_str()); wr_str(fp, cstring(instance).c_str()); } else { continue; } } fprintf(fp, "%d:%d:%d:%d %ld %lu %ld\n", f->x(), f->y(), f->client()->width(), f->client()->height(), f->getWorkspace(), f->getState(), f->getActiveLayer()); } } } fprintf(fp, "w %lu\n", manager->activeWorkspace()); fclose(fp); end: YSMApplication::smSaveYourselfPhase2(); } #endif /* CONFIG_SESSION */ icewm-1.3.7/src/ytooltip.h0000644000076600007660000000116711463274240014455 0ustar develdevel#ifndef __YTOOLTIP_H #define __YTOOLTIP_H #ifdef CONFIG_TOOLTIP #include "ywindow.h" #include "ytimer.h" class YToolTip: public YWindow, public YTimerListener { public: YToolTip(YWindow *aParent = 0); virtual ~YToolTip(); virtual void paint(Graphics &g, const YRect &r); void setText(const ustring &tip); virtual bool handleTimer(YTimer *t); void locate(YWindow *w, const XCrossingEvent &crossing); private: void display(); ustring fText; static YColor *toolTipBg; static YColor *toolTipFg; static ref toolTipFont; static YTimer *fToolTipVisibleTimer; }; #endif #endif icewm-1.3.7/src/ywindow.cc0000644000076600007660000015737411463274240014444 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek */ #include "config.h" #include "yfull.h" #include "yutil.h" #include "ywindow.h" #include "ytooltip.h" #include "yxapp.h" #include "sysdep.h" #include "yprefs.h" #include "yrect.h" #include "ascii.h" #include "ytimer.h" #include "ypopup.h" /******************************************************************************/ /******************************************************************************/ void YWindow::addIgnoreUnmap(Window /*w*/) { unmapCount++; } bool YWindow::ignoreUnmap(Window /*w*/) { if (unmapCount == 0) return false; unmapCount--; return true; } void YWindow::removeAllIgnoreUnmap(Window /*w*/) { unmapCount = 0; } class YAutoScroll: public YTimerListener { public: YAutoScroll(); virtual ~YAutoScroll(); virtual bool handleTimer(YTimer *timer); void autoScroll(YWindow *w, bool autoScroll, const XMotionEvent *motion); YWindow *getWindow() const { return fWindow; } bool isScrolling() const { return fScrolling; } private: YTimer *fAutoScrollTimer; XMotionEvent *fMotion; YWindow *fWindow; bool fScrolling; }; YAutoScroll::YAutoScroll() { fWindow = 0; fAutoScrollTimer = 0; fScrolling = false; fMotion = new XMotionEvent; } YAutoScroll::~YAutoScroll() { delete fAutoScrollTimer; fAutoScrollTimer = 0; delete fMotion; fMotion = 0; } bool YAutoScroll::handleTimer(YTimer *timer) { if (timer == fAutoScrollTimer && fWindow) { fAutoScrollTimer->setInterval(autoScrollDelay); return fWindow->handleAutoScroll(*fMotion); } return false; } void YAutoScroll::autoScroll(YWindow *w, bool autoScroll, const XMotionEvent *motion) { if (motion && fMotion) *fMotion = *motion; else w = 0; fWindow = w; if (w == 0) autoScroll = false; fScrolling = autoScroll; if (autoScroll && fAutoScrollTimer == 0) { fAutoScrollTimer = new YTimer(autoScrollStartDelay); fAutoScrollTimer->setTimerListener(this); } if (fAutoScrollTimer) { if (autoScroll) { if (!fAutoScrollTimer->isRunning()) { fAutoScrollTimer->startTimer(autoScrollStartDelay); } } else fAutoScrollTimer->stopTimer(); } } /******************************************************************************/ /******************************************************************************/ extern XContext windowContext; YAutoScroll *YWindow::fAutoScroll = 0; YWindow *YWindow::fClickWindow = 0; Time YWindow::fClickTime = 0; int YWindow::fClickCount = 0; XButtonEvent YWindow::fClickEvent; int YWindow::fClickDrag = 0; unsigned int YWindow::fClickButton = 0; unsigned int YWindow::fClickButtonDown = 0; unsigned int ignore_enternotify_hack = 0; // credits to ahwm static void update_ignore_enternotify_hack(const XEvent &event) { ignore_enternotify_hack = event.xany.serial; MSG(("ignore: %10d", ignore_enternotify_hack)); if (xapp && xapp->display()) XSync(xapp->display(), False); } /******************************************************************************/ /******************************************************************************/ YWindow::YWindow(YWindow *parent, Window win): fParentWindow(parent), fNextWindow(0), fPrevWindow(0), fFirstWindow(0), fLastWindow(0), fFocusedWindow(0), fHandle(win), flags(0), fStyle(0), fX(0), fY(0), fWidth(1), fHeight(1), fPointer(), unmapCount(0), fGraphics(0), fEventMask(KeyPressMask|KeyReleaseMask|FocusChangeMask| LeaveWindowMask|EnterWindowMask), fWinGravity(NorthWestGravity), fBitGravity(ForgetGravity), fEnabled(true), fToplevel(false), fDoubleBuffer(doubleBuffer), accel(0), #ifdef CONFIG_TOOLTIP fToolTip(0), #endif fDND(false), XdndDragSource(None), XdndDropTarget(None) { if (fHandle != None) { MSG(("adopting window %lX", fHandle)); flags |= wfAdopted; create(); } else if (fParentWindow == 0) { PRECONDITION(desktop != 0); fParentWindow = desktop; } insertWindow(); } YWindow::~YWindow() { if (fAutoScroll && fAutoScroll->isScrolling() && fAutoScroll->getWindow() == this) fAutoScroll->autoScroll(0, false, 0); removeWindow(); while (accel) { YAccelerator *next = accel->next; delete accel; accel = next; } #ifdef CONFIG_TOOLTIP if (fToolTip) { fToolTip->hide(); if (fToolTipTimer && fToolTipTimer->getTimerListener() == fToolTip) { fToolTipTimer->stopTimer(); fToolTipTimer->setTimerListener(0); } delete fToolTip; fToolTip = 0; } #endif if (fClickWindow == this) fClickWindow = 0; if (fGraphics) { delete fGraphics; fGraphics = 0; } if (flags & wfCreated) destroy(); } void YWindow::setWindowFocus() { XSetInputFocus(xapp->display(), handle(), RevertToNone, CurrentTime); } void YWindow::setTitle(char const * title) { XStoreName(xapp->display(), handle(), title); } void YWindow::setClassHint(char const * rName, char const * rClass) { XClassHint wmclass; wmclass.res_name = (char *) rName; wmclass.res_class = (char *) rClass; XSetClassHint(xapp->display(), handle(), &wmclass); } void YWindow::setStyle(unsigned long aStyle) { if (fStyle != aStyle) { fStyle = aStyle; if (flags & wfCreated) { if (fStyle & wsPointerMotion) fEventMask |= PointerMotionMask; if ((fStyle & wsDesktopAware) || (fStyle & wsManager) || (fHandle != RootWindow(xapp->display(), DefaultScreen(xapp->display())))) fEventMask |= StructureNotifyMask | ColormapChangeMask | PropertyChangeMask; if (fStyle & wsManager) fEventMask |= FocusChangeMask | SubstructureRedirectMask | SubstructureNotifyMask; fEventMask |= ButtonPressMask | ButtonReleaseMask | ButtonMotionMask; if (fHandle == RootWindow(xapp->display(), DefaultScreen(xapp->display()))) if (!(fStyle & wsManager) || !grabRootWindow) fEventMask &= ~(ButtonPressMask | ButtonReleaseMask | ButtonMotionMask); XSelectInput(xapp->display(), fHandle, fEventMask); } } } Graphics &YWindow::getGraphics() { return *(NULL == fGraphics ? fGraphics = new Graphics(*this) : fGraphics); } void YWindow::repaint() { XClearArea(xapp->display(), handle(), 0, 0, width(), height(), True); } void YWindow::repaintSync() { // useful when server grabbed if ((flags & (wfCreated | wfVisible)) == (wfCreated | wfVisible)) { Graphics &g = getGraphics(); YRect r1(0, 0, width(), height()); ref pixmap = beginPaint(r1); Graphics g1(pixmap, 0, 0); paint(g1, r1); endPaint(g, pixmap, r1); } } void YWindow::repaintFocus() { repaint(); /// if ((flags & (wfCreated | wfVisible)) == (wfCreated | wfVisible)) { /// paintFocus(getGraphics(), YRect(0, 0, width(), height())); /// } } void YWindow::create() { if (flags & wfCreated) return; if (fHandle == None) { XSetWindowAttributes attributes; unsigned int attrmask = CWEventMask; fEventMask |= ExposureMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask; if (fStyle & wsPointerMotion) fEventMask |= PointerMotionMask; if (fParentWindow == desktop && !(fStyle & wsOverrideRedirect)) fEventMask |= StructureNotifyMask | SubstructureRedirectMask; if (fStyle & wsManager) fEventMask |= SubstructureRedirectMask | SubstructureNotifyMask; if (fStyle & wsSaveUnder) { attributes.save_under = True; attrmask |= CWSaveUnder; } if (fStyle & wsOverrideRedirect) { attributes.override_redirect = True; attrmask |= CWOverrideRedirect; } if (fPointer.handle() != None) { attrmask |= CWCursor; attributes.cursor = fPointer.handle(); } if (fBitGravity != ForgetGravity) { attributes.bit_gravity = fBitGravity; attrmask |= CWBitGravity; } if (fWinGravity != NorthWestGravity) { attributes.win_gravity = fWinGravity; attrmask |= CWWinGravity; } attributes.event_mask = fEventMask; int zw = width(); int zh = height(); if (zw == 0 || zh == 0) { zw = 1; zh = 1; flags |= wfNullSize; } fHandle = XCreateWindow(xapp->display(), parent()->handle(), x(), y(), zw, zh, 0, CopyFromParent, (fStyle & wsInputOnly) ? InputOnly : InputOutput, CopyFromParent, attrmask, &attributes); if (parent() == desktop && !(flags & (wsManager || wsOverrideRedirect))) XSetWMProtocols(xapp->display(), fHandle, &_XA_WM_DELETE_WINDOW, 1); if ((flags & wfVisible) && !(flags & wfNullSize)) XMapWindow(xapp->display(), fHandle); } else { XWindowAttributes attributes; XGetWindowAttributes(xapp->display(), fHandle, &attributes); fX = attributes.x; fY = attributes.y; fWidth = attributes.width; fHeight = attributes.height; //MSG(("window initial geometry (%d:%d %dx%d)", // fX, fY, fWidth, fHeight)); if (attributes.map_state != IsUnmapped) flags |= wfVisible; else flags &= ~wfVisible; fEventMask = 0; if ((fStyle & wsDesktopAware) || (fStyle & wsManager) || (fHandle != RootWindow(xapp->display(), DefaultScreen(xapp->display())))) fEventMask |= StructureNotifyMask | ColormapChangeMask | PropertyChangeMask; if (fStyle & wsManager) { fEventMask |= FocusChangeMask | SubstructureRedirectMask | SubstructureNotifyMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask; if (!grabRootWindow && fHandle == RootWindow(xapp->display(), DefaultScreen(xapp->display()))) fEventMask &= ~(ButtonPressMask | ButtonReleaseMask | ButtonMotionMask); } XSelectInput(xapp->display(), fHandle, fEventMask); } XSaveContext(xapp->display(), fHandle, windowContext, (XPointer)this); flags |= wfCreated; } void YWindow::destroy() { if (flags & wfCreated) { if (!(flags & wfDestroyed)) { if (!(flags & wfAdopted)) { MSG(("----------------------destroy %X", fHandle)); XDestroyWindow(xapp->display(), fHandle); removeAllIgnoreUnmap(fHandle); } else { XSelectInput(xapp->display(), fHandle, NoEventMask); } flags |= wfDestroyed; } XDeleteContext(xapp->display(), fHandle, windowContext); fHandle = None; flags &= ~wfCreated; } } void YWindow::removeWindow() { if (fParentWindow) { if (fParentWindow->fFocusedWindow == this) fParentWindow->fFocusedWindow = 0; if (fPrevWindow) fPrevWindow->fNextWindow = fNextWindow; else fParentWindow->fFirstWindow = fNextWindow; if (fNextWindow) fNextWindow->fPrevWindow = fPrevWindow; else fParentWindow->fLastWindow = fPrevWindow; fParentWindow = 0; } fPrevWindow = fNextWindow = 0; } void YWindow::insertWindow() { if (fParentWindow) { fNextWindow = fParentWindow->fFirstWindow; fPrevWindow = 0; if (fNextWindow) fNextWindow->fPrevWindow = this; else fParentWindow->fLastWindow = this; fParentWindow->fFirstWindow = this; } } void YWindow::reparent(YWindow *parent, int x, int y) { if (flags & wfVisible) { addIgnoreUnmap(handle()); } removeWindow(); fParentWindow = parent; insertWindow(); MSG(("----------- reparent %lX to %lX", handle(), parent->handle())); XReparentWindow(xapp->display(), handle(), parent->handle(), x, y); fX = x; fY = y; } Window YWindow::handle() { if (!(flags & wfCreated)) create(); return fHandle; } void YWindow::show() { if (!(flags & wfVisible)) { flags |= wfVisible; if (!(flags & wfNullSize)) XMapWindow(xapp->display(), handle()); } } void YWindow::hide() { if (flags & wfVisible) { flags &= ~wfVisible; if (!(flags & wfNullSize)) { addIgnoreUnmap(handle()); XUnmapWindow(xapp->display(), handle()); } } } void YWindow::setWinGravity(int gravity) { if (flags & wfCreated) { unsigned long eventmask = CWWinGravity; XSetWindowAttributes attributes; attributes.win_gravity = gravity; fWinGravity = gravity; XChangeWindowAttributes(xapp->display(), handle(), eventmask, &attributes); } else { fWinGravity = gravity; } } void YWindow::setBitGravity(int gravity) { if (flags & wfCreated) { unsigned long eventmask = CWBitGravity; XSetWindowAttributes attributes; attributes.bit_gravity = gravity; fBitGravity = gravity; XChangeWindowAttributes(xapp->display(), handle(), eventmask, &attributes); } else { fBitGravity = gravity; } } void YWindow::raise() { XRaiseWindow(xapp->display(), handle()); } void YWindow::lower() { XLowerWindow(xapp->display(), handle()); } void YWindow::handleEvent(const XEvent &event) { switch (event.type) { case KeyPress: case KeyRelease: { for (YWindow *w = this; // !!! hack, fix w && w->handleKey(event.xkey) == false; w = w->parent()) {} } break; case ButtonPress: captureEvents(); handleButton(event.xbutton); break; case ButtonRelease: releaseEvents(); handleButton(event.xbutton); break; case MotionNotify: { XEvent new_event, old_event; old_event = event; while (/*XPending(app->display()) > 0 &&*/ XCheckMaskEvent(xapp->display(), KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask, &new_event) == True) { if (event.type != new_event.type || event.xmotion.window != new_event.xmotion.window) { XPutBackEvent(xapp->display(), &new_event); break; } else { XSync(xapp->display(), False); old_event = new_event; } } handleMotion(old_event.xmotion); } break; case EnterNotify: case LeaveNotify: handleCrossing(event.xcrossing); break; case FocusIn: case FocusOut: handleFocus(event.xfocus); break; case PropertyNotify: handleProperty(event.xproperty); break; case ColormapNotify: handleColormap(event.xcolormap); break; case MapRequest: handleMapRequest(event.xmaprequest); break; case ReparentNotify: handleReparentNotify(event.xreparent); break; case ConfigureNotify: update_ignore_enternotify_hack(event); #if 1 { XEvent new_event, old_event; old_event = event; while (/*XPending(app->display()) > 0 &&*/ XCheckTypedWindowEvent(xapp->display(), handle(), ConfigureNotify, &new_event) == True) { if (event.type != new_event.type || event.xmotion.window != new_event.xmotion.window) { XPutBackEvent(xapp->display(), &new_event); break; } else { XFlush(xapp->display()); old_event = new_event; } } handleConfigure(old_event.xconfigure); } #else handleConfigure(event.xconfigure); #endif break; case ConfigureRequest: handleConfigureRequest(event.xconfigurerequest); break; case DestroyNotify: handleDestroyWindow(event.xdestroywindow); break; case Expose: handleExpose(event.xexpose); break; case GraphicsExpose: handleGraphicsExpose(event.xgraphicsexpose); break; case MapNotify: update_ignore_enternotify_hack(event); handleMapNotify(event.xmap); break; case UnmapNotify: update_ignore_enternotify_hack(event); handleUnmapNotify(event.xunmap); break; case ClientMessage: handleClientMessage(event.xclient); break; case SelectionClear: handleSelectionClear(event.xselectionclear); break; case SelectionRequest: handleSelectionRequest(event.xselectionrequest); break; case SelectionNotify: handleSelection(event.xselection); break; case GravityNotify: update_ignore_enternotify_hack(event); break; case CirculateNotify: update_ignore_enternotify_hack(event); break; default: #ifdef CONFIG_SHAPE if (shapesSupported && event.type == (shapeEventBase + ShapeNotify)) handleShapeNotify(*(const XShapeEvent *)&event); #endif #ifdef CONFIG_XRANDR //msg("event.type=%d %d %d", event.type, xrandrEventBase, xrandrSupported); if (xrandrSupported && event.type == (xrandrEventBase + 0)) // XRRScreenChangeNotify handleRRScreenChangeNotify(*(const XRRScreenChangeNotifyEvent *)&event); #endif break; } } ref YWindow::beginPaint(YRect &r) { // return new YPixmap(width(), height()); ref pix = YPixmap::create(r.width(), r.height()); return pix; } void YWindow::endPaint(Graphics &g, ref pixmap, YRect &r) { if (pixmap != null) { g.copyPixmap(pixmap, 0, 0, /*r.x(), r.y(),*/ r.width(), r.height(), r.x(), r.y()); } } void YWindow::setDoubleBuffer(bool doubleBuffer) { fDoubleBuffer = doubleBuffer; } /// TODO #warning "implement expose compression" void YWindow::paintExpose(int ex, int ey, int ew, int eh) { Graphics &g = getGraphics(); XRectangle r; r.x = ex; r.y = ey; r.width = ew; r.height = eh; g.setClipRectangles(&r, 1); const int ee = 0; if (ex < ee) { ew += ex; ex = 0; } else { ex -= ee; ew += ee; } if (ey < ee) { eh += ey; ey = 0; } else { ey -= ee; eh += ee; } if (ex + ew < width()) { ew += ee; } else { ew = width() - ex; } if (ey + eh + ee < height()) { eh += ee; } else { eh = height() - ey; } YRect r1(ex, ey, ew, eh); if (r1.width() > 0 && r1.height() > 0) { if (fDoubleBuffer) { ref pixmap = beginPaint(r1); Graphics g1(pixmap, ex, ey); //MSG(("paint %d %d %d %d", ex, ey, ew, eh)); paint(g1, r1); endPaint(g, pixmap, r1); } else { paint(g, r1); } } g.resetClip(); //XSetClipMask(xapp->display(), g.handle(), None); ///XFlush(app->display()); } void YWindow::handleExpose(const XExposeEvent &expose) { paintExpose(expose.x, expose.y, expose.width, expose.height); } void YWindow::handleGraphicsExpose(const XGraphicsExposeEvent &graphicsExpose) { paintExpose(graphicsExpose.x, graphicsExpose.y, graphicsExpose.width, graphicsExpose.height); } void YWindow::handleConfigure(const XConfigureEvent &configure) { if (configure.window == handle()) { if (configure.x != fX || configure.y != fY || configure.width != fWidth || configure.height != fHeight) { fX = configure.x; fY = configure.y; fWidth = configure.width; fHeight = configure.height; this->configure(YRect(fX, fY, fWidth, fHeight)); } } } bool YWindow::handleKey(const XKeyEvent &key) { if (key.type == KeyPress) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); unsigned int m = KEY_MODMASK(key.state); if (accel) { YAccelerator *a; for (a = accel; a; a = a->next) { //msg("%c %d - %c %d %d", k, k, a->key, a->key, a->mod); if (m == a->mod && k == a->key) if (a->win->handleKey(key) == true) return true; } if (ASCII::isLower((char)k)) { k = ASCII::toUpper((char)k); for (a = accel; a; a = a->next) if (m == a->mod && k == a->key) if (a->win->handleKey(key) == true) return true; } } if (k == XK_Tab) { if (m == 0) { nextFocus(); return true; } else if (m == ShiftMask) { prevFocus(); return true; } } } return false; } void YWindow::handleButton(const XButtonEvent &button) { #ifdef CONFIG_TOOLTIP if (fToolTip) { fToolTip->hide(); if (fToolTipTimer && fToolTipTimer->getTimerListener() == fToolTip) { fToolTipTimer->stopTimer(); fToolTipTimer->setTimerListener(0); } } #endif int const dx(abs(button.x_root - fClickEvent.x_root)); int const dy(abs(button.y_root - fClickEvent.y_root)); int const motionDelta(max(dx, dy)); if (button.type == ButtonPress) { fClickDrag = 0; if (fClickWindow != this) { fClickWindow = this; fClickCount = 1; } else { if ((button.time - fClickTime < (unsigned) MultiClickTime) && fClickButton == button.button && motionDelta <= ClickMotionDistance && button.x >= 0 && button.y >= 0 && button.x < int(width()) && button.y < int(height())) { fClickCount++; handleClickDown(button, fClickCount); } else fClickCount = 1; } fClickEvent = button; fClickButton = fClickButtonDown = button.button; fClickTime = button.time; } else if (button.type == ButtonRelease) { if ((fClickWindow == this) && !fClickDrag && fClickCount > 0 && fClickButtonDown == button.button && motionDelta <= ClickMotionDistance && button.x >= 0 && button.y >= 0 && button.x < int(width()) && button.y < int(height())) { fClickButtonDown = 0; handleClick(button, fClickCount); } else { fClickWindow = 0; fClickCount = 1; fClickButtonDown = 0; fClickButton = 0; if (fClickDrag) handleEndDrag(fClickEvent, button); } } } void YWindow::handleMotion(const XMotionEvent &motion) { if (fClickButtonDown) { if (fClickDrag) { handleDrag(fClickEvent, motion); } else { int const dx(abs(motion.x_root - fClickEvent.x_root)); int const dy(abs(motion.y_root - fClickEvent.y_root)); int const motionDelta(max(dx, dy)); int curButtons = 0; curButtons = ((motion.state & Button1Mask) ? (1 << 1) : 0) | ((motion.state & Button2Mask) ? (1 << 2) : 0) | ((motion.state & Button3Mask) ? (1 << 3) : 0) | ((motion.state & Button4Mask) ? (1 << 4) : 0) | ((motion.state & Button5Mask) ? (1 << 5) : 0); if (((motion.time - fClickTime > (unsigned) ClickMotionDelay) || (motionDelta >= ClickMotionDistance)) && ((1 << fClickButton) == curButtons) ) { //msg("start drag %d %d %d", curButtons, fClickButton, motion.state); fClickDrag = 1; handleBeginDrag(fClickEvent, motion); } } } } #ifndef CONFIG_TOOLTIP void YWindow::setToolTip(const ustring &/*tip*/) { #else YTimer *YWindow::fToolTipTimer = 0; void YWindow::setToolTip(const ustring &tip) { if (fToolTip) { if (tip == null) { delete fToolTip; fToolTip = 0; } else { fToolTip->setText(tip); fToolTip->repaint(); } } if (tip != null) { if (fToolTip == NULL) fToolTip = new YToolTip(); if (fToolTip) fToolTip->setText(tip); } #endif } bool YWindow::toolTipVisible() { #ifdef CONFIG_TOOLTIP return (fToolTip && fToolTip->visible()); #else return false; #endif } void YWindow::updateToolTip() { } #ifndef CONFIG_TOOLTIP void YWindow::handleCrossing(const XCrossingEvent &/*crossing*/) { #else void YWindow::handleCrossing(const XCrossingEvent &crossing) { if (fToolTip) { if (crossing.type == EnterNotify && crossing.mode == NotifyNormal) { if (fToolTipTimer == 0) fToolTipTimer = new YTimer(ToolTipDelay); if (fToolTipTimer) { fToolTipTimer->setTimerListener(fToolTip); fToolTipTimer->startTimer(); updateToolTip(); if (fToolTip) fToolTip->locate(this, crossing); } } else if (crossing.type == LeaveNotify) { fToolTip->hide(); if (fToolTipTimer && fToolTipTimer->getTimerListener() == fToolTip) { fToolTipTimer->stopTimer(); fToolTipTimer->setTimerListener(0); } } } #endif } void YWindow::handleClientMessage(const XClientMessageEvent &message) { if (message.message_type == _XA_WM_PROTOCOLS && message.format == 32 && message.data.l[0] == (long)_XA_WM_DELETE_WINDOW) { handleClose(); } else if (message.message_type == _XA_WM_PROTOCOLS && message.format == 32 && message.data.l[0] == (long)_XA_WM_TAKE_FOCUS) { gotFocus(); #if 0 YWindow *w = getFocusWindow(); if (w) w->gotFocus(); else gotFocus(); #endif } else if (message.message_type == XA_XdndEnter || message.message_type == XA_XdndLeave || message.message_type == XA_XdndPosition || message.message_type == XA_XdndStatus || message.message_type == XA_XdndDrop || message.message_type == XA_XdndFinished) { handleXdnd(message); } } #if 0 virtual void handleVisibility(const XVisibilityEvent &visibility); virtual void handleCreateWindow(const XCreateWindowEvent &createWindow); #endif void YWindow::handleMapNotify(const XMapEvent &) { // ignore "map notify" not implemented or needed due to MapRequest event } void YWindow::handleUnmapNotify(const XUnmapEvent &xunmap) { if (xunmap.window == xunmap.event || xunmap.send_event) { if (!ignoreUnmap(xunmap.window)) { flags &= ~wfVisible; handleUnmap(xunmap); } } } void YWindow::handleUnmap(const XUnmapEvent &) { } void YWindow::handleConfigureRequest(const XConfigureRequestEvent & /*configureRequest*/) { } void YWindow::handleDestroyWindow(const XDestroyWindowEvent &destroyWindow) { if (destroyWindow.window == fHandle) { flags |= wfDestroyed; removeAllIgnoreUnmap(destroyWindow.window); } } void YWindow::paint(Graphics &g, const YRect &r) { g.fillRect(r.x(), r.y(), r.width(), r.height()); } bool YWindow::nullGeometry() { bool zero; if (fWidth == 0 || fHeight == 0) zero = true; else zero = false; if (zero && !(flags & wfNullSize)) { flags |= wfNullSize; if (flags & wfVisible) { addIgnoreUnmap(handle()); XUnmapWindow(xapp->display(), handle()); } } else if ((flags & wfNullSize) && !zero) { flags &= ~wfNullSize; if (flags & wfVisible) XMapWindow(xapp->display(), handle()); } return zero; } void YWindow::setGeometry(const YRect &r) { const bool resized = (r.width() != fWidth || r.height() != fHeight); if (r.x() != fX || r.y() != fY || resized) { fX = r.x(); fY = r.y(); fWidth = r.width(); fHeight = r.height(); if (flags & wfCreated) { if (!nullGeometry()) XMoveResizeWindow(xapp->display(), fHandle, fX, fY, fWidth, fHeight); } configure(YRect(fX, fY, fWidth, fHeight)); } } void YWindow::setPosition(int x, int y) { if (x != fX || y != fY) { fX = x; fY = y; if (flags & wfCreated) XMoveWindow(xapp->display(), fHandle, fX, fY); configure(YRect(fX, fY, width(), height())); } } void YWindow::setSize(int width, int height) { if (width != fWidth || height != fHeight) { fWidth = width; fHeight = height; if (flags & wfCreated) if (!nullGeometry()) XResizeWindow(xapp->display(), fHandle, fWidth, fHeight); configure(YRect(x(), y(), fWidth, fHeight)); } } void YWindow::mapToGlobal(int &x, int &y) { int dx, dy; Window child; XTranslateCoordinates(xapp->display(), handle(), desktop->handle(), x, y, &dx, &dy, &child); x = dx; y = dy; } void YWindow::mapToLocal(int &x, int &y) { int dx, dy; Window child; XTranslateCoordinates(xapp->display(), desktop->handle(), handle(), x, y, &dx, &dy, &child); x = dx; y = dy; } void YWindow::configure(const YRect &/*r*/) { } void YWindow::setPointer(const YCursor& pointer) { fPointer = pointer; if (flags & wfCreated) { XSetWindowAttributes attributes; attributes.cursor = fPointer.handle(); XChangeWindowAttributes(xapp->display(), handle(), CWCursor, &attributes); } } void YWindow::setGrabPointer(const YCursor& pointer) { XChangeActivePointerGrab(xapp->display(), ButtonPressMask|PointerMotionMask| ButtonReleaseMask, pointer.handle(), CurrentTime); //app->getEventTime()); } void YWindow::grabKeyM(int keycode, unsigned int modifiers) { MSG(("grabKey %d %d %s", keycode, modifiers, XKeysymToString(XKeycodeToKeysym(xapp->display(), (KeyCode)keycode, 0)))); XGrabKey(xapp->display(), keycode, modifiers, handle(), False, GrabModeAsync, GrabModeAsync); } void YWindow::grabKey(int key, unsigned int modifiers) { KeyCode keycode = XKeysymToKeycode(xapp->display(), key); if (keycode != 0) { grabKeyM(keycode, modifiers); if (modifiers != AnyModifier) { grabKeyM(keycode, modifiers | LockMask); if (xapp->NumLockMask != 0) { grabKeyM(keycode, modifiers | xapp->NumLockMask); grabKeyM(keycode, modifiers | xapp->NumLockMask | LockMask); } } } } void YWindow::grabButtonM(int button, unsigned int modifiers) { XGrabButton(xapp->display(), button, modifiers, handle(), True, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None); } void YWindow::grabButton(int button, unsigned int modifiers) { grabButtonM(button, modifiers); if (modifiers != AnyModifier) { grabButtonM(button, modifiers | LockMask); if (xapp->NumLockMask != 0) { grabButtonM(button, modifiers | xapp->NumLockMask); grabButtonM(button, modifiers | xapp->NumLockMask | LockMask); } } } void YWindow::captureEvents() { xapp->captureGrabEvents(this); } void YWindow::releaseEvents() { xapp->releaseGrabEvents(this); } void YWindow::donePopup(YPopupWindow * /*command*/) { } void YWindow::handleClose() { } void YWindow::setEnabled(bool enable) { if (enable != fEnabled) { fEnabled = enable; repaint(); } } void YWindow::handleFocus(const XFocusChangeEvent &xfocus) { if (isToplevel()) { if (xfocus.type == FocusIn) { gotFocus(); } else if (xfocus.type == FocusOut) { lostFocus(); } } } bool YWindow::isFocusTraversable() { return false; } bool YWindow::isFocused() { return (flags & wfFocused) != 0; #if 0 if (parent() == 0) return true; else if (isToplevel()) return (flags & wfFocused) != 0; else return (parent()->fFocusedWindow == this) && parent()->isFocused(); #endif } void YWindow::requestFocus(bool requestUserFocus) { // if (!toplevel()) // return ; // setFocus(0);///!!! is this the right place? if (isToplevel()) { if (visible() && requestUserFocus) setWindowFocus(); } else { if (parent()) { parent()->requestFocus(requestUserFocus); parent()->setFocus(this); } } } YWindow *YWindow::toplevel() { YWindow *w = this; while (w) { if (w->isToplevel() == true) return w; w = w->fParentWindow; } return 0; } void YWindow::nextFocus() { YWindow *t = toplevel(); if (t) t->changeFocus(true); } void YWindow::prevFocus() { YWindow *t = toplevel(); if (t) t->changeFocus(false); } YWindow *YWindow::getFocusWindow() { YWindow *w = this; while (w) { if (w->fFocusedWindow) w = w->fFocusedWindow; else break; } return w; } bool YWindow::changeFocus(bool next) { YWindow *cur = getFocusWindow(); if (cur == 0) { if (next) cur = fLastWindow; else cur = fFirstWindow; } YWindow *org = cur; if (cur) do { ///!!! need focus ordering if (next) { if (cur->fLastWindow) cur = cur->fLastWindow; else if (cur->fPrevWindow) cur = cur->fPrevWindow; else if (cur->isToplevel()) /**/; else { while (cur->fParentWindow) { cur = cur->fParentWindow; if (cur->isToplevel()) break; if (cur->fPrevWindow) { cur = cur->fPrevWindow; break; } } } } else { // is reverse tabbing of nested windows correct? if (cur->fFirstWindow) cur = cur->fFirstWindow; else if (cur->fNextWindow) cur = cur->fNextWindow; else if (cur->isToplevel()) /**/; else { while (cur->fParentWindow) { cur = cur->fParentWindow; if (cur->isToplevel()) break; if (cur->fNextWindow) { cur = cur->fNextWindow; break; } } } } if (cur->isFocusTraversable()) { cur->requestFocus(false); return true; } } while (cur != org); return false; } void YWindow::setFocus(YWindow *window) { if (window != fFocusedWindow) { YWindow *oldFocus = fFocusedWindow; fFocusedWindow = window; if (focused()) { if (oldFocus) oldFocus->lostFocus(); if (fFocusedWindow) fFocusedWindow->gotFocus(); } } } void YWindow::gotFocus() { if (parent() == 0 || isToplevel() || parent()->focused()) { if (!(flags & wfFocused)) { flags |= wfFocused; repaintFocus(); if (fFocusedWindow) fFocusedWindow->gotFocus(); } } } void YWindow::lostFocus() { if (flags & wfFocused) { if (fFocusedWindow) fFocusedWindow->lostFocus(); flags &= ~wfFocused; repaintFocus(); } } void YWindow::installAccelerator(unsigned int key, unsigned int mod, YWindow *win) { if (key < 128) key = ASCII::toUpper((char)key); if (fToplevel || fParentWindow == 0) { YAccelerator **pa = &accel, *a; while (*pa) { a = *pa; if (a->key == key && a->mod == mod && a->win == win) { assert(1 == 0); return ; } else pa = &(a->next); } a = new YAccelerator; if (a == 0) return ; a->key = key; a->mod = mod; a->win = win; a->next = accel; accel = a; } else parent()->installAccelerator(key, mod, win); } void YWindow::removeAccelerator(unsigned int key, unsigned int mod, YWindow *win) { if (key < 128) key = ASCII::toUpper((char)key); if (fToplevel || fParentWindow == 0) { YAccelerator **pa = &accel, *a; while (*pa) { a = *pa; if (a->key == key && a->mod == mod && a->win == win) { *pa = a->next; delete a; } else pa = &(a->next); } } else parent()->removeAccelerator(key, mod, win); } const Atom XdndCurrentVersion = 3; void YWindow::setDND(bool enabled) { if (fDND != enabled) { fDND = enabled; if (fDND) { XChangeProperty(xapp->display(), handle(), XA_XdndAware, XA_ATOM, // !!! ATOM? 32, PropModeReplace, (const unsigned char *)&XdndCurrentVersion, 1); } else { XDeleteProperty(xapp->display(), handle(), XA_XdndAware); } } } void YWindow::XdndStatus(bool acceptDrop, Atom dropAction) { XClientMessageEvent msg; int x_root = 0, y_root = 0; mapToGlobal(x_root, y_root); memset(&msg, 0, sizeof(msg)); msg.type = ClientMessage; msg.display = xapp->display(); msg.window = XdndDragSource; msg.message_type = XA_XdndStatus; msg.format = 32; msg.data.l[0] = handle(); msg.data.l[1] = (acceptDrop ? 0x00000001 : 0x00000000) | 2; msg.data.l[2] = (x_root << 16) + y_root; msg.data.l[3] = (width() << 16) + height(); msg.data.l[4] = dropAction; XSendEvent(xapp->display(), XdndDragSource, False, 0L, (XEvent *)&msg); } void YWindow::handleXdnd(const XClientMessageEvent &message) { if (message.message_type == XA_XdndEnter) { MSG(("XdndEnter source=%lX", message.data.l[0])); XdndDragSource = message.data.l[0]; } else if (message.message_type == XA_XdndLeave) { MSG(("XdndLeave source=%lX", message.data.l[0])); if (XdndDropTarget) { YWindow *win; if (XFindContext(xapp->display(), XdndDropTarget, windowContext, (XPointer *)(void *)&win) == 0) win->handleDNDLeave(); XdndDropTarget = None; } XdndDragSource = None; } else if (message.message_type == XA_XdndPosition && XdndDragSource != 0) { Window target, child; int x, y, nx, ny; YWindow *pwin = 0; XdndDragSource = message.data.l[0]; x = int(message.data.l[2] >> 16); y = int(message.data.l[2] & 0xFFFF); target = handle(); MSG(("XdndPosition source=%lX %d:%d time=%ld action=%ld window=%ld", message.data.l[0], x, y, message.data.l[3], message.data.l[4], XdndDropTarget)); do { if (XTranslateCoordinates(xapp->display(), desktop->handle(), target, x, y, &nx, &ny, &child)) { if (child) target = child; } else { target = 0; break; } } while (child); if (target != XdndDropTarget) { if (XdndDropTarget) { union { YWindow *ptr; XPointer xptr; } win; if (XFindContext(xapp->display(), XdndDropTarget, windowContext, &win.xptr) == 0) win.ptr->handleDNDLeave(); } XdndDropTarget = target; if (XdndDropTarget) { union { YWindow *ptr; XPointer xptr; } win; if (XFindContext(xapp->display(), XdndDropTarget, windowContext, &win.xptr) == 0) { win.ptr->handleDNDEnter(); pwin = win.ptr; } } } if (pwin == 0 && XdndDropTarget) { // !!! optimize this union { YWindow *ptr; XPointer xptr; } win; if (XFindContext(xapp->display(), XdndDropTarget, windowContext, &win.xptr) == 0) { pwin = win.ptr; } else pwin = 0; } if (pwin) pwin->handleDNDPosition(nx, ny); MSG(("XdndPosition %d:%d target=%ld", nx, ny, XdndDropTarget)); XdndStatus(false, None); /*{ XClientMessageEvent msg; msg.data.l[0] = handle(); msg.data.l[1] = (false ? 0x00000001 : 0x00000000) | 2; msg.data.l[2] = 0; //(x << 16) + y; msg.data.l[3] = 0;//(1 << 16) + 1; msg.data.l[4] = None; XSendEvent(app->display(), XdndDragSource, True, 0L, (XEvent *)&msg); }*/ } else if (message.message_type == XA_XdndStatus) { MSG(("XdndStatus")); } else if (message.message_type == XA_XdndDrop) { MSG(("XdndDrop")); } else if (message.message_type == XA_XdndFinished) { MSG(("XdndFinished")); } } void YWindow::handleDNDEnter() { } void YWindow::handleDNDLeave() { } void YWindow::handleDNDPosition(int /*x*/, int /*y*/) { } bool YWindow::handleAutoScroll(const XMotionEvent & /*mouse*/) { return false; } void YWindow::beginAutoScroll(bool doScroll, const XMotionEvent *motion) { if (fAutoScroll == 0) fAutoScroll = new YAutoScroll(); if (fAutoScroll) fAutoScroll->autoScroll(this, doScroll, motion); } void YWindow::handleSelectionClear(const XSelectionClearEvent &/*clear*/) { } void YWindow::handleSelectionRequest(const XSelectionRequestEvent &/*request*/) { } void YWindow::handleSelection(const XSelectionEvent &/*selection*/) { } void YWindow::acquireSelection(bool selection) { Atom sel = selection ? XA_PRIMARY : _XA_CLIPBOARD; XSetSelectionOwner(xapp->display(), sel, handle(), xapp->getEventTime("acquireSelection")); } void YWindow::clearSelection(bool selection) { Atom sel = selection ? XA_PRIMARY : _XA_CLIPBOARD; XSetSelectionOwner(xapp->display(), sel, None, xapp->getEventTime("clearSelection")); } void YWindow::requestSelection(bool selection) { Atom sel = selection ? XA_PRIMARY : _XA_CLIPBOARD; XConvertSelection(xapp->display(), sel, XA_STRING, sel, handle(), xapp->getEventTime("requestSelection")); } void YWindow::handleEndPopup(YPopupWindow *popup) { if (parent()) parent()->handleEndPopup(popup); } bool YWindow::hasPopup() { YPopupWindow *p = xapp->popup(); while (p && p->prevPopup()) p = p->prevPopup(); if (p) { YWindow *w = p->owner(); while (w) { if (w == this) return true; w = w->parent(); } } return false; } YDesktop::YDesktop(YWindow *aParent, Window win): YWindow(aParent, win) { desktop = this; setDoubleBuffer(false); int w, h; updateXineramaInfo(w, h); } YDesktop::~YDesktop() { } void YDesktop::resetColormapFocus(bool /*active*/) { } void YWindow::grabVKey(int key, unsigned int vm) { int m = 0; if (vm & kfShift) m |= ShiftMask; if (vm & kfCtrl) m |= ControlMask; if (vm & kfAlt) m |= xapp->AltMask; if (vm & kfMeta) m |= xapp->MetaMask; if (vm & kfSuper) m |= xapp->SuperMask; if (vm & kfHyper) m |= xapp->HyperMask; if (vm & kfAltGr) m |= xapp->ModeSwitchMask; MSG(("grabVKey %d %d %d", key, vm, m)); if (key != 0 && (vm == 0 || m != 0)) { if ((!(vm & kfMeta) || xapp->MetaMask) && (!(vm & kfAlt) || xapp->AltMask) && (!(vm & kfSuper) || xapp->SuperMask) && (!(vm & kfHyper) || xapp->HyperMask) && (!(vm & kfAltGr) || xapp->ModeSwitchMask)) { grabKey(key, m); } // !!! recheck this if (((vm & (kfAlt | kfCtrl)) == (kfAlt | kfCtrl)) && modSuperIsCtrlAlt && xapp->WinMask) { m = xapp->WinMask; if (vm & kfShift) m |= ShiftMask; if (vm & kfSuper) m |= xapp->SuperMask; if (vm & kfHyper) m |= xapp->HyperMask; if (vm & kfAltGr) m |= xapp->ModeSwitchMask; grabKey(key, m); } } } void YWindow::grabVButton(int button, unsigned int vm) { int m = 0; if (vm & kfShift) m |= ShiftMask; if (vm & kfCtrl) m |= ControlMask; if (vm & kfAlt) m |= xapp->AltMask; if (vm & kfMeta) m |= xapp->MetaMask; if (vm & kfSuper) m |= xapp->SuperMask; if (vm & kfHyper) m |= xapp->HyperMask; if (vm & kfAltGr) m |= xapp->ModeSwitchMask; MSG(("grabVButton %d %d %d", button, vm, m)); if (button != 0 && (vm == 0 || m != 0)) { if ((!(vm & kfMeta) || xapp->MetaMask) && (!(vm & kfAlt) || xapp->AltMask) && (!(vm & kfSuper) || xapp->SuperMask) && (!(vm & kfHyper) || xapp->HyperMask) && (!(vm & kfAltGr) || xapp->ModeSwitchMask)) { grabButton(button, m); } // !!! recheck this if (((vm & (kfAlt | kfCtrl)) == (kfAlt | kfCtrl)) && modSuperIsCtrlAlt && xapp->WinMask) { m = xapp->WinMask; if (vm & kfShift) m |= ShiftMask; if (vm & kfSuper) m |= xapp->SuperMask; if (vm & kfHyper) m |= xapp->HyperMask; if (vm & kfAltGr) m |= xapp->ModeSwitchMask; grabButton(button, m); } } } unsigned int YWindow::VMod(int m) { int vm = 0; int m1 = m & ~xapp->WinMask; if (m & xapp->WinMask) { if (modSuperIsCtrlAlt) { vm |= kfCtrl + kfAlt; } else if (xapp->WinMask == xapp->SuperMask) { vm |= kfSuper; } } if (m1 & ShiftMask) vm |= kfShift; if (m1 & ControlMask) vm |= kfCtrl; if (m1 & xapp->AltMask) vm |= kfAlt; if (m1 & xapp->MetaMask) vm |= kfMeta; if (m1 & xapp->SuperMask) vm |= kfSuper; if (m1 & xapp->HyperMask) vm |= kfHyper; if (m1 & xapp->ModeSwitchMask) vm |= kfAltGr; return vm; } bool YWindow::getCharFromEvent(const XKeyEvent &key, char *s, int maxLen) { char keyBuf[16]; KeySym ksym; XKeyEvent kev = key; // FIXME: int klen = XLookupString(&kev, keyBuf, sizeof(keyBuf), &ksym, NULL); #ifndef USE_XmbLookupString if ((klen == 0) && (ksym < 0x1000)) { klen = 1; keyBuf[0] = (char)(ksym & 0xFF); } #endif if (klen >= 1 && klen < maxLen - 1) { memcpy(s, keyBuf, klen); s[klen] = '\0'; return true; } return false; } void YWindow::scrollWindow(int dx, int dy) { if (dx == 0 && dy == 0) return ; if (dx >= int(width()) || dx <= -int(width()) || dy >= int(height()) || dy <= -int(height())) { repaint(); return ; } Graphics &g = getGraphics(); XRectangle r[2]; int nr = 0; static GC scrollGC = None; if (scrollGC == None) { scrollGC = XCreateGC(xapp->display(), desktop->handle(), 0, NULL); } XCopyArea(xapp->display(), handle(), handle(), scrollGC, dx, dy, width(), height(), 0, 0); dx = - dx; dy = - dy; if (dy != 0) { r[nr].x = 0; r[nr].width = width(); if (dy >= 0) { r[nr].y = 0; r[nr].height = dy; } else { r[nr].height = - dy; r[nr].y = height() - r[nr].height; } nr++; } if (dx != 0) { r[nr].y = 0; r[nr].height = height(); // !!! optimize if (dx >= 0) { r[nr].x = 0; r[nr].width = dx; } else { r[nr].width = - dx; r[nr].x = width() - r[nr].width; } nr++; } //msg("nr=%d", nr); g.setClipRectangles(r, nr); XRectangle re; if (nr == 1) re = r[0]; else { re.x = 0; re.y = 0; re.width = width(); re.height = height(); } paint(g, YRect(re.x, re.y, re.width, re.height)); // !!! add flag to do minimal redraws g.resetClip(); { XEvent e; while (XCheckTypedWindowEvent(xapp->display(), handle(), GraphicsExpose, &e)) { handleGraphicsExpose(e.xgraphicsexpose); if (e.xgraphicsexpose.count == 0) break; } } } void YDesktop::updateXineramaInfo(int &w, int &h) { bool gotLayout = false; xiInfo.clear(); #if CONFIG_XRANDR MSG(("xrr: %d", xrandr12 ? 1 : 0)); if (xrandr12 && !xrrDisable) { XRRScreenResources *xrrsr = XRRGetScreenResources(xapp->display(), handle()); for (int i = 0; i < xrrsr->ncrtc; i++) { XRRCrtcInfo *ci = XRRGetCrtcInfo(xapp->display(), xrrsr, xrrsr->crtcs[i]); MSG(("xrr %d (%d): %d %d %d %d", i, xrrsr->crtcs[i], ci->x, ci->y, ci->width, ci->height)); if (!gotLayout && ci->width > 0 && ci->height > 0) { DesktopScreenInfo si; si.screen_number = xrrsr->crtcs[i]; si.x_org = ci->x; si.y_org = ci->y; si.width = ci->width; si.height = ci->height; xiInfo.append(si); } } MSG(("xinerama primary screen name: %s", xineramaPrimaryScreenName)); for (int o = 0; o < xrrsr->noutput; o++) { XRROutputInfo *oinfo = XRRGetOutputInfo(xapp->display(), xrrsr, xrrsr->outputs[o]); MSG(("output: %s -> %d", oinfo->name, oinfo->crtc)); if (xineramaPrimaryScreenName != 0 && oinfo->name != NULL) { if (strcmp(xineramaPrimaryScreenName, oinfo->name) == 0) { int s = oinfo->crtc; for (int sc = 0; sc < xiInfo.getCount(); sc++) { if (xiInfo[sc].screen_number == s) { xineramaPrimaryScreen = o; MSG(("xinerama primary screen: %s -> %d", oinfo->name, o)); } } } } } } #endif if (xiInfo.getCount() < 2) { // use xinerama if no XRANDR screens (nvidia hack) xiInfo.clear(); #ifdef XINERAMA if (XineramaIsActive(xapp->display())) { int nxsi; XineramaScreenInfo *xsi = XineramaQueryScreens(xapp->display(), &nxsi); MSG(("xinerama: heads=%d", nxsi)); for (int i = 0; i < nxsi; i++) { MSG(("xinerama: %d +%d+%d %dx%d", xsi[i].screen_number, xsi[i].x_org, xsi[i].y_org, xsi[i].width, xsi[i].height)); DesktopScreenInfo si; si.screen_number = i; si.x_org = xsi[i].x_org; si.y_org = xsi[i].y_org; si.width = xsi[i].width; si.height = xsi[i].height; xiInfo.append(si); } gotLayout = true; } #endif } if (xiInfo.getCount() == 0) { DesktopScreenInfo si; si.screen_number = 0; si.x_org = 0; si.y_org = 0; si.width = DisplayWidth(xapp->display(), DefaultScreen(xapp->display())); si.height = DisplayHeight(xapp->display(), DefaultScreen(xapp->display())); xiInfo.append(si); } { w = xiInfo[0].x_org + xiInfo[0].width; h = xiInfo[0].y_org + xiInfo[0].height; for (int i = 0; i < xiInfo.getCount(); i++) { if (xiInfo[i].x_org + xiInfo[i].width > w) w = xiInfo[i].width + xiInfo[i].x_org; if (xiInfo[i].y_org + xiInfo[i].height > h) h = xiInfo[i].height + xiInfo[i].y_org; MSG(("screen %d (%d): %d %d %d %d", i, xiInfo[i].screen_number, xiInfo[i].x_org, xiInfo[i].y_org, xiInfo[i].width, xiInfo[i].height)); } } MSG(("desktop screen area: %d %d", w, h)); } void YDesktop::getScreenGeometry(int *x, int *y, int *width, int *height, int screen_no) { if (screen_no == -1) screen_no = xineramaPrimaryScreen; if (screen_no < 0 || screen_no >= xiInfo.getCount()) screen_no = 0; if (screen_no >= xiInfo.getCount() || xiInfo.getCount() == 0) { } else { for (int s = 0; s < xiInfo.getCount(); s++) { if (s != screen_no) continue; *x = xiInfo[s].x_org; *y = xiInfo[s].y_org; *width = xiInfo[s].width; *height = xiInfo[s].height; return; } } *x = 0; *y = 0; *width = desktop->width(); *height = desktop->height(); } int YDesktop::getScreenForRect(int x, int y, int width, int height) { int screen = -1; long coverage = -1; if (xiInfo.getCount() == 0) return 0; for (int s = 0; s < xiInfo.getCount(); s++) { int x_i = intersection(x, x + width, xiInfo[s].x_org, xiInfo[s].x_org + xiInfo[s].width); //MSG(("x_i %d %d %d %d %d", x_i, x, width, xiInfo[s].x_org, xiInfo[s].width)); int y_i = intersection(y, y + height, xiInfo[s].y_org, xiInfo[s].y_org + xiInfo[s].height); //MSG(("y_i %d %d %d %d %d", y_i, y, height, xiInfo[s].y_org, xiInfo[s].height)); int cov = (1 + x_i) * (1 + y_i); //MSG(("cov=%d %d %d s:%d xc:%d yc:%d %d %d %d %d", cov, x, y, s, x_i, y_i, xiInfo[s].x_org, xiInfo[s].y_org, xiInfo[s].width, xiInfo[s].height)); if (cov > coverage) { screen = s; coverage = cov; } } return screen; } icewm-1.3.7/src/ykey.h0000664000076600007660000000012611463274240013547 0ustar develdevel#ifndef __YKEY_H #define __YKEY_H #include "ylib.h" #include #endif icewm-1.3.7/src/yscrollbar.h0000644000076600007660000000503611463274240014745 0ustar develdevel#ifndef __YSCROLLBAR_H #define __YSCROLLBAR_H #include "ywindow.h" #include "ytimer.h" #define SCROLLBAR_MIN 8 class YScrollBar; class YScrollBarListener { public: virtual void scroll(YScrollBar *scroll, int delta) = 0; virtual void move(YScrollBar *scroll, int pos) = 0; protected: virtual ~YScrollBarListener() {}; }; class YScrollBar: public YWindow, public YTimerListener { public: enum Orientation { Vertical, Horizontal }; YScrollBar(YWindow *aParent); YScrollBar(Orientation anOrientation, YWindow *aParent); YScrollBar(Orientation anOrientation, int aValue, int aVisibleAmount, int aMin, int aMax, YWindow *aParent); virtual ~YScrollBar(); Orientation getOrientation() const { return fOrientation; } int getMaximum() const { return fMaximum; } int getMinimum() const { return fMinimum; } int getVisibleAmount() const { return fVisibleAmount; } int getUnitIncrement() const { return fUnitIncrement; } int getBlockIncrement() const { return fBlockIncrement; } int getValue() const { return fValue; } void setOrientation(Orientation anOrientation); void setMaximum(int aMaximum); void setMinimum(int aMinimum); void setVisibleAmount(int aVisibleAmount); void setUnitIncrement(int anUnitIncrement); void setBlockIncrement(int aBlockIncrement); void setValue(int aValue); void setValues(int aValue, int aVisibleAmount, int aMin, int aMax); bool handleScrollKeys(const XKeyEvent &key); bool handleScrollMouse(const XButtonEvent &button); private: Orientation fOrientation; int fMaximum; int fMinimum; int fValue; int fVisibleAmount; int fUnitIncrement; int fBlockIncrement; public: void scroll(int delta); void move(int pos); virtual void paint(Graphics &g, const YRect &r); virtual void handleButton(const XButtonEvent &button); virtual void handleMotion(const XMotionEvent &motion); virtual bool handleTimer(YTimer *timer); virtual void handleDNDEnter(); virtual void handleDNDLeave(); virtual void handleDNDPosition(int x, int y); void setScrollBarListener(YScrollBarListener *notify) { fListener = notify; } private: enum ScrollOp { goUp, goDown, goPageUp, goPageDown, goPosition, goNone } fScrollTo; void doScroll(); void getCoord(int &beg, int &end, int &min, int &max, int &nn); ScrollOp getOp(int x, int y); int fGrabDelta; YScrollBarListener *fListener; bool fDNDScroll; static YTimer *fScrollTimer; }; #endif icewm-1.3.7/src/Makefile0000664000076600007660000002131411463274255014065 0ustar develdevelVERSION = 1.3.7 HOSTOS = Linux 2.6.34.7-61.fc13.x86_64 HOSTCPU = x86_64 LIBDIR = /usr/share/icewm CFGDIR = /etc/icewm LOCDIR = /usr/share/locale DOCDIR = /usr/share/doc ################################################################################ CXX = g++ HOSTCXX = g++ LD = g++ HOSTLD = g++ EXEEXT = DEBUG = GCCDEP = DEFS = -DHAVE_CONFIG_H \ -DLIBDIR='"$(LIBDIR)"' \ -DCFGDIR='"$(CFGDIR)"' \ -DLOCDIR='"$(LOCDIR)"' \ -DKDEDIR='"$(KDEDIR)"' \ -DPACKAGE='"icewm"' \ -DVERSION='"$(VERSION)"' \ -DHOSTOS='"$(HOSTOS)"' \ -DHOSTCPU='"$(HOSTCPU)"' \ -DEXEEXT='"$(EXEEXT)"' \ -DICEWMEXE='"icewm$(EXEEXT)"' \ -DICEWMTRAYEXE='"icewmtray$(EXEEXT)"' \ -DICEWMBGEXE='"icewmbg$(EXEEXT)"' \ -DICESMEXE='"icewm-session$(EXEEXT)"' \ -DICEHELPEXE='"icehelp$(EXEEXT)"' \ -DICEHELPIDX='"$(DOCDIR)/icewm-$(VERSION)/icewm.html"' CXXFLAGS = -fpermissive -Wall -Wpointer-arith -Wwrite-strings -Woverloaded-virtual -W -fno-exceptions -fno-rtti -g -O2 $(DEBUG) $(DEFS) `pkg-config gdk-pixbuf-xlib-2.0 --cflags` \ -I/usr/include/freetype2 -pthread -I/usr/include/gtk-2.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include # `fc-config --cflags` LFLAGS = LIBS = `pkg-config gdk-pixbuf-xlib-2.0 --libs` CORE_LIBS = -lXinerama -lSM -lICE -lX11 -lXrandr -lXrender -lXext -lXft -lXrender -lfontconfig -lfreetype -lX11 # `fc-config --libs` IMAGE_LIBS = -pthread -lgdk_pixbuf_xlib-2.0 -lgdk_pixbuf-2.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 AUDIO_LIBS = GNOME1_LIBS = GNOME2_LIBS = ################################################################################ libice_OBJS = ref.o \ mstring.o \ upath.o \ yapp.o yxapp.o ytimer.o ywindow.o ypaint.o ypopup.o \ yworker.o \ misc.o ycursor.o ysocket.o \ ypaths.o ypixbuf.o ylocale.o yarray.o ypipereader.o \ yxembed.o yconfig.o yprefs.o \ yfont.o yfontcore.o yfontxft.o \ ypixmap.o \ yimage.o \ yimage_gdk.o yimage_imlib.o yimage_xpm.o \ ytooltip.o # FIXME libitk_OBJS = \ ymenu.o ylabel.o yscrollview.o \ ymenuitem.o yscrollbar.o ybutton.o ylistbox.o yinput.o \ yicon.o \ wmconfig.o # FIXME genpref_OBJS = \ genpref.o icewm_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icewm_OBJS = \ ymsgbox.o ydialog.o yurl.o \ wmsession.o wmwinlist.o wmtaskbar.o wmwinmenu.o \ wmdialog.o wmabout.o wmswitch.o wmstatus.o \ wmoption.o wmaction.o \ wmcontainer.o wmclient.o \ wmmgr.o wmapp.o \ wmframe.o wmbutton.o wmminiicon.o wmtitle.o movesize.o \ themes.o decorate.o browse.o \ wmprog.o \ atasks.o aworkspaces.o amailbox.o aclock.o acpustatus.o \ apppstatus.o aaddressbar.o objbar.o aapm.o atray.o ysmapp.o \ yxtray.o \ $(libitk_OBJS) $(libice_OBJS) icesh_LIBS = \ $(CORE_LIBS) icesh_OBJS = \ icesh.o misc.o icewm-session_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icewm-session_OBJS = \ icesm.o $(libice_OBJS) icewmhint_LIBS = \ $(CORE_LIBS) icewmhint_OBJS = \ icewmhint.o icewmbg_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icewmbg_OBJS = \ icewmbg.o $(libice_OBJS) icesound_LIBS = \ $(CORE_LIBS) $(AUDIO_LIBS) icesound_OBJS = \ icesound.o misc.o ycmdline.o icewm-menu-gnome1_LIBS = \ $(CORE_LIBS) $(GNOME1_LIBS) icewm-menu-gnome1_OBJS = \ gnome.o misc.o ycmdline.o yarray.o icewm-menu-gnome2_LIBS = \ $(CORE_LIBS) $(GNOME2_LIBS) icewm-menu-gnome2_OBJS = \ gnome2.o misc.o ycmdline.o yarray.o icehelp_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icehelp_OBJS = \ $(libitk_OBJS) $(libice_OBJS) icehelp.o iceclock_OBJS = \ $(libitk_OBJS) $(libice_OBJS) iceclock.o aclock.o iceclock_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icebar_OBJS = \ $(libitk_OBJS) $(libice_OBJS) \ wmtaskbar.o \ wmprog.o browse.o themes.o wmaction.o \ amailbox.o aclock.o acpustatus.o apppstatus.o aaddressbar.o objbar.o icewmtray_OBJS = \ $(libitk_OBJS) $(libice_OBJS) yxtray.o icetray.o icewmtray_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icesame_OBJS = \ $(libitk_OBJS) $(libice_OBJS) icesame.o icesame_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icelist_OBJS = \ $(libitk_OBJS) $(libice_OBJS) icelist.o icelist_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) iceview_OBJS = \ $(libitk_OBJS) $(libice_OBJS) iceview.o iceview_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) iceicon_OBJS = \ $(libitk_OBJS) $(libice_OBJS) iceicon.o iceicon_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) icerun_OBJS = \ $(libitk_OBJS) $(libice_OBJS) icerun.o icerun_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) iceskt_OBJS = \ $(libitk_OBJS) $(libice_OBJS) iceskt.o testmenus_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) testmenus_OBJS = \ $(libitk_OBJS) $(libice_OBJS) testmenus.o wmprog.o wmaction.o themes.o browse.o testwinhints_OBJS= \ testwinhints.o testwinhints_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) testnetwmhints_OBJS= \ testnetwmhints.o testnetwmhints_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) testmap_OBJS = \ testmap.o testmap_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) testlocale_OBJS = \ testlocale.o ylocale.o misc.o testarray_OBJS = \ testarray.o yarray.o misc.o ################################################################################ APPLICATIONS = icewm icewm-session icesh icewmhint icewmbg icewmtray icehelp TESTCASES = testarray testlocale testmap testmenus testnetwmhints testwinhints iceview icesame iceicon icerun icelist OBJECTS = $(icewm_OBJS) $(icewm-session_OBJS) $(icesh_OBJS) $(icewmhint_OBJS) $(icewmbg_OBJS) $(icewmtray_OBJS) $(icehelp_OBJS) $(testarray_OBJS) $(testlocale_OBJS) $(testmap_OBJS) $(testmenus_OBJS) $(testnetwmhints_OBJS) $(testwinhints_OBJS) $(iceview_OBJS) $(icesame_OBJS) $(iceicon_OBJS) $(icerun_OBJS) $(icelist_OBJS) BINARIES = icewm$(EXEEXT) icewm-session$(EXEEXT) icesh$(EXEEXT) icewmhint$(EXEEXT) icewmbg$(EXEEXT) icewmtray$(EXEEXT) icehelp$(EXEEXT) testarray$(EXEEXT) testlocale$(EXEEXT) testmap$(EXEEXT) testmenus$(EXEEXT) testnetwmhints$(EXEEXT) testwinhints$(EXEEXT) iceview$(EXEEXT) icesame$(EXEEXT) iceicon$(EXEEXT) icerun$(EXEEXT) icelist$(EXEEXT) ################################################################################ all: base base: icewm$(EXEEXT) icewm-session$(EXEEXT) icesh$(EXEEXT) icewmhint$(EXEEXT) icewmbg$(EXEEXT) icewmtray$(EXEEXT) icehelp$(EXEEXT) genpref$(EXEEXT) ../lib/preferences tests: testarray$(EXEEXT) testlocale$(EXEEXT) testmap$(EXEEXT) testmenus$(EXEEXT) testnetwmhints$(EXEEXT) testwinhints$(EXEEXT) iceview$(EXEEXT) icesame$(EXEEXT) iceicon$(EXEEXT) icerun$(EXEEXT) icelist$(EXEEXT) clean: rm -f $(BINARIES) genpref$(EXEEXT) *.o *.d *~ .PHONY: all base tests clean ################################################################################ %.o: %.cc @echo " CXX " $@ @$(CXX) $(CXXFLAGS) $(GCCDEP) -c $< $(BINARIES): @echo " LD " $@ @$(LD) -o $@ $($(@:$(EXEEXT)=)_OBJS) $(LFLAGS) $($(@:$(EXEEXT)=)_LFLAGS) $(LIBS) $($(@:$(EXEEXT)=)_LIBS) genpref.o: genpref.cc @echo " HOSTCXX " $@ @$(HOSTCXX) $(CXXFLAGS) $(GCCDEP) -c $< genpref$(EXEEXT): @echo " HOSTLD " $@ @$(HOSTLD) -o $@ $(genpref_OBJS) ################################################################################ gnome.o: gnome.cc @echo " CXX " $@ @$(CXX) $(CXXFLAGS) $(GCCDEP) -c $< gnome2.o: gnome2.cc @echo " CXX " $@ @$(CXX) $(CXXFLAGS) $(GCCDEP) -c $< ################################################################################ #libice.so: $(libice_OBJS) # -@rm -f $@ # ld -shared -o $@ $(libice_OBJS) wmabout.o: ../VERSION ../lib/preferences: genpref$(EXEEXT) @echo " GENPREF " $@ @./genpref$(EXEEXT) >../lib/preferences genpref$(EXEEXT): $(genpref_OBJS) ################################################################################ check: all tests ./icewm$(EXEEXT) --help >/dev/null ./testarray$(EXEEXT) ./testlocale$(EXEEXT) ################################################################################ #END icewm$(EXEEXT): $(icewm_OBJS) icewm-session$(EXEEXT): $(icewm-session_OBJS) icesh$(EXEEXT): $(icesh_OBJS) icewmhint$(EXEEXT): $(icewmhint_OBJS) icewmbg$(EXEEXT): $(icewmbg_OBJS) icewmtray$(EXEEXT): $(icewmtray_OBJS) icehelp$(EXEEXT): $(icehelp_OBJS) testarray$(EXEEXT): $(testarray_OBJS) testlocale$(EXEEXT): $(testlocale_OBJS) testmap$(EXEEXT): $(testmap_OBJS) testmenus$(EXEEXT): $(testmenus_OBJS) testnetwmhints$(EXEEXT): $(testnetwmhints_OBJS) testwinhints$(EXEEXT): $(testwinhints_OBJS) iceview$(EXEEXT): $(iceview_OBJS) icesame$(EXEEXT): $(icesame_OBJS) iceicon$(EXEEXT): $(iceicon_OBJS) icerun$(EXEEXT): $(icerun_OBJS) icelist$(EXEEXT): $(icelist_OBJS) icewm-1.3.7/src/yimage_imlib.cc0000664000076600007660000000735111463274240015362 0ustar develdevel#include "config.h" #ifdef CONFIG_IMLIB #include "yimage.h" #include "yxapp.h" void image_init() { } class YImageImlib: public YImage { public: YImageImlib(int width, int height, XImage *ximage, XImage *xmask): YImage(width, height) { fXImage = ximage; fXMask = xmask; } virtual ~YImageImlib() { if (fXImage != 0) { XDestroyImage(fXImage); fXImage = 0; } if (fXMask != 0) { XDestroyImage(fXMask); fXMask = 0; } } virtual ref renderToPixmap(); virtual ref scale(int width, int height); virtual void draw(Graphics &g, int x, int y); private: XImage *fXImage; XImage *fXMask; }; ref YImage::load(upath filename) { ref image; #if 0 XImage *ximage = 0; XImage *xmask = 0; XpmAttributes xpmAttributes; xpmAttributes.colormap = xapp->colormap(); xpmAttributes.closeness = 65535; xpmAttributes.valuemask = XpmSize|XpmReturnPixels|XpmColormap|XpmCloseness; int rc = XpmReadFileToImage(xapp->display(), (char *)filename, &ximage, &xmask, &xpmAttributes); if (rc == XpmSuccess) { image.init(new YImageImlib(xpmAttributes.width, xpmAttributes.height, ximage, xmask)); XpmFreeAttributes(&xpmAttributes); } #endif return image; } ref YImageImlib::scale(int w, int h) { ref image; image.init(this); return image; } ref YImage::createFromPixmap(ref pixmap) { return createFromPixmapAndMask(pixmap->pixmap(), pixmap->mask(), pixmap->width(), pixmap->height()); } ref YImage::createFromPixmapAndMask(Pixmap pixmap, Pixmap mask, int width, int height) { ref image; #if 0 XImage *ximage = 0; XImage *xmask = 0; if (pixmap != None) { ximage = XGetImage(xapp->display(), pixmap, 0, 0, width, height, AllPlanes, ZPixmap); } if (mask != None) { xmask = XGetImage(xapp->display(), mask, 0, 0, width, height, AllPlanes, ZPixmap); } if (ximage != 0) { image.init(new YImageImlib(width, height, ximage, xmask)); } #endif return image; } ref YImage::createFromPixmapAndMaskScaled(Pixmap pix, Pixmap mask, int width, int height, int nw, int nh) { ref image = createFromPixmapAndMask(pix, mask, width, height); if (image != null) image = image->scale(nw, nh); return image; } ref YImageImlib::renderToPixmap() { ref pixmap = YPixmap::create(width(), height(), true); #if 0 GC gc1 = XCreateGC(xapp->display(), pixmap->pixmap(), 0, 0); if (fXImage != 0) XPutImage(xapp->display(), pixmap->pixmap(), gc1, fXImage, 0, 0, 0, 0, width(), height()); XFreeGC(xapp->display(), gc1); GC gc2 = XCreateGC(xapp->display(), pixmap->mask(), 0, 0); if (fXMask != 0) XPutImage(xapp->display(), pixmap->mask(), gc2, fXMask, 0, 0, 0, 0, width(), height()); XFreeGC(xapp->display(), gc2); #endif return pixmap; } ref YImage::createPixmap(Pixmap pixmap, Pixmap mask, int w, int h) { ref n; n.init(new YPixmap(pixmap, mask, w, h)); return n; } void YImageImlib::draw(Graphics &g, int x, int y) { } #endif icewm-1.3.7/src/yurl.cc0000644000076600007660000000602511463274240013721 0ustar develdevel/* * IceWM - URL decoder * Copyright (C) 2001 The Authors of IceWM * * Release under terms of the GNU Library General Public License * * 2001/02/25: Mathias Hasselmann * - initial version */ #include "config.h" #include "yurl.h" #include "base.h" #include "intl.h" #include "binascii.h" #include /******************************************************************************* * An URL decoder ******************************************************************************/ YURL::YURL(): fScheme(null), fUser(null), fPassword(null), fHost(null), fPort(null), fPath(null) { } YURL::YURL(ustring url, bool expectInetScheme): fScheme(null), fUser(null), fPassword(null), fHost(null), fPort(null), fPath(null) { assign(url, expectInetScheme); } YURL::~YURL() { } void YURL::assign(ustring url, bool expectInetScheme) { fScheme = null; fUser = null; fPassword = null; fHost = null; fPort = null; fPath = null; ustring rest(url); int i = rest.indexOf(':'); if (i != -1) { fScheme = rest.substring(0, i); rest = rest.substring(i + 1); if (rest.length() > 2 && rest.charAt(0) == '/' && rest.charAt(1) == '/') { rest = rest.substring(2); i = rest.indexOf('/'); if (i != -1) { fPath = rest.substring(i); fPath = unescape(fPath); fHost = rest.substring(0, i); } else { fHost = rest; } i = fHost.indexOf('@'); // ???last if (i != -1) { fUser = fHost.substring(0, i); fHost = fHost.substring(i + 1); i = fUser.indexOf(':'); if (i != -1) { fPassword = fUser.substring(i + 1); fUser = fUser.substring(0, i); fPassword = unescape(fPassword); } fUser = unescape(fUser); } fHost = unescape(fHost); } else if (expectInetScheme) warn(_("\"%s\" doesn't describe a common internet scheme"), cstring(url).c_str()); } else { warn(_("\"%s\" contains no scheme description"), cstring(url).c_str()); } } ustring YURL::unescape(ustring str) { if (str != null) { char *nstr = new char[str.length()]; if (nstr == 0) return null; char *d = nstr; for (int i = 0; i < str.length(); i++) { int c = str.charAt(i); if (c == '%') { if (i + 3 > str.length()) { return null; } int a = BinAscii::unhex(str.charAt(i + 1)); int b = BinAscii::unhex(str.charAt(i + 2)); if (a == -1 || b == -1) { return null; } i += 2; c = (char)((a << 4) + b); } *d++ = (char)c; } str = ustring(nstr, d - nstr); } return str; } icewm-1.3.7/src/yutil.h0000644000076600007660000000015611463274240013735 0ustar develdevel#ifndef __YUTIL_H #define __YUTIL_H #include "ylib.h" #include #define __YIMP_XUTIL__ #endif icewm-1.3.7/src/wmclient.cc0000644000076600007660000014741611463274240014562 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek */ #include "config.h" #include "yfull.h" #include "wmclient.h" #include "prefs.h" #include "yrect.h" #include "wmframe.h" #include "wmmgr.h" #include "wmapp.h" #include "sysdep.h" extern XContext frameContext; extern XContext clientContext; YFrameClient::YFrameClient(YWindow *parent, YFrameWindow *frame, Window win): YWindow(parent, win), fWindowTitle(null), fIconTitle(null), fWMWindowRole(null), fWindowRole(null) { fFrame = frame; fBorder = 0; fProtocols = 0; fWindowTitle = null; fIconTitle = null; fColormap = None; fShaped = false; fHints = 0; fWinHints = 0; //fSavedFrameState = fSizeHints = XAllocSizeHints(); fClassHint = XAllocClassHint(); fTransientFor = 0; fClientLeader = None; fWindowRole = null; fWMWindowRole = null; #ifndef NO_MWM_HINTS fMwmHints = 0; #endif getPropertiesList(); getProtocols(false); getNameHint(); getIconNameHint(); getSizeHints(); getClassHint(); getTransient(); getWMHints(); getWMWindowRole(); getWindowRole(); #ifdef GNOME1_HINTS getWinHintsHint(&fWinHints); #endif #ifndef NO_MWM_HINTS getMwmHints(); #endif #ifdef CONFIG_SHAPE if (shapesSupported) { XShapeSelectInput(xapp->display(), handle(), ShapeNotifyMask); queryShape(); } #endif XSaveContext(xapp->display(), handle(), getFrame() ? frameContext : clientContext, getFrame() ? (XPointer)getFrame() : (XPointer)this); } YFrameClient::~YFrameClient() { XDeleteContext(xapp->display(), handle(), getFrame() ? frameContext : clientContext); if (fSizeHints) { XFree(fSizeHints); fSizeHints = 0; } if (fClassHint) { if (fClassHint->res_name) { XFree(fClassHint->res_name); fClassHint->res_name = 0; } if (fClassHint->res_class) { XFree(fClassHint->res_class); fClassHint->res_class = 0; } XFree(fClassHint); fClassHint = 0; } if (fHints) { XFree(fHints); fHints = 0; } if (fMwmHints) { XFree(fMwmHints); fMwmHints = 0; } fWMWindowRole = null; fWindowRole = null; } void YFrameClient::getProtocols(bool force) { if (!prop.wm_protocols && !force) return; Atom *wmp = 0; int count; fProtocols = fProtocols & wpDeleteWindow; // always keep WM_DELETE_WINDOW if (XGetWMProtocols(xapp->display(), handle(), &wmp, &count) && wmp) { prop.wm_protocols = true; for (int i = 0; i < count; i++) { if (wmp[i] == _XA_WM_DELETE_WINDOW) fProtocols |= wpDeleteWindow; if (wmp[i] == _XA_WM_TAKE_FOCUS) fProtocols |= wpTakeFocus; } XFree(wmp); } } void YFrameClient::getSizeHints() { if (fSizeHints) { long supplied; if (!prop.wm_normal_hints || !XGetWMNormalHints(xapp->display(), handle(), fSizeHints, &supplied)) fSizeHints->flags = 0; if (fSizeHints->flags & PResizeInc) { if (fSizeHints->width_inc == 0) fSizeHints->width_inc = 1; if (fSizeHints->height_inc == 0) fSizeHints->height_inc = 1; } else fSizeHints->width_inc = fSizeHints->height_inc = 1; if (!(fSizeHints->flags & PBaseSize)) { if (fSizeHints->flags & PMinSize) { fSizeHints->base_width = fSizeHints->min_width; fSizeHints->base_height = fSizeHints->min_height; } else fSizeHints->base_width = fSizeHints->base_height = 0; } if (!(fSizeHints->flags & PMinSize)) { fSizeHints->min_width = fSizeHints->base_width; fSizeHints->min_height = fSizeHints->base_height; } if (!(fSizeHints->flags & PMaxSize)) { fSizeHints->max_width = 32767; fSizeHints->max_height = 32767; } if (fSizeHints->max_width < fSizeHints->min_width) fSizeHints->max_width = 32767; if (fSizeHints->max_height < fSizeHints->min_height) fSizeHints->max_height = 32767; if (fSizeHints->min_height <= 0) fSizeHints->min_height = 1; if (fSizeHints->min_width <= 0) fSizeHints->min_width = 1; if (!(fSizeHints->flags & PWinGravity)) { fSizeHints->win_gravity = NorthWestGravity; fSizeHints->flags |= PWinGravity; } } } void YFrameClient::getClassHint() { if (!prop.wm_class) return; if (fClassHint) { if (fClassHint->res_name) { XFree(fClassHint->res_name); fClassHint->res_name = 0; } if (fClassHint->res_class) { XFree(fClassHint->res_class); fClassHint->res_class = 0; } XGetClassHint(xapp->display(), handle(), fClassHint); } } void YFrameClient::getTransient() { if (!prop.wm_transient_for) return; Window newTransientFor = 0; if (XGetTransientForHint(xapp->display(), handle(), &newTransientFor)) { if (//newTransientFor == manager->handle() || /* bug in xfm */ //newTransientFor == desktop->handle() || newTransientFor == handle() /* bug in fdesign */ /* !!! TODO: check for recursion */ ) newTransientFor = 0; } if (newTransientFor != fTransientFor) { if (fTransientFor) if (getFrame()) getFrame()->removeAsTransient(); fTransientFor = newTransientFor; if (fTransientFor) if (getFrame()) getFrame()->addAsTransient(); } } void YFrameClient::constrainSize(int &w, int &h, int flags) { if (fSizeHints) { int const wMin(fSizeHints->min_width); int const hMin(fSizeHints->min_height); int const wMax(fSizeHints->max_width); int const hMax(fSizeHints->max_height); int const wBase(fSizeHints->base_width); int const hBase(fSizeHints->base_height); int const wInc(fSizeHints->width_inc); int const hInc(fSizeHints->height_inc); if (fSizeHints->flags & PAspect) { // aspect ratios int const xMin(fSizeHints->min_aspect.x); int const yMin(fSizeHints->min_aspect.y); int const xMax(fSizeHints->max_aspect.x); int const yMax(fSizeHints->max_aspect.y); MSG(("aspect")); if (flags & csKeepX) { MSG(("keepX")); } if (flags & csKeepY) { MSG(("keepY")); } // !!! fix handling of KeepX and KeepY together if (xMin * h > yMin * w) { // min aspect if (flags & csKeepX) { w = clamp(w, wMin, wMax); h = w * yMin / xMin; h = clamp(h, hMin, hMax); w = h * xMin / yMin; } else { h = clamp(h, hMin, hMax); w = h * xMin / yMin; w = clamp(w, wMin, wMax); h = w * yMin / xMin; } } if (xMax * h < yMax * w) { // max aspect if (flags & csKeepX) { w = clamp(w, wMin, wMax); h = w * yMax / xMax; h = clamp(h, hMin, hMax); w = h * xMax / yMax; } else { h = clamp(h, hMin, hMax); w = h * xMax / yMax; w = clamp(w, wMin, wMax); h = w * yMax / xMax; } } } h = clamp(h, hMin, hMax); w = clamp(w, wMin, wMax); if (flags & csRound) { w += wInc / 2; h += hInc / 2; } w-= max(0, w - wBase) % wInc; h-= max(0, h - hBase) % hInc; } if (w <= 0) w = 1; if (h <= 0) h = 1; } void YFrameClient::gravityOffsets(int &xp, int &yp) { xp = 0; yp = 0; if (fSizeHints == 0) return; static struct { int x, y; } gravOfsXY[11] = { { 0, 0 }, /* ForgetGravity */ { -1, -1 }, /* NorthWestGravity */ { 0, -1 }, /* NorthGravity */ { 1, -1 }, /* NorthEastGravity */ { -1, 0 }, /* WestGravity */ { 0, 0 }, /* CenterGravity */ { 1, 0 }, /* EastGravity */ { -1, 1 }, /* SouthWestGravity */ { 0, 1 }, /* SouthGravity */ { 1, 1 }, /* SouthEastGravity */ { 0, 0 }, /* StaticGravity */ }; int g = fSizeHints->win_gravity; if (!(g < ForgetGravity || g > StaticGravity)) { xp = (int)gravOfsXY[g].x; yp = (int)gravOfsXY[g].y; } } void YFrameClient::sendMessage(Atom msg, Time timeStamp) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = handle(); xev.message_type = _XA_WM_PROTOCOLS; xev.format = 32; xev.data.l[0] = msg; xev.data.l[1] = timeStamp; XSendEvent(xapp->display(), handle(), False, 0L, (XEvent *) &xev); } ///extern Time lastEventTime; bool YFrameClient::sendTakeFocus() { if (protocols() & wpTakeFocus) { sendMessage(_XA_WM_TAKE_FOCUS, xapp->getEventTime("sendTakeFocus")); return true; } return false; } bool YFrameClient::sendDelete() { if (protocols() & wpDeleteWindow) { sendMessage(_XA_WM_DELETE_WINDOW, xapp->getEventTime("sendDelete")); return true; } return false; } void YFrameClient::setFrame(YFrameWindow *newFrame) { if (newFrame != getFrame()) { XDeleteContext(xapp->display(), handle(), getFrame() ? frameContext : clientContext); fFrame = newFrame; XSaveContext(xapp->display(), handle(), getFrame() ? frameContext : clientContext, getFrame() ? (XPointer)getFrame() : (XPointer)this); } } void YFrameClient::setFrameState(FrameState state) { unsigned long arg[2]; arg[0] = (unsigned long) state; arg[1] = (unsigned long) None; //msg("setting frame state to %d", arg[0]); if (state == WithdrawnState) { if (manager->wmState() != YWindowManager::wmSHUTDOWN) { MSG(("deleting window properties id=%lX", handle())); XDeleteProperty(xapp->display(), handle(), _XA_NET_WM_DESKTOP); XDeleteProperty(xapp->display(), handle(), _XA_NET_WM_STATE); XDeleteProperty(xapp->display(), handle(), _XA_WIN_WORKSPACE); XDeleteProperty(xapp->display(), handle(), _XA_WIN_LAYER); #ifdef CONFIG_TRAY XDeleteProperty(xapp->display(), handle(), _XA_WIN_TRAY); #endif XDeleteProperty(xapp->display(), handle(), _XA_WIN_STATE); XDeleteProperty(xapp->display(), handle(), _XA_WM_STATE); } } else { XChangeProperty(xapp->display(), handle(), _XA_WM_STATE, _XA_WM_STATE, 32, PropModeReplace, (unsigned char *)arg, 2); } } FrameState YFrameClient::getFrameState() { if (!prop.wm_state) return WithdrawnState; FrameState st = WithdrawnState; Atom type; int format; unsigned long nitems, lbytes; unsigned char *propdata; if (XGetWindowProperty(xapp->display(), handle(), _XA_WM_STATE, 0, 3, False, _XA_WM_STATE, &type, &format, &nitems, &lbytes, &propdata) == Success && propdata) { st = *(long *)propdata; XFree(propdata); } return st; } void YFrameClient::handleUnmap(const XUnmapEvent &unmap) { YWindow::handleUnmap(unmap); MSG(("UnmapWindow")); XEvent ev; if (XCheckTypedWindowEvent(xapp->display(), unmap.window, DestroyNotify, &ev)) { manager->destroyedClient(unmap.window); } else { manager->unmanageClient(unmap.window, false); } } void YFrameClient::handleProperty(const XPropertyEvent &property) { bool new_prop = (property.state == PropertyDelete) ? false : true; switch (property.atom) { case XA_WM_NAME: if (new_prop) prop.wm_name = true; getNameHint(); prop.wm_name = new_prop; break; case XA_WM_ICON_NAME: if (new_prop) prop.wm_icon_name = true; getIconNameHint(); prop.wm_icon_name = false; break; case XA_WM_CLASS: if (new_prop) prop.wm_class = true; getClassHint(); if (getFrame()) getFrame()->getFrameHints(); prop.wm_class = new_prop; break; case XA_WM_HINTS: if (new_prop) prop.wm_hints = true; getWMHints(); if (getFrame()) { #ifndef LITE getFrame()->updateIcon(); #endif getFrame()->updateUrgency(); } prop.wm_hints = new_prop; break; case XA_WM_NORMAL_HINTS: if (new_prop) prop.wm_normal_hints = true; getSizeHints(); if (getFrame()) getFrame()->updateMwmHints(); prop.wm_normal_hints = new_prop; break; case XA_WM_TRANSIENT_FOR: if (new_prop) prop.wm_transient_for = true; getTransient(); prop.wm_transient_for = new_prop; break; default: if (property.atom == _XA_WM_PROTOCOLS) { if (new_prop) prop.wm_protocols = true; getProtocols(false); prop.wm_protocols = new_prop; } else if (property.atom == _XA_WM_STATE) { prop.wm_state = new_prop; #ifndef LITE } else if (property.atom == _XA_KWM_WIN_ICON) { if (new_prop) prop.kwm_win_icon = true; if (getFrame()) getFrame()->updateIcon(); prop.kwm_win_icon = new_prop; #ifdef GNOME1_HINTS } else if (property.atom == _XA_WIN_ICONS) { if (new_prop) prop.win_icons = true; if (getFrame()) getFrame()->updateIcon(); prop.win_icons = new_prop; #endif #endif #ifdef WMSPEC_HINTS } else if (property.atom == _XA_NET_WM_STRUT) { MSG(("change: net wm strut")); if (new_prop) prop.net_wm_strut = true; if (getFrame()) getFrame()->updateNetWMStrut(); prop.net_wm_strut = new_prop; #endif #ifdef WMSPEC_HINTS } else if (property.atom == _XA_NET_WM_ICON) { msg("change: net wm icon"); if (new_prop) prop.net_wm_icon = true; #ifndef LITE if (getFrame()) getFrame()->updateIcon(); #endif prop.net_wm_icon = new_prop; #endif #ifdef GNOME1_HINTS } else if (property.atom == _XA_WIN_HINTS) { if (new_prop) prop.win_hints = true; getWinHintsHint(&fWinHints); if (getFrame()) { getFrame()->getFrameHints(); manager->updateWorkArea(); #ifdef CONFIG_TASKBAR getFrame()->updateTaskBar(); #endif } prop.win_hints = new_prop; } else if (property.atom == _XA_WIN_WORKSPACE) { prop.win_workspace = new_prop; } else if (property.atom == _XA_WIN_LAYER) { prop.win_layer = new_prop; } else if (property.atom == _XA_WIN_STATE) { prop.win_state = new_prop; #endif #ifndef NO_MWM_HINTS } else if (property.atom == _XATOM_MWM_HINTS) { if (new_prop) prop.mwm_hints = true; getMwmHints(); if (getFrame()) getFrame()->updateMwmHints(); prop.mwm_hints = new_prop; #endif } else if (property.atom == _XA_WM_CLIENT_LEADER) { // !!! check these prop.wm_client_leader = new_prop; } else if (property.atom == _XA_SM_CLIENT_ID) { prop.sm_client_id = new_prop; #ifdef WMSPEC_HINTS } else if (property.atom == _XA_NET_WM_DESKTOP) { prop.net_wm_desktop = new_prop; } else if (property.atom == _XA_NET_WM_STATE) { prop.net_wm_state = new_prop; } else if (property.atom == _XA_NET_WM_WINDOW_TYPE) { // !!! do we do dynamic update? (discuss on wm-spec) prop.net_wm_window_type = new_prop; #endif } else { MSG(("Unknown property changed: %s, window=0x%lX", XGetAtomName(xapp->display(), property.atom), handle())); } break; } } void YFrameClient::handleColormap(const XColormapEvent &colormap) { setColormap(colormap.colormap); //(colormap.state == ColormapInstalled && colormap.c_new == True) // ? colormap.colormap // : None); } void YFrameClient::handleDestroyWindow(const XDestroyWindowEvent &destroyWindow) { //msg("DESTROY: %lX", destroyWindow.window); YWindow::handleDestroyWindow(destroyWindow); if (destroyed()) manager->destroyedClient(destroyWindow.window); } #ifdef CONFIG_SHAPE void YFrameClient::handleShapeNotify(const XShapeEvent &shape) { if (shapesSupported) { MSG(("shape event: %d %d %d:%d=%dx%d time=%ld", shape.shaped, shape.kind, shape.x, shape.y, shape.width, shape.height, shape.time)); if (shape.kind == ShapeBounding) { bool const newShaped(shape.shaped); if (newShaped) fShaped = newShaped; if (getFrame()) getFrame()->setShape(); fShaped = newShaped; } } } #endif void YFrameClient::setWindowTitle(const char *title) { if (title == 0 || fWindowTitle == null || !fWindowTitle.equals(title)) { fWindowTitle = ustring::newstr(title); if (getFrame()) getFrame()->updateTitle(); } } void YFrameClient::setIconTitle(const char *title) { if (title == 0 || fIconTitle == null || !fIconTitle.equals(title)) { fIconTitle = ustring::newstr(title); if (getFrame()) getFrame()->updateIconTitle(); } } #ifdef CONFIG_I18N void YFrameClient::setWindowTitle(const XTextProperty & title) { if (NULL == title.value /*|| title.encoding == XA_STRING*/) setWindowTitle((const char *)title.value); else { int count; char ** strings(NULL); if (XmbTextPropertyToTextList(xapp->display(), const_cast(&title), &strings, &count) >= 0 && count > 0 && strings[0]) setWindowTitle((const char *)strings[0]); else setWindowTitle((const char *)title.value); if (strings) XFreeStringList(strings); } } void YFrameClient::setIconTitle(const XTextProperty & title) { if (NULL == title.value /*|| title.encoding == XA_STRING*/) setIconTitle((const char *)title.value); else { int count; char ** strings(NULL); if (XmbTextPropertyToTextList(xapp->display(), const_cast(&title), &strings, &count) >= 0 && count > 0 && strings[0]) setIconTitle((const char *)strings[0]); else setIconTitle((const char *)title.value); if (strings) XFreeStringList(strings); } } #endif void YFrameClient::setColormap(Colormap cmap) { fColormap = cmap; if (getFrame() && manager->colormapWindow() == getFrame()) manager->installColormap(cmap); } #ifdef CONFIG_SHAPE void YFrameClient::queryShape() { fShaped = 0; if (shapesSupported) { int xws, yws, xbs, ybs; unsigned wws, hws, wbs, hbs; Bool boundingShaped, clipShaped; XShapeQueryExtents(xapp->display(), handle(), &boundingShaped, &xws, &yws, &wws, &hws, &clipShaped, &xbs, &ybs, &wbs, &hbs); fShaped = boundingShaped; } } #endif #ifdef WMSPEC_HINTS long getMask(Atom a) { long mask = 0; if (a == _XA_NET_WM_STATE_MAXIMIZED_VERT) mask |= WinStateMaximizedVert; if (a == _XA_NET_WM_STATE_MAXIMIZED_HORZ) mask |= WinStateMaximizedHoriz; if (a == _XA_NET_WM_STATE_SHADED) mask |= WinStateRollup; if (a == _XA_NET_WM_STATE_ABOVE) mask |= WinStateAbove; #if 0 if (a == _XA_NET_WM_STATE_MODAL) mask |= WinStateModal; #endif if (a == _XA_NET_WM_STATE_BELOW) mask |= WinStateBelow; if (a == _XA_NET_WM_STATE_FULLSCREEN) mask |= WinStateFullscreen; if (a == _XA_NET_WM_STATE_SKIP_TASKBAR) mask |= WinStateSkipTaskBar; return mask; } #endif void YFrameClient::handleClientMessage(const XClientMessageEvent &message) { #ifdef WMSPEC_HINTS if (message.message_type == _XA_NET_ACTIVE_WINDOW) { //printf("active window w=0x%lX\n", message.window); if (getFrame()) { getFrame()->activate(); getFrame()->wmRaise(); } } else if (message.message_type == _XA_NET_CLOSE_WINDOW) { //printf("close window w=0x%lX\n", message.window); if (getFrame()) getFrame()->wmClose(); } else if (message.message_type == _XA_NET_WM_MOVERESIZE && message.format == 32) { ///YFrameWindow *frame(findFrame(message.window)); if (getFrame()) getFrame()->startMoveSize(message.data.l[0], message.data.l[1], message.data.l[2]); } if (message.message_type == _XA_NET_WM_STATE) { long mask = getMask(message.data.l[1]) | getMask(message.data.l[2]); //printf("new state, mask = %ld\n", mask); if (message.data.l[0] == _NET_WM_STATE_ADD) { //puts("add"); if (getFrame()) getFrame()->setState(mask, mask); } else if (message.data.l[0] == _NET_WM_STATE_REMOVE) { //puts("remove"); if (getFrame()) getFrame()->setState(mask, 0); } else if (message.data.l[0] == _NET_WM_STATE_TOGGLE) { //puts("toggle"); if (getFrame()) getFrame()->setState(mask, getFrame()->getState() ^ mask); } else { warn("_NET_WM_STATE unknown command: %d", message.data.l[0]); } #endif } else if (message.message_type == _XA_WM_CHANGE_STATE) { YFrameWindow *frame = manager->findFrame(message.window); if (message.data.l[0] == IconicState) { if (frame && !(frame->isMinimized() || frame->isRollup())) frame->wmMinimize(); } else if (message.data.l[0] == NormalState) { if (frame) frame->setState(WinStateHidden | WinStateRollup | WinStateMinimized, 0); } // !!! handle WithdrawnState if needed #ifdef GNOME1_HINTS } else if (message.message_type == _XA_WIN_WORKSPACE) { if (getFrame()) getFrame()->setWorkspace(message.data.l[0]); else setWinWorkspaceHint(message.data.l[0]); } else if (message.message_type == _XA_NET_WM_DESKTOP) { if (getFrame()) { if ((unsigned long)message.data.l[0] == 0xFFFFFFFFUL) getFrame()->setSticky(true); else getFrame()->setWorkspace(message.data.l[0]); } else setWinWorkspaceHint(message.data.l[0]); } else if (message.message_type == _XA_WIN_LAYER) { if (getFrame()) getFrame()->setRequestedLayer(message.data.l[0]); else setWinLayerHint(message.data.l[0]); #ifdef CONFIG_TRAY } else if (message.message_type == _XA_WIN_TRAY) { if (getFrame()) getFrame()->setTrayOption(message.data.l[0]); else setWinTrayHint(message.data.l[0]); #endif } else if (message.message_type == _XA_WIN_STATE) { if (getFrame()) getFrame()->setState(message.data.l[0], message.data.l[1]); else setWinStateHint(message.data.l[0], message.data.l[1]); #endif } else YWindow::handleClientMessage(message); } void YFrameClient::getNameHint() { if (!prop.wm_name) return; #ifdef CONFIG_I18N XTextProperty name; if (XGetWMName(xapp->display(), handle(), &name)) #else char *name; if (XFetchName(xapp->display(), handle(), &name)) #endif { setWindowTitle(name); #ifdef CONFIG_I18N XFree(name.value); #else XFree(name); #endif } else setWindowTitle(NULL); } void YFrameClient::getIconNameHint() { if (!prop.wm_icon_name) return; #ifdef CONFIG_I18N XTextProperty name; if (XGetWMIconName(xapp->display(), handle(), &name)) #else char *name; if (XGetIconName(xapp->display(), handle(), &name)) #endif { setIconTitle(name); #ifdef CONFIG_I18N XFree(name.value); #else XFree(name); #endif } else setIconTitle(NULL); } void YFrameClient::getWMHints() { if (!prop.wm_hints) return; if (fHints) XFree(fHints); fHints = XGetWMHints(xapp->display(), handle()); } #ifndef NO_MWM_HINTS void YFrameClient::getMwmHints() { if (!prop.mwm_hints) return; int retFormat; Atom retType; unsigned long retCount, remain; if (fMwmHints) { XFree(fMwmHints); fMwmHints = 0; } union { MwmHints *ptr; unsigned char *xptr; } mwmHints = { 0 }; if (XGetWindowProperty(xapp->display(), handle(), _XATOM_MWM_HINTS, 0L, 20L, False, _XATOM_MWM_HINTS, &retType, &retFormat, &retCount, &remain, &(mwmHints.xptr)) == Success && mwmHints.ptr) { if (retCount >= PROP_MWM_HINTS_ELEMENTS) { fMwmHints = mwmHints.ptr; return; } else XFree(mwmHints.xptr); } fMwmHints = 0; } void YFrameClient::setMwmHints(const MwmHints &mwm) { if (fMwmHints) { XFree(fMwmHints); fMwmHints = 0; } XChangeProperty(xapp->display(), handle(), _XATOM_MWM_HINTS, _XATOM_MWM_HINTS, 32, PropModeReplace, (const unsigned char *)&mwm, sizeof(mwm)/sizeof(long)); ///!!! fMwmHints = (MwmHints *)malloc(sizeof(MwmHints)); if (fMwmHints) *fMwmHints = mwm; } void YFrameClient::saveSizeHints() { memcpy(&savedSizeHints, fSizeHints, sizeof(XSizeHints)); }; void YFrameClient::restoreSizeHints() { memcpy(fSizeHints, &savedSizeHints, sizeof(XSizeHints)); }; long YFrameClient::mwmFunctions() { long functions = ~0U; if (fMwmHints && (fMwmHints->flags & MWM_HINTS_FUNCTIONS)) { if (fMwmHints->functions & MWM_FUNC_ALL) functions = ~fMwmHints->functions; else functions = fMwmHints->functions; } else { XSizeHints *sh = sizeHints(); if (sh) { bool minmax = false; if (sh->min_width == sh->max_width && sh->min_height == sh->max_height) { functions &= ~MWM_FUNC_RESIZE; minmax = true; } if ((minmax && !(sh->flags & PResizeInc)) || (sh->width_inc == 0 && sh->height_inc == 0)) functions &= ~MWM_FUNC_MAXIMIZE; } } functions &= (MWM_FUNC_RESIZE | MWM_FUNC_MOVE | MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE | MWM_FUNC_CLOSE); return functions; } long YFrameClient::mwmDecors() { long decors = ~0U; long func = mwmFunctions(); if (fMwmHints && (fMwmHints->flags & MWM_HINTS_DECORATIONS)) { if (fMwmHints->decorations & MWM_DECOR_ALL) decors = ~fMwmHints->decorations; else decors = fMwmHints->decorations; } else { XSizeHints *sh = sizeHints(); if (sh) { bool minmax = false; if (sh->min_width == sh->max_width && sh->min_height == sh->max_height) { decors &= ~MWM_DECOR_RESIZEH; minmax = true; } if ((minmax && !(sh->flags & PResizeInc)) || (sh->width_inc == 0 && sh->height_inc == 0)) decors &= ~MWM_DECOR_MAXIMIZE; } } decors &= (MWM_DECOR_BORDER | MWM_DECOR_RESIZEH | MWM_DECOR_TITLE | MWM_DECOR_MENU | MWM_DECOR_MINIMIZE | MWM_DECOR_MAXIMIZE); /// !!! add disabled buttons decors &= ~(/*((func & MWM_FUNC_RESIZE) ? 0 : MWM_DECOR_RESIZEH) |*/ ((func & MWM_FUNC_MINIMIZE) ? 0 : MWM_DECOR_MINIMIZE) | ((func & MWM_FUNC_MAXIMIZE) ? 0 : MWM_DECOR_MAXIMIZE)); return decors; } #endif bool YFrameClient::getKwmIcon(int *count, Pixmap **pixmap) { *count = 0; *pixmap = None; if (!prop.kwm_win_icon) return false; Atom r_type; int r_format; unsigned long nitems; unsigned long bytes_remain; unsigned char *prop; if (XGetWindowProperty(xapp->display(), handle(), _XA_KWM_WIN_ICON, 0, 2, False, _XA_KWM_WIN_ICON, &r_type, &r_format, &nitems, &bytes_remain, &prop) == Success && prop) { if (r_format == 32 && r_type == _XA_KWM_WIN_ICON && nitems == 2) { *count = nitems; *pixmap = (Pixmap *)prop; if (fHints) XFree(fHints); if ((fHints = XGetWMHints(xapp->display(), handle())) != 0) { } return true; } else { XFree(prop); } } return false; } #ifdef GNOME1_HINTS bool YFrameClient::getWinIcons(Atom *type, int *count, long **elem) { *type = None; *count = 0; *elem = 0; if (!prop.win_icons) return false; Atom r_type; int r_format; unsigned long nitems; unsigned long bytes_remain; unsigned char *prop; if (XGetWindowProperty(xapp->display(), handle(), _XA_WIN_ICONS, 0, 4096, False, AnyPropertyType, &r_type, &r_format, &nitems, &bytes_remain, &prop) == Success && prop) { if (r_format == 32 && nitems > 0) { if (r_type == _XA_WIN_ICONS || r_type == XA_PIXMAP) // for compatibility, obsolete, (will be removed?) { *type = r_type; *count = nitems; *elem = (long *)prop; return true; } } XFree(prop); } return false; } #endif static void *GetFullWindowProperty(Display *display, Window handle, Atom propAtom, int &itemCount, int itemSize1) { void *data = NULL; itemCount = 0; int itemSize = itemSize1; if (itemSize1 == 32) itemSize = sizeof(long) * 8; { Atom r_type; int r_format; unsigned long nitems; unsigned long bytes_remain; unsigned char *prop; while (XGetWindowProperty(display, handle, propAtom, (itemCount * itemSize) / 32, 1024*32, False, AnyPropertyType, &r_type, &r_format, &nitems, &bytes_remain, &prop) == Success && prop && bytes_remain == 0) { if (r_format == itemSize1 && nitems > 0) { data = realloc(data, (itemCount + nitems) * itemSize / 8); // access to memory beyound 256MiB causes crashes! But anyhow, size // >>2MiB looks suspicious. Detect this case ASAP. However, if // the usable icon is somewhere in the beginning, it's okay to // return truncated data. if (itemCount * itemSize / 8 >= 2097152) { XFree(prop); break; } memcpy((char *)data + itemCount * itemSize / 8, prop, nitems * itemSize / 8); itemCount += nitems; XFree(prop); if (bytes_remain == 0) break; continue; } XFree(prop); free(data); itemCount = 0; return NULL; } } return data; } bool YFrameClient::getNetWMIcon(int *count, long **elem) { *count = 0; *elem = 0; MSG(("get_net_wm_icon 1")); //if (!prop.net_wm_icon) // return false; *elem = (long *)GetFullWindowProperty(xapp->display(), handle(), _XA_NET_WM_ICON, *count, 32); if (elem && count && *count>0) return true; #if 0 msg("get_net_wm_icon 2"); Atom r_type; int r_format; unsigned long nitems; unsigned long bytes_remain; unsigned char *prop; if (XGetWindowProperty(xapp->display(), handle(), _XA_NET_WM_ICON, 0, 1024*256, False, AnyPropertyType, &r_type, &r_format, &nitems, &bytes_remain, &prop) == Success && prop) { msg("get_net_wm_icon 3"); if (r_format == 32 && nitems > 0 && bytes_remain == 0) { msg("get_net_wm_icon 4, %ld %ld", (long)_XA_NET_WM_ICON, (long)r_type); *count = nitems; *elem = (long *)prop; return true; } XFree(prop); } #endif return false; } #if defined(GNOME1_HINTS) || defined(WMSPEC_HINTS) void YFrameClient::setWinWorkspaceHint(long wk) { #ifdef GNOME1_HINTS XChangeProperty(xapp->display(), handle(), _XA_WIN_WORKSPACE, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&wk, 1); #endif #ifdef WMSPEC_HINTS XChangeProperty(xapp->display(), handle(), _XA_NET_WM_DESKTOP, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&wk, 1); #endif } #endif #ifdef GNOME1_HINTS bool YFrameClient::getWinWorkspaceHint(long *workspace) { *workspace = 0; if (!prop.win_workspace) return false; Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; unsigned char *prop; if (XGetWindowProperty(xapp->display(), handle(), _XA_WIN_WORKSPACE, 0, 1, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 1U) { long ws = *(long *)prop; if (ws < workspaceCount) { *workspace = ws; XFree(prop); return true; } } XFree(prop); } return false; } void YFrameClient::setWinLayerHint(long layer) { XChangeProperty(xapp->display(), handle(), _XA_WIN_LAYER, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&layer, 1); } bool YFrameClient::getWinLayerHint(long *layer) { Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; unsigned char *prop; if (XGetWindowProperty(xapp->display(), handle(), _XA_WIN_LAYER, 0, 1, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 1U) { long l = *(long *)prop; if (l < WinLayerCount) { *layer = l; XFree(prop); return true; } } XFree(prop); } return false; } #endif #ifdef CONFIG_TRAY bool YFrameClient::getWinTrayHint(long *tray_opt) { Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; unsigned char *prop; if (XGetWindowProperty(xapp->display(), handle(), _XA_WIN_TRAY, 0, 1, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 1U) { long o = *(long *)prop; if (o < WinTrayOptionCount) { *tray_opt = o; XFree(prop); return true; } } XFree(prop); } return false; } void YFrameClient::setWinTrayHint(long tray_opt) { XChangeProperty(xapp->display(), handle(), _XA_WIN_TRAY, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&tray_opt, 1); } #endif /* CONFIG_TRAY */ bool YFrameClient::getWinStateHint(long *mask, long *state) { Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; unsigned char *prop; if (XGetWindowProperty(xapp->display(), handle(), _XA_WIN_STATE, 0, 2, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { MSG(("got state")); if (r_type == XA_CARDINAL && r_format == 32 && count >= 1U) { long s = ((long *)prop)[0]; long m = WIN_STATE_ALL; if (count >= 2U) m = ((long *)prop)[1]; *state = s; *mask = m; XFree(prop); return true; } MSG(("bad state")); XFree(prop); } return false; } void YFrameClient::setWinStateHint(long mask, long state) { long s[2]; s[0] = state & mask; s[1] = mask; MSG(("set state=%lX mask=%lX", state, mask)); #ifdef GNOME1_HINTS XChangeProperty(xapp->display(), handle(), _XA_WIN_STATE, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&s, 2); #endif #ifdef WMSPEC_HINTS /// TODO #warning "hack" // !!! hack Atom a[15]; int i = 0; /* the next one is kinda messy */ if ((state & WinStateMinimized) || (state & WinStateHidden)) a[i++] = _XA_NET_WM_STATE_HIDDEN; if (state & WinStateSkipTaskBar) a[i++] = _XA_NET_WM_STATE_SKIP_TASKBAR; if (state & WinStateRollup) a[i++] = _XA_NET_WM_STATE_SHADED; if (state & WinStateAbove) a[i++] = _XA_NET_WM_STATE_ABOVE; if (state & WinStateBelow) a[i++] = _XA_NET_WM_STATE_BELOW; #if 0 if (state & WinStateModal) a[i++] = _XA_NET_WM_STATE_MODAL; #endif if (state & WinStateFullscreen) a[i++] = _XA_NET_WM_STATE_FULLSCREEN; if (state & WinStateMaximizedVert) a[i++] = _XA_NET_WM_STATE_MAXIMIZED_VERT; if (state & WinStateMaximizedHoriz) a[i++] = _XA_NET_WM_STATE_MAXIMIZED_HORZ; XChangeProperty(xapp->display(), handle(), _XA_NET_WM_STATE, XA_ATOM, 32, PropModeReplace, (unsigned char *)&a, i); #endif } bool YFrameClient::getNetWMStateHint(long *mask, long *state) { Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; unsigned char *prop; *mask = 0; *state = 0; if (XGetWindowProperty(xapp->display(), handle(), _XA_NET_WM_STATE, 0, 64, False, XA_ATOM, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { MSG(("got state")); if (r_type == XA_ATOM && r_format == 32 && count >= 1U) { Atom *s = ((Atom *)prop); for (unsigned long i = 0; i < count; i++) { if (s[i] == _XA_NET_WM_STATE_FULLSCREEN) { (*state) |= WinStateFullscreen; (*mask) |= WinStateFullscreen; } if (s[i] == _XA_NET_WM_STATE_ABOVE) { (*state) |= WinStateAbove; (*mask) |= WinStateAbove; } if (s[i] == _XA_NET_WM_STATE_BELOW) { (*state) |= WinStateBelow; (*mask) |= WinStateBelow; } if (s[i] == _XA_NET_WM_STATE_SHADED) { (*state) |= WinStateRollup; (*mask) |= WinStateRollup; } #if 0 if (s[i] == _XA_NET_WM_STATE_MODAL) { (*state) |= WinStateModal; (*mask) |= WinStateModal; } #endif if (s[i] == _XA_NET_WM_STATE_MAXIMIZED_VERT) { (*state) |= WinStateMaximizedVert; (*mask) |= WinStateMaximizedVert; } if (s[i] == _XA_NET_WM_STATE_MAXIMIZED_HORZ) { (*state) |= WinStateMaximizedHoriz; (*mask) |= WinStateMaximizedHoriz; } if (s[i] == _XA_NET_WM_STATE_SKIP_TASKBAR) { (*state) |= WinStateSkipTaskBar; (*mask) |= WinStateSkipTaskBar; } } XFree(prop); return true; } MSG(("bad state")); XFree(prop); return true; } return false; } #ifdef GNOME1_HINTS bool YFrameClient::getWinHintsHint(long *state) { *state = 0; if (!prop.win_hints) return false; Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; unsigned char *prop; if (XGetWindowProperty(xapp->display(), handle(), _XA_WIN_HINTS, 0, 1, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { MSG(("got state")); if (r_type == XA_CARDINAL && r_format == 32 && count == 1U) { long s = ((long *)prop)[0]; *state = s; XFree(prop); return true; } MSG(("bad state")); XFree(prop); } return false; } #endif #ifdef GNOME1_HINTS void YFrameClient::setWinHintsHint(long hints) { long s[1]; s[0] = hints; fWinHints = hints; XChangeProperty(xapp->display(), handle(), _XA_WIN_HINTS, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&s, 1); } #endif void YFrameClient::getClientLeader() { Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; unsigned char *prop; fClientLeader = None; if (XGetWindowProperty(xapp->display(), handle(), _XA_WM_CLIENT_LEADER, 0, 1, False, XA_WINDOW, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_WINDOW && r_format == 32 && count == 1U) { long s = ((long *)prop)[0]; fClientLeader = s; } XFree(prop); } } void YFrameClient::getWindowRole() { if (!prop.window_role) return; Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; union { char *ptr; unsigned char *xptr; } role = { 0 }; if (XGetWindowProperty(xapp->display(), handle(), _XA_WINDOW_ROLE, 0, 256, False, XA_STRING, &r_type, &r_format, &count, &bytes_remain, &(role.xptr)) == Success && role.ptr) { if (r_type == XA_STRING && r_format == 8) { MSG(("window_role=%s", role.ptr)); } else { XFree(role.xptr); role.xptr = 0; } } fWindowRole = role.ptr; } void YFrameClient::getWMWindowRole() { if (!prop.wm_window_role) return; Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; union { char *ptr; unsigned char *xptr; } role = { 0 }; if (XGetWindowProperty(xapp->display(), handle(), _XA_WM_WINDOW_ROLE, 0, 256, False, XA_STRING, &r_type, &r_format, &count, &bytes_remain, &(role.xptr)) == Success && role.ptr) { if (r_type == XA_STRING && r_format == 8) { MSG(("wm_window_role=%s", role.ptr)); } else { XFree(role.xptr); role.xptr = 0; } } fWMWindowRole = role.ptr; } ustring YFrameClient::getClientId(Window leader) { /// !!! fix if (!prop.sm_client_id) return null; union { char *ptr; unsigned char *xptr; } cid = { 0 }; Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; if (XGetWindowProperty(xapp->display(), leader, _XA_SM_CLIENT_ID, 0, 256, False, XA_STRING, &r_type, &r_format, &count, &bytes_remain, &(cid.xptr)) == Success && cid.ptr) { if (r_type == XA_STRING && r_format == 8) { //msg("cid=%s", cid); } else { XFree(cid.xptr); cid.xptr = 0; } } return cid.ptr; } #ifdef WMSPEC_HINTS bool YFrameClient::getNetWMStrut(int *left, int *right, int *top, int *bottom) { *left = 0; *right = 0; *top = 0; *bottom = 0; if (!prop.net_wm_strut) return false; Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; unsigned char *prop; if (XGetWindowProperty(xapp->display(), handle(), _XA_NET_WM_STRUT, 0, 4, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 4U) { long *strut = (long *)prop; MSG(("got strut")); *left = strut[0]; *right = strut[1]; *top = strut[2]; *bottom = strut[3]; XFree(prop); return true; } XFree(prop); } return false; } bool YFrameClient::getNetWMWindowType(Atom *window_type) { // !!! for now, map to layers *window_type = None; if (!prop.net_wm_window_type) return false; Atom r_type; int r_format; unsigned long nitems; unsigned long bytes_remain; unsigned char *prop; if (XGetWindowProperty(xapp->display(), handle(), _XA_NET_WM_WINDOW_TYPE, 0, 64, False, AnyPropertyType, &r_type, &r_format, &nitems, &bytes_remain, &prop) == Success && prop) { if (r_format == 32 && nitems > 0) { Atom *x = (Atom *)prop; for (unsigned int i = 0; i < nitems; i++) { if (x[i] == _XA_NET_WM_WINDOW_TYPE_DOCK) { *window_type = x[i]; break; } if (x[i] == _XA_NET_WM_WINDOW_TYPE_DESKTOP) { *window_type = x[i]; break; } if (x[i] == _XA_NET_WM_WINDOW_TYPE_SPLASH) { *window_type = x[i]; break; } } XFree(prop); return true; } XFree(prop); } return false; } bool YFrameClient::getNetWMDesktopHint(long *workspace) { *workspace = 0; if (!prop.net_wm_desktop) return false; Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; unsigned char *prop; if (XGetWindowProperty(xapp->display(), handle(), _XA_NET_WM_DESKTOP, 0, 1, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 1U) { long ws = *(long *)prop; if (ws < workspaceCount) { *workspace = ws; XFree(prop); return true; } } XFree(prop); } return false; } #endif void YFrameClient::getPropertiesList() { int count; Atom *p; memset(&prop, 0, sizeof(prop)); p = XListProperties(xapp->display(), handle(), &count); // #define HAS(x) do { puts(#x); x = true; } while (0) #define HAS(x) do { x = true; } while (0) if (p) { for (int i = 0; i < count; i++) { Atom a = p[i]; if (a == XA_WM_HINTS) HAS(prop.wm_hints); else if (a == XA_WM_NORMAL_HINTS) HAS(prop.wm_normal_hints); else if (a == XA_WM_TRANSIENT_FOR) HAS(prop.wm_transient_for); else if (a == XA_WM_NAME) HAS(prop.wm_name); else if (a == XA_WM_ICON_NAME) HAS(prop.wm_icon_name); else if (a == XA_WM_CLASS) HAS(prop.wm_class); else if (a == _XA_WM_PROTOCOLS) HAS(prop.wm_protocols); else if (a == _XA_WM_CLIENT_LEADER) HAS(prop.wm_client_leader); else if (a == _XA_WM_WINDOW_ROLE) HAS(prop.wm_window_role); else if (a == _XA_WINDOW_ROLE) HAS(prop.window_role); else if (a == _XA_SM_CLIENT_ID) HAS(prop.sm_client_id); else if (a == _XATOM_MWM_HINTS) HAS(prop.mwm_hints); else if (a == _XA_KWM_WIN_ICON) HAS(prop.kwm_win_icon); else if (a == _XA_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR) HAS(prop.kde_net_wm_system_tray_window_for); #ifdef WMSPEC_HINTS else if (a == _XA_NET_WM_STRUT) HAS(prop.net_wm_strut); else if (a == _XA_NET_WM_DESKTOP) HAS(prop.net_wm_desktop); else if (a == _XA_NET_WM_STATE) HAS(prop.net_wm_state); else if (a == _XA_NET_WM_WINDOW_TYPE) HAS(prop.net_wm_window_type); else if (a == _XA_NET_WM_USER_TIME) HAS(prop.net_wm_user_time); #endif #ifdef GNOME1_HINTS else if (a == _XA_WIN_HINTS) HAS(prop.win_hints); else if (a == _XA_WIN_WORKSPACE) HAS(prop.win_workspace); else if (a == _XA_WIN_STATE) HAS(prop.win_state); else if (a == _XA_WIN_LAYER) HAS(prop.win_layer); else if (a == _XA_WIN_ICONS) HAS(prop.win_icons); #endif else if (a == _XA_XEMBED_INFO) HAS(prop.xembed_info); #ifdef DEBUG else { MSG(("unknown atom: %s", XGetAtomName(xapp->display(), a))); } #endif } XFree(p); } } void YFrameClient::configure(const YRect &r) { (void)r; MSG(("client geometry %d:%d-%dx%d", r.x(), r.y(), r.width(), r.height())); } bool YFrameClient::getWmUserTime(long *userTime) { *userTime = -1; if (!prop.net_wm_user_time) return false; Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; unsigned char *prop; if (XGetWindowProperty(xapp->display(), handle(), _XA_NET_WM_USER_TIME, 0, 4, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 4U) { long *value = (long *)prop; *userTime = *value; XFree(prop); return true; } XFree(prop); } return false; } icewm-1.3.7/src/wmcontainer.cc0000644000076600007660000001526511463274240015262 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek */ #include "config.h" #include "ylib.h" #include #include "wmcontainer.h" #include "wmframe.h" #include "yxapp.h" #include "prefs.h" #include YClientContainer::YClientContainer(YWindow *parent, YFrameWindow *frame) :YWindow(parent) { fFrame = frame; fHaveGrab = false; fHaveActionGrab = false; setStyle(wsManager); setDoubleBuffer(false); setPointer(YXApplication::leftPointer); } YClientContainer::~YClientContainer() { releaseButtons(); } void YClientContainer::handleButton(const XButtonEvent &button) { bool doRaise = false; bool doActivate = false; bool firstClick = false; if (!(button.state & ControlMask) && (buttonRaiseMask & (1 << (button.button - 1))) && (!useMouseWheel || (button.button != 4 && button.button != 5))) { if (focusOnClickClient) { if (!getFrame()->isTypeDock()) { doActivate = true; if (getFrame()->canFocusByMouse() && !getFrame()->focused()) firstClick = true; } } if (raiseOnClickClient) { doRaise = true; if (getFrame()->canRaise()) firstClick = true; } } #if 1 if (clientMouseActions) { unsigned int k = button.button + XK_Pointer_Button1 - 1; unsigned int m = KEY_MODMASK(button.state); unsigned int vm = VMod(m); if (IS_WMKEY(k, vm, gMouseWinSize)) { XAllowEvents(xapp->display(), AsyncPointer, CurrentTime); int px = button.x + x(); int py = button.y + y(); int gx = (px * 3 / (int)width() - 1); int gy = (py * 3 / (int)height() - 1); if (gx < 0) gx = -1; if (gx > 0) gx = 1; if (gy < 0) gy = -1; if (gy > 0) gy = 1; bool doMove = (gx == 0 && gy == 0) ? true : false; int mx, my; if (doMove) { mx = px; my = py; } else { mx = button.x_root; my = button.y_root; } if ((doMove && getFrame()->canMove()) || (!doMove && getFrame()->canSize())) { getFrame()->startMoveSize(doMove, 1, gx, gy, mx, my); } return ; } else if (IS_WMKEY(k, vm, gMouseWinMove)) { XAllowEvents(xapp->display(), AsyncPointer, CurrentTime); if (getFrame()->canMove()) { int px = button.x + x(); int py = button.y + y(); getFrame()->startMoveSize(1, 1, 0, 0, px, py); } return ; } else if (IS_WMKEY(k, vm, gMouseWinRaise)) { XAllowEvents(xapp->display(), AsyncPointer, CurrentTime); getFrame()->wmRaise(); return ; } } #endif ///!!! do this first? if (doActivate) { bool input = getFrame() ? getFrame()->getInputFocusHint() : true; if (input) getFrame()->activate(); } if (doRaise) getFrame()->wmRaise(); ///!!! it might be nice if this was per-window option (app-request) if (!firstClick || passFirstClickToClient) XAllowEvents(xapp->display(), ReplayPointer, CurrentTime); else XAllowEvents(xapp->display(), AsyncPointer, CurrentTime); XSync(xapp->display(), 0); return ; } // manage button grab on frame window to capture clicks to client window // we want to keep the grab when: // focusOnClickClient && not focused // || raiseOnClickClient && not can be raised // ('not on top' != 'can be raised') // the difference is when we have transients and explicitFocus // also there is the difference with layers and multiple workspaces void YClientContainer::grabButtons() { grabActions(); if (!fHaveGrab && (clickFocus || focusOnClickClient || raiseOnClickClient)) { fHaveGrab = true; XGrabButton(xapp->display(), AnyButton, AnyModifier, handle(), True, ButtonPressMask, GrabModeSync, GrabModeAsync, None, None); } } void YClientContainer::releaseButtons() { if (fHaveGrab) { fHaveGrab = false; XUngrabButton(xapp->display(), AnyButton, AnyModifier, handle()); fHaveActionGrab = false; } grabActions(); } void YClientContainer::regrabMouse() { XUngrabButton(xapp->display(), AnyButton, AnyModifier, handle()); if (fHaveActionGrab) { fHaveActionGrab = false; grabActions(); } if (fHaveGrab ) { fHaveGrab = false; grabButtons(); } } void YClientContainer::grabActions() { if (clientMouseActions) { if (!fHaveActionGrab) { fHaveActionGrab = true; if (gMouseWinMove.key != 0) grabVButton(gMouseWinMove.key - XK_Pointer_Button1 + 1, gMouseWinMove.mod); if (gMouseWinSize.key != 0) grabVButton(gMouseWinSize.key - XK_Pointer_Button1 + 1, gMouseWinSize.mod); if (gMouseWinRaise.key != 0) grabVButton(gMouseWinRaise.key - XK_Pointer_Button1 + 1, gMouseWinRaise.mod); } } } void YClientContainer::handleConfigureRequest(const XConfigureRequestEvent &configureRequest) { MSG(("configure request in frame")); if (getFrame() && configureRequest.window == getFrame()->client()->handle()) { XConfigureRequestEvent cre = configureRequest; getFrame()->configureClient(cre); } } void YClientContainer::handleMapRequest(const XMapRequestEvent &mapRequest) { if (mapRequest.window == getFrame()->client()->handle()) { getFrame()->setState(WinStateMinimized | WinStateHidden | WinStateRollup, 0); bool doActivate = true; getFrame()->updateFocusOnMap(doActivate); if (doActivate) { getFrame()->activateWindow(true); } } } void YClientContainer::handleCrossing(const XCrossingEvent &crossing) { if (getFrame() && pointerColormap) { if (crossing.type == EnterNotify) manager->setColormapWindow(getFrame()); else if (crossing.type == LeaveNotify && crossing.detail != NotifyInferior && crossing.mode == NotifyNormal && manager->colormapWindow() == getFrame()) { manager->setColormapWindow(0); } } } icewm-1.3.7/src/sysdep.h0000644000076600007660000000140111463274240014070 0ustar develdevel#ifndef __SYSDEP_H #define __SYSDEP_H #ifdef __EMX__ #define PATHSEP ';' #define SLASH '\\' #define ISSLASH(c) ((c) == '/' || (c) == '\\') #else #define PATHSEP ':' #define SLASH '/' #define ISSLASH(c) ((c) == '/') #endif #include #include #include #include #include #include #ifdef NEED_TIME_H #include #endif #include #include #include #ifdef NEED_SYS_SELECT_H #include #endif #include #include #include #include #include #ifdef CONFIG_I18N #include #include #endif #ifndef O_TEXT #define O_TEXT 0 #endif #ifndef O_BINARY #define O_BINARY 0 #endif #endif icewm-1.3.7/src/ylocale.h0000644000076600007660000000233311463274240014216 0ustar develdevel/* * IceWM - C++ wrapper for locale/unicode conversion * Copyright (C) 2001 The Authors of IceWM * * Release under terms of the GNU Library General Public License */ #ifndef __YLOCALE_H #define __YLOCALE_H #ifdef CONFIG_I18N #include #if defined(CONFIG_LIBICONV) && !defined (_LIBICONV_VERSION) #error libiconv in use but included iconv.h not from libiconv #endif #if !defined(CONFIG_LIBICONV) && defined (_LIBICONV_VERSION) #error libiconv not in use but included iconv.h is from libiconv #endif #endif typedef char YLChar; typedef wchar_t YUChar; class YLocale { public: YLocale(char const * localeName = ""); ~YLocale(); #ifdef CONFIG_I18N static iconv_t getConverter (char const *from, char const **& to); static YLChar *localeString(YUChar const *uStr, size_t const uLen, size_t &lLen); static YUChar *unicodeString(YLChar const *lStr, size_t const lLen, size_t &uLen); #endif static const char *getLocaleName(); static int getRating(const char *localeStr); #ifdef CONFIG_I18N private: static YLocale *instance; const char *fLocaleName; iconv_t toUnicode; iconv_t toLocale; #endif }; #endif icewm-1.3.7/src/wmbutton.h0000644000076600007660000000237311463274240014451 0ustar develdevel#ifndef __WMBUTTON_H #define __WMBUTTON_H #include "yactionbutton.h" #include "ymenu.h" class YFrameWindow; class YFrameButton: public YButton { public: YFrameButton(YWindow *parent, YFrameWindow *frame, YAction *action, YAction *action2 = 0); virtual ~YFrameButton(); virtual void paint(Graphics &g, const YRect &r); virtual void paintFocus(Graphics &g, const YRect &r); virtual void handleButton(const XButtonEvent &button); virtual void handleClick(const XButtonEvent &up, int count); virtual void handleBeginDrag(const XButtonEvent &down, const XMotionEvent &motion); virtual void actionPerformed(YAction *action, unsigned int modifiers); void setActions(YAction *action, YAction *action2 = 0); virtual void updatePopup(); ref getPixmap(int pn) const; YFrameWindow *getFrame() const { return fFrame; }; private: YFrameWindow *fFrame; YAction *fAction; YAction *fAction2; }; //changed robc extern ref closePixmap[3]; extern ref minimizePixmap[3]; extern ref maximizePixmap[3]; extern ref restorePixmap[3]; extern ref hidePixmap[3]; extern ref rollupPixmap[3]; extern ref rolldownPixmap[3]; extern ref depthPixmap[3]; #endif icewm-1.3.7/src/ysocket.h0000644000076600007660000000162211463274240014247 0ustar develdevel#ifndef YSOCKET_H_ #define YSOCKET_H_ #include "ypoll.h" class YSocketListener { public: virtual void socketConnected() = 0; virtual void socketError(int err) = 0; virtual void socketDataRead(char *buf, int len) = 0; protected: virtual ~YSocketListener() {}; }; class YSocket: private YPollBase { public: YSocket(); virtual ~YSocket(); int connect(struct sockaddr *server_addr, int addrlen); int socketpair(int *otherfd); int close(); int read(char *buf, int len); int write(const char *buf, int len); void setListener(YSocketListener *l) { fListener = l; } private: YSocketListener *fListener; bool connecting; bool reading; bool registered; char *rdbuf; int rdbuflen; friend class YApplication; virtual void notifyRead(); virtual void notifyWrite(); virtual bool forRead(); virtual bool forWrite(); }; #endif icewm-1.3.7/src/wmaction.cc0000644000076600007660000000601011463274240014541 0ustar develdevel#include "config.h" #include "wmaction.h" #include "yaction.h" YAction *actionCascade(0); YAction *actionArrange(0); YAction *actionTileVertical(0); YAction *actionTileHorizontal(0); YAction *actionUndoArrange(0); YAction *actionArrangeIcons(0); YAction *actionMinimizeAll(0); YAction *actionHideAll(0); YAction *actionShowDesktop = 0; #ifndef CONFIG_PDA YAction *actionHide(0); #endif YAction *actionShow(0); YAction *actionRaise(0); YAction *actionLower(0); YAction *actionDepth(0); YAction *actionMove(0); YAction *actionSize(0); YAction *actionMaximize(0); YAction *actionMaximizeVert(0); YAction *actionMinimize(0); YAction *actionRestore(0); YAction *actionRollup(0); YAction *actionClose(0); YAction *actionKill(0); YAction *actionOccupyAllOrCurrent(0); #if DO_NOT_COVER_OLD YAction *actionDoNotCover(0); #endif YAction *actionFullscreen(0); YAction *actionToggleTray(0); YAction *actionWindowList(0); YAction *actionLogout(0); YAction *actionCancelLogout(0); YAction *actionLock(0); YAction *actionReboot(0); YAction *actionRestart(0); YAction *actionShutdown(0); YAction *actionRefresh(0); YAction *actionCollapseTaskbar(0); #ifndef LITE YAction *actionAbout(0); YAction *actionHelp(0); YAction *actionLicense(0); #endif YAction *actionRun(0); YAction *actionExit(0); YAction *actionFocusClickToFocus(0); YAction *actionFocusMouseSloppy(0); YAction *actionFocusCustom(0); void initActions() { actionCascade = new YAction(); actionArrange = new YAction(); actionTileVertical = new YAction(); actionTileHorizontal = new YAction(); actionUndoArrange = new YAction(); actionArrangeIcons = new YAction(); actionMinimizeAll = new YAction(); actionHideAll = new YAction(); actionShowDesktop = new YAction(); #ifndef CONFIG_PDA actionHide = new YAction(); #endif actionShow = new YAction(); actionRaise = new YAction(); actionLower = new YAction(); actionDepth = new YAction(); actionMove = new YAction(); actionSize = new YAction(); actionMaximize = new YAction(); actionMaximizeVert = new YAction(); actionMinimize = new YAction(); actionRestore = new YAction(); actionRollup = new YAction(); actionClose = new YAction(); actionKill = new YAction(); actionOccupyAllOrCurrent = new YAction(); #if DO_NOT_COVER_OLD actionDoNotCover = new YAction(); #endif actionFullscreen = new YAction(); actionToggleTray = new YAction(); actionWindowList = new YAction(); actionLogout = new YAction(); actionCancelLogout = new YAction(); actionLock = new YAction(); actionReboot = new YAction(); actionRestart = new YAction(); actionShutdown = new YAction(); actionRefresh = new YAction(); actionCollapseTaskbar = new YAction(); #ifndef LITE actionAbout = new YAction(); actionHelp = new YAction(); actionLicense = new YAction(); #endif actionRun = new YAction(); actionExit = new YAction(); actionFocusClickToFocus = new YAction(); actionFocusMouseSloppy = new YAction(); actionFocusCustom = new YAction(); } icewm-1.3.7/src/yaction.h0000644000076600007660000000035511463274240014236 0ustar develdevel#ifndef __YACTION_H #define __YACTION_H class YAction { public: }; class YActionListener { public: virtual void actionPerformed(YAction *action, unsigned int modifiers) = 0; protected: virtual ~YActionListener() {}; }; #endif icewm-1.3.7/src/ydialog.h0000644000076600007660000000121311463274240014212 0ustar develdevel#ifndef __YDIALOG_H #define __YDIALOG_H #include "wmclient.h" // !!! broken, should be ywindow class YDialog: public YFrameClient { public: YDialog(YWindow *owner = 0); virtual ~YDialog(); void paint(Graphics &g, const YRect &r); virtual bool handleKey(const XKeyEvent &key); #ifdef CONFIG_GRADIENTS virtual ref getGradient() const { return fGradient; } #endif YWindow *getOwner() const { return fOwner; } private: YWindow *fOwner; #ifdef CONFIG_GRADIENTS ref fGradient; #endif }; extern ref dialogbackPixmap; #ifdef CONFIG_GRADIENTS extern ref dialogbackPixbuf; #endif #endif icewm-1.3.7/src/ymenuitem.cc0000644000076600007660000000663011463274240014744 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek */ #include "config.h" #include "ykey.h" #include "ypaint.h" #include "ymenuitem.h" #include "ymenu.h" #include "yaction.h" #include "yapp.h" #include "yprefs.h" #include "prefs.h" #include "ypixbuf.h" #include "yicon.h" #include extern ref menuFont; YMenuItem::YMenuItem(const ustring &name, int aHotCharPos, const ustring ¶m, YAction *action, YMenu *submenu) : fName(name), fParam(param), fAction(action), fHotCharPos(aHotCharPos), fSubmenu(submenu), fIcon(null), fChecked(false), fEnabled(true) { if (fName != null && (fHotCharPos == -2 || fHotCharPos == -3)) { int i = fName.indexOf('_'); if (i != -1) { fHotCharPos = i; fName = fName.remove(i, 1); #if 0 char *hotChar = strchr(fName, '_'); if (hotChar != NULL) { fHotCharPos = (hotChar - fName); memmove(hotChar, hotChar + 1, strlen(hotChar)); #endif } else { if (fHotCharPos == -3) fHotCharPos = 0; else fHotCharPos = -1; } } if (fName == null || fHotCharPos >= fName.length() || fHotCharPos < -1) fHotCharPos = -1; } YMenuItem::YMenuItem(const ustring &name) : fName(name), fParam(null), fAction(NULL), fHotCharPos (-1), fSubmenu(0), fIcon(null), fChecked(false), fEnabled(true) { } YMenuItem::YMenuItem(): fName(null), fParam(null), fAction(0), fHotCharPos(-1), fSubmenu(0), fIcon(null), fChecked(false), fEnabled(false) { } YMenuItem::~YMenuItem() { if (fSubmenu && !fSubmenu->isShared()) delete fSubmenu; fSubmenu = 0; } void YMenuItem::setChecked(bool c) { fChecked = c; } void YMenuItem::setIcon(ref icon) { fIcon = icon; } void YMenuItem::actionPerformed(YActionListener *listener, YAction *action, unsigned int modifiers) { if (listener && action) listener->actionPerformed(action, modifiers); } int YMenuItem::queryHeight(int &top, int &bottom, int &pad) const { top = bottom = pad = 0; if (getName() != null || getSubmenu()) { int fontHeight = max(16, menuFont->height() + 1); int ih = fontHeight; #ifndef LITE if (YIcon::smallSize() > ih) ih = YIcon::smallSize(); #endif if (wmLook == lookWarp4 || wmLook == lookWin95) { top = bottom = 0; pad = 1; } else if (wmLook == lookMetal || wmLook == lookFlat) { top = bottom = 1; pad = 1; } else if (wmLook == lookMotif) { top = bottom = 2; pad = 0; //1 } else if (wmLook == lookGtk) { top = bottom = 2; pad = 0; //1 } else { top = 1; bottom = 2; pad = 0; //1; } return (top + pad + ih + pad + bottom); } else { top = 0; bottom = 0; pad = 1; return ((wmLook == lookMetal || wmLook == lookFlat) ? 3 : 4); } } int YMenuItem::getIconWidth() const { #ifdef LITE return 0; #else ref icon = getIcon(); return icon != null ? YIcon::smallSize(): 0; #endif } int YMenuItem::getNameWidth() const { ustring name = getName(); return name != null ? menuFont->textWidth(name) : 0; } int YMenuItem::getParamWidth() const { ustring param = getParam(); return param != null ? menuFont->textWidth(param) : 0; } icewm-1.3.7/src/testwinhints.cc0000644000076600007660000003010311463274240015463 0ustar develdevel#include #include #include #include #include #include #include #include #include #include #include #include #include "WinMgr.h" #define KEY_MODMASK(x) ((x) & (ControlMask | ShiftMask | Mod1Mask)) #define BUTTON_MASK(x) ((x) & (Button1Mask | Button2Mask | Button3Mask)) #define BUTTON_MODMASK(x) ((x) & (ControlMask | ShiftMask | Mod1Mask | Button1Mask | Button2Mask | Button3Mask)) static char *displayName = 0; static Display *display = 0; static Colormap defaultColormap; static Window root = None; static Window window = None; ///static GC gc; static long workspaceCount = 4; static long activeWorkspace = 0; static long windowWorkspace = 0; static long state[2] = { 0, 0 }; ///static bool sticky = false; static Atom _XA_WIN_WORKSPACE; static Atom _XA_WIN_WORKSPACE_NAMES; static Atom _XA_WIN_STATE; static Atom _XA_WIN_LAYER; static Atom _XA_WIN_WORKAREA; static Atom _XA_WIN_TRAY; static Atom _XA_NET_WM_MOVERESIZE; void changeWorkspace(Window w, long workspace) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = w; xev.message_type = _XA_WIN_WORKSPACE; xev.format = 32; xev.data.l[0] = workspace; xev.data.l[1] = CurrentTime; //xev.data.l[1] = timeStamp; XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); } void moveResize(Window w, int x, int y, int what) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = w; xev.message_type = _XA_NET_WM_MOVERESIZE; xev.format = 32; xev.data.l[0] = x; xev.data.l[1] = y; //xev.data.l[1] = timeStamp; xev.data.l[2] = what; XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); } void toggleState(Window w, long new_state) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = w; xev.message_type = _XA_WIN_STATE; xev.data.l[0] = (state[0] & state[1] & new_state) ^ new_state; xev.data.l[1] = new_state; xev.data.l[2] = CurrentTime; //xev.data.l[1] = timeStamp; XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); } void setLayer(Window w, long layer) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = w; xev.message_type = _XA_WIN_LAYER; xev.format = 32; xev.data.l[0] = layer; xev.data.l[1] = CurrentTime; //xev.data.l[1] = timeStamp; XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); } void setTrayHint(Window w, long tray_opt) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = w; xev.message_type = _XA_WIN_TRAY; xev.format = 32; xev.data.l[0] = tray_opt; xev.data.l[1] = CurrentTime; //xev.data.l[1] = timeStamp; XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); } int main(/*int argc, char **argv*/) { XSetWindowAttributes attr; assert((display = XOpenDisplay(displayName)) != 0); root = RootWindow(display, DefaultScreen(display)); defaultColormap = DefaultColormap(display, DefaultScreen(display)); _XA_WIN_WORKSPACE = XInternAtom(display, XA_WIN_WORKSPACE, False); _XA_WIN_WORKSPACE_NAMES = XInternAtom(display, XA_WIN_WORKSPACE_NAMES, False); _XA_WIN_STATE = XInternAtom(display, XA_WIN_STATE, False); _XA_WIN_LAYER = XInternAtom(display, XA_WIN_LAYER, False); _XA_WIN_WORKAREA = XInternAtom(display, XA_WIN_WORKAREA, False); _XA_WIN_TRAY = XInternAtom(display, XA_WIN_TRAY, False); _XA_NET_WM_MOVERESIZE = XInternAtom(display, "_NET_WM_MOVERESIZE", False); window = XCreateWindow(display, root, 0, 0, 64, 64, 0, CopyFromParent, InputOutput, CopyFromParent, 0, &attr); XSetWindowBackground(display, window, BlackPixel(display, DefaultScreen(display))); XSelectInput(display, window, ExposureMask | StructureNotifyMask | ButtonPressMask | ButtonReleaseMask | KeyPressMask | KeyReleaseMask | PropertyChangeMask); XSelectInput(display, root, PropertyChangeMask); XMapRaised(display, window); while (1) { XEvent xev; /// XButtonEvent &button = xev.xbutton; XPropertyEvent &property = xev.xproperty; XKeyEvent &key = xev.xkey; XNextEvent(display, &xev); switch (xev.type) { case KeyPress: { unsigned int k = XKeycodeToKeysym(display, key.keycode, 0); unsigned int m = KEY_MODMASK(key.state); if (k == XK_Left && m == 0) changeWorkspace(root, (workspaceCount + activeWorkspace - 1) % workspaceCount); else if (k == XK_Right && m == 0) changeWorkspace(root, (activeWorkspace + 1) % workspaceCount); else if (k == XK_Left && m == ShiftMask) changeWorkspace(window, (workspaceCount + windowWorkspace - 1) % workspaceCount); else if (k == XK_Right && m == ShiftMask) changeWorkspace(window, (windowWorkspace + 1) % workspaceCount); else if (k == 's') toggleState(window, WinStateAllWorkspaces); /* else if (k == 'd') toggleState(window, WinStateDockHorizontal); */ else if (k == '0') setLayer(window, WinLayerDesktop); else if (k == '1') setLayer(window, WinLayerBelow); else if (k == '2') setLayer(window, WinLayerNormal); else if (k == '3') setLayer(window, WinLayerOnTop); else if (k == '4') setLayer(window, WinLayerDock); else if (k == '5') setLayer(window, WinLayerAboveDock); else if (k == 'm') { printf("%d %d\n", key.x_root, key.y_root); moveResize(window, key.x_root, key.y_root, 8); // move } else if (k == 'r') { printf("%d %d\n", key.x_root, key.y_root); moveResize(window, key.x_root, key.y_root, 4); // _| } } break; case PropertyNotify: { Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; unsigned char *prop; if (property.window == root) { if (property.atom == _XA_WIN_WORKSPACE) { if (XGetWindowProperty(display, root, _XA_WIN_WORKSPACE, 0, 1, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 1) { activeWorkspace = ((long *)prop)[0]; printf("active=%ld of %ld\n", activeWorkspace, workspaceCount); } XFree(prop); } } else if (property.atom == _XA_WIN_WORKSPACE_NAMES) { } else if (property.atom == _XA_WIN_WORKAREA) { if (XGetWindowProperty(display, root, _XA_WIN_WORKAREA, 0, 4, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 4) { long *area = (long *)prop; printf("workarea: min=%ld,%ld max=%ld,%ld\n", area[0], area[1], area[2], area[3]); } XFree(prop); } } } else if (property.window == window) { if (property.atom == _XA_WIN_WORKSPACE) { if (XGetWindowProperty(display, window, _XA_WIN_WORKSPACE, 0, 1, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 1) { windowWorkspace = ((long *)prop)[0]; printf("window=%ld of %ld\n", windowWorkspace, workspaceCount); } XFree(prop); } } else if (property.atom == _XA_WIN_STATE) { if (XGetWindowProperty(display, window, _XA_WIN_STATE, 0, 2, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 2) { state[0] = ((long *)prop)[0]; state[1] = ((long *)prop)[1]; printf("state=%lX %lX\n", state[0], state[1]); } XFree(prop); } } else if (property.atom == _XA_WIN_LAYER) { if (XGetWindowProperty(display, window, _XA_WIN_LAYER, 0, 1, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 1) { long layer = ((long *)prop)[0]; printf("layer=%ld\n", layer); } XFree(prop); } } else if (property.atom == _XA_WIN_TRAY) { if (XGetWindowProperty(display, window, _XA_WIN_TRAY, 0, 1, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 1) { long tray = ((long *)prop)[0]; printf("tray option=%ld\n", tray); } } } } } } } } icewm-1.3.7/src/ypaint.cc0000644000076600007660000010643711463274240014242 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek */ #include "config.h" #include "ylib.h" #include "ypixbuf.h" #include "ypaint.h" #include "yxapp.h" #include "sysdep.h" #include "ystring.h" #include "yprefs.h" #include "prefs.h" #include "stdio.h" #include "yicon.h" #include "intl.h" #ifdef CONFIG_XFREETYPE #include #endif /******************************************************************************/ /******************************************************************************/ YColor::YColor(unsigned short red, unsigned short green, unsigned short blue): fRed(red), fGreen(green), fBlue(blue), fDarker(NULL), fBrighter(NULL) INIT_XFREETYPE(xftColor, NULL) { alloc(); } YColor::YColor(unsigned long pixel): fDarker(NULL), fBrighter(NULL) INIT_XFREETYPE(xftColor, NULL) { XColor color; color.pixel = pixel; XQueryColor(xapp->display(), xapp->colormap(), &color); fRed = color.red; fGreen = color.green; fBlue = color.blue; alloc(); } YColor::YColor(const char *clr): fDarker(NULL), fBrighter(NULL) INIT_XFREETYPE(xftColor, NULL) { XColor color; XParseColor(xapp->display(), xapp->colormap(), clr ? clr : "rgb:00/00/00", &color); fRed = color.red; fGreen = color.green; fBlue = color.blue; alloc(); } #ifdef CONFIG_XFREETYPE YColor::~YColor() { if (NULL != xftColor) { XftColorFree (xapp->display (), xapp->visual (), xapp->colormap(), xftColor); delete xftColor; } } YColor::operator XftColor * () { if (NULL == xftColor) { xftColor = new XftColor; XRenderColor color; color.red = fRed; color.green = fGreen; color.blue = fBlue; color.alpha = 0xffff; XftColorAllocValue(xapp->display(), xapp->visual(), xapp->colormap(), &color, xftColor); } return xftColor; } #endif void YColor::alloc() { XColor color; color.red = fRed; color.green = fGreen; color.blue = fBlue; color.flags = DoRed | DoGreen | DoBlue; Visual *visual = xapp->visual(); if (visual->c_class == TrueColor) { int padding, unused; int depth = visual->bits_per_rgb; int red_shift = lowbit(visual->red_mask); int red_prec = highbit(visual->red_mask) - red_shift + 1; int green_shift = lowbit(visual->green_mask); int green_prec = highbit(visual->green_mask) - green_shift + 1; int blue_shift = lowbit(visual->blue_mask); int blue_prec = highbit(visual->blue_mask) - blue_shift + 1; /* Shifting by >= width-of-type isn't defined in C */ if (depth >= 32) padding = 0; else padding = ((~(unsigned int)0)) << depth; unused = ~ (visual->red_mask | visual->green_mask | visual->blue_mask | padding); color.pixel = (unused + ((color.red >> (16 - red_prec)) << red_shift) + ((color.green >> (16 - green_prec)) << green_shift) + ((color.blue >> (16 - blue_prec)) << blue_shift)); } else if (Success == XAllocColor(xapp->display(), xapp->colormap(), &color)) { int j, ncells; double d = 65536. * 65536. * 24; XColor clr; unsigned long pix; long d_red, d_green, d_blue; double u_red, u_green, u_blue; pix = 0xFFFFFFFF; ncells = DisplayCells(xapp->display(), DefaultScreen(xapp->display())); for (j = 0; j < ncells; j++) { clr.pixel = j; XQueryColor(xapp->display(), xapp->colormap(), &clr); d_red = color.red - clr.red; d_green = color.green - clr.green; d_blue = color.blue - clr.blue; u_red = 3UL * (d_red * d_red); u_green = 4UL * (d_green * d_green); u_blue = 2UL * (d_blue * d_blue); double d1 = u_red + u_blue + u_green; if (pix == 0xFFFFFFFF || d1 < d) { pix = j; d = d1; } } if (pix != 0xFFFFFFFF) { clr.pixel = pix; XQueryColor(xapp->display(), xapp->colormap(), &clr); /*DBG(("color=%04X:%04X:%04X, match=%04X:%04X:%04X\n", color.red, color.blue, color.green, clr.red, clr.blue, clr.green));*/ color = clr; } if (XAllocColor(xapp->display(), xapp->colormap(), &color) == 0) { if (color.red + color.green + color.blue >= 32768) color.pixel = WhitePixel(xapp->display(), DefaultScreen(xapp->display())); else color.pixel = BlackPixel(xapp->display(), DefaultScreen(xapp->display())); } } fRed = color.red; fGreen = color.green; fBlue = color.blue; fPixel = color.pixel; } YColor *YColor::darker() { // !!! fix if (fDarker == 0) { unsigned short red, blue, green; red = ((unsigned int)fRed) * 2 / 3; blue = ((unsigned int)fBlue) * 2 / 3; green = ((unsigned int)fGreen) * 2 / 3; fDarker = new YColor(red, green, blue); } return fDarker; } YColor *YColor::brighter() { // !!! fix if (fBrighter == 0) { unsigned short red, blue, green; red = min (((unsigned) fRed) * 4 / 3, 0xFFFFU); blue = min (((unsigned) fBlue) * 4 / 3, 0xFFFFU); green = min (((unsigned) fGreen) * 4 / 3, 0xFFFFU); fBrighter = new YColor(red, green, blue); } return fBrighter; } /******************************************************************************/ /******************************************************************************/ Graphics::Graphics(YWindow & window, unsigned long vmask, XGCValues * gcv): fDisplay(xapp->display()), fDrawable(window.handle()), fColor(NULL), fFont(NULL), xOrigin(0), yOrigin(0) { rWidth = window.width(); rHeight = window.height(); gc = XCreateGC(fDisplay, fDrawable, vmask, gcv); #ifdef CONFIG_XFREETYPE fDraw = XftDrawCreate(display(), drawable(), xapp->visual(), xapp->colormap()); #endif } Graphics::Graphics(YWindow & window): fDisplay(xapp->display()), fDrawable(window.handle()), fColor(NULL), fFont(NULL), xOrigin(0), yOrigin(0) { rWidth = window.width(); rHeight = window.height(); XGCValues gcv; gcv.graphics_exposures = False; gc = XCreateGC(fDisplay, fDrawable, GCGraphicsExposures, &gcv); #ifdef CONFIG_XFREETYPE fDraw = XftDrawCreate(display(), drawable(), xapp->visual(), xapp->colormap()); #endif } Graphics::Graphics(const ref &pixmap, int x_org, int y_org): fDisplay(xapp->display()), fDrawable(pixmap->pixmap()), fColor(NULL), fFont(NULL), xOrigin(x_org), yOrigin(y_org) { rWidth = pixmap->width(); rHeight = pixmap->height(); XGCValues gcv; gcv.graphics_exposures = False; gc = XCreateGC(fDisplay, fDrawable, GCGraphicsExposures, &gcv); #ifdef CONFIG_XFREETYPE fDraw = XftDrawCreate(display(), drawable(), xapp->visual(), xapp->colormap()); #endif } Graphics::Graphics(Drawable drawable, int w, int h, unsigned long vmask, XGCValues * gcv): fDisplay(xapp->display()), fDrawable(drawable), fColor(NULL), fFont(NULL), xOrigin(0), yOrigin(0), rWidth(w), rHeight(h) { gc = XCreateGC(fDisplay, fDrawable, vmask, gcv); #ifdef CONFIG_XFREETYPE fDraw = XftDrawCreate(display(), fDrawable, xapp->visual(), xapp->colormap()); #endif } Graphics::Graphics(Drawable drawable, int w, int h): fDisplay(xapp->display()), fDrawable(drawable), fColor(NULL), fFont(NULL), xOrigin(0), yOrigin(0), rWidth(w), rHeight(h) { XGCValues gcv; gcv.graphics_exposures = False; gc = XCreateGC(fDisplay, fDrawable, GCGraphicsExposures, &gcv); #ifdef CONFIG_XFREETYPE fDraw = XftDrawCreate(display(), fDrawable, xapp->visual(), xapp->colormap()); #endif } Graphics::~Graphics() { XFreeGC(fDisplay, gc); #ifdef CONFIG_XFREETYPE if (fDraw) XftDrawDestroy(fDraw); #endif } /******************************************************************************/ void Graphics::copyArea(const int x, const int y, const int width, const int height, const int dx, const int dy) { XCopyArea(fDisplay, fDrawable, fDrawable, gc, x - xOrigin, y - yOrigin, width, height, dx - xOrigin, dy - yOrigin); } void Graphics::copyDrawable(Drawable const d, const int x, const int y, const int w, const int h, const int dx, const int dy) { XCopyArea(fDisplay, d, fDrawable, gc, x, y, w, h, dx - xOrigin, dy - yOrigin); } #if 0 void Graphics::copyImage(XImage * image, const int x, const int y, const int w, const int h, const int dx, const int dy) { XPutImage(fDisplay, fDrawable, gc, image, x, y, dx - xOrigin, dy - yOrigin, w, h); } #endif #if 0 #ifdef CONFIG_ANTIALIASING void Graphics::copyPixbuf(YPixbuf & pixbuf, const int x, const int y, const int w, const int h, const int dx, const int dy, bool useAlpha) { pixbuf.copyToDrawable(fDrawable, gc, x, y, w, h, dx - xOrigin, dy - yOrigin, useAlpha); } #endif void Graphics::copyAlphaMask(YPixbuf & pixbuf, const int x, const int y, const int w, const int h, const int dx, const int dy) { pixbuf.copyAlphaToMask(fDrawable, gc, x, y, w, h, dx - xOrigin, dy - yOrigin); } #endif /******************************************************************************/ void Graphics::drawPoint(int x, int y) { XDrawPoint(fDisplay, fDrawable, gc, x - xOrigin, y - yOrigin); } void Graphics::drawLine(int x1, int y1, int x2, int y2) { XDrawLine(fDisplay, fDrawable, gc, x1 - xOrigin, y1 - yOrigin, x2 - xOrigin, y2 - yOrigin); } void Graphics::drawLines(XPoint *points, int n, int mode) { int n1 = (mode == CoordModeOrigin) ? n : 1; for (int i = 0; i < n1; i++) { points[i].x -= xOrigin; points[i].y -= yOrigin; } XDrawLines(fDisplay, fDrawable, gc, points, n, mode); for (int i = 0; i < n1; i++) { points[i].x += xOrigin; points[i].y += yOrigin; } } void Graphics::drawSegments(XSegment *segments, int n) { for (int i = 0; i < n; i++) { segments[i].x1 -= xOrigin; segments[i].y1 -= yOrigin; segments[i].x2 -= xOrigin; segments[i].y2 -= yOrigin; } XDrawSegments(fDisplay, fDrawable, gc, segments, n); for (int i = 0; i < n; i++) { segments[i].x1 += xOrigin; segments[i].y1 += yOrigin; segments[i].x2 += xOrigin; segments[i].y2 += yOrigin; } } void Graphics::drawRect(int x, int y, int width, int height) { XDrawRectangle(fDisplay, fDrawable, gc, x - xOrigin, y - yOrigin, width, height); } void Graphics::drawRects(XRectangle *rects, int n) { for (int i = 0; i < n; i++) { rects[i].x -= xOrigin; rects[i].y -= yOrigin; } XDrawRectangles(fDisplay, fDrawable, gc, rects, n); for (int i = 0; i < n; i++) { rects[i].x += xOrigin; rects[i].y += yOrigin; } } void Graphics::drawArc(int x, int y, int width, int height, int a1, int a2) { XDrawArc(fDisplay, fDrawable, gc, x - xOrigin, y - yOrigin, width, height, a1, a2); } /******************************************************************************/ void Graphics::drawChars(const ustring &s, int x, int y) { if (fFont != null && s != null) { cstring cs(s); fFont->drawGlyphs(*this, x, y, cs.c_str(), cs.c_str_len()); } } void Graphics::drawChars(const char *data, int offset, int len, int x, int y) { if (fFont != null) fFont->drawGlyphs(*this, x, y, data + offset, len); } void Graphics::drawString(int x, int y, char const * str) { drawChars(str, 0, strlen(str), x, y); } void Graphics::drawStringEllipsis(int x, int y, const char *str, int maxWidth) { int const len(strlen(str)); int const w = (fFont != null) ? fFont->textWidth(str, len) : 0; if (fFont == null || w <= maxWidth) { drawChars(str, 0, len, x, y); } else { int maxW = 0; if (!showEllipsis) maxW = (maxWidth); else maxW = (maxWidth - fFont->textWidth("...", 3)); int l(0), w(0); int sl(0), sw(0); #ifdef CONFIG_I18N if (multiByte) mblen(NULL, 0); #endif if (maxW > 0) { while (l < len) { int nc, wc; #ifdef CONFIG_I18N if (multiByte) { nc = mblen(str + l, len - l); if (nc < 1) { // bad things l++; continue; } wc = fFont->textWidth(str + l, nc); } else #endif { nc = 1; wc = fFont->textWidth(str + l, 1); } if (w + wc < maxW) { if (1 == nc && isspace (str[l])) { sl+= nc; sw+= wc; } else { sl = sw = 0; } l+= nc; w+= wc; } else break; } } l -= sl; w -= sw; if (l > 0) drawChars(str, 0, l, x, y); if (showEllipsis) { if (l < len) drawChars("...", 0, 3, x + w, y); } } } void Graphics::drawStringEllipsis(int x, int y, const ustring &str, int maxWidth) { cstring cs(str); return drawStringEllipsis(x, y, cs.c_str(), maxWidth); } void Graphics::drawCharUnderline(int x, int y, const char *str, int charPos) { /// TODO #warning "FIXME: don't mess with multibyte here, use a wide char" int left = 0; //fFont ? fFont->textWidth(str, charPos) : 0; int right = 0; // fFont ? fFont->textWidth(str, charPos + 1) - 1 : 0; int len = strlen(str); int c = 0, cp = 0; #ifdef CONFIG_I18N if (multiByte) mblen(NULL, 0); #endif while (c <= len && cp <= charPos + 1) { if (charPos == cp) { left = (fFont != null) ? fFont->textWidth(str, c) : 0; // msg("l: %d %d %d %d %d", c, cp, charPos, left, right); } else if (charPos + 1 == cp) { right = (fFont != null) ? fFont->textWidth(str, c) - 1: 0; // msg("l: %d %d %d %d %d", c, cp, charPos, left, right); break; } if (c >= len || str[c] == '\0') break; #ifdef CONFIG_I18N if (multiByte) { int nc = mblen(str + c, len - c); if (nc < 1) { // bad things c++; cp++; } else { c += nc; cp += nc; } } else #endif { c++; cp++; } } // msg("%d %d %d %d %d", c, cp, charPos, left, right); if (left < right) drawLine(x + left, y + 2, x + right, y + 2); } void Graphics::drawCharUnderline(int x, int y, const ustring &str, int charPos) { cstring cs(str); return drawCharUnderline(x, y, cs.c_str(), charPos); } void Graphics::drawStringMultiline(int x, int y, const char *str) { unsigned const tx(x + fFont->multilineTabPos(str)); for (const char * end(strchr(str, '\n')); end; str = end + 1, end = strchr(str, '\n')) { int const len(end - str); const char * tab((const char *) memchr(str, '\t', len)); if (tab) { drawChars(str, 0, tab - str, x, y); drawChars(tab + 1, 0, end - tab - 1, tx, y); } else drawChars(str, 0, end - str, x, y); y+= fFont->height(); } const char * tab(strchr(str, '\t')); if (tab) { drawChars(str, 0, tab - str, x, y); drawChars(tab + 1, 0, strlen(tab + 1), tx, y); } else drawChars(str, 0, strlen(str), x, y); } void Graphics::drawStringMultiline(int x, int y, const ustring &str) { cstring cs(str); return drawStringMultiline(x, y, cs.c_str()); } #if 0 struct YRotated { struct R90 { static int xOffset(YFont const * font) { return -font->descent(); } static int yOffset(YFont const * /*font*/) { return 0; } template static T width(T const & /*w*/, T const & h) { return h; } template static T height(T const & w, T const & /*h*/) { return w; } static void rotate(XImage * src, XImage * dst) { for (int sy = src->height - 1, dx = 0; sy >= 0; --sy, ++dx) for (int sx = src->width - 1, &dy = sx; sx >= 0; --sx) XPutPixel(dst, dx, dy, XGetPixel(src, sx, sy)); } }; struct R270 { static int xOffset(YFont const * font) { return -font->descent(); } static int yOffset(YFont const * /*font*/) { return 0; } template static T width(T const & /*w*/, T const & h) { return h; } template static T height(T const & w, T const & /*h*/) { return w; } static void rotate(XImage * src, XImage * dst) { for (int sy = src->height - 1, &dx = sy; sy >= 0; --sy) for (int sx = src->width - 1, dy = 0; sx >= 0; --sx, ++dy) XPutPixel(dst, dx, dy, XGetPixel(src, sx, sy)); } }; }; #endif /******************************************************************************/ void Graphics::fillRect(int x, int y, int width, int height) { XFillRectangle(fDisplay, fDrawable, gc, x - xOrigin, y - yOrigin, width, height); } void Graphics::fillRects(XRectangle *rects, int n) { for (int i = 0; i < n; i++) { rects[i].x -= xOrigin; rects[i].y -= yOrigin; } XFillRectangles(fDisplay, fDrawable, gc, rects, n); for (int i = 0; i < n; i++) { rects[i].x += xOrigin; rects[i].y += yOrigin; } } void Graphics::fillPolygon(XPoint *points, int const n, int const shape, int const mode) { int n1 = (mode == CoordModeOrigin) ? n : 1; for (int i = 0; i < n1; i++) { points[i].x -= xOrigin; points[i].y -= yOrigin; } XFillPolygon(fDisplay, fDrawable, gc, points, n, shape, mode); for (int i = 0; i < n1; i++) { points[i].x += xOrigin; points[i].y += yOrigin; } } void Graphics::fillArc(int x, int y, int width, int height, int a1, int a2) { XFillArc(fDisplay, fDrawable, gc, x - xOrigin, y - yOrigin, width, height, a1, a2); } /******************************************************************************/ void Graphics::setColor(YColor * aColor) { fColor = aColor; XSetForeground(fDisplay, gc, fColor->pixel()); } void Graphics::setColorPixel(unsigned long pixel) { XSetForeground(fDisplay, gc, pixel); } void Graphics::setFont(ref aFont) { fFont = aFont; } void Graphics::setLineWidth(int width) { XGCValues gcv; gcv.line_width = width; XChangeGC(fDisplay, gc, GCLineWidth, &gcv); } void Graphics::setPenStyle(bool dotLine) { XGCValues gcv; if (dotLine) { char c = 1; gcv.line_style = LineOnOffDash; XSetDashes(fDisplay, gc, 0, &c, 1); } else { gcv.line_style = LineSolid; } XChangeGC(fDisplay, gc, GCLineStyle, &gcv); } void Graphics::setFunction(int function) { XSetFunction(fDisplay, gc, function); } /******************************************************************************/ void Graphics::drawImage(ref pix, int const x, int const y) { pix->draw(*this, x, y); } void Graphics::drawImage(ref pix, int x, int y, int w, int h, int dx, int dy) { pix->draw(*this, x, y, w, h, dx, dy); } #if 0 void Graphics::drawIconImage(const ref &image, int const x, int const y) { #ifdef CONFIG_ANTIALIASING int dx = x; int dy = y; int dw = image->width(); int dh = image->height(); if (dx < xorigin()) { dw -= xorigin() - dx; dx = xorigin(); } if (dy < yorigin()) { dh -= yorigin() - dy; dy = yorigin(); } if (dx + dw > xorigin() + rWidth) { dw = xorigin() + rWidth - dx; } if (dy + dh > yorigin() + rHeight) { dh = yorigin() + rHeight - dy; } MSG(("drawImage %d %d %d %d %dx%d | %d %d | %d %d | %d %d | %d %d", x, y, dx, dy, dw, dh, xorigin(), yorigin(), x, y, dx - x, dy - y, dx - xOrigin, dy - yOrigin)); if (dw <= 0 || dh <= 0) return; YPixbuf bg(fDrawable, None, rWidth, rHeight, dw, dh, dx - xOrigin, dy - yOrigin); bg.copyArea(*image, dx - x, dy - y, dw, dh, 0, 0); bg.copyToDrawable(fDrawable, gc, 0, 0, dw, dh, dx - xOrigin, dy - yOrigin); #else drawPixmap(image, x, y); #endif } #endif void Graphics::drawPixmap(ref pix, int const x, int const y) { if (pix->mask()) drawClippedPixmap(pix->pixmap(), pix->mask(), 0, 0, pix->width(), pix->height(), x, y); else XCopyArea(fDisplay, pix->pixmap(), fDrawable, gc, 0, 0, pix->width(), pix->height(), x - xOrigin, y - yOrigin); } void Graphics::drawMask(ref pix, int const x, int const y) { if (pix->mask()) XCopyArea(fDisplay, pix->mask(), fDrawable, gc, 0, 0, pix->width(), pix->height(), x - xOrigin, y - yOrigin); } void Graphics::drawClippedPixmap(Pixmap pix, Pixmap clip, int x, int y, int w, int h, int toX, int toY) { static GC clipPixmapGC = None; XGCValues gcv; if (clipPixmapGC == None) { gcv.graphics_exposures = False; clipPixmapGC = XCreateGC(xapp->display(), desktop->handle(), GCGraphicsExposures, &gcv); } gcv.clip_mask = clip; gcv.clip_x_origin = toX - xOrigin; gcv.clip_y_origin = toY - yOrigin; XChangeGC(fDisplay, clipPixmapGC, GCClipMask|GCClipXOrigin|GCClipYOrigin, &gcv); XCopyArea(fDisplay, pix, fDrawable, clipPixmapGC, x, y, w, h, toX - xOrigin, toY - yOrigin); gcv.clip_mask = None; XChangeGC(fDisplay, clipPixmapGC, GCClipMask, &gcv); } void Graphics::compositeImage(ref img, int const sx, int const sy, int w, int h, int dx, int dy) { if (img != null) { int rx = dx; int ry = dy; int rw = w; int rh = h; #if 0 if (rx < xOrigin) { rw -= xOrigin - rx; rx = xOrigin; } if (ry < yOrigin) { rh -= yOrigin - ry; ry = yOrigin; } if (rx + rw > xOrigin + rWidth) { rw = xOrigin + rWidth - rx; } if (ry + rh > yOrigin + rHeight) { rh = yOrigin + rHeight - ry; } #endif #if 0 msg("drawImage %d %d %d %d %dx%d | %d %d | %d %d | %d %d | %d %d", sx, sy, dx, dy, dw, dh, xorigin(), yorigin(), sx, sy, dx - x, dy - y, dx - xOrigin, dy - yOrigin); #endif if (rw <= 0 || rh <= 0) return; //msg("call composite %d %d %d %d | %d %d %d %d", dx, dy, dw, dh, x, y, xOrigin, yOrigin); img->composite(*this, sx, sy, rw, rh, rx, ry); } } /******************************************************************************/ void Graphics::draw3DRect(int x, int y, int w, int h, bool raised) { YColor *back(color()); YColor *bright(back->brighter()); YColor *dark(back->darker()); YColor *t(raised ? bright : dark); YColor *b(raised ? dark : bright); setColor(t); drawLine(x, y, x + w, y); drawLine(x, y, x, y + h); setColor(b); drawLine(x, y + h, x + w, y + h); drawLine(x + w, y, x + w, y + h); setColor(back); drawPoint(x + w, y); drawPoint(x, y + h); } void Graphics::drawBorderW(int x, int y, int w, int h, bool raised) { YColor *back(color()); YColor *bright(back->brighter()); YColor *dark(back->darker()); if (raised) { setColor(bright); drawLine(x, y, x + w - 1, y); drawLine(x, y, x, y + h - 1); setColor(YColor::black); drawLine(x, y + h, x + w, y + h); drawLine(x + w, y, x + w, y + h); setColor(dark); drawLine(x + 1, y + h - 1, x + w - 1, y + h - 1); drawLine(x + w - 1, y + 1, x + w - 1, y + h - 1); } else { setColor(bright); drawLine(x + 1, y + h, x + w, y + h); drawLine(x + w, y + 1, x + w, y + h); setColor(YColor::black); drawLine(x, y, x + w, y); drawLine(x, y, x, y + h); setColor(dark); drawLine(x + 1, y + 1, x + w - 1, y + 1); drawLine(x + 1, y + 1, x + 1, y + h - 1); } setColor(back); } // doesn't move... needs two pixels on all sides for up and down // position. void Graphics::drawBorderM(int x, int y, int w, int h, bool raised) { YColor *back(color()); YColor *bright(back->brighter()); YColor *dark(back->darker()); if (raised) { setColor(bright); drawLine(x + 1, y + 1, x + w, y + 1); drawLine(x + 1, y + 1, x + 1, y + h); drawLine(x + 1, y + h, x + w, y + h); drawLine(x + w, y + 1, x + w, y + h); setColor(dark); drawLine(x, y, x + w - 1, y); drawLine(x, y, x, y + h); drawLine(x, y + h - 1, x + w - 1, y + h - 1); drawLine(x + w - 1, y, x + w - 1, y + h - 1); /// how to get the color of the taskbar?? setColor(back); drawPoint(x, y + h); drawPoint(x + w, y); } else { setColor(dark); drawLine(x, y, x + w - 1, y); drawLine(x, y, x, y + h - 1); setColor(bright); drawLine(x + 1, y + h, x + w, y + h); drawLine(x + w, y + 1, x + w, y + h); setColor(back); drawRect(x + 1, y + 1, x + w - 2, y + h - 2); //drawLine(x + 1, y + 1, x + w - 1, y + 1); //drawLine(x + 1, y + 1, x + 1, y + h - 1); //drawLine(x, y + h - 1, x + w - 1, y + h - 1); //drawLine(x + w - 1, y, x + w - 1, y + h - 1); /// how to get the color of the taskbar?? drawPoint(x, y + h); drawPoint(x + w, y); } } void Graphics::drawBorderG(int x, int y, int w, int h, bool raised) { YColor *back(color()); YColor *bright(back->brighter()); YColor *dark(back->darker()); if (raised) { setColor(bright); drawLine(x, y, x + w - 1, y); drawLine(x, y, x, y + h - 1); setColor(dark); drawLine(x, y + h, x + w, y + h); drawLine(x + w, y, x + w, y + h); setColor(YColor::black); drawLine(x + 1, y + h - 1, x + w - 1, y + h - 1); drawLine(x + w - 1, y + 1, x + w - 1, y + h - 1); } else { setColor(bright); drawLine(x + 1, y + h, x + w, y + h); drawLine(x + w, y + 1, x + w, y + h); setColor(YColor::black); drawLine(x, y, x + w, y); drawLine(x, y, x, y + h); setColor(dark); drawLine(x + 1, y + 1, x + w - 1, y + 1); drawLine(x + 1, y + 1, x + 1, y + h - 1); } setColor(back); } void Graphics::drawCenteredPixmap(int x, int y, int w, int h, ref pixmap) { int r = x + w; int b = y + h; int pw = pixmap->width(); int ph = pixmap->height(); drawOutline(x, y, r, b, pw, ph); drawPixmap(pixmap, x + w / 2 - pw / 2, y + h / 2 - ph / 2); } void Graphics::drawOutline(int l, int t, int r, int b, int iw, int ih) { if (l + iw >= r && t + ih >= b) return ; int li = (l + r) / 2 - iw / 2; int ri = (l + r) / 2 + iw / 2; int ti = (t + b) / 2 - ih / 2; int bi = (t + b) / 2 + ih / 2; if (l < li) fillRect(l, t, li - l, b - t); if (ri < r) fillRect(ri, t, r - ri, b - t); if (t < ti) if (li < ri) fillRect(li, t, ri - li, ti - t); if (bi < b) if (li < ri) fillRect(li, bi, ri - li, b - bi); } void Graphics::repHorz(Drawable d, int pw, int ph, int x, int y, int w) { if (d == None) return; while (w > 0) { XCopyArea(fDisplay, d, fDrawable, gc, 0, 0, min(w, pw), ph, x - xOrigin, y - yOrigin); x += pw; w -= pw; } } void Graphics::repVert(Drawable d, int pw, int ph, int x, int y, int h) { if (d == None) return; while (h > 0) { XCopyArea(fDisplay, d, fDrawable, gc, 0, 0, pw, min(h, ph), x - xOrigin, y - yOrigin); y += ph; h -= ph; } } void Graphics::fillPixmap(const ref &pixmap, int x, int y, int w, int h, int px, int py) { int const pw(pixmap->width()); int const ph(pixmap->height()); px%= pw; const int pww(px ? pw - px : 0); py%= ph; const int phh(py ? ph - py : 0); if (px) { if (py) XCopyArea(fDisplay, pixmap->pixmap(), fDrawable, gc, px, py, pww, phh, x - xOrigin, y - yOrigin); for (int yy(y + phh), hh(h - phh); hh > 0; yy += ph, hh -= ph) XCopyArea(fDisplay, pixmap->pixmap(), fDrawable, gc, px, 0, pww, min(hh, ph), x - xOrigin, yy - yOrigin); } for (int xx(x + pww), ww(w - pww); ww > 0; xx+= pw, ww-= pw) { int const www(min(ww, pw)); if (py) XCopyArea(fDisplay, pixmap->pixmap(), fDrawable, gc, 0, py, www, phh, xx - xOrigin, y - yOrigin); for (int yy(y + phh), hh(h - phh); hh > 0; yy += ph, hh -= ph) XCopyArea(fDisplay, pixmap->pixmap(), fDrawable, gc, 0, 0, www, min(hh, ph), xx - xOrigin, yy - yOrigin); } } void Graphics::drawSurface(YSurface const & surface, int x, int y, int w, int h, int const sx, int const sy, #ifdef CONFIG_GRADIENTS const int sw, const int sh) { if (surface.gradient != null) drawGradient(surface.gradient, x, y, w, h, sx, sy, sw, sh); else #else const int /*sw*/, const int /*sh*/) { #endif if (surface.pixmap != null) fillPixmap(surface.pixmap, x, y, w, h, sx, sy); else if (surface.color) { setColor(surface.color); fillRect(x, y, w, h); } } #ifdef CONFIG_GRADIENTS void Graphics::drawGradient(ref gradient, int const x, int const y, const int w, const int h, int const gx, int const gy, const int gw, const int gh) { ref scaled = gradient->scale(gw, gh); scaled->draw(*this, gx, gy, w, h, x, y); } #endif /******************************************************************************/ void Graphics::drawArrow(YDirection direction, int x, int y, int size, bool pressed) { YColor *nc(color()); YColor *oca = pressed ? nc->darker() : nc->brighter(), *ica = pressed ? YColor::black : nc, *ocb = pressed ? wmLook == lookGtk ? nc : nc->brighter() : nc->darker(), *icb = pressed ? nc->brighter() : YColor::black; XPoint points[3]; short const am(size / 2); short const ah(wmLook == lookGtk || wmLook == lookMotif ? size : size / 2); short const aw(wmLook == lookGtk || wmLook == lookMotif ? size : size - (size & 1)); switch (direction) { case Up: points[0].x = x; points[0].y = y + ah; points[1].x = x + am; points[1].y = y; points[2].x = x + aw; points[2].y = y + ah; break; case Down: points[0].x = x; points[0].y = y; points[1].x = x + am; points[1].y = y + ah; points[2].x = x + aw; points[2].y = y; break; case Left: points[0].x = x + ah; points[0].y = y; points[1].x = x; points[1].y = y + am; points[2].x = x + ah; points[2].y = y + aw; break; case Right: points[0].x = x; points[0].y = y; points[1].x = x + ah; points[1].y = y + am; points[2].x = x; points[2].y = y + aw; break; default: return ; } short const dx0(direction == Up || direction == Down ? 1 : 0); short const dy0(direction == Up || direction == Down ? 0 : 1); short const dx1(direction == Up || direction == Left ? dy0 : -dy0); short const dy1(direction == Up || direction == Left ? dx0 : -dx0); // setWideLines(); // --------------------- render slow, but accurate lines --- // ============================================================= inner bevel === if (wmLook == lookGtk || wmLook == lookMotif) { setColor(ocb); drawLine(points[2].x - dx0 - (size & 1 ? 0 : dx1), points[2].y - (size & 1 ? 0 : dy1) - dy0, points[1].x + 2 * dx1, points[1].y + 2 * dy1); setColor(wmLook == lookMotif ? oca : ica); drawLine(points[0].x + dx0 - (size & 1 ? dx1 : 0), points[0].y + dy0 - (size & 1 ? dy1 : 0), points[1].x + (size & 1 ? dx0 : 0) + (size & 1 ? dx1 : dx1 + dx1), points[1].y + (size & 1 ? dy0 : 0) + (size & 1 ? dy1 : dy1 + dy1)); if ((direction == Up || direction == Left)) setColor(ocb); drawLine(points[0].x + dx0 - dx1, points[0].y + dy0 - dy1, points[2].x - dx0 - dx1, points[2].y - dy0 - dy1); } else if (wmLook == lookWarp3) { drawLine(points[0].x + dx0, points[0].y + dy0, points[1].x + dx0, points[1].y + dy0); drawLine(points[2].x + dx0, points[2].y + dy0, points[1].x + dx0, points[1].y + dy0); } else fillPolygon(points, 3, Convex, CoordModeOrigin); // ============================================================= outer bevel === if (wmLook == lookMotif || wmLook == lookGtk) { setColor(wmLook == lookMotif ? ocb : icb); drawLine(points[2].x, points[2].y, points[1].x, points[1].y); if (wmLook == lookGtk || wmLook == lookMotif) setColor(oca); drawLine(points[0].x, points[0].y, points[1].x, points[1].y); if ((direction == Up || direction == Left)) setColor(wmLook == lookMotif ? ocb : icb); } else drawLines(points, 3, CoordModeOrigin); if (wmLook != lookWarp3) drawLine(points[0].x, points[0].y, points[2].x, points[2].y); // setThinLines(); // ---------- render fast, but possibly inaccurate lines --- setColor(nc); } int Graphics::function() const { XGCValues values; XGetGCValues(fDisplay, gc, GCFunction, &values); return values.function; } void Graphics::setClipRectangles(XRectangle *rect, int count) { XSetClipRectangles(xapp->display(), gc, -xOrigin, -yOrigin, rect, count, Unsorted); #ifdef CONFIG_XFREETYPE XftDrawSetClipRectangles(fDraw, -xOrigin, -yOrigin, rect, count); #endif } void Graphics::setClipMask(Pixmap mask) { XSetClipMask(fDisplay, gc, mask); } void Graphics::resetClip() { XSetClipMask(xapp->display(), gc, None); #ifdef CONFIG_XFREETYPE XftDrawSetClip(fDraw, 0); #endif } /******************************************************************************/ /******************************************************************************/ icewm-1.3.7/src/yconfig.h0000644000076600007660000000763711463274240014240 0ustar develdevel #include "upath.h" #undef XSV #undef XFV #undef XIV #ifdef CFGDEF #define XSV(t,a,b) t a(b); #else #define XSV(t,a,b) extern t a; #endif #ifdef CFGDEF #define XFV(t,a,b,c) \ t a(b); \ t a##Xft = c; #else #define XFV(t,a,b,c) \ extern t a; \ extern t a##Xft; #endif #define XFA(a) a, a##Xft #ifndef NO_CONFIGURE #ifdef CFGDEF #define XIV(t,a,b) t a(b); #else #define XIV(t,a,b) extern t a; #endif #else #ifdef CFGDEF #define XIV(t,a,b) #else #define XIV(t,a,b) static const t a(b); // I hope this can be optimized away #endif #endif #ifndef __YCONFIG_H__ #define __YCONFIG_H__ #if CONFIG_XFREETYPE >= 2 #define FONT(pt) "-*-sans-medium-r-*-*-*-" #pt "-*-*-*-*-*-*" #define BOLDFONT(pt) "-*-sans-bold-r-*-*-*-" #pt "-*-*-*-*-*-*" #define TTFONT(pt) "-*-monospace-medium-r-*-*-*-" #pt "-*-*-*-*-*-*" #define BOLDTTFONT(pt) "-*-monospace-bold-r-*-*-*-" #pt "-*-*-*-*-*-*" #else #ifdef FONTS_ADOBE #define FONT(pt) "-b&h-lucida-medium-r-*-*-*-" #pt "-*-*-*-*-*-*" #define BOLDFONT(pt) "-b&h-lucida-bold-r-*-*-*-" #pt "-*-*-*-*-*-*" #define TTFONT(pt) "-b&h-lucidatypewriter-medium-r-*-*-*-" #pt "-*-*-*-*-*-*" #define BOLDTTFONT(pt) "-b&h-lucidatypewriter-bold-r-*-*-*-" #pt "-*-*-*-*-*-*" #else #define FONT(pt) "-adobe-helvetica-medium-r-*-*-*-" #pt "-*-*-*-*-*-*" #define BOLDFONT(pt) "-adobe-helvetica-bold-r-*-*-*-" #pt "-*-*-*-*-*-*" #define TTFONT(pt) "-adobe-courier-medium-r-*-*-*-" #pt "-*-*-*-*-*-*" #define BOLDTTFONT(pt) "-adobe-courier-bold-r-*-*-*-" #pt "-*-*-*-*-*-*" #endif #endif #define kfShift 1 #define kfCtrl 2 #define kfAlt 4 #define kfMeta 8 #define kfSuper 16 #define kfHyper 32 #define kfAltGr 64 #ifdef GENPREF ///typedef unsigned int KeySym; #endif struct WMKey { KeySym key; unsigned int mod; const char *name; bool initial; }; #ifdef CFGDESC #define OBV(n,v,d) { cfoption::CF_BOOL, n, { v, { 0, 0, 0 }, { 0, false }, { 0 } }, 0, d } #define OIV(n,v,m,M,d) { cfoption::CF_INT, n, { 0, { v, m, M }, { 0, false }, { 0 } }, 0, d } #define OSV(n,v,d) { cfoption::CF_STR, n, { 0, { 0, 0, 0 }, { v, true }, { 0 } }, 0, d } #define OFV(n,v,d) \ { cfoption::CF_STR, n, { 0, { 0, 0, 0 }, { v, true }, { 0 } }, 0, d }, \ { cfoption::CF_STR, n "Xft", { 0, { 0, 0, 0 }, { v##Xft, true }, { 0 } }, 0, d } #define OKV(n,v,d) { cfoption::CF_KEY, n, { 0, { 0, 0, 0 }, { 0, false }, { &v } }, 0, d } #define OKF(n,f,d) { cfoption::CF_STR, n, { NULL, { 0, 0, 0 }, { 0, false }, { 0 } }, &f, d } #define OK0() { cfoption::CF_NONE, 0, { NULL, { 0, 0, 0 }, { 0, false }, { 0 } }, 0, 0 } #else #define OBV(n,v,d) { cfoption::CF_BOOL, n, { v, { 0, 0, 0 }, { 0, false }, { 0 } }, 0 } #define OIV(n,v,m,M,d) { cfoption::CF_INT, n, { 0, { v, m, M }, { 0, false }, { 0 } }, 0 } #define OSV(n,v,d) { cfoption::CF_STR, n, { 0, { 0, 0, 0 }, { v, true }, { 0 } }, 0 } #define OFV(n,v,d) \ { cfoption::CF_STR, n, { 0, { 0, 0, 0 }, { v, true }, { 0 } }, 0 }, \ { cfoption::CF_STR, n "Xft", { 0, { 0, 0, 0 }, { v##Xft, true }, { 0 } }, 0 } #define OKV(n,v,d) { cfoption::CF_KEY, n, { 0, { 0, 0, 0 }, { 0, false }, { &v } }, 0 } #define OKF(n,f,d) { cfoption::CF_STR, n, { NULL, { 0, 0, 0 }, { 0, false }, { 0 } }, &f } #define OK0() { cfoption::CF_NONE, 0, { NULL, { 0, 0, 0 }, { 0, false }, { 0 } }, 0 } #endif struct cfoption { enum { CF_BOOL, CF_INT, CF_STR, CF_KEY, CF_NONE } type; const char *name; struct { bool *bool_value; struct { int *int_value; int min, max; } i; struct { const char **string_value; bool initial; } s; struct { class WMKey *key_value; } k; } v; void (*notify)(const char *name, const char *value, bool append); #ifdef CFGDESC const char *description; #endif }; class YConfig { public: static void loadConfigFile(cfoption *options, upath fileName); static void freeConfig(cfoption *options); static char *getArgument(char **dest, char *p, bool comma); static bool findLoadConfigFile(struct cfoption *options, upath name); }; #endif icewm-1.3.7/src/default.h0000644000076600007660000012141711463274240014217 0ustar develdevel#ifndef __DEFAULT_H #define __DEFAULT_H #include "yconfig.h" /************************************************************************************************************************************************************/ XIV(int, focusMode, 1) XIV(bool, clickFocus, true) XIV(bool, focusOnAppRaise, false) XIV(bool, requestFocusOnAppRaise, true) XIV(bool, raiseOnFocus, true) XIV(bool, focusOnClickClient, true) XIV(bool, raiseOnClickClient, true) XIV(bool, raiseOnClickButton, true) XIV(bool, raiseOnClickFrame, true) XIV(bool, raiseOnClickTitleBar, true) XIV(bool, lowerOnClickWhenRaised, false) XIV(bool, passFirstClickToClient, true) XIV(bool, focusOnMap, true) XIV(bool, mapInactiveOnTop, true) XIV(bool, focusChangesWorkspace, false) XIV(bool, focusOnMapTransient, false) XIV(bool, focusOnMapTransientActive, true) XIV(bool, focusRootWindow, false) XIV(bool, pointerColormap, true) XIV(bool, sizeMaximized, false) XIV(bool, showMoveSizeStatus, true) XIV(bool, workspaceSwitchStatus, true) XIV(bool, beepOnNewMail, false) XIV(bool, warpPointer, false) XIV(bool, warpPointerOnEdgeSwitch, false) XIV(bool, opaqueMove, true) XIV(bool, opaqueResize, true) XIV(bool, hideTitleBarWhenMaximized, false) XSV(const char *, winMenuItems, "rmsnxfhualyticw") #ifdef CONFIG_TASKBAR XIV(bool, showTaskBar, true) XIV(bool, taskBarAtTop, false) XIV(bool, taskBarKeepBelow, false) XIV(bool, taskBarShowClock, true) XIV(bool, taskBarShowApm, false) XIV(bool, taskBarShowApmTime, true) // mschy XIV(bool, taskBarShowApmGraph, true) // hatred XIV(bool, taskBarShowMailboxStatus, true) XIV(bool, taskBarShowStartMenu, true) XIV(bool, taskBarShowWindowListMenu, true) XIV(bool, taskBarShowWorkspaces, true) XIV(bool, taskBarShowWindows, true) XIV(bool, taskBarShowShowDesktopButton, true) XIV(int, taskBarButtonWidthDivisor, 3) #ifdef CONFIG_TRAY XIV(bool, taskBarShowTray, true) XIV(bool, trayShowAllWindows, true) #endif XIV(bool, taskBarShowTransientWindows, true) XIV(bool, taskBarShowAllWindows, false) XIV(bool, taskBarShowWindowIcons, true) XIV(bool, taskBarAutoHide, false) XIV(bool, taskBarFullscreenAutoShow, true) XIV(bool, taskBarDoubleHeight, false) XIV(bool, taskBarWorkspacesLeft, true) XIV(bool, pagerShowPreview, false) XIV(bool, pagerShowWindowIcons, true) XIV(bool, pagerShowMinimized, true) XIV(bool, pagerShowBorders, true) XIV(bool, pagerShowNumbers, true) XIV(bool, taskBarShowCPUStatus, true) XIV(bool, cpustatusShowRamUsage, true) XIV(bool, cpustatusShowSwapUsage, true) XIV(bool, cpustatusShowAcpiTemp, true) XIV(bool, cpustatusShowCpuFreq, true) XIV(bool, taskBarShowNetStatus, true) XIV(bool, taskBarLaunchOnSingleClick, true) XIV(bool, taskBarShowCollapseButton, false) #endif XIV(bool, minimizeToDesktop, false) XIV(bool, miniIconsPlaceHorizontal, false) XIV(bool, miniIconsRightToLeft, false) XIV(bool, miniIconsBottomToTop, false) XIV(bool, manualPlacement, false) XIV(bool, smartPlacement, true) XIV(bool, centerLarge, false) XIV(bool, centerTransientsOnOwner, true) XIV(bool, autoRaise, false) XIV(bool, delayPointerFocus, true) XIV(bool, useMouseWheel, false) XIV(bool, quickSwitch, true) XIV(bool, quickSwitchToMinimized, true) XIV(bool, quickSwitchToHidden, true) XIV(bool, quickSwitchToAllWorkspaces, false) XIV(bool, quickSwitchGroupWorkspaces, true) XIV(bool, quickSwitchAllIcons, true) XIV(bool, quickSwitchTextFirst, false) XIV(bool, quickSwitchVertical, true) XIV(bool, quickSwitchSmallWindow, false) XIV(bool, quickSwitchMaxWidth, false) XIV(bool, quickSwitchHugeIcon, false) XIV(bool, quickSwitchFillSelection, false) XIV(bool, countMailMessages, false) XIV(bool, strongPointerFocus, false) XIV(bool, snapMove, true) XIV(bool, edgeHorzWorkspaceSwitching, false) XIV(bool, edgeVertWorkspaceSwitching, false) XIV(bool, edgeContWorkspaceSwitching, true) XIV(bool, limitSize, true) XIV(bool, limitPosition, true) XIV(bool, limitByDockLayer, false) XIV(bool, considerHorizBorder, false) XIV(bool, considerVertBorder, false) XIV(bool, centerMaximizedWindows, false) XIV(bool, win95keys, true) XIV(bool, autoReloadMenus, true) XIV(bool, clientMouseActions, true) XIV(bool, showPrograms, false) XIV(bool, showSettingsMenu, true) XIV(bool, showFocusModeMenu, true) XIV(bool, showThemesMenu, true) XIV(bool, showLogoutMenu, true) XIV(bool, showLogoutSubMenu, true) XIV(bool, showAbout, true) XIV(bool, showRun, true) XIV(bool, showWindowList, true) XIV(bool, showHelp, true) XIV(bool, allowFullscreen, true) XIV(bool, enableAddressBar, true); XIV(bool, showAddressBar, true) XIV(bool, confirmLogout, true) #ifdef CONFIG_SHAPED_DECORATION XIV(bool, protectClientWindow, true) #endif XIV(int, MenuMaximalWidth, 0) XIV(int, EdgeResistance, 32) XIV(int, snapDistance, 8) XIV(int, pointerFocusDelay, 200) XIV(int, autoRaiseDelay, 400) XIV(int, autoHideDelay, 300) XIV(int, autoShowDelay, 500) XIV(int, edgeSwitchDelay, 600) XIV(int, scrollBarStartDelay, 500) XIV(int, scrollBarDelay, 30) XIV(int, workspaceStatusTime, 2500) XIV(int, useRootButtons, 255) // bitmask=all XIV(int, buttonRaiseMask, 1) XIV(int, rootWinMenuButton, 0) XIV(int, rootWinListButton, 2) XIV(int, rootMenuButton, 3) XIV(int, titleMaximizeButton, 1) XIV(int, titleRollupButton, 2) XIV(int, msgBoxDefaultAction, 0) XIV(int, mailCheckDelay, 30) XIV(int, taskBarCPUSamples, 20) XIV(int, taskBarApmGraphWidth, 10) // hatred XIV(int, focusRequestFlashTime, 0) XIV(int, focusRequestFlashInterval, 250) XIV(int, nestedThemeMenuMinNumber, 15) XIV(int, batteryPollingPeriod, 10) #ifdef CONFIG_APPLET_APM XSV(const char *, acpiIgnoreBatteries, 0) #endif XSV(const char *, mailBoxPath, 0) XSV(const char *, mailCommand, "xterm -name pine -title PINE -e pine") XSV(const char *, mailClassHint, "pine.XTerm") XSV(const char *, newMailCommand, 0) XSV(const char *, lockCommand, 0) XSV(const char *, clockCommand, "xclock -name icewm -title Clock") XSV(const char *, clockClassHint, "icewm.XClock") XSV(const char *, runDlgCommand, 0) XSV(const char *, openCommand, 0) XSV(const char *, terminalCommand, "xterm") XSV(const char *, logoutCommand, 0) XSV(const char *, logoutCancelCommand, 0) XSV(const char *, shutdownCommand, 0) XSV(const char *, rebootCommand, 0) XIV(int, taskBarCPUDelay, 500) XIV(int, taskBarNetSamples, 20) XIV(int, taskBarNetDelay, 500) XSV(const char *, cpuCommand, "xterm -name top -title Process\\ Status -e top") XSV(const char *, cpuClassHint, "top.XTerm") XSV(const char *, netCommand, "xterm -name netstat -title 'Network Status' -e netstat -c") XSV(const char *, netClassHint, "netstat.XTerm") XSV(const char *, netDevice, "ppp0 eth0") XSV(const char *, addressBarCommand, 0) #ifdef CONFIG_I18N XSV(const char *, fmtTime, "%X") XSV(const char *, fmtTimeAlt, NULL) XSV(const char *, fmtDate, "%c") #else XSV(const char *, fmtTime, "%H:%M:%S") XSV(const char *, fmtTimeAlt, NULL) XSV(const char *, fmtDate, "%Y-%m-%d %H:%M:%S %z %B %A") #endif #if defined(CFGDEF) && !defined(NO_CONFIGURE) cfoption icewm_preferences[] = { OBV("ClickToFocus", &clickFocus, "Focus windows by clicking"), OBV("FocusOnAppRaise", &focusOnAppRaise, "Focus windows when application requests to raise"), OBV("RequestFocusOnAppRaise", &requestFocusOnAppRaise, "Request focus (flashing in taskbar) when application requests raise"), OBV("RaiseOnFocus", &raiseOnFocus, "Raise windows when focused"), OBV("FocusOnClickClient", &focusOnClickClient, "Focus window when client area clicked"), OBV("RaiseOnClickClient", &raiseOnClickClient, "Raise window when client area clicked"), OBV("RaiseOnClickTitleBar", &raiseOnClickTitleBar, "Raise window when title bar is clicked"), OBV("RaiseOnClickButton", &raiseOnClickButton, "Raise window when frame button is clicked"), OBV("RaiseOnClickFrame", &raiseOnClickFrame, "Raise window when frame border is clicked"), OBV("LowerOnClickWhenRaised", &lowerOnClickWhenRaised, "Lower the active window when clicked again"), OBV("PassFirstClickToClient", &passFirstClickToClient, "Pass focusing click on client area to client"), OBV("FocusChangesWorkspace", &focusChangesWorkspace, "Change to the workspace of newly focused windows"), OBV("FocusOnMap", &focusOnMap, "Focus normal window when initially mapped"), OBV("FocusOnMapTransient", &focusOnMapTransient, "Focus dialog window when initially mapped"), OBV("FocusOnMapTransientActive", &focusOnMapTransientActive, "Focus dialog window when initially mapped only if parent frame focused"), OBV("MapInactiveOnTop", &mapInactiveOnTop, "Put new windows on top even if not focusing them"), OBV("PointerColormap", &pointerColormap, "Colormap focus follows pointer"), OBV("DontRotateMenuPointer", &dontRotateMenuPointer, "Don't rotate the cursor for popup menus"), OBV("LimitSize", &limitSize, "Limit size of windows to screen"), OBV("LimitPosition", &limitPosition, "Limit position of windows to screen"), OBV("LimitByDockLayer", &limitByDockLayer, "Let the Dock layer limit the workspace (incompatible with GNOME Panel)"), OBV("ConsiderHBorder", &considerHorizBorder, "Consider border frames when maximizing horizontally"), OBV("ConsiderVBorder", &considerVertBorder, "Consider border frames when maximizing vertically"), OBV("CenterMaximizedWindows", ¢erMaximizedWindows, "Center maximized windows which can't fit the screen (like terminals)"), OBV("SizeMaximized", &sizeMaximized, "Maximized windows can be resized"), OBV("ShowMoveSizeStatus", &showMoveSizeStatus, "Show position status window during move/resize"), OBV("ShowWorkspaceStatus", &workspaceSwitchStatus, "Show name of current workspace while switching"), OBV("MinimizeToDesktop", &minimizeToDesktop, "Display mini-icons on desktop for minimized windows"), OBV("MiniIconsPlaceHorizontal", &miniIconsPlaceHorizontal, "Place the mini-icons horizontal instead of vertical"), OBV("MiniIconsRightToLeft", &miniIconsRightToLeft, "Place new mini-icons from right to left"), OBV("MiniIconsBottomToTop", &miniIconsBottomToTop, "Place new mini-icons from bottom to top"), OBV("StrongPointerFocus", &strongPointerFocus, "Always maintain focus under mouse window (makes some keyboard support non-functional or unreliable"), OBV("OpaqueMove", &opaqueMove, "Opaque window move"), OBV("OpaqueResize", &opaqueResize, "Opaque window resize"), OBV("ManualPlacement", &manualPlacement, "Windows initially placed manually by user"), OBV("SmartPlacement", &smartPlacement, "Smart window placement (minimal overlap)"), OBV("HideTitleBarWhenMaximized", &hideTitleBarWhenMaximized, "Hide title bar when maximized"), OBV("CenterLarge", ¢erLarge, "Center large windows"), OBV("CenterTransientsOnOwner", ¢erTransientsOnOwner, "Center dialogs on owner window"), OBV("MenuMouseTracking", &menuMouseTracking, "Menus track mouse even with no mouse buttons held"), OBV("AutoRaise", &autoRaise, "Auto raise windows after delay"), OBV("DelayPointerFocus", &delayPointerFocus, "Delay pointer focusing when mouse moves"), OBV("Win95Keys", &win95keys, "Support win95 keyboard keys (Penguin/Meta/Win_L,R shows menu)"), OBV("ModSuperIsCtrlAlt", &modSuperIsCtrlAlt, "Treat Super/Win modifier as Ctrl+Alt"), OBV("UseMouseWheel", &useMouseWheel, "Support mouse wheel"), OBV("ShowPopupsAbovePointer", &showPopupsAbovePointer, "Show popup menus above mouse pointer"), OBV("ReplayMenuCancelClick", &replayMenuCancelClick, "Send the clicks outside menus to target window"), OBV("QuickSwitch", &quickSwitch, "Alt+Tab window switching"), OBV("QuickSwitchToMinimized", &quickSwitchToMinimized, "Alt+Tab to minimized windows"), OBV("QuickSwitchToHidden", &quickSwitchToHidden, "Alt+Tab to hidden windows"), OBV("QuickSwitchToAllWorkspaces", &quickSwitchToAllWorkspaces, "Alt+Tab to windows on other workspaces"), OBV("QuickSwitchGroupWorkspaces", &quickSwitchGroupWorkspaces, "Alt+Tab: group windows on current workspace"), OBV("QuickSwitchAllIcons", &quickSwitchAllIcons, "Show all reachable icons when quick switching"), OBV("QuickSwitchTextFirst", &quickSwitchTextFirst, "Show the window title above (all reachable) icons"), OBV("QuickSwitchSmallWindow", &quickSwitchSmallWindow, "Attempt to create a small QuickSwitch window (1/3 instead of 3/5 of screen width)"), OBV("QuickSwitchMaxWidth", &quickSwitchMaxWidth, "Go trough all window titles and choose width of the longest one"), OBV("QuickSwitchVertical", &quickSwitchVertical, "Place the icons and titles vertical instead of horizontal"), OBV("QuickSwitchHugeIcon", &quickSwitchHugeIcon, "Show the huge (48x48) of the window icon for the active window"), OBV("QuickSwitchFillSelection", &quickSwitchFillSelection, "Fill the rectangle highlighting the current icon"), OBV("GrabRootWindow", &grabRootWindow, "Manage root window (EXPERIMENTAL - normally enabled!)"), OBV("SnapMove", &snapMove, "Snap to nearest screen edge/window when moving windows"), OBV("EdgeSwitch", &edgeHorzWorkspaceSwitching, "Workspace switches by moving mouse to left/right screen edge"), OBV("HorizontalEdgeSwitch", &edgeHorzWorkspaceSwitching, "Workspace switches by moving mouse to left/right screen edge"), OBV("VerticalEdgeSwitch", &edgeVertWorkspaceSwitching, "Workspace switches by moving mouse to top/bottom screen edge"), OBV("ContinuousEdgeSwitch", &edgeContWorkspaceSwitching, "Workspace switches continuously when moving mouse to screen edge"), OBV("AutoReloadMenus", &autoReloadMenus, "Reload menu files automatically"), #ifdef CONFIG_TASKBAR OBV("ShowTaskBar", &showTaskBar, "Show task bar"), OBV("TaskBarAtTop", &taskBarAtTop, "Task bar at top of the screen"), OBV("TaskBarKeepBelow", &taskBarKeepBelow, "Keep the task bar below regular windows"), OBV("TaskBarAutoHide", &taskBarAutoHide, "Auto hide task bar after delay"), OBV("TaskBarFullscreenAutoShow", &taskBarFullscreenAutoShow, "Auto show task bar when fullscreen window active"), OBV("TaskBarShowClock", &taskBarShowClock, "Show clock on task bar"), OBV("TaskBarShowAPMStatus", &taskBarShowApm, "Show APM/ACPI/Battery/Power status monitor on task bar"), OBV("TaskBarShowAPMTime", &taskBarShowApmTime, "Show APM status on task bar in time-format"), // mschy OBV("TaskBarShowAPMGraph", &taskBarShowApmGraph, "Show APM status in graph mode"), // hatred OBV("TaskBarShowMailboxStatus", &taskBarShowMailboxStatus, "Show mailbox status on task bar"), OBV("TaskBarMailboxStatusBeepOnNewMail", &beepOnNewMail, "Beep when new mail arrives"), OBV("TaskBarMailboxStatusCountMessages", &countMailMessages, "Count messages in mailbox"), OBV("TaskBarShowWorkspaces", &taskBarShowWorkspaces, "Show workspace switching buttons on task bar"), OBV("TaskBarShowWindows", &taskBarShowWindows, "Show windows on the taskbar"), OBV("TaskBarShowShowDesktopButton", &taskBarShowShowDesktopButton, "Show 'show desktop' button on taskbar"), OBV("ShowEllipsis", &showEllipsis, "Show Ellipsis in taskbar items"), #ifdef CONFIG_TRAY OBV("TaskBarShowTray", &taskBarShowTray, "Show windows in the tray"), OBV("TrayShowAllWindows", &trayShowAllWindows, "Show windows from all workspaces on tray"), #endif OBV("TaskBarShowTransientWindows", &taskBarShowTransientWindows, "Show transient (dialogs, ...) windows on task bar"), OBV("TaskBarShowAllWindows", &taskBarShowAllWindows, "Show windows from all workspaces on task bar"), OBV("TaskBarShowWindowIcons", &taskBarShowWindowIcons, "Show icons of windows on the task bar"), OBV("TaskBarShowStartMenu", &taskBarShowStartMenu, "Show 'Start' menu on task bar"), OBV("TaskBarShowWindowListMenu", &taskBarShowWindowListMenu, "Show 'window list' menu on task bar"), OBV("TaskBarShowCPUStatus", &taskBarShowCPUStatus, "Show CPU status on task bar (Linux & Solaris)"), OBV("CPUStatusShowRamUsage", &cpustatusShowRamUsage, "Show RAM usage in CPU status tool tip"), OBV("CPUStatusShowSwapUsage", &cpustatusShowSwapUsage, "Show swap usage in CPU status tool tip"), OBV("CPUStatusShowAcpiTemp", &cpustatusShowAcpiTemp, "Show ACPI temperature in CPU status tool tip"), OBV("CPUStatusShowCpuFreq", &cpustatusShowCpuFreq, "Show CPU frequency in CPU status tool tip"), OBV("TaskBarShowNetStatus", &taskBarShowNetStatus, "Show network status on task bar (Linux only)"), OBV("TaskBarShowCollapseButton", &taskBarShowCollapseButton, "Show a button to collapse the taskbar"), OBV("TaskBarDoubleHeight", &taskBarDoubleHeight, "Use double-height task bar"), OBV("TaskBarWorkspacesLeft", &taskBarWorkspacesLeft, "Place workspace pager on left, not right"), OBV("PagerShowPreview", &pagerShowPreview, "Show a mini desktop preview on each workspace button"), OBV("PagerShowWindowIcons", &pagerShowWindowIcons, "Draw window icons inside large enough preview windows on pager (if PagerShowPreview=1)"), OBV("PagerShowMinimized", &pagerShowMinimized, "Draw even minimized windows as unfilled rectangles (if PagerShowPreview=1)"), OBV("PagerShowBorders", &pagerShowBorders, "Draw border around workspace buttons (if PagerShowPreview=1)"), OBV("PagerShowNumbers", &pagerShowNumbers, "Show number of workspace on workspace button (if PagerShowPreview=1)"), OBV("TaskBarLaunchOnSingleClick", &taskBarLaunchOnSingleClick, "Execute taskbar applet commands (like MailCommand, ClockCommand, ...) on single click"), #endif // OBV("WarpPointer", &warpPointer, "Move mouse when doing focusing in pointer focus mode"), OBV("ClientWindowMouseActions", &clientMouseActions, "Allow mouse actions on client windows (buggy with some programs)"), OBV("ShowProgramsMenu", &showPrograms, "Show programs submenu"), OBV("ShowSettingsMenu", &showSettingsMenu, "Show settings submenu"), OBV("ShowFocusModeMenu", &showFocusModeMenu, "Show focus mode submenu"), OBV("ShowThemesMenu", &showThemesMenu, "Show themes submenu"), OBV("ShowLogoutMenu", &showLogoutMenu, "Show logout submenu"), OBV("ShowHelp", &showHelp, "Show the help menu item"), OBV("ShowLogoutSubMenu", &showLogoutSubMenu, "Show logout submenu"), OBV("ShowAbout", &showAbout, "Show the about menu item"), OBV("ShowRun", &showRun, "Show the run menu item"), OBV("ShowWindowList", &showWindowList, "Show the window menu item"), OBV("AllowFullscreen", &allowFullscreen, "Allow to switch a window to fullscreen"), OBV("EnableAddressBar", &enableAddressBar, "Enable address bar functionality in taskbar"), OBV("ShowAddressBar", &showAddressBar, "Show address bar in task bar"), #ifdef CONFIG_I18N OBV("MultiByte", &multiByte, "Overrides automatic multiple byte detection"), #endif OBV("ConfirmLogout", &confirmLogout, "Confirm logout"), #ifdef CONFIG_SHAPED_DECORATION OBV("ShapesProtectClientWindow", &protectClientWindow, "Don't cut client windows by shapes set trough frame corner pixmap"), #endif OBV("DoubleBuffer", &doubleBuffer, "Use double buffering when redrawing the display"), OBV("XRRDisable", &xrrDisable, "Disable use of new XRANDR API for dual head (nvidia workaround)"), OIV("ClickMotionDistance", &ClickMotionDistance, 0, 32, "Pointer motion distance before click gets interpreted as drag"), OIV("ClickMotionDelay", &ClickMotionDelay, 0, 2000, "Delay before click gets interpreted as drag"), OIV("MultiClickTime", &MultiClickTime, 0, 5000, "Multiple click time"), OIV("MenuActivateDelay", &MenuActivateDelay, 0, 5000, "Delay before activating menu items"), OIV("SubmenuMenuActivateDelay", &SubmenuActivateDelay, 0, 5000, "Delay before activating menu submenus"), OIV("MenuMaximalWidth", &MenuMaximalWidth, 0, 16384, "Maximal width of popup menus, 2/3 of the screen's width if set to zero"), #ifdef CONFIG_TOOLTIP OIV("ToolTipDelay", &ToolTipDelay, 0, 5000, "Delay before tooltip window is displayed"), OIV("ToolTipTime", &ToolTipTime, 0, 60000, "Time before tooltip window is hidden (0 means never"), #endif OIV("AutoHideDelay", &autoHideDelay, 0, 5000, "Delay before task bar is hidden"), OIV("AutoShowDelay", &autoShowDelay, 0, 5000, "Delay before task bar is shown"), OIV("AutoRaiseDelay", &autoRaiseDelay, 0, 5000, "Delay before windows are auto raised"), OIV("EdgeResistance", &EdgeResistance, 0, 10000, "Resistance in pixels when trying to move windows off the screen (10000 = infinite)"), OIV("PointerFocusDelay", &pointerFocusDelay, 0, 1000, "Delay for pointer focus switching"), OIV("SnapDistance", &snapDistance, 0, 64, "Distance in pixels before windows snap together"), OIV("EdgeSwitchDelay", &edgeSwitchDelay, 0, 5000, "Screen edge workspace switching delay"), OIV("ScrollBarStartDelay", &scrollBarStartDelay, 0, 5000, "Inital scroll bar autoscroll delay"), OIV("ScrollBarDelay", &scrollBarDelay, 0, 5000, "Scroll bar autoscroll delay"), OIV("AutoScrollStartDelay", &autoScrollStartDelay, 0, 5000, "Auto scroll start delay"), OIV("AutoScrollDelay", &autoScrollDelay, 0, 5000, "Auto scroll delay"), OIV("WorkspaceStatusTime", &workspaceStatusTime, 0, 2500, "Time before workspace status window is hidden"), OIV("UseRootButtons", &useRootButtons, 0, 255, "Bitmask of root window button click to use in window manager"), OIV("ButtonRaiseMask", &buttonRaiseMask, 0, 255, "Bitmask of buttons that raise the window when pressed"), OIV("DesktopWinMenuButton", &rootWinMenuButton, 0, 20, "Desktop mouse-button click to show the window list menu"), OIV("DesktopWinListButton", &rootWinListButton, 0, 20, "Desktop mouse-button click to show the window list"), OIV("DesktopMenuButton", &rootMenuButton, 0, 20, "Desktop mouse-button click to show the root menu"), OIV("TitleBarMaximizeButton", &titleMaximizeButton, 0, 5, "TitleBar mouse-button double click to maximize the window"), OIV("TitleBarRollupButton", &titleRollupButton, 0, 5, "TitleBar mouse-button double click to rollup the window"), OIV("MsgBoxDefaultAction", &msgBoxDefaultAction, 0, 1, "Preselect to Cancel (0) or the OK (1) button in message boxes"), OIV("MailCheckDelay", &mailCheckDelay, 0, (3600*24), "Delay between new-mail checks. (seconds)"), #ifdef CONFIG_TASKBAR OIV("TaskBarCPUSamples", &taskBarCPUSamples, 2, 1000, "Width of CPU Monitor"), OIV("TaskBarCPUDelay", &taskBarCPUDelay, 10, (60*60*1000), "Delay between CPU Monitor samples in ms"), OIV("TaskBarNetSamples", &taskBarNetSamples, 2, 1000, "Width of Net Monitor"), OIV("TaskBarNetDelay", &taskBarNetDelay, 10, (60*60*1000), "Delay between Net Monitor samples in ms"), OIV("TaskbarButtonWidthDivisor", &taskBarButtonWidthDivisor, 1, 25, "default number of tasks in taskbar"), OIV("TaskBarApmGraphWidth", &taskBarApmGraphWidth, 1, 1000, "Width of APM Monitor"), // hatred #endif OIV("XineramaPrimaryScreen", &xineramaPrimaryScreen, 0, 63, "Primary screen for xinerama (taskbar, ...)"), OIV("FocusRequestFlashTime", &focusRequestFlashTime, 0, (3600 * 24), "Number of seconds the taskbar app will blink when requesting focus (0 = forever)"), OIV("FocusRequestFlashInterval", &focusRequestFlashInterval, 0, 30000, "Taskbar blink interval (ms) when requesting focus (0 = blinking disabled)"), OIV("NestedThemeMenuMinNumber", &nestedThemeMenuMinNumber, 0, 1234, "Minimal number of themes after which the Themes menu becomes nested (0=disabled)"), OIV("BatteryPollingPeriod", &batteryPollingPeriod, 2, 3600, "Delay between power status updates (seconds)"), /// OSV("Theme", &themeName, "Theme name"), OSV("IconPath", &iconPath, "Icon search path (colon separated)"), OSV("MailBoxPath", &mailBoxPath, "Mailbox path (use $MAIL instead)"), 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"), OSV("LockCommand", &lockCommand, "Command to lock display/screensaver"), OSV("ClockCommand", &clockCommand, "Command to run on clock"), OSV("ClockClassHint", &clockClassHint, "WM_CLASS to allow runonce for ClockCommand"), OSV("RunCommand", &runDlgCommand, "Command to select and run a program"), OSV("OpenCommand", &openCommand, ""), OSV("TerminalCommand", &terminalCommand, "Terminal emulator must accept -e option."), OSV("LogoutCommand", &logoutCommand, "Command to start logout"), OSV("LogoutCancelCommand", &logoutCancelCommand, "Command to cancel logout"), OSV("ShutdownCommand", &shutdownCommand, "Command to shutdown the system"), OSV("RebootCommand", &rebootCommand, "Command to reboot the system"), OSV("CPUStatusCommand", &cpuCommand, "Command to run on CPU status"), OSV("CPUStatusClassHint", &cpuClassHint, "WM_CLASS to allow runonce for CPUStatusCommand"), OSV("NetStatusCommand", &netCommand, "Command to run on Net status"), OSV("NetStatusClassHint", &netClassHint, "WM_CLASS to allow runonce for NetStatusCommand"), OSV("AddressBarCommand", &addressBarCommand, "Command to run for address bar entries"), OSV("NetworkStatusDevice", &netDevice, "Network device to show status for"), OSV("TimeFormat", &fmtTime, "Clock Time format (strftime format string)"), OSV("TimeFormatAlt", &fmtTimeAlt, "Alternate Clock Time format (e.g. for blinking effects)"), OSV("DateFormat", &fmtDate, "Clock Date format for tooltip (strftime format string)"), OSV("XRRPrimaryScreenName", &xineramaPrimaryScreenName, "screen/output name of the primary screen"), #ifdef CONFIG_APPLET_APM OSV("AcpiIgnoreBatteries", &acpiIgnoreBatteries, "List of battery names (directories) in /proc/acpi/battery to ignore. Useful when more slots are built-in, but only one battery is used"), #endif #ifndef NO_KEYBIND OKV("MouseWinMove", gMouseWinMove, "Mouse binding for window move"), OKV("MouseWinSize", gMouseWinSize, "Mouse binding for window resize"), OKV("MouseWinRaise", gMouseWinRaise, "Mouse binding to raise window"), OKV("KeyWinRaise", gKeyWinRaise, ""), OKV("KeyWinOccupyAll", gKeyWinOccupyAll, ""), OKV("KeyWinLower", gKeyWinLower, ""), OKV("KeyWinClose", gKeyWinClose, ""), OKV("KeyWinRestore", gKeyWinRestore, ""), OKV("KeyWinPrev", gKeyWinPrev, ""), OKV("KeyWinNext", gKeyWinNext, ""), OKV("KeyWinMove", gKeyWinMove, ""), OKV("KeyWinSize", gKeyWinSize, ""), OKV("KeyWinMinimize", gKeyWinMinimize, ""), OKV("KeyWinMaximize", gKeyWinMaximize, ""), OKV("KeyWinMaximizeVert", gKeyWinMaximizeVert, ""), OKV("KeyWinMaximizeHoriz", gKeyWinMaximizeHoriz, ""), OKV("KeyWinFullscreen", gKeyWinFullscreen, ""), OKV("KeyWinHide", gKeyWinHide, ""), OKV("KeyWinRollup", gKeyWinRollup, ""), OKV("KeyWinMenu", gKeyWinMenu, ""), OKV("KeyWinArrangeN", gKeyWinArrangeN, ""), OKV("KeyWinArrangeNE", gKeyWinArrangeNE, ""), OKV("KeyWinArrangeE", gKeyWinArrangeE, ""), OKV("KeyWinArrangeSE", gKeyWinArrangeSE, ""), OKV("KeyWinArrangeS", gKeyWinArrangeS, ""), OKV("KeyWinArrangeSW", gKeyWinArrangeSW, ""), OKV("KeyWinArrangeW", gKeyWinArrangeW, ""), OKV("KeyWinArrangeNW", gKeyWinArrangeNW, ""), OKV("KeyWinArrangeC", gKeyWinArrangeC, ""), OKV("KeySysSwitchNext", gKeySysSwitchNext, ""), OKV("KeySysSwitchLast", gKeySysSwitchLast, ""), OKV("KeySysWinNext", gKeySysWinNext, ""), OKV("KeySysWinPrev", gKeySysWinPrev, ""), OKV("KeySysWinMenu", gKeySysWinMenu, ""), OKV("KeySysDialog", gKeySysDialog, ""), OKV("KeySysMenu", gKeySysMenu, ""), /// OKV("KeySysRun", gKeySysRun, ""), OKV("KeySysWindowList", gKeySysWindowList, ""), OKV("KeySysWinListMenu", gKeySysWinListMenu, ""), OKV("KeySysAddressBar", gKeySysAddressBar, ""), OKV("KeySysWorkspacePrev", gKeySysWorkspacePrev, ""), OKV("KeySysWorkspaceNext", gKeySysWorkspaceNext, ""), OKV("KeySysWorkspaceLast", gKeySysWorkspaceLast, ""), OKV("KeySysWorkspacePrevTakeWin", gKeySysWorkspacePrevTakeWin, ""), OKV("KeySysWorkspaceNextTakeWin", gKeySysWorkspaceNextTakeWin, ""), OKV("KeySysWorkspaceLastTakeWin", gKeySysWorkspaceLastTakeWin, ""), OKV("KeySysWorkspace1", gKeySysWorkspace1, ""), OKV("KeySysWorkspace2", gKeySysWorkspace2, ""), OKV("KeySysWorkspace3", gKeySysWorkspace3, ""), OKV("KeySysWorkspace4", gKeySysWorkspace4, ""), OKV("KeySysWorkspace5", gKeySysWorkspace5, ""), OKV("KeySysWorkspace6", gKeySysWorkspace6, ""), OKV("KeySysWorkspace7", gKeySysWorkspace7, ""), OKV("KeySysWorkspace8", gKeySysWorkspace8, ""), OKV("KeySysWorkspace9", gKeySysWorkspace9, ""), OKV("KeySysWorkspace10", gKeySysWorkspace10, ""), OKV("KeySysWorkspace11", gKeySysWorkspace11, ""), OKV("KeySysWorkspace12", gKeySysWorkspace12, ""), OKV("KeySysWorkspace1TakeWin", gKeySysWorkspace1TakeWin, ""), OKV("KeySysWorkspace2TakeWin", gKeySysWorkspace2TakeWin, ""), OKV("KeySysWorkspace3TakeWin", gKeySysWorkspace3TakeWin, ""), OKV("KeySysWorkspace4TakeWin", gKeySysWorkspace4TakeWin, ""), OKV("KeySysWorkspace5TakeWin", gKeySysWorkspace5TakeWin, ""), OKV("KeySysWorkspace6TakeWin", gKeySysWorkspace6TakeWin, ""), OKV("KeySysWorkspace7TakeWin", gKeySysWorkspace7TakeWin, ""), OKV("KeySysWorkspace8TakeWin", gKeySysWorkspace8TakeWin, ""), OKV("KeySysWorkspace9TakeWin", gKeySysWorkspace9TakeWin, ""), OKV("KeySysWorkspace10TakeWin", gKeySysWorkspace10TakeWin, ""), OKV("KeySysWorkspace11TakeWin", gKeySysWorkspace11TakeWin, ""), OKV("KeySysWorkspace12TakeWin", gKeySysWorkspace12TakeWin, ""), OKV("KeySysTileVertical", gKeySysTileVertical, ""), OKV("KeySysTileHorizontal", gKeySysTileHorizontal, ""), OKV("KeySysCascade", gKeySysCascade, ""), OKV("KeySysArrange", gKeySysArrange, ""), OKV("KeySysArrangeIcons", gKeySysArrangeIcons, ""), OKV("KeySysMinimizeAll", gKeySysMinimizeAll, ""), OKV("KeySysHideAll", gKeySysHideAll, ""), OKV("KeySysUndoArrange", gKeySysUndoArrange, ""), OKV("KeySysShowDesktop", gKeySysShowDesktop, ""), OKV("KeySysCollapseTaskBar", gKeySysCollapseTaskBar, ""), #endif OKF("WorkspaceNames", addWorkspace, ""), OSV("WinMenuItems", &winMenuItems, "Items supported in menu window (rmsnxfhualytickw)"), OK0() }; #endif #include "themable.h" #endif /* __DEFAULT_H */ icewm-1.3.7/src/obj.h0000644000076600007660000000112311463274240013334 0ustar develdevel#ifndef __OBJ_H #define __OBJ_H #include "ypaint.h" class DObject { public: DObject(const ustring &name, ref icon); virtual ~DObject(); ustring getName() { return fName; } ref getIcon() { return fIcon; } virtual void open(); private: ustring fName; ref fIcon; }; class ObjectContainer { public: virtual void addObject(DObject *object) = 0; virtual void addSeparator() = 0; virtual void addContainer(const ustring &name, ref icon, ObjectContainer *container) = 0; protected: virtual ~ObjectContainer() {}; }; #endif icewm-1.3.7/src/icewmbg_prefs.h0000644000076600007660000000312111463274240015376 0ustar develdevel#ifndef ICEWMBG_PREFS_H #define ICEWMBG_PREFS_H #include "yconfig.h" XSV(const char *, DesktopBackgroundColor, "rgb:00/20/40") XSV(const char *, DesktopBackgroundPixmap, 0) XSV(const char *, DesktopTransparencyColor, 0) XSV(const char *, DesktopTransparencyPixmap, 0) XIV(bool, desktopBackgroundScaled, false) XIV(bool, centerBackground, false) XIV(bool, supportSemitransparency, true) void addBgImage(const char *name, const char *value, bool); #ifndef NO_CONFIGURE cfoption icewmbg_prefs[] = { OBV("DesktopBackgroundCenter", ¢erBackground, "Display desktop background centered and not tiled"), OBV("SupportSemitransparency", &supportSemitransparency, "Support for semitransparent terminals like Eterm or gnome-terminal"), OBV("DesktopBackgroundScaled", &desktopBackgroundScaled, "Desktop background scaled to full screen"), OSV("DesktopBackgroundColor", &DesktopBackgroundColor, "Desktop background color"), OSV("DesktopBackgroundImage", &DesktopBackgroundPixmap, "Desktop background image"), OSV("DesktopTransparencyColor", &DesktopTransparencyColor, "Color to announce for semi-transparent windows"), OSV("DesktopTransparencyImage", &DesktopTransparencyPixmap, "Image to announce for semi-transparent windows"), OKF("DesktopBackgroundImage", addBgImage, ""), //{ false, { 0, 0, 0 }, { 0, false }, { 0 } }, &addBgImage }, OK0() //{ cfoption::CF_NONE, 0, { false, { 0, 0, 0 }, { 0, false }, { 0 } }, 0 } }; #endif #endif icewm-1.3.7/src/ylistbox.h0000644000076600007660000000631711463274240014451 0ustar develdevel#ifndef __YLISTBOX_H #define __YLISTBOX_H #include "ywindow.h" #include "yscrollbar.h" #include "yscrollview.h" class YScrollView; class YListItem { public: YListItem(); virtual ~YListItem(); YListItem *getNext(); YListItem *getPrev(); void setNext(YListItem *next); void setPrev(YListItem *prev); bool getSelected() { return fSelected; } void setSelected(bool aSelected); virtual int getOffset(); virtual ustring getText(); virtual ref getIcon(); private: bool fSelected; // !!! remove this from here YListItem *fPrevItem, *fNextItem; }; class YListBox: public YWindow, public YScrollBarListener, public YScrollable { public: YListBox(YScrollView *view, YWindow *aParent); virtual ~YListBox(); int addItem(YListItem *item); int addAfter(YListItem *prev, YListItem *item); void removeItem(YListItem *item); virtual void configure(const YRect &r); virtual bool handleKey(const XKeyEvent &key); virtual void handleButton(const XButtonEvent &button); virtual void handleClick(const XButtonEvent &up, int count); virtual void handleDrag(const XButtonEvent &down, const XMotionEvent &motion); virtual void handleMotion(const XMotionEvent &motion); virtual bool handleAutoScroll(const XMotionEvent &mouse); virtual void paint(Graphics &g, const YRect &r); virtual void scroll(YScrollBar *sb, int delta); virtual void move(YScrollBar *sb, int pos); virtual bool isFocusTraversable(); bool hasSelection(); virtual void activateItem(YListItem *item); YListItem *getFirst() const { return fFirst; } YListItem *getLast() const { return fLast; } int getItemCount(); YListItem *getItem(int item); int findItemByPoint(int x, int y); int findItem(YListItem *item); int getLineHeight(); int maxWidth(); bool isSelected(int item); bool isSelected(YListItem *item); virtual int contentWidth(); virtual int contentHeight(); virtual YWindow *getWindow(); void focusSelectItem(int no) { setFocusedItem(no, true, false, false); } void repaintItem(YListItem *item); private: YScrollBar *fVerticalScroll; YScrollBar *fHorizontalScroll; YScrollView *fView; YListItem *fFirst, *fLast; int fItemCount; YListItem **fItems; int fOffsetX; int fOffsetY; int fMaxWidth; int fFocusedItem; int fSelectStart, fSelectEnd; bool fDragging; bool fSelect; static int fAutoScrollDelta; bool isItemSelected(int item); void selectItem(int item, bool sel); void selectItems(int selStart, int selEnd, bool sel); void paintItems(int selStart, int selEnd); void clearSelection(); void setFocusedItem(int item, bool clear, bool extend, bool virt); void applySelection(); void paintItem(int i); void paintItem(Graphics &g, int n); void resetScrollBars(); void freeItems(); void updateItems(); void autoScroll(int delta, const XMotionEvent *motion); void focusVisible(); void ensureVisibility(int item); #ifdef CONFIG_GRADIENTS ref fGradient; #endif }; extern ref listbackPixmap; #ifdef CONFIG_GRADIENTS extern ref listbackPixbuf; #endif #endif icewm-1.3.7/src/ybutton.cc0000644000076600007660000003131411463274240014431 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek */ #include "config.h" #include "ykey.h" #include "ypixbuf.h" #include "ybutton.h" #include "yaction.h" #include "ymenu.h" #include "yrect.h" #include "yicon.h" #include "yxapp.h" // !!! remove (AltMask) #include "yprefs.h" #include "prefs.h" #include "ascii.h" #include "wmtaskbar.h" #include #include "intl.h" YColor *YButton::normalButtonBg = 0; YColor *YButton::normalButtonFg = 0; YColor *YButton::activeButtonBg = 0; YColor *YButton::activeButtonFg = 0; ref YButton::normalButtonFont; ref YButton::activeButtonFont; // !!! needs to go away ref taskbuttonPixmap; ref taskbuttonactivePixmap; ref taskbuttonminimizedPixmap; YButton::YButton(YWindow *parent, YAction *action, YMenu *popup) : YWindow(parent), fOver(false), fAction(action), fPopup(popup), fIcon(null), fIconSize(0), fImage(null), fText(null), fPressed(false), fEnabled(true), fHotCharPos(-1), hotKey(-1), fListener(NULL), fSelected(false), fArmed(false), wasPopupActive(false), fPopupActive(false) { if (normalButtonFont == null) normalButtonFont = YFont::getFont(XFA(normalButtonFontName)); if (activeButtonFont == null) activeButtonFont = YFont::getFont(XFA(activeButtonFontName)); if (normalButtonBg == 0) normalButtonBg = new YColor(clrNormalButton); if (normalButtonFg == 0) normalButtonFg = new YColor(clrNormalButtonText); if (activeButtonBg == 0) activeButtonBg = new YColor(clrActiveButton); if (activeButtonFg == 0) activeButtonFg = new YColor(clrActiveButtonText); } YButton::~YButton() { if (hotKey != -1) { removeAccelerator(hotKey, 0, this); if (xapp->AltMask != 0) removeAccelerator(hotKey, xapp->AltMask, this); } popdown(); } void YButton::paint(Graphics &g, int const d, const YRect &r) { int x = r.x(), y = r.y(), w = r.width(), h = r.height(); YSurface surface(getSurface()); g.drawSurface(surface, x, y, w, h); #ifndef LITE if (fIcon != null) fIcon->draw(g, x + (w - fIconSize) / 2, y + (h - fIconSize) / 2, fIconSize); else #endif if (fImage != null) g.drawImage(fImage, x + (w - fImage->width()) / 2, y + (h - fImage->height()) / 2); else if (fText != null) { ref font = fPressed ? activeButtonFont : normalButtonFont; int const w(font->textWidth(fText)); int const p((width() - w) / 2); int yp((height() - font->height()) / 2 + font->ascent() + d); g.setFont(font); g.setColor(getColor()); if (!fEnabled) { g.setColor(YColor::white); g.drawChars(fText, d + p + 1, yp + 1); g.setColor(YColor::white->darker()->darker()); g.drawChars(fText, d + p, yp); } else { g.drawChars(fText, d + p, yp); } if (fHotCharPos != -1) g.drawCharUnderline(d + p, yp, fText, fHotCharPos); } } void YButton::paint(Graphics &g, const YRect &/*r*/) { int d((fPressed || fArmed) ? 1 : 0); int x(0), y(0), w(width()), h(height()); if (w > 1 && h > 1) { YSurface surface(getSurface()); g.setColor(surface.color); if (wmLook == lookMetal) { g.drawBorderM(x, y, w - 1, h - 1, !d); d = 0; x += 2; y += 2; w -= 4; h -= 4; } else if (wmLook == lookGtk) { g.drawBorderG(x, y, w - 1, h - 1, !d); x += 1 + d; y += 1 + d; w -= 3; h -= 3; } else if (wmLook == lookFlat){ d = 0; } else { g.drawBorderW(x, y, w - 1, h - 1, !d); x += 1 + d; y += 1 + d; w -= 3; h -= 3; } paint(g, d, YRect(x, y, w, h)); if (wmLook != lookFlat) { paintFocus(g, YRect(x, y, w, h)); } } } void YButton::paintFocus(Graphics &g, const YRect &/*r*/) { int const d = (fPressed || fArmed ? 1 : 0); int const dp(wmLook == lookMetal ? 2 : 2 + d); int const ds(4); if (isFocused()) { g.setPenStyle(true); g.setFunction(GXxor); g.setColor(YColor::white); g.drawRect(dp, dp, width() - ds - 1, height() - ds - 1); g.setFunction(GXcopy); g.setPenStyle(false); } else { XRectangle focus[] = { { dp, dp, width() - ds, 1 }, { dp, dp + 1, 1, height() - ds - 2 }, { dp + width() - ds - 1, dp + 1, 1, height() - ds - 2 }, { dp, dp + height() - ds - 1, width() - ds, 1 } }; g.setClipRectangles(focus, 4); if (wmLook == lookMetal) paint(g, 0, YRect(dp, dp, width() - ds, height() - ds)); else paint(g, d, YRect(dp - 1, dp - 1, width() - ds + 1, height() - ds + 1)); g.setClipMask(None); } } void YButton::setOver(bool over) { if (fOver != over) { fOver= over; repaint(); } } void YButton::setPressed(int pressed) { if (fPressed != pressed) { fPressed = pressed; repaint(); } } void YButton::setSelected(bool selected) { if (selected != fSelected) { fSelected = selected; //repaint(); } } void YButton::setArmed(bool armed, bool mouseDown) { if (armed != fArmed) { fArmed = armed; repaint(); if (fPopup) { if (fArmed) popup(mouseDown); else popdown(); } } } bool YButton::handleKey(const XKeyEvent &key) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); unsigned m = KEY_MODMASK(key.state); int uk = (k < 256) ? ASCII::toUpper((char)k) : k; if (fEnabled) { if (key.type == KeyPress) { if (!fSelected) { if (((k == XK_Return || k == 32) && m == 0) || (uk == hotKey && (m & ~xapp->AltMask) == 0)) { requestFocus(false); wasPopupActive = fArmed; setSelected(true); setArmed(true, false); return true; } } } else if (key.type == KeyRelease) { if (fSelected) { if (((k == XK_Return || k == 32) && m == 0) || (uk == hotKey && (m & ~xapp->AltMask) == 0)) { bool wasArmed = fArmed; // !!! is this guaranteed to work? (skip autorepeated keys) XEvent xev; XCheckTypedWindowEvent(xapp->display(), handle(), KeyPress, &xev); if (xev.type == KeyPress && xev.xkey.time == key.time && xev.xkey.keycode == key.keycode && xev.xkey.state == key.state) return true; setArmed(false, false); setSelected(false); if (!fPopup && wasArmed) actionPerformed(fAction, key.state); return true; } } } } return YWindow::handleKey(key); } void YButton::popupMenu() { if (fPopup) { requestFocus(false); wasPopupActive = fArmed; setSelected(true); setArmed(true, false); } } void YButton::updatePopup() { } void YButton::handleButton(const XButtonEvent &button) { if (fEnabled) { if (button.type == ButtonPress && button.button == 1) { requestFocus(false); wasPopupActive = fArmed; setSelected(true); setArmed(true, true); } else if (button.type == ButtonRelease) { if (fPopup) { int inWindow = (button.x >= 0 && button.y >= 0 && button.x < int (width()) && button.y < int (height())); if ((!inWindow || wasPopupActive) && fArmed) { setArmed(false, false); setSelected(false); } } else { bool wasArmed = fArmed; setArmed(false, false); setSelected(false); if (wasArmed) { actionPerformed(fAction, button.state); return ; } } } } YWindow::handleButton(button); } void YButton::handleCrossing(const XCrossingEvent &crossing) { if (fSelected && fEnabled) { if (crossing.type == EnterNotify) { if (!fPopup) setArmed(true, true); } else if (crossing.type == LeaveNotify) { if (!fPopup) setArmed(false, true); } } if (fEnabled) { if (crossing.type == EnterNotify) { setOver(true); } else if (crossing.type == LeaveNotify) { setOver(false); } } YWindow::handleCrossing(crossing); } void YButton::updateSize() { int w = 72; int h = 18; if (fIcon != null) { w = h = fIconSize; } else if (fImage != null) { w = fImage->width(); h = fImage->height(); } else if (fText != null) { w = activeButtonFont->textWidth(fText); h = activeButtonFont->ascent(); } setSize(w + 3 + 2 - ((wmLook == lookMetal || wmLook == lookFlat) ? 1 : 0), h + 3 + 2 - ((wmLook == lookMetal || wmLook == lookFlat) ? 1 : 0)); } void YButton::setIcon(ref icon, int iconSize) { fIcon = icon; fIconSize = iconSize; fImage = null; updateSize(); } void YButton::setImage(ref image) { fImage = image; fIconSize = 0; fIcon = null; updateSize(); } void YButton::setText(const ustring &str, int hotChar) { if (hotKey != -1) { removeAccelerator(hotKey, 0, this); if (xapp->AltMask != 0) removeAccelerator(hotKey, xapp->AltMask, this); } fText = str; if (fText != null) { fHotCharPos = hotChar; if (fHotCharPos == -2) { int i = fText.indexOf('_'); if (i != -1) { fHotCharPos = i; fText = fText.remove(i, 1); } } hotKey = (fHotCharPos != -1) ? fText.charAt(fHotCharPos) : -1; hotKey = ASCII::toUpper(hotKey); if (hotKey != -1) { installAccelerator(hotKey, 0, this); if (xapp->AltMask != 0) installAccelerator(hotKey, xapp->AltMask, this); } } else hotKey = -1; updateSize(); } void YButton::setPopup(YMenu *popup) { if (fPopup) { popdown(); delete fPopup; } fPopup = popup; } void YButton::donePopup(YPopupWindow *popup) { if (popup != fPopup) { MSG(("popup different?")); return ; } popdown(); fArmed = 0; fSelected = 0; repaint(); } void YButton::popup(bool mouseDown) { if (fPopup) { int x = 0; int y = 0; mapToGlobal(x, y); updatePopup(); fPopup->setActionListener(getActionListener()); int xiscreen = desktop->getScreenForRect(x, y, width(), height()); if (fPopup->popup(this, this, 0, x - 2, y + height(), 0, height(), xiscreen, YPopupWindow::pfCanFlipVertical | (mouseDown ? YPopupWindow::pfButtonDown : 0))) fPopupActive = true; } } void YButton::popdown() { if (fPopup && fPopupActive) { fPopup->popdown(); fPopupActive = false; } } bool YButton::isFocusTraversable() { return true; } void YButton::setAction(YAction *action) { fAction = action; } void YButton::actionPerformed(YAction *action, unsigned modifiers) { if (fListener && action && fEnabled) fListener->actionPerformed(action, modifiers); } ref YButton::getFont() { return (fPressed ? activeButtonFont : normalButtonFont); } YColor * YButton::getColor() { return (fPressed ? activeButtonFg : normalButtonFg); } YSurface YButton::getSurface() { #ifdef CONFIG_GRADIENTS return (fPressed ? YSurface(activeButtonBg, buttonAPixmap, buttonAPixbuf) : YSurface(normalButtonBg, buttonIPixmap, buttonIPixbuf)); #else return (fPressed ? YSurface(activeButtonBg, buttonAPixmap) : YSurface(normalButtonBg, buttonIPixmap)); #endif } void YButton::setEnabled(bool enabled) { if (fEnabled != enabled) { fEnabled = enabled; if (!fEnabled) { popdown(); fOver = false; fArmed = false; } repaint(); } } icewm-1.3.7/src/mstring.cc0000664000076600007660000001566511463274240014425 0ustar develdevel/* * IceWM * * Copyright (C) 2004,2005 Marko Macek */ #include "config.h" #pragma implementation #include "mstring.h" #include #include #include #include #include "base.h" cstring::cstring(const mstring &s): str(s) { if (str.fStr) { if (str.data()[str.fCount] != 0) { str = mstring::newstr(str.data(), str.fCount); } } } mstring::mstring(MStringData *fStr, int fOffset, int fCount): fStr(fStr), fOffset(fOffset), fCount(fCount) { PRECONDITION(fOffset >= 0); PRECONDITION(fCount >= 0); if (fStr) acquire(); } #if 0 mstring::mstring(const mstring &r): fStr(r.fStr), fOffset(r.fOffset), fCount(r.fCount) { PRECONDITION(fOffset >= 0); PRECONDITION(fCount >= 0); if (fStr) acquire(); } #endif mstring::mstring(const char *str) { init(str, str ? strlen(str) : 0); } mstring::mstring(const char *str, int len) { init(str, len); } void mstring::init(const char *str, int len) { if (str) { int count = len; MStringData *ud = (MStringData *)malloc(sizeof(MStringData) + count + 1); ud->fRefCount = 0; memcpy(ud->fStr, str, count); ud->fStr[count] = 0; fStr = ud; fOffset = 0; fCount = count; acquire(); } else { fStr = 0; fOffset = 0; fCount = 0; } } void mstring::destroy() { free(fStr); fStr = 0; } mstring::~mstring() { if (fStr) release(); } mstring mstring::operator=(const mstring& rv) { if (fStr != rv.fStr) { if (fStr) release(); fStr = rv.fStr; if (fStr) acquire(); } fOffset = rv.fOffset; fCount = rv.fCount; return *this; } mstring mstring::operator=(const class null_ref &) { if (fStr) release(); fStr = 0; fCount = 0; fOffset = 0; return *this; } mstring mstring::fromMultiByte(const char *str, int len) { return newstr(str, len); } mstring mstring::fromMultiByte(const char *str) { return newstr(str); } mstring mstring::newstr(const char *str) { return newstr(str, str ? strlen(str) : 0); } mstring mstring::newstr(const char *str, int count) { PRECONDITION(count >= 0); PRECONDITION(str != 0 || count == 0); MStringData *ud = (MStringData *)malloc(sizeof(MStringData) + count + 1); ud->fRefCount = 0; memcpy(ud->fStr, str, count); ud->fStr[count] = 0; return mstring(ud, 0, count); } mstring mstring::substring(int pos) { PRECONDITION(pos >= 0); PRECONDITION(pos <= length()); return mstring(fStr, fOffset + pos, fCount - pos); } mstring mstring::substring(int pos, int len) { PRECONDITION(pos >= 0); PRECONDITION(len >= 0); PRECONDITION(pos <= length()); PRECONDITION(pos + len <= length()); return mstring(fStr, fOffset + pos, len); } bool mstring::split(unsigned char token, mstring *left, mstring *remain) const { int i = fOffset; int e = fOffset + fCount; int c = 0; unsigned char ch; PRECONDITION(token < 128); while (i < e) { ch = fStr->fStr[i]; if (ch == token) { mstring l(fStr, fOffset, i - fOffset); mstring r(fStr, i + 1, e - i - 1); *left = l; *remain = r; return true; } if (ch <= 0x7F || (ch >= 0xC0 && ch <= 0xFD)) { c++; } i++; } return false; } bool mstring::splitall(unsigned char token, mstring *left, mstring *remain) const { if (split(token, left, remain)) return true; if (length() > 0) { *left = *this; *remain = null; return true; } return false; } int mstring::charAt(int pos) const { if (pos >= 0 && pos < length()) return fStr->fStr[pos + fOffset]; else return -1; } bool mstring::startsWith(const mstring &s) const { if (length() < s.length()) return false; if (memcmp(data(), s.data(), s.length()) == 0) return true; return false; } bool mstring::endsWith(const mstring &s) const { if (length() < s.length()) return false; if (memcmp(data() + length() - s.length(), s.data(), s.length()) == 0) return true; return false; } int mstring::indexOf(char ch) const { char *s = (char *)memchr(data(), ch, fCount); if (s == NULL) return -1; return s - fStr->fStr - fOffset; } bool mstring::equals(const mstring &s) const { return compareTo(s) == 0; } int mstring::compareTo(const mstring &s) const { #if upstream_comp if (s.length() > length()) { return -1; } else if (s.length() == length()) { if (fCount == 0) return 0; else return memcmp(s.data(), data(), fCount); } else { return 1; } #else int res=memcmp(data(), s.data(), min(s.length(), length())); if (s.length() == length()) return res; if(res) // different length, left part already not equal return res; return length()-s.length(); #endif } bool mstring::copy(char *dst, size_t len) const { strncpy(dst, data(), len); if ((size_t) fCount < len) dst[fCount] = '\0'; dst[len - 1] = '\0'; return (size_t) fCount < len; } mstring mstring::replace(int position, int len, const mstring &insert) { PRECONDITION(position >= 0); PRECONDITION(len >= 0); PRECONDITION(position + len <= length()); int count = length() - len + insert.length(); MStringData *ud = (MStringData *)malloc(sizeof(MStringData) + count + 1); ud->fRefCount = 0; memcpy(ud->fStr, data(), position); memcpy(ud->fStr + position, insert.data(), insert.fCount); memcpy(ud->fStr + position + insert.fCount, data() + position + len, fCount - len - position); ud->fStr[count] = 0; return mstring(ud, 0, count); } mstring mstring::remove(int position, int len) { PRECONDITION(position >= 0); PRECONDITION(len >= 0); PRECONDITION(position + len <= length()); int count = length() - len; MStringData *ud = (MStringData *)malloc(sizeof(MStringData) + count + 1); ud->fRefCount = 0; memcpy(ud->fStr, data(), position); memcpy(ud->fStr + position, data() + position + len, fCount - len - position); ud->fStr[count] = 0; return mstring(ud, 0, count); } mstring mstring::insert(int position, const mstring &s) { return replace(position, 0, s); } mstring mstring::append(const mstring &s) { return replace(length(), 0, s); } mstring mstring::trim() const { int pos = 0; int len = fCount; while (pos < len) { char ch = fStr->fStr[fOffset + pos]; if (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r') { pos++; len--; } else break; } while (len > 0) { char ch = fStr->fStr[fOffset + pos + len - 1]; if (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r') { len--; } else break; } return mstring(fStr, fOffset + pos, len); } icewm-1.3.7/src/ylistbox.cc0000644000076600007660000005331111463274240014603 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek * * Window list */ #include "config.h" #ifndef LITE #include "ypixbuf.h" #include "ykey.h" #include "ylistbox.h" #include "yrect.h" #include "yicon.h" #include "yscrollview.h" #include "yxapp.h" #include "prefs.h" #include "ascii.h" #include static ref listBoxFont; static YColor *listBoxBg = 0; static YColor *listBoxFg = 0; static YColor *listBoxSelBg = 0; static YColor *listBoxSelFg = 0; int YListBox::fAutoScrollDelta = 0; YListItem::YListItem() { fPrevItem = fNextItem = 0; fSelected = false; } YListItem::~YListItem() { } YListItem *YListItem::getNext() { return fNextItem; } YListItem *YListItem::getPrev() { return fPrevItem; } void YListItem::setNext(YListItem *next) { fNextItem = next; } void YListItem::setPrev(YListItem *prev) { fPrevItem = prev; } void YListItem::setSelected(bool aSelected) { fSelected = aSelected; } ustring YListItem::getText() { return null; } ref YListItem::getIcon() { return null; } int YListItem::getOffset() { return 0; } YListBox::YListBox(YScrollView *view, YWindow *aParent): YWindow(aParent) INIT_GRADIENT(fGradient, NULL) { if (listBoxFont == null) listBoxFont = YFont::getFont(XFA(listBoxFontName)); if (listBoxBg == 0) listBoxBg = new YColor(clrListBox); if (listBoxFg == 0) listBoxFg = new YColor(clrListBoxText); if (listBoxSelBg == 0) listBoxSelBg = new YColor(clrListBoxSelected); if (listBoxSelFg == 0) listBoxSelFg = new YColor(clrListBoxSelectedText); setBitGravity(NorthWestGravity); fView = view; if (fView) { fVerticalScroll = view->getVerticalScrollBar();; fHorizontalScroll = view->getHorizontalScrollBar(); } else { fHorizontalScroll = 0; fVerticalScroll = 0; } if (fVerticalScroll) fVerticalScroll->setScrollBarListener(this); if (fHorizontalScroll) fHorizontalScroll->setScrollBarListener(this); fOffsetX = 0; fOffsetY = 0; fFirst = fLast = 0; fFocusedItem = 0; fSelectStart = fSelectEnd = -1; fDragging = false; fSelect = false; fItemCount = 0; fItems = 0; } YListBox::~YListBox() { fFirst = fLast = 0; freeItems(); #ifdef CONFIG_GRADIENTS fGradient = null; #endif } bool YListBox::isFocusTraversable() { return true; } int YListBox::addAfter(YListItem *prev, YListItem *item) { PRECONDITION(item->getPrev() == 0); PRECONDITION(item->getNext() == 0); freeItems(); item->setNext(prev->getNext()); if (item->getNext()) item->getNext()->setPrev(item); else fLast = item; item->setPrev(prev); prev->setNext(item); fItemCount++; repaint(); return 1; } int YListBox::addItem(YListItem *item) { PRECONDITION(item->getPrev() == 0); PRECONDITION(item->getNext() == 0); freeItems(); item->setNext(0); item->setPrev(fLast); if (fLast) fLast->setNext(item); else fFirst = item; fLast = item; fItemCount++; repaint(); return 1; } void YListBox::removeItem(YListItem *item) { freeItems(); if (item->getPrev()) item->getPrev()->setNext(item->getNext()); else fFirst = item->getNext(); if (item->getNext()) item->getNext()->setPrev(item->getPrev()); else fLast = item->getPrev(); item->setPrev(0); item->setNext(0); fItemCount--; repaint(); } void YListBox::freeItems() { if (fItems) { delete[] fItems; fItems = 0; } } void YListBox::updateItems() { if (fItems == 0) { fMaxWidth = 0; fItems = new YListItem *[fItemCount]; if (fItems) { YListItem *a = getFirst(); int n = 0; while (a) { fItems[n++] = a; int cw = 3 + 20 + a->getOffset(); if (listBoxFont != null) { ustring t = a->getText(); if (t != null) cw += listBoxFont->textWidth(t) + 3; } if (cw > fMaxWidth) fMaxWidth = cw; a = a->getNext(); } } } } int YListBox::maxWidth() { updateItems(); return fMaxWidth; } int YListBox::findItemByPoint(int /*pX*/, int pY) { int no = (pY + fOffsetY) / getLineHeight(); if (no >= 0 && no < getItemCount()) return no; return -1; } int YListBox::getItemCount() { return fItemCount; } int YListBox::findItem(YListItem *item) { YListItem *a = fFirst; int n; for (n = 0; a; a = a->getNext(), n++) if (item == a) return n; return -1; } YListItem *YListBox::getItem(int no) { if (no < 0 || no >= getItemCount()) return 0; updateItems(); if (fItems) { return fItems[no]; } else { YListItem *a = getFirst(); for (int n = 0; a; a = a->getNext(), n++) if (n == no) return a; } return 0; } int YListBox::getLineHeight() { return max((int) YIcon::smallSize(), (int) listBoxFont->height()) + 2; } void YListBox::ensureVisibility(int item) { //!!! horiz too if (item >= 0) { int oy = fOffsetY; int lh = getLineHeight(); int fy = item * lh; if (fy + lh >= fOffsetY + (int)height()) oy = fy + lh - height(); if (fy <= fOffsetY) oy = fy; if (oy != fOffsetY) { fOffsetY = oy; repaint();///!!!fix (use scroll) } } } void YListBox::focusVisible() { int ty = fOffsetY; int by = ty + height(); if (fFocusedItem >= 0) { int lh = getLineHeight(); while (ty > fFocusedItem * lh) fFocusedItem++; while (by - lh < fFocusedItem * lh) fFocusedItem--; } } void YListBox::configure(const YRect &r) { YWindow::configure(r); resetScrollBars(); #ifdef CONFIG_GRADIENTS if (listbackPixbuf != null && !(fGradient != null && fGradient->width() == r.width() && fGradient->height() == r.height())) { fGradient = listbackPixbuf->scale(r.width(), r.height()); repaint(); } #endif } bool YListBox::handleKey(const XKeyEvent &key) { if (key.type == KeyPress) { KeySym k = XKeycodeToKeysym(xapp->display(), (KeyCode)key.keycode, 0); int m = KEY_MODMASK(key.state); bool clear = (m & ControlMask) ? false : true; bool extend = (m & ShiftMask) ? true : false; //int SelPos, OldPos = fFocusedItem, count = getItemCount(); //if (m & ShiftMask) { // SelPos = fFocusedItem; //} else { // SelPos = -1; //} switch (k) { case XK_Return: case XK_KP_Enter: { YListItem *i = getItem(fFocusedItem); if (i) activateItem(i); } break; case ' ': if (fFocusedItem != -1) { selectItem(fFocusedItem, isItemSelected(fFocusedItem) ? false : true); } break; case XK_Home: setFocusedItem(0, clear, extend, false); break; case XK_End: if (getItemCount() > 0) setFocusedItem(getItemCount() - 1, clear, extend, false); break; case XK_Up: { int const oldFocus(fFocusedItem); focusVisible(); if (fFocusedItem > 0) setFocusedItem(oldFocus == fFocusedItem ? fFocusedItem - 1 : fFocusedItem, clear, extend, false); break; } case XK_Down: { int const oldFocus(fFocusedItem); focusVisible(); if (fFocusedItem < getItemCount() - 1) setFocusedItem(oldFocus == fFocusedItem ? fFocusedItem + 1 : fFocusedItem, clear, extend, false); break; } #if 0 case XK_Prior: fVerticalScroll->setValue(fVerticalScroll->getValue() - fVerticalScroll->getBlockIncrement()); fOffsetY = fVerticalScroll->getValue(); fFocusedItem -= height() / getLineHeight(); if (fFocusedItem < 0) if (count > 0) fFocusedItem = 0; else fFocusedItem = -1; repaint(); break; case XK_Next: fVerticalScroll->setValue(fVerticalScroll->getValue() + fVerticalScroll->getBlockIncrement()); fOffsetY = fVerticalScroll->getValue(); fFocusedItem += height() / getLineHeight(); if (fFocusedItem > count - 1) fFocusedItem = count - 1; repaint(); break; #endif case 'a': case '/': case '\\': if (m & ControlMask) { for (int i = 0; i < getItemCount(); i++) selectItem(i, (k == '\\') ? false : true); break; } default: if (k < 256) { unsigned char c = ASCII::toUpper((char)k); int count = getItemCount(); int i = fFocusedItem; YListItem *it = 0; for (int n = 0; n < count; n++) { i = (i + 1) % count; it = getItem(i); ustring title = it->getText(); if (title != null && title.length() > 0 && ASCII::toUpper(title.charAt(0)) == c) { setFocusedItem(i, clear, extend, false); break; } } } else { if (fVerticalScroll->handleScrollKeys(key) == false //&& fHorizontalScroll->handleScrollKeys(key) == false ) return YWindow::handleKey(key); } } #if 0 if (fFocusedItem != OldPos) { if (SelPos == -1) { fSelectStart = fFocusedItem; fSelectEnd = fFocusedItem; fDragging = true; fSelect = true; } else { if (fSelectStart == OldPos) fSelectStart = fFocusedItem; else if (fSelectEnd == OldPos) fSelectEnd = fFocusedItem; else fSelectStart = fSelectEnd = fFocusedItem; if (fSelectStart == -1) fSelectStart = fSelectEnd; if (fSelectEnd == -1) fSelectEnd = fSelectStart; fDragging = true; fSelect = true; } setSelection(); ensureVisibility(fFocusedItem); repaint(); } #endif return true; } return YWindow::handleKey(key); } void YListBox::handleButton(const XButtonEvent &button) { if (button.button == 1) { int no = findItemByPoint(button.x, button.y); if (button.type == ButtonPress) { bool clear = (button.state & ControlMask) ? false : true; bool extend = (button.state & ShiftMask) ? true : false; if (no != -1) { fSelect = (!clear && isItemSelected(no)) ? false : true; setFocusedItem(no, clear, extend, true); } else { fSelect = true; setFocusedItem(no, clear, extend, true); } } else if (button.type == ButtonRelease) { if (no != -1) setFocusedItem(no, false, true, true); fDragging = false; applySelection(); autoScroll(0, 0); } } if (fVerticalScroll->handleScrollMouse(button) == false) YWindow::handleButton(button); } void YListBox::handleClick(const XButtonEvent &up, int count) { if (up.button == 1 && (count % 2) == 0) { int no = findItemByPoint(up.x, up.y); if (no != -1) { YListItem *i = getItem(no); activateItem(i); } } } void YListBox::handleMotion(const XMotionEvent &motion) { if (motion.state & Button1Mask) { if (motion.y < 0) autoScroll(-fVerticalScroll->getUnitIncrement(), &motion); else if (motion.y >= int(height())) autoScroll(fVerticalScroll->getUnitIncrement(), &motion); else { autoScroll(0, &motion); int no = findItemByPoint(motion.x, motion.y); if (no != -1) setFocusedItem(no, false, true, true); } } YWindow::handleMotion(motion); } void YListBox::handleDrag(const XButtonEvent &down, const XMotionEvent &motion) { if (down.button == 2) { int dx = motion.y - down.y; fVerticalScroll->setValue(fVerticalScroll->getValue() - dx); int fy = fVerticalScroll->getValue(); if (fy != fOffsetY) { fOffsetY = fy; repaint(); } } } void YListBox::scroll(YScrollBar *scroll, int delta) { bool needRepaint = false; if (scroll == fVerticalScroll) { fOffsetY += delta; needRepaint = true; } if (scroll == fHorizontalScroll) { fOffsetX += delta; needRepaint = true; } if (needRepaint) repaint(); } void YListBox::move(YScrollBar *scroll, int pos) { bool needRepaint = false; if (scroll == fVerticalScroll) { fOffsetY = pos; needRepaint = true; } if (scroll == fHorizontalScroll) { fOffsetX = pos; needRepaint = true; } if (needRepaint) repaint(); } void YListBox::paintItem(Graphics &g, int n) { YListItem *a = getItem(n); int x = 3; int lh = getLineHeight(); int fh = listBoxFont->height(); int xpos = 0; int y = n * lh; int yPos = y + lh - (lh - fh) / 2 - listBoxFont->descent(); if (a == 0) return ; xpos += a->getOffset(); bool s(a->getSelected()); if (fDragging) { int const beg(fSelectStart < fSelectEnd ? fSelectStart : fSelectEnd); int const end(fSelectStart < fSelectEnd ? fSelectEnd : fSelectStart); if (n >= beg && n <= end) s = fSelect; } if (s) { g.setColor(listBoxSelBg); g.fillRect(0, y - fOffsetY, width(), lh); } else { #ifdef CONFIG_GRADIENTS if (fGradient != null) g.drawImage(fGradient, 0, y - fOffsetY, width(), lh, 0, y - fOffsetY); else #endif if (listbackPixmap != null) g.fillPixmap(listbackPixmap, 0, y - fOffsetY, width(), lh); else { g.setColor(listBoxBg); g.fillRect(0, y - fOffsetY, width(), lh); } } if (fFocusedItem == n) { g.setColor(YColor::black); g.setPenStyle(true); int cw = 3 + 20 + a->getOffset(); if (listBoxFont != null) { ustring t = a->getText(); if (t != null) cw += listBoxFont->textWidth(t) + 3; } g.drawRect(0 - fOffsetX, y - fOffsetY, cw - 1, lh - 1); g.setPenStyle(false); } ref icon = a->getIcon(); if (icon != null) icon->draw(g, xpos + x - fOffsetX, y - fOffsetY + 1, YIcon::smallSize()); ustring title = a->getText(); if (title != null) { g.setColor(s ? listBoxSelFg : listBoxFg); g.setFont(listBoxFont); g.drawChars(title, xpos + x + 20 - fOffsetX, yPos - fOffsetY); } } void YListBox::paint(Graphics &g, const YRect &r) { int ry = r.y(), rheight = r.height(); int const lh(getLineHeight()); int const min((fOffsetY + ry) / lh); int const max((fOffsetY + ry + rheight) / lh); for (int n(min); n <= max; n++) paintItem(g, n); resetScrollBars(); int const y(contentHeight()); if (y < height()) { #ifdef CONFIG_GRADIENTS if (fGradient != null) g.drawImage(fGradient, 0, y, width(), height() - y, 0, y); else #endif if (listbackPixmap != null) g.fillPixmap(listbackPixmap, 0, y, width(), height() - y); else { g.setColor(listBoxBg); g.fillRect(0, y, width(), height() - y); } } } void YListBox::paintItem(int i) { /// TODO #warning "fix this to use an invalidate region" if (i >= 0 && i < getItemCount()) { paintExpose(0, i * getLineHeight() - fOffsetY, width(), getLineHeight()); } } void YListBox::activateItem(YListItem */*item*/) { } void YListBox::repaintItem(YListItem *item) { int i = findItem(item); if (i != -1) paintItem(i); } bool YListBox::hasSelection() {//!!!fix //if (fSelectStart != -1 && fSelectEnd != -1) return true; //return false; } void YListBox::resetScrollBars() { int lh = getLineHeight(); int y = getItemCount() * lh; fVerticalScroll->setValues(fOffsetY, height(), 0, y); fVerticalScroll->setBlockIncrement(height()); fVerticalScroll->setUnitIncrement(lh); fHorizontalScroll->setValues(fOffsetX, width(), 0, maxWidth()); fHorizontalScroll->setBlockIncrement(width()); fHorizontalScroll->setUnitIncrement(8); if (fView) fView->layout(); } bool YListBox::handleAutoScroll(const XMotionEvent & /*mouse*/) { fVerticalScroll->scroll(fAutoScrollDelta); if (fAutoScrollDelta != 0) { int no = -1; if (fAutoScrollDelta < 0) no = findItemByPoint(0, 0); else no = findItemByPoint(0, height() - 1); if (no != -1) setFocusedItem(no, false, true, true); } return true; } void YListBox::autoScroll(int delta, const XMotionEvent *motion) { fAutoScrollDelta = delta; beginAutoScroll(delta ? true : false, motion); } bool YListBox::isItemSelected(int item) { YListItem *i = getItem(item); if (i) return i->getSelected(); return false; } void YListBox::selectItem(int item, bool select) { YListItem *i = getItem(item); if (i && i->getSelected() != select) { i->setSelected(select); //msg("%d=%d", item, select); paintItem(item); } } void YListBox::clearSelection() { for (int i = 0; i < getItemCount(); i++) selectItem(i, false); fSelectStart = fSelectEnd = -1; } void YListBox::applySelection() { PRECONDITION(fDragging == false); if (fSelectStart != -1) { PRECONDITION(fSelectEnd != -1); int beg = (fSelectStart < fSelectEnd) ? fSelectStart : fSelectEnd; int end = (fSelectStart < fSelectEnd) ? fSelectEnd : fSelectStart; for (int n = beg; n <= end ; n++) { YListItem *i = getItem(n); if (i) i->setSelected(fSelect); } } fSelectStart = fSelectEnd = -1; } void YListBox::paintItems(int selStart, int selEnd) { //msg("paint: %d %d", selStart, selEnd); if (selStart == -1) // !!! check return; //PRECONDITION(selStart != -1); PRECONDITION(selEnd != -1); int beg = (selStart < selEnd) ? selStart : selEnd; int end = (selStart < selEnd) ? selEnd : selStart; for (int i = beg; i <= end; i++) paintItem(i); } void YListBox::selectItems(int selStart, int selEnd, bool sel) { PRECONDITION(selStart != -1); PRECONDITION(selEnd != -1); int beg = (selStart < selEnd) ? selStart : selEnd; int end = (selStart < selEnd) ? selEnd : selStart; for (int i = beg; i <= end; i++) selectItem(i, sel); } void YListBox::setFocusedItem(int item, bool clear, bool extend, bool virt) { int oldItem = fFocusedItem; //msg("%d (%d-%d=%d): clear:%d extend:%d virt:%d", // item, fSelectStart, fSelectEnd, fSelect, clear, extend, virt); if (virt) fDragging = true; else { fDragging = false; } bool sel = true; if (oldItem != -1 && extend && !clear) sel = isItemSelected(oldItem); if (clear && !extend) clearSelection(); if (item != -1) { int oldEnd; if (fSelectEnd == -1) oldEnd = item; else oldEnd = fSelectEnd; if (extend && fSelectStart == -1) fSelectStart = oldEnd = oldItem; if (!extend || fSelectStart == -1) { //int oldBeg = fSelectStart; fSelectStart = item; //paintItems(oldBeg, item); } fSelectEnd = item; if (!virt) fSelect = sel; if (clear || extend) { if (virt) paintItems(oldEnd, fSelectEnd); else if (extend) selectItems(fSelectStart, fSelectEnd, sel); else selectItem(item, sel); } } if (item != fFocusedItem) { fFocusedItem = item; if (oldItem != -1) paintItem(oldItem); if (fFocusedItem != -1) paintItem(fFocusedItem); ensureVisibility(fFocusedItem); } } bool YListBox::isSelected(int item) { YListItem *a = getItem(item); if (a == 0) return false; return isSelected(a); } bool YListBox::isSelected(YListItem *item) { // !!! remove this !!! bool s = item->getSelected(); int n = findItem(item); if (n == -1) return false; if (fDragging) { int beg = (fSelectStart < fSelectEnd) ? fSelectStart : fSelectEnd; int end = (fSelectStart < fSelectEnd) ? fSelectEnd : fSelectStart; if (n >= beg && n <= end) { if (fSelect) s = true; else s = false; } } return s; } int YListBox::contentWidth() { return maxWidth(); } int YListBox::contentHeight() { return getItemCount() * getLineHeight(); } YWindow *YListBox::getWindow() { return this; } #endif icewm-1.3.7/src/config.h0000664000076600007660000002175011463274255014047 0ustar develdevel/* src/config.h. Generated from config.h.in by configure. */ /* src/config.h.in. Generated from configure.in by autoheader. */ /* Address bar */ #define CONFIG_ADDRESSBAR 1 /* APM status applet */ #define CONFIG_APPLET_APM 1 /* LCD clock applet */ #define CONFIG_APPLET_CLOCK 1 /* CPU status applet */ #define CONFIG_APPLET_CPU_STATUS 1 /* Mailbox applet */ #define CONFIG_APPLET_MAILBOX 1 /* Network status applet */ #define CONFIG_APPLET_NET_STATUS 1 /* Define to enable X11 core conts. */ /* #undef CONFIG_COREFONTS */ /* Define to use gdk_pixbuf_xlib for image rendering */ #define CONFIG_GDK_PIXBUF_XLIB 1 /* Define to make IceWM more GNOME-friendly */ /* #undef CONFIG_GNOME_MENUS */ /* Define to enable gradient support. */ #define CONFIG_GRADIENTS 1 /* Define to enable GUI events support. */ /* #undef CONFIG_GUIEVENTS */ /* Define to enable internationalization */ #define CONFIG_I18N 1 /* Define when using libiconv */ /* #undef CONFIG_LIBICONV */ /* define how to query the current locale's codeset */ #define CONFIG_NL_CODESETS CODESET, _NL_CTYPE_CODESET_NAME, 0 /* Define to support the X session managment protocol */ #define CONFIG_SESSION 1 /* Define to enable X shape extension */ #define CONFIG_SHAPE 1 /* Define to allow transparent frame borders. */ #define CONFIG_SHAPED_DECORATION 1 /* Taskbar */ #define CONFIG_TASKBAR 1 /* Tooltips */ #define CONFIG_TOOLTIP 1 /* Window tray */ #define CONFIG_TRAY 1 /* preferred Unicode set */ /* #undef CONFIG_UNICODE_SET */ /* OS/2 like window list */ #define CONFIG_WINLIST 1 /* Window menu */ #define CONFIG_WINMENU 1 /* Define to enable x86 assembly code. */ /* #undef CONFIG_X86_ASM */ /* Define to enable XFreeType support. */ #define CONFIG_XFREETYPE 2 /* Define to enable XRANDR extension */ #define CONFIG_XRANDR 1 /* Define if you want to debug IceWM */ /* #undef DEBUG */ /* Define to enable ESD support. */ /* #undef ENABLE_ESD */ /* Define to enable internationalized message */ #define ENABLE_NLS 1 /* Define to enable OSS support. */ /* #undef ENABLE_OSS */ /* Define to enable YIFF support. */ /* #undef ENABLE_YIFF */ /* GNOME1 hints */ #define GNOME1_HINTS 1 /* Define to 1 if you have the `basename' function. */ #define HAVE_BASENAME 1 /* define if nl_langinfo supports CODESET */ /* #undef HAVE_CODESET */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ESD_H */ /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* getloadavg() is available */ #define HAVE_GETLOADAVG2 1 /* Define to 1 if you have the `gettimeofday' function. */ #define HAVE_GETTIMEOFDAY 1 /* Define to 1 if you have the `iconv' function. */ #define HAVE_ICONV 1 /* Define to 1 if you have the `iconv_close' function. */ #define HAVE_ICONV_CLOSE 1 /* Define to 1 if you have the header file. */ #define HAVE_ICONV_H 1 /* Define to 1 if you have the `iconv_open' function. */ #define HAVE_ICONV_OPEN 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_KSTAT_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `esd' library (-lesd). */ /* #undef HAVE_LIBESD */ /* Define to 1 if you have the header file. */ #define HAVE_LIBGEN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LINUX_TASKS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LINUX_THREADS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MACHINE_APMVAR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MACHINE_APM_BIOS_H */ /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* define if have old kstat (Solaris only?) */ /* #undef HAVE_OLD_KSTAT */ /* Define to 1 if you have the `putenv' function. */ #define HAVE_PUTENV 1 /* Define to 1 if you have the header file. */ #define HAVE_SCHED_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `socket' function. */ #define HAVE_SOCKET 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strtol' function. */ #define HAVE_STRTOL 1 /* Define to 1 if you have the `strtoul' function. */ #define HAVE_STRTOUL 1 /* Define to 1 if you have the `sysctlbyname' function. */ /* #undef HAVE_SYSCTLBYNAME */ /* kern.cp_time MIB item is available */ /* #undef HAVE_SYSCTL_CP_TIME */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_DKSTAT_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SOCKET_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSCTL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_UVM_UVM_PARAM_H */ /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_X11_XFT_XFT_H */ /* Define to enable XInternAtoms */ #define HAVE_XINTERNATOMS 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_Y2_Y_H */ /* define if nl_langinfo supports _NL_CTYPE_CODESET_NAME */ /* #undef HAVE__NL_CTYPE_CODESET_NAME */ /* Lite version */ /* #undef LITE */ /* Define to disable preferences support. */ /* #undef NO_CONFIGURE */ /* Define to disable configurable menu support. */ /* #undef NO_CONFIGURE_MENUS */ /* Define to disable keybinding support. */ /* #undef NO_KEYBIND */ /* Define to disable configurable window options support. */ /* #undef NO_WINDOW_OPTIONS */ /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "" /* Define to the full name of this package. */ #define PACKAGE_NAME "" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* Define to the version of this package. */ #define PACKAGE_VERSION "" /* Define as the return type of signal handlers (`int' or `void'). */ #define RETSIGTYPE void /* Define to the type of arg 1 for `select'. */ #define SELECT_TYPE_ARG1 int /* Define to the type of args 2, 3 and 4 for `select'. */ #define SELECT_TYPE_ARG234 (fd_set *) /* Define to the type of arg 5 for `select'. */ #define SELECT_TYPE_ARG5 (struct timeval *) /* The size of `char', as computed by sizeof. */ #define SIZEOF_CHAR 1 /* The size of `int', as computed by sizeof. */ #define SIZEOF_INT 4 /* The size of `long', as computed by sizeof. */ #define SIZEOF_LONG 8 /* The size of `short', as computed by sizeof. */ #define SIZEOF_SHORT 2 /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define to 1 if you can safely include both and . */ #define TIME_WITH_SYS_TIME 1 /* Define to 1 if your declares `struct tm'. */ /* #undef TM_IN_SYS_TIME */ /* wmspec hints */ #define WMSPEC_HINTS 1 /* Define to enable Xinerama support */ #define XINERAMA 1 /* Define to 1 if the X Window System is missing or not being used. */ /* #undef X_DISPLAY_MISSING */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ icewm-1.3.7/src/upath.cc0000664000076600007660000000275611463274240014060 0ustar develdevel/* * IceWM * * Copyright (C) 2004,2005 Marko Macek */ #include "config.h" #pragma implementation #include "upath.h" #include "unistd.h" #include #include upath upath::parent() const { return null; } pstring upath::name() const { return null; } upath upath::relative(const upath &npath) const { if (path().endsWith("/") || npath.path().startsWith("/")) return upath(path().append(npath.path())); else return upath(path().append("/").append(npath.path())); } upath upath::child(const char *npath) const { if (path().endsWith("/")) return upath(path().append(npath)); else return upath(path().append("/").append(npath)); } upath upath::addExtension(const char *ext) const { return upath(path().append(ext)); } bool upath::isAbsolute() { return path().startsWith("/"); } bool upath::fileExists() { struct stat sb; cstring cs(path()); return (stat(cs.c_str(), &sb) == 0 && S_ISREG(sb.st_mode)); } bool upath::dirExists() { struct stat sb; cstring cs(path()); return (stat(cs.c_str(), &sb) == 0 && S_ISDIR(sb.st_mode)); } bool upath::isReadable() { return access(R_OK) == 0; } int upath::access(int mode) { cstring cs(fPath); return ::access(cs.c_str(), mode); } bool upath::equals(const upath &s) const { if (path() == null) { if (s.path() == null) return true; else return false; } else return fPath.equals(s.path()); } icewm-1.3.7/src/objbutton.h0000644000076600007660000000161711463274240014600 0ustar develdevel#ifndef __OBJBUTTON_H #define __OBJBUTTON_H #include "ybutton.h" #include "ymenu.h" class Program; class ObjectButton: public YButton { public: ObjectButton(YWindow *parent, DObject *object): YButton(parent, 0), fObject(object) {} ObjectButton(YWindow *parent, YMenu *popup): YButton(parent, 0, popup), fObject(NULL) {} ObjectButton(YWindow *parent, YAction *action): YButton(parent, action, 0), fObject(NULL) { /* hack */ } virtual ~ObjectButton() {} virtual void actionPerformed(YAction *action, unsigned int modifiers); virtual ref getFont(); virtual YColor * getColor(); virtual YSurface getSurface(); private: DObject *fObject; static ref font; static YColor *bgColor; static YColor *fgColor; }; extern ref toolbuttonPixmap; #ifdef CONFIG_GRADIENTS extern ref toolbuttonPixbuf; #endif #endif icewm-1.3.7/src/wmabout.h0000644000076600007660000000106711463274240014247 0ustar develdevel#ifndef __ABOUT_H #define __ABOUT_H #include "ydialog.h" #include "ylabel.h" class AboutDlg: public YDialog { public: AboutDlg(); void autoSize(); void showFocused(); virtual void handleClose(); private: YLabel *fProgTitle; YLabel *fCopyright; YLabel *fThemeName; YLabel *fThemeDescription; YLabel *fThemeAuthor; YLabel *fThemeNameS; YLabel *fThemeDescriptionS; YLabel *fThemeAuthorS; YLabel *fCodeSetS; YLabel *fCodeSet; YLabel *fLanguageS; YLabel *fLanguage; }; extern AboutDlg *aboutDlg; #endif icewm-1.3.7/src/yarray.h0000644000076600007660000002030611463274240014075 0ustar develdevel/* * IceWM - Simple dynamic array * Copyright (C) 2001 The Authors of IceWM * * Release under terms of the GNU Library General Public License * * 2001/04/14: Mathias Hasselmann * - initial version * 2002/07/31: Mathias Hasselmann * - major rewrite of the code * - introduced YBaseArray to reduce overhead caused by templates * - introduced YObjectArray for easy memory management * - introduced YStringArray */ #ifndef __YARRAY_H #define __YARRAY_H #include "config.h" #include "base.h" #include "ref.h" /******************************************************************************* * A dynamic array for anonymous data ******************************************************************************/ class YBaseArray { public: typedef int SizeType; typedef unsigned char StorageType; explicit YBaseArray(SizeType elementSize): fElementSize(elementSize), fCapacity(0), fCount(0), fElements(0) {} YBaseArray(YBaseArray &other); virtual ~YBaseArray() { clear(); } void append(const void *item); void insert(const SizeType index, const void *item); virtual void remove(const SizeType index); virtual void clear(); SizeType getCapacity() const { return fCapacity; } SizeType getCount() const { return fCount; } bool isEmpty() const { return 0 == getCount(); } void setCapacity(SizeType nCapacity); static const SizeType npos = (SizeType) -1; protected: const StorageType *getElement(const SizeType index) const { return fElements + (index * fElementSize); } StorageType *getElement(const SizeType index) { return fElements + (index * fElementSize); } const void *getBegin() const { return getElement(0); } const void *getEnd() const { return getElement(getCount()); } void release(); public: SizeType getIndex(void const * ptr) const { PRECONDITION(ptr >= getBegin() && ptr < getEnd()); return (ptr >= getBegin() && ptr < getEnd() ? ((StorageType *) ptr - fElements) / fElementSize : npos); } const void *getItem(const SizeType index) const { PRECONDITION(index < getCount()); return (index < getCount() ? getElement(index) : 0); } void *getItem(const SizeType index) { PRECONDITION(index < getCount()); return (index < getCount() ? getElement(index) : 0); } const void *operator[](const SizeType index) const { return getItem(index); } void *operator[](const SizeType index) { return getItem(index); } private: YBaseArray(const YBaseArray &) {} // not implemented SizeType fElementSize, fCapacity, fCount; StorageType *fElements; }; /******************************************************************************* * A dynamic array for typed data ******************************************************************************/ template class YArray: public YBaseArray { public: YArray(): YBaseArray(sizeof(DataType)) {} void append(const DataType &item) { YBaseArray::append(&item); } void insert(const SizeType index, const DataType &item) { YBaseArray::insert(index, &item); } const DataType *getItemPtr(const SizeType index) const { return (const DataType *) YBaseArray::getItem(index); } const DataType &getItem(const SizeType index) const { return *getItemPtr(index); } const DataType &operator[](const SizeType index) const { return getItem(index); } const DataType &operator*() const { return getItem(0); } DataType *getItemPtr(const SizeType index) { return (DataType *) YBaseArray::getItem(index); } DataType &getItem(const SizeType index) { return *getItemPtr(index); } DataType &operator[](const SizeType index) { return getItem(index); } DataType &operator*() { return getItem(0); } #if 0 virtual SizeType find(const DataType &item) { for (SizeType i = 0; i < getCount(); ++i) if (getItem(i) == item) return i; return npos; } #endif }; /******************************************************************************* * An array of objects ******************************************************************************/ template class YObjectArray: public YArray { public: virtual ~YObjectArray() { clear(); } virtual void remove(const typename YArray::SizeType index) { if (index < YArray::getCount()) delete getItem(index); YArray::remove(index); } virtual void clear() { for (typename YArray::SizeType i = 0; i < YArray::getCount(); ++i) delete YArray::getItem(i); YArray::clear(); } }; template class YRefArray: public YBaseArray { public: YRefArray(): YBaseArray(sizeof(ref)) {} void append(ref &item) { ref r = item; r.__ref(); YBaseArray::append(&r); } void insert(const SizeType index, ref &item) { ref r = item; r.__ref(); YBaseArray::insert(index, &r); } ref getItem(const SizeType index) const { ref r = *(ref *)YBaseArray::getItem(index); return r; } ref operator[](const SizeType index) const { return getItem(index); } virtual void remove(const typename YArray *>::SizeType index) { if (index < getCount()) ((ref *)YBaseArray::getItem(index))->__unref(); YBaseArray::remove(index); } virtual void clear() { for (typename YArray *>::SizeType i = 0; i < getCount(); ++i) ((ref *)YBaseArray::getItem(i))->__unref(); YBaseArray::clear(); } }; /******************************************************************************* * An array of strings ******************************************************************************/ #if 1 class YStringArray: public YBaseArray { public: YStringArray(YStringArray &other): YBaseArray((YBaseArray&)other) {} YStringArray(const YStringArray &other); explicit YStringArray(SizeType capacity = 0): YBaseArray(sizeof(char *)) { setCapacity(capacity); } virtual ~YStringArray() { clear(); } void append(const char *str) { char *s = newstr(str); YBaseArray::append(&s); } void insert(const SizeType index, const char *str) { char *s = newstr(str); YBaseArray::insert(index, &s); } const char *getString(const SizeType index) const { return *(const char **) YBaseArray::getItem(index); } const char *operator[](const SizeType index) const { return getString(index); } const char *operator*() const { return getString(0); } virtual void remove(const SizeType index); virtual void clear(); virtual SizeType find(const char *str); char *const *getCArray() const; char **release(); }; #endif /******************************************************************************* * A stack emulated by a dynamic array ******************************************************************************/ template class YStack: public YArray { public: const DataType &getTop() const { return getItem(YArray::getCount() - 1); } const DataType &operator*() const { return getTop(); } virtual void push(const DataType &item) { append(item); } void pop() { remove(YArray::getCount() - 1); } }; /******************************************************************************* * A set emulated by a stack ******************************************************************************/ template class YStackSet: public YStack { public: virtual void push(const DataType &item) { const typename YArray::SizeType index = find(item); remove(index); YStack::push(item); } }; #endif icewm-1.3.7/src/yinputline.h0000644000076600007660000000422511463274240014770 0ustar develdevel#ifndef __YINPUT_H #define __YINPUT_H #include "ywindow.h" #include "ytimer.h" #include "yaction.h" class YMenu; class YInputLine: public YWindow, public YTimerListener, public YActionListener { public: YInputLine(YWindow *parent = 0); virtual ~YInputLine(); void setText(const ustring &text); ustring getText(); virtual void paint(Graphics &g, const YRect &r); virtual bool handleKey(const XKeyEvent &key); virtual void handleButton(const XButtonEvent &button); virtual void handleMotion(const XMotionEvent &motion); virtual void handleFocus(const XFocusChangeEvent &focus); virtual void handleClickDown(const XButtonEvent &down, int count); virtual void handleClick(const XButtonEvent &up, int count); virtual void actionPerformed(YAction *action, unsigned int modifiers); virtual void handleSelection(const XSelectionEvent &selection); bool move(int pos, bool extend); bool hasSelection() const { return (curPos != markPos) ? true : false; } void replaceSelection(const ustring &str); bool deleteSelection(); bool deleteNextChar(); bool deletePreviousChar(); bool insertChar(char ch); int nextWord(int pos, bool sep); int prevWord(int pos, bool sep); bool deleteNextWord(); bool deletePreviousWord(); bool deleteToEnd(); bool deleteToBegin(); void selectAll(); void unselectAll(); void cutSelection(); void copySelection(); private: ustring fText; int markPos; int curPos; int leftOfs; bool fHasFocus; bool fCursorVisible; bool fSelecting; static int fAutoScrollDelta; void limit(); int offsetToPos(int offset); void autoScroll(int delta, const XMotionEvent *mouse); virtual bool handleTimer(YTimer *timer); virtual bool handleAutoScroll(const XMotionEvent &mouse); static YColor *inputBg; static YColor *inputFg; static YColor *inputSelectionBg; static YColor *inputSelectionFg; static ref inputFont; static YTimer *cursorBlinkTimer; static YMenu *inputMenu; private: // not-used YInputLine(const YInputLine &); YInputLine &operator=(const YInputLine &); }; #endif icewm-1.3.7/src/atray.cc0000644000076600007660000002543611463274240014055 0ustar develdevel/* * IceWM - Window tray * Copyright (C) 2001 The Authors of IceWM * * Release under terms of the GNU Library General Public License * * 2001/05/15: Jan Krupa * - initial version * 2001/05/27: Mathias Hasselmann * - ported to IceWM 1.0.9 (gradients, ...) * * TODO: share code with atask.cc */ #include "config.h" #ifdef CONFIG_TRAY #include "ylib.h" #include "ypixbuf.h" #include "atray.h" #include "wmtaskbar.h" #include "yprefs.h" #include "prefs.h" #include "yxapp.h" #include "wmmgr.h" #include "wmframe.h" #include "wmwinlist.h" #include "yrect.h" #include "yicon.h" #include static YColor *taskBarBg = 0; static YColor *normalTrayAppFg = 0; static YColor *normalTrayAppBg = 0; static YColor *activeTrayAppFg = 0; static YColor *activeTrayAppBg = 0; static YColor *minimizedTrayAppFg = 0; static YColor *minimizedTrayAppBg = 0; static YColor *invisibleTrayAppFg = 0; static YColor *invisibleTrayAppBg = 0; static ref normalTrayFont; static ref activeTrayFont; #ifdef CONFIG_GRADIENTS ref TrayApp::taskMinimizedGradient; ref TrayApp::taskActiveGradient; ref TrayApp::taskNormalGradient; #endif TrayApp::TrayApp(ClientData *frame, YWindow *aParent): YWindow(aParent) { if (normalTrayAppFg == 0) { normalTrayAppBg = new YColor(clrNormalTaskBarApp); normalTrayAppFg = new YColor(clrNormalTaskBarAppText); activeTrayAppBg = new YColor(clrActiveTaskBarApp); activeTrayAppFg = new YColor(clrActiveTaskBarAppText); minimizedTrayAppBg = new YColor(clrNormalTaskBarApp); minimizedTrayAppFg = new YColor(clrMinimizedTaskBarAppText); invisibleTrayAppBg = new YColor(clrNormalTaskBarApp); invisibleTrayAppFg = new YColor(clrInvisibleTaskBarAppText); normalTrayFont = YFont::getFont(XFA(normalTaskBarFontName)); activeTrayFont = YFont::getFont(XFA(activeTaskBarFontName)); } fFrame = frame; fPrev = fNext = 0; selected = 0; fShown = true; setToolTip(frame->getTitle()); //setDND(true); } TrayApp::~TrayApp() { if (fRaiseTimer && fRaiseTimer->getTimerListener() == this) { fRaiseTimer->stopTimer(); fRaiseTimer->setTimerListener(0); } } bool TrayApp::isFocusTraversable() { return true; } void TrayApp::setShown(bool ashow) { if (ashow != fShown) { fShown = ashow; } } void TrayApp::paint(Graphics &g, const YRect &/*r*/) { YColor *bg, *fg; ref bgPix; #ifdef CONFIG_GRADIENTS ref bgGrad; #endif int p(0); #ifdef CONFIG_GRADIENTS int sx(parent() ? x() + parent()->x() : x()); int sy(parent() ? y() + parent()->y() : y()); unsigned sw((parent() && parent()->parent() ? parent()->parent() : this)->width()); unsigned sh((parent() && parent()->parent() ? parent()->parent() : this)->height()); #endif if (!getFrame()->visibleNow()) { bg = invisibleTrayAppBg; fg = invisibleTrayAppFg; bgPix = taskbackPixmap; #ifdef CONFIG_GRADIENTS bgGrad = getGradient(); #endif } else if (getFrame()->isMinimized()) { bg = minimizedTrayAppBg; fg = minimizedTrayAppFg; bgPix = taskbuttonminimizedPixmap; #ifdef CONFIG_GRADIENTS if (taskMinimizedGradient == null && taskbuttonminimizedPixbuf != null) taskMinimizedGradient = taskbuttonminimizedPixbuf->scale(sw, sh); bgGrad = taskMinimizedGradient; #endif } else if (getFrame()->focused()) { bg = activeTrayAppBg; fg = activeTrayAppFg; bgPix = taskbuttonactivePixmap; #ifdef CONFIG_GRADIENTS if (taskActiveGradient == null && taskbuttonactivePixbuf != null) taskActiveGradient = taskbuttonactivePixbuf->scale(sw, sh); bgGrad = taskActiveGradient; #endif } else { bg = normalTrayAppBg; fg = normalTrayAppFg; bgPix = taskbuttonPixmap; #ifdef CONFIG_GRADIENTS if (taskNormalGradient == null && taskbuttonPixbuf != null) taskNormalGradient = taskbuttonPixbuf->scale(sw, sh); bgGrad = taskNormalGradient; #endif } if (selected == 3) { p = 2; g.setColor(YColor::black); g.drawRect(0, 0, width() - 1, height() - 1); g.setColor(bg); g.fillRect(1, 1, width() - 2, height() - 2); } else { if (width() > 0 && height() > 0) { #ifdef CONFIG_GRADIENTS if (bgGrad != null) g.drawImage(bgGrad, sx, sy, width(), height(), 0, 0); else #endif if (bgPix != null) g.fillPixmap(bgPix, 0, 0, width(), height(), 0, 0); else { g.setColor(bg); g.fillRect(0, 0, width(), height()); } } } ref icon(getFrame()->getIcon()); if (icon != null) { icon->draw(g, 2, 2, YIcon::smallSize()); } } void TrayApp::handleButton(const XButtonEvent &button) { YWindow::handleButton(button); if (button.button == 1 || button.button == 2) { if (button.type == ButtonPress) { selected = 2; repaint(); } else if (button.type == ButtonRelease) { if (selected == 2) { if (button.button == 1) { if (getFrame()->visibleNow() && (!getFrame()->canRaise() || (button.state & ControlMask))) getFrame()->wmMinimize(); else { if (button.state & ShiftMask) getFrame()->wmOccupyOnlyWorkspace(manager->activeWorkspace()); getFrame()->activateWindow(true); } } else if (button.button == 2) { if (getFrame()->visibleNow() && (!getFrame()->canRaise() || (button.state & ControlMask))) getFrame()->wmLower(); else { if (button.state & ShiftMask) getFrame()->wmOccupyWorkspace(manager->activeWorkspace()); getFrame()->activateWindow(true); } } } selected = 0; repaint(); } } } void TrayApp::handleCrossing(const XCrossingEvent &crossing) { if (selected > 0) { if (crossing.type == EnterNotify) { selected = 2; repaint(); } else if (crossing.type == LeaveNotify) { selected = 1; repaint(); } } YWindow::handleCrossing(crossing); } void TrayApp::handleClick(const XButtonEvent &up, int /*count*/) { if (up.button == 3) { getFrame()->popupSystemMenu(this, up.x_root, up.y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu); } } void TrayApp::handleDNDEnter() { if (fRaiseTimer == 0) fRaiseTimer = new YTimer(autoRaiseDelay); if (fRaiseTimer) { fRaiseTimer->setTimerListener(this); fRaiseTimer->startTimer(); } selected = 3; repaint(); } void TrayApp::handleDNDLeave() { if (fRaiseTimer && fRaiseTimer->getTimerListener() == this) { fRaiseTimer->stopTimer(); fRaiseTimer->setTimerListener(0); } selected = 0; repaint(); } bool TrayApp::handleTimer(YTimer *t) { if (t == fRaiseTimer) { getFrame()->wmRaise(); } return false; } TrayPane::TrayPane(IAppletContainer *taskBar, YWindow *parent): YWindow(parent) { fTaskBar = taskBar; if (taskBarBg == 0) taskBarBg = new YColor(clrDefaultTaskBar); fFirst = fLast = 0; fCount = 0; fNeedRelayout = true; } TrayPane::~TrayPane() { } void TrayPane::insert(TrayApp *tapp) { fCount++; tapp->setNext(0); tapp->setPrev(fLast); if (fLast) fLast->setNext(tapp); else fFirst = tapp; fLast = tapp; } void TrayPane::remove(TrayApp *tapp) { fCount--; if (tapp->getPrev()) tapp->getPrev()->setNext(tapp->getNext()); else fFirst = tapp->getNext(); if (tapp->getNext()) tapp->getNext()->setPrev(tapp->getPrev()); else fLast = tapp->getPrev(); } TrayApp *TrayPane::addApp(YFrameWindow *frame) { #ifdef CONFIG_WINLIST if (frame->client() == windowList) return 0; #endif if (frame->client() == taskBar) return 0; TrayApp *tapp = new TrayApp(frame, this); if (tapp != 0) { insert(tapp); tapp->show(); if (!(frame->visibleOn(manager->activeWorkspace()) || trayShowAllWindows)) tapp->setShown(0); relayout(); } return tapp; } void TrayPane::removeApp(YFrameWindow *frame) { for (TrayApp *icon(fFirst); NULL != icon; icon = icon->getNext()) { if (icon->getFrame() == frame) { icon->hide(); remove(icon); delete icon; relayout(); return; } } } int TrayPane::getRequiredWidth() { int tc = 0; for (TrayApp *a(fFirst); a != NULL; a = a->getNext()) if (a->getShown()) tc++; return (tc ? 4 + tc * (height() - 4) : 1); } void TrayPane::relayoutNow() { if (!fNeedRelayout) return ; fNeedRelayout = false; int nw = getRequiredWidth(); if (nw != width()) { MSG(("tray: nw=%d x=%d w=%d", nw, x(), width())); setGeometry(YRect(x() + width() - nw, y(), nw, height())); fTaskBar->relayout(); } int x, y, w, h; int tc = 0; for (TrayApp *a(fFirst); a != NULL; a = a->getNext()) if (a->getShown()) tc++; w = h = height() - 4; x = width() - 2 - tc * w; y = 2; for (TrayApp *f(fFirst); f != NULL; f = f->getNext()) { if (f->getShown()) { f->setGeometry(YRect(x, y, w, h)); f->show(); x += w; } else f->hide(); } } void TrayPane::handleClick(const XButtonEvent &up, int count) { if (up.button == 3 && count == 1 && IS_BUTTON(up.state, Button3Mask)) { fTaskBar->contextMenu(up.x_root, up.y_root); } } void TrayPane::paint(Graphics &g, const YRect &/*r*/) { int const w(width()); int const h(height()); g.setColor(taskBarBg); #ifdef CONFIG_GRADIENTS ref gradient(parent() ? parent()->getGradient() : null); if (gradient != null) g.drawImage(gradient, x(), y(), w, h, 0, 0); else #endif if (taskbackPixmap != null) g.fillPixmap(taskbackPixmap, 0, 0, w, h, x(), y()); else g.fillRect(0, 0, w, h); if (trayDrawBevel && w > 1) { if (wmLook == lookMetal) g.draw3DRect(1, 1, w - 2, h - 2, false); else g.draw3DRect(0, 0, w - 1, h - 1, false); } } #endif icewm-1.3.7/src/testnetwmhints.cc0000644000076600007660000003330011463274240016022 0ustar develdevel#include #include #include #include #include #include #include #include #include #include #include #include #include "WinMgr.h" /// _SET would be nice to have #define _NET_WM_STATE_REMOVE 0 #define _NET_WM_STATE_ADD 1 #define _NET_WM_STATE_TOGGLE 2 #define KEY_MODMASK(x) ((x) & (ControlMask | ShiftMask | Mod1Mask)) #define BUTTON_MASK(x) ((x) & (Button1Mask | Button2Mask | Button3Mask)) #define BUTTON_MODMASK(x) ((x) & (ControlMask | ShiftMask | Mod1Mask | Button1Mask | Button2Mask | Button3Mask)) static char *displayName = 0; static Display *display = 0; static Colormap defaultColormap; static Window root = None; static Window window = None; ///static GC gc; static long workspaceCount = 4; static long activeWorkspace = 0; static long windowWorkspace = 0; //static long state[10] = { 0, 0 }; ///static bool sticky = false; ///static bool fullscreen = true; static Atom _XA_WIN_WORKSPACE; static Atom _XA_WIN_WORKSPACE_NAMES; static Atom _XA_WIN_STATE; static Atom _XA_WIN_LAYER; static Atom _XA_NET_WM_STATE; static Atom _XA_NET_WM_STATE_FULLSCREEN; static Atom _XA_NET_WM_STATE_ABOVE; static Atom _XA_NET_WM_STATE_BELOW; static Atom _XA_NET_WM_STATE_MODAL; static Atom _XA_NET_WM_STATE_SKIP_TASKBAR; static Atom _XA_NET_WM_MOVERESIZE; void changeWorkspace(Window w, long workspace) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = w; xev.message_type = _XA_WIN_WORKSPACE; xev.format = 32; xev.data.l[0] = workspace; xev.data.l[1] = CurrentTime; //xev.data.l[1] = timeStamp; XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); } void moveResize(Window w, int x, int y, int what) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = w; xev.message_type = _XA_NET_WM_MOVERESIZE; xev.format = 32; xev.data.l[0] = x; xev.data.l[1] = y; //xev.data.l[1] = timeStamp; xev.data.l[2] = what; XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); } void toggleState(Window w, Atom toggle_state) { XClientMessageEvent xev; puts("toggle state"); memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = w; xev.message_type = _XA_NET_WM_STATE; xev.format = 32; xev.data.l[0] = _NET_WM_STATE_TOGGLE; xev.data.l[1] = (long)toggle_state; ///xev.data.l[4] = CurrentTime; //xev.data.l[1] = timeStamp; XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); } void setLayer(Window w, long layer) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = w; xev.message_type = _XA_WIN_LAYER; xev.format = 32; xev.data.l[0] = layer; xev.data.l[1] = CurrentTime; //xev.data.l[1] = timeStamp; XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); } #if 0 void setTrayHint(Window w, long tray_opt) { XClientMessageEvent xev; memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.window = w; xev.message_type = _XA_WIN_TRAY; xev.format = 32; xev.data.l[0] = tray_opt; xev.data.l[1] = CurrentTime; //xev.data.l[1] = timeStamp; XSendEvent(display, root, False, SubstructureNotifyMask, (XEvent *) &xev); } #endif int main(/*int argc, char **argv*/) { XSetWindowAttributes attr; Atom state[1]; XClassHint *classHint = NULL; assert((display = XOpenDisplay(displayName)) != 0); root = RootWindow(display, DefaultScreen(display)); defaultColormap = DefaultColormap(display, DefaultScreen(display)); _XA_WIN_WORKSPACE = XInternAtom(display, XA_WIN_WORKSPACE, False); _XA_WIN_WORKSPACE_NAMES = XInternAtom(display, XA_WIN_WORKSPACE_NAMES, False); /// _XA_WIN_STATE = XInternAtom(display, XA_WIN_STATE, False); _XA_WIN_LAYER = XInternAtom(display, XA_WIN_LAYER, False); /// _XA_WIN_WORKAREA = XInternAtom(display, XA_WIN_WORKAREA, False); /// _XA_WIN_TRAY = XInternAtom(display, XA_WIN_TRAY, False); _XA_NET_WM_STATE = XInternAtom(display, "_NET_WM_STATE", False); _XA_NET_WM_STATE_FULLSCREEN = XInternAtom(display, "_NET_WM_STATE_FULLSCREEN", False); _XA_NET_WM_STATE_ABOVE = XInternAtom(display, "_NET_WM_STATE_ABOVE", False); _XA_NET_WM_STATE_BELOW = XInternAtom(display, "_NET_WM_STATE_BELOW", False); _XA_NET_WM_STATE_MODAL = XInternAtom(display, "_NET_WM_STATE_MODAL", False); _XA_NET_WM_STATE_SKIP_TASKBAR = XInternAtom(display, "_NET_WM_STATE_SKIP_TASKBAR", False); _XA_NET_WM_MOVERESIZE = XInternAtom(display, "_NET_WM_MOVERESIZE", False); state[0] = _XA_NET_WM_STATE_FULLSCREEN; window = XCreateWindow(display, root, 0, 0, 64, 64, 0, CopyFromParent, InputOutput, CopyFromParent, 0, &attr); XSetWindowBackground(display, window, BlackPixel(display, DefaultScreen(display))); classHint = XAllocClassHint(); classHint->res_name = (char *)"name:1"; classHint->res_class = (char *)"class 1"; XSetClassHint(display, window, classHint); XSelectInput(display, window, ExposureMask | StructureNotifyMask | ButtonPressMask | ButtonReleaseMask | KeyPressMask | KeyReleaseMask | PropertyChangeMask); XSelectInput(display, root, PropertyChangeMask); XMapRaised(display, window); while (1) { XEvent xev; /// XButtonEvent &button = xev.xbutton; XPropertyEvent &property = xev.xproperty; XKeyEvent &key = xev.xkey; XNextEvent(display, &xev); switch (xev.type) { case KeyPress: { unsigned int k = XKeycodeToKeysym(display, key.keycode, 0); unsigned int m = KEY_MODMASK(key.state); if (k == XK_Left && m == 0) changeWorkspace(root, (workspaceCount + activeWorkspace - 1) % workspaceCount); else if (k == XK_Right && m == 0) changeWorkspace(root, (activeWorkspace + 1) % workspaceCount); else if (k == XK_Left && m == ShiftMask) changeWorkspace(window, (workspaceCount + windowWorkspace - 1) % workspaceCount); else if (k == XK_Right && m == ShiftMask) changeWorkspace(window, (windowWorkspace + 1) % workspaceCount); else if (k == 'f') toggleState(window, _XA_NET_WM_STATE_FULLSCREEN); else if (k == 'a') toggleState(window, _XA_NET_WM_STATE_ABOVE); else if (k == 'b') toggleState(window, _XA_NET_WM_STATE_BELOW); else if (k == 'm') toggleState(window, _XA_NET_WM_STATE_MODAL); else if (k == 't') toggleState(window, _XA_NET_WM_STATE_SKIP_TASKBAR); #if 0 //toggleState(window, WinStateAllWorkspaces); /* else if (k == 'd') toggleState(window, WinStateDockHorizontal); */ else if (k == '0') setLayer(window, WinLayerDesktop); else if (k == '1') setLayer(window, WinLayerBelow); else if (k == '2') setLayer(window, WinLayerNormal); else if (k == '3') setLayer(window, WinLayerOnTop); else if (k == '4') setLayer(window, WinLayerDock); else if (k == '5') setLayer(window, WinLayerAboveDock); #endif else if (k == 'm') { printf("%d %d\n", key.x_root, key.y_root); moveResize(window, key.x_root, key.y_root, 8); // move } else if (k == 'r') { printf("%d %d\n", key.x_root, key.y_root); moveResize(window, key.x_root, key.y_root, 4); // _| } } break; case PropertyNotify: { Atom r_type; int r_format; unsigned long count; unsigned long bytes_remain; unsigned char *prop; if (property.window == root) { if (property.atom == _XA_WIN_WORKSPACE) { if (XGetWindowProperty(display, root, _XA_WIN_WORKSPACE, 0, 1, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 1) { activeWorkspace = ((long *)prop)[0]; printf("active=%ld of %ld\n", activeWorkspace, workspaceCount); } XFree(prop); } } else if (property.atom == _XA_WIN_WORKSPACE_NAMES) { #if 0 } else if (property.atom == _XA_WIN_WORKAREA) { if (XGetWindowProperty(display, root, _XA_WIN_WORKAREA, 0, 4, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 4) { long *area = (long *)prop; printf("workarea: min=%d,%d max=%d,%d\n", area[0], area[1], area[2], area[3]); } XFree(prop); } #endif } } else if (property.window == window) { if (property.atom == _XA_WIN_WORKSPACE) { if (XGetWindowProperty(display, window, _XA_WIN_WORKSPACE, 0, 1, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 1) { windowWorkspace = ((long *)prop)[0]; printf("window=%ld of %ld\n", windowWorkspace, workspaceCount); } XFree(prop); } } else if (property.atom == _XA_WIN_STATE) { if (XGetWindowProperty(display, window, _XA_WIN_STATE, 0, 2, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 2) { state[0] = ((long *)prop)[0]; state[1] = ((long *)prop)[1]; printf("state=%lX %lX\n", state[0], state[1]); } XFree(prop); } } else if (property.atom == _XA_WIN_LAYER) { if (XGetWindowProperty(display, window, _XA_WIN_LAYER, 0, 1, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 1) { long layer = ((long *)prop)[0]; printf("layer=%ld\n", layer); } XFree(prop); } } /*else if (property.atom == _XA_WIN_TRAY) { if (XGetWindowProperty(display, window, _XA_WIN_TRAY, 0, 1, False, XA_CARDINAL, &r_type, &r_format, &count, &bytes_remain, &prop) == Success && prop) { if (r_type == XA_CARDINAL && r_format == 32 && count == 1) { long tray = ((long *)prop)[0]; printf("tray option=%d\n", tray); } } }*/ } } } } } icewm-1.3.7/src/ytooltip.cc0000644000076600007660000000537711463274240014622 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2001 Marko Macek */ #include "config.h" #include "ytooltip.h" #ifdef CONFIG_TOOLTIP #include "base.h" #include "prefs.h" #include "yprefs.h" #include YColor *YToolTip::toolTipBg = 0; YColor *YToolTip::toolTipFg = 0; ref YToolTip::toolTipFont; YTimer *YToolTip::fToolTipVisibleTimer = 0; YToolTip::YToolTip(YWindow *aParent): YWindow(aParent), fText(null) { if (toolTipBg == 0) toolTipBg = new YColor(clrToolTip); if (toolTipFg == 0) toolTipFg = new YColor(clrToolTipText); if (toolTipFont == null) toolTipFont = YFont::getFont(XFA(toolTipFontName)); setStyle(wsOverrideRedirect); } YToolTip::~YToolTip() { if (fToolTipVisibleTimer) { if (fToolTipVisibleTimer->getTimerListener() == this) { fToolTipVisibleTimer->setTimerListener(0); fToolTipVisibleTimer->stopTimer(); } } } void YToolTip::paint(Graphics &g, const YRect &/*r*/) { g.setColor(toolTipBg); g.fillRect(0, 0, width(), height()); g.setColor(YColor::black); g.drawRect(0, 0, width() - 1, height() - 1); if (fText != null) { int y = toolTipFont->ascent() + 2; g.setFont(toolTipFont); g.setColor(toolTipFg); g.drawStringMultiline(3, y, fText); } } void YToolTip::setText(const ustring &tip) { fText = tip; if (fText != null) { YDimension const size(toolTipFont->multilineAlloc(fText)); setSize(size.w + 6, size.h + 7); //!!! merge with below code in locate int x = this->x(); int y = this->y(); if (x + width() >= desktop->width()) x = desktop->width() - width(); if (y + height() >= desktop->height()) y = desktop->height() - height(); if (y < 0) y = 0; if (x < 0) x = 0; setPosition(x, y); } repaint(); } bool YToolTip::handleTimer(YTimer *t) { if (t == fToolTipVisibleTimer && fToolTipVisibleTimer) hide(); else display(); return false; } void YToolTip::display() { raise(); show(); if (!fToolTipVisibleTimer && ToolTipTime > 0) fToolTipVisibleTimer = new YTimer(ToolTipTime); if (fToolTipVisibleTimer) { fToolTipVisibleTimer->setTimerListener(this); fToolTipVisibleTimer->startTimer(); } } void YToolTip::locate(YWindow *w, const XCrossingEvent &/*crossing*/) { int x, y; x = w->width() / 2; y = w->height(); w->mapToGlobal(x, y); x -= width() / 2; if (x + width() >= desktop->width()) x = desktop->width() - width(); if (y + height() >= desktop->height()) y -= height() + w->height(); if (y < 0) y = 0; if (x < 0) x = 0; setPosition(x, y); } #endif icewm-1.3.7/src/.cvsignore0000644000076600007660000000033511463274240014415 0ustar develdevel*.d *.o Makefile config.h config.h.in genpref icehelp icesh icewm icewmbg icewmhint icesound icewm-session icewmtray testarray testdesktop testgnomevfs testlocale testwinhints icewm-menu-gnome1 icewm-menu-gnome2 Makefile icewm-1.3.7/src/ypixbuf.h0000644000076600007660000000745311463274240014264 0ustar develdevel/* * IceWM - Definition of a RGB pixel buffer encapsulating libxpm, Imlib * or gdk-pixbuf and a scaler for RGB pixel buffers * * Copyright (C) 2001 The Authors of IceWM * * Released under terms of the GNU Library General Public License */ #ifndef __YPIXBUF_H #define __YPIXBUF_H void pixbuf_scale(unsigned char *source, int source_rowstride, int source_width, int source_height, unsigned char *dest, int dest_rowstride, int dest_width, int dest_height, bool alpha); #if 0 #include "ref.h" #include "upath.h" #ifdef CONFIG_XPM #include #endif #endif #if 0 #ifdef CONFIG_IMLIB extern "C" { #include } #endif #endif #if 0 class YPixbuf: public refcounted { public: static ref create(int w, int h, bool mask = false); static ref load(upath filename); ref scale(int width, int height); static ref createFromPixmapAndMaskScaled(Pixmap pix, Pixmap mask, int width, int height, int nw, int nh); #ifdef CONFIG_ANTIALIASING typedef unsigned char Pixel; YPixbuf(upath filename, bool fullAlpha = true); YPixbuf(int const width, int const height); YPixbuf(Drawable drawable, Pixmap mask, int dWidth, int dHeight, int width, int height, int x = 0, int y = 0); ~YPixbuf(); void copyArea(YPixbuf const & src, int sx, int sy, int w, int h, int dx, int dy); void copyToDrawable(Drawable drawable, GC gc, int const sx, int const sy, int const w, int const h, int const dx, int const dy, bool useAlpha = true); void copyAlphaToMask(Pixmap pixmap, GC gc, int sx, int sy, int w, int h, int dx, int dy); #endif #if defined(CONFIG_ANTIALIASING) || defined(CONFIG_IMLIB) static ref scale(ref source, int const width, int const height); private: YPixbuf(const ref &source, int const width, int const height); public: #endif static bool init(); #ifdef CONFIG_ANTIALIASING #ifdef CONFIG_XPM Pixel * pixels() const { return fPixels; } Pixel * alpha() const { return fAlpha; } int width() const { return fWidth; } int height() const { return fHeight; } int rowstride() const { return fRowStride; } bool valid() const { return fPixels; } operator bool() const { return valid(); } bool inlineAlpha() const { return true; }; Pixmap renderPixmap(); private: int fWidth, fHeight, fRowStride; Pixel * fPixels, * fAlpha; Pixmap fPixmap; #endif #ifdef CONFIG_IMLIB #if 0 Pixel * pixels() const { return fImage ? fImage->rgb_data : NULL; } Pixel * alpha() const { return fAlpha; } int rowstride() const { return fImage ? fImage->rgb_width * 3 : 0; } #endif int width() const { return fImage ? gdk_pixbuf_get_width(fImage) : 0; } int height() const { return fImage ? gdk_pixbuf_get_height(fImage) : 0; } bool valid() const { return fImage != NULL; } operator bool() const { return valid(); } bool inlineAlpha() const { return false; }; private: void allocAlphaChannel(); friend class YPixmap; GdkPixbuf * fImage; #endif #ifdef CONFIG_GDK_PIXBUF Pixel * pixels() const { return gdk_pixbuf_get_pixels(fPixbuf); } int width() const { return gdk_pixbuf_get_width(fPixbuf); } int height() const { return gdk_pixbuf_get_height(fPixbuf); } int rowstride() const { return gdk_pixbuf_get_rowstride(fPixbuf); } operator bool() const { return fPixbuf; } private: GdkPixbuf * fPixbuf; #endif #endif }; #endif #endif icewm-1.3.7/src/atasks.cc0000644000076600007660000003742511463274240014224 0ustar develdevel#include "config.h" #ifdef CONFIG_TASKBAR #include "ylib.h" #include "ypixbuf.h" #include "atasks.h" #include "wmtaskbar.h" #include "yprefs.h" #include "prefs.h" #include "yxapp.h" #include "wmmgr.h" #include "wmframe.h" #include "wmwinlist.h" #include "yrect.h" #include "yicon.h" #include "sysdep.h" #include static YColor *normalTaskBarAppFg = 0; static YColor *normalTaskBarAppBg = 0; static YColor *activeTaskBarAppFg = 0; static YColor *activeTaskBarAppBg = 0; static YColor *minimizedTaskBarAppFg = 0; static YColor *minimizedTaskBarAppBg = 0; static YColor *invisibleTaskBarAppFg = 0; static YColor *invisibleTaskBarAppBg = 0; static YColor *taskBarBg = 0; static ref normalTaskBarFont; static ref activeTaskBarFont; YTimer *TaskBarApp::fRaiseTimer = 0; TaskBarApp::TaskBarApp(ClientData *frame, TaskPane *taskPane, YWindow *aParent): YWindow(aParent) { if (normalTaskBarAppFg == 0) { normalTaskBarAppBg = new YColor(clrNormalTaskBarApp); normalTaskBarAppFg = new YColor(clrNormalTaskBarAppText); activeTaskBarAppBg = new YColor(clrActiveTaskBarApp); activeTaskBarAppFg = new YColor(clrActiveTaskBarAppText); minimizedTaskBarAppBg = new YColor(clrMinimizedTaskBarApp); minimizedTaskBarAppFg = new YColor(clrMinimizedTaskBarAppText); invisibleTaskBarAppBg = new YColor(clrInvisibleTaskBarApp); invisibleTaskBarAppFg = new YColor(clrInvisibleTaskBarAppText); normalTaskBarFont = YFont::getFont(XFA(normalTaskBarFontName)); activeTaskBarFont = YFont::getFont(XFA(activeTaskBarFontName)); } fTaskPane = taskPane; fFrame = frame; fPrev = fNext = 0; selected = 0; fShown = true; fFlashing = false; fFlashOn = false; fFlashTimer = 0; fFlashStart = 0; setToolTip(frame->getTitle()); //setDND(true); } TaskBarApp::~TaskBarApp() { if (fRaiseTimer && fRaiseTimer->getTimerListener() == this) { fRaiseTimer->stopTimer(); fRaiseTimer->setTimerListener(0); } delete fFlashTimer; fFlashTimer = 0; } bool TaskBarApp::isFocusTraversable() { return true; } void TaskBarApp::setShown(bool ashow) { if (ashow != fShown) { fShown = ashow; } } void TaskBarApp::setFlash(bool flashing) { if (fFlashing != flashing) { fFlashing = flashing; if (fFlashing && focusRequestFlashInterval > 0) { fFlashOn = true; fFlashStart = time(NULL); if (fFlashTimer == 0) fFlashTimer = new YTimer(focusRequestFlashInterval); if (fFlashTimer) { fFlashTimer->setTimerListener(this); fFlashTimer->startTimer(); } } else { //fFlashTimer->stopTimer(); } } } void TaskBarApp::paint(Graphics &g, const YRect &/*r*/) { YColor *bg, *fg; ref bgPix; #ifdef CONFIG_GRADIENTS ref bgGrad; #endif int p(0); int style = 0; if (selected == 3) style = 3; else if (getFrame()->focused() || selected == 2) style = 2; else style = 1; if (fFlashing) { if (fFlashOn) { bg = activeTaskBarAppBg; fg = activeTaskBarAppFg; bgPix = taskbuttonactivePixmap; #ifdef CONFIG_GRADIENTS bgGrad = taskbuttonactivePixbuf; #endif style = 1; } else { bg = normalTaskBarAppBg; fg = normalTaskBarAppFg; bgPix = taskbuttonPixmap; #ifdef CONFIG_GRADIENTS bgGrad = taskbuttonPixbuf; #endif style = 1; } } else if (!getFrame()->visibleNow()) { bg = invisibleTaskBarAppBg; fg = invisibleTaskBarAppFg; bgPix = taskbackPixmap; #ifdef CONFIG_GRADIENTS bgGrad = taskbackPixbuf; #endif } else if (getFrame()->isMinimized()) { bg = minimizedTaskBarAppBg; fg = minimizedTaskBarAppFg; bgPix = taskbuttonminimizedPixmap; #ifdef CONFIG_GRADIENTS bgGrad = taskbuttonminimizedPixbuf; #endif } else if (getFrame()->focused()) { bg = activeTaskBarAppBg; fg = activeTaskBarAppFg; bgPix = taskbuttonactivePixmap; #ifdef CONFIG_GRADIENTS bgGrad = taskbuttonactivePixbuf; #endif } else { bg = normalTaskBarAppBg; fg = normalTaskBarAppFg; bgPix = taskbuttonPixmap; #ifdef CONFIG_GRADIENTS bgGrad = taskbuttonPixbuf; #endif } if (style == 3) { p = 2; g.setColor(YColor::black); g.drawRect(0, 0, width() - 1, height() - 1); g.setColor(bg); g.fillRect(1, 1, width() - 2, height() - 2); } else { g.setColor(bg); if (style == 2) { p = 2; if (wmLook == lookMetal) { g.drawBorderM(0, 0, width() - 1, height() - 1, false); } else if (wmLook == lookGtk) { g.drawBorderG(0, 0, width() - 1, height() - 1, false); } else if (wmLook != lookFlat) g.drawBorderW(0, 0, width() - 1, height() - 1, false); } else { p = 1; if (wmLook == lookMetal) { p = 2; g.drawBorderM(0, 0, width() - 1, height() - 1, true); } else if (wmLook == lookGtk) { g.drawBorderG(0, 0, width() - 1, height() - 1, true); } else if (wmLook != lookFlat) g.drawBorderW(0, 0, width() - 1, height() - 1, true); } int const dp(wmLook == lookFlat ? 0: wmLook == lookMetal ? 2 : p); int const ds(wmLook == lookFlat ? 0: wmLook == lookMetal ? 4 : 3); if (width() > ds && height() > ds) { #ifdef CONFIG_GRADIENTS if (bgGrad != null) g.drawGradient(bgGrad, dp, dp, width() - ds, height() - ds); else #endif if (bgPix != null) g.fillPixmap(bgPix, dp, dp, width() - ds, height() - ds); else g.fillRect(dp, dp, width() - ds, height() - ds); } } #ifndef LITE ref icon(getFrame()->getIcon()); if (taskBarShowWindowIcons && icon != null) { int iconSize = YIcon::smallSize(); int const y((height() - 3 - iconSize - ((wmLook == lookMetal) ? 1 : 0)) / 2); icon->draw(g, p + 1, p + 1 + y, iconSize); } #endif ustring str = getFrame()->getIconTitle(); if (str == null || str.length() == 0) str = getFrame()->getTitle(); if (str != null) { ref font = getFrame()->focused() ? activeTaskBarFont : normalTaskBarFont; if (font != null) { g.setColor(fg); g.setFont(font); int iconSize = 0; int pad = 1; #ifndef LITE if (taskBarShowWindowIcons && icon != null) { iconSize = YIcon::smallSize(); pad = 3; } #endif int const tx = pad + iconSize; int const ty = max(2, (height() + font->height() - ((wmLook == lookMetal || wmLook == lookFlat) ? 2 : 1)) / 2 - font->descent()); int const wm = width() - p - pad - iconSize - 1; g.drawStringEllipsis(p + tx, p + ty, str, wm); } } } void TaskBarApp::handleButton(const XButtonEvent &button) { YWindow::handleButton(button); if (button.button == 1 || button.button == 2) { if (button.type == ButtonPress) { selected = 2; repaint(); } else if (button.type == ButtonRelease) { if (selected == 2) { if (button.button == 1) { if (getFrame()->focused() && getFrame()->visibleNow() && (!getFrame()->canRaise() || (button.state & ControlMask))) getFrame()->wmMinimize(); else { if (button.state & ShiftMask) getFrame()->wmOccupyOnlyWorkspace(manager->activeWorkspace()); getFrame()->activateWindow(true); } } else if (button.button == 2) { if (getFrame()->focused() && getFrame()->visibleNow() && (!getFrame()->canRaise() || (button.state & ControlMask))) getFrame()->wmLower(); else { if (button.state & ShiftMask) getFrame()->wmOccupyWorkspace(manager->activeWorkspace()); getFrame()->activateWindow(true); } } } selected = 0; repaint(); } } } void TaskBarApp::handleCrossing(const XCrossingEvent &crossing) { if (selected > 0) { if (crossing.type == EnterNotify) { selected = 2; repaint(); } else if (crossing.type == LeaveNotify) { selected = 1; repaint(); } } YWindow::handleCrossing(crossing); } void TaskBarApp::handleClick(const XButtonEvent &up, int /*count*/) { if (up.button == 3) { getFrame()->popupSystemMenu(this, up.x_root, up.y_root, YPopupWindow::pfCanFlipVertical | YPopupWindow::pfCanFlipHorizontal | YPopupWindow::pfPopupMenu); } } void TaskBarApp::handleDNDEnter() { if (fRaiseTimer == 0) fRaiseTimer = new YTimer(autoRaiseDelay); if (fRaiseTimer) { fRaiseTimer->setTimerListener(this); fRaiseTimer->startTimer(); } selected = 3; repaint(); } void TaskBarApp::handleDNDLeave() { if (fRaiseTimer && fRaiseTimer->getTimerListener() == this) { fRaiseTimer->stopTimer(); fRaiseTimer->setTimerListener(0); } selected = 0; repaint(); } bool TaskBarApp::handleTimer(YTimer *t) { if (t == fRaiseTimer) { getFrame()->wmRaise(); } if (t == fFlashTimer) { if (!fFlashing) { fFlashOn = 0; fFlashStart = 0; return false; } fFlashOn = !fFlashOn; if (focusRequestFlashTime != 0) { if (time(NULL) - fFlashStart > focusRequestFlashTime) fFlashing = false; } repaint(); return fFlashing; } return false; } void TaskBarApp::handleBeginDrag(const XButtonEvent &down, const XMotionEvent &motion) { if (down.button == 3) { fTaskPane->startDrag(this, 0, down.x, down.y); fTaskPane->processDrag(motion.x + x(), motion.y + y()); } } TaskPane::TaskPane(IAppletContainer *taskBar, YWindow *parent): YWindow(parent) { fTaskBar = taskBar; if (taskBarBg == 0) taskBarBg = new YColor(clrDefaultTaskBar); fFirst = fLast = 0; fCount = 0; fNeedRelayout = true; fDragging = 0; } TaskPane::~TaskPane() { if (fDragging != 0) endDrag(); } void TaskPane::insert(TaskBarApp *tapp) { fCount++; tapp->setNext(0); tapp->setPrev(fLast); if (fLast) fLast->setNext(tapp); else fFirst = tapp; fLast = tapp; } void TaskPane::remove(TaskBarApp *tapp) { fCount--; if (tapp->getPrev()) tapp->getPrev()->setNext(tapp->getNext()); else fFirst = tapp->getNext(); if (tapp->getNext()) tapp->getNext()->setPrev(tapp->getPrev()); else fLast = tapp->getPrev(); } TaskBarApp *TaskPane::addApp(YFrameWindow *frame) { #ifdef CONFIG_WINLIST if (frame->client() == windowList) return 0; #endif if (frame->client() == taskBar) return 0; TaskBarApp *tapp = new TaskBarApp(frame, this, this); if (tapp != 0) { insert(tapp); #if 0 tapp->show(); if (!frame->visibleOn(manager->activeWorkspace()) && !taskBarShowAllWindows) tapp->setShown(0); if (frame->owner() != 0 && !taskBarShowTransientWindows) tapp->setShown(0); relayout(); #endif } return tapp; } void TaskPane::removeApp(YFrameWindow *frame) { for (TaskBarApp *task(fFirst); NULL != task; task = task->getNext()) { if (task->getFrame() == frame) { if (task == fDragging) endDrag(); task->hide(); remove(task); delete task; relayout(); return; } } } void TaskPane::relayoutNow() { if (!fNeedRelayout) return ; fNeedRelayout = false; int x, y, w, h; int tc = 0; TaskBarApp *a = fFirst; while (a) { if (a->getShown()) tc++; a = a->getNext(); } if (tc < taskBarButtonWidthDivisor) tc = taskBarButtonWidthDivisor; int leftX = 0; int rightX = width(); w = (rightX - leftX - 2) / tc; int rem = (rightX - leftX - 2) % tc; x = leftX; h = height(); y = 0; TaskBarApp *f = fFirst; int lc = 0; while (f) { if (f->getShown()) { int w1 = w; if (lc < rem) w1++; f->setGeometry(YRect(x, y, w1, h)); f->show(); x += w1; x += 0; lc++; } else f->hide(); f = f->getNext(); } } void TaskPane::handleClick(const XButtonEvent &up, int count) { if (up.button == 3 && count == 1 && IS_BUTTON(up.state, Button3Mask)) { fTaskBar->contextMenu(up.x_root, up.y_root); } } void TaskPane::paint(Graphics &g, const YRect &/*r*/) { g.setColor(taskBarBg); //g.draw3DRect(0, 0, width() - 1, height() - 1, true); #ifdef CONFIG_GRADIENTS ref gradient = parent()->getGradient(); if (gradient != null) g.drawImage(gradient, x(), y(), width(), height(), 0, 0); else #endif if (taskbackPixmap != null) g.fillPixmap(taskbackPixmap, 0, 0, width(), height(), x(), y()); else g.fillRect(0, 0, width(), height()); } void TaskPane::handleMotion(const XMotionEvent &motion) { if (fDragging != 0) { processDrag(motion.x, motion.y); } } void TaskPane::handleButton(const XButtonEvent &button) { if (button.type == ButtonRelease) endDrag(); YWindow::handleButton(button); } void TaskPane::startDrag(TaskBarApp *drag, int /*byMouse*/, int sx, int sy) { if (fDragging == 0) { XSync(xapp->display(), False); if (!xapp->grabEvents(this, YXApplication::movePointer.handle(), ButtonPressMask | ButtonReleaseMask | PointerMotionMask, 1, 1, 0)) { return ; } fDragging = drag; fDragX = sx; fDragY = sy; } } void TaskPane::processDrag(int mx, int /*my*/) { int x = mx; if (fDragging == 0) return; TaskBarApp *cur = 0; if (x < 0) { cur = fFirst; } else if (x >= width()) { cur = 0; } else { int seen = 0; TaskBarApp *c = fFirst; while (c) { if (c == fDragging) seen = 1; if (c->getShown() && x >= c->x() && x < c->x() + c->width()) { if (seen) cur = c->getNext(); else cur = c; break; } c = c->getNext(); } } if (fDragging != 0 && cur != fDragging->getNext() && cur != fDragging) { remove(fDragging); if (cur == 0) insert(fDragging); else { fDragging->setNext(cur); fDragging->setPrev(cur->getPrev()); if (cur->getPrev() == 0) fFirst = fDragging; else cur->getPrev()->setNext(fDragging); cur->setPrev(fDragging); } relayout(); } } void TaskPane::endDrag() { if (fDragging != 0) { xapp->releaseEvents(); fDragging = 0; } } #endif icewm-1.3.7/src/aaddressbar.h0000644000076600007660000000047111463274240015042 0ustar develdevel#ifndef __ADDRBAR_H #define __ADDRBAR_H #ifdef CONFIG_ADDRESSBAR #include "yinputline.h" class AddressBar: public YInputLine { public: AddressBar(YWindow *parent = 0); virtual ~AddressBar(); virtual bool handleKey(const XKeyEvent &key); void showNow(); void hideNow(); }; #endif #endif icewm-1.3.7/src/wmstatus.cc0000644000076600007660000001272111463274240014615 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek * * Status display for resize/move */ #include "config.h" #ifndef LITE #include "yfull.h" #include "wmstatus.h" #include "wmswitch.h" // !!! remove (for bg pixmap) #include "wmframe.h" #include "wmclient.h" #include "wmmgr.h" #include "prefs.h" #include "yrect.h" #include "intl.h" #include #include YColor *YWindowManagerStatus::statusFg = 0; YColor *YWindowManagerStatus::statusBg = 0; ref YWindowManagerStatus::statusFont; MoveSizeStatus *statusMoveSize = 0; WorkspaceStatus *statusWorkspace = 0; /******************************************************************************/ /******************************************************************************/ YWindowManagerStatus::YWindowManagerStatus(YWindow *aParent, ustring (*templFunc)()) : YWindow(aParent) { if (statusBg == 0) statusBg = new YColor(clrMoveSizeStatus); if (statusFg == 0) statusFg = new YColor(clrMoveSizeStatusText); if (statusFont == null) statusFont = YFont::getFont(XFA(statusFontName)); int sW = statusFont->textWidth(templFunc()); int sH = statusFont->height(); setGeometry(YRect((manager->width() - sW) / 2, (manager->height() - sH) - 8, // / 2, sW + 2, sH + 4)); setStyle(wsOverrideRedirect); } YWindowManagerStatus::~YWindowManagerStatus() { } void YWindowManagerStatus::paint(Graphics &g, const YRect &/*r*/) { ustring status(null); g.setColor(statusBg); g.drawBorderW(0, 0, width() - 1, height() - 1, true); if (switchbackPixmap != null) g.fillPixmap(switchbackPixmap, 1, 1, width() - 3, height() - 3); else g.fillRect(1, 1, width() - 3, height() - 3); g.setColor(statusFg); g.setFont(statusFont); status = getStatus(); g.drawChars(status, width() / 2 - statusFont->textWidth(status) / 2, height() - statusFont->descent() - 2); } void YWindowManagerStatus::begin() { setPosition(x(), #ifdef CONFIG_TASKBAR taskBarAtTop ? 4 : #endif (manager->height() - height()) - 4); raise(); show(); } /******************************************************************************/ /******************************************************************************/ MoveSizeStatus::MoveSizeStatus(YWindow *aParent) : YWindowManagerStatus(aParent, templateFunction) { } MoveSizeStatus::~MoveSizeStatus() { } ustring MoveSizeStatus::getStatus() { static char status[50]; snprintf(status, 50, "%dx%d%+d%+d", fW, fH, fX, fY); return status; } void MoveSizeStatus::begin(YFrameWindow *frame) { if (showMoveSizeStatus) { setStatus(frame); YWindowManagerStatus::begin(); } } void MoveSizeStatus::setStatus(YFrameWindow *frame, const YRect &r) { XSizeHints *sh = frame->client()->sizeHints(); int width = r.width() - frame->borderX() * 2; int height = r.height() - frame->borderY() * 2 - frame->titleY(); fX = r.x(); fY = r.y(); fW = (width - (sh ? sh->base_width : 0)) / (sh ? sh->width_inc : 1); fH = (height - (sh ? sh->base_height : 0)) / (sh ? sh->height_inc : 1); repaintSync(); } void MoveSizeStatus::setStatus(YFrameWindow *frame) { XSizeHints *sh = frame->client()->sizeHints(); fX = frame->x ();//// + frame->borderX (); fY = frame->y ();//// + frame->borderY () + frame->titleY (); fW = (frame->client()->width() - (sh ? sh->base_width : 0)) / (sh ? sh->width_inc : 1); fH = (frame->client()->height() - (sh ? sh->base_height : 0)) / (sh ? sh->height_inc : 1); repaintSync(); } ustring MoveSizeStatus::templateFunction() { return "9999x9999+9999+9999"; } /******************************************************************************/ /******************************************************************************/ class WorkspaceStatus::Timeout: public YTimerListener { public: virtual bool handleTimer(YTimer */*timer*/) { statusWorkspace->end(); return false; } }; /******************************************************************************/ WorkspaceStatus::WorkspaceStatus(YWindow *aParent) : YWindowManagerStatus(aParent, templateFunction) { // !!! read timeout from preferences timer = new YTimer(workspaceStatusTime); timer->setTimerListener(timeout = new Timeout()); } WorkspaceStatus::~WorkspaceStatus() { delete timer; delete timeout; } ustring WorkspaceStatus::getStatus() { return getStatus(manager->workspaceName(workspace)); } ustring WorkspaceStatus::getStatus(const char* name) { return ustring(_("Workspace: ")).append(name); } void WorkspaceStatus::begin(long workspace) { setStatus(workspace); YWindowManagerStatus::begin(); } void WorkspaceStatus::setStatus(long workspace) { this->workspace = workspace; repaintSync(); if (timer->isRunning()) timer->stopTimer(); timer->startTimer(); } ustring WorkspaceStatus::templateFunction() { const char* longestWorkspaceName = NULL; int maxWorkspaceNameLength = 0; for (long w = 0; w < manager->workspaceCount(); ++w) { const char* name = manager->workspaceName(w); int length = statusFont->textWidth(name); if (length > maxWorkspaceNameLength) { maxWorkspaceNameLength = length; longestWorkspaceName = name; } } return getStatus(longestWorkspaceName); } #endif icewm-1.3.7/src/yfull.h0000644000076600007660000000052111463274240013716 0ustar develdevel#ifndef __YFULL_H #define __YFULL_H #include "ykey.h" #include #define __YIMP_XUTIL__ #include #include #include #include #ifdef CONFIG_SHAPE #include #endif #ifdef CONFIG_XRANDR #include #endif #endif icewm-1.3.7/src/wmoption.cc0000644000076600007660000003053111463274240014601 0ustar develdevel/* * IceWM * * Copyright (C) 1997-2002 Marko Macek */ #include "config.h" #ifndef NO_WINDOW_OPTIONS #include "yfull.h" #include "wmoption.h" #include "wmframe.h" #include "WinMgr.h" #include "base.h" #include "sysdep.h" #include #include "intl.h" #if 0 static int strnullcmp(const char *a, const char *b) { return a ? (b ? strcmp(a, b) : 1) : (b ? -1 : 0); } #endif upath winOptFile; WindowOptions *defOptions = 0; WindowOptions *hintOptions = 0; WindowOption::WindowOption(ustring n_class_instance): w_class_instance(n_class_instance), icon(0), functions(0), function_mask(0), decors(0), decor_mask(0), options(0), option_mask(0), workspace(WinWorkspaceInvalid), layer(WinLayerInvalid), #ifdef CONFIG_TRAY tray(WinTrayInvalid), #endif gflags(0), gx(0), gy(0), gw(0), gh(0) { } WindowOption::~WindowOption() { ////delete[] name; name = 0; ////delete[] icon; icon = 0; } static int wo_cmp(ustring a_class_instance, const WindowOption *pivot) { int cmp = a_class_instance.compareTo(pivot->w_class_instance); return cmp; } WindowOption *WindowOptions::getWindowOption(ustring a_class_instance, bool create, bool remove) { int lo = 0, hi = fWinOptions.getCount(); while (lo < hi) { const int pv = (lo + hi) / 2; const WindowOption *pivot = fWinOptions[pv]; int cmp = wo_cmp(a_class_instance, pivot); if (cmp > 0) { lo = pv + 1; continue; } else if (cmp < 0) { hi = pv; continue; } if (remove) { static WindowOption result = *pivot; fWinOptions.remove(pv); return &result; } return fWinOptions.getItem(pv); } if (!create) return 0; WindowOption *newopt = new WindowOption(a_class_instance); MSG(("inserting window option %p at position %d", newopt, lo)); fWinOptions.insert(lo, newopt); #ifdef DEBUG for (int i = 0; i < fWinOptions.getCount(); ++i) MSG(("> %d: %p", i, fWinOptions[i])); #endif return newopt; } void WindowOptions::setWinOption(ustring n_class_instance, const char *opt, const char *arg) { WindowOption *op = getWindowOption(n_class_instance, true); //msg("%s-%s-%s", class_instance, opt, arg); if (strcmp(opt, "icon") == 0) { op->icon = newstr(arg); } else if (strcmp(opt, "workspace") == 0) { op->workspace = atoi(arg); } else if (strcmp(opt, "geometry") == 0) { int rx, ry; unsigned int rw, rh; op->gx = 0; op->gy = 0; op->gw = 0; op->gh = 0; //msg("parsing %s", arg); if ((op->gflags = XParseGeometry(arg, &rx, &ry, &rw, &rh)) != 0) { if (op->gflags & XNegative) rx = - rx; if (op->gflags & YNegative) ry = - ry; op->gx = rx; op->gy = ry; op->gw = rw; op->gh = rh; //msg("parsed %d %d %d %d %X", rx, ry, rw, rh, op->gflags); } } else if (strcmp(opt, "layer") == 0) { char *endptr; long l = strtol(arg, &endptr, 10); op->layer = WinLayerInvalid; if (arg[0] && !endptr[0]) op->layer = l; else { struct { const char *name; int layer; } layers[] = { { "Desktop", WinLayerDesktop }, // { "Below", WinLayerBelow }, // { "Normal", WinLayerNormal }, // { "OnTop", WinLayerOnTop }, // { "Dock", WinLayerDock }, // { "AboveDock", WinLayerAboveDock }, // { "Menu", WinLayerMenu } }; for (unsigned int i = 0; i < ACOUNT(layers); i++) if (strcmp(layers[i].name, arg) == 0) op->layer = layers[i].layer; } #ifdef CONFIG_TRAY } else if (strcmp(opt, "tray") == 0) { char *endptr; long const t(strtol(arg, &endptr, 10)); op->tray = WinTrayInvalid; if (arg[0] && !endptr[0]) op->tray = t; else { struct { const char *name; int tray; } tray_ops[] = { { "Ignore", WinTrayIgnore }, { "Minimized", WinTrayMinimized }, { "Exclusive", WinTrayExclusive }, { "1", WinTrayExclusive } }; for (unsigned int i = 0; i < ACOUNT(tray_ops); i++) if (strcmp(tray_ops[i].name, arg) == 0) op->tray = tray_ops[i].tray; } #endif } else { static struct { int what; const char *name; unsigned long flag; } options[] = { { 0, "fMove", YFrameWindow::ffMove }, // { 0, "fResize", YFrameWindow::ffResize }, // { 0, "fClose", YFrameWindow::ffClose }, // { 0, "fMinimize", YFrameWindow::ffMinimize }, // { 0, "fMaximize", YFrameWindow::ffMaximize }, // { 0, "fHide", YFrameWindow::ffHide }, // { 0, "fRollup", YFrameWindow::ffRollup }, // { 1, "dTitleBar", YFrameWindow::fdTitleBar }, // { 1, "dSysMenu", YFrameWindow::fdSysMenu }, // { 1, "dBorder", YFrameWindow::fdBorder }, // { 1, "dResize", YFrameWindow::fdResize }, // { 1, "dClose", YFrameWindow::fdClose }, // { 1, "dMinimize", YFrameWindow::fdMinimize }, // { 1, "dMaximize", YFrameWindow::fdMaximize }, // { 1, "dHide", YFrameWindow::fdHide }, { 1, "dRollup", YFrameWindow::fdRollup }, { 1, "dDepth", YFrameWindow::fdDepth }, { 2, "allWorkspaces", YFrameWindow::foAllWorkspaces }, // { 2, "ignoreTaskBar", YFrameWindow::foIgnoreTaskBar }, // { 2, "noIgnoreTaskBar", YFrameWindow::foNoIgnoreTaskBar }, // { 2, "ignoreWinList", YFrameWindow::foIgnoreWinList }, // { 2, "ignoreQuickSwitch", YFrameWindow::foIgnoreQSwitch }, // { 2, "fullKeys", YFrameWindow::foFullKeys }, // { 2, "noFocusOnAppRaise", YFrameWindow::foNoFocusOnAppRaise }, // { 2, "ignoreNoFocusHint", YFrameWindow::foIgnoreNoFocusHint }, // { 2, "ignorePositionHint", YFrameWindow::foIgnorePosition }, // { 2, "doNotCover", YFrameWindow::foDoNotCover }, // { 2, "doNotFocus", YFrameWindow::foDoNotFocus }, // { 2, "startFullscreen", YFrameWindow::foFullscreen }, { 2, "startMinimized", YFrameWindow::foMinimized }, // { 2, "startMaximized", YFrameWindow::foMaximizedVert | YFrameWindow::foMaximizedHorz }, // { 2, "startMaximizedVert", YFrameWindow::foMaximizedVert }, // { 2, "startMaximizedHorz", YFrameWindow::foMaximizedHorz }, // { 2, "nonICCCMconfigureRequest", YFrameWindow::foNonICCCMConfigureRequest }, { 2, "forcedClose", YFrameWindow::foForcedClose }, { 2, "noFocusOnMap", YFrameWindow::foNoFocusOnMap }, { 2, "appTakesFocus", YFrameWindow::foAppTakesFocus } }; for (unsigned int a = 0; a < ACOUNT(options); a++) { unsigned long *what, *what_mask; if (options[a].what == 0) { what = &op->functions; what_mask = &op->function_mask; } else if (options[a].what == 1) { what = &op->decors; what_mask = &op->decor_mask; } else if (options[a].what == 2) { what = &op->options; what_mask = &op->option_mask; } else { msg(_("Error in window option: %s"), opt); break; } if (strcmp(opt, options[a].name) == 0) { if (*what == 2 && options[a].flag == YFrameWindow::foIgnoreWinList) DEPRECATE("ignoreWinlist windowoption"); if (*what == 2 && options[a].flag == YFrameWindow::foIgnoreQSwitch) DEPRECATE("ignoreQuickSwitch windowoption"); if (atoi(arg) != 0) *what = (*what) | options[a].flag; else *what = (*what) & ~options[a].flag; *what_mask = (*what_mask) | options[a].flag; return ; } } msg(_("Unknown window option: %s"), opt); } } void WindowOptions::mergeWindowOption(WindowOption &cm, ustring a_class_instance, bool remove) { WindowOption *wo = getWindowOption(a_class_instance, false, remove); if (wo) combineOptions(cm, *wo); } void WindowOptions::combineOptions(WindowOption &cm, WindowOption &n) { if (!cm.icon && n.icon) cm.icon = n.icon; cm.functions |= n.functions & ~cm.function_mask; cm.function_mask |= n.function_mask; cm.decors |= n.decors & ~cm.decor_mask; cm.decor_mask |= n.decor_mask; cm.options |= n.options & ~cm.option_mask; cm.option_mask |= n.option_mask; if (n.workspace != (long)WinWorkspaceInvalid) cm.workspace = n.workspace; if (n.layer != (long)WinLayerInvalid) cm.layer = n.layer; #ifdef CONFIG_TRAY if (n.tray != (long)WinTrayInvalid) cm.tray = n.tray; #endif if ((n.gflags & XValue) && !(cm.gflags & XValue)) { cm.gx = n.gx; cm.gflags |= XValue; if (n.gflags & XNegative) cm.gflags |= XNegative; } if ((n.gflags & YValue) && !(cm.gflags & YValue)) { cm.gy = n.gy; cm.gflags |= YValue; if (n.gflags & YNegative) cm.gflags |= YNegative; } if ((n.gflags & WidthValue) && !(cm.gflags & WidthValue)) { cm.gw = n.gw; cm.gflags |= WidthValue; } if ((n.gflags & HeightValue) && !(cm.gflags & HeightValue)) { cm.gh = n.gh; cm.gflags |= HeightValue; } } char *parseWinOptions(char *data) { char *p = data; char *w, *e, *c; char *class_instance; char *opt; while (*p) { while (*p == ' ' || *p == '\t' || *p == '\n') p++; if (*p == '#') { while (*p && *p != '\n') { if (*p == '\\' && p[1] != 0) p++; p++; } continue; } w = p; c = 0; while (*p && *p != ':') { if (*p == '\\' && p[1] != 0) p++; else if (*p == '.') c = p; p++; } e = p; if (e == w || *p == 0) break; if (c == 0) { msg(_("Syntax error in window options")); break; } if (c - w + 1 == 0) class_instance = 0; else { char *d = w, *p = w; while (p < c) { if (*p == '\\' && p + 1 < c) p++; *d++ = *p++; } /// TODO #warning "separate handling of class and instance, the current way is a hack" class_instance = newstr(w, d - w); if (class_instance == 0) goto nomem; MSG(("class_instance: (%s)", class_instance)); } *e = 0; c++; opt = c; e++; p = e; while (*p == ' ' || *p == '\t') p++; w = p; while (*p && (*p != '\n' && *p != ' ' && *p != '\t')) p++; if (*p != 0) { *p = 0; defOptions->setWinOption(class_instance, opt, w); delete[] class_instance; } else { defOptions->setWinOption(class_instance, opt, w); delete class_instance; break; } p++; } return p; nomem: msg(_("Out of memory for window options")); return 0; } void loadWinOptions(upath optFile) { if (optFile == null) return ; int fd = open(cstring(optFile.path()).c_str(), O_RDONLY | O_TEXT); if (fd == -1) return ; struct stat sb; if (fstat(fd, &sb) == -1) return ; int len = sb.st_size; char *buf = new char[len + 1]; if (buf == 0) return ; if ((len = read(fd, buf, len)) < 0) { delete[] buf; return; } buf[len] = 0; close(fd); parseWinOptions(buf); delete[] buf; } #endif icewm-1.3.7/src/wmwinmenu.h0000664000076600007660000000025611463274240014620 0ustar develdevel#ifndef __WMWINMENU_H #define __WMWINMENU_H class WindowListMenu: public YMenu { public: WindowListMenu(YWindow *parent = 0); virtual void updatePopup(); }; #endif icewm-1.3.7/README.wm-session0000664000076600007660000000233111463274240014611 0ustar develdevel /proc/wm-session is used to register the process id of an application able to free resources smoothly when the kernel decides that memory resource have reached a critical limit. The registered application is notified of this situation by the signal SIGUSR1. On full featured desktop machines it would make sense to use the session manager for this purpose. On X window PDAs which have limited memory resources it makes sense to let the window manager send WM_DELETE_WINDOW message to the last recently used application. Requirements to uses this feature in IceWM: - A patched kernel, a patch for Linux 2.4.3 is available in the contrib file module. - A patched X server assiging the clients process id to each newly mapped window. Alternatively you can preload the preice library available in the contrib file module. $ export LD_PRELOAD=$PATH_TO_libpreice.so). - IceWM configured to have wm-session support (./configure --enable-wm-session ...) /proc/wm-session was developed by Chester Kuo and Mathias Hasselman The contrib file module of IceWM is located at: http://sf.net/project/showfiles.php?group_id=31&release_id=31119 icewm-1.3.7/AUTHORS0000664000076600007660000000052311463274240012677 0ustar develdevel Marko Macek Mathias Hasselmann icesound: Christian W. Zuckschwerdt Capt Tara Malina network monitor: Mark Lawrence Denis Boehme Ronald Klop icon tray: Jan Krupa icewm-1.3.7/contrib/0000775000076600007660000000000011463274240013267 5ustar develdevelicewm-1.3.7/contrib/tbf-movesize-fx.diff0000664000076600007660000004333011463274240017151 0ustar develdevel? aclocal.m4 ? dif ? upd ? contrib/tbf-movesize-fx.diff Index: configure.in =================================================================== RCS file: /cvsroot/icewm/icewm-1.2/configure.in,v retrieving revision 1.23 diff -u -r1.23 configure.in --- configure.in 8 Oct 2003 18:59:10 -0000 1.23 +++ configure.in 23 Dec 2003 08:05:08 -0000 @@ -495,14 +495,6 @@ fi fi ]) - -AC_ARG_ENABLE(movesize-fx, - [ --enable-movesize-fx Move/Resize FX (experimental bloat) ]) - if test "$enable_movesize_fx" = "yes"; then - AC_DEFINE(CONFIG_MOVESIZE_FX, 1, [Define to enable Move/Resize FX.]) - features="${features} movesize-fx" - fi - AC_ARG_ENABLE(xinerama, [ --disable-xinerama Disable xinerama support]) if test "$enable_xinerama" = "no"; then Index: src/movesize.cc =================================================================== RCS file: /cvsroot/icewm/icewm-1.2/src/movesize.cc,v retrieving revision 1.13 diff -u -r1.13 movesize.cc --- src/movesize.cc 7 Dec 2003 12:31:40 -0000 1.13 +++ src/movesize.cc 23 Dec 2003 08:05:08 -0000 @@ -175,260 +175,6 @@ wy = yp; } -/******************************************************************************/ - -#ifdef CONFIG_MOVESIZE_FX -void YFrameWindow::drawMoveSizeFX(int x, int y, int w, int h, bool /*interior*/) { - struct FXFrame { - FXFrame(int const l, int const c, int const r, - int const t, int const m, int const b): - l(l), c(c), r(r), t(t), m(m), b(b) {} - - int const l, c, r, t, m, b; - }; - - struct FXRect { - FXRect(int const l, int const r, int const t, int const b): - l(l), r(r), t(t), b(b) {} - - int const l, r, t, b; - }; - - static YFont * font(NULL); - static Graphics * gc(NULL); - - if (font == NULL) - font = YFont::getFont(moveSizeFontName, false); - - if (gc == NULL) { - XGCValues gcv; - - gcv.function = GXxor; - gcv.line_width = 0; - gcv.subwindow_mode = IncludeInferiors; - gcv.graphics_exposures = False; - - gc = new Graphics(*desktop, GCFunction | GCGraphicsExposures | - GCLineWidth | GCSubwindowMode, &gcv); - gc->setFont(font); - gc->setColor(new YColor(clrActiveBorder)); - } - - const int dBase(font->height() + 4); - const int titlebar(moveSizeInterior & 2 ? titleY() : 0); - - FXFrame const frame(x, x + w/2, x + w - 1, y, y + h/2, y + h - 1); - FXRect const client(x + borderX(), x + w - borderX() - 1, - y + borderY() + titlebar, y + h - borderY() - 1); - FXRect const dimBase(frame.l - dBase, frame.r + dBase, - frame.t - dBase, frame.b + dBase); - FXRect const dimLine(moveSizeGaugeLines & 1 ? dimBase.l - 4 : frame.l, - moveSizeGaugeLines & 2 ? dimBase.r + 4 : frame.r, - moveSizeGaugeLines & 4 ? dimBase.t - 4 : frame.t, - moveSizeGaugeLines & 8 ? dimBase.b + 4 : frame.b); - FXRect const outerLabel(dimBase.l + font->descent() + 2, - dimBase.r - font->ascent() - 2, - dimBase.t + font->ascent() + 2, - dimBase.b - font->descent() - 2); - FXRect const desktop(0, desktop->width() - 1, 0, desktop->height() - 1); - - int const cw(client.r - client.l + 1); - int const ch(client.b - client.t + 1); - -/*** FX: Frame Border *********************************************************/ - - if (!((movingWindow && opaqueMove) || - (sizingWindow && opaqueResize))) - if (moveSizeInterior & 1) { - XRectangle border[] = { - { frame.l, frame.t, w, h }, - { client.l, client.t, cw, ch } - }; - - gc->drawRects(border, frameDecors() & fdBorder ? 2 : 1); - } else { - XRectangle border[] = { - { frame.l, frame.t, frame.r - frame.l + 1, client.t - frame.t + 1 }, - { frame.l, client.t + 1, client.l - frame.l + 1, client.b - client.t - 1 }, - { client.r, client.t + 1, frame.r - client.r + 1, client.b - client.t - 1 }, - { frame.l, client.b, frame.r - frame.l + 1, frame.b - client.b + 1 } - }; - - gc->fillRects(border, 4); - } - -/*** FX: Dimension Lines ******************************************************/ - - if (moveSizeDimLines & 00001) - gc->drawLine(dimLine.r, frame.t, desktop.r, frame.t); - if (moveSizeDimLines & 00002) - gc->drawLine(dimLine.r, frame.m, desktop.r, frame.m); - if (moveSizeDimLines & 00004) - gc->drawLine(dimLine.r, frame.b, desktop.r, frame.b); - - if (moveSizeDimLines & 00010) - gc->drawLine(desktop.l, frame.t, dimLine.l, frame.t); - if (moveSizeDimLines & 00020) - gc->drawLine(desktop.l, frame.m, dimLine.l, frame.m); - if (moveSizeDimLines & 00040) - gc->drawLine(desktop.l, frame.b, dimLine.l, frame.b); - - if (moveSizeDimLines & 00100) - gc->drawLine(frame.l, desktop.t, frame.l, dimLine.t); - if (moveSizeDimLines & 00200) - gc->drawLine(frame.c, desktop.t, frame.c, dimLine.t); - if (moveSizeDimLines & 00400) - gc->drawLine(frame.r, desktop.t, frame.r, dimLine.t); - - if (moveSizeDimLines & 01000) - gc->drawLine(frame.l, dimLine.b, frame.l, desktop.b); - if (moveSizeDimLines & 02000) - gc->drawLine(frame.c, dimLine.b, frame.c, desktop.b); - if (moveSizeDimLines & 04000) - gc->drawLine(frame.r, dimLine.b, frame.r, desktop.b); - -/*** FX: Dimension Base Lines *************************************************/ - - if (moveSizeGaugeLines & 1) - gc->drawLine(frame.l, dimBase.t, frame.r, dimBase.t); - if (moveSizeGaugeLines & 2) - gc->drawLine(dimBase.l, frame.t, dimBase.l, frame.b); - if (moveSizeGaugeLines & 4) - gc->drawLine(dimBase.r, frame.t, dimBase.r, frame.b); - if (moveSizeGaugeLines & 8) - gc->drawLine(frame.l, dimBase.b, frame.r, dimBase.b); - -/*** FX: Dimension Labels *****************************************************/ - - if (moveSizeDimLabels & 01001) { - char const * label(itoa(x)); - int const pos(frame.l); - - if (moveSizeDimLabels & 00001) - gc->drawString(pos, outerLabel.t, label); - if (moveSizeDimLabels & 01000) - gc->drawString(pos, outerLabel.b, label); - } - - if (moveSizeDimLabels & 02002) { - char const * label(itoa(w)); - int const pos(frame.c - font->textWidth(label)/2); - - if (moveSizeDimLabels & 00002) - gc->drawString(pos, outerLabel.t, label); - if (moveSizeDimLabels & 02000) - gc->drawString(pos, outerLabel.b, label); - } - - if (moveSizeDimLabels & 04004) { - char const * label(itoa(x + w)); - int const pos(frame.r - font->textWidth(label)); - - if (moveSizeDimLabels & 00004) - gc->drawString(pos, outerLabel.t, label); - if (moveSizeDimLabels & 04000) - gc->drawString(pos, outerLabel.b, label); - } - - if (moveSizeDimLabels & 00110) { - char const * label(itoa(y)); - int const pos(frame.t); - - if (moveSizeDimLabels & 00010) - gc->drawString270(outerLabel.l, pos, label); - if (moveSizeDimLabels & 00100) - gc->drawString90(outerLabel.r, pos, label); - } - - if (moveSizeDimLabels & 00220) { - char const * label(itoa(h)); - int const pos(frame.m - font->textWidth(label)/2); - - if (moveSizeDimLabels & 00020) - gc->drawString270(outerLabel.l, pos, label); - if (moveSizeDimLabels & 00200) - gc->drawString90(outerLabel.r, pos, label); - } - - if (moveSizeDimLabels & 00440) { - char const * label(itoa(x + h)); - int const pos(frame.b - font->textWidth(label)); - - if (moveSizeDimLabels & 00040) - gc->drawString270(outerLabel.l, pos, label); - if (moveSizeDimLabels & 00400) - gc->drawString90(outerLabel.r, pos, label); - } - -/*** FX: Geometry Labels ******************************************************/ - - if (moveSizeGeomLabels & 0x7f) { - static char label[50]; - sprintf(label, "%dx%d+%d+%d", w, h, x, y); - - int const tw(font->textWidth(label)); - int const th(font->height()); - - FXFrame const innerLabel - (client.l + 2, frame.c - tw/2, client.r - tw - 2, - client.t + font->ascent() + 2, - frame.m + th/2 - font->descent(), - client.b - font->descent() - 2); - - if (moveSizeGeomLabels & 0x01) - gc->drawString(innerLabel.l, innerLabel.t, label); - if (moveSizeGeomLabels & 0x02) - gc->drawString(innerLabel.c, innerLabel.t, label); - if (moveSizeGeomLabels & 0x04) - gc->drawString(innerLabel.r, innerLabel.t, label); - if (moveSizeGeomLabels & 0x08) - gc->drawString(innerLabel.c, innerLabel.m, label); - if (moveSizeGeomLabels & 0x10) - gc->drawString(innerLabel.l, innerLabel.b, label); - if (moveSizeGeomLabels & 0x20) - gc->drawString(innerLabel.c, innerLabel.b, label); - if (moveSizeGeomLabels & 0x40) - gc->drawString(innerLabel.r, innerLabel.b, label); - } - -/*** FX: Grids ****************************************************************/ - - if (moveSizeInterior & 4) { - XSegment grid[] = { - { client.l + cw * 1/3, client.t + 1, - client.l + cw * 1/3, client.b }, - { client.l + cw * 2/3, client.t + 1, - client.l + cw * 2/3, client.b }, - { client.l + 1, client.t + ch * 1/3, - client.r, client.t + ch * 1/3 }, - { client.l + 1, client.t + ch * 2/3, - client.r, client.t + ch * 2/3 } - }; - - gc->drawSegments(grid, 4); - } - - if (moveSizeInterior & 8) { - XSegment grid[] = { - { client.l + cw / 2, client.t + 1, - client.l + cw / 2, client.b }, - { client.l + 1, client.t + ch / 2, - client.r, client.t + ch / 2 } - }; - - gc->drawSegments(grid, 2); - } - - if (moveSizeInterior & 8) { - XSegment grid[] = { - { client.l + 1, client.t + 1, client.r, client.b }, - { client.r, client.t + 1, client.l + 1, client.b } - }; - - gc->drawSegments(grid, 2); - } -} -#else void YFrameWindow::drawMoveSizeFX(int x, int y, int w, int h, bool) { if ((movingWindow && opaqueMove) || (sizingWindow && opaqueResize)) @@ -454,7 +200,6 @@ gc->drawRect(x + bo, y + bo, w - bw, h - bw); } -#endif int YFrameWindow::handleMoveKeys(const XKeyEvent &key, int &newX, int &newY) { KeySym k = XKeycodeToKeysym(xapp->display(), key.keycode, 0); Index: src/themable.h =================================================================== RCS file: /cvsroot/icewm/icewm-1.2/src/themable.h,v retrieving revision 1.5 diff -u -r1.5 themable.h --- src/themable.h 21 Dec 2003 17:21:38 -0000 1.5 +++ src/themable.h 23 Dec 2003 08:05:08 -0000 @@ -35,13 +35,6 @@ XIV(int, quickSwitchIMargin, 4) // !!! XIV(int, quickSwitchIBorder, 2) // !!! XIV(int, quickSwitchSepSize, 6) // !!! -#ifdef CONFIG_MOVESIZE_FX -XIV(int, moveSizeInterior, 0) -XIV(int, moveSizeDimLines, 0) -XIV(int, moveSizeGaugeLines, 0) -XIV(int, moveSizeDimLabels, 0) -XIV(int, moveSizeGeomLabels, 0) -#endif XSV(const char *, titleButtonsLeft, "s") XSV(const char *, titleButtonsRight, "xmir") XSV(const char *, titleButtonsSupported, "xmis"); @@ -67,9 +60,6 @@ XSV(const char *, clockFontName, TTFONT(140)) XSV(const char *, apmFontName, TTFONT(140)) XSV(const char *, inputFontName, TTFONT(140)) -#ifdef CONFIG_MOVESIZE_FX -XSV(const char *, moveSizeFontName, BOLDFONT(100)) -#endif XSV(const char *, clrDialog, "rgb:C0/C0/C0") XSV(const char *, clrActiveBorder, "rgb:C0/C0/C0") XSV(const char *, clrInactiveBorder, "rgb:C0/C0/C0") @@ -186,14 +176,6 @@ OIV("QuickSwitchIconBorder", &quickSwitchIBorder, 0, 64, "Distance between the active icon and it's border"), OIV("QuickSwitchSeparatorSize", &quickSwitchSepSize, 0, 64, "Height of the separator between (all reachable) icons and text, 0 to avoid it"), -#ifdef CONFIG_MOVESIZE_FX - OIV("MoveSizeInterior", &moveSizeInterior, 0, 31, "Bitmask for inner decorations (1: border style, 2: titlebar, 4/8/16: grid)"), - OIV("MoveSizeDimensionLines", &moveSizeDimLines, 0, 4095, "Bitmask for dimension lines (1/2/4: top left/center/right, 8/16/32: left top/middle/bottom, ...)"), - OIV("MoveSizeGaugeLines", &moveSizeGaugeLines, 0, 15, "Bitmask for gauge lines (1/2/4/8: top/left/right/bottom)"), - OIV("MoveSizeDimensionLabels", &moveSizeDimLabels, 0, 4095, "Bitmask for dimension labels (1/2/4: top left/center/right, 8/16/32: left top/middle/bottom, ...)"), - OIV("MoveSizeGeometryLabels", &moveSizeGeomLabels, 0, 127, "Bitmask for geometry labels (1/2/4: top left/center/right, 8: center, ...)"), -#endif - OSV("ThemeAuthor", &themeAuthor, "Theme author, e-mail address, credits"), OSV("ThemeDescription", &themeDescription, "Description of the theme, credits"), @@ -224,9 +206,6 @@ OSV("ApmFontName", &apmFontName, ""), OSV("InputFontName", &inputFontName, ""), OSV("LabelFontName", &labelFontName, ""), -#ifdef CONFIG_MOVESIZE_FX - OSV("moveSizeFontName", &moveSizeFontName, BOLDFONT(100)), -#endif /************************************************************************************************************************************************************ * Color definitions ************************************************************************************************************************************************************/ Index: src/ypaint.cc =================================================================== RCS file: /cvsroot/icewm/icewm-1.2/src/ypaint.cc,v retrieving revision 1.27 diff -u -r1.27 ypaint.cc --- src/ypaint.cc 21 Dec 2003 09:28:15 -0000 1.27 +++ src/ypaint.cc 23 Dec 2003 08:05:08 -0000 @@ -519,92 +519,6 @@ }; }; -#ifdef CONFIG_MOVESIZE_FX -template -void Graphics::drawStringRotated(int x, int y, char const * str) { - int const l(strlen(str)); - int const w(fFont->textWidth(str, l)); - int const h(fFont->ascent() + fFont->descent()); - - Pixmap pixmap = YPixmap::createPixmap(w, h, 1); - Graphics canvas(pixmap, w, h); -// GraphicsCanvas canvas(w, h, 1); - if (None == canvas.drawable()) { - warn(_("Resource allocation for rotated string \"%s\" (%dx%d px) " - "failed"), str, w, h); - return; - } - - canvas.fillRect(0, 0, w, h); - canvas.setFont(fFont); - canvas.setColor(YColor::white); - canvas.drawChars(str, 0, l, 0, fFont->ascent()); - - XImage * horizontal(XGetImage(fDisplay, canvas.drawable(), - 0, 0, w, h, 1, XYPixmap)); - if (NULL == horizontal) { - warn(_("Resource allocation for rotated string \"%s\" (%dx%d px) " - "failed"), str, w, h); - return; - } - - int const bpl(((Rt::width(w, h) >> 3) + 3) & ~3); - - XImage * rotated(XCreateImage(fDisplay, xapp->visual(), 1, XYPixmap, - 0, new char[bpl * Rt::height(w, h)], - Rt::width(w, h), Rt::height(w, h), 32, bpl)); - - if (NULL == rotated) { - warn(_("Resource allocation for rotated string \"%s\" (%dx%d px) " - "failed"), str, Rt::width(w, h), Rt::height(w, h)); - return; - } - - Rt::rotate(horizontal, rotated); - XDestroyImage(horizontal); - - Pixmap mask_pixmap = YPixmap::createPixmap(Rt::width(w, h), Rt::height(w, h), 1); - //GraphicsCanvas mask(Rt::width(w, h), Rt::height(w, h), 1); - Graphics mask(mask_pixmap, Rt::width(w, h), Rt::height(w, h)); - if (None == mask.drawable()) { - warn(_("Resource allocation for rotated string \"%s\" (%dx%d px) " - "failed"), str, Rt::width(w, h), Rt::height(w, h)); - return; - } - - mask.copyImage(rotated, 0, 0); - XDestroyImage(rotated); - - x += Rt::xOffset(fFont); - y += Rt::yOffset(fFont); - -#warning "this is completely broken, because it interferes with repaint clipping" - setClipMask(mask.drawable()); - setClipOrigin(x, y); - - fillRect(x, y, Rt::width(w, h), Rt::height(w, h)); - -#warning "and this" - setClipOrigin(0, 0); - setClipMask(None); - - XFreePixmap(xapp->display(), mask_pixmap); - XFreePixmap(xapp->display(), pixmap); -} - -void Graphics::drawString90(int x, int y, char const * str) { - drawStringRotated(x, y, str); -} -/* -void Graphics::drawString180(int x, int y, char const * str) { - drawStringRotated(x, y, str); -} -*/ -void Graphics::drawString270(int x, int y, char const * str) { - drawStringRotated(x, y, str); -} -#endif - /******************************************************************************/ void Graphics::fillRect(int x, int y, int width, int height) { Index: src/ypaint.h =================================================================== RCS file: /cvsroot/icewm/icewm-1.2/src/ypaint.h,v retrieving revision 1.14 diff -u -r1.14 ypaint.h --- src/ypaint.h 21 Dec 2003 09:28:15 -0000 1.14 +++ src/ypaint.h 23 Dec 2003 08:05:08 -0000 @@ -91,7 +91,8 @@ class YFont { public: - static YFont * getFont(char const * name, bool antialias = true); + static YFont *getFont(char const *name, bool antialias = true); + virtual ~YFont() {} virtual bool valid() const = 0; @@ -263,12 +264,6 @@ void drawStringEllipsis(int x, int y, char const * str, int maxWidth); void drawStringMultiline(int x, int y, char const * str); -#ifdef CONFIG_MOVESIZE_FX - void drawString90(int x, int y, char const * str); - void drawString180(int x, int y, char const * str); - void drawString270(int x, int y, char const * str); -#endif - void drawImage(YIcon::Image * img, int const x, int const y); void drawPixmap(YPixmap const * pix, int const x, int const y); void drawMask(YPixmap const * pix, int const x, int const y); @@ -345,11 +340,6 @@ YFont * fFont; int xOrigin, yOrigin; int rWidth, rHeight; - -#ifdef CONFIG_MOVESIZE_FX - template - void drawStringRotated(int x, int y, char const * str); -#endif }; #endif icewm-1.3.7/contrib/tbf-gnomevfs.diff0000664000076600007660000002320711463274240016522 0ustar develdeveldiff -x Makefile -x config.h.in -x CVS -x config.h -ruN icewm-1.2-clean/src/gnomevfs.cc icewm-1.2-all/src/gnomevfs.cc --- icewm-1.2-clean/src/gnomevfs.cc 2002-07-08 12:07:15.000000000 +0200 +++ icewm-1.2-all/src/gnomevfs.cc 1970-01-01 01:00:00.000000000 +0100 @@ -1,57 +0,0 @@ -/* - * IceWM - Implementation of GNOME VFS 2.0 support - * Copyright (C) 2002 The Authors of IceWM - * - * Release under terms of the GNU Library General Public License - */ - -#include "config.h" -#include "base.h" -#include "gnomevfs.h" - -YGnomeVFS::YGnomeVFS(): -YSharedLibrary("libgnomevfs-2.so") { - ASSIGN_SYMBOL(Init, gnome_vfs_init); - ASSIGN_SYMBOL(Shutdown, gnome_vfs_init); - ASSIGN_SYMBOL(DirectoryVisit, gnome_vfs_directory_visit); - - if (!(available() && mInit())) unload(); -} - -YGnomeVFS::~YGnomeVFS() { - if (mShutdown) mShutdown(); -} - -bool YGnomeVFS::available() const { - return YSharedLibrary::loaded() && - mInit && mShutdown && mDirectoryVisit; -} - -YGnomeVFS::Result YGnomeVFS::traverse(const char *uri, Visitor *visitor, - FileInfoOptions infoOptions, - DirectoryVisitOptions visitOptions) { - return mDirectoryVisit ? mDirectoryVisit(uri, infoOptions, visitOptions, - &YGnomeVFS::visit, visitor) - : ErrorNotSupported; -} - -int YGnomeVFS::visit(const char *filename, FileInfo *info, - int recursingWillLoop, void *data, int *recurse) { - if (data) { - Visitor *visitor = (Visitor *) data; - return visitor->visit(filename, *info, recursingWillLoop, *recurse); - } else { - *recurse = !recursingWillLoop; - msg("%s", filename); - return true; - } -} - -void YGnomeVFS::unload() { - mInit = 0; - mShutdown = 0; - mDirectoryVisit = 0; - - YSharedLibrary::unload(); -} - diff -x Makefile -x config.h.in -x CVS -x config.h -ruN icewm-1.2-clean/src/gnomevfs.h icewm-1.2-all/src/gnomevfs.h --- icewm-1.2-clean/src/gnomevfs.h 2002-07-08 12:07:15.000000000 +0200 +++ icewm-1.2-all/src/gnomevfs.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,206 +0,0 @@ -/* - * IceWM - Definitions for GNOME VFS 2.0 support - * Copyright (C) 2002 The Authors of IceWM - * - * Release under terms of the GNU Library General Public License - * - * This header is based on gnome-vfs2-2.0.0.0.200206210447-0.snap.ximian.1 - * built by Ximian on Don 27 Jun 2002 02:41:24 GMT. - */ - -#ifndef __YGNOMEVFS_H -#define __YGNOMEVFS_H - -#include "ylibrary.h" - -#include -#include - -class YGnomeVFS: protected YSharedLibrary { -public: - typedef unsigned long long FileSize; - typedef FileSize InodeNumber; - - enum Result { - Ok, - ErrorNotFound, - ErrorGeneric, - ErrorInternal, - ErrorBadParameters, - ErrorNotSupported, - ErrorIo, - ErrorCorruptedData, - ErrorWrongFormat, - ErrorBadFile, - ErrorTooBig, - ErrorNoSpace, - ErrorReadOnly, - ErrorInvalidUri, - ErrorNotOpen, - ErrorInvalidOpenMode, - ErrorAccessDenied, - ErrorTooManyOpenFiles, - ErrorEof, - ErrorNotADirectory, - ErrorInProgress, - ErrorInterrupted, - ErrorFileExists, - ErrorLoop, - ErrorNotPermitted, - ErrorIsDirectory, - ErrorNoMemory, - ErrorHostNotFound, - ErrorInvalidHostName, - ErrorHostHasNoAddress, - ErrorLoginFailed, - ErrorCancelled, - ErrorDirectoryBusy, - ErrorDirectoryNotEmpty, - ErrorTooManyLinks, - ErrorReadOnlyFileSystem, - ErrorNotSameFileSystem, - ErrorNameTooLong, - ErrorServiceNotAvailable, - ErrorServiceObsolete, - ErrorProtocolError, - }; - - enum FileFlags { - ffNone = 0, - ffSymlink = 1 << 0, - ffLocal = 1 << 1, - }; - - enum FileType { - ftUnknown, - ftRegular, - ftDirectory, - ftFifo, - ftSocket, - ftCharacterDevice, - ftBlockDevice, - ftSymbolicLink - }; - - enum FilePermissions { - permSuid = S_ISUID, - permSgid = S_ISGID, - permSticky = 01000, // S_ISVTX not defined on all systems - permUserRead = S_IRUSR, - permUserWrite = S_IWUSR, - permUserExec = S_IXUSR, - permUserAll = S_IRUSR | S_IWUSR | S_IXUSR, - permGroupRead = S_IRGRP, - permGroupWrite = S_IWGRP, - permGroupExec = S_IXGRP, - permGroupAll = S_IRGRP | S_IWGRP | S_IXGRP, - permOtherRead = S_IROTH, - permOtherWrite = S_IWOTH, - permOtherExec = S_IXOTH, - permOtherAll = S_IROTH | S_IWOTH | S_IXOTH - }; - - enum FileInfoOptions { - fiDefault = 0, - fiGetMIMEType = 1 << 0, - fiForceFastMIMEType = 1 << 1, - fiForceSlowMIMEType = 1 << 2, - fiFollowLinks = 1 << 3 - }; - - enum DirectoryVisitOptions { - dvDefault = 0, - dvSameFilesystem = 1 << 0, - dvLoopCheck = 1 << 1 - }; - - enum FileInfoFields { - fifNone = 0, - fifType = 1 << 0, - fifPermissions = 1 << 1, - fifFlags = 1 << 2, - fifDevice = 1 << 3, - fifInode = 1 << 4, - fifLinkCount = 1 << 5, - fifSize = 1 << 6, - fifBlockCount = 1 << 7, - fifIoBlockSize = 1 << 8, - fifAtime = 1 << 9, - fifMtime = 1 << 10, - fifCtime = 1 << 11, - fifSymlinkName = 1 << 12, - fifMimeType = 1 << 13 - }; - - struct FileInfo { - char *name; - - FileInfoFields validFields; - - FileType type; - FilePermissions permissions; - FileFlags flags; - - dev_t device; - InodeNumber inode; - - unsigned linkCount; - - unsigned uid; - unsigned gid; - - FileSize size; - - FileSize blockCount; - unsigned ioBlockSize; - - time_t atime; - time_t mtime; - time_t ctime; - - char *symlinkName; - char *mimeType; - - unsigned refcount; - }; - - class Visitor { - public: - virtual bool visit(const char *filename, const FileInfo &info, - int recursingWillLoop, int &recurse) = 0; - }; - - YGnomeVFS(); - virtual ~YGnomeVFS(); - - bool available() const; - - Result traverse(const char *uri, Visitor *visitor, - FileInfoOptions infoOptions = fiDefault, - DirectoryVisitOptions visitOptions = dvDefault); - -protected: - typedef int (* Init)(); - typedef void (* Shutdown)(); - - typedef int (* DirectoryVisitFunc) - (const char *filename, FileInfo *info, - int recursingWillLoop, void *data, int *recurse); - - typedef Result (* DirectoryVisit) - (const char *uri, FileInfoOptions infoOptions, - DirectoryVisitOptions visitOptions, - DirectoryVisitFunc callback, void *data); - - static int visit(const char *filename, FileInfo *info, - int recursingWillLoop, void *data, int *recurse); - - virtual void unload(); - -private: - Init mInit; - Shutdown mShutdown; - DirectoryVisit mDirectoryVisit; -}; - -#endif Binary files icewm-1.2-clean/src/icesound and icewm-1.2-all/src/icesound differ Binary files icewm-1.2-clean/src/icewm-menu-gnome2 and icewm-1.2-all/src/icewm-menu-gnome2 differ diff -x Makefile -x config.h.in -x CVS -x config.h -ruN icewm-1.2-clean/src/Makefile.in icewm-1.2-all/src/Makefile.in --- icewm-1.2-clean/src/Makefile.in 2003-12-22 15:53:23.000000000 +0100 +++ icewm-1.2-all/src/Makefile.in 2003-12-23 10:04:39.000000000 +0100 @@ -175,10 +175,6 @@ testdesktop.o ydesktop.o yparser.o ylocale.o misc.o testdesktop_LIBS = \ $(CORE_LIBS) $(IMAGE_LIBS) -testgnomevfs_OBJS = \ - testgnomevfs.o gnomevfs.o ylibrary.o misc.o -testgnomevfs_LFLAGS = \ - -ldl testarray_OBJS = \ testarray.o yarray.o misc.o diff -x Makefile -x config.h.in -x CVS -x config.h -ruN icewm-1.2-clean/src/testgnomevfs.cc icewm-1.2-all/src/testgnomevfs.cc --- icewm-1.2-clean/src/testgnomevfs.cc 2002-07-08 12:07:15.000000000 +0200 +++ icewm-1.2-all/src/testgnomevfs.cc 1970-01-01 01:00:00.000000000 +0100 @@ -1,53 +0,0 @@ -#include "config.h" -#include "base.h" -#include "gnomevfs.h" - -#include -#include - -char const *ApplicationName("testgnomevfs"); - -class VerboseVisitor : public YGnomeVFS::Visitor { - virtual bool visit(const char *filename, const YGnomeVFS::FileInfo &info, - int recursingWillLoop, int &recurse) { - char *mtime = ctime(&info.mtime); - mtime[strlen(mtime) - 1] = '\0'; - - msg("%s [%s][%s]", filename, info.mimeType, mtime); - - recurse = !recursingWillLoop; - return true; - } -}; - -int main(int argc, char *argv[]) { - YGnomeVFS gnomeVFS; - - if (gnomeVFS.available()) { - YGnomeVFS::Visitor *visitor = 0; - unsigned pathCount = 0; - - for (char **arg = argv + 1; arg < argv + argc; ++arg) - if (**arg == '-') { - if (!visitor && !strcmp(*arg, "-v")) - visitor = new VerboseVisitor(); - } else { - ++pathCount; - } - - if (pathCount > 0) { - for (char **arg = argv + 1; arg < argv + argc; ++arg) { - if (**arg != '-') gnomeVFS.traverse(*arg, visitor); - } - } else { - gnomeVFS.traverse("applications:", visitor); - } - - delete visitor; - - return 0; - } else { - warn("GNOME VFS 2.0 not found: %s", YSharedLibrary::getLastError()); - return 1; - } -} icewm-1.3.7/contrib/tbf-wm-session.diff0000664000076600007660000002163211463274240017002 0ustar develdevel? aclocal.m4 ? dif ? upd ? contrib/tbf-wm-session.diff Index: configure.in =================================================================== RCS file: /cvsroot/icewm/icewm-1.2/configure.in,v retrieving revision 1.24 diff -u -r1.24 configure.in --- configure.in 23 Dec 2003 08:06:12 -0000 1.24 +++ configure.in 23 Dec 2003 08:18:21 -0000 @@ -408,15 +408,6 @@ features="${features} corefonts" fi -dnl ======================================================= /proc/wm-session === -dnl -AC_ARG_ENABLE(wm-session, - [ --enable-wm-session Enable /proc/wm-session support (experimental)]) - if test "$enable_wmresource" = "yes"; then - AC_DEFINE(CONFIG_WM_SESSION, 1, [Define to enable /proc/wm-session resource management.]) - features="${features} wm-session" - fi - dnl ============================================================= GUI Events === dnl AC_ARG_ENABLE(guievents, Index: src/sysdep.h =================================================================== RCS file: /cvsroot/icewm/icewm-1.2/src/sysdep.h,v retrieving revision 1.2 diff -u -r1.2 sysdep.h --- src/sysdep.h 15 Apr 2002 17:13:34 -0000 1.2 +++ src/sysdep.h 23 Dec 2003 08:18:21 -0000 @@ -33,21 +33,6 @@ #include #include -#ifdef CONFIG_WM_SESSION - -#if defined(HAVE_LINUX_THREADS_H) -#include -#elif defined(HAVE_LINUX_TASKS_H) -#include -#endif - -#ifndef PID_MAX -#warning No definition of the maximal process id (PID_MAX). A default value (0x8000) is used. -#define PID_MAX 0x8000 -#endif - -#endif /* CONFIG_WM_SESSION */ - #ifdef CONFIG_I18N #include #include Index: src/wmapp.cc =================================================================== RCS file: /cvsroot/icewm/icewm-1.2/src/wmapp.cc,v retrieving revision 1.43 diff -u -r1.43 wmapp.cc --- src/wmapp.cc 22 Dec 2003 20:46:00 -0000 1.43 +++ src/wmapp.cc 23 Dec 2003 08:18:22 -0000 @@ -212,25 +212,6 @@ #endif } -#ifdef CONFIG_WM_SESSION -static void initResourceManager(pid_t pid) { - if (access(PROC_WM_SESSION, W_OK) == 0) { - FILE *wmProc(fopen(PROC_WM_SESSION, "w")); - - if (wmProc != NULL) { - MSG(("registering pid %d in \""PROC_WM_SESSION"\"", pid)); - fprintf(wmProc, "%d\n", getpid()); - fclose(wmProc); - } else - warn(PROC_WM_SESSION": %s", strerror(errno)); - } -} - -void resetResourceManager() { - initResourceManager(MAX_PID); -} -#endif - static void initIconSize() { XIconSize *is; @@ -948,9 +929,6 @@ #ifdef CONFIG_GUIEVENTS wmapp->signalGuiEvent(geRestart); #endif -#ifdef CONFIG_WM_SESSION - resetResourceManager(); -#endif manager->unmanageClients(); unregisterProtocols(); @@ -997,9 +975,6 @@ } else if (action == actionRun) { runCommand(runDlgCommand); } else if (action == actionExit) { -#ifdef CONFIG_WM_SESSION - resetResourceManager(); -#endif manager->unmanageClients(); unregisterProtocols(); exit(0); @@ -1128,11 +1103,6 @@ catchSignal(SIGQUIT); catchSignal(SIGHUP); catchSignal(SIGCHLD); -#ifdef CONFIG_WM_SESSION - catchSignal(SIGUSR1); - - initResourceManager(getpid()); -#endif #ifndef NO_WINDOW_OPTIONS defOptions = new WindowOptions(); @@ -1350,12 +1320,6 @@ restartClient(0, 0); break; -#ifdef CONFIG_WM_SESSION - case SIGUSR1: - manager->removeLRUProcess(); - break; -#endif - default: YApplication::handleSignal(sig); break; @@ -1526,9 +1490,6 @@ int rc = app.mainLoop(); #ifdef CONFIG_GUIEVENTS app.signalGuiEvent(geShutdown); -#endif -#ifdef CONFIG_WM_SESSION - resetResourceManager(); #endif manager->unmanageClients(); unregisterProtocols(); Index: src/wmclient.cc =================================================================== RCS file: /cvsroot/icewm/icewm-1.2/src/wmclient.cc,v retrieving revision 1.13 diff -u -r1.13 wmclient.cc --- src/wmclient.cc 20 Dec 2003 14:58:35 -0000 1.13 +++ src/wmclient.cc 23 Dec 2003 08:18:22 -0000 @@ -55,10 +55,6 @@ getMwmHints(); #endif -#ifdef CONFIG_WM_SESSION - getPidHint(); -#endif - #ifdef CONFIG_SHAPE if (shapesSupported) { XShapeSelectInput(xapp->display(), handle(), ShapeNotifyMask); @@ -1275,31 +1271,6 @@ XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&s, 1); -} -#endif - -#ifdef CONFIG_WM_SESSION -void YFrameClient::getPidHint() { - Atom r_type; int r_format; - unsigned long count, bytes_remain; - unsigned char *prop; - - fPid = PID_MAX; - - if (XGetWindowProperty(xapp->display(), handle(), - XA_ICEWM_PID, 0, 1, False, XA_CARDINAL, - &r_type, &r_format, &count, &bytes_remain, - &prop) == Success && prop) { - if (r_type == XA_CARDINAL && r_format == 32 && count == 1U) - fPid = *((pid_t*)prop); - - XFree(prop); - return; - } - - warn(_("Window %p has no XA_ICEWM_PID property. " - "Export the LD_PRELOAD variable to preload the preice library."), - handle()); } #endif Index: src/wmclient.h =================================================================== RCS file: /cvsroot/icewm/icewm-1.2/src/wmclient.h,v retrieving revision 1.12 diff -u -r1.12 wmclient.h --- src/wmclient.h 31 Aug 2003 18:01:59 -0000 1.12 +++ src/wmclient.h 23 Dec 2003 08:18:22 -0000 @@ -156,11 +156,6 @@ void queryShape(); #endif -#ifdef CONFIG_WM_SESSION - void getPidHint(); - pid_t pid() const { return fPid; } -#endif - void getClientLeader(); void getWindowRole(); void getWMWindowRole(); @@ -199,9 +194,6 @@ Window fTransientFor; Pixmap *kwmIcons; -#ifdef CONFIG_WM_SESSION - pid_t fPid; -#endif struct { bool wm_state : 1; // no property notify bool wm_hints : 1; Index: src/wmframe.cc =================================================================== RCS file: /cvsroot/icewm/icewm-1.2/src/wmframe.cc,v retrieving revision 1.48 diff -u -r1.48 wmframe.cc --- src/wmframe.cc 7 Dec 2003 12:31:40 -0000 1.48 +++ src/wmframe.cc 23 Dec 2003 08:18:22 -0000 @@ -1696,9 +1696,6 @@ if (fWinState & (WinStateHidden | WinStateMinimized)) setState(WinStateHidden | WinStateMinimized, 0); -#ifdef CONFIG_WM_SESSION - manager->setTopLevelProcess(client()->pid()); -#endif manager->unlockFocus(); focus(canWarp); } Index: src/wmmgr.cc =================================================================== RCS file: /cvsroot/icewm/icewm-1.2/src/wmmgr.cc,v retrieving revision 1.67 diff -u -r1.67 wmmgr.cc --- src/wmmgr.cc 22 Dec 2003 20:46:00 -0000 1.67 +++ src/wmmgr.cc 23 Dec 2003 08:18:23 -0000 @@ -1279,10 +1279,6 @@ client->setColormap(attributes.colormap); } -#ifdef CONFIG_WM_SESSION - setTopLevelProcess(client->pid()); -#endif - MSG(("initial geometry (%d:%d %dx%d)", client->x(), client->y(), client->width(), client->height())); @@ -2591,40 +2587,6 @@ fShuttingDown = shuttingDown; checkLogout(); } - -#ifdef CONFIG_WM_SESSION -void YWindowManager::setTopLevelProcess(pid_t p) { - if (p != getpid() && p != PID_MAX) { - msg("moving process %d to the top", p); - fProcessList.push(p); - } -} - -void YWindowManager::removeLRUProcess() { - pid_t const lru(fProcessList[0]); - msg("Kernel sent a cleanup request. Closing process %d.", lru); - - Window leader(None); - - for (YFrameWindow * f(topLayer()); f; f = f->nextLayer()) - if (f->client()->pid() == lru && - (None != (leader = f->client()->clientLeader()) || - None != (leader = f->client()->handle()))) - break; - - if (leader != None) { // the group leader doesn't have to be mapped - msg("Sending WM_DELETE_WINDOW to %p", leader); - YFrameClient::sendMessage(leader, _XA_WM_DELETE_WINDOW, CurrentTime); - } - -/* !!! TODO: - windows which do not support WM_DELETE_WINDOW - - unmapping -> removing from process list - - leader == None --> loop over all processes? - - s/msg/MSG/ - - apps launched from icewm ignore the PRELOAD library -*/ -} -#endif YTimer *EdgeSwitch::fEdgeSwitchTimer(NULL); Index: src/wmmgr.h =================================================================== RCS file: /cvsroot/icewm/icewm-1.2/src/wmmgr.h,v retrieving revision 1.16 diff -u -r1.16 wmmgr.h --- src/wmmgr.h 1 Nov 2003 08:02:39 -0000 1.16 +++ src/wmmgr.h 23 Dec 2003 08:18:23 -0000 @@ -7,12 +7,6 @@ #include "WinMgr.h" #include "ytimer.h" -#ifdef CONFIG_WM_SESSION -#include "yarray.h" - -#define PROC_WM_SESSION "/proc/wm-session" -#endif - #define MAXWORKSPACES 64 #define INVALID_WORKSPACE 0xFFFFFFFF @@ -200,10 +194,6 @@ void clearFullscreenLayer(); void updateFullscreenLayer(); -#ifdef CONFIG_WM_SESSION - void setTopLevelProcess(pid_t p); - void removeLRUProcess(); -#endif #if FOR_SESSION_MANAGER enum PhaseType { phaseStartup, @@ -265,10 +255,6 @@ WMState fWmState; #ifdef FOR_SESSION_MANAGER // PhaseType phaseType; -#endif - -#ifdef CONFIG_WM_SESSION - YStackSet fProcessList; #endif }; icewm-1.3.7/config.cmd0000664000076600007660000000003311463274241013556 0ustar develdevelcopy sysdep.os2 sysdep.inc icewm-1.3.7/doc/0000775000076600007660000000000011463274256012403 5ustar develdevelicewm-1.3.7/doc/icewm-11.html0000664000076600007660000000711711463274256014622 0ustar develdevel IceWM: Theme Settings Next Previous Contents

      11. Theme Settings

      This section shows settings that can be set in theme files. They can also be set in 'preferences' file but themes will override the values set there. To override the theme values the settings should be set in 'prefoverride' file. Default values are shown following the equal sign.

      11.1 Borders

      The following settings can be set to a numeric value.

      BorderSizeX = 6

      Left/right border width.

      BorderSizeY = 6

      Top/bottom border height.

      DlgBorderSizeX = 2

      Left/right border width of non-resizable windows.

      DlgBorderSizeY = 2

      Top/bottom border height of non-resizable windows.

      CornerSizeX = 24

      Width of the window corner.

      CornerSizeY = 24

      Height of the window corner.

      TitleBarHeight = 20

      Height of the title bar.

      11.2 Fonts

      The following settings can be set to a string value.

      TitleFontName = ""

      Name of the title bar font.

      MenuFontName = ""

      Name of the menu font.

      StatusFontName = ""

      Name of the status display font.

      QuickSwitchFontName = ""

      Name of the font for Alt+Tab switcher window.

      NormalTaskBarFontName = ""

      Name of the normal task bar item font.

      ActiveTaskBarFontName = ""

      Name of the active task bar item font.

      ListBoxFontName = ""

      Name of the window list font.

      ToolTipFontName = ""

      Name of the tool tip font.

      ClockFontName = ""

      Name of the task bar clock font.

      New in 1.2.14: when --enable-xfreetype is enabled, only the settings with "Xft" suffix will be used. They specifiy the font name in fontconfig format:

      MenuFontNameXft="sans-serif:size=12:bold"
      

      11.3 Colors

      ColorActiveBorder

      Color of the active window border.

      ...

      ... TODO (see default preferences for complete list)

      11.4 Desktop Background

      DesktopBackgroundColor

      Color of the desktop background.

      DesktopBackgroundImage

      Image (.xpm) for desktop background. If you want icewm to ignore the desktop background image / color set both DesktopBackgroundColor ad DesktopBackgroundImage to an empty value ("").

      DesktopBackgroundCenter = 0

      Display desktop background centered and not tiled. (set to 0 or 1).

      11.5 Task Bar

      TaskBarClockLeds = 1

      Display clock using LCD style pixmaps.


      Next Previous Contents icewm-1.3.7/doc/icewm-20.html0000664000076600007660000000101111463274256014605 0ustar develdevel IceWM: Themes Next Previous Contents

      20. Themes


      Next Previous Contents icewm-1.3.7/doc/icewm-16.html0000664000076600007660000000340411463274256014622 0ustar develdevel IceWM: Mouse cursors Next Previous Contents

      16. Mouse cursors

      IceWM scans the theme and configuration directories for a subdirectory called cursors containing monochrome but transparent XPM files. To change the mouse cursor you have to use this filenames:

      left.xbm

      Default cursor (usually pointer to the left).

      right.xbm

      Menu cursor (usually pointer to the right).

      move.xbm

      Window movement cursor.

      sizeTL.xbm

      Cursor when you resize the window by top left.

      sizeT.xbm

      Cursor when you resize the window by top.

      sizeTR.xbm

      Cursor when you resize the window by top right.

      sizeL.xbm

      Cursor when you resize the window by left.

      sizeR.xbm

      Cursor when you resize the window by right.

      sizeBL.xbm

      Cursor when you resize the window by bottom left.

      sizeB.xbm

      Cursor when you resize the window by bottom.

      sizeBR.xbm

      Cursor when you resize the window by bottom right.


      Next Previous Contents icewm-1.3.7/doc/icewm-5.html0000664000076600007660000000432311463274256014541 0ustar develdevel IceWM: Mouse Commands Next Previous Contents

      5. Mouse Commands

      5.1 Frame Commands

      Left Button

      Select and raise the window. On the window frame, resize the window.

      Right Button

      When dragged, moves the window. When clicked, displays the context menu.

      5.2 Title Bar Commands

      Any Button Drag

      Move the window.

      Alt + Left Button

      Lower the window.

      Left Button Double Click

      Maximize/Restore the window.

      Middle Button Double Click

      Rollup/Unroll the window.

      Ctrl modifier key can be used together with mouse button to prevent window from being raised to the top of the stack.

      5.3 Taskbar commands

      Left Button Click

      Activate the workspace with the window and raise the window. Toggles the minimized/active state of the window.

      Shift + Left Button Click

      Move window to current workspace. This only works when windows from all workspaces are shown on the taskbar all the time.

      Control + Left Button Click

      Minimize/restore the window.

      Middle Button Click

      Toggle raised/lowered state of the window.

      Shift + Middle Button Click

      Add the window to the current workspace.

      Control + Middle Button Click

      Lower the window.

      Right Button Click

      Display a context menu.


      Next Previous Contents icewm-1.3.7/doc/icewm.1.man0000644000076600007660000001214011463274241014331 0ustar develdevel.ds AK \s-1IceWM\s+1 .ds EP \fIIceWM: Window Manager\fP .if !\n(.g \{\ . if !\w|\*(lq| \{\ . ds lq `` . if \w'\(lq' .ds lq "\(lq . \} . if !\w|\*(rq| \{\ . ds rq '' . if \w'\(rq' .ds rq "\(rq . \} .\} .TH IceWM 1 "July 20 2005" "Adam Pribyl" "Window Manager" .SH NAME icewm \- lightweight X11 window manager .SH DESCRIPTION .I IceWM is lightweight X11 window manager. The goal of IceWM is to provide a small, fast and familiar window manager for the X11 window system. Compatibility with the window manager is desired and will be implemented where appropriate. It was originally designed to emulate the look of Motif, OS/2 Warp 4, OS/2 Warp 3 and Windows 95. Since it has a theming engine (hint: http://www.icewm.org/) others styles are possible. It also tries to combine the feel of the above systems whenever it is compatible. Generally, it tries to make all functions available both by keyboard and by mouse (this is not currently possible when using mouse focus). Extreme configurability similar to fvwm and many other window managers is NOT the goal. However IceWM configurability is very good throught its various .I preferences files. IceWM consists of several parts: .B icewm - the actual window manager binary. This is the one you need to get window decorations. .B icewmbg - the background setting applications. It can assign plain background color or images in different formats to the X background, shared or separated for different workspaces. This program should be started before IceWM startup. .B icewmtray - catches the Docklet objects installed by various applications like PSI. .B icewm-session - runs all of the above when needed. Implements basic session management. .B icesh - could be used to manage IceWM internals from command line. .B icewmhint - used internaly. .B icesound - plays audio files on GUI events raised by IceWM. .SH OPTIONS For most of the parts use option .TP .PD 0 .B \-h, \-\^\-help to see all of the options. .PD 1 .SH ENVIRONMENT VARIABLES .I ICEWM_PRIVCFG=PATH .RS Directory to use for user private configuration files, "$HOME/.icewm/" by default. .RE .I DISPLAY=NAME .RS Name of the X server to use, depends on Xlib by default. See X(1). .RE .I MAIL=URL .RS Location of your mailbox. If the schema is omitted the local "file" schema is assumed. .RE .SH FILES IceWM looks for its configuration files in the following directories, in the following order: .I $(HOME)/.icewm/ .RS User-specific configurations .RE .I /etc/X11/icewm/ .RS System-wide customized defaults .RE .I /usr/local/share/icewm/ .RS Default installation settings .RE .B Configuration files .I keys .RS global keybindings to launch applications (not window manager related) .RE .I menu .RS menu of startable applications; usually customized by the user .RE .I preferences .RS general settings - paths, colors, fonts... .RE .I prefoverride .RS settings that should override the themes .RE .I programs .RS automatically generated menu of startable applications (this should be used for wmconfig, menu or similar packages, perhaps as a part of the login or X startup sequence) .RE .I theme .RS currently selected theme .RE .I toolbar .RS quick launch application icons on the taskbar .RE .I winoptions .RS application window options .RE .I startup .RS commands to execute on IceWM startup .RE .I shutdown .RS commands to execute on IceWM shutdown .RE .B Configuration directories .I icons .RS icons used for applications (usually XPM files *_16x16.xpm and *_32x32.xpm) .RE .I ledclock .RS pictures of digits for clocks displayed in taskbar .RE .I mailbox .RS icons used for different states of mailbox .RE .I taskbar .RS pictures to customize look of the taskbar .RE .I themes .RS directory to store themes .RE .SH EXAMPLES Examples of above configuration files you can find in default instalation path or in system-wide customizable defaults. .SH SEE ALSO .IR xinit (1), .IR X (1), .IR http://www.icewm.org/manual/ .IR http://www.icewm.org/FAQ/ .IR http://www.icewm.org/themes/ .SH AUTHORS The original version of .I IceWM was designed and implemented in 1997 by Marko Macek, in year 2001 it was maintained by Mathias Hasselmann then again Marko Macek took over. IceWM man page written by Adam Pribyl, covex@ahoj.fsik.cvut.cz, 2005 .SH BUG REPORTS If you find a bug in .IR IceWM please use bug reporting system on .BR http://sourceforge.net/projects/icewm/ to report it. .SH COPYING .I IceWM is released under GNU Library General Public License. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA. icewm-1.3.7/doc/icewm-6.html0000664000076600007660000000546011463274256014545 0ustar develdevel IceWM: Keyboard Commands Next Previous Contents

      6. Keyboard Commands

      Alt key is assumed to be the key defined as Mod1 modifier.

      Alt+F1

      Raise the window.

      Alt+F2

      Make a window occupy all desktops.

      Alt+F3

      Lower the window to the bottom of the stack.

      Alt+F4

      Close the window.

      Alt+F5

      Restore the window state if maximized or minimized/hidden.

      Alt+F6

      Focus to next window.

      Alt+Shift+F6

      Focus to previous window.

      Alt+F7

      Move the window.

      Alt+F8

      Resize the window.

      Alt+F9

      Minimize the window to taskbar.

      Alt+F10

      Maximize the window.

      Alt+Shift+F10

      Maximize the window vertically (toggle).

      Alt+F11

      Hide the window (appears in window list, but not on taskbar).

      Alt+F12

      Rollup the window.

      Ctrl+Escape

      Show the start menu.

      Ctrl+Alt+Escape

      Show the window list.

      Shift+Escape

      Show the system-menu of the window.

      Alt+Escape

      Focus to next window (down in zorder)

      Alt+Shift+Escape

      Focus to previous window (up in zorder)

      Alt+Tab

      Switch between windows (top->bottom).

      Alt+Shift+Tab

      Switch between windows (bottom->top).

      Ctrl+Alt+LeftArrow

      Switch to the previous workspace (cycle).

      Ctrl+Alt+RightArrow

      Switch to the next workspace (cycle).

      Ctrl+Alt+DownArrow

      Switch to the previously active workspace.

      Ctrl+Alt+Shift+LeftArrow

      Move the focused window to the previous workspace and activate it.

      Ctrl+Alt+Shift+RightArrow

      Move the focused window to the next workspace and activate it.

      Ctrl+Alt+Shift+DownArrow

      Move the focused window to the previously active workspace and activate it.

      Ctrl+Alt+Delete

      displays the session dialog.

      Ctrl+Alt+Space

      Activate the internal taskbar command line for starting applications. (Ctrl+Enter to run in a terminal window)


      Next Previous Contents icewm-1.3.7/doc/icewm-7.html0000664000076600007660000000351411463274256014544 0ustar develdevel IceWM: Configuration/Resource/Library Path Next Previous Contents

      7. Configuration/Resource/Library Path

      Icewm knows several locations to look for configuration information, themes and customization; put together these locations are called the resource path. The resource path contains the following directories:

      $HOME/.icewm

      user's personal customization. This location can be customized by setting the $ICEWM_PRIVCFG environment variable.

      /etc/X11/icewm

      system-wide customized defaults

      /usr/share/icewm OR /usr/local/share/icewm

      compiled-in default directory with default files

      The directories are searched in the above order, so any file located in the system/install directory can be overridden by the user by creating the same directory hierarchy under $HOME/.icewm.

      To customize icewm yourself, you should create the $HOME/.icewm directory and copy the files that you wish to modify (preferences, winoptions),from /etc/X11/icewm, /usr/share/icewm or /usr/local/share/icewm and then modify as you like.

      To customize the default themes, you should create the $HOME/.icewm/themes directory and copy all the theme files there and then modify as necessary.


      Next Previous Contents icewm-1.3.7/doc/icewm-9.html0000664000076600007660000000141411463274256014543 0ustar develdevel IceWM: Theme Next Previous Contents

      9. Theme

      File  /.icewm/theme contains the currently selected theme. It will be overwritten automatically when a theme is selected from the Themes menu.


      Next Previous Contents icewm-1.3.7/doc/icewm-2.html0000664000076600007660000000257311463274256014543 0ustar develdevel IceWM: Copying Next Previous Contents

      2. Copying

      IceWM X11 Window Manager

      Copyright (C) 1997-2006 Marko Macek

      This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

      This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.

      You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA.


      Next Previous Contents icewm-1.3.7/doc/icewm-17.html0000664000076600007660000000307611463274256014630 0ustar develdevel IceWM: Themes Next Previous Contents

      17. Themes

      Themes are used to configure the way the window manager looks. Things like fonts, colors, border sizes, button pixmaps can be configured. Put together they form a theme.

      Theme files are searched in the libpath/themes subdirectories.

      These directories contain other directories that contain related theme files and their .xpm files. Each theme file specifies fonts, colors, border sizes, ...

      The theme to use is specified in  /.icewm/theme file:

      Theme = "nice/default.theme"

      Name of the theme to use. Both the directory and theme file name must be specified.

      If the theme directory contains a file named fonts.dir created by mkfontdir the theme directory is inserted into the X servers font search path.

      http://themes.freshmeat.net/> contains various nice themes created by users of IceWM.


      Next Previous Contents icewm-1.3.7/doc/icewm-15.html0000664000076600007660000000371111463274256014622 0ustar develdevel IceWM: Icon handling Next Previous Contents

      15. Icon handling

      15.1 Generic

      The window manager expects to find two XPM files for each icon specified in the configuration files as ICON. They should be named like this:

      ICON_16x16.xpm

      A small 16x16 pixmap.

      ICON_32x32.xpm

      A normal 32x32 pixmap.

      ICON_48x48.xpm

      A large 48x48 pixmap.

      Other pixmap sizes like 20x20, 24x24, 40x40, 48x48, 64x64 might be used in the future. Perhaps we need a file format that can contain more than one image (with different sizes and color depths) like Windows'95 and OS/2 .ICO files.

      It would be nice to have a feature from OS/2 that varies the icon size with screen resolution (16x16 and 32x32 icons are quite small on 4000x4000 screens ;-)

      15.2 Imlib

      When compiled with the Imlib image library all of Imlib's image formats (bmp, jpeg, ppm, tiff, gif, png, ps, xpm on my machine) are supported. Use them by specifying the full filename or an absolute path:

      ICON.bmp,

      A PPM icon in your IconPath.

      /usr/share/pixmap/ICON.png

      An PNG image with absolute location.


      Next Previous Contents icewm-1.3.7/doc/icewm-14.html0000664000076600007660000001310411463274256014616 0ustar develdevel IceWM: Window Options Next Previous Contents

      14. Window Options

      winoptions file is used to configure settings for individual application windows.

      Each line in the file must be in one of the possible formats:

      window_class.window_name.window_role.option: argument window_class.window_name.option: argument window_class.window_role.option: argument window_name.window_role.option: argument window_class.option: argument window_name.option: argument window_role.option: argument

      Each window on the desktop has (should) class and name resources associated with it. Some more recent applications will also have a window role resource, though not all do. They can be determined using the xprop utility.

      xprop should display a line like this when used on a toplevel window:

      WM_CLASS = "name", "class"
      
      and may also display a line like this:
      WM_WINDOW_ROLE = "window role"
      

      It's possible that an application's class and/or name contains the dot character (".") used by IceWM to separate class, name and role values. To lock it, precede it with the backslash character. In the following example, we suppose an application's window has the.class as its class value and the.name as its name value :

      the\.class.the\.name.option: argument
      

      Options that can be set per window are as follows:

      icon

      The name of the icon.

      workspace

      Default workspace for window (number, counting from 0)

      layer

      Default layer for the window. Layer can be one of the following strings:

      Desktop

      Desktop window. There should be only one window in this layer.

      Below

      Below default layer.

      Normal

      Default layer for the windows.

      OnTop

      Above the default.

      Dock

      Layer for windows docked to the edge of the screen.

      AboveDock

      Layer for the windows above the dock.

      Menu

      Layer for the windows above the dock.

      You can also use the numbers from WinMgr.h.

      geometry

      Default geometry for window. This geometry should be specified in the X11-syntax, formal notation: [=][<width>{xX}<height>][{+-}<xoffset>{+-}<yoffset>]

      tray

      Default tray option for the window. Affects both the tray and the task pane. Tray can be one of the following strings:

      Ignore

      Don't add an icon to the tray pane.

      Minimized

      Add an icon the the tray. Remove the task pane button when minimized.

      Exclusive

      Add an icon the the tray. Never create a task pane button .

      allWorkspaces=0

      If set to 1, window will be visible on all workspaces.

      ignoreWinList=0

      If set to 1, window will not appear in the window list.

      ignoreTaskBar=0

      If set to 1, window will not appear on the task bar.

      ignoreQuickSwitch=0

      If set to 1, window will not be accessible using QuickSwitch feature (Alt+Tab).

      fullKeys=0

      If set to 1, the window manager leave more keys (Alt+F?) to the application.

      fMove=1

      If set to 0, window will not be movable.

      fResize=1

      If set to 0, window will not be resizable.

      fClose=1

      If set to 0, window will not be closable.

      fMinimize=1

      If set to 0, window will not be minimizable.

      fMaximize=1

      If set to 0, window will not be maximizable.

      fHide=1

      If set to 0, window will not be hidable.

      fRollup=1

      If set to 0, window will not be shadable.

      dTitleBar=1

      If set to 0, window will not have a title bar.

      dSysMenu=1

      If set to 0, window will not have a system menu.

      dBorder=1

      If set to 0, window will not have a border.

      dResize=1

      If set to 0, window will not have a resize border.

      dClose=1

      If set to 0, window will not have a close button.

      dMinimize=1

      If set to 0, window will not have a minimize button.

      dMaximize=1

      If set to 0, window will not have a maximize button.

      noFocusOnAppRaise

      if set to 1, window will not automatically get focus as application raises it.

      ignoreNoFocusHint

      if set to 1, icewm will focus even if the window does not handle input.

      doNotCover=0

      if set to 1, this window will limit the workspace available for regular applications. window has to be sticky at the moment to make it work

      forcedClose=0

      if set to 1 and the application had not registered WM_DELETE_WINDOW, a close confirmation dialog won't be offered upon closing the window.


      Next Previous Contents icewm-1.3.7/doc/Makefile0000664000076600007660000000022411463274241014033 0ustar develdevelall: icewm.html maintainer-clean: distclean rm -f icewm*.html distclean: clean rm -f *~ clean: icewm.html: icewm.sgml -sgml2html icewm.sgml icewm-1.3.7/doc/icewm.sgml0000644000076600007660000007653511463274241014403 0ustar develdevel
      IceWM <author>Marko Macek, <tt/Marko.Macek@gmx.net/</author> <date>1.2.27, 2006 Aug 06 <abstract> This document is the documentation for the IceWM X11 window manager. This document is incomplete. Almost everything is subject to change. </abstract> <toc> <sect>Introduction<p> The goal of <bf/IceWM/ is to provide a small, fast and familiar window manager for the X11 window system. Compatibility with the <tt/mwm/ window manager is desired and will be implemented where appropriate. <bf/IceWM/ originally was designed to emulate the look of Motif, OS/2 Warp 4, OS/2 Warp 3 and Windows 95. Since it has a theming engine (hint: <url url="http://www.icewm.org/">) others styles are possible. It also tries to combine the feel of the above systems whenever it is compatible. Generally, it tries to make all functions available both by keyboard and by mouse (this is not currently possible when using mouse focus). Extreme configurability similar to <tt/fvwm/ and many other window managers is <bf/NOT/ the goal. Further information can be found at <url url="http://www.icewm.org/"/> and <url url="http://icewm.sourceforge.net/"/>. <sect>Copying<p> IceWM X11 Window Manager Copyright (C) 1997-2006 Marko Macek This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA. <sect>First steps<p> <sect1>IceWM components<p> The IceWM suite consists of the following core applications provided by the main package: <p> <itemize> <item> icewm - the actual window manager binary. This is the one you need to get window decorations. </item> <item> icewmbg - the background setting applications. It can assign plain background color or images in different formats to the X background, shared or separated for different workspaces. This program should be started before IceWM startup. </item> <item> icewmtray - catches the Docklet objects installed by various applications like PSI </item> <item>icewm-session - runs all of the above when needed </item> <item> icewm-menu-gnome1 - used internaly, generates IceWM program menus from located GNOME(1) menus </item> <item> icewm-menu-gnome2 - used internaly, generates IceWM program menus from FreeDesktop .desktop files (KDE/GNOME(2) menus). </item> <item> icewmhint - used internaly </item> </itemize> <sect1>Starting icewm<p> The <tt/icewm/ executable must be in your path for the restart function to work correctly. Please set your $PATH environment variable accordingly. The <tt/icewm/ program alone is suitable for usabe with Desktop environments like GNOME. <p> If you wish to run the whole IceWM suite (WM, background changer, Docklet support, and startup/shutdown script handling), use the <tt/icewm-session/ binary instead of pure <tt/icewm/. Note that this is not a complete Session Manager but a helps only to automate the startup. First make sure that you choose the correct X startup script in your home directory. For most distributions the file $HOME/.xsession is honored by startx and X Display Managers like kdm. On RedHat, the $HOME/.Xclients may be used instead. In all cases, choose the one recommended by your distribution and make sure that there is no concurency between the X startup scripts. The recommended way to start is from $HOME/.xsession shell script (may be executable, must be on RedHat). Mine looks something like this: <verb> # run profile to set $PATH and other env vars correctly . $HOME/.bash_profile # setup touchpad and the external mouse xset m 7 2 xinput set-ptr-feedback 0 7 1.9 1 # start icewm-session exec icewm-session </verb> The xterm on the last line is there simply to make sure that your X session doesn't crash if icewm does (should never happen). You can restart icewm from there or start some other window manager. The session will close if you close the xterm. The above should work for most Linux systems. On commercial unices you should use $HOME/.dtprofile if you have CDE or $HOME/.vueprofile for HP-UX with HP VUE. If you are running xdm or some other login program check it's manpage for the correct place to start the window manager (usually ~/.xsession or ~/.Xsession, sometimes also ~/.xinitrc.os5). <sect1>Startup and shutdown scripts<p> After initialization IceWM-Session will search the resource path (<ref id="lib">) for a startup script. If this file is found to exist and to be executeable IceWM-Session will run the script. On startup IceWM-Session will search for a script called "startup". And during the termination of icewm, the "shutdown" script is executed. Additionally the flag "--with-gnome" is passed if a GNOME session manager is detected. Example (startup): <verb> #!/bin/bash [ -x ~/.icewm/restart ] && source ~/.icewm/restart gnome-terminal --geometry 80x25+217+235 & xscreensaver & </verb> <bf/Hint: / This feature is meant for easy desktop initialization and it is part of IceWM due popular demand. For more sophisticated session management you should learn how to use a real session manager - IceWM does support the XSESSION protocol. <sect>Focus models<p> <bf/IceWM/ implements four general focus models: <descrip> <tag/clickToRaise/ Exactly like Win95, OS/2 Warp. When window is clicked with a mouse, it is raised and activated. <tag/clickToFocus/ Window is raised and focused when titlebar or frame border is clicked. Window is focused but not raised when window interior is clicked. <tag/pointerFocus/ When the mouse is moved, focus is set to window under a mouse. It should be possible to change focus with the keyboard when mouse is not moved. <tag/explicitFocus/ When a window is clicked, it is activated, but not raised. New windows do not automatically get the focus unless they are transient windows for the active window. <em/I am experimenting with this, to develop something more flexible then clickFocus./ </descrip> Detailed configuration is possible using the configuration file options. <sect>Mouse Commands<p> <sect1>Frame Commands<p> <descrip> <tag/Left Button/ Select and raise the window. On the window frame, resize the window. <tag/Right Button/ When dragged, moves the window. When clicked, displays the context menu. </descrip> <sect1>Title Bar Commands<p> <descrip> <tag/Any Button Drag/ Move the window. <tag/Alt + Left Button/ Lower the window. <tag/Left Button Double Click/ Maximize/Restore the window. <tag/Middle Button Double Click/ Rollup/Unroll the window. </descrip> <bf/Ctrl modifier key can be used together with mouse button to prevent window from being raised to the top of the stack./ <sect1>Taskbar commands<p> <descrip> <tag/Left Button Click/ Activate the workspace with the window and raise the window. Toggles the minimized/active state of the window. <tag/Shift + Left Button Click/ Move window to current workspace. This only works when windows from all workspaces are shown on the taskbar all the time. <tag/Control + Left Button Click/ Minimize/restore the window. <tag/Middle Button Click/ Toggle raised/lowered state of the window. <tag/Shift + Middle Button Click/ Add the window to the current workspace. <tag/Control + Middle Button Click/ Lower the window. <tag/Right Button Click/ Display a context menu. </descrip> <sect>Keyboard Commands<p> <em>Alt key is assumed to be the key defined as Mod1 modifier.</em> <descrip> <tag/Alt+F1/ Raise the window. <tag/Alt+F2/ Make a window occupy all desktops. <tag/Alt+F3/ Lower the window to the bottom of the stack. <tag/Alt+F4/ Close the window. <tag/Alt+F5/ Restore the window state if maximized or minimized/hidden. <tag/Alt+F6/ Focus to next window. <tag/Alt+Shift+F6/ Focus to previous window. <tag/Alt+F7/ Move the window. <tag/Alt+F8/ Resize the window. <tag/Alt+F9/ Minimize the window to taskbar. <tag/Alt+F10/ Maximize the window. <tag/Alt+Shift+F10/ Maximize the window vertically (toggle). <tag/Alt+F11/ Hide the window (appears in window list, but not on taskbar). <tag/Alt+F12/ Rollup the window. <tag/Ctrl+Escape/ Show the start menu. <tag/Ctrl+Alt+Escape/ Show the window list. <tag/Shift+Escape/ Show the system-menu of the window. <tag/Alt+Escape/ Focus to next window (down in zorder) <tag/Alt+Shift+Escape/ Focus to previous window (up in zorder) <tag/Alt+Tab/ Switch between windows (top->bottom). <tag/Alt+Shift+Tab/ Switch between windows (bottom->top). <tag/Ctrl+Alt+LeftArrow/ Switch to the previous workspace (cycle). <tag/Ctrl+Alt+RightArrow/ Switch to the next workspace (cycle). <tag/Ctrl+Alt+DownArrow/ Switch to the previously active workspace. <tag/Ctrl+Alt+Shift+LeftArrow/ Move the focused window to the previous workspace and activate it. <tag/Ctrl+Alt+Shift+RightArrow/ Move the focused window to the next workspace and activate it. <tag/Ctrl+Alt+Shift+DownArrow/ Move the focused window to the previously active workspace and activate it. <tag/Ctrl+Alt+Delete/ displays the session dialog. <tag/Ctrl+Alt+Space/ Activate the internal taskbar command line for starting applications. (Ctrl+Enter to run in a terminal window) </descrip> <sect>Configuration/Resource/Library Path<p><label id="lib"> Icewm knows several locations to look for configuration information, themes and customization; put together these locations are called the resource path. The resource path contains the following directories:<p> <descrip> <tag>$HOME/.icewm</tag> user's personal customization. This location can be customized by setting the $ICEWM_PRIVCFG environment variable. <tag>/etc/X11/icewm</tag> system-wide customized defaults <tag>/usr/share/icewm OR /usr/local/share/icewm</tag> compiled-in default directory with default files </descrip> The directories are searched in the above order, so any file located in the system/install directory can be overridden by the user by creating the same directory hierarchy under <tt>$HOME/.icewm</tt>. <p> To customize icewm yourself, you should create the $HOME/.icewm directory and copy the files that you wish to modify (preferences, winoptions),from /etc/X11/icewm, /usr/share/icewm or /usr/local/share/icewm and then modify as you like. <p> To customize the default themes, you should create the $HOME/.icewm/themes directory and copy all the theme files there and then modify as necessary. <sect>Configuration Files<p> <bf/IceWM/ uses the following configuration files: <itemize> <item><tt><ref id="lib">/<ref id="theme"></tt> - Currently selected theme <item><tt><ref id="lib">/<ref id="preferences"></tt> - General settings - paths, colors, fonts... <item><tt><ref id="lib">/ prefoverride </tt> - Settings that should override the themes. <item><tt><ref id="lib">/<ref id="menu"></tt> - Menu of startable applications. Usually customized by the user. <item><tt><ref id="lib">/<ref id="programs"></tt> - Automatically generated menu of startable applications (this should be used for <bf/wmconfig/, <bf/menu/ or similar packages, perhaps as a part of the login or X startup sequence). <item><tt><ref id="lib">/<ref id="winoptions"></tt> - Application window options <item><tt><ref id="lib">/<ref id="keys"></tt> - Global keybindings to launch applications (not window manager related) <item><tt><ref id="lib">/<ref id="toolbar"></tt> - Quick launch application icons on the taskbar. </itemize> <sect>Theme<label id="theme"><p> File ~/.icewm/theme contains the currently selected theme. It will be overwritten automatically when a theme is selected from the Themes menu. <sect>Preferences<label id="preferences"><p> This section shows preferences that can be set in ~/.icewm/preferences. Themes will not be able to override these settings. Default values are shown following the equal sign. <sect1>Focus and Behavior<p> The following settings can be set to value 1 (enabled) or value 0 (disabled). <descrip> <tag/ClickToFocus = 1/ Enables click to focus mode. <tag/RaiseOnFocus = 1/ Window is raised when focused. <tag/FocusOnClickClient = 1/ Window is focused when client area is clicked. <tag/RaiseOnClickClient = 1/ Window is raised when client area is clicked. <tag/RaiseOnClickTitleBar = 1/ Window is raised when titlebar is clicked. <tag/RaiseOnClickButton = 1/ Window is raised when title bar button is clicked. <tag/RaiseOnClickFrame = 1/ Window is raised when frame is clicked. <tag/PassFirstClickToClient = 1/ The click which raises the window is also passed to the client. <tag/AutoRaise = 0/ Windows will raise automatically after AutoRaiseDelay when focused. <tag/StrongPointerFocus = 0/ When focus follows mouse always give the focus to the window under mouse pointer - Even when no mouse motion has occured. Using this is not recommended. Please prefer to use just ClickToFocus=0. <tag/FocusOnMap = 1/ Window is focused after being mapped. <tag/FocusOnMapTransient = 1/ Transient window is focused after being mapped. <tag/FocusOnAppRaise = 1/ The window is focused when application raises it. <tag/PointerColormap = 0/ Colormap focus follows pointer. <tag/SizeMaximized = 0/ Window can be resized when maximized. <tag/MinimizeToDesktop = 0/ Window is minimized to desktop area (in addition to the taskbar). <tag/QuickSwitch = 1/ enable Alt+Tab window switcher. <tag/QuickSwitchToMinimized = 1/ Alt+Tab switches to minimized windows too. <tag/QuickSwitchToAllWorkspaces = 1/ Alt+Tab switches to windows on any workspace. <tag/ShowMoveSizeStatus = 1/ Move/resize status window is visible when moving/resizing the window. <tag/ShowWorkspaceStatusAfterSwitch = 1/Show name of current workspace while switching workspaces. <tag/ShowWorkspaceStatusAfterActivation = 1/Show name of current workspace after explicit activation. <tag/WarpPointer = 0/ Pointer is moved in pointer focus move when focus is moved using the keyboard. <tag/OpaqueMove = 1/ Window is immediately moved when dragged, no outline is shown. <tag/OpaqueResize = 0/ Window is immediately resized when dragged, no outline is shown. <tag/Win95Keys = 0/ Makes 3 additional keys perform sensible functions. The keys must be mapped to MetaL,MetaR and Menu. The left one will activate the start menu and the right one will display the window list. <tag/ManualPlacement = 0/ Windows must be placed manually by the user. <tag/IgnoreNoFocusHint = 0/ Ignore no-accept-focus hint set by some windows. <tag/MenuMouseTracking = 0/ If enabled, menus will track the mouse even when no mouse button is pressed. <tag/SnapMove = 1/ Snap to nearest screen edge/window when moving windows. <tag/SnapDistance/ Distance in pixels before windows snap together <tag/EdgeSwitch = 0/ Workspace switches by moving mouse to left/right screen edge. <tag/AutoReloadMenus = 1/ Reload menu files automatically if set to 1. <tag/ShowThemesMenu = 1/Show themes submenu. <tag/ShowHelp = 1/ Show the help menu item. <tag/MsgBoxDefaultAction = 0/Preselect to Cancel (0) or the OK (1) button in message boxes <tag/UseRootButtons/ Bitmask of root window button click to use in window manager <tag/ButtonRaiseMask/ Bitmask of buttons that raise the window when pressed <tag/EdgeResistance = 32/ Resistance to move window with mouse outside screen limits. Setting it to 10000 makes the resistance infinite. </descrip> <sect1>Task Bar<p> The following settings can be set to value 1 (enabled) or value 0 (disabled). <descrip> <tag/ShowTaskBar = 1/ Task bar is visible. <tag/TaskBarAtTop = 0/ Task bar is located at top of screen. <tag/TaskBarKeepBelow = 1/ Keep the task bar below regular windows <tag/TaskBarAutoHide = 0/ Task bar will auto hide when mouse leaves it. <tag/TaskBarShowStartMenu = 1/ Show button for the start menu on the task bar. <tag/TaskBarShowWindowListMenu/ Show button for window list menu on taskbar. <tag/TaskBarShowWorkspaces = 1/ Show workspace switching buttons on task bar. <tag/TaskBarShowAllWindows = 0/ Show windows from all workspaces on task bar. <tag/TaskBarShowClock = 1/ Task bar clock is visible. <tag/TaskBarShowMailboxStatus = 1/ Display status of mailbox (determined by $MAIL environment variable). <tag/TaskBarMailboxStatusBeepOnNewMail = 0/ Beep when new mail arrives. <tag/TaskBarMailboxStatusCountMessages = 0/ Display mail message count as tooltip. <tag/MailBoxPath/ Path to a mbox file. Remote mail boxes are accessed by specifying an URL using the Common Internet Scheme Syntax (RFC 1738): <verb> scheme://[user[:password]@]server[:port][/path] </verb> Supported schemes are "pop3", "imap" and "file". When the scheme is omitted "file://" is prepended silently. IMAP subfolders can be access by using the path component.<p> Reserved characters like slash, at and colon can be specified by using escape sequences using a hexadecimal encoding like %2f for the slash or %40 for the at sign.<p> Examples: <verb> file:///var/spool/mail/captnmark pop3://markus:%2f%40%3a@maol.ch/ imap://mathias@localhost/INBOX.Maillisten.icewm-user </verb> <tag/TaskBarDoubleHeight = 0/ Double height task bar <tag/TaskBarShowCPUStatus = 1/ Show CPU status on task bar. <tag/TimeFormat/ format for the taskbar clock (time) (see strftime(3) manpage) <tag/DateFormat/ format for the taskbar clock tooltip (date+time) (see strftime(3) manpage). <tag/UseMouseWheel/ mouse wheel support <tag/DelayPointerFocus/ similar to delayed auto raise. </descrip> <sect1>Timings<p> <descrip> <tag/ClickMotionDistance = 5/ Movement before click is interpreted as drag. <tag/MultiClickTime = 400/ Time (ms) to recognize for double click. <tag/AutoRaiseDelay = 400/ Time to auto raise (must enable first with AutoRaise) <tag/AutoHideDelay = 300/ Time to auto hide taskbar (must enable first with TaskBarAutoHide). <tag/ToolTipDelay = 5000/ Time before showing the tooltip. <tag/ToolTipTime = 60000/ Time before tooltip window is hidden (0 means never) <tag/ScrollBarStartDelay/ Initial scroll bar autoscroll delay <tag/ScrollBarDelay/ Scroll bar autoscroll delay <tag/AutoScrollStartDelay/ Auto scroll start delay <tag/AutoScrollDelay/ Auto scroll delay </descrip> <sect1>Workspaces<p> <descrip> <tag/WorkspaceNames/ List of workspace names, for example<p> <tt/WorkspaceNames=" 1 ", " 2 ", " 3 ", " 4 "/ </descrip> <sect1>Paths<p> <descrip> <tag/LibPath/ Path to the icewm/lib directory. <tag/IconPath/ Path to the icon directory. Multiple paths can be entered using the colon (UNIX) or semicolon (OS/2) as the separator. <tag/LibPath/ Path to the icewm/lib directory. </descrip> <sect1>Programs<p> <descrip> <tag/ClockCommand/ program to run when the clock is double clicked. <tag/MailCommand/ program to run when mailbox icon is double clicked. <tag/LockCommand/ program to run to lock the screen. <tag/RunCommand/ program to run when <bf/Run/ is selected from the start menu. </descrip> <sect1>Window Menus<p> <descrip> <tag/WinMenuItems/ Items to show in the window menus, posible values are:<p> r=Restore, m=Move, s=Size, n=miNimize, x=maXimize, f=Fullscreen, h=Hide, u=roolUp, a=rAise, l=Lower, y=laYer, t=moveTo, i=trayIcon, c=Close, k=Kill, w=WindowsList<p> Examples:<p> <verb> WinMenuItems=rmsnxfhualyticw #Default menu WinMenuItems=rmsnxfhualytickw #Menu with all possible options WinMenuItems=rmsnxc #MS-Windows menu </verb> </descrip> <sect>Theme Settings<label id="themeprefs"><p> This section shows settings that can be set in theme files. They can also be set in 'preferences' file but themes will override the values set there. To override the theme values the settings should be set in 'prefoverride' file. Default values are shown following the equal sign. <sect1>Borders<p> The following settings can be set to a numeric value. <descrip> <tag/BorderSizeX = 6/ Left/right border width. <tag/BorderSizeY = 6/ Top/bottom border height. <tag/DlgBorderSizeX = 2/ Left/right border width of non-resizable windows. <tag/DlgBorderSizeY = 2/ Top/bottom border height of non-resizable windows. <tag/CornerSizeX = 24/ Width of the window corner. <tag/CornerSizeY = 24/ Height of the window corner. <tag/TitleBarHeight = 20/ Height of the title bar. </descrip> <sect1>Fonts<p> The following settings can be set to a string value. <descrip> <tag/TitleFontName = ""/ Name of the title bar font. <tag/MenuFontName = ""/ Name of the menu font. <tag/StatusFontName = ""/ Name of the status display font. <tag/QuickSwitchFontName = ""/ Name of the font for Alt+Tab switcher window. <tag/NormalTaskBarFontName = ""/ Name of the normal task bar item font. <tag/ActiveTaskBarFontName = ""/ Name of the active task bar item font. <tag/ListBoxFontName = ""/ Name of the window list font. <tag/ToolTipFontName = ""/ Name of the tool tip font. <tag/ClockFontName = ""/ Name of the task bar clock font. </descrip> New in 1.2.14: when --enable-xfreetype is enabled, only the settings with "Xft" suffix will be used. They specifiy the font name in fontconfig format: <verb> MenuFontNameXft="sans-serif:size=12:bold" </verb> <sect1>Colors<p> <descrip> <tag/ColorActiveBorder/ Color of the active window border. <tag/.../ ... TODO (see default preferences for complete list) </descrip> <sect1>Desktop Background<p> <descrip> <tag/DesktopBackgroundColor/ Color of the desktop background. <tag/DesktopBackgroundImage/ Image (.xpm) for desktop background. If you want icewm to ignore the desktop background image / color set both DesktopBackgroundColor ad DesktopBackgroundImage to an empty value (""). <tag/DesktopBackgroundCenter = 0/ Display desktop background centered and not tiled. (set to 0 or 1). </descrip> <sect1>Task Bar<p> <descrip> <tag/TaskBarClockLeds = 1/ Display clock using LCD style pixmaps. </descrip> <sect>Menus and Toolbar<p> <sect1>menu<label id="menu"><p> Within the menu configuration file you can configure which programs are to appear in the root/start menu. <sect1>toolbar<label id="toolbar"><p> The Toolbar configuration file is used to put programs as buttons on the taskbar. <sect1>programs<label id="programs"><p> Usually automatically generated menu configuration file of installed programs. The <tt/programs/ file should be automatically generated by <tt/wmconfig/ (Redhat), <tt/menu/ (Debian) or an equivalent program (kde2ice and gno2ice to convert GNOME/KDE Menu hierarchy are available). <p> Programs can be added using the following syntax:<p> <verb> prog "title" icon_name program_executable options </verb> <p> Restarting another window manager can be done using the restart program: <verb> restart "title" icon_name program_executable options </verb> icon_name can be <tt/-/ if icon is not wanted. <p> The "runonce" keyword allows to launch an application only when no window has the WM_CLASS hint specified. Otherwise the first window having this class hint is mapped and raised. Syntax:<p> <verb> runonce "title" icon_name "res_name.res_class" program_executable options runonce "title" icon_name "res_name" program_executable options runonce "title" icon_name ".res_class" program_executable options </verb> The class hint can be figured out by running <verb> $ xprop | grep WM_CLASS </verb> <p> Submenus can be added using the following syntax:<p> <verb> menu "title" icon_name { # contained items } </verb> Only double quotes are interpreted by icewm. Icewm doesn't run the shell automatically, so you may have to do that. <sect>Keys <label id="keys"><p> Icewm allows launching of arbitrary programs with any key combination. This is configured in the <tt><ref id="lib" name="libpath">/<bf/keys/</tt> file. Syntax of the file is like this: <p> <bf/key/ "key combination" program options... <p> For example: <verb> key "Alt+Ctrl+t" xterm </verb> <sect>Window Options<label id="winoptions"><p> <bf/winoptions/ file is used to configure settings for individual application windows. Each line in the file must be in one of the possible formats: window_class.window_name.window_role.option: argument window_class.window_name.option: argument window_class.window_role.option: argument window_name.window_role.option: argument window_class.option: argument window_name.option: argument window_role.option: argument Each window on the desktop has (should) <bf/class/ and <bf/name/ resources associated with it. Some more recent applications will also have a <bf/window role/ resource, though not all do. They can be determined using the <tt/xprop/ utility. xprop should display a line like this when used on a toplevel window: <verb> WM_CLASS = "name", "class" </verb> and may also display a line like this: <verb> WM_WINDOW_ROLE = "window role" </verb> It's possible that an application's <bf/class/ and/or <bf/name/ contains the dot character (".") used by IceWM to separate <bf/class/, <bf/name/ and <bf/role/ values. To lock it, precede it with the backslash character. In the following example, we suppose an application's window has <bf/the.class/ as its <bf/class/ value and <bf/the.name/ as its <bf/name/ value : <verb> the\.class.the\.name.option: argument </verb> Options that can be set per window are as follows: <descrip> <tag/icon/ The name of the icon. <tag/workspace/ Default workspace for window (number, counting from 0) <tag/layer/ Default layer for the window. Layer can be one of the following strings: <descrip> <tag/Desktop/ Desktop window. There should be only one window in this layer. <tag/Below/ Below default layer. <tag/Normal/ Default layer for the windows. <tag/OnTop/ Above the default. <tag/Dock/ Layer for windows docked to the edge of the screen. <tag/AboveDock/ Layer for the windows above the dock. <tag/Menu/ Layer for the windows above the dock. </descrip> You can also use the numbers from <tt/WinMgr.h/. <tag/geometry/ Default geometry for window. This geometry should be specified in the X11-syntax, formal notation: [=][<width>{xX}<height>][{+-}<xoffset>{+-}<yoffset>] <tag/tray/ Default tray option for the window. Affects both the tray and the task pane. Tray can be one of the following strings: <descrip> <tag/Ignore/ Don't add an icon to the tray pane. <tag/Minimized/ Add an icon the the tray. Remove the task pane button when minimized. <tag/Exclusive/ Add an icon the the tray. Never create a task pane button . </descrip> <tag/allWorkspaces=0/ If set to 1, window will be visible on all workspaces. <tag/ignoreWinList=0/ If set to 1, window will not appear in the window list. <tag/ignoreTaskBar=0/ If set to 1, window will not appear on the task bar. <tag/ignoreQuickSwitch=0/ If set to 1, window will not be accessible using QuickSwitch feature (Alt+Tab). <tag/fullKeys=0/ If set to 1, the window manager leave more keys (Alt+F?) to the application. <tag/fMove=1/ If set to 0, window will not be movable. <tag/fResize=1/ If set to 0, window will not be resizable. <tag/fClose=1/ If set to 0, window will not be closable. <tag/fMinimize=1/ If set to 0, window will not be minimizable. <tag/fMaximize=1/ If set to 0, window will not be maximizable. <tag/fHide=1/ If set to 0, window will not be hidable. <tag/fRollup=1/ If set to 0, window will not be shadable. <tag/dTitleBar=1/ If set to 0, window will not have a title bar. <tag/dSysMenu=1/ If set to 0, window will not have a system menu. <tag/dBorder=1/ If set to 0, window will not have a border. <tag/dResize=1/ If set to 0, window will not have a resize border. <tag/dClose=1/ If set to 0, window will not have a close button. <tag/dMinimize=1/ If set to 0, window will not have a minimize button. <tag/dMaximize=1/ If set to 0, window will not have a maximize button. <tag/noFocusOnAppRaise/ if set to 1, window will not automatically get focus as application raises it. <tag/ignoreNoFocusHint/ if set to 1, icewm will focus even if the window does not handle input. <tag/doNotCover=0/ if set to 1, this window will limit the workspace available for regular applications. window has to be sticky at the moment to make it work <tag/forcedClose=0/ if set to 1 and the application had not registered WM_DELETE_WINDOW, a close confirmation dialog won't be offered upon closing the window. </descrip> <sect>Icon handling<p> <sect1>Generic<p> The window manager expects to find two XPM files for each icon specified in the configuration files as <em/ICON/. They should be named like this: <descrip> <tag><em/ICON/<tt/_16x16.xpm/</tag> A small 16x16 pixmap. <tag><em/ICON/<tt/_32x32.xpm/</tag> A normal 32x32 pixmap. <tag><em/ICON/<tt/_48x48.xpm/</tag> A large 48x48 pixmap. </descrip> Other pixmap sizes like 20x20, 24x24, 40x40, 48x48, 64x64 might be used in the future. Perhaps we need a file format that can contain more than one image (with different sizes and color depths) like Windows'95 and OS/2 .ICO files. It would be nice to have a feature from OS/2 that varies the icon size with screen resolution (16x16 and 32x32 icons are quite small on 4000x4000 screens ;-) <sect1>Imlib<p> When compiled with the Imlib image library all of Imlib's image formats (bmp, jpeg, ppm, tiff, gif, png, ps, xpm on my machine) are supported. Use them by specifying the full filename or an absolute path: <descrip> <tag><em/ICON.bmp,/</tag>A PPM icon in your IconPath. <tag><em>/usr/share/pixmap/ICON.png</em></tag> An PNG image with absolute location. </descrip> <sect>Mouse cursors<p> IceWM scans the theme and configuration directories for a subdirectory called <em/cursors/ containing monochrome but transparent XPM files. To change the mouse cursor you have to use this filenames: <descrip> <tag><em/left.xbm/</tag>Default cursor (usually pointer to the left). <tag><em/right.xbm/</tag>Menu cursor (usually pointer to the right). <tag><em/move.xbm/</tag>Window movement cursor. <tag><em/sizeTL.xbm/</tag>Cursor when you resize the window by top left. <tag><em/sizeT.xbm/</tag>Cursor when you resize the window by top. <tag><em/sizeTR.xbm/</tag>Cursor when you resize the window by top right. <tag><em/sizeL.xbm/</tag>Cursor when you resize the window by left. <tag><em/sizeR.xbm/</tag>Cursor when you resize the window by right. <tag><em/sizeBL.xbm/</tag>Cursor when you resize the window by bottom left. <tag><em/sizeB.xbm/</tag>Cursor when you resize the window by bottom. <tag><em/sizeBR.xbm/</tag>Cursor when you resize the window by bottom right. </descrip> <sect>Themes<p> Themes are used to configure the way the window manager looks. Things like fonts, colors, border sizes, button pixmaps can be configured. Put together they form a theme. Theme files are searched in the <tt><ref id="lib" name="libpath">/themes</tt> subdirectories. These directories contain other directories that contain related theme files and their .xpm files. Each theme file specifies fonts, colors, border sizes, ... The theme to use is specified in ~/.icewm/theme file: <descrip> <tag>Theme = "nice/default.theme"</tag> Name of the theme to use. Both the directory and theme file name must be specified. </descrip> If the theme directory contains a file named <em/fonts.dir/ created by mkfontdir the theme directory is inserted into the X servers font search path. <url url="http://themes.freshmeat.net/"/> contains various nice themes created by users of IceWM. <sect>Command Line Options<p> <descrip> <tag/--display DISPLAY/ Set X display to <bf/DISPLAY/. <tag/--config CONFIG/ Use configuration file <bf/CONFIG/. <tag/--version/ Display version. <tag/--no-configure/ Don't use a configuration file. Uses builtin defaults only. <tag/--debug/ Dump various debug information to stderr. </descrip> <sect>Glossary<p> <descrip> <tag>Resource Path</tag>A set of directories used by IceWM to locate resources like configuration files, themes, icons. See section about <ref id="lib">. </descrip> <sect>Themes<p> </article> �������������������������������������������������������������������������������������������������������������������������������������������������������������������icewm-1.3.7/doc/techinfo.sgml�����������������������������������������������������������������������0000664�0000766�0000766�00000000563�11463274241�015064� 0����������������������������������������������������������������������������������������������������ustar �devel���������������������������devel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!doctype linuxdoc system> <article> <title>IceWM <author>Marko Macek, <tt/Marko.Macek@snet.fri.uni-lj.si/ <date>v0.8.16, 1998 April 28 <abstract> This document is the documentation for the IceWM X11 window manager. This document is incomplete. Almost everything is subject to change. </abstract> <toc> <sect>Window properties<p> <sect>Client messages<p> </article> ���������������������������������������������������������������������������������������������������������������������������������������������icewm-1.3.7/doc/icewm-13.html�����������������������������������������������������������������������0000664�0000766�0000766�00000001700�11463274256�014614� 0����������������������������������������������������������������������������������������������������ustar �devel���������������������������devel������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.66"> <TITLE>IceWM: Keys Next Previous Contents

      13. Keys

      Icewm allows launching of arbitrary programs with any key combination. This is configured in the libpath/keys file.

      Syntax of the file is like this:

      key "key combination" program options...

      For example:

      key "Alt+Ctrl+t" xterm
      


      Next Previous Contents icewm-1.3.7/doc/icewm-18.html0000664000076600007660000000200611463274256014621 0ustar develdevel IceWM: Command Line Options Next Previous Contents

      18. Command Line Options

      --display DISPLAY

      Set X display to DISPLAY.

      --config CONFIG

      Use configuration file CONFIG.

      --version

      Display version.

      --no-configure

      Don't use a configuration file. Uses builtin defaults only.

      --debug

      Dump various debug information to stderr.


      Next Previous Contents icewm-1.3.7/doc/icewm-3.html0000664000076600007660000001075411463274256014544 0ustar develdevel IceWM: First steps Next Previous Contents

      3. First steps

      3.1 IceWM components

      The IceWM suite consists of the following core applications provided by the main package:

      • icewm - the actual window manager binary. This is the one you need to get window decorations.
      • icewmbg - the background setting applications. It can assign plain background color or images in different formats to the X background, shared or separated for different workspaces. This program should be started before IceWM startup.
      • icewmtray - catches the Docklet objects installed by various applications like PSI
      • icewm-session - runs all of the above when needed
      • icewm-menu-gnome1 - used internaly, generates IceWM program menus from located GNOME(1) menus
      • icewm-menu-gnome2 - used internaly, generates IceWM program menus from FreeDesktop .desktop files (KDE/GNOME(2) menus).
      • icewmhint - used internaly

      3.2 Starting icewm

      The icewm executable must be in your path for the restart function to work correctly. Please set your $PATH environment variable accordingly. The icewm program alone is suitable for usabe with Desktop environments like GNOME.

      If you wish to run the whole IceWM suite (WM, background changer, Docklet support, and startup/shutdown script handling), use the icewm-session binary instead of pure icewm. Note that this is not a complete Session Manager but a helps only to automate the startup.

      First make sure that you choose the correct X startup script in your home directory. For most distributions the file $HOME/.xsession is honored by startx and X Display Managers like kdm. On RedHat, the $HOME/.Xclients may be used instead. In all cases, choose the one recommended by your distribution and make sure that there is no concurency between the X startup scripts.

      The recommended way to start is from $HOME/.xsession shell script (may be executable, must be on RedHat). Mine looks something like this:

      # run profile to set $PATH and other env vars correctly
      . $HOME/.bash_profile
      # setup touchpad and the external mouse
      xset m 7 2
      xinput set-ptr-feedback 0 7 1.9 1
      
      # start icewm-session
      exec icewm-session
      

      The xterm on the last line is there simply to make sure that your X session doesn't crash if icewm does (should never happen). You can restart icewm from there or start some other window manager. The session will close if you close the xterm.

      The above should work for most Linux systems. On commercial unices you should use $HOME/.dtprofile if you have CDE or $HOME/.vueprofile for HP-UX with HP VUE. If you are running xdm or some other login program check it's manpage for the correct place to start the window manager (usually  /.xsession or  /.Xsession, sometimes also  /.xinitrc.os5).

      3.3 Startup and shutdown scripts

      After initialization IceWM-Session will search the resource path ( lib ) for a startup script. If this file is found to exist and to be executeable IceWM-Session will run the script. On startup IceWM-Session will search for a script called "startup". And during the termination of icewm, the "shutdown" script is executed.

      Additionally the flag "--with-gnome" is passed if a GNOME session manager is detected.

      Example (startup):

      #!/bin/bash
      
      [ -x ~/.icewm/restart ] && source ~/.icewm/restart
      
      gnome-terminal --geometry 80x25+217+235 &
      xscreensaver &
      

      Hint: This feature is meant for easy desktop initialization and it is part of IceWM due popular demand. For more sophisticated session management you should learn how to use a real session manager - IceWM does support the XSESSION protocol.


      Next Previous Contents icewm-1.3.7/doc/icewm-1.html0000664000076600007660000000275611463274256014545 0ustar develdevel IceWM: Introduction Next Previous Contents

      1. Introduction

      The goal of IceWM is to provide a small, fast and familiar window manager for the X11 window system. Compatibility with the mwm window manager is desired and will be implemented where appropriate.

      IceWM originally was designed to emulate the look of Motif, OS/2 Warp 4, OS/2 Warp 3 and Windows 95. Since it has a theming engine (hint: http://www.icewm.org/) others styles are possible.

      It also tries to combine the feel of the above systems whenever it is compatible.

      Generally, it tries to make all functions available both by keyboard and by mouse (this is not currently possible when using mouse focus).

      Extreme configurability similar to fvwm and many other window managers is NOT the goal.

      Further information can be found at http://www.icewm.org/> and http://icewm.sourceforge.net/>.


      Next Previous Contents icewm-1.3.7/doc/icewm.html0000664000076600007660000000761411463274256014405 0ustar develdevel IceWM Next Previous Contents

      IceWM

      Marko Macek, Marko.Macek@gmx.net

      1.2.27, 2006 Aug 06
      This document is the documentation for the IceWM X11 window manager. This document is incomplete. Almost everything is subject to change.

      1. Introduction

      2. Copying

      3. First steps

      4. Focus models

      5. Mouse Commands

      6. Keyboard Commands

      7. Configuration/Resource/Library Path

      8. Configuration Files

      9. Theme

      10. Preferences

      11. Theme Settings

      12. Menus and Toolbar

      13. Keys

      14. Window Options

      15. Icon handling

      16. Mouse cursors

      17. Themes

      18. Command Line Options

      19. Glossary

      20. Themes


      Next Previous Contents icewm-1.3.7/doc/icewm-19.html0000664000076600007660000000147311463274256014631 0ustar develdevel IceWM: Glossary Next Previous Contents

      19. Glossary

      Resource Path

      A set of directories used by IceWM to locate resources like configuration files, themes, icons. See section about lib .


      Next Previous Contents icewm-1.3.7/doc/icewm-4.html0000664000076600007660000000302411463274256014535 0ustar develdevel IceWM: Focus models Next Previous Contents

      4. Focus models

      IceWM implements four general focus models:

      clickToRaise

      Exactly like Win95, OS/2 Warp. When window is clicked with a mouse, it is raised and activated.

      clickToFocus

      Window is raised and focused when titlebar or frame border is clicked. Window is focused but not raised when window interior is clicked.

      pointerFocus

      When the mouse is moved, focus is set to window under a mouse. It should be possible to change focus with the keyboard when mouse is not moved.

      explicitFocus

      When a window is clicked, it is activated, but not raised. New windows do not automatically get the focus unless they are transient windows for the active window.

      I am experimenting with this, to develop something more flexible then clickFocus.

      Detailed configuration is possible using the configuration file options.


      Next Previous Contents icewm-1.3.7/doc/icewm-10.html0000664000076600007660000002340011463274256014612 0ustar develdevel IceWM: Preferences Next Previous Contents

      10. Preferences

      This section shows preferences that can be set in  /.icewm/preferences. Themes will not be able to override these settings. Default values are shown following the equal sign.

      10.1 Focus and Behavior

      The following settings can be set to value 1 (enabled) or value 0 (disabled).

      ClickToFocus = 1

      Enables click to focus mode.

      RaiseOnFocus = 1

      Window is raised when focused.

      FocusOnClickClient = 1

      Window is focused when client area is clicked.

      RaiseOnClickClient = 1

      Window is raised when client area is clicked.

      RaiseOnClickTitleBar = 1

      Window is raised when titlebar is clicked.

      RaiseOnClickButton = 1

      Window is raised when title bar button is clicked.

      RaiseOnClickFrame = 1

      Window is raised when frame is clicked.

      PassFirstClickToClient = 1

      The click which raises the window is also passed to the client.

      AutoRaise = 0

      Windows will raise automatically after AutoRaiseDelay when focused.

      StrongPointerFocus = 0

      When focus follows mouse always give the focus to the window under mouse pointer - Even when no mouse motion has occured. Using this is not recommended. Please prefer to use just ClickToFocus=0.

      FocusOnMap = 1

      Window is focused after being mapped.

      FocusOnMapTransient = 1

      Transient window is focused after being mapped.

      FocusOnAppRaise = 1

      The window is focused when application raises it.

      PointerColormap = 0

      Colormap focus follows pointer.

      SizeMaximized = 0

      Window can be resized when maximized.

      MinimizeToDesktop = 0

      Window is minimized to desktop area (in addition to the taskbar).

      QuickSwitch = 1

      enable Alt+Tab window switcher.

      QuickSwitchToMinimized = 1

      Alt+Tab switches to minimized windows too.

      QuickSwitchToAllWorkspaces = 1

      Alt+Tab switches to windows on any workspace.

      ShowMoveSizeStatus = 1

      Move/resize status window is visible when moving/resizing the window.

      ShowWorkspaceStatusAfterSwitch = 1

      Show name of current workspace while switching workspaces.

      ShowWorkspaceStatusAfterActivation = 1

      Show name of current workspace after explicit activation.

      WarpPointer = 0

      Pointer is moved in pointer focus move when focus is moved using the keyboard.

      OpaqueMove = 1

      Window is immediately moved when dragged, no outline is shown.

      OpaqueResize = 0

      Window is immediately resized when dragged, no outline is shown.

      Win95Keys = 0

      Makes 3 additional keys perform sensible functions. The keys must be mapped to MetaL,MetaR and Menu. The left one will activate the start menu and the right one will display the window list.

      ManualPlacement = 0

      Windows must be placed manually by the user.

      IgnoreNoFocusHint = 0

      Ignore no-accept-focus hint set by some windows.

      MenuMouseTracking = 0

      If enabled, menus will track the mouse even when no mouse button is pressed.

      SnapMove = 1

      Snap to nearest screen edge/window when moving windows.

      SnapDistance

      Distance in pixels before windows snap together

      EdgeSwitch = 0

      Workspace switches by moving mouse to left/right screen edge.

      AutoReloadMenus = 1

      Reload menu files automatically if set to 1.

      ShowThemesMenu = 1

      Show themes submenu.

      ShowHelp = 1

      Show the help menu item.

      MsgBoxDefaultAction = 0

      Preselect to Cancel (0) or the OK (1) button in message boxes

      UseRootButtons

      Bitmask of root window button click to use in window manager

      ButtonRaiseMask

      Bitmask of buttons that raise the window when pressed

      EdgeResistance = 32

      Resistance to move window with mouse outside screen limits. Setting it to 10000 makes the resistance infinite.

      10.2 Task Bar

      The following settings can be set to value 1 (enabled) or value 0 (disabled).

      ShowTaskBar = 1

      Task bar is visible.

      TaskBarAtTop = 0

      Task bar is located at top of screen.

      TaskBarKeepBelow = 1

      Keep the task bar below regular windows

      TaskBarAutoHide = 0

      Task bar will auto hide when mouse leaves it.

      TaskBarShowStartMenu = 1

      Show button for the start menu on the task bar.

      TaskBarShowWindowListMenu

      Show button for window list menu on taskbar.

      TaskBarShowWorkspaces = 1

      Show workspace switching buttons on task bar.

      TaskBarShowAllWindows = 0

      Show windows from all workspaces on task bar.

      TaskBarShowClock = 1

      Task bar clock is visible.

      TaskBarShowMailboxStatus = 1

      Display status of mailbox (determined by $MAIL environment variable).

      TaskBarMailboxStatusBeepOnNewMail = 0

      Beep when new mail arrives.

      TaskBarMailboxStatusCountMessages = 0

      Display mail message count as tooltip.

      MailBoxPath

      Path to a mbox file. Remote mail boxes are accessed by specifying an URL using the Common Internet Scheme Syntax (RFC 1738):

          scheme://[user[:password]@]server[:port][/path]
        
      
      Supported schemes are "pop3", "imap" and "file". When the scheme is omitted "file://" is prepended silently. IMAP subfolders can be access by using the path component.

      Reserved characters like slash, at and colon can be specified by using escape sequences using a hexadecimal encoding like %2f for the slash or %40 for the at sign.

      Examples:

          file:///var/spool/mail/captnmark
          pop3://markus:%2f%40%3a@maol.ch/
          imap://mathias@localhost/INBOX.Maillisten.icewm-user
        
      

      TaskBarDoubleHeight = 0

      Double height task bar

      TaskBarShowCPUStatus = 1

      Show CPU status on task bar.

      TimeFormat

      format for the taskbar clock (time) (see strftime(3) manpage)

      DateFormat

      format for the taskbar clock tooltip (date+time) (see strftime(3) manpage).

      UseMouseWheel

      mouse wheel support

      DelayPointerFocus

      similar to delayed auto raise.

      10.3 Timings

      ClickMotionDistance = 5

      Movement before click is interpreted as drag.

      MultiClickTime = 400

      Time (ms) to recognize for double click.

      AutoRaiseDelay = 400

      Time to auto raise (must enable first with AutoRaise)

      AutoHideDelay = 300

      Time to auto hide taskbar (must enable first with TaskBarAutoHide).

      ToolTipDelay = 5000

      Time before showing the tooltip.

      ToolTipTime = 60000

      Time before tooltip window is hidden (0 means never)

      ScrollBarStartDelay

      Initial scroll bar autoscroll delay

      ScrollBarDelay

      Scroll bar autoscroll delay

      AutoScrollStartDelay

      Auto scroll start delay

      AutoScrollDelay

      Auto scroll delay

      10.4 Workspaces

      WorkspaceNames

      List of workspace names, for example

      WorkspaceNames=" 1 ", " 2 ", " 3 ", " 4 "

      10.5 Paths

      LibPath

      Path to the icewm/lib directory.

      IconPath

      Path to the icon directory. Multiple paths can be entered using the colon (UNIX) or semicolon (OS/2) as the separator.

      LibPath

      Path to the icewm/lib directory.

      10.6 Programs

      ClockCommand

      program to run when the clock is double clicked.

      MailCommand

      program to run when mailbox icon is double clicked.

      LockCommand

      program to run to lock the screen.

      RunCommand

      program to run when Run is selected from the start menu.

      10.7 Window Menus

      WinMenuItems

      Items to show in the window menus, posible values are:

      r=Restore, m=Move, s=Size, n=miNimize, x=maXimize, f=Fullscreen, h=Hide, u=roolUp, a=rAise, l=Lower, y=laYer, t=moveTo, i=trayIcon, c=Close, k=Kill, w=WindowsList

      Examples:

      WinMenuItems=rmsnxfhualyticw   #Default menu
      WinMenuItems=rmsnxfhualytickw  #Menu with all possible options
      WinMenuItems=rmsnxc            #MS-Windows menu
      


      Next Previous Contents icewm-1.3.7/doc/.cvsignore0000664000076600007660000000001411463274241014370 0ustar develdevelicewm*.html icewm-1.3.7/doc/icewm-12.html0000664000076600007660000000476111463274256014625 0ustar develdevel IceWM: Menus and Toolbar Next Previous Contents

      12. Menus and Toolbar

      12.1 menu

      Within the menu configuration file you can configure which programs are to appear in the root/start menu.

      12.2 toolbar

      The Toolbar configuration file is used to put programs as buttons on the taskbar.

      12.3 programs

      Usually automatically generated menu configuration file of installed programs. The programs file should be automatically generated by wmconfig (Redhat), menu (Debian) or an equivalent program (kde2ice and gno2ice to convert GNOME/KDE Menu hierarchy are available).

      Programs can be added using the following syntax:

      prog "title" icon_name program_executable options
      

      Restarting another window manager can be done using the restart program:

      restart "title" icon_name program_executable options
      

      icon_name can be - if icon is not wanted.

      The "runonce" keyword allows to launch an application only when no window has the WM_CLASS hint specified. Otherwise the first window having this class hint is mapped and raised. Syntax:

      runonce "title" icon_name "res_name.res_class" program_executable options
      runonce "title" icon_name "res_name" program_executable options
      runonce "title" icon_name ".res_class" program_executable options
      
      The class hint can be figured out by running
      $ xprop | grep WM_CLASS
      

      Submenus can be added using the following syntax:

      menu "title" icon_name {
      # contained items
      }
      

      Only double quotes are interpreted by icewm. Icewm doesn't run the shell automatically, so you may have to do that.


      Next Previous Contents icewm-1.3.7/doc/icewm-8.html0000664000076600007660000000375511463274256014554 0ustar develdevel IceWM: Configuration Files Next Previous Contents

      8. Configuration Files

      IceWM uses the following configuration files:

      • lib / theme - Currently selected theme
      • lib / preferences - General settings - paths, colors, fonts...
      • lib / prefoverride - Settings that should override the themes.
      • lib / menu - Menu of startable applications. Usually customized by the user.
      • lib / programs - Automatically generated menu of startable applications (this should be used for wmconfig, menu or similar packages, perhaps as a part of the login or X startup sequence).
      • lib / winoptions - Application window options
      • lib / keys - Global keybindings to launch applications (not window manager related)
      • lib / toolbar - Quick launch application icons on the taskbar.


      Next Previous Contents icewm-1.3.7/icewm.lsm0000664000076600007660000000107611463274241013455 0ustar develdevelBegin3 Title: IceWM Window Manager Version: 1.3.7 Entered-date: 31Oct2010 Description: Window manager for X11 Keywords: window-manager, x11, fast, small, source, w'95, os2, motif. Author: marko.macek@gmx.net (Marko Macek) Maintained-by: mathias.hasselmann@gmx.de (Mathias Hasselmann) Primary-site: http://sourceforge.net/project/?form_grp=31 298 KB icewm-1.3.7.src.tar.bz2 383 KB icewm-1.3.7.src.tar.gz Home-page: http://icewm.sourceforge.net/ Platforms: X11, Xpm, c++ Copying-policy: LGPL End icewm-1.3.7/aclocal.m40000664000076600007660000000117011463274244013472 0ustar develdevel# generated automatically by aclocal 1.11.1 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_include([acinclude.m4]) icewm-1.3.7/install-sh0000775000076600007660000001274311463274241013643 0ustar develdevel#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: chmodcmd="" else instcmd=$mkdirprog fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 icewm-1.3.7/acinclude.m40000644000076600007660000000736311463274241014030 0ustar develdeveldnl ICE_ARG_WITH(PACKAGE, HELP-STRING, ACTION-IF-TRUE [, ACTION-IF-FALSE]) dnl This macro does the same thing as AC_ARG_WITH, but it also defines dnl with_PACKAGE_arg and with_PACKAGE_sign to avoid complicated logic later. dnl AC_DEFUN([ICE_ARG_WITH], [ AC_ARG_WITH([$1], [$2], [ case "[${with_]patsubst([$1], -, _)}" in [no)] [with_]patsubst([$1], -, _)_sign=no ;; [yes)] [with_]patsubst([$1], -, _)_sign=yes ;; [*)] [with_]patsubst([$1], -, _)_arg="[${with_]patsubst([$1], -, _)}" [with_]patsubst([$1], -, _)_sign=yes ;; esac $3 ], [$4])]) dnl ICE_CXX_FLAG_ACCEPT(name,FLAG) dnl checking whether the C++ accepts FLAG and add this flag to CXXFLAGS dnl AC_DEFUN([ICE_CXX_FLAG_ACCEPT], [ ice_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="$2 $CXXFLAGS" AC_MSG_CHECKING( [whether the C++ compiler ($CXX) accepts $1]) AC_TRY_COMPILE(, , [ice_tmp_result=yes], [ice_tmp_result=no; CXXFLAGS=$ice_save_CXXFLAGS]) AC_MSG_RESULT([$]ice_tmp_result) $1_ok=$ice_tmp_result ]) dnl ICE_PROG_CXX_LIGHT dnl Checking for C in hope that it understands C++ too dnl Useful for C++ programs which don't use C++ library at all AC_DEFUN([ICE_PROG_CXX_LIGHT], [ AC_REQUIRE([AC_PROG_CC]) AC_MSG_CHECKING([whether the C compiler ($CC) understands C++]) cat > conftest.C </dev/null 2>&1; then ice_prog_gxx=yes CXX=$CC else ice_prog_gxx=no fi AC_MSG_RESULT($ice_prog_gxx) ]) dnl ICE_EXPAND(variable[, value]) dnl Expands the value of variable. dnl AC_DEFUN([ICE_EXPAND], [ ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" $1=`eval echo \""ifelse($2,,[$]$1,$2)"\"` ice_previous_value='' until test "${ice_previous_value}" = "[$]{$1}"; do ice_previous_value="[$]{$1}" $1=`eval echo "[$]{$1}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" ]) dnl ICE_MSG_VALUE(label, variable) dnl Prints the expanded value of variable prefixed by label. dnl AC_DEFUN([ICE_MSG_VALUE], [( ICE_EXPAND(ice_value, [$]$2) AC_MSG_RESULT([$1: $ice_value]) )]) dnl ICE_CHECK_NL_ITEM(nl-item,[if-found[, if-not-found]]) dnl Checks if nl_langinfo supports the requested locale dependent property. dnl When nl-item is supported and if-found is not defined the shell variable dnl have_$(nl_item) and the preprocessor macro HAVE_$(NL_ITEM) are set to dnl yes/1. When nl-item is not supported and if-not-found is not defined dnl have_$(nl_item) is set to no. dnl AC_DEFUN([ICE_CHECK_NL_ITEM], [ AC_MSG_CHECKING([whether nl_langinfo supports $1]) AC_TRY_COMPILE([ #include #include ], [ printf("%s\n", nl_langinfo($1));], [ AC_MSG_RESULT(yes) ifelse([$2],, have_$1=yes AC_DEFINE(HAVE_$1, 1, [define if nl_langinfo supports $1]), [$2]) ], [ AC_MSG_RESULT(no) ifelse([$3],,have_$1=no,[$3]) ]) ]) dnl ICE_CHECK_CONVERSION(from,to,result-if-cross-compiling[, extra-libs dnl [, if-supported[, if-not-supported]]]) dnl Checks if iconv supports the requested conversion. dnl AC_DEFUN([ICE_CHECK_CONVERSION], [ AC_MSG_CHECKING([whether iconv converts from $1 to $2]) AC_TRY_RUN([ #include #include int main() { iconv_t cd; setlocale(LC_ALL, ""); cd = iconv_open("$2", "$1"); iconv_close(cd); return ((iconv_t) -1 == cd); }], [ AC_MSG_RESULT(yes); ifelse([$5],,,$5) ], [ AC_MSG_RESULT(no); ifelse([$6],,,$6) ], [ ifelse([$3],yes, [ AC_MSG_RESULT([yes (cross)]); ifelse([$5],,,$5) ], [ AC_MSG_RESULT([no (cross)]); ifelse([$6],,,$6) ])])]) icewm-1.3.7/INSTALL0000644000076600007660000000756211463274241012671 0ustar develdevelicewm 1.2.9 (2003-06-22) 1. Requirements - libxpm (comes with XFree86, but isn't bundled with all commercial X servers -- like XSun) OR - Imlib (for wider image support) - C++ compiler (tested: gcc 2.8.1, gcc 2.95.3, gcc 3.0) - GNU make or BSD make (very minor tweaks required for other make variants) Optional: - XFreeType (for antialiasing, comes with XFree86 4.x) - gnome-libs 1.x (for gnome menu support) - sgml2html (part of sgml-tools package) only needed if you explicitly wish to _rebuild_ HTML documentation. the tarball already contains a HTML version of the manual 2. Compiling - 'cd icewm-$version' - Run './autogen.sh' when fetched from CVS. - Run './configure --help' to see available options. - Run './configure' possibly with options - If needed: customize sysdep.inc for your platform. - If needed: customize install.inc with correct installation directories. Please send me any changes that you may need to make. - Type 'make' to build it. PS: When reporting problems with the 'configure' script append the 'config.log' file generated by the failing 'configure' run please. 3. Installing Default installation path is '/usr/local'. You can change it by using configure switches like '--prefix''. You have to rebuild everything (make clean; make) after changing the paths. - Type 'make install' as root user to install. (make -n install to verify things first if you are not sure). 3.a Configuring XFreeType XFreeType is XFree86's effort to overcome traditional X11's broken font system adding fancy features like antialiasing. XFreeType supports most font formats supported by XFree86's traditional font services including TrueType, Type1 and bitmap fonts. To achieve best results you should add all your font directories to '/etc/XftConfig' or '$HOME/.xftconfig' by using the 'dir' statement. You should also ensure that XFreeType can supply a font comparable with Adobe's Helvetica since icewm uses it as default font and a lot of themes written for icewm depend on it. If you don't have such a font sufficent for XFreeType you could add an alias definition pointing on 'Nimbus Sans L' to your XFreeType configuration file: match any family == "helvetica" edit family += "Nimbus Sans L"; Another nice feature of XFreeType you could enable - especially on LCD screens - is sub-pixel decimation since it improves rendering quality dramatically. Simply add the following line to your X resources (~/.Xdefaults): Xft.rgba: rgb 4. Starting icewm Make sure the icewm executables are located on $PATH, otherwise it will not be possible to restart the window manager. Normally, icewm should be started from ~/.Xclients file. This will work the same for 'startx' and 'xdm' logins. The file must have execute permissions (chmod a+x ~/.Xclients). An example of ~/.Xclients file would be: >>> cut here >>> ----- > ----- > ----- > ----- > ----- > ----- > ----- > # set mouse speed xset m 5 2 # start xterm by default xterm & icewmtray & # silently check if icewm is in your $PATH and start icewm when found # or a red colored xterm when not found or execution of icewm fails which icewm >/dev/null 2>&1 && exec icewm || exec xterm -bg red <<< cut here <<< ----- < ----- < ----- < ----- < ----- < ----- < ----- < Another good candidate for launching X clients is ~/.xinitrc if the maintainers of your OS have odd ideas about how to initialize X. As last resort you could ask your OS to run a shell script containing all the apps you want to fireup instead of running icewm's binary directly: Simply insert a line saying "#!/bin/sh" in front of the script listed above and set the executable flags of your new script. icewm-1.3.7/configure0000775000076600007660000074731511463274244013563 0ustar develdevel#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.65. # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error ERROR [LINENO LOG_FD] # --------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with status $?, using 1 if that was 0. as_fn_error () { as_status=$?; test $as_status -eq 0 && as_status=1 if test "$3"; then as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 fi $as_echo "$as_me: error: $1" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= PACKAGE_URL= ac_unique_file="configure.in" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS INSTALLMAN INSTALLETC INSTALLLIB INSTALLBIN INSTALLDIR INSTALL BINFILES TESTCASES APPLICATIONS TARGETS_INSTALL TARGETS TESTBINS TESTOBJS BASEBINS BASEOBJS GWMDIR MANDIR DOCDIR KDEDIR LOCDIR CFGDIR LIBDIR BINDIR PREFIX GNOME2_LIBS GNOME1_LIBS AUDIO_LIBS IMAGE_LIBS CORE_LIBS GNOME2_CFLAGS GNOME1_CFLAGS AUDIO_CFLAGS IMAGE_CFLAGS CORE_CFLAGS GCCDEP DEBUG HOSTCPU HOSTOS VERSION PACKAGE CONFIG_KDE_MENU_DIR CONFIG_GNOME2_MENU_DIR CONFIG_GNOME1_MENU_DIR GNOME_VER GNOME1_CONFIG MKFONTDIR ESD_CONFIG PKG_CONFIG XFT_CONFIG NLS_MOFILES NLS_POXFILES NLS_POFILES NLS_SOURCES MSGFMT MSGMERGE XGETTEXT X_EXTRA_LIBS X_LIBS X_PRE_LIBS X_CFLAGS XMKMF EGREP GREP CXXCPP INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM HOSTCXX_LINK HOSTCXX CXX_LINK OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_x enable_depend enable_debug enable_i18n with_unicode_set enable_nls enable_sm enable_shape enable_shaped_decorations enable_gradients enable_xrandr enable_corefonts enable_xfreetype enable_guievents with_icesound with_esd_config enable_xinerama enable_x86_asm enable_prefs enable_keyconf enable_menuconf enable_winoptions enable_taskbar enable_winmenu enable_lite with_mkfontdir with_kdedatadir with_libdir with_cfgdir with_docdir enable_menus_gnome1 enable_menus_gnome2 ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CXXCPP XMKMF' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error "unrecognized option: \`$ac_option' Try \`$0 --help' for more information." ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-depend Automatic .h dependencies. Requires GNU make and gcc. --enable-debug Use this option if you want to debug IceWM --disable-i18n Disable internationalization --disable-nls Disable internationalized message --disable-sm Don't support the X session managment protocol --disable-shape Don't use X shape extension --disable-shaped-decorations Disable transparent frame decoration (titlebar, borders), requires X shape extension (experimental) --disable-gradients Support gradients --disable-xrandr Disable XRANDR extension support --enable-corefonts Support X11 core fonts --disable-xfreetype Don't use XFreeType for text rendering. Requires --enable-i18n. --enable-guievents Enable GUI events (experimental) --disable-xinerama Disable xinerama support --disable-x86-asm Don't use optimized x86 assembly code --disable-prefs Disable configurable preferences --disable-keyconf Disable configurable keybindings --disable-menuconf Disable configurable menus --disable-winoptions Disable configurable window options --disable-taskbar Disable builtin taskbar --disable-winmenu Disable the window list menu --enable-lite Build lightweight version of IceWM --enable-menus-gnome1 Display GNOME 1 menus --enable-menus-gnome2 Display GNOME 2 menus Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-x use the X Window System --with-unicode-set=CODESET your iconv's unicode set in machine endian encoding (e.g. WCHAR_T, UCS-4-INTERNAL, UCS-4LE, UCS-4BE) --with-icesound=interfaces List of audio interfaces for icesound. Requires support for GUI events. Default: OSS,Y,ESound --with-esd-config=path Path to esd-config --with-mkfontdir=path Path to mkfontdir --with-kdedatadir=path KDE's data directory (\$KDEDIR/share) --with-libdir=path Default data directory (\$datadir/icewm) --with-cfgdir=path System configuration directory (/etc/icewm) --with-docdir=path Documentation directory (\$prefix/doc) Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXXCPP C++ preprocessor XMKMF Path to xmkmf, Makefile generator for X Window System Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure generated by GNU Autoconf 2.65 Copyright (C) 2009 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_cxx_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_cxx_check_header_mongrel # ac_fn_cxx_try_run LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_cxx_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_cxx_try_run # ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_cxx_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_cxx_check_header_compile # ac_fn_cxx_check_type LINENO TYPE VAR INCLUDES # --------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_cxx_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_cxx_check_type # ac_fn_cxx_compute_int LINENO EXPR VAR INCLUDES # ---------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_cxx_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : echo >>conftest.val; read $3 &5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_cxx_check_func # ac_fn_cxx_check_decl LINENO SYMBOL VAR # -------------------------------------- # Tests whether SYMBOL is declared, setting cache variable VAR accordingly. ac_fn_cxx_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $2 is declared" >&5 $as_echo_n "checking whether $2 is declared... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { #ifndef $2 (void) $2; #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_cxx_check_decl cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.65. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers src/config.h" ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do for ac_t in install-sh install.sh shtool; do if test -f "$ac_dir/$ac_t"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/$ac_t -c" break 2 fi done done if test -z "$ac_aux_dir"; then as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 $as_echo_n "checking target system type... " >&6; } if test "${ac_cv_target+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) as_fn_error "invalid value of canonical target" "$LINENO" 5;; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- TARGETS=base APPLICATIONS='icewm icewm-session icesh icewmhint icewmbg icewmtray' TESTCASES=`echo src/test*.cc | sed 's%src/\([^ ]*\)\.cc%\1%g'` TESTCASES="$TESTCASES iceview icesame iceicon icerun icelist" # iceclock features='' ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { as_fn_set_status 77 as_fn_error "C++ compiler cannot create executables See \`config.log' for more details." "$LINENO" 5; }; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "cannot compute suffix of object files: cannot compile See \`config.log' for more details." "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "`${CXX} -V 2>&1 | grep Sun`"; then ice_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-fno-rtti $CXXFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler ($CXX) accepts no_rtti" >&5 $as_echo_n "checking whether the C++ compiler ($CXX) accepts no_rtti... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ice_tmp_result=yes else ice_tmp_result=no; CXXFLAGS=$ice_save_CXXFLAGS fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ice_tmp_result" >&5 $as_echo "$ice_tmp_result" >&6; } no_rtti_ok=$ice_tmp_result fi if test $(basename $CXX) != "icc"; then if test -n "`${CXX} -V 2>&1 | grep Sun`"; then ice_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-features=no%except $CXXFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler ($CXX) accepts no_exceptions" >&5 $as_echo_n "checking whether the C++ compiler ($CXX) accepts no_exceptions... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ice_tmp_result=yes else ice_tmp_result=no; CXXFLAGS=$ice_save_CXXFLAGS fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ice_tmp_result" >&5 $as_echo "$ice_tmp_result" >&6; } no_exceptions_ok=$ice_tmp_result else if test $(basename $CXX) = "g++" || test $(basename $CXX) = "gcc"; then ice_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-fno-exceptions $CXXFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler ($CXX) accepts no_exceptions" >&5 $as_echo_n "checking whether the C++ compiler ($CXX) accepts no_exceptions... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ice_tmp_result=yes else ice_tmp_result=no; CXXFLAGS=$ice_save_CXXFLAGS fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ice_tmp_result" >&5 $as_echo "$ice_tmp_result" >&6; } no_exceptions_ok=$ice_tmp_result if test x"$no_exceptions_ok" = xno; then ice_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-fno-handle-exceptions $CXXFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler ($CXX) accepts no_exceptions" >&5 $as_echo_n "checking whether the C++ compiler ($CXX) accepts no_exceptions... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ice_tmp_result=yes else ice_tmp_result=no; CXXFLAGS=$ice_save_CXXFLAGS fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ice_tmp_result" >&5 $as_echo "$ice_tmp_result" >&6; } no_exceptions_ok=$ice_tmp_result fi fi fi fi if test $(basename $CXX) = "g++" || test $(basename $CXX) = "gcc" ; then ice_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Woverloaded-virtual -W $CXXFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler ($CXX) accepts warn_xxx" >&5 $as_echo_n "checking whether the C++ compiler ($CXX) accepts warn_xxx... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ice_tmp_result=yes else ice_tmp_result=no; CXXFLAGS=$ice_save_CXXFLAGS fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ice_tmp_result" >&5 $as_echo "$ice_tmp_result" >&6; } warn_xxx_ok=$ice_tmp_result ice_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-fpermissive $CXXFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler ($CXX) accepts permissive" >&5 $as_echo_n "checking whether the C++ compiler ($CXX) accepts permissive... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ice_tmp_result=yes else ice_tmp_result=no; CXXFLAGS=$ice_save_CXXFLAGS fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ice_tmp_result" >&5 $as_echo "$ice_tmp_result" >&6; } permissive_ok=$ice_tmp_result else if test $(basename $CXX) = "icc"; then ice_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-w0 $CXXFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler ($CXX) accepts warn_xxx" >&5 $as_echo_n "checking whether the C++ compiler ($CXX) accepts warn_xxx... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ice_tmp_result=yes else ice_tmp_result=no; CXXFLAGS=$ice_save_CXXFLAGS fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ice_tmp_result" >&5 $as_echo "$ice_tmp_result" >&6; } warn_xxx_ok=$ice_tmp_result fi fi if test x"$CXX_LINK" = x; then CXX_LINK=$CXX fi if test x"$HOSTCXX" = x; then HOSTCXX=$CXX fi if test x"$HOSTCXX_LINK" = x; then HOSTCXX_LINK=$CXX fi #this test is broken, because AC_TRY_LINK calls g++ #AC_MSG_CHECKING([if we need our own C++ allocation operators]) #AC_TRY_LINK([ void icewm_alloc() { # char * cp = new char; delete cp; # char *ca = new char[23]; delete[] ca; } ],, # [ AC_MSG_RESULT(no) ], # [ AC_MSG_RESULT(yes) # AC_DEFINE(NEED_ALLOC_OPERATORS, 1, # [ Define if you need an implementation of the allocation operators. (gcc 3.0) ]) ]) # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 $as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> int main () { if ((DIR *) 0) return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : eval "$as_ac_Header=yes" else eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_ac_Header { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval as_val=\$$as_ac_Header if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if test "${ac_cv_search_opendir+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' dir; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_opendir+set}" = set; then : break fi done if test "${ac_cv_search_opendir+set}" = set; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if test "${ac_cv_search_opendir+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' x; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_opendir+set}" = set; then : break fi done if test "${ac_cv_search_opendir+set}" = set; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } if test "${ac_cv_header_sys_wait_h+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef WEXITSTATUS # define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) #endif #ifndef WIFEXITED # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif int main () { int s; wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_header_sys_wait_h=yes else ac_cv_header_sys_wait_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 $as_echo "$ac_cv_header_sys_wait_h" >&6; } if test $ac_cv_header_sys_wait_h = yes; then $as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." "$LINENO" 5; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if test "${ac_cv_path_GREP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " eval as_val=\$$as_ac_Header if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in fcntl.h limits.h strings.h sys/ioctl.h sys/time.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" eval as_val=\$$as_ac_Header if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in linux/threads.h linux/tasks.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" eval as_val=\$$as_ac_Header if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sched.h sys/dkstat.h sys/param.h sys/sysctl.h uvm/uvm_param.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" eval as_val=\$$as_ac_Header if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in libgen.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "libgen.h" "ac_cv_header_libgen_h" "$ac_includes_default" if test "x$ac_cv_header_libgen_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBGEN_H 1 _ACEOF fi done for ac_header in machine/apmvar.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "machine/apmvar.h" "ac_cv_header_machine_apmvar_h" "$ac_includes_default" if test "x$ac_cv_header_machine_apmvar_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MACHINE_APMVAR_H 1 _ACEOF fi done for ac_header in machine/apm_bios.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "machine/apm_bios.h" "ac_cv_header_machine_apm_bios_h" "$ac_includes_default" if test "x$ac_cv_header_machine_apm_bios_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MACHINE_APM_BIOS_H 1 _ACEOF fi done for ac_header in kstat.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "kstat.h" "ac_cv_header_kstat_h" "$ac_includes_default" if test "x$ac_cv_header_kstat_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_KSTAT_H 1 _ACEOF CORE_LIBS="${CORE_LIBS} -lkstat" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if have old kstat" >&5 $as_echo_n "checking if have old kstat... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { kstat_named_t k; k.value.ui32 ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_OLD_KSTAT 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi done ac_fn_cxx_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = x""yes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if test "${ac_cv_header_time+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if test "${ac_cv_struct_tm+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h fi # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5 $as_echo_n "checking size of char... " >&6; } if test "${ac_cv_sizeof_char+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default"; then : else if test "$ac_cv_type_char" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { as_fn_set_status 77 as_fn_error "cannot compute sizeof (char) See \`config.log' for more details." "$LINENO" 5; }; } else ac_cv_sizeof_char=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5 $as_echo "$ac_cv_sizeof_char" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_CHAR $ac_cv_sizeof_char _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 $as_echo_n "checking size of short... " >&6; } if test "${ac_cv_sizeof_short+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : else if test "$ac_cv_type_short" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { as_fn_set_status 77 as_fn_error "cannot compute sizeof (short) See \`config.log' for more details." "$LINENO" 5; }; } else ac_cv_sizeof_short=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 $as_echo "$ac_cv_sizeof_short" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_SHORT $ac_cv_sizeof_short _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 $as_echo_n "checking size of int... " >&6; } if test "${ac_cv_sizeof_int+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : else if test "$ac_cv_type_int" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { as_fn_set_status 77 as_fn_error "cannot compute sizeof (int) See \`config.log' for more details." "$LINENO" 5; }; } else ac_cv_sizeof_int=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 $as_echo "$ac_cv_sizeof_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_INT $ac_cv_sizeof_int _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 $as_echo_n "checking size of long... " >&6; } if test "${ac_cv_sizeof_long+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : else if test "$ac_cv_type_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { as_fn_set_status 77 as_fn_error "cannot compute sizeof (long) See \`config.log' for more details." "$LINENO" 5; }; } else ac_cv_sizeof_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 $as_echo "$ac_cv_sizeof_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 $as_echo_n "checking return type of signal handlers... " >&6; } if test "${ac_cv_type_signal+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_type_signal=int else ac_cv_type_signal=void fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 $as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal _ACEOF for ac_func in strftime do : ac_fn_cxx_check_func "$LINENO" "strftime" "ac_cv_func_strftime" if test "x$ac_cv_func_strftime" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRFTIME 1 _ACEOF else # strftime is in -lintl on SCO UNIX. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 $as_echo_n "checking for strftime in -lintl... " >&6; } if test "${ac_cv_lib_intl_strftime+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strftime (); int main () { return strftime (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_intl_strftime=yes else ac_cv_lib_intl_strftime=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 $as_echo "$ac_cv_lib_intl_strftime" >&6; } if test "x$ac_cv_lib_intl_strftime" = x""yes; then : $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h LIBS="-lintl $LIBS" fi fi done for ac_func in vprintf do : ac_fn_cxx_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" if test "x$ac_cv_func_vprintf" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VPRINTF 1 _ACEOF ac_fn_cxx_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" if test "x$ac_cv_func__doprnt" = x""yes; then : $as_echo "#define HAVE_DOPRNT 1" >>confdefs.h fi fi done for ac_func in gettimeofday putenv select socket strtol strtoul basename do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" eval as_val=\$$as_ac_var if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in sysctlbyname do : ac_fn_cxx_check_func "$LINENO" "sysctlbyname" "ac_cv_func_sysctlbyname" if test "x$ac_cv_func_sysctlbyname" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYSCTLBYNAME 1 _ACEOF fi done for ac_header in sys/select.h sys/socket.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" eval as_val=\$$as_ac_Header if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking types of arguments for select" >&5 $as_echo_n "checking types of arguments for select... " >&6; } if test "${ac_cv_func_select_args+set}" = set; then : $as_echo_n "(cached) " >&6 else for ac_arg234 in 'fd_set *' 'int *' 'void *'; do for ac_arg1 in 'int' 'size_t' 'unsigned long int' 'unsigned int'; do for ac_arg5 in 'struct timeval *' 'const struct timeval *'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default #ifdef HAVE_SYS_SELECT_H # include #endif #ifdef HAVE_SYS_SOCKET_H # include #endif int main () { extern int select ($ac_arg1, $ac_arg234, $ac_arg234, $ac_arg234, $ac_arg5); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_func_select_args="$ac_arg1,$ac_arg234,$ac_arg5"; break 3 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done done done # Provide a safe default value. : ${ac_cv_func_select_args='int,int *,struct timeval *'} fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_select_args" >&5 $as_echo "$ac_cv_func_select_args" >&6; } ac_save_IFS=$IFS; IFS=',' set dummy `echo "$ac_cv_func_select_args" | sed 's/\*/\*/g'` IFS=$ac_save_IFS shift cat >>confdefs.h <<_ACEOF #define SELECT_TYPE_ARG1 $1 _ACEOF cat >>confdefs.h <<_ACEOF #define SELECT_TYPE_ARG234 ($2) _ACEOF cat >>confdefs.h <<_ACEOF #define SELECT_TYPE_ARG5 ($3) _ACEOF rm -f conftest* { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg" >&5 $as_echo_n "checking for getloadavg... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { double loadavg[3]; getloadavg(loadavg, 3) == 0; ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_GETLOADAVG2 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kern.cp_time" >&5 $as_echo_n "checking for kern.cp_time... " >&6; } if /sbin/sysctl kern.cp_time 2>&1 | grep 'kern.cp_time *[:=]' >/dev/null; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_SYSCTL_CP_TIME 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 $as_echo_n "checking for X... " >&6; } # Check whether --with-x was given. if test "${with_x+set}" = set; then : withval=$with_x; fi # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else case $x_includes,$x_libraries in #( *\'*) as_fn_error "cannot use X directory names containing '" "$LINENO" 5;; #( *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then : $as_echo_n "(cached) " >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir cat >Imakefile <<'_ACEOF' incroot: @echo incroot='${INCROOT}' usrlibdir: @echo usrlibdir='${USRLIBDIR}' libdir: @echo libdir='${LIBDIR}' _ACEOF if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which would confuse us. for ac_var in incroot usrlibdir libdir; do eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" done # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl dylib la dll; do if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && test -f "$ac_im_libdir/libX11.$ac_extension"; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ac_x_includes= ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /usr/lib64 | /lib | /lib64) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -f -r conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R7/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R7 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R7/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R7 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Xlib.h. # First, try using that file with no special directory specified. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # We can compile using X headers with no special include directory. ac_x_includes= else for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Xlib.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lX11 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { XrmInitialize () ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else LIBS=$ac_save_LIBS for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl dylib la dll; do if test -r "$ac_dir/libX11.$ac_extension"; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no case $ac_x_includes,$ac_x_libraries in #( no,* | *,no | *\'*) # Didn't find X, or a directory has "'" in its name. ac_cv_have_x="have_x=no";; #( *) # Record where we found X for the cache. ac_cv_have_x="have_x=yes\ ac_x_includes='$ac_x_includes'\ ac_x_libraries='$ac_x_libraries'" esac fi ;; #( *) have_x=yes;; esac eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 $as_echo "$have_x" >&6; } no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes\ ac_x_includes='$x_includes'\ ac_x_libraries='$x_libraries'" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 $as_echo "libraries $x_libraries, headers $x_includes" >&6; } fi if test "$no_x" = yes; then # Not all programs may use this symbol, but it does not hurt to define it. $as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= else if test -n "$x_includes"; then X_CFLAGS="$X_CFLAGS -I$x_includes" fi # It would also be nice to do this for all -L options, not just this one. if test -n "$x_libraries"; then X_LIBS="$X_LIBS -L$x_libraries" # For Solaris; some versions of Sun CC require a space after -R and # others require no space. Words are not sufficient . . . . { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5 $as_echo_n "checking whether -R must be followed by a space... " >&6; } ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" ac_xsave_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } X_LIBS="$X_LIBS -R$x_libraries" else LIBS="$ac_xsave_LIBS -R $x_libraries" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } X_LIBS="$X_LIBS -R $x_libraries" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5 $as_echo "neither works" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_cxx_werror_flag=$ac_xsave_cxx_werror_flag LIBS=$ac_xsave_LIBS fi # Check for system-dependent libraries X programs must link with. # Do this before checking for the system-independent R6 libraries # (-lICE), since we may need -lsocket or whatever for X linking. if test "$ISC" = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" else # Martyn Johnson says this is needed for Ultrix, if the X # libraries were built with DECnet support. And Karl Berry says # the Alpha needs dnet_stub (dnet does not exist). ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XOpenDisplay (); int main () { return XOpenDisplay (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_dnet_dnet_ntoa=yes else ac_cv_lib_dnet_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_dnet_ntoa" = x""yes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_dnet_stub_dnet_ntoa=yes else ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = x""yes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_xsave_LIBS" # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, # to get the SysV transport functions. # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) # needs -lnsl. # The nsl library prevents programs from opening the X display # on Irix 5.2, according to T.E. Dickey. # The functions gethostbyname, getservbyname, and inet_addr are # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. ac_fn_cxx_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" if test "x$ac_cv_func_gethostbyname" = x""yes; then : fi if test $ac_cv_func_gethostbyname = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 $as_echo_n "checking for gethostbyname in -lnsl... " >&6; } if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_nsl_gethostbyname=yes else ac_cv_lib_nsl_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5 $as_echo_n "checking for gethostbyname in -lbsd... " >&6; } if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_bsd_gethostbyname=yes else ac_cv_lib_bsd_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5 $as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } if test "x$ac_cv_lib_bsd_gethostbyname" = x""yes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" fi fi fi # lieder@skyler.mavd.honeywell.com says without -lsocket, # socket/setsockopt and other routines are undefined under SCO ODT # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary # on later versions), says Simon Leinen: it contains gethostby* # variants that don't use the name server (or something). -lsocket # must be given before -lnsl if both are needed. We assume that # if connect needs -lnsl, so does gethostbyname. ac_fn_cxx_check_func "$LINENO" "connect" "ac_cv_func_connect" if test "x$ac_cv_func_connect" = x""yes; then : fi if test $ac_cv_func_connect = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 $as_echo_n "checking for connect in -lsocket... " >&6; } if test "${ac_cv_lib_socket_connect+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); int main () { return connect (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_socket_connect=yes else ac_cv_lib_socket_connect=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 $as_echo "$ac_cv_lib_socket_connect" >&6; } if test "x$ac_cv_lib_socket_connect" = x""yes; then : X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. ac_fn_cxx_check_func "$LINENO" "remove" "ac_cv_func_remove" if test "x$ac_cv_func_remove" = x""yes; then : fi if test $ac_cv_func_remove = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5 $as_echo_n "checking for remove in -lposix... " >&6; } if test "${ac_cv_lib_posix_remove+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char remove (); int main () { return remove (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_posix_remove=yes else ac_cv_lib_posix_remove=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5 $as_echo "$ac_cv_lib_posix_remove" >&6; } if test "x$ac_cv_lib_posix_remove" = x""yes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. ac_fn_cxx_check_func "$LINENO" "shmat" "ac_cv_func_shmat" if test "x$ac_cv_func_shmat" = x""yes; then : fi if test $ac_cv_func_shmat = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5 $as_echo_n "checking for shmat in -lipc... " >&6; } if test "${ac_cv_lib_ipc_shmat+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shmat (); int main () { return shmat (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_ipc_shmat=yes else ac_cv_lib_ipc_shmat=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5 $as_echo "$ac_cv_lib_ipc_shmat" >&6; } if test "x$ac_cv_lib_ipc_shmat" = x""yes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" fi fi fi # Check for libraries that X11R6 Xt/Xaw programs need. ac_save_LDFLAGS=$LDFLAGS test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to # check for ICE first), but we must link in the order -lSM -lICE or # we get undefined symbols. So assume we have SM if we have ICE. # These have to be linked with before -lX11, unlike the other # libraries we check for below, so use a different variable. # John Interrante, Karl Berry { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5 $as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IceConnectionNumber (); int main () { return IceConnectionNumber (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_ICE_IceConnectionNumber=yes else ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 $as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then : X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi if test x"$no_x" != x; then as_fn_error "X Window System or development libraries not found. Make sure you have headers and libraries installed!" "$LINENO" 5 fi # Check whether --enable-depend was given. if test "${enable_depend+set}" = set; then : enableval=$enable_depend; if test "${enable_depend}" != "no"; then features="${features} depend" GCCDEP=-MMD fi fi # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; if test "${enable_debug}" = "yes"; then $as_echo "#define DEBUG 1" >>confdefs.h DEBUG="-g -DDEBUG -O0" features="${features} debugging-symbols" else DEBUG= fi fi # Check whether --enable-i18n was given. if test "${enable_i18n+set}" = set; then : enableval=$enable_i18n; fi if test "$enable_i18n" != "no"; then for ac_header in langinfo.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default" if test "x$ac_cv_header_langinfo_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LANGINFO_H 1 _ACEOF else as_fn_error "I18N support has been requested but langinfo.h wasn´t found. *** Check your system configuration." "$LINENO" 5 fi done ac_fn_cxx_check_func "$LINENO" "nl_langinfo" "ac_cv_func_nl_langinfo" if test "x$ac_cv_func_nl_langinfo" = x""yes; then : else as_fn_error "I18N support has been requested but nl_langinfo wasn´t found. *** Check your system configuration." "$LINENO" 5 fi ice_nl_codesets="" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether nl_langinfo supports CODESET" >&5 $as_echo_n "checking whether nl_langinfo supports CODESET... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { printf("%s\n", nl_langinfo(CODESET)); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ice_nl_codesets="${ice_nl_codesets} CODESET," else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_CODESET=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether nl_langinfo supports _NL_CTYPE_CODESET_NAME" >&5 $as_echo_n "checking whether nl_langinfo supports _NL_CTYPE_CODESET_NAME... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { printf("%s\n", nl_langinfo(_NL_CTYPE_CODESET_NAME)); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ice_nl_codesets="${ice_nl_codesets} _NL_CTYPE_CODESET_NAME," else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have__NL_CTYPE_CODESET_NAME=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "${ice_nl_codesets}" = ""; then as_fn_error "I18N support has been requested but nl_langinfo doesn't *** return any information about the locale's codeset. Check your manuals. *** Ask your vendor. Contact icewm-devel@lists.sourceforge.net when you know *** the name of the locale-dependent parameter for your platform." "$LINENO" 5 fi ice_nl_codesets="${ice_nl_codesets} 0" cat >>confdefs.h <<_ACEOF #define CONFIG_NL_CODESETS ${ice_nl_codesets} _ACEOF ice_iconv_cxxflags="${CXXFLAGS}" for ac_header in iconv.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "iconv.h" "ac_cv_header_iconv_h" "$ac_includes_default" if test "x$ac_cv_header_iconv_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_ICONV_H 1 _ACEOF else as_fn_error "I18N support has been requested but iconv.h wasn´t found. *** Check your system configuration. *** *** You might have to upgrade your C runtime library. If your system is *** based on the GNU C library (glibc) you'll need version 2.2 or newer. *** You also have the chance to install GNU libiconv available *** from ftp://ftp.gnu.org/pub/gnu/libiconv/. *** *** Alternatively you could call configure with the --disable-i18n switch." "$LINENO" 5 fi done ac_fn_cxx_check_decl "$LINENO" "_libiconv_version" "ac_cv_have_decl__libiconv_version" "#include " if test "x$ac_cv_have_decl__libiconv_version" = x""yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: assuming iconv.h belongs to GNU libiconv" >&5 $as_echo "assuming iconv.h belongs to GNU libiconv" >&6; } LIBS="-liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { iconv(0,0,0,0,0); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { iconv_open(0,0); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { iconv_close(0); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : CXXFLAGS="${CXXFLAGS}" CORE_LIBS="${CORE_LIBS} -liconv" $as_echo "#define CONFIG_LIBICONV 1" >>confdefs.h else as_fn_error "iconv.h appears to be part of libiconv but linking failed. *** Check your system configuration. *** *** You might have to upgrade your C runtime library. If your system is *** based on the GNU C library (glibc) you'll need version 2.2 or newer. *** You also have the chance to install GNU libiconv available *** from ftp://ftp.gnu.org/pub/gnu/libiconv/. *** *** Alternatively you could call configure with the --disable-i18n switch." "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext else { $as_echo "$as_me:${as_lineno-$LINENO}: result: assuming iconv.h belongs to the C library" >&5 $as_echo "assuming iconv.h belongs to the C library" >&6; } for ac_func in iconv iconv_open iconv_close do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" eval as_val=\$$as_ac_var if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else as_fn_error "iconv.h appears to be part of libc but linking failed. *** Check your system configuration. *** *** You might have to upgrade your C runtime library. If your system is *** based on the GNU C library (glibc) you'll need version 2.2 or newer. *** You also have the chance to install GNU libiconv available *** from ftp://ftp.gnu.org/pub/gnu/libiconv/. *** *** Alternatively you could call configure with the --disable-i18n switch." "$LINENO" 5 fi done fi # Check whether --with-unicode-set was given. if test "${with_unicode_set+set}" = set; then : withval=$with_unicode_set; cat >>confdefs.h <<_ACEOF #define CONFIG_UNICODE_SET "$with_unicode_set" _ACEOF else with_unicode_set=UCS-4//TRANSLIT fi if test "$with_unicode_set" = "UCS-4//TRANSLIT" ; then ice_sufficent_iconv=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iconv converts from UTF-8 to $with_unicode_set" >&5 $as_echo_n "checking whether iconv converts from UTF-8 to $with_unicode_set... " >&6; } if test "$cross_compiling" = yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (cross)" >&5 $as_echo "no (cross)" >&6; }; else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main() { iconv_t cd; setlocale(LC_ALL, ""); cd = iconv_open("$with_unicode_set", "UTF-8"); iconv_close(cd); return ((iconv_t) -1 == cd); } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; ice_sufficent_iconv=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test "$ice_sufficent_iconv" != "yes" then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your implementation of iconv doesn't grok TRANSLIT" >&5 $as_echo "$as_me: WARNING: Your implementation of iconv doesn't grok TRANSLIT" >&2;} with_unicode_set=UCS-4 fi fi ice_sufficent_iconv=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iconv converts from ISO-8859-1 to $with_unicode_set" >&5 $as_echo_n "checking whether iconv converts from ISO-8859-1 to $with_unicode_set... " >&6; } if test "$cross_compiling" = yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (cross)" >&5 $as_echo "no (cross)" >&6; }; else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main() { iconv_t cd; setlocale(LC_ALL, ""); cd = iconv_open("$with_unicode_set", "ISO-8859-1"); iconv_close(cd); return ((iconv_t) -1 == cd); } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iconv converts from ISO-8859-2 to $with_unicode_set" >&5 $as_echo_n "checking whether iconv converts from ISO-8859-2 to $with_unicode_set... " >&6; } if test "$cross_compiling" = yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (cross)" >&5 $as_echo "no (cross)" >&6; }; else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main() { iconv_t cd; setlocale(LC_ALL, ""); cd = iconv_open("$with_unicode_set", "ISO-8859-2"); iconv_close(cd); return ((iconv_t) -1 == cd); } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iconv converts from UTF-8 to $with_unicode_set" >&5 $as_echo_n "checking whether iconv converts from UTF-8 to $with_unicode_set... " >&6; } if test "$cross_compiling" = yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (cross)" >&5 $as_echo "no (cross)" >&6; }; else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main() { iconv_t cd; setlocale(LC_ALL, ""); cd = iconv_open("$with_unicode_set", "UTF-8"); iconv_close(cd); return ((iconv_t) -1 == cd); } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; ice_sufficent_iconv=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CXXFLAGS="${ice_iconv_cxxflags}" if test "$ice_sufficent_iconv" != "yes" then as_fn_error "Your implementation of iconv isn't able to perform *** the codeset conversions required. Check your system configuration. *** *** You might have to upgrade your C runtime library. If your system is *** based on the GNU C library (glibc) you'll need version 2.2 or newer. *** You also have the chance to install GNU libiconv available *** from ftp://ftp.gnu.org/pub/gnu/libiconv/. *** *** Alternatively you could call configure with the --disable-i18n switch." "$LINENO" 5 fi $as_echo "#define CONFIG_I18N 1" >>confdefs.h features="${features} i18n" fi # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; fi if test "$enable_nls" != "no"; then ac_fn_cxx_check_func "$LINENO" "bindtextdomain" "ac_cv_func_bindtextdomain" if test "x$ac_cv_func_bindtextdomain" = x""yes; then : else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5 $as_echo_n "checking for bindtextdomain in -lintl... " >&6; } if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bindtextdomain (); int main () { return bindtextdomain (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_intl_bindtextdomain=yes else ac_cv_lib_intl_bindtextdomain=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5 $as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; } if test "x$ac_cv_lib_intl_bindtextdomain" = x""yes; then : CORE_LIBS="${CORE_LIBS} -lintl" else as_fn_error "NLS (national language support) has been requested but *** the 'bindtextdomain' function neither has been found in your C runtime library *** nor in an external library called 'libintl'. *** *** Install your vendor's version of libintl or get GNU gettext available *** from ftp://ftp.gnu.org/pub/gnu/gettext/. *** *** Alternatively you could call configure with the --disable-nls switch." "$LINENO" 5 fi fi $as_echo "#define ENABLE_NLS 1" >>confdefs.h features="${features} nls" TARGETS=$TARGETS' nls' # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_XGETTEXT+set}" = set; then : $as_echo_n "(cached) " >&6 else case $XGETTEXT in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_XGETTEXT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi XGETTEXT=$ac_cv_path_XGETTEXT if test -n "$XGETTEXT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_MSGMERGE+set}" = set; then : $as_echo_n "(cached) " >&6 else case $MSGMERGE in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_MSGMERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGMERGE=$ac_cv_path_MSGMERGE if test -n "$MSGMERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_MSGFMT+set}" = set; then : $as_echo_n "(cached) " >&6 else case $MSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_MSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGFMT=$ac_cv_path_MSGFMT if test -n "$MSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi MSGMERGE="${MSGMERGE}" # --indent --verbose" MSGFMT="${MSGFMT}" # --check --statistics --verbose" if test ! -x "$MSGFMT" ; then as_fn_error "'msgfmt' not found. Perhaps you need to install 'gettext'?." "$LINENO" 5 fi NLS_SOURCES=`grep -l '\<_\>' "src/"*.cc | sed 's%^%\$(top_srcdir)/%g'` NLS_SOURCES=`echo ${NLS_SOURCES}` NLS_POFILES=`cd "${srcdir}/po"; echo *.po` NLS_POXFILES=`echo ${NLS_POFILES} | sed 's%\.po%.pox%g'` NLS_MOFILES=`echo ${NLS_POFILES} | sed 's%\.po%.mo%g'` localedir='${datadir}/locale' fi CORE_CFLAGS="${X_CFLAGS}" CORE_LIBS="${X_PRE_LIBS} ${CORE_LIBS} -lX11 ${X_LIBS} ${X_EXTRA_LIBS}" no_x_libs=$LIBS LIBS=$CORE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XInternAtoms in -lX11" >&5 $as_echo_n "checking for XInternAtoms in -lX11... " >&6; } if test "${ac_cv_lib_X11_XInternAtoms+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lX11 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XInternAtoms (); int main () { return XInternAtoms (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_X11_XInternAtoms=yes else ac_cv_lib_X11_XInternAtoms=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_X11_XInternAtoms" >&5 $as_echo "$ac_cv_lib_X11_XInternAtoms" >&6; } if test "x$ac_cv_lib_X11_XInternAtoms" = x""yes; then : $as_echo "#define HAVE_XINTERNATOMS 1" >>confdefs.h fi # Check whether --enable-sm was given. if test "${enable_sm+set}" = set; then : enableval=$enable_sm; fi if test "$enable_sm" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5 $as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IceConnectionNumber (); int main () { return IceConnectionNumber (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_ICE_IceConnectionNumber=yes else ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 $as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then : $as_echo "#define CONFIG_SESSION 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to use X shared memory extension" >&5 $as_echo "$as_me: WARNING: Unable to use X shared memory extension" >&2;} fi fi ac_have_shape=no # Check whether --enable-shape was given. if test "${enable_shape+set}" = set; then : enableval=$enable_shape; fi if test "$enable_shape" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XShapeCombineRectangles in -lXext" >&5 $as_echo_n "checking for XShapeCombineRectangles in -lXext... " >&6; } if test "${ac_cv_lib_Xext_XShapeCombineRectangles+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXext $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XShapeCombineRectangles (); int main () { return XShapeCombineRectangles (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_Xext_XShapeCombineRectangles=yes else ac_cv_lib_Xext_XShapeCombineRectangles=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xext_XShapeCombineRectangles" >&5 $as_echo "$ac_cv_lib_Xext_XShapeCombineRectangles" >&6; } if test "x$ac_cv_lib_Xext_XShapeCombineRectangles" = x""yes; then : CORE_LIBS="${CORE_LIBS} -lXext" $as_echo "#define CONFIG_SHAPE 1" >>confdefs.h ac_have_shape=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to use X shape extension" >&5 $as_echo "$as_me: WARNING: Unable to use X shape extension" >&2;} fi fi if test "$ac_have_shape" = "yes"; then # Check whether --enable-shaped-decorations was given. if test "${enable_shaped_decorations+set}" = set; then : enableval=$enable_shaped_decorations; fi if test "$enable_shaped_decorations" != "no"; then $as_echo "#define CONFIG_SHAPED_DECORATION 1" >>confdefs.h features="${features} shaped-decorations" fi fi # Check whether --enable-gradients was given. if test "${enable_gradients+set}" = set; then : enableval=$enable_gradients; fi if test "$enable_gradients" != "no"; then $as_echo "#define CONFIG_GRADIENTS 1" >>confdefs.h enable_antialiasing=yes features="${features} gradients" fi # Check whether --enable-xrandr was given. if test "${enable_xrandr+set}" = set; then : enableval=$enable_xrandr; fi if test "$enable_xrandr" != "no"; then $as_echo "#define CONFIG_XRANDR 1" >>confdefs.h CORE_LIBS="$LIBS -lXrandr -lXrender -lXext" fi # Check whether --enable-corefonts was given. if test "${enable_corefonts+set}" = set; then : enableval=$enable_corefonts; fi # Check whether --enable-xfreetype was given. if test "${enable_xfreetype+set}" = set; then : enableval=$enable_xfreetype; fi if test "$enable_corefonts" != "yes" -a "$enable_xfreetype" = no; then as_fn_error "\"xfreetype or core fonts must be enabled\"" "$LINENO" 5 fi if test "$enable_xfreetype" != "no" -o "$enable_xfreetype" = "implied"; then # Extract the first word of "xft-config", so it can be a program name with args. set dummy xft-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_XFT_CONFIG+set}" = set; then : $as_echo_n "(cached) " >&6 else case $XFT_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_XFT_CONFIG="$XFT_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in ${with_xft_arg-${PATH}} do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_XFT_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi XFT_CONFIG=$ac_cv_path_XFT_CONFIG if test -n "$XFT_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XFT_CONFIG" >&5 $as_echo "$XFT_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "${XFT_CONFIG}" = ""; then # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PKG_CONFIG+set}" = set; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "${PKG_CONFIG}" != ""; then ${PKG_CONFIG} xft 2>/dev/null if test $? -eq 0 ; then XFT_CONFIG='pkg-config freetype2 xft' fi fi fi if test "${XFT_CONFIG}" != ""; then XFT_CFLAGS=`${XFT_CONFIG} --cflags` XFT_LIBS=`${XFT_CONFIG} --libs` $as_echo "#define CONFIG_XFREETYPE 2" >>confdefs.h CORE_CFLAGS="${CORE_CFLAGS} $XFT_CFLAGS" CORE_LIBS="${CORE_LIBS} $XFT_LIBS" features="${features} xfreetype" else for ac_header in X11/Xft/Xft.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "X11/Xft/Xft.h" "ac_cv_header_X11_Xft_Xft_h" "$ac_includes_default" if test "x$ac_cv_header_X11_Xft_Xft_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_X11_XFT_XFT_H 1 _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XftDrawCreate in -lXft" >&5 $as_echo_n "checking for XftDrawCreate in -lXft... " >&6; } if test "${ac_cv_lib_Xft_XftDrawCreate+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXft $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XftDrawCreate (); int main () { return XftDrawCreate (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_Xft_XftDrawCreate=yes else ac_cv_lib_Xft_XftDrawCreate=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xft_XftDrawCreate" >&5 $as_echo "$ac_cv_lib_Xft_XftDrawCreate" >&6; } if test "x$ac_cv_lib_Xft_XftDrawCreate" = x""yes; then : $as_echo "#define CONFIG_XFREETYPE 1" >>confdefs.h CORE_LIBS="${CORE_LIBS} -lXft" enable_corefonts=yes features="${features} xfreetype" else if test "$enable_xfreetype" != "implied"; then as_fn_error "Xft support has been requested but libraries were not found. *** Configure your X server to support XFreeType. *** Information about how to do this can be found in RELNOTES for XFree86." "$LINENO" 5 fi fi else if test "$enable_xfreetype" != "implied"; then as_fn_error "Xft support has been requested but headers were not found. *** Configure your X server to support XFreeType. *** Information about how to do this can be found in RELNOTES for XFree86." "$LINENO" 5 fi fi done fi fi if test "$enable_corefonts" = "yes"; then $as_echo "#define CONFIG_COREFONTS 1" >>confdefs.h features="${features} corefonts" fi # Check whether --enable-guievents was given. if test "${enable_guievents+set}" = set; then : enableval=$enable_guievents; if test "$enable_guievents" != "no"; then $as_echo "#define CONFIG_GUIEVENTS 1" >>confdefs.h features="${features} gui-events" # Check whether --with-icesound was given. if test "${with_icesound+set}" = set; then : withval=$with_icesound; else with_icesound='OSS,Y,ESound' fi for iface in ` echo ${with_icesound} | sed -e 's/\([^,][^,]*\)\(,\|$\)/\1 /g' `; do case ${iface} in OSS|oss) $as_echo "#define ENABLE_OSS 1" >>confdefs.h CONFIG_OSS=yes;; Y|Y2|YIFF|y|y2|yiff) for ac_header in Y2/Y.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "Y2/Y.h" "ac_cv_header_Y2_Y_h" "$ac_includes_default" if test "x$ac_cv_header_Y2_Y_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_Y2_Y_H 1 _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking for YOpenConnection in -lY2" >&5 $as_echo_n "checking for YOpenConnection in -lY2... " >&6; } if test "${ac_cv_lib_Y2_YOpenConnection+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lY2 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char YOpenConnection (); int main () { return YOpenConnection (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_Y2_YOpenConnection=yes else ac_cv_lib_Y2_YOpenConnection=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Y2_YOpenConnection" >&5 $as_echo "$ac_cv_lib_Y2_YOpenConnection" >&6; } if test "x$ac_cv_lib_Y2_YOpenConnection" = x""yes; then : $as_echo "#define ENABLE_YIFF 1" >>confdefs.h AUDIO_LIBS="${AUDIO_LIBS} -lY2" CONFIG_YIFF=yes fi fi done ;; ESound|ESD|esound|esd) # Check whether --with-esd-config was given. if test "${with_esd_config+set}" = set; then : withval=$with_esd_config; ESD_CONFIG=$with_esd_config else # Extract the first word of "esd-config", so it can be a program name with args. set dummy esd-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_ESD_CONFIG+set}" = set; then : $as_echo_n "(cached) " >&6 else case $ESD_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ESD_CONFIG="$ESD_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ESD_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ESD_CONFIG=$ac_cv_path_ESD_CONFIG if test -n "$ESD_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ESD_CONFIG" >&5 $as_echo "$ESD_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "${ESD_CONFIG}" != ""; then ESD_CFLAGS="`${ESD_CONFIG} --cflags`" ESD_LIBS="`${ESD_CONFIG} --libs`" ac_flags="$CXXFLAGS ${ESD_CFLAGS}" ac_libs="$LIBS ${ESD_LIBS}" # CXXFLAGS="${CXXFLAGS} ${ESD_CFLAGS}" # LIBS="${LIBS} ${ESD_LIBS}" for ac_header in esd.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "esd.h" "ac_cv_header_esd_h" "$ac_includes_default" if test "x$ac_cv_header_esd_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_ESD_H 1 _ACEOF else as_fn_error "Invalid compiler flags returned by ${ESD_CONFIG}. *** Check your installation." "$LINENO" 5 fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for esd_open_sound in -lesd" >&5 $as_echo_n "checking for esd_open_sound in -lesd... " >&6; } if test "${ac_cv_lib_esd_esd_open_sound+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lesd $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char esd_open_sound (); int main () { return esd_open_sound (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_esd_esd_open_sound=yes else ac_cv_lib_esd_esd_open_sound=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_esd_esd_open_sound" >&5 $as_echo "$ac_cv_lib_esd_esd_open_sound" >&6; } if test "x$ac_cv_lib_esd_esd_open_sound" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBESD 1 _ACEOF LIBS="-lesd $LIBS" else as_fn_error "Invalid linker flags returned by ${ESD_CONFIG}. *** Check your installation." "$LINENO" 5 fi CXXFLAGS="$ac_flags" LIBS="$ac_libs" $as_echo "#define ENABLE_ESD 1" >>confdefs.h AUDIO_CFLAGS="${AUDIO_CFLAGS} ${ESD_CFLAGS}" AUDIO_LIBS="${AUDIO_LIBS} ${ESD_LIBS}" CONFIG_ESD=yes fi;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Invalid audio interface: ${iface}" >&5 $as_echo "$as_me: WARNING: Invalid audio interface: ${iface}" >&2;} esac done for iface in OSS YIFF ESD; do eval test \"\${CONFIG_${iface}}\" = "yes" && audio_support="${audio_support} ${iface}" done if test "${audio_support}" = ""; then as_fn_error "You have to specify at least one valid audio interface." "$LINENO" 5 else APPLICATIONS="${APPLICATIONS} icesound" fi fi fi # Check whether --enable-xinerama was given. if test "${enable_xinerama+set}" = set; then : enableval=$enable_xinerama; fi if test "$enable_xinerama" = "no"; then echo ; else LIBS="$LIBS -lXinerama -lXext " { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XineramaQueryScreens in -lXinerama" >&5 $as_echo_n "checking for XineramaQueryScreens in -lXinerama... " >&6; } if test "${ac_cv_lib_Xinerama_XineramaQueryScreens+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXinerama $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XineramaQueryScreens (); int main () { return XineramaQueryScreens (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_Xinerama_XineramaQueryScreens=yes else ac_cv_lib_Xinerama_XineramaQueryScreens=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xinerama_XineramaQueryScreens" >&5 $as_echo "$ac_cv_lib_Xinerama_XineramaQueryScreens" >&6; } if test "x$ac_cv_lib_Xinerama_XineramaQueryScreens" = x""yes; then : CORE_LIBS="-lXinerama $CORE_LIBS" $as_echo "#define XINERAMA 1" >>confdefs.h else as_fn_error "Xinerama can not be found" "$LINENO" 5 fi fi # Check whether --enable-x86-asm was given. if test "${enable_x86_asm+set}" = set; then : enableval=$enable_x86_asm; fi case $target_cpu in i[3-6]86) ice_x86_target=yes;; *) ice_x86_target=no;; esac if test "$ice_x86_target" = "yes"; then test "$enable_x86_asm" != "no" && enable_x86_asm=yes \ || enable_x86_asm=no fi if test "$enable_x86_asm" = "yes"; then $as_echo "#define CONFIG_X86_ASM 1" >>confdefs.h features="${features} x86-asm" fi # Check whether --enable-prefs was given. if test "${enable_prefs+set}" = set; then : enableval=$enable_prefs; fi if test "$enable_prefs" = "no"; then $as_echo "#define NO_CONFIGURE 1" >>confdefs.h fi # Check whether --enable-keyconf was given. if test "${enable_keyconf+set}" = set; then : enableval=$enable_keyconf; fi if test "$enable_keyconf" = "no"; then $as_echo "#define NO_KEYBIND 1" >>confdefs.h fi # Check whether --enable-menuconf was given. if test "${enable_menuconf+set}" = set; then : enableval=$enable_menuconf; fi if test "$enable_menuconf" = "no"; then $as_echo "#define NO_CONFIGURE_MENUS 1" >>confdefs.h fi # Check whether --enable-winoptions was given. if test "${enable_winoptions+set}" = set; then : enableval=$enable_winoptions; fi if test "$enable_winoptions" = "no"; then $as_echo "#define NO_WINDOW_OPTIONS 1" >>confdefs.h fi # Check whether --enable-taskbar was given. if test "${enable_taskbar+set}" = set; then : enableval=$enable_taskbar; fi if test "$enable_taskbar" = "no"; then echo; else $as_echo "#define CONFIG_TASKBAR 1" >>confdefs.h fi # Check whether --enable-winmenu was given. if test "${enable_winmenu+set}" = set; then : enableval=$enable_winmenu; fi if test "$enable_winmenu" = "no"; then echo; else $as_echo "#define CONFIG_WINMENU 1" >>confdefs.h fi # Check whether --enable-lite was given. if test "${enable_lite+set}" = set; then : enableval=$enable_lite; else enable_lite=no fi if test "${enable_lite}" != "yes"; then $as_echo "#define CONFIG_TOOLTIP 1" >>confdefs.h if test "${enable_taskbar}" != "no"; then $as_echo "#define CONFIG_TASKBAR 1" >>confdefs.h $as_echo "#define CONFIG_ADDRESSBAR 1" >>confdefs.h $as_echo "#define CONFIG_TRAY 1" >>confdefs.h $as_echo "#define CONFIG_APPLET_MAILBOX 1" >>confdefs.h $as_echo "#define CONFIG_APPLET_CPU_STATUS 1" >>confdefs.h $as_echo "#define CONFIG_APPLET_NET_STATUS 1" >>confdefs.h $as_echo "#define CONFIG_APPLET_CLOCK 1" >>confdefs.h $as_echo "#define CONFIG_APPLET_APM 1" >>confdefs.h fi $as_echo "#define CONFIG_WINLIST 1" >>confdefs.h if test "${enable_winmenu}" != "no"; then $as_echo "#define CONFIG_WINMENU 1" >>confdefs.h fi APPLICATIONS="${APPLICATIONS} icehelp" else $as_echo "#define LITE 1" >>confdefs.h fi IMAGE_CFLAGS=`pkg-config gdk-pixbuf-xlib-2.0 --cflags` IMAGE_LIBS=`pkg-config gdk-pixbuf-xlib-2.0 --libs` $as_echo "#define CONFIG_GDK_PIXBUF_XLIB 1" >>confdefs.h image_library=gdk_pixbuf_xlib # Check whether --with-mkfontdir was given. if test "${with_mkfontdir+set}" = set; then : withval=$with_mkfontdir; MKFONTDIR=$with_mkfontdir else # Extract the first word of "mkfontdir", so it can be a program name with args. set dummy mkfontdir; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_MKFONTDIR+set}" = set; then : $as_echo_n "(cached) " >&6 else case $MKFONTDIR in [\\/]* | ?:[\\/]*) ac_cv_path_MKFONTDIR="$MKFONTDIR" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$PATH:/usr/X11R6/bin" for as_dir in $as_dummy do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_MKFONTDIR="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MKFONTDIR=$ac_cv_path_MKFONTDIR if test -n "$MKFONTDIR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKFONTDIR" >&5 $as_echo "$MKFONTDIR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi LIBS=$no_x_libs # Check whether --with-kdedatadir was given. if test "${with_kdedatadir+set}" = set; then : withval=$with_kdedatadir; if test x"$with_kdedatadir" = x -o "$with_kdedatadir" = "yes"; then as_fn_error "Invalid usage of --with-kdedatadir argument" "$LINENO" 5 else kdedatadir=$with_kdedatadir fi else if test x"$KDEDIR" != x; then kdedatadir="${KDEDIR}/share" else kdedatadir="${datadir}" fi fi # Check whether --with-libdir was given. if test "${with_libdir+set}" = set; then : withval=$with_libdir; if test x"$with_libdir" = x -o "$with_libdir" = "yes"; then as_fn_error "Invalid usage of --with-libdir argument" "$LINENO" 5 else libdatadir=$with_libdir fi else libdatadir='${datadir}/icewm' fi # Check whether --with-cfgdir was given. if test "${with_cfgdir+set}" = set; then : withval=$with_cfgdir; if test x"$with_cfgdir" = x -o "$with_cfgdir" = "yes"; then as_fn_error "Invalid usage of --with-cfgdir argument" "$LINENO" 5 else cfgdatadir=$with_cfgdir fi else cfgdatadir='/etc/icewm' fi # Check whether --with-docdir was given. if test "${with_docdir+set}" = set; then : withval=$with_docdir; if test x"$with_docdir" = x -o "$with_docdir" = "yes"; then as_fn_error "Invalid usage of --with-docdir argument" "$LINENO" 5 else docdir=$with_docdir fi else docdir='${datadir}/doc' fi # Check whether --enable-menus-gnome1 was given. if test "${enable_menus_gnome1+set}" = set; then : enableval=$enable_menus_gnome1; if test "${enable_menus_gnome1}" = "yes"; then # Extract the first word of "gnome-config", so it can be a program name with args. set dummy gnome-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_GNOME1_CONFIG+set}" = set; then : $as_echo_n "(cached) " >&6 else case $GNOME1_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_GNOME1_CONFIG="$GNOME1_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GNOME1_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GNOME1_CONFIG=$ac_cv_path_GNOME1_CONFIG if test -n "$GNOME1_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNOME1_CONFIG" >&5 $as_echo "$GNOME1_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "${GNOME1_CONFIG}" != ""; then GNOME_VER=1 GNOME1_CFLAGS=`$GNOME1_CONFIG --cflags gnome` GNOME1_LIBS=`$GNOME1_CONFIG --libs gnome` $as_echo "#define CONFIG_GNOME_MENUS 1" >>confdefs.h APPLICATIONS="${APPLICATIONS} icewm-menu-gnome1" GWMDIR="`${GNOME1_CONFIG} --datadir`/gnome/wm-properties/" CONFIG_GNOME1_MENU_DIR="`${GNOME1_CONFIG} --prefix`/share/gnome/apps/" fi if test "${GNOME1_CFLAGS}" = ""; then as_fn_error "gnome-config can not be found. *** Install the GNOME´s development packages." "$LINENO" 5 fi fi fi # Check whether --enable-menus-gnome2 was given. if test "${enable_menus_gnome2+set}" = set; then : enableval=$enable_menus_gnome2; if test "${enable_menus_gnome2}" = "yes"; then # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PKG_CONFIG+set}" = set; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "${PKG_CONFIG}" != ""; then GNOME_VER=2 GNOME2_CFLAGS=`pkg-config --cflags gnome-desktop-2.0 libgnomeui-2.0` GNOME2_LIBS=`pkg-config --libs gnome-desktop-2.0 libgnomeui-2.0` $as_echo "#define CONFIG_GNOME_MENUS 1" >>confdefs.h APPLICATIONS="${APPLICATIONS} icewm-menu-gnome2" GNOME2_PREFIX=`pkg-config --variable=prefix gnome-desktop-2.0` GWMDIR="${GNOME2_PREFIX}/share/gnome/wm-properties/" CONFIG_GNOME2_MENU_DIR="${GNOME2_PREFIX}/share/desktop-directories/" fi if test "${GNOME2_CFLAGS}" = ""; then as_fn_error "gnome 2 can not be found via pkg-config. *** Install the GNOME´s development packages." "$LINENO" 5 fi fi fi CONFIG_KDE_MENU_DIR="`kde-config --path apps | sed -e 's/.*://'`" $as_echo "#define WMSPEC_HINTS 1" >>confdefs.h $as_echo "#define GNOME1_HINTS 1" >>confdefs.h PACKAGE=`sed -ne 's/PACKAGE=//p' VERSION` VERSION=`sed -ne 's/VERSION=//p' VERSION` HOSTOS=`uname -sr || echo unknown` HOSTCPU=`uname -m || echo unknown` ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" PREFIX=`eval echo \""${prefix}"\"` ice_previous_value='' until test "${ice_previous_value}" = "${PREFIX}"; do ice_previous_value="${PREFIX}" PREFIX=`eval echo "${PREFIX}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" BINDIR=`eval echo \""${bindir}"\"` ice_previous_value='' until test "${ice_previous_value}" = "${BINDIR}"; do ice_previous_value="${BINDIR}" BINDIR=`eval echo "${BINDIR}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" LIBDIR=`eval echo \""${libdatadir}"\"` ice_previous_value='' until test "${ice_previous_value}" = "${LIBDIR}"; do ice_previous_value="${LIBDIR}" LIBDIR=`eval echo "${LIBDIR}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" CFGDIR=`eval echo \""${cfgdatadir}"\"` ice_previous_value='' until test "${ice_previous_value}" = "${CFGDIR}"; do ice_previous_value="${CFGDIR}" CFGDIR=`eval echo "${CFGDIR}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" LOCDIR=`eval echo \""${localedir}"\"` ice_previous_value='' until test "${ice_previous_value}" = "${LOCDIR}"; do ice_previous_value="${LOCDIR}" LOCDIR=`eval echo "${LOCDIR}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" KDEDIR=`eval echo \""${kdedatadir}"\"` ice_previous_value='' until test "${ice_previous_value}" = "${KDEDIR}"; do ice_previous_value="${KDEDIR}" KDEDIR=`eval echo "${KDEDIR}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" DOCDIR=`eval echo \""${docdir}"\"` ice_previous_value='' until test "${ice_previous_value}" = "${DOCDIR}"; do ice_previous_value="${DOCDIR}" DOCDIR=`eval echo "${DOCDIR}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" MANDIR=`eval echo \""${mandir}"\"` ice_previous_value='' until test "${ice_previous_value}" = "${MANDIR}"; do ice_previous_value="${MANDIR}" MANDIR=`eval echo "${MANDIR}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" DEPENDENCIES="" BASEOBJS="" BASEBINS="" for binary in ${APPLICATIONS}; do BASEOBJS="${BASEOBJS} \$(${binary}_OBJS)" BASEBINS="${BASEBINS} ${binary}\$(EXEEXT)" done TESTOBJS="" TESTBINS="" for binary in ${TESTCASES}; do TESTOBJS="${TESTOBJS} \$(${binary}_OBJS)" TESTBINS="${TESTBINS} ${binary}\$(EXEEXT)" done TARGETS_INSTALL=`for target in ${TARGETS}; do echo $ECHO_N "install-${target} $ECHO_C"; done` BINFILES=`for binary in ${APPLICATIONS}; do echo $ECHO_N "\\\$(top_srcdir)/src/${binary}\\\$(EXEEXT) $ECHO_C"; done` INSTALLDIR="${INSTALL} -m 755 -d" INSTALLBIN="${INSTALL_PROGRAM}" INSTALLLIB="${INSTALL_DATA}" INSTALLETC="${INSTALL_DATA}" INSTALLMAN="${INSTALL_DATA}" ac_config_commands="$ac_config_commands config.status" ac_config_files="$ac_config_files Makefile src/Makefile po/Makefile lib/keys lib/menu lib/programs lib/toolbar lib/winoptions" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error ERROR [LINENO LOG_FD] # --------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with status $?, using 1 if that was 0. as_fn_error () { as_status=$?; test $as_status -eq 0 && as_status=1 if test "$3"; then as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 fi $as_echo "$as_me: error: $1" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was generated by GNU Autoconf 2.65. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.65, with options \\"\$ac_cs_config\\" Copyright (C) 2009 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # ac_targets_binaries="${APPLICATIONS} ${TESTCASES}" ac_depend="${enable_depend}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; "config.status") CONFIG_COMMANDS="$CONFIG_COMMANDS config.status" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "po/Makefile") CONFIG_FILES="$CONFIG_FILES po/Makefile" ;; "lib/keys") CONFIG_FILES="$CONFIG_FILES lib/keys" ;; "lib/menu") CONFIG_FILES="$CONFIG_FILES lib/menu" ;; "lib/programs") CONFIG_FILES="$CONFIG_FILES lib/programs" ;; "lib/toolbar") CONFIG_FILES="$CONFIG_FILES lib/toolbar" ;; "lib/winoptions") CONFIG_FILES="$CONFIG_FILES lib/winoptions" ;; *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || as_fn_error "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_t=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_t"; then break elif $ac_last_try; then as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ || as_fn_error "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" } >"$tmp/config.h" \ || as_fn_error "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$tmp/config.h" "$ac_file" \ || as_fn_error "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error "could not create -" "$LINENO" 5 fi ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "config.status":C) for binary in ${ac_targets_binaries}; do echo "${binary}\$(EXEEXT): \$(${binary}_OBJS)" >> "${srcdir}/src/Makefile" done if test "${ac_depend}" = "yes"; then echo >> "${srcdir}/src/Makefile" echo '-include $(OBJECTS:.o=.d)' >> "${srcdir}/src/Makefile" echo '-include $(genpref_OBJS:.o=.d)' >> "${srcdir}/src/Makefile" fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit $? fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } ( ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" ice_value=`eval echo \""$TARGETS"\"` ice_previous_value='' until test "${ice_previous_value}" = "${ice_value}"; do ice_previous_value="${ice_value}" ice_value=`eval echo "${ice_value}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: Build targets: $ice_value" >&5 $as_echo "Build targets: $ice_value" >&6; } ) ( ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" ice_value=`eval echo \""$APPLICATIONS"\"` ice_previous_value='' until test "${ice_previous_value}" = "${ice_value}"; do ice_previous_value="${ice_value}" ice_value=`eval echo "${ice_value}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: Applications: $ice_value" >&5 $as_echo "Applications: $ice_value" >&6; } ) ( ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" ice_value=`eval echo \""$image_library"\"` ice_previous_value='' until test "${ice_previous_value}" = "${ice_value}"; do ice_previous_value="${ice_value}" ice_value=`eval echo "${ice_value}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: Image library: $ice_value" >&5 $as_echo "Image library: $ice_value" >&6; } ) ( ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" ice_value=`eval echo \""$audio_support"\"` ice_previous_value='' until test "${ice_previous_value}" = "${ice_value}"; do ice_previous_value="${ice_value}" ice_value=`eval echo "${ice_value}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: Audio support: $ice_value" >&5 $as_echo "Audio support: $ice_value" >&6; } ) ( ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" ice_value=`eval echo \""$features"\"` ice_previous_value='' until test "${ice_previous_value}" = "${ice_value}"; do ice_previous_value="${ice_value}" ice_value=`eval echo "${ice_value}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: Features: $ice_value" >&5 $as_echo "Features: $ice_value" >&6; } ) ( ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" ice_value=`eval echo \""$prefix"\"` ice_previous_value='' until test "${ice_previous_value}" = "${ice_value}"; do ice_previous_value="${ice_value}" ice_value=`eval echo "${ice_value}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: Paths: PREFIX: $ice_value" >&5 $as_echo "Paths: PREFIX: $ice_value" >&6; } ) ( ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" ice_value=`eval echo \""$bindir"\"` ice_previous_value='' until test "${ice_previous_value}" = "${ice_value}"; do ice_previous_value="${ice_value}" ice_value=`eval echo "${ice_value}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: BINDIR: $ice_value" >&5 $as_echo " BINDIR: $ice_value" >&6; } ) ( ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" ice_value=`eval echo \""$localedir"\"` ice_previous_value='' until test "${ice_previous_value}" = "${ice_value}"; do ice_previous_value="${ice_value}" ice_value=`eval echo "${ice_value}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: LOCDIR: $ice_value" >&5 $as_echo " LOCDIR: $ice_value" >&6; } ) ( ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" ice_value=`eval echo \""$libdatadir"\"` ice_previous_value='' until test "${ice_previous_value}" = "${ice_value}"; do ice_previous_value="${ice_value}" ice_value=`eval echo "${ice_value}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: LIBDIR: $ice_value" >&5 $as_echo " LIBDIR: $ice_value" >&6; } ) ( ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" ice_value=`eval echo \""$cfgdatadir"\"` ice_previous_value='' until test "${ice_previous_value}" = "${ice_value}"; do ice_previous_value="${ice_value}" ice_value=`eval echo "${ice_value}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: CFGDIR: $ice_value" >&5 $as_echo " CFGDIR: $ice_value" >&6; } ) ( ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" ice_value=`eval echo \""$kdedatadir"\"` ice_previous_value='' until test "${ice_previous_value}" = "${ice_value}"; do ice_previous_value="${ice_value}" ice_value=`eval echo "${ice_value}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: KDEDIR: $ice_value" >&5 $as_echo " KDEDIR: $ice_value" >&6; } ) ( ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" ice_value=`eval echo \""$docdir"\"` ice_previous_value='' until test "${ice_previous_value}" = "${ice_value}"; do ice_previous_value="${ice_value}" ice_value=`eval echo "${ice_value}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: DOCDIR: $ice_value" >&5 $as_echo " DOCDIR: $ice_value" >&6; } ) ( ice_stored_prefix="${prefix}" test "${prefix}" = "NONE" && prefix="${ac_default_prefix}" ice_stored_exec_prefix="${exec_prefix}" test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" ice_value=`eval echo \""$mandir"\"` ice_previous_value='' until test "${ice_previous_value}" = "${ice_value}"; do ice_previous_value="${ice_value}" ice_value=`eval echo "${ice_value}"` done prefix="${ice_stored_prefix}" exec_prefix="${ice_stored_exec_prefix}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: MANDIR: $ice_value" >&5 $as_echo " MANDIR: $ice_value" >&6; } ) icewm-1.3.7/Makefile.in0000644000076600007660000001054111463274241013674 0ustar develdevel################################################################################ # GNU make should only be needed in maintainer mode now ################################################################################ # Please run 'configure' first (generate it with autogen.sh) ################################################################################ srcdir = @srcdir@ top_srcdir = @top_srcdir@ PACKAGE = @PACKAGE@ VERSION = @VERSION@ PREFIX = @PREFIX@ BINDIR = @BINDIR@ LIBDIR = @LIBDIR@ CFGDIR = @CFGDIR@ LOCDIR = @LOCDIR@ KDEDIR = @KDEDIR@ DOCDIR = @DOCDIR@ MANDIR = @MANDIR@ EXEEXT = @EXEEXT@ INSTALL = @INSTALL@ INSTALLDIR = @INSTALLDIR@ INSTALLBIN = @INSTALLBIN@ INSTALLLIB = @INSTALLLIB@ INSTALLETC = @INSTALLETC@ INSTALLMAN = @INSTALLMAN@ MKFONTDIR = @MKFONTDIR@ DESTDIR = ################################################################################ BINFILES = @BINFILES@ icewm-set-gnomewm LIBFILES = lib/preferences lib/winoptions lib/keys \ lib/menu lib/toolbar # lib/programs DOCFILES = README BUGS CHANGES COPYING AUTHORS INSTALL VERSION icewm.lsm MANFILES = icewm.1 XPMDIRS = icons ledclock taskbar mailbox cursors THEMES = nice motif win95 warp3 warp4 metal2 gtk2 Infadel2 nice2 \ icedesert yellowmotif all: @TARGETS@ install: @TARGETS_INSTALL@ base icesound icehelp: @cd src; $(MAKE) $@ docs: @cd doc; $(MAKE) all nls: @cd po; $(MAKE) all srcclean: @cd src; $(MAKE) clean clean: srcclean @cd doc; $(MAKE) clean distclean: clean rm -f *~ config.cache config.log config.status install.inc \ sysdep.inc src/config.h \ lib/preferences \ lib/menu lib/programs lib/keys lib/winoptions lib/toolbar maintainer-clean: distclean rm -f icewm.spec icewm.lsm Makefile configure src/config.h.in @cd doc; $(MAKE) maintainer-clean check: @cd src ; $(MAKE) check >/dev/null dist: distclean docs configure # Makefile TABS *SUCK* install-base: base @echo ------------------------------------------ @echo "Installing binaries in $(DESTDIR)$(BINDIR)" @$(INSTALLDIR) "$(DESTDIR)$(BINDIR)" @for bin in $(BINFILES); do \ $(INSTALLBIN) "$${bin}" "$(DESTDIR)$(BINDIR)"; \ done @echo "Installing presets and icons in $(DESTDIR)$(LIBDIR)" @$(INSTALLDIR) "$(DESTDIR)$(LIBDIR)" #-@$(INSTALLDIR) "$(DESTDIR)$(CFGDIR)" @for lib in $(LIBFILES); do \ $(INSTALLLIB) "$${lib}" "$(DESTDIR)$(LIBDIR)"; \ done @for xpmdir in $(XPMDIRS); do \ if test -d "lib/$${xpmdir}"; then \ $(INSTALLDIR) "$(DESTDIR)$(LIBDIR)/$${xpmdir}"; \ for pixmap in "lib/$${xpmdir}/"*.xpm; do \ $(INSTALLLIB) "$${pixmap}" "$(DESTDIR)$(LIBDIR)/$${xpmdir}"; \ done; \ fi; \ done @echo ------------------------------------------ @for theme in $(THEMES); do \ SRCDIR="$(top_srcdir)" \ DESTDIR="$(DESTDIR)" \ LIBDIR="$(LIBDIR)" \ XPMDIRS="$(XPMDIRS)" \ INSTALLDIR="$(INSTALLDIR)" \ INSTALLLIB="$(INSTALLLIB)" \ MKFONTDIR="$(MKFONTDIR)" \ $(top_srcdir)/utils/install-theme.sh "$${theme}"; \ done @#for a in $(ETCFILES) ; do $(INSTALLETC) "$$a" $(CFGDIR) ; done @echo ------------------------------------------ install-docs: docs @echo ------------------------------------------ @rm -fr "$(DESTDIR)$(DOCDIR)/icewm-$(VERSION)" @$(INSTALLDIR) "$(DESTDIR)$(DOCDIR)/icewm-$(VERSION)" @echo "Installing documentation in $(DESTDIR)$(DOCDIR)" @$(INSTALLLIB) $(DOCFILES) "$(DESTDIR)$(DOCDIR)/icewm-$(VERSION)" @$(INSTALLLIB) "$(top_srcdir)/doc/"*.sgml "$(DESTDIR)$(DOCDIR)/icewm-$(VERSION)" @$(INSTALLLIB) "$(top_srcdir)/doc/"*.html "$(DESTDIR)$(DOCDIR)/icewm-$(VERSION)" @echo ------------------------------------------ install-nls: nls @echo ------------------------------------------ @cd po; $(MAKE) install @echo ------------------------------------------ install-man: @$(INSTALLDIR) "$(DESTDIR)$(MANDIR)/man1" @for man in $(MANFILES); do \ $(INSTALLMAN) doc/$$man.man $(DESTDIR)$(MANDIR)/man1/$$man; \ done install-desktop: @echo ------------------------------------------ @$(INSTALLDIR) "$(DESTDIR)/usr/share/xsessions" @$(INSTALLDIR) "$(DESTDIR)/usr/share/applications" @$(INSTALLLIB) "$(top_srcdir)/lib/icewm-session.desktop" "$(DESTDIR)/usr/share/xsessions/icewm-session.desktop" @$(INSTALLLIB) "$(top_srcdir)/lib/icewm.desktop" "$(DESTDIR)/usr/share/applications/icewm.desktop" @echo ------------------------------------------ icewm-1.3.7/utils/0000775000076600007660000000000011463274241012770 5ustar develdevelicewm-1.3.7/utils/install-theme.sh0000755000076600007660000000224111463274241016072 0ustar develdevel#!/bin/sh theme="$1" destdir="${DESTDIR}${LIBDIR}/themes/${theme}" srcdir="${SRCDIR}/lib/themes/${theme}" echo "Installing theme: ${theme}" ${INSTALLDIR} "${destdir}" for pixmap in "${srcdir}/"*.xpm do ${INSTALLLIB} "${pixmap}" "${destdir}" done for subtheme in "${srcdir}/"*.theme do ${INSTALLLIB} "${subtheme}" "${destdir}" done if test -f "${srcdir}/"*.pcf then for font in "${srcdir}/"*.pcf do ${INSTALLLIB} "${font}" "${destdir}" done if test -x "${MKFONTDIR}" then ( cd "${destdir}"; ${MKFONTDIR} ) else echo "WARNING: A dummy file has been copied to" echo " ${destdir}/fonts.dir" echo " You better setup your path to point to mkfontdir or use the" echo " --with-mkfontdir option of the configure script." ${INSTALLLIB} "${srcdir}/fonts.dir.default" "${destdir}/fonts.dir" fi fi for xpmdir in ${XPMDIRS} do if test -d "${srcdir}/${xpmdir}" then ${INSTALLDIR} "${destdir}/${xpmdir}" for pixmap in "${srcdir}/${xpmdir}/"*.xpm do ${INSTALLLIB} "${pixmap}" "${destdir}/${xpmdir}" done fi done icewm-1.3.7/utils/prefs2cxx.xsl0000644000076600007660000000642511463274241015451 0ustar develdevel icewm-1.3.7/utils/mkbuild.sh0000775000076600007660000000152211463274241014756 0ustar develdevel#!/bin/sh error() { rc=$1; shift echo $* >&2 exit $rc } if test "$1" = "-h" -o "$1" = "-help" -o "$1" = "--help" then cat <<. Usage: `basename $0` [BUILDDIR [SOURCEDIR]] BUILDDIR Location at which to build icewm (default: ../build) SOURCEDIR Location of icewm's sourcecode (default: .) . exit fi BUILDDIR=${1:-../build} SOURCEDIR=${2:-$PWD} [ ! -d "$SOURCEDIR" ] && error 1 \ "Invalid source directory: \`$SOURCEDIR'" [ -e "$BUILDDIR" ] && error 1 \ "Build directory exists: \`$BUILDDIR'" [ "$SOURCEDIR" -ef "$BUILDDIR" ] && error 1 \ "Identical source and build directory: \`$SOURCEDIR' and \`$BUILDDIR'" echo "Linking from \`$SOURCEDIR' to \`$BUILDDIR'" find $SOURCEDIR -type d -not -name CVS \ -printf $BUILDDIR/%P\\0 | xargs -0 mkdir -p find $SOURCEDIR -type f -not -path \*/CVS/\* \ -printf "ln -s %p $BUILDDIR/%P\\n" | sh icewm-1.3.7/utils/release.sh0000755000076600007660000000216111463274241014745 0ustar develdevel#!/bin/sh #cvs () { echo cvs $* } CVSROOT=':pserver:anonymous@cvs.icewm.sourceforge.net:/cvsroot/icewm' MODULE='icewm-1.3' SRCDIR="$MODULE" if [ -d "$MODULE" ]; then pushd $MODULE > /dev/null [ -f Makefile ] && make maintainer-clean echo Updating CVS repository cvs -z3 update -d -P popd > /dev/null else echo Checking out CVS repository cvs -z3 -d$CVSROOT login cvs -z3 -d$CVSROOT checkout -P $MODULE fi source $SRCDIR/VERSION DISTDIR="icewm-$VERSION" echo Copying CVS repository to $DISTDIR rm -rf $DISTDIR cp -r $SRCDIR $DISTDIR pushd $DISTDIR > /dev/null echo Preparing autoconf ./autogen.sh echo Running configure ./configure --quiet --prefix=/usr --exec-prefix=/usr/X11R6 --sysconfdir=/etc echo Making distribution information make -s docs echo Cleaning distribution rm config.{cache,log,status} RELEASE=`sed -ne 's/^%define\>[[:space:]]*release\>[[:space:]]*\<\(.*\)$/\1/p'\ < icewm.spec` TARBALL="icewm-$VERSION.tar" popd echo Building tarball $TARBALL tar -cf $TARBALL --exclude=CVS --exclude="autom4te*.cache" $DISTDIR gzip -9 < $TARBALL > "$TARBALL.gz" cp -v "$TARBALL.gz" "$HOME/rpm/SOURCES/" icewm-1.3.7/utils/search_strings0000775000076600007660000000077111463274241015741 0ustar develdevel#!/bin/sh grep -n '".*"' src/*.cc |\ egrep -v '#(include|define.*(PIXMAP))|extern.*"C"|[^"]*(//|/\*|"(\.\.\.|%s,\*|rgb:../../..|/bin/(sh|rm)|-c|/dev/null|DISPLAY=?|/?)")|_\(|MSG|loadPixmap|getIcon|X(LoadQueryFont|CreateFontSet)|{ &_?XA|getenv|msg|/?(.icewm|themes|icons|mailbox|ledclock|taskbar|proc)/|"-|"([: ]*(0x|)%[0-9]*[%xsd][: ]*)*"' grep -n '".*"' src/*.h |\ egrep -v '#(include|define.*(FONT|KEY_NAME|CONFIG_))extern.*"C"||[OX][BIKS]V|XA_(WIN|MOTIF)|ICEWM_GUI_EVENT|{ ge|defgKey|warn|"display"' icewm-1.3.7/config.sub0000755000076600007660000007143311463274241013621 0ustar develdevel#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002 Free Software Foundation, Inc. timestamp='2002-06-21' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit 0;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k \ | m32r | m68000 | m68k | m88k | mcore \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mipsisa32 | mipsisa32el \ | mipsisa64 | mipsisa64el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | ns16k | ns32k \ | openrisc | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ | strongarm \ | tahoe | thumb | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xscale | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c54x-* \ | clipper-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* \ | m32r-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipstx39 | mipstx39el \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; crds | unos) basic_machine=m68k-crds ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; mmix*) basic_machine=mmix-knuth os=-mmixware ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; or32 | or32-*) basic_machine=or32-unknown os=-coff ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon) basic_machine=i686-pc ;; pentiumii | pentium2) basic_machine=i686-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3d) basic_machine=alpha-cray os=-unicos ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; windows32) basic_machine=i386-pc os=-windows32-msvcrt ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele) basic_machine=sh-unknown ;; sh64) basic_machine=sh64-unknown ;; sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; c4x*) basic_machine=c4x-none os=-coff ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto*) os=-nto-qnx ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -ptx*) vendor=sequent ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: icewm-1.3.7/icewm.lsm.in0000644000076600007660000000111711463274241014054 0ustar develdevelBegin3 Title: IceWM Window Manager Version: %%VERSION%% Entered-date: %%DATE%% Description: Window manager for X11 Keywords: window-manager, x11, fast, small, source, w'95, os2, motif. Author: marko.macek@gmx.net (Marko Macek) Maintained-by: mathias.hasselmann@gmx.de (Mathias Hasselmann) Primary-site: http://sourceforge.net/project/?form_grp=31 298 KB icewm-%%VERSION%%.src.tar.bz2 383 KB icewm-%%VERSION%%.src.tar.gz Home-page: http://icewm.sourceforge.net/ Platforms: X11, Xpm, c++ Copying-policy: LGPL End icewm-1.3.7/lib/0000775000076600007660000000000011463274255012403 5ustar develdevelicewm-1.3.7/lib/mailbox/0000775000076600007660000000000011463274241014031 5ustar develdevelicewm-1.3.7/lib/mailbox/unreadmail.xpm0000664000076600007660000000066411463274241016706 0ustar develdevel/* XPM */ static char * unreadmail_xpm[] = { "16 16 4 1", " c None", ". c #000000", "+ c #00FF00", "@ c #808080", " ", " ", " ", " ............. ", " .+++++++++++.@ ", " ..+++++++++..@ ", " .+.+++++++.+.@ ", " .++.+++++.++.@ ", " .++..+++..++.@ ", " .+.++...++.+.@ ", " ..+++++++++..@ ", " .............@ ", " @@@@@@@@@@@@@ ", " ", " ", " "}; icewm-1.3.7/lib/mailbox/errmail.xpm0000664000076600007660000000066111463274241016215 0ustar develdevel/* XPM */ static char * errmail_xpm[] = { "16 16 4 1", " c None", ". c #FF0000", "+ c #C0C0C0", "@ c #808080", " ", " ", " ", " ............. ", " .+++++++++++.@ ", " ..+++++++++..@ ", " .+.+++++++.+.@ ", " .++.+++++.++.@ ", " .++..+++..++.@ ", " .+.++...++.+.@ ", " ..+++++++++..@ ", " .............@ ", " @@@@@@@@@@@@@ ", " ", " ", " "}; icewm-1.3.7/lib/mailbox/nomail.xpm0000664000076600007660000000066011463274241016040 0ustar develdevel/* XPM */ static char * nomail_xpm[] = { "16 16 4 1", " c None", ". c #000000", "+ c #C0C0C0", "@ c #808080", " ", " ", " ", " ............. ", " .+++++++++++.@ ", " ..+++++++++..@ ", " .+.+++++++.+.@ ", " .++.+++++.++.@ ", " .++..+++..++.@ ", " .+.++...++.+.@ ", " ..+++++++++..@ ", " .............@ ", " @@@@@@@@@@@@@ ", " ", " ", " "}; icewm-1.3.7/lib/mailbox/mail.xpm0000664000076600007660000000065611463274241015510 0ustar develdevel/* XPM */ static char * mail_xpm[] = { "16 16 4 1", " c None", ". c #000000", "+ c #FFFFFF", "@ c #808080", " ", " ", " ", " ............. ", " .+++++++++++.@ ", " ..+++++++++..@ ", " .+.+++++++.+.@ ", " .++.+++++.++.@ ", " .++..+++..++.@ ", " .+.++...++.+.@ ", " ..+++++++++..@ ", " .............@ ", " @@@@@@@@@@@@@ ", " ", " ", " "}; icewm-1.3.7/lib/mailbox/newmail.xpm0000664000076600007660000000066111463274241016216 0ustar develdevel/* XPM */ static char * newmail_xpm[] = { "16 16 4 1", " c None", ". c #000000", "+ c #FFFF00", "@ c #808080", " ", " ", " ", " ............. ", " .+++++++++++.@ ", " ..+++++++++..@ ", " .+.+++++++.+.@ ", " .++.+++++.++.@ ", " .++..+++..++.@ ", " .+.++...++.+.@ ", " ..+++++++++..@ ", " .............@ ", " @@@@@@@@@@@@@ ", " ", " ", " "}; icewm-1.3.7/lib/programs0000664000076600007660000000364111463274255014164 0ustar develdevel## This file is intended to be customized by the distributions. ## (they should place it in /etc/X11/icewm) ## ## mostly obsolete, fixme #menu Editors folder { # prog fte fte fte # prog vim vim gvim # prog xemacs xemacs xemacs # prog emacs emacs emacs # prog NEdit nedit nedit # prog xedit xedit xedit # prog Lyx emacs lyx #} #menu "WWW" folder { # prog Netscape netscape netscape # prog Mozilla mozilla mozilla # prog Galeon galeon galeon # prog Arena arena arena # prog Lynx lynx xterm -e lynx # prog Links lynx xterm -e links #} #menu "Document Viewers" folder { # prog "Acrobat Reader" pdf acroread # prog "DVI Previewer" xdvi xdvi # prog "Ghostview" ghostview gv #} #menu Graphics folder { # prog Gimp gimp gimp # prog XV xv xv # prog XPaint xpaint xpaint # prog XFig xfig xfig #} #menu Games folder { # prog "Koules for X" koules xkoules -f # prog Xboing xboing xboing # prog Xboard xboard xboard # prog XGalaga xgalaga xgal # prog XDemineur xdemineur xdemineur # prog "Tux Racer" tuxracer tuxracer #} #menu System folder { # prog "Control Panel" redhat control-panel #} #menu Utilities folder { # prog XPlayCD xplaycd xplaycd # prog XMixer xmixer xmixer # prog Clock xclock xclock # prog Magnify xmag xmag # prog Calculator xcalc xcalc # prog Colormap xcolormap xcmap # prog Clipboard xclipboard xclipboard # prog xkill bomb xkill # prog xload xload xload # prog xosview xosview xosview # separator # prog "Screen Saver" xlock xlock -nolock # prog "Screen Lock" xlock xlock #} #menu "Window Managers" folder { # restart icewm - icewm # restart metacity - metacity # restart wmaker - wmaker # restart fluxbox - fluxbox # restart blackbox - blackbox # restart enlightenment - enlightenment # restart fvwm2 - fvwm2 # restart fvwm - fvwm # restart sawfish - sawfish # restart sawfish2 - sawfish2 #} icewm-1.3.7/lib/menu.in0000664000076600007660000000127311463274241013675 0ustar develdevel# This is an example for IceWM's menu definition file. # # Place your variants in @CFGDIR@ or in $HOME/.icewm # since modifications to this file will be discarded when you # (re)install icewm. # prog xterm xterm xterm prog rxvt xterm rxvt -bg black -cr green -fg white -C -fn 9x15 -sl 500 prog fte fte fte prog NEdit nedit nedit prog Mozilla mozilla mozilla prog XChat xchat xchat prog Gimp gimp gimp separator menuprog Gnome folder icewm-menu-gnome1 --list @CONFIG_GNOME1_MENU_DIR@ menuprog Gnome folder icewm-menu-gnome2 --list @CONFIG_GNOME2_MENU_DIR@ menuprog KDE folder icewm-menu-gnome@GNOME_VER@ --list @CONFIG_KDE_MENU_DIR@ menufile Programs folder programs menufile Tool_bar folder toolbar icewm-1.3.7/lib/icewm/0000775000076600007660000000000011463274241013502 5ustar develdevelicewm-1.3.7/lib/icewm/close.xpm0000664000076600007660000000067611463274241015346 0ustar develdevel/* XPM */ static char * close_xpm[] = { "16 16 5 1", " c None", ". c #C3C3C3", "+ c #F30000", "@ c #717171", "# c #000000", "................", "................", "...........+....", "...++@....+++...", "....++@..+++++..", ".....+++++++##..", "......+++++#....", "......++++#.....", ".....++++++.....", ".....++#.+++....", "....++#...+++...", "....+#.....++@..", "...+#.......+#..", "...#.........#..", "................", "................"}; icewm-1.3.7/lib/icewm/maximize.xpm0000664000076600007660000000064311463274241016056 0ustar develdevel/* XPM */ static char * maximize_xpm[] = { "16 16 3 1", " c None", ". c #C0C0C0", "+ c #000000", "................", "................", "..++++++++++++..", "..++++++++++++..", "..+..........+..", "..+..........+..", "..+..........+..", "..+..........+..", "..+..........+..", "..+..........+..", "..+..........+..", "..+..........+..", "..+..........+..", "..++++++++++++..", "................", "................"}; icewm-1.3.7/lib/icewm/restore.xpm0000664000076600007660000000064211463274241015715 0ustar develdevel/* XPM */ static char * restore_xpm[] = { "16 16 3 1", " c None", ". c #C0C0C0", "+ c #000000", "................", "................", ".....+++++++++..", ".....+++++++++..", ".....+.......+..", ".....+.......+..", "..+++++++++..+..", "..+++++++++..+..", "..+.......+..+..", "..+.......++++..", "..+.......+.....", "..+.......+.....", "..+.......+.....", "..+++++++++.....", "................", "................"}; icewm-1.3.7/lib/icewm/menu.xpm0000664000076600007660000000067511463274241015204 0ustar develdevel/* XPM */ static char * menu_xpm[] = { "16 16 5 1", " c None", ". c #C0C0C0", "+ c #FFFFFF", "@ c #000000", "# c #808080", "................", "................", "................", "................", "................", "................", "..+++++++++++@..", "..+.........#@..", "..+##########@..", "..@@@@@@@@@@@@..", "................", "................", "................", "................", "................", "................"}; icewm-1.3.7/lib/keys.in0000664000076600007660000000273211463274241013705 0ustar develdevel# This is an example for IceWM's hotkey definition file. # # Place your variants in @CFGDIR@ or in $HOME/.icewm # since modifications to this file will be discarded when you # (re)install icewm. # # A list of all valid keyboard symbols can be found in # /usr/include/X11/keysym.h, keysymdefs.h, XF86keysym.h, ... # You'll have to omit XK_ prefixs and to replace XF86XK_ prefixes by # XF86. Valid modifiers are Alt, Ctrl, Shift, Meta, Super and Hyper. # key "Alt+Ctrl+t" xterm key "Alt+Ctrl+f" fte key "Alt+Ctrl+e" nedit key "Alt+Ctrl+g" gimp key "Alt+Ctrl+n" netscape -noraise -remote openBrowser key "Alt+Ctrl+b" netscape -noraise -remote openBookmarks key "Alt+Ctrl+m" netscape -noraise -remote openURL(mailto:,new-window) key "Alt+Ctrl+KP_Divide" aumix -v -5 # lower volume key "Alt+Ctrl+KP_Multiply" aumix -v +5 # raise volume # "Multimedia key" bindings for XFree86. Gather the keycodes of your # advanced function keys by watching the output of the xev command whilest # pressing those keys and map those symbols by using xmodmap. key "XF86Standby" killall -QUIT icewm key "XF86AudioLowerVolume" aumix -v -5 key "XF86AudioRaiseVolume" aumix -v +5 key "XF86AudioMute" aumix -v 0 key "XF86AudioPlay" cdplay play 1 key "XF86AudioStop" cdplay stop key "XF86HomePage" netscape -noraise -remote openHomepage key "XF86Mail" netscape -noraise -remote openURL(mailto:,new-window) key "XF86Search" netscape -noraise -remote openURL(http://www.google.com/) key "XF86Eject" eject icewm-1.3.7/lib/taskbar/0000775000076600007660000000000011463274241014025 5ustar develdevelicewm-1.3.7/lib/taskbar/windows.xpm0000664000076600007660000000106311463274241016245 0ustar develdevel/* XPM */ static char * windows_xpm[] = { "20 20 2 1", " c None", ". c #000000", " ", " ", " .......... ", " .......... ", " . . ", " . . ", " . .......... ", " . .......... ", " . . . ", " . . . ", " ..... .......... ", " . .......... ", " . . . ", " . . . ", " ..... . ", " . . ", " . . ", " . . ", " .......... ", " "}; icewm-1.3.7/lib/taskbar/expand.xpm0000664000076600007660000000062211463274241016032 0ustar develdevel/* XPM */ static char * expand_xpm[] = { "16 16 2 1", " c None", ". c #000000", " ", " ", " . ", " .. ", " ... ", " .... ", " ..... ", " ...... ", " ...... ", " ..... ", " .... ", " ... ", " .. ", " . ", " ", " "}; icewm-1.3.7/lib/taskbar/collapse.xpm0000664000076600007660000000062411463274241016357 0ustar develdevel/* XPM */ static char * collapse_xpm[] = { "16 16 2 1", " c None", ". c #000000", " ", " ", " . ", " .. ", " ... ", " .... ", " ..... ", " ...... ", " ...... ", " ..... ", " .... ", " ... ", " .. ", " . ", " ", " "}; icewm-1.3.7/lib/taskbar/desktop.xpm0000664000076600007660000000106311463274241016224 0ustar develdevel/* XPM */ static char * windows_xpm[] = { "20 20 2 1", " c None", ". c #000000", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " .......... ", " .......... ", " ", " "}; icewm-1.3.7/lib/taskbar/start.xpm0000664000076600007660000000240711463274241015713 0ustar develdevel/* XPM */ static char * icewm_xpm[] = { "48 20 13 1", " c None", ". c #4A4E51", "+ c #343434", "@ c #0D0D0D", "# c #C4C4C4", "$ c #E8E8E8", "% c #808182", "& c #CCCCCC", "* c #AEB3B5", "= c #9B9FA1", "- c #C2EAFE", "; c #606365", "> c #AACEE2", " ", " ", " ", " ", " ..+ @..+ @.. ...+ @... ", " +#$$@%$$&@*$$@$$$=@.$$$. ", " .. +=$$+&$$$+*$$@$$$$@=$$$. ", " .--@ ++&$%$$$$%$$=@$$#$@#$$$. @@", " .--@ @..+@+@@..@@=$$$*$$$$%@$$*$.$=$$; @.$", " .--@@>---*@.----.+$$=;$$$$.@$$.++@@$$. @$#", " .--@%-%@%;@>-;;->@$$%@$$$$@@$$@*=;+$$. +*$*", " .--@=-. @@@--====+$$@@&$$*@@$@===%.@+@ @=$$#", " .--@;-=.>>@*-;.=%.$$@+%$$=+@@;&;==%.%.@@&&$$", " .--@@%-->;+@>--*@+.+@ +;.@@+;%*=%=%;;%.%#=&$", " @@ @@@@@ +@@@@ @@%&*;=%%*%%;.;#=*=$", " @++;#$===%;=#%;;+==#**$", " .++@@@@@+@@++;;%*$#%=;%;#=%%;%&=%*&#", " @.;%%%%%%==%=%=&&#&%=*;;*%==;.$**;=$#", " @@+.;;%%%=%=**=%=*&$*$%%%%;=*%*%%%&%%.#&&", " @;;;;;;%%%%%=%%=&$&##&=%%;;*&%&*==&%;..&#*"}; icewm-1.3.7/lib/icons/0000775000076600007660000000000011463274241013511 5ustar develdevelicewm-1.3.7/lib/icons/fte_16x16.xpm0000664000076600007660000000062511463274241015665 0ustar develdevel/* XPM */ static char * fte_16x16_xpm[] = { "16 16 2 1", " c None", ". c #FF0000", " ", " ..... ", " . ", " .... ", " . ", " . ..... ", " . ", " . ", " . ", " . ..... ", " . ", " .... ", " . ", " ..... ", " ", " "}; icewm-1.3.7/lib/icons/file_32x32.xpm0000664000076600007660000000236411463274241016024 0ustar develdevel/* XPM */ static char * file_32x32_xpm[] = { "32 32 4 1", " c None", ". c #000000", "+ c #FFFFFF", "@ c #C0C0C0", " ", " ", " ", " ", " ................ ", " .++++++++++++++.. ", " .++++++++++++++.@. ", " .++++++++++++++.@@. ", " .++++++++++++++.@@@. ", " .++++++++++++++.@@@@. ", " .++++++++++++++.@@@@@. ", " .++++++++++++++.@@@@@@. ", " .++++++++++++++......... ", " .++++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " ........................ ", " ", " "}; icewm-1.3.7/lib/icons/app_16x16.xpm0000664000076600007660000000062511463274241015667 0ustar develdevel/* XPM */ static char * app_16x16_xpm[] = { "16 16 2 1", " c None", ". c #FF0000", " ", " ", " ", " .... . ", " .... . ", " .... . ", " .... . ", " ... . ", " . .. ", " . .... ", " . .... ", " . .... ", " . .... ", " . .... ", " ", " "}; icewm-1.3.7/lib/icons/java_32x32.xpm0000664000076600007660000000236411463274241016026 0ustar develdevel/* XPM */ static char * java_32x32_xpm[] = { "32 32 4 1", " c None", ". c #AC9FA4", "+ c #9F0740", "@ c #64414E", " ", " ", " ", " ", " ", " ...+.. ", " +++++++++.. ", " .++++++++++. . ", " .++++++++++... ", " ++++++++@@.. . ", " .++++++@@.@.. ", " .++++++@@@.... ", " .++++++@@@@. ", " .++++++@@@@.. ", " .++++++@@@... ", " .+++++@@@@.. ", " . .++++++@@@@. ", " ++++. .+++++@@@@... ", " +++++....++++@@@@@.. ", " ++++++...+++@+@@@@.. ", " ++++++..++++@+@@@@.. ", " ++++++@+++@+@@@@@@. . ", " +++++++++@+@@@@@@.. ", " .++++++@+@@@@@@@.. ", " .@+++@+@+@@@@@@.. . ", " ...@@@@@@@@@@@... ", " . .@@@@@@@@@@... ", " .....@.@@.... ", " . ........... ", " .... . ", " . ", " "}; icewm-1.3.7/lib/icons/vim_32x32.xpm0000664000076600007660000000245711463274241015703 0ustar develdevel/* XPM */ static char * vim_32x32_xpm[] = { "32 32 8 1", " c None", ". c #000000", "+ c #00FF00", "@ c #008000", "# c #FFFFFF", "$ c #C0C0C0", "% c #808080", "& c #000080", " .. ", " .++. ", " ...........+@@+. ......... ", " .###########.@@@+.#########. ", " .#$$$$$$$$$$$.@@@.#$$$$$$$$$. ", " .$$$$$$$$$$%.@@@@.$$$$$$$$%. ", " .%$$$$$$%%.@@@@@@.%$$$$$%%. ", " .#$$$$$$%.@@@@@@.#$$$$$%%. ", " .#$$$$$$%.@@@@@.##$$$$%%. ", " .#$$$$$$%.@@@@.##$$$$%%. ", " .#$$$$$$%.@@@.##$$$$%%. ", " .#$$$$$$%.@@.##$$$$%%.&. ", " ..#$$$$$$%.@.##$$$$%%.@@&. ", " .+.#$$$$$$%..##$$$$%%.@@@@&. ", " .+@.#$$$$$$%.##$$$$%%.@@@@@@&. ", ".+@@.#$$$$$$%##$$$$%%.@@@@@@@@&.", ".+@@.#$$$$$$%#$$$$%%.@@@@@@@@@&.", " .+@.#$$$$$$%$$$$%%.@@@@@@@@@&. ", " .+.#$$$$$$$$$$...@@@@@@@@@&. ", " ..#$$$$$$$$$.$$.@@@@@@@@&. ", " .#$$$$$$$$$.$$.@@@@@@@&. ", " .#$$$$$$$$%...@...@...... ", " .#$$$$$$$%.$$$.$$$.$$$.$$. ", " .#$$$$$$%%..$$..$$$$$$$$$$. ", " .#$$$$$%%..$$...$$&&$$..$. ", " .#$$$$%%.@.$$..$$&.$$..$$. ", " .#$$$%%.@@.$$..$$..$$..$$. ", " .#$$%%..@.$$..$$..$$..$$. ", " .$%%. ..$$$.$$..$$..$$$. ", " ... ....&.. .. ... ", " .&&. ", " .. "}; icewm-1.3.7/lib/icons/java_16x16.xpm0000664000076600007660000000066411463274241016033 0ustar develdevel/* XPM */ static char * java_16x16_xpm[] = { "16 16 4 1", " c None", ". c #A19C9E", "+ c #966F7E", "@ c #A7194F", " ", " ", " ", " .++. ", " +@@@@@ ", " @@@@. . ", " +@@@ .. .", " @@@@.... ", " +@@@+... ", " @@. +@@@++...", " @@@ @@@@++.. ", " @@@@@@@+++.. ", " @@@@@@+++.. ", " ..+++++... ", " ...+.+.. ", " ....... . "}; icewm-1.3.7/lib/icons/emacs_16x16.xpm0000664000076600007660000000430511463274241016176 0ustar develdevel/* XPM */ static char * emacs_xpm[] = { "16 16 101 2", " c None", ". c #7E582C", "+ c #513A19", "@ c #3F2C15", "# c #8C6033", "$ c #6D4B27", "% c #523D16", "& c #463217", "* c #C3834C", "= c #E29859", "- c #895C36", "; c #F4A460", "> c #A46E40", ", c #50381B", "' c #5E4121", ") c #493516", "! c #8F6136", "~ c #D99255", "{ c #926239", "] c #AF9A88", "^ c #876140", "/ c #8D694A", "( c #362619", "_ c #443C34", ": c #95643A", "< c #6B4A26", "[ c #9D6A3D", "} c #C9874F", "| c #56504B", "1 c #858585", "2 c #E0E0E0", "3 c #D4D4D4", "4 c #828282", "5 c #9F9F9F", "6 c #ACACAC", "7 c #ABABAB", "8 c #6C6B66", "9 c #B87C48", "0 c #AB7343", "a c #79512F", "b c #877F78", "c c #5B5B5B", "d c #474747", "e c #9B9B9B", "f c #B9B9B9", "g c #767676", "h c #6F5C4B", "i c #CFCECE", "j c #6B6B6B", "k c #727272", "l c #5048DD", "m c #5454D7", "n c #3C3C3C", "o c #BEBEBE", "p c #A0A0A0", "q c #90908C", "r c #1F1F1F", "s c #838383", "t c #898989", "u c #CACACA", "v c #545454", "w c #D1D1D1", "x c #B4B4B4", "y c #6C6C6C", "z c #848484", "A c #656565", "B c #C0C0C0", "C c #EEEEEE", "D c #666662", "E c #C8C8C8", "F c #4B4B4B", "G c #9E9E9E", "H c #979797", "I c #B4B1AF", "J c #989390", "K c #4D3F35", "L c #7D7D7D", "M c #696969", "N c #717171", "O c #565656", "P c #553D2B", "Q c #66330E", "R c #311806", "S c #452209", "T c #636362", "U c #A8A8A8", "V c #525252", "W c #6E6E6E", "X c #373737", "Y c #010000", "Z c #401F08", "` c #5A2D0C", " . c #180C03", ".. c #989898", "+. c #BCBCBC", "@. c #999999", "#. c #585858", "$. c #2D2D2D", "%. c #51280B", "&. c #BFBFBF", "*. c #212020", " ", " . ", " + @ # ", " $ % & * = - ; > , ' ", " ) ! ~ { ] ^ / ( _ : ", " < [ > } | 1 2 3 4 5 6 7 8 ", " 9 0 a b c d e 5 f g ", " h i j k l m n o p ", " q r s t u v w o x ", " y z A B u C B o D ", " E F G H t I J 7 K ", " B L M N O P Q R S ", " T U V W X Y Z ` . ", " ..+.@.#.$.R %. ", " #.&.*. ", " "}; icewm-1.3.7/lib/icons/folder_32x32.xpm0000664000076600007660000000413511463274241016356 0ustar develdevel/* XPM */ static char * folder_32x32_xpm[] = { "32 32 62 1", " c None", ". c #020202", "+ c #FECE02", "@ c #FEDA4A", "# c #FEEEAA", "$ c #828282", "% c #FED632", "& c #FEE67E", "* c #FED226", "= c #FEDE5E", "- c #FEF6D2", "; c #FEEA96", "> c #FED21E", ", c #FEF2C6", "' c #FEE26A", ") c #FED216", "! c #FEEEB2", "~ c #FEEA8E", "{ c #FED636", "] c #FEE276", "^ c #FEDA4E", "/ c #FEEA9A", "( c #FEDA42", "_ c #FECE12", ": c #FEF2BE", "< c #FEFAE2", "[ c #FEEEA2", "} c #FEE686", "| c #FEDE52", "1 c #FEE266", "2 c #FEDA3E", "3 c #FEF2B6", "4 c #FECE0E", "5 c #FEE67A", "6 c #FED62A", "7 c #FEF6CA", "8 c #FEE26E", "9 c #FEDE5A", "0 c #FEF6DA", "a c #FECE0A", "b c #FEFADE", "c c #FEDE62", "d c #FEEA92", "e c #FEEA9E", "f c #FEDA46", "g c #FEE68A", "h c #FEE682", "i c #FEEEA6", "j c #FEDE56", "k c #FEEEAE", "l c #FEE272", "m c #FED63A", "n c #FEF2BA", "o c #FED62E", "p c #FEF2C2", "q c #FED222", "r c #FEFAEA", "s c #FEF6CE", "t c #FEF6D6", "u c #FED21A", "v c #FECE06", "w c #FEFAE6", " ", " ", " ", " ", " ................ ", " .++++++++++++++++. ", " $.++++++++++++++++++. ", " .++++++++++++++++++++. ", " .++++++++++++++++++++++. ", " .............................. ", " .+v4_u>*6%{2(@^j=c'8]5h}~d/ei. ", " .va_)>q6o{m(f^j9c18l5&}gd;e[#. ", " .a4)uq*o%m2f@|9=1'l]&hg~;/[#k. ", " .4_u>*6%{2(@^j=c'8]5h}~d/eik!. ", " ._)>q6o{m(f^|9c18l5&}gd;e[#!3. ", " .)uq*o%m2f@|j=1'l]&hg~;/[ik3n. ", " .u>*6%{2(@^j9c'8]5h}~d/ei#!n:. ", " .>q6o{m(f^|9=18l5&}gd;e[#k3:p. ", " .q*o%m2f@|j=c'l]&hg~;/[ik!np,. ", " .*6%{2(@^j9c18]5h}~d/ei#!3:,7. ", " .6o{m(f^|9=1'l5&}gd;e[#k3np7s. ", " .o%m2f@|j=c'l]&hg~;/[ik!n:,s-. ", " .%{2(@^j9c18]5h}~d/ei#!3:,7-t. ", " .{m(f^|9=1'l5&}gd;e[#k3np7st0. ", " .m2f@|j=c'8]&hg~;/[ik!n:,s-0b. ", " .2(@^j9c18l5h}~d/ei#!3:p7-tb<. ", " .(f^|9=1'l]&}gd;e[#k3np,st0 c #6E6A66", ", c #E7E5DF", "' c #A6B6DA", ") c #6C8AC4", "! c #BABEC6", "~ c #363636", "{ c #787873", "] c #B4C4E1", "^ c #6282C2", "/ c #D6D2CE", "( c #9A9A9A", "_ c #424242", ": c #B4C4DA", "< c #D2DAE8", "[ c #817E7A", "} c #728EC6", "| c #B7BFCE", "1 c #565656", "2 c #CDD6E3", "3 c #94ABD4", "4 c #BDCBE5", "5 c #4D4B4B", "6 c #C8CCD4", "7 c #5A5A5A", "8 c #959492", "9 c #3E3E3E", "0 c #7894C8", "a c #BAC0CA", "b c #A6BADA", "c c #323232", "d c #ABAAA7", "e c #C3CDE2", "f c #92A6D2", "g c #828282", "h c #8099CB", "i c #FCF8EC", "j c #A0B4D9", "k c #C2C6CE", "l c #BEBAB6", "m c #DEDCD4", "n c #C2BEBA", "o c #60605F", "p c #717170", "q c #BCC6E0", "r c #CAD2DE", "s c #8EA6D2", "t c #9A9A96", "u c #7E7A76", "v c #666262", "w c #EEEAE2", "x c #ADBDDD", "y c #C2C2C2", "z c #CAD2EA", " nnnnnnnnnnn[ ", " gix::q4er2<,u ", " gi^)0h$3-'x2p ", " g=)0h$f-'x]r> ", " g=}0$s-jb]46v ", " gw0h$3jb]4e6o ", " g,h$3j'xqe2k1 ", " g,$f-'x]ez c #FEE682", ", c #FED62A", "' c #FEF2BE", ") c #FEEA92", "! c #FEDA3E", "~ c #FEDE5A", "{ c #FEEEB2", "] c #625622", "^ c #FEFADE", "/ c #FED636", "( c #FEEEAA", "_ c #FEE68A", ": c #FEEA9A", "< c #FEDE52", "[ c #FEE67A", "} c #FEE26A", "| c #FEEA8E", "1 c #FEF2B6", "2 c #FEF2C6", "3 c #FEF6D6", "4 c #FEDA46", "5 c #FEDE62", "6 c #FEE272", "7 c #FED216", "8 c #FED226", "9 c #FED632", "0 c #FEF6CA", "a c #FEFAE6", "b c #FEDA4E", "c c #FEEEA6", "d c #FEE686", "e c #FEEA96", "f c #FEDA42", "g c #FEDE5E", "h c #FEEEAE", "i c #FEEA9E", "j c #FEE26E", "k c #FED63A", "l c #FEDE56", "m c #FEE67E", "n c #FEF2BA", "o c #FECE06", "p c #FED62E", "q c #FEF2C2", "r c #FEF6D2", "s c #FED222", "t c #FECE12", "u c #FEF6DA", "v c #FED21A", " ", " ", " +@@@@@@@+ ", " ]#########+ ", ".@@@@@@@@@@@... ", ".ot;,/fbg}=>|:c.", ".*v89!$~&6m_e%h.", ".7spk4<5j[d)i(1.", ".;,/fb~}=>|:c{'.", ".89!$l56m_e%hn2.", ".pk4|:c{'03.", ".!$l5jm_e%hn2r^.", ".4 c #C4C1BC", ", c #757575", "' c #999896", ") c #A6A2A2", "! c #B8C7E2", "~ c #DDD9D1", "{ c #A0B4D9", "] c #829ECE", "^ c #7A7A7A", "/ c #BDBBB6", "( c #92AAD2", "_ c #8F8F8F", ": c #C2CEE6", "< c #F6F2E7", "[ c #BEBEBA", "} c #DEDED6", "| c #D6D6CE", "1 c #A6BADA", "2 c #7E7E7E", "3 c #C9D4E9", "4 c #363636", "5 c #5E5E5E", "6 c #CBC9C2", "7 c #222222", "8 c #F9F6EB", "9 c #E4E0D8", "0 c #D2DCED", "a c #8FA6D2", "b c #ECE8DF", "c c #424242", "d c #8A8A87", "e c #A8A6A3", "f c #626262", "g c #B3C2E0", "h c #6584C1", "i c #809ACB", "j c #6A6A6A", "k c #FEFAF1", "l c #828282", "m c #BECEE6", "n c #4C4C4C", "o c #ADACA8", "p c #ACBDDE", "q c #98ADD6", "r c #869ECE", "s c #161616", "t c #7390C6", "u c #D1CEC8", "v c #A6B6DA", "w c #BECAE5", "x c #6B8AC2", "y c #8BA2CF", "z c #DBE3F1", " lllllllllllllllllllllll ", " lkkkkkkkkkkkkkkkkkkkkkkk. ", " lkkkkkkkkkkkkkkkk8888888. ", " l88-hhx;tt=irya(q{v11p##. ", " l88-hh;tt=irya(qq{v1pgbb. ", " l<. ", " lbbt=i]rya(q{v1pg!wm:3>[. ", " lbb==irya(q{v1pgg!w:33/*. ", " lbb=irya(q{v11pg!w:330*o. ", " lb9irya(qq{v1pg!w:3300oo. ", " l99]yya(q{v1pg!wm33300e@. ", " l9}rya(q{v1pg!ww:3300z@'. ", " l}}ya(q{v1ppg!w:3300zz''. ", " l}~||$uu66>>[/**oe)@''__. ", " l~|||666>[//**oo)@''__dd. ", " l~|$|66>[/**ooe@@'''ddll. ", " ....................... ", " llllllllllllll. ", " lj,,,^2l,jf&nc. ", " l5&ncc4%77s+... ", " lll.................. ", " lkkkkkkkkkkkkkkkkkkkkk. ", " l##.<.<.8.k.k.<.b.}~.$.6. ", " lb#.#.<.8.8.k.8.#.9.~|.6.>. ", " l~|.u.66>./***ooe@@.''._.dll. ", "llllllllllllllllllllllllllllll. ", "l,,^^^^^^222222l2^^,,,,jjjffff. ", " ............................. "}; icewm-1.3.7/lib/icons/emacs_32x32.xpm0000664000076600007660000001463311463274241016177 0ustar develdevel/* XPM */ static char * emacs_32x32_xpm[] = { "32 32 270 2", " c None", ". c #191502", "+ c #65491E", "@ c #97663B", "# c #533C19", "$ c #513D15", "% c #BE8148", "& c #4C351A", "* c #5C411F", "= c #221F00", "- c #C18448", "; c #BB7E49", "> c #99673B", ", c #392D0A", "' c #3B2915", ") c #2D1F10", "! c #7F5532", "~ c #5A3C23", "{ c #20160B", "] c #312708", "^ c #845834", "/ c #B17745", "( c #A8743D", "_ c #4D351B", ": c #926239", "< c #EC9E5C", "[ c #B57A47", "} c #000000", "| c #AF7645", "1 c #F4A460", "2 c #C1814C", "3 c #140E06", "4 c #754E2E", "5 c #C3834C", "6 c #33250F", "7 c #CF8C50", "8 c #5B431A", "9 c #9D6A3E", "0 c #B27746", "a c #C5844D", "b c #C5854D", "c c #20150C", "d c #916139", "e c #2E220C", "f c #CE8A51", "g c #573C1F", "h c #895C36", "i c #F2A25F", "j c #573D28", "k c #BC8150", "l c #EA9D5C", "m c #D18C52", "n c #4E341E", "o c #734D2D", "p c #5D3E24", "q c #EFA05E", "r c #25190E", "s c #251B0B", "t c #9C683D", "u c #EAEAEA", "v c #BDBDBD", "w c #494949", "x c #666666", "y c #141414", "z c #181818", "A c #454545", "B c #3A2717", "C c #4C331D", "D c #241A0B", "E c #E89C5B", "F c #EC9F5D", "G c #E59A5A", "H c #4D3622", "I c #686868", "J c #4D4D4D", "K c #343434", "L c #C1C1C1", "M c #EDEDED", "N c #FFFFFF", "O c #CECECE", "P c #6C6C6C", "Q c #828282", "R c #ABABAB", "S c #D6D6D6", "T c #AEAEAE", "U c #1E1E1E", "V c #20201E", "W c #684629", "X c #99673C", "Y c #A46E40", "Z c #7A5230", "` c #D58F54", " . c #7E5531", ".. c #3A3A3A", "+. c #959595", "@. c #F3F3F3", "#. c #DFDFDF", "$. c #A5A5A5", "%. c #B0B0B0", "&. c #6A6A6A", "*. c #6B6B6B", "=. c #8F8F8F", "-. c #848484", ";. c #E1E1E1", ">. c #707070", ",. c #392716", "'. c #DC9456", "). c #6F4A2B", "!. c #563921", "~. c #432D1A", "{. c #C9874F", "]. c #523924", "^. c #958E89", "/. c #464646", "(. c #717171", "_. c #323232", ":. c #8E8E8E", "<. c #C9C9C9", "[. c #BEBEBE", "}. c #AAAAAA", "|. c #818181", "1. c #232323", "2. c #38361F", "3. c #2F2F28", "4. c #372515", "5. c #E39859", "6. c #97653B", "7. c #402B19", "8. c #797979", "9. c #BABABA", "0. c #444444", "a. c #272727", "b. c #7B7B7B", "c. c #999999", "d. c #535353", "e. c #C0C0C0", "f. c #CFCFCF", "g. c #646464", "h. c #120C06", "i. c #714C2C", "j. c #946B48", "k. c #545250", "l. c #DDDDDD", "m. c #0A0A0A", "n. c #9A9A9A", "o. c #080808", "p. c #6E6EDD", "q. c #3324D5", "r. c #0707F1", "s. c #A8A8EA", "t. c #5B5B5B", "u. c #777777", "v. c #4E4E4E", "w. c #474747", "x. c #6868EA", "y. c #3825DA", "z. c #0000C4", "A. c #A3A3BC", "B. c #4A4A4A", "C. c #41403D", "D. c #A6A6A6", "E. c #3B3B3B", "F. c #B7B7B7", "G. c #969696", "H. c #787878", "I. c #D5D5D5", "J. c #C2C2C2", "K. c #979797", "L. c #161615", "M. c #3E3D38", "N. c #8A8A88", "O. c #A2A2A2", "P. c #FDFDFD", "Q. c #353535", "R. c #3C3C3C", "S. c #808080", "T. c #838383", "U. c #313131", "V. c #D7D7D7", "W. c #EEEEEE", "X. c #727272", "Y. c #303030", "Z. c #2C2C2C", "`. c #6F6F6F", " + c #9C9C9C", ".+ c #C4C4C4", "++ c #E4E4E4", "@+ c #F6F6F6", "#+ c #C8C8C8", "$+ c #BFBFBF", "%+ c #BCBCBC", "&+ c #5D5D5B", "*+ c #D4D4D4", "=+ c #0F0F0F", "-+ c #D9D9D9", ";+ c #DBDBDB", ">+ c #858585", ",+ c #363636", "'+ c #F2F2F2", ")+ c #545454", "!+ c #484848", "~+ c #929292", "{+ c #393939", "]+ c #392B22", "^+ c #3F2F23", "/+ c #474544", "(+ c #A1A1A1", "_+ c #868686", ":+ c #24160D", "<+ c #562B0B", "[+ c #0E0A01", "}+ c #E7E7E7", "|+ c #A3A3A3", "1+ c #6F370F", "2+ c #8B4513", "3+ c #5A2C0C", "4+ c #211004", "5+ c #5B2D0C", "6+ c #371B07", "7+ c #D8D8D8", "8+ c #585858", "9+ c #B8B8B8", "0+ c #373737", "a+ c #050505", "b+ c #52290B", "c+ c #5C2E0C", "d+ c #592C0C", "e+ c #753A10", "f+ c #301706", "g+ c #834111", "h+ c #2E2E2E", "i+ c #C6C6C6", "j+ c #5A5A5A", "k+ c #C7C7C7", "l+ c #070300", "m+ c #5A2D0C", "n+ c #4A240A", "o+ c #552A0B", "p+ c #6E360F", "q+ c #482409", "r+ c #909090", "s+ c #C5C5C5", "t+ c #B5B5B5", "u+ c #515151", "v+ c #555555", "w+ c #616161", "x+ c #414141", "y+ c #1C0E03", "z+ c #3E1E08", "A+ c #53290B", "B+ c #1A0D03", "C+ c #424242", "D+ c #CDCDCD", "E+ c #E5E5E5", "F+ c #595959", "G+ c #8B8B8B", "H+ c #110802", "I+ c #763A10", "J+ c #69340E", "K+ c #64310D", "L+ c #4B4B4B", "M+ c #D2D2D2", "N+ c #ADADAD", "O+ c #3F1F08", "P+ c #482309", "Q+ c #311806", "R+ c #1A1A1A", "S+ c #0C0B00", "T+ c #17160D", "U+ c #18170F", " ", " . ", " + @ # ", " $ % & ", " * = - ; ", " > , ' ) ! ~ { ] ^ / ", " > ( _ : : < [ } | 1 1 2 3 4 5 ", " 6 7 8 9 1 1 1 1 0 a 1 1 1 b c 9 d ", " e f g h 1 i : j k l l l m n o p h q r ", " 5 1 s t 1 1 5 } u v } w x y } z x A B : C ", " 5 1 D h E F G H I J K L M N O P Q R S L L T U V ", " 5 1 W X Y Z ` .I ..+.N @.#.#.$.%.&.*.=.R -.;.N N >. ", " ,.'.l ).!.~.{.].^./.(._.w :.<.[.}.T v |.1. 2.3.3. ", " 4.5.1 1 6.7.8.9.0.>.a.b.c.b.d.e.[.[.f.g. ", " h.i.j.k.u l.m.n.o.p.q.r.s.t.J [.[.[.-. ", " } 9.N N u.v.l.w.x.y.z.A.} B.[.[.[.|. ", " C.N D.K } U N E.F.N G.t.H.I.J.[.[.[.K.L. ", " M.N. w B.D.=.O.P.G.w.Q.u L [.[.[.[.R. ", " w.x G.S.T.U.O.N >.V.W.S [.[.[.[.X. ", " Y.I.Z.+.x `.>. +.+++N N @+#+$+[.[.%+&+ ", " R.*+c.=+0.S >.+.N S.-+N N N ;+[.#+>+,+ ", " R.e.'+)+-.:.D.!+S.~+{+ +]+^+/+(+_+:+<+[+ ", " R.$+}+t.O Z.x &.|+t.t.:.1+2+3+4+} 5+6+ ", " T.7+X.8+9+t.~+1.P 0+a+b+c+d+e+f+g+} ", " h+i+O j+)+J A k+} +} l+m+n+o+p+q+ ", " r+s+t+u+v+J w+x+} } y+z+A+A+B+ ", " C+9.D+E+x #+F+a.G+P H+I+J+K+y+ ", " L+:..+#.(.M+} N+B. O+P+Q+ ", " -.N+t+*+I R+S+ ", " h+t+[.} ", " T+U+ ", " "}; icewm-1.3.7/lib/icons/vim_48x48.xpm0000664000076600007660000000515711463274241015721 0ustar develdevel/* XPM */ static char * vim_48x48_xpm[] = { "48 48 8 1", " c None", ". c #000000", "+ c #00FF00", "@ c #008000", "# c #FFFFFF", "$ c #C0C0C0", "% c #808080", "& c #000080", " ... ", " .+++. ", " .+@@@+. ", " ................+@@@@@+. .............. ", " .################.@@@@@@+.##############. ", " .#################.@@@@@@.###############. ", " .#$$$$$$$$$$$$$$$%%.@@@@@.##$$$$$$$$$$$$%%. ", " .$$$$$$$$$$$$$$$%%.@@@@@@..$$$$$$$$$$$$%%. ", " .$$$$$$$$$$$$$$$%%.@@@@@@@@.%$$$$$$$$$$%%. ", " ..%$$$$$$$$$%%%..@@@@@@@@@.%$$$$$$$$$%%%. ", " .#$$$$$$$$$%%.@@@@@@@@@@.#$$$$$$$$$%%%. ", " .#$$$$$$$$$%%.@@@@@@@@@.##$$$$$$$$%%%. ", " .#$$$$$$$$$%%.@@@@@@@@.##$$$$$$$$%%%. ", " .#$$$$$$$$$%%.@@@@@@@.##$$$$$$$$%%%. ", " .#$$$$$$$$$%%.@@@@@@.##$$$$$$$$%%%. ", " .#$$$$$$$$$%%.@@@@@.##$$$$$$$$%%%. ", " .#$$$$$$$$$%%.@@@@.##$$$$$$$$%%%.. ", " ..#$$$$$$$$$%%.@@@.##$$$$$$$$%%%.&&. ", " .+.#$$$$$$$$$%%.@@.##$$$$$$$$%%%.@@@&. ", " .+@.#$$$$$$$$$%%.@.##$$$$$$$$%%%.@@@@@&. ", " .+@@.#$$$$$$$$$%%..##$$$$$$$$%%%.@@@@@@@&. ", " .+@@@.#$$$$$$$$$%%.##$$$$$$$$%%%.@@@@@@@@@&. ", " .+@@@@.#$$$$$$$$$%%##$$$$$$$$%%%.@@@@@@@@@@@&. ", ".+@@@@@.#$$$$$$$$$%%#$$$$$$$$%%%.@@@@@@@@@@@@@&.", " .+@@@@.#$$$$$$$$$%%$$$$$$$$%%%.@@@@@@@@@@@@@@&.", " .+@@@.#$$$$$$$$$$$$$$$$$$%%%.@@@@@@@@@@@@@@.. ", " .+@@.#$$$$$$$$$$$$$$$$$%%%.@@@@@@@@@@@@@@&. ", " .+@.#$$$$$$$$$$$$$$$.....@@@@@@@@@@@@@@&. ", " .+.#$$$$$$$$$$$$$$.$$$.@@@@@@@@@@@@@@&. ", " ..#$$$$$$$$$$$$$$.$$$.@@@@@@@@@@@@@&. ", " .#$$$$$$$$$$$$$$.$$$.@@@@@@@@@@@@&. ", " .#$$$$$$$$$$$$$%....@@@@@@@@@@@@&. ", " .#$$$$$$$$$$$$%%....@@....@@....&.... ", " .#$$$$$$$$$$$%%%$$$$..$$$$..$$$$..$$$. ", " .#$$$$$$$$$$%%%..$$$.@.$$$$$$$$$$$$$$$. ", " .#$$$$$$$$$%%%.@.$$$.@.$$$$$$$$$$$$$$$. ", " .#$$$$$$$$%%%.@.$$$.@@.$$$...$$$...$$. ", " .#$$$$$$$%%%.@@.$$$.@.$$$$..$$$$..$$$. ", " .#$$$$$$%%%.@@.$$$.@@.$$$.&.$$$..$$$. ", " .#$$$$$%%%.@@@.$$$.@.$$$.&.$$$. .$$$. ", " .#$$$$%%%..@@.$$$.@@.$$$. .$$$..$$$. ", " .#$$$%%%. .@@.$$$.@.$$$.&.$$$. .$$$. ", " .$$%%%. ...$$$$..$$$$..$$$$..$$$$. ", " ..... ......@&.... .... ..... ", " .@@@@&&. ", " .&&&&. ", " .&&. ", " .. "}; icewm-1.3.7/lib/icons/fte_32x32.xpm0000664000076600007660000000234411463274241015661 0ustar develdevel/* XPM */ static char * fte_32x32_xpm[] = { "32 32 3 1", " c None", ". c #FF0000", "+ c #800000", " ", " ", " .......... ", " ..........+ ", " ..+++++++++ ", " ..+ ", " ........ ", " ........+ ", " ..+++++++ ", " ..+ ", " ..+ ", " ..+ ", " ++ .......... ", " ..........+ ", " +++..+++++ ", " ..+ ", " ..+ ", " ..+ ", " ..+ ", " ..+ ", " ..+ .......... ", " ..+ ..........+ ", " ++ ..+++++++++ ", " ..+ ", " ........ ", " ........+ ", " ..+++++++ ", " ..+ ", " .......... ", " ..........+ ", " ++++++++++ ", " "}; icewm-1.3.7/lib/icons/vim_16x16.xpm0000664000076600007660000000075711463274241015710 0ustar develdevel/* XPM */ static char * vim_16x16_xpm[] = { "16 16 8 1", " c None", ". c #000000", "+ c #00FF00", "@ c #FFFFFF", "# c #008000", "$ c #C0C0C0", "% c #808080", "& c #000080", " .....+. .... ", " .@@@@@.#.@@@@. ", " .$$$$$%..$$$$%.", " .$$$%.#.@$$%. ", " .$$$%..@$$%. ", " .$$$%.@$$%.. ", " +.$$$%@$$%.##. ", "+#.$$$@$$%.####.", ".#.$$$$$..####& ", " ..$$$$.$...#. ", " .$$$$...$$.$. ", " .$$$.$$.$$$$$.", " .$$%..$.$.$.$.", " .$%.#.$.$.$.$.", " .. .$$.$.$.$.", " .. . . . "}; icewm-1.3.7/lib/ledclock/0000775000076600007660000000000011463274241014156 5ustar develdevelicewm-1.3.7/lib/ledclock/space.xpm0000664000076600007660000000041411463274241015776 0ustar develdevel/* XPM */ static char * space_xpm[] = { "6 20 1 1", ". c #000000", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......"}; icewm-1.3.7/lib/ledclock/n4.xpm0000664000076600007660000000067111463274241015231 0ustar develdevel/* XPM */ static char * n4_xpm[] = { "14 20 2 1", ". c #000000", "+ c #00F000", "..............", "..............", ".+..........+.", ".++........++.", ".++........++.", ".++........++.", ".++........++.", ".++........++.", ".+..........+.", "..++++++++++..", "..++++++++++..", "............+.", "...........++.", "...........++.", "...........++.", "...........++.", "...........++.", "............+.", "..............", ".............."}; icewm-1.3.7/lib/ledclock/m.xpm0000664000076600007660000000052311463274241015140 0ustar develdevel/* XPM */ static char * m_xpm[] = { "9 20 2 1", ". c #000000", "+ c #00F000", ".........", ".........", ".+.....+.", ".++...++.", ".+.+.+.+.", ".+..+..+.", ".+.....+.", ".+.....+.", ".+.....+.", ".........", ".........", ".........", ".........", ".........", ".........", ".........", ".........", ".........", ".........", "........."}; icewm-1.3.7/lib/ledclock/n6.xpm0000664000076600007660000000067111463274241015233 0ustar develdevel/* XPM */ static char * n6_xpm[] = { "14 20 2 1", ". c #000000", "+ c #00F000", "..............", "..++++++++++..", ".+.++++++++...", ".++...........", ".++...........", ".++...........", ".++...........", ".++...........", ".+............", "..++++++++++..", "..++++++++++..", ".+..........+.", ".++........++.", ".++........++.", ".++........++.", ".++........++.", ".++........++.", ".+.++++++++.+.", "..++++++++++..", ".............."}; icewm-1.3.7/lib/ledclock/n1.xpm0000664000076600007660000000067111463274241015226 0ustar develdevel/* XPM */ static char * n1_xpm[] = { "14 20 2 1", ". c #000000", "+ c #00F000", "..............", "..............", "............+.", "...........++.", "...........++.", "...........++.", "...........++.", "...........++.", "............+.", "..............", "..............", "............+.", "...........++.", "...........++.", "...........++.", "...........++.", "...........++.", "............+.", "..............", ".............."}; icewm-1.3.7/lib/ledclock/n5.xpm0000664000076600007660000000067111463274241015232 0ustar develdevel/* XPM */ static char * n5_xpm[] = { "14 20 2 1", ". c #000000", "+ c #00F000", "..............", "..++++++++++..", ".+.++++++++...", ".++...........", ".++...........", ".++...........", ".++...........", ".++...........", ".+............", "..++++++++++..", "..++++++++++..", "............+.", "...........++.", "...........++.", "...........++.", "...........++.", "...........++.", "...++++++++.+.", "..++++++++++..", ".............."}; icewm-1.3.7/lib/ledclock/n2.xpm0000664000076600007660000000067111463274241015227 0ustar develdevel/* XPM */ static char * n2_xpm[] = { "14 20 2 1", ". c #000000", "+ c #00F000", "..............", "..++++++++++..", "...++++++++.+.", "...........++.", "...........++.", "...........++.", "...........++.", "...........++.", "............+.", "..++++++++++..", "..++++++++++..", ".+............", ".++...........", ".++...........", ".++...........", ".++...........", ".++...........", ".+.++++++++...", "..++++++++++..", ".............."}; icewm-1.3.7/lib/ledclock/p.xpm0000664000076600007660000000052311463274241015143 0ustar develdevel/* XPM */ static char * p_xpm[] = { "9 20 2 1", ". c #000000", "+ c #00F000", ".........", ".........", ".++++++..", ".+.....+.", ".+.....+.", ".++++++..", ".+.......", ".+.......", ".+.......", ".........", ".........", ".........", ".........", ".........", ".........", ".........", ".........", ".........", ".........", "........."}; icewm-1.3.7/lib/ledclock/dot.xpm0000664000076600007660000000043111463274241015470 0ustar develdevel/* XPM */ static char * dot_xpm[] = { "6 20 2 1", ". c #000000", "+ c #00F000", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "......", "..++..", "..++..", "......"}; icewm-1.3.7/lib/ledclock/n3.xpm0000664000076600007660000000067111463274241015230 0ustar develdevel/* XPM */ static char * n3_xpm[] = { "14 20 2 1", ". c #000000", "+ c #00F000", "..............", "..++++++++++..", "...++++++++.+.", "...........++.", "...........++.", "...........++.", "...........++.", "...........++.", "............+.", "..++++++++++..", "..++++++++++..", "............+.", "...........++.", "...........++.", "...........++.", "...........++.", "...........++.", "...++++++++.+.", "..++++++++++..", ".............."}; icewm-1.3.7/lib/ledclock/n8.xpm0000664000076600007660000000067111463274241015235 0ustar develdevel/* XPM */ static char * n8_xpm[] = { "14 20 2 1", ". c #000000", "+ c #00F000", "..............", "..++++++++++..", ".+.++++++++.+.", ".++........++.", ".++........++.", ".++........++.", ".++........++.", ".++........++.", ".+..........+.", "..++++++++++..", "..++++++++++..", ".+..........+.", ".++........++.", ".++........++.", ".++........++.", ".++........++.", ".++........++.", ".+.++++++++.+.", "..++++++++++..", ".............."}; icewm-1.3.7/lib/ledclock/n0.xpm0000664000076600007660000000067111463274241015225 0ustar develdevel/* XPM */ static char * n0_xpm[] = { "14 20 2 1", ". c #000000", "+ c #00F000", "..............", "..++++++++++..", ".+.++++++++.+.", ".++........++.", ".++........++.", ".++........++.", ".++........++.", ".++........++.", ".+..........+.", "..............", "..............", ".+..........+.", ".++........++.", ".++........++.", ".++........++.", ".++........++.", ".++........++.", ".+.++++++++.+.", "..++++++++++..", ".............."}; icewm-1.3.7/lib/ledclock/n9.xpm0000664000076600007660000000067111463274241015236 0ustar develdevel/* XPM */ static char * n9_xpm[] = { "14 20 2 1", ". c #000000", "+ c #00F000", "..............", "..++++++++++..", ".+.++++++++.+.", ".++........++.", ".++........++.", ".++........++.", ".++........++.", ".++........++.", ".+..........+.", "..++++++++++..", "..++++++++++..", "............+.", "...........++.", "...........++.", "...........++.", "...........++.", "...........++.", "...++++++++.+.", "..++++++++++..", ".............."}; icewm-1.3.7/lib/ledclock/slash.xpm0000664000076600007660000000052711463274241016022 0ustar develdevel/* XPM */ static char * slash_xpm[] = { "9 20 2 1", ". c #000000", "+ c #00F000", ".........", "......++.", "......++.", "......++.", ".....++..", ".....++..", ".....++..", "....++...", "....++...", "...+++...", "...++....", "...++....", "..++.....", "..++.....", "..++.....", ".++......", ".++......", ".++......", ".........", "........."}; icewm-1.3.7/lib/ledclock/n7.xpm0000664000076600007660000000067111463274241015234 0ustar develdevel/* XPM */ static char * n7_xpm[] = { "14 20 2 1", ". c #000000", "+ c #00F000", "..............", "..++++++++++..", "...++++++++.+.", "...........++.", "...........++.", "...........++.", "...........++.", "...........++.", "............+.", "..............", "..............", "............+.", "...........++.", "...........++.", "...........++.", "...........++.", "...........++.", "............+.", "..............", ".............."}; icewm-1.3.7/lib/ledclock/a.xpm0000664000076600007660000000052311463274241015124 0ustar develdevel/* XPM */ static char * a_xpm[] = { "9 20 2 1", ". c #000000", "+ c #00F000", ".........", "....+....", "...+.+...", "..+...+..", ".+.....+.", ".+.....+.", ".+++++++.", ".+.....+.", ".+.....+.", ".........", ".........", ".........", ".........", ".........", ".........", ".........", ".........", ".........", ".........", "........."}; icewm-1.3.7/lib/ledclock/colon.xpm0000664000076600007660000000043311463274241016016 0ustar develdevel/* XPM */ static char * colon_xpm[] = { "6 20 2 1", ". c #000000", "+ c #00F000", "......", "......", "......", "......", "......", "......", "..++..", "..++..", "......", "......", "......", "......", "..++..", "..++..", "......", "......", "......", "......", "......", "......"}; icewm-1.3.7/lib/ledclock/percent.xpm0000664000076600007660000000100711463274241016342 0ustar develdevel/* XPM */ static char * icewm_percent_xpm[] = { "16 20 4 1", " c None", ". c #000000", "+ c #00F000", "@ c #001A00", "................", "..++++.....++...", ".++..++....++...", ".+....+...++....", ".+....+...++....", ".+....+..++.....", ".++..++..++.....", "..++++..++......", "........++......", ".......++.......", ".......++.......", "......++........", "......++..++++..", ".....++..++..++.", ".....++..+....+.", "....++...+....+.", "....++...+....+.", "...++....++..++.", "...++.....++++..", "................"}; icewm-1.3.7/lib/keys0000664000076600007660000000273411463274255013307 0ustar develdevel# This is an example for IceWM's hotkey definition file. # # Place your variants in /etc/icewm or in $HOME/.icewm # since modifications to this file will be discarded when you # (re)install icewm. # # A list of all valid keyboard symbols can be found in # /usr/include/X11/keysym.h, keysymdefs.h, XF86keysym.h, ... # You'll have to omit XK_ prefixs and to replace XF86XK_ prefixes by # XF86. Valid modifiers are Alt, Ctrl, Shift, Meta, Super and Hyper. # key "Alt+Ctrl+t" xterm key "Alt+Ctrl+f" fte key "Alt+Ctrl+e" nedit key "Alt+Ctrl+g" gimp key "Alt+Ctrl+n" netscape -noraise -remote openBrowser key "Alt+Ctrl+b" netscape -noraise -remote openBookmarks key "Alt+Ctrl+m" netscape -noraise -remote openURL(mailto:,new-window) key "Alt+Ctrl+KP_Divide" aumix -v -5 # lower volume key "Alt+Ctrl+KP_Multiply" aumix -v +5 # raise volume # "Multimedia key" bindings for XFree86. Gather the keycodes of your # advanced function keys by watching the output of the xev command whilest # pressing those keys and map those symbols by using xmodmap. key "XF86Standby" killall -QUIT icewm key "XF86AudioLowerVolume" aumix -v -5 key "XF86AudioRaiseVolume" aumix -v +5 key "XF86AudioMute" aumix -v 0 key "XF86AudioPlay" cdplay play 1 key "XF86AudioStop" cdplay stop key "XF86HomePage" netscape -noraise -remote openHomepage key "XF86Mail" netscape -noraise -remote openURL(mailto:,new-window) key "XF86Search" netscape -noraise -remote openURL(http://www.google.com/) key "XF86Eject" eject icewm-1.3.7/lib/icewm.desktop0000775000076600007660000000017111463274241015077 0ustar develdevel[Desktop Entry] Version=1.0 Encoding=UTF-8 Type=Application Name=icewm Comment=Simple and fast window manger Exec=icewm icewm-1.3.7/lib/winoptions0000664000076600007660000000203611463274255014540 0ustar develdevel# This is an example for IceWM's window options file. # # Place your variants in /etc/icewm or in $HOME/.icewm # since modifications to this file will be discarded when you # (re)install icewm. xterm.icon: xterm rxvt.icon: xterm nxterm.icon: xterm fte.icon: fte emacs.Emacs.icon: emacs AWTapp.icon: java # workaround for XV window repositioning problems xv.nonICCCMconfigureRequest: 1 xeyes.ignoreWinList: 0 xeyes.ignoreTaskBar: 1 xeyes.allWorkspaces: 1 xeyes.dTitleBar: 0 xeyes.dBorder: 0 xeyes.dSysMenu: 0 xeyes.dResize: 0 xeyes.dClose: 0 xeyes.dMinimize: 0 xeyes.dMaximize: 0 xeyes.ignoreNoFocusHint: 1 XClock.ignoreNoFocusHint: 1 Vim.icon: vim applix.ignoreNoFocusHint: 1 XDdts.noFocusOnAppRaise: 1 Wingz.noFocusOnAppRaise: 1 WingzPro.noFocusOnAppRaise: 1 gkrellm.Gkrellm.allWorkspaces: 1 gkrellm.Gkrellm.ignoreTaskBar: 1 gkrellm.Gkrellm.layer: Below #gkrellm.Gkrellm.doNotCover: 1 MainWindow.licq.allWorkspaces: 1 MainWindow.licq.ignoreQuickSwitch: 1 MainWindow.licq.ignoreWinList: 1 MainWindow.licq.layer: Below #MainWindow.licq.doNotCover: 1 icewm-1.3.7/lib/icewm-session.desktop0000775000076600007660000000031411463274241016557 0ustar develdevel[Desktop Entry] Version=1.0 Encoding=UTF-8 Name=icewm Name[en_US]=icewm Comment=Simple and fast window manger Terminal=false Exec=icewm-session TryExec=icewm-session [Window Manager] SessionManaged=true icewm-1.3.7/lib/winoptions.in0000644000076600007660000000203411463274241015134 0ustar develdevel# This is an example for IceWM's window options file. # # Place your variants in @CFGDIR@ or in $HOME/.icewm # since modifications to this file will be discarded when you # (re)install icewm. xterm.icon: xterm rxvt.icon: xterm nxterm.icon: xterm fte.icon: fte emacs.Emacs.icon: emacs AWTapp.icon: java # workaround for XV window repositioning problems xv.nonICCCMconfigureRequest: 1 xeyes.ignoreWinList: 0 xeyes.ignoreTaskBar: 1 xeyes.allWorkspaces: 1 xeyes.dTitleBar: 0 xeyes.dBorder: 0 xeyes.dSysMenu: 0 xeyes.dResize: 0 xeyes.dClose: 0 xeyes.dMinimize: 0 xeyes.dMaximize: 0 xeyes.ignoreNoFocusHint: 1 XClock.ignoreNoFocusHint: 1 Vim.icon: vim applix.ignoreNoFocusHint: 1 XDdts.noFocusOnAppRaise: 1 Wingz.noFocusOnAppRaise: 1 WingzPro.noFocusOnAppRaise: 1 gkrellm.Gkrellm.allWorkspaces: 1 gkrellm.Gkrellm.ignoreTaskBar: 1 gkrellm.Gkrellm.layer: Below #gkrellm.Gkrellm.doNotCover: 1 MainWindow.licq.allWorkspaces: 1 MainWindow.licq.ignoreQuickSwitch: 1 MainWindow.licq.ignoreWinList: 1 MainWindow.licq.layer: Below #MainWindow.licq.doNotCover: 1 icewm-1.3.7/lib/programs.in0000664000076600007660000000364111463274241014564 0ustar develdevel## This file is intended to be customized by the distributions. ## (they should place it in /etc/X11/icewm) ## ## mostly obsolete, fixme #menu Editors folder { # prog fte fte fte # prog vim vim gvim # prog xemacs xemacs xemacs # prog emacs emacs emacs # prog NEdit nedit nedit # prog xedit xedit xedit # prog Lyx emacs lyx #} #menu "WWW" folder { # prog Netscape netscape netscape # prog Mozilla mozilla mozilla # prog Galeon galeon galeon # prog Arena arena arena # prog Lynx lynx xterm -e lynx # prog Links lynx xterm -e links #} #menu "Document Viewers" folder { # prog "Acrobat Reader" pdf acroread # prog "DVI Previewer" xdvi xdvi # prog "Ghostview" ghostview gv #} #menu Graphics folder { # prog Gimp gimp gimp # prog XV xv xv # prog XPaint xpaint xpaint # prog XFig xfig xfig #} #menu Games folder { # prog "Koules for X" koules xkoules -f # prog Xboing xboing xboing # prog Xboard xboard xboard # prog XGalaga xgalaga xgal # prog XDemineur xdemineur xdemineur # prog "Tux Racer" tuxracer tuxracer #} #menu System folder { # prog "Control Panel" redhat control-panel #} #menu Utilities folder { # prog XPlayCD xplaycd xplaycd # prog XMixer xmixer xmixer # prog Clock xclock xclock # prog Magnify xmag xmag # prog Calculator xcalc xcalc # prog Colormap xcolormap xcmap # prog Clipboard xclipboard xclipboard # prog xkill bomb xkill # prog xload xload xload # prog xosview xosview xosview # separator # prog "Screen Saver" xlock xlock -nolock # prog "Screen Lock" xlock xlock #} #menu "Window Managers" folder { # restart icewm - icewm # restart metacity - metacity # restart wmaker - wmaker # restart fluxbox - fluxbox # restart blackbox - blackbox # restart enlightenment - enlightenment # restart fvwm2 - fvwm2 # restart fvwm - fvwm # restart sawfish - sawfish # restart sawfish2 - sawfish2 #} icewm-1.3.7/lib/toolbar0000664000076600007660000000042011463274255013764 0ustar develdevel# This is an example for IceWM's toolbar definition file. # # Place your variants in /etc/icewm or in $HOME/.icewm # since modifications to this file will be discarded when you # (re)install icewm. # prog XTerm xterm xterm prog FTE fte fte prog Netscape netscape netscape icewm-1.3.7/lib/themes/0000775000076600007660000000000011463274241013663 5ustar develdevelicewm-1.3.7/lib/themes/win95/0000775000076600007660000000000011463274241014636 5ustar develdevelicewm-1.3.7/lib/themes/win95/close.xpm0000664000076600007660000000055411463274241016475 0ustar develdevel/* XPM */ static char *close_xpm[] = { "16 14 2 1", " c #C0C0C0", ". c #000000", " ", " ", " .. .. ", " ... ... ", " ... ... ", " ...... ", " .... ", " .... ", " ...... ", " ... ... ", " ... ... ", " .. .. ", " ", " "}; icewm-1.3.7/lib/themes/win95/minimize.xpm0000664000076600007660000000055111463274241017206 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "16 14 2 1", ". c #000", " c #ccc", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ........ ", " ........ ", " ", " "}; icewm-1.3.7/lib/themes/win95/maximize.xpm0000664000076600007660000000055011463274241017207 0ustar develdevel/* XPM */ static char *maximize_xpm[] = { "16 14 2 1", ". c #000", " c #ccc", " ", " ", " ............ ", " ............ ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " ............ ", " ", " "}; icewm-1.3.7/lib/themes/win95/restore.xpm0000664000076600007660000000055511463274241017054 0ustar develdevel/* XPM */ static char *restore_xpm[] = { "16 14 2 1", ". c #000000", " c #c0c0c0", " ", " ......... ", " ......... ", " . . ", " . . ", " ......... . ", " ......... . ", " . . . ", " . .... ", " . . ", " . . ", " ......... ", " ", " "}; icewm-1.3.7/lib/themes/win95/default.theme0000664000076600007660000000173411463274241017313 0ustar develdevelThemeDescription="Win95 style theme" ThemeAuthor="Marko Macek" Look=win95 TitleBarHeight=20 TitleButtonsRight="x mi" TitleButtonsSupported="xmis" ColorNormalBorder="rgb:C0/C0/C0" ColorActiveBorder="rgb:C0/C0/C0" ColorNormalButton="rgb:C0/C0/C0" ColorNormalTitleBar="rgb:80/80/80" ColorActiveTitleBar="rgb:00/00/A0" ColorNormalTitleBarText="rgb:00/00/00" ColorActiveTitleBarText="rgb:FF/FF/FF" ColorNormalMenu="rgb:C0/C0/C0" ColorActiveMenuItem="rgb:00/00/A0" ColorNormalMenuItemText="rgb:00/00/00" ColorActiveMenuItemText="rgb:FF/FF/FF" ColorDisabledMenuItemText="rgb:80/80/80" ColorMoveSizeStatus="rgb:C0/C0/C0" ColorMoveSizeStatusText="rgb:00/00/00" ColorDefaultTaskBar="rgb:C0/C0/C0" ColorNormalTaskBarApp="rgb:C0/C0/C0" ColorNormalTaskBarAppText="rgb:00/00/00" ColorActiveTaskBarApp="rgb:E0/E0/E0" ColorActiveTaskBarAppText="rgb:00/00/00" ColorScrollBar="rgb:E0/E0/E0" ColorScrollBarSlider="rgb:C0/C0/C0" ColorScrollBarButton="rgb:C0/C0/C0" ColorScrollBarButtonArrow="rgb:00/00/00" icewm-1.3.7/lib/themes/motif/0000775000076600007660000000000011463274241015001 5ustar develdevelicewm-1.3.7/lib/themes/motif/close.xpm0000664000076600007660000000064711463274241016643 0ustar develdevel/* XPM */ static char *maximize_xpm[] = { "16 16 3 1", "F c #FFFFFF", "B c #808080", " c #C0C0C0", " ", " ", " FF FF ", " F B F B ", " F B F B ", " F BF B ", " F B ", " F B ", " F B ", " F B ", " F BB B ", " F B B B ", " F B B B ", " BB BB ", " ", " ", }; icewm-1.3.7/lib/themes/motif/minimize.xpm0000664000076600007660000000071611463274241017354 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "16 16 3 1", " c #C0C0C0", "W c #FFFFFF", "D c #808080", " ", " ", " ", " ", " ", " ", " WWWWW ", " W D ", " W D ", " W D ", " W D ", " DDDDD ", " ", " ", " ", " ", " ", " "}; icewm-1.3.7/lib/themes/motif/maximize.xpm0000664000076600007660000000064511463274241017357 0ustar develdevel/* XPM */ static char *maximize_xpm[] = { "16 16 3 1", " c #c0c0c0", "W c #FFFFFF", "D c #808080", " ", " ", " WWWWWWWWWWW ", " W D ", " W D ", " W D ", " W D ", " W D ", " W D ", " W D ", " W D ", " W D ", " W D ", " DDDDDDDDDDD ", " ", " "}; icewm-1.3.7/lib/themes/motif/restore.xpm0000664000076600007660000000064411463274241017216 0ustar develdevel/* XPM */ static char *restore_xpm[] = { "16 16 3 1", " c #c0c0c0", "W c #FFFFFF", "D c #808080", " ", " ", " DDDDDDDDDDD ", " D W ", " D W ", " D W ", " D W ", " D W ", " D W ", " D W ", " D W ", " D W ", " D W ", " WWWWWWWWWWW ", " ", " "}; icewm-1.3.7/lib/themes/motif/menu.xpm0000664000076600007660000000063111463274241016473 0ustar develdevel/* XPM */ static char * mini-x_xpm[] = { "16 16 2 1", " c none s none", ". c #FF0000", " ", " ", " ", " .... . ", " .... . ", " .... . ", " .... . ", " ... . ", " . .. ", " . .... ", " . .... ", " . .... ", " . .... ", " . .... ", " ", " "}; icewm-1.3.7/lib/themes/motif/default.theme0000664000076600007660000000153711463274241017457 0ustar develdevelLook=motif TitleBarHeight=18 TitleButtonsSupported="xmis" ColorNormalBorder="rgb:C0/C0/C0" ColorActiveBorder="rgb:C0/C0/C0" ColorNormalButton="rgb:C0/C0/C0" ColorNormalTitleBar="rgb:A0/A0/A0" ColorActiveTitleBar="rgb:C0/C0/C0" ColorNormalTitleBarText="rgb:00/00/00" ColorActiveTitleBarText="rgb:00/00/00" ColorNormalMenu="rgb:C0/C0/C0" ColorActiveMenuItem="rgb:A0/A0/A0" ColorNormalMenuItemText="rgb:00/00/00" ColorActiveMenuItemText="rgb:00/00/00" ColorDisabledMenuItemText="rgb:80/80/80" ColorMoveSizeStatus="rgb:C0/C0/C0" ColorMoveSizeStatusText="rgb:00/00/00" ColorDefaultTaskBar="rgb:C0/C0/C0" ColorNormalTaskBarApp="rgb:C0/C0/C0" ColorNormalTaskBarAppText="rgb:00/00/00" ColorActiveTaskBarApp="rgb:E0/E0/E0" ColorActiveTaskBarAppText="rgb:00/00/00" ColorScrollBar="rgb:C0/C0/C0" ColorScrollBarSlider="rgb:C0/C0/C0" ColorScrollBarButtonArrow="rgb:C0/C0/C0" icewm-1.3.7/lib/themes/icedesert/0000775000076600007660000000000011463274241015632 5ustar develdevelicewm-1.3.7/lib/themes/icedesert/minimizeA.xpm0000664000076600007660000000302411463274241020301 0ustar develdevel/* XPM */ static char * minimizeA_xpm[] = { "20 40 36 1", " c None", ". c #FFFFFF", "+ c #DDC5A7", "@ c #FDFBFA", "# c #FBF8F5", "$ c #DFC8AC", "% c #F9F5F0", "& c #E1CCB1", "* c #F7F2EB", "= c #E3CFB7", "- c #F5EEE6", "; c #E5D3BD", "> c #F3EBE1", ", c #E7D7C2", "' c #F1E8DD", ") c #E9DAC7", "! c #EFE5D8", "~ c #EBDECD", "{ c #EEE1D3", "] c #EEE1D2", "^ c #ECDECE", "/ c #F0E5D8", "( c #EADBC9", "_ c #F2E9DE", ": c #E8D8C5", "< c #F4ECE3", "[ c #E6D5C0", "} c #F6F0E8", "| c #000000", "1 c #E4D1BB", "2 c #F8F4EE", "3 c #E2CEB6", "4 c #FAF7F4", "5 c #E0CBB1", "6 c #FCFBF9", "7 c #DEC8AC", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$##############$$#", "%&&%%%%%%%%%%%%%%&&%", "*==**************==*", "-;;--------------;;-", ">,,>>>>>>>>>>>>>>,,>", "'))''''''''''''''))'", "!~~!!!!!!!!!!!!!!~~!", "{]]{{{{{{{{{{{{{{]]{", "^//^^^^^^^^^^^^^^//^", "(__((((((((((((((__(", ":<<::::::::::::::<<:", "[}}[[[||||||||[[[}}[", "122111||||||||111221", "34433333333333333443", "56666666666666666665", "77................77", "++++++++++++++++++++", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$33333333333333$$#", "%&&33333333333333&&%", "*==33333333333333==*", "-;;33333333333333;;-", ">,,33333333333333,,>", "'))33333333333333))'", "!~~33333333333333~~!", "{]]33333333333333]]{", "^//33333333333333//^", "(__33333333333333__(", ":<<33333333333333<<:", "[}}333||||||||333}}[", "122333||||||||333221", "34433333333333333443", "56666666666666666665", "77................77", "++++++++++++++++++++"}; icewm-1.3.7/lib/themes/icedesert/restoreI.xpm0000664000076600007660000000276511463274241020166 0ustar develdevel/* XPM */ static char * restoreI_xpm[] = { "20 40 34 1", " c None", ". c #FFFFFF", "+ c #C2C2C2", "@ c #FBFBFB", "# c #F8F8F8", "$ c #C5C5C5", "% c #F4F4F4", "& c #C9C9C9", "* c #F1F1F1", "= c #CDCDCD", "- c #000000", "; c #EDEDED", "> c #D1D1D1", ", c #EAEAEA", "' c #D4D4D4", ") c #E7E7E7", "! c #D8D8D8", "~ c #E3E3E3", "{ c #DCDCDC", "] c #E0E0E0", "^ c #DDDDDD", "/ c #E4E4E4", "( c #D9D9D9", "_ c #E8E8E8", ": c #D6D6D6", "< c #EBEBEB", "[ c #D3D3D3", "} c #EFEFEF", "| c #CFCFCF", "1 c #F3F3F3", "2 c #CCCCCC", "3 c #F7F7F7", "4 c #C8C8C8", "5 c #FAFAFA", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$##############$$#", "%&&%%%%%%%%%%%%%%&&%", "*==*****-------**==*", ";>>;;;;;-------;;>>;", ",'',,,,,-,,,,,-,,'',", ")!!)))))-)))))-))!!)", "~{{~~-------~~-~~{{~", "]]]]]----------]^]]]", "^//^^-^^^^^-^^^^^//^", "(__((-(((((-(((((__(", ":<<::-:::::-:::::<<:", "[}}[[-------[[[[[}}[", "|11||||||||||||||11|", "2332|222222222222332", "45555555555555555554", "$$................$$", "++++++++++++++++++++", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$22222222222222$$#", "%&&22222222222222&&%", "*==22222-------22==*", ";>>22222-------22>>;", ",''22222-22222-22'',", ")!!22222-22222-22!!)", "~{{22-------22-22{{~", "]]]22----------22]]]", "^//22-22222-22222//^", "(__22-22222-22222__(", ":<<22-22222-22222<<:", "[}}22-------22222}}[", "|112222222222222211|", "2332|222222222222332", "45555555555555555554", "$$................$$", "++++++++++++++++++++"}; icewm-1.3.7/lib/themes/icedesert/maximizeI.xpm0000664000076600007660000000276611463274241020327 0ustar develdevel/* XPM */ static char * maximizeI_xpm[] = { "20 40 34 1", " c None", ". c #FFFFFF", "+ c #C2C2C2", "@ c #FBFBFB", "# c #F8F8F8", "$ c #C5C5C5", "% c #F4F4F4", "& c #C9C9C9", "* c #000000", "= c #F1F1F1", "- c #CDCDCD", "; c #EDEDED", "> c #D1D1D1", ", c #EAEAEA", "' c #D4D4D4", ") c #E7E7E7", "! c #D8D8D8", "~ c #E3E3E3", "{ c #DCDCDC", "] c #E0E0E0", "^ c #DDDDDD", "/ c #E4E4E4", "( c #D9D9D9", "_ c #E8E8E8", ": c #D6D6D6", "< c #EBEBEB", "[ c #D3D3D3", "} c #EFEFEF", "| c #CFCFCF", "1 c #F3F3F3", "2 c #CCCCCC", "3 c #F7F7F7", "4 c #C8C8C8", "5 c #FAFAFA", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$##############$$#", "%&&%************%&&%", "=--=************=--=", ";>>;*;;;;;;;;;;*;>>;", ",'',*,,,,,,,,,,*,'',", ")!!)*))))))))))*)!!)", "~{{~*~~~~~~~~~~*~{{~", "]]]]*]]]]]]]]]]*]]]]", "^//^*^^^^^^^^^^*^//^", "(__(*((((((((((*(__(", ":<<:*::::::::::*:<<:", "[}}[*[[[[[[[[[[*[}}[", "|11|************|11|", "23322222222222222332", "45555555555555555554", "$$................$$", "++++++++++++++++++++", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$22222222222222$$#", "%&&2************2&&%", "=--2************2--=", ";>>2*2222222222*2>>;", ",''2*2222222222*2'',", ")!!2*2222222222*2!!)", "~{{2*2222222222*2{{~", "]]]2*2222222222*2]]]", "^//2*2222222222*2//^", "(__2*2222222222*2__(", ":<<2*2222222222*2<<:", "[}}2*2222222222*2}}[", "|112************211|", "23322222222222222332", "45555555555555555554", "$$................$$", "++++++++++++++++++++"}; icewm-1.3.7/lib/themes/icedesert/restoreA.xpm0000664000076600007660000000302311463274241020142 0ustar develdevel/* XPM */ static char * restoreA_xpm[] = { "20 40 36 1", " c None", ". c #FFFFFF", "+ c #DDC5A7", "@ c #FDFBFA", "# c #FBF8F5", "$ c #DFC8AC", "% c #F9F5F0", "& c #E1CCB1", "* c #F7F2EB", "= c #E3CFB7", "- c #000000", "; c #F5EEE6", "> c #E5D3BD", ", c #F3EBE1", "' c #E7D7C2", ") c #F1E8DD", "! c #E9DAC7", "~ c #EFE5D8", "{ c #EBDECD", "] c #EEE1D3", "^ c #EEE1D2", "/ c #ECDECE", "( c #F0E5D8", "_ c #EADBC9", ": c #F2E9DE", "< c #E8D8C5", "[ c #F4ECE3", "} c #E6D5C0", "| c #F6F0E8", "1 c #E4D1BB", "2 c #F8F4EE", "3 c #E2CEB6", "4 c #FAF7F4", "5 c #E0CBB1", "6 c #FCFBF9", "7 c #DEC8AC", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$##############$$#", "%&&%%%%%%%%%%%%%%&&%", "*==*****-------**==*", ";>>;;;;;-------;;>>;", ",'',,,,,-,,,,,-,,'',", ")!!)))))-)))))-))!!)", "~{{~~-------~~-~~{{~", "]^^]]----------]/^^]", "/((//-/////-/////((/", "_::__-_____-_____::_", "<[[<<-<<<<<-<<<<<[[<", "}||}}-------}}}}}||}", "12211111111111111221", "34431333333333333443", "56666666666666666665", "77................77", "++++++++++++++++++++", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$33333333333333$$#", "%&&33333333333333&&%", "*==33333-------33==*", ";>>33333-------33>>;", ",''33333-33333-33'',", ")!!33333-33333-33!!)", "~{{33-------33-33{{~", "]^^33----------33^^]", "/((33-33333-33333((/", "_::33-33333-33333::_", "<[[33-33333-33333[[<", "}||33-------33333||}", "12233333333333333221", "34431333333333333443", "56666666666666666665", "77................77", "++++++++++++++++++++"}; icewm-1.3.7/lib/themes/icedesert/titleAT.xpm0000664000076600007660000000070511463274241017730 0ustar develdevel/* XPM */ static char * titleAT_xpm[] = { "1 20 20 1", " c None", ". c #FFFFFF", "+ c #FDFBFA", "@ c #FBF8F5", "# c #F9F5F0", "$ c #F7F2EB", "% c #F5EEE6", "& c #F3EBE1", "* c #F1E8DC", "= c #EFE5D7", "- c #EEE1D2", "; c #ECDECE", "> c #EADBC9", ", c #E8D8C4", "' c #E6D5BF", ") c #E4D1BA", "! c #E2CEB5", "~ c #E0CBB0", "{ c #DEC8AB", "] c #DDC5A7", ".", ".", "+", "@", "#", "$", "%", "&", "*", "=", "-", ";", ">", ",", "'", ")", "!", "~", "{", "]"}; icewm-1.3.7/lib/themes/icedesert/menuButtonA.xpm0000664000076600007660000000246511463274241020630 0ustar develdevel/* XPM */ static char * menuButtonA_xpm[] = { "20 40 21 1", " c None", ". c #FFFFFF", "+ c #FDFBFA", "@ c #FBF8F5", "# c #F9F5F0", "$ c #F7F2EB", "% c #F5EEE6", "& c #F3EBE1", "* c #F1E8DC", "= c #EFE5D7", "- c #EEE1D2", "; c #ECDECE", "> c #EADBC9", ", c #E8D8C4", "' c #E6D5BF", ") c #E4D1BA", "! c #E2CEB5", "~ c #E0CBB0", "{ c #DEC8AB", "] c #DDC5A7", "^ c #E2CEB6", "....................", "....................", "++++++++++++++++++++", "@@@@@@@@@@@@@@@@@@@@", "####################", "$$$$$$$$$$$$$$$$$$$$", "%%%%%%%%%%%%%%%%%%%%", "&&&&&&&&&&&&&&&&&&&&", "********************", "====================", "--------------------", ";;;;;;;;;;;;;;;;;;;;", ">>>>>>>>>>>>>>>>>>>>", ",,,,,,,,,,,,,,,,,,,,", "''''''''''''''''''''", "))))))))))))))))))))", "!!!!!!!!!!!!!!!!!!!!", "~~~~~~~~~~~~~~~~~~~~", "{{{{{{{{{{{{{{{{{{{{", "]]]]]]]]]]]]]]]]]]]]", "....................", "....................", "++^^^^^^^^^^^^^^^^++", "@@^^^^^^^^^^^^^^^^@@", "##^^^^^^^^^^^^^^^^##", "$$^^^^^^^^^^^^^^^^$$", "%%^^^^^^^^^^^^^^^^%%", "&&^^^^^^^^^^^^^^^^&&", "**^^^^^^^^^^^^^^^^**", "==^^^^^^^^^^^^^^^^==", "--^^^^^^^^^^^^^^^^--", ";;^^^^^^^^^^^^^^^^;;", ">>^^^^^^^^^^^^^^^^>>", ",,^^^^^^^^^^^^^^^^,,", "''^^^^^^^^^^^^^^^^''", "))^^^^^^^^^^^^^^^^))", "!!^^^^^^^^^^^^^^^^!!", "~~^^^^^^^^^^^^^^^^~~", "{{{{{{{{{{{{{{{{{{{{", "]]]]]]]]]]]]]]]]]]]]"}; icewm-1.3.7/lib/themes/icedesert/closeA.xpm0000664000076600007660000000302111463274241017562 0ustar develdevel/* XPM */ static char * closeA_xpm[] = { "20 40 36 1", " c None", ". c #FFFFFF", "+ c #DDC5A7", "@ c #FDFBFA", "# c #FBF8F5", "$ c #DFC8AC", "% c #F9F5F0", "& c #E1CCB1", "* c #F7F2EB", "= c #E3CFB7", "- c #000000", "; c #F5EEE6", "> c #E5D3BD", ", c #F3EBE1", "' c #E7D7C2", ") c #F1E8DD", "! c #E9DAC7", "~ c #EFE5D8", "{ c #EBDECD", "] c #EEE1D3", "^ c #EEE1D2", "/ c #ECDECE", "( c #F0E5D8", "_ c #EADBC9", ": c #F2E9DE", "< c #E8D8C5", "[ c #F4ECE3", "} c #E6D5C0", "| c #F6F0E8", "1 c #E4D1BB", "2 c #F8F4EE", "3 c #E2CEB6", "4 c #FAF7F4", "5 c #E0CBB1", "6 c #FCFBF9", "7 c #DEC8AC", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$##############$$#", "%&&%%%%%%%%%%%%%%&&%", "*==**--******--**==*", ";>>;;---;;;;---;;>>;", ",'',,,---,,---,,,'',", ")!!))))------))))!!)", "~{{~~~~~----~~~~~{{~", "]^^]]]]]----]]]]]^^]", "/((////------////((/", "_::___---__---___::_", "<[[<<---<<<<---<<[[<", "}||}}--}}}}}}--}}||}", "12211111111111111221", "34431333333333333443", "56666666666666666665", "77................77", "++++++++++++++++++++", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$11111111111111$$#", "%&&11111111111111&&%", "*==11--111111--11==*", ";>>11---1111---11>>;", ",''111---11---111'',", ")!!1111------1111!!)", "~{{11111----11111{{~", "]^^11111----11111^^]", "/((1111------1111((/", "_::111---11---111::_", "<[[11---1111---11[[<", "}||11--11}111--11||}", "12211111111111111221", "34411111111111111443", "56666666666666666665", "77................77", "++++++++++++++++++++"}; icewm-1.3.7/lib/themes/icedesert/menuButtonO.xpm0000664000076600007660000000244611463274241020645 0ustar develdevel/* XPM */ static char * menuButtonO_xpm[] = { "20 40 20 1", " c None", ". c #FFFFFF", "+ c #FEFDFC", "@ c #FDFBFA", "# c #FCFAF7", "$ c #FBF8F5", "% c #FAF6F2", "& c #F9F5F0", "* c #F8F3ED", "= c #F7F2EB", "- c #F6F0E8", "; c #F5EEE6", "> c #F4EDE4", ", c #F3EBE1", "' c #F2EADF", ") c #F1E8DC", "! c #F0E6DA", "~ c #EFE5D7", "{ c #EEE3D5", "] c #EEE2D3", "....................", "....................", "++++++++++++++++++++", "@@@@@@@@@@@@@@@@@@@@", "####################", "$$$$$$$$$$$$$$$$$$$$", "%%%%%%%%%%%%%%%%%%%%", "&&&&&&&&&&&&&&&&&&&&", "********************", "====================", "--------------------", ";;;;;;;;;;;;;;;;;;;;", ">>>>>>>>>>>>>>>>>>>>", ",,,,,,,,,,,,,,,,,,,,", "''''''''''''''''''''", "))))))))))))))))))))", "!!!!!!!!!!!!!!!!!!!!", "~~~~~~~~~~~~~~~~~~~~", "{{{{{{{{{{{{{{{{{{{{", "]]]]]]]]]]]]]]]]]]]]", "....................", "....................", "++!!!!!!!!!!!!!!!!++", "@@!!!!!!!!!!!!!!!!@@", "##!!!!!!!!!!!!!!!!##", "$$!!!!!!!!!!!!!!!!$$", "%%!!!!!!!!!!!!!!!!%%", "&&!!!!!!!!!!!!!!!!&&", "**!!!!!!!!!!!!!!!!**", "==!!!!!!!!!!!!!!!!==", "--!!!!!!!!!!!!!!!!--", ";;!!!!!!!!!!!!!!!!;;", ">>!!!!!!!!!!!!!!!!>>", ",,!!!!!!!!!!!!!!!!,,", "''!!!!!!!!!!!!!!!!''", "))!!!!!!!!!!!!!!!!))", "!!!!!!!!!!!!!!!!!!!!", "~~!!!!!!!!!!!!!!!!~~", "{{{{{{{{{{{{{{{{{{{{", "]]]]]]]]]]]]]]]]]]]]"}; icewm-1.3.7/lib/themes/icedesert/minimizeI.xpm0000664000076600007660000000276611463274241020325 0ustar develdevel/* XPM */ static char * minimizeI_xpm[] = { "20 40 34 1", " c None", ". c #FFFFFF", "+ c #C2C2C2", "@ c #FBFBFB", "# c #F8F8F8", "$ c #C5C5C5", "% c #F4F4F4", "& c #C9C9C9", "* c #F1F1F1", "= c #CDCDCD", "- c #EDEDED", "; c #D1D1D1", "> c #EAEAEA", ", c #D4D4D4", "' c #E7E7E7", ") c #D8D8D8", "! c #E3E3E3", "~ c #DCDCDC", "{ c #E0E0E0", "] c #DDDDDD", "^ c #E4E4E4", "/ c #D9D9D9", "( c #E8E8E8", "_ c #D6D6D6", ": c #EBEBEB", "< c #D3D3D3", "[ c #EFEFEF", "} c #000000", "| c #CFCFCF", "1 c #F3F3F3", "2 c #CCCCCC", "3 c #F7F7F7", "4 c #C8C8C8", "5 c #FAFAFA", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$##############$$#", "%&&%%%%%%%%%%%%%%&&%", "*==**************==*", "-;;--------------;;-", ">,,>>>>>>>>>>>>>>,,>", "'))''''''''''''''))'", "!~~!!!!!!!!!!!!!!~~!", "{{{{{{{{{{{{{{{{{{{{", "]^^]]]]]]]]]]]]]]^^]", "/((//////////////((/", "_::______________::_", "<[[<<<}}}}}}}}<<<[[<", "|11|||}}}}}}}}|||11|", "23322222222222222332", "45555555555555555554", "$$................$$", "++++++++++++++++++++", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$22222222222222$$#", "%&&22222222222222&&%", "*==22222222222222==*", "-;;22222222222222;;-", ">,,22222222222222,,>", "'))22222222222222))'", "!~~22222222222222~~!", "{{{22222222222222{{{", "]^^22222222222222^^]", "/((22222222222222((/", "_::22222222222222::_", "<[[222}}}}}}}}222[[<", "|11222}}}}}}}}22211|", "23322222222222222332", "45555555555555555554", "$$................$$", "++++++++++++++++++++"}; icewm-1.3.7/lib/themes/icedesert/titleIB.xpm0000664000076600007660000000070511463274241017716 0ustar develdevel/* XPM */ static char * titleIB_xpm[] = { "1 20 20 1", " c None", ". c #FFFFFF", "+ c #FBFBFB", "@ c #F8F8F8", "# c #F4F4F4", "$ c #F1F1F1", "% c #EDEDED", "& c #EAEAEA", "* c #E6E6E6", "= c #E3E3E3", "- c #E0E0E0", "; c #DDDDDD", "> c #D9D9D9", ", c #D6D6D6", "' c #D2D2D2", ") c #CFCFCF", "! c #CBCBCB", "~ c #C8C8C8", "{ c #C4C4C4", "] c #C2C2C2", ".", ".", "+", "@", "#", "$", "%", "&", "*", "=", "-", ";", ">", ",", "'", ")", "!", "~", "{", "]"}; icewm-1.3.7/lib/themes/icedesert/minimizeO.xpm0000664000076600007660000000276611463274241020333 0ustar develdevel/* XPM */ static char * minimizeO_xpm[] = { "20 40 34 1", " c None", ". c #FFFFFF", "+ c #EEE2D3", "@ c #FEFDFC", "# c #FDFBFA", "$ c #EFE3D5", "% c #FCFAF7", "& c #F0E5D8", "* c #FBF8F5", "= c #F1E7DB", "- c #FAF6F2", "; c #F2E9DE", "> c #F9F5F0", ", c #F3EBE0", "' c #F8F3EE", ") c #F4ECE3", "! c #F7F2EB", "~ c #F5EEE6", "{ c #F6F0E9", "] c #F6F0E8", "^ c #F4EDE4", "/ c #F8F4EE", "( c #F3EBE2", "_ c #F9F5F1", ": c #F2EADF", "< c #FAF7F3", "[ c #7F7F7F", "} c #F1E8DD", "| c #FBF9F6", "1 c #F0E6DA", "2 c #FCFBF9", "3 c #EFE5D8", "4 c #FDFDFC", "5 c #EEE3D5", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$##############$$#", "%&&%%%%%%%%%%%%%%&&%", "*==**************==*", "-;;--------------;;-", ">,,>>>>>>>>>>>>>>,,>", "'))''''''''''''''))'", "!~~!!!!!!!!!!!!!!~~!", "{]]{{{{{{{{{{{{{{]]{", "~!!~~~~~~~~~~~~~~!!~", "^//^^^^^^^^^^^^^^//^", "(__((((((((((((((__(", ":<<:::[[[[[[[[:::<<:", "}||}}}[[[[[[[[}}}||}", "12211111111111111221", "34444444444444444443", "55................55", "++++++++++++++++++++", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$11111111111111$$#", "%&&11111111111111&&%", "*==11111111111111==*", "-;;11111111111111;;-", ">,,11111111111111,,>", "'))11111111111111))'", "!~~11111111111111~~!", "{]]11111111111111]]{", "~!!11111111111111!!~", "^//11111111111111//^", "(__11111111111111__(", ":<<111[[[[[[[[111<<:", "}||111[[[[[[[[111||}", "12211111111111111221", "34444444444444444443", "55................55", "++++++++++++++++++++"}; icewm-1.3.7/lib/themes/icedesert/titleAB.xpm0000664000076600007660000000070511463274241017706 0ustar develdevel/* XPM */ static char * titleAB_xpm[] = { "1 20 20 1", " c None", ". c #FFFFFF", "+ c #FDFBFA", "@ c #FBF8F5", "# c #F9F5F0", "$ c #F7F2EB", "% c #F5EEE6", "& c #F3EBE1", "* c #F1E8DC", "= c #EFE5D7", "- c #EEE1D2", "; c #ECDECE", "> c #EADBC9", ", c #E8D8C4", "' c #E6D5BF", ") c #E4D1BA", "! c #E2CEB5", "~ c #E0CBB0", "{ c #DEC8AB", "] c #DDC5A7", ".", ".", "+", "@", "#", "$", "%", "&", "*", "=", "-", ";", ">", ",", "'", ")", "!", "~", "{", "]"}; icewm-1.3.7/lib/themes/icedesert/maximizeA.xpm0000664000076600007660000000302411463274241020303 0ustar develdevel/* XPM */ static char * maximizeA_xpm[] = { "20 40 36 1", " c None", ". c #FFFFFF", "+ c #DDC5A7", "@ c #FDFBFA", "# c #FBF8F5", "$ c #DFC8AC", "% c #F9F5F0", "& c #E1CCB1", "* c #000000", "= c #F7F2EB", "- c #E3CFB7", "; c #F5EEE6", "> c #E5D3BD", ", c #F3EBE1", "' c #E7D7C2", ") c #F1E8DD", "! c #E9DAC7", "~ c #EFE5D8", "{ c #EBDECD", "] c #EEE1D3", "^ c #EEE1D2", "/ c #ECDECE", "( c #F0E5D8", "_ c #EADBC9", ": c #F2E9DE", "< c #E8D8C5", "[ c #F4ECE3", "} c #E6D5C0", "| c #F6F0E8", "1 c #E4D1BB", "2 c #F8F4EE", "3 c #E2CEB6", "4 c #FAF7F4", "5 c #E0CBB1", "6 c #FCFBF9", "7 c #DEC8AC", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$##############$$#", "%&&%************%&&%", "=--=************=--=", ";>>;*;;;;;;;;;;*;>>;", ",'',*,,,,,,,,,,*,'',", ")!!)*))))))))))*)!!)", "~{{~*~~~~~~~~~~*~{{~", "]^^]*]]]]]]]]]]*]^^]", "/((/*//////////*/((/", "_::_*__________*_::_", "<[[<*<<<<<<<<<<*<[[<", "}||}*}}}}}}}}}}*}||}", "1221************1221", "34433333333333333443", "56666666666666666665", "77................77", "++++++++++++++++++++", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$33333333333333$$#", "%&&3************3&&%", "=--3************3--=", ";>>3*3333333333*3>>;", ",''3*3333333333*3'',", ")!!3*3333333333*3!!)", "~{{3*3333333333*3{{~", "]^^3*3333333333*3^^]", "/((3*3333333333*3((/", "_::3*3333333333*3::_", "<[[3*3333333333*3[[<", "}||3*3333333333*3||}", "1223************3221", "34433333333333333443", "56666666666666666665", "77................77", "++++++++++++++++++++"}; icewm-1.3.7/lib/themes/icedesert/menuButtonI.xpm0000664000076600007660000000246511463274241020640 0ustar develdevel/* XPM */ static char * menuButtonI_xpm[] = { "20 40 21 1", " c None", ". c #FFFFFF", "+ c #FBFBFB", "@ c #F8F8F8", "# c #F4F4F4", "$ c #F1F1F1", "% c #EDEDED", "& c #EAEAEA", "* c #E6E6E6", "= c #E3E3E3", "- c #E0E0E0", "; c #DDDDDD", "> c #D9D9D9", ", c #D6D6D6", "' c #D2D2D2", ") c #CFCFCF", "! c #CBCBCB", "~ c #C8C8C8", "{ c #C4C4C4", "] c #C2C2C2", "^ c #CCCCCC", "....................", "....................", "++++++++++++++++++++", "@@@@@@@@@@@@@@@@@@@@", "####################", "$$$$$$$$$$$$$$$$$$$$", "%%%%%%%%%%%%%%%%%%%%", "&&&&&&&&&&&&&&&&&&&&", "********************", "====================", "--------------------", ";;;;;;;;;;;;;;;;;;;;", ">>>>>>>>>>>>>>>>>>>>", ",,,,,,,,,,,,,,,,,,,,", "''''''''''''''''''''", "))))))))))))))))))))", "!!!!!!!!!!!!!!!!!!!!", "~~~~~~~~~~~~~~~~~~~~", "{{{{{{{{{{{{{{{{{{{{", "]]]]]]]]]]]]]]]]]]]]", "....................", "....................", "++^^^^^^^^^^^^^^^^++", "@@^^^^^^^^^^^^^^^^@@", "##^^^^^^^^^^^^^^^^##", "$$^^^^^^^^^^^^^^^^$$", "%%^^^^^^^^^^^^^^^^%%", "&&^^^^^^^^^^^^^^^^&&", "**^^^^^^^^^^^^^^^^**", "==^^^^^^^^^^^^^^^^==", "--^^^^^^^^^^^^^^^^--", ";;^^^^^^^^^^^^^^^^;;", ">>^^^^^^^^^^^^^^^^>>", ",,^^^^^^^^^^^^^^^^,,", "''^^^^^^^^^^^^^^^^''", "))^^^^^^^^^^^^^^^^))", "!!^^^^^^^^^^^^^^^^!!", "~~^^^^^^^^^^^^^^^^~~", "{{{{{{{{{{{{{{{{{{{{", "]]]]]]]]]]]]]]]]]]]]"}; icewm-1.3.7/lib/themes/icedesert/restoreO.xpm0000664000076600007660000000276511463274241020174 0ustar develdevel/* XPM */ static char * restoreO_xpm[] = { "20 40 34 1", " c None", ". c #FFFFFF", "+ c #EEE2D3", "@ c #FEFDFC", "# c #FDFBFA", "$ c #EFE3D5", "% c #FCFAF7", "& c #F0E5D8", "* c #FBF8F5", "= c #F1E7DB", "- c #7F7F7F", "; c #FAF6F2", "> c #F2E9DE", ", c #F9F5F0", "' c #F3EBE0", ") c #F8F3EE", "! c #F4ECE3", "~ c #F7F2EB", "{ c #F5EEE6", "] c #F6F0E9", "^ c #F6F0E8", "/ c #F4EDE4", "( c #F8F4EE", "_ c #F3EBE2", ": c #F9F5F1", "< c #F2EADF", "[ c #FAF7F3", "} c #F1E8DD", "| c #FBF9F6", "1 c #F0E6DA", "2 c #FCFBF9", "3 c #EFE5D8", "4 c #FDFDFC", "5 c #EEE3D5", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$##############$$#", "%&&%%%%%%%%%%%%%%&&%", "*==*****-------**==*", ";>>;;;;;-------;;>>;", ",'',,,,,-,,,,,-,,'',", ")!!)))))-)))))-))!!)", "~{{~~-------~~-~~{{~", "]^^]]----------]{^^]", "{~~{{-{{{{{-{{{{{~~{", "/((//-/////-/////((/", "_::__-_____-_____::_", "<[[<<-------<<<<<[[<", "}||}}}}}}}}}}}}}}||}", "1221}111111111111221", "34444444444444444443", "55................55", "++++++++++++++++++++", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$11111111111111$$#", "%&&11111111111111&&%", "*==11111-------11==*", ";>>11111-------11>>;", ",''11111-11111-11'',", ")!!11111-11111-11!!)", "~{{11-------11-11{{~", "]^^11----------11^^]", "{~~11-11111-11111~~{", "/((11-11111-11111((/", "_::11-11111-11111::_", "<[[11-------11111[[<", "}||11111111111111||}", "1221}111111111111221", "34444444444444444443", "55................55", "++++++++++++++++++++"}; icewm-1.3.7/lib/themes/icedesert/closeO.xpm0000664000076600007660000000276311463274241017614 0ustar develdevel/* XPM */ static char * closeO_xpm[] = { "20 40 34 1", " c None", ". c #FFFFFF", "+ c #EEE2D3", "@ c #FEFDFC", "# c #FDFBFA", "$ c #EFE3D5", "% c #FCFAF7", "& c #F0E5D8", "* c #FBF8F5", "= c #F1E7DB", "- c #7F7F7F", "; c #FAF6F2", "> c #F2E9DE", ", c #F9F5F0", "' c #F3EBE0", ") c #F8F3EE", "! c #F4ECE3", "~ c #F7F2EB", "{ c #F5EEE6", "] c #F6F0E9", "^ c #F6F0E8", "/ c #F4EDE4", "( c #F8F4EE", "_ c #F3EBE2", ": c #F9F5F1", "< c #F2EADF", "[ c #FAF7F3", "} c #F1E8DD", "| c #FBF9F6", "1 c #F0E6DA", "2 c #FCFBF9", "3 c #EFE5D8", "4 c #FDFDFC", "5 c #EEE3D5", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$##############$$#", "%&&%%%%%%%%%%%%%%&&%", "*==**--******--**==*", ";>>;;---;;;;---;;>>;", ",'',,,---,,---,,,'',", ")!!))))------))))!!)", "~{{~~~~~----~~~~~{{~", "]^^]]]]]----]]]]]^^]", "{~~{{{{------{{{{~~{", "/((///---//---///((/", "_::__---____---__::_", "<[[<<--<<<<<<--<<[[<", "}||}}}}}}}}}}}}}}||}", "1221}111111111111221", "34444444444444444443", "55................55", "++++++++++++++++++++", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$}}}}}}}}}}}}}}$$#", "%&&}}}}}}}}}}}}}}&&%", "*==}}--}}}}}}--}}==*", ";>>}}---}}}}---}}>>;", ",''}}}---}}---}}}'',", ")!!}}}}------}}}}!!)", "~{{}}}}}----}}}}}{{~", "]^^}}}}}----}}}}}^^]", "{~~}}}}------}}}}~~{", "/((}}}---}}---}}}((/", "_::}}---}}}}---}}::_", "<[[}}--}}<}}}--}}[[<", "}||}}}}}}}}}}}}}}||}", "122}}}}}}}}}}}}}}221", "34444444444444444443", "55................55", "++++++++++++++++++++"}; icewm-1.3.7/lib/themes/icedesert/titleIT.xpm0000664000076600007660000000070511463274241017740 0ustar develdevel/* XPM */ static char * titleIT_xpm[] = { "1 20 20 1", " c None", ". c #FFFFFF", "+ c #FBFBFB", "@ c #F8F8F8", "# c #F4F4F4", "$ c #F1F1F1", "% c #EDEDED", "& c #EAEAEA", "* c #E6E6E6", "= c #E3E3E3", "- c #E0E0E0", "; c #DDDDDD", "> c #D9D9D9", ", c #D6D6D6", "' c #D2D2D2", ") c #CFCFCF", "! c #CBCBCB", "~ c #C8C8C8", "{ c #C4C4C4", "] c #C2C2C2", ".", ".", "+", "@", "#", "$", "%", "&", "*", "=", "-", ";", ">", ",", "'", ")", "!", "~", "{", "]"}; icewm-1.3.7/lib/themes/icedesert/closeI.xpm0000664000076600007660000000276311463274241017606 0ustar develdevel/* XPM */ static char * closeI_xpm[] = { "20 40 34 1", " c None", ". c #FFFFFF", "+ c #C2C2C2", "@ c #FBFBFB", "# c #F8F8F8", "$ c #C5C5C5", "% c #F4F4F4", "& c #C9C9C9", "* c #F1F1F1", "= c #CDCDCD", "- c #000000", "; c #EDEDED", "> c #D1D1D1", ", c #EAEAEA", "' c #D4D4D4", ") c #E7E7E7", "! c #D8D8D8", "~ c #E3E3E3", "{ c #DCDCDC", "] c #E0E0E0", "^ c #DDDDDD", "/ c #E4E4E4", "( c #D9D9D9", "_ c #E8E8E8", ": c #D6D6D6", "< c #EBEBEB", "[ c #D3D3D3", "} c #EFEFEF", "| c #CFCFCF", "1 c #F3F3F3", "2 c #CCCCCC", "3 c #F7F7F7", "4 c #C8C8C8", "5 c #FAFAFA", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$##############$$#", "%&&%%%%%%%%%%%%%%&&%", "*==**--******--**==*", ";>>;;---;;;;---;;>>;", ",'',,,---,,---,,,'',", ")!!))))------))))!!)", "~{{~~~~~----~~~~~{{~", "]]]]]]]]----]]]]]]]]", "^//^^^^------^^^^//^", "(__(((---((---(((__(", ":<<::---::::---::<<:", "[}}[[--[[[[[[--[[}}[", "|11||||||||||||||11|", "2332|222222222222332", "45555555555555555554", "$$................$$", "++++++++++++++++++++", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$||||||||||||||$$#", "%&&||||||||||||||&&%", "*==||--||||||--||==*", ";>>||---||||---||>>;", ",''|||---||---|||'',", ")!!||||------||||!!)", "~{{|||||----|||||{{~", "]]]|||||----|||||]]]", "^//||||------||||//^", "(__|||---||---|||__(", ":<<||---||||---||<<:", "[}}||--||[|||--||}}[", "|11||||||||||||||11|", "233||||||||||||||332", "45555555555555555554", "$$................$$", "++++++++++++++++++++"}; icewm-1.3.7/lib/themes/icedesert/maximizeO.xpm0000664000076600007660000000276611463274241020335 0ustar develdevel/* XPM */ static char * maximizeO_xpm[] = { "20 40 34 1", " c None", ". c #FFFFFF", "+ c #EEE2D3", "@ c #FEFDFC", "# c #FDFBFA", "$ c #EFE3D5", "% c #FCFAF7", "& c #F0E5D8", "* c #7F7F7F", "= c #FBF8F5", "- c #F1E7DB", "; c #FAF6F2", "> c #F2E9DE", ", c #F9F5F0", "' c #F3EBE0", ") c #F8F3EE", "! c #F4ECE3", "~ c #F7F2EB", "{ c #F5EEE6", "] c #F6F0E9", "^ c #F6F0E8", "/ c #F4EDE4", "( c #F8F4EE", "_ c #F3EBE2", ": c #F9F5F1", "< c #F2EADF", "[ c #FAF7F3", "} c #F1E8DD", "| c #FBF9F6", "1 c #F0E6DA", "2 c #FCFBF9", "3 c #EFE5D8", "4 c #FDFDFC", "5 c #EEE3D5", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$##############$$#", "%&&%************%&&%", "=--=************=--=", ";>>;*;;;;;;;;;;*;>>;", ",'',*,,,,,,,,,,*,'',", ")!!)*))))))))))*)!!)", "~{{~*~~~~~~~~~~*~{{~", "]^^]*]]]]]]]]]]*]^^]", "{~~{*{{{{{{{{{{*{~~{", "/((/*//////////*/((/", "_::_*__________*_::_", "<[[<*<<<<<<<<<<*<[[<", "}||}************}||}", "12211111111111111221", "34444444444444444443", "55................55", "++++++++++++++++++++", "....................", "..++++++++++++++++..", "@++++++++++++++++++@", "#$$11111111111111$$#", "%&&1************1&&%", "=--1************1--=", ";>>1*1111111111*1>>;", ",''1*1111111111*1'',", ")!!1*1111111111*1!!)", "~{{1*1111111111*1{{~", "]^^1*1111111111*1^^]", "{~~1*1111111111*1~~{", "/((1*1111111111*1((/", "_::1*1111111111*1::_", "<[[1*1111111111*1[[<", "}||1************1||}", "12211111111111111221", "34444444444444444443", "55................55", "++++++++++++++++++++"}; icewm-1.3.7/lib/themes/icedesert/default.theme0000664000076600007660000000270511463274241020306 0ustar develdevelThemeDescription="Desert style theme." ThemeAuthor="Nehal Mistry" RolloverButtonsSupported=1 Look=pixmap TitleBarHeight=20 BorderSizeX=4 BorderSizeY=4 DlgBorderSizeX=2 DlgBorderSizeY=2 TitleButtonsSupported="xmis" ColorNormalBorder="rgb:c2/c2/c2" ColorActiveBorder="rgb:c1/b9/af" ColorNormalButton="rgb:dc/d9/d9" ColorNormalTitleBarText="rgb:00/00/00" ColorActiveTitleBarText="rgb:00/00/00" ColorNormalMenu="rgb:dc/d9/d9" ColorActiveMenuItem="rgb:c1/b9/af" ColorNormalMenuItemText="rgb:00/00/00" ColorActiveMenuItemText="rgb:00/00/00" ColorDisabledMenuItemText="rgb:80/80/80" ColorMoveSizeStatus="rgb:dc/d9/d9" ColorMoveSizeStatusText="rgb:00/00/00" ColorDefaultTaskBar="rgb:dc/d9/d9" ColorNormalTaskBarApp="rgb:dc/d9/d9" ColorNormalTaskBarAppText="rgb:00/00/00" ColorActiveTaskBarApp="rgb:c1/b9/af" ColorActiveTaskBarAppText="rgb:00/00/00" ColorMinimizedTaskBarApp="rgb:c1/b9/af" ColorQuickSwitch="rgb:dc/d9/d9" ColorQuickSwitchActive="rgb:c1/b9/af" ColorNormalButton="rgb:dc/d9/d9" ColorActiveButton="rgb:c1/b9/af" ColorListBox="rgb:dc/d9/d9" ColorListBoxSelection="rgb:c1/b9/af" ColorScrollBar="rgb:dc/d9/d9" ColorScrollBarSlider="rgb:c1/b9/af" ColorScrollBarButton="rgb:c1/b9/af" ColorDialog="rgb:dc/d9/d9" ColorToolTip="rgb:dc/d9/d9" DesktopBackgroundColor="rgb:50/50/78" ColorLabel="rgb:dc/d9/d9" ColorClock="rgb:18/18/38" ColorClockText="rgb:ef/d0/97" ColorApm="rgb:18/18/38" ColorApmText="rgb:ef/d0/97" ColorCPUStatusIdle="rgb:18/18/38" ColorNetIdle="rgb:18/18/38" icewm-1.3.7/lib/themes/warp3/0000775000076600007660000000000011463274241014717 5ustar develdevelicewm-1.3.7/lib/themes/warp3/close.xpm0000664000076600007660000000062411463274241016554 0ustar develdevel/* XPM */ static char *close_xpm[] = { "16 16 2 1", " c #C0C0C0", ". c #000000", " ", " ", " ", " .. .. ", " ... ... ", " ... ... ", " ...... ", " .... ", " .... ", " ...... ", " ... ... ", " ... ... ", " .. .. ", " ", " ", " "}; icewm-1.3.7/lib/themes/warp3/minimize.xpm0000664000076600007660000000067711463274241017300 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "16 16 2 1", " c #C0C0C0", "B c #000000", " ", " ", " ", " ", " ", " BBBBBB ", " B B ", " B B ", " B B ", " B B ", " BBBBBB ", " ", " ", " ", " ", " ", " ", " "}; icewm-1.3.7/lib/themes/warp3/hide.xpm0000664000076600007660000000055611463274241016364 0ustar develdevel/* XPM */ static char *maximize_xpm[] = { "16 14 2 1", ". c #000000", " c #c0c0c0", " ", " ", " ", " ... ... ", " . . ", " . . ", " ", " ", " . . ", " . . ", " ... ... ", " ", " ", " "}; icewm-1.3.7/lib/themes/warp3/rollup.xpm0000664000076600007660000000055711463274241016771 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "16 14 2 1", ". c #000000", " c #c0c0c0", " ", " ", " ............ ", " ............ ", " .. ", " .... ", " ...... ", " .. .. .. ", " .. .. .. ", " .. ", " .. ", " .. ", " ", " "}; icewm-1.3.7/lib/themes/warp3/maximize.xpm0000664000076600007660000000062611463274241017274 0ustar develdevel/* XPM */ static char *maximize_xpm[] = { "16 16 2 1", " c #c0c0c0", "B c #000000", " ", " ", " BBBBBBBBBBBB ", " B B ", " B B ", " B B ", " B B ", " B B ", " B B ", " B B ", " B B ", " B B ", " B B ", " BBBBBBBBBBBB ", " ", " "}; icewm-1.3.7/lib/themes/warp3/restore.xpm0000664000076600007660000000062511463274241017133 0ustar develdevel/* XPM */ static char *restore_xpm[] = { "16 16 2 1", " c #c0c0c0", "B c #000000", " ", " ", " B B ", " B BBBBBBBB B ", " B B B B ", " B B B B ", " B B B B ", " B B B B ", " B B B B ", " B B B B ", " B B B B ", " B B B B ", " B BBBBBBBB B ", " B B ", " ", " "}; icewm-1.3.7/lib/themes/warp3/rolldown.xpm0000664000076600007660000000055711463274241017314 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "16 14 2 1", ". c #000000", " c #c0c0c0", " ", " ", " ............ ", " ............ ", " .. ", " .. ", " .. ", " .. .. .. ", " .. .. .. ", " ...... ", " .... ", " .. ", " ", " "}; icewm-1.3.7/lib/themes/warp3/default.theme0000664000076600007660000000160711463274241017373 0ustar develdevelThemeDescription="OS/2 Warp3 style theme" ThemeAuthor="Marko Macek" Look=warp3 #ShowXButton=2 TitleBarHeight=20 BorderSizeX=4 BorderSizeY=4 DlgBorderSizeX=2 DlgBorderSizeY=2 TitleButtonsSupported="xmisrh" ColorNormalBorder="rgb:C0/C0/C0" ColorActiveBorder="rgb:FF/FF/C0" ColorActiveTitleBar="rgb:00/00/00" ColorNormalTitleBar="rgb:C0/C0/C0" ColorNormalButton="rgb:C0/C0/C0" ColorNormalTitleBarText="rgb:00/00/00" ColorActiveTitleBarText="rgb:FF/FF/FF" ColorNormalMenu="rgb:D0/D0/D0" ColorActiveMenuItem="rgb:A0/A0/A0" ColorNormalMenuItemText="rgb:00/00/00" ColorActiveMenuItemText="rgb:00/00/00" ColorDisabledMenuItemText="rgb:80/80/80" ColorMoveSizeStatus="rgb:C0/C0/C0" ColorMoveSizeStatusText="rgb:00/00/00" ColorDefaultTaskBar="rgb:C0/C0/C0" ColorNormalTaskBarApp="rgb:C0/C0/C0" ColorNormalTaskBarAppText="rgb:00/00/00" ColorActiveTaskBarApp="rgb:E0/E0/E0" ColorActiveTaskBarAppText="rgb:00/00/00" icewm-1.3.7/lib/themes/gtk2/0000775000076600007660000000000011463274241014532 5ustar develdevelicewm-1.3.7/lib/themes/gtk2/minimizeA.xpm0000664000076600007660000000214611463274241017205 0ustar develdevel/* XPM */ static char *magick[] = { /* columns rows colors chars-per-pixel */ "20 40 4 1", " c #D0D0D0", ". c #808080", "X c #FFFFFF", "o c #000000", /* pixels */ " ", " ", " ", " ", " .oooo. ", " oooooooo ", " .ooXXXXoo. ", " ooooXXoooo ", " ooooXXoooo ", " ooXXXXXXoo ", " oooXXXXooo ", " .oooXXooo. ", " oooooooo ", " .oooo. ", " ", " ", " ", " ", " ", " ", " ", " ", " oooooo ", " .oooooooo. ", " .oooooooooo. ", " oooooooooooo ", " oooooXXXXooooo ", " ooooooXXoooooo ", " ooooooXXoooooo ", " ooooXXXXXXoooo ", " oooooXXXXooooo ", " ooooooXXoooooo ", " oooooooooooo ", " .oooooooooo. ", " .oooooooo. ", " oooooo ", " ", " ", " ", " " }; icewm-1.3.7/lib/themes/gtk2/restoreI.xpm0000664000076600007660000000214611463274241017057 0ustar develdevel/* XPM */ static char *magick[] = { /* columns rows colors chars-per-pixel */ "20 40 4 1", " c #A0A0A0", ". c #FFFFFF", "X c #808080", "o c #000000", /* pixels */ " ", " ", " ", " ", " XooooX ", " XooooooX ", " XooooooooX ", " ooo....ooo ", " ooo....ooo ", " ooo....ooo ", " ooo....ooo ", " XooooooooX ", " XooooooX ", " XooooX ", " ", " ", " ", " ", " ", " ", " ", " ", " XooooX ", " XooooooooX ", " XooooooooooX ", " oooooooooooo ", " XooooooooooooX ", " ooooo....ooooo ", " ooooo....ooooo ", " ooooo....ooooo ", " ooooo....ooooo ", " XooooooooooooX ", " oooooooooooo ", " XooooooooooX ", " XooooooooX ", " XooooX ", " ", " ", " ", " " }; icewm-1.3.7/lib/themes/gtk2/maximizeI.xpm0000664000076600007660000000214611463274241017217 0ustar develdevel/* XPM */ static char *magick[] = { /* columns rows colors chars-per-pixel */ "20 40 4 1", " c #A0A0A0", ". c #FFFFFF", "X c #808080", "o c #000000", /* pixels */ " ", " ", " ", " ", " XooooX ", " XooooooX ", " Xo......oX ", " oo......oo ", " oo......oo ", " oo......oo ", " oo......oo ", " Xo......oX ", " XooooooX ", " XooooX ", " ", " ", " ", " ", " ", " ", " ", " ", " XooooX ", " XooooooooX ", " XooooooooooX ", " oooooooooooo ", " Xooo......oooX ", " oooo......oooo ", " oooo......oooo ", " oooo......oooo ", " oooo......oooo ", " Xooo......oooX ", " oooooooooooo ", " XooooooooooX ", " XooooooooX ", " XooooX ", " ", " ", " ", " " }; icewm-1.3.7/lib/themes/gtk2/restoreA.xpm0000664000076600007660000000214611463274241017047 0ustar develdevel/* XPM */ static char *magick[] = { /* columns rows colors chars-per-pixel */ "20 40 4 1", " c #D0D0D0", ". c #808080", "X c #FFFFFF", "o c #000000", /* pixels */ " ", " ", " ", " ", " .oooo. ", " oooooooo ", " .oooooooo. ", " oooXXXXooo ", " oooXXXXooo ", " oooXXXXooo ", " oooXXXXooo ", " .oooooooo. ", " oooooooo ", " .oooo. ", " ", " ", " ", " ", " ", " ", " ", " ", " oooooo ", " .oooooooo. ", " .oooooooooo. ", " oooooooooooo ", " oooooooooooooo ", " oooooXXXXooooo ", " oooooXXXXooooo ", " oooooXXXXooooo ", " oooooXXXXooooo ", " oooooooooooooo ", " oooooooooooo ", " .oooooooooo. ", " .oooooooo. ", " oooooo ", " ", " ", " ", " " }; icewm-1.3.7/lib/themes/gtk2/menuButtonA.xpm0000664000076600007660000000211111463274241017514 0ustar develdevel/* XPM */ static char *magick[] = { /* columns rows colors chars-per-pixel */ "20 40 2 1", "X c #D0D0D0", ". c #808080", /* pixels */ "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", }; icewm-1.3.7/lib/themes/gtk2/closeA.xpm0000664000076600007660000000214611463274241016471 0ustar develdevel/* XPM */ static char *magick[] = { /* columns rows colors chars-per-pixel */ "20 40 4 1", " c #D0D0D0", ". c #808080", "X c #FFFFFF", "o c #000000", /* pixels */ " ", " ", " ", " ", " .oooo. ", " ooooooo. ", " .ooooooXo. ", " oooooXXooo ", " oooXXXoooo ", " ooooXXXooo ", " oooXXooooo ", " .oXoooooo. ", " .ooooooo ", " .oooo. ", " ", " ", " ", " ", " ", " ", " ", " ", " oooooo ", " .oooooooo. ", " .oooooooooo. ", " ooooooooo.oo ", " oooooooooXoooo ", " oooooooXXooooo ", " oooooXXXoooooo ", " ooooooXXXooooo ", " oooooXXooooooo ", " ooooXooooooooo ", " oo.ooooooooo ", " .oooooooooo. ", " .oooooooo. ", " oooooo ", " ", " ", " ", " " }; icewm-1.3.7/lib/themes/gtk2/minimizeI.xpm0000664000076600007660000000214611463274241017215 0ustar develdevel/* XPM */ static char *magick[] = { /* columns rows colors chars-per-pixel */ "20 40 4 1", " c #A0A0A0", ". c #FFFFFF", "X c #808080", "o c #000000", /* pixels */ " ", " ", " ", " ", " XooooX ", " XooooooX ", " Xoo....ooX ", " oooX..Xooo ", " oooo..oooo ", " oo......oo ", " ooo....ooo ", " Xooo..oooX ", " XooooooX ", " XooooX ", " ", " ", " ", " ", " ", " ", " ", " ", " XooooX ", " XooooooooX ", " XooooooooooX ", " oooooooooooo ", " Xoooo....ooooX ", " oooooX..Xooooo ", " oooooo..oooooo ", " oooo......oooo ", " ooooo....ooooo ", " Xooooo..oooooX ", " oooooooooooo ", " XooooooooooX ", " XooooooooX ", " XooooX ", " ", " ", " ", " " }; icewm-1.3.7/lib/themes/gtk2/maximizeA.xpm0000664000076600007660000000214611463274241017207 0ustar develdevel/* XPM */ static char *magick[] = { /* columns rows colors chars-per-pixel */ "20 40 4 1", " c #D0D0D0", ". c #808080", "X c #FFFFFF", "o c #000000", /* pixels */ " ", " ", " ", " ", " .oooo. ", " .oooooo. ", " .oXXXXXXo. ", " ooXXXXXXoo ", " ooXXXXXXoo ", " ooXXXXXXoo ", " ooXXXXXXoo ", " .oXXXXXXo. ", " .oooooo. ", " .oooo. ", " ", " ", " ", " ", " ", " ", " ", " ", " .oooo. ", " .oooooooo. ", " .oooooooooo. ", " oooooooooooo ", " .oooXXXXXXooo. ", " ooooXXXXXXoooo ", " ooooXXXXXXoooo ", " ooooXXXXXXoooo ", " ooooXXXXXXoooo ", " .oooXXXXXXooo. ", " oooooooooooo ", " .oooooooooo. ", " .oooooooo. ", " .oooo. ", " ", " ", " ", " " }; icewm-1.3.7/lib/themes/gtk2/menuButtonI.xpm0000664000076600007660000000211111463274241017524 0ustar develdevel/* XPM */ static char *magick[] = { /* columns rows colors chars-per-pixel */ "20 40 2 1", "X c #A0A0A0", ". c #808080", /* pixels */ "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXX", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", "....................", }; icewm-1.3.7/lib/themes/gtk2/closeI.xpm0000664000076600007660000000214611463274241016501 0ustar develdevel/* XPM */ static char *magick[] = { /* columns rows colors chars-per-pixel */ "20 40 4 1", " c #A0A0A0", ". c #FFFFFF", "X c #808080", "o c #000000", /* pixels */ " ", " ", " ", " ", " XooooX ", " XooooooX ", " XoooooX.oX ", " ooooX..ooo ", " ooX...oooo ", " oooo...Xoo ", " ooo..Xoooo ", " Xo.XoooooX ", " XooooooX ", " XooooX ", " ", " ", " ", " ", " ", " ", " ", " ", " XooooX ", " XooooooooX ", " XooooooooooX ", " oooooooooXoo ", " XoooooooX.XooX ", " ooooooX..ooooo ", " ooooX...oooooo ", " oooooo...Xoooo ", " ooooo..Xoooooo ", " Xooo.XoooooooX ", " ooXXoooooooo ", " XooooooooooX ", " XooooooooX ", " XooooX ", " ", " ", " ", " " }; icewm-1.3.7/lib/themes/gtk2/default.theme0000664000076600007660000000235311463274241017205 0ustar develdevelThemeDescription="Gtk default style theme -- needs work" ThemeAuthor="Marko Macek" Look=gtk TitleBarHeight=20 TitleButtonsSupported="xmis" BorderSizeX=6 BorderSizeY=6 CornerSizeX=16 CornerSizeY=16 DlgBorderSizeX=2 DlgBorderSizeY=2 ColorNormalBorder="rgb:A0/A0/A0" ColorActiveBorder="rgb:D0/D0/D0" ColorActiveTitleBar="rgb:D0/D0/D0" ColorNormalTitleBar="rgb:A0/A0/A0" ColorNormalButton="rgb:C0/C0/C0" ColorNormalTitleBarText="rgb:00/00/00" ColorActiveTitleBarText="rgb:00/00/00" ColorNormalMenu="rgb:D7/D7/D7" ColorActiveMenuItem="rgb:EB/EB/EB" ColorNormalMenuItemText="rgb:00/00/00" ColorActiveMenuItemText="rgb:00/00/00" ColorDisabledMenuItemText="rgb:80/80/80" ColorMoveSizeStatus="rgb:C0/C0/C0" ColorMoveSizeStatusText="rgb:00/00/00" ColorDefaultTaskBar="rgb:D7/D7/D7" ColorNormalTaskBarApp="rgb:D7/D7/D7" ColorNormalTaskBarAppText="rgb:00/00/00" ColorActiveTaskBarApp="rgb:EB/EB/EB" ColorActiveTaskBarAppText="rgb:00/00/00" ColorMinimizedTaskBarApp="rgb:A0/A0/A0" ColorMinimizedTaskBarAppText="rgb:00/00/00" ColorListBox="rgb:CC/CC/CC" ColorListBoxText="rgb:00/00/00" ColorListBoxSelection="rgb:CC/CC/FF" ColorListBoxSelectionText="rgb:00/00/00" ColorScrollBar="rgb:C0/C0/C0" ColorScrollBarSlider="rgb:C0/C0/C0" ColorScrollBarButtonArrow="rgb:C0/C0/C0" icewm-1.3.7/lib/themes/nice2/0000775000076600007660000000000011463274241014663 5ustar develdevelicewm-1.3.7/lib/themes/nice2/minimizeA.xpm0000664000076600007660000000251011463274241017331 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "20 40 22 1", "a c #FFFFFF", "b c #FFFBF7", "c c #FFF7EF", "d c #FFF3E7", "e c #FFEFDF", "f c #FFEBD7", "g c #FFE7CF", "h c #FFE3C7", "i c #FFDFBF", "j c #FFDBB7", "k c #FFD7AF", "l c #FFD3A7", "m c #FFCF9F", "n c #FFCB97", "o c #FFC78F", "p c #FFC387", "q c #FFBF7F", "r c #FFBB77", "s c #FFB76F", "t c #FFB367", "# c #000000", " c #FFC080", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "crccccccccccccccccrc", "dqddddddddddddddddqd", "epeeeeeeeeeeeeeeeepe", "foffffffffffffffffof", "gnggggggggggggggggng", "hmhhhhhhhhhhhhhhhhmh", "iliiiiiiiiiiiiiiiili", "jkjjjjjjjjjjjjjjjjkj", "kjkkkkkkkkkkkkkkkkjk", "lillllllllllllllllil", "mhmmmmmmmmmmmmmmmmhm", "ngnnnnnnnnnnnnnnnngn", "ofoo#######ooooooofo", "pepp#######pppppppep", "qdqqqqqqqqqqqqqqqqdq", "rcrrrrrrrrrrrrrrrrcr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "cr rc", "dq qd", "ep pe", "fo of", "gn ng", "hm mh", "il li", "jk kj", "kj jk", "li il", "mh hm", "ng gn", "of ####### fo", "pe ####### ep", "qd dq", "rc cr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt", }; icewm-1.3.7/lib/themes/nice2/restoreI.xpm0000664000076600007660000000251011463274241017203 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "20 40 22 1", "a c #FFFFFF", "b c #F7FBFF", "c c #EFF7FF", "d c #E7F3FF", "e c #DFEFFF", "f c #D7EBFF", "g c #CFE7FF", "h c #C7E3FF", "i c #BFDFFF", "j c #B7DBFF", "k c #AFD7FF", "l c #A7D3FF", "m c #9FCFFF", "n c #97CBFF", "o c #8FC7FF", "p c #87C3FF", "q c #7FBFFF", "r c #77BBFF", "s c #6FB7FF", "t c #67B3FF", "# c #000000", " c #80C0FF", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "crccccccccccccccccrc", "dqddddddddddddddddqd", "epeeeeee########eepe", "foffffff########ffof", "gngggggg#gggggg#ggng", "hmhhhhhh#hhhhhh#hhmh", "ilii########iii#iili", "jkjj########jjj#jjkj", "kjkk#kkkkkk#kkk#kkjk", "lill#llllll#lll#llil", "mhmm#mmmmmm#####mmhm", "ngnn#nnnnnn#nnnnnngn", "ofoo#oooooo#ooopoofo", "pepp########ppppppep", "qdqqqqqqqqqqqqqqqqdq", "rcrrrrrrrrrrrrrrrrcr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "cr rc", "dq qd", "ep ######## pe", "fo ######## of", "gn # # ng", "hm # # mh", "il ######## # li", "jk ######## # kj", "kj # # # jk", "li # # # il", "mh # ##### hm", "ng # # gn", "of # # fo", "pe ######## ep", "qd dq", "rc cr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt", }; icewm-1.3.7/lib/themes/nice2/maximizeI.xpm0000664000076600007660000000251011463274241017343 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "20 40 22 1", "a c #FFFFFF", "b c #F7FBFF", "c c #EFF7FF", "d c #E7F3FF", "e c #DFEFFF", "f c #D7EBFF", "g c #CFE7FF", "h c #C7E3FF", "i c #BFDFFF", "j c #B7DBFF", "k c #AFD7FF", "l c #A7D3FF", "m c #9FCFFF", "n c #97CBFF", "o c #8FC7FF", "p c #87C3FF", "q c #7FBFFF", "r c #77BBFF", "s c #6FB7FF", "t c #67B3FF", "# c #000000", " c #80C0FF", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "crccccccccccccccccrc", "dqddddddddddddddddqd", "epee############eepe", "foff############ffof", "gngg#gggggggggg#ggng", "hmhh#hhhhhhhhhh#hhmh", "ilii#iiiiiiiiii#iili", "jkjj#jjjjjjjjjj#jjkj", "kjkk#kkkkkkkkkk#kkjk", "lill#llllllllll#llil", "mhmm#mmmmmmmmmm#mmhm", "ngnn#nnnnnnnnnn#nngn", "ofoo#oooooooooo#oofo", "pepp############ppep", "qdqqqqqqqqqqqqqqqqdq", "rcrrrrrrrrrrrrrrrrcr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "cr rc", "dq qd", "ep ############ pe", "fo ############ of", "gn # # ng", "hm # # mh", "il # # li", "jk # # kj", "kj # # jk", "li # # il", "mh # # hm", "ng # # gn", "of # # fo", "pe ############ ep", "qd dq", "rc cr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt", }; icewm-1.3.7/lib/themes/nice2/restoreA.xpm0000664000076600007660000000251011463274241017173 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "20 40 22 1", "a c #FFFFFF", "b c #FFFBF7", "c c #FFF7EF", "d c #FFF3E7", "e c #FFEFDF", "f c #FFEBD7", "g c #FFE7CF", "h c #FFE3C7", "i c #FFDFBF", "j c #FFDBB7", "k c #FFD7AF", "l c #FFD3A7", "m c #FFCF9F", "n c #FFCB97", "o c #FFC78F", "p c #FFC387", "q c #FFBF7F", "r c #FFBB77", "s c #FFB76F", "t c #FFB367", "# c #000000", " c #FFC080", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "crccccccccccccccccrc", "dqddddddddddddddddqd", "epeeeeee########eepe", "foffffff########ffof", "gngggggg#gggggg#ggng", "hmhhhhhh#hhhhhh#hhmh", "ilii########iii#iili", "jkjj########jjj#jjkj", "kjkk#kkkkkk#kkk#kkjk", "lill#llllll#lll#llil", "mhmm#mmmmmm#####mmhm", "ngnn#nnnnnn#nnnnnngn", "ofoo#oooooo#ooopoofo", "pepp########ppppppep", "qdqqqqqqqqqqqqqqqqdq", "rcrrrrrrrrrrrrrrrrcr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "cr rc", "dq qd", "ep ######## pe", "fo ######## of", "gn # # ng", "hm # # mh", "il ######## # li", "jk ######## # kj", "kj # # # jk", "li # # # il", "mh # ##### hm", "ng # # gn", "of # # fo", "pe ######## ep", "qd dq", "rc cr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt", }; icewm-1.3.7/lib/themes/nice2/titleAT.xpm0000664000076600007660000000071711463274241016764 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "1 20 20 1", "a c #FFFFFF", "b c #FFFBF7", "c c #FFF7EF", "d c #FFF3E7", "e c #FFEFDF", "f c #FFEBD7", "g c #FFE7CF", "h c #FFE3C7", "i c #FFDFBF", "j c #FFDBB7", "k c #FFD7AF", "l c #FFD3A7", "m c #FFCF9F", "n c #FFCB97", "o c #FFC78F", "p c #FFC387", "q c #FFBF7F", "r c #FFBB77", "s c #FFB76F", "t c #FFB367", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", }; icewm-1.3.7/lib/themes/nice2/menuButtonA.xpm0000664000076600007660000000257011463274241017656 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "20 40 21 1", "a c #FFFFFF", "b c #FFFBF7", "c c #FFF7EF", "d c #FFF3E7", "e c #FFEFDF", "f c #FFEBD7", "g c #FFE7CF", "h c #FFE3C7", "i c #FFDFBF", "j c #FFDBB7", "k c #FFD7AF", "l c #FFD3A7", "m c #FFCF9F", "n c #FFCB97", "o c #FFC78F", "p c #FFC387", "q c #FFBF7F", "r c #FFBB77", "s c #FFB76F", "t c #FFB367", " c #FFC080", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb", "cccccccccccccccccccc", "dddddddddddddddddddd", "eeeeeeeeeeeeeeeeeeee", "ffffffffffffffffffff", "gggggggggggggggggggg", "hhhhhhhhhhhhhhhhhhhh", "iiiiiiiiiiiiiiiiiiii", "jjjjjjjjjjjjjjjjjjjj", "kkkkkkkkkkkkkkkkkkkk", "llllllllllllllllllll", "mmmmmmmmmmmmmmmmmmmm", "nnnnnnnnnnnnnnnnnnnn", "oooooooooooooooooooo", "pppppppppppppppppppp", "qqqqqqqqqqqqqqqqqqqq", "rrrrrrrrrrrrrrrrrrrr", "ssssssssssssssssssss", "tttttttttttttttttttt", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb", "cc cc", "dd dd", "ee ee", "ff ff", "gg gg", "hh hh", "ii ii", "jj jj", "kk kk", "ll ll", "mm mm", "nn nn", "oo oo", "pp pp", "qq qq", "rr rr", "ssssssssssssssssssss", "tttttttttttttttttttt", }; icewm-1.3.7/lib/themes/nice2/closeA.xpm0000664000076600007660000000252711463274241016625 0ustar develdevel/* XPM */ static char *close_xpm[] = { "20 40 23 1", "a c #FFFFFF", "b c #FFFBF7", "c c #FFF7EF", "d c #FFF3E7", "e c #FFEFDF", "f c #FFEBD7", "g c #FFE7CF", "h c #FFE3C7", "i c #FFDFBF", "j c #FFDBB7", "k c #FFD7AF", "l c #FFD3A7", "m c #FFCF9F", "n c #FFCB97", "o c #FFC78F", "p c #FFC387", "q c #FFBF7F", "r c #FFBB77", "s c #FFB76F", "t c #FFB367", " c #FFC080", ". c #000000", "* c #FFC080", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "crccccccccccccccccrc", "dqddddddddddddddddqd", "epeeeeeeeeeeeeeeeepe", "fofff..ffffff..fffof", "gnggg...gggg...gggng", "hmhhhh...hh...hhhhmh", "iliiiii......iiiiili", "jkjjjjjj....jjjjjjkj", "kjkkkkkk....kkkkkkjk", "lilllll......lllllil", "mhmmmm...mm...mmmmhm", "ngnnn...nnnn...nnngn", "ofooo..ooooo ..ooofo", "peppppppppppppppppep", "qdqqqqqqqqqqqqqqqqdq", "rcrrrrrrrrrrrrrrrrcr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "cr rc", "dq qd", "ep pe", "fo .. .. of", "gn ... ... ng", "hm ... ... mh", "il ...... li", "jk .... kj", "kj .... jk", "li ...... il", "mh ... ... hm", "ng ... ... gn", "of .. .. fo", "pe ep", "qd dq", "rc cr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt" }; icewm-1.3.7/lib/themes/nice2/minimizeI.xpm0000664000076600007660000000251011463274241017341 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "20 40 22 1", "a c #FFFFFF", "b c #F7FBFF", "c c #EFF7FF", "d c #E7F3FF", "e c #DFEFFF", "f c #D7EBFF", "g c #CFE7FF", "h c #C7E3FF", "i c #BFDFFF", "j c #B7DBFF", "k c #AFD7FF", "l c #A7D3FF", "m c #9FCFFF", "n c #97CBFF", "o c #8FC7FF", "p c #87C3FF", "q c #7FBFFF", "r c #77BBFF", "s c #6FB7FF", "t c #67B3FF", "# c #000000", " c #80C0FF", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "crccccccccccccccccrc", "dqddddddddddddddddqd", "epeeeeeeeeeeeeeeeepe", "foffffffffffffffffof", "gnggggggggggggggggng", "hmhhhhhhhhhhhhhhhhmh", "iliiiiiiiiiiiiiiiili", "jkjjjjjjjjjjjjjjjjkj", "kjkkkkkkkkkkkkkkkkjk", "lillllllllllllllllil", "mhmmmmmmmmmmmmmmmmhm", "ngnnnnnnnnnnnnnnnngn", "ofoo#######ooooooofo", "pepp#######pppppppep", "qdqqqqqqqqqqqqqqqqdq", "rcrrrrrrrrrrrrrrrrcr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "cr rc", "dq qd", "ep pe", "fo of", "gn ng", "hm mh", "il li", "jk kj", "kj jk", "li il", "mh hm", "ng gn", "of ####### fo", "pe ####### ep", "qd dq", "rc cr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt", }; icewm-1.3.7/lib/themes/nice2/titleIB.xpm0000664000076600007660000000071711463274241016752 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "1 20 20 1", "a c #FFFFFF", "b c #F7FBFF", "c c #EFF7FF", "d c #E7F3FF", "e c #DFEFFF", "f c #D7EBFF", "g c #CFE7FF", "h c #C7E3FF", "i c #BFDFFF", "j c #B7DBFF", "k c #AFD7FF", "l c #A7D3FF", "m c #9FCFFF", "n c #97CBFF", "o c #8FC7FF", "p c #87C3FF", "q c #7FBFFF", "r c #77BBFF", "s c #6FB7FF", "t c #67B3FF", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", }; icewm-1.3.7/lib/themes/nice2/titleAB.xpm0000664000076600007660000000071711463274241016742 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "1 20 20 1", "a c #FFFFFF", "b c #FFFBF7", "c c #FFF7EF", "d c #FFF3E7", "e c #FFEFDF", "f c #FFEBD7", "g c #FFE7CF", "h c #FFE3C7", "i c #FFDFBF", "j c #FFDBB7", "k c #FFD7AF", "l c #FFD3A7", "m c #FFCF9F", "n c #FFCB97", "o c #FFC78F", "p c #FFC387", "q c #FFBF7F", "r c #FFBB77", "s c #FFB76F", "t c #FFB367", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", }; icewm-1.3.7/lib/themes/nice2/maximizeA.xpm0000664000076600007660000000251011463274241017333 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "20 40 22 1", "a c #FFFFFF", "b c #FFFBF7", "c c #FFF7EF", "d c #FFF3E7", "e c #FFEFDF", "f c #FFEBD7", "g c #FFE7CF", "h c #FFE3C7", "i c #FFDFBF", "j c #FFDBB7", "k c #FFD7AF", "l c #FFD3A7", "m c #FFCF9F", "n c #FFCB97", "o c #FFC78F", "p c #FFC387", "q c #FFBF7F", "r c #FFBB77", "s c #FFB76F", "t c #FFB367", "# c #000000", " c #FFC080", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "crccccccccccccccccrc", "dqddddddddddddddddqd", "epee############eepe", "foff############ffof", "gngg#gggggggggg#ggng", "hmhh#hhhhhhhhhh#hhmh", "ilii#iiiiiiiiii#iili", "jkjj#jjjjjjjjjj#jjkj", "kjkk#kkkkkkkkkk#kkjk", "lill#llllllllll#llil", "mhmm#mmmmmmmmmm#mmhm", "ngnn#nnnnnnnnnn#nngn", "ofoo#oooooooooo#oofo", "pepp############ppep", "qdqqqqqqqqqqqqqqqqdq", "rcrrrrrrrrrrrrrrrrcr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "cr rc", "dq qd", "ep ############ pe", "fo ############ of", "gn # # ng", "hm # # mh", "il # # li", "jk # # kj", "kj # # jk", "li # # il", "mh # # hm", "ng # # gn", "of # # fo", "pe ############ ep", "qd dq", "rc cr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt", }; icewm-1.3.7/lib/themes/nice2/menuButtonI.xpm0000664000076600007660000000256711463274241017674 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "20 40 21 1", "a c #FFFFFF", "b c #F7FBFF", "c c #EFF7FF", "d c #E7F3FF", "e c #DFEFFF", "f c #D7EBFF", "g c #CFE7FF", "h c #C7E3FF", "i c #BFDFFF", "j c #B7DBFF", "k c #AFD7FF", "l c #A7D3FF", "m c #9FCFFF", "n c #97CBFF", "o c #8FC7FF", "p c #87C3FF", "q c #7FBFFF", "r c #77BBFF", "s c #6FB7FF", "t c #67B3FF", " c #80C0FF", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb", "cccccccccccccccccccc", "dddddddddddddddddddd", "eeeeeeeeeeeeeeeeeeee", "ffffffffffffffffffff", "gggggggggggggggggggg", "hhhhhhhhhhhhhhhhhhhh", "iiiiiiiiiiiiiiiiiiii", "jjjjjjjjjjjjjjjjjjjj", "kkkkkkkkkkkkkkkkkkkk", "llllllllllllllllllll", "mmmmmmmmmmmmmmmmmmmm", "nnnnnnnnnnnnnnnnnnnn", "oooooooooooooooooooo", "pppppppppppppppppppp", "qqqqqqqqqqqqqqqqqqqq", "rrrrrrrrrrrrrrrrrrrr", "ssssssssssssssssssss", "tttttttttttttttttttt", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb", "cc cc", "dd dd", "ee ee", "ff ff", "gg gg", "hh hh", "ii ii", "jj jj", "kk kk", "ll ll", "mm mm", "nn nn", "oo oo", "pp pp", "qq qq", "rr rr", "ssssssssssssssssssss", "tttttttttttttttttttt", }; icewm-1.3.7/lib/themes/nice2/titleIT.xpm0000664000076600007660000000071711463274241016774 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "1 20 20 1", "a c #FFFFFF", "b c #F7FBFF", "c c #EFF7FF", "d c #E7F3FF", "e c #DFEFFF", "f c #D7EBFF", "g c #CFE7FF", "h c #C7E3FF", "i c #BFDFFF", "j c #B7DBFF", "k c #AFD7FF", "l c #A7D3FF", "m c #9FCFFF", "n c #97CBFF", "o c #8FC7FF", "p c #87C3FF", "q c #7FBFFF", "r c #77BBFF", "s c #6FB7FF", "t c #67B3FF", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", }; icewm-1.3.7/lib/themes/nice2/closeI.xpm0000664000076600007660000000252611463274241016634 0ustar develdevel/* XPM */ static char *close_xpm[] = { "20 40 23 1", "a c #FFFFFF", "b c #F7FBFF", "c c #EFF7FF", "d c #E7F3FF", "e c #DFEFFF", "f c #D7EBFF", "g c #CFE7FF", "h c #C7E3FF", "i c #BFDFFF", "j c #B7DBFF", "k c #AFD7FF", "l c #A7D3FF", "m c #9FCFFF", "n c #97CBFF", "o c #8FC7FF", "p c #87C3FF", "q c #7FBFFF", "r c #77BBFF", "s c #6FB7FF", "t c #67B3FF", " c #80C0FF", ". c #000000", "* c #FFC080", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "crccccccccccccccccrc", "dqddddddddddddddddqd", "epeeeeeeeeeeeeeeeepe", "fofff..ffffff..fffof", "gnggg...gggg...gggng", "hmhhhh...hh...hhhhmh", "iliiiii......iiiiili", "jkjjjjjj....jjjjjjkj", "kjkkkkkk....kkkkkkjk", "lilllll......lllllil", "mhmmmm...mm...mmmmhm", "ngnnn...nnnn...nnngn", "ofooo..ooooo ..ooofo", "peppppppppppppppppep", "qdqqqqqqqqqqqqqqqqdq", "rcrrrrrrrrrrrrrrrrcr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt", "aaaaaaaaaaaaaaaaaaaa", "bssssssssssssssssssb", "cr rc", "dq qd", "ep pe", "fo .. .. of", "gn ... ... ng", "hm ... ... mh", "il ...... li", "jk .... kj", "kj .... jk", "li ...... il", "mh ... ... hm", "ng ... ... gn", "of .. .. fo", "pe ep", "qd dq", "rc cr", "sbbbbbbbbbbbbbbbbbbs", "tttttttttttttttttttt" }; icewm-1.3.7/lib/themes/nice2/default.theme0000664000076600007660000000177111463274241017341 0ustar develdevelThemeDescription="A nice default theme" ThemeAuthor="Marko Macek" Look=pixmap BorderSizeX=4 BorderSizeY=4 TitleBarHeight=20 TitleBarHorzOffset=4 TitleButtonsSupported="xmis" ColorNormalBorder="rgb:60/C0/FF" ColorActiveBorder="rgb:FF/C0/80" ColorActiveTitleBar="rgb:FF/A0/40" ColorNormalTitleBar="rgb:40/A0/FF" ColorNormalButton="rgb:80/C0/FF" ColorActiveButton="rgb:FF/C0/A0" ColorNormalTitleBarText="rgb:00/00/00" ColorActiveTitleBarText="rgb:00/00/00" ColorNormalMenu="rgb:80/C0/FF" ColorActiveMenuItem="rgb:FF/C0/80" ColorNormalMenuItemText="rgb:00/00/00" ColorActiveMenuItemText="rgb:00/00/00" ColorDisabledMenuItemText="rgb:80/80/80" ColorMoveSizeStatus="rgb:C0/C0/C0" ColorMoveSizeStatusText="rgb:00/00/00" ColorDefaultTaskBar="rgb:40/A0/FF" ColorNormalTaskBarApp="rgb:80/C0/FF" ColorNormalTaskBarAppText="rgb:00/00/00" ColorActiveTaskBarApp="rgb:FF/C0/80" ColorActiveTaskBarAppText="rgb:00/00/00" ColorMinimizedTaskBarApp="rgb:00/80/C0" ColorMinimizedTaskBarAppText="rgb:00/00/00" ColorListBox="rgb:FF/FF/FF" icewm-1.3.7/lib/themes/nice/0000775000076600007660000000000011463274241014601 5ustar develdevelicewm-1.3.7/lib/themes/nice/close.xpm0000664000076600007660000000055411463274241016440 0ustar develdevel/* XPM */ static char *close_xpm[] = { "16 14 2 1", " c #C0C0C0", ". c #000000", " ", " ", " .. .. ", " ... ... ", " ... ... ", " ...... ", " .... ", " .... ", " ...... ", " ... ... ", " ... ... ", " .. .. ", " ", " "}; icewm-1.3.7/lib/themes/nice/minimize.xpm0000664000076600007660000000055711463274241017157 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "16 14 2 1", ". c #000000", " c #c0c0c0", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ........ ", " ........ ", " ", " "}; icewm-1.3.7/lib/themes/nice/hide.xpm0000664000076600007660000000055611463274241016246 0ustar develdevel/* XPM */ static char *maximize_xpm[] = { "16 14 2 1", ". c #000000", " c #c0c0c0", " ", " ", " ", " ... ... ", " . . ", " . . ", " ", " ", " . . ", " . . ", " ... ... ", " ", " ", " "}; icewm-1.3.7/lib/themes/nice/blue.theme0000664000076600007660000000132611463274241016556 0ustar develdevelLook=nice TitleBarHeight=20 ColorNormalBorder="rgb:00/00/80" ColorActiveBorder="rgb:00/00/A0" ColorActiveTitleBar="rgb:00/00/A0" ColorNormalTitleBar="rgb:A0/A0/A0" ColorNormalButton="rgb:C0/C0/C0" ColorNormalTitleBarText="rgb:00/00/00" ColorActiveTitleBarText="rgb:FF/FF/FF" ColorNormalMenu="rgb:00/00/A0" ColorActiveMenuItem="rgb:00/00/80" ColorNormalMenuItemText="rgb:FF/FF/FF" ColorActiveMenuItemText="rgb:FF/FF/FF" ColorDisabledMenuItemText="rgb:80/80/80" ColorMoveSizeStatus="rgb:C0/C0/C0" ColorMoveSizeStatusText="rgb:00/00/00" ColorDefaultTaskBar="rgb:C0/C0/C0" ColorNormalTaskBarApp="rgb:C0/C0/C0" ColorNormalTaskBarAppText="rgb:00/00/00" ColorActiveTaskBarApp="rgb:E0/E0/E0" ColorActiveTaskBarAppText="rgb:00/00/00" icewm-1.3.7/lib/themes/nice/rollup.xpm0000664000076600007660000000055711463274241016653 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "16 14 2 1", ". c #000000", " c #c0c0c0", " ", " ", " ............ ", " ............ ", " .. ", " .... ", " ...... ", " .. .. .. ", " .. .. .. ", " .. ", " .. ", " .. ", " ", " "}; icewm-1.3.7/lib/themes/nice/maximize.xpm0000664000076600007660000000055611463274241017160 0ustar develdevel/* XPM */ static char *maximize_xpm[] = { "16 14 2 1", ". c #000000", " c #c0c0c0", " ", " ", " ............ ", " ............ ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " . . ", " ............ ", " ", " "}; icewm-1.3.7/lib/themes/nice/restore.xpm0000664000076600007660000000055511463274241017017 0ustar develdevel/* XPM */ static char *restore_xpm[] = { "16 14 2 1", ". c #000000", " c #c0c0c0", " ", " ......... ", " ......... ", " . . ", " . . ", " ......... . ", " ......... . ", " . . . ", " . .... ", " . . ", " . . ", " ......... ", " ", " "}; icewm-1.3.7/lib/themes/nice/rolldown.xpm0000664000076600007660000000055711463274241017176 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "16 14 2 1", ". c #000000", " c #c0c0c0", " ", " ", " ............ ", " ............ ", " .. ", " .. ", " .. ", " .. .. .. ", " .. .. .. ", " ...... ", " .... ", " .. ", " ", " "}; icewm-1.3.7/lib/themes/nice/default.theme0000664000076600007660000000146711463274241017261 0ustar develdevelThemeDescription="A nice default theme" ThemeAuthor="Marko Macek" Look=nice TitleBarHeight=20 TitleButtonsSupported="xmisrh" ColorNormalBorder="rgb:C0/C0/C0" ColorActiveBorder="rgb:C0/C0/C0" ColorActiveTitleBar="rgb:00/00/A0" ColorNormalTitleBar="rgb:A0/A0/A0" ColorNormalButton="rgb:C0/C0/C0" ColorNormalTitleBarText="rgb:00/00/00" ColorActiveTitleBarText="rgb:FF/FF/FF" ColorNormalMenu="rgb:C0/C0/C0" ColorActiveMenuItem="rgb:A0/A0/A0" ColorNormalMenuItemText="rgb:00/00/00" ColorActiveMenuItemText="rgb:00/00/00" ColorDisabledMenuItemText="rgb:80/80/80" ColorMoveSizeStatus="rgb:C0/C0/C0" ColorMoveSizeStatusText="rgb:00/00/00" ColorDefaultTaskBar="rgb:C0/C0/C0" ColorNormalTaskBarApp="rgb:C0/C0/C0" ColorNormalTaskBarAppText="rgb:00/00/00" ColorActiveTaskBarApp="rgb:E0/E0/E0" ColorActiveTaskBarAppText="rgb:00/00/00" icewm-1.3.7/lib/themes/Infadel2/0000775000076600007660000000000011463274241015307 5ustar develdevelicewm-1.3.7/lib/themes/Infadel2/titleAM.xpm0000664000076600007660000000230711463274241017376 0ustar develdevel/* XPM */ static char * titleAM_xpm[] = { "18 17 53 1", " c None", ". c #868687", "+ c #4E4E4F", "@ c #484848", "# c #9A9A9B", "$ c #575758", "% c #344066", "& c #515151", "* c #AEAEAF", "= c #606061", "- c #425076", "; c #606060", "> c #C2C2C3", ", c #68686A", "' c #526185", ") c #707070", "! c #D6D6D7", "~ c #717173", "{ c #607194", "] c #808080", "^ c #EAEAEB", "/ c #7A7A7C", "( c #7081A3", "_ c #8E8E8E", ": c #FFFFFF", "< c #838385", "[ c #7284A6", "} c #9B9B9B", "| c #7587A9", "1 c #A9A9A9", "2 c #66779A", "3 c #B7B7B7", "4 c #57668A", "5 c #C5C5C5", "6 c #4A597D", "7 c #D2D2D2", "8 c #3D4A70", "9 c #303C63", "0 c #A7A7A7", "a c #727273", "b c #454547", "c c #273259", "d c #7F7F7F", "e c #5E5E5F", "f c #3C3C3E", "g c #969696", "h c #848484", "i c #6B6B6B", "j c #575757", "k c #4A4A4B", "l c #333335", "m c #363637", "n c #2A2A2C", "..............+...", "@@@@@@@@@@@@@#$###", "%%%%%%%%%%%%&*=***", "------------;>,>>>", "'''''''''''')!~!!!", "{{{{{{{{{{{{]^/^^^", "((((((((((((_:<:::", "[[[[[[[[[[[[}^/^^^", "||||||||||||1!~!!!", "2222222222223>,>>>", "4444444444445*=***", "6666666666667#$###", "8888888888885.+...", "9999999999990abaaa", "ccccccccccccdefeee", "}}}}}}}}}ghijklkkk", "mmmmmmmmmmmmmmnmmm"}; icewm-1.3.7/lib/themes/Infadel2/minimizeA.xpm0000664000076600007660000000221711463274241017761 0ustar develdevel/* XPM */ static char * minimizeA_xpm[] = { "15 34 31 1", " c None", ". c #858686", "+ c #9A9A9A", "@ c #AEAEAE", "# c #5D5D5E", "$ c #111214", "% c #040404", "& c #C2C2C2", "* c #181C22", "= c #2D333D", "- c #56657A", "; c #58667E", "> c #5D6E86", ", c #D6D6D6", "' c #1D2632", ") c #4A4A4A", "! c #6E809C", "~ c #EAEAEA", "{ c #717273", "] c #232D3A", "^ c #4D5868", "/ c #798EAA", "( c #7E96B6", "_ c #FEFEFE", ": c #8CA3C5", "< c #3C4553", "[ c #323F4F", "} c #0D0E13", "| c #435165", "1 c #363636", "2 c #677B98", "...............", "+++++++++++++++", "@@@@#$%%%$#@@@@", "&&&*=-;>;-=*&&&", ",,')->!!!>;)',,", "~{]^>!/(/!>^]{~", "_*)^>!(:(!>-)*_", "~%<^>,,,,,>^<%~", ",%<^-%@@@%-^[%,", "&%[<^-}@%-^<[%&", "@}][<|^%^|<[]$@", "+|$][<<|<<[=$)+", "..**]==[=]]**..", "{{{$}*'''*}${{{", "####=%%%%}]####", ")))))))))))))))", "111111111111111", "...............", "+++++++++++++++", "@@@@)}%%%}^@@@@", "&&&*'<)|)<'*&&&", ",,*1||^-^|)1*,,", "~{*[|^;>;^|<'{~", "_*1<|->2>-|<=*_", "~%=[|+++++|[=%~", ",%=[<%!.!%<[]%,", "&%'1[<%.%)[1'%&", "@}']11[%[[1]'}@", "+)}']==1==]'})+", "..}$*'''''*$}..", "{{{$}$**$$}}{{{", "####]%%%%}]####", ")))))))))))))))", "111111111111111"}; icewm-1.3.7/lib/themes/Infadel2/snap.pcf0000664000076600007660000002544411463274241016753 0ustar develdevelfcp´ˆd<Ä d Ðd@4€¼8"dô*".3?GMO]dsx ƒ ŽK›K¨°²>ÀÑÙêìö"' .c9BM[tˆ’ÐFONTNAME_REGISTRYFOUNDRYArtwizFAMILY_NAMESnapWEIGHT_NAMERegularSLANTRSETWIDTH_NAMENormalADD_STYLE_NAMESansPIXEL_SIZEPOINT_SIZERESOLUTION_XRESOLUTION_YSPACINGPAVERAGE_WIDTHCHARSET_REGISTRYISO8859CHARSET_ENCODING1COPYRIGHThttp://artwiz.artramp.org/LICENSEFACE_NAMESnapWEIGHTRESOLUTIONX_HEIGHTQUAD_WIDTH_XMBDFED_INFOEdited with xmbdfed 4.3._ORIGINAL_FONT_NAMEsnapFONT-Artwiz-Snap-Regular-R-Normal-Sans-10-10-75-75-P-62-ISO8859-1ÿÿùÿ ¿€€…€€‚ƒ‡€„…‡|†‡††‡‡‡ˆ†€‡ˆ†€ƒ„‡|„…ˆ‚„…ˆ‚€……‡|†‡†ƒ„‚‚…†„}‚ƒ€…†‡†‡†€ƒ„†€†‡†€†‡†€†‡†€†‡†€†‡†€…††€†‡†€†‡†€‚ƒ†€ƒ„†…†‡€†‡…~…†‡€…††€†‡†€†‡†€†‡†€†‡†€†‡†€…††€…††€†‡†€†‡†€‚ƒ†€„…††‡†€…††€ˆ‰†€†‡†€†‡†€†‡†€‡‡††‡†€†‡†€†‡†€†‡†€†‡†€ˆ‰†€†‡†€†‡‡€†‡†€„…ˆ‚…†‡„…ˆ‚†‡‡|‡ˆ€ƒ„‡|†‡…€†‡‡€†‡…€†‡‡€†‡…€€„…‡€†‡…‚†‡‡€‚ƒ‡€€ƒ„‡‚†‡‡€‚ƒ‡€ˆ‰…€†‡…€†‡…€†‡…‚†‡…‚………€†‡…€„…†€†‡…€†‡…€ˆ‰…€†‡…€†‡…‚†‡…€…†ˆ‚‚ƒˆ…†ˆ‚†‡†|€€…€€‚ƒ‡€†‡‡‚€……‡€††…€†‡‡‚ƒ‡€……‡€……‡z€‡‡‡†‡††††…†„~„„„}€‡‡‡…†ˆy„„‡|†‡‡€„†ˆ}„„ˆ}„†ˆy†‡…‚†‡†€ƒƒƒ~„„€‚ƒ„ˆ}††††††‡‡ˆ‡‡ˆ††ˆ…††€†‡ˆ€†‡ˆ€†‡ˆ€†‡ˆ€†‡ˆ€†‡ˆ€†‡†€†‡†‚…†ˆ€††ˆ€…†ˆ€††ˆ€‚‚ˆ€„„ˆ€„„ˆ€„„ˆ€€†††€†‡ˆ€†‡ˆ€†‡ˆ€†‡ˆ€†‡ˆ€†‡ˆ€‚……„†‡ˆ‚†‡ˆ€†‡ˆ€†‡ˆ€†‡ˆ€†‡ˆ€†‡‡†‡†‚†‡‡€†‡‡€†‡‡€†‡‡€†‡‡€†‡‡€†‡…€†‡…‚†‡‡€†‡‡€†‡‡€†‡‡€‚‚‡€„„‡€„„‡€„„‡€‡‡ˆ€†‡‡€†‡‡€†‡‡€†‡‡€†‡‡€†‡‡€…††€‡‡††‡‡€†‡‡€††‡€†‡‡€†‡‡‚†‡‡‚†‡‡‚¿(<\tŒ˜Àèô @Xpˆ ¸Ðè0Hd€Œ¨ÀØð 8Ph€˜°Ìäü,D\x¨ÀØð <T|œÄÐÔàô$@TpŒ¨Äè 4H\x”¨¼Ôèü$@T| ÈÐÐì , @ ` | œ   À Ü ð ø ü  , H \ p t ¨ ¬ ´ È ä ø  @ d | œ ¼ Ü ü  < T t ” ´ Ô ô  4 T t Œ ¬ Ì ì ,LX€ Àà @`|˜´Ðì8TpŒ¨Äàü8TpŒ¨Äàô,Hd€¤È»v ìØ%   " * &.  IIIII0  IIIII   ?  IIII IIII      A]QQ]A  A]]YUA  *(8 : 88 "/""    >  @>2*&> ÿ4  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿®®[[±±X®®®[X[X[[[[[[[X[[[[[[[[®[[[[[[[[[[[[[®®[±X[[[[[®[[X[[[[[®[®[[[[[[®[®[®®[[X[X[X[[XX[[[[[[[[[[¬XXX[[[[[[®[[[[[[[[[[[[[[[[[[[[¬XXX[[[[[[[[[[[[[[¿#*18?FMT[bipw~…Œ“𡍝¶½ÄËÒÙàçîõü &-4;BIPW^elszˆ–¤«²¹ÀÇÎÕÜäìôü $,4<DLT\dlt|„Œ”œ¤¬´¼ÄÌÔÜäìôü $,4<DLT\dlt|„Œ”œ¤¬´¼ÄÌÔÜäìôü $,4<DLT\dlt|„Œ”œ¤¬´¼ÄÌÔÜäìôü $,4<DLT\dlt|„Œ”œ¤¬´char32char33char34char35char36char37char38char39char40char41char42char43char44char45char46char47char48char49char50char51char52char53char54char55char56char57char58char59char60char61char62char63char64char65char66char67char68char69char70char71char72char73char74char75char76char77char78char79char80char81char82char83char84char85char86char87char88char89char90char91char92char93char94char95char96char97char98char99char100char101char102char103char104char105char106char107char108char109char110char111char112char113char114char115char116char117char118char119char120char121char122char123char124char125char126char160char161char162char163char164char165char166char167char168char169char170char171char172char173char174char175char176char177char178char179char180char181char182char183char184char185char186char187char188char189char190char191char192char193char194char195char196char197char198char199char200char201char202char203char204char205char206char207char208char209char210char211char212char213char214char215char216char217char218char219char220char221char222char223char224char225char226char227char228char229char230char231char232char233char234char235char236char237char238char239char240char241char242char243char244char245char246char247char248char249char250char251char252char253char254char255ÿÿùÿ icewm-1.3.7/lib/themes/Infadel2/rollupA.xpm0000664000076600007660000000221511463274241017453 0ustar develdevel/* XPM */ static char * rollupA_xpm[] = { "15 34 31 1", " c None", ". c #858686", "+ c #9A9A9A", "@ c #AEAEAE", "# c #5D5D5E", "$ c #111214", "% c #040404", "& c #C2C2C2", "* c #181C22", "= c #2D333D", "- c #56657A", "; c #58667E", "> c #5D6E86", ", c #D6D6D6", "' c #1D2632", ") c #4A4A4A", "! c #6E809C", "~ c #EAEAEA", "{ c #717273", "] c #232D3A", "^ c #4D5868", "/ c #C7CDD4", "( c #FEFEFE", "_ c #0D0E13", ": c #435165", "< c #3C4553", "[ c #677B98", "} c #798EAA", "| c #323F4F", "1 c #363636", "2 c #8CA3C5", "...............", "+++++++++++++++", "@@@@#$%%%$#@@@@", "&&&*=-;>;-=*&&&", ",,')->!!!>;)',,", "~{]^/,,,,,/^]{~", "(*)^_%__%_%^:*(", "~%<^;[},}!>^<%~", ",%<^;>,@/[-^<%,", "&%|<^/@@@/^<=%&", "@_]|<_%%%%<|]$@", "+)*]|<<<<||=$)+", "..$*'=||==]**..", "{{{$_**''*_${{{", "##-#=_%%%%=####", ")))))))))))))))", "111111=11111111", "...............", "+++++++++++++++", "@@@@)_%%%_^@@@@", "&&&*'<):)<'*&&&", ",,*=):^-^^)1*,,", "~{'|+2+2+++<'{~", "($=<%%%%%%%<=*(", "~%=|:^;+;^:|=%~", ",%=|<:+.+:<|]%,", "&%'1<+!!.+|1'%&", "@_']=%%%%%1]'_@", "+)_*]====]]'_)+", "..$$*'']''*$_..", "{{{__$$*$$_${{{", "####]%%%%_]####", ")))))))))))))))", "111111111111111"}; icewm-1.3.7/lib/themes/Infadel2/cursors/0000775000076600007660000000000011463274241017007 5ustar develdevelicewm-1.3.7/lib/themes/Infadel2/cursors/sizeT.xpm0000664000076600007660000000076411463274241020642 0ustar develdevel/* XPM */ static char * sizeT_xpm[] = { "21 16 3 1 9 0", " c None", ". c #a2adbc", "+ c #000044", ".................... ", ".++++++++++++++++++.+", ".++++++++..++++++++.+", "...........+........+", " +++++++.++.+++++++++", " .++.+ ", " .++++. ", " .++++.+ ", " .++++++. ", " .++++++.+ ", " .+..++..+. ", " ..+.++.+..+ ", " ++.++.+ ++ ", " .++.+ ", " ..++ ", " ++ "}; icewm-1.3.7/lib/themes/Infadel2/cursors/right.xpm0000664000076600007660000000064511463274241020657 0ustar develdevel/* XPM */ static char * right_xpm[] = { "16 16 3 1 13 1", " c None", ". c #a2adbc", "+ c #000044", " ... ", " ..++.+", " ..++++.+", " ..+++++.++", " ..+++++++.+ ", " ..++++++++.++ ", " ..+++++++++.+ ", " +..++++++.++ ", " .++++++.+ ", " .++++++.++ ", " .+++..++.+ ", " .+++.+.+.++ ", ".+++.++ ..+ ", ".++.++ .++ ", " ..++ + ", " ++ "}; icewm-1.3.7/lib/themes/Infadel2/cursors/sizeTR.xpm0000664000076600007660000000110611463274241020753 0ustar develdevel/* XPM */ static char * sizeTR_xpm[] = { "20 20 3 1 19 0", " c None", ". c #a2adbc", "+ c #000044", "................... ", ".+++++++++++++++++.+", ".+++++++++++++...+.+", "..............++.+.+", " +++++++++..++++.+.+", " ..+++++.++.+", " ..+++++++.++.+", " .++++++++.+++.+", " ..+++++++.+++.+", " +.+++++.++++.+", " .++++++.+.++.+", " .+++.++.++.++.+", " .+++.+.+.+ .++.+", " .++.++..++ .++.+", " ..++ ++ .++.+", " ++ .++.+", " .++.+", " .++.+", " ....+", " ++++"}; icewm-1.3.7/lib/themes/Infadel2/cursors/sizeL.xpm0000664000076600007660000000101011463274241020613 0ustar develdevel/* XPM */ static char * sizeL_xpm[] = { "16 21 3 1 0 9", " c None", ". c #a2adbc", "+ c #000044", ".... ", ".++.+ ", ".++.+ ", ".++.+ ", ".++.+ ", ".++.+ .. ", ".++.+ ..+.+ ", ".++.+ ..++.++ ", ".++...++++.... ", ".+..++++++++++. ", ".+..++++++++++.+", ".+++..++++....++", ".++.++..++.++++ ", ".++.+ +..+. ", ".++.+ +..+ ", ".++.+ ++ ", ".++.+ ", ".++.+ ", ".++.+ ", "....+ ", " ++++ "}; icewm-1.3.7/lib/themes/Infadel2/cursors/sizeB.xpm0000664000076600007660000000076511463274241020621 0ustar develdevel/* XPM */ static char * sizeB_xpm[] = { "21 16 3 1 9 15", " c None", ". c #a2adbc", "+ c #000044", " .. ", " .++. ", " .++.+ ", " .. .++.+.. ", " .+..++..+.+ ", " .++++++.++ ", " .++++++.+ ", " .++++.++ ", " .++++.+ ", " .++.++ ", " .++.+ ", "...........++....... ", ".++++++++..++++++++.+", ".++++++++++++++++++.+", "....................+", " ++++++++++++++++++++"}; icewm-1.3.7/lib/themes/Infadel2/cursors/left.xpm0000664000076600007660000000054211463274241020470 0ustar develdevel/* XPM */ static char * left_xpm[] = { "11 17 3 1 1 1", " c None", "+ c #000044", ". c #a2adbc", ".. ", ".+. ", ".++. ", ".+++. ", ".++++. ", ".+++++. ", ".++++++. ", ".+++++++. ", ".++++++++. ", ".+++++....+", ".++.++.++++", ".+.+.++. ", "..++.++.+ ", " ++ .++. ", " .++.+ ", " ..++ ", " ++ "}; icewm-1.3.7/lib/themes/Infadel2/cursors/sizeR.xpm0000664000076600007660000000101111463274241020622 0ustar develdevel/* XPM */ static char * sizeR_xpm[] = { "16 21 3 1 15 9", " c None", ". c #a2adbc", "+ c #000044", " .... ", " .++.+", " .++.+", " .++.+", " .++.+", " .. .++.+", " .+.. .++.+", " .++.. .++.+", " ....++++...++.+", ".++++++++++..+.+", ".++++++++++..+.+", " ....++++..+++.+", " ++.++..+++++.+", " .+..+++ .++.+", " ..+++ .++.+", " ++ .++.+", " .++.+", " .++.+", " .++.+", " ....+", " ++++"}; icewm-1.3.7/lib/themes/Infadel2/cursors/sizeBL.xpm0000664000076600007660000000110611463274241020723 0ustar develdevel/* XPM */ static char * sizeBL_xpm[] = { "20 20 3 1 0 19", " c None", ". c #a2adbc", "+ c #000044", ".... ", ".++.+ ", ".++.+ ", ".++.+ ", ".++.+ .. ", ".++.+ .. .++. ", ".++.+ .+.+.+++.+ ", ".++.+ .++.+++.++ ", ".++.+.++++++.++ ", ".++.+.+++++.++ ", ".++..+++++++.. ", ".++..++++++++.+ ", ".++.+++++++..++ ", ".++.+++++..+++ ", ".+.++++..+++ ", ".+.++..+++......... ", ".+...+++++++++++++.+", ".+++++++++++++++++.+", "...................+", " +++++++++++++++++++"}; icewm-1.3.7/lib/themes/Infadel2/cursors/move.xpm0000664000076600007660000000132211463274241020501 0ustar develdevel/* XPM */ static char * move_xpm[] = { "23 23 3 1 10 10", " c None", ". c #a2adbc", "+ c #000044", " .. ", " ..+ ", " .++. ", " .++.+ ", " .++++. ", " .++++.+ ", " .++++++. ", " ....++.... ", " ..+.+.++.+.+.. ", " ..+++...++...+++.. ", "..++++++++++++++++++.. ", "..++++++++++++++++++..+", " +..+++...++...+++..+++", " +..+.+.++.+.+..+++ ", " +....++....+++ ", " .++++++.++ ", " .++++.++ ", " .++++.+ ", " .++.++ ", " .++.+ ", " ..++ ", " ..+ ", " ++ "}; icewm-1.3.7/lib/themes/Infadel2/cursors/sizeBR.xpm0000664000076600007660000000110711463274241020732 0ustar develdevel/* XPM */ static char * sizeBR_xpm[] = { "20 20 3 1 19 19", " c None", ". c #a2adbc", "+ c #000044", " .... ", " .++.+", " .++.+", " .++.+", " .. .++.+", " .++. .. .++.+", " .+++. .+. .++.+", " .+++.++.+ .++.+", " .++++++. .++.+", " .+++++.+.++.+", " ..+++++++..++.+", " .++++++++.+++.+", " ..+++++++.++.+", " +..+++++.++.+", " +..++++.+.+", "...........+..++.+.+", ".+++++++++++++...+.+", ".+++++++++++++++++.+", "...................+", " +++++++++++++++++++"}; icewm-1.3.7/lib/themes/Infadel2/cursors/sizeTL.xpm0000664000076600007660000000110511463274241020744 0ustar develdevel/* XPM */ static char * sizeTL_xpm[] = { "20 20 3 1 0 0", " c None", ". c #a2adbc", "+ c #000044", "................... ", ".+++++++++++++++++.+", ".+...+++++++++++++.+", ".+.++..............+", ".+.++++..+++++++++++", ".++.+++++.. ", ".++.+++++++.. ", ".++..++++++++. ", ".++..+++++++..+ ", ".++.+.+++++.+++ ", ".++.+.++++++. ", ".++.+ .++.+++. ", ".++.+ .+.+.+++. ", ".++.+ ..+ .++.+ ", ".++.+ ++ ..++ ", ".++.+ ++ ", ".++.+ ", ".++.+ ", "....+ ", " ++++ "}; icewm-1.3.7/lib/themes/Infadel2/restoreI.xpm0000664000076600007660000000221611463274241017632 0ustar develdevel/* XPM */ static char * restoreI_xpm[] = { "15 34 31 1", " g None", ". g #858585", "+ g #9A9A9A", "@ g #AEAEAE", "# g #5D5D5D", "$ g #111111", "% g #040404", "& g #C2C2C2", "* g #1B1B1B", "= g #323232", "- g #626262", "; g #646464", "> g #6B6B6B", ", g #D6D6D6", "' g #242424", ") g #4A4A4A", "! g #7D7D7D", "~ g #EAEAEA", "{ g #717171", "] g #2B2B2B", "^ g #565656", "/ g #8A8A8A", "( g #FEFEFE", "_ g #434343", ": g #0E0E0E", "< g #3C3C3C", "[ g #CBCBCB", "} g #4F4F4F", "| g #363636", "1 g #9F9F9F", "2 g #929292", "...............", "+++++++++++++++", "@@@@#$%%%$#@@@@", "&&&*=-;>;-=*&&&", ",,')->!!!>;)',,", "~{]^>!/,/!>^]{~", "(*)^>!,@,!>-)*(", "~%_^>,@@@,>^_%~", ",%_^;%:%%%-^<%,", "&%<_^[[[[[^_<%&", "@:]<_:@@@%_<]$@", "+}$]<<%@%_<]$)+", "..**]]=%=]]**..", "{{{$:*'''*:${{{", "####=%%%%:=####", ")))))))))))))))", "|||||||||||||||", "...............", "+++++++++++++++", "@@@@):%%%$)@@@@", "&&&*'_)})}'*[&&", ",,*|_^^^^}_|*,,", "~{'_}^>1;#}<'{~", "($=<}-+.+^}_=*(", "~%=_)+!..+}<=%~", ",%=<_%%%%%)|]%,", "&%'<<++2+/_=]%&", "@:*]=%.{.%|]*:@", "+):'']%{%]]':)+", "..$$*''%''*$$..", "{{{$:$***$::{{{", "####]%%%%:]####", ")))))))))))))))", "|||||||||||||||"}; icewm-1.3.7/lib/themes/Infadel2/rolldownI.xpm0000664000076600007660000000221711463274241020010 0ustar develdevel/* XPM */ static char * rolldownI_xpm[] = { "15 34 31 1", " g None", ". g #858585", "+ g #9A9A9A", "@ g #AEAEAE", "# g #5D5D5D", "$ g #111111", "% g #040404", "& g #C2C2C2", "* g #1B1B1B", "= g #323232", "- g #626262", "; g #646464", "> g #6B6B6B", ", g #D6D6D6", "' g #242424", ") g #4A4A4A", "! g #7D7D7D", "~ g #EAEAEA", "{ g #717171", "] g #2B2B2B", "^ g #565656", "/ g #8A8A8A", "( g #929292", "_ g #FEFEFE", ": g #434343", "< g #3C3C3C", "[ g #0E0E0E", "} g #CBCBCB", "| g #4F4F4F", "1 g #363636", "2 g #9F9F9F", "...............", "+++++++++++++++", "@@@@#$%%%$#@@@@", "&&&*=-;>;-=*&&&", ",,')->!!!>;)',,", "~{]^>!/(/!>^]{~", "_*)^>,,~,,>-)*_", "~%:^>%@@@%>^:%~", ",%:^->%@%>;^<%,", "&%<:^;>%>-^:<%&", "@[]<&&}}}&&<][@", "+|$]%%%%%%%=$)+", "..**]]====]**..", "{{{$[*']'*[${{{", "####=%%%%%=####", ")))))))))))))))", "111111=11111111", "...............", "+++++++++++++++", "@@@@)[%%%[^@@@@", "&&&*':)|):'*&&&", ",,*=)|^-^|)1*,,", "~{':|^;>;^|:'{~", "_$=:|+2+2+|:=*_", "~%=:|%...%)<=%~", ",%]<:|%.%|)<]%,", "&%'1<:)%):<<'%&", "@[''+/+/+(.]*[@", "+)['%%%%%%%'[)+", "..$$*'''''*$$..", "{{{[[$***$[[{{{", "####]%%%%%]####", ")))))))))))))))", "111111111111111"}; icewm-1.3.7/lib/themes/Infadel2/mailbox/0000775000076600007660000000000011463274241016742 5ustar develdevelicewm-1.3.7/lib/themes/Infadel2/mailbox/unreadmail.xpm0000664000076600007660000000063011463274241021610 0ustar develdevel/* XPM */ static char * unreadmail_xpm[] = { "16 16 2 1", " c None", "+ c #ffcc66", " ", " ", " ", " ", " ++++++++++ ", " + + ", " ++ ++ ", " + + + + ", " + + + + ", " + ++ + ", " + + ", " ++++++++++ ", " ", " ", " ", " "}; icewm-1.3.7/lib/themes/Infadel2/mailbox/errmail.xpm0000664000076600007660000000062511463274241021126 0ustar develdevel/* XPM */ static char * errmail_xpm[] = { "16 16 2 1", " c None", "+ c #ff6666", " ", " ", " ", " ", " ++++++++++ ", " + + ", " ++ ++ ", " + + + + ", " + + + + ", " + ++ + ", " + + ", " ++++++++++ ", " ", " ", " ", " "}; icewm-1.3.7/lib/themes/Infadel2/mailbox/nomail.xpm0000664000076600007660000000062411463274241020751 0ustar develdevel/* XPM */ static char * nomail_xpm[] = { "16 16 2 1", " c None", "+ c #999999", " ", " ", " ", " ", " ++++++++++ ", " + + ", " ++ ++ ", " + + + + ", " + + + + ", " + ++ + ", " + + ", " ++++++++++ ", " ", " ", " ", " "}; icewm-1.3.7/lib/themes/Infadel2/mailbox/mail.xpm0000664000076600007660000000062211463274241020412 0ustar develdevel/* XPM */ static char * mail_xpm[] = { "16 16 2 1", " c None", "+ c #cccccc", " ", " ", " ", " ", " ++++++++++ ", " + + ", " ++ ++ ", " + + + + ", " + + + + ", " + ++ + ", " + + ", " ++++++++++ ", " ", " ", " ", " "}; icewm-1.3.7/lib/themes/Infadel2/mailbox/newmail.xpm0000664000076600007660000000062511463274241021127 0ustar develdevel/* XPM */ static char * newmail_xpm[] = { "16 16 2 1", " c None", "+ c #99ff99", " ", " ", " ", " ", " ++++++++++ ", " + + ", " ++ ++ ", " + + + + ", " + + + + ", " + ++ + ", " + + ", " ++++++++++ ", " ", " ", " ", " "}; icewm-1.3.7/lib/themes/Infadel2/maximizeI.xpm0000664000076600007660000000221711463274241017773 0ustar develdevel/* XPM */ static char * maximizeI_xpm[] = { "15 34 31 1", " g None", ". g #858585", "+ g #9A9A9A", "@ g #AEAEAE", "# g #5D5D5D", "$ g #111111", "% g #040404", "& g #C2C2C2", "* g #1B1B1B", "= g #323232", "- g #626262", "; g #646464", "> g #6B6B6B", ", g #D6D6D6", "' g #242424", ") g #4A4A4A", "! g #7D7D7D", "~ g #EAEAEA", "{ g #717171", "] g #2B2B2B", "^ g #565656", "/ g #8A8A8A", "( g #929292", "_ g #FEFEFE", ": g #8D8D8D", "< g #434343", "[ g #4F4F4F", "} g #CBCBCB", "| g #3C3C3C", "1 g #0E0E0E", "2 g #363636", "...............", "+++++++++++++++", "@@@@#$%%%$#@@@@", "&&&*=-;>;-=*&&&", ",,')->!!!>;)',,", "~{]^>!/(/!>^]{~", "_*)^>!(~:!>-)*_", "~%<^>!,@,!>^<%~", ",%<[-}@@@};^|%,", "&%|[^%%%%%^<|%&", "@$]|<^^^^^<|]$@", "+)$]|<<[<<|]$)+", "..**'==|=]]**..", "{{{$1*'''*1${{{", "####=%%%%1=####", ")))))))))))))))", "222222222222222", "...............", "+++++++++++++++", "@@@@)1%%%$)@@@@", "&&&*'<)[)['*}&&", ",,*2<^^^^[<2*,,", "~{'<[^>>;-)<*{~", "_$=|[->+;-[<2*_", "~%=<[^+.+^[|=%~", ",%]|<+.!!+<|]%,", "&%'=|%%%%%|2'%&", "@1']=||<||2]'1@", "+)1']==2=]]'1)+", "..$1*'''''*$1..", "{{{11$***$1${{{", "####]%%%%%]####", ")))))))))))))))", "222222222222222"}; icewm-1.3.7/lib/themes/Infadel2/hideA.xpm0000664000076600007660000000223211463274241017046 0ustar develdevel/* XPM */ static char * hideA_xpm[] = { "15 34 32 1", " c None", ". c #858686", "+ c #9A9A9A", "@ c #AEAEAE", "# c #5D5D5E", "$ c #111214", "% c #040404", "& c #C2C2C2", "* c #181C22", "= c #2D333D", "- c #56657A", "; c #58667E", "> c #5D6E86", ", c #D6D6D6", "' c #1D2632", ") c #4A4A4A", "! c #6E809C", "~ c #EAEAEA", "{ c #717273", "] c #232D3A", "^ c #4D5868", "/ c #C7CDD4", "( c #798EAA", "_ c #7E96B6", ": c #FEFEFE", "< c #8CA3C5", "[ c #0D0E13", "} c #435165", "| c #3C4553", "1 c #323F4F", "2 c #363636", "3 c #677B98", "...............", "+++++++++++++++", "@@@@#$%%%$#@@@@", "&&&*=-;>;-=*&&&", ",,')->!!!>;)',,", "~{]^/,(_(,/^]{~", ":*)^@%_<_[@^}*:", "~%|^%!(_(!%^|%~", ",%|^->!!!>;^|%,", "&%1|^;>>>;^|=%&", "@[]1&}^^^^&1]$@", "+)*]@&|}|&@=$)+", "..$*%%=1=%%**..", "{{{$[*'''*[${{{", "####=%%%%%=####", ")))))))))))))))", "222222=22222222", "...............", "+++++++++++++++", "@@@@)[%%%[^@@@@", "&&&*'|)})|'*&&&", ",,*2}}^-^^)2*,,", "~{*|++;>-++|'{~", ":*21!%>3>%!1=*:", "~%=|%^->-^%|=%~", ",%]1|}^^^})2]%,", "&%'2|}}}}||=]%&", "@['].11||1(]*[@", "+)['..===..'[)+", "..[[%%']'%%$$..", "{{{[%****$[[{{{", "####]%%%%%]####", ")))))))))))))))", "222222222222222"}; icewm-1.3.7/lib/themes/Infadel2/depthA.xpm0000664000076600007660000000223311463274241017242 0ustar develdevel/* XPM */ static char * depthA_xpm[] = { "15 34 32 1", " c None", ". c #858686", "+ c #9A9A9A", "@ c #AEAEAE", "# c #363636", "$ c #0D0E13", "% c #040404", "& c #C2C2C2", "* c #4A4A4A", "= c #2D333D", "- c #56657A", "; c #5D6E86", "> c #D6D6D6", ", c #4D5868", "' c #677B98", ") c #6E809C", "! c #58667E", "~ c #EAEAEA", "{ c #232D3A", "] c #798EAA", "^ c #7E96B6", "/ c #FEFEFE", "( c #3C4553", "_ c #8CA3C5", ": c #111214", "< c #323F4F", "[ c #435165", "} c #C7CDD4", "| c #717273", "1 c #181C22", "2 c #1D2632", "3 c #5D5D5E", "...............", "+++++++++++++++", "@@@@.#$%$#.@@@@", "&&&*=-;;;-=*&&&", ">>,*-;')';!*,>>", "~@{,;)]^]);,{@~", "/*(-;)^_^);,(,/", "~:(,;)<(<);,*:~", ">%([!=)))}![(%>", "&:=*[-}}&-,[=$&", "@#=<*[,-,[(<{#@", "+|:{<(((*(<=:|+", "..#1{=<==={1#..", "|||{$12221$=|||", "3333(1%%%1(3333", "***************", "###############", "...............", "+++++++++++++++", "@@@@|{$%%=|@@@@", "&&&(2**[[(2(&&&", ">>*=([,3,,*#*>>", "~+1([3!;!,[(2+~", "/(#([,;'!-[(#(/", "~:=([,{={,[<=:~", ">%{<(2,-,+(<=%>", "&$2#((^+.[<=2$&", "@=2{=#<<(<#{1=@", "+3$2{===={{2$!+", "..=:122{221:=..", "|||{%1111:$2|||", "3333#1%%%:*3333", "***************", "###############"}; icewm-1.3.7/lib/themes/Infadel2/titleIP.xpm0000664000076600007660000000213611463274241017411 0ustar develdevel/* XPM */ static char * titleIP_xpm[] = { "18 17 46 1", " c None", ". c #868686", "+ c #4E4E4E", "@ c #9A9A9A", "# c #575757", "$ c #484848", "% c #AEAEAE", "& c #606060", "* c #515151", "= c #4D4D4D", "- c #C2C2C2", "; c #696969", "> c #5C5C5C", ", c #D6D6D6", "' c #727272", ") c #707070", "! c #6B6B6B", "~ c #EAEAEA", "{ c #7B7B7B", "] c #808080", "^ c #7A7A7A", "/ c #FFFFFF", "( c #848484", "_ c #8E8E8E", ": c #898989", "< c #9B9B9B", "[ c #8C8C8C", "} c #A9A9A9", "| c #8F8F8F", "1 c #B7B7B7", "2 c #C5C5C5", "3 c #D2D2D2", "4 c #636363", "5 c #565656", "6 c #464646", "7 c #A7A7A7", "8 c #494949", "9 c #5E5E5E", "0 c #3D3D3D", "a c #7F7F7F", "b c #404040", "c c #4A4A4A", "d c #343434", "e c #969696", "f c #363636", "g c #2B2B2B", "...+..............", "@@@#@$$$$$$$$$$$$$", "%%%&%*============", "---;-&>>>>>>>>>>>>", ",,,',)!!!!!!!!!!!!", "~~~{~]^^^^^^^^^^^^", "///(/_::::::::::::", "~~~{~<[[[[[[[[[[[[", ",,,',}||||||||||||", "---;-1]]]]]]]]]]]]", "%%%&%2))))))))))))", "@@@#@3444444444444", "...+.2555555555555", "'''6'7888888888888", "99909abbbbbbbbbbbb", "cccdc#!(e<<<<<<<<<", "fffgffffffffffffff"}; icewm-1.3.7/lib/themes/Infadel2/titleAP.xpm0000664000076600007660000000230711463274241017401 0ustar develdevel/* XPM */ static char * titleAP_xpm[] = { "18 17 53 1", " c None", ". c #868687", "+ c #4E4E4F", "@ c #9A9A9B", "# c #575758", "$ c #484848", "% c #AEAEAF", "& c #606061", "* c #515151", "= c #344066", "- c #C2C2C3", "; c #68686A", "> c #606060", ", c #425076", "' c #D6D6D7", ") c #717173", "! c #707070", "~ c #526185", "{ c #EAEAEB", "] c #7A7A7C", "^ c #808080", "/ c #607194", "( c #FFFFFF", "_ c #838385", ": c #8E8E8E", "< c #7081A3", "[ c #9B9B9B", "} c #7284A6", "| c #A9A9A9", "1 c #7587A9", "2 c #B7B7B7", "3 c #66779A", "4 c #C5C5C5", "5 c #57668A", "6 c #D2D2D2", "7 c #4A597D", "8 c #3D4A70", "9 c #727273", "0 c #454547", "a c #A7A7A7", "b c #303C63", "c c #5E5E5F", "d c #3C3C3E", "e c #7F7F7F", "f c #273259", "g c #4A4A4B", "h c #333335", "i c #575757", "j c #6B6B6B", "k c #848484", "l c #969696", "m c #363637", "n c #2A2A2C", "...+..............", "@@@#@$$$$$$$$$$$$$", "%%%&%*============", "---;->,,,,,,,,,,,,", "''')'!~~~~~~~~~~~~", "{{{]{^////////////", "(((_(:<<<<<<<<<<<<", "{{{]{[}}}}}}}}}}}}", "''')'|111111111111", "---;-2333333333333", "%%%&%4555555555555", "@@@#@6777777777777", "...+.4888888888888", "99909abbbbbbbbbbbb", "cccdceffffffffffff", "ggghgijkl[[[[[[[[[", "mmmnmmmmmmmmmmmmmm"}; icewm-1.3.7/lib/themes/Infadel2/restoreA.xpm0000664000076600007660000000221611463274241017622 0ustar develdevel/* XPM */ static char * restoreA_xpm[] = { "15 34 31 1", " c None", ". c #858686", "+ c #9A9A9A", "@ c #AEAEAE", "# c #5D5D5E", "$ c #111214", "% c #040404", "& c #C2C2C2", "* c #181C22", "= c #2D333D", "- c #56657A", "; c #58667E", "> c #5D6E86", ", c #D6D6D6", "' c #1D2632", ") c #4A4A4A", "! c #6E809C", "~ c #EAEAEA", "{ c #717273", "] c #232D3A", "^ c #4D5868", "/ c #798EAA", "( c #FEFEFE", "_ c #3C4553", ": c #0D0E13", "< c #323F4F", "[ c #C7CDD4", "} c #435165", "| c #363636", "1 c #8CA3C5", "2 c #7E96B6", "...............", "+++++++++++++++", "@@@@#$%%%$#@@@@", "&&&*=-;>;-=*&&&", ",,')->!!!>;)',,", "~{]^>!/,/!>^]{~", "(*)^>!,@,!>-)*(", "~%_^>,@@@,>^_%~", ",%_^;%:%%%-^<%,", "&%<_^[[[[[^_<%&", "@:]<_:@@@%_<]$@", "+}$]<<%@%_<]$)+", "..**]]=%=]]**..", "{{{$:*'''*:${{{", "####=%%%%:=####", ")))))))))))))))", "|||||||||||||||", "...............", "+++++++++++++++", "@@@@):%%%$)@@@@", "&&&*'_)})}'*[&&", ",,*|_^^^^}_|*,,", "~{'_}^>1;#}<'{~", "($=<}-+.+^}_=*(", "~%=_)+!..+}<=%~", ",%=<_%%%%%)|]%,", "&%'<<++2+/_=]%&", "@:*]=%.{.%|]*:@", "+):'']%{%]]':)+", "..$$*''%''*$$..", "{{{$:$***$::{{{", "####]%%%%:]####", ")))))))))))))))", "|||||||||||||||"}; icewm-1.3.7/lib/themes/Infadel2/titleIQ.xpm0000664000076600007660000000063211463274241017411 0ustar develdevel/* XPM */ static char * titleAQ_xpm[] = { "2 17 17 1", " c None", ". c #4F4F51", "+ c #858687", "@ c #999A9A", "# c #5E5E5E", "$ c #AEAEAE", "% c #717172", "& c #C2C2C2", "* c #D6D6D6", "= c #E9EAEA", "- c #909090", "; c #FEFEFE", "> c #717374", ", c #373739", "' c #5C5F64", ") c #494B4D", "! c #343638", ".+", ".@", "#$", "%&", "%*", "%=", "-;", "%=", "%*", "%&", "#$", ".@", ".+", ".>", ",'", ",)", ",!"}; icewm-1.3.7/lib/themes/Infadel2/taskbar/0000775000076600007660000000000011463274241016736 5ustar develdevelicewm-1.3.7/lib/themes/Infadel2/taskbar/windows.xpm0000664000076600007660000000106311463274241021156 0ustar develdevel/* XPM */ static char * windows_xpm[] = { "20 20 2 1", " c None", ". c #727272", " ", " ", " .......... ", " .......... ", " . . ", " . . ", " . .......... ", " . .......... ", " . . . ", " . . . ", " ..... .......... ", " . .......... ", " . . . ", " . . . ", " ..... . ", " . . ", " . . ", " . . ", " .......... ", " "}; icewm-1.3.7/lib/themes/Infadel2/taskbar/start.xpm0000664000076600007660000001614511463274241020630 0ustar develdevel/* XPM */ static char * linux_xpm[] = { "48 20 326 2", " c None", ". c #000000", "+ c #57606C", "@ c #555E6A", "# c #535D69", "$ c #525B67", "% c #505A66", "& c #4F5865", "* c #4D5764", "= c #4C5662", "- c #4B5561", "; c #495460", "> c #48525F", ", c #46515E", "' c #454F5D", ") c #434E5B", "! c #424C5A", "~ c #404A58", "{ c #3E4956", "] c #3C4654", "^ c #3A4452", "/ c #374250", "( c #353F4E", "_ c #313D4B", ": c #343E4D", "< c #3B4553", "[ c #3E4856", "} c #495260", "| c #4B5562", "1 c #4F5966", "2 c #525B68", "3 c #565F6B", "4 c #57616C", "5 c #59626E", "6 c #5B646F", "7 c #5C6571", "8 c #5E6772", "9 c #606974", "0 c #626A75", "a c #636B77", "b c #656D78", "c c #676F7A", "d c #69717C", "e c #545E6A", "f c #535C68", "g c #515A66", "h c #505965", "i c #4E5864", "j c #4D5763", "k c #4A5561", "l c #495360", "m c #47515E", "n c #45505D", "o c #444F5C", "p c #434D5B", "q c #414B59", "r c #3F4A57", "s c #3B4654", "t c #394452", "u c #343F4E", "v c #444E5C", "w c #4A5461", "x c #4D5663", "y c #4E5965", "z c #515A67", "A c #525C68", "B c #59626D", "C c #5A636F", "D c #5C6570", "E c #5D6672", "F c #5F6773", "G c #626B75", "H c #636C77", "I c #666E79", "J c #46505D", "K c #444E5B", "L c #424D5A", "M c #414B58", "N c #3F4957", "O c #3D4855", "P c #384452", "Q c #364250", "R c #3A4553", "S c #3D4856", "T c #47515F", "U c #495361", "V c #4C5562", "W c #4D5864", "X c #505966", "Y c #535D68", "Z c #58616D", "` c #5A626F", " . c #5B6470", ".. c #5F6873", "+. c #626B76", "@. c #4F5965", "#. c #4C5663", "$. c #47525F", "%. c #454F5C", "&. c #434D5A", "*. c #414C59", "=. c #3C4855", "-. c #364150", ";. c #343F4D", ">. c #3C4755", ",. c #404B59", "'. c #485360", "). c #4B5462", "!. c #4E5865", "~. c #545D6A", "{. c #555F6B", "]. c #56606C", "^. c #57606D", "/. c #58626D", "(. c #59636E", "_. c #5D6671", ":. c #4C5763", "<. c #4A5460", "[. c #424C59", "}. c #404B58", "|. c #384351", "1. c #36414F", "2. c #333F4D", "3. c #394352", "4. c #49525F", "5. c #525C69", "6. c #545D69", "7. c #555E6B", "8. c #56606B", "9. c #48535F", "0. c #7E868E", "a. c #F6F7F7", "b. c #757D86", "c. c #3E4957", "d. c #A0A5AB", "e. c #7A828B", "f. c #8F959D", "g. c #5E6773", "h. c #C7CACE", "i. c #D2D5D8", "j. c #CBCFD2", "k. c #959AA2", "l. c #FCFCFC", "m. c #8C939A", "n. c #47525E", "o. c #46515D", "p. c #7C848D", "q. c #F5F6F6", "r. c #747C86", "s. c #414C5A", "t. c #747D86", "u. c #777F89", "v. c #90979F", "w. c #A5ABB1", "x. c #888F97", "y. c #BEC1C6", "z. c #C4C7CB", "A. c #BEC2C6", "B. c #505A67", "C. c #515B67", "D. c #9A9FA6", "E. c #EEEFF0", "F. c #8A9199", "G. c #545E69", "H. c #555F6A", "I. c #45505C", "J. c #7B828B", "K. c #737B85", "L. c #9BA1A8", "M. c #959BA2", "N. c #6A737D", "O. c #737B84", "P. c #6E7781", "Q. c #5A626E", "R. c #999EA5", "S. c #9FA5AB", "T. c #A3A8AE", "U. c #A5AAAF", "V. c #8B939A", "W. c #C1C4C9", "X. c #CDD0D3", "Y. c #CED2D4", "Z. c #898F98", "`. c #90979E", " + c #D6D7DB", ".+ c #A9AEB4", "++ c #91969F", "@+ c #C9CCCF", "#+ c #ADB2B7", "$+ c #9EA2A9", "%+ c #ABAFB6", "&+ c #707983", "*+ c #7C838D", "=+ c #9EA3AA", "-+ c #333E4D", ";+ c #9DA2A9", ">+ c #9EA3A9", ",+ c #6C747E", "'+ c #B9BDC2", ")+ c #6A727D", "!+ c #BFC3C7", "~+ c #757D87", "{+ c #9398A0", "]+ c #EDEEEF", "^+ c #BABEC3", "/+ c #F6F6F7", "(+ c #868D95", "_+ c #79808A", ":+ c #DBDDDF", "<+ c #9EA4AA", "[+ c #888E97", "}+ c #46505C", "|+ c #B0B4BA", "1+ c #374251", "2+ c #36404F", "3+ c #989EA5", "4+ c #6D757F", "5+ c #B8BCC1", "6+ c #6B737E", "7+ c #878D96", "8+ c #D6D8DB", "9+ c #8A9099", "0+ c #F3F4F5", "a+ c #838A92", "b+ c #FEFEFE", "c+ c #858B93", "d+ c #4B5662", "e+ c #3D4956", "f+ c #798089", "g+ c #F7F7F8", "h+ c #717983", "i+ c #E2E4E5", "j+ c #636B76", "k+ c #7E848E", "l+ c #AAAEB4", "m+ c #A5AAB0", "n+ c #A1A7AD", "o+ c #9FA4AA", "p+ c #9CA2A9", "q+ c #636C76", "r+ c #A7ADB2", "s+ c #7A828A", "t+ c #485260", "u+ c #BDC0C5", "v+ c #92989F", "w+ c #DCDEE1", "x+ c #707882", "y+ c #C2C5C9", "z+ c #B7BAC0", "A+ c #808790", "B+ c #FDFDFD", "C+ c #838992", "D+ c #3A4653", "E+ c #788088", "F+ c #F8F8F9", "G+ c #AAAFB5", "H+ c #969CA3", "I+ c #979DA4", "J+ c #A2A7AE", "K+ c #646D77", "L+ c #727984", "M+ c #BCC0C4", "N+ c #91979E", "O+ c #B4B8BD", "P+ c #B6BBBF", "Q+ c #E2E3E5", "R+ c #788089", "S+ c #7C848C", "T+ c #FBFBFB", "U+ c #818891", "V+ c #384451", "W+ c #798189", "X+ c #F9FAFA", "Y+ c #6F7781", "Z+ c #3C4754", "`+ c #B7BBC0", " @ c #DADBDE", ".@ c #6F7881", "+@ c #5A646F", "@@ c #B1B6BB", "#@ c #C0C4C8", "$@ c #444F5B", "%@ c #9CA2A8", "&@ c #8D939A", "*@ c #8B9198", "=@ c #959BA3", "-@ c #989EA4", ";@ c #91989F", ">@ c #A7ACB2", ",@ c #BBBFC3", "'@ c #90979D", ")@ c #D5D7DA", "!@ c #7F868F", "~@ c #787F89", "{@ c #F9F9F9", "]@ c #CED0D4", "^@ c #A8ADB3", "/@ c #A3A9AF", "(@ c #5B6570", "_@ c #323E4B", ":@ c #7B838B", "<@ c #7E858E", "[@ c #778088", "}@ c #AFB3B8", "|@ c #46505E", "1@ c #C6C9CC", "2@ c #E1E2E4", "3@ c #767E87", "4@ c #7C838C", "5@ c #34404E", "6@ c #374350", "7@ c #3A4552", "8@ c #3B4653", "9@ c #3A4654", "0@ c #35404E", "a@ c #333E4C", "b@ c #374351", "c@ c #424E5B", "d@ c #3B4754", "e@ c #35414E", "f@ c #394552", "g@ c #394451", "h@ c #424D5B", "i@ c #35414F", "j@ c #323E4C", "k@ c #34404D", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". + @ # $ % & * = - ; > , ' ) ! ~ { ] ^ / ( _ : / < [ ! ' } | * 1 2 # 3 4 5 6 7 8 9 0 a b c d . ", ". e f g h i j = k l > m n o p q r [ s t / u _ : / < [ q v > w x y z A e 3 + B C D E F 9 G H I . ", ". A % & j = - w l > m J o K L M N O s P Q u _ : / R S q p T U V W X $ Y @ 3 + Z ` .7 E ..9 +.. ", ". @.W #.| w l > $.m n %.K &.*.~ { =.< P -.u _ ;.Q ^ >.,.p J '.).j !.X $ f ~.{.].^./.(.C D _.... ", ". :.| <.l > m m J n o K p [.}.r { >.R |.1.2._ ;.1.3.>.N ! %.4.w = * & % $ 5.6.e 7.8.+ Z 5 C D . ", ". w 9.> m 0.a.b.o K ) &.! *.~ c.S s R |.1.2._ ;.d...>.N e.f.> l g.h.I i.j.k.2 A # # l.l.m.4 /.. ", ". n.o.n %.p.q.r.p &.L s.*.}.r { O s R |.1.2._ ;.t.u.] c.v.w.J } x.y.j z._ A.% B.C.D.E.E.F.G.H.. ", ". I.K ) L J.q.K.*.*.{.L.M.N.N S >.s Z O.P.t _ u Q.R.] [ S.T.~.9.U.V.= W.;.X.9 & @.Y.Z.E.x.C.A . ", ". L *.*.}.e.q.O.}.`. +.+++@+#+O >.$+%+&+*+=+/.-+R ;+$.w >+E ,+o.'+)+| !+R ~+{+j H.]+^+/+(+i @.. ", ". }.r r c._+a.O.> :+<+r r /.[+}+_.|+<.1+2+W L.-+2+3+7 4+4+b _+H.5+l w y.6+7+8+| 9+0+a+b+c+| d+. ", ". e+=.>.=.f+g+h+,+i+j+{ { [ O >.k+3+l+m+n+o+p+}.2+N.].Z q+i r+s+d.t+l u+v+Z w+x+y+z+A+B+C+> > . ", ". s D+R D+E+F+x++ i+r.{ { r 6.o 6+G+{.J v [.}.-+2+o H+I+| ~ J+K+L+> '.M+N+l O+P+Q+R+S+T+U+I.I.. ", ". t |.|.V+W+X+Y+Z+`+ @.@+@@@#@$@s %@I+m % &@*@-+2+|.=@-@r M ;@>@= > > ,@'@> e.)@@+n _+X+!@L L . ", ". Q 1.1./ ~@{@.@s Z+[+)@]@S.e Z+s R (+^@/@(@_@-+2+|.:@<@r M [@}@|@m $.1@M.m k 2@-@K 3@{@4@r c.. ", ". 5@2.5@1.6@t 7@8@Z+>.=.=.>.>.Z+9@R P / 0@a@_ -+1.b@R >.N M c@v |@m m m m m J I.K L *.r { >.d@. ", ". 2._ 2.e@/ V+f@8@Z+>.=.=.>.>.d@9@R |./ 0@a@_ -+1.|.R >.N M c@v J , , m , J n o &.*.}.{ Z+7@V+. ", ". 5@2.5@1.6@g@7@8@Z+>.=.>.>.>.] 9@R |./ 0@a@_ -+1.|.R >.N q h@v J , , , o.J %.K L *.r O D+|.i@. ", ". Q 1.1./ |.t D+s Z+>.O O O >.] s 7@|./ 0@j@_ -+1.|.R =.N q p v J , , , o.n %.K L *.r >.R 6@k@. ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; icewm-1.3.7/lib/themes/Infadel2/titleAT.xpm0000664000076600007660000000063011463274241017402 0ustar develdevel/* XPM */ static char * titleAT_xpm[] = { "1 17 18 1", " c None", ". c #868687", "+ c #484848", "@ c #344066", "# c #425076", "$ c #526185", "% c #607194", "& c #7081A3", "* c #7284A6", "= c #7587A9", "- c #66779A", "; c #57668A", "> c #4A597D", ", c #3D4A70", "' c #303C63", ") c #273259", "! c #9B9B9B", "~ c #363637", ".", "+", "@", "#", "$", "%", "&", "*", "=", "-", ";", ">", ",", "'", ")", "!", "~"}; icewm-1.3.7/lib/themes/Infadel2/icons/0000775000076600007660000000000011463274241016422 5ustar develdevelicewm-1.3.7/lib/themes/Infadel2/icons/app_16x16.xpm0000664000076600007660000000062511463274241020600 0ustar develdevel/* XPM */ static char * app_16x16_xpm[] = { "16 16 2 1", " c None", ". c #FFFFFF", " ", " ", " ", " .... . ", " .... . ", " .... . ", " .... . ", " ... . ", " . .. ", " . .... ", " . .... ", " . .... ", " . .... ", " . .... ", " ", " "}; icewm-1.3.7/lib/themes/Infadel2/icons/folder_32x32.xpm0000664000076600007660000000767411463274241021302 0ustar develdevel/* XPM */ static char * folder_32x32_xpm[] = { "32 32 112 2", " c None", ". c #000000", "+ c #232112", "@ c #746A34", "# c #5C4E14", "$ c #7A6C18", "% c #54470A", "& c #766A25", "* c #433C17", "= c #292618", "- c #34301B", "; c #7E7227", "> c #55470A", ", c #7D6E17", "' c #5B4C0B", ") c #817219", "! c #5D4E0C", "~ c #544813", "{ c #292718", "] c #696135", "^ c #52440A", "/ c #5C4D0C", "( c #85761A", "_ c #63540D", ": c #8A7B1C", "< c #65560D", "[ c #383317", "} c #4D441E", "| c #776815", "1 c #594A0B", "2 c #84751A", "3 c #64550D", "4 c #8D7E1D", "5 c #6B5C0F", "6 c #92831F", "7 c #6F5F10", "8 c #4C4626", "9 c #433F27", "0 c #514309", "a c #5F500C", "b c #948520", "c c #746411", "d c #9B8C23", "e c #796811", "f c #1F1D10", "g c #7C6E25", "h c #8F811E", "i c #726210", "j c #9C8D23", "k c #7D6D13", "l c #A39426", "m c #827113", "n c #322F19", "o c #766614", "p c #58490B", "q c #68590E", "r c #A29325", "s c #867414", "t c #AB9C29", "u c #8C7B15", "v c #52491B", "w c #88791B", "x c #988922", "y c #A89827", "z c #8E7C16", "A c #B3A42C", "B c #968417", "C c #5B542A", "D c #554811", "E c #796A16", "F c #6D5E0F", "G c #806F13", "H c #948217", "I c #BAAB2E", "J c #A28F19", "K c #756925", "L c #4D400A", "M c #AD9E29", "N c #BEAF30", "O c #AD9A1B", "P c #786A17", "Q c #544811", "R c #746824", "S c #514619", "T c #5A5228", "U c #312C18", "V c #726313", "W c #282618", "X c #786A22", "Y c #504511", "Z c #423D25", "` c #4C3F09", " . c #1E1C0F", ".. c #483F1C", "+. c #484324", "@. c #635B30", "#. c #766714", "$. c #352F15", "%. c #201D0F", "&. c #6B5E1E", "*. c #4D4009", "=. c #54460A", "-. c #4E4110", ";. c #272517", ">. c #1D1A0E", ",. c #6F652F", "'. c #534711", "). c #706214", "!. c #4B3E09", "~. c #6E6120", "{. c #3E3614", "]. c #272416", " ", " ", " ", " ", " ", " . . . . . . . ", " . + @ # $ % & * = . ", " . - ; > , ' ) ! ) ' , ~ { . ", " . ] ^ , / ( _ : < : _ ( / , [ . ", " . } | 1 2 3 4 5 6 7 6 5 4 3 2 1 8 . ", " 9 0 , a : 5 b c d e d c b 5 : a , f ", " . g > ) 3 h i j k l m l k j i h 3 ) ~ . ", " n o p ( q b e r s t u t s r e b q ( p = ", " . v | ' w 5 x k y z A B A z y k x 5 w ' C . ", " . D E / : F d G t H I J I H t G d F : / K . ", " . L E ! : 7 j m M B N O N B M m j 7 : ! P . ", " . L E / : F d G t H I J I H t G d F : / P . ", " . Q | ' w 5 x k y z A B A z y k x 5 w ' R . ", " . S o p ( q b e r s t u t s r e b q ( p T . ", " U V > ) 3 h i j k l m l k j i h 3 ) > W ", " . X 0 , a : 5 b c d e d c b 5 : a , Y . ", " Z ` | 1 2 3 4 5 6 7 6 5 4 3 2 1 | . ", " . ..V ^ , / ( _ : < : _ ( / , ^ +.. ", " . @.` #.> , ' ) ! ) ' , > #.$.. ", " . %.&.*.o ^ E =.E ^ o -.;.. ", " . >.,.'.).!.~.{.].. ", " . . . . . . ", " ", " ", " ", " ", " "}; icewm-1.3.7/lib/themes/Infadel2/icons/folder_16x16.xpm0000664000076600007660000000232211463274241021267 0ustar develdevel/* XPM */ static char * folder_16x16_xpm[] = { "16 16 57 1", " c None", ". c #000000", "+ c #1C242F", "@ c #354457", "# c #43556D", "$ c #41536B", "% c #324052", "& c #19212B", "* c #07090C", "= c #344255", "- c #4A5D76", "; c #50637D", "> c #526680", ", c #42546C", "' c #2C3A4C", ") c #06080B", "! c #546883", "~ c #5C708C", "{ c #5F7490", "] c #3F5168", "^ c #283647", "/ c #19212A", "( c #43566E", "_ c #677C99", ": c #6C82A0", "< c #37495E", "[ c #131A23", "} c #455870", "| c #7A8FAF", "1 c #384A60", "2 c #222F3F", "3 c #35475B", "4 c #29394D", "5 c #314357", "6 c #33455A", "7 c #253549", "8 c #233142", "9 c #2D3E53", "0 c #1A2736", "a c #101821", "b c #2F4156", "c c #25364A", "d c #0C131B", "e c #1D2A3A", "f c #172332", "g c #030508", "h c #26374B", "i c #2A3B4F", "j c #2B3C50", "k c #213245", "l c #152230", "m c #020407", "n c #0B131B", "o c #1D2C3E", "p c #1C2B3D", "q c #14212F", "r c #091019", " ", " ...... ", " .+@#$%&. ", " *=-;>;-,') ", " .%-!~{~!-]^. ", " ./(;~_:_~;(<[. ", " .'}>{:|:{>}12. ", " .3(;~_:_~;(<4. ", " .5]-!~{~!-]67. ", " .81,-;>;-,190. ", " .ab1](}(]1bcd. ", " .e96<1<69cf. ", " g0hijihklm ", " .nfopqr. ", " ...... ", " "}; icewm-1.3.7/lib/themes/Infadel2/rolldownA.xpm0000664000076600007660000000221711463274241020000 0ustar develdevel/* XPM */ static char * rolldownA_xpm[] = { "15 34 31 1", " c None", ". c #858686", "+ c #9A9A9A", "@ c #AEAEAE", "# c #5D5D5E", "$ c #111214", "% c #040404", "& c #C2C2C2", "* c #181C22", "= c #2D333D", "- c #56657A", "; c #58667E", "> c #5D6E86", ", c #D6D6D6", "' c #1D2632", ") c #4A4A4A", "! c #6E809C", "~ c #EAEAEA", "{ c #717273", "] c #232D3A", "^ c #4D5868", "/ c #798EAA", "( c #7E96B6", "_ c #FEFEFE", ": c #3C4553", "< c #323F4F", "[ c #0D0E13", "} c #C7CDD4", "| c #435165", "1 c #363636", "2 c #8CA3C5", "...............", "+++++++++++++++", "@@@@#$%%%$#@@@@", "&&&*=-;>;-=*&&&", ",,')->!!!>;)',,", "~{]^>!/(/!>^]{~", "_*)^>,,~,,>-)*_", "~%:^>%@@@%>^:%~", ",%:^->%@%>;^<%,", "&%<:^;>%>-^:<%&", "@[]<&&}}}&&<][@", "+|$]%%%%%%%=$)+", "..**]]====]**..", "{{{$[*']'*[${{{", "####=%%%%%=####", ")))))))))))))))", "111111=11111111", "...............", "+++++++++++++++", "@@@@)[%%%[^@@@@", "&&&*':)|):'*&&&", ",,*=)|^-^|)1*,,", "~{':|^;>;^|:'{~", "_$=:|+2+2+|:=*_", "~%=:|%...%)<=%~", ",%]<:|%.%|)<]%,", "&%'1<:)%):<<'%&", "@[''+/+/+(.]*[@", "+)['%%%%%%%'[)+", "..$$*'''''*$$..", "{{{[[$***$[[{{{", "####]%%%%%]####", ")))))))))))))))", "111111111111111"}; icewm-1.3.7/lib/themes/Infadel2/Ergonomic.theme0000664000076600007660000001112011463274241020250 0ustar develdevel# Xerithane: # # Well, Artwiz inspired me (dirty lil blackbox user ) # So, I ripped his font (snap.pcf), and then got the chrome style idea and # adapted the theme as a rip of the e.t.o page (get it, Infadel..) # Some of the borrowed style is from Area 51 (by RudeSka, herald of #icewm) # Also borrowed are some icons from Area 51. # # tbf: # # Extended Artwiz's snap font, added cursors, polished the applets. # Invented depth, hide, rollup and rolldown buttons. Redraw the others. # Reduced number of colors. # closeI.xpm depthI.xpm maximizeI.xpm minimizeI.xpm restoreI.xpm hideI.xpm # rollupI.xpm rolldownI.xpm menuButtonI.xpm # closeA.xpm depthA.xpm maximizeA.xpm minimizeA.xpm restoreA.xpm hideA.xpm # rollupA.xpm rolldownA.xpm menuButtonA.xpm ThemeDescription="Infadel/1.0.7" ThemeAuthor="xerithane@nerdfarm.org" Look=pixmap TitleButtonsLeft="i" TitleButtonsRight="xm" TitleButtonsSupported="sxmihrd" TitleBarJustify=50 TitleBarHeight=17 BorderSizeX=2 BorderSizeY=2 CornerSizeX=28 CornerSizeY=28 DlgBorderSizeX=2 DlgBorderSizeY=2 MenuMouseTracking=1 ColorNormalButton="rgb:22/2d/3c" ColorNormalButtonText="rgb:ff/ff/ff" ColorActiveButton="rgb:42/4d/5c" ColorActiveButtonText="rgb:ff/ff/ff" ColorNormalTitleBarText="rgb:c0/c0/c0" ColorActiveTitleBarText="rgb:ff/ff/ff" ColorActiveBorder="rgb:86/86/87" ColorNormalBorder="rgb:57/57/57" ColorDialog="rgb:32/3d/4c" ColorListBox="rgb:32/3d/4c" ColorListBoxText="rgb:ff/ff/ff" ColorListBoxSelection="rgb:52/5d/6c" ColorListBoxSelectionText="rgb:ff/ff/ff" ColorScrollBar="rgb:42/4d/5c" ColorScrollBarSlider="rgb:32/3d/4c" ColorScrollBarButton="rgb:32/3d/4c" ColorScrollBarButtonArrow="rgb:ff/ff/ff" ColorLabel="rgb:32/3d/4c" ColorLabelText="rgb:ff/ff/ff" ColorNormalMenu="rgb:32/3d/4c" ColorActiveMenuItem="rgb:52/5d/6c" ColorNormalMenuItemText="rgb:ff/ff/ff" ColorActiveMenuItemText="rgb:ff/ff/ff" ColorDisabledMenuItemText="rgb:80/80/80" ColorDefaultTaskBar="rgb:32/3d/4c" ColorNormalTaskBarApp="rgb:42/4d/5c" ColorNormalTaskBarAppText="rgb:ff/ff/ff" ColorActiveTaskBarApp="rgb:52/5d/6c" ColorActiveTaskBarAppText="rgb:ff/ff/ff" ColorMinimizedTaskBarApp="rgb:22/2d/4c" ColorMinimizedTaskBarAppText="rgb:ff/ff/ff" ColorInput="rgb:22/2d/3c" ColorInputText="rgb:ff/ff/ff" ColorClock="rgb:32/3d/4c" ColorClockText="rgb:c0/c0/c0" ColorCPUStatusUser="rgb:82/8d/9c" ColorCPUStatusSystem="rgb:52/5d/6c" ColorCPUStatusNice="rgb:00/00/00" ColorCPUStatusIdle="rgb:22/2d/4c" ColorNetSend="rgb:82/8d/9c" ColorNetReceive="rgb:52/5d/6c" ColorNetIdle="rgb:22/2d/4c" ColorApm="rgb:32/3d/4c" ColorApmText="rgb:c0/c0/c0" ColorToolTip="rgb:c0/c0/c0" ColorToolTipText="rgb:00/00/00" ColorMoveSizeStatus="rgb:32/3d/4c" ColorMoveSizeStatusText="rgb:ff/ff/ff" ColorQuickSwitch="rgb:32/3d/4c" ColorQuickSwitchText="rgb:ff/ff/ff" # Font Specification TitleFontNameXft = "Snap:size=10,sans-serif:size=8" MenuFontNameXft = "Snap:size=10,sans-serif:size=8" MinimizedWindowFontNameXft = "Snap:size=10,sans-serif:size=8" ActiveButtonFontNameXft = "Snap:size=10,sans-serif:size=8:bold" NormalButtonFontNameXft = "Snap:size=10,sans-serif:size=8" QuickSwitchFontNameXft = "Snap:size=10,sans-serif:size=8" ListBoxFontNameXft = "Snap:size=10,sans-serif:size=8" StatusFontNameXft = "Snap:size=10,sans-serif:size=8" ToolTipFontNameXft = "Snap:size=10,sans-serif:size=8" ActiveTaskBarFontNameXft = "Snap:size=10,sans-serif:size=8:bold" NormalTaskBarFontNameXft = "Snap:size=10,sans-serif:size=8" ClockFontNameXft = "lucida:size=14:bold,sans-serif:size=14:bold" ApmFontNameXft = "lucida:size=14:bold,sans-serif:size=14:bold" # Font Specification TitleFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" MenuFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" MinimizedWindowFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" ActiveButtonFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" NormalButtonFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" QuickSwitchFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" ListBoxFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" StatusFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" ToolTipFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" ActiveTaskBarFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" NormalTaskBarFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" ClockFontName = "-b&h-lucida-bold-r-normal-sans-14-*-*-*-*-*-*-*" ApmFontName = "-b&h-lucida-bold-r-normal-sans-14-*-*-*-*-*-*-*" ShowMenuButtonIcon=0 TaskBarClockLeds=0 icewm-1.3.7/lib/themes/Infadel2/titleIM.xpm0000664000076600007660000000213611463274241017406 0ustar develdevel/* XPM */ static char * titleIM_xpm[] = { "18 17 46 1", " c None", ". c #868686", "+ c #4E4E4E", "@ c #484848", "# c #9A9A9A", "$ c #575757", "% c #4D4D4D", "& c #515151", "* c #AEAEAE", "= c #606060", "- c #5C5C5C", "; c #C2C2C2", "> c #696969", ", c #6B6B6B", "' c #707070", ") c #D6D6D6", "! c #727272", "~ c #7A7A7A", "{ c #808080", "] c #EAEAEA", "^ c #7B7B7B", "/ c #898989", "( c #8E8E8E", "_ c #FFFFFF", ": c #848484", "< c #8C8C8C", "[ c #9B9B9B", "} c #8F8F8F", "| c #A9A9A9", "1 c #B7B7B7", "2 c #C5C5C5", "3 c #636363", "4 c #D2D2D2", "5 c #565656", "6 c #494949", "7 c #A7A7A7", "8 c #464646", "9 c #404040", "0 c #7F7F7F", "a c #5E5E5E", "b c #3D3D3D", "c c #969696", "d c #4A4A4A", "e c #343434", "f c #363636", "g c #2B2B2B", "..............+...", "@@@@@@@@@@@@@#$###", "%%%%%%%%%%%%&*=***", "------------=;>;;;", ",,,,,,,,,,,,')!)))", "~~~~~~~~~~~~{]^]]]", "////////////(_:___", "<<<<<<<<<<<<[]^]]]", "}}}}}}}}}}}}|)!)))", "{{{{{{{{{{{{1;>;;;", "''''''''''''2*=***", "3333333333334#$###", "5555555555552.+...", "6666666666667!8!!!", "9999999999990abaaa", "[[[[[[[[[c:,$deddd", "ffffffffffffffgfff"}; icewm-1.3.7/lib/themes/Infadel2/menuButtonA.xpm0000664000076600007660000000232511463274241020300 0ustar develdevel/* XPM */ static char * menuButtonA_xpm[] = { "17 34 31 1", " c None", ". c #858686", "+ c #9A9A9A", "@ c #AEAEAE", "# c #363636", "$ c #0D0E13", "% c #040404", "& c #C2C2C2", "* c #4A4A4A", "= c #2D333D", "- c #56657A", "; c #5D6E86", "> c #D6D6D6", ", c #4D5868", "' c #677B98", ") c #6E809C", "! c #58667E", "~ c #EAEAEA", "{ c #232D3A", "] c #798EAA", "^ c #7E96B6", "/ c #FEFEFE", "( c #3C4553", "_ c #8CA3C5", ": c #111214", "< c #435165", "[ c #323F4F", "} c #717273", "| c #181C22", "1 c #1D2632", "2 c #5D5D5E", ".................", "+++++++++++++++++", "@@@@@.#$%$#.@@@@@", "&&&&*=-;;;-=*&&&&", ">>>,*-;')';!*,>>>", "~~@{,;)]^]);,{@~~", "//*(-;)^_^);,(,//", "~~:(,;)]^]);,*:~~", ">>%(<%%%%%%%<(%>>", "&&$=<@&&&&&@<=$&&", "@@#{[*<,,,,([=#@@", "++}|{[((<(([=:}++", "...#|{{=[={{|#...", "}}}}{$|111|$=}}}}", "22222(|%%$|(22222", "*****************", "#################", ".................", "+++++++++++++++++", "@@@@@}{$%%=}@@@@@", "&&&&(1**<<(1(&&&&", ">>>*=(<,-2<*#*>>>", "~~+|(<,-;-,<(1+~~", "//(#(<-;'!-<(#(//", "~~$=[*,!;-,<[=:~~", ">>%{[%%%%%%%[{%>>", "&&$1#.]..]..#1$&&", "@@=1{=[((([#{1=@@", "++2$1{====={|$2++", "...{:|11{11|:=...", "}}}}{%:|||:$1}}}}", "22222(|%%%|(22222", "*****************", "#################"}; icewm-1.3.7/lib/themes/Infadel2/closeA.xpm0000664000076600007660000000223311463274241017243 0ustar develdevel/* XPM */ static char * closeA_xpm[] = { "15 34 32 1", " c None", ". c #858686", "+ c #9A9A9A", "@ c #AEAEAE", "# c #5D5D5E", "$ c #111214", "% c #040404", "& c #C2C2C2", "* c #181C22", "= c #2D333D", "- c #56657A", "; c #58667E", "> c #5D6E86", ", c #D6D6D6", "' c #1D2632", ") c #4A4A4A", "! c #6E809C", "~ c #EAEAEA", "{ c #717273", "] c #232D3A", "^ c #4D5868", "/ c #798EAA", "( c #7E96B6", "_ c #C7CDD4", ": c #FEFEFE", "< c #8CA3C5", "[ c #435165", "} c #3C4553", "| c #323F4F", "1 c #0D0E13", "2 c #363636", "3 c #677B98", "...............", "+++++++++++++++", "@@@@#$%%%$#@@@@", "&&&*=-;>;-=*&&&", ",,')->!!!>;)',,", "~{]^>!/(/_>^]{~", ":*)^>!(<'!_^[*:", "~%}^>!/*/_>^}%~", ",%}[->*!,>;^}%,", "&%|[^$>_>;^}=%&", "@$]|1[&^^^}|]$@", "+)$]|&}[)||=$)+", "..**']=|=]]**..", "{{{$1*'''*1${{{", "####=%%%%1=####", ")))))))))))))))", "2222222=2222222", "...............", "+++++++++++++++", "@@@@)1%%%$)@@@@", "&&&*'})[)}]*&&&", ",,*=)[^-^^}2*,,", "~{'}[^;>;-[}'{~", ":$=}[^>31+[|=*:", "~%=}[^;$;^+|=%~", ",%]|}^1-^+}|]%,", "&%'2|1[[/)|2'%&", "@1']%|}.}|2]'1@", "+)1']=.==]]'1)+", "..$$*.]]''*$1..", "{{{11$***$1${{{", "####]%%%%%]####", ")))))))))))))))", "222222222222222"}; icewm-1.3.7/lib/themes/Infadel2/Overloaded.theme0000664000076600007660000001112411463274241020416 0ustar develdevel# Xerithane: # # Well, Artwiz inspired me (dirty lil blackbox user ) # So, I ripped his font (snap.pcf), and then got the chrome style idea and # adapted the theme as a rip of the e.t.o page (get it, Infadel..) # Some of the borrowed style is from Area 51 (by RudeSka, herald of #icewm) # Also borrowed are some icons from Area 51. # # tbf: # # Extended Artwiz's snap font, added cursors, polished the applets. # Invented depth, hide, rollup and rolldown buttons. Redraw the others. # Reduced number of colors. # closeI.xpm depthI.xpm maximizeI.xpm minimizeI.xpm restoreI.xpm hideI.xpm # rollupI.xpm rolldownI.xpm menuButtonI.xpm # closeA.xpm depthA.xpm maximizeA.xpm minimizeA.xpm restoreA.xpm hideA.xpm # rollupA.xpm rolldownA.xpm menuButtonA.xpm ThemeDescription="Infadel/1.0.7" ThemeAuthor="xerithane@nerdfarm.org" Look=pixmap TitleButtonsLeft="sd" TitleButtonsRight="xmirh" TitleButtonsSupported="sxmihrd" TitleBarJustify=50 TitleBarHeight=17 BorderSizeX=2 BorderSizeY=2 CornerSizeX=28 CornerSizeY=28 DlgBorderSizeX=2 DlgBorderSizeY=2 MenuMouseTracking=1 ColorNormalButton="rgb:22/2d/3c" ColorNormalButtonText="rgb:ff/ff/ff" ColorActiveButton="rgb:42/4d/5c" ColorActiveButtonText="rgb:ff/ff/ff" ColorNormalTitleBarText="rgb:c0/c0/c0" ColorActiveTitleBarText="rgb:ff/ff/ff" ColorActiveBorder="rgb:86/86/87" ColorNormalBorder="rgb:57/57/57" ColorDialog="rgb:32/3d/4c" ColorListBox="rgb:32/3d/4c" ColorListBoxText="rgb:ff/ff/ff" ColorListBoxSelection="rgb:52/5d/6c" ColorListBoxSelectionText="rgb:ff/ff/ff" ColorScrollBar="rgb:42/4d/5c" ColorScrollBarSlider="rgb:32/3d/4c" ColorScrollBarButton="rgb:32/3d/4c" ColorScrollBarButtonArrow="rgb:ff/ff/ff" ColorLabel="rgb:32/3d/4c" ColorLabelText="rgb:ff/ff/ff" ColorNormalMenu="rgb:32/3d/4c" ColorActiveMenuItem="rgb:52/5d/6c" ColorNormalMenuItemText="rgb:ff/ff/ff" ColorActiveMenuItemText="rgb:ff/ff/ff" ColorDisabledMenuItemText="rgb:80/80/80" ColorDefaultTaskBar="rgb:32/3d/4c" ColorNormalTaskBarApp="rgb:42/4d/5c" ColorNormalTaskBarAppText="rgb:ff/ff/ff" ColorActiveTaskBarApp="rgb:52/5d/6c" ColorActiveTaskBarAppText="rgb:ff/ff/ff" ColorMinimizedTaskBarApp="rgb:22/2d/4c" ColorMinimizedTaskBarAppText="rgb:ff/ff/ff" ColorInput="rgb:22/2d/3c" ColorInputText="rgb:ff/ff/ff" ColorClock="rgb:32/3d/4c" ColorClockText="rgb:c0/c0/c0" ColorCPUStatusUser="rgb:82/8d/9c" ColorCPUStatusSystem="rgb:52/5d/6c" ColorCPUStatusNice="rgb:00/00/00" ColorCPUStatusIdle="rgb:22/2d/4c" ColorNetSend="rgb:82/8d/9c" ColorNetReceive="rgb:52/5d/6c" ColorNetIdle="rgb:22/2d/4c" ColorApm="rgb:32/3d/4c" ColorApmText="rgb:c0/c0/c0" ColorToolTip="rgb:c0/c0/c0" ColorToolTipText="rgb:00/00/00" ColorMoveSizeStatus="rgb:32/3d/4c" ColorMoveSizeStatusText="rgb:ff/ff/ff" ColorQuickSwitch="rgb:32/3d/4c" ColorQuickSwitchText="rgb:ff/ff/ff" # Font Specification TitleFontNameXft = "Snap:size=10,sans-serif:size=8" MenuFontNameXft = "Snap:size=10,sans-serif:size=8" MinimizedWindowFontNameXft = "Snap:size=10,sans-serif:size=8" ActiveButtonFontNameXft = "Snap:size=10,sans-serif:size=8:bold" NormalButtonFontNameXft = "Snap:size=10,sans-serif:size=8" QuickSwitchFontNameXft = "Snap:size=10,sans-serif:size=8" ListBoxFontNameXft = "Snap:size=10,sans-serif:size=8" StatusFontNameXft = "Snap:size=10,sans-serif:size=8" ToolTipFontNameXft = "Snap:size=10,sans-serif:size=8" ActiveTaskBarFontNameXft = "Snap:size=10,sans-serif:size=8:bold" NormalTaskBarFontNameXft = "Snap:size=10,sans-serif:size=8" ClockFontNameXft = "lucida:size=14:bold,sans-serif:size=14:bold" ApmFontNameXft = "lucida:size=14:bold,sans-serif:size=14:bold" # Font Specification TitleFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" MenuFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" MinimizedWindowFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" ActiveButtonFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" NormalButtonFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" QuickSwitchFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" ListBoxFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" StatusFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" ToolTipFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" ActiveTaskBarFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" NormalTaskBarFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" ClockFontName = "-b&h-lucida-bold-r-normal-sans-14-*-*-*-*-*-*-*" ApmFontName = "-b&h-lucida-bold-r-normal-sans-14-*-*-*-*-*-*-*" ShowMenuButtonIcon=0 TaskBarClockLeds=0 icewm-1.3.7/lib/themes/Infadel2/titleAJ.xpm0000664000076600007660000000065311463274241017375 0ustar develdevel/* XPM */ static char * titleAJ_xpm[] = { "3 17 17 1", " c None", ". c #858687", "+ c #4F4F51", "@ c #999A9A", "# c #AEAEAE", "$ c #5E5E5E", "% c #C2C2C2", "& c #717172", "* c #D6D6D6", "= c #E9EAEA", "- c #FEFEFE", "; c #909090", "> c #717374", ", c #5C5F64", "' c #373739", ") c #494B4D", "! c #343638", "..+", "@@+", "##$", "%%&", "**&", "==&", "--;", "==&", "**&", "%%&", "##$", "@@+", "..+", ">>+", ",,'", "))'", "!!'"}; icewm-1.3.7/lib/themes/Infadel2/minimizeI.xpm0000664000076600007660000000221711463274241017771 0ustar develdevel/* XPM */ static char * minimizeI_xpm[] = { "15 34 31 1", " g None", ". g #858585", "+ g #9A9A9A", "@ g #AEAEAE", "# g #5D5D5D", "$ g #111111", "% g #040404", "& g #C2C2C2", "* g #1B1B1B", "= g #323232", "- g #626262", "; g #646464", "> g #6B6B6B", ", g #D6D6D6", "' g #242424", ") g #4A4A4A", "! g #7D7D7D", "~ g #EAEAEA", "{ g #717171", "] g #2B2B2B", "^ g #565656", "/ g #8A8A8A", "( g #929292", "_ g #FEFEFE", ": g #9F9F9F", "< g #434343", "[ g #3C3C3C", "} g #0E0E0E", "| g #4F4F4F", "1 g #363636", "2 g #787878", "...............", "+++++++++++++++", "@@@@#$%%%$#@@@@", "&&&*=-;>;-=*&&&", ",,')->!!!>;)',,", "~{]^>!/(/!>^]{~", "_*)^>!(:(!>-)*_", "~%<^>,,,,,>^<%~", ",%<^-%@@@%-^[%,", "&%[<^-}@%-^<[%&", "@}][<|^%^|<[]$@", "+|$][<<|<<[=$)+", "..**]==[=]]**..", "{{{$}*'''*}${{{", "####=%%%%}]####", ")))))))))))))))", "111111111111111", "...............", "+++++++++++++++", "@@@@)}%%%}^@@@@", "&&&*'<)|)<'*&&&", ",,*1||^-^|)1*,,", "~{*[|^;>;^|<'{~", "_*1<|->2>-|<=*_", "~%=[|+++++|[=%~", ",%=[<%!.!%<[]%,", "&%'1[<%.%)[1'%&", "@}']11[%[[1]'}@", "+)}']==1==]'})+", "..}$*'''''*$}..", "{{{$}$**$$}}{{{", "####]%%%%}]####", ")))))))))))))))", "111111111111111"}; icewm-1.3.7/lib/themes/Infadel2/titleIB.xpm0000664000076600007660000000047611463274241017400 0ustar develdevel/* XPM */ static char * titleAS_xpm[] = { "1 17 12 1", " c None", ". c #868687", "+ c #9A9A9B", "@ c #AEAEAF", "# c #C2C2C3", "$ c #D6D6D7", "% c #EAEAEB", "& c #FFFFFF", "* c #727273", "= c #5E5E5F", "- c #4A4A4B", "; c #363637", ".", "+", "@", "#", "$", "%", "&", "%", "$", "#", "@", "+", ".", "*", "=", "-", ";"}; icewm-1.3.7/lib/themes/Infadel2/titleAQ.xpm0000664000076600007660000000063211463274241017401 0ustar develdevel/* XPM */ static char * titleAQ_xpm[] = { "2 17 17 1", " c None", ". c #4F4F51", "+ c #858687", "@ c #999A9A", "# c #5E5E5E", "$ c #AEAEAE", "% c #717172", "& c #C2C2C2", "* c #D6D6D6", "= c #E9EAEA", "- c #909090", "; c #FEFEFE", "> c #717374", ", c #373739", "' c #5C5F64", ") c #494B4D", "! c #343638", ".+", ".@", "#$", "%&", "%*", "%=", "-;", "%=", "%*", "%&", "#$", ".@", ".+", ".>", ",'", ",)", ",!"}; icewm-1.3.7/lib/themes/Infadel2/titleIS.xpm0000664000076600007660000000047611463274241017421 0ustar develdevel/* XPM */ static char * titleAS_xpm[] = { "1 17 12 1", " c None", ". c #868687", "+ c #9A9A9B", "@ c #AEAEAF", "# c #C2C2C3", "$ c #D6D6D7", "% c #EAEAEB", "& c #FFFFFF", "* c #727273", "= c #5E5E5F", "- c #4A4A4B", "; c #363637", ".", "+", "@", "#", "$", "%", "&", "%", "$", "#", "@", "+", ".", "*", "=", "-", ";"}; icewm-1.3.7/lib/themes/Infadel2/titleAB.xpm0000664000076600007660000000047611463274241017370 0ustar develdevel/* XPM */ static char * titleAS_xpm[] = { "1 17 12 1", " c None", ". c #868687", "+ c #9A9A9B", "@ c #AEAEAF", "# c #C2C2C3", "$ c #D6D6D7", "% c #EAEAEB", "& c #FFFFFF", "* c #727273", "= c #5E5E5F", "- c #4A4A4B", "; c #363637", ".", "+", "@", "#", "$", "%", "&", "%", "$", "#", "@", "+", ".", "*", "=", "-", ";"}; icewm-1.3.7/lib/themes/Infadel2/titleAR.xpm0000664000076600007660000000063211463274241017402 0ustar develdevel/* XPM */ static char * titleAQ_xpm[] = { "2 17 17 1", " c None", ". c #4F4F51", "+ c #858687", "@ c #999A9A", "# c #5E5E5E", "$ c #AEAEAE", "% c #717172", "& c #C2C2C2", "* c #D6D6D6", "= c #E9EAEA", "- c #909090", "; c #FEFEFE", "> c #717374", ", c #373739", "' c #5C5F64", ") c #494B4D", "! c #343638", ".+", ".@", "#$", "%&", "%*", "%=", "-;", "%=", "%*", "%&", "#$", ".@", ".+", ".>", ",'", ",)", ",!"}; icewm-1.3.7/lib/themes/Infadel2/maximizeA.xpm0000664000076600007660000000221711463274241017763 0ustar develdevel/* XPM */ static char * maximizeA_xpm[] = { "15 34 31 1", " c None", ". c #858686", "+ c #9A9A9A", "@ c #AEAEAE", "# c #5D5D5E", "$ c #111214", "% c #040404", "& c #C2C2C2", "* c #181C22", "= c #2D333D", "- c #56657A", "; c #58667E", "> c #5D6E86", ", c #D6D6D6", "' c #1D2632", ") c #4A4A4A", "! c #6E809C", "~ c #EAEAEA", "{ c #717273", "] c #232D3A", "^ c #4D5868", "/ c #798EAA", "( c #7E96B6", "_ c #FEFEFE", ": c #7A91B1", "< c #3C4553", "[ c #435165", "} c #C7CDD4", "| c #323F4F", "1 c #0D0E13", "2 c #363636", "...............", "+++++++++++++++", "@@@@#$%%%$#@@@@", "&&&*=-;>;-=*&&&", ",,')->!!!>;)',,", "~{]^>!/(/!>^]{~", "_*)^>!(~:!>-)*_", "~%<^>!,@,!>^<%~", ",%<[-}@@@};^|%,", "&%|[^%%%%%^<|%&", "@$]|<^^^^^<|]$@", "+)$]|<<[<<|]$)+", "..**'==|=]]**..", "{{{$1*'''*1${{{", "####=%%%%1=####", ")))))))))))))))", "222222222222222", "...............", "+++++++++++++++", "@@@@)1%%%$)@@@@", "&&&*'<)[)['*}&&", ",,*2<^^^^[<2*,,", "~{'<[^>>;-)<*{~", "_$=|[->+;-[<2*_", "~%=<[^+.+^[|=%~", ",%]|<+.!!+<|]%,", "&%'=|%%%%%|2'%&", "@1']=||<||2]'1@", "+)1']==2=]]'1)+", "..$1*'''''*$1..", "{{{11$***$1${{{", "####]%%%%%]####", ")))))))))))))))", "222222222222222"}; icewm-1.3.7/lib/themes/Infadel2/menuButtonI.xpm0000664000076600007660000000232511463274241020310 0ustar develdevel/* XPM */ static char * menuButtonI_xpm[] = { "17 34 31 1", " g None", ". g #858585", "+ g #9A9A9A", "@ g #AEAEAE", "# g #363636", "$ g #0E0E0E", "% g #040404", "& g #C2C2C2", "* g #4A4A4A", "= g #323232", "- g #626262", "; g #6B6B6B", "> g #D6D6D6", ", g #565656", "' g #787878", ") g #7D7D7D", "! g #646464", "~ g #EAEAEA", "{ g #2B2B2B", "] g #8A8A8A", "^ g #929292", "/ g #FEFEFE", "( g #434343", "_ g #9F9F9F", ": g #111111", "< g #4F4F4F", "[ g #3C3C3C", "} g #717171", "| g #1B1B1B", "1 g #242424", "2 g #5D5D5D", ".................", "+++++++++++++++++", "@@@@@.#$%$#.@@@@@", "&&&&*=-;;;-=*&&&&", ">>>,*-;')';!*,>>>", "~~@{,;)]^]);,{@~~", "//*(-;)^_^);,(,//", "~~:(,;)]^]);,*:~~", ">>%(<%%%%%%%<(%>>", "&&$=<@&&&&&@<=$&&", "@@#{[*<,,,,([=#@@", "++}|{[((<(([=:}++", "...#|{{=[={{|#...", "}}}}{$|111|$=}}}}", "22222(|%%$|(22222", "*****************", "#################", ".................", "+++++++++++++++++", "@@@@@}{$%%=}@@@@@", "&&&&(1**<<(1(&&&&", ">>>*=(<,-2<*#*>>>", "~~+|(<,-;-,<(1+~~", "//(#(<-;'!-<(#(//", "~~$=[*,!;-,<[=:~~", ">>%{[%%%%%%%[{%>>", "&&$1#.]..]..#1$&&", "@@=1{=[((([#{1=@@", "++2$1{====={|$2++", "...{:|11{11|:=...", "}}}}{%:|||:$1}}}}", "22222(|%%%|(22222", "*****************", "#################"}; icewm-1.3.7/lib/themes/Infadel2/titleAS.xpm0000664000076600007660000000047611463274241017411 0ustar develdevel/* XPM */ static char * titleAS_xpm[] = { "1 17 12 1", " c None", ". c #868687", "+ c #9A9A9B", "@ c #AEAEAF", "# c #C2C2C3", "$ c #D6D6D7", "% c #EAEAEB", "& c #FFFFFF", "* c #727273", "= c #5E5E5F", "- c #4A4A4B", "; c #363637", ".", "+", "@", "#", "$", "%", "&", "%", "$", "#", "@", "+", ".", "*", "=", "-", ";"}; icewm-1.3.7/lib/themes/Infadel2/rollupI.xpm0000664000076600007660000000221511463274241017463 0ustar develdevel/* XPM */ static char * rollupI_xpm[] = { "15 34 31 1", " g None", ". g #858585", "+ g #9A9A9A", "@ g #AEAEAE", "# g #5D5D5D", "$ g #111111", "% g #040404", "& g #C2C2C2", "* g #1B1B1B", "= g #323232", "- g #626262", "; g #646464", "> g #6B6B6B", ", g #D6D6D6", "' g #242424", ") g #4A4A4A", "! g #7D7D7D", "~ g #EAEAEA", "{ g #717171", "] g #2B2B2B", "^ g #565656", "/ g #CBCBCB", "( g #FEFEFE", "_ g #0E0E0E", ": g #4F4F4F", "< g #434343", "[ g #787878", "} g #8A8A8A", "| g #3C3C3C", "1 g #363636", "2 g #9F9F9F", "...............", "+++++++++++++++", "@@@@#$%%%$#@@@@", "&&&*=-;>;-=*&&&", ",,')->!!!>;)',,", "~{]^/,,,,,/^]{~", "(*)^_%__%_%^:*(", "~%<^;[},}!>^<%~", ",%<^;>,@/[-^<%,", "&%|<^/@@@/^<=%&", "@_]|<_%%%%<|]$@", "+)*]|<<<<||=$)+", "..$*'=||==]**..", "{{{$_**''*_${{{", "##-#=_%%%%=####", ")))))))))))))))", "111111=11111111", "...............", "+++++++++++++++", "@@@@)_%%%_^@@@@", "&&&*'<):)<'*&&&", ",,*=):^-^^)1*,,", "~{'|+2+2+++<'{~", "($=<%%%%%%%<=*(", "~%=|:^;+;^:|=%~", ",%=|<:+.+:<|]%,", "&%'1<+!!.+|1'%&", "@_']=%%%%%1]'_@", "+)_*]====]]'_)+", "..$$*'']''*$_..", "{{{__$$*$$_${{{", "####]%%%%_]####", ")))))))))))))))", "111111111111111"}; icewm-1.3.7/lib/themes/Infadel2/titleIJ.xpm0000664000076600007660000000065311463274241017405 0ustar develdevel/* XPM */ static char * titleAJ_xpm[] = { "3 17 17 1", " c None", ". c #858687", "+ c #4F4F51", "@ c #999A9A", "# c #AEAEAE", "$ c #5E5E5E", "% c #C2C2C2", "& c #717172", "* c #D6D6D6", "= c #E9EAEA", "- c #FEFEFE", "; c #909090", "> c #717374", ", c #5C5F64", "' c #373739", ") c #494B4D", "! c #343638", "..+", "@@+", "##$", "%%&", "**&", "==&", "--;", "==&", "**&", "%%&", "##$", "@@+", "..+", ">>+", ",,'", "))'", "!!'"}; icewm-1.3.7/lib/themes/Infadel2/titleIT.xpm0000664000076600007660000000063011463274241017412 0ustar develdevel/* XPM */ static char * titleIT_xpm[] = { "1 17 18 1", " c None", ". c #868686", "+ c #484848", "@ c #4D4D4D", "# c #5C5C5C", "$ c #6B6B6B", "% c #7A7A7A", "& c #898989", "* c #8C8C8C", "= c #8F8F8F", "- c #808080", "; c #707070", "> c #636363", ", c #565656", "' c #494949", ") c #404040", "! c #9B9B9B", "~ c #363636", ".", "+", "@", "#", "$", "%", "&", "*", "=", "-", ";", ">", ",", "'", ")", "!", "~"}; icewm-1.3.7/lib/themes/Infadel2/closeI.xpm0000664000076600007660000000223311463274241017253 0ustar develdevel/* XPM */ static char * closeI_xpm[] = { "15 34 32 1", " g None", ". g #858585", "+ g #9A9A9A", "@ g #AEAEAE", "# g #5D5D5D", "$ g #111111", "% g #040404", "& g #C2C2C2", "* g #1B1B1B", "= g #323232", "- g #626262", "; g #646464", "> g #6B6B6B", ", g #D6D6D6", "' g #242424", ") g #4A4A4A", "! g #7D7D7D", "~ g #EAEAEA", "{ g #717171", "] g #2B2B2B", "^ g #565656", "/ g #8A8A8A", "( g #929292", "_ g #CBCBCB", ": g #FEFEFE", "< g #9F9F9F", "[ g #4F4F4F", "} g #434343", "| g #3C3C3C", "1 g #0E0E0E", "2 g #363636", "3 g #787878", "...............", "+++++++++++++++", "@@@@#$%%%$#@@@@", "&&&*=-;>;-=*&&&", ",,')->!!!>;)',,", "~{]^>!/(/_>^]{~", ":*)^>!(<'!_^[*:", "~%}^>!/*/_>^}%~", ",%}[->*!,>;^}%,", "&%|[^$>_>;^}=%&", "@$]|1[&^^^}|]$@", "+)$]|&}[)||=$)+", "..**']=|=]]**..", "{{{$1*'''*1${{{", "####=%%%%1=####", ")))))))))))))))", "2222222=2222222", "...............", "+++++++++++++++", "@@@@)1%%%$)@@@@", "&&&*'})[)}]*&&&", ",,*=)[^-^^}2*,,", "~{'}[^;>;-[}'{~", ":$=}[^>31+[|=*:", "~%=}[^;$;^+|=%~", ",%]|}^1-^+}|]%,", "&%'2|1[[/)|2'%&", "@1']%|}.}|2]'1@", "+)1']=.==]]'1)+", "..$$*.]]''*$1..", "{{{11$***$1${{{", "####]%%%%%]####", ")))))))))))))))", "222222222222222"}; icewm-1.3.7/lib/themes/Infadel2/depthI.xpm0000664000076600007660000000223311463274241017252 0ustar develdevel/* XPM */ static char * depthI_xpm[] = { "15 34 32 1", " g None", ". g #858585", "+ g #9A9A9A", "@ g #AEAEAE", "# g #363636", "$ g #0E0E0E", "% g #040404", "& g #C2C2C2", "* g #4A4A4A", "= g #323232", "- g #626262", "; g #6B6B6B", "> g #D6D6D6", ", g #565656", "' g #787878", ") g #7D7D7D", "! g #646464", "~ g #EAEAEA", "{ g #2B2B2B", "] g #8A8A8A", "^ g #929292", "/ g #FEFEFE", "( g #434343", "_ g #9F9F9F", ": g #111111", "< g #3C3C3C", "[ g #4F4F4F", "} g #CBCBCB", "| g #717171", "1 g #1B1B1B", "2 g #242424", "3 g #5D5D5D", "...............", "+++++++++++++++", "@@@@.#$%$#.@@@@", "&&&*=-;;;-=*&&&", ">>,*-;')';!*,>>", "~@{,;)]^]);,{@~", "/*(-;)^_^);,(,/", "~:(,;)<(<);,*:~", ">%([!=)))}![(%>", "&:=*[-}}&-,[=$&", "@#=<*[,-,[(<{#@", "+|:{<(((*(<=:|+", "..#1{=<==={1#..", "|||{$12221$=|||", "3333(1%%%1(3333", "***************", "###############", "...............", "+++++++++++++++", "@@@@|{$%%=|@@@@", "&&&(2**[[(2(&&&", ">>*=([,3,,*#*>>", "~+1([3!;!,[(2+~", "/(#([,;'!-[(#(/", "~:=([,{={,[<=:~", ">%{<(2,-,+(<=%>", "&$2#((^+.[<=2$&", "@=2{=#<<(<#{1=@", "+3$2{===={{2$!+", "..=:122{221:=..", "|||{%1111:$2|||", "3333#1%%%:*3333", "***************", "###############"}; icewm-1.3.7/lib/themes/Infadel2/hideI.xpm0000664000076600007660000000223211463274241017056 0ustar develdevel/* XPM */ static char * hideI_xpm[] = { "15 34 32 1", " g None", ". g #858585", "+ g #9A9A9A", "@ g #AEAEAE", "# g #5D5D5D", "$ g #111111", "% g #040404", "& g #C2C2C2", "* g #1B1B1B", "= g #323232", "- g #626262", "; g #646464", "> g #6B6B6B", ", g #D6D6D6", "' g #242424", ") g #4A4A4A", "! g #7D7D7D", "~ g #EAEAEA", "{ g #717171", "] g #2B2B2B", "^ g #565656", "/ g #CBCBCB", "( g #8A8A8A", "_ g #929292", ": g #FEFEFE", "< g #9F9F9F", "[ g #0E0E0E", "} g #4F4F4F", "| g #434343", "1 g #3C3C3C", "2 g #363636", "3 g #787878", "...............", "+++++++++++++++", "@@@@#$%%%$#@@@@", "&&&*=-;>;-=*&&&", ",,')->!!!>;)',,", "~{]^/,(_(,/^]{~", ":*)^@%_<_[@^}*:", "~%|^%!(_(!%^|%~", ",%|^->!!!>;^|%,", "&%1|^;>>>;^|=%&", "@[]1&}^^^^&1]$@", "+)*]@&|}|&@=$)+", "..$*%%=1=%%**..", "{{{$[*'''*[${{{", "####=%%%%%=####", ")))))))))))))))", "222222=22222222", "...............", "+++++++++++++++", "@@@@)[%%%[^@@@@", "&&&*'|)})|'*&&&", ",,*2}}^-^^)2*,,", "~{*|++;>-++|'{~", ":*21!%>3>%!1=*:", "~%=|%^->-^%|=%~", ",%]1|}^^^})2]%,", "&%'2|}}}}||=]%&", "@['].11||1(]*[@", "+)['..===..'[)+", "..[[%%']'%%$$..", "{{{[%****$[[{{{", "####]%%%%%]####", ")))))))))))))))", "222222222222222"}; icewm-1.3.7/lib/themes/Infadel2/titleIR.xpm0000664000076600007660000000063211463274241017412 0ustar develdevel/* XPM */ static char * titleAQ_xpm[] = { "2 17 17 1", " c None", ". c #4F4F51", "+ c #858687", "@ c #999A9A", "# c #5E5E5E", "$ c #AEAEAE", "% c #717172", "& c #C2C2C2", "* c #D6D6D6", "= c #E9EAEA", "- c #909090", "; c #FEFEFE", "> c #717374", ", c #373739", "' c #5C5F64", ") c #494B4D", "! c #343638", ".+", ".@", "#$", "%&", "%*", "%=", "-;", "%=", "%*", "%&", "#$", ".@", ".+", ".>", ",'", ",)", ",!"}; icewm-1.3.7/lib/themes/Infadel2/default.theme0000664000076600007660000001107411463274241017762 0ustar develdevel# Xerithane: # # Well, Artwiz inspired me (dirty lil blackbox user ) # So, I ripped his font (snap.pcf), and then got the chrome style idea and # adapted the theme as a rip of the e.t.o page (get it, Infadel..) # Some of the borrowed style is from Area 51 (by RudeSka, herald of #icewm) # Also borrowed are some icons from Area 51. # # tbf: # # Extended Artwiz's snap font, added cursors, polished the applets. # Invented depth, hide, rollup and rolldown buttons. Redraw the others. # Reduced number of colors. # closeI.xpm depthI.xpm maximizeI.xpm minimizeI.xpm restoreI.xpm hideI.xpm # rollupI.xpm rolldownI.xpm menuButtonI.xpm # closeA.xpm depthA.xpm maximizeA.xpm minimizeA.xpm restoreA.xpm hideA.xpm # rollupA.xpm rolldownA.xpm menuButtonA.xpm ThemeDescription="Infadel/1.0.7" ThemeAuthor="xerithane@nerdfarm.org" Look=pixmap TitleButtonsLeft="s" TitleButtonsRight="xmi" TitleButtonsSupported="sxmihrd" TitleBarJustify=50 TitleBarHeight=17 BorderSizeX=2 BorderSizeY=2 CornerSizeX=28 CornerSizeY=28 DlgBorderSizeX=2 DlgBorderSizeY=2 MenuMouseTracking=1 ColorNormalButton="rgb:22/2d/3c" ColorNormalButtonText="rgb:ff/ff/ff" ColorActiveButton="rgb:42/4d/5c" ColorActiveButtonText="rgb:ff/ff/ff" ColorNormalTitleBarText="rgb:c0/c0/c0" ColorActiveTitleBarText="rgb:ff/ff/ff" ColorActiveBorder="rgb:86/86/87" ColorNormalBorder="rgb:57/57/57" ColorDialog="rgb:32/3d/4c" ColorListBox="rgb:32/3d/4c" ColorListBoxText="rgb:ff/ff/ff" ColorListBoxSelection="rgb:52/5d/6c" ColorListBoxSelectionText="rgb:ff/ff/ff" ColorScrollBar="rgb:42/4d/5c" ColorScrollBarSlider="rgb:32/3d/4c" ColorScrollBarButton="rgb:32/3d/4c" ColorScrollBarButtonArrow="rgb:ff/ff/ff" ColorLabel="rgb:32/3d/4c" ColorLabelText="rgb:ff/ff/ff" ColorNormalMenu="rgb:32/3d/4c" ColorActiveMenuItem="rgb:52/5d/6c" ColorNormalMenuItemText="rgb:ff/ff/ff" ColorActiveMenuItemText="rgb:ff/ff/ff" ColorDisabledMenuItemText="rgb:80/80/80" ColorDefaultTaskBar="rgb:32/3d/4c" ColorNormalTaskBarApp="rgb:42/4d/5c" ColorNormalTaskBarAppText="rgb:ff/ff/ff" ColorActiveTaskBarApp="rgb:52/5d/6c" ColorActiveTaskBarAppText="rgb:ff/ff/ff" ColorMinimizedTaskBarApp="rgb:22/2d/4c" ColorMinimizedTaskBarAppText="rgb:ff/ff/ff" ColorInput="rgb:22/2d/3c" ColorInputText="rgb:ff/ff/ff" ColorClock="rgb:32/3d/4c" ColorClockText="rgb:c0/c0/c0" ColorCPUStatusUser="rgb:82/8d/9c" ColorCPUStatusSystem="rgb:52/5d/6c" ColorCPUStatusNice="rgb:00/00/00" ColorCPUStatusIdle="rgb:22/2d/4c" ColorNetSend="rgb:82/8d/9c" ColorNetReceive="rgb:52/5d/6c" ColorNetIdle="rgb:22/2d/4c" ColorApm="rgb:32/3d/4c" ColorApmText="rgb:c0/c0/c0" ColorToolTip="rgb:c0/c0/c0" ColorToolTipText="rgb:00/00/00" ColorMoveSizeStatus="rgb:32/3d/4c" ColorMoveSizeStatusText="rgb:ff/ff/ff" ColorQuickSwitch="rgb:32/3d/4c" ColorQuickSwitchText="rgb:ff/ff/ff" # Font Specification TitleFontNameXft = "Snap:size=10,sans-serif:size=8" MenuFontNameXft = "Snap:size=10,sans-serif:size=8" MinimizedWindowFontNameXft = "Snap:size=10,sans-serif:size=8" ActiveButtonFontNameXft = "Snap:size=10,sans-serif:size=8:bold" NormalButtonFontNameXft = "Snap:size=10,sans-serif:size=8" QuickSwitchFontNameXft = "Snap:size=10,sans-serif:size=8" ListBoxFontNameXft = "Snap:size=10,sans-serif:size=8" StatusFontNameXft = "Snap:size=10,sans-serif:size=8" ToolTipFontNameXft = "Snap:size=10,sans-serif:size=8" ActiveTaskBarFontNameXft = "Snap:size=10,sans-serif:size=8:bold" NormalTaskBarFontNameXft = "Snap:size=10,sans-serif:size=8" ClockFontNameXft = "lucida:size=14:bold,sans-serif:size=14:bold" ApmFontNameXft = "lucida:size=14:bold,sans-serif:size=14:bold" TitleFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" MenuFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" MinimizedWindowFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" ActiveButtonFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" NormalButtonFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" QuickSwitchFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" ListBoxFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" StatusFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" ToolTipFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" ActiveTaskBarFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" NormalTaskBarFontName = "-artwiz-snap-regular-r-normal-sans-10-*-*-*-*-*-*-*" ClockFontName = "-b&h-lucida-bold-r-normal-sans-14-*-*-*-*-*-*-*" ApmFontName = "-b&h-lucida-bold-r-normal-sans-14-*-*-*-*-*-*-*" ShowMenuButtonIcon=0 TaskBarClockLeds=0 icewm-1.3.7/lib/themes/Infadel2/fonts.dir.default0000664000076600007660000000011111463274241020554 0ustar develdevel1 snap.pcf -artwiz-snap-regular-r-normal-sans-10-10-75-75-p-62-iso8859-1 icewm-1.3.7/lib/themes/metal2/0000775000076600007660000000000011463274241015047 5ustar develdevelicewm-1.3.7/lib/themes/metal2/dframeAT.xpm0000664000076600007660000000035411463274241017262 0ustar develdevel/* XPM */ static char *frameAT[] = { /* width height num_colors chars_per_pixel */ " 32 2 1 1", /* colors */ ". c #666699", /* pixels */ "................................", "................................" }; icewm-1.3.7/lib/themes/metal2/titleAM.xpm0000664000076600007660000000061611463274241017137 0ustar develdevel/* XPM */ static char *titleAM[] = { /* width height num_colors chars_per_pixel */ " 5 21 4 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #9999cc", "b c #666699", /* pixels */ "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "bbbbb" }; icewm-1.3.7/lib/themes/metal2/frameAB.xpm0000664000076600007660000000041311463274241017070 0ustar develdevel/* XPM */ static char *frameAB[] = { /* width height num_colors chars_per_pixel */ " 1 6 6 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #9999cc", "b c #666699", "c c #000000", "d c #c0c0c0", /* pixels */ "b", "b", "c", "a", "b", "b" }; icewm-1.3.7/lib/themes/metal2/minimizeA.xpm0000664000076600007660000000231511463274241017520 0ustar develdevel/* XPM */ static char *min0[] = { /* width height num_colors chars_per_pixel */ " 20 42 5 1", /* colors */ ". c #000000", "# c #ffffff", "a c #cfcfff", "b c #65659a", "c c #9a9acf", /* pixels */ "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaa.aaaa", "aaaaaaaaaa..aa.bbaaa", "aaaaaaaaaa.b#.bb#aaa", "aaaaaaaaaa.b.bb#aaaa", "aaaaaaaaaa.bbb#aaaaa", "aaaaaaaaaa.bbb..aaaa", "aaaaaaaaaa.bbbbb#aaa", "aaa.......a######aaa", "aaa.bbbbbbaaaaaaaaaa", "aaa.b###bb#aaaaaaaaa", "aaa.b#aa.b#aaaaaaaaa", "aaa.b#aa.b#aaaaaaaaa", "aaa.bb...b#aaaaaaaaa", "aaa.bbbbbb#aaaaaaaaa", "aaaa#######aaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaa.aaaa", "aaaaaaaaaa..aa...aaa", "aaaaaaaaaa..#...#aaa", "aaaaaaaaaa.....#aaaa", "aaaaaaaaaa....#aaaaa", "aaaaaaaaaa......aaaa", "aaaaaaaaaa......#aaa", "aaa.......a######aaa", "aaa.......aaaaaaaaaa", "aaa..ccc..#aaaaaaaaa", "aaa..ccc..#aaaaaaaaa", "aaa..ccc..#aaaaaaaaa", "aaa.......#aaaaaaaaa", "aaa.......#aaaaaaaaa", "aaaa#######aaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb" }; icewm-1.3.7/lib/themes/metal2/rollupA.xpm0000664000076600007660000000216011463274241017212 0ustar develdevel/* XPM */ static char * rollupA_xpm[] = { "20 42 5 1", " c None", ". c #CFCFFF", "+ c #000000", "@ c #65659A", "# c #FFFFFF", "....................", "....................", "....................", "....................", "....................", "...++++++++++++++...", "...+@@@@@@@@@@@@@#..", "....#####+@#######..", "........+@@@#.......", ".......+@+@+@#......", "......+@#+@#+@#.....", ".........+@#........", ".........+@#........", ".........+@#........", ".........+@#........", "..........##........", "....................", "....................", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@", "....................", "....................", "....................", "....................", "....................", "...++++++++++++++...", "...++++++++++++++#..", "....#####++#######..", "........++++#.......", ".......++++++#......", "......++#++#++#.....", ".........++#........", ".........++#........", ".........++#........", ".........++#........", "..........##........", "....................", "....................", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@"}; icewm-1.3.7/lib/themes/metal2/frameIBR.xpm0000664000076600007660000000104111463274241017220 0ustar develdevel/* XPM */ static char *frameABR[] = { /* width height num_colors chars_per_pixel */ " 16 16 5 1", /* colors */ ". c #ffffff", "# c #cccccc", "a c #999999", "b c #000000", "c c #c0c0c0", /* pixels */ "..........aaacaa", "..........aaaaaa", "..........aaaaaa", "..........aaaaaa", "..........aaaaaa", "..........aaaaaa", "..........aaaaaa", "..........aaaaaa", "..........aaaaaa", "..........aaaaaa", "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa", "caaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaac" }; icewm-1.3.7/lib/themes/metal2/restoreI.xpm0000664000076600007660000000231511463274241017372 0ustar develdevel/* XPM */ static char *res0[] = { /* width height num_colors chars_per_pixel */ " 20 42 5 1", /* colors */ ". c #000000", "# c #ffffff", "a c #cfcfcf", "b c #656565", "c c #9a9a9a", /* pixels */ "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaa.aaaa", "aaaaaaaaaa..aa.bbaaa", "aaaaaaaaaa.b#.bb#aaa", "aaaaaaaaaa.b.bb#aaaa", "aaa......a.bbb#aaaaa", "aaa.bbbbb#.bbb..aaaa", "aaa.b#####.bbbbb#aaa", "aaa.b#aaaaa######aaa", "aaa.b#aaaaa..#aaaaaa", "aaa.b#aaaaa.b#aaaaaa", "aaa.b#aaaaa.b#aaaaaa", "aaa.b#aaaaa.b#aaaaaa", "aaa.bb......b#aaaaaa", "aaa.bbbbbbbbb#aaaaaa", "aaaa##########aaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaa.aaaa", "aaaaaaaaaa..aa...aaa", "aaaaaaaaaa..#...#aaa", "aaaaaaaaaa.....#aaaa", "aaa......a....#aaaaa", "aaa......c......aaaa", "aaa..ccccc......#aaa", "aaa..cccccccc####aaa", "aaa..cccccc..#aaaaaa", "aaa..cccccc..#aaaaaa", "aaa..cccccc..#aaaaaa", "aaa..cccccc..#aaaaaa", "aaa..........#aaaaaa", "aaa..........#aaaaaa", "aaaa##########aaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb" }; icewm-1.3.7/lib/themes/metal2/rolldownI.xpm0000664000076600007660000000216211463274241017547 0ustar develdevel/* XPM */ static char * rolldownI_xpm[] = { "20 42 5 1", " c None", ". c #CFCFCF", "+ c #000000", "@ c #656565", "# c #FFFFFF", "....................", "....................", "....................", "....................", "....................", "...++++++++++++++...", "...+@@@@@@@@@@@@@#..", "....#####+@#######..", ".........+@#........", ".........+@#........", ".......#.+@#........", "......+@#+@#+@#.....", ".......+@+@+@#......", "........+@@@#.......", ".........+@#........", "..........#.........", "....................", "....................", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@", "....................", "....................", "....................", "....................", "....................", "...++++++++++++++...", "...++++++++++++++#..", "....#####++#######..", ".........++#........", ".........++#........", ".......#.++#........", "......++#++#++#.....", ".......++++++#......", "........++++#.......", ".........++#........", "..........#.........", "....................", "....................", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@"}; icewm-1.3.7/lib/themes/metal2/frameITL.xpm0000664000076600007660000000106011463274241017235 0ustar develdevel/* XPM */ static char *frameATL[] = { /* width height num_colors chars_per_pixel */ " 16 16 6 1", /* colors */ ". c #ffffff", "# c #cccccc", "a c #666666", "b c #999999", "c c #000000", "d c #c0c0c0", /* pixels */ "dbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbba", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", "bbbbbbb.........", "bbbbbb..########", "bbbbbb.#########", "bbbbbb.####bbbbb", "bbbbbb.####bbbbb", "bbbbbb.####bb###", "bbbbbb.####bb#.#", "bbbbbb.####bb##b", "bbbbbb.####bb###", "bbabbb.####bbbbb" }; icewm-1.3.7/lib/themes/metal2/dframeIBR.xpm0000664000076600007660000000100311463274241017362 0ustar develdevel/* XPM */ static char *frameABR[] = { /* width height num_colors chars_per_pixel */ " 16 16 3 1", /* colors */ ". c #666666", "# c #000000", "a c #c0c0c0", /* pixels */ "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "................", "...............a" }; icewm-1.3.7/lib/themes/metal2/frameAR.xpm0000664000076600007660000000037011463274241017112 0ustar develdevel/* XPM */ static char *frameAR[] = { /* width height num_colors chars_per_pixel */ " 6 1 6 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #9999cc", "b c #666699", "c c #000000", "d c #c0c0c0", /* pixels */ "bbcabb", }; icewm-1.3.7/lib/themes/metal2/frameIB.xpm0000664000076600007660000000041311463274241017100 0ustar develdevel/* XPM */ static char *frameAB[] = { /* width height num_colors chars_per_pixel */ " 1 6 6 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #cccccc", "b c #999999", "c c #666666", "d c #c0c0c0", /* pixels */ "b", "b", "c", "a", "b", "b" }; icewm-1.3.7/lib/themes/metal2/titleIL.xpm0000664000076600007660000000051711463274241017146 0ustar develdevel/* XPM */ static char *titleAL[] = { /* width height num_colors chars_per_pixel */ " 2 21 4 1", /* colors */ ". c #ffffff", "# c #cccccc", "a c #9999cc", "b c #666699", /* pixels */ "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "bb" }; icewm-1.3.7/lib/themes/metal2/dframeATR.xpm0000664000076600007660000000100311463274241017374 0ustar develdevel/* XPM */ static char *frameATR[] = { /* width height num_colors chars_per_pixel */ " 16 16 3 1", /* colors */ ". c #666699", "# c #000000", "a c #C0C0C0", /* pixels */ "...............a", "................", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############.." }; icewm-1.3.7/lib/themes/metal2/maximizeI.xpm0000664000076600007660000000231511463274241017532 0ustar develdevel/* XPM */ static char *max0[] = { /* width height num_colors chars_per_pixel */ " 20 42 5 1", /* colors */ ". c #000000", "# c #ffffff", "a c #cfcfcf", "b c #656565", "c c #9a9a9a", /* pixels */ "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaa......aaa", "aaaaaaaaaaa.bbbbb#aa", "aaaaaaaaaaaa#.bbb#aa", "aaaaaaaaaaaa.bbbb#aa", "aaa.........bb#bb#aa", "aaa.bbbbbbbbb##bb#aa", "aaa.b####.bbb#aa##aa", "aaa.b#aa.bbbb#aaaaaa", "aaa.b#a.bb#bb#aaaaaa", "aaa.b#.bb#a.b#aaaaaa", "aaa.b.bb#aa.b#aaaaaa", "aaa.bbb#aaa.b#aaaaaa", "aaa.bbbb....b#aaaaaa", "aaa.bbbbbbbbb#aaaaaa", "aaaa##########aaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaa......aaa", "aaaaaaaaaaa......#aa", "aaaaaaaaaaaa#....#aa", "aaaaaaaaaaaa.....#aa", "aaa...........#..#aa", "aaa..........##..#aa", "aaa..cccc....#aa##aa", "aaa..ccc.....#aaaaaa", "aaa..cc...c..#aaaaaa", "aaa..c...cc..#aaaaaa", "aaa.....ccc..#aaaaaa", "aaa....cccc..#aaaaaa", "aaa..........#aaaaaa", "aaa..........#aaaaaa", "aaaa##########aaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb" }; icewm-1.3.7/lib/themes/metal2/hideA.xpm0000664000076600007660000000215611463274241016613 0ustar develdevel/* XPM */ static char * hideA_xpm[] = { "20 42 5 1", " c None", ". c #CFCFFF", "+ c #000000", "@ c #65659A", "# c #FFFFFF", "....................", "....................", "....................", "...++++++...+++++...", "...+@@@@@...@@@@@#..", "...+@####...###+@#..", "...+@#.........+@#..", "...+@#.........+@#..", "...+@#.........+@#..", "....................", "....................", "....................", "...+@#.........+@#..", "...+@#.........+@#..", "...+@#.........+@#..", "...+@++++...++++@#..", "...+@@@@@...@@@@@#..", "....#####...######..", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@", "....................", "....................", "....................", "...++++++...+++++...", "...++++++...+++++#..", "...++####...###++#..", "...++#.........++#..", "...++#.........++#..", "...++#.........++#..", "....................", "....................", "....................", "...++#.........++#..", "...++#.........++#..", "...++#.........++#..", "...++++++...+++++#..", "...++++++...+++++#..", "....#####...######..", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@"}; icewm-1.3.7/lib/themes/metal2/dframeATL.xpm0000664000076600007660000000064611463274241017402 0ustar develdevel/* XPM */ static char *maximize_xpm[] = { "16 16 3 1", ". c #666699", " c #00c000", "a c #c0c0c0", "a...............", "................", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. " }; icewm-1.3.7/lib/themes/metal2/depthA.xpm0000664000076600007660000000217511463274241017007 0ustar develdevel/* XPM */ static char * hideI_xpm[] = { "20 42 6 1", " c None", ". c #CFCFFF", "+ c #000000", "@ c #65659A", "# c #FFFFFF", "c c #9a9acf", "....................", "....................", "....................", "......+++++++++++...", "......+@@@@@@@@@@#..", "......+@#######+@#..", "......+@#......+@#..", "......+@#......+@#..", "..+++++@#......+@#..", "..+@@@@@#......+@#..", "..+@##+@++++++++@#..", "..+@#.+@@@@@@@@@@#..", "..+@#..###########..", "..+@#......+@#......", "..+@#......+@#......", "..+@++++++++@#......", "..+@@@@@@@@@@#......", "...###########......", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@", "....................", "....................", "....................", "......+++++++++++...", "......+++++++++++#..", "......++ccccccc++#..", "......++ccccccc++#..", "......++ccccccc++#..", "..++++++ccccccc++#..", "..++++++ccccccc++#..", "..++cc+++++++++++#..", "..++cc+++++++++++#..", "..++cc############..", "..++ccccccc++#......", "..++ccccccc++#......", "..+++++++++++#......", "..+++++++++++#......", "...###########......", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@"}; icewm-1.3.7/lib/themes/metal2/titleIP.xpm0000664000076600007660000000061611463274241017152 0ustar develdevel/* XPM */ static char *titleAM[] = { /* width height num_colors chars_per_pixel */ " 5 21 4 1", /* colors */ ". c #ffffff", "# c #cccccc", "a c #9999cc", "b c #666699", /* pixels */ "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "bbbbb" }; icewm-1.3.7/lib/themes/metal2/frameATR.xpm0000664000076600007660000000106011463274241017233 0ustar develdevel/* XPM */ static char *frameATR[] = { /* width height num_colors chars_per_pixel */ " 16 16 6 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #9999cc", "b c #666699", "c c #000000", "d c #c0c0c0", /* pixels */ "bbbbbbbbbbbbbbbd", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", "abbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", ".........bbbbbbb", "#########abbbbbb", "#########abbbbbb", "aaaaaa###abbbbbb", "bbbbbb.##abbbbbb", "aaabbb.##abbbbbb", "aabbbb.##abbbbbb", "bbbb#b.##abbbbbb", "bbb##b.##abbbbbb", "bb###b.##abbcbbb" }; icewm-1.3.7/lib/themes/metal2/titleAP.xpm0000664000076600007660000000061611463274241017142 0ustar develdevel/* XPM */ static char *titleAM[] = { /* width height num_colors chars_per_pixel */ " 5 21 4 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #9999cc", "b c #666699", /* pixels */ "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "bbbbb" }; icewm-1.3.7/lib/themes/metal2/restoreA.xpm0000664000076600007660000000231511463274241017362 0ustar develdevel/* XPM */ static char *res0[] = { /* width height num_colors chars_per_pixel */ " 20 42 5 1", /* colors */ ". c #000000", "# c #ffffff", "a c #cfcfff", "b c #65659a", "c c #9a9acf", /* pixels */ "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaa.aaaa", "aaaaaaaaaa..aa.bbaaa", "aaaaaaaaaa.b#.bb#aaa", "aaaaaaaaaa.b.bb#aaaa", "aaa......a.bbb#aaaaa", "aaa.bbbbb#.bbb..aaaa", "aaa.b#####.bbbbb#aaa", "aaa.b#aaaaa######aaa", "aaa.b#aaaaa..#aaaaaa", "aaa.b#aaaaa.b#aaaaaa", "aaa.b#aaaaa.b#aaaaaa", "aaa.b#aaaaa.b#aaaaaa", "aaa.bb......b#aaaaaa", "aaa.bbbbbbbbb#aaaaaa", "aaaa##########aaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaa.aaaa", "aaaaaaaaaa..aa...aaa", "aaaaaaaaaa..#...#aaa", "aaaaaaaaaa.....#aaaa", "aaa......a....#aaaaa", "aaa......c......aaaa", "aaa..ccccc......#aaa", "aaa..cccccccc####aaa", "aaa..cccccc..#aaaaaa", "aaa..cccccc..#aaaaaa", "aaa..cccccc..#aaaaaa", "aaa..cccccc..#aaaaaa", "aaa..........#aaaaaa", "aaa..........#aaaaaa", "aaaa##########aaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb" }; icewm-1.3.7/lib/themes/metal2/titleAT.xpm0000664000076600007660000000046711463274241017152 0ustar develdevel/* XPM */ static char *titleAT[] = { /* width height num_colors chars_per_pixel */ " 1 21 4 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #9999cc", "b c #666699", /* pixels */ "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "b" }; icewm-1.3.7/lib/themes/metal2/rolldownA.xpm0000664000076600007660000000216211463274241017537 0ustar develdevel/* XPM */ static char * rolldownA_xpm[] = { "20 42 5 1", " c None", ". c #CFCFFF", "+ c #000000", "@ c #65659A", "# c #FFFFFF", "....................", "....................", "....................", "....................", "....................", "...++++++++++++++...", "...+@@@@@@@@@@@@@#..", "....#####+@#######..", ".........+@#........", ".........+@#........", ".......#.+@#........", "......+@#+@#+@#.....", ".......+@+@+@#......", "........+@@@#.......", ".........+@#........", "..........#.........", "....................", "....................", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@", "....................", "....................", "....................", "....................", "....................", "...++++++++++++++...", "...++++++++++++++#..", "....#####++#######..", ".........++#........", ".........++#........", ".......#.++#........", "......++#++#++#.....", ".......++++++#......", "........++++#.......", ".........++#........", "..........#.........", "....................", "....................", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@"}; icewm-1.3.7/lib/themes/metal2/dframeABR.xpm0000664000076600007660000000100311463274241017352 0ustar develdevel/* XPM */ static char *frameABR[] = { /* width height num_colors chars_per_pixel */ " 16 16 3 1", /* colors */ ". c #666699", "# c #000000", "a c #c0c0c0", /* pixels */ "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "................", "...............a" }; icewm-1.3.7/lib/themes/metal2/frameIBL.xpm0000664000076600007660000000106011463274241017213 0ustar develdevel/* XPM */ static char *frameABL[] = { /* width height num_colors chars_per_pixel */ " 16 16 6 1", /* colors */ ". c #ffffff", "# c #cccccc", "a c #666666", "b c #999999", "c c #000000", "d c #c0c0c0", /* pixels */ "bbb#bb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbba", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", "dbbbbbbbbbbbbbbb" }; icewm-1.3.7/lib/themes/metal2/frameABL.xpm0000664000076600007660000000106011463274241017203 0ustar develdevel/* XPM */ static char *frameABL[] = { /* width height num_colors chars_per_pixel */ " 16 16 6 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #9999cc", "b c #666699", "c c #000000", "d c #c0c0c0", /* pixels */ "bbbabb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbb..........", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbc", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", "dbbbbbbbbbbbbbbb" }; icewm-1.3.7/lib/themes/metal2/titleIM.xpm0000664000076600007660000000061611463274241017147 0ustar develdevel/* XPM */ static char *titleAM[] = { /* width height num_colors chars_per_pixel */ " 5 21 4 1", /* colors */ ". c #ffffff", "# c #cccccc", "a c #9999cc", "b c #666699", /* pixels */ "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "#####", "bbbbb" }; icewm-1.3.7/lib/themes/metal2/menuButtonA.xpm0000664000076600007660000000256011463274241020041 0ustar develdevel/* XPM */ static char *menuButtonA[] = { /* width height num_colors chars_per_pixel */ " 23 42 7 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #9999cc", "b c #666699", "c c #666699", "d c #ffffff", "e c #9999cc", /* pixels */ "b######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "bbbbbbbbbbbbbbbbbbbbbbb", "b######################", "##cccccccccccccccc#####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "##ddddddddddddddddd####", "#######################", "bbbbbbbbbbbbbbbbbbbbbbb", }; icewm-1.3.7/lib/themes/metal2/dframeABL.xpm0000664000076600007660000000100111463274241017342 0ustar develdevel/* XPM */ static char *frameABL[] = { /* width height num_colors chars_per_pixel */ " 16 16 3 1", /* colors */ "# c #000000", ". c #666699", "a c #C0C0C0" /* pixels */ "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "................", "a..............." }; icewm-1.3.7/lib/themes/metal2/closeA.xpm0000664000076600007660000000304011463274241017000 0ustar develdevel/* XPM */ static char *closeA0[] = { /* width height num_colors chars_per_pixel */ " 28 42 5 1", /* colors */ ". c #000000", "# c #ffffff", "a c #cfcfff", "b c #65659a", "c c #9a9acf", /* pixels */ "aaaaaaaaaaaaaaaaaaaaaaaaaaab", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaa..............aaaaa", "aaaaaaaaa.bbbbbbbbbbbbb#aaaa", "aaaaaaaaa.baaaaaaaaaabb#aaaa", "aaaaaaaaa.baa.aaaa.aa.b#aaaa", "aaaaaaaaa.ba.bbaa.bba.b#aaaa", "aaaaaaaaa.baabbb.bb#a.b#aaaa", "aaaaaaaaa.baaabbbb#aa.b#aaaa", "aaaaaaaaa.baaa.bbb#aa.b#aaaa", "aaaaaaaaa.baa.bbbbbaa.b#aaaa", "aaaaaaaaa.ba.bb##bbba.b#aaaa", "aaaaaaaaa.baab#aaab##.b#aaaa", "aaaaaaaaa.baaaaaaaa#a.b#aaaa", "aaaaaaaaa.bb..........b#aaaa", "aaaaaaaaa.bbbbbbbbbbbbb#aaaa", "aaaaaaaaaa##############aaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbbbbbbbbbb", "aaaaaaaaaaaaaaaaaaaaaaaaaaab", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaa..............aaaaa", "aaaaaaaaa..............#aaaa", "aaaaaaaaa..cccccccccc..#aaaa", "aaaaaaaaa..cc.cccc.cc..#aaaa", "aaaaaaaaa..c...cc...c..#aaaa", "aaaaaaaaa..cc......cc..#aaaa", "aaaaaaaaa..ccc....ccc..#aaaa", "aaaaaaaaa..ccc....ccc..#aaaa", "aaaaaaaaa..cc......cc..#aaaa", "aaaaaaaaa..c...cc...c..#aaaa", "aaaaaaaaa..cc.cccc.cc..#aaaa", "aaaaaaaaa..cccccccccc..#aaaa", "aaaaaaaaa..............#aaaa", "aaaaaaaaa..............#aaaa", "aaaaaaaaaa##############aaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbbbbbbbbbb" }; icewm-1.3.7/lib/themes/metal2/dframeIL.xpm0000664000076600007660000000040111463274241017253 0ustar develdevel/* XPM */ static char *frameAL[] = { "2 32 1 1", ". c #666666", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", ".."}; icewm-1.3.7/lib/themes/metal2/frameATL.xpm0000664000076600007660000000106011463274241017225 0ustar develdevel/* XPM */ static char *frameATL[] = { /* width height num_colors chars_per_pixel */ " 16 16 6 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #9999cc", "b c #666699", "c c #000000", "d c #c0c0c0", /* pixels */ "dbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbc", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", "bbbbbbb.........", "bbbbbb..########", "bbbbbb.#########", "bbbbbb.####bbbbb", "bbbbbb.####bbbbb", "bbbbbb.####bb###", "bbbbbb.####bb#.#", "bbbbbb.####bb##b", "bbbbbb.####bb###", "bbcbbb.####bbbbb" }; icewm-1.3.7/lib/themes/metal2/titleAL.xpm0000664000076600007660000000051711463274241017136 0ustar develdevel/* XPM */ static char *titleAL[] = { /* width height num_colors chars_per_pixel */ " 2 21 4 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #9999cc", "b c #666699", /* pixels */ "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "##", "bb" }; icewm-1.3.7/lib/themes/metal2/frameITR.xpm0000664000076600007660000000106011463274241017243 0ustar develdevel/* XPM */ static char *frameATR[] = { /* width height num_colors chars_per_pixel */ " 16 16 6 1", /* colors */ ". c #ffffff", "# c #cccccc", "a c #666666", "b c #999999", "c c #000000", "d c #c0c0c0", /* pixels */ "bbbbbbbbbbbbbbbd", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", "#bbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", "bbbbbbbbbbbbbbbb", ".........bbbbbbb", "#########abbbbbb", "#########abbbbbb", "aaaaaa###abbbbbb", "bbbbbb.##abbbbbb", "aaabbb.##abbbbbb", "aabbbb.##abbbbbb", "bbbb#b.##abbbbbb", "bbb##b.##abbbbbb", "bb###b.##abbabbb" }; icewm-1.3.7/lib/themes/metal2/minimizeI.xpm0000664000076600007660000000231511463274241017530 0ustar develdevel/* XPM */ static char *min0[] = { /* width height num_colors chars_per_pixel */ " 20 42 5 1", /* colors */ ". c #000000", "# c #ffffff", "a c #cfcfcf", "b c #656565", "c c #9a9a9a", /* pixels */ "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaa.aaaa", "aaaaaaaaaa..aa.bbaaa", "aaaaaaaaaa.b#.bb#aaa", "aaaaaaaaaa.b.bb#aaaa", "aaaaaaaaaa.bbb#aaaaa", "aaaaaaaaaa.bbb..aaaa", "aaaaaaaaaa.bbbbb#aaa", "aaa.......a######aaa", "aaa.bbbbbbaaaaaaaaaa", "aaa.b###bb#aaaaaaaaa", "aaa.b#aa.b#aaaaaaaaa", "aaa.b#aa.b#aaaaaaaaa", "aaa.bb...b#aaaaaaaaa", "aaa.bbbbbb#aaaaaaaaa", "aaaa#######aaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaa.aaaa", "aaaaaaaaaa..aa...aaa", "aaaaaaaaaa..#...#aaa", "aaaaaaaaaa.....#aaaa", "aaaaaaaaaa....#aaaaa", "aaaaaaaaaa......aaaa", "aaaaaaaaaa......#aaa", "aaa.......a######aaa", "aaa.......aaaaaaaaaa", "aaa..ccc..#aaaaaaaaa", "aaa..ccc..#aaaaaaaaa", "aaa..ccc..#aaaaaaaaa", "aaa.......#aaaaaaaaa", "aaa.......#aaaaaaaaa", "aaaa#######aaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb" }; icewm-1.3.7/lib/themes/metal2/titleIB.xpm0000664000076600007660000000056711463274241017141 0ustar develdevel/* XPM */ static char *titleAM[] = { /* width height num_colors chars_per_pixel */ " 4 21 4 1", /* colors */ ". c #ffffff", "# c #cccccc", "a c #9999cc", "b c #666699", /* pixels */ "####", "####", "####", "##.#", "###b", ".###", "#b##", "##.#", "###b", ".###", "#b##", "##.#", "###b", ".###", "#b##", "##.#", "###b", "####", "####", "####", "bbbb" }; icewm-1.3.7/lib/themes/metal2/frameIL.xpm0000664000076600007660000000037011463274241017114 0ustar develdevel/* XPM */ static char *frameAL[] = { /* width height num_colors chars_per_pixel */ " 6 1 6 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #cccccc", "b c #999999", "c c #666666", "d c #c0c0c0", /* pixels */ "bbcabb", }; icewm-1.3.7/lib/themes/metal2/titleIS.xpm0000664000076600007660000000056711463274241017162 0ustar develdevel/* XPM */ static char *titleAM[] = { /* width height num_colors chars_per_pixel */ " 4 21 4 1", /* colors */ ". c #ffffff", "# c #cccccc", "a c #9999cc", "b c #666699", /* pixels */ "####", "####", "####", "##.#", "###b", ".###", "#b##", "##.#", "###b", ".###", "#b##", "##.#", "###b", ".###", "#b##", "##.#", "###b", "####", "####", "####", "bbbb" }; icewm-1.3.7/lib/themes/metal2/titleAB.xpm0000664000076600007660000000056711463274241017131 0ustar develdevel/* XPM */ static char *titleAM[] = { /* width height num_colors chars_per_pixel */ " 4 21 4 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #9999cc", "b c #666699", /* pixels */ "####", "####", "####", "##.#", "###b", ".###", "#b##", "##.#", "###b", ".###", "#b##", "##.#", "###b", ".###", "#b##", "##.#", "###b", "####", "####", "####", "bbbb" }; icewm-1.3.7/lib/themes/metal2/titleAR.xpm0000664000076600007660000000060211463274241017137 0ustar develdevel/* XPM */ static char *titleAR[] = { /* width height num_colors chars_per_pixel */ " 3 21 6 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #9999cc", "b c #666699", "c c #000000", "d c #c0c0c0", /* pixels */ "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "bbb" }; icewm-1.3.7/lib/themes/metal2/dframeIBL.xpm0000664000076600007660000000100111463274241017352 0ustar develdevel/* XPM */ static char *frameABL[] = { /* width height num_colors chars_per_pixel */ " 16 16 3 1", /* colors */ "# c #000000", ". c #666666", "a c #C0C0C0" /* pixels */ "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "..##############", "................", "a..............." }; icewm-1.3.7/lib/themes/metal2/dframeAB.xpm0000664000076600007660000000035411463274241017240 0ustar develdevel/* XPM */ static char *frameAT[] = { /* width height num_colors chars_per_pixel */ " 32 2 1 1", /* colors */ ". c #666699", /* pixels */ "................................", "................................" }; icewm-1.3.7/lib/themes/metal2/maximizeA.xpm0000664000076600007660000000231511463274241017522 0ustar develdevel/* XPM */ static char *max0[] = { /* width height num_colors chars_per_pixel */ " 20 42 5 1", /* colors */ ". c #000000", "# c #ffffff", "a c #cfcfff", "b c #65659a", "c c #9a9acf", /* pixels */ "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaa......aaa", "aaaaaaaaaaa.bbbbb#aa", "aaaaaaaaaaaa#.bbb#aa", "aaaaaaaaaaaa.bbbb#aa", "aaa.........bb#bb#aa", "aaa.bbbbbbbbb##bb#aa", "aaa.b####.bbb#aa##aa", "aaa.b#aa.bbbb#aaaaaa", "aaa.b#a.bb#bb#aaaaaa", "aaa.b#.bb#a.b#aaaaaa", "aaa.b.bb#aa.b#aaaaaa", "aaa.bbb#aaa.b#aaaaaa", "aaa.bbbb....b#aaaaaa", "aaa.bbbbbbbbb#aaaaaa", "aaaa##########aaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaa......aaa", "aaaaaaaaaaa......#aa", "aaaaaaaaaaaa#....#aa", "aaaaaaaaaaaa.....#aa", "aaa...........#..#aa", "aaa..........##..#aa", "aaa..cccc....#aa##aa", "aaa..ccc.....#aaaaaa", "aaa..cc...c..#aaaaaa", "aaa..c...cc..#aaaaaa", "aaa.....ccc..#aaaaaa", "aaa....cccc..#aaaaaa", "aaa..........#aaaaaa", "aaa..........#aaaaaa", "aaaa##########aaaaaa", "aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbb" }; icewm-1.3.7/lib/themes/metal2/menuButtonI.xpm0000664000076600007660000000256111463274241020052 0ustar develdevel/* XPM */ static char *menuButtonA[] = { /* width height num_colors chars_per_pixel */ " 23 42 7 1", /* colors */ ". c #ffffff", "# c #cccccc", "a c #9999cc", "b c #666699", "c c #666666", "d c #ffffff", "e c #999999", /* pixels */ "b######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "#######################", "bbbbbbbbbbbbbbbbbbbbbbb", "b######################", "##cccccccccccccccc#####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "#ceeeeeeeeeeeeeeeed####", "##ddddddddddddddddd####", "#######################", "bbbbbbbbbbbbbbbbbbbbbbb", }; icewm-1.3.7/lib/themes/metal2/dframeITL.xpm0000664000076600007660000000064611463274241017412 0ustar develdevel/* XPM */ static char *maximize_xpm[] = { "16 16 3 1", ". c #666666", " c #00c000", "a c #c0c0c0", "a...............", "................", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. ", ".. " }; icewm-1.3.7/lib/themes/metal2/frameABR.xpm0000664000076600007660000000104111463274241017210 0ustar develdevel/* XPM */ static char *frameABR[] = { /* width height num_colors chars_per_pixel */ " 16 16 5 1", /* colors */ ". c #ffffff", "# c #9999cc", "a c #666699", "b c #000000", "c c #c0c0c0", /* pixels */ "..........aaa#aa", "..........aaaaaa", "..........aaaaaa", "..........aaaaaa", "..........aaaaaa", "..........aaaaaa", "..........aaaaaa", "..........aaaaaa", "..........aaaaaa", "..........aaaaaa", "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa", "#aaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaac" }; icewm-1.3.7/lib/themes/metal2/titleAS.xpm0000664000076600007660000000056711463274241017152 0ustar develdevel/* XPM */ static char *titleAM[] = { /* width height num_colors chars_per_pixel */ " 4 21 4 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #9999cc", "b c #666699", /* pixels */ "####", "####", "####", "##.#", "###b", ".###", "#b##", "##.#", "###b", ".###", "#b##", "##.#", "###b", ".###", "#b##", "##.#", "###b", "####", "####", "####", "bbbb" }; icewm-1.3.7/lib/themes/metal2/dframeIB.xpm0000664000076600007660000000035411463274241017250 0ustar develdevel/* XPM */ static char *frameAT[] = { /* width height num_colors chars_per_pixel */ " 32 2 1 1", /* colors */ ". c #666666", /* pixels */ "................................", "................................" }; icewm-1.3.7/lib/themes/metal2/frameAT.xpm0000664000076600007660000000041311463274241017112 0ustar develdevel/* XPM */ static char *frameAT[] = { /* width height num_colors chars_per_pixel */ " 1 6 6 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #9999cc", "b c #666699", "c c #000000", "d c #c0c0c0", /* pixels */ "b", "b", "c", "a", "b", "b" }; icewm-1.3.7/lib/themes/metal2/rollupI.xpm0000664000076600007660000000216011463274241017222 0ustar develdevel/* XPM */ static char * rollupI_xpm[] = { "20 42 5 1", " c None", ". c #CFCFCF", "+ c #000000", "@ c #656565", "# c #FFFFFF", "....................", "....................", "....................", "....................", "....................", "...++++++++++++++...", "...+@@@@@@@@@@@@@#..", "....#####+@#######..", "........+@@@#.......", ".......+@+@+@#......", "......+@#+@#+@#.....", ".........+@#........", ".........+@#........", ".........+@#........", ".........+@#........", "..........##........", "....................", "....................", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@", "....................", "....................", "....................", "....................", "....................", "...++++++++++++++...", "...++++++++++++++#..", "....#####++#######..", "........++++#.......", ".......++++++#......", "......++#++#++#.....", ".........++#........", ".........++#........", ".........++#........", ".........++#........", "..........##........", "....................", "....................", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@"}; icewm-1.3.7/lib/themes/metal2/dframeIR.xpm0000664000076600007660000000040111463274241017261 0ustar develdevel/* XPM */ static char *frameAL[] = { "2 32 1 1", ". c #666666", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", ".."}; icewm-1.3.7/lib/themes/metal2/titleIT.xpm0000664000076600007660000000047011463274241017154 0ustar develdevel/* XPM */ static char *titleAT[] = { /* width height num_colors chars_per_pixel */ " 1 21 4 1", /* colors */ ". c #ffffff", "# c #cccccc", "a c #9999cc", "b c #666699", /* pixels */ "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "b" }; icewm-1.3.7/lib/themes/metal2/frameIR.xpm0000664000076600007660000000037011463274241017122 0ustar develdevel/* XPM */ static char *frameAR[] = { /* width height num_colors chars_per_pixel */ " 6 1 6 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #cccccc", "b c #999999", "c c #666666", "d c #c0c0c0", /* pixels */ "bbcabb", }; icewm-1.3.7/lib/themes/metal2/closeI.xpm0000664000076600007660000000304011463274241017010 0ustar develdevel/* XPM */ static char *closeA0[] = { /* width height num_colors chars_per_pixel */ " 28 42 5 1", /* colors */ ". c #000000", "# c #ffffff", "a c #cfcfcf", "b c #656565", "c c #9a9a9a", /* pixels */ "aaaaaaaaaaaaaaaaaaaaaaaaaaab", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaa..............aaaaa", "aaaaaaaaa.bbbbbbbbbbbbb#aaaa", "aaaaaaaaa.baaaaaaaaaabb#aaaa", "aaaaaaaaa.baa.aaaa.aa.b#aaaa", "aaaaaaaaa.ba.bbaa.bba.b#aaaa", "aaaaaaaaa.baabbb.bb#a.b#aaaa", "aaaaaaaaa.baaabbbb#aa.b#aaaa", "aaaaaaaaa.baaa.bbb#aa.b#aaaa", "aaaaaaaaa.baa.bbbbbaa.b#aaaa", "aaaaaaaaa.ba.bb##bbba.b#aaaa", "aaaaaaaaa.baab#aaab##.b#aaaa", "aaaaaaaaa.baaaaaaaa#a.b#aaaa", "aaaaaaaaa.bb..........b#aaaa", "aaaaaaaaa.bbbbbbbbbbbbb#aaaa", "aaaaaaaaaa##############aaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbbbbbbbbbb", "aaaaaaaaaaaaaaaaaaaaaaaaaaab", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaa..............aaaaa", "aaaaaaaaa..............#aaaa", "aaaaaaaaa..cccccccccc..#aaaa", "aaaaaaaaa..cc.cccc.cc..#aaaa", "aaaaaaaaa..c...cc...c..#aaaa", "aaaaaaaaa..cc......cc..#aaaa", "aaaaaaaaa..ccc....ccc..#aaaa", "aaaaaaaaa..ccc....ccc..#aaaa", "aaaaaaaaa..cc......cc..#aaaa", "aaaaaaaaa..c...cc...c..#aaaa", "aaaaaaaaa..cc.cccc.cc..#aaaa", "aaaaaaaaa..cccccccccc..#aaaa", "aaaaaaaaa..............#aaaa", "aaaaaaaaa..............#aaaa", "aaaaaaaaaa##############aaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbbbbbbbbbb" }; icewm-1.3.7/lib/themes/metal2/frameAL.xpm0000664000076600007660000000037011463274241017104 0ustar develdevel/* XPM */ static char *frameAL[] = { /* width height num_colors chars_per_pixel */ " 6 1 6 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #9999cc", "b c #666699", "c c #000000", "d c #c0c0c0", /* pixels */ "bbcabb", }; icewm-1.3.7/lib/themes/metal2/dframeITR.xpm0000664000076600007660000000100311463274241017404 0ustar develdevel/* XPM */ static char *frameATR[] = { /* width height num_colors chars_per_pixel */ " 16 16 3 1", /* colors */ ". c #666666", "# c #000000", "a c #C0C0C0", /* pixels */ "...............a", "................", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############..", "##############.." }; icewm-1.3.7/lib/themes/metal2/depthI.xpm0000664000076600007660000000217511463274241017017 0ustar develdevel/* XPM */ static char * hideI_xpm[] = { "20 42 6 1", " c None", ". c #CFCFCF", "+ c #000000", "@ c #656565", "# c #FFFFFF", "c c #9a9a9a", "....................", "....................", "....................", "......+++++++++++...", "......+@@@@@@@@@@#..", "......+@#######+@#..", "......+@#......+@#..", "......+@#......+@#..", "..+++++@#......+@#..", "..+@@@@@#......+@#..", "..+@##+@++++++++@#..", "..+@#.+@@@@@@@@@@#..", "..+@#..###########..", "..+@#......+@#......", "..+@#......+@#......", "..+@++++++++@#......", "..+@@@@@@@@@@#......", "...###########......", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@", "....................", "....................", "....................", "......+++++++++++...", "......+++++++++++#..", "......++ccccccc++#..", "......++ccccccc++#..", "......++ccccccc++#..", "..++++++ccccccc++#..", "..++++++ccccccc++#..", "..++cc+++++++++++#..", "..++cc+++++++++++#..", "..++cc############..", "..++ccccccc++#......", "..++ccccccc++#......", "..+++++++++++#......", "..+++++++++++#......", "...###########......", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@"}; icewm-1.3.7/lib/themes/metal2/hideI.xpm0000664000076600007660000000215611463274241016623 0ustar develdevel/* XPM */ static char * hideI_xpm[] = { "20 42 5 1", " c None", ". c #CFCFCF", "+ c #000000", "@ c #656565", "# c #FFFFFF", "....................", "....................", "....................", "...++++++...+++++...", "...+@@@@@...@@@@@#..", "...+@####...###+@#..", "...+@#.........+@#..", "...+@#.........+@#..", "...+@#.........+@#..", "....................", "....................", "....................", "...+@#.........+@#..", "...+@#.........+@#..", "...+@#.........+@#..", "...+@++++...++++@#..", "...+@@@@@...@@@@@#..", "....#####...######..", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@", "....................", "....................", "....................", "...++++++...+++++...", "...++++++...+++++#..", "...++####...###++#..", "...++#.........++#..", "...++#.........++#..", "...++#.........++#..", "....................", "....................", "....................", "...++#.........++#..", "...++#.........++#..", "...++#.........++#..", "...++++++...+++++#..", "...++++++...+++++#..", "....#####...######..", "....................", "....................", "@@@@@@@@@@@@@@@@@@@@"}; icewm-1.3.7/lib/themes/metal2/dframeAR.xpm0000664000076600007660000000040111463274241017251 0ustar develdevel/* XPM */ static char *frameAL[] = { "2 32 1 1", ". c #666699", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", ".."}; icewm-1.3.7/lib/themes/metal2/dframeIT.xpm0000664000076600007660000000035411463274241017272 0ustar develdevel/* XPM */ static char *frameAT[] = { /* width height num_colors chars_per_pixel */ " 32 2 1 1", /* colors */ ". c #666666", /* pixels */ "................................", "................................" }; icewm-1.3.7/lib/themes/metal2/titleIR.xpm0000664000076600007660000000054011463274241017150 0ustar develdevel/* XPM */ static char *titleAR[] = { /* width height num_colors chars_per_pixel */ " 3 21 4 1", /* colors */ ". c #ffffff", "# c #cccccc", "a c #9999cc", "b c #666699", /* pixels */ "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "###", "bbb" }; icewm-1.3.7/lib/themes/metal2/default.theme0000664000076600007660000000242611463274241017523 0ustar develdevelThemeDescription="Metal2" ThemeAuthor="Marko Macek" Look=metal TitleBarHeight=21 TitleButtonsSupported="xmisrhd" BorderSizeX=6 BorderSizeY=6 CornerSizeX=16 CornerSizeY=16 DlgBorderSizeX=2 DlgBorderSizeY=2 ColorNormalBorder="rgb:CC/CC/CC" ColorActiveBorder="rgb:66/66/99" ColorActiveTitleBar="rgb:CC/CC/FF" ColorNormalTitleBar="rgb:CC/CC/CC" ColorNormalButton="rgb:C0/C0/C0" ColorActiveButton="rgb:CC/CC/FF" ColorNormalTitleBarText="rgb:00/00/00" ColorActiveTitleBarText="rgb:00/00/00" ColorNormalMenu="rgb:CC/CC/CC" ColorActiveMenuItem="rgb:99/99/CC" ColorNormalMenuItemText="rgb:00/00/00" ColorActiveMenuItemText="rgb:00/00/00" ColorDisabledMenuItemText="rgb:80/80/80" ColorMoveSizeStatus="rgb:C0/C0/C0" ColorMoveSizeStatusText="rgb:00/00/00" ColorDefaultTaskBar="rgb:C0/C0/C0" ColorNormalTaskBarApp="rgb:C0/C0/C0" ColorNormalTaskBarAppText="rgb:00/00/00" ColorActiveTaskBarApp="rgb:CC/CC/FF" ColorActiveTaskBarAppText="rgb:00/00/00" ColorMinimizedTaskBarApp="rgb:A0/A0/A0" ColorMinimizedTaskBarAppText="rgb:00/00/00" ColorListBox="rgb:CC/CC/CC" ColorListBoxText="rgb:00/00/00" ColorListBoxSelection="rgb:CC/CC/FF" ColorListBoxSelectionText="rgb:00/00/00" ColorScrollBar="rgb:CC/CC/CC" ColorScrollBarSlider="rgb:CC/CC/FF" ColorScrollBarButton="rgb:CC/CC/CC" ColorScrollBarButtonArrow="rgb:00/00/00" icewm-1.3.7/lib/themes/metal2/dframeAL.xpm0000664000076600007660000000040111463274241017243 0ustar develdevel/* XPM */ static char *frameAL[] = { "2 32 1 1", ". c #666699", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", "..", ".."}; icewm-1.3.7/lib/themes/metal2/frameIT.xpm0000664000076600007660000000041311463274241017122 0ustar develdevel/* XPM */ static char *frameAT[] = { /* width height num_colors chars_per_pixel */ " 1 6 6 1", /* colors */ ". c #ffffff", "# c #ccccff", "a c #cccccc", "b c #999999", "c c #666666", "d c #c0c0c0", /* pixels */ "b", "b", "c", "a", "b", "b" }; icewm-1.3.7/lib/themes/warp4/0000775000076600007660000000000011463274241014720 5ustar develdevelicewm-1.3.7/lib/themes/warp4/close.xpm0000664000076600007660000000204211463274241016551 0ustar develdevel/* XPM */ static char *close_xpm[] = { "20 40 3 1", " c #c0c0c0", "W c #FFFFFF", "D c #808080", " ", " ", " WWWWWWWWWWWWWWW ", " W D ", " W DDDDDDDDD D ", " W D W D ", " W D W D D ", " W D W D W D ", " W D W D W D ", " W D W D W D ", " W D W D W D ", " W D W D W D ", " W D W D W D ", " W W D W D ", " W D W D ", " W WWWWWWWWW D ", " W D ", " DDDDDDDDDDDDDDD ", " ", " ", " ", " ", " DDDDDDDDDDDDDDD ", " D W ", " D WWWWWWWWW W ", " D W D W ", " D W D W W ", " D W D W D W ", " D W D W D W ", " D W D W D W ", " D W D W D W ", " D W D W D W ", " D W D W D W ", " D D W D W ", " D W D W ", " D DDDDDDDDD W ", " D W ", " WWWWWWWWWWWWWWW ", " ", " "}; icewm-1.3.7/lib/themes/warp4/minimize.xpm0000664000076600007660000000204611463274241017271 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "20 40 3 1", " c #C0C0C0", "W c #FFFFFF", "D c #808080", " ", " ", " ", " ", " ", " WWWWWWWWW ", " W D ", " W DDDDD D ", " W D W D ", " W D W D ", " W D W D ", " W D W D ", " W WWWWW D ", " W D ", " DDDDDDDDD ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " DDDDDDDDD ", " D W ", " D WWWWW W ", " D W D W ", " D W D W ", " D W D W ", " D W D W ", " D DDDDD W ", " D W ", " WWWWWWWWW ", " ", " ", " ", " ", " "}; icewm-1.3.7/lib/themes/warp4/hide.xpm0000664000076600007660000000204111463274241016354 0ustar develdevel/* XPM */ static char *hide_xpm[] = { "20 40 3 1", " c #C0C0C0", "W c #FFFFFF", "D c #808080", " ", " ", " ", " ", " WWWWW WWWW ", " W D W D ", " W DDD D D ", " W D W D ", " WDD WDD ", " ", " ", " WWD WW ", " W D W D ", " W WW WWW D ", " W D W D ", " DDDD DDDD ", " ", " ", " ", " ", " ", " ", " ", " ", " DDDDD DDDD ", " D W D W ", " D WWW W W ", " D W D W ", " DWW DWW ", " ", " ", " DDW DD ", " D W D W ", " D DD DDD W ", " D W D W ", " WWWW WWWW ", " ", " ", " ", " "}; icewm-1.3.7/lib/themes/warp4/maximize.xpm0000664000076600007660000000204511463274241017272 0ustar develdevel/* XPM */ static char *maximize_xpm[] = { "20 40 3 1", " c #c0c0c0", "W c #FFFFFF", "D c #808080", " ", " ", " WWWWWWWWWWWWWWW ", " W D ", " W DDDDDDDDDDD D ", " W D W D ", " W D W D ", " W D W D ", " W D W D ", " W D W D ", " W D W D ", " W D W D ", " W D W D ", " W D W D ", " W D W D ", " W WWWWWWWWWWW D ", " W D ", " DDDDDDDDDDDDDDD ", " ", " ", " ", " ", " DDDDDDDDDDDDDDD ", " D W ", " D WWWWWWWWWWW W ", " D W D W ", " D W D W ", " D W D W ", " D W D W ", " D W D W ", " D W D W ", " D W D W ", " D W D W ", " D W D W ", " D W D W ", " D DDDDDDDDDDD W ", " D W ", " WWWWWWWWWWWWWWW ", " ", " "}; icewm-1.3.7/lib/themes/warp4/restore.xpm0000664000076600007660000000204411463274241017131 0ustar develdevel/* XPM */ static char *restore_xpm[] = { "20 40 3 1", " c #c0c0c0", "W c #FFFFFF", "D c #808080", " ", " ", " WW WW ", " W D W D ", " W D W D ", " W D WWWWWWW W D ", " W D W D W D ", " W D W DDD D W D ", " W D W D W D W D ", " W D W D W D W D ", " W D W D W D W D ", " W D W D W D W D ", " W D W WWW D W D ", " W D W D W D ", " W D DDDDDD W D ", " W D W D ", " W D W D ", " DD DD ", " ", " ", " ", " ", " DD DD ", " D W D W ", " D W D W ", " D W DDDDDDD D W ", " D W D W D W ", " D W D WWW W D W ", " D W D W D W D W ", " D W D W D W D W ", " D W D W D W D W ", " D W D W D W D W ", " D W D DDD W D W ", " D W D W D W ", " D W WWWWWW D W ", " D W D W ", " D W D W ", " WW WW ", " ", " "}; icewm-1.3.7/lib/themes/warp4/default.theme0000664000076600007660000000151011463274241017365 0ustar develdevelThemeDescription="OS/2 Warp4 style theme" ThemeAuthor="Marko Macek" Look=warp4 #ShowXButton=2 TitleBarHeight=20 TitleButtonsSupported="xmihs" ColorNormalBorder="rgb:C0/C0/C0" ColorActiveBorder="rgb:C0/C0/C0" ColorNormalButton="rgb:C0/C0/C0" ColorNormalTitleBar="rgb:80/80/80" ColorActiveTitleBar="rgb:00/00/A0" ColorNormalTitleBarText="rgb:00/00/00" ColorActiveTitleBarText="rgb:FF/FF/FF" ColorNormalMenu="rgb:C0/C0/C0" ColorActiveMenuItem="rgb:00/00/A0" ColorNormalMenuItemText="rgb:00/00/00" ColorActiveMenuItemText="rgb:FF/FF/FF" ColorDisabledMenuItemText="rgb:80/80/80" ColorMoveSizeStatus="rgb:C0/C0/C0" ColorMoveSizeStatusText="rgb:00/00/00" ColorDefaultTaskBar="rgb:C0/C0/C0" ColorNormalTaskBarApp="rgb:C0/C0/C0" ColorNormalTaskBarAppText="rgb:00/00/00" ColorActiveTaskBarApp="rgb:E0/E0/E0" ColorActiveTaskBarAppText="rgb:00/00/00" icewm-1.3.7/lib/themes/yellowmotif/0000775000076600007660000000000011463274241016235 5ustar develdevelicewm-1.3.7/lib/themes/yellowmotif/close.xpm0000664000076600007660000000066611463274241020100 0ustar develdevel/* XPM */ static char *maximize_xpm[] = { "16 16 4 1", "F c #FF7F7F", ". c #FF0000", "B c #800000", " c #C0C0C0", " ", " ", " FF FF ", " F..B F..B ", " F...B F...B ", " F...BF...B ", " F......B ", " F....B ", " F....B ", " F......B ", " F...BB...B ", " F...B B...B ", " F..B B..B ", " BB BB ", " ", " ", }; icewm-1.3.7/lib/themes/yellowmotif/minimize.xpm0000664000076600007660000000073511463274241020611 0ustar develdevel/* XPM */ static char * minimize_xpm[] = { "16 16 4 1", " c #C0C0C0", "W c #FFFF7F", ". c #FFFF00", "D c #808000", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " WWWWWWWWWW ", " W..........D ", " DDDDDDDDDD ", " ", " ", " ", " "}; icewm-1.3.7/lib/themes/yellowmotif/maximize.xpm0000664000076600007660000000066411463274241020614 0ustar develdevel/* XPM */ static char *maximize_xpm[] = { "16 16 4 1", " c #c0c0c0", "W c #7FFF7F", ". c #00FF00", "D c #008000", " ", " ", " WWWWWWWWWWW ", " W..........D ", " W.DDDDDDD..D ", " W.D W.D ", " W.D W.D ", " W.D W.D ", " W.D W.D ", " W.D W.D ", " W.D W.D ", " W..WWWWWWW.D ", " W..........D ", " DDDDDDDDDDD ", " ", " "}; icewm-1.3.7/lib/themes/yellowmotif/restore.xpm0000664000076600007660000000066411463274241020454 0ustar develdevel/* XPM */ static char *maximize_xpm[] = { "16 16 4 1", " c #c0c0c0", "W c #7FFF7F", ". c #00FF00", "D c #008000", " ", " ", " WD ", " W..D ", " W.DW.D ", " W.D W.D ", " W.D W.D ", " W.D W.D ", " W.D W.D ", " W.D W.D ", " W.D W.D ", " W.DW.D ", " W..D ", " WD ", " ", " "}; icewm-1.3.7/lib/themes/yellowmotif/menu.xpm0000664000076600007660000000063111463274241017727 0ustar develdevel/* XPM */ static char * mini-x_xpm[] = { "16 16 2 1", " c none s none", ". c #FF0000", " ", " ", " ", " .... . ", " .... . ", " .... . ", " .... . ", " ... . ", " . .. ", " . .... ", " . .... ", " . .... ", " . .... ", " . .... ", " ", " "}; icewm-1.3.7/lib/themes/yellowmotif/default.theme0000644000076600007660000000176311463274241020712 0ustar develdevel ThemeDescription="Not too flashy, not too boring" ThemeAuthor="Andreas Leitgeb " Look=motif TitleBarHeight=18 TitleButtonsSupported="xmis" BorderSizeX=4 BorderSizeY=4 CornerSizeX=22 CornerSizeY=22 DlgBorderSizeX=2 DlgBorderSizeY=2 DesktopBackgroundImage="" DesktopBackgroundColor="rgb:40/a0/c0" ColorNormalBorder="rgb:C0/C0/C0" ColorActiveBorder="rgb:C0/C0/C0" ColorNormalButton="rgb:C0/C0/C0" ColorNormalTitleBar="rgb:C0/C0/C0" ColorActiveTitleBar="rgb:FF/E7/00" ColorNormalTitleBarText="rgb:00/00/00" ColorActiveTitleBarText="rgb:00/00/00" ColorNormalMenu="rgb:C0/C0/C0" ColorActiveMenuItem="rgb:A0/A0/A0" ColorNormalMenuItemText="rgb:00/00/00" ColorActiveMenuItemText="rgb:00/00/00" ColorDisabledMenuItemText="rgb:80/80/80" ColorMoveSizeStatus="rgb:C0/C0/C0" ColorMoveSizeStatusText="rgb:00/00/00" ColorDefaultTaskBar="rgb:C0/C0/C0" ColorNormalTaskBarApp="rgb:C0/C0/C0" ColorNormalTaskBarAppText="rgb:00/00/00" ColorActiveTaskBarApp="rgb:E0/E0/E0" ColorActiveTaskBarAppText="rgb:00/00/00" icewm-1.3.7/lib/menu0000664000076600007660000000117711463274255013300 0ustar develdevel# This is an example for IceWM's menu definition file. # # Place your variants in /etc/icewm or in $HOME/.icewm # since modifications to this file will be discarded when you # (re)install icewm. # prog xterm xterm xterm prog rxvt xterm rxvt -bg black -cr green -fg white -C -fn 9x15 -sl 500 prog fte fte fte prog NEdit nedit nedit prog Mozilla mozilla mozilla prog XChat xchat xchat prog Gimp gimp gimp separator menuprog Gnome folder icewm-menu-gnome1 --list menuprog Gnome folder icewm-menu-gnome2 --list menuprog KDE folder icewm-menu-gnome --list /usr/share/applnk/ menufile Programs folder programs menufile Tool_bar folder toolbar icewm-1.3.7/lib/.cvsignore0000664000076600007660000000006211463274241014374 0ustar develdevelkeys menu programs preferences toolbar winoptions icewm-1.3.7/lib/toolbar.in0000664000076600007660000000041611463274241014371 0ustar develdevel# This is an example for IceWM's toolbar definition file. # # Place your variants in @CFGDIR@ or in $HOME/.icewm # since modifications to this file will be discarded when you # (re)install icewm. # prog XTerm xterm xterm prog FTE fte fte prog Netscape netscape netscape icewm-1.3.7/icewm.spec.in0000644000076600007660000000670711463274241014225 0ustar develdevel Name: icewm Version: %%VERSION%% Release: 1 Obsoletes: icewm-common <= 1.2.2 Summary: Fast and small X11 window manager Group: User Interface/Desktops License: LGPL URL: http://www.icewm.org/ Packager: Marko Macek Source: http://ftp.sourceforge.net/icewm/%{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot %define pkgdata %{_datadir}/%{name} %description A lightweight window manager for the X Window System. Optimized for "feel" and speed, not looks. Features multiple workspaces, opaque move/resize, task bar, window list, clock, mailbox, CPU, Network, APM status. %package l10n Group: %{group} Summary: Message translations for icewm Requires: icewm = %{version} %description l10n Message translations for icewm. %package themes Group: %{group} Summary: Extra themes for icewm Requires: icewm > 1.2.2 %description themes Extra themes for icewm. %if %{?_with_menus_gnome2:1}%{!?_with_menus_gnome2:0} %package menu-gnome2 Group: %{group} Summary: GNOME menu support for icewm (using gnome 2.x). Requires: icewm > 1.2.2 Requires: gnome-libs >= 1.4 %description menu-gnome2 GNOME 1.0 menu support for icewm (using gnome 2.x). %endif %prep %setup %build CXXFLAGS="$RPM_OPT_FLAGS" ./configure \ --prefix=%{_prefix} \ --exec-prefix=%{_exec_prefix} \ --datadir=%{_datadir} \ --sysconfdir=%{_sysconfdir} \ --with-docdir=%{_docdir} \ %{?_with_menus_gnome2:--enable-menus-gnome2} \ %{?_with_debug:--enable-debug} make %install make DESTDIR=$RPM_BUILD_ROOT install install-desktop mkdir -p $RPM_BUILD_ROOT/etc/icewm %clean test -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" && rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) %doc README COPYING AUTHORS CHANGES BUGS doc/*.html doc/icewm.sgml %doc icewm.lsm %config %{pkgdata}/keys %config %{pkgdata}/menu %config %{pkgdata}/preferences %config %{pkgdata}/toolbar %config %{pkgdata}/winoptions %dir /etc/icewm %dir %{pkgdata}/icons %dir %{pkgdata}/ledclock %dir %{pkgdata}/mailbox %dir %{pkgdata}/taskbar %dir %{pkgdata}/themes %{_bindir}/* %{pkgdata}/icons/* %{pkgdata}/ledclock/* %{pkgdata}/mailbox/* %{pkgdata}/taskbar/* %{pkgdata}/themes/icedesert/* /usr/share/xsessions/icewm-session.desktop /usr/share/applications/icewm.desktop %if %{?_with_menus_gnome2:1}%{!?_with_menus_gnome2:0} %files menu-gnome2 %defattr(-,root,root) %{_bindir}/icewm-menu-gnome2 %endif %files l10n %defattr(-,root,root) %dir %{_datadir}/locale %{_datadir}/locale/* %files themes %defattr(-,root,root) %dir %{pkgdata}/themes/nice %{pkgdata}/themes/nice/* %dir %{pkgdata}/themes/nice2 %{pkgdata}/themes/nice2/* %dir %{pkgdata}/themes/gtk2 %{pkgdata}/themes/gtk2/* %dir %{pkgdata}/themes/warp3 %{pkgdata}/themes/warp3/* %dir %{pkgdata}/themes/warp4 %{pkgdata}/themes/warp4/* %dir %{pkgdata}/themes/motif %{pkgdata}/themes/motif/* %dir %{pkgdata}/themes/win95 %{pkgdata}/themes/win95/* %dir %{pkgdata}/themes/metal2 %{pkgdata}/themes/metal2/* %dir %{pkgdata}/themes/Infadel2 %{pkgdata}/themes/Infadel2/* %dir %{pkgdata}/themes/yellowmotif %{pkgdata}/themes/yellowmotif/* %changelog * Sun Mar 06 2005 Jiri Slaby 1.2.20 - Repaired uid in packages (themes, il2 and gnomefiles) * Sun Feb 02 2003 Christian W. Zuckschwerdt 1.2.6 - Switched to rpm build in macros. * Sun Dec 15 2002 Marko Macek 1.2.3pre2 - Completely rewritten and simplified packaging. icewm-1.3.7/sysdep.os20000664000076600007660000000041411463274241013563 0ustar develdevelCXX=gcc -O -Wall -Wpointer-arith -Wconversion -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Winline -DOS2 -Zmtd -D__ST_MT_ERRNO LD=g++ -O -Zmtd SYS_CFLAGS= -DSHAPE SYS_INCDIRS= -I/XFree86/include SYS_INCDIRS= -L/XFree86/lib SYS_LIBS= -lXext -lXpm -lX11 icewm-1.3.7/autogen.sh0000755000076600007660000000306511463274241013633 0ustar develdevel#!/bin/sh aclocal=${ACLOCAL:-aclocal} autoconf=${AUTOCONF:-autoconf} autoheader=${AUTOHEADER:-autoheader} while test $# -gt 0; do case $1 in --with-aclocal) shift aclocal=$1 ;; --with-aclocal=*) aclocal=`echo $1 | sed 's/^--with-aclocal=//'` ;; --with-autoconf) shift autoconf=$1 ;; --with-autoconf=*) autoconf=`echo $1 | sed 's/^--with-autoconf=//'` ;; --with-autoheader) shift autoheader=$1 ;; --with-autoheader=*) autoheader=`echo $1 | sed 's/^--with-autoheader=//'` ;; --*) cat <<. Usage: autogen [OPTIONS] Options: --with-aclocal=PROGRAM version of aclocal to use. --with-autoconf=PROGRAM version of autoconf to use. --with-autoheader=PROGRAM version of autoheader to use. Alternatively you can the the variables ACLOCAL, AUTOCONF, AUTOHEADER. . exit ;; esac shift done rm -f config.cache . ./VERSION sed icewm.spec \ -e 's/%%VERSION%%/'"$VERSION"'/' sed icewm.lsm \ -e 's/%%VERSION%%/'"$VERSION"'/' \ -e 's/%%DATE%%/'"`date +%d%b%Y`"'/' "$aclocal" && "$autoconf" && "$autoheader" && echo "You can run \`configure' now to create your Makefile." || cat >&2 <<. Failed to build the \`configure' script. You need GNU autoconf version 2.50 (or newer) installed for this procedure. If autoconf should be installed allready call `basename $0` --help" to see how to adjust this script. . # # !!! Fix the build system to allow $top_builddir != $top_srcdir # !!! or add an option to create build directories (find, ln -s, ...) # # echo "Maybe you want to create a build directory first." # icewm-1.3.7/Makefile0000664000076600007660000001121111463274255013271 0ustar develdevel################################################################################ # GNU make should only be needed in maintainer mode now ################################################################################ # Please run 'configure' first (generate it with autogen.sh) ################################################################################ srcdir = . top_srcdir = . PACKAGE = icewm VERSION = 1.3.7 PREFIX = /usr BINDIR = /usr/X11R6/bin LIBDIR = /usr/share/icewm CFGDIR = /etc/icewm LOCDIR = /usr/share/locale KDEDIR = /usr/share DOCDIR = /usr/share/doc MANDIR = /usr/share/man EXEEXT = INSTALL = /usr/bin/install -c INSTALLDIR = /usr/bin/install -c -m 755 -d INSTALLBIN = ${INSTALL} INSTALLLIB = ${INSTALL} -m 644 INSTALLETC = ${INSTALL} -m 644 INSTALLMAN = ${INSTALL} -m 644 MKFONTDIR = /usr/bin/mkfontdir DESTDIR = ################################################################################ BINFILES = $(top_srcdir)/src/icewm$(EXEEXT) $(top_srcdir)/src/icewm-session$(EXEEXT) $(top_srcdir)/src/icesh$(EXEEXT) $(top_srcdir)/src/icewmhint$(EXEEXT) $(top_srcdir)/src/icewmbg$(EXEEXT) $(top_srcdir)/src/icewmtray$(EXEEXT) $(top_srcdir)/src/icehelp$(EXEEXT) icewm-set-gnomewm LIBFILES = lib/preferences lib/winoptions lib/keys \ lib/menu lib/toolbar # lib/programs DOCFILES = README BUGS CHANGES COPYING AUTHORS INSTALL VERSION icewm.lsm MANFILES = icewm.1 XPMDIRS = icons ledclock taskbar mailbox cursors THEMES = nice motif win95 warp3 warp4 metal2 gtk2 Infadel2 nice2 \ icedesert yellowmotif all: base nls install: install-base install-nls base icesound icehelp: @cd src; $(MAKE) $@ docs: @cd doc; $(MAKE) all nls: @cd po; $(MAKE) all srcclean: @cd src; $(MAKE) clean clean: srcclean @cd doc; $(MAKE) clean distclean: clean rm -f *~ config.cache config.log config.status install.inc \ sysdep.inc src/config.h \ lib/preferences \ lib/menu lib/programs lib/keys lib/winoptions lib/toolbar maintainer-clean: distclean rm -f icewm.spec icewm.lsm Makefile configure src/config.h.in @cd doc; $(MAKE) maintainer-clean check: @cd src ; $(MAKE) check >/dev/null dist: distclean docs configure # Makefile TABS *SUCK* install-base: base @echo ------------------------------------------ @echo "Installing binaries in $(DESTDIR)$(BINDIR)" @$(INSTALLDIR) "$(DESTDIR)$(BINDIR)" @for bin in $(BINFILES); do \ $(INSTALLBIN) "$${bin}" "$(DESTDIR)$(BINDIR)"; \ done @echo "Installing presets and icons in $(DESTDIR)$(LIBDIR)" @$(INSTALLDIR) "$(DESTDIR)$(LIBDIR)" #-@$(INSTALLDIR) "$(DESTDIR)$(CFGDIR)" @for lib in $(LIBFILES); do \ $(INSTALLLIB) "$${lib}" "$(DESTDIR)$(LIBDIR)"; \ done @for xpmdir in $(XPMDIRS); do \ if test -d "lib/$${xpmdir}"; then \ $(INSTALLDIR) "$(DESTDIR)$(LIBDIR)/$${xpmdir}"; \ for pixmap in "lib/$${xpmdir}/"*.xpm; do \ $(INSTALLLIB) "$${pixmap}" "$(DESTDIR)$(LIBDIR)/$${xpmdir}"; \ done; \ fi; \ done @echo ------------------------------------------ @for theme in $(THEMES); do \ SRCDIR="$(top_srcdir)" \ DESTDIR="$(DESTDIR)" \ LIBDIR="$(LIBDIR)" \ XPMDIRS="$(XPMDIRS)" \ INSTALLDIR="$(INSTALLDIR)" \ INSTALLLIB="$(INSTALLLIB)" \ MKFONTDIR="$(MKFONTDIR)" \ $(top_srcdir)/utils/install-theme.sh "$${theme}"; \ done @#for a in $(ETCFILES) ; do $(INSTALLETC) "$$a" $(CFGDIR) ; done @echo ------------------------------------------ install-docs: docs @echo ------------------------------------------ @rm -fr "$(DESTDIR)$(DOCDIR)/icewm-$(VERSION)" @$(INSTALLDIR) "$(DESTDIR)$(DOCDIR)/icewm-$(VERSION)" @echo "Installing documentation in $(DESTDIR)$(DOCDIR)" @$(INSTALLLIB) $(DOCFILES) "$(DESTDIR)$(DOCDIR)/icewm-$(VERSION)" @$(INSTALLLIB) "$(top_srcdir)/doc/"*.sgml "$(DESTDIR)$(DOCDIR)/icewm-$(VERSION)" @$(INSTALLLIB) "$(top_srcdir)/doc/"*.html "$(DESTDIR)$(DOCDIR)/icewm-$(VERSION)" @echo ------------------------------------------ install-nls: nls @echo ------------------------------------------ @cd po; $(MAKE) install @echo ------------------------------------------ install-man: @$(INSTALLDIR) "$(DESTDIR)$(MANDIR)/man1" @for man in $(MANFILES); do \ $(INSTALLMAN) doc/$$man.man $(DESTDIR)$(MANDIR)/man1/$$man; \ done install-desktop: @echo ------------------------------------------ @$(INSTALLDIR) "$(DESTDIR)/usr/share/xsessions" @$(INSTALLDIR) "$(DESTDIR)/usr/share/applications" @$(INSTALLLIB) "$(top_srcdir)/lib/icewm-session.desktop" "$(DESTDIR)/usr/share/xsessions/icewm-session.desktop" @$(INSTALLLIB) "$(top_srcdir)/lib/icewm.desktop" "$(DESTDIR)/usr/share/applications/icewm.desktop" @echo ------------------------------------------ icewm-1.3.7/VERSION0000644000076600007660000000003411463274241012673 0ustar develdevelPACKAGE=icewm VERSION=1.3.7 icewm-1.3.7/README0000644000076600007660000000103411463274241012504 0ustar develdevelIceWM The name was decided on a very hot day... (and Marko started writing it in winter ;-) Look and Feel... The aim of IceWM is to have good 'Feel' and decent 'Look'. 'Feel' is much more important than 'Look' ... Send bug reports, feedback, suggestions, ... to: Marko.Macek@gmx.net or icewm-user@lists.sourceforge.net See also BUGS, TODO and the sites at: http://www.icewm.org/ http://www.sourceforge.net/projects/icewm/ http://icewm.sourceforge.net/ Information about compilation and installation can be found in INSTALL. icewm-1.3.7/PLATFORMS0000644000076600007660000000151411463274241013121 0ustar develdevelList of successful builds (please send updates): 1.2.14pre5: SunOS sparc-solaris1 5.9 Generic_112233-03 sun4u sparc SUNW,Ultra-60 ./configure --disable-xfreetype --enable-corefonts --disable-xinerama --with-xpm --disable-xrandr icewm-1.2.10pre4: RedHat Linux 9: Linux 2.4.20-10/i586 (custom build), g++ 3.2.2, glibc-2.3.0, XFree86 4.3.0 icewm-1.0.9: Linux 2.4.4/i686, g++ 2.95.3, glibc-2.1.2, XFree86 4.0.3 Linux 2.4.4/i686, icc 5.0.1 Beta, glibc-2.1.2, XFree86 4.0.3 Linux 2.2.5/i586, egcs 2.91.66, glibc-2.1.1, XFree86 3.3.3.1 SunOS 5.6, g++ 2.95.2, OpenWindows 3.6 icewm-1.0.4: Linux-2.2-i386,egcs-1.1,glibc-2.1,X11R6.3,XFree86-3.3 icewm-1.0.3: OpenBSD, gcc-2.95.1 IRIX-6.5 icewm-1.0.0: Linux-2.3.34-i386,gcc-2.95.2,glibc-2.1.2,XFree86-3.3.5 icewm-0.9.52: HP-UX-9.0,g++-2.6.3,,X11R5, IRIX-6.5,g++ Solaris-2.6,g++ icewm-1.3.7/po/0000775000076600007660000000000011463274255012253 5ustar develdevelicewm-1.3.7/po/pl.po0000664000076600007660000010617311463274241013231 0ustar develdevel# IceWM Polish Translation for v./1.2.15 # Bart # msgid "" msgstr "Project-Id-Version: 1.2.15\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2004-08-15 17:44+0200\n" "Last-Translator: Bart Kreska \n" "Language-Team: Bart's Garage <>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Zasilanie" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "P" #, c-format msgid " - Charging" msgstr " - Åadowanie" msgid "C" msgstr "C" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "Obciążenie procesora: " #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "NieprawidÅ‚owy protokół poczty: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "NieprawidÅ‚owa Å›cieżka do poczty: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Używana skrzynka: \"%s\"\n" msgid "Error checking mailbox." msgstr "Błąd podczas sprawdzania poczty." #, c-format msgid "%ld mail message." msgstr "%ld wiadomoÅ›ci" #, c-format msgid "%ld mail messages." msgstr "%ld wiadomoÅ›ci" #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Interfejs %s:\n" " Aktualna prÄ™dkość (we/wy):\t%li %s/%li %s\n" " Åšrednia prÄ™dkość (we/wy):\t%lli %s/%lli %s\n" " Åšrednia caÅ‚kowita (we/wy):\t%li %s/%li %s\n" " PrzesÅ‚ano (we/wy):\t%lli %s/%lli %s\n" " Czas połączenia:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " ID dzwoniÄ…cego:\t" msgid "Workspace: " msgstr "Obszar roboczy: " msgid "Back" msgstr "Wstecz" msgid "Alt+Left" msgstr "Alt+Lewo" msgid "Forward" msgstr "Naprzód" msgid "Alt+Right" msgstr "Alt+Prawo" msgid "Previous" msgstr "Poprzedni" msgid "Next" msgstr "NastÄ™pny" msgid "Contents" msgstr "Zawartość" msgid "Index" msgstr "Indeks" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Zamknij" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Użycie: %s NAZWA_PLIKU\n" "\n" "Prosta przeglÄ…darka wyÅ›wietlajÄ…ca dokument HTML o podanej " "NAZWIE_PLIKU.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "NieprawidÅ‚owa Å›cieżka: %s\n" msgid "Invalid path: " msgstr "NierawidÅ‚owa Å›cieżka: " msgid "List View" msgstr "Widok listy" msgid "Icon View" msgstr "Widok ikon" msgid "Open" msgstr "Otwórz" msgid "Undo" msgstr "Cofnij" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Nowy" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Zrestartuj" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "To samo" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "Operacja \"%s\" wymaga co najmniej %d argumentów" #, c-format msgid "Invalid expression: `%s'" msgstr "NieprawidÅ‚owe wyrażenie: \"%s\"" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Nazwane symbole domeny \"%s\" (zakres numeryczny: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "NieprawidÅ‚owa nazwa obszaru roboczego: \"%s\"" #, c-format msgid "Workspace out of range: %d" msgstr "Obszar roboczy poza zakresem: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Użycie: %s [OPCJE] AKCJE\n" "\n" "Opcje:\n" " -display DISPLAY Uruchamia na X-serwerze okreÅ›lonym " "przez DISPLAY.\n" " DomyÅ›lnie: $DISPLAY lub :0.0 jeÅ›li nie " "ustawiono.\n" " -window WINDOW_ID OkreÅ›la okno do manipulowania. " "Specjalne\n" " identyfikatory to \"root\" dla " "głównego okna\n" "\t\t\t i \"focus\" dla aktywnego w tej chwili okna.\n" "\n" "Akcje:\n" " setIconTitle TYTUÅ Ustawia tytuÅ‚ ikony.\n" " setWindowTitle TYTUÅ Ustawia tytuÅ‚ okna.\n" " setState MASKA STAN Ustawia stan okna GNOME na STAN.\n" " \t\t\t WpÅ‚ywa tylko na bity wybrane przez MASKĘ.\n" " STAN i MASKA sÄ… wyrażeniami domeny\n" " `GNOME window state'.\n" " toggleState STAN Przełącza bity stanu okna GNOME " "okreÅ›lone przez\n" " wyrażenie STAN.\n" " setHints HINTS Ustawia okno podpowiedzi GNOME na " "HINTS.\n" " setLayer WARSTWA Przenosi okno do innej warstwy okien " "GNOME.\n" " setWorkspace OBSZAR Przenosi okno na inny obszar roboczy. " "Wybierz\n" " \t\t\t główne okno by zmienić bieżący obszar roboczy.\n" " listWorkspaces \t Wypisuje nazwy wszystkich obszarów " "roboczych.\n" " setTrayOption TRAYOPTION Ustawia opcje podpowiedzi zasobnika " "IceWM.\n" "\n" "Wyrażenia:\n" " Wyrażenia sÄ… listÄ… symboli domeny połączonymi przez \"+\" lub \"|" "\":\n" "\n" " WYRAÅ»ENIE ::= SYMBOL | WYRAÅ»ENIE ( \"+\" | \"|\" ) SYMBOL\n" "\n" msgid "GNOME window state" msgstr "Stan okna GNOME" msgid "GNOME window hint" msgstr "Podpowiedź okna GNOME" msgid "GNOME window layer" msgstr "Warstwa okna GNOME" msgid "IceWM tray option" msgstr "Opcje zasobnika IceWM" msgid "Usage error: " msgstr "Błąd użycia: " #, c-format msgid "Invalid argument: `%s'." msgstr "NieprawidÅ‚owy argument: \"%s\"" msgid "No actions specified." msgstr "Nie okreÅ›lono akcji." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Nie można otworzyć ekranu: %s. X-y muszÄ… być uruchomione oraz musi " "być ustawiona zmienna $DISPLAY." #, c-format msgid "Invalid window identifier: `%s'" msgstr "NieprawidÅ‚owy identyfikator okna: \"%s\"" #, c-format msgid "workspace #%d: `%s'\n" msgstr "obszar roboczy #%d: \"%s\"\n" #, c-format msgid "Unknown action: `%s'" msgstr "Nieznana akcja: \"%s\"" #, c-format msgid "Socket error: %d" msgstr "Błąd gniazdka: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Odtwarzanie próbki #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Brak urzÄ…dzenia: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Nie można połączyć siÄ™ z demonem ESound: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Błąd <%d> podczas wysyÅ‚ania \"%s:%s\"" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Próbka <%d> wysÅ‚ana jako \"%s:%s\"" #, c-format msgid "Playing sample #%d" msgstr "Odtwarzanie próbki #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Nie można połączyć siÄ™ z serwerem YIFF: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Nie można zmienić trybu audio na \"%s\"" #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Wykryto przełącznik trybu audio, poczÄ…tkowy tryb \"%s\" nie jest już " "stosowany." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Wykryto przełącznik trybu audio, wyłączono automatycznÄ… zmianÄ™ trybu." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "ZastÄ™powanie poprzedniego trybu audio \"%s\"." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Użycie: %s [OPCJE]...\n" "\n" "Odtwarza pliki audio przy zdarzeniach GUI wywoÅ‚anych przez IceWM.\n" "\n" "Opcje:\n" "\n" " -d, --display=DISPLAY Ekran używany przez IceWM " "(standardowo: $DISPLAY).\n" " -s, --sample-dir=DIR OkreÅ›la katalog, który zawiera " "pliki\n" " dźwiÄ™kowe (np. ~/.icewm/sounds).\n" " -i, --interface=TARGET OkreÅ›la interfejs wyjÅ›cia dźwiÄ™ku\n" " jeden z OSS, YIFF, ESD\n" " -D, --device=DEVICE (tylko OSS) okreÅ›la cyfrowy procesor " "dźwiÄ™ku\n" " (standardowo /dev/dsp).\n" " -S, --server=ADDR:PORT\t(ESD i YIFF) okreÅ›la adres serwera i " "numer\n" " portu (standardowo localhost:16001 " "dla ESD\n" "\t\t\t\ti localhost:9433 dla YIFF).\n" " -m, --audio-mode[=MODE] (tylko YIFF) okreÅ›la tryb audio " "(pozostaw puste\n" " a dostaniesz listÄ™).\n" " --audio-mode-auto \t(tylko YIFF) zmienia w locie tryb audio " "na najlepszy\n" " spróbkowany (może byc przyczynÄ… " "problemów \n" " z innymi klientami Y, nadpisuje\n" " --audio-mode).\n" "\n" " -v, --verbose Tryb gadatliwy (wypisuje każde " "zdarzenie dźwiÄ™kowe\n" " na stdout).\n" " -V, --version WyÅ›wietla informacjÄ™ o wersji i " "koÅ„czy.\n" " -h, --help WyÅ›wietla (ten) ekran pomocy i " "koÅ„czy.\n" "\n" "Zwracane wartoÅ›ci:\n" "\n" " 0 Powodzenie.\n" " 1 Ogólny błąd.\n" " 2 Błąd linii komend.\n" " 3 Błąd podsystemów (np. nie można podłączyć siÄ™ do serwera).\n" "\n" msgid "Multiple sound interfaces given." msgstr "Podano zbyt wiele urzÄ…dzeÅ„ dźwiÄ™kowych." #, c-format msgid "Support for the %s interface not compiled." msgstr "ObsÅ‚uga interfejsu %s nie zostaÅ‚a wkompilowana." #, c-format msgid "Unsupported interface: %s." msgstr "NieobsÅ‚ugiwany interfejs: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Odebrano sygnaÅ‚ %d: KoÅ„czenie..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Odebrano sygnaÅ‚ %d: PrzeÅ‚adowanie próbek..." msgid "Hex View" msgstr "Widok szesnastkowy" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "RozwiÅ„ zakÅ‚adki" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Zawijaj linie" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "Użycie: icewmbg [ -r | -q ]\n" " -r PrzeÅ‚aduj icewmbg\n" " -q Wyjdź z icewmbg\n" "Åaduje obrazek tÅ‚a okreÅ›lony w pliku preferences\n" " DesktopBackgroundCenter - WyÅ›wietl obrazek wycentrowany\n" " SupportSemitransparency - ObsÅ‚uga półprzeźroczystych terminali\n" " DesktopBackgroundColor - Kolor tÅ‚a\n" " DesktopBackgroundImage - Obrazek tÅ‚a\n" " DesktopTransparencyColor - Kolor dla półprzeźroczystych okien\n" " DesktopTransparencyImage - Obraz dla półprzeźroczystych okien\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: nieznana opcja \"%s\"\n" "Wpisz \"%s\" --help by uzyskać wiÄ™cej informacji.\n" #, c-format msgid "Loading image %s failed" msgstr "ZaÅ‚adowanie obrazu %s nie powiodÅ‚o siÄ™" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Błąd Å‚adowania obrazu \"%s\": %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Użycie: icewhint [class.instance] opcja arg\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Brak pamiÄ™ci (len=%d)." msgid "Warning: " msgstr "Ostrzeżenie: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Nieznany kierunek w żądaniu przenieÅ›/zmieÅ„ rozmiar: %d" msgid "Default" msgstr "DomyÅ›lny" msgid "(C)" msgstr "(C)" msgid "Theme:" msgstr "Motyw:" msgid "Theme Description:" msgstr "Opis motywu:" msgid "Theme Author:" msgstr "Autor motywu:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "O IceWM" msgid "Unable to get current font path." msgstr "Nie można pobrać bieżącej Å›cieżki do czcionek." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Nieoczekiwany format zmiennej ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Wieloktrotne odwoÅ‚ania do gradientu \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "Nieznana nazwa gradientu: %s" msgid "_Logout" msgstr "WyjÅ›cie" msgid "_Cancel logout" msgstr "Anuluj wyjÅ›_cie" msgid "Lock _Workstation" msgstr "Zablokuj stano_wisko" msgid "Re_boot" msgstr "Uruchom ponownie komputer" msgid "Shut_down" msgstr "Zamknij" msgid "Restart _Icewm" msgstr "Zrestartuj _IceWM" msgid "Restart _Xterm" msgstr "Zrestartuj _Xterm" msgid "_Menu" msgstr "_Menu" msgid "_Above Dock" msgstr "Powyżej z_adokowania" msgid "_Dock" msgstr "_Dokuj" msgid "_OnTop" msgstr "Na Wierzch" msgid "_Normal" msgstr "_Normalnie" msgid "_Below" msgstr "Poniżej" msgid "D_esktop" msgstr "Biurko" msgid "_Restore" msgstr "P_rzywróć" msgid "_Move" msgstr "PrzenieÅ›" msgid "_Size" msgstr "Wielkość" msgid "Mi_nimize" msgstr "Mi_nimalizuj" msgid "Ma_ximize" msgstr "Maksymalizuj" msgid "_Fullscreen" msgstr "PeÅ‚ny ekran" msgid "_Hide" msgstr "Sc_howaj" msgid "Roll_up" msgstr "RozwiÅ„" msgid "R_aise" msgstr "PodnieÅ›" msgid "_Lower" msgstr "Obniż" msgid "La_yer" msgstr "Warstwa" msgid "Move _To" msgstr "PrzenieÅ› do" msgid "Occupy _All" msgstr "Z_ajmij wszystkie" msgid "Limit _Workarea" msgstr "Ogranicz obszar roboczy" msgid "Tray _icon" msgstr "Ikona zasobnika" msgid "_Close" msgstr "Zamknij" msgid "_Kill Client" msgstr "Zam_knij klienta" msgid "_Window list" msgstr "Lista okien" msgid "Another window manager already running, exiting..." msgstr "Inny menadżer okien jest już uruchomiony, koÅ„czenie pracy..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Nie można ponownie uruchomić: %s\n" "Czy $PATH wskazuje na %s?" #, fuzzy, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "Użycie: %s [OPCJE]\n" "Uruchamia menedżera okien IceWM.\n" "\n" "Opcje:\n" " --display=NAZWA NAZWA używanego serwera X.\n" "%s --sync Synchronizuje polecenia X11.\n" "\n" " -c, --config=PLIK Åaduje preferencje z PLIKU.\n" " -t, --theme=PLIK Åaduje motyw z PLIKU.\n" " -n, --no-configure Ignoruje plik preferencji.\n" "\n" " -v, --version Wypisuje informacje o wersji i koÅ„czy.\n" " -h, --help Wypisuje ten tekst o użyciu i koÅ„czy.\n" "%s --restart Nie używaj tego: to jest flaga wewnÄ™trzna.\n" "\n" "Zmienne Å›rodowiskowe:\n" " ICEWM_PRIVCFG=PATH Katalog zawierajÄ…cy prywatne pliki " "konfiguracyjne\n" " użytkownika, domyÅ›lnie \"$HOME/.icewm/\"\n" " DISPLAY=NAZWA Nazwa używanego serwera X, domyÅ›lnie zależy od " "Xlib\n" " MAIL=URL PoÅ‚ożenie skrzynki pocztowej. JeÅ›li nie " "podano\n" " schematu, używany jest lokalny schemat \"plik" "\".\n" "\n" "Odwiedź http://www.icewm.org/ aby zgÅ‚osić błędy, poprawki, " "komentarze...\n" msgid "Confirm Logout" msgstr "Potwierdź wyjÅ›cie" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "WyjÅ›cie spowoduje zamkniÄ™cie wszystkich aktywnych aplikacji.\n" "Kontynuować?" msgid "Bad Look name" msgstr "ZÅ‚a nazwa wyglÄ…du" #, fuzzy msgid "Loc_k Workstation" msgstr "Zablokuj stano_wisko" msgid "_Logout..." msgstr "Wy_loguj" msgid "_Cancel" msgstr "Anuluj" msgid "_Restart icewm" msgstr "U_ruchom ponownie IceWM" msgid "_About" msgstr "Inform_acje" msgid "Maximize" msgstr "Maksymalizuj" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Minimalizuj" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Ukryj" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "RozwiÅ„" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "PodnieÅ›/Obniż" msgid "Kill Client: " msgstr "Zamknij klienta: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "UWAGA! Wszystkie niezapisane zmiany zostanÄ… utracone\n" "gdy ten klient zostanie zamkniÄ™ty. Czy chcesz kontynuować?" msgid "Restore" msgstr "Przywróć" msgid "Rolldown" msgstr "ZwiÅ„" #, c-format msgid "Error in window option: %s" msgstr "Błąd w opcji okna: %s" #, c-format msgid "Unknown window option: %s" msgstr "Nieznana opcja okna: %s" msgid "Syntax error in window options" msgstr "Błąd skÅ‚adni w opcjach okna" msgid "Out of memory for window options" msgstr "Za maÅ‚o pamiÄ™ci dla opcji okna" msgid "Missing command argument" msgstr "Polecenie wymaga podania argumentu" #, c-format msgid "Bad argument %d" msgstr "NieprawidÅ‚owy argument %d" #, c-format msgid "Error at prog %s" msgstr "Błąd w prog %s" #, c-format msgid "Unexepected keyword: %s" msgstr "Nieoczekiwane sÅ‚owo kluczowe: %s" #, c-format msgid "Error at key %s" msgstr "Błąd przy kluczu %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programy" msgid "_Run..." msgstr "U_ruchom..." msgid "_Windows" msgstr "Okna" msgid "_Help" msgstr "Pomoc" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "Mo_tywy" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Menedżer sesji: nieznany wiersz %s" msgid "Task Bar" msgstr "Pasek zadaÅ„" msgid "Tile _Vertically" msgstr "Wyłóż Poziomo" msgid "T_ile Horizontally" msgstr "Wyłóż P_ionowo" msgid "Ca_scade" msgstr "Ka_skada" msgid "_Arrange" msgstr "Rozmieść" msgid "_Minimize All" msgstr "_Minimalizuj wszystkie" msgid "_Hide All" msgstr "Sc_howaj wszystkie" msgid "_Undo" msgstr "Cofnij" msgid "Arrange _Icons" msgstr "Rozmieść ikony" msgid "_Refresh" msgstr "OdÅ›wież" msgid "_License" msgstr "_Licencja" msgid "Favorite applications" msgstr "Ulubione programy" msgid "Window list menu" msgstr "Menu listy okien" msgid "Show Desktop" msgstr "Pokaż biurko" msgid "All Workspaces" msgstr "Wszystkie obszary robocze" msgid "Del" msgstr "UsuÅ„" msgid "_Terminate Process" msgstr "ZakoÅ„cz proces" msgid "Kill _Process" msgstr "Zabij _proces" msgid "_Show" msgstr "Pokaż" msgid "_Minimize" msgstr "_Minimalizuj" msgid "Window list" msgstr "Lista okien" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Obszar roboczy %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "PÄ™tla komunikatów: błąd wyboru (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Nierozpoznana opcja: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Nierozpoznany argument: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Przełącznik %s wymaga podania argumentu" #, c-format msgid "Unknown key name %s in %s" msgstr "Nierozpoznana nazwa klucza %s w %s" #, c-format msgid "Bad argument: %s for %s" msgstr "NieprawidÅ‚owy argument %s dla %s" #, c-format msgid "Bad option: %s" msgstr "NieprawidÅ‚owa opcja: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Błąd Å‚adowania obrazka \"%s\"" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Błąd obrazka kursora: \"%s\" zawiera za dużo różnych kolorów" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "BUG? Imlib nie może odczytać \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "BUG? Zdeformowany nagłówek XPM ale Imlib mógÅ‚ przetworzyć \"%s\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "BUG? Nieoczekiwany koniec pliku XPM ale Imlib mógÅ‚ przetworzyć \"%s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "BUG? Nieoczekiwany znak ale Imlib mógÅ‚ przetworzyć \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "Błąd Å‚adowania fontu \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Åadowanie fontu \"%s\" nie powiodÅ‚o siÄ™." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Błąd Å‚adowania zestawu fontów \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "NieokreÅ›lone kodowanie zestawu fontów \"%s\":" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Brak pamiÄ™ci dla obrazka \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Åadowanie obrazka\"%s\" nie powiodÅ‚o siÄ™" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: problem z obrazkiem" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: mapowanie obrazka nie powiodÅ‚o siÄ™" msgid "Cu_t" msgstr "Wy_tnij" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "Kopiuj" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "Wklej" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Wklej wybór" msgid "Select _All" msgstr "Wybierz wszystko" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Locale nieobsÅ‚ugiwane przez bibliotekÄ™ C. Przywrócenie\n" "ustawieÅ„ lokalnych \"C\"." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "OkreÅ›lenie bieżącego lokalnego zestawu kodowania nie powiodÅ‚o siÄ™. " "PrzyjmujÄ™ ISO-8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv nie dostarcza (wystarczajÄ…cego) %s dla konwerterów %s." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Niepoprawny wielobajtowy Å‚aÅ„cuch: \"%s\": %s" msgid "OK" msgstr "OK" msgid "Cancel" msgstr "Anuluj" #, c-format msgid "Out of memory for pixel map %s" msgstr "Brak pamiÄ™ci dla obrazka %s" #, c-format msgid "Could not find pixel map %s" msgstr "Nie można znaleźć obrazka %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Brak pamiÄ™ci dla bufora RGB obrazka %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Nie można znaleźć bufora RGB obrazka %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Użycie mechanizmu zapasowego do konwersji piksli (głębokość: %d; " "maski (czerwony/zielony/niebieski): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d trybów bitowych nie obsÅ‚ugiwanych (jeszcze)" msgid "$USER or $LOGNAME not set?" msgstr "Nie ustawiono zmiennych $USER lub $LOGNAME?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" nie opisuje wspólnego schematu internetowego" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" nie zawiera opisu schematu" #~ msgid " processes." #~ msgstr " procesów." #~ msgid "program label expected" #~ msgstr "oczekiwano etykiety programu" #~ msgid "icon name expected" #~ msgstr "oczekiwano nazwy ikony" #~ msgid "window management class expected" #~ msgstr "oczekiwano klasy zarzÄ…dzania oknem" #~ msgid "menu caption expected" #~ msgstr "oczekiwano wpisu menu" #~ msgid "opening curly expected" #~ msgstr "oczekiwano otwarcia curly" #~ msgid "action name expected" #~ msgstr "oczekiwano nazwy akcji" #~ msgid "unknown action" #~ msgstr "nieznana akcja" #~ msgid "Failed to open %s: %s" #~ msgstr "Błąd otwarcia %s: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Nie można uruchomić %s: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Nie można utworzyć procesu potomnego: %s" #~ msgid "Not a regular file: %s" #~ msgstr "To nie jest zwykÅ‚y plik: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Oczekiwana para liczb szesnastkowych" #~ msgid "Unexpected identifier" #~ msgstr "Nieoczekiwany identyfikator" #~ msgid "Identifier expected" #~ msgstr "Oczekiwany identyfikator" #~ msgid "Separator expected" #~ msgstr "Oczekiwany separator" #~ msgid "Invalid token" #~ msgstr "Niepoprawny znacznik" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "To nie jest liczba szesnastkowa: %c%c (w \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm -nieznany format (%d)" #~ msgid "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgstr "stan:\tużytkownik = %i, nice = %i, system = %i, wolne = %i" #~ msgid "bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgstr "sÅ‚upki:\tużytkownik = %i, nice = %i, system = %i (h = %i)\n" #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "cpu: %d %d %d %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat znajduje zbyt wiele procesorów: powinno być %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "Błąd XQueryTree dla okna 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Skompilowano z flagÄ… DEBUG. BÄ™dÄ… wypisywane informacje " #~ "Å›ledzenia." #~ msgid "_No icon" #~ msgstr "Bez iko_ny" #~ msgid "_Minimized" #~ msgstr "Z_minimalizowane" #~ msgid "_Exclusive" #~ msgstr "Wyłączni_e" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "Błąd X %s(0x%lX): %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "Błąd tworzenia rozwidlenia (errno=%d)" #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "Błąd tworzenia nienazwanego potoku (errno=%d)." #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Błąd obrazka kursora: \"%s\" zawiera za dużo różnych kolorów" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Nie udaÅ‚o siÄ™ utworzyć nienazwanego potoku: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Nie udaÅ‚o siÄ™ zduplikować deskryptora pliku: %s" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Błąd kopiowania obszaru rysowania 0x%x do bufora " #~ "piksli" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: Błąd kopiowania obszaru rysowania 0x%x do bufora " #~ "piksl (%d:%d-%dx%d" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "ZBYT WIELE POÅÄ„CZEŃ ICE -- nie obsÅ‚ugiwane" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Menedżer sesji: błąd IceAddConnectionWatch." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Menedżer sesji: błąt inicjalizacji: %s" icewm-1.3.7/po/id.po0000664000076600007660000007025611463274241013214 0ustar develdevel# Pesan Bahasa Indonesia untuk IceWM # Copyright (C) 2005 Arif E. Nugroho # "Arif E. Nugroho" # msgid "" msgstr "Project-Id-Version: icewm 1.0.9\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2005-01-23 23:32+0700\n" "Last-Translator: Arif E. Nugroho \n" "Language-Team: Indonesia\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Baterai" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "P" #, c-format msgid " - Charging" msgstr " - Mengisi Baterai" msgid "C" msgstr "" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "Beban CPU: " #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Protokol mailbox tidak valid: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Path mailbox tidak sesuai: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Menggunakan mailbox \"%s\"\n" msgid "Error checking mailbox." msgstr "Error dalam mengecek mailbox" #, c-format msgid "%ld mail message." msgstr "%ld pesan." #, c-format msgid "%ld mail messages." msgstr "%ld pesan." #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Perangkat %s:\n" " Kecepatan saat ini (in/out):\t%li %s/%li %s\n" " Rata-rata saat ini (in/out):\t%lli %s/%lli %s\n" " Jumlah rata-rata (in/out):\t%li %s/%li %s\n" " Pengiriman (in/out):\t%lli %s/%lli %s\n" " Waktu Sambung:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Id pemanggil:\t" msgid "Workspace: " msgstr "Ruang Kerja: " msgid "Back" msgstr "Mundur" msgid "Alt+Left" msgstr "" msgid "Forward" msgstr "Maju" msgid "Alt+Right" msgstr "" msgid "Previous" msgstr "Sebelumnya" msgid "Next" msgstr "Selanjutnya" msgid "Contents" msgstr "Isi" msgid "Index" msgstr "" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Tutup" msgid "Ctrl+Q" msgstr "" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Penggunaan: %s NAMA FILE\n" "\n" "Sebuah HTML browser sederhana untuk menampilkan dokumen.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "" msgid "Invalid path: " msgstr "" msgid "List View" msgstr "Tampilan List" msgid "Icon View" msgstr "Tampilan Ikon" msgid "Open" msgstr "Buka" msgid "Undo" msgstr "" msgid "Ctrl+Z" msgstr "" msgid "New" msgstr "Baru" msgid "Ctrl+N" msgstr "" msgid "Restart" msgstr "" msgid "Ctrl+R" msgstr "" #. !!! fix msgid "Same Game" msgstr "" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "Perintah `%s' membutuhkan setidaknya %d opsi" #, c-format msgid "Invalid expression: `%s'" msgstr "Ekpresi tidak benar: '%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Nama Ruang Kerja salah: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "Ruan kerja diluar jangkauan: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Pengguanaan: %s [OPSI] AKSI\n" "\n" "Opsi:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" "\t\t\t `focus' for the currently focused window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " \t \t \t manipulate. If WM_CLASS contains a period, " "only\n" " \t \t windows with exactly the same WM_CLASS " "property\n" "\t\t\t are matched. If there is no period, windows of\n" "\t\t\t the same class and windows of the same instance\n" "\t\t\t (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " \t\t\t Only the bits selected by MASK are affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set th GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " \t\t\t the root window to change the current workspace.\n" " listWorkspaces \t Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgid "GNOME window state" msgstr "GNOME status window" msgid "GNOME window hint" msgstr "GNOME tips window" msgid "GNOME window layer" msgstr "GNOME lapisan window" msgid "IceWM tray option" msgstr "IceWM opsi tray" msgid "Usage error: " msgstr "Salah penggunaan: " #, c-format msgid "Invalid argument: `%s'." msgstr "Argumen tidak valid: `%s'." msgid "No actions specified." msgstr "Tidak ada aksi yang diberikan." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Tidak dapat menjalankan display: %s. X harus berjalan dan variable " "$DISPLAY diset" #, c-format msgid "Invalid window identifier: `%s'" msgstr "Indentitas window tidak valid: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "ruang kerja #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "Aksi tidak diketahui: `%s'" #, c-format msgid "Socket error: %d" msgstr "Socket tidak jalan: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Memainkan sample $%d (%s)" #, c-format msgid "No such device: %s" msgstr "Tidak ada alat yang bernama: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Tidak dapat menghubungi ESound daemon: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "" #, c-format msgid "Playing sample #%d" msgstr "" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Tidak dapat berubah ke audio mode `%s'." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "" msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "" #, c-format msgid "Overriding previous audio mode `%s'." msgstr "" #, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "" msgid "Multiple sound interfaces given." msgstr "" #, c-format msgid "Support for the %s interface not compiled." msgstr "Layanan untuk %s interface tidak dikompile" #, c-format msgid "Unsupported interface: %s." msgstr "Interface tidak didukung: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Mendapat sinyal %d: Terminating..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Mendapat sinyal %d: Reloading samples..." msgid "Hex View" msgstr "Tampilan heksa" msgid "Ctrl+H" msgstr "" msgid "Expand Tabs" msgstr "" msgid "Ctrl+T" msgstr "" msgid "Wrap Lines" msgstr "" msgid "Ctrl+W" msgstr "" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "Penggunaan: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Tutup icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Tampilkan desktop background centered, " "not tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Warna Desktop background\n" " DesktopBackgroundImage - Gambar Desktop background\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: opsi tidak dikenali `%s'\n" "Coba `%s --help' untuk informasi lebih lanjut.\n" #, c-format msgid "Loading image %s failed" msgstr "Gagal menampilkan gambar %s" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Gagal meload pixmap \"%s\" : %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Penggunaan: icewmhint [class.instance] opsi argumen\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Kehabisan memory (len=%d)." msgid "Warning: " msgstr "Peringatan: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "" msgid "Default" msgstr "Default" msgid "(C)" msgstr "©" msgid "Theme:" msgstr "Theme:" msgid "Theme Description:" msgstr "Deskripsi Theme:" msgid "Theme Author:" msgstr "Pencipta Theme:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "Tentang IceWM" msgid "Unable to get current font path." msgstr "" msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "" #, c-format msgid "Unknown gradient name: %s" msgstr "" msgid "_Logout" msgstr "_Keluar" msgid "_Cancel logout" msgstr "_Batal Keluar" msgid "Lock _Workstation" msgstr "Kunci _Workstation" msgid "Re_boot" msgstr "" msgid "Shut_down" msgstr "_Matikan" msgid "Restart _Icewm" msgstr "" msgid "Restart _Xterm" msgstr "" msgid "_Menu" msgstr "" msgid "_Above Dock" msgstr "_Diatas Dock" msgid "_Dock" msgstr "" msgid "_OnTop" msgstr "_Diatas" msgid "_Normal" msgstr "" msgid "_Below" msgstr "_Dibawah" msgid "D_esktop" msgstr "" msgid "_Restore" msgstr "_Kembali" msgid "_Move" msgstr "_Pindahkan" msgid "_Size" msgstr "_Ukuran" msgid "Mi_nimize" msgstr "Mini_malkan" msgid "Ma_ximize" msgstr "Mak_simalkan" msgid "_Fullscreen" msgstr "_Satulayar" msgid "_Hide" msgstr "_Sembunyi" msgid "Roll_up" msgstr "Gulung _Atas" msgid "R_aise" msgstr "Ke_atas" msgid "_Lower" msgstr "_Kebawah" msgid "La_yer" msgstr "Po_sisi" msgid "Move _To" msgstr "Pindahkan _Ke" msgid "Occupy _All" msgstr "" msgid "Limit _Workarea" msgstr "" msgid "Tray _icon" msgstr "" msgid "_Close" msgstr "_Tutup" msgid "_Kill Client" msgstr "_Matikan Client" msgid "_Window list" msgstr "Daftar _Window" msgid "Another window manager already running, exiting..." msgstr "Window manager yang lain sudah berjalan, keluar..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Tidak dapat restart: %s\n" "Apakah $PATH menuju ke %s?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "" msgid "Confirm Logout" msgstr "Yakin Keluar" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Keluar akan menutup semua aplikasi aktif.\n" "Lanjutkan?" msgid "Bad Look name" msgstr "" #, fuzzy msgid "Loc_k Workstation" msgstr "Kunci _Workstation" msgid "_Logout..." msgstr "_Keluar..." msgid "_Cancel" msgstr "_Batal" msgid "_Restart icewm" msgstr "" msgid "_About" msgstr "_Tentang" msgid "Maximize" msgstr "Maksimalkan" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Minimalkan" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Sembunyi" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Gulung Atas" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Naikkan/Turunkan" msgid "Kill Client: " msgstr "Matikan Client: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "Peringatan! Semua perubahan yang tidak disimpan\n" "akan hilang ketika client dimatikan. Apakah anda\n" "ingin melanjutkan?" msgid "Restore" msgstr "Kembali" msgid "Rolldown" msgstr "Gulung Bawah" #, c-format msgid "Error in window option: %s" msgstr "Salah dalam opsi window: %s" #, c-format msgid "Unknown window option: %s" msgstr "Video option: %s tidak diketahui" msgid "Syntax error in window options" msgstr "" msgid "Out of memory for window options" msgstr "" msgid "Missing command argument" msgstr "" #, c-format msgid "Bad argument %d" msgstr "" #, c-format msgid "Error at prog %s" msgstr "Kesalahan pada prog %s" #, c-format msgid "Unexepected keyword: %s" msgstr "" #, c-format msgid "Error at key %s" msgstr "" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Aplikasi" msgid "_Run..." msgstr "" msgid "_Windows" msgstr "" msgid "_Help" msgstr "_Bantuan" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "" msgid "Task Bar" msgstr "" msgid "Tile _Vertically" msgstr "" msgid "T_ile Horizontally" msgstr "" msgid "Ca_scade" msgstr "Kas_kade" msgid "_Arrange" msgstr "_Atur" msgid "_Minimize All" msgstr "" msgid "_Hide All" msgstr "_Sembunyikan Semua" msgid "_Undo" msgstr "" msgid "Arrange _Icons" msgstr "Atur _Icons" msgid "_Refresh" msgstr "" msgid "_License" msgstr "_Lisensi" msgid "Favorite applications" msgstr "Aplikasi favorit" msgid "Window list menu" msgstr "" msgid "Show Desktop" msgstr "Lihat Desktop" msgid "All Workspaces" msgstr "Semua Workspaces" msgid "Del" msgstr "Hapus" msgid "_Terminate Process" msgstr "_Hentikan Proses" msgid "Kill _Process" msgstr "Matikan _Proses" msgid "_Show" msgstr "_Tampilkan" msgid "_Minimize" msgstr "_Kecilkan" msgid "Window list" msgstr "Daftar window" #, c-format msgid "%lu. Workspace %-.32s" msgstr "" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "" #, c-format msgid "Unrecognized option: %s\n" msgstr "" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "" #, c-format msgid "Argument required for %s switch" msgstr "" #, c-format msgid "Unknown key name %s in %s" msgstr "" #, c-format msgid "Bad argument: %s for %s" msgstr "" #, c-format msgid "Bad option: %s" msgstr "" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "" #, c-format msgid "Could not load font \"%s\"." msgstr "" #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "" #, c-format msgid "Could not load fontset \"%s\"." msgstr "" #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "" #, c-format msgid "Loading of image \"%s\" failed" msgstr "" msgid "Imlib: Acquisition of X pixmap failed" msgstr "" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "" msgid "Cu_t" msgstr "Pot_ong" msgid "Ctrl+X" msgstr "" msgid "_Copy" msgstr "_Salin" msgid "Ctrl+C" msgstr "" msgid "_Paste" msgstr "_Timpa" msgid "Ctrl+V" msgstr "" msgid "Paste _Selection" msgstr "Timpa _Pilihan" msgid "Select _All" msgstr "Pilih _Semua" msgid "Ctrl+A" msgstr "" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Locale tidak disupport oleh C library. Kembali ke 'C' locale'." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "" #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "" msgid "OK" msgstr "Ya" msgid "Cancel" msgstr "Batal" #, c-format msgid "Out of memory for pixel map %s" msgstr "Kehabisan memory untuk piksel map %s" #, c-format msgid "Could not find pixel map %s" msgstr "Tidak dapat mencari piksel map %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Kehabisan memory untuk RGB piksel buffer %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Tidak dapat mencari RGB piksel buffer %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d bit visuals tidak didukung lagi" msgid "$USER or $LOGNAME not set?" msgstr "$USER atau $LOGNAME tidak diset?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" tidak menjelaskan scheme internet secara umum" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" tidak terdapat deskripsi scheme" #~ msgid " processes." #~ msgstr " proses." #~ msgid "program label expected" #~ msgstr "Diperkiran label program" #~ msgid "icon name expected" #~ msgstr "Diperkirakan nama ikon" #~ msgid "unknown action" #~ msgstr "Aksi tidak diketahui" #~ msgid "Failed to open %s: %s" #~ msgstr "Gagal membuka %s: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Gagal Mengeksekusi %s: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Gagal untuk membuat anak proses: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Bukan sebuah file regular: %s" #~ msgid "Identifier expected" #~ msgstr "Diperkirakan ada Identifiernya" #~ msgid "Separator expected" #~ msgstr "Diperkirakan ada pemisahnya" #~ msgid "Invalid token" #~ msgstr "Token tidak benar" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Bukan angka heksadesimal: %c%c (dalam \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - format tidak diketahui (%d)" #~ msgid "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgstr "status:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "cpu: %d %d %d %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat menemukan terlalu banyak prosesor: seharusnya %d" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree gagal untuk window 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Di kompile dengan DEBUG flag. Pesan debug akan ditampilkan" #~ msgid "_No icon" #~ msgstr "_Tidak ada ikon" #~ msgid "_Minimized" #~ msgstr "_Minimal" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Gagal untuk membuat anonymous pipe: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Gagal menduplikasi deskripsi file: %s" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Gagal menyalin drawable 0x%x ke piksel buffer" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: Gagal menyalin drawable 0x%x ke piksel buffer (%d:%d-%" #~ "dx%d)" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "TERLALU BANYAK KONEKSI ICE -- tidak disupport" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Session Manager: IceAddConnetionWatch gagal." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Session Manager: Init salah: %s" icewm-1.3.7/po/nb.po0000664000076600007660000010746111463274241013216 0ustar develdevel# Norwegian translation of IceWM messages. # Copyright (C) 2002 Free Software Foundation, Inc. # Petter Johan Olsen , 2002. # msgid "" msgstr "Project-Id-Version: IceWM 1.2.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2002-09-22 22:00+0200\n" "Last-Translator: Petter Johan Olsen \n" "Language-Team: Norwegian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Strøm" # this is the short version of "Power" above #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "S" #, c-format msgid " - Charging" msgstr " - Lader" # this is the short version of "Charging" above msgid "C" msgstr "L" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "Prosessorlast: %3.2f %3.2f %3.2f, %d prosesser." #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Ugyldig epost-protokoll: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Ugyldig sti for epostmeldinger: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Bruker postboks \"%s\"\n" msgid "Error checking mailbox." msgstr "Kunne ikke sjekke epost i postboksen." #, c-format msgid "%ld mail message." msgstr "%ld epostmelding." #, c-format msgid "%ld mail messages." msgstr "%ld epostmeldinger." #, fuzzy, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Nettverksenhet %s:\n" " NÃ¥værende hastighet (inn/ut):\t%lli %s/%lli %s\n" " Gjennomsnittlig hastighet (inn/ut):\t%lli %s/%lli %s\n" " Overført totalt (inn/ut):\t%lli %s/%lli %s\n" " Tid pÃ¥logget:\t%d:%02d:%02d%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Tlf.nr.:\t" msgid "Workspace: " msgstr "SkrivebordsomrÃ¥de: " msgid "Back" msgstr "Tilbake" msgid "Alt+Left" msgstr "Alt+Venstre" msgid "Forward" msgstr "Fram" msgid "Alt+Right" msgstr "Alt+Høyre" msgid "Previous" msgstr "Forrige" msgid "Next" msgstr "Neste" msgid "Contents" msgstr "Startside" msgid "Index" msgstr "Ordliste" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Lukk" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "BruksmÃ¥te: %s FILNAVN\n" "\n" "En veldig enkel HTML-leser som viser dokumentet angitt i FILNAVN.\n" #, c-format msgid "Invalid path: %s\n" msgstr "Ugyldig sti: %s\n" msgid "Invalid path: " msgstr "Ugyldig sti: " msgid "List View" msgstr "Listevisning" msgid "Icon View" msgstr "Ikonvisning" msgid "Open" msgstr "Ã…pne" msgid "Undo" msgstr "Angre" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Ny" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Starte pÃ¥ nytt" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Same Game" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "Kommandoen `%s' krever minst %d argumenter." #, c-format msgid "Invalid expression: `%s'" msgstr "Ugyldig uttrykk: `%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Symbolnavn i domenet `%s' (tall mellom %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Ugyldig navn pÃ¥ skrivebordsomrÃ¥de: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "SkrivebordsomrÃ¥det %d finnes ikke" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "BruksmÃ¥te: %s [OPSJONER] KOMMANDOER\n" "\n" "Opsjoner:\n" " -display DISPLAY Kobler til X-serveren angitt i " "DISPLAY.\n" " Standard: verdien av $DISPLAY, " "eller :0.0\n" " hvis $DISPLAY ikke er satt.\n" " -window WINDOW_ID Angir vindu for kommandoer. Verdien " "kan\n" " ogsÃ¥ være `root' for rot-vinduet, " "eller `focus' for det nÃ¥værende " "vinduet i fokus.\n" "\n" "Kommandoer:\n" " setIconTitle TITLE Sett navnet som vises i ikonvisning.\n" " setWindowTitle TITLE Sett tittelen pÃ¥ vinduet.\n" " setState MASK STATE Sett vindustilstand for et GNOME-vindu " "til.\n" " Bare biter angitt i MASK blir " "pÃ¥virket.\n" " STATE og MASK er uttrykk i domenet\n" " `GNOME window state'.\n" " toggleState STATE For et GNOME-vindu, inverter biter " "angitt i\n" " STATE-uttrykket.\n" " setHints HINTS For et GNOME-vindu, sett hints til " "HINTS.\n" " setLayer LAYER Flytter et GNOME-vindu til det angitte " "laget\n" " pÃ¥ skrivebordet.\n" " setWorkspace WORKSPACE Flytter vinduet til et annet " "skrivebords-\n" " omrÃ¥de. Bruk rot-vinduet hvis du vil " "endre\n" " det nÃ¥værende skrivebordsomrÃ¥det.\n" " listWorkspaces Viser liste over alle " "skrivebordsomrÃ¥der.\n" " setTrayOption TRAYOPTION Sett verdi for IceWMs tray-hint.\n" "\n" "Uttrykk:\n" " Uttrykk er en symbolliste fra ett domene pluss tegnet `+' eller " "`|':\n" "\n" " UTTRYKK ::= SYMBOL | UTTRYKK ( `+' | `|' ) SYMBOL\n" "\n" msgid "GNOME window state" msgstr "GNOME vindustilstand" msgid "GNOME window hint" msgstr "GNOME vindushint" msgid "GNOME window layer" msgstr "GNOME vinduslag" msgid "IceWM tray option" msgstr "IceWM tray-innstilling" msgid "Usage error: " msgstr "Feil bruksmÃ¥te: " #, c-format msgid "Invalid argument: `%s'." msgstr "Ugyldig argument: `%s'." msgid "No actions specified." msgstr "Ingen kommandoer spesifisert." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Kan ikke koble til display: %s. X mÃ¥ være startet og variabelen " "$DISPLAY mÃ¥ være satt." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Ugyldig vindus-identifikator: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "skrivebordsomrÃ¥de #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "Ukjent kommando: `%s'" #, c-format msgid "Socket error: %d" msgstr "Socket-feil: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Spiller av lyd #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Ingen slik enhet: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Kan ikke koble til ESound daemon: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Feil <%d> under sending av lydfil `%s:%s'" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Lydfilen <%d> sendt som `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "Spiller av lyd #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Kan ikke koble til YIFF-server: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Kan ikke bytte til lydmodusen `%s'." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Bytte av lydmodus har funnet sted, opprinnelig lydmodus `%s' er ikke " "lenger i bruk." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Bytte av lydmodus har funnet sted, automatisk bytte av lydmodus er " "nÃ¥ slÃ¥tt av." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Overstyrer tidligere lydmodus `%s'." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "BruksmÃ¥te: %s [OPSJONER]...\n" "\n" "Spiller av lydfiler nÃ¥r IceWM genererer GUI-hendelser.\n" "\n" "Opsjoner:\n" "\n" " -d, --display=DISPLAY Display som IceWM bruker (standard: " "$DISPLAY).\n" " -s, --sample-dir=DIR Angir katalogen hvor lydfilene " "ligger\n" " (~/.icewm/sounds).\n" " -i, --interface=TARGET Angir hvilket lydsystem lydfiler " "skal sendes til,\n" " en av OSS, YIFF, ESD\n" " -D, --device=DEVICE (bare OSS) angir lydenhet (standard /" "dev/dsp).\n" " -S, --server=ADDR:PORT (ESD og YIFF) angir server-adresse " "og portnummer.\n" " Standard er localhost:16001 for ESD " "og\n" " localhost:9433 for YIFF.\n" " -m, --audio-mode[=MODE] (bare YIFF) angir lydmodus som skal " "brukes. La være\n" " tom for Ã¥ fÃ¥ en liste.\n" " --audio-mode-auto (bare YIFF) tillat forandring av " "lydmodus for Ã¥\n" " passe til hver enkelt lydfil (kan " "forÃ¥rsake\n" " problemer med andre Y-klienter, " "overstyrer\n" " --audio-mode).\n" "\n" " -v, --verbose Skriv ut ekstra informasjon (og " "navnet pÃ¥ hver lyd-\n" " hendelse) til stdout.\n" " -V, --version Skriv ut versjon og avslutt.\n" " -h, --help Skriv ut denne hjelpen og avslutt.\n" "\n" "Returverdier:\n" "\n" " 0 Suksess.\n" " 1 Generell feil.\n" " 2 Feil pÃ¥ kommandolinjen.\n" " 3 Subsystem-feil (dvs. kan ikke koble til server).\n" "\n" msgid "Multiple sound interfaces given." msgstr "Flere lydenheter spesifisert." #, c-format msgid "Support for the %s interface not compiled." msgstr "Støtte for enheten %s er ikke kompilert." #, c-format msgid "Unsupported interface: %s." msgstr "Enheten %s er ikke støttet." #, c-format msgid "Received signal %d: Terminating..." msgstr "Mottok signal %d, avslutter..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Mottok signal %d, laster lydfiler pÃ¥ nytt..." msgid "Hex View" msgstr "Heksadesimal-visning" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Utvid tabulatortegn" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Del lange linjer" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: ukjent opsjon `%s'\n" "Prøv `%s --help' for mer informasjon.\n" #, c-format msgid "Loading image %s failed" msgstr "Lasting av bildet `%s' mislyktes" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Lasting av bildet `%s' mislyktes: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "BruksmÃ¥te: icewmhint [klasse.instans] opsjon arg\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Ikke mer minne tilgjengelig (len=%d)." msgid "Warning: " msgstr "Advarsel: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Ukjent retning i flytt-/størrelsesendringforespørsel: %d" #, fuzzy msgid "Default" msgstr "Delete" msgid "(C)" msgstr "(C)" msgid "Theme:" msgstr "Tema:" msgid "Theme Description:" msgstr "Temabeskrivelse:" msgid "Theme Author:" msgstr "Temaforfatter:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm - Om" msgid "Unable to get current font path." msgstr "NÃ¥værende tegnsett-sti kunne ikke hentes." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Uventet format for egenskapen ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Flere referanser for fargeovergang `%s'" #, c-format msgid "Unknown gradient name: %s" msgstr "Ukjent navn pÃ¥ fargeovergang: %s" msgid "_Logout" msgstr "_Logg av" msgid "_Cancel logout" msgstr "_Avbryt avlogging" msgid "Lock _Workstation" msgstr "LÃ¥s _arbeidsstasjon" msgid "Re_boot" msgstr "Start _maskinen pÃ¥ nytt" msgid "Shut_down" msgstr "S_lÃ¥ av maskinen" msgid "Restart _Icewm" msgstr "Start _Icewm pÃ¥ nytt" msgid "Restart _Xterm" msgstr "Start _Xterm pÃ¥ nytt" msgid "_Menu" msgstr "_Meny" msgid "_Above Dock" msgstr "_Over dock" msgid "_Dock" msgstr "_Dock" msgid "_OnTop" msgstr "_Øverst" msgid "_Normal" msgstr "_Normal" msgid "_Below" msgstr "_Under" msgid "D_esktop" msgstr "_Skrivebord" msgid "_Restore" msgstr "_Gjenopprett" msgid "_Move" msgstr "_Flytt" msgid "_Size" msgstr "_Endre størrelse" msgid "Mi_nimize" msgstr "Mi_nimer" msgid "Ma_ximize" msgstr "Ma_ksimer" msgid "_Fullscreen" msgstr "_Fullskjerm" msgid "_Hide" msgstr "G_jem" msgid "Roll_up" msgstr "_Rull opp" msgid "R_aise" msgstr "_Hev" msgid "_Lower" msgstr "_Senk" msgid "La_yer" msgstr "_Lag" msgid "Move _To" msgstr "Fl_ytt til" msgid "Occupy _All" msgstr "Finnes pÃ¥ _alle" msgid "Limit _Workarea" msgstr "_Begrens omrÃ¥de" msgid "Tray _icon" msgstr "_Trayikon" msgid "_Close" msgstr "L_ukk" msgid "_Kill Client" msgstr "_Drep klient" msgid "_Window list" msgstr "_Vindusliste" msgid "Another window manager already running, exiting..." msgstr "En annen vindusbehandler kjører allerede, avslutter..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Kunne ikke starte `%s' pÃ¥ nytt\n" "Finnes `%s' i $PATH?" #, fuzzy, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "BruksmÃ¥te: %s [OPSJONER]\n" "Starter vindusbehandleren IceWM.\n" "\n" "Opsjoner:\n" " --display=NAME NAME er X-serveren som skal brukes.\n" "%s --sync Bruk synkrone X11-kall.\n" "\n" " -t, --theme=FILE Last tema fra FILE.\n" " -c, --config=FILE Last innstilinger fra FILE.\n" " -n, --no-configure Ignorer lagrede innstillinger.\n" "\n" " -v, --version Skriv ut versjonsinformasjon og avslutt.\n" " -h, --help Skriv ut denne hjelpen og avslutt.\n" "%s --restart Ikke bruk dette. Det er reservert for " "internt bruk.\n" "\n" "Miljøvariabler:\n" " ICEWM_PRIVCFG=PATH Katalog hvor private innstillinger lagres.\n" " \"$HOME/.icewm/\" er standard.\n" " DISPLAY=NAME Navnet pÃ¥ X-serveren som skal brukes. Xlib " "avgjør hva som\n" " er standard.\n" " MAIL=URL Plasseringen av postboksen din. Dersom intet " "skjema er\n" " spesifisert, brukes lokal \"file\"-skjema.\n" "\n" "Se http://www.icewm.org/ for Ã¥ rapportere feil, fÃ¥ hjelp, og gi " "kommentarer.\n" "\n" msgid "Confirm Logout" msgstr "Bekreft avlogging" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Avlogging vil stenge alle aktive applikasjoner.\n" "Fortsette?" msgid "Bad Look name" msgstr "Ugyldig navn spesifisert for Look" #, fuzzy msgid "Loc_k Workstation" msgstr "LÃ¥s _arbeidsstasjon" msgid "_Logout..." msgstr "_Logg av" msgid "_Cancel" msgstr "A_vbryt" msgid "_Restart icewm" msgstr "_Start Icewm pÃ¥ nytt" msgid "_About" msgstr "_Om" msgid "Maximize" msgstr "Maksimer" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Minimer" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Gjem" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Rull opp" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Hev/senk" msgid "Kill Client: " msgstr "Drep klient: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "ADVARSEL! Alle ulagrede data vil gÃ¥ tapt hvis\n" "denne klienten blir drept. Vil du fortsette?" msgid "Restore" msgstr "Gjenopprett" msgid "Rolldown" msgstr "Rull ned" #, c-format msgid "Error in window option: %s" msgstr "Feil i vindusopsjon: `%s'" #, c-format msgid "Unknown window option: %s" msgstr "Ukjent vindusopsjon: `%s'" msgid "Syntax error in window options" msgstr "Syntaksfeil i vindusopsjonene" msgid "Out of memory for window options" msgstr "Ikke mer minne tilgjengelig for vindusopsjoner" msgid "Missing command argument" msgstr "Mangler kommandoargument" #, c-format msgid "Bad argument %d" msgstr "Ugyldig argument %d" #, c-format msgid "Error at prog %s" msgstr "Feil i prog `%s'" #, c-format msgid "Unexepected keyword: %s" msgstr "Uventet nøkkelord: `%s'" #, c-format msgid "Error at key %s" msgstr "Feil i nøkkel %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programmer" msgid "_Run..." msgstr "_Kjør..." msgid "_Windows" msgstr "_Vinduer" msgid "_Help" msgstr "_Hjelp" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Temaer" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "SesjonshÃ¥ndterer: ukjent linje `%s'" msgid "Task Bar" msgstr "Oppgavelinje" msgid "Tile _Vertically" msgstr "Flislegg _vertikalt" msgid "T_ile Horizontally" msgstr "Flislegg _horisontalt" msgid "Ca_scade" msgstr "_Overlapp" msgid "_Arrange" msgstr "_Arranger" msgid "_Minimize All" msgstr "_Minimer alle" msgid "_Hide All" msgstr "_Gjem alle" msgid "_Undo" msgstr "A_ngre" msgid "Arrange _Icons" msgstr "Still opp _ikoner" msgid "_Refresh" msgstr "G_jenoppfrisk" msgid "_License" msgstr "_Lisens" msgid "Favorite applications" msgstr "Ofte brukte applikasjoner" msgid "Window list menu" msgstr "Vindusmeny" #, fuzzy msgid "Show Desktop" msgstr "_Skrivebord" #, fuzzy msgid "All Workspaces" msgstr "SkrivebordsomrÃ¥de: " #, fuzzy msgid "Del" msgstr "Delete" msgid "_Terminate Process" msgstr "_Terminer prosess" msgid "Kill _Process" msgstr "Drep _prosess" msgid "_Show" msgstr "_Vis" msgid "_Minimize" msgstr "Mi_nimer" msgid "Window list" msgstr "Vindusliste" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. SkrivebordsomrÃ¥de %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Beskjedløkke: select mislyktes (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Ukjent opsjon: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Ukjent argument: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Argument pÃ¥krevd for opsjonen %s" #, c-format msgid "Unknown key name %s in %s" msgstr "Ukjent nøkkelnavn `%s' i %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Ugyldig argument: %s for %s" #, c-format msgid "Bad option: %s" msgstr "Ugyldig opsjon: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Lasting av bildet `%s' mislyktes" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Ugyldig muspekerbilde: `%s' inneholder for mange unike farger" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "BUG? Imlib klarte faktisk Ã¥ lese `%s'" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "BUG? Ikke korrekt XPM-header men Imlib klarte Ã¥ fortolke `%s'" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "BUG? Uventet slutt pÃ¥ XPM-fil men Imlib klarte Ã¥ fortolke `%s'" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "BUG? Uventet tegn men Imlib klarte Ã¥ fortolke `%s'" #, c-format msgid "Could not load font \"%s\"." msgstr "Kunne ikke laste tegnsett `%s'." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Kunne ikke laste reservetegnsett `%s'." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Kunne ikke laste tegnsett (fontset) `%s'." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "Mangler tegnkoding for fontsettet `%s'." #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Ikke mer minne tilgjengelig for pixmap `%s'" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Lasting av bildet `%s' mislyktes" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: Henting av X-pixmap mislyktes" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Imlib bilde-til-X-pixmap oversetting mislyktes" msgid "Cu_t" msgstr "Klipp _ut" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Kopier" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_Lim inn" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Lim _inn utvalg" msgid "Select _All" msgstr "_Velg alt" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Dine regionale innstillinger støttes ikke av C-biblioteket.\n" "Bruker innstilligene for 'C' i stedet." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "Klarte ikke Ã¥ identifisere tegnkodingen som brukes. Antar ISO-8859-" "1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv tilbyr ikke tilstrekkelig konvertering fra `%s' til `%s'." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Ugyldig flerbytestreng `%s': %s" msgid "OK" msgstr "OK" msgid "Cancel" msgstr "Avbryt" #, c-format msgid "Out of memory for pixel map %s" msgstr "Ikke mer minne tilgjengelig for bilde %s" #, c-format msgid "Could not find pixel map %s" msgstr "Kunne ikke finne bildet %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Ikke mer minne tilgjengelig for RGB-bildedata %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Kunne ikke finne RGB-bildedata %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Bruker reserveløsning for bildeelement-konvertering (dybde: %d; " "masker (rød/grønn/blÃ¥): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d bit visuals er ikke støttet (enda)" msgid "$USER or $LOGNAME not set?" msgstr "$USER eller $LOGNAME ikke satt?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "`%s' er ikke et gyldig internett-skjema" #, c-format msgid "\"%s\" contains no scheme description" msgstr "`%s' inneholder ingen skjemabeskrivelser" #~ msgid "program label expected" #~ msgstr "programnavn var forventet" #~ msgid "icon name expected" #~ msgstr "ikonnavn var forventet" #~ msgid "window management class expected" #~ msgstr "vindusbehandlerklasse var forventet" #~ msgid "menu caption expected" #~ msgstr "menytittel var forventet" #~ msgid "opening curly expected" #~ msgstr "tegnet { var forventet" #~ msgid "action name expected" #~ msgstr "kommandonavn var forventet" #~ msgid "unknown action" #~ msgstr "ukjent kommando" #~ msgid "Failed to open %s: %s" #~ msgstr "Kunne ikke Ã¥pne %s: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Kunne ikke starte %s: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Kunne ikke lage barnprosess: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Ikke en vanlig fil: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Et par av heksadesimale tegn var forventet" #~ msgid "Unexpected identifier" #~ msgstr "Uventet identifikator" #~ msgid "Identifier expected" #~ msgstr "Identifikator var forventet" #~ msgid "Separator expected" #~ msgstr "Separator var forventet" #~ msgid "Invalid token" #~ msgstr "Ugyldig tegn" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Ikke et heksadesimalt tall: %c%c (i `%s')" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - ukjent format (%d)" #~ msgid "cpu: %d %d %d %d" #~ msgstr "prosessor: %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat finner for mange CPUer, burde være %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "# preferences(%s) - generated by genpref\n" #~ "\n" #~ msgstr "# preferences(%s) - laget av genpref\n" #~ "\n" #~ msgid "# NOTE: All settings are commented out by default, be sure " #~ "to\n" #~ "# uncomment them if you change them!\n" #~ "\n" #~ msgstr "# MERK: Alle innstillinger er i utgangspunktet kommentert " #~ "ut.\n" #~ "# Husk Ã¥ fjerne kommentartegnet # foran hvis du gjør " #~ "forandringer!\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree mislyktes for vindu 0x%x" #~ msgid "Failed to select focused window" #~ msgstr "Kunne ikke velge vinduet i fokus" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Kompilert med DEBUG-flagget. Avlusningsmeldinger vil bli " #~ "skrevet ut." #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "BruksmÃ¥te: icewmbg [OPSJONER]... pixmap1 [pixmap2]...\n" #~ "Bytter skrivebordsbakgrunn nÃ¥r skrivebordsomrÃ¥de endres.\n" #~ "Den første bildefilen blir brukt som standardbilde.\n" #~ "\n" #~ "-s, --semitransparency SlÃ¥ pÃ¥ støtte for halvveis gjennomsiktige " #~ "terminaler\n" #~ msgid "_No icon" #~ msgstr "_Intet ikon" #~ msgid "_Minimized" #~ msgstr "_NÃ¥r minimert" #~ msgid "_Exclusive" #~ msgstr "_Bare i tray" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X-feil %s(0x%lX): %s" #~ msgid "Window %p has no XA_ICEWM_PID property. Export the " #~ "LD_PRELOAD variable to preload the preice library." #~ msgstr "Vinduet %p har ingen XA_ICEWM_PID-egenskap. Eksporter " #~ "variabelen LD_PRELOAD\n" #~ "for Ã¥ forhÃ¥ndslaste preice-biblioteket." #~ msgid "Obsolete option: %s" #~ msgstr "Avlegs opsjon: %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "Prosessforgreining (fork) mislyktes, errno=%d" #~ msgid "Gnome" #~ msgstr "Gnome" #~ msgid "Gnome User Apps" #~ msgstr "Gnome-applikasjoner" #~ msgid "KDE" #~ msgstr "KDE" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "FOR MANGE ICE-TILKOBLINGER -- ikke støttet" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "SesjonshÃ¥ndterer: IceAddConnectionWatch mislyktes." #~ msgid "Session Manager: Init error: %s" #~ msgstr "SesjonshÃ¥ndterer: initialiseringsfeil: %s" #~ msgid "Failed to create annonymous pipe (errno=%d)." #~ msgstr "Kunne ikke opprette anonymt rør (errno=%d)." #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Ugyldig muspekerbilde: `%s' inneholder for mange unike farger" #~ msgid "Resource allocation for rotated string \"%s\" (%dx%d px) " #~ "failed" #~ msgstr "Ressursallokering for rotert tekststreng `%s' (%dx%d px) " #~ "mislyktes" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Kunne ikke opprette anonymt rør: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Kunne ikke duplisere fildeskriptor: %s" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Kunne ikke kopiere drawable 0x%x til bildebuffer" icewm-1.3.7/po/mk.po0000664000076600007660000012767511463274241013237 0ustar develdevel# translation of icewm.po to # # Copyright (C) 2006 Bozidar Proevski # This file is distributed under the same license as the icewm package. # # Bozidar Proevski , 2006. msgid "" msgstr "Project-Id-Version: icewm\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2006-01-26 23:29+0100\n" "Last-Translator: Bozidar Proevski \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11\n" msgid " - Power" msgstr " - напојување" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "Ð" #, c-format msgid " - Charging" msgstr " - Ñе полни" msgid "C" msgstr "П" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "Оптоварување на процеÑор: " #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Ðевалиден протокол за пошт. Ñандаче: „%s“" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Ðевалидна патека за пошт. Ñандаче: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "КориÑтам пошт. Ñандаче „%s“\n" msgid "Error checking mailbox." msgstr "Грешка при проверката на пошт. Ñандаче." #, c-format msgid "%ld mail message." msgstr "%ld е-пошт. порака." #, c-format msgid "%ld mail messages." msgstr "%ld е-пошт. пораки." #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÑ˜Ñ %s:\n" " Тековна брзина (вл./изл.):\t%li %s/%li %s\n" " Тековно проÑечно (вл./изл.):\t%lli %s/%lli %s\n" " Вкупно проÑечно (вл./изл.):\t%li %s/%li %s\n" " ПренеÑени (вл./изл.):\t%lli %s/%lli %s\n" " Време на мрежа:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Ид. на повикувач:\t" msgid "Workspace: " msgstr "Работен проÑтор: " msgid "Back" msgstr "Ðазад" msgid "Alt+Left" msgstr "Alt+Лево" msgid "Forward" msgstr "Ðапред" msgid "Alt+Right" msgstr "Alt+ДеÑно" msgid "Previous" msgstr "Претходно" msgid "Next" msgstr "Следно" msgid "Contents" msgstr "Содржина" msgid "Index" msgstr "ИндекÑ" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Затвори" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "КориÑтење: %s ИМЕДÐТОТЕКÐ\n" "\n" "Многу едноÑтавен HTML-прелиÑтувач што го прикажува документот " "зададен Ñо ИМЕДÐТОТЕКÐ.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Ðевалидна патека: %s\n" msgid "Invalid path: " msgstr "Ðевалидна патека: " msgid "List View" msgstr "Преглед во лиÑта" msgid "Icon View" msgstr "Преглед Ñо икони" msgid "Open" msgstr "Отвори" msgid "Undo" msgstr "Отповикај" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Ðово" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "РеÑтартирај" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "ИÑтата игра" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "ДејÑтвото „%s“ бара најмалку %d аргументи." #, c-format msgid "Invalid expression: `%s'" msgstr "Ðевалиден израз: „%s“" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Именувани Ñимболи од доменот „%s“ (нумерички опÑег: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Ðевалидно име на работен проÑтор: „%s“" #, c-format msgid "Workspace out of range: %d" msgstr "Работниот проÑтор е надвор од опÑегот: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "КориÑтење: %s [ОПЦИИ] ДЕЈСТВÐ\n" "\n" "Опции:\n" " -display DISPLAY Се поврзува на X-Ñерверот зададен Ñо " "DISPLAY.\n" " Стандардно: $DISPLAY или :0.0 кога не " "е поÑтавено.\n" " -window WINDOW_ID Го задава прозорецот за манипулирање. " "Специјални\n" " идентификатори Ñе „root“ за кореновиот " "прозорец и\n" "\t\t\t „focus“ за тековно фокуÑираниот прозорец.\n" " -class WM_CLASS КлаÑата за манипулирање Ñо прозорци на " "прозорците за\n" " \t \t \t манипулирање. Ðко WM_CLASS Ñодржи точка, ќе " "бидат избрани\n" " \t \t Ñамо прозорците Ñо точно тоа ÑвојÑтво " "WM_CLASS. Ðко\n" "\t\t\t нема точка ќе бидат избрани прозорци од иÑта клаÑа\n" "\t\t\t и од иÑта инÑтанца (познати како „-name“).\n" "\n" "ДејÑтва:\n" " setIconTitle TITLE го поÑтавува наÑловот на иконата.\n" " setWindowTitle TITLE го поÑтавува наÑловот на прозорецот.\n" " setGeometry geometry ја поÑтавува геометријата на " "прозорецот.\n" " setState MASK STATE ја поÑтавува ÑоÑтојбата на GNOME-" "прозорецот на STATE.\n" " \t\t\t Важи Ñамо за битовите избрани од MASK.\n" " STATE и MASK Ñе изрази за доменот\n" " „ÑоÑтојба на GNOME-прозорец“.\n" " toggleState STATE ги менува битовите на ÑоÑтојбата на " "GNOME-прозорец\n" " зададени Ñо изразот STATE.\n" " setHints HINTS ги поÑтавува Ñоветите на GNOME-" "прозорец на HINTS.\n" " setLayer LAYER го премеÑтува прозорецот на друг Ñлој " "од GNOME-прозорец.\n" " setWorkspace WORKSPACE го премеÑтува прозорецот на друг " "работен Ñлој. Изберете го\n" " \t\t\t кореновиот прозорец за да го Ñмените тековинот работен " "проÑтор.\n" " listWorkspaces \t ги лиÑта имињата на Ñите работни " "проÑтори.\n" " setTrayOption TRAYOPTION ги поÑтавува опциите за Ñовети за ÑиÑ. " "лента на IceWM.\n" "\n" "Изрази:\n" " Изразите Ñе лиÑти од Ñимболи на одреден домен Ñпоени Ñо „+“ or " "„|“:\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgid "GNOME window state" msgstr "СоÑтојба на GNOME-прозорец" msgid "GNOME window hint" msgstr "Совет за GNOME-прозорец" msgid "GNOME window layer" msgstr "Слој на GNOME-прозорец" msgid "IceWM tray option" msgstr "Опција за ÑиÑ. лента на IceWM" msgid "Usage error: " msgstr "Грешка во употреба: " #, c-format msgid "Invalid argument: `%s'." msgstr "Ðевалиден аргумент: „%s“." msgid "No actions specified." msgstr "Ðема зададени дејÑтва." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Ðе можам да го отворам екранот: %s. X мора да работи и $DISPLAY мора " "да е поÑтавено." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Ðевалиден ид. на прозорец: „%s“" #, c-format msgid "workspace #%d: `%s'\n" msgstr "работен проÑтор бр. %d: „%s“\n" #, c-format msgid "Unknown action: `%s'" msgstr "Ðепознато дејÑтво: „%s“" #, c-format msgid "Socket error: %d" msgstr "Грешка во приклучник: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Го пуштам примерокот бр. %d (%s)" #, c-format msgid "No such device: %s" msgstr "Ðема таков уред: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Ðе можам да Ñе поврзам Ñо даемонот ESound: %s" msgid "" msgstr "<нема>" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Грешка <%d> при качувањето на „%s:%s“" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Примерокот <%d> е качен како „%s:%s“" #, c-format msgid "Playing sample #%d" msgstr "Го пуштам примерокот бр. %d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Ðе можам да Ñе поврзам Ñо YIFF-Ñерверот: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Ðе можам да Ñменам во аудиорежимот „%s“." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Детектирана е Ñмена на аудиорежим, почетниот аудиорежим „%s“ повеќе " "не важи." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Детектирана е Ñмена на аудиорежим, автоматÑкото менување на " "аудиорежим е оневозможено." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Го поништувам претходниот аудиорежим „%s“." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "КориÑтење: %s [ОПЦИЈÐ]...\n" "\n" "Свири аудиодатотеки при GUI-наÑтани предизвикани од IceWM.\n" "\n" "Опции:\n" "\n" " -d, --display=DISPLAY екранот кориÑтен од IceWM " "(Ñтандардно: $DISPLAY).\n" " -s, --sample-dir=DIR ја задава папката што ги Ñодржи " "звучните\n" " датотеки (пр. ~/.icewm/sounds).\n" " -i, --interface=TARGET го задава излезниот звучен " "интерфејÑ,\n" " еден од OSS, YIFF, ESD\n" " -D, --device=DEVICE (Ñамо за OSS) го задава процеÑорот " "на дигитални\n" " Ñигнали (Ñтандардно /dev/dsp).\n" " -S, --server=ADDR:PORT\t(ESD и YIFF) ги задава адреÑата на " "Ñерверот и бројот\n" " на портата (Ñтандардно " "localhost:16001 за ESD\n" "\t\t\t\tи localhost:9433 за YIFF).\n" " -m, --audio-mode[=MODE] (Ñамо за YIFF) го задава " "аудиорежимот (оÑтавете\n" " празно за да добиете лиÑта).\n" " --audio-mode-auto \t(Ñамо за YIFF) го менува во лет " "аудиорежимот за најдобро\n" " да одговара на примерокот (може да " "предизвика\n" " проблеми Ñо други Y-клиенти, го " "поништува\n" " --audio-mode).\n" "\n" " -v, --verbose детален излез (го печати Ñекој " "звучен наÑтан на\n" " Ñтандардниот излез stdout).\n" " -V, --version печати информација за верзијата и " "напушта.\n" " -h, --help го печати (овој) екран за помош и " "напушта.\n" "\n" "Повратни вредноÑти:\n" "\n" " 0 УÑпех.\n" " 1 Општа грешка.\n" " 2 Грешка во командна линија.\n" " 3 Грешка во подÑиÑтемите (Ñ‚.е. не може да Ñе поврзе Ñо " "Ñерверот).\n" "\n" msgid "Multiple sound interfaces given." msgstr "Зададени Ñе повеќе звучни интерфејÑи." #, c-format msgid "Support for the %s interface not compiled." msgstr "Поддршката за интерфејÑот %s не е компилирана." #, c-format msgid "Unsupported interface: %s." msgstr "Ðеподдржан интерфејÑ: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Примив Ñигнал %d: Прекинувам..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Примен е Ñигналот %d: Превчитувам примероци..." msgid "Hex View" msgstr "ХекÑадек. приказ" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Рашири ливчиња" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "ПренеÑување линии" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "КориÑтење: icewmbg [ -r | -q ]\n" " -r го реÑтартира icewmbg\n" " -q го напушта icewmbg\n" "Ја вчитува подлогата на работната површина Ñпоред датотеката Ñо " "параметри\n" " DesktopBackgroundCenter - ја прикажува подлогата во Ñредина, " "непоплочено\n" " SupportSemitransparency - поддршка за полупроѕирни терминали\n" " DesktopBackgroundColor - боја на подлогата на работната површина\n" " DesktopBackgroundImage - Ñлика на подлогата на работната " "површина\n" " DesktopTransparencyColor - боја за полупроѕирните прозорци\n" " DesktopTransparencyImage - Ñлика за полупроѕирните прозорци\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: непрепознаена опција „%s“\n" "Обидете Ñе Ñо „%s --help“ за повеќе информација.\n" #, c-format msgid "Loading image %s failed" msgstr "Вчитувањето на Ñликата %s не уÑпеа" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Вчитувањето на мапата пикÑели „%s“ не уÑпеа: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "КориÑтење: icewmhint [class.instance] option arg\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Ðема меморија (len=%d)." msgid "Warning: " msgstr "Внимание: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Ðепозната наÑока во барањето за премеÑтување/менување големина: %d" msgid "Default" msgstr "Стандардно" msgid "(C)" msgstr "(C)" msgid "Theme:" msgstr "Тема:" msgid "Theme Description:" msgstr "ÐžÐ¿Ð¸Ñ Ð½Ð° темата:" msgid "Theme Author:" msgstr "Ðвтор на темата:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm - За" msgid "Unable to get current font path." msgstr "Ðе можам да ја земам тековната патека за фонтови." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Ðеочекуван формат на ÑвојÑтвото ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Повеќе референци за градиентот „%s“" #, c-format msgid "Unknown gradient name: %s" msgstr "Ðепознато име на градиент: %s" msgid "_Logout" msgstr "_Одјави Ñе" msgid "_Cancel logout" msgstr "_Откажи одјава" msgid "Lock _Workstation" msgstr "Заклучи _работна Ñтаница" msgid "Re_boot" msgstr "Ре_Ñтартувај" msgid "Shut_down" msgstr "Спуш_ти" msgid "Restart _Icewm" msgstr "РеÑтарт_ирај Icewm" msgid "Restart _Xterm" msgstr "Р_еÑтартирај Xterm" msgid "_Menu" msgstr "_Мени" msgid "_Above Dock" msgstr "Ð_ад вкотвеното" msgid "_Dock" msgstr "_Вкотви" msgid "_OnTop" msgstr "_Ðа врв" msgid "_Normal" msgstr "_Ðормално" msgid "_Below" msgstr "_Под" msgid "D_esktop" msgstr "Раб. површ_ина" msgid "_Restore" msgstr "_Обнови" msgid "_Move" msgstr "Пре_меÑти" msgid "_Size" msgstr "Го_лемина" msgid "Mi_nimize" msgstr "С_мали" msgid "Ma_ximize" msgstr "_Рашири" msgid "_Fullscreen" msgstr "Преку _цел екран" msgid "_Hide" msgstr "С_криј" msgid "Roll_up" msgstr "Свиткај на_горе" msgid "R_aise" msgstr "П_одигни" msgid "_Lower" msgstr "_Спушти" msgid "La_yer" msgstr "Сл_ој" msgid "Move _To" msgstr "ПремеÑ_ти на" msgid "Occupy _All" msgstr "Окупир_ај ги Ñите" msgid "Limit _Workarea" msgstr "Ограничи работна о_блаÑÑ‚" msgid "Tray _icon" msgstr "_Икона во ÑиÑ. лента" msgid "_Close" msgstr "_Затвори" msgid "_Kill Client" msgstr "_Прекини клиент" msgid "_Window list" msgstr "ЛиÑта на п_розорци" msgid "Another window manager already running, exiting..." msgstr "Веќе работи друг менаџер на прозорци, напуштам..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Ðе можев да го реÑтартувам: %s\n" "Дали $PATH покажува на %s?" #, fuzzy, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "КориÑтење: %s [ОПЦИИ]\n" "Го Ñтартува менаџерот на прозорци IceWM.\n" "\n" "Опции:\n" " --display=ИМЕ ИМЕ на X-Ñерверот за кориÑтење.\n" "%s --sync ги Ñинхронизира наредбите за X11.\n" "\n" " -c, --config=ДÐТОТЕКРвчитува параметри од ДÐТОТЕКÐ.\n" " -t, --theme=ДÐТОТЕКРвчитува тема од ДÐТОТЕКÐ.\n" " -n, --no-configure ја игнорира датотеката Ñо параметри.\n" "\n" " -v, --version печати информација за верзијата и напушта.\n" " -h, --help го печати овој помошен екран и напушта.\n" "%s --restart не го кориÑтете ова. Ова е внатрешен " "маркер.\n" "\n" "Променливи на околина:\n" " ICEWM_PRIVCFG=ПÐПКРпапката што ќе Ñе кориÑти за кориÑничките " "датотеки за конфигурација,\n" " Ñтандардно е „$HOME/.icewm/“.\n" " DISPLAY=ИМЕ ИМЕ на X-Ñерверот за кориÑтење, Ñтандардно " "завиÑи од Xlib.\n" " MAIL=URL локација на вашето поштенÑко Ñандаче. Ðко " "не е зададено,\n" " Ñе кориÑти локалната шема „file“.\n" "\n" "ПоÑете ја Ñтраницата http://www.icewm.org/ за да извеÑтите за " "бубачки,\n" "за барања за поддршка, коментари итн...\n" msgid "Confirm Logout" msgstr "Потврда на одјавувањето" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Одјавувањето ќе ги затвори Ñите активни апликации.\n" "Продолжувате?" msgid "Bad Look name" msgstr "Bad Look name" #, fuzzy msgid "Loc_k Workstation" msgstr "Заклучи _работна Ñтаница" msgid "_Logout..." msgstr "Одја_ви Ñе..." msgid "_Cancel" msgstr "_Откажи" msgid "_Restart icewm" msgstr "_РеÑтартирај го icewm" msgid "_About" msgstr "З_а" msgid "Maximize" msgstr "Рашири" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Смали" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Скриј" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Свиткај нагоре" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Подигни/Ñпушти" msgid "Kill Client: " msgstr "Прекини клиент: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "Ð’ÐИМÐÐИЕ! Сите неÑнимени промени ќе бидат изгубени кога\n" "овој клиент ќе биде прекинат. Дали Ñакате да продолжите?" msgid "Restore" msgstr "Обнови" msgid "Rolldown" msgstr "Свиткај надолу" #, c-format msgid "Error in window option: %s" msgstr "Грешка во опцијата за прозорец: %s" #, c-format msgid "Unknown window option: %s" msgstr "Ðепозната опција за прозорец: %s" msgid "Syntax error in window options" msgstr "СинтакÑичка грешка во опциите за прозорец" msgid "Out of memory for window options" msgstr "Ðема меморија за опциите на прозорец" msgid "Missing command argument" msgstr "ÐедоÑтаÑува аргумент за наредба" #, c-format msgid "Bad argument %d" msgstr "Лош аргумент %d" #, c-format msgid "Error at prog %s" msgstr "Грешка во програмата %s" #, c-format msgid "Unexepected keyword: %s" msgstr "Ðеочекуван клучен збор: %s" #, c-format msgid "Error at key %s" msgstr "Грешка кај таÑтерот %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Програми" msgid "_Run..." msgstr "_Изврши..." msgid "_Windows" msgstr "_Прозорци" msgid "_Help" msgstr "_Помош" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Теми" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Менаџер на ÑеÑии: Ðепозната линија %s" msgid "Task Bar" msgstr "Лента Ñо задачи" msgid "Tile _Vertically" msgstr "Поплочи _вертикално" msgid "T_ile Horizontally" msgstr "Поплочи _хоризонтално" msgid "Ca_scade" msgstr "Ка_Ñкадирај" msgid "_Arrange" msgstr "Р_аÑпореди" msgid "_Minimize All" msgstr "С_мали ги Ñите" msgid "_Hide All" msgstr "С_криј ги Ñите" msgid "_Undo" msgstr "_Отповикај" msgid "Arrange _Icons" msgstr "РаÑпореди _икони" msgid "_Refresh" msgstr "_ОÑвежи" msgid "_License" msgstr "_Лиценца" msgid "Favorite applications" msgstr "Омилени апликации" msgid "Window list menu" msgstr "Мени Ñо лиÑта на прозорци" msgid "Show Desktop" msgstr "Прикажи раб. површина" msgid "All Workspaces" msgstr "Сите работни проÑтори" msgid "Del" msgstr "Del" msgid "_Terminate Process" msgstr "_Запри процеÑ" msgid "Kill _Process" msgstr "Прекини _процеÑ" msgid "_Show" msgstr "Прик_ажи" msgid "_Minimize" msgstr "С_мали" msgid "Window list" msgstr "ЛиÑта Ñо прозорци" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Работен проÑтор %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Јамка за пораки: select не уÑпеа (грешка бр=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Ðепрепознаена опција: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Ðепрепознаен аргумент: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Потребен е аргумент за опцијата %s" #, c-format msgid "Unknown key name %s in %s" msgstr "Ðепознато име на таÑтер %s во %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Лош аргумент: %s за %s" #, c-format msgid "Bad option: %s" msgstr "Лоша опција: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Вчитувањето на пикÑел-мапата „%s“ не уÑпеа" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Ðевалидна пикÑел-мапа за покажувач: „%s“ Ñодржи премногу уникатни бои" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "БУБÐЧКÐ? Imlib уÑпеа да го прочита „%s“" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "БУБÐЧКÐ? Лошо формирано заглавие на XPM, но Imlib уÑпеа да го " "анализира „%s“" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "БУБÐЧКÐ? Ðеочекуван крај на XPM-датотеката, но Imlib уÑпеа да го " "анализира „%s“" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "БУБÐЧКÐ? Ðеочекуван знак, но Imlib уÑпеа да го анализира „%s“" #, c-format msgid "Could not load font \"%s\"." msgstr "Ðе можев да го вчитам фонтот „%s“." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Вчитувањето на Ñтандардниот фонт „%s“ не уÑпеа." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Ðе можев да го вчитам множ. фонтови „%s“." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "ÐедоÑтаÑуваат множ. кодови од множ. фонтови „%s“:" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Ðема меморија за пикÑел-мапата „%s“" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Вчитувањето на Ñликата „%s“ не уÑпеа" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: Преземањето на X пикÑел-мапата не уÑпеа" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: мапирањето од Imlib-Ñлика to X-мапа на пикÑели не уÑпеа" msgid "Cu_t" msgstr "ИÑ_ечи" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Копирај" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_Вметни" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Вметни _избор" msgid "Select _All" msgstr "Избери ги _Ñите" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Локалот не е поддржан од Ц-библиотеката. Продолжувам Ñо локалот „C“." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "Ðе уÑпеав да го одредам множ. кодови на тековниот локал. " "ПретпоÑтавувам ISO-8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv не доÑтавува (доволно) конвертери за %s во %s." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Ðевалидна повеќебајтна низа „%s“: %s" msgid "OK" msgstr "Во ред" msgid "Cancel" msgstr "Откажи" #, c-format msgid "Out of memory for pixel map %s" msgstr "Ðема меморија за пикÑел-мапата %s" #, c-format msgid "Could not find pixel map %s" msgstr "Ðе можев да ја најдам пикÑел-мапата %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Ðема меморија за баферот %s за RGB-пикÑели" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Ðе можам да го најдам баферот %s за RGB-пикÑели" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "КориÑтам Ñтандарден механизам за конвертирање пикÑели (длабочина: %" "d; маÑки (црвена/зелена/Ñина): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d но визуелните (ÑÑ ÑƒÑˆÑ‚Ðµ) не Ñе поддржани" msgid "$USER or $LOGNAME not set?" msgstr "Ðе е поÑтавено $USER или $LOGNAME?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "„%s“ не опишува вообичаена интернет-шема" #, c-format msgid "\"%s\" contains no scheme description" msgstr "„%s“ не Ñодржи деÑкриптор на шема" #~ msgid " processes." #~ msgstr " процеÑи." #~ msgid "program label expected" #~ msgstr "Ñе очекуваше Ð½Ð°Ñ‚Ð¿Ð¸Ñ Ð·Ð° програма" #~ msgid "icon name expected" #~ msgstr "Ñе очекуваше име на икона" #~ msgid "window management class expected" #~ msgstr "Ñе очекуваше клаÑа за менаџирање прозорци" #~ msgid "menu caption expected" #~ msgstr "Ñе очекуваше наÑлов на мени" #~ msgid "opening curly expected" #~ msgstr "Ñе очекуваше отворена голема заграда" #~ msgid "action name expected" #~ msgstr "Ñе очекуваше име на дејÑтво" #~ msgid "unknown action" #~ msgstr "непознато дејÑтво" #~ msgid "Failed to open %s: %s" #~ msgstr "Ðе уÑпеав да отворам %s: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Ðе уÑпеав да извршам %s: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Ðе уÑпеав да креирам процеÑ-дете: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Ðе е регуларна датотека: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Се очекуваше пар децимални цифри" #~ msgid "Unexpected identifier" #~ msgstr "Ðеочекуван идентификатор" #~ msgid "Identifier expected" #~ msgstr "Се очекуваше идентификатор" #~ msgid "Separator expected" #~ msgstr "Се очекуваше раздвојувач" #~ msgid "Invalid token" #~ msgstr "Ðевалиден Ñимбол" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Ðе е хекÑадецимален број: %c%c (in \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - непознат формат (%d)" #~ msgid "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgstr "ÑтатиÑтика:\tкориÑник = %i, фини = %i, ÑиÑÑ‚. = %i, не " #~ "работат = %i" #~ msgid "bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgstr "ленти:\tкориÑник = %i, фини = %i, ÑиÑÑ‚. = %i (ч = %i)\n" #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "процеÑор: %d %d %d %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat наоѓа премногу процеÑори: треба да Ñе %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree не уÑпеа за прозорецот 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Компилирано Ñо знаменце DEBUG. Пораките за чиÑтење од " #~ "бубачки ќе бидат печатени." #~ msgid "_No icon" #~ msgstr "_Ðема икона" #~ msgid "_Minimized" #~ msgstr "_Смалено" #~ msgid "_Exclusive" #~ msgstr "_ЕкÑклузивно" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X-грешка %s(0x%lX): %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "Раздвојуањето не уÑпеа (errno=%d)" #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "Ðе уÑпеав да креирам анонимна цевка (errno=%d)." #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Ðевалидна пикÑел-мапа за покажувач: „%s“ Ñодржи премногу " #~ "уникатни бои" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Ðе уÑпеав да креирам анонимна цевка: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Ðе уÑпеав да го дуплирам деÑкрипторот за датотека: %s" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Ðе уÑпеав да го иÑкопирам нацртаното 0x%x во баферот " #~ "Ñо пикÑели" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: Ðе уÑпеав да го иÑкопирам нацртаното 0x%x во баферот " #~ "Ñо пикÑели (%d:%d-%dx%d" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "ПРЕМÐОГУ ICE ПОВРЗУВÐЊР-- не е поддржано" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Менаџер на ÑеÑии: IceAddConnectionWatch не уÑпеа." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Менаџер на ÑеÑии: Грешка во иницијализација: %s" icewm-1.3.7/po/fi.po0000664000076600007660000010710211463274241013205 0ustar develdevel# Finnish messages for IceWM # Copyright (C) 2000-2001 Marco Maceck # Mika Leppänen , 2001 # Taisto Kuikka <69319@batman.jypoly.fi>, 2003,2004 # # msgid "" msgstr "Project-Id-Version: IceWM 1.2.14\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2004-06-16 02:44+0200\n" "Last-Translator: Taisto Kuikka <69319@batman.jypoly.fi>\n" "Language-Team: Finnish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Virta" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "E" #, c-format msgid " - Charging" msgstr " - Latautuu" msgid "C" msgstr "C" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "Prosessorikuorma: " #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Virheellinen postilaatikkoprotokolla: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Virheellinen postilaatikon polku: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Käytetään postilaatikkoa \"%s\"\n" msgid "Error checking mailbox." msgstr "Virhe postilaatikon tarkistuksessa." #, c-format msgid "%ld mail message." msgstr "%ld viesti." #, c-format msgid "%ld mail messages." msgstr "%ld viestiä." #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Liitäntä %s:\n" " Nyk. siirtonopeus (sisään/ulos):\t%li %s/%li %s\n" " Nyk. keskim. siirtonopeus (sisään/ulos):\t%lli %s/%lli %s\n" " Kok. keskim. siirtonopeus (sisään/ulos):\t%li %s/%li %s\n" " Siirretty datamäärä (sisään/ulos):\t%lli %s/%lli %s\n" " Yhteysaika:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Soittajan ID:\t" msgid "Workspace: " msgstr "Työpöytä: " msgid "Back" msgstr "Takaisin" msgid "Alt+Left" msgstr "Alt+Vasen" msgid "Forward" msgstr "Eteenpäin" msgid "Alt+Right" msgstr "Alt+Oikea" msgid "Previous" msgstr "Edellinen" msgid "Next" msgstr "Seuraava" msgid "Contents" msgstr "Sisältö" msgid "Index" msgstr "Hakemisto" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Sulje" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Käyttö: %s TIEDOSTONIMI\n" "\n" "Hyvin yksinkertainen HTML-selain, joka näyttää TIEDOSTONIMI-nimisen " "dokumentin.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Virheellinen polku: %s\n" msgid "Invalid path: " msgstr "Virheellinen polku: " msgid "List View" msgstr "Listanäkymä" msgid "Icon View" msgstr "Kuvakenäkymä" msgid "Open" msgstr "Avaa" msgid "Undo" msgstr "Peru" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Uusi" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Uudelleenkäynnistä" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "IceSAMA" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "Toiminto `%s' vaatii ainakin %d argumenttia." #, c-format msgid "Invalid expression: `%s'" msgstr "Virheellinen lauseke: `%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Domainin `%s' nimetyt symbolit (numeerinen alue: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Virheellinen työpöydän nimi: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "Työpöytä arvoalueen ulkopuolella: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Käyttö: %s [OPTIOT] TOIMINNOT\n" "\n" "Optiot:\n" " -display NÄYTTÖ Yhdistää NÄYTÖLLÄ määriteltyyn X-" "palvelimeen.\n" "\t\t\t\tOletus: $DISPLAY tai :0.0 mikäli ei annettu.\n" " -window IKKUNA_ID Määrittää käsiteltävän ikkunan. " "Erikoistunnis-\n" "\t\t\t\tteet ovat `root' juuri-ikkunalle ja `focus'\n" "\t\t\t\tparhaillaan aktiiviselle ikkunalle.\n" " -class WM_CLASS Käsiteltävän ikkunan " "ikkunanhallintaluokka.\n" "\t\t\t\tMikäli WM_CLASS sisältää pisteen vain ikkunat,\n" "\t\t\t\tjoiden WM_CLASS täsmää, käsitellään. Jos\n" "\t\t\t\tpistettä ei ole, saman luokan ikkunat sekä\n" "\t\t\t\tsaman instanssin ikkunat (`-name') käsitellään.\n" "\n" "Toiminnot:\n" " setIconTitle OTSIKKO Asettaa kuvakkeen nimikkeen.\n" " setWindowTitle OTSIKKO Asettaa ikkunan otsikon.\n" " setGeometry geometria Asettaa ikkunan geometrian\n" " setState MASKI TILA Asettaa GNOMEn ikkunan tilaan TILA.\n" "\t\t\t\tVain MASKIn määrittämät bitit muutetaan.\n" "\t\t\t\tTILA ja MASKI ilmaisevat domainin\n" "\t\t\t\t`GNOMEn ikkunan tila'.\n" " toggleState TILA Vaihda GNOMEn ikkunan tilan bitit, " "jotka on\n" "\t\t\t\tmääritelty TILA-lausekkeella.\n" " setHints VIHJEET Aseta GNOMEn ikkunan vihjeet " "VIHJEIKSI.\n" " setLayer TASO Siirrä ikkuna toiselle GNOME " "ikkunatasolle.\n" " setWorkspace TYÖPÖYTÄ Siirrä ikkuna toiselle työpöydälle. " "Valitse\n" "\t\t\t\tjuuri-ikkuna siirtääksesi nykyisen työpöydän.\n" " listWorkspaces Listaa kaikkien työpöytien nimet.\n" " setTrayOption TARJOTINOPTIO Aseta IceWM tarjotinoptiovihje.\n" "\n" "Lausekkeet:\n" " Lausekkeet ovat joukko symboleita, jotka yhdistetään `+' tai `|':\n" "\n" " LAUSEKE ::= SYMBOLI | LAUSEKE ( `+' | `|' ) SYMBOLI\n" "\n" msgid "GNOME window state" msgstr "GNOME ikkunan tila" msgid "GNOME window hint" msgstr "GNOME ikkunan vihje" msgid "GNOME window layer" msgstr "GNOME ikkunataso" msgid "IceWM tray option" msgstr "IceWM tarjotinoptio" msgid "Usage error: " msgstr "Käyttövirhe: " #, c-format msgid "Invalid argument: `%s'." msgstr "Virheellinen argumentti: `%s'." msgid "No actions specified." msgstr "Toimintoa ei ole määritetty" #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Ei voida avata näyttöä: %s. X-palvelimen pitää olla käynnissä ja " "$DISPLAY:n asetettu." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Virheellinen ikkunatunniste: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "Työpöytä #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "Tuntematon toiminto: `%s'" #, c-format msgid "Socket error: %d" msgstr "Socket-virhe: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Toistetaan näytettä #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Laitetta ei ole olemassa: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "ESounD demoniin ei voitu yhdistää: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Tapahtui virhe <%d> ladattaessa `%s:%s'" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Näyte <%d> ladattu `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "Toistetaan näytettä #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "YIFF-palvelimeen ei voitu yhdistää: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Ei voida vaihtaa äänitilaa `%s'." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Äänitilan vaihto havaittu, alkuperäinen tila `%s' ei enää käytössä." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Äänitilan vaihto havaittu, automaattinen äänitilan vaihto pois " "käytöstä." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Korvataan edellinen äänitila `%s'." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Käyttö: %s [OPTIO]...\n" "\n" "Toistaa äänitiedostoja IceWM GUI-tapahtumien mukaan.\n" "\n" "Optiot:\n" "\n" " -d, --display=NÄYTTÖ Näyttö, jota IceWM käyttää (oletus: " "$DISPLAY).\n" " -s, --sample-dir=HAKEMISTO Määrittää äänitiedostot sisältävän " "hakemiston.\n" "\t\t\t\t(esim. ~/.icewm/sounds).\n" " -i, --interface=KOHDE Määrittää äänen ulosannon (OSS, YIFF " "tai ESD).\n" " -D, --device=LAITE (vain OSS) Määrittää käytettävän dsp-" "laitteen.\n" "\t\t\t\t(oletus: /dev/dsp).\n" " -S, --server=OSOITE:PORTTI (ESD ja YIFF) Määrittää " "äänipalvelimen\n" "\t\t\t\tosoitteen ja portin (oletus: localhost:16001\n" "\t\t\t\tESD:lle ja localhost:9433 YIFF:lle)\n" " -m, --audio-mode[=TILA] (vain YIFF) Määrittää äänitilan " "(jätä\n" "\t\t\t\ttyhjäksi saadaksesi listan vaihtoehdoista).\n" " --audio-mode-auto (vain YIFF) vaihda äänitilaa " "lennossa\n" "\t\t\t\tvastaamaan parhaiten näytteen formaattia\n" "\t\t\t\t(voi aiheuttaa ongelmia muiden Y-asiakkaiden\n" "\t\t\t\tkanssa, korvaa --audio-mode).\n" "\n" " -v, --verbose Ole puhelias (tulostaa kaikki " "äänitapahtumat\n" "\t\t\t\tstdout-virtaan).\n" " -V, --version Tulostaa versiotiedot ja poistuu.\n" " -h, --help Tulostaa tämän ohjeen ja poistuu.\n" "\n" "Palautusarvot:\n" "\n" " 0 Onnistui\n" " 1 Yleinen virhe\n" " 2 Komentorivivirhe\n" " 3 Alijärjestelmävirhe (ei voida yhdistää palvelimeen)\n" "\n" msgid "Multiple sound interfaces given." msgstr "Annettu useita ääniliitäntöjä." #, c-format msgid "Support for the %s interface not compiled." msgstr "Tukea liitännälle %s ei ole käännetty mukaan." #, c-format msgid "Unsupported interface: %s." msgstr "Liitäntää ei tueta: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Havaittiin signaali %d: Lopetetaan..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Havaittiin signaali %d: Uudelleenladataan näytteet..." msgid "Hex View" msgstr "Heksadesimaalinäkymä" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Laajenna tabulaattorit" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Katkaise rivit" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "Käyttö: icewmbg [ -r | -q ]\n" " -r Uudelleenkäynnistä icewmbg\n" " -q Lopeta icewmbg\n" "Lataa työpöydän taustakuvan asetustiedoston mukaan\n" " DesktopBackgroundCenter - näyttää työpöydän taustakuvan " "keskitettynä\n" " SupportSemitransparency - tukee läpikuultavia päätteitä\n" " DesktopBackgroundColor - työpöydän taustaväri\n" " DesktopBackgroundImage - työpöydän taustakuva\n" " DesktopTransparencyColor - väri jota läpikuultavat päätteet " "näyttävät\n" " DesktopTransparencyImage - kuva jota läpikuultavat päätteet " "näyttävät\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: tuntematon optio `%s'\n" "Kokeile `%s --help' lisätietojen saamiseksi.\n" #, c-format msgid "Loading image %s failed" msgstr "Kuvan %s lataaminen epäonnistui" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Bittikartan \"%s\" lataaminen epäonnistui: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Käyttö: icewmhint [luokka.instanssi] optio argumentti\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Muisti loppu (len=%d)." msgid "Warning: " msgstr "Varoitus:" #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Tuntematon suunta siirto-/koonmuutospyynnössä: %d" msgid "Default" msgstr "Oletus" msgid "(C)" msgstr "©" msgid "Theme:" msgstr "Teema:" msgid "Theme Description:" msgstr "Teeman kuvaus:" msgid "Theme Author:" msgstr "Teeman tekijä:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "IceWM - Tietoja" msgid "Unable to get current font path." msgstr "Nykyistä kirjasinpolkua ei saatu." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Odottamaton formaatti ominaisuudella ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Useita viitteitä gradientille \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "Tuntematon gradientinnimi: %s" msgid "_Logout" msgstr "_Kirjaudu ulos" msgid "_Cancel logout" msgstr "_Peruuta uloskirjautuminen" msgid "Lock _Workstation" msgstr "_Lukitse työasema" msgid "Re_boot" msgstr "_Uudelleenkäynnistä" msgid "Shut_down" msgstr "_Sammuta" msgid "Restart _Icewm" msgstr "Uudelleenkäynnistä _IceWM" msgid "Restart _Xterm" msgstr "Uudelleenkäynnistä _Xterm" msgid "_Menu" msgstr "_Valikko" msgid "_Above Dock" msgstr "Telakan _yläpuolella" msgid "_Dock" msgstr "T_elakka" msgid "_OnTop" msgstr "P_äällä" msgid "_Normal" msgstr "_Tavallinen" msgid "_Below" msgstr "A_lla" msgid "D_esktop" msgstr "Työ_pöytä" msgid "_Restore" msgstr "Pala_uta" msgid "_Move" msgstr "_Siirrä" msgid "_Size" msgstr "_Muuta kokoa" msgid "Mi_nimize" msgstr "_Pienennä" msgid "Ma_ximize" msgstr "Suu_renna" msgid "_Fullscreen" msgstr "Koko _näyttö" msgid "_Hide" msgstr "Pii_lota" msgid "Roll_up" msgstr "Rullaa _ylös" msgid "R_aise" msgstr "Nos_ta" msgid "_Lower" msgstr "Las_ke" msgid "La_yer" msgstr "Tas_o" msgid "Move _To" msgstr "Siirrä _työpöydälle" msgid "Occupy _All" msgstr "Näytä k_aikilla työpöydillä" msgid "Limit _Workarea" msgstr "_Rajoita työtilaa" msgid "Tray _icon" msgstr "Tarjotinkuvak_e" msgid "_Close" msgstr "_Sulje" msgid "_Kill Client" msgstr "_Tapa asiakasohjelma" msgid "_Window list" msgstr "_Ikkunaluettelo" msgid "Another window manager already running, exiting..." msgstr "Toinen ikkunamangeri on jo käynnissä, poistutaan..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Ei voitu uudelleenkäynnistää: %s\n" "Johtaako $PATH-määritys kohteeseen %s?" #, fuzzy, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "Käyttö: %s [OPTIOT]\n" "Käynnistää IceWM ikkunahallinnan.\n" "\n" "Optiot:\n" " --display=NIMI X-palvelimen nimi jota käytetään\n" "%s --sync Synkronoi X11 komennot\n" "\n" " -c, --config=TIEDOSTO Lataa asetukset tiedostosta\n" " -t, --theme=TIEDOSTO Lataa teema tiedostosta\n" " -n, --no-configure Älä huomioi asetustiedostoa\n" "\n" " -v, --version Tulostaa versiotiedot ja poistuu\n" " -h, --help Tulostaa ohjeet ja poistuu\n" "%s --restart Älä käytä tätä; vain sisäiseen käyttöön\n" "\n" "Ympäristömuuttujat:\n" " ICEWM_PRIVCFG=POLKU Hakemisto, johon käyttäjän asetukset " "tallennetaan.\n" " Oletuksena \"$HOME/.icewm/\"\n" " DISPLAY=NIMI X-palvelimen nimi jota käytetään, oletus " "riippuu\n" " Xlib:sta.\n" " MAIL=URL Postilaatikkosi sijainti. Jos resurssi " "jätetään pois\n" " käytetään paikallista \"tiedosto\" " "metodia.\n" "\n" "Käy osoitteessa http://www.icewm.org/ kun haluat ilmoittaa " "virheestä, kaipaat\n" "apua tai jos haluat vain antaa kommenttisi.\n" msgid "Confirm Logout" msgstr "Varmista uloskirjautuminen" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Uloskirjautuminen sulkee kaikki aktiiviset sovellukset.\n" "Jatka?" msgid "Bad Look name" msgstr "Virheellinen tyylin nimi" #, fuzzy msgid "Loc_k Workstation" msgstr "_Lukitse työasema" msgid "_Logout..." msgstr "_Kirjaudu ulos..." msgid "_Cancel" msgstr "_Peruuta" msgid "_Restart icewm" msgstr "Uudelleenkäynnistä _IceWM" msgid "_About" msgstr "_Tietoja" msgid "Maximize" msgstr "Suurenna" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Pienennä" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Piilota" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Rullaa ylös" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Nosta/Laske" msgid "Kill Client: " msgstr "Tapa asiakasohjelma: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "VAROITUS! Kaikki tallentamattomat muutokset tässä\n" "asiakkaassa menetetään kun se tapetaan. Haluatko jatkaa?" msgid "Restore" msgstr "Palauta" msgid "Rolldown" msgstr "Rullaa alas" #, c-format msgid "Error in window option: %s" msgstr "Virhe ikkunatoiminnossa: %s" #, c-format msgid "Unknown window option: %s" msgstr "Tuntematon ikkunatoiminto: %s" msgid "Syntax error in window options" msgstr "Kielioppivirhe ikkunaoptioissa" msgid "Out of memory for window options" msgstr "Ikkunaoptioiden muisti loppu" msgid "Missing command argument" msgstr "Puuttuva komentoargumentti" #, c-format msgid "Bad argument %d" msgstr "Virheellinen argumentti %d" #, c-format msgid "Error at prog %s" msgstr "Virhe ohjelmassa %s" #, c-format msgid "Unexepected keyword: %s" msgstr "Odottamaton avainsana: %s" #, c-format msgid "Error at key %s" msgstr "Virhe avaimessa %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Ohjelmat" msgid "_Run..." msgstr "_Suorita" msgid "_Windows" msgstr "_Ikkunat" msgid "_Help" msgstr "O_hje" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Teemat" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Istuntomanageri: Tuntematon rivi %s" msgid "Task Bar" msgstr "Tehtäväpalkki" msgid "Tile _Vertically" msgstr "Lomita _vertikaalisesti" msgid "T_ile Horizontally" msgstr "Lomita _horisontaalisesti" msgid "Ca_scade" msgstr "Pu_dota" msgid "_Arrange" msgstr "_Järjestä" msgid "_Minimize All" msgstr "_Pienennä kaikki" msgid "_Hide All" msgstr "P_iilota kaikki" msgid "_Undo" msgstr "Per_u" msgid "Arrange _Icons" msgstr "Järjestä _kuvakkeet" msgid "_Refresh" msgstr "_Päivitä" msgid "_License" msgstr "_Lisenssi" msgid "Favorite applications" msgstr "Sovellukset" msgid "Window list menu" msgstr "Ikkunalista" msgid "Show Desktop" msgstr "Näytä työpöytä" msgid "All Workspaces" msgstr "Kaikki työpöydät" msgid "Del" msgstr "Poista" msgid "_Terminate Process" msgstr "_Lopeta prosessi" msgid "Kill _Process" msgstr "Tapa _prosessi" msgid "_Show" msgstr "_Näytä" msgid "_Minimize" msgstr "_Pienennä" msgid "Window list" msgstr "Ikkunalista" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Työpöytä %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Viestisilmukka: valinta epäonnistui (virhe=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Tuntematon optio: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Tuntematon argumentti: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Parametri %s vaatii argumentin" #, c-format msgid "Unknown key name %s in %s" msgstr "Tuntematon avainnimi %s %s:ssa" #, c-format msgid "Bad argument: %s for %s" msgstr "Virheellinen argumentti: %s %s:lle" #, c-format msgid "Bad option: %s" msgstr "Huono vaihtoehto: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Bittikartan \"%s\" lataaminen epäonnistui" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Virheellinen osoitin-bittikartta: \"%s\" sisältää liikaa värejä" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "BUGI? Imlib onnistui lukemaan \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "BUGI? Virheellinen XPM-otsikko mutta Imlib onnistui tulkitsemaan \"%s" "\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "BUGI? Odottamaton XPM-tiedoston loppu mutta Imlib onnistui " "tulkitsemaan \"%s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "BUGI? Odottamaton merkki mutta Imlib onnistui tulkitsemaan \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "Kirjasimen \"%s\" lataaminen epäonnistui." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Varakirjasimen \"%s\" lataaminen epäonnistui" #, c-format msgid "Could not load fontset \"%s\"." msgstr "Kirjasinsarjan \"%s\" lataaminen epäonnistui." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "Puuttuva koodisarja kirjasinsarjasta \"%s\":" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Muisti ei riitä bittikarttaa \"%s\" varten" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Kuvan \"%s\" lataaminen epäonnistui" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: X-bittikartan hankkiminen epäonnistui" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Imlib-kuvasta X-bittikartaksi muunnos epäonnistui" msgid "Cu_t" msgstr "Lei_kkaa" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Kopioi" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_Liitä" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Liitä _valinta" msgid "Select _All" msgstr "Valitse k_aikki" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "C-kirjasto ei tue kieliasetusta. Palataan takaisin 'C'-" "kieliasetuksen käyttöön." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "Nykyisen kieliasetuksen merkistöä ei pystytty tunnistamaan. " "Oletetaan ISO-8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv ei tarjoa (riittävää) muunnosta %s:sta %s:iin." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Virheellinen monitavuinen merkkijono \"%s\": %s" msgid "OK" msgstr "OK" msgid "Cancel" msgstr "Peruuta" #, c-format msgid "Out of memory for pixel map %s" msgstr "Muisti ei riitä bittikarttaa %s varten" #, c-format msgid "Could not find pixel map %s" msgstr "Bittikarttaa %s ei löydy" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Muisti ei riitä RGB-puskuria %s varten" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "RGB-puskuria %s ei löydy" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Käytetään varamekanismia pikselien muuntamiseen (syvyys: %d; maskit " "(punainen/vihreä/sininen): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d-bittisiä tiloja ei tueta (vielä)" msgid "$USER or $LOGNAME not set?" msgstr "$USER- tai $LOGNAME-ympäristömuuttujia ei määritelty?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" ei kuvaa mitään yleistä Internet-resurssia" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" ei sisällä resurssikuvausta" #~ msgid " processes." #~ msgstr " prosessia" #~ msgid "program label expected" #~ msgstr "Odotettiin ohjelman nimeä" #~ msgid "icon name expected" #~ msgstr "Odotettiin kuvakkeen nimeä" #~ msgid "window management class expected" #~ msgstr "odotettiin ikkunanhallinnan luokkaa" #~ msgid "menu caption expected" #~ msgstr "Odotettiin menuotsikkoa" #~ msgid "opening curly expected" #~ msgstr "Odotettiin avaavaa aaltosulkua" #~ msgid "action name expected" #~ msgstr "Odotettiin toiminnon nimeä" #~ msgid "unknown action" #~ msgstr "tuntematon toiminto" #~ msgid "Failed to open %s: %s" #~ msgstr "%s avaaminen epäonnistui: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "%s suorittaminen epäonnistui: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Lapsiprosessin luominen epäonnistui: %s" #~ msgid "Not a regular file: %s" #~ msgstr "%s ei ole tavallinen tiedosto" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Odotettiin heksadesimaalinumeroparia" #~ msgid "Unexpected identifier" #~ msgstr "Odottamaton tunniste" #~ msgid "Identifier expected" #~ msgstr "Odotettiin tunnistetta" #~ msgid "Separator expected" #~ msgstr "Odotettiin erotinta" #~ msgid "Invalid token" #~ msgstr "Virheellinen merkki" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "%c%c (\"%s\") ei ole heksadesimaaliluku" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - Tuntematon formaatti (%d)" #~ msgid "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgstr "tilasto:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgid "bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgstr "palkit:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "cpu: %d %d %d %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat löytää liian monta suoritinta: niitä pitäisi olla %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree epäonnistui ikkunalle 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Käännetty DEBUG-lipun kanssa. Debuggausviestit tulostetaan." #~ msgid "_No icon" #~ msgstr "_Ei kuvaketta" #~ msgid "_Minimized" #~ msgstr "_Pienennettynä" #~ msgid "_Exclusive" #~ msgstr "_Ainoastaan" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X-virhe %s(0x%lX): %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "Haaroitus epäonnistui (virhe=%d)" #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "Nimettömän putken luominen epäonnistui (virhe=%d)." #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Virheellinen osoitin-bittikartta: \"%s\" sisältää liikaa " #~ "värejä" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Nimettömän putken luominen epäonnistui: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Tiedostokuvauksen kahdentaminen epäonnistui: %s" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Piirrettävän 0x%x kopioiminen pikselipuskuriin " #~ "epäonnistui" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: Piirrettävän 0x%x kopioiminen pikselipuskuriin " #~ "epäonnistui (%d:%d-%dx%d)" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "LIIAN MONTA ICE-YHTEYTTÄ -- ei tuettu" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Istunnonhallinta: IceAddConnectionWatch epäonnistui." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Istunnonhallinta: Alustusvirhe: %s" icewm-1.3.7/po/hr.po0000664000076600007660000006630011463274241013224 0ustar develdevel# Croatian translation of IceWM. # Copyright (C) 2001 Free Software Foundation, Inc. # Vlatko Kosturjak , 2001. # msgid "" msgstr "Project-Id-Version: icewm 1.0.7\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2001-03-25 17:00+GMT1\n" "Last-Translator: Vlatko Kosturjak \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Napajanje" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "P" #, c-format msgid " - Charging" msgstr " - Punjenje" msgid "C" msgstr "" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "CPU opterećenje: %3.2f %3.2f %3.2f, %d procesa." #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Nepravilan protokol za sanduÄić: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Nepravilna putanja do sanduÄića: \"%s\"" #, fuzzy, c-format msgid "Using MailBox \"%s\"\n" msgstr "Koristim SanduÄić: '%s'\n" msgid "Error checking mailbox." msgstr "GreÅ¡ka prilikom provjeravanja sanduÄića." #, c-format msgid "%ld mail message." msgstr "%ld mail poruka." #, c-format msgid "%ld mail messages." msgstr "%ld mail poruka." #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "" msgid "\n" " Caller id:\t" msgstr "" msgid "Workspace: " msgstr "Radni prostor: " msgid "Back" msgstr "Nazad" msgid "Alt+Left" msgstr "Alt+Lijevo" msgid "Forward" msgstr "Naprijed" msgid "Alt+Right" msgstr "Alt+Desno" msgid "Previous" msgstr "PrijaÅ¡nje" msgid "Next" msgstr "Slijedeće" msgid "Contents" msgstr "Sadržaj" msgid "Index" msgstr "Indeks" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Zatvori" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "" #, c-format msgid "Invalid path: %s\n" msgstr "Nepravilna putanja: %s\n" msgid "Invalid path: " msgstr "Nepravilna putanja: " msgid "List View" msgstr "Popisni pogled" msgid "Icon View" msgstr "Pogled s ikonama" msgid "Open" msgstr "Otvori" msgid "Undo" msgstr "Vrati" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Novi" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Ponovno pokreni" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Ista igra" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "" #, fuzzy, c-format msgid "Invalid expression: `%s'" msgstr "Nepravilna putanja: %s\n" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "" #, fuzzy, c-format msgid "Invalid workspace name: `%s'" msgstr "Nepravilna putanja: %s\n" #, c-format msgid "Workspace out of range: %d" msgstr "" #, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "" msgid "GNOME window state" msgstr "" msgid "GNOME window hint" msgstr "" msgid "GNOME window layer" msgstr "" msgid "IceWM tray option" msgstr "" #, fuzzy msgid "Usage error: " msgstr "Socket greÅ¡ka: %d" #, fuzzy, c-format msgid "Invalid argument: `%s'." msgstr "Nepravilna putanja: %s\n" msgid "No actions specified." msgstr "" #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Ne mogu otvoriti zaslon: %s. X-i moraju biti pokrenuti i $DISPLAY " "postavljen." #, c-format msgid "Invalid window identifier: `%s'" msgstr "" #, fuzzy, c-format msgid "workspace #%d: `%s'\n" msgstr "Radni prostor: " #, fuzzy, c-format msgid "Unknown action: `%s'" msgstr "Nepoznata opcija prozora: %s" #, c-format msgid "Socket error: %d" msgstr "Socket greÅ¡ka: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "" #, c-format msgid "No such device: %s" msgstr "" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "" #, c-format msgid "Playing sample #%d" msgstr "" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "" #, c-format msgid "Can't change to audio mode `%s'." msgstr "" #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "" msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "" #, c-format msgid "Overriding previous audio mode `%s'." msgstr "" #, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "" msgid "Multiple sound interfaces given." msgstr "" #, c-format msgid "Support for the %s interface not compiled." msgstr "" #, c-format msgid "Unsupported interface: %s." msgstr "" #, c-format msgid "Received signal %d: Terminating..." msgstr "" #, c-format msgid "Received signal %d: Reloading samples..." msgstr "" msgid "Hex View" msgstr "Heks pogled" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "ProÅ¡iri Tab-ove" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Odsjeci Linije" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: neprepoznata opcija `%s'\n" "Probajte `%s --help' za viÅ¡e informacija.\n" #, c-format msgid "Loading image %s failed" msgstr "UÄitavanje slike %s nije uspjelo" #, fuzzy, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "UÄitavanje pixmap-e %s neuspjelo" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Uporaba: icewmhint [klasa.instanca] opcija arg\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Nema memorije (vel=%d)." msgid "Warning: " msgstr "Upozorenje: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "" #, fuzzy msgid "Default" msgstr "ObriÅ¡i" msgid "(C)" msgstr "" msgid "Theme:" msgstr "Tema:" msgid "Theme Description:" msgstr "Opis Teme:" msgid "Theme Author:" msgstr "Autor Teme:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm - o" msgid "Unable to get current font path." msgstr "Ne mogu saznati trenutnu putanju fontova." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "NeoÄekivani format ICEWM_FONT_PATH vrijednosti" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "" #, fuzzy, c-format msgid "Unknown gradient name: %s" msgstr "Nepoznato ime kljuÄa %s u %s" msgid "_Logout" msgstr "Odjav_ljivanje" msgid "_Cancel logout" msgstr "_Odustani od odjavljivanja" msgid "Lock _Workstation" msgstr "ZakljuÄaj _Radnu stanicu" msgid "Re_boot" msgstr "Ponovno pokreni _raÄunalo" msgid "Shut_down" msgstr "_Ugasi raÄunalo" msgid "Restart _Icewm" msgstr "Ponovno pokreni _Icewm" msgid "Restart _Xterm" msgstr "Ponovno pokreni _Xterm" msgid "_Menu" msgstr "_Meni" msgid "_Above Dock" msgstr "_Gornje spajanje" msgid "_Dock" msgstr "_Spoji" msgid "_OnTop" msgstr "Na_Vrhu" msgid "_Normal" msgstr "_Normalno" msgid "_Below" msgstr "_Ispod" msgid "D_esktop" msgstr "_Radno Okružje" msgid "_Restore" msgstr "Pov_rati" msgid "_Move" msgstr "_Pomakni" msgid "_Size" msgstr "_VeliÄina" msgid "Mi_nimize" msgstr "Mi_nimiziraj" msgid "Ma_ximize" msgstr "Ma_ksimiziraj" msgid "_Fullscreen" msgstr "" msgid "_Hide" msgstr "_Sakrij" msgid "Roll_up" msgstr "Zarola_j" msgid "R_aise" msgstr "Po_digni" msgid "_Lower" msgstr "Spus_ti" msgid "La_yer" msgstr "Ra_zina" msgid "Move _To" msgstr "Pomakni _Na" msgid "Occupy _All" msgstr "Z_auzmi sve" msgid "Limit _Workarea" msgstr "" msgid "Tray _icon" msgstr "" msgid "_Close" msgstr "_Zatvori" msgid "_Kill Client" msgstr "_Ubij klijent" msgid "_Window list" msgstr "Popi_s prozora" msgid "Another window manager already running, exiting..." msgstr "Neki drugi upravitelj prozorima je već pokrenut, izlazim..." #, fuzzy, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Ne mogu ponovno pokrenuti %s, nije u $PATH-u?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "" msgid "Confirm Logout" msgstr "Potvrdite odjavljivanje" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Odjavljivanje će zatvoriti sve aktivne aplikacije.\n" "Nastaviti?" msgid "Bad Look name" msgstr "LoÅ¡e ime Izgleda" #, fuzzy msgid "Loc_k Workstation" msgstr "ZakljuÄaj _Radnu stanicu" msgid "_Logout..." msgstr "_Odjavi" msgid "_Cancel" msgstr "_Odustani" msgid "_Restart icewm" msgstr "_Ponovno pokreni icewm" msgid "_About" msgstr "_O programu" msgid "Maximize" msgstr "Maksimiziraj" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Minimiziraj" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Sakrij" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Zarolaj" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Podigni/Spusti" msgid "Kill Client: " msgstr "Ubij klijent: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "" msgid "Restore" msgstr "Povrati" msgid "Rolldown" msgstr "Odrolaj" #, c-format msgid "Error in window option: %s" msgstr "GreÅ¡ka u opciji prozora: %s" #, c-format msgid "Unknown window option: %s" msgstr "Nepoznata opcija prozora: %s" msgid "Syntax error in window options" msgstr "GreÅ¡ka u sintaksi u opciji prozora" msgid "Out of memory for window options" msgstr "Nema memorije za opcije prozora" msgid "Missing command argument" msgstr "Nedostaje argument komandi" #, c-format msgid "Bad argument %d" msgstr "LoÅ¡ argument %d" #, c-format msgid "Error at prog %s" msgstr "GreÅ¡ka u prog. %s" #, c-format msgid "Unexepected keyword: %s" msgstr "" #, c-format msgid "Error at key %s" msgstr "GreÅ¡ka u kljuÄu %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programi" msgid "_Run..." msgstr "Pok_reni..." msgid "_Windows" msgstr "_Prozori" msgid "_Help" msgstr "Po_moć" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Teme" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Upravitelj sesijom: Nepoznata linija %s" msgid "Task Bar" msgstr "Traka s alatima" msgid "Tile _Vertically" msgstr "Posloži _Vertikalno" msgid "T_ile Horizontally" msgstr "Posloži _Horizontalno" msgid "Ca_scade" msgstr "Ka_skadno" msgid "_Arrange" msgstr "_Posloži" msgid "_Minimize All" msgstr "_Minimiziraj Sve" msgid "_Hide All" msgstr "_Sakrij Sve" msgid "_Undo" msgstr "Vra_ti" msgid "Arrange _Icons" msgstr "Posloži _Ikone" msgid "_Refresh" msgstr "_Osvježi" msgid "_License" msgstr "_Licenca" msgid "Favorite applications" msgstr "" #, fuzzy msgid "Window list menu" msgstr "Popis prozora" #, fuzzy msgid "Show Desktop" msgstr "_Radno Okružje" #, fuzzy msgid "All Workspaces" msgstr "Radni prostor: " #, fuzzy msgid "Del" msgstr "ObriÅ¡i" msgid "_Terminate Process" msgstr "_Terminiraj Proces" msgid "Kill _Process" msgstr "Ubij _Proces" msgid "_Show" msgstr "_Prikaži" msgid "_Minimize" msgstr "_Minimiziraj" msgid "Window list" msgstr "Popis prozora" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Radni prostor %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Krug poruke: select neuspio (errno=%d)" #, fuzzy, c-format msgid "Unrecognized option: %s\n" msgstr "Nepoznata opcija prozora: %s" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "" #, c-format msgid "Argument required for %s switch" msgstr "" #, c-format msgid "Unknown key name %s in %s" msgstr "Nepoznato ime kljuÄa %s u %s" #, c-format msgid "Bad argument: %s for %s" msgstr "LoÅ¡ argument: %s za %s" #, c-format msgid "Bad option: %s" msgstr "LoÅ¡a opcija: %s" #, fuzzy, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "UÄitavanje pixmap-e %s neuspjelo" #, fuzzy, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Nije kursorska pixmap-a: %s sadrži previÅ¡e unikatnih boja" #, fuzzy, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "GREÅ KA? Imlib je uspio proÄitati %s" #, fuzzy, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "GREÅ KA? nepravilno XPM zaglavlje ali Imlib je uspio obraditi %s" #, fuzzy, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "GREÅ KA? nepredviÄ‘eni kraj XPM datoteke ali Imlib ju je uspio " "obraditi %s" #, fuzzy, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "GREÅ KA? NeoÄekivani karakter ali Imlib je uspio obraditi %s" #, fuzzy, c-format msgid "Could not load font \"%s\"." msgstr "Ne mogu uÄitati font '%s'." #, fuzzy, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "UÄitavanje pixmap-e %s neuspjelo" #, fuzzy, c-format msgid "Could not load fontset \"%s\"." msgstr "Ne mogu uÄitati fontset '%s'." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "" #, fuzzy, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Nema memorije za pixmapu %s" #, fuzzy, c-format msgid "Loading of image \"%s\" failed" msgstr "UÄitavanje slike %s nije uspjelo" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: Nabavka X pixmape neuspjela" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: mapiranje Imlib slike u X pixmapu neuspjelo" msgid "Cu_t" msgstr "O_dreži" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Kopiraj" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_Zalijepi" msgid "Ctrl+V" msgstr "CTRL+V" msgid "Paste _Selection" msgstr "Zalijepi _OznaÄeno" msgid "Select _All" msgstr "OznaÄi _Sve" msgid "Ctrl+A" msgstr "CTRL+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "" msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "" #, fuzzy, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Nepravilna putanja do sanduÄića: \"%s\"" msgid "OK" msgstr "U redu" msgid "Cancel" msgstr "Odustani" #, fuzzy, c-format msgid "Out of memory for pixel map %s" msgstr "Nema memorije za pixmapu %s" #, fuzzy, c-format msgid "Could not find pixel map %s" msgstr "Ne mogu pronaći pixmap-u %s" #, fuzzy, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Nema memorije za pixmapu %s" #, fuzzy, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Ne mogu pronaći pixmap-u %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "" msgid "$USER or $LOGNAME not set?" msgstr "$USER ili $LOGNAME nije postavljen?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" ne opisuje obiÄnu internet shemu" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" ne sadrži opis sheme" #, fuzzy #~ msgid "program label expected" #~ msgstr "OÄekuje se separator" #, fuzzy #~ msgid "menu caption expected" #~ msgstr "OÄekuje se separator" #, fuzzy #~ msgid "opening curly expected" #~ msgstr "OÄekuje se oznaka" #, fuzzy #~ msgid "action name expected" #~ msgstr "OÄekuje se separator" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Par heksadecimalnih brojeva je oÄekivano" #~ msgid "Unexpected identifier" #~ msgstr "NeoÄekivana oznaka" #~ msgid "Identifier expected" #~ msgstr "OÄekuje se oznaka" #~ msgid "Separator expected" #~ msgstr "OÄekuje se separator" #, fuzzy #~ msgid "Invalid token" #~ msgstr "Nepravilna putanja: " #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Nije heksadecimalan broj: %c%c (u \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - nepoznati format (%d)" #~ msgid "M" #~ msgstr "M" #~ msgid "cpu: %d %d %d %d" #~ msgstr "cpu: %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat je pronaÅ¡ao previÅ¡e cpu-a: trebao bi biti %d" #~ msgid "%s@%s: Sent: %db Rcvd: %db in %ds" #~ msgstr "%s@%s: Poslano: %db Primljeno: %db u %ds" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "# preferences(%s) - generated by genpref\n" #~ "\n" #~ msgstr "# postavke(%s) - generirane od strane genpref-a\n" #~ "\n" #~ msgid "# NOTE: All settings are commented out by default, be sure " #~ "to\n" #~ "# uncomment them if you change them!\n" #~ "\n" #~ msgstr "# UPOZORENJE: Sve postavke su podrazumijevano komentirane, " #~ "budite sigurni\n" #~ "# da ih odkomentirate kada ih promjenite!\n" #~ "\n" #~ msgid "Usage: icetail [OPTIONS] file1 [file2]...\n" #~ "Paints a files tail on the desktop background.\n" #~ msgstr "Uporaba: icetail [OPCIJE] datoteka1 [datoteka2]...\n" #~ "Oslikava kraj datoteke na pozadinu radnog okružja.\n" #~ msgid "Load pixmap %s failed with rc=%d" #~ msgstr "UÄitavanje pixmap-e %s nije uspjelo sa rc=%d" #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "Uporaba: icewmbg [OPCIJE]... pixmapa1 [pixmapa2]...\n" #~ "Mjenja pozadinu radnog okružja na promjenu radne sredine.\n" #~ "Prva pixmapa se koristi kao podrazumijevana.\n" #~ "\n" #~ "-s, --semitransparency Omogući podrÅ¡ku za polu-transparentne " #~ "terminale\n" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X greÅ¡ka %s(0x%lX): %s" #~ msgid "Warning! Unsaved changes will be lost!\n" #~ "Proceed?" #~ msgstr "Upozorenje! Promjene koje nisu spremljene biti će " #~ "izgubljene!\n" #~ "Nastavi?" #~ msgid "Gnome" #~ msgstr "Gnom" #~ msgid "Gnome User Apps" #~ msgstr "Gnom KorisniÄke Aplikacije" #~ msgid "KDE" #~ msgstr "KDE" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "PREVIÅ E ICE VEZA -- nije podržano" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Upravitelj Sesijom: IceAddConnectionWatch neuspjeÅ¡an." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Upravitelj Sesijom: Init greÅ¡ka: %s" #~ msgid "Pipe creation failed (errno=%d)." #~ msgstr "Pravljenje cijevi(pipe) neuspjeÅ¡no (errno=%d)." #~ msgid "Loading of pixmap %s failed with rc=%d" #~ msgstr "UÄitavanje pixmape %s neuspjelo sa rc=%d" #~ msgid "Fallback to '*fixed*' failed." #~ msgstr "Vraćanje na '*fixe*' neuspjeÅ¡no." #~ msgid "Missing fontset in loading '%s'" #~ msgstr "Nedostaje fontset u uÄitavanju '%s'" #~ msgid "Fallback to 'fixed' failed." #~ msgstr "Vraćanje na 'fixed' neuspjeÅ¡no." icewm-1.3.7/po/lv.po0000664000076600007660000010735511463274241013242 0ustar develdevel# IceWM Latvian translation. # Copyright (C) 1997-2005 Marko Macek, (C) 2001 Mathias Hasselmann # This file is distributed under the same license as the IceWM package. # Translators: # - Kristaps Kaupe , 2005. # msgid "" msgstr "Project-Id-Version: IceWM\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2005-06-12 12:59+0300\n" "Last-Translator: Kristaps Kaupe \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Latvian\n" "X-Poedit-Country: LATVIA\n" msgid " - Power" msgstr " - BaroÅ¡ana" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "B" #, c-format msgid " - Charging" msgstr " - LÄdÄ“jas" msgid "C" msgstr "L" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "CP noslodze:" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "NezinÄms pasta kastÄ«tes protokols: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "NezinÄms pasta kastÄ«tes ceļš: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Lietojam pasta kastÄ«ti \"%s\"\n" msgid "Error checking mailbox." msgstr "Kļūda pÄrbaudot pasta kastÄ«ti." #, c-format msgid "%ld mail message." msgstr "%ld pasta ziņojums." #, c-format msgid "%ld mail messages." msgstr "%ld pasta ziņojumi." #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Interfeiss %s:\n" " TekoÅ¡ais Ätrums (ienÄkoÅ¡ie/izejoÅ¡ie):\t%li %s/%li %s\n" " TekoÅ¡ais vidÄ“jais (ienÄkoÅ¡ie/izejoÅ¡ie):\t%lli %s/%lli %s\n" " KopÄ“jais vidÄ“jais (ienÄkoÅ¡ie/izejoÅ¡ie):\t%li %s/%li %s\n" " PÄrsÅ«tÄ«ts (ienÄkoÅ¡ie/izejoÅ¡ie):\t%lli %s/%lli %s\n" " TieÅ¡saites ilgums:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " ZvanÄ«tÄja id:\t" msgid "Workspace: " msgstr "Darba vide:" msgid "Back" msgstr "Atpakaļ" msgid "Alt+Left" msgstr "Alt+Pa kreisi" msgid "Forward" msgstr "Uz priekÅ¡u" msgid "Alt+Right" msgstr "Alt+Pa labi" msgid "Previous" msgstr "IepriekšējÄ" msgid "Next" msgstr "NÄkamÄ" msgid "Contents" msgstr "Saturs" msgid "Index" msgstr "AlfabÄ“tiskais rÄdÄ«tÄjs" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "AizvÄ“rt" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "LietoÅ¡ana: %s FAILS\n" "\n" "Ä»oti vienkÄrÅ¡s HTML pÄrlÅ«ks, kas parÄda norÄdÄ«to dokumentu.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Kļūdains ceļš: %s\n" msgid "Invalid path: " msgstr "Kļūdains ceļš:" msgid "List View" msgstr "Saraksta skats" msgid "Icon View" msgstr "Ikonu skats" msgid "Open" msgstr "AtvÄ“rt" msgid "Undo" msgstr "Atsaukt" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Jauns" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "PÄrstartÄ“t" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "TÄ pati spÄ“le" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "DarbÄ«bai `%s' vajag vismaz %d argumentus." #, c-format msgid "Invalid expression: `%s'" msgstr "Kļūdaina izteiksme: `%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Nosauktie simboli domÄ“nam `%s' (numuru apgabals: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Kļūdains darba vides nosaukums: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "Darba vide Ärpus ranga: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "LietoÅ¡ana: %s [OPCIJAS] DARBĪBAS\n" "\n" "Opcijas:\n" " -display DISPLEJS PieslÄ“dzas norÄdÄ«tajam X serverim.\n" " NoklusÄ“tais: $DISPLAY vai :0.0, ja nav " "uzstÄdÄ«ts.\n" " -window LOGA_ID NorÄda logu, ar kuru manipulÄ“t. " "SpeciÄlie\n" " identifikatori ir `root' saknes logam " "un\n" "\t\t\t `focus' Å¡obrÄ«d aktÄ«vajam logam.\n" " -class LV_KLASE Logu vadÄ«bas klase menipulÄ“jamajiem\n" " \t \t \t logiem. Ja LV_KLASE satur punktu, saskanÄ“s " "tikai\n" " \t \t logi ar tieÅ¡i tÄdu paÅ¡u nosaukumu kÄ " "LV_KLASE Ä«pašībai.\n" "\t\t\t Ja punkta nav, atlasÄ«ti tiks visi logi ar tÄdu paÅ¡u\n" "\t\t\t klasi, vai arÄ« tÄs paÅ¡as instances logi\n" "\t\t\t (`-name').\n" "\n" "DarbÄ«bas:\n" " setIconTitle NOSAUKUMS UzstÄda ikonas nosaukumu.\n" " setWindowTitle NOSAUKUMS UzstÄda loga nosaukumu.\n" " setGeometry Ä£eometrija UzstÄda loga Ä£eometriju\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " \t\t\t Only the bits selected by MASK are affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set th GNOME window hints to HINTS.\n" " setLayer SLÄ€NIS PÄrvieto logu uz citu GNOMEs logu " "slÄni.\n" " setWorkspace DARBAVIDE PÄrvieto logu uz citu darba vidi. " "IzvÄ“lieties\n" " \t\t\t saknes logu, lai nomainÄ«tu aktÄ«vo darba vidi.\n" " listWorkspaces \t Izvada darba vižu nosaukumus.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Izteiksmes:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " IZTEIKSME ::= SIMBOLS | IZTEIKSME ( `+' | `|' ) SIMBOLS\n" "\n" msgid "GNOME window state" msgstr "GNOMEs loga stÄvoklis" msgid "GNOME window hint" msgstr "GNOMEs loga padoms" msgid "GNOME window layer" msgstr "GNOMEs loga slÄnis" msgid "IceWM tray option" msgstr "IceWM paplÄtes opcija" msgid "Usage error: " msgstr "LietoÅ¡anas kļūda:" #, c-format msgid "Invalid argument: `%s'." msgstr "Kļūdains arguments: `%s'." msgid "No actions specified." msgstr "Nav norÄdÄ«tu darbÄ«bu." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Nevaru atvÄ“rt displeju: %s. X ir jÄbÅ«t palaistam un $DISPLEY " "uzstÄdÄ«tam." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Kļūdains loga identifikators: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "darba vide #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "NezinÄma darbÄ«ba: `%s'" #, c-format msgid "Socket error: %d" msgstr "Ligzdas kļūda: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Atskaņoju #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Nav tÄdas iekÄrtas: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Nevaru pieslÄ“gties ESound dÄ“monam: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Kļūda <%d> augÅ¡upielÄdÄ“jot `%s:%s'" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Skaņa <%d> augÅ¡upielÄdÄ“ta kÄ `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "Atskaņoju #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Nevaru pieslÄ“gties YIFF serverim: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Nevaru pÄrslÄ“gties uz audio režīmu `%s'." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "AtklÄta audio režīma pÄrslÄ“gÅ¡ana, sÄkotnÄ“jais audio režīms `%s' " "vairs nav spÄ“kÄ." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "AtklÄta audio režīma pÄrslÄ“gÅ¡ana, automÄtiska audio režīma maiņa " "atspÄ“jota." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "NeievÄ“rojam iepriekšējo audio režīmu `%s'." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "LietoÅ¡ana: %s [OPCIJA]...\n" "\n" "Atskaņo audio failus pie IceWM ierosinÄtÄm GLI darbÄ«bÄm.\n" "\n" "Opcijas:\n" "\n" " -d, --display=DISPLEJS IceWM izmantotais displejs " "(noklusÄ“tais: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory which " "contains\n" " the sound files (ie ~/.icewm/" "sounds).\n" " -i, --interface=TARGET Specifies the sound output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the digital " "signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT\t(ESD and YIFF) specifies server address " "and\n" " port number (default localhost:16001 " "for ESD\n" "\t\t\t\tand localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the Audio mode " "(leave\n" " blank to get a list).\n" " --audio-mode-auto \t(YIFF only) change Audio mode on the fly " "to\n" " best match sample's Audio (can " "cause\n" " problems with other Y clients, " "overrides\n" " --audio-mode).\n" "\n" " -v, --verbose Be verbose (prints out each sound " "event to\n" " stdout).\n" " -V, --version Izvada informÄciju par versiju un " "iziet.\n" " -h, --help Izvada [Å¡o] palÄ«dzÄ«bas ekrÄnu un " "iziet.\n" "\n" "AtgrieztÄs vÄ“rtÄ«bas:\n" "\n" " 0 Veiksme.\n" " 1 VispÄrÄ«ga kļūda.\n" " 2 Komandrindas kļūda.\n" " 3 ApakÅ¡sistÄ“mas kļūda (piemÄ“ram, nevar pieslÄ“gties serverim).\n" "\n" msgid "Multiple sound interfaces given." msgstr "Doti vairÄki skaņas interfeisi." #, c-format msgid "Support for the %s interface not compiled." msgstr "%s interfeisa atbalsts nav iekompilÄ“ts." #, c-format msgid "Unsupported interface: %s." msgstr "NeatbalstÄ«ts interfeiss: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Saņēmts signÄls %d: beidzu..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Saņemts signÄls %d: PÄrlÄdÄ“ju skaņas..." msgid "Hex View" msgstr "HeksadecimÄlais skats" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "IzvÄ“rst tabus" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "PÄrnest rindas" msgid "Ctrl+W" msgstr "Ctrl+W" #, fuzzy msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "LietoÅ¡ana: icewmbg [ -r | -q ]\n" " -r PÄrstartÄ“t icewmbg\n" " -q Iziet no icewmbg\n" "IelÄdÄ“ uzstÄdÄ«jumu failÄ norÄdÄ«to darbavirsmas fonu\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - puscaurspÄ«dÄ«go terminÄļu atbalsts\n" " DesktopBackgroundColor - Darbavirsmas fona krÄsa\n" " DesktopBackgroundImage - Darbavirsmas fona bilde\n" " DesktopTransparencyColor - Logu caurspÄ«dÄ«guma krÄsa\n" " DesktopTransparencyImage - Logu caurspÄ«dÄ«guma attÄ“ls\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: neatpazÄ«ta opcija `%s'\n" "Lai iegÅ«tu vairÄk informÄcijas, mēģiniet `%s --help'.\n" #, c-format msgid "Loading image %s failed" msgstr "Kļūda ielÄdÄ“jot attÄ“lu %s" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Pikseļu kartes \"%s\" ielÄde neizdevÄs: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "LietoÅ¡ana: icewmhint [klase.instance] opcija arg\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Nepietiek atmiņas (garums=%d)." msgid "Warning: " msgstr "UzmanÄ«bu:" #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "NezinÄms virziens kustinÄÅ¡anas/izmÄ“ra maiņas pieprasÄ«jumam: %d" msgid "Default" msgstr "NoklusÄ“tÄ" msgid "(C)" msgstr "©" msgid "Theme:" msgstr "TÄ“ma:" msgid "Theme Description:" msgstr "TÄ“mas apraksts:" msgid "Theme Author:" msgstr "TÄ“mas autors:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm - Par" msgid "Unable to get current font path." msgstr "Nevaru atrast tekoÅ¡o fontu ceļu." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "NezinÄms ICEWM_FONT_PATH Ä«pašības formÄts" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "VairÄkas norÄdes gradientam \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "NezinÄms gradienta nosaukums: %s" msgid "_Logout" msgstr "Iz_logoties" msgid "_Cancel logout" msgstr "At_celt izlogoÅ¡anos" msgid "Lock _Workstation" msgstr "_NoslÄ“gt darbstaciju" msgid "Re_boot" msgstr "_PÄrstartÄ“t datoru" msgid "Shut_down" msgstr "IzslÄ“gt _datoru" msgid "Restart _Icewm" msgstr "PÄrstartÄ“t _Icewm" msgid "Restart _Xterm" msgstr "PÄrstartÄ“t _Xterm" msgid "_Menu" msgstr "_IzvÄ“lne" msgid "_Above Dock" msgstr "Virs dok_a" msgid "_Dock" msgstr "_Doks" msgid "_OnTop" msgstr "_Virs" msgid "_Normal" msgstr "_NormÄlais" msgid "_Below" msgstr "_Zem" msgid "D_esktop" msgstr "_Darbavirsma" msgid "_Restore" msgstr "At_jaunot" msgid "_Move" msgstr "PÄ_rvietot" msgid "_Size" msgstr "IzmÄ“r_s" msgid "Mi_nimize" msgstr "Mi_nimizÄ“t" msgid "Ma_ximize" msgstr "Ma_ksimizÄ“t" msgid "_Fullscreen" msgstr "_PilnekrÄnÄ" msgid "_Hide" msgstr "N_oslÄ“pt" msgid "Roll_up" msgstr "Sar_itinÄt" msgid "R_aise" msgstr "P_aaugstinÄt" msgid "_Lower" msgstr "Pa_zeminÄt" msgid "La_yer" msgstr "S_lÄnis" msgid "Move _To" msgstr "PÄrvie_tot uz" msgid "Occupy _All" msgstr "_Aizņemt visas" msgid "Limit _Workarea" msgstr "Ierobežot _darba apgabalu" msgid "Tray _icon" msgstr "PaplÄtes _ikona" msgid "_Close" msgstr "Aiz_vÄ“rt" msgid "_Kill Client" msgstr "NogalinÄt _klientu" msgid "_Window list" msgstr "_Logu saraksts" msgid "Another window manager already running, exiting..." msgstr "Cits logu pÄrvaldnieks jau ir palaists, beidzu..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Nevaru pÄrstartÄ“t: %s\n" "Vai $PATH ved pie %s?" #, fuzzy, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "LietoÅ¡ana: %s [OPCIJAS]\n" "Palaiž IceWM logu pÄrvaldnieku.\n" "\n" "Opcijas:\n" " --display=NOSAUKUMS LietojamÄ X servera NOSAUKUMS.\n" "%s --sync SinhronizÄ“t X11 komandas.\n" "\n" " -c, --config=FAILS IelÄdÄ“t uzstÄdÄ«jumus no FAILA.\n" " -t, --theme=FAILS IelÄdÄ“t tÄ“mu no FAILA.\n" " -n, --no-configure IgnorÄ“t uzstÄdÄ«jumu failu.\n" "\n" " -v, --version Izvada informÄciju par versiju un iziet.\n" " -h, --help Izvada Å¡o palÄ«dzÄ«bas ekrÄnu un iziet.\n" "%s --restart Nelietojiet Å¡o: tas ir iekšējais karodziņš\n" "\n" "Vides mainÄ«gie:\n" " ICEWM_PRIVCFG=CEĻŠ PrivÄto konfigurÄcijas failu katalogs,\n" " noklusÄ“tais ir \"$HOME/.icewm/\".\n" " DISPLAY=NOSAUKUMS LietojamÄ X servera nosaukums, noklusÄ“tais " "atkarÄ«gs no XLib.\n" " MAIL=URL Pasta kastÄ«tes atraÅ¡ÄnÄs vieta. Ja shÄ“ma nav " "norÄdÄ«ta,\n" " tiek pieņemta lokÄlÄ \"file\" shÄ“ma.\n" "\n" "ApmeklÄ“jiet http://www.icewm.org/, lai ziņotu par kļūdÄm, prasÄ«tu " "atbalstu vai atstÄtu komentÄrus...\n" msgid "Confirm Logout" msgstr "ApstiprinÄt izlogoÅ¡anos" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "IzlogoÅ¡anÄs aizvÄ“rs visas aktivÄs lietojumprogrammas.\n" "TurpinÄt?" msgid "Bad Look name" msgstr "" #, fuzzy msgid "Loc_k Workstation" msgstr "_NoslÄ“gt darbstaciju" msgid "_Logout..." msgstr "Iz_logoties..." msgid "_Cancel" msgstr "At_celt" msgid "_Restart icewm" msgstr "PÄ_rstartÄ“t icewm" msgid "_About" msgstr "P_ar" msgid "Maximize" msgstr "MaksimizÄ“t" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "MinimizÄ“t" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "NoslÄ“pt" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "SaritinÄt" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "PaaugstinÄt/pazeminÄt" msgid "Kill Client: " msgstr "NogalinÄt klientu:" msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "UZMANĪBU! Visas nesaglabÄtÄs izmaiņas tiks zaudÄ“tas, kad\n" "Å¡is klients tiks nogalinÄts. Vai jÅ«s vÄ“laties turpinÄt?" msgid "Restore" msgstr "Atjaunot" msgid "Rolldown" msgstr "AtritinÄt" #, c-format msgid "Error in window option: %s" msgstr "Kļūda loga opcijÄ: %s" #, c-format msgid "Unknown window option: %s" msgstr "NezinÄma loga opcija: %s" msgid "Syntax error in window options" msgstr "Sintakses kļūda logu opcijÄs" msgid "Out of memory for window options" msgstr "TrÅ«kst atmiņas logu opcijÄm" msgid "Missing command argument" msgstr "TrÅ«kstoÅ¡s komandas arguments" #, c-format msgid "Bad argument %d" msgstr "Kļūdains arguments %d" #, c-format msgid "Error at prog %s" msgstr "Kļūda programmÄ %s" #, c-format msgid "Unexepected keyword: %s" msgstr "NegaidÄ«ts atslÄ“gvÄrds: %s" #, c-format msgid "Error at key %s" msgstr "Kļūda atslÄ“gÄ %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programmas" msgid "_Run..." msgstr "_Palaist..." msgid "_Windows" msgstr "_Logi" msgid "_Help" msgstr "PalÄ«_gs" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_TÄ“mas" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Sesiju pÄrvaldnieks: NezinÄma rinda %s" msgid "Task Bar" msgstr "Uzdevumu josla" msgid "Tile _Vertically" msgstr "KÄrtot blakus _vertikÄli" msgid "T_ile Horizontally" msgstr "KÄrtot blakus hor_izontÄli" msgid "Ca_scade" msgstr "Ka_skadÄ“t" msgid "_Arrange" msgstr "S_akÄrtot" msgid "_Minimize All" msgstr "_MinimizÄ“t visus" msgid "_Hide All" msgstr "_NoslÄ“pt visus" msgid "_Undo" msgstr "Atsa_ukt" msgid "Arrange _Icons" msgstr "SakÄrtot _ikonas" msgid "_Refresh" msgstr "A_tsvaidzinÄt" msgid "_License" msgstr "_Licenze" msgid "Favorite applications" msgstr "IemīļotÄkÄs lietojumprogrammas" msgid "Window list menu" msgstr "Logu saraksta izvÄ“lne" msgid "Show Desktop" msgstr "ParÄdÄ«t darbavirsmu" msgid "All Workspaces" msgstr "Visas darba vides" msgid "Del" msgstr "Del" msgid "_Terminate Process" msgstr "AizvÄ“r_t procesu" msgid "Kill _Process" msgstr "NogalinÄt _procesu" msgid "_Show" msgstr "_ParÄdÄ«t" msgid "_Minimize" msgstr "_MinimizÄ“t" msgid "Window list" msgstr "Logu saraksts" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Darba vide %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Ziņojumu cikls: atlase neizdevÄs (kļūdas nr.=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "NezinÄma opcija: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "NezinÄms arguments: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "%s atslÄ“gai ir nepiecieÅ¡ams arguments" #, c-format msgid "Unknown key name %s in %s" msgstr "NezinÄms atslÄ“gas nosaukums %s iekÅ¡ %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Kļūdains arguments: %s priekÅ¡ %s" #, c-format msgid "Bad option: %s" msgstr "Kļūdaina opcija: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Pikseļkartes \"%s\" ielÄde neizdevÄs" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Kļūdaina kursora pikseļkarte: \"%s\" satur pÄrÄk daudz unikÄlu krÄsu" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "BLUSA? Imlib varÄ“ja nolasÄ«t \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "BLUSA? Nekorekti noformÄ“ta XPM galvene, bet Imlib varÄ“ja noparsÄ“t \"%" "s\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "BLUSA? NegaidÄ«tas XPM faila beigas, bet Imlib varÄ“ja noparsÄ“t \"%s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "BLUSA? NegaidÄ«ts simbols, bet Imlib varÄ“ja noparsÄ“t \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "Nevaru ielÄdÄ“t fontu \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "AtkriÅ¡anas fonta \"%s\" ielÄde neizdevÄs." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Nevaru ielÄdÄ“t fontu kopu \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "TrÅ«kstoÅ¡as kodu kopas fontu kopai \"%s\":" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Nepietiek atmiņas pikseļkartei \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "AttÄ“la \"%s\" ielÄde neizdevÄs" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: X pikseļkartes iegūšana neizdevÄs" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: " msgid "Cu_t" msgstr "Izgriez_t" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_KopÄ“t" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "Ies_praust" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Iespraust _iezÄ«mÄ“to" msgid "Select _All" msgstr "IezÄ«mÄ“t _visu" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "C bibliotÄ“ka neatbalsta Å¡o lokÄli. AtkrÄ«tu uz 'C' lokÄli." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "NeizdevÄs noteikt tekoÅ¡Äs lokÄles kodu kopu. Pieņemam ISO-8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv nepiedÄvÄ pietiekami derÄ«gus pÄrveidotÄjus no %s uz %s." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Kļūdaina vairÄkbaitu virkne \"%s\": %s" msgid "OK" msgstr "Labi" msgid "Cancel" msgstr "Atcelt" #, c-format msgid "Out of memory for pixel map %s" msgstr "Nepietiek atmiņas pikseļkartei %s" #, c-format msgid "Could not find pixel map %s" msgstr "Nevaru atrast pikseļu karti %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Nepietiek atmiņas RGB pikseļu buferim %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Nevaru atrast RGB pikseļu buferi %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Izmantoju atkriÅ¡anas mehÄnismu, lai nokonvertÄ“tu pikseļus (dziļums: %" "d; maskas (sarkans/zaļš/zils): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d bitu vizuÄļi netiek atbalstÄ«ti (pagaidÄm)" msgid "$USER or $LOGNAME not set?" msgstr "$USER vai $LOGNAME nav uzstÄdÄ«ts?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" neapraksta kopÄ“ju interneta shÄ“mu" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" nesatur shÄ“mas aprakstu" #~ msgid " processes." #~ msgstr " procesi." #~ msgid "program label expected" #~ msgstr "tika gaidÄ«ta programmas iezÄ«me" #~ msgid "icon name expected" #~ msgstr "tika gaidÄ«ts ikonas nosaukums" #~ msgid "window management class expected" #~ msgstr "tika gaidÄ«ta loga vadÄ«bas klase" #~ msgid "menu caption expected" #~ msgstr "tika gaidÄ«ts izvÄ“lnes nosaukums" #~ msgid "opening curly expected" #~ msgstr "tika gaidÄ«ta atveroÅ¡Ä figÅ«riekava" #~ msgid "action name expected" #~ msgstr "tika gaidÄ«ts darbÄ«bas nosaukums" #~ msgid "unknown action" #~ msgstr "nezinÄma darbÄ«ba" #~ msgid "Failed to open %s: %s" #~ msgstr "NevarÄ“ju atvÄ“rt %s: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "NeizdevÄs palaist %s: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "NeizdevÄs izveidot bÄ“rnprocesu: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Nav regulÄrs fails: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Tika gaidÄ«ts heksadecimÄlo ciparu pÄris" #~ msgid "Unexpected identifier" #~ msgstr "NegaidÄ«ts identifikators" #~ msgid "Identifier expected" #~ msgstr "Tika gaidÄ«ts identifikators" #~ msgid "Separator expected" #~ msgstr "Tika gaidÄ«ts atdalÄ«tÄjs" #~ msgid "Invalid token" #~ msgstr "Nepareizs marÄ·ieris" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Nav heksadecimÄls numurs: %c%c (iekÅ¡ \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - nezinÄms formÄts (%d)" #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "cp: %d %d %d %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat atrod pÄrÄk daudz procesorus: vajadzÄ“tu bÅ«t %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree neizdevÄs logam 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "NokompilÄ“ts ar DEBUG karodziņu. AtkļūdoÅ¡anas paziņojumi tiks " #~ "izvadÄ«ti." #~ msgid "_No icon" #~ msgstr "_Nav ikonas" #~ msgid "_Minimized" #~ msgstr "_MinimizÄ“ts" #~ msgid "_Exclusive" #~ msgstr "_EkskluzÄ«vs" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X kļūda %s(0x%lX): %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "SazaroÅ¡anÄs neizdevÄs (kļūdas nr.=%d)" #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "NeizdevÄs izveidot anonÄ«mo programmkanÄlu (kļūdas nr.=%d)." #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Kļūdaina kursora pikseļkarte: \"%s\" satur pÄrÄk daudz " #~ "unikÄlu krÄsu" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "NeizdevÄs izveidot anonÄ«mo programmkanÄlu: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "NeizdevÄs duplicÄ“t faila deskriptoru: %s" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: NeizdevÄs nokopÄ“t zÄ«mÄ“jamo 0x%x uz pikseļu buferi" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: NeizdevÄs nokopÄ“t zÄ«mÄ“jamo 0x%x uz pikseļu buferi (%d:" #~ "%d-%dx%d" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "PÄ€RÄ€K DAUDZ ICE PIESLÄ’GUMI -- netiek atbalstÄ«ts" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Sesiju pÄrvaldnieks: IceAddConnectionWatch neizdevÄs." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Sesiju pÄrvaldnieks: InicializÄcijas kļūda: %s" icewm-1.3.7/po/ro.po0000664000076600007660000010307711463274241013236 0ustar develdevel# Romanian messages for IceWM # Copyright (C) 2000-2001 Marko Macek # Tiberiu Micu , 2001. # msgid "" msgstr "Project-Id-Version: icewm 1.0.9\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2002-10-04 12:30+0200\n" "Last-Translator: Tiberiu Micu \n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Pornire" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "P" #, c-format msgid " - Charging" msgstr " - ÃŽncărcare" msgid "C" msgstr "" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "ÃŽncărcarea CPU: %3.2f %3.2f %3.2f, %d procese." #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Protocol invalid pentru căsuÅ£a poÅŸtală: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Cale invalidă pentru căsuÅ£a poÅŸtală: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Folosire căsuÅ£a poÅŸtală \"%s\"\n" msgid "Error checking mailbox." msgstr "Eroare la verificarea căsuÅ£ei postale." #, c-format msgid "%ld mail message." msgstr "%ld mesaj mail." #, c-format msgid "%ld mail messages." msgstr "%ld mesaje mail." #, fuzzy, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "InterfaÅ£a %s:\n" " Debit curent (intrare/ieÅŸire):\t%d %s/%d %s\n" " Debit mediu (intrare/ieÅŸire):\t%d %s/%d %s\n" " Transferat (intrare/ieÅŸire):\t%d %s/%d %s\n" " Perioada de conectare:\t%d:%02d:%02d%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Identificare chemător:\t" msgid "Workspace: " msgstr "SpaÅ£iu de lucru: " msgid "Back" msgstr "ÃŽnapoi" msgid "Alt+Left" msgstr "Alt+Stânga" msgid "Forward" msgstr "ÃŽnainte" msgid "Alt+Right" msgstr "Alt+Dreapta" msgid "Previous" msgstr "Precedent" msgid "Next" msgstr "Următor" msgid "Contents" msgstr "Cuprins" msgid "Index" msgstr "Index" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "ÃŽnchide" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Folosire: %s NUME FIÅžIER\n" "\n" "Un navigator foarte simplu care afiÅŸează documentul specificat de " "NUME FIÅžIER.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Cale invalidă: %s\n" msgid "Invalid path: " msgstr "Cale invalidă: " msgid "List View" msgstr "AfiÅŸează lista" msgid "Icon View" msgstr "AfiÅŸează icon" msgid "Open" msgstr "Deschide" msgid "Undo" msgstr "Anulează" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Nou" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Repornire" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "AcelaÅŸi joc" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "" #, fuzzy, c-format msgid "Invalid expression: `%s'" msgstr "Argument invalid: `%s'." #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Denumiri simbolice ale domeniului `%s' (interval numeric: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "SpaÅ£iu de lucru invalid: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "SpaÅ£iu de lucru în afara domeniului: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Folosire: %s [OPÅ¢IUNI] ACÅ¢IUNI\n" "\n" "OpÅ£iuni: \n" " -display DISPLAY Conectare la serverul X specificat de " "DISPLAY. \n" " Implicit: $DISPLAY sau :0.0 cînd nu e " "setat. \n" " -window WINDOW_ID Specifică fereastra de manipulat. " "Identificatori\n" " speciali sunt `root' pentru fereastra " "radăcină ÅŸi\n" "\t\t\t `focus' pentru fereastra actualmente focalizată.\n" "\n" "AcÅ£iuni:\n" " setIconTitle TITLE Setează titlul iconului.\n" " setWindowTitle TITLE Setează titlul ferestrei.\n" " setState MASK STATE Setează starea ferestrei GNOME la " "STATE.\n" " \t\t\t Numai biÅ£ii selectaÅ£i de MASK sunt afectaÅ£i.\n" " STATE ÅŸi MASK sunt expresii din " "domeniul\n" " `GNOME window state'.\n" " toggleState STATE Comută starea bitului specificat de\n" " expresia STATE pentru fereastra " "GNOME setHints HINTS Setează fereastra de sugestii " "GNOME la HINTS.\n" " setLayer LAYER Mută fereastra intr-o altă fereastră " "strat GNOME.\n" " setWorkspace WORKSPACE Mută fereastra în alt spaÅ£iu de lucru. " "SelectaÅ£i\n" " \t\t\t fereastra principală pentru a schimba spaÅ£iul de lucru " "curent.\n" " listWorkspaces \t Listează numele tuturor spaÅ£iilor de " "lucru.\n" " setTrayOption TRAYOPTION Setează sugestia IceWM tray.\n" "\n" "Expresii:\n" " Expresiile sunt liste de simboluri dintr-un domeniu concatenate " "prin `+' sau `|':\n" "\n" " EXPRESIE ::= SIMBOL | EXPRESIE ( `+' | `|' ) Simbol\n" "\n" msgid "GNOME window state" msgstr "Fereastra de stare GNOME" msgid "GNOME window hint" msgstr "Fereastra sugestie Gnome" msgid "GNOME window layer" msgstr "Fereastra strat GNOME" msgid "IceWM tray option" msgstr "OpÅ£iune Icewm tray" msgid "Usage error: " msgstr "Eroare folosire: " #, c-format msgid "Invalid argument: `%s'." msgstr "Argument invalid: `%s'." msgid "No actions specified." msgstr "Nici o acÅ£iune specificată" #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Nu pot porni afiÅŸarea: %s. Trebuie să ruleze X ÅŸi setat $DISPLAY." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Identificator de ferestră invalid: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "spaÅ£iu de lucru #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "AcÅ£iune necunoscută: `%s'" #, c-format msgid "Socket error: %d" msgstr "Eroare socket: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Redă sunetul #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Nu există dispozitivul: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Conectare nereuÅŸită la demonul ESound: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Eroare <%d> în timpul încărcării `%s:%s'" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Sunetul <%d> încărcat ca `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "Redă sunetul #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Nu mă pot conecta la serverul YIFF: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Nu pot schimba în modul audio `%s'." #, fuzzy, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "S-a detectat o schimbare a modului audio, modul iniÅ£ial `%s' nu mai " "este în funcÅ£iune." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "S-a detectat o schimbare a modului audio, modul audio automat a fost " "dezafectat" #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Suprapune modul audio anterior `%s'." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Folosire: %s [OPÅ¢IUNI]...\n" "\n" "Redare a fiÅŸierelor de sunet la evenimentele GUI realizată de " "IceWM.\n" "\n" "OpÅ£iuni:\n" "\n" " -d, --display=DISPLAY AfiÅŸare făcută de IceWM (implicit: " "$DISPLAY).\n" " -s, --sample-dir=DIR Prezizează directorul care conÅ£ine\n" " fiÅŸierele de sunet (de ex. ~/.icewm/" "sounds).\n" " -i, --interface=TARGET Precizează interfaÅ£a de ieÅŸire a " "sunetelor,\n" " una dintre OSS, YIFF, ESD\n" " -D, --device=DEVICE (numai pentru OSS) precizează " "procesorul digital\n" " de sunet (implicit /dev/dsp).\n" " -S, --server=ADDR:PORT\t(ESD ÅŸi YIFF) precizează adresa serverului " "ÅŸi\n" " numărul portului (implicit " "localhost:16001 pentru ESD\n" "\t\t\t\tÅŸi localhost:9433 pentru YIFF).\n" " -m, --audio-mode[=MODE] (numai pentru YIFF) precizează modul " "audio(lăsaÅ£i\n" " gol pentru a primi o listă).\n" " --audio-mode-auto \t(numai pentru YIFF) schimbă modul audio " "din mers\n" " pentru calitate mai bună (poate " "provoca\n" " probleme altor clienÅ£i Y, " "supraîncărcarea\n" " --audio-mode).\n" "\n" " -v, --verbose Detaliază (afiÅŸează fiecare " "eveniment audio la\n" " stdout).\n" " -V, --version AfiÅŸează informaÅ£ii despre versiune " "ÅŸi ieÅŸi.\n" " -h, --help AfiÅŸează (acest) ecran de ajutor ÅŸi " "ieÅŸi.\n" "\n" "Valori returnate:\n" "\n" " 0 Succes.\n" " 1 Eroare generală.\n" " 2 Eroare linie de comandă.\n" " 3 Eroare subsisteme (de ex: conectare nereuÅŸită la server).\n" "\n" msgid "Multiple sound interfaces given." msgstr "InterfeÅ£e de sunet multiple date." #, c-format msgid "Support for the %s interface not compiled." msgstr "Suportul pentru interfaÅ£a %s necompilat." #, c-format msgid "Unsupported interface: %s." msgstr "Interfaţă nesuportată: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Semnal primit %d: Terminare..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Semnal primit %d: Reîncarc mostrele..." msgid "Hex View" msgstr "AfiÅŸare Hexa" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Expandează tab-uri" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "ÃŽmpachetează liniile" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: opÅ£iune nerecunoscută `%s'\n" "ÃŽncercaÅ£i `%s --help' pentru mai multe informaÅ£ii.\n" #, c-format msgid "Loading image %s failed" msgstr "ÃŽncărcarea imaginii %s a eÅŸuat" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "ÃŽncărcarea hărÅ£ii de pixeli \"%s\" a eÅŸuat: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Folosire: icewmhint [class.instance] option arg\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Depăşire memorie (len=%d)." msgid "Warning: " msgstr "Avertisment: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "" #, fuzzy msgid "Default" msgstr "Åžterge" msgid "(C)" msgstr "(C)" msgid "Theme:" msgstr "Temă:" msgid "Theme Description:" msgstr "Descriere temă:" msgid "Theme Author:" msgstr "Autor temă:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm - Despre" msgid "Unable to get current font path." msgstr "Nu găsesc calea către fontul curent." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Format neaÅŸteptat pentru proprietatea ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "ReferinÅ£e multiple pentru gradientul \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "Nume de gradient necunoscut: %s" msgid "_Logout" msgstr "IeÅŸire" msgid "_Cancel logout" msgstr "RenunÅ£are ieÅŸire" msgid "Lock _Workstation" msgstr "Blochează staÅ£ia de lucru" msgid "Re_boot" msgstr "ReporneÅŸte" msgid "Shut_down" msgstr "OpreÅŸte" msgid "Restart _Icewm" msgstr "Repornire _Icewm" msgid "Restart _Xterm" msgstr "Repornire _Xterm" msgid "_Menu" msgstr "_Meniu" msgid "_Above Dock" msgstr "Dochează de_asupra" msgid "_Dock" msgstr "_Dochează" msgid "_OnTop" msgstr "Deasupra" msgid "_Normal" msgstr "_Normal" msgid "_Below" msgstr "Dedesu_bt" msgid "D_esktop" msgstr "D_esktop" msgid "_Restore" msgstr "_Restaurează" msgid "_Move" msgstr "_Mută" msgid "_Size" msgstr "Mărime" msgid "Mi_nimize" msgstr "Mi_nimizează" msgid "Ma_ximize" msgstr "Ma_ximizează" msgid "_Fullscreen" msgstr "" msgid "_Hide" msgstr "Ascunde" msgid "Roll_up" msgstr "Rulează" msgid "R_aise" msgstr "Ridică" msgid "_Lower" msgstr "_Coboară" msgid "La_yer" msgstr "Strat" msgid "Move _To" msgstr "Mută în" msgid "Occupy _All" msgstr "Ocupă tot" msgid "Limit _Workarea" msgstr "Limitează spaÅ£iul de lucru" msgid "Tray _icon" msgstr "" msgid "_Close" msgstr "ÃŽnchide" msgid "_Kill Client" msgstr "ÃŽnchide clientul" msgid "_Window list" msgstr "Lista ferestre" msgid "Another window manager already running, exiting..." msgstr "Un alt manager de ferestre rulează, ies..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Nu pot reporni: %s\n" "Conduce calea $PATH către %s?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "" msgid "Confirm Logout" msgstr "Confirmă ieÅŸirea" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "IeÅŸirea va închide toate aplicaÅ£iile active.\n" "ContinuaÅ£i?" msgid "Bad Look name" msgstr "Nume Look greÅŸit" #, fuzzy msgid "Loc_k Workstation" msgstr "Blochează staÅ£ia de lucru" msgid "_Logout..." msgstr "IeÅŸire..." msgid "_Cancel" msgstr "Renunţă" msgid "_Restart icewm" msgstr "_ReporneÅŸte icewm" msgid "_About" msgstr "Despre" msgid "Maximize" msgstr "Maximizează" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Minimizează" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Ascunde" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Rulează în sus" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Ridică/Coboară" msgid "Kill Client: " msgstr "ÃŽnchide client: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "AVERTISMENT! Toate schimbările nesalvate vor fi pierdute\n" "când acest client este închis. DoriÅ£i sa continuaÅ£i?" msgid "Restore" msgstr "Restaurează" msgid "Rolldown" msgstr "Rulează în jos" #, c-format msgid "Error in window option: %s" msgstr "Eroare la opÅ£iunea ferestrei: %s" #, c-format msgid "Unknown window option: %s" msgstr "OpÅ£iune necunoscută a ferestrei: %s" msgid "Syntax error in window options" msgstr "Eroare de sintaxă la opÅ£iunea ferestrei" msgid "Out of memory for window options" msgstr "Depăşirea memoriei pentru opÅ£iunile ferestrei" msgid "Missing command argument" msgstr "LipseÅŸte argumentul comenzii" #, c-format msgid "Bad argument %d" msgstr "Argument greÅŸit %d" #, c-format msgid "Error at prog %s" msgstr "Eroare prog %s" #, c-format msgid "Unexepected keyword: %s" msgstr "" #, c-format msgid "Error at key %s" msgstr "Eroare la tasta %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programe" msgid "_Run..." msgstr "_Rulează..." msgid "_Windows" msgstr "Ferestre" msgid "_Help" msgstr "Ajutor" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Teme" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Managerul de sesiuni: linie necunoscută %s" msgid "Task Bar" msgstr "Bara sarcini" msgid "Tile _Vertically" msgstr "Alăturare _verticală" msgid "T_ile Horizontally" msgstr "Alăturare or_izontală" msgid "Ca_scade" msgstr "Ca_scadare" msgid "_Arrange" msgstr "_Aranjare" msgid "_Minimize All" msgstr "_Minimizează tot" msgid "_Hide All" msgstr "_Ascunde tot" msgid "_Undo" msgstr "Anulează" msgid "Arrange _Icons" msgstr "Aranjează _iconuri" msgid "_Refresh" msgstr "Actualizea_ză" msgid "_License" msgstr "_Licenţă" msgid "Favorite applications" msgstr "AplicaÅ£ii favorite" msgid "Window list menu" msgstr "Meniu lista ferestre" #, fuzzy msgid "Show Desktop" msgstr "D_esktop" #, fuzzy msgid "All Workspaces" msgstr "SpaÅ£iu de lucru: " #, fuzzy msgid "Del" msgstr "Åžterge" msgid "_Terminate Process" msgstr "Termină procesul" msgid "Kill _Process" msgstr "OpreÅŸte procesul" msgid "_Show" msgstr "Arată" msgid "_Minimize" msgstr "_Minimizează" msgid "Window list" msgstr "Lista ferestre" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. SpaÅ£iu de lucru %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Buclă mesaj: selectare eÅŸuată (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "OpÅ£iune nerecunoscută: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Argument nerecunoscut: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Argument necesar pentru comutatorul %s " #, c-format msgid "Unknown key name %s in %s" msgstr "Numele tastei %s necunoscut în %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Argument greÅŸit: %s pentru %s" #, c-format msgid "Bad option: %s" msgstr "OpÅ£iune greÅŸită: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "ÃŽncărcarea hărÅ£ii de pixeli \"%s\" a eÅŸuat" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Cursor invalid pentru harta de pixeli: \"%s\" conÅ£ine prea multe " "culori unice" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "BUG? Imlib a reuÅŸit citirea \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "BUG? Antetul XPM deformat dar Imlib a reuÅŸit procesarea \"%s\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "BUG? SfârÅŸit de fiÅŸier XPM neaÅŸteptat dar Imlib a reuÅŸit procesarea " "\"%s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "BUG? Caracter neaÅŸteptat dar Imlib a reuşît procesarea \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "Nu pot încărca fontul \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "ÃŽncărcarea fontului de rezervă \"%s\" a eÅŸuat." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Nu pot încărca setul de fonturi \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "LipseÅŸte setul de coduri pentru setul de fonturi \"%s\":" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Depăşirea memoriei pentru harta de pixeli \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "ÃŽncărcarea imaginii \"%s\" a eÅŸuat" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: achiziÅ£ia hărÅ£ii de pixeli X a eÅŸuat" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: eÅŸuare la maparea imaginii Imlib în hartă de pixeli" msgid "Cu_t" msgstr "Decupează" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Copiază" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "Li_peÅŸte" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "LipeÅŸte _selecÅ£ia" msgid "Select _All" msgstr "Selecte_ază tot" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "" msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv nu furnizează (suficient) %s pentru convertirea %s." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Åžir multioctet invalid \"%s\": %s" msgid "OK" msgstr "OK" msgid "Cancel" msgstr "Renunţă" #, c-format msgid "Out of memory for pixel map %s" msgstr "Depăşirea memoriei pentru harta de pixeli %s" #, c-format msgid "Could not find pixel map %s" msgstr "Nu pot găsi harta de pixeli %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Depăşirea memoriei pentru buffer-ul de pixeli RGB %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Nu pot găsi buffer-ul de pixeli RGB %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Folosire mecanism de rezervă pentru conversia pixelilor (adâncime: %" "d; măşti (roÅŸu/verde/albastru): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d bit vizuali nu e suportat (încă)" msgid "$USER or $LOGNAME not set?" msgstr "$USER sau $LOGNAME nesetat?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" nu descrie o schemă internet comună" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" nu conÅ£ine descrierea schemei" #, fuzzy #~ msgid "program label expected" #~ msgstr "Separator aÅŸteptat" #, fuzzy #~ msgid "menu caption expected" #~ msgstr "Separator aÅŸteptat" #, fuzzy #~ msgid "opening curly expected" #~ msgstr "Identificator aÅŸteptat" #, fuzzy #~ msgid "action name expected" #~ msgstr "Separator aÅŸteptat" #, fuzzy #~ msgid "unknown action" #~ msgstr "AcÅ£iune necunoscută: `%s'" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Pereche de numere hexazecimale necesară" #~ msgid "Unexpected identifier" #~ msgstr "Identificator neaÅŸteptat" #~ msgid "Identifier expected" #~ msgstr "Identificator aÅŸteptat" #~ msgid "Separator expected" #~ msgstr "Separator aÅŸteptat" #, fuzzy #~ msgid "Invalid token" #~ msgstr "Cale invalidă: " #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Nu e număr hexazecimal: %c%c (in \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - format necunoscut (%d)" #~ msgid "M" #~ msgstr "M" #~ msgid "cpu: %d %d %d %d" #~ msgstr "cpu: %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat găseÅŸte prea multe cpu-uri: ar trebui să fie %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "# preferences(%s) - generated by genpref\n" #~ "\n" #~ msgstr "# preferinÅ£e(%s) - generat de genpref\n" #~ "\n" #~ msgid "# NOTE: All settings are commented out by default, be sure " #~ "to\n" #~ "# uncomment them if you change them!\n" #~ "\n" #~ msgstr "# NOTA: Toate setările sunt implicit comentate, asiguraÅ£i-" #~ "vă \n" #~ "# că scoateÅ£i comentariile dacă le schimbaÅ£i!\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree eÅŸuat ptr fereastra 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Compilat cu opÅ£iunea DEBUG. Mesajele de depanare vor fi " #~ "afiÅŸate." #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "Folosire: icewmbg [OPÅ¢IUNE]... pixmap1 [pixmap2]...\n" #~ "Schimbarea fundalului desktop-ului la comutarea spaÅ£iului de lucru.\n" #~ "Prima hartă de pixeli este folosită ca cea implicită.\n" #~ "\n" #~ "-s, --semitransparency Validează suport pentru terminale " #~ "semitransparente\n" #~ msgid "_Ignore" #~ msgstr "_Ignoră" #~ msgid "_Minimized" #~ msgstr "_Minimizat" #~ msgid "_Exclusive" #~ msgstr "_Exclusiv" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "Eroare X %s(0x%lX): %s" #~ msgid "Window %p has no XA_ICEWM_PID property. Export the " #~ "LD_PRELOAD variable to preload the preice library." #~ msgstr "Fereastra %p nu are proprietatea XA_ICEWM_PID. Export " #~ "variabila LD_PRELOAD pentru a preîncărca librăria preice." #~ msgid "Obsolete option: %s" #~ msgstr "OpÅ£iune învechită: %s" #~ msgid "Gnome" #~ msgstr "Gnome" #~ msgid "Gnome User Apps" #~ msgstr "AplicaÅ£ii utilizator Gnome" #~ msgid "KDE" #~ msgstr "KDE" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "PREA MULTE CONEXIUNI ICE -- nesuportat" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Managerul de sesiuni: IceAddConnectionWatch a eÅŸuat." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Managerul de sesiuni: eroare iniÅ£ializare: %s" #~ msgid "Pipe creation failed (errno=%d)." #~ msgstr "Crearea conexiunii a eÅŸuat (errno=%d)." #~ msgid "Resource allocation for rotated string \"%s\" (%dx%d px) " #~ "failed" #~ msgstr "Alocarea de resurse pentru ÅŸirul rotit \"%s\" (%dx%d px) a " #~ "eÅŸuat" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: eÅŸuare la copierea 0x%x în buffer-ul de pixeli" icewm-1.3.7/po/sk.po0000664000076600007660000007322511463274241013234 0ustar develdevel# translation of icewm-1.2.22.po to slovak # Radovan Stas (RadOOne) , 2004. # Zdenko Podobny , 2005. msgid "" msgstr "Project-Id-Version: icewm-1.2.22\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2005-08-02 09:10StÅ™ední Evropa (letní Äas)\n" "Last-Translator: Zdenko Podobný \n" "Language-Team: slovak \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.10.1\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : " "2;\n" msgid " - Power" msgstr " - Napájanie" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "N" #, c-format msgid " - Charging" msgstr " - Dobíjanie" msgid "C" msgstr "D" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "ZaÅ¥aženie CPU: " #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Neplatný protokol mailboxu: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Neplatná cesta k mailboxu: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Používam MailBox: \"%s\"\n" msgid "Error checking mailbox." msgstr "Chyba overenia stavu mailboxu." #, c-format msgid "%ld mail message." msgstr "%ld poÅ¡tová správa." #, c-format msgid "%ld mail messages." msgstr "%ld poÅ¡tových správ." #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Zariadenie %s:\n" " Aktuálne vyÅ¥aženie (dnu/von):\t%li %s/%li %s\n" " Priemerné vyÅ¥aženie (dnu/von):\t%lli %s/%lli %s\n" " Priemer celkom (dnu/von):\t%li %s/%li %s\n" " Prenesené (dnu/von):\t%lli %s/%lli %s\n" " Celková doba pripojenia:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Id volajúceho:\t" msgid "Workspace: " msgstr "Pracovná plocha: " msgid "Back" msgstr "Späť" msgid "Alt+Left" msgstr "Alt+Vľavo" msgid "Forward" msgstr "Dopredu" msgid "Alt+Right" msgstr "Alt+Vpravo" msgid "Previous" msgstr "Predchadzajúce" msgid "Next" msgstr "Nasledujúce" msgid "Contents" msgstr "Obsah" msgid "Index" msgstr "Index" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "ZavrieÅ¥" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Použitie: %s NÃZOV_SÚBORU\n" "\n" "Veľmi jednoduchý HTML prehliadaÄ zobrazujúci dokument urÄený " "NÃZVOM_SÚBORU.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Neplatná cesta: %s\n" msgid "Invalid path: " msgstr "Neplatná cesta: " msgid "List View" msgstr "Zobrazenie zoznamu" msgid "Icon View" msgstr "Zobrazenie ikon" msgid "Open" msgstr "OtvoriÅ¥" msgid "Undo" msgstr "VrátiÅ¥" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Nový" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "ReÅ¡tartovaÅ¥" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Rovnaká hra" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "Akcia `%s' vyžaduje najmenej %d argumentov." #, c-format msgid "Invalid expression: `%s'" msgstr "Neplatný výraz: `%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Pomenované znaky domény `%s' (Äíselný rozsah: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Neplatný názov plochy: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "Plocha je mimo rozsah: %d" #, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "" msgid "GNOME window state" msgstr "GNOME stav okna" msgid "GNOME window hint" msgstr "GNOME tip okna" msgid "GNOME window layer" msgstr "GNOME vrstva okna" msgid "IceWM tray option" msgstr "IceWM nastavenia dokovaÄa" msgid "Usage error: " msgstr "Chybné použitie: " #, c-format msgid "Invalid argument: `%s'." msgstr "Neplatná hodnota: `%s'." msgid "No actions specified." msgstr "Nebola zadaná žiadna akcia." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Neide otvoriÅ¥ displej: %s. Server X musí byÅ¥ spustený a premenná " "$DISPLAY nastavená." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Neplatné oznaÄenie okna: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "pracovná plocha #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "Neznáma akcia: `%s'" #, c-format msgid "Socket error: %d" msgstr "Chyba soketu: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Hrám vzorku #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Zariadenie neexistuje: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Nedá sa spojiÅ¥ s ESound demónom: %s" msgid "" msgstr "<žiadny>" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Nastala chyba <%d>: pri nahrávaní `%s:%s'" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Vzorka <%d> bola nahraná ako `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "Prehrávanie vzorky #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Nedá sa spojiÅ¥ so serverom YIFF: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Nie je možné prejsÅ¥ do zvukového módu `%s'." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Bolo zaznemenané prepnutie zvukového režimu, pôvodný zvukový režim `%" "s' už nie je aktívny." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Bolo zaznemenané prepnutie zvukového režimu, automatické prepínanie " "zvukového režimu bolo zakázané." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Mením na predchádzajúci zvukový režim `%s'." #, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "" msgid "Multiple sound interfaces given." msgstr "Existuje viacero zvukových rozhraní." #, c-format msgid "Support for the %s interface not compiled." msgstr "Podpora rozhrania %s nebola skompilovaná." #, c-format msgid "Unsupported interface: %s." msgstr "Nepodporované rozhranie: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Prijatý signál %d: KonÄím..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Prijatý signál %d: Znovu nahrávam vzorky..." msgid "Hex View" msgstr "Zobrazenie v hexa" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Výsuvné panely" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "ZalamovaÅ¥ riadky" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: nerozpoznaný prepínaÄ `%s'\n" "Pre viac informácií použite `%s --help'.\n" #, c-format msgid "Loading image %s failed" msgstr "Nahranie obrázku %s zlyhalo" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Nahranie obrázku \"%s\" zlyhalo: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Použitie: icewmhint [trieda.instance] prepínaÄ hodnota\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Nedostatok pamäti (veľkosÅ¥=%d)." msgid "Warning: " msgstr "Upozornenie: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Neznámy smer pri požiadavke posun/zmena veľkosti: %d" msgid "Default" msgstr "Å tandard" msgid "(C)" msgstr "(C)" msgid "Theme:" msgstr "Téma:" msgid "Theme Description:" msgstr "Popis témy:" msgid "Theme Author:" msgstr "Autor témy:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "Icewm - O Aplikácii" msgid "Unable to get current font path." msgstr "Aktuálnu cestu k písmam nemôžem získaÅ¥." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "NeoÄakávaný formát položky ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Mnoho odkazov na gradient \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "Neznáme meno gradientu: %s" msgid "_Logout" msgstr "Odh_lásenie" msgid "_Cancel logout" msgstr "_ZruÅ¡iÅ¥ odhlásenie" msgid "Lock _Workstation" msgstr "Uzamknúť pracovnú _stanicu" msgid "Re_boot" msgstr "ReÅ¡tar_tovaÅ¥" # msgid "Shut_down" msgstr "_Vypnúť poÄítaÄ" msgid "Restart _Icewm" msgstr "ReÅ¡tartovaÅ¥ _Icewm" msgid "Restart _Xterm" msgstr "ReÅ¡tartovaÅ¥ _Xterm" msgid "_Menu" msgstr "_Menu" msgid "_Above Dock" msgstr "_Nad dok" msgid "_Dock" msgstr "_Dok" msgid "_OnTop" msgstr "H_ore" msgid "_Normal" msgstr "_Normálne" msgid "_Below" msgstr "_Dole" msgid "D_esktop" msgstr "_Plocha" msgid "_Restore" msgstr "O_bnoviÅ¥" msgid "_Move" msgstr "_Presunúť" msgid "_Size" msgstr "_VeľkosÅ¥" msgid "Mi_nimize" msgstr "_MinimalizovaÅ¥" msgid "Ma_ximize" msgstr "Ma_ximalizovaÅ¥" msgid "_Fullscreen" msgstr "_Celá obrazovka" msgid "_Hide" msgstr "_SchovaÅ¥" msgid "Roll_up" msgstr "Zrol_ovaÅ¥" msgid "R_aise" msgstr "Zvýš_iÅ¥" msgid "_Lower" msgstr "_ZnížiÅ¥" msgid "La_yer" msgstr "Vrs_tva" msgid "Move _To" msgstr "_Presunúť na" msgid "Occupy _All" msgstr "N_a vÅ¡etky plochy" msgid "Limit _Workarea" msgstr "ObmedziÅ¥ pracovnú ob_lasÅ¥" msgid "Tray _icon" msgstr "Dokuj _ikonu" msgid "_Close" msgstr "_ZavrieÅ¥" msgid "_Kill Client" msgstr "ZabiÅ¥ _klienta" msgid "_Window list" msgstr "Zoznam _okien" msgid "Another window manager already running, exiting..." msgstr "Iný window manažér beží, konÄím..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Nemôžem reÅ¡tartovaÅ¥: %s\n" "$PATH tiež k %s?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "" msgid "Confirm Logout" msgstr "PotvrdiÅ¥ odhlásenie" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Odhlásenie zavrie vÅ¡etky spustené aplikácie\n" "PokraÄovaÅ¥?" msgid "Bad Look name" msgstr "Zlé meno Vzhľadu (Look)" #, fuzzy msgid "Loc_k Workstation" msgstr "Uzamknúť pracovnú _stanicu" msgid "_Logout..." msgstr "Odh_lásenie..." msgid "_Cancel" msgstr "_ZruÅ¡iÅ¥" msgid "_Restart icewm" msgstr "_ReÅ¡tartovaÅ¥ Icewm" msgid "_About" msgstr "O _aplikacii" msgid "Maximize" msgstr "MaximalizovaÅ¥" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "MinimalizovaÅ¥" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "SkryÅ¥" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Z_rolovaÅ¥" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Zdvihnúť/ZnížiÅ¥" msgid "Kill Client: " msgstr "ZabiÅ¥ klienta: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "VAROVANIE! Ak bude tento klient zabitý, budú\n" "vÅ¡etky neuložené dáta stratené. Chcete pokraÄovaÅ¥?" msgid "Restore" msgstr "ObnoviÅ¥" msgid "Rolldown" msgstr "RozbaliÅ¥" #, c-format msgid "Error in window option: %s" msgstr "Chyba v nastavení okna %s" #, c-format msgid "Unknown window option: %s" msgstr "Neznáma voľba okna: %s" msgid "Syntax error in window options" msgstr "Syntaktická chyba vo voľbách okna" msgid "Out of memory for window options" msgstr "Málo pamäte pre voľby okna" msgid "Missing command argument" msgstr "Chýba hodnota príkazu" #, c-format msgid "Bad argument %d" msgstr "Zlá hodnota %d" #, c-format msgid "Error at prog %s" msgstr "Chyba v programe %s" #, c-format msgid "Unexepected keyword: %s" msgstr "NeoÄakávané kľúÄové slovo: %s" #, c-format msgid "Error at key %s" msgstr "Chyba v kľúÄi %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programy" msgid "_Run..." msgstr "_SpustiÅ¥..." msgid "_Windows" msgstr "_Okná" msgid "_Help" msgstr "_Pomocník" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Témy" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Manažér sedení: Neznámy riadok %s" msgid "Task Bar" msgstr "Panel úloh" msgid "Tile _Vertically" msgstr "ZarovnaÅ¥ _vertikálne" msgid "T_ile Horizontally" msgstr "ZarovnaÅ¥ _horizontálne" msgid "Ca_scade" msgstr "ZarovnaÅ¥ do _kaskády" msgid "_Arrange" msgstr "_UsporiadaÅ¥" msgid "_Minimize All" msgstr "_MinimalizovaÅ¥ vÅ¡etko" msgid "_Hide All" msgstr "_SkryÅ¥ vÅ¡etko" msgid "_Undo" msgstr "_VrátiÅ¥" msgid "Arrange _Icons" msgstr "UsporiadaÅ¥ _Ikony" msgid "_Refresh" msgstr "_ObnoviÅ¥" msgid "_License" msgstr "_Licencia" msgid "Favorite applications" msgstr "Obľúbené aplikácie" msgid "Window list menu" msgstr "Zoznam okien" msgid "Show Desktop" msgstr "Ukáž plochu" msgid "All Workspaces" msgstr "VÅ¡etky pracovné plochy" msgid "Del" msgstr "ZmazaÅ¥" msgid "_Terminate Process" msgstr "_UkonÄiÅ¥ proces" msgid "Kill _Process" msgstr "_ZabiÅ¥ proces" msgid "_Show" msgstr "Ukáz_aÅ¥" msgid "_Minimize" msgstr "_MinimalizovaÅ¥" msgid "Window list" msgstr "Zoznam okien" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Pracovná plocha %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Message Loop: výber zlyhal (chyba=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Nerozpoznaná voľba: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Nerozpoznaný parameter: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Hodnota prepínaÄa %s je vyžadovaná" #, c-format msgid "Unknown key name %s in %s" msgstr "Neznáme meno kľúÄa %s v %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Zlá hodnota: %s pre %s" #, c-format msgid "Bad option: %s" msgstr "Zla voľba: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Nahranie pixmapy \"%s\" zlyhalo" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Neplatná pixmapa kurzora: \"%s\" obsahuje príliÅ¡ veľa jedineÄných " "farieb" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "CHYBA? Imlib bola schopná ÄítaÅ¥ \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "CHYBA? PoÅ¡kodená XPM hlaviÄka ale Imlib ju bola schopná spracovaÅ¥ \"%" "s\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "CHYBA? NeoÄakávaný koniec súboru XPM, ale Imlib bola schopná " "analyzovaÅ¥ \"%s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "CHYBA? NeoÄakávaný znak, ale Imlib ho bola schopná analyzovaÅ¥ \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "Nemôžem nahraÅ¥ písmo \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Nahranie núdzového písma \"%s\" zlyhalo." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Nemôžem nahraÅ¥ sadu písma \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "Chýba znaková sada písma \"%s\":" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Nedostatok pamäte pre pixmapu \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Nahranie obrázku \"%s\" zlyhalo" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: Získanie X pixmapy zlyhalo" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Namapovaniei Imlib obrázku do X pixmapy zlyhalo" msgid "Cu_t" msgstr "Vystrihnú_Å¥" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_KopírovaÅ¥" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_VložiÅ¥" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "V_ložiÅ¥ Výber" msgid "Select _All" msgstr "Vybr_aÅ¥ vÅ¡etko" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Locale nie je podporované knižnicou C. Použijem 'C' locale'." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "Nepodarilo sa zistiÅ¥ aktuálnu kódovú stránku. Prepokladám ISO-8859-" "1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv (dostatoÄne) nepodporuje konverziu z %s do %s." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Neplatný viacbajtový reÅ¥azec \"%s\": %s" msgid "OK" msgstr "OK" msgid "Cancel" msgstr "ZruÅ¡iÅ¥" #, c-format msgid "Out of memory for pixel map %s" msgstr "Nedostatok pamäte pre pixmapu %s" #, c-format msgid "Could not find pixel map %s" msgstr "Nemôžem nájsÅ¥ pixmapu %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Nedostatok pamäte pre zásobník RGB pixelov %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Nemôžem nájsÅ¥ zásobník RGB pixelov %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Ku konverzii pixelu používam núdzový mechanizmus(hĺbka: %d; maska " "(Äervená/zelená/modrá): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d bit visuals (zatiaľ) nie sú podporované" msgid "$USER or $LOGNAME not set?" msgstr "$USER ,alebo $LOGNAME nie je nastavený?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" neodpovedá bežnému internetovému schématu" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" neobsahuje popis schématu" #~ msgid " processes." #~ msgstr " procesov." #~ msgid "program label expected" #~ msgstr "bolo oÄakávané pomenovanie programu" #~ msgid "icon name expected" #~ msgstr "oÄakávaný je názov ikony" #~ msgid "window management class expected" #~ msgstr "oÄakávaná je trieda správy okien" #~ msgid "menu caption expected" #~ msgstr "bol oÄakávaný názov menu" #~ msgid "opening curly expected" #~ msgstr "oÄakávaná je ľavá zložená zátvorka" #~ msgid "action name expected" #~ msgstr "chyba meno akcie" #~ msgid "unknown action" #~ msgstr "neznáma akcia" #~ msgid "Failed to open %s: %s" #~ msgstr "Nepodarilo sa otvoriÅ¥ %s: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Zlyhalo spustenie %s: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Zlyhalo vytvorenie potomka procesu: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Nie je skutoÄným súborom: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Chyba dvojica hexadecimálnych Äíslic" #~ msgid "Unexpected identifier" #~ msgstr "NeoÄakávaný identifikátor" #~ msgid "Identifier expected" #~ msgstr "Chýba identifikátor" #~ msgid "Separator expected" #~ msgstr "Chýba oddeľovaÄ" #~ msgid "Invalid token" #~ msgstr "Neplatný token" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Toto nie je hexadecimálne Äíslo: %c%c (v \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - neznámy formát (%d)" #~ msgid "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgstr "stav:\tpouživ. = %i, s prioritou (nice) = %i, sys. = %i, " #~ "neÄinné = %i" #~ msgid "bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgstr "panely:\tpouživ. = %i, s prioritou (nice) = %i, sys. = %i (h " #~ "= %i)\n" #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "cpu: %d %d %d %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat naÅ¡iel príliÅ¡ veľa procesorov: asi ich je %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree zlyhalo pre okno 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Skompilované s voľbou DEBUG. Ladiace správy budú vypisované." #~ msgid "_No icon" #~ msgstr "_Bez ikon" #~ msgid "_Minimized" #~ msgstr "_MinimalizovaÅ¥" #~ msgid "_Exclusive" #~ msgstr "_Exkluzívne" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X chyba %s(0x%lX): %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "Rozdvojenie (fork) zlyhalo (chyba=%d)" #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "Vytvorenie nepomenovanej rúry zlyhalo (chyba Ä.=%d)." #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Neplatná pixmapa kurzora: \"%s\" obsahuje príliÅ¡ veľa " #~ "jedineÄných farieb" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Zlyhalo otvorenie nepomenovanej rúry: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Zlyhalo duplikovanie deskriptoru súboru: %s" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Nepodarilo sa skopírovaÅ¥ kresbu 0x%x do pixel bufferu" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: Nepodarilo sa skopírovaÅ¥ kresbu 0x%x do pixel bufferu " #~ "(%d:%d-%dx%d" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "PRÃLIÅ  VEĽA SPOJENí -- nepodporované" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Manažér sedení: IceAddConnectionWatch zlyhalo." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Manažér sedení: Chyba inicializácie: %s" icewm-1.3.7/po/sl.po0000664000076600007660000011425711463274241013236 0ustar develdevel# translation of sl.po to Slovenian # Slovenian translation of Icewm # Copyright (C) 2003,2004 Free Software Foundation, Inc. # Jernej Kovacic , 2004 # Jernej Kovacic , 2004 # Jernej Kovacic , 2004 # Jernej Kovacic , 2004 # Jernej Kovacic , 2004 # Jernej Kovacic , 2004 # Jernej Kovacic , 2004 # Jernej Kovacic , 2004 # Jernej Kovacic , 2004 # Jernej Kovacic , 2004 # Jernej Kovacic , 2004 # Jernej Kovacic , 2004 # Jernej Kovacic , 2003 # Jernej Kovacic , 2004 msgid "" msgstr "Project-Id-Version: sl\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2004-10-03 21:56+0200\n" "Last-Translator: Jernej Kovacic \n" "Language-Team: Slovenian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.0\n" msgid " - Power" msgstr " - Napajanje" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "P" #, c-format msgid " - Charging" msgstr " - Polnim" msgid "C" msgstr "C" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "Obremenitev CPE: %3.2f %3.2f %3.2f, %d procesov." #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "Obremenitev CPE" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Neveljaven protokol elektronske poÅ¡te: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Neveljavna pot do poÅ¡tnega predala: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Uporabljam poÅ¡tni predal \"%s\"\n" msgid "Error checking mailbox." msgstr "Napaka pri preverjanju elektronske poÅ¡te." #, c-format msgid "%ld mail message." msgstr "%ld sporoÄilo." #, c-format msgid "%ld mail messages." msgstr "%ld sporoÄil." #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Vmesnik %s:\n" " Trenutna hitrost (notri/ven):\t%li %s/%li %s\n" " Trenutno povpreÄje (notri/ven):\t%lli %s/%lli %s\n" " Skupno povpreÄje (notri/ven):\t%li %s/%li %s\n" " Preneseno (notri/ven):\t%lli %s/%lli %s\n" " ÄŒas priklopa:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Identifikator klicalca:\t" msgid "Workspace: " msgstr "Delovna povrÅ¡ina: " msgid "Back" msgstr "Nazaj" msgid "Alt+Left" msgstr "Alt+Levo" msgid "Forward" msgstr "Naprej" msgid "Alt+Right" msgstr "Alt+Desno" msgid "Previous" msgstr "PrejÅ¡nji" msgid "Next" msgstr "Naslednji" msgid "Contents" msgstr "Vsebina" msgid "Index" msgstr "Stvarno kazalo" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Zapri" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Uporaba: %s IME_DATOTEKE\n" "\n" "Preprost HTML brskalnik, ki prikaže dokument IME_DATOTEKE.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Neveljavna pot: %s\n" msgid "Invalid path: " msgstr "Neveljavna pot: " msgid "List View" msgstr "Seznamski pogled" msgid "Icon View" msgstr "Ikonski pogled" msgid "Open" msgstr "Odpri" msgid "Undo" msgstr "PrekliÄi" msgid "Ctrl+Z" msgstr "Ctrl+z" msgid "New" msgstr "Nov" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Zaženi znova" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Ista igra" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "Dejanje `%s' zahteva vsaj %d argumentov." #, c-format msgid "Invalid expression: `%s'" msgstr "Neveljaven izraz: `%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Poimenovani simboli domene `%s' (Å¡tevilski razpon: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Neveljavno ime delovne povrÅ¡ine: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "Delovna povrÅ¡ina izven podroÄja: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Uporaba: %s [IZBIRE] DEJANJA\n" "\n" "Izbire:\n" " -display PRIKAZ Povezava na strežnik X, ki je doloÄen " "v PRIKAZ.\n" " Privzeto: $DISPLAY ali :0.0, ko ni " "nastavljeno.\n" " -window ID_OKNA DoloÄi okno, na katerem se bo izvedlo " "dejanje. Posebna\n" " identifikatorja sta `root' za korensko " "okno in\n" "\t\t\t `focus' za trenutno aktivno okno.\n" " -class RAZRED_UO Razred okenskega upravljanja okna " "(oken) \t \t \t ÄŒe RAZRED_UO vsebuje piko, \t " "\t to velja samo za okna z natanko enako lastnostjo " "RAZRED_UO\t\t\t ÄŒe ni pike, bodo izbrana okna\t\t\t z " "istim razredom in isto instanco\t\t\t (znano tudi kot `-name')\n" "Dejanja:\n" " setIconTitle NASLOV Nastavi naslov ikone.\n" " setWindowTitle NASLOV Nastavi naslov okna.\n" " setGeometry geometrija Nastavi geometrijo okna setState " "MASKA STANJE Nastavi stanje Gnomovega okna na STANJE.\n" " \t\t\t Deluje le na bitih, ki so izbrani v MASKA.\n" " STANJE in MASKA izražata domeno\n" " `Gnomovega stanja okna'.\n" " toggleState STANJE Nastavi bite stanja Gnomovega okna, " "kot\n" " je doloÄeno v izrazu STANJE.\n" " setHints NASVETI Nastavi nasvete Gnomovega okna " "na vrednost NASVETI.\n" " setLayer PLAST Premakne okno v drugo plast " "Gnomovega okna.\n" " setWorkspace DEL_POVRÅ INA Premakne okno na drugo delovno " "povrÅ¡ino. Izberite\n" " \t\t\t korensko okno, Äe želite spremeniti trenutno delovno " "povrÅ¡ino.\n" " listWorkspaces \t IzpiÅ¡e imena vseh delovnih povrÅ¡in.\n" " setTrayOption IZB_PLADNJA Nastavi nasvet izbir IceWMovega " "pladnja.\n" "\n" "Izrazi:\n" " Izrazi so seznami simbolov neke domene, speti z znakoma `+' ali " "`|':\n" "\n" " IZRAZ ::= SIMBOL | IZRAZ ( `+' | `|' ) SIMBOL\n" "\n" msgid "GNOME window state" msgstr "stanje Gnomovega okna" msgid "GNOME window hint" msgstr "nasvet Gnomovega okna" msgid "GNOME window layer" msgstr "sloj Gnomovega okna" msgid "IceWM tray option" msgstr "izbira IceWM-ovegapladnja" msgid "Usage error: " msgstr "Napaka pri uporabi: " #, c-format msgid "Invalid argument: `%s'." msgstr "Neveljaven argument %s'." msgid "No actions specified." msgstr "Nobeno dejanje ni doloÄeno." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Ne morem odpreti prikaza: %s. X mora teÄi in $DISPLAY mora biti " "nastavljen." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Neveljaven identifikator okna: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "delovna povrÅ¡ina #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "Neznano dejanje: `%s'" #, c-format msgid "Socket error: %d" msgstr "Napaka prikljuÄka :%d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Predvajam vzorec #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Ni takÅ¡ne naprave: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Ne morem se povezati z demonom ESound: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Napaka <%d> med nalaganjem na strežnik: '%s:%s'" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Vzorec <%d> naložen na strežnik kot `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "Predvajam vzorec #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Ne morem se povezati s strežnikom YIFF: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Ne morem preklopiti v zvoÄni naÄin `%s'." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Zaznano stikalo za zvoÄni naÄin, prvotni zvoÄni naÄin `%s' ni veÄ " "aktualen." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Zaznano stikalo za zvoÄni naÄin, samodejna menjava zvoÄnega naÄina " "izklopljena." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Prepisujem prejÅ¡nji zvoÄni naÄin `%s'." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Uporaba: %s [IZBIRE]...\n" "\n" "Predvaja zvoÄne datoteke ob dogodkih IceWMovega grafiÄnega " "uporabniÅ¡kega vmesnika.\n" "\n" "Izbire:\n" "\n" " -d, --display=PRIKAZ Prikaz, ki ga uporablja IceWM " "(privzeto: $DISPLAY).\n" " -s, --sample-dir=IMENIK DoloÄi imenik, ki vsebuje\n" " zvoÄne datoteke (t.j. ~/.icewm/" "sounds).\n" " -i, --interface=TARÄŒA DoloÄi tarÄo zvoÄnega vmesnika " "izhoda,\n" " npr. OSS, YIFF, ESD\n" " -D, --device=NAPRAVA (samo OSS) doloÄi digitalni " "signalni\n" " procesor (privzeto /dev/dsp).\n" " -S, --server=NASLOV:VRATA\t(ESD in YIFF) doloÄi naslov strežnika " "in\n" " Å¡tevilko vrat (privzeto " "localhost:16001 za ESD\n" "\t\t\t\tin localhost:9433 za YIFF).\n" " -m, --audio-mode[=NAÄŒIN] (samo YIFF) doloÄi zvoÄni naÄin " "(pustite\n" " prazno, Äe želite seznam).\n" " --audio-mode-auto \t(samo YIFF) sproti spremeni zvoÄni naÄin " "na\n" " najboljÅ¡e ujemanje zvoÄnega vzorca " "(lahko povzroÄi\n" " težave z ostalimi odjemalci Y, " "prepiÅ¡e\n" " --audio-mode).\n" "\n" " -v, --verbose RazvleÄen izpis (izpiÅ¡e vsak zvoÄni " "dogodek na\n" " stdout).\n" " -V, --version IzpiÅ¡e podatke o razliÄici in " "konÄa.\n" " -h, --help IzpiÅ¡e (to) zaslonsko pomoÄ in " "konÄa.\n" "\n" "Vrnjene vrednosti:\n" "\n" " 0 UspeÅ¡no.\n" " 1 SploÅ¡na napaka.\n" " 2 Napaka v ukazni vrstici.\n" " 3 Napaka podsistema (npr. neuspeÅ¡na povezava s strežnikom).\n" "\n" msgid "Multiple sound interfaces given." msgstr "Podanih je veÄ zvoÄnih vmesnikov." #, c-format msgid "Support for the %s interface not compiled." msgstr "Podpora za vmesnik %s ni prevedena." #, c-format msgid "Unsupported interface: %s." msgstr "Nepodprt vmesnik: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Prejel signal %d: konÄujem..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Prejel signal %d: znova nalagam vzorce..." msgid "Hex View" msgstr "Pogled v Å¡estnajstiÅ¡kem naÄinu" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "RazÅ¡iri uhlje" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Prelom vrstic" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "Uporaba: icewmbg [ -r | -q ]\n" " -r Ponoven zagon icewmbg\n" " -q KonÄaj icewmbg\n" "Naloži ozadje namizja v skladu z datoteko prednastavitev\n" " DesktopBackgroundCenter - Prikaži ozadje namizja usredinjeno, ne " "zloženo\n" " SupportSemitransparency - Podpora polprosojnih terminalov\n" " DesktopBackgroundColor - Barva ozadja namizja\n" " DesktopBackgroundImage - Slika ozadja namizja\n" " DesktopTransparencyColor - Barva oznanitve polprosojnih oken\n" " DesktopTransparencyImage - Slika oznanitve polprosojnih oken\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: neprepoznana izbira `%s'\n" "Za veÄ informacij poskusite z `%s --help'.\n" #, c-format msgid "Loading image %s failed" msgstr "Nalaganje slike %s ni uspelo" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Nalaganje bitne slike \"%s\" ni uspelo: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Uporaba: icewmhint [primer.razreda] izbira argument\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Ni dovolj pomnilnika (dolžina=%d)." msgid "Warning: " msgstr "Opozorilo: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Neznana smer pri zhtevi premika/spremembe velikosti: %d" msgid "Default" msgstr "Privzeto" msgid "(C)" msgstr "(C)" msgid "Theme:" msgstr "Tema:" msgid "Theme Description:" msgstr "Opis teme:" msgid "Theme Author:" msgstr "Avtor teme:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "O IceWM" msgid "Unable to get current font path." msgstr "Ne morem dobiti trenutne poti do pisav." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "NepriÄakovana oblika lastnosti ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "VeÄkraten napotek za gradient \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "Neznano ime gradienta: %s" msgid "_Logout" msgstr "_Odjava" msgid "_Cancel logout" msgstr "Prekli_c odjave" msgid "Lock _Workstation" msgstr "_Zakleni delovno postajo" msgid "Re_boot" msgstr "Ponoven _zagon sistema" msgid "Shut_down" msgstr "Zaustavitev _sistema" msgid "Restart _Icewm" msgstr "Ponoven zagon _IceWM" msgid "Restart _Xterm" msgstr "Ponoven zagon _Xterma" msgid "_Menu" msgstr "_Menu" msgid "_Above Dock" msgstr "Nad sid_rom" msgid "_Dock" msgstr "_Zasidraj" msgid "_OnTop" msgstr "Na _vrh" msgid "_Normal" msgstr "_ObiÄajno" msgid "_Below" msgstr "_Spodaj" msgid "D_esktop" msgstr "_Namizje" msgid "_Restore" msgstr "O_bnovi" msgid "_Move" msgstr "P_restavi" msgid "_Size" msgstr "Velikos_t" msgid "Mi_nimize" msgstr "Poma_njÅ¡aj" msgid "Ma_ximize" msgstr "R_azpni" msgid "_Fullscreen" msgstr "_Celoten zaslon" msgid "_Hide" msgstr "S_krij" msgid "Roll_up" msgstr "Navz_gor" msgid "R_aise" msgstr "_Dvigni" msgid "_Lower" msgstr "_Spusti" msgid "La_yer" msgstr "S_loj" msgid "Move _To" msgstr "Prestavi _v" msgid "Occupy _All" msgstr "Za_sedi vse" msgid "Limit _Workarea" msgstr "_Omeji delovno povrÅ¡ino" msgid "Tray _icon" msgstr "Pladenj z _ikonami" msgid "_Close" msgstr "_Zapri" msgid "_Kill Client" msgstr "_Ubij odjemalca" msgid "_Window list" msgstr "_Seznam oken" msgid "Another window manager already running, exiting..." msgstr "Drug upravljalnik oken že teÄe, konÄujem..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Ne morem ponovno zagnati: %s\n" "Ali je %s v spremenljivki $PATH?" #, fuzzy, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "Uporaba: %s [MOŽNOSTI]\n" "Zažene okenski upravljalnik IceWM.\n" "\n" "Možnosti:\n" " --display=IME IME uporabljenga strežnika X.\n" "%s --sync Sinhronizacija ukazov X11.\n" "\n" " -c, --config=DATOTEKA Naloži prednastavitve iz DATOTEKE.\n" " -t, --theme=DATOTEKA Naloži temo iz DATOTEKE.\n" " -n, --no-configure Ne upoÅ¡tevaj prednastavitvene datoteke.\n" "\n" " -v, --version IzpiÅ¡i podatke o razliÄici in konÄaj.\n" " -h, --help IzpiÅ¡i ta zaslon o uporabi in konÄaj.\n" "%s --restart Ne uporabljajte. To je notranja zastavica.\n" "\n" "Spremenljivke okolja:\n" " ICEWM_PRIVCFG=PATH Imenik za uporabnikove zasebne nastavitvene " "datoteke,\n" " privzeto je \"$HOME/.icewm/\".\n" " DISPLAY=NAME Ime uporabljenega strežnika X, privzeto je " "odvisno od Xlib.\n" " MAIL=URL Lokacija vaÅ¡ega poÅ¡tnega predala. ÄŒe je schema " "izpuÅ¡Äena,\n" " se privzame lokalna schema \"file\".\n" "\n" "SporoÄanje hroÅ¡Äev, zahteve za podporo, komentarji, ... na http://" "www.icewm.org/\n" msgid "Confirm Logout" msgstr "Potrdi odjavo" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Ob odjavi se bodo zaprli vsi aktivni programi.\n" "Naj nadaljujem?" msgid "Bad Look name" msgstr "Slabo ime izgleda" #, fuzzy msgid "Loc_k Workstation" msgstr "_Zakleni delovno postajo" msgid "_Logout..." msgstr "_Odjava..." msgid "_Cancel" msgstr "_PrekliÄi" msgid "_Restart icewm" msgstr "Po_noven zagon IceWM" msgid "_About" msgstr "O pro_gramu" msgid "Maximize" msgstr "Razpni" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "PomanjÅ¡aj" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Skrij" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Spravi navzgor" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Spusti/Znižaj" msgid "Kill Client: " msgstr "Prekini odjemalca: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "OPOZORILO! Vse neshranjene spremebe se bodo ob prekinitvi\n" "tega odjemalca izgubile. Ali želite nadaljevati?" msgid "Restore" msgstr "Obnovi" msgid "Rolldown" msgstr "Spravi navzdol" #, c-format msgid "Error in window option: %s" msgstr "Napaka v okenski izbiri: %s" #, c-format msgid "Unknown window option: %s" msgstr "Neznana okenska izbira: %s" msgid "Syntax error in window options" msgstr "Skladenjska napaka v okenskih izbirah" msgid "Out of memory for window options" msgstr "Ni dovolj pomnilnika za okenske izbire" msgid "Missing command argument" msgstr "Manjkajo ukazni argumenti" #, c-format msgid "Bad argument %d" msgstr "Slab argument %d" #, c-format msgid "Error at prog %s" msgstr "Napaka v programu %s" #, c-format msgid "Unexepected keyword: %s" msgstr "NepriÄakovana kljuÄna beseda: %s" #, c-format msgid "Error at key %s" msgstr "Napaka v kljuÄu %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programi" msgid "_Run..." msgstr "P_oženi..." msgid "_Windows" msgstr "_Okna" msgid "_Help" msgstr "Po_moÄ" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Teme" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Upravljalnik sej: neznana vrstica %s" msgid "Task Bar" msgstr "Opravilna vrstica" msgid "Tile _Vertically" msgstr "Zloži na_vpiÄno" msgid "T_ile Horizontally" msgstr "Zlož_i vodoravno" msgid "Ca_scade" msgstr "_Kaskadno" msgid "_Arrange" msgstr "_Razporedi" msgid "_Minimize All" msgstr "Poma_njÅ¡aj vse" msgid "_Hide All" msgstr "Skri_j vse" msgid "_Undo" msgstr "P_rekliÄi" msgid "Arrange _Icons" msgstr "Razporedi _ikone" msgid "_Refresh" msgstr "Os_veži" msgid "_License" msgstr "_Dovoljenje" msgid "Favorite applications" msgstr "Priljubljeni programi" msgid "Window list menu" msgstr "Menu s seznamom oken" msgid "Show Desktop" msgstr "Prikaži namizje" msgid "All Workspaces" msgstr "Vse delovne povrÅ¡ine" msgid "Del" msgstr "IzbriÅ¡i" msgid "_Terminate Process" msgstr "_Prekini proces" msgid "Kill _Process" msgstr "Ubij _proces" msgid "_Show" msgstr "Pri_kaži" msgid "_Minimize" msgstr "Po_manjÅ¡aj" msgid "Window list" msgstr "Seznam oken" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Delovna povrÅ¡ina %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "SporoÄilna zanka: izbira ni uspela (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Neprepoznana izbira: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Neprepoznan argument: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Obvezen argument ob izbiri %s" #, c-format msgid "Unknown key name %s in %s" msgstr "Nezano kljuÄno ime %s v %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Slab argument: %s za %s" #, c-format msgid "Bad option: %s" msgstr "Slaba izbira: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Nalaganje slike \"%s\" ni uspelo" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Neveljavna slika kurzorja: \"%s\" vsebuje preveÄ edinstvenih barv" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "HroÅ¡Ä? Imlib je lahko prebral \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "HroÅ¡Ä? PopaÄeno zaglavje XPM, vendar je Imlib lahko razÄlenil \"%s\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "HroÅ¡Ä? NepriÄakovan konec datoteke XPM, vendar je Imlib lahko " "razÄlenil \"%s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "HroÅ¡Ä? NepriÄakovan znak, vendar je Imlib lahko razÄlenil \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "Nisem mogel naložiti pisave \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Nalaganje nadomestne pisave \"%s\" ni uspelo." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Ne morem naložiti nabora pisav \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "ManjkajoÄi nabori znakov za nabor pisav \"%s\":" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Ni dovolj pomnilnika za bitno sliko \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Nalaganje slike \"%s\" ni uspelo" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: zajemanje bitne slike X ni uspelo" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: prerisovanje Imlibove slike v bitno sliko X ni uspelo" msgid "Cu_t" msgstr "I_zreži" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "Pr_epiÅ¡i" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_Prilepi" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Prilepi _izbiro" msgid "Select _All" msgstr "Izberi _vse" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Knjižnica C ne podpira tega jezikovnega okolja. VkljuÄujem okolje " "'C'." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "DoloÄitev nabora znakov za trenutni locale ni uspela. " "Predpostavljam, da je ISO-8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv pretvornikom %2$s ne ponuja (zadostnega) %1$s." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Neveljaven veÄzložni niz \"%s\": %s" msgid "OK" msgstr "V redu" msgid "Cancel" msgstr "PrekliÄi" #, c-format msgid "Out of memory for pixel map %s" msgstr "Zmanjkalo je pomnilnika za zemljevid toÄk %s" #, c-format msgid "Could not find pixel map %s" msgstr "Ne najdem zemljevida toÄk %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Zmanjkalo je pomnilnika za medpomnilnik toÄk RGB: %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Ne najdem medpomnilnika za toÄk RGB: %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Uporabljam nadomestni mehanizem za pretvorbo toÄk (globina: %d; " "maske (rdeÄe/zeleno/modro): %0*x/%0*x/%0*x" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s%d: %d-bitne slike (Å¡e) niso podprte" msgid "$USER or $LOGNAME not set?" msgstr "Spremenljivka $USER ali $LOGNAME ni nastavljena?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" ne opisuje obiÄajne internetne sheme" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" ne vsebuje opisa sheme" #~ msgid " processes." #~ msgstr " procesov" #~ msgid "program label expected" #~ msgstr "PriÄakovana oznaka programa" #~ msgid "icon name expected" #~ msgstr "priÄakovano ime ikone" #~ msgid "window management class expected" #~ msgstr "priÄakovan razred okenskega upravljalnika" #~ msgid "menu caption expected" #~ msgstr "priÄakovana oznaka menija" #~ msgid "opening curly expected" #~ msgstr "priÄakovano uvodno kodranje" #~ msgid "action name expected" #~ msgstr "priÄakovano ime dejanja" #~ msgid "unknown action" #~ msgstr "Neznano dejanje" #~ msgid "Failed to open %s: %s" #~ msgstr "NeuspeÅ¡no odpiranje %s: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "NeuspeÅ¡na izvedba %s: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "NeuspeÅ¡na izdelava procesa potomca: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Ni regularna datoteka: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "PriÄakovan je par Å¡estnajstiÅ¡kih Å¡tevk" #~ msgid "Unexpected identifier" #~ msgstr "NepriÄakovan identifikator" #~ msgid "Identifier expected" #~ msgstr "PriÄakovan je identifikator" #~ msgid "Separator expected" #~ msgstr "PriÄakovano je loÄilo" #~ msgid "Invalid token" #~ msgstr "Neveljaven žeton" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Ni Å¡estnajstiÅ¡ko Å¡tevilo: %c%c (v \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - neznan zapis (%d)" #~ msgid "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgstr "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgid "bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgstr "stolpci:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "CPE: %d %d %d %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat najde preveÄ procesorjev: moralo bi jih biti %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree ni uspel za okno 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Prevedeno z zastavico DEBUG. Izpisovala se bodo " #~ "razhroÅ¡Äevalna sporoÄila." #~ msgid "_No icon" #~ msgstr "_Brez ikon" #~ msgid "_Minimized" #~ msgstr "Po_manjÅ¡ano" #~ msgid "_Exclusive" #~ msgstr "Izk_ljuÄevalno" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "Napaka X %s(0x%lX): %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "Sistemski klic fork ni uspel (errno=%d)" #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "Izdelava anonimne cevi ni uspela (errno=%d)." #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Neveljavna slika kurzorja: \"%s\" vsebuje preveÄ edinstvenih " #~ "barv" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "NeuspeÅ¡na izdelava anonimne cevi: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "NeuspeÅ¡na podvojitev datoteÄnega opisnika: %s" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Prepisovanje risljivega 0x%x v toÄkovni medpomnilnik " #~ "ni uspelo" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: Prepisovanje risljivega 0x%x v toÄkovni medpomnilnik " #~ "ni uspelo (%d:%d-%dx%d" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "PREVEÄŒ POVEZAV ICE -- ni podprto" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Upravljalnik sej: IceAddConnectionWatch ni uspel." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Upravljalnik sej: napaka Inita: %s" #~ msgid "M" #~ msgstr "M" #~ msgid "# preferences(%s) - generated by genpref\n" #~ "\n" #~ msgstr "# preference (%s) - narejene od genpref\n" #~ "\n" #~ msgid "# NOTE: All settings are commented out by default, be sure " #~ "to\n" #~ "# uncomment them if you change them!\n" #~ "\n" #~ msgstr "# OPOMBA: vse nastavitve so privzeto zakomentirane, Äe jih\n" #~ " # spremenite, jih odkomentirajte!\n" #~ "\n" #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "Uporaba: icewmbg [IZBIRA]... slika1 [slika2]...\n" #~ "S stikalom delovne povrÅ¡ine spremeni ozadje namizja.\n" #~ "Privzeto se uporabi prva bitna slika.\n" #~ "\n" #~ "-s, --semitransparency OmogoÄi podporo za polprosojne terminale\n" #~ msgid "Window %p has no XA_ICEWM_PID property. Export the " #~ "LD_PRELOAD variable to preload the preice library." #~ msgstr "Okno %p nima lastnosti XA_ICEWM_PID. Nastavite spremenljivko " #~ "LD_PRELOAD, prednaložila knjižnico preice." #~ msgid "Obsolete option: %s" #~ msgstr "Zastarela izbira: %s" #~ msgid "Gnome" #~ msgstr "Gnome" #~ msgid "Gnome User Apps" #~ msgstr "UporabniÅ¡ki programi Gnoma" #~ msgid "KDE" #~ msgstr "KDE" #~ msgid "Resource allocation for rotated string \"%s\" (%dx%d px) " #~ "failed" #~ msgstr "Dodelitev sredstev za rotirajoÄi niz \"%s\" (%dx%d px) ni " #~ "uspela" icewm-1.3.7/po/bg.po0000664000076600007660000012033511463274241013202 0ustar develdevel# Bulgarian messages for IceWM # Copyright (C) 2003 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the IceWM package. # Pavel Pyuter 2003. # # msgid "" msgstr "Project-Id-Version: IceWM 1.2.10\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2003-08-13 16:16+0200\n" "Last-Translator: Pavel Pyuter \n" "Language-Team: Bulgarian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Захранване" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "З" #, c-format msgid " - Charging" msgstr " - Зареждане" msgid "C" msgstr "" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "CPU Ðатоварване: %3.2f %3.2f %3.2f, %d процеÑа" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Heправилен протокол на пощенÑка кутиÑ: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Ðеправилен път до пощенÑка кутиÑ: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Използва пощенÑка ÐºÑƒÑ‚Ð¸Ñ \"%s\"\n" msgid "Error checking mailbox." msgstr "Грешка при проверка на пощенÑка кутиÑ." #, c-format msgid "%ld mail message." msgstr "%ld Ñъобщение" #, c-format msgid "%ld mail messages." msgstr "%ld ÑъобщениÑ" #, fuzzy, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %s:\n" " Текуща ÑкороÑÑ‚ (вход/изход):\t%lli %s/%lli %s\n" " Текуща Ñредна ÑкороÑÑ‚ (вход/изход):\t%lli %s/%lli %s\n" " Средна ÑкороÑÑ‚ (вход/изход):\t%lli %s/%lli %s\n" " Прехвърлени (вход/изход):\t%lli %s/%lli %s\n" " Време:\t%d:%02d:%02d%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Телефонен номер:\t" msgid "Workspace: " msgstr "Работно поле: " msgid "Back" msgstr "Ðазад" msgid "Alt+Left" msgstr "Alt+ÐалÑво" msgid "Forward" msgstr "Ðапред" msgid "Alt+Right" msgstr "Alt+ÐадÑÑно" msgid "Previous" msgstr "Предишен" msgid "Next" msgstr "Следващ" msgid "Contents" msgstr "Съдържание" msgid "Index" msgstr "ИндекÑ" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Затвори" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Употреба: %s FILENAME\n" "\n" "ОпроÑтен HTML браузър показваш документ Ñ Ð¸Ð¼Ðµ FILENAME.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Ðеправилен път: %s\n" msgid "Invalid path: " msgstr "Ðеправилен път: " msgid "List View" msgstr "Показва ÑпиÑък" msgid "Icon View" msgstr "Показва икони" msgid "Open" msgstr "ОтварÑ" msgid "Undo" msgstr "Отмени" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Ðов" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "РеÑтартиране" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Игра IceSame" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "ДейÑтвие `%s' изиÑква минимум %d аргумента" #, c-format msgid "Invalid expression: `%s'" msgstr "Ðеправилен израз: `%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Именувани Ñимволи в облаÑтта `%s' (чиÑлов диапазон: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Ðеправилно име на работно поле: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "Работно поле извън обхват: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Употреба: %s [OPTIONS] ACTIONS\n" "\n" "Опции:\n" " -display DISPLAY\t\tСвързва ce c X Ñървър указан от DISPLAY.\n" "\t\t\t\tПодразбиране: $DISPLAY или :0.0 когато не е уÑтановен.\n" " -window WINDOW_ID\t\tМанипулира указаниÑÑ‚ прозорец. Специални\n" "\t\t\t\tидентификатори Ñа `root' за ÐºÐ¾Ñ€ÐµÐ½Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ† и\n" "\t\t\t `focus' за Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ† на фокуÑ.\n" " -class WM_CLASS УправлÑващ ÐºÐ»Ð°Ñ Ð½Ð° прозореца(ите) за " "манипулациÑ.\n" " \t \t \t Ðко WM_CLASS Ñъдържа интервал, Ñамо прозорци " "Ñ Ñ‚Ð¾Ñ‡Ð½Ð¾ Ñъщото\n" " \t \t WM_CLASS притежание Ñе избират. Ðко нÑма " "интервал,\n" "\t\t\t Ñе избират прозорци от ÑÑŠÑ‰Ð¸Ñ ÐºÐ»Ð°Ñ Ð¸ прозорци от\n" "\t\t\t ÑÑŠÑ‰Ð¸Ñ `-name'.\n" "\n" "ДейÑтвиÑ:\n" " setIconTitle ЗÐГЛÐВИЕ ÐžÐ¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ на икона.\n" " setWindowTitle ЗÐГЛÐВИЕ\tÐžÐ¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ на прозорец.\n" " setGeometry геометриÑ\tÐžÐ¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð³ÐµÐ¾Ð¼ÐµÑ‚Ñ€Ð¸Ñта на прозореца.\n" " setState MASK STATE ÐžÐ¿Ñ€ÐµÐ´ÐµÐ»Ñ ÑÑŠÑтоÑнието на прозореца в " "GNOME на STATE.\n" " \t\t\t Само битовете избрани от MASK Ñа заÑегнати.\n" "\t\t\t\tSTATE и MASK Ñа изрази от облаÑтта\n" "\t\t\t\t`GNOME window state'.\n" " toggleState STATE ПоÑÑ‚Ð°Ð²Ñ GNOME ÑÑŠÑтоÑние на прозореца " "битове определени от\n" "\t\t\t\tизраза STATE.\n" " setHints HINTS ÐžÐ¿Ñ€ÐµÐ´ÐµÐ»Ñ GNOME window hints(бележки) " "на HINTS.\n" " setLayer LAYER МеÑти прозореца до друг GNOME window " "layer.\n" " setWorkspace WORKSPACE МеÑти прозореца до друго работно " "поле. Избери\n" " \t\t\t коренниÑÑ‚ прозорец за ÑмÑна на текущото работно поле.\n" " listWorkspaces \t СпиÑък на имената на вÑички работни " "полета.\n" " setTrayOption TRAYOPTION ÐžÐ¿Ñ€ÐµÐ´ÐµÐ»Ñ IceWM tray option hint.\n" "\n" "Изрази:\n" " Изразите Ñа ÑпиÑъци от Ñимволи от една облаÑÑ‚ Ñвързани Ñ `+' или " "`|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgid "GNOME window state" msgstr "GNOME ÑÑŠÑтоÑние на прозорец" msgid "GNOME window hint" msgstr "GNOME подÑказка на прозорец" msgid "GNOME window layer" msgstr "GNOME Ñлой на прозорец" msgid "IceWM tray option" msgstr "ÐžÐ¿Ñ†Ð¸Ñ Ð½Ð° IceWM панела за задачи" msgid "Usage error: " msgstr "Грешка при употреба: " #, c-format msgid "Invalid argument: `%s'." msgstr "Ðеправилен аргумент: `%s'." msgid "No actions specified." msgstr "ÐÑма указани дейÑтвиÑ." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Ðе мога да Ð¾Ñ‚Ð²Ð¾Ñ€Ñ display: %s. X трÑбва да е Ñтартиран и $DISPLAY " "уÑтановена" #, c-format msgid "Invalid window identifier: `%s'" msgstr "Ðеправилен идентификатор на прозорец: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "работно поле #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "ÐеизвеÑтно дейÑтвие: `%s'" #, c-format msgid "Socket error: %d" msgstr "Грешка в socket: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "ПроÑвирване на образец #%d (%s)" #, c-format msgid "No such device: %s" msgstr "ÐÑма такова уÑтройÑтво: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Ðемога да Ñе Ñвържа Ñ ESound daemon: %s" msgid "" msgstr "<нищо>" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Грешка <%d> при зареждане на `%s:%s'" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Образец <%d> зареден като `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "ПроÑвирване на образец #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Ðе мога да Ñе Ñвържа Ñ YIFF Ñървър: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Ðе мога да ÑÐ¼ÐµÐ½Ñ Ð´Ð¾ аудио режим `%s'." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Открита промÑна на аудио режим, първоначален аудио режим `%s' не е " "ефективен" msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Открита промÑна на аудио режим, изключена автоматичната ÑмÑна на " "аудио режим" #, c-format msgid "Overriding previous audio mode `%s'." msgstr "ОтменÑм Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð¸Ñ Ð°ÑƒÐ´Ð¸Ð¾ режим `%s'." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Употреба: %s [OPTION]...\n" "\n" "Възпроизвежда аудио файлове при GUI ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ð¿Ð¾Ñ€Ð¾Ð´ÐµÐ½Ð¸ от IceWM.\n" "\n" "Опции:\n" "\n" " -d, --display=DISPLAY ДиÑплей използван от IceWM " "(подразбиране: $DISPLAY).\n" " -s, --sample-dir=DIR ÐžÐ¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ ÐºÐ¾Ñто Ñъдържа\n" "\t\t\t\t звуковите файлове (пр. ~/.icewm/sounds).\n" " -i, --interface=TARGET ÐžÐ¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð² интерфейÑ\n" "\t\t\t\t един от OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS Ñамо) Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ digital signal\n" "\t\t\t\t processor (подразбиране /dev/dsp).\n" " -S, --server=ADDR:PORT\t(ESD и YIFF) Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð°Ð´Ñ€ÐµÑ Ð½Ð° Ñървър и\n" "\t\t\t\t номер на порт (подразбиране localhost:16001 за ESD\n" "\t\t\t\t и localhost:9433 за YIFF).\n" " -m, --audio-mode[=MODE] (YIFF Ñамо) Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð°ÑƒÐ´Ð¸Ð¾ режим " "(оÑтави\n" "\t\t\t\t празно за получаване на ÑпиÑък).\n" " --audio-mode-auto \t(YIFF Ñамо) ÑÐ¼ÐµÐ½Ñ Ð°ÑƒÐ´Ð¸Ð¾ режим в " "движение, за\n" "\t\t\t\t да подхожда на образеца (може да причини проблеми\n" "\t\t\t\t Ñ Ð´Ñ€ÑƒÐ³Ð¸ Y клиенти, Ð¾Ñ‚Ð¼ÐµÐ½Ñ --audio-mode).\n" "\n" " -v, --verbose Подробен (отпечатва вÑÑко звуково " "Ñъбитие на\n" "\t\t\t\t stdout).\n" " -V, --version Отпечатва Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° верÑиÑта и " "излиза.\n" " -h, --help Отпечатва (този) помощен екран и " "излиза.\n" "\n" "Върнати ÑтойноÑти:\n" "\n" " 0 УÑпех.\n" " 1 ОÑновна грешка.\n" " 2 Грешка от команден ред.\n" " 3 Грешка на подÑиÑтемите (пр. немога да Ñе Ñвържа ÑÑŠÑ " "Ñървър).\n" "\n" msgid "Multiple sound interfaces given." msgstr "Зададени множеÑтво звукови интерфейÑи." #, c-format msgid "Support for the %s interface not compiled." msgstr "Поддръжка за %s интерфейÑа не е компилирана" #, c-format msgid "Unsupported interface: %s." msgstr "Ðеподдържан интерфейÑ: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Получен Ñигнал %d: ПрекратÑване..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Получен Ñигнал %d: Презареждане образци..." msgid "Hex View" msgstr "ШеÑтнадеÑетичен изглед" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "РазширÑва табулациите" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Свиване на редовете" msgid "Ctrl+W" msgstr "Ctrl+W" #, fuzzy msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "Употреба: icewmbg\n" "Зарежда деÑктоп фон Ñпоред preferences файл\n" " DesktopBackgroundCenter - Показва фон в центъра\n" " SupportSemitransparency - Поддръжка за полу-прозрачни терминали\n" " DesktopBackgroundColor - ЦвÑÑ‚ на фон\n" " DesktopBackgroundImage - Изображение за фон\n" " DesktopTransparencyColor - ЦвÑÑ‚ за полу-прозрачни прозорци\n" " DesktopTransparencyImage - Изображение за полу-прозрачни прозорци\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: неразпозната Ð¾Ð¿Ñ†Ð¸Ñ `%s'\n" "Опитай `%s --help' за повече информациÑ.\n" #, c-format msgid "Loading image %s failed" msgstr "Зареждане на изображение %s пропадна" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Зареждане на изображение \"%s\" пропадна: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Употреба: icewmhint [class.instance] option arg\n" #, c-format msgid "Out of memory (len=%d)." msgstr "ÐедоÑтатъчна памет (len=%d)." msgid "Warning: " msgstr "Предупреждение: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "ÐеизвеÑтна поÑока при move/resize заÑвка: %d" #, fuzzy msgid "Default" msgstr "Изтрива" msgid "(C)" msgstr "(C)" msgid "Theme:" msgstr "Тема:" msgid "Theme Description:" msgstr "ОпиÑание на тема:" msgid "Theme Author:" msgstr "Ðвтор на тема:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "За IceWM" msgid "Unable to get current font path." msgstr "Ðе мога да получа Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¿ÑŠÑ‚ към шрифтовете." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Ðеочакван формат на ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "МножеÑтво връзки за градиент \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "ÐеизвеÑтно име на градиент: %s" msgid "_Logout" msgstr "_Изход" msgid "_Cancel logout" msgstr "_Отмени изход" msgid "Lock _Workstation" msgstr "Заключи _Работната ÑтанциÑ" msgid "Re_boot" msgstr "Ре_Ñтартира ÑиÑтемата" msgid "Shut_down" msgstr "И_зключва ÑиÑтемата" msgid "Restart _Icewm" msgstr "РеÑтартира _IceWM" msgid "Restart _Xterm" msgstr "РеÑтартира _Xterm" msgid "_Menu" msgstr "_Меню" msgid "_Above Dock" msgstr "_Above Dock " msgid "_Dock" msgstr "_Dock" msgid "_OnTop" msgstr "_Върху" msgid "_Normal" msgstr "_Ðормално" msgid "_Below" msgstr "_Под" msgid "D_esktop" msgstr "Д_еÑктоп" msgid "_Restore" msgstr "_ВъзÑтановÑва" msgid "_Move" msgstr "_ПремеÑтва" msgid "_Size" msgstr "_Размер" msgid "Mi_nimize" msgstr "Ми_нимизира" msgid "Ma_ximize" msgstr "Ма_кÑимизира" msgid "_Fullscreen" msgstr "_ЦÑл екран" msgid "_Hide" msgstr "_Скрива" msgid "Roll_up" msgstr "Св_ива" msgid "R_aise" msgstr "Пов_дига" msgid "_Lower" msgstr "Сни_жава" msgid "La_yer" msgstr "С_лой" msgid "Move _To" msgstr "МеÑти _До" msgid "Occupy _All" msgstr "Заема _Ð’Ñички" msgid "Limit _Workarea" msgstr "Ограничава _Работно поле" msgid "Tray _icon" msgstr "Tray _Икона" msgid "_Close" msgstr "_ЗатварÑ" msgid "_Kill Client" msgstr "_Убии клиент" msgid "_Window list" msgstr "_СпиÑък прозорци" msgid "Another window manager already running, exiting..." msgstr "Друг window manager вече в дейÑтвие, излизам..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Ðемога да реÑтартирам: %s\n" "$PATH води ли до %s?" #, fuzzy, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "Употреба: %s [ОПЦИИ]\n" "Стартира IceWM window manager.\n" "\n" "Опции:\n" " --display=ИМЕ ИМЕ на X Ñървъра който да използва.\n" "%s --sync Синхронизира X команди.\n" "\n" " -c, --config=ФÐЙЛ Зарежда наÑтройки от ФÐЙЛ.\n" " -t, --theme=ФÐЙЛ Зарежда тема от ФÐЙЛ.\n" " -n, --no-configure Игнорира ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð».\n" "\n" " -v, --version Отпечатва Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° верÑиÑта и излиза.\n" " -h, --help Отпечатва този помощен екран и излиза.\n" "%s --restart Ðе използвай: Това е вътрешен флаг.\n" "\n" "Променливи на обкръжението:\n" " ICEWM_PRIVCFG=PATH Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° чаÑтни конфигурационни файлове,\n" " \"$HOME/.icewm/\" по подразбиране.\n" " DISPLAY=ИМЕ ИМЕ на X Ñървъра който да използва, завиÑи от " "Xlib по подразбиране.\n" " MAIL=URL МеÑтоположение на вашата пощенÑка кутиÑ. Ðко " "Ñе игнорира\n" " локалната \"file\" Ñхема Ñе приема.\n" "\n" "ПоÑетете http://www.icewm.org/ за ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° грешки,Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ " "коментари...\n" msgid "Confirm Logout" msgstr "Потвърди Изход" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Ð’Ñички активни Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ‰Ðµ бъдат затворени при Изход.\n" "Продължаване?" msgid "Bad Look name" msgstr "Bad Look name" #, fuzzy msgid "Loc_k Workstation" msgstr "Заключи _Работната ÑтанциÑ" msgid "_Logout..." msgstr "_Изход..." msgid "_Cancel" msgstr "_Отмени" msgid "_Restart icewm" msgstr "_РеÑтартира IceWM" msgid "_About" msgstr "_За" msgid "Maximize" msgstr "МакÑимизира" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Минимизира" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Скрива" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Свива" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Повдига/Снижава" msgid "Kill Client: " msgstr "Убий Клиент: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "Ð’ÐИМÐÐИЕ! Ð’Ñички незапазени промени ще бъдат изгубеникогато този " "клиент бъде убит. ИÑкате ли да продължите?" msgid "Restore" msgstr "ВъзÑтановÑва" msgid "Rolldown" msgstr "Развива" #, c-format msgid "Error in window option: %s" msgstr "Грешка в Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° прозореца: %s" #, c-format msgid "Unknown window option: %s" msgstr "Ðепозната Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° прозореца: %s" msgid "Syntax error in window options" msgstr "Синтактична грешка в опциите на прозореца" msgid "Out of memory for window options" msgstr "ÐÑма памет за опции на прозореца" msgid "Missing command argument" msgstr "ЛипÑва аргумент на команда" #, c-format msgid "Bad argument %d" msgstr "Ðеправилен аргумент %d" #, c-format msgid "Error at prog %s" msgstr "Грешка в програма %s" #, c-format msgid "Unexepected keyword: %s" msgstr "Ðеочаквана ключова дума: %s" #, c-format msgid "Error at key %s" msgstr "Грешка при ключ %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Програми" msgid "_Run..." msgstr "_Стартира..." msgid "_Windows" msgstr "_Прозорци" msgid "_Help" msgstr "П_омощ" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Теми" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "СеÑиен мениджър: Ðепознат ред %s" msgid "Task Bar" msgstr "Лента за задачи" msgid "Tile _Vertically" msgstr "_Вертикална мозайка" msgid "T_ile Horizontally" msgstr "_Хоризонтална мозайка" msgid "Ca_scade" msgstr "_Колода" msgid "_Arrange" msgstr "_Подрежда" msgid "_Minimize All" msgstr "_Минимизира Ð’Ñички" msgid "_Hide All" msgstr "_Скрива Ð’Ñички" msgid "_Undo" msgstr "_ОтменÑ" msgid "Arrange _Icons" msgstr "Подрежда _Икони" msgid "_Refresh" msgstr "Опре_ÑнÑва" msgid "_License" msgstr "_Лиценз" msgid "Favorite applications" msgstr "Любими приложениÑ" msgid "Window list menu" msgstr "Меню СпиÑък на прозорци" #, fuzzy msgid "Show Desktop" msgstr "Д_еÑктоп" msgid "All Workspaces" msgstr "Ð’Ñички Работни полета" msgid "Del" msgstr "Изтрива" msgid "_Terminate Process" msgstr "_Прекрати ПроцеÑ" msgid "Kill _Process" msgstr "Убии П_роцеÑ" msgid "_Show" msgstr "П_окажи" msgid "_Minimize" msgstr "_Минимизира" msgid "Window list" msgstr "СпиÑък на прозорци" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Работно поле %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Message Loop: select failed (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Ðеразпозната опциÑ: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Ðеразпознат аргумент: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Ðужен е аргумент за %s switch" #, c-format msgid "Unknown key name %s in %s" msgstr "Ðепознато име на бутон %s в %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Ðеправилен аргумент: %s за %s" #, c-format msgid "Bad option: %s" msgstr "Ðеправилна опциÑ: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Зареждане на pixmap \"%s\" Ñе провали" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Ðевалиден cursor pixmap: \"%s\" Ñъдържа твърде много различни цветове" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "ГРЕШКÐ? Imlib прочете \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "ГРЕШКÐ? Malformed XPM header but Imlib was able to parse \"%s\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "ГРЕШКÐ? Unexpected end of XPM file but Imlib was able to parse \"%s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "ГРЕШКÐ? Unexpected characted but Imlib was able to parse \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "Ðе мога да Ð·Ð°Ñ€ÐµÐ´Ñ ÑˆÑ€Ð¸Ñ„Ñ‚ \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Зареждането на Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¸Ñ ÑˆÑ€Ð¸Ñ„Ñ‚ \"%s\" Ñе провали." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Could not load fontset \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "Missing codesets for fontset \"%s\":" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "ÐедоÑтатъчна памет за изображение \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Зареждане на изображение \"%s\" пропадна" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: Придобиване на X pixmap пропадна" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Imlib изображение to X pixmap mapping failed" msgid "Cu_t" msgstr "Cu_t" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Copy" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_Paste" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Paste _Selection" msgid "Select _All" msgstr "Select _All" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Locale not supported by C library. Falling back to 'C' locale'." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv doesn't supply (sufficient) %s to %s converters." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Invalid multibyte string \"%s\": %s" msgid "OK" msgstr "ОК" msgid "Cancel" msgstr "ОтменÑ" #, c-format msgid "Out of memory for pixel map %s" msgstr "Out of memory for pixel map %s" #, c-format msgid "Could not find pixel map %s" msgstr "Could not find pixel map %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Out of memory for RGB pixel buffer %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Could not find RGB pixel buffer %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "" msgid "$USER or $LOGNAME not set?" msgstr "" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "" #, c-format msgid "\"%s\" contains no scheme description" msgstr "" #~ msgid "program label expected" #~ msgstr "program label expected" #~ msgid "icon name expected" #~ msgstr "icon name expected" #~ msgid "window management class expected" #~ msgstr "window management class expected" #~ msgid "menu caption expected" #~ msgstr "menu caption expected" #~ msgid "opening curly expected" #~ msgstr "opening curly expected" #~ msgid "action name expected" #~ msgstr "action name expected" #~ msgid "unknown action" #~ msgstr "Ðепознато дейÑтвие" #~ msgid "Failed to open %s: %s" #~ msgstr "Ðе мога да Ð¾Ñ‚Ð²Ð¾Ñ€Ñ %s: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Ðе мога да Ð¸Ð·Ð¿ÑŠÐ»Ð½Ñ %s: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Failed to create child process: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Ðе е нормален файл: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Двойка шеÑтнадеÑетични цифри Ñе очаква" #~ msgid "Unexpected identifier" #~ msgstr "Ðеочакван идентификатор" #~ msgid "Identifier expected" #~ msgstr "Очаква Ñе идентификатор" #~ msgid "Separator expected" #~ msgstr "Очаква Ñе разделител" #~ msgid "Invalid token" #~ msgstr "Ðеправилен Ñимвол" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - неизвеÑтен формат (%d)" #~ msgid "cpu: %d %d %d %d" #~ msgstr "CPU: %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat намира твърде много процеÑори: трÑбва да Ñа %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree не уÑÐ¿Ñ Ð·Ð° прозорец 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Компилиран Ñ DEBUG флаг. Дебъг ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ‰Ðµ бъдат отпечатани." #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "Употреба: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Ð¡Ð¼ÐµÐ½Ñ Ð´ÐµÑктоп фона при превключване на на работното поле.\n" #~ "Първото изображение Ñе използва по подразбиране.\n" #~ "\n" #~ "-s, --semitransparency Включва поддръжка за полу-прозрачни " #~ "терминали\n" #~ msgid "_No icon" #~ msgstr "_Без икона" #~ msgid "_Minimized" #~ msgstr "_Минимизиран" #~ msgid "_Exclusive" #~ msgstr "_Специален" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X грешка %s(0x%lX): %s" #~ msgid "Window %p has no XA_ICEWM_PID property. Export the " #~ "LD_PRELOAD variable to preload the preice library." #~ msgstr "Прозорец %p нÑма XA_ICEWM_PID ÑвойÑтво. ЕкÑпортирайте " #~ "LD_PRELOAD променливата за презареждане" #~ msgid "Forking failed (errno=%d)" #~ msgstr "Разклонението Ñе провали (errno=%d)" #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "Failed to create anonymous pipe (errno=%d)." #~ msgid "Obsolete option: %s" #~ msgstr "ОÑтарÑла опциÑ: %s" #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Ðевалиден cursor pixmap: \"%s\" Ñъдържа твърде много " #~ "различни цветове" #~ msgid "Resource allocation for rotated string \"%s\" (%dx%d px) " #~ "failed" #~ msgstr "Resource allocation for rotated string \"%s\" (%dx%d px) " #~ "failed" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Failed to create anonymous pipe: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Failed to duplicate file descriptor: %s" icewm-1.3.7/po/ru.po0000664000076600007660000010524111463274241013237 0ustar develdevel# Russian messages for IceWM. # Copyright (C) 2000 Free Software Foundation, Inc. # Unofficial translation by Alone # based on translation by Anton Farygin , 2000. # at 2000-06-16 16:36+0300 # Sergey V. Beduev 2003 # updated for IceWM 1.2.9 by Anton B. Farygin 2003 # # Russian messages for IceWM. # Copyright (C) 2000 Free Software Foundation, Inc. # Anton Farygin , 2000. # msgid "" msgstr "Project-Id-Version: IceWM 1.2.9\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2003-07-11 20:20+0300\n" "Last-Translator: Anton Farygin \n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Питание" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "П" #, c-format msgid " - Charging" msgstr " - ЗарÑд" msgid "C" msgstr "" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "Загрузка процеÑÑора: %3.2f %3.2f %3.2f, %d процеÑÑов." #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Ðеправильный протокол Ð´Ð»Ñ Ð¿Ð¾Ñ‡Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ Ñщика: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Ðеправильный путь к почтовому Ñщику: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "ИÑпользуетÑÑ Ð¿Ð¾Ñ‡Ñ‚Ð¾Ð²Ñ‹Ð¹ Ñщик: \"%s\"\n" msgid "Error checking mailbox." msgstr "Ошибка проверки почтового Ñщика." #, c-format msgid "%ld mail message." msgstr "%ld почтовое Ñообщение." #, c-format msgid "%ld mail messages." msgstr "%ld почтовых Ñообщений." #, fuzzy, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %s:\n" " Ð¢ÐµÐºÑƒÑ‰Ð°Ñ ÑкороÑть (ввод/вывод):\t%lli %s/%lli %s\n" " СреднÑÑ ÑкороÑть (ввод/вывод):\t%lli %s/%lli %s\n" " ПереÑлано данных (ввод/вывод):\t%lli %s/%lli %s\n" " Ð’Ñ€ÐµÐ¼Ñ Ð½Ð° линии:\t%d:%02d:%02d%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Телефонный номер:\t" msgid "Workspace: " msgstr "Рабочее меÑто: " msgid "Back" msgstr "Ðазад" msgid "Alt+Left" msgstr "Alt+Влево" msgid "Forward" msgstr "Вперед" msgid "Alt+Right" msgstr "Alt+Вправо" msgid "Previous" msgstr "Предыдущий" msgid "Next" msgstr "Следующий" msgid "Contents" msgstr "Содержимое" msgid "Index" msgstr "Содержание" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Закрыть" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "ИÑпользование: %s FILENAME\n" "\n" "Очень проÑтой проÑмотрщик HTML показывающий документ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ " "FILENAME.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Ðеправильный путь: %s\n" msgid "Invalid path: " msgstr "Ðеправильный путь: " msgid "List View" msgstr "Показать ÑпиÑок" msgid "Icon View" msgstr "Показать иконки" msgid "Open" msgstr "Открыть" msgid "Undo" msgstr "Отмена" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Ðовый" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "ПерезапуÑк" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Игра IceSame" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "ДейÑтвие `%s' требует как минимум %d аргумента(ов)." #, c-format msgid "Invalid expression: `%s'" msgstr "Ðеправильное выражение: `%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Поименованные Ñимволы в домене `%s' (чиÑловой диапазон: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Ðеверное Ð¸Ð¼Ñ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ³Ð¾ меÑта: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "Рабочее меÑто за пределами диапазона: %d" #, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "" msgid "GNOME window state" msgstr "СоÑтоÑние окна GNOME" msgid "GNOME window hint" msgstr "ПодÑказка окна GNOME" msgid "GNOME window layer" msgstr "Уровень окна GNOME" msgid "IceWM tray option" msgstr "ÐžÐ¿Ñ†Ð¸Ñ Ð¿Ð°Ð½ÐµÐ»Ð¸ задач IceWM" msgid "Usage error: " msgstr "Ошибка иÑпользованиÑ:" #, c-format msgid "Invalid argument: `%s'." msgstr "Ðеправильный аргумент: `%s'." msgid "No actions specified." msgstr "Ðе указано никаких дейÑтвий." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Ðе могу открыть Display %s. X-Ñервер должен быть загружен и \n" "Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $DISPLAY уÑтановлена." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Ðеверный идентификатор окна: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "рабочее меÑто #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "ÐеизвеÑтное дейÑтвие: `%s'" #, c-format msgid "Socket error: %d" msgstr "Ошибка socket-а: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Играет звук #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Ðет такого уÑтройÑтва: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Ошибка ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ESound daemon: %s" msgid "" msgstr "<пуÑто>" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Ошибка <%d> при поÑылке `%s:%s'" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Звук <%d> загружен как `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "Играет звук #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Ошибка ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ñервером YIFF: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Ошибка перехода в аудиорежим `%s'." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Обнаружена Ñмена аудиорежима, начальный режим `%s' больше не " "иÑпользуетÑÑ." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Обнаружена Ñмена аудиорежима, автоматичеcÐºÐ°Ñ Ñмена режима выключена." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Переопределение предидущего аудиорежима `%s'." #, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "" msgid "Multiple sound interfaces given." msgstr "Даны неÑколько звуковых интерфейÑов." #, c-format msgid "Support for the %s interface not compiled." msgstr "Поддержка интерфейÑа %s не включена." #, c-format msgid "Unsupported interface: %s." msgstr "Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %s не поддерживаетÑÑ." #, c-format msgid "Received signal %d: Terminating..." msgstr "Получен Ñигнал %d: Прерывание работы..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Получен Ñигнал %d: Перезагрузка звуков..." msgid "Hex View" msgstr "Вид Hex" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Открыть закладки" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Убрать Ñтроки" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: неизвеÑÑ‚Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ `%s'\n" "ИÑпользуйте `%s --help' Ð´Ð»Ñ Ñправки.\n" #, c-format msgid "Loading image %s failed" msgstr "Ошибка загрузки картинки %s" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Ошибка загрузки картинки \"%s\": %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "ИÑпользование: icewmhint [klasse.instanz] option argument\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Ðе хватает памÑти (len=%d)." msgid "Warning: " msgstr "Внимание: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "" #, fuzzy msgid "Default" msgstr "Удалить" msgid "(C)" msgstr "©" msgid "Theme:" msgstr "Тема:" msgid "Theme Description:" msgstr "ОпиÑание темы:" msgid "Theme Author:" msgstr "Ðвтор темы:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "О IceWM" msgid "Unable to get current font path." msgstr "Ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ пути к шрифтам." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Ðеожиданный формат ÑвойÑтва ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "ÐеÑколько ÑÑылок на градиент \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "ÐеизвеÑтное Ð¸Ð¼Ñ Ð³Ñ€Ð°Ð´Ð¸ÐµÐ½Ñ‚Ð°: %s" # OS/2 is dead, but... ;-) msgid "_Logout" msgstr "_Выход" msgid "_Cancel logout" msgstr "_Отменить выход" msgid "Lock _Workstation" msgstr "Заблокировать _Ñтанцию" msgid "Re_boot" msgstr "Пе_резагрузка компьютера" msgid "Shut_down" msgstr "Ð’Ñ‹_ключение компьютера" msgid "Restart _Icewm" msgstr "ПерезапуÑк _IceWM" msgid "Restart _Xterm" msgstr "Выйти в _Xterm" msgid "_Menu" msgstr "_Меню" msgid "_Above Dock" msgstr "_Поверх дока" msgid "_Dock" msgstr "_Док" msgid "_OnTop" msgstr "_Поверх" msgid "_Normal" msgstr "_Ðормальный" msgid "_Below" msgstr "_Ðиже" msgid "D_esktop" msgstr "Д_еÑктоп" msgid "_Restore" msgstr "Ð’_оÑÑтановить" msgid "_Move" msgstr "_ПеремеÑтить" msgid "_Size" msgstr "_Размер" msgid "Mi_nimize" msgstr "Св_ернуть" msgid "Ma_ximize" msgstr "Ра_звернуть" msgid "_Fullscreen" msgstr "Полно_Ñкранный" msgid "_Hide" msgstr "_Скрыть" msgid "Roll_up" msgstr "Скру_тить" msgid "R_aise" msgstr "П_однÑть" msgid "_Lower" msgstr "О_пуÑтить" msgid "La_yer" msgstr "С_лой" msgid "Move _To" msgstr "ПеремеÑтить _на" msgid "Occupy _All" msgstr "Видно _на вÑех" msgid "Limit _Workarea" msgstr "_Ограничить рабочее меÑто" msgid "Tray _icon" msgstr "_Пиктограмма панели задач" msgid "_Close" msgstr "_Закрыть" msgid "_Kill Client" msgstr "_Убить" msgid "_Window list" msgstr "_СпиÑок Окон" # msgid "Another window manager already running, exiting..." msgstr "Оконный менеджер уже запущен. Выхожу..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Ðе могу перезапуÑтить %s\n" "Проверьте, что %s еÑть в $PATH" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "" msgid "Confirm Logout" msgstr "Подтверждение выхода" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "При выходе будут закрыты вÑе активные приложениÑ.\n" "Продолжить?" # msgid "Bad Look name" msgstr "Плохое имÑ" #, fuzzy msgid "Loc_k Workstation" msgstr "Заблокировать _Ñтанцию" msgid "_Logout..." msgstr "_Выход..." msgid "_Cancel" msgstr "От_мена" msgid "_Restart icewm" msgstr "_ПерезапуÑк IceWM" msgid "_About" msgstr "О пр_ограмме" msgid "Maximize" msgstr "Развернуть" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Свернуть" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Скрыть" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Скрутить" # #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "ПоднÑть/ОпуÑтить" # msgid "Kill Client: " msgstr "Убить Окно: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "Ð’ÐИМÐÐИЕ! Ð’Ñе неÑохраненные данные будут потерÑны\n" "при закрытии Ñтого окна. Ð’Ñ‹ ÑоглаÑны его закрыть?" msgid "Restore" msgstr "ВоÑÑтановить" msgid "Rolldown" msgstr "Скрутить вниз" #, c-format msgid "Error in window option: %s" msgstr "Ошибка в опции окна: %s" #, c-format msgid "Unknown window option: %s" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ Ð¾ÐºÐ½Ð°: %s" msgid "Syntax error in window options" msgstr "СинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в опции окна" msgid "Out of memory for window options" msgstr "ЗакончилаÑÑŒ памÑть Ð´Ð»Ñ Ð¾Ð¿Ñ†Ð¸Ð¹ окна" msgid "Missing command argument" msgstr "ПотерÑн аргумент" #, c-format msgid "Bad argument %d" msgstr "Ðеправильный аргумент %d" #, c-format msgid "Error at prog %s" msgstr "Ошибка в программе %s" #, c-format msgid "Unexepected keyword: %s" msgstr "ÐеизвеÑтное ключевое Ñлово: %s" #, c-format msgid "Error at key %s" msgstr "Ошибка в ключе %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Программы" msgid "_Run..." msgstr "Ð’Ñ‹_полнить..." msgid "_Windows" msgstr "_Окна" msgid "_Help" msgstr "_Помощь" msgid "_Click to focus" msgstr "_Ð¤Ð¾ÐºÑƒÑ Ð¿Ð¾ щелчку" msgid "_Sloppy mouse focus" msgstr "_Липкий фокуÑ" msgid "Custo_m" msgstr "Сво_Ñ‘" msgid "_Focus" msgstr "_ФокуÑ" msgid "_Themes" msgstr "_Темы" msgid "Se_ttings" msgstr "ÐаÑ_тройки" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Session Manager: ÐеизвеÑÑ‚Ð½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ %s" msgid "Task Bar" msgstr "Панель задач" msgid "Tile _Vertically" msgstr "Разделить _вертикально" msgid "T_ile Horizontally" msgstr "Разделить _горизонтально" msgid "Ca_scade" msgstr "Ка_Ñкадом" msgid "_Arrange" msgstr "_УпорÑдочить" msgid "_Minimize All" msgstr "_Убрать вÑе" msgid "_Hide All" msgstr "С_крыть вÑе" msgid "_Undo" msgstr "_Отмена" msgid "Arrange _Icons" msgstr "УпорÑдочить _Иконки" msgid "_Refresh" msgstr "_Обновить" msgid "_License" msgstr "_ЛицензиÑ" msgid "Favorite applications" msgstr "Любимые приложениÑ" msgid "Window list menu" msgstr "СпиÑок окон в меню" #, fuzzy msgid "Show Desktop" msgstr "Д_еÑктоп" #, fuzzy msgid "All Workspaces" msgstr "Рабочее меÑто: " #, fuzzy msgid "Del" msgstr "Удалить" msgid "_Terminate Process" msgstr "ОÑ_тановить процеÑÑ" msgid "Kill _Process" msgstr "Убить _процеÑÑ" msgid "_Show" msgstr "_Показать" msgid "_Minimize" msgstr "C_вернуть" msgid "Window list" msgstr "СпиÑок окон" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Рабочее меÑто %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Сообщение цикла: select не получилÑÑ (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "ÐеизвеÑтный аргумент: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "ÐžÐ¿Ñ†Ð¸Ñ %s требует аргумент" #, c-format msgid "Unknown key name %s in %s" msgstr "ÐеизвеÑтный Ñимвол %s в %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Ðеправильный argument: %s Ð´Ð»Ñ %s" #, c-format msgid "Bad option: %s" msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Ошибка загрузки картинки \"%s\"" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "ÐеподходÑÑ‰Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ° Ð´Ð»Ñ ÐºÑƒÑ€Ñора: \"%s\" Ñодержит Ñлишком много " "разных цветов" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "Ошибка? Imlib проанализировал \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "Ошибка? Плохой XPM заголовок но Imlib проанализировал \"%s\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "Ошибка? Ðеожиданный конец XPM файла но Imlib проанализировал \"%s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "Ошибка? Ðеожиданный Ñимвол но Imlib проанализировал \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "Ðе могу зугрузить шрифт \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Ошибка загрузки резервного шрифта\"%s\"ÑŽ" #, c-format msgid "Could not load fontset \"%s\"." msgstr "Ðе могу загрузить набор шрифтов \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "ОтÑутÑтвуют кодовые Ñтраницы Ð´Ð»Ñ Ð½Ð°Ð±Ð¾Ñ€Ð° шрифтов \"%s\":" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "КончилаÑÑŒ памÑть на картинке \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Ошибка загрузки картинки \"%s\"" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: Ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ð½Ð¾Ð¹ картинки" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Ошибка ÑопоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ð½Ð¾Ð¹ и незагруженной картинки" msgid "Cu_t" msgstr "_Вырезать" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Копировать" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "Ð’_Ñтавить" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Ð’Ñ_тавить выделенное" msgid "Select _All" msgstr "Ð’Ñ‹_делить вÑÑ‘" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "" msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv не поддерживает (доÑтаточно) перекодировку из %s в %s." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð°Ñ Ñтрока \"%s\": %s" msgid "OK" msgstr "ДÐ" msgid "Cancel" msgstr "Отмена" #, c-format msgid "Out of memory for pixel map %s" msgstr "Ðехватка памÑти Ð´Ð»Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ¸ %s" #, c-format msgid "Could not find pixel map %s" msgstr "Ðе могу найти картинку %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Ðехватка памÑти Ð´Ð»Ñ RGB буфера %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Ðе могу найти RGB буфер %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "ИÑпользуетÑÑ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ñ‹Ð¹ механизм Ð´Ð»Ñ ÐºÐ¾Ð½Ð²ÐµÑ€Ñии пикÑелов (Ñ†Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ " "глубина: %d; маÑка (краÑный/зеленый/Ñиний): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d-битный графичеÑкий буфер не поддерживаетÑÑ (пока)" msgid "$USER or $LOGNAME not set?" msgstr "Ðе уÑтановлены переменные $USER и $LOGNAME?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" не ÑвлÑетÑÑ Ñтандартным адреÑом Интернета" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" не имеет опиÑÐ°Ð½Ð¸Ñ Ñхемы" #~ msgid "program label expected" #~ msgstr "отÑутÑтвует метка программы" #~ msgid "icon name expected" #~ msgstr "отÑутÑтвует Ð¸Ð¼Ñ Ð¸ÐºÐ¾Ð½ÐºÐ°" #~ msgid "window management class expected" #~ msgstr "клаÑÑ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾ÐºÐ½Ð°Ð¼Ð¸ отÑутÑтвует" #~ msgid "menu caption expected" #~ msgstr "ОжидаетÑÑ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ»ÑŒ меню" #, fuzzy #~ msgid "opening curly expected" #~ msgstr "ОжидаетÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€" #, fuzzy #~ msgid "action name expected" #~ msgstr "ОжидаетÑÑ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ»ÑŒ" #~ msgid "unknown action" #~ msgstr "неизвеÑтное дейÑтвие" #~ msgid "Failed to open %s: %s" #~ msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ %s: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Ошибка запуÑка %s: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Ошибка ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð´Ð¾Ñ‡ÐµÑ€Ð½ÐµÐ³Ð¾ процеÑÑа: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "ОжидаетÑÑ Ð¿Ð°Ñ€Ð° шеÑтнадцатеричных цифр" #~ msgid "Unexpected identifier" #~ msgstr "Ðеожиданный идентификатор" #~ msgid "Identifier expected" #~ msgstr "ОжидаетÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€" #~ msgid "Separator expected" #~ msgstr "ОжидаетÑÑ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ»ÑŒ" #~ msgid "Invalid token" #~ msgstr "Ðеправильный знак " #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Ðеверное шеÑтнадцатеричное чиÑло: %c%c (в \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - неизвеÑтный формат (%d)" #~ msgid "cpu: %d %d %d %d" #~ msgstr "CPU: %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat нашел %d процеÑÑора" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "Ошибка XQueryTree Ð´Ð»Ñ Ð¾ÐºÐ½Ð° 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Скомпилирован Ñ Ñ„Ð»Ð°Ð³Ð¾Ð¼ DEBUG. Будут показыватьÑÑ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ðµ " #~ "ÑообщениÑ." #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "ИÑпользование: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "ИзменÑет фон деÑктопа при переключении рабочего проÑтранÑтва.\n" #~ "ÐŸÐµÑ€Ð²Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ° иÑпользуетÑÑ Ð¿Ð¾ умолчанию.\n" #~ "\n" #~ "-s, --semitransparency Включить поддержку полупрозрачных " #~ "терминалов\n" #~ msgid "_No icon" #~ msgstr "_Ðет пиктограммы" #~ msgid "_Minimized" #~ msgstr "_Свернутый" #~ msgid "_Exclusive" #~ msgstr "_ИÑключительный" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "Ошибка X-Ñервера %s(0x%lX): %s" #~ msgid "Window %p has no XA_ICEWM_PID property. Export the " #~ "LD_PRELOAD variable to preload the preice library." #~ msgstr "Окно %p не имеет ÑвойÑтва XA_ICEWM_PID. ЭкÑпортируйте " #~ "переменную Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ LD_PRELOAD, чтобы зыгрузить библиотеку preice." #~ msgid "Obsolete option: %s" #~ msgstr "УÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐ°Ñ Ð¾Ð¿Ñ†Ð¸Ñ: %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "Ошибка запуÑка (errno=%d)." #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "Ðе получилоÑÑŒ Ñоздание потока (errno=%d)." #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "ÐеподходÑÑ‰Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ° Ð´Ð»Ñ ÐºÑƒÑ€Ñора: \"%s\" Ñодержит Ñлишком " #~ "много разных цветов" #~ msgid "Resource allocation for rotated string \"%s\" (%dx%d px) " #~ "failed" #~ msgstr "Ошибка Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ€ÐµÑурÑов Ð´Ð»Ñ Ð¿Ð¾Ð²ÐµÑ€Ð½ÑƒÑ‚Ð¾Ð¹ Ñтроки \"%s\" (%dx%" #~ "d px)" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Ошибка ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ потока: %s" #, fuzzy #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Ошибка запиÑи файла иÑтории %s: %s" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Ошибка ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑкого Ñлемента 0x%x в буфер " #~ "пикÑелов" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "Много Ñоединений -- не поддерживаетÑÑ" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Session Manager: IceAddConnectionWatch не получилÑÑ." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Session Manager: Ошибка инициализации: %s" icewm-1.3.7/po/Makefile.in0000644000076600007660000000426411463274241014317 0ustar develdevelsrcdir = @srcdir@ top_srcdir = @top_srcdir@ prefix = @prefix@ datadir = @datadir@ PACKAGE = @PACKAGE@ LOCDIR = @LOCDIR@ DESTDIR = SOURCES = @NLS_SOURCES@ POFILES = @NLS_POFILES@ POXFILES = @NLS_POXFILES@ MOFILES = @NLS_MOFILES@ INSTALL = @INSTALL@ INSTALLDIR = @INSTALLDIR@ INSTALLLIB = @INSTALLLIB@ XGETTEXT = @XGETTEXT@ MSGMERGE = @MSGMERGE@ MSGFMT = @MSGFMT@ .SUFFIXES: .SUFFIXES: .po .mo all: $(MOFILES) install: all @echo "Installing message catalogues in $(DESTDIR)$(LOCDIR)" @for catalog in $(MOFILES); do \ lang=`echo $${catalog} | sed -e 's/\.mo//'` ; \ msgdir="$(DESTDIR)$(LOCDIR)/$${lang}/LC_MESSAGES"; \ echo "Installing language: $${lang}" ; \ $(INSTALLDIR) "$${msgdir}"; \ $(INSTALLLIB) "$${catalog}" "$${msgdir}/$(PACKAGE).mo"; \ done clean: rm -f $(MOFILES) *~ # Merge existing translations and new code merge: $(POXFILES) # POTFILES.in lists files containing translatable strings POTFILES.in: $(SOURCES) echo $(SOURCES) | tr ' ' '\n' > $@ # $(PACKAGE).pot is a template file for translations $(PACKAGE).pot: POTFILES.in $(XGETTEXT) --default-domain=$(PACKAGE) --directory=../src \ --add-comments --keyword=_ --keyword=N_ --files-from=POTFILES.in && \ test ! -f $(PACKAGE).po || \ ( rm -f ./$(PACKAGE).pot && \ mv $(PACKAGE).po ./$(PACKAGE).pot ) # create new translations %.pox: %.po $(PACKAGE).pot $(MSGMERGE) --no-location --output-file $@ $< $(PACKAGE).pot # convert portable into machine objects .po.mo: $(MSGFMT) -o $@ $< report.html: *.po Makefile @(echo "

      National Language Support Status Report

      "; \ date; echo "

      "; \ for catalog in *.po; do \ echo -n "

    • $${catalog}"; \ sed -ne's|^.*"Last-Translator[^:]*:\(.*\)<.*$$| by\1
        |p' \ "$${catalog}"; \ echo -n '
      • '; \ LC_ALL=en $(MSGFMT) -o /dev/null "$${catalog}" 2>&1 |\ sed -e's|, |
      • |g' -e's|\.$$||'; \ echo '
      '; \ done ) >$@ @cat $@ #upload-report: report.html # scp report.html massel@icewm.sf.net:icesf/libphp/nls.html stats: for x in *.po ; do echo -n "$$x: " ; $(MSGFMT) --statistics $$x 2>&1 ; done update: merge for x in *.pox ; do cp -af $$x $${x%%pox}po ; done icewm-1.3.7/po/zh_CN.po0000664000076600007660000010002111463274241013601 0ustar develdevel# icewm zh_CN.po # Copyright (C) 2000 Free Software Foundation, Inc. # Liu Zhuyuan , 2001. # Hiweed Leng , 2005. # LI Daobing , 2007. # # you can get the newest version at: # http://i18n-zh.googlecode.com/svn/trunk/l10n/icewm/ # msgid "" msgstr "Project-Id-Version: icewm 1.2.30\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2007-05-01 15:46+0800\n" "Last-Translator: LI Daobing \n" "Language-Team: Siplified Chinese\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - 供电中" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "P" #, c-format msgid " - Charging" msgstr " - 充电中" msgid "C" msgstr "C" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "CPU è´Ÿè½½: " #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "ä¿¡ç®±å议无效:\"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "信箱路径无效: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "使用信箱 \"%s\"\n" msgid "Error checking mailbox." msgstr "检查信箱时å‘生错误。" #, c-format msgid "%ld mail message." msgstr "%ld å°é‚®ä»¶ã€‚" #, c-format msgid "%ld mail messages." msgstr "%ld å°é‚®ä»¶ã€‚" #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "æŽ¥å£ %s:\n" " 当å‰é€Ÿçއ (è¿›/出):\t%li %s/%li %s\n" " å¹³å‡é€Ÿçއ (è¿›/出):\t%lli %s/%lli %s\n" " æ€»è®¡å¹³å‡ (è¿›/出):\t%li %s/%li %s\n" " 已传输 (è¿›/出): %lli %s/%lli %s\n" " 在线时间:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " 呼å«è€… ID:\t" msgid "Workspace: " msgstr "工作区:" msgid "Back" msgstr "åŽé€€" msgid "Alt+Left" msgstr "Alt+Left" msgid "Forward" msgstr "å‰è¿›" msgid "Alt+Right" msgstr "Alt+Right" msgid "Previous" msgstr "上一页" msgid "Next" msgstr "下一页" msgid "Contents" msgstr "内容" msgid "Index" msgstr "索引" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "关闭" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "用法:%s 文件å\n" "\n" "一个éžå¸¸ç®€å•çš„ HTML æµè§ˆå™¨ï¼Œç”¨äºŽæ˜¾ç¤ºåœ¨ 文件å 中列出的文件。\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "路径无效:%s\n" msgid "Invalid path: " msgstr "路径无效:" msgid "List View" msgstr "列表显示" msgid "Icon View" msgstr "图标显示" msgid "Open" msgstr "打开" msgid "Undo" msgstr "撤销" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "新建" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "釿–°å¯åЍ" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Same 游æˆ" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "命令 `%s' 需è¦è‡³å°‘ %d ä¸ªå‚æ•°ã€‚" #, c-format msgid "Invalid expression: `%s'" msgstr "无效表达å¼: `%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "域 `%s' 中已命å的标志(数字范围: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "无效的工作区å: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "工作区超出了范围:%d" #, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "用法: %s [选项] 行为\n" "\n" "选项:\n" " -display DISPLAY 连接到以DISPLAY指定的 X server 。\n" " 当没有设置时的 缺çœå€¼ï¼š $DISPLAY 或" "者 :0.0 。\n" " -window WINDOW_ID 指定è¦ä½¿ç”¨çš„窗å£ã€‚ 特别的\n" " root 的标识符为 ‘root’ 窗å£å’Œ\n" " 当å‰èšç„¦çª—å£ä¸ºâ€˜focus' 。\n" " -class WM_CLASS 指定è¦ä½¿ç”¨çš„窗å£ç±»ã€‚如果 WM_CLASS 包" "å«\n" " \".\",那么åªç®¡ç†é‚£äº› WM_CLASS 属性完全" "一致\n" " 的窗å£ã€‚如果ä¸åŒ…å«\".\",则属于相åŒç±»å’Œ" "属于\n" " 相åŒè¿›ç¨‹(åˆç§°ä¸º `-name')的窗å£éƒ½ä¼šè¢«è¢«" "选å–。\n" "行为:\n" " setIconTitle TITLE 设置图标标题。\n" " setWindowTitle TITLE è®¾ç½®çª—å£æ ‡é¢˜ã€‚\n" " setGeometry geometry 设置窗å£ä½ç½®å’Œå¤§å°ã€‚\n" " setState MASK STATE 设置GNOME窗å£çжæ€åˆ° STATE。\n" " åªæœ‰ç”± MASK é€‰æ‹©çš„ä½æ‰å—å½±å“。\n" " STATE å’Œ MASK æ˜¯èŒƒå›´çš„è¡¨è¾¾å¼ ã€‚\n" " `GNOME 窗å£çжæ€'。\n" " toggleState STATE åˆ‡æ¢ GNOME 窗å£çжæ€ä½ ç”± STATE 表达å¼\n" " 指定。\n" " setHints HINTS 设置 GNOME çª—å£æç¤ºåˆ° HINTS。\n" " setLayer LAYER 移动窗å£åˆ°å¦ä¸€ä¸ª GNOME 窗å£å±‚。\n" " setWorkspace WORKSPACE 移动窗å£åˆ°å¦ä¸€ä¸ªå·¥ä½œåŒºã€‚ 选择\n" " æ ¹çª—å£æ¥æ”¹å˜å½“å‰å·¥ä½œåŒºã€‚\n" " listWorkspaces 列出所有工作区的å字。\n" " setTrayOption TRAYOPTION 设置 IceWM 托盘选项æç¤ºã€‚\n" "\n" "表达å¼ï¼š\n" " è¡¨è¾¾å¼æ˜¯ä¸€è¿žä¸²ç”±`+'或`|'连接起æ¥çš„符å·:\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgid "GNOME window state" msgstr "GNOME 窗å£çжæ€" msgid "GNOME window hint" msgstr "GNOME çª—å£æç¤º" msgid "GNOME window layer" msgstr "GNOME 窗å£å±‚次" msgid "IceWM tray option" msgstr "IceWM 托盘选项" msgid "Usage error: " msgstr "用法错误:" #, c-format msgid "Invalid argument: `%s'." msgstr "æ— æ•ˆå‚æ•°ï¼š`%s'" msgid "No actions specified." msgstr "未指定行为" #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "无法打开显示:%s。 X必须正在执行且设定 $DISPLAY。" #, c-format msgid "Invalid window identifier: `%s'" msgstr "æ— æ•ˆçš„çª—å£æ ‡è¯†ç¬¦ï¼š%s " #, c-format msgid "workspace #%d: `%s'\n" msgstr "工作区 #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "未知的行为:`%s'" #, c-format msgid "Socket error: %d" msgstr "socket 错误:%d" #, c-format msgid "Playing sample #%d (%s)" msgstr "æ’­æ”¾ä¾‹å­ #%d (%s)" #, c-format msgid "No such device: %s" msgstr "没有这样的设备:%s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "ä¸èƒ½è¿žæŽ¥ESoundåŽå°ç¨‹åº: %s" msgid "" msgstr "<æ— >" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "当上载 <%d> %s:%s æ—¶å‘生错误" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "以 <%d> %s:%s 上载例å­" #, c-format msgid "Playing sample #%d" msgstr "æ’­æ”¾ä¾‹å­ #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "ä¸èƒ½è¿žæŽ¥ YIFF æœåŠ¡å™¨ï¼š%s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "ä¸èƒ½éŸ³é¢‘æ¨¡å¼æ”¹åˆ°æ¨¡å¼ %s。" #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "æŽ¢æµ‹åˆ°éŸ³é¢‘æ¨¡å¼æ”¹å˜äº†ï¼ŒåŽŸæ¥çš„éŸ³é¢‘æ¨¡å¼ `%s' ä¸å†èµ·ä½œç”¨ã€‚" msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "æŽ¢æµ‹åˆ°éŸ³é¢‘æ¨¡å¼æ”¹å˜äº†ï¼ŒéŸ³é¢‘模å¼è‡ªåŠ¨æ”¹å˜è¢«å±è”½ã€‚" #, c-format msgid "Overriding previous audio mode `%s'." msgstr "覆盖先å‰çš„éŸ³é¢‘æ¨¡å¼ `%s'。" #, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 " 用法: %s [选项]...\n" " \n" " å‘生GUI事件时 IceWM 播放声音文件。\n" " \n" " 选项:\n" " \n" " -d, --display=DISPLAY IceWM 使用的 Display (缺" "çœï¼š $DISPLAY).\n" " -s, --sample-dir=DIR 指定包å«å£°éŸ³æ–‡ä»¶çš„目录 " "(如\n" " ~/.icewm/sounds). \n" " -i, --interface=TARGET 指定声音输出的目标接å£, " "OSS,\n" " YIFF, ESD中的一个 \n" " -D, --device=DEVICE (ä»…é™OSS) 指定数字信å·å¤„ç†" "器\n" " (缺çœä¸º /dev/dsp)。 \n" " -S, --server=ADDR:PORT\t(ESD å’Œ YIFF) 指定æœåŠ¡å™¨åœ°å€å’Œ\n" " ç«¯å£ (缺çœï¼š ESD:localhost:16001\n" "\t\t\t\t,YIFF:localhost:9433).\n" " -m, --audio-mode[=MODE] (YIFF only) 指定音频模å¼\n" " (去获å–一个列表)。\n" " --audio-mode-auto \t(YIFF only) 改å˜éŸ³é¢‘模å¼ä½¿å³æ—¶" "与例\n" " å­çš„音频匹é…到最好(å¯èƒ½ä¸Žå…¶å®ƒ\n" " Y 客户引起问题, overrides\n" " --audio-mode).\n" "\n" " -v, --verbose 详细情况 (æ‰“å°æ¯ä¸€ä¸ªå£°éŸ³äº‹" "件到\n" " 标准输出)。\n" " -V, --version 打å°ç‰ˆæœ¬ä¿¡æ¯å¹¶é€€å‡ºã€‚\n" " -h, --help 打å°ï¼ˆè¿™ä¸ªï¼‰å¸®åŠ©å±å¹•并退" "出。\n" "\n" " 返回值:\n" "\n" " 0 æˆåŠŸã€‚\n" " 1 一般错误。\n" " 2 命令行错误。\n" " 3 å­ç³»ç»Ÿé”™è¯¯ (如 ä¸èƒ½è¿žæŽ¥åˆ°æœåŠ¡å™¨ï¼‰ã€‚\n" "\n" msgid "Multiple sound interfaces given." msgstr "给出的多é‡éŸ³é¢‘接å£ã€‚" #, c-format msgid "Support for the %s interface not compiled." msgstr "æŽ¥å£ %s 未编译支æŒã€‚" #, c-format msgid "Unsupported interface: %s." msgstr "䏿”¯æŒçš„æŽ¥å£ï¼š%s" #, c-format msgid "Received signal %d: Terminating..." msgstr "æ”¶åˆ°ä¿¡å· %d:终止..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "æ”¶åˆ°ä¿¡å· %dï¼šé‡æ–°è£…载例å­..." msgid "Hex View" msgstr "16进制显示" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "展开 Tab" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "æ¢è¡Œ" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "用法: icewmbg [ -r | -q ]\n" " -r é‡å¯ icewmbg\n" " -q 退出 icewmbg\n" "ä¾ç…§é…置文件加载桌é¢èƒŒæ™¯\n" " DesktopBackgroundCenter - 居中显示桌é¢èƒŒæ™¯ï¼Œä¸å¹³é“º\n" " SupportSemitransparency - 支æŒåŠé€æ˜Žç»ˆç«¯\n" " DesktopBackgroundColor - 桌é¢èƒŒæ™¯é¢œè‰²\n" " DesktopBackgroundImage - 桌é¢èƒŒæ™¯å›¾ç‰‡\n" " DesktopTransparencyColor - åŠé€æ˜Žçª—å£ä½¿ç”¨çš„颜色\n" " DesktopTransparencyImage - åŠé€æ˜Žçª—å£ä½¿ç”¨çš„图片\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: 无法识别的选项:%s\n" "å°è¯•“%s --helpâ€èŽ·å¾—æ›´å¤šçš„ä¿¡æ¯ã€‚\n" #, c-format msgid "Loading image %s failed" msgstr "载入图象 %s 失败" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "载入图象 \"%s\" 失败: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "用法:icewmhint [class.instance] option arg\n" #, c-format msgid "Out of memory (len=%d)." msgstr "内存ä¸è¶³ï¼ˆlen=%d)。" msgid "Warning: " msgstr "警告:" #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "move/resize è¯·æ±‚ä¸­åŒ…å«æœªçŸ¥çš„æ–¹å‘: %d" msgid "Default" msgstr "缺çœ" msgid "(C)" msgstr "(C)" msgid "Theme:" msgstr "主题:" msgid "Theme Description:" msgstr "主题æè¿°ï¼š" msgid "Theme Author:" msgstr "主题作者:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm - 关于" msgid "Unable to get current font path." msgstr "ä¸èƒ½å–得当å‰å­—体路径。" msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "ICEWM_FONT_PATH 属性的格å¼ä¸èƒ½è¯†åˆ«" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "梯度 \"%s\" 有多个引用" #, c-format msgid "Unknown gradient name: %s" msgstr "未知的梯度å: %s" msgid "_Logout" msgstr "退出(_L)" msgid "_Cancel logout" msgstr "å–æ¶ˆé€€å‡º(_C)" msgid "Lock _Workstation" msgstr "é”ä½å·¥ä½œç«™(_W)" msgid "Re_boot" msgstr "é‡å¯è®¡ç®—机(_B)" msgid "Shut_down" msgstr "关机(_D)" msgid "Restart _Icewm" msgstr "釿–°å¯åЍ Icewm(_I)" msgid "Restart _Xterm" msgstr "釿–°å¯åЍ Xterm(_X)" msgid "_Menu" msgstr "èœå•(_M)" msgid "_Above Dock" msgstr "åœæ”¾åœ¨ä¸Šé¢(_A)" msgid "_Dock" msgstr "åœæ”¾(_D)" msgid "_OnTop" msgstr "顶层(_O)" msgid "_Normal" msgstr "正常(_N)" msgid "_Below" msgstr "底层(_B)" msgid "D_esktop" msgstr "桌é¢(_E)" msgid "_Restore" msgstr "æ¢å¤(_R)" msgid "_Move" msgstr "移动(_M)" msgid "_Size" msgstr "改å˜å¤§å°(_S)" msgid "Mi_nimize" msgstr "最å°åŒ–(_N)" msgid "Ma_ximize" msgstr "最大化(_X)" msgid "_Fullscreen" msgstr "å…¨å±(_F)" msgid "_Hide" msgstr "éšè—(_H)" msgid "Roll_up" msgstr "å·èµ·(_U)" msgid "R_aise" msgstr "æå‡(_A)" msgid "_Lower" msgstr "é™ä½Ž(_L)" msgid "La_yer" msgstr "层次(_Y)" msgid "Move _To" msgstr "移动到(_T)" msgid "Occupy _All" msgstr "å æ®æ‰€æœ‰(_A)" msgid "Limit _Workarea" msgstr "é™åˆ¶å·¥ä½œåŒº(_W)" msgid "Tray _icon" msgstr "托盘图标(_I)" msgid "_Close" msgstr "关闭(_C)" msgid "_Kill Client" msgstr "æ€æ­»å®¢æˆ·ç¨‹åº(_K)" msgid "_Window list" msgstr "窗å£åˆ—表(_W)" msgid "Another window manager already running, exiting..." msgstr "å¦å¤–çš„ 窗å£ç®¡ç†å™¨ å·²ç»åœ¨è¿è¡Œï¼Œé€€å‡º..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "æ— æ³•é‡æ–°å¯åŠ¨ï¼š%s\n" "%s 在路径 $PATH 中å—?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "用法: %s [选项]\n" "å¯åЍ IceWM 窗å£ç®¡ç†å™¨ã€‚\n" "\n" "选项:\n" " --display=NAME 使用的 X æœåС噍å。\n" "%s --sync åŒæ­¥ X11 命令。\n" "\n" " -c, --config=FILE 从 FILE 加载é…置。\n" " -t, --theme=FILE 从 FILE 加载主题。\n" " -n, --no-configure 忽略é…置文件。\n" "\n" " -v, --version 显示版本信æ¯å¹¶é€€å‡ºã€‚\n" " -h, --help 显示帮助信æ¯å¹¶é€€å‡ºã€‚\n" "%s --replace å–代当å‰çš„窗å£ç®¡ç†å™¨ã€‚\n" " --restart ä¸è¦ä½¿ç”¨: 这是一个内部标志。\n" "\n" "环境å˜é‡:\n" " ICEWM_PRIVCFG=PATH 用户é…置文件目录,缺çœä¸º\"$HOME/.icewm/\"\n" " DISPLAY=NAME 使用的 X æœåС噍å,缺çœä¾èµ–于 Xlib。\n" " MAIL=URL 邮箱ä½ç½®ï¼Œå¦‚果忽略å议,则使用缺çœçš„\"file\"å" "议。\n" "\n" "访问 http://www.icewm.org/ æ¥æŠ¥å‘Šé”™è¯¯ï¼Œæ”¯æŒè¯·æ±‚,评论... \n" msgid "Confirm Logout" msgstr "确认退出" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "退出将关闭所有活动的应用程åºã€‚\n" "ç»§ç»­å—?" msgid "Bad Look name" msgstr "错误的外观å" #, fuzzy msgid "Loc_k Workstation" msgstr "é”ä½å·¥ä½œç«™(_W)" msgid "_Logout..." msgstr "退出(_L)..." msgid "_Cancel" msgstr "å–æ¶ˆ(_C)" msgid "_Restart icewm" msgstr "é‡å¯ icewm(_R)" msgid "_About" msgstr "关于(_A)" msgid "Maximize" msgstr "最大化" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "最å°åŒ–" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "éšè—" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "å·èµ·" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "æå‡/é™ä½Ž" msgid "Kill Client: " msgstr "æ€æ­»å®¢æˆ·ç¨‹åº" msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "警告ï¼å½“这个客户程åºè¢«æ€æ­»æ—¶ï¼Œæ‰€æœ‰\n" "没有ä¿å­˜çš„修改将丢失。你想继续å—?" msgid "Restore" msgstr "æ¢å¤" msgid "Rolldown" msgstr "放下" #, c-format msgid "Error in window option: %s" msgstr "窗å£é€‰é¡¹é”™è¯¯ï¼š%s" #, c-format msgid "Unknown window option: %s" msgstr "未知窗å£é€‰é¡¹ï¼š%s" msgid "Syntax error in window options" msgstr "窗å£é€‰é¡¹å¥æ³•错误" msgid "Out of memory for window options" msgstr "窗å£é€‰é¡¹å†…å­˜ä¸è¶³" msgid "Missing command argument" msgstr "䏢失命令傿•°" #, c-format msgid "Bad argument %d" msgstr "é”™è¯¯çš„å‚æ•° %d" #, c-format msgid "Error at prog %s" msgstr "ç¨‹åº %s 错误" #, c-format msgid "Unexepected keyword: %s" msgstr "未期望的关键è¯: %s" #, c-format msgid "Error at key %s" msgstr "é”® %s 错误" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "程åº" msgid "_Run..." msgstr "è¿è¡Œ(_R)" msgid "_Windows" msgstr "窗å£(_W)" msgid "_Help" msgstr "帮助(_H)" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "主题(_T)" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "会è¯ç®¡ç†è€…:未知行 %s" msgid "Task Bar" msgstr "任务æ " msgid "Tile _Vertically" msgstr "垂直平铺(_V)" msgid "T_ile Horizontally" msgstr "水平平铺(_I)" msgid "Ca_scade" msgstr "层å (_S)" msgid "_Arrange" msgstr "排列(_A)" msgid "_Minimize All" msgstr "全部最å°åŒ–(_M)" msgid "_Hide All" msgstr "全部éšè—(_H)" msgid "_Undo" msgstr "撤消(_U)" msgid "Arrange _Icons" msgstr "排列图标(_I)" msgid "_Refresh" msgstr "刷新(_R)" msgid "_License" msgstr "许å¯(_L)" msgid "Favorite applications" msgstr "喜欢的应用程åº" msgid "Window list menu" msgstr "窗å£åˆ—表èœå•" msgid "Show Desktop" msgstr "显示桌é¢" msgid "All Workspaces" msgstr "所有工作区" msgid "Del" msgstr "删除" msgid "_Terminate Process" msgstr "结æŸè¿›ç¨‹(_T)" msgid "Kill _Process" msgstr "æ€æ­»è¿›ç¨‹(_P)" msgid "_Show" msgstr "显示(_S)" msgid "_Minimize" msgstr "最å°åŒ–(_M)" msgid "Window list" msgstr "窗å£åˆ—表" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. 工作区 %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "" #, c-format msgid "Unrecognized option: %s\n" msgstr "䏿˜Žé€‰é¡¹ï¼š%s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "䏿˜Žå‚数:%s\n" #, c-format msgid "Argument required for %s switch" msgstr "%s æ‰€éœ€çš„å‚æ•°æ”¹å˜äº†" #, c-format msgid "Unknown key name %s in %s" msgstr "%s中未知的键å%s" #, c-format msgid "Bad argument: %s for %s" msgstr "ä¼ ç»™ %s çš„é”™è¯¯å‚æ•°ï¼š%s" #, c-format msgid "Bad option: %s" msgstr "错误的选项: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "装载图象“%sâ€å¤±è´¥" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "错误的pixmap指针:“%s†包å«å¤ªå¤šé¢œè‰²" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "BUG?Imlib å¯ä»¥è¯»â€œ%sâ€" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "BUG?异常的XPM头,但是Imlibå´å¯ä»¥åˆ†æžâ€œ%sâ€" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "BUG?XPM文件有éžé¢„期的结æŸï¼Œä½†æ˜¯Imlibå´å¯ä»¥åˆ†æžâ€œ%sâ€" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "BUG?éžé¢„期的特å¾ï¼Œä½†Imlibå´å¯ä»¥åˆ†æžâ€œ%sâ€" #, c-format msgid "Could not load font \"%s\"." msgstr "ä¸èƒ½è£…载字体 “%sâ€ã€‚" #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "装载备用字体“%sâ€å¤±è´¥ã€‚" #, c-format msgid "Could not load fontset \"%s\"." msgstr "ä¸èƒ½è£…载字体“%sâ€ã€‚" #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "字体“%sâ€æ²¡æœ‰ä»£ç é›†:" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "内存ä¸è¶³ä»¥åŠ è½½ä½å›¾ \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "装载图åƒâ€œ%sâ€å¤±è´¥" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: èŽ·å– X pixmap 失败" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Imlib 图象到 X pixmap 的影射失败" msgid "Cu_t" msgstr "剪切(_T)" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "å¤åˆ¶(_C)" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "粘贴(_P)" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "选择粘贴(_S)" msgid "Select _All" msgstr "全选(_A)" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Cè¿è¡Œåº“䏿”¯æŒè¯¥åŒºåŸŸã€‚使用缺çœçš„ 'C' 区域。" msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "检测当å‰åŒºåŸŸçš„ç¼–ç å¤±è´¥ï¼Œå‡å®šä¸º ISO-8859-1。\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv没有æä¾›ï¼ˆè¶³å¤Ÿï¼‰çš„%s到%s转æ¢å™¨ã€‚" #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "错误的多字节字符串“%sâ€ï¼š%s" msgid "OK" msgstr "确定" msgid "Cancel" msgstr "å–æ¶ˆ" #, c-format msgid "Out of memory for pixel map %s" msgstr "ä½å›¾ %s 内存ä¸è¶³" #, c-format msgid "Could not find pixel map %s" msgstr "找ä¸åˆ°ä½å›¾ %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "RGB åƒç´ ç¼“å­˜ %s 内存ä¸è¶³" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "找ä¸åˆ°RGBåƒç´ ç¼“å­˜%s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "正在使用fellback机制æ¥è½¬æ¢åƒç´ ï¼ˆæ·±åº¦ï¼š%dï¼›æŽ©ç  ï¼ˆçº¢/绿/è“):%0*x/%" "0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d ä½è§†å›¾è¿˜ä¸æ”¯æŒ" msgid "$USER or $LOGNAME not set?" msgstr "还没设置 $USER 或 $LOGNAME?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "“%sâ€æè¿°ä¸€ä¸ªå…¬å…±çš„internet方案" #, c-format msgid "\"%s\" contains no scheme description" msgstr "“%sâ€åŒ…嫿²¡æœ‰æ–¹æ¡ˆçš„æè¿°" #~ msgid " processes." #~ msgstr " 进程。" #~ msgid "program label expected" #~ msgstr "æœŸæœ›ç¨‹åºæ ‡å¿—符" #~ msgid "icon name expected" #~ msgstr "期望图标å" #~ msgid "window management class expected" #~ msgstr "期望窗å£ç®¡ç†ç±»" #~ msgid "menu caption expected" #~ msgstr "期望目录标题" #~ msgid "opening curly expected" #~ msgstr "期望左括å·" #~ msgid "action name expected" #~ msgstr "期望动作å" #~ msgid "unknown action" #~ msgstr "未知动作" #~ msgid "Failed to open %s: %s" #~ msgstr "打开 %s 失败: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "è¿è¡Œ %s 失败: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "创建å­è¿›ç¨‹å¤±è´¥: %s" #~ msgid "Not a regular file: %s" #~ msgstr "䏿˜¯ä¸€ä¸ªæ™®é€šæ–‡ä»¶: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "预期的一对å六进制数" #~ msgid "Unexpected identifier" #~ msgstr "éžé¢„期的标识符" #~ msgid "Identifier expected" #~ msgstr "预期的标识符" #~ msgid "Separator expected" #~ msgstr "预期的分隔符" #~ msgid "Invalid token" #~ msgstr "无效片段" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "䏿˜¯ä¸€ä¸ªå六进制的数字:%c%c(在“%sâ€ï¼‰" icewm-1.3.7/po/es.po0000664000076600007660000011042111463274241013214 0ustar develdevel# Spanish messages for IceWM # Copyright (C) 2001, 2006 Free Software Foundation, Inc. # Antonio de la Torre , 2001. # Eulogio Serradilla , 2006. # msgid "" msgstr "Project-Id-Version: IceWM 1.2.26\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2006-07-03 16:42+0200\n" "Last-Translator: Eulogio Serradilla \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.2\n" msgid " - Power" msgstr " - Energía" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "E" #, c-format msgid " - Charging" msgstr " - Cargando" msgid "C" msgstr "C" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "Carga de CPU: " #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Protocolo mailbox no válido: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Ruta mailbox no válida: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Usando mailbox \"%s\"\n" msgid "Error checking mailbox." msgstr "Error al comprobar mailbox." #, c-format msgid "%ld mail message." msgstr "mensaje de correo %ld." #, c-format msgid "%ld mail messages." msgstr "mensajes de correo %ld." #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Interfaz %s:\n" " Velocidad actual (E/S):\t%li %s/%li %s\n" " Media actual (E/S):\t%lli %s/%lli %s\n" " Media total (E/S):\t%li %s/%li %s\n" " Transmitido (E/S):\t%lli %s/%lli %s\n" " Tiempo activa:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Id del comunicante:\t" msgid "Workspace: " msgstr "Espacio de trabajo: " msgid "Back" msgstr "Volver" msgid "Alt+Left" msgstr "Alt+Left" msgid "Forward" msgstr "Avanzar" msgid "Alt+Right" msgstr "Alt+Right" msgid "Previous" msgstr "Anterior" msgid "Next" msgstr "Siguiente" msgid "Contents" msgstr "Contenidos" msgid "Index" msgstr "Ãndice" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Cerrar" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Uso: %s NOMBRE DE ARCHIVO\n" "\n" "Un navegador HTML muy simple que muestra el documento especificado " "por NOMBRE DE ARCHIVO.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Ruta no válida: %s\n" msgid "Invalid path: " msgstr "Ruta no válida: " msgid "List View" msgstr "Vista de lista" msgid "Icon View" msgstr "Vista de iconos" msgid "Open" msgstr "Abrir" msgid "Undo" msgstr "Deshacer" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Nuevo" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Reiniciar" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Mismo juego" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "La acción `%s' requiere al menos %d argumentos." #, c-format msgid "Invalid expression: `%s'" msgstr "Expresión no válida: `%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Símbolos nombrados del dominio `%s' (límite numérico: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Nombre de espacio de trabajo no válido: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "Espacio de trabajo fuera de límite: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Uso: %s [OPCIONES] ACCIONES\n" "\n" "Opciones:\n" " -display DISPLAY Conecta al servidor X especificado por " "DISPLAY.\n" " Predefinido: $DISPLAY o :0.0 cuando no " "está configurado.\n" " -window WINDOW_ID Especifica la ventana a manipular. " "Especial\n" " Los identificadores son `root' para la " "ventana raíz y\n" "\t\t\t `focus' para la ventana con el foco actual.\n" " -class WM_CLASS Clase de administración de ventanas de " "las ventana(s)\n" " \t \t \t para manipular. Si WM_CLASS contiene un " "punto, solo\n" " \t \t las ventanas con la misma propiedad " "WM_CLASS\n" "\t\t\t son coincididas. Si no hay un punto, las ventanas de\n" "\t\t\t la misma clase y ventanas de la misma instancia\n" "\t\t\t (o `-name') son seleccionadas.\n" "\n" "Acciones:\n" " setIconTitle TITLE Configura el título del icono.\n" " setWindowTitle TITLE Configura el título de la ventana.\n" " setGeometry geometry Configura la geometría de la ventana.\n" " setState MASK STATE Pone el estado de la ventana GNOME a " "STATE.\n" " \t\t\t Sólo los bits seleccionados por MASK están afectados.\n" " STATE y MASK son expresiones del " "dominio\n" " `GNOME window state'.\n" " toggleState STATE Cambia los bits de estado de la " "ventana de GNOME especificados por\n" " la expresión STATE.\n" " setHints HINTS Pone los consejos de la ventana de " "GNOME a HINTS.\n" " setLayer LAYER Mueve la ventana a otra capa de la " "ventana de GNOME.\n" " setWorkspace WORKSPACE Mueve la ventana a otro espacio de " "trabajo. Seleccionar\n" " \t\t\t la ventana raíz para cambiar el espacio de trabajo " "actual.\n" " listWorkspaces \t Lista los nombres de todos los espacios " "de trabajo.\n" " setTrayOption TRAYOPTION Configura el consejo opción de bandeja " "de IceWM.\n" "\n" "Expresiones:\n" " Las expresiones son una lista de símbolos de un dominio " "concatenados por `+' o `|':\n" "\n" " EXPRESIÓN ::= SÃMBOLO | EXPRESIÓN ( `+' | `|' ) SÃMBOLO\n" "\n" msgid "GNOME window state" msgstr "Estado de la ventana de GNOME" msgid "GNOME window hint" msgstr "Consejo de la ventana de GNOME" msgid "GNOME window layer" msgstr "Capa de la ventana de GNOME" msgid "IceWM tray option" msgstr "Opción de la bandeja de IceWM" msgid "Usage error: " msgstr "Error de uso: " #, c-format msgid "Invalid argument: `%s'." msgstr "Argumento no válido: `%s'." msgid "No actions specified." msgstr "Ninguna acción especificada." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "No se puede abrir pantalla: %s. X debe estar ejecutándose y $DISPLAY " "configurado." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Identificador de ventana no válido: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "espacio de trabajo #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "Acción desconocida: %s" #, c-format msgid "Socket error: %d" msgstr "Error de socket: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Reproduciendo muestra #%d (%s)" #, c-format msgid "No such device: %s" msgstr "No tal dispositivo: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "No se puede conectar con el demonio ESound: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Error <%d> al subir `%s:%s'" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Muestra <%d> subida como `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "Reproduciendo muestra #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "No se puede conectar con el servidor YIFF: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "No se puede cambiar al modo audio `%s'." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Cambio de modo de audio detectado, el modo de audio inicial `%s' ya " "no tiene efecto." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Cambio de modo de audio detectado, cambio de modo de audio " "automático deshabilitado." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Sobreescribiendo el modo de audio anterior `%s'." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Uso: %s [OPCIÓN]...\n" "\n" "Reproduce archivos de audio en eventos GUI de IceWM.\n" "\n" "Opciones:\n" "\n" " -d, --display=DISPLAY Pantalla usada por IceWM " "(predeterminada: $DISPLAY).\n" " -s, --sample-dir=DIR Especifica el directorio que " "contiene\n" " los archivos de sonido (pe ~/.icewm/" "sounds).\n" " -i, --interface=TARGET Especifica la interfaz de objetivo " "de\n" " salida de sonido, entre OSS, YIFF, " "ESD\n" " -D, --device=DEVICE (OSS sólo) especifica el procesador " "de señal\n" " digital (por defecto /dev/dsp).\n" " -S, --server=ADDR:PORT\t(ESD y YIFF) especifica la dirección del " "servidor y\n" " el número del puerto (por defecto " "localhost:16001 para ESD\n" "\t\t\t\ty localhost:9433 para YIFF).\n" " -m, --audio-mode[=MODE] (YIFF sólo) especifica el modo de " "Audio (déjelo\n" " en blanco para obtener una lista).\n" " --audio-mode-auto \t(YIFF sólo) cambia el modo de Audio al " "vuelo a la\n" " mejor coincidencia de muestra de " "audio (puede causar\n" " problemas con otros clientes Y, " "sobreescribe\n" " --audio-mode).\n" "\n" " -v, --verbose Ser prolijo (imprime cada evento de " "sonido a\n" " stdout).\n" " -V, --version Imprime información de la versión y " "sale.\n" " -h, --help Imprime (esta) pantalla de ayuda y " "sale.\n" "\n" "Valores devueltos:\n" "\n" " 0 Éxito.\n" " 1 Error general.\n" " 2 Error de línea de comando.\n" " 3 Error de subsistemas (es decir, no se puede conectar al " "servidor).\n" "\n" msgid "Multiple sound interfaces given." msgstr "Dadas múltiples interfaces de sonido." #, c-format msgid "Support for the %s interface not compiled." msgstr "Soporte para la interfaz %s no compilado." #, c-format msgid "Unsupported interface: %s." msgstr "Interfaz no soportada: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Señal %d recibida: Terminando..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Señal %d recibida: Recargando muestras..." msgid "Hex View" msgstr "Vista Hex" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Expandir pestañas" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Ajustar líneas" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "Uso: icewmbg [ -r | -q ]\n" " -r Reiniciar icewmbg\n" " -q Salir icewmbg\n" "Carga el fondo del escritorio según el archivo de preferencias\n" " DesktopBackgroundCenter - Muestra el fondo del escritorio " "centrado, no embaldosado\n" " SupportSemitransparency - Soporte para terminales semi-" "transparentes\n" " DesktopBackgroundColor - Color del fondo del escritorio\n" " DesktopBackgroundImage - Imagen del fondo del escritorio\n" " DesktopTransparencyColor - Color para anunciar ventanas semi-" "transparentes\n" " DesktopTransparencyImage - Imagen para anunciar ventanas semi-" "transparentes\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: opción no reconocida `%s'\n" "Pruebe con `%s --help' para más información.\n" #, c-format msgid "Loading image %s failed" msgstr "Error al cargar imagen %s" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Error al cargar pixmap \"%s\": %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Uso: icewmhint [class.instance] opción arg\n" #, c-format msgid "Out of memory (len=%d)." msgstr "No queda memoria (len=%d)." msgid "Warning: " msgstr "Atención: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Dirección desconocida en la petición mover/redimensionar: %d" msgid "Default" msgstr "Predeterminado" msgid "(C)" msgstr "(C)" msgid "Theme:" msgstr "Tema:" msgid "Theme Description:" msgstr "Descripción del tema:" msgid "Theme Author:" msgstr "Autor del tema:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm - Acerca de..." msgid "Unable to get current font path." msgstr "No se puede obtener la ruta de la fuente actual." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Formato inesperado de la propiedad ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Referencias múltiples para el gradiente \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "Nombre de gradiente desconocido: %s" msgid "_Logout" msgstr "Cerrar _sesión" msgid "_Cancel logout" msgstr "_Cancelar cerrar" msgid "Lock _Workstation" msgstr "_Bloquear sesión" msgid "Re_boot" msgstr "_Reiniciar" msgid "Shut_down" msgstr "_Apagar" msgid "Restart _Icewm" msgstr "Reiniciar _Icewm" msgid "Restart _Xterm" msgstr "Reiniciar _Xterm" msgid "_Menu" msgstr "_Menú" msgid "_Above Dock" msgstr "_Encima de acople" msgid "_Dock" msgstr "_Acople" msgid "_OnTop" msgstr "En_cima" msgid "_Normal" msgstr "_Normal" msgid "_Below" msgstr "_Debajo" msgid "D_esktop" msgstr "E_scritorio" msgid "_Restore" msgstr "_Restaurar" msgid "_Move" msgstr "_Mover" msgid "_Size" msgstr "_Tamaño" msgid "Mi_nimize" msgstr "Mi_nimizar" msgid "Ma_ximize" msgstr "Ma_ximizar" msgid "_Fullscreen" msgstr "_Pantalla completa" msgid "_Hide" msgstr "_Ocultar" msgid "Roll_up" msgstr "_Enrollar" msgid "R_aise" msgstr "E_levar" msgid "_Lower" msgstr "_Bajar" msgid "La_yer" msgstr "_Capa" msgid "Move _To" msgstr "Mover _a" msgid "Occupy _All" msgstr "Ocupar _todo" msgid "Limit _Workarea" msgstr "_Limitar área de trabajo" msgid "Tray _icon" msgstr "_Icono en la bandeja" msgid "_Close" msgstr "Ce_rrar" msgid "_Kill Client" msgstr "_Matar cliente" msgid "_Window list" msgstr "Lista de _ventanas" msgid "Another window manager already running, exiting..." msgstr "Otro gestor de ventanas ya se está ejecutando, saliendo..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "No se pudo reiniciar: %s\n" "¿Conduce $PATH a %s?" #, fuzzy, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "Uso: %s [OPCIONES]\n" "Inicia el administrador de ventanas IceWM.\n" "\n" "Opciones:\n" " --display=NOMBRE NOMBRE del servidor X a usar.\n" "%s --sync Sincronizar comandos X11.\n" "\n" " -c, --config=ARCHIVO Cargar preferencias desde ARCHIVO.\n" " -t, --theme=ARCHIVO Cargar tema desde ARCHIVO.\n" " -n, --no-configure Ignorar preferencias de archivo.\n" "\n" " -v, --version Imprime información de la versión y sale.\n" " -h, --help Imprime esta pantalla de ayuda y sale.\n" "%s --restart No usar: es una opción interna.\n" "\n" "Variables del entorno:\n" " ICEWM_PRIVCFG=PATH Directorio a usar para los archivos de " "configuración privados del usuario,\n" " \"$HOME/.icewm/\" por defecto.\n" " DISPLAY=NAME Nombre del servidor X a usar, depende de Xlib " "por defecto.\n" " MAIL=URL Ubicación de su buzón. Si el esquema se omite\n" " se supone el \"archivo\" local de esquema.\n" "\n" "Visite http://www.icewm.org/ para informar de fallos, peticiones, " "comentarios....\n" msgid "Confirm Logout" msgstr "Confirmar cerrar sesión" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Al cerrar la sesión se terminarán todas las aplicaciones activas.\n" "¿Desea continuar?" msgid "Bad Look name" msgstr "Nombre de búsqueda erróneo" #, fuzzy msgid "Loc_k Workstation" msgstr "_Bloquear sesión" msgid "_Logout..." msgstr "Cerrar _sesión..." msgid "_Cancel" msgstr "_Cancelar" msgid "_Restart icewm" msgstr "Reiniciar _icewm" msgid "_About" msgstr "Ace_rca de..." msgid "Maximize" msgstr "Maximizar" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Minimizar" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Ocultar" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Enrollar" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Elevar/Bajar" msgid "Kill Client: " msgstr "Terminar cliente: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "¡ATENCIÓN! Todos los cambios no guardados se perderáncuando este " "cliente sea terminado. ¿Desea continuar?" msgid "Restore" msgstr "Restaurar" msgid "Rolldown" msgstr "Desenrollar" #, c-format msgid "Error in window option: %s" msgstr "Error en la opción de ventana: %s" #, c-format msgid "Unknown window option: %s" msgstr "Opción de ventana desconocida: %s" msgid "Syntax error in window options" msgstr "Error de sintaxis en las opciones de ventana" msgid "Out of memory for window options" msgstr "No queda memoria para las opciones de ventana" msgid "Missing command argument" msgstr "Falta argumento del comando" #, c-format msgid "Bad argument %d" msgstr "Argumento %d erróneo" #, c-format msgid "Error at prog %s" msgstr "Error en prog %s" #, c-format msgid "Unexepected keyword: %s" msgstr "Palabra clave inesperada: %s" #, c-format msgid "Error at key %s" msgstr "Error en clave %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programas" msgid "_Run..." msgstr "_Ejecutar..." msgid "_Windows" msgstr "_Ventanas" msgid "_Help" msgstr "A_yuda" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Temas" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Administrador de sesiones: línea %s desconocida" msgid "Task Bar" msgstr "Barra de tareas" msgid "Tile _Vertically" msgstr "_Mosaico vertical" msgid "T_ile Horizontally" msgstr "Mosaico _horizontal" msgid "Ca_scade" msgstr "_Cascada" msgid "_Arrange" msgstr "_Ordenar" msgid "_Minimize All" msgstr "Mi_nimizar todo" msgid "_Hide All" msgstr "Oc_ultar todo" msgid "_Undo" msgstr "_Deshacer" msgid "Arrange _Icons" msgstr "Ordenar _iconos" msgid "_Refresh" msgstr "_Actualizar" msgid "_License" msgstr "_Licencia" msgid "Favorite applications" msgstr "Aplicaciones favoritas" msgid "Window list menu" msgstr "Menú de lista de ventanas" msgid "Show Desktop" msgstr "Mostrar escritorio" msgid "All Workspaces" msgstr "Todos los espacios de trabajo" msgid "Del" msgstr "Supr" msgid "_Terminate Process" msgstr "Term_inar proceso" msgid "Kill _Process" msgstr "Matar _proceso" msgid "_Show" msgstr "_Mostrar" msgid "_Minimize" msgstr "_Minimizar" msgid "Window list" msgstr "Lista de ventanas" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Espacio de trabajo %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Bucle de mensaje: falló select (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Opción no reconocida: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Argumento no reconocido: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Argumento requerido para el cambio %s" #, c-format msgid "Unknown key name %s in %s" msgstr "Nombre clave %s desconocido en %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Argumento erróneo: %s para %s" #, c-format msgid "Bad option: %s" msgstr "Opción errónea: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Error al cargar pixmap \"%s\"" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Pixmap de cursor no válido: \"%s\" contiene demasiados colores únicos" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "¿FALLO? Imlib fue capaz de leer \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "¿FALLO? Cabecera XPM mal formada pero Imlib pudo analizar \"%s\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "¿FALLO? Final inesperado del archivo XPM pero Imlib pudo analizar \"%" "s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "¿FALLO? Carácter inesperado pero Imlib pudo analizar \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "No se pudo cargar fuente \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "La carga de la fuente de retroceso \"%s\" falló" #, c-format msgid "Could not load fontset \"%s\"." msgstr "No se pudo cagar fontset \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "Faltan conjuntos de códigos para el 'fontset' \"%s\":" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "No queda memoria para el pixmap \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Error al cargar imagen \"%s\"" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: Error al adquirir pixmap X" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: error al asignar imagen imlib a pixmap X" msgid "Cu_t" msgstr "Cor_tar" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Copiar" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_Pegar" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Pegar _selección" msgid "Select _All" msgstr "Seleccionar _todo" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Locale no soportado por la biblioteca C. Retrocediendo al locale 'C'." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "Falló determinar el conjunto de códigos del locale actual. " "Suponiendo ISO-8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv no suministra (suficiente) %s a %s convertidores." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Cadena multibyte no válida \"%s\": %s" msgid "OK" msgstr "Aceptar" msgid "Cancel" msgstr "Cancelar" #, c-format msgid "Out of memory for pixel map %s" msgstr "No queda memoria para el mapa de píxeles %s" #, c-format msgid "Could not find pixel map %s" msgstr "No se pudo encontrar mapa de píxeles %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "No queda memoria para el búfer de píxeles RGB %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "No se pudo encontrar búfer de píxeles RGB %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Usando mecanismo de retroceso para convertir píxeles (profundidad: %" "d; máscaras (roja/verde/azul): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d bit visuales no están implementados (aún)" msgid "$USER or $LOGNAME not set?" msgstr "¿$USER o $LOGNAME no configurado?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" no describe un esquema común de internet" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" no contiene ninguna descripción de esquema" #~ msgid " processes." #~ msgstr " procesos." #~ msgid "program label expected" #~ msgstr "esperada etiqueta de programa" #~ msgid "icon name expected" #~ msgstr "esperado nombre de icono" #~ msgid "window management class expected" #~ msgstr "esperada clase de gestión de ventana" #~ msgid "menu caption expected" #~ msgstr "esperado nombre de menú" #~ msgid "opening curly expected" #~ msgstr "esperado {" #~ msgid "action name expected" #~ msgstr "esperado nombre de acción" #~ msgid "unknown action" #~ msgstr "acción desconocida" #~ msgid "Failed to open %s: %s" #~ msgstr "Falló abrir %s: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Falló ejecutar %s: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Falló crear proceso hijo: %s" #~ msgid "Not a regular file: %s" #~ msgstr "No es un archivo regular: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Esperada pareja de dígitos hexadecimales" #~ msgid "Unexpected identifier" #~ msgstr "Identificador inesperado" #~ msgid "Identifier expected" #~ msgstr "Identificador esperado" #~ msgid "Separator expected" #~ msgstr "Separador esperado" #~ msgid "Invalid token" #~ msgstr "Símbolo no válido" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "No un número hexadecimal: %c%c (en \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - formato desconocido (%d)" #~ msgid "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgstr "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgid "bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgstr "bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "CPU: %d %d %d %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat encuentra demasiadas CPUs: deberían ser %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree falló para la ventana 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Compilado con la opción DEBUG. Se imprimirán mensajes de " #~ "depuración." #~ msgid "_No icon" #~ msgstr "_Sin icono" #~ msgid "_Minimized" #~ msgstr "_Minimizada" #~ msgid "_Exclusive" #~ msgstr "E_xclusivo" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X error %s(0x%lX): %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "'Forking' falló (errno=%d)" #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "Falló crear tubería anónima (errno=%d)." #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Pixmap de cursor no válido: \"%s\" contiene demasiados " #~ "colores únicos" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Falló crear tubería anónima: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Falló duplicar descriptor de archivo: %s" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Falló copiar dibujable 0x%x al búfer píxel" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: Falló copiar dibujable 0x%x al búfer píxel (%d:%d-%dx%" #~ "d" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "DEMASIADAS CONEXIONES ICE -- no soportado" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Administrador de sesiones: IceAddConnectionWatch falló" #~ msgid "Session Manager: Init error: %s" #~ msgstr "Administrador de sesiones: error de Init: %s" icewm-1.3.7/po/uk.po0000664000076600007660000010364211463274241013233 0ustar develdevelmsgid "" msgstr "Project-Id-Version: IceWM 1.0.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2002-04-20 01:07+0200\n" "Last-Translator: Volodymyr M. Lisivka \n" "Language-Team: Ukrainian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - ЖивленнÑ" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "П" #, c-format msgid " - Charging" msgstr " - ЗарÑд" msgid "C" msgstr "" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑора: %3.2f %3.2f %3.2f, %d процеÑів." #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Ðевірний протокол Ð´Ð»Ñ Ð¿Ð¾ÑˆÑ‚Ð¾Ð²Ð¾Ñ— Ñкриньки: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Ðевірний до шлÑÑ… до поштової Ñкриньки: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "ВикориÑтовуєтьÑÑ Ð¿Ð¾ÑˆÑ‚Ð¾Ð²Ð° Ñкринька: \"%s\"\n" msgid "Error checking mailbox." msgstr "Помилка перевірки поштової Ñкриньки." #, c-format msgid "%ld mail message." msgstr "%ld поштове повідомленнÑ." #, c-format msgid "%ld mail messages." msgstr "%ld поштових повідомлень." #, fuzzy, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Ð†Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %s:\n" " Поточна швидкіÑть (ввід/вивід):\t%d %s/%d %s\n" " Ð¡ÐµÑ€ÐµÐ´Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÑ–Ñть (ввід/вивід):\t%d %s/%d %s\n" " ПереÑлано даних (ввід/вивід):\t%d %s/%d %s\n" " Ð§Ð°Ñ Ð½Ð° лінії:\t%d:%02d:%02d%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Телефонний номер:\t" msgid "Workspace: " msgstr "Робоче міÑце: " msgid "Back" msgstr "Ðазад" msgid "Alt+Left" msgstr "Alt+Вліво" msgid "Forward" msgstr "Вперед" msgid "Alt+Right" msgstr "Alt+Вправо" msgid "Previous" msgstr "Попередній" msgid "Next" msgstr "ÐаÑтупний" msgid "Contents" msgstr "ЗміÑÑ‚" msgid "Index" msgstr "Покажчик" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Закрити" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "ВикориÑтаннÑ: %s ÐÐЗВÐ_ФÐЙЛУ\n" "\n" "Дуже проÑтий переглÑдач HTML документу, Ñкий задаєтьÑÑ " "ÐÐЗВОЮ_ФÐЙЛУ.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Ðевірний шлÑÑ…: %s\n" msgid "Invalid path: " msgstr "Ðевірний шлÑÑ…: " msgid "List View" msgstr "ПереглÑд ÑпиÑку" msgid "Icon View" msgstr "ПереглÑд піктограм" msgid "Open" msgstr "Відкрити" msgid "Undo" msgstr "Відмінити" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Ðовий" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "ПерезапуÑтити" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Гра IceSame" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "Ð”Ñ–Ñ \"%s\" вимагає Ñк мінімум %d аргументу(ів)." #, c-format msgid "Invalid expression: `%s'" msgstr "Ðеправильний вираз: \"%s\"" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Іменовані Ñимволи у домені \"%s\" (чиÑловий діапазон: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Ðевірне ім'Ñ Ñ€Ð¾Ð±Ð¾Ñ‡Ð¾Ð³Ð¾ проÑтору: \"%s\"" #, c-format msgid "Workspace out of range: %d" msgstr "Робоче міÑце за межами діапазону: %d" #, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "" msgid "GNOME window state" msgstr "Стан вікна GNOME" msgid "GNOME window hint" msgstr "Підказка вікна GNOME" msgid "GNOME window layer" msgstr "Рівень вікна GNOME" msgid "IceWM tray option" msgstr "ÐžÐ¿Ñ†Ñ–Ñ Ð¿Ð°Ð½ÐµÐ»Ñ– завдань IceWM" msgid "Usage error: " msgstr "Помилка викориÑтаннÑ:" #, c-format msgid "Invalid argument: `%s'." msgstr "Ðевірний аргумент: \"%s\"." msgid "No actions specified." msgstr "Ðе зазначено ніÑких дій." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ диÑплей: %s. X-Ñервер повинен бути запущений Ñ– " "змінна $DISPLAY вÑтановлена." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Ðевірний ідентифікатор вікна: \"%s\"" #, c-format msgid "workspace #%d: `%s'\n" msgstr "робоче міÑце #%d: \"%s\"\n" #, c-format msgid "Unknown action: `%s'" msgstr "Ðевідома діÑ: \"%s\"" #, c-format msgid "Socket error: %d" msgstr "Помилка гнізда: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Граю зразок #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Ðема такого приÑтрою: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Ðе вдалоÑÑ Ð·'єднатиÑÑ Ð· демоном звуку ESound: %s" msgid "" msgstr "<немає>" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Помилка <%d> при вивантаженні \"%s:%s\"" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Звук <%d> завантажений Ñк `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "Граю зразок #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Ðе вдалоÑÑ Ð·'єднатиÑÑ Ð· Ñервером звуку YIFF: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ аудіорежим на \"%s\"." #, fuzzy, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "ВиÑвлена зміна аудіорежиму, початковий режим \"%s\" більше не " "викориÑтовуєтьÑÑ." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "ВиÑвлена зміна аудіорежиму, автоматична зміна аудіорежиму заборонена." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "ÐŸÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ аудіорежиму \"%s\"." #, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "" msgid "Multiple sound interfaces given." msgstr "Вказано декілька звукових інтерфейÑів." #, c-format msgid "Support for the %s interface not compiled." msgstr "Підтримка інтерфейÑу %s не вкомпільована." #, c-format msgid "Unsupported interface: %s." msgstr "Ð†Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %s не підтримуєтьÑÑ." #, c-format msgid "Received signal %d: Terminating..." msgstr "Отриманий Ñигнал %d: ÐŸÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð°Ñ†Ñ–..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Отриманий Ñигнал %d: ÐŸÐµÑ€ÐµÐ·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð²ÑƒÐºÑ–Ð²..." msgid "Hex View" msgstr "Вид Hex" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "ВирівнÑти Ñ€Ñдки" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: невідома Ð¾Ð¿Ñ†Ñ–Ñ \"%s\"\n" "Спробуйте \"%s --help\" Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ñ— інформації.\n" #, c-format msgid "Loading image %s failed" msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¼Ð°Ð»ÑŽÐ½ÐºÐ° %s" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¼Ð°Ð¿Ð¸ пікÑелів \"%s\": %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "ВикориÑтаннÑ: icewmhint [Ñlasse.instanÑe] option argument\n" #, c-format msgid "Out of memory (len=%d)." msgstr "ÐевиÑтачає пам'Ñті (len=%d)." msgid "Warning: " msgstr "ПопередженнÑ: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "" #, fuzzy msgid "Default" msgstr "Видалити" msgid "(C)" msgstr "(C)" msgid "Theme:" msgstr "Тема:" msgid "Theme Description:" msgstr "ÐžÐ¿Ð¸Ñ Ñ‚ÐµÐ¼Ð¸:" msgid "Theme Author:" msgstr "Ðвтор теми:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "Про IceWM" msgid "Unable to get current font path." msgstr "Ðеможливо отримати поточний шлÑÑ… до шрифта." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Ðеочікуваний формат влаÑтивоÑті ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Декілька поÑилань на градієнт \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "Ðевідоме ім'Ñ Ð³Ñ€Ð°Ð´Ñ–Ñ”Ð½Ñ‚Ð°: %s" msgid "_Logout" msgstr "_Вихід" msgid "_Cancel logout" msgstr "_Відмінити вихід" msgid "Lock _Workstation" msgstr "Замкнути Ñтанцію" msgid "Re_boot" msgstr "Перезавантажити" msgid "Shut_down" msgstr "Ви_мкнути комп'ютер" msgid "Restart _Icewm" msgstr "ПерезапуÑтити _IceWM" msgid "Restart _Xterm" msgstr "Вийти у _Xterm" msgid "_Menu" msgstr "_Меню" msgid "_Above Dock" msgstr "_Поверх доку" msgid "_Dock" msgstr "_Док" msgid "_OnTop" msgstr "Ð_а верху" msgid "_Normal" msgstr "_Ðормальний" msgid "_Below" msgstr "_Ðижче" msgid "D_esktop" msgstr "СтільницÑ" msgid "_Restore" msgstr "_Відновити" msgid "_Move" msgstr "Пере_міÑтити" msgid "_Size" msgstr "_Розмір" msgid "Mi_nimize" msgstr "Згорнути" msgid "Ma_ximize" msgstr "Розгорнути" msgid "_Fullscreen" msgstr "" msgid "_Hide" msgstr "_Сховати" msgid "Roll_up" msgstr "Згорнути в Ñмужку" msgid "R_aise" msgstr "ПіднÑти" msgid "_Lower" msgstr "_ОпуÑтити" msgid "La_yer" msgstr "Шар" msgid "Move _To" msgstr "ПеренеÑти _на" msgid "Occupy _All" msgstr "Видно _на вÑÑ–Ñ…" msgid "Limit _Workarea" msgstr "_Обмежити робочий проÑтір" msgid "Tray _icon" msgstr "_Піктограма на панелі" msgid "_Close" msgstr "Закрити" msgid "_Kill Client" msgstr "Вбити _клієнта" msgid "_Window list" msgstr "_СпиÑок вікон" msgid "Another window manager already running, exiting..." msgstr "Віконний менеджер вже запущений, виходжу..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Ðе можу перезапуÑтити: %s\n" "Перевірте, чи $PATH веде до %s." #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "" msgid "Confirm Logout" msgstr "ÐŸÑ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸Ñ…Ð¾Ð´Ñƒ" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "При виході будуть закриті вÑÑ– активні аплікації.\n" "Продовжити?" msgid "Bad Look name" msgstr "Погане ім'Ñ" #, fuzzy msgid "Loc_k Workstation" msgstr "Замкнути Ñтанцію" msgid "_Logout..." msgstr "_Вихід..." msgid "_Cancel" msgstr "_СкаÑувати" msgid "_Restart icewm" msgstr "_ПерезапуÑтити IceWM" msgid "_About" msgstr "_Про" msgid "Maximize" msgstr "Розгорнути" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Згорнути" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Прибрати" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Згорнути в Ñмужку" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "ПіднÑти/ОпуÑтити" msgid "Kill Client: " msgstr "Вбити клієнта: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "УВÐГÐ! Ð’ÑÑ– незбережені дані будуть втрачені\n" "при закритті цього вікна. Ви бажаєте закрити його?" msgid "Restore" msgstr "Відновити" msgid "Rolldown" msgstr "Розгорнути Ñмужку" #, c-format msgid "Error in window option: %s" msgstr "Помилка в опції вікна: %s" #, c-format msgid "Unknown window option: %s" msgstr "Ðевідома Ð¾Ð¿Ñ†Ñ–Ñ Ð²Ñ–ÐºÐ½Ð°: %s" msgid "Syntax error in window options" msgstr "СинтакÑична помилка у опціÑÑ… вікна" msgid "Out of memory for window options" msgstr "ÐевиÑтачає пам'Ñті Ð´Ð»Ñ Ð¾Ð¿Ñ†Ñ–Ð¹ вікна" msgid "Missing command argument" msgstr "Пропущений аргумент команди" #, c-format msgid "Bad argument %d" msgstr "Ðевірний аргумент %d" #, c-format msgid "Error at prog %s" msgstr "Помилка у програмі %s" #, c-format msgid "Unexepected keyword: %s" msgstr "" #, c-format msgid "Error at key %s" msgstr "Помилка у ключі %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Програми" msgid "_Run..." msgstr "_ЗапуÑтити..." msgid "_Windows" msgstr "_Вікна" msgid "_Help" msgstr "_Довідка" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Теми" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Session Manager: невідома Ð»Ñ–Ð½Ñ–Ñ %s" msgid "Task Bar" msgstr "Панель завдань" msgid "Tile _Vertically" msgstr "ВиклаÑти по _вертикалі" msgid "T_ile Horizontally" msgstr "ВиклаÑти по _горизонталі" msgid "Ca_scade" msgstr "Ка_Ñкадом" msgid "_Arrange" msgstr "_ВпорÑдкувати" msgid "_Minimize All" msgstr "_Згорнути уÑÑ–" msgid "_Hide All" msgstr "_Сховати уÑÑ–" msgid "_Undo" msgstr "_Повернути" msgid "Arrange _Icons" msgstr "ВпорÑдкувати _іконки" msgid "_Refresh" msgstr "_Оновити" msgid "_License" msgstr "_ЛіцензіÑ" msgid "Favorite applications" msgstr "Улюблені аплікації" msgid "Window list menu" msgstr "Меню ÑпиÑоку вікон" #, fuzzy msgid "Show Desktop" msgstr "СтільницÑ" #, fuzzy msgid "All Workspaces" msgstr "Робоче міÑце: " #, fuzzy msgid "Del" msgstr "Видалити" msgid "_Terminate Process" msgstr "_Перервати процеÑ" msgid "Kill _Process" msgstr "Вбити процеÑ" msgid "_Show" msgstr "_Показати" msgid "_Minimize" msgstr "_Згорнути" msgid "Window list" msgstr "СпиÑок вікон" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Робоче міÑце %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Цикл повідомлень: select не вдавÑÑ (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Ðевідома опціÑ: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Ðевідомий аргумент: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "ÐžÐ¿Ñ†Ñ–Ñ %s вимагає аргумент" #, c-format msgid "Unknown key name %s in %s" msgstr "Ðевідомий Ñимвол %s у %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Ðевірний argument: %s Ð´Ð»Ñ %s" #, c-format msgid "Bad option: %s" msgstr "Ðевірна опціÑ: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¼Ð°Ð¿Ð¸ пікÑелів \"%s\"" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Ðевірна мапа пікÑелів Ð´Ð»Ñ ÐºÑƒÑ€Ñору: \"%s\" занадто багато різних " "кольорів" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "" #, c-format msgid "Could not load font \"%s\"." msgstr "Ðе можу завантажити шрифт \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð³Ð¾ шрифту \"%s\"." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Ðе можу завантажити набір шрифтів \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "ВідÑутні кодові Ñторінки Ð´Ð»Ñ Ð½Ð°Ð±Ð¾Ñ€Ñƒ шрифтів \"%s\":" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "ÐевиÑтачає пам'Ñті Ð´Ð»Ñ Ð¼Ð°Ð¿Ð¸ пікÑелів \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¼Ð°Ð»ÑŽÐ½ÐºÐ° \"%s\"" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: помилка при отриманні мапи пікÑелів X" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: помилка Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¼Ð°Ð»ÑŽÐ½ÐºÑƒ Imlib у мапу пікÑелів X" msgid "Cu_t" msgstr "Вирізати" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "Скопіювати" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_Ð’Ñтавити" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Ð’Ñ_тавити виділеннÑ" msgid "Select _All" msgstr "Вибрати вÑе" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "" msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "Iconv не підтримує (на доÑтатньому рівні) Ð¿ÐµÑ€ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð· %s у %s." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Ðевірна багатобайтова Ñтрічка \"%s\": %s" msgid "OK" msgstr "Гаразд" msgid "Cancel" msgstr "СкаÑувати" #, c-format msgid "Out of memory for pixel map %s" msgstr "ÐевиÑтачає пам'Ñті Ð´Ð»Ñ Ð¼Ð°Ð¿Ð¸ пікÑелів %s" #, c-format msgid "Could not find pixel map %s" msgstr "Ðе можу знайти малюнок %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "ÐевиÑтачає пам'Ñті Ð´Ð»Ñ Ð±ÑƒÑ„ÐµÑ€Ñƒ RGB пікÑелів %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Ðе можу знайти буфер RGB пікÑелів %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "ВикориÑтовуєтьÑÑ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¸Ð¹ механізм Ð´Ð»Ñ ÐºÐ¾Ð½Ð²ÐµÑ€ÑÑ–Ñ— пікÑелів (глибина " "кольору: %d; маÑка (червоний/зелений/Ñиній): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d-бітний графічний буфер не підтримуєтьÑÑ (ще)" msgid "$USER or $LOGNAME not set?" msgstr "Ðе вÑтановлені змінні $USER Ñ– $LOGNAME?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" не Ñ” Ñтандартною адреÑою Інтернету" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" не міÑтить опиÑу Ñхеми" #, fuzzy #~ msgid "program label expected" #~ msgstr "ОчікуєтьÑÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŽÐ²Ð°Ñ‡" #, fuzzy #~ msgid "menu caption expected" #~ msgstr "ОчікуєтьÑÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŽÐ²Ð°Ñ‡" #, fuzzy #~ msgid "opening curly expected" #~ msgstr "ОчікуєтьÑÑ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€" #, fuzzy #~ msgid "action name expected" #~ msgstr "ОчікуєтьÑÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŽÐ²Ð°Ñ‡" #, fuzzy #~ msgid "unknown action" #~ msgstr "Ðевідома діÑ: \"%s\"" #, fuzzy #~ msgid "Failed to open %s: %s" #~ msgstr "Помилка запиÑу файлу Ñ–Ñторії %s: %s" #, fuzzy #~ msgid "Failed to execute %s: %s" #~ msgstr "Помилка запиÑу файлу Ñ–Ñторії %s: %s" #, fuzzy #~ msgid "Failed to create child process: %s" #~ msgstr "Помилка запиÑу файлу Ñ–Ñторії %s: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "ОчікуєтьÑÑ Ð¿Ð°Ñ€Ð° шіÑнадÑткових цифр" #~ msgid "Unexpected identifier" #~ msgstr "Ðеочікуваний ідентифікатор" #~ msgid "Identifier expected" #~ msgstr "ОчікуєтьÑÑ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€" #~ msgid "Separator expected" #~ msgstr "ОчікуєтьÑÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŽÐ²Ð°Ñ‡" #, fuzzy #~ msgid "Invalid token" #~ msgstr "Ðевірний шлÑÑ…: " #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Ðе шіÑнадцÑткове чиÑло: %c%c (у \"%s\")" #~ msgid "# NOTE: All settings are commented out by default, be sure " #~ "to\n" #~ "# uncomment them if you change them!\n" #~ "\n" #~ msgstr "# Примітка: За замовчуваннÑм вÑÑ– Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ " #~ "закоментовані.\n" #~ "# Якщо ви збираєтеÑÑŒ що-небудь змінювати, то тоді\n" #~ "# розкоментуйте потрібні!\n" #~ "\n" #~ msgid "# preferences(%s) - generated by genpref\n" #~ "\n" #~ msgstr "# налаштуваннÑ(%s) - згенеровані genpref\n" #~ "\n" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Помилка ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð³Ñ€Ð°Ñ„Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ елемента 0x%x у буфер " #~ "пікÑелів" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - невідомий формат (%d)" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Скомпільований з прапорцем DEBUG. ДрукуватимутьÑÑ " #~ "Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²Ñ–Ð´Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ." #~ msgid "Gnome User Apps" #~ msgstr "Ðплікації кориÑтувача Gnome" #~ msgid "M" #~ msgstr "М" #~ msgid "Obsolete option: %s" #~ msgstr "ЗаÑтаріла опціÑ: %s" #~ msgid "Pipe creation failed (errno=%d)." #~ msgstr "Помилка ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ°Ð½Ð°Ð»Ñƒ (errno=%d)." #~ msgid "Resource allocation for rotated string \"%s\" (%dx%d px) " #~ "failed" #~ msgstr "Помилка Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ Ñ€ÐµÑурÑів Ð´Ð»Ñ Ð¾Ð±ÐµÑ€Ð½ÐµÐ½Ð¾Ñ— Ñтрічки \"%s\" (%dx%" #~ "d px)" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Session Manager: помилка у IceAddConnectionWatch." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Session Manager: помилка ініціалізації: %s" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "Забагато з'єднань Ice -- не підтримуєтьÑÑ" #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "ВикориÑтаннÑ: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Змінює тло Ñтільниці при перемиканні робочого проÑтору.\n" #~ "Перший малюнок викориÑтовуєтьÑÑ Ð·Ð° замовчуваннÑм.\n" #~ "\n" #~ "-s, --semitransparency Ввімкнути підтримку напівпрозорих " #~ "терміналів\n" #~ msgid "Window %p has no XA_ICEWM_PID property. Export the " #~ "LD_PRELOAD variable to preload the preice library." #~ msgstr "Вікно %p не має влаÑтивоÑті XA_ICEWM_PID. ЕкÑпортуйте змінну " #~ "Ñередовища LD_PRELOAD, щоб попередньо завантажити бібліотеку preice." #~ msgid "X error %s(0x%lX): %s" #~ msgstr "Помилка X-Ñервера %s(0x%lX): %s" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "Помилка XQueryTree Ð´Ð»Ñ Ð²Ñ–ÐºÐ½Ð° 0x%x" #~ msgid "_Exclusive" #~ msgstr "_ВинÑткове" #~ msgid "_Minimized" #~ msgstr "_Згорнуте" #~ msgid "_No icon" #~ msgstr "_Без піктограми" #~ msgid "cpu: %d %d %d %d" #~ msgstr "ЦП: %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "Kstat знайшов забагато процеÑорів: повинно бути %d" icewm-1.3.7/po/nl.po0000664000076600007660000011265611463274241013232 0ustar develdevel# Dutch messages for IceWM # Copyright (C) 2003 Free Software Foundation, Inc. # Ton Kersten , 2003-2005 # msgid "" msgstr "Project-Id-Version: icewm 1.2.23\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2005-10-07 10:20+0200\n" "Last-Translator: Ton Kersten \n" "Language-Team: Dutch\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Voeding" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "E" #, c-format msgid " - Charging" msgstr " - Opladen" msgid "C" msgstr "C" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "CPU Belasting: %3.2f %3.2f %3.2f, %d processen" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "CPU Belasting:" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Onbekend E-mail protocol: »%s«" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Ongeldig mailbox pad: »%s«" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Gebruikt postbus: »%s«\n" msgid "Error checking mailbox." msgstr "Probleem bij het controleren van het postbus" #, c-format msgid "%ld mail message." msgstr "%ld bericht." #, c-format msgid "%ld mail messages." msgstr "%ld berichten." #, fuzzy, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Interface %s:\n" " Huidige (in/uit):\t%d %s/%d %s\n" " Gemiddeld (in/uit):\t%d %s/%d %s\n" " Totaal (in/uit):\t%d %s/%d %s\n" " Online-tijd:\t%d:%02d:%02d%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Beller id:\t" msgid "Workspace: " msgstr "Werkplaats: " msgid "Back" msgstr "Terug" msgid "Alt+Left" msgstr "Alt+Links" msgid "Forward" msgstr "Verder" msgid "Alt+Right" msgstr "Alt+Rechts" msgid "Previous" msgstr "Terug" msgid "Next" msgstr "Volgende" msgid "Contents" msgstr "Inhoudsopgave" msgid "Index" msgstr "Index" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Sluiten" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Syntax: %s BESTANDSNAAM\n" "\n" "Een eenvoudige HTML-Browser om BESTANDSNAAM te bekijken.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Ongeldig pad: %s\n" msgid "Invalid path: " msgstr "Ongeldig pad: " msgid "List View" msgstr "Lijst" msgid "Icon View" msgstr "Pictogrammen" msgid "Open" msgstr "Openen" msgid "Undo" msgstr "Ongedaan maken" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Nieuw" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Herstart" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Hetzelfde spel" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "Actie `%s' heeft minimaal %d argumenten nodig." #, fuzzy, c-format msgid "Invalid expression: `%s'" msgstr "Ongeldig argument: »%s«." #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Genoemde symbolen van het domein »%s« (Bereik: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Ongeldig werkplaatsnummer: »%s«" #, c-format msgid "Workspace out of range: %d" msgstr "Werkplaats buiten het bereik: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Syntax: %s [OPTIES] ACTIES\n" "\n" "Opties:\n" " -display DISPLAY Met de door DISPLAY gedefinieerde X-" "Server\n" " verbinden.\n" " Voorbeeld: $DISPLAY of :0.0 als " "DISPLAY niet gezet is.\n" " -window VENSTER_ID Het te manipuleren venster. " "Bijzondere\n" " ID's zijn »root« voor de hele " "werkplaats en »focus«\n" " voor het venster dat nu de focus " "heeft.\n" "\n" "Acties:\n" " setIconTitle TITEL Zet de icoon titel.\n" " setWindowTitle TITEL Zet de venster titel.\n" " setState MASKER TOESTAND Zet de Gnome venster instelling naar " "TOESTAND\n" " Alleen de door MASKER gekozen bits " "worden\n" " veranderd. TOESTAND en MASKER zijn " "uitdrukkingen\n" "\t uit het »GNOME-Venstertoestand« domein.\n" " toggleState TOESTAND Zet de Gnome venster instelling naar " "TOESTAND\n" " setHints OMSCHRIJVING Zet de Gnome venster omschrijving.\n" " setLayer DESK Plaatst het venster op een andere " "desktop.\n" " setWorkspace WERKPLAATS Plaatst het venster op een andere " "werkplaats.\n" " Bij de keuze voor een andere " "werkplaats wordt de\n" " huidige werkplaats gewisseld.\n" " listWorkspaces Toont een lijst van alle " "werkplaatsen.\n" " setTrayOption TRAYOPTIE Stelt de IceWM-Trayoptie in.\n" "\n" "Expressies:\n" " Expressies zijn reeksen symbolen uit hetzelfde domein, die door " "het plusteken »+« of een vertikale streep »|« verbonden zijn:\n" "\n" " EXPRESSIE ::= SYMBOOL | EXPRESSIE ( `+' | `|' ) SYMBOOL\n" "\n" msgid "GNOME window state" msgstr "GNOME-Venster status" msgid "GNOME window hint" msgstr "GNOME-Venster omschrijving" msgid "GNOME window layer" msgstr "GNOME venster laag" msgid "IceWM tray option" msgstr "IceWM tray optie" msgid "Usage error: " msgstr "Syntaxfout: %d" #, c-format msgid "Invalid argument: `%s'." msgstr "Ongeldig argument: »%s«." msgid "No actions specified." msgstr "Geen aktie aangegeven." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Kan het display %s niet gebruiken. De X-Server moet werken en \n" "de omgevingsvariabele $DISPLAY moet hiernaar verwijzen." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Ongeldige venster identificatie: »%s«" #, c-format msgid "workspace #%d: `%s'\n" msgstr "Werkplaats #%d: »%s«\n" #, c-format msgid "Unknown action: `%s'" msgstr "Onbekende actie: »%s«" #, c-format msgid "Socket error: %d" msgstr "Sokjes fout ;-): %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Speel sample #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Onbekend apparaat: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Kan geen verbinding met de ESound-Daemon maken: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Fout <%d> bij het uploaden van »%s:%s«" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Sample <%d> werd als »%s:%s« geladen" #, c-format msgid "Playing sample #%d" msgstr "Speel sample #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Kan geen verbinding met YIFF-server maken: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Kan niet naar audiomode »%s« wisselen." #, fuzzy, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Audiomode wissel gedetecteerd. De oorspronkelijke audiomode »%s« " "wordt niet verder gebruikt." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Audiomode wissel gedetecteerd. Automatische wissel uitgeschakeld." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Vorige audiomode overruled »%s«." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Syntax: %s [OPTION]...\n" "\n" "Speelt de bij IceWM voorkomende GUI-acties passende " "geluidsbestanden.\n" "\n" "Opties:\n" "\n" " -d, --display=DISPLAY Het door IceWM gebruikte display\n" " (Standaard: $DISPLAY).\n" " -s, --sample-dir=BESTAND Een audio bestand -i, --" "interface=DOEL Het gebruikte audiointerface,\n" " zoals OSS, YIFF of ESD\n" " -D, --device=GERÄT Alleen OSS: De digitale " "signalprocessor\n" " (Standaard: /dev/dsp).\n" " -S, --server=ADRESE:POORT ESD en YIFF: Serveradres en -" "poortnummer\n" " (Standard: localhost:16001 für ESD\n" " und localhost:9433 für YIFF).\n" " -m, --audio-mode[=MODE] Alleen YIFF: Audiomode (leeg laten, " "om een\n" " overzicht te krijgen).\n" " --audio-mode-auto Alleen YIFF: Wisselen van de " "audiomode naar behoefte\n" " (Kan problemen met andere Y-clients\n" " veroorzaken, overschrijft --audio-" "mode).\n" " -v, --verbose Wees praatgraag. (Toont alle GUI-" "interacties op\n" " stdout).\n" " -V, --version Toont de programma versie.\n" " -h, --help Toont deze hulp.\n" "\n" "Resultaat:\n" "\n" " 0 Succes.\n" " 1 Algemene fout.\n" " 2 Commando regel fout.\n" " 3 Fout in een subsysteem (In het algemeen geen verbinding met " "de server)\n" " \n" msgid "Multiple sound interfaces given." msgstr "Er werden meerdere audiointerfaces aangegeven." #, c-format msgid "Support for the %s interface not compiled." msgstr "De ondersteuning voor de %s-interface werd niet meegecompileerd." #, c-format msgid "Unsupported interface: %s." msgstr "Niet ondersteunde audiointerface: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Signaal %d ontvangen: Het programma wordt gestopt..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Signaal %d ontvangen: Samples worden geactualiseerd..." msgid "Hex View" msgstr "Hexadecimal" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Tabstops uitbreiden" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Lange regels afbreken" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "Gebruik: icewmbg [ -r | -q ]\n" " -r Herstart icewmbg\n" " -q Stop icewmbg\n" "Laad bureaublad achtergrond zoals gedefinieerd in voorkeur bestand\n" " DesktopBackgroundCenter - Toon achtergrond gecentreerd\n" " SupportSemitransparency - Ondersteun semi-transparante " "achtergrond\n" " DesktopBackgroundColor - Bureaublad achtergrond kleur\n" " DesktopBackgroundImage - Bureaublad achtergrond afbeelding\n" " DesktopTransparencyColor - Kleur voor semi-transparente " "achtergrond\n" " DesktopTransparencyImage - Afbeelding voor semi-transparente " "achtergrond\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: Onbekende optie: »%s«\n" "Probeer »%s --help« voor meer informatie.\n" #, c-format msgid "Loading image %s failed" msgstr "Fout bij het laden van plaatje %s" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Fout bij het laden van plaatje »%s«: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Syntax: icewmhint [klasse.instantie] optie argument\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Onvoldoende geheugen (len=%d)." msgid "Warning: " msgstr "Waarschuwing: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Onbekende richting in verplaats/schaal verzoek: %d" #, fuzzy msgid "Default" msgstr "Verwijderen" msgid "(C)" msgstr "©" msgid "Theme:" msgstr "Thema:" msgid "Theme Description:" msgstr "Thema omschrijving:" msgid "Theme Author:" msgstr "Thema auteur:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "IceWM - Over" msgid "Unable to get current font path." msgstr "Kan het lettertype pad niet bepalen." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Onverwacht formaat van de ICEWM_FONT_PATH eigenschap." #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Meerdere verwijzingen naar de gradient »%s«." #, c-format msgid "Unknown gradient name: %s" msgstr "Onbekende gradient naam: »%s«" # OS/2 is dead, but... ;-) msgid "_Logout" msgstr "_Afmelden" msgid "_Cancel logout" msgstr "_Afmelden afbreken" msgid "Lock _Workstation" msgstr "Werkstation _blokkeren" msgid "Re_boot" msgstr "_Re_boot" msgid "Shut_down" msgstr "Sto_ppen" msgid "Restart _Icewm" msgstr "_Icewm Opnieuw starten" msgid "Restart _Xterm" msgstr "_Xterm opnieuw starten" msgid "_Menu" msgstr "_Menu" msgid "_Above Dock" msgstr "_Over de Dock" msgid "_Dock" msgstr "_Dock" msgid "_OnTop" msgstr "_BovenIn" msgid "_Normal" msgstr "_Normaal" msgid "_Below" msgstr "_Onder" msgid "D_esktop" msgstr "D_esktop" msgid "_Restore" msgstr "_Herstellen" msgid "_Move" msgstr "_Verplaatsen" msgid "_Size" msgstr "_Grootte veranderen" msgid "Mi_nimize" msgstr "Mi_nimaliseren" msgid "Ma_ximize" msgstr "Ma_ximaliseren" msgid "_Fullscreen" msgstr "_Volledig scherm" msgid "_Hide" msgstr "Verb_ergen" msgid "Roll_up" msgstr "Op_rollen" msgid "R_aise" msgstr "St_ijgen" msgid "_Lower" msgstr "Da_len" msgid "La_yer" msgstr "_Laag" msgid "Move _To" msgstr "Verschuiven naa_r" msgid "Occupy _All" msgstr "Op _alle werkplaatsen" msgid "Limit _Workarea" msgstr "_Beperkte werkplaats" msgid "Tray _icon" msgstr "Tray_icon" msgid "_Close" msgstr "_Sluiten" msgid "_Kill Client" msgstr "Programma stoppen" msgid "_Window list" msgstr "_Window lijst" # msgid "Another window manager already running, exiting..." msgstr "Een andere window manager is al aktief. Icewm wordt gestopt...." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "De herstart is mislukt: %s\n" "Verwijst de »PATH« variable naar de programma directory »%s«?" #, fuzzy, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "Gebruik: %s [OPTIES]\n" "Start de IceWM window manager.\n" "\n" "Opties:\n" " --display=NAAM NAAM van de te gebruiken X server.\n" "%s --sync Synchroniseer X11 commando's.\n" "\n" " -c, --config=BESTAND Laad voorkeuren uit BESTAND.\n" " -t, --theme=BESTAND Laad thema uit BESTAND.\n" " -n, --no-configure Negeer voorkeuren bestand.\n" "\n" " -v, --version Toon versie informatie en stop.\n" " -h, --help Toon deze hulp en stop.\n" "%s --restart Niet gebruiken. Uitsluitend voor intern " "gebruik.\n" "\n" "Omgevings variabelen:\n" " ICEWM_PRIVCFG=PAD Directory voor persoonlijke " "voorkeurbestanden,\n" " standaars \"$HOME/.icewm/\".\n" " DISPLAY=NAME NAAM van de te gebruiker X server, hangt af " "van Xlib by default.\n" " MAIL=URL Lokatie van uw postbus. Als het schema niet is " "opgegeven\n" " wordt aangenomen dat het lokale schema " "gebruikt moet worden.\n" "\n" "Bezoek http://www.icewm.org/ voor fout meldingen, ondersteunings " "verzoeken, commentaar...\n" msgid "Confirm Logout" msgstr "Afmelden bevestigen" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Bij het afmelden worden alle actieve programma's afgesloten.\n" "Afmelden?" # msgid "Bad Look name" msgstr "Ongeldige 'Kijk-naam' (look-Option)" #, fuzzy msgid "Loc_k Workstation" msgstr "Werkstation _blokkeren" msgid "_Logout..." msgstr "_Afmelden..." msgid "_Cancel" msgstr "Af_breken" msgid "_Restart icewm" msgstr "IceWM _herstarten" msgid "_About" msgstr "_Over" msgid "Maximize" msgstr "Maximaliseren" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Minimaliseren" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Verbergen" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Oprollen" # #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Stijgen/Dalen" # msgid "Kill Client: " msgstr "Stoppen van: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "PAS OP! Alle niet opgeslagen veranderingen gaan verloren\n" "als u dit programma stopt!\n" "Wilt u doorgaan?" msgid "Restore" msgstr "Herstellen" msgid "Rolldown" msgstr "Afrollen" #, c-format msgid "Error in window option: %s" msgstr "Foutieve window optie: %s" #, c-format msgid "Unknown window option: %s" msgstr "Onbekende window optie: %s" msgid "Syntax error in window options" msgstr "Syntaxfout in window optie" msgid "Out of memory for window options" msgstr "Onvoldoende geheugen voor de window opties" msgid "Missing command argument" msgstr "Onvoldoende argumenten" #, c-format msgid "Bad argument %d" msgstr "Ongeldig argument: %d" #, c-format msgid "Error at prog %s" msgstr "Fout bij programma %s" #, c-format msgid "Unexepected keyword: %s" msgstr "Onverwacht woord: %s" #, c-format msgid "Error at key %s" msgstr "Fout bij toets %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programma's" msgid "_Run..." msgstr "Uit_voeren..." msgid "_Windows" msgstr "_Windows" msgid "_Help" msgstr "_Help" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Thema's" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Sessie manager: Onbekende regel %s" msgid "Task Bar" msgstr "Taak lijst" msgid "Tile _Vertically" msgstr "_Vertikaal uitlijnen" msgid "T_ile Horizontally" msgstr "_Horizontaal uitlijnen" msgid "Ca_scade" msgstr "_Overlappend uitlijnen" msgid "_Arrange" msgstr "_Optimaliseren" msgid "_Minimize All" msgstr "Alles _minimaliseren" msgid "_Hide All" msgstr "Alles _verstoppen" msgid "_Undo" msgstr "_Ongedaan" msgid "Arrange _Icons" msgstr "_Pictogrammen opruimen" msgid "_Refresh" msgstr "_Verversen" msgid "_License" msgstr "_Licentie" msgid "Favorite applications" msgstr "Favoriete programma's" msgid "Window list menu" msgstr "Window lijst menu" #, fuzzy msgid "Show Desktop" msgstr "D_esktop" #, fuzzy msgid "All Workspaces" msgstr "Werkplaats: " #, fuzzy msgid "Del" msgstr "Verwijderen" msgid "_Terminate Process" msgstr "Programma stoppen" msgid "Kill _Process" msgstr "Programma stoppen" msgid "_Show" msgstr "_Tonen" msgid "_Minimize" msgstr "Mi_nimaliseren" msgid "Window list" msgstr "Window lijst" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Werkplaats %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Boodschaplus: select mislukt (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Onbekende optie: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Onbekend argument: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "De %s-optie heeft een argument nodig." #, c-format msgid "Unknown key name %s in %s" msgstr "Onbekende toets %s in %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Ongeldig argument: %s voor %s" #, c-format msgid "Bad option: %s" msgstr "Ongeldige optie: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Laden van afbeelding »%s« mislukt" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Ongeldige cursorpixmap: »%s« bevat te veel unieke kleuren" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "FOUT? Imlib was in staat »%s« te lezen" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "BUG? Ongeldige XPM-Header (Imlib heeft het bestand »%s« toch gelezen)" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "BUG? Onverwacht einde van het XPM-bestand (Imlib heeft het bestand »%" "s« toch gelezen)" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "BUG? Onverwacht teken (Imlib heeft het bestand »%s« toch gelezen)" #, c-format msgid "Could not load font \"%s\"." msgstr "Het lettertype »%s« kon niet geladen worden." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Terugval op lettertype »%s« is mislukt." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Lettertypeset »%s« kon niet geladen worden." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "Missende codeset in de lettertpeset »%s«:" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Onvoldoende geheugen voor afbeelding »%s«" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Laden van de afbeelding »%s« mislukt" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: Overname van de X Pixmap is mislukt" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Afbeelding van het Imlib-beeld op een X-Pixmap is mislukt" msgid "Cu_t" msgstr "Kn_ippen" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Kopieren" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_Plakken" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Selectie _plakken" msgid "Select _All" msgstr "_Alles selecteren" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Lokaliteit wordt niet ondersteund. 'C' lokaliteit wordt gebruikt." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "Kom huidige lokaliteit niet bepalen. Ga uit van ISO-8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv heeft (onvoldoende) %s naar %s-vertalers." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Ongeldige Multibyte-string »%s«: %s" msgid "OK" msgstr "OK" msgid "Cancel" msgstr "Niet afmelden" #, c-format msgid "Out of memory for pixel map %s" msgstr "Onvoldoende geheugen voor pixmap %s" #, c-format msgid "Could not find pixel map %s" msgstr "Pixmap %s niet gevonden" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Onvoldoende geheugen voor RGB pixel buffer »%s«" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "RGB pixel buffer »%s« niet gevonden" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Gebruik terugval mechanisme om pixels te converteren.(Kleurdiepte: %" "d, Masker (Rood/Groen/Blauw): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d-Bit-Visuals worden (momenteel) niet ondersteunt" msgid "$USER or $LOGNAME not set?" msgstr "Zijn de variabelen $USER of $LOGNAME gezet?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "»%s« voldoet niet aan de Common Internet Scheme Syntax" #, c-format msgid "\"%s\" contains no scheme description" msgstr "»%s« bevat geen schema beschrijving" #~ msgid " processes." #~ msgstr " processen" #, fuzzy #~ msgid "program label expected" #~ msgstr "Scheidingsteken verwacht" #~ msgid "icon name expected" #~ msgstr "icoon naam verwacht" #~ msgid "window management class expected" #~ msgstr "venster beheer klasse verwacht" #, fuzzy #~ msgid "menu caption expected" #~ msgstr "Scheidingsteken verwacht" #, fuzzy #~ msgid "opening curly expected" #~ msgstr "Sleutelwoord verwacht" #, fuzzy #~ msgid "action name expected" #~ msgstr "Scheidingsteken verwacht" #, fuzzy #~ msgid "unknown action" #~ msgstr "Onbekende actie: »%s«" #~ msgid "Failed to open %s: %s" #~ msgstr "Kom %s niet openen: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Kon %s niet uitvoeren: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Kon kind proces niet creeeren: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Is geen standaard bestand: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Paar van hexadecimalen tekens verwacht" #~ msgid "Unexpected identifier" #~ msgstr "Onverwacht sleutelwoord" #~ msgid "Identifier expected" #~ msgstr "Sleutelwoord verwacht" #~ msgid "Separator expected" #~ msgstr "Scheidingsteken verwacht" #, fuzzy #~ msgid "Invalid token" #~ msgstr "Ongeldig pad: " #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Geen hexadecimaal cijfer: %c%c (in »%s«)" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - Onbekend formaat (%d)" #~ msgid "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgstr "status:\tuser = %i, nice = %i, sys = %i, idle = %i " #~ msgid "bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgstr "balken:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #, fuzzy #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "CPU: %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat meldt te veel CPUs: Het moeten er %d zijn" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree is mislukt voor venster 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Met DEBUG-vlag gecompileert. Debugging boodschappen worden " #~ "getoont." #~ msgid "_No icon" #~ msgstr "_Geen icon" #~ msgid "_Minimized" #~ msgstr "_Geminimaliseert" #~ msgid "_Exclusive" #~ msgstr "_Exclusief" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X-Protocol fout in %s(0x%lX): %s" #, fuzzy #~ msgid "Forking failed (errno=%d)" #~ msgstr "Pipe creatie fout (errno=%d)." #, fuzzy #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "Pipe creatie fout (errno=%d)." #, fuzzy #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Ongeldige cursorpixmap: »%s« bevat te veel unieke kleuren" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Kon anonieme 'pipe' niet openen: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Kan bestandshendel niet dupliceren: %s" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Kopieren van 0x%x tekenbuffer mislukt" #, fuzzy #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: Kopieren van 0x%x tekenbuffer mislukt" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "TE VEEL ICE VERBINDINGEN -- niet ondersteund" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Sessie manager: IceAddConnectionWatch mislukt." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Sessie manager: Initialisatie fout: %s" #~ msgid "M" #~ msgstr "L" #~ msgid "# preferences(%s) - generated by genpref\n" #~ "\n" #~ msgstr "# Instellingen(%s) - Gegenereerd door genpref\n" #~ "\n" #~ msgid "# NOTE: All settings are commented out by default, be sure " #~ "to\n" #~ "# uncomment them if you change them!\n" #~ "\n" #~ msgstr "# Opmerking: Alle instellingen zijn standaard uit-" #~ "gecommentarieerd\n" #~ "# Verwijder het commentaarteken (#) als u iets wilt " #~ "veranderden\n" #~ "\n" #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "Syntax: icewmbg [OPTIE]... pixmap1 [pixmap2]...\n" #~ "Veranderd de werkplaats achtergrond bij werkplaats wissel.\n" #~ "Het eerste bestand dient als staandard-Pixmap.\n" #~ "\n" #~ "-s, --semitransparency Activeert de ondersteuning voor " #~ "semitransparente terminals\n" #~ msgid "Window %p has no XA_ICEWM_PID property. Export the " #~ "LD_PRELOAD variable to preload the preice library." #~ msgstr "Het window %p heeft geen XA_ICEWM_PID eigenschap. Exporteer " #~ "de variable »LD_PRELOAD«, om de preice-programmabibliothek te " #~ "activeren." #~ msgid "Obsolete option: %s" #~ msgstr "Verouderde Option: %s" #~ msgid "Gnome" #~ msgstr "Gnome" #~ msgid "Gnome User Apps" #~ msgstr "Gnome-Gebruikers menu" #~ msgid "KDE" #~ msgstr "KDE" #~ msgid "Resource allocation for rotated string \"%s\" (%dx%d px) " #~ "failed" #~ msgstr "Geen resources voor de roterende tekenreeks »%s« (%dx%d px) " #~ "beschikbaar" #~ msgid "_Ignore" #~ msgstr "_Negeren" #~ msgid "Out of memory: Unable to allocated %d bytes." #~ msgstr "Gebrek aan geheugen: Onmogelijk om %d bytes te reserveren." #~ msgid "Invalid fonts in fontset definition \"%s\":" #~ msgstr "Ongeldig lettertype in de lettertype familie »%s«:" icewm-1.3.7/po/cs.po0000664000076600007660000011341711463274241013222 0ustar develdevel# Czech messages for IceWM. # Copyright (C) 2000 Free Software Foundation, Inc. # Unofficial translation by Icebraker # on 6th of May 2003. # Petr Pisar , 2007 msgid "" msgstr "Project-Id-Version: icewm-1.2.30\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2007-02-03 15:21+0100\n" "Last-Translator: Petr PísaÅ™ \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " – Napájení" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "N" #, c-format msgid " - Charging" msgstr " – Dobíjení" msgid "C" msgstr "D" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "Vytížení CPU: " #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Neplatný protokol mailboxu: „%s“" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Neplatná cesta k mailboxu: „%s“" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Používám MailBox: „%s“\n" msgid "Error checking mailbox." msgstr "Chyba ověření stavu mailboxu." #, c-format msgid "%ld mail message." msgstr "%ld poÅ¡tovní zpráva." #, c-format msgid "%ld mail messages." msgstr "%ld poÅ¡tovních zpráv." #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Rozhraní %s:\n" " Stávající vytížení (sem/ven):\t%li %s/%li %s\n" " Krátkodobý průmÄ›r (sem/ven):\t%lli %s/%lli %s\n" " Celkový průmÄ›r (sem/ven):\t%li %s/%li %s\n" " PÅ™eneseno (sem/ven):\t%lli %s/%lli %s\n" " Celková doba pÅ™ipojení :\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " ID volajícího:\t" msgid "Workspace: " msgstr "Pracovní plocha: " msgid "Back" msgstr "ZpÄ›t" msgid "Alt+Left" msgstr "Alt+Vlevo" msgid "Forward" msgstr "DopÅ™edu" msgid "Alt+Right" msgstr "Alt+Vpravo" msgid "Previous" msgstr "PÅ™edchozí" msgid "Next" msgstr "Následující" msgid "Contents" msgstr "Obsah" msgid "Index" msgstr "Seznam" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Zavřít" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Použití: %s JMÉNO_SOUBORU\n" "\n" "Velmi jednoduchý prohlížeÄ HTML, který zobrazí dokument urÄený " "JMÉNEM_SOUBORU.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Neplatná cesta: %s\n" msgid "Invalid path: " msgstr "Neplatná cesta: " msgid "List View" msgstr "Zobrazení Seznam" msgid "Icon View" msgstr "Zobrazení Ikony" msgid "Open" msgstr "Otevřít" msgid "Undo" msgstr "Vrátit" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Nový" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Restartovat" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Same Game" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "Akce „%s“ vyžaduje nejménÄ› %d argumentů." #, c-format msgid "Invalid expression: `%s'" msgstr "Neplatný výraz: „%s“." #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Pojmenované znaky domény „%s“ (Äíselný rozsah: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Neplatné jméno plochy: „%s“" #, c-format msgid "Workspace out of range: %d" msgstr "Plocha je mimo rozsah: %d" #, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Použití: %s [PŘEPÃNAÄŒE] AKCE\n" "\n" "PÅ™epínaÄe:\n" " -display DISPLAY PÅ™ipojí se k X serveru zadaného " "hodnotou DISPLAY.\n" " Implicitní: $DISPLAY nebo :0.0 pokud " "není\n" " nastavena.\n" " -window WINDOW_ID Udává okno k manipulaci. Speciální\n" " ukazatele jsou „root“ jakožto koÅ™enové " "okno a\n" " „focus“ jakožto právÄ› aktivní okno.\n" " -class WM_CLASS Třída ovládání okna/oken k manipulaci. " "Pokud\n" " WM_CLASS obsahuje teÄku, budou vybrána " "pouze\n" " okna se shodnou WM_CLASS. Pokud tam " "žádná teÄka\n" " není, budou vybrána okna jak ze stejné " "třídy,\n" " tak i okna ze zadané instance (jako " "pÅ™i použití\n" " „-name“).\n" "\n" "Akce:\n" " setIconTitle NÃZEV Nastaví jméno ikony.\n" " setWindowTitle NÃZEV Nastaví jméno okna.\n" " setGeometry GEOMETRIE Nastaví geometrii okna\n" " setState MASKA STAV Nastaví stav okna GNOME na STAV.\n" " ZmÄ›nÄ›ny budou pouze bity vybrané " "MASKOU.\n" " STAV a MASKA jsou výrazy z prostÅ™edí\n" " „GNOME stav okna“.\n" " toggleState STAV Nastaví GNOME stavové bity oknu dle\n" " výrazu STAV.\n" " setHints HINTS Nastaví GNOME nápovÄ›du okna na HINTS.\n" " setLayer HLADINA PÅ™esune okno do jiné GNOME okenní " "hladiny.\n" " setWorkspace PLOCHA PÅ™esune okno na jinou pracovní plochu. " "Pro\n" " zmÄ›nu stávající plochy vyberte okno " "root.\n" " listWorkspaces Vypíše jména vÅ¡ech pracovních ploch.\n" " setTrayOption TRAYOPTION Nastaví příkazy pro možnosti IceWM " "tray.\n" "\n" "Výrazy:\n" " Výrazy jsou seznamy symbolů jednoho prostÅ™edí spojené „+“, nebo " "„|“:\n" "\n" " VÃRAZ ::= SYMBOL | VÃRAZ ( „+“ | „|“ ) SYMBOL\n" "\n" msgid "GNOME window state" msgstr "GNOME stav okna" msgid "GNOME window hint" msgstr "GNOME nápovÄ›da okna" msgid "GNOME window layer" msgstr "GNOME hladina okna" msgid "IceWM tray option" msgstr "PÅ™epínaÄe IceWM tray" msgid "Usage error: " msgstr "Chyba použití: " #, c-format msgid "Invalid argument: `%s'." msgstr "Neplatný argument: „%s“." msgid "No actions specified." msgstr "Nebyla zadána žádná akce." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Nelze otevřít displej: %s. Server X musí být spuÅ¡tÄ›n a promÄ›nná " "$DISPLAY\n" "nastavena." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Neplatné oznaÄení okna: „%s“" #, c-format msgid "workspace #%d: `%s'\n" msgstr "pracovní plocha #%d: „%s“\n" #, c-format msgid "Unknown action: `%s'" msgstr "Neznámá akce: „%s“" #, c-format msgid "Socket error: %d" msgstr "Chyba socketu: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "PÅ™ehrávání vzorku #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Takové zařízení neexistuje: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Nelze se spojit s ESound démonem: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "PÅ™i nahrávání „%2$s:%3$s“ nastala chyba <%1$d>" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Vzorek <%d> byl nahrán jako „%s:%s“" #, c-format msgid "Playing sample #%d" msgstr "PÅ™ehrávání vzorku #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Nelze se spojit se serverem YIFF: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Nelze pÅ™ejít do zvukového režimu „%s“." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Bylo zaznamenáno pÅ™epnutí zvukového režimu, původní zvukový režim „%" "s“ již nebude nadále aktivní." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Byla zaznamenáno pÅ™epnutí zvukového režimu, automatické pÅ™epínání " "zvukového režimu bylo zakázáno." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Zaměňuji pÅ™edchozí zvukový režim „%s“." #, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 " Použití: %s [PŘEPÃNAÄŒ]…\n" " \n" " PÅ™i událostech GUI vyvolaných IceWMem pÅ™ehrává zvukové " "soubory.\n" " \n" " PÅ™epínaÄe:\n" " \n" " -d, --display=DISPLEJ Displej používaný " "IceWMem\n" " (implicitní: $DISPLAY).\n" " -s, --sample-dir=ADRESÃŘ Udává adresář obsahující " "zvukové\n" " soubory (tj. ~/.icewm/" "sounds).\n" " -i, --interface=CÃL Udává cílové zařízení " "zvukového\n" " výstupu, jeden z OSS, " "YIFF, ESD\n" " -D, --device=ZAŘÃZENà (pouze OSS) udává " "digitální\n" " signálový procesor " "(implicitní:\n" " /dev/dsp).\n" " -S, --server=ADRESA:PORT (ESD a YIFF) udává adresu " "serveru a\n" " Äíslo portu (ESD je " "obvykle na\n" " localhost:16001 a YIFF " "na\n" " localhost:9433).\n" " -m, --audio-mode[=REŽIM] (pouze YIFF) udává " "Zvukový režim\n" " (seznamu režimů získáte " "neuvedením\n" " režimu).\n" " --audio-mode-auto (pouze YIFF) za bÄ›hu " "pÅ™epíná na\n" " nejvhodnÄ›jší Zvukový " "režim pro\n" " Zvukový vzorek (může " "způsobit\n" " problémy s ostatními YIFF " "klienty,\n" " pÅ™ebije --audio-mode).\n" "\n" " -v, --verbose Hlásí podrobnosti (každou " "zvukovou\n" " událost vypíše na " "stdout).\n" " -V, --version Vypíše verzi a skonÄi.\n" " -h, --help VypiÅ¡ (tuto) nápovÄ›du a " "skonÄi.\n" "\n" " Návratové hodnoty:\n" "\n" " 0 ÚspÄ›ch.\n" " 1 Obecná chyba.\n" " 2 Chyba na příkazové řádce.\n" " 3 Chyba podsystému (tj. nelze se spojit se " "serverem).\n" "\n" msgid "Multiple sound interfaces given." msgstr "Zadáno více zvukových zařízení." #, c-format msgid "Support for the %s interface not compiled." msgstr "Podpora zařízení %s nebyla zkompilována." #, c-format msgid "Unsupported interface: %s." msgstr "Nepodporované zařízení: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "PÅ™ijat signál %d: KonÄím…" #, c-format msgid "Received signal %d: Reloading samples..." msgstr "PÅ™ijat signál %d: Znovu nahrávám vzorky…" msgid "Hex View" msgstr "Å estnáctkový výpis" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Výsuvné Panely" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Zalamovat Řádky" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "Použití: icewmbg [-r|-q]\n" " -r Restartuje icewmbg\n" " -q UkonÄí icewmbg\n" "Podle souboru pÅ™edvoleb nahraje pozadí plochy\n" " DesktopBackgroundCenter – Zobrazí pozadí plochy vycentrované,\n" " ne vyskládané do dlaždic\n" " SupportSemitransparency – Podpora poloprůhledných terminálů\n" " DesktopBackgroundColor – Barva pozadí plochy\n" " DesktopBackgroundImage – Obrázek pozadí plochy\n" " DesktopTransparencyColor – Barva podporující poloprůhledná okna\n" " DesktopTransparencyImage – Obrázek podporující poloprůhledná okna\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: nerozpoznaný pÅ™epínaÄ â€ž%s“\n" "Pro více informací použijte „%s --help“.\n" #, c-format msgid "Loading image %s failed" msgstr "Nahrání obrázku %s selhalo" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Nahrání obrázku „%s“ selhalo: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Použití: icewmhint [třída.instance] pÅ™epínaÄ argument\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Nedostatek pamÄ›ti (velikost=%d)." msgid "Warning: " msgstr "Varování: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Neznámý smÄ›r pÅ™i požadavku posunu/zmÄ›ny velikosti: %d" msgid "Default" msgstr "Standardní" msgid "(C)" msgstr "©" msgid "Theme:" msgstr "Téma:" msgid "Theme Description:" msgstr "Popis tématu:" msgid "Theme Author:" msgstr "Autor tématu:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm – O Aplikaci" msgid "Unable to get current font path." msgstr "Stávající cestu k fontům nelze získat." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "NeoÄekávaný formát položky ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Více odkazů na pÅ™echod „%s“" #, c-format msgid "Unknown gradient name: %s" msgstr "Neznámé jméno pÅ™echodu: %s" msgid "_Logout" msgstr "Odh_lásit" msgid "_Cancel logout" msgstr "_ZruÅ¡it odhlášení" msgid "Lock _Workstation" msgstr "Zamknout pracovní _stanici" msgid "Re_boot" msgstr "Restartovat _poÄítaÄ" msgid "Shut_down" msgstr "_Vypnout poÄítaÄ" msgid "Restart _Icewm" msgstr "Restartovat _Icewm" msgid "Restart _Xterm" msgstr "Restartovat _Xterm" msgid "_Menu" msgstr "_Menu" msgid "_Above Dock" msgstr "N_ad dokem" msgid "_Dock" msgstr "Do_k" msgid "_OnTop" msgstr "Nah_oÅ™e" msgid "_Normal" msgstr "_NormálnÄ›" msgid "_Below" msgstr "_Dole" msgid "D_esktop" msgstr "_Plocha" msgid "_Restore" msgstr "O_bnovit" msgid "_Move" msgstr "_PÅ™esunout" msgid "_Size" msgstr "_Velikost" msgid "Mi_nimize" msgstr "_Minimalizovat" msgid "Ma_ximize" msgstr "Ma_ximalizovat" msgid "_Fullscreen" msgstr "_Celá obrazovka" msgid "_Hide" msgstr "_Schovat" msgid "Roll_up" msgstr "S_rolovat" msgid "R_aise" msgstr "Navrc_h" msgid "_Lower" msgstr "_Dospod" msgid "La_yer" msgstr "Vrs_tva" msgid "Move _To" msgstr "PÅ™esu_nout na" msgid "Occupy _All" msgstr "Obs_adit vÅ¡e" msgid "Limit _Workarea" msgstr "Omez pracovní ob_last" msgid "Tray _icon" msgstr "Tray _ikona" msgid "_Close" msgstr "_Zavřít" msgid "_Kill Client" msgstr "Zabít _klienta" msgid "_Window list" msgstr "Seznam _oken" msgid "Another window manager already running, exiting..." msgstr "Jiný správce oken již běží, konÄím…" #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Nemohu restartovat: %s\n" "Vede $PATH také k %s?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "Použití: %s [PŘEPÃNAÄŒE]\n" "Spustí správce oken IceWM.\n" "\n" "PÅ™epínaÄe:\n" " --display=JMÉNO JMÉNO X serveru, jež má být použit.\n" "%s --sync Synchronní režim X11 protokolu.\n" "\n" " -c, --config=SOUBOR Nahraje nastavení ze SOUBORU.\n" " -t, --theme=SOUBOR Nahraje téma ze SOUBORU.\n" " -n, --no-configure Soubor s nastavením bude ignorován.\n" "\n" " -v, --version Vypíše informace o verzi programu a skonÄí.\n" " -h, --help Vypíše tuto obrazovku o použití a skonÄí.\n" "%s -replace PÅ™evezme roli stávajícího správce oken\n" " --restart Tento pÅ™epínaÄ nepoužívejte: Pouze " "k vnitÅ™ním\n" " úÄelům.\n" "\n" "PromÄ›nné prostÅ™edí:\n" " ICEWM_PRIVCFG=CESTA CESTA k adresáři se soubory uživatelského\n" " nastavení, implicitnÄ› „$HOME/.icewm/“.\n" " DISPLAY=JMÉNO Jméno X serveru, jež bude použit, jinak se " "získá\n" " z Xlib.\n" " MAIL=URL UmístÄ›ní vaší poÅ¡tovní schránky typu " "mailbox.\n" " Vynecháte-li schéma, bude použito místní " "schéma\n" " „file“.\n" "\n" "Chcete-li nahlásit chybu, požádat o pomoc podporu, zanechat " "komentář\n" "apod., navÅ¡tivte [http://www.icewm.org/].\n" msgid "Confirm Logout" msgstr "Potvrdit odhlášení" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Odhlášení zavÅ™e vÅ¡echny běžící aplikace.\n" "Opravdu provézt?" msgid "Bad Look name" msgstr "Å patné jméno vzhledu (look)" #, fuzzy msgid "Loc_k Workstation" msgstr "Zamknout pracovní _stanici" msgid "_Logout..." msgstr "_Odhlášení…" msgid "_Cancel" msgstr "_ZruÅ¡it" msgid "_Restart icewm" msgstr "Restartovat _icewm" msgid "_About" msgstr "O _Aplikaci" msgid "Maximize" msgstr "Maximalizovat" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Minimalizovat" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Schovat" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "S_rolovat" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Navrch/Dospod" msgid "Kill Client: " msgstr "Zabít Klienta: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "VAROVÃNÃ! Pokud bude tento klient zabit, budou\n" "veÅ¡kerá neuložená data ztracena. Chcete provézt?" msgid "Restore" msgstr "Obnovit" msgid "Rolldown" msgstr "Rozbalit" #, c-format msgid "Error in window option: %s" msgstr "Chyba v pÅ™epínaÄi okna: %s" #, c-format msgid "Unknown window option: %s" msgstr "Neznámý pÅ™epínaÄ okna: %s" msgid "Syntax error in window options" msgstr "Syntaktická chyba v pÅ™epínaÄích okna" msgid "Out of memory for window options" msgstr "Nedostatek pamÄ›ti pro pÅ™epínaÄe okna" msgid "Missing command argument" msgstr "Schází hodnota příkazu" #, c-format msgid "Bad argument %d" msgstr "Å patná hodnota %d" #, c-format msgid "Error at prog %s" msgstr "Chyba v programu %s" #, c-format msgid "Unexepected keyword: %s" msgstr "NeoÄekávané klíÄové slovo: %s" #, c-format msgid "Error at key %s" msgstr "Chyba v klíÄi %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programy" msgid "_Run..." msgstr "_Spustit…" msgid "_Windows" msgstr "_Okna" msgid "_Help" msgstr "_NápovÄ›da" msgid "_Click to focus" msgstr "Vybrat _kliknutím" msgid "_Sloppy mouse focus" msgstr "Vybrat _najetím" msgid "Custo_m" msgstr "_Uživatelské" msgid "_Focus" msgstr "_VýbÄ›r aktivního okna" msgid "_Themes" msgstr "_Témata" msgid "Se_ttings" msgstr "Nas_tavení" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Správce relace: Neznámý řádek %s" msgid "Task Bar" msgstr "Panel úloh" msgid "Tile _Vertically" msgstr "Uspořádat _svisle" msgid "T_ile Horizontally" msgstr "Uspořádat _vodorovnÄ›" msgid "Ca_scade" msgstr "Uspořádat do _kaskády" msgid "_Arrange" msgstr "_Uspořádat" msgid "_Minimize All" msgstr "_Minimalizovat vÅ¡e" msgid "_Hide All" msgstr "_Schovat vÅ¡e" msgid "_Undo" msgstr "Vrá_tit" msgid "Arrange _Icons" msgstr "Uspořádat _ikony" msgid "_Refresh" msgstr "_Obnovit" msgid "_License" msgstr "_Licence" msgid "Favorite applications" msgstr "Oblíbené aplikace" msgid "Window list menu" msgstr "Nabídka se seznamem oken" msgid "Show Desktop" msgstr "Zobrazit Plochu" msgid "All Workspaces" msgstr "VÅ¡echny pracovní plochy" msgid "Del" msgstr "Smazat" msgid "_Terminate Process" msgstr "_UkonÄit proces" msgid "Kill _Process" msgstr "_Zabít proces" msgid "_Show" msgstr "Ukáz_at" msgid "_Minimize" msgstr "_Minimalizovat" msgid "Window list" msgstr "Seznam oken" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Pracovní plocha %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Message Loop: výbÄ›r selhal (chyba Ä.=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Nerozpoznaný pÅ™epínaÄ: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Nerozpoznaný argument: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "PÅ™epínaÄ %s vyžaduje hodnotu" #, c-format msgid "Unknown key name %s in %s" msgstr "Neznámé klíÄové jméno %s v %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Å patná hodnota: %s pro %s" #, c-format msgid "Bad option: %s" msgstr "Å patný pÅ™epínaÄ: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Nahrání pixmapy „%s“ selhalo" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Vadná pixmapa kurzoru: „%s“ obsahuje příliÅ¡ mnoho různých barev" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "CHYBA? Imlib byla schopna pÅ™eÄíst „%s“" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "CHYBA? HlaviÄka XPM není správná, ale Imlib byla schopna analyzovat " "„%s“" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "CHYBA? NeoÄekávaný konec souboru XPM, ale Imlib byla schopna " "analyzovat „%s“" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "CHYBA? NeoÄekávaný znak, ale Imlib byla chopna analyzovat „%s“" #, c-format msgid "Could not load font \"%s\"." msgstr "Nemohu nahrát font „%s“." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Nahrání nouzového fontu „%s“ selhalo." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Nemohu nahrát sadu fontů „%s“." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "Schází znaková sada pro sadu fontů „%s“:" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Nedostatek pamÄ›ti pro pixmapu „%s“" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Nahrání obrázku „%s“ selhalo" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: Získání X pixmapy selhalo" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Namapování Imlib obrázku do X pixmapy selhalo" msgid "Cu_t" msgstr "Vyjmou_t" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Kopírovat" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_Vložit" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "V_ložit výbÄ›r" msgid "Select _All" msgstr "Vybr_at vÅ¡e" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Nastavení jazyka (locale) není knihovnou C podporováno. Vracím " "nastavení jazyka (locale) na „C“." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "NepodaÅ™ilo se zjistit znakovou sadu stávajícího jazykového " "nastavení.\n" "PÅ™edpokládám ISO-8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv (dostateÄnÄ›) nepodporuje konverzi z %s do %s." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Neplatný vícebajtový Å™etÄ›zec „%s“: %s" msgid "OK" msgstr "Potvrdit" msgid "Cancel" msgstr "ZruÅ¡it" #, c-format msgid "Out of memory for pixel map %s" msgstr "Nedostatek pamÄ›ti pro pixmapu %s" #, c-format msgid "Could not find pixel map %s" msgstr "Nemohu nalézt pixmapu %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Nedostatek pamÄ›ti pro zásobník RGB pixelů %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Nemohu nalézt zásobník RGB pixelů %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Ke konverzi pixelů používám nouzový mechanismus (hloubka: %d; maska " "(Äervená/zelená/modrá): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d bit visuals (zatím) nejsou podporovány" msgid "$USER or $LOGNAME not set?" msgstr "$USER nebo $LOGNAME není nastavena?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "„%s“ neodpovídá žádnému běžnému internetovému schématu" #, c-format msgid "\"%s\" contains no scheme description" msgstr "„%s“ neobsahuje popis schématu" #~ msgid "%s - unknown format (%d)" #~ msgstr "%s – neznámý formát (%d)" #~ msgid "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgstr "stav:\tuživatelské = %i, na pozadí = %i, systémové = %i, " #~ "neÄinné = %i" #~ msgid "bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgstr "stav:\tuživ. = %i, pozadí = %i, syst. = %i (v. = %i)\n" #~ msgid " processes." #~ msgstr " procesů." #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "cpu: %d %d %d %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat nalezl příliÅ¡ mnoho procesorů: nejspíš jich je %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree na okno 0x%x selhalo" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Skompilováno s příznakem DEBUG. Ladící zprávy budou " #~ "vypisovány." #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X chyba %s(0x%lX): %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "Rozdvojení (fork) selhalo (chyba Ä.=%d)." #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "VytvoÅ™ení nepojmenované roury selhalo (chyba Ä.=%d)." #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Neplatná pixmapa kursoru: \"%s\" obsahuje příliÅ¡ mnoho " #~ "různých barev" #~ msgid "program label expected" #~ msgstr "oÄekáváno pojmenování programu" #~ msgid "icon name expected" #~ msgstr "oÄekáváno jméno ikony" #~ msgid "window management class expected" #~ msgstr "oÄekávána třída správy okna (wm_class)" #~ msgid "menu caption expected" #~ msgstr "oÄekáván název nabídky" #~ msgid "opening curly expected" #~ msgstr "oÄekávána otevírací složená závorka" #~ msgid "action name expected" #~ msgstr "oÄekáváno jméno akce" #~ msgid "unknown action" #~ msgstr "neznámá akce" #~ msgid "Failed to open %s: %s" #~ msgstr "Selhalo otevÅ™ení %s: %s" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Selhalo otevÅ™ení nepojmenované roury: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Selhalo zduplikování deskriptoru souboru: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Selhalo spuÅ¡tÄ›ní %s: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Selhalo vytvoÅ™ení potomka procesu: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Není skuteÄným souborem: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Byla oÄekávána dvojice Å¡estnáctkových Äíslic" #~ msgid "Unexpected identifier" #~ msgstr "NeoÄekávaný identifikátor" #~ msgid "Identifier expected" #~ msgstr "OÄekáván identifikátor" #~ msgid "Separator expected" #~ msgstr "OÄekáván oddÄ›lovaÄ" #~ msgid "Invalid token" #~ msgstr "Neplatný token" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Kopírování drawable 0x%x do zásobníku pixelů selhalo" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: Kopírování drawable 0x%x do zásobníku pixelů selhalo " #~ "(%d:%d-%dx%d" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "PŘÃLIÅ  MNOHO ICE SPOJENà -- nepodporováno" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Session Manager: IceAddConnectionWatch selhal." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Session Manager: Chyba inicializace: %s" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Toto není Å¡estnáctkové Äíslo: %c%c (v „%s“)" #~ msgid "_No icon" #~ msgstr "Žádná i_kona" #~ msgid "_Minimized" #~ msgstr "_Minimalizovat" #~ msgid "_Exclusive" #~ msgstr "_ExkluzivnÄ›" icewm-1.3.7/po/en.po0000664000076600007660000004657311463274241013227 0ustar develdevel# English messages for IceWM (stupid eye? -- well for the sake of ©) # Copyright (C) 2000-2001 Marko Macek # Mathias Hasselmann , 2000. # msgid "" msgstr "Project-Id-Version: icewm 1.0.9\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2000-10-21 12:13+2000\n" "Last-Translator: Mathias Hasselmann \n" "Language-Team: English\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr "" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "" #, c-format msgid " - Charging" msgstr "" msgid "C" msgstr "" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "" msgid "Error checking mailbox." msgstr "" #, c-format msgid "%ld mail message." msgstr "" #, c-format msgid "%ld mail messages." msgstr "" #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "" msgid "\n" " Caller id:\t" msgstr "" msgid "Workspace: " msgstr "" msgid "Back" msgstr "" msgid "Alt+Left" msgstr "" msgid "Forward" msgstr "" msgid "Alt+Right" msgstr "" msgid "Previous" msgstr "" msgid "Next" msgstr "" msgid "Contents" msgstr "" msgid "Index" msgstr "" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "" msgid "Ctrl+Q" msgstr "" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "" #, c-format msgid "Invalid path: %s\n" msgstr "" msgid "Invalid path: " msgstr "" msgid "List View" msgstr "" msgid "Icon View" msgstr "" msgid "Open" msgstr "" msgid "Undo" msgstr "" msgid "Ctrl+Z" msgstr "" msgid "New" msgstr "" msgid "Ctrl+N" msgstr "" msgid "Restart" msgstr "" msgid "Ctrl+R" msgstr "" #. !!! fix msgid "Same Game" msgstr "" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "" #, c-format msgid "Invalid expression: `%s'" msgstr "" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "" #, c-format msgid "Invalid workspace name: `%s'" msgstr "" #, c-format msgid "Workspace out of range: %d" msgstr "" #, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "" msgid "GNOME window state" msgstr "" msgid "GNOME window hint" msgstr "" msgid "GNOME window layer" msgstr "" msgid "IceWM tray option" msgstr "" msgid "Usage error: " msgstr "" #, c-format msgid "Invalid argument: `%s'." msgstr "" msgid "No actions specified." msgstr "" #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "" #, c-format msgid "Invalid window identifier: `%s'" msgstr "" #, c-format msgid "workspace #%d: `%s'\n" msgstr "" #, c-format msgid "Unknown action: `%s'" msgstr "" #, c-format msgid "Socket error: %d" msgstr "" #, c-format msgid "Playing sample #%d (%s)" msgstr "" #, c-format msgid "No such device: %s" msgstr "" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "" #, c-format msgid "Playing sample #%d" msgstr "" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "" #, c-format msgid "Can't change to audio mode `%s'." msgstr "" #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "" msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "" #, c-format msgid "Overriding previous audio mode `%s'." msgstr "" #, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "" msgid "Multiple sound interfaces given." msgstr "" #, c-format msgid "Support for the %s interface not compiled." msgstr "" #, c-format msgid "Unsupported interface: %s." msgstr "" #, c-format msgid "Received signal %d: Terminating..." msgstr "" #, c-format msgid "Received signal %d: Reloading samples..." msgstr "" msgid "Hex View" msgstr "" msgid "Ctrl+H" msgstr "" msgid "Expand Tabs" msgstr "" msgid "Ctrl+T" msgstr "" msgid "Wrap Lines" msgstr "" msgid "Ctrl+W" msgstr "" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "" #, c-format msgid "Loading image %s failed" msgstr "" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "" #, c-format msgid "Out of memory (len=%d)." msgstr "" msgid "Warning: " msgstr "" #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "" msgid "Default" msgstr "" msgid "(C)" msgstr "©" msgid "Theme:" msgstr "" msgid "Theme Description:" msgstr "" msgid "Theme Author:" msgstr "" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "" msgid "Unable to get current font path." msgstr "" msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "" #, c-format msgid "Unknown gradient name: %s" msgstr "" msgid "_Logout" msgstr "" msgid "_Cancel logout" msgstr "" msgid "Lock _Workstation" msgstr "" msgid "Re_boot" msgstr "" msgid "Shut_down" msgstr "" msgid "Restart _Icewm" msgstr "" msgid "Restart _Xterm" msgstr "" msgid "_Menu" msgstr "" msgid "_Above Dock" msgstr "" msgid "_Dock" msgstr "" msgid "_OnTop" msgstr "" msgid "_Normal" msgstr "" msgid "_Below" msgstr "" msgid "D_esktop" msgstr "" msgid "_Restore" msgstr "" msgid "_Move" msgstr "" msgid "_Size" msgstr "" msgid "Mi_nimize" msgstr "" msgid "Ma_ximize" msgstr "" msgid "_Fullscreen" msgstr "" msgid "_Hide" msgstr "" msgid "Roll_up" msgstr "" msgid "R_aise" msgstr "" msgid "_Lower" msgstr "" msgid "La_yer" msgstr "" msgid "Move _To" msgstr "" msgid "Occupy _All" msgstr "" msgid "Limit _Workarea" msgstr "" msgid "Tray _icon" msgstr "" msgid "_Close" msgstr "" msgid "_Kill Client" msgstr "" msgid "_Window list" msgstr "" msgid "Another window manager already running, exiting..." msgstr "" #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "" msgid "Confirm Logout" msgstr "" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "" msgid "Bad Look name" msgstr "" msgid "Loc_k Workstation" msgstr "" msgid "_Logout..." msgstr "" msgid "_Cancel" msgstr "" msgid "_Restart icewm" msgstr "" msgid "_About" msgstr "" msgid "Maximize" msgstr "" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "" msgid "Kill Client: " msgstr "" msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "" msgid "Restore" msgstr "" msgid "Rolldown" msgstr "" #, c-format msgid "Error in window option: %s" msgstr "" #, c-format msgid "Unknown window option: %s" msgstr "" msgid "Syntax error in window options" msgstr "" msgid "Out of memory for window options" msgstr "" msgid "Missing command argument" msgstr "" #, c-format msgid "Bad argument %d" msgstr "" #, c-format msgid "Error at prog %s" msgstr "" #, c-format msgid "Unexepected keyword: %s" msgstr "" #, c-format msgid "Error at key %s" msgstr "" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "" msgid "_Run..." msgstr "" msgid "_Windows" msgstr "" msgid "_Help" msgstr "" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "" msgid "Task Bar" msgstr "" msgid "Tile _Vertically" msgstr "" msgid "T_ile Horizontally" msgstr "" msgid "Ca_scade" msgstr "" msgid "_Arrange" msgstr "" msgid "_Minimize All" msgstr "" msgid "_Hide All" msgstr "" msgid "_Undo" msgstr "" msgid "Arrange _Icons" msgstr "" msgid "_Refresh" msgstr "" msgid "_License" msgstr "" msgid "Favorite applications" msgstr "" msgid "Window list menu" msgstr "" msgid "Show Desktop" msgstr "" msgid "All Workspaces" msgstr "" msgid "Del" msgstr "" msgid "_Terminate Process" msgstr "" msgid "Kill _Process" msgstr "" msgid "_Show" msgstr "" msgid "_Minimize" msgstr "" msgid "Window list" msgstr "" #, c-format msgid "%lu. Workspace %-.32s" msgstr "" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "" #, c-format msgid "Unrecognized option: %s\n" msgstr "" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "" #, c-format msgid "Argument required for %s switch" msgstr "" #, c-format msgid "Unknown key name %s in %s" msgstr "" #, c-format msgid "Bad argument: %s for %s" msgstr "" #, c-format msgid "Bad option: %s" msgstr "" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "" #, c-format msgid "Could not load font \"%s\"." msgstr "" #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "" #, c-format msgid "Could not load fontset \"%s\"." msgstr "" #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "" #, c-format msgid "Loading of image \"%s\" failed" msgstr "" msgid "Imlib: Acquisition of X pixmap failed" msgstr "" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "" msgid "Cu_t" msgstr "" msgid "Ctrl+X" msgstr "" msgid "_Copy" msgstr "" msgid "Ctrl+C" msgstr "" msgid "_Paste" msgstr "" msgid "Ctrl+V" msgstr "" msgid "Paste _Selection" msgstr "" msgid "Select _All" msgstr "" msgid "Ctrl+A" msgstr "" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "" msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "" #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "" msgid "OK" msgstr "" msgid "Cancel" msgstr "" #, c-format msgid "Out of memory for pixel map %s" msgstr "" #, c-format msgid "Could not find pixel map %s" msgstr "" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "" msgid "$USER or $LOGNAME not set?" msgstr "" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "" #, c-format msgid "\"%s\" contains no scheme description" msgstr "" icewm-1.3.7/po/ko.po0000664000076600007660000011040011463274241013213 0ustar develdevel# Korean UTF-8 messages for IceWM # Copyright (C) 1999-2001 Marko Macek # Copyright (C) 2000-2005 Mathias Hasselmann # This file is distributed under the GNU LGPL license version 2. # Translated by Ken Joseph Yeo , 2005. # msgid "" msgstr "Project-Id-Version: IceWM 1.2.35\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2008-04-07 10:19-1000\n" "Last-Translator: Ken Joseph Yeo \n" "Language-Team: Korean\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - ì „ë ¥" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "P" #, c-format msgid " - Charging" msgstr " - ì¶©ì „ 중" msgid "C" msgstr "C" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "CPU 사용량: " #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "ìž˜ëª»ëœ ìš°íŽ¸í•¨ 프로토콜: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "ìž˜ëª»ëœ ìš°íŽ¸í•¨ 경로: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "\"%s\" 우편함 사용\n" msgid "Error checking mailbox." msgstr "우편함 ì ê²€ 오류." #, c-format msgid "%ld mail message." msgstr "%ld ë©”ì¼ ë©”ì‹œì§€." #, c-format msgid "%ld mail messages." msgstr "%ld ë©”ì¼ ë©”ì‹œì§€." #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "ì¸í„°íŽ˜ì´ìФ %s:\n" " 현재 전송률 (ìž…ì¶œ):\t%li %s/%li %s\n" " 현재 í‰ê·  (ìž…ì¶œ):\t%lli %s/%lli %s\n" " ì „ì²´ í‰ê·  (ìž…ì¶œ):\t%li %s/%li %s\n" " 전송량 (ìž…ì¶œ):\t%lli %s/%lli %s\n" " 온ë¼ì¸ 시간:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " ë°œì‹ ìž id:\t" msgid "Workspace: " msgstr "작업공간: " msgid "Back" msgstr "뒤로" msgid "Alt+Left" msgstr "Alt+Left" msgid "Forward" msgstr "앞으로" msgid "Alt+Right" msgstr "Alt+Right" msgid "Previous" msgstr "ì´ì „으로" msgid "Next" msgstr "다ìŒìœ¼ë¡œ" msgid "Contents" msgstr "ë‚´ìš©" msgid "Index" msgstr "색ì¸" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "닫기" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "사용법: %s 파ì¼ì´ë¦„\n" "\n" "파ì¼ì´ë¦„ì˜ ë¬¸ì„œë¥¼ ë³´ì—¬ 주는 매우 간단한 HTML 브ë¼ìš°ì €.\n" #, c-format msgid "Invalid path: %s\n" msgstr "ìž˜ëª»ëœ ê²½ë¡œ: %s\n" msgid "Invalid path: " msgstr "ìž˜ëª»ëœ ê²½ë¡œ: " msgid "List View" msgstr "ëª©ë¡ ë³´ê¸°" msgid "Icon View" msgstr "ì•„ì´ì½˜ 보기" msgid "Open" msgstr "열기" msgid "Undo" msgstr "실행 취소" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "새로" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "다시 시작" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "ê°™ì€ ê²Œìž„" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "`%s' ë™ìž‘ì€ ìµœì†Œ %d ê°œì˜ ì¸ìˆ˜ë¥¼ 요구한다." #, c-format msgid "Invalid expression: `%s'" msgstr "ìž˜ëª»ëœ í‘œí˜„: `%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "`%s' ë„ë©”ì¸ì˜ ì§€ëª…ëœ ì‹¬ë³¼ë“¤ (ìˆ«ìž ë²”ìœ„: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "ìž˜ëª»ëœ ìž‘ì—…ê³µê°„ ì´ë¦„: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "범위 ë°–ì˜ ìž‘ì—…ê³µê°„: %d" #, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "사용법: %s [옵션] ë™ìž‘\n" "\n" "옵션:\n" " -display DISPLAY DISPLAY로 지정한 X 서버로 ì—°ê²°.\n" " 기본값: $DISPLAY í˜¹ì€ ì •í•˜ì§€ ì•Šì•˜ì„ " "때 :0.0\n" " -window WINDOW_ID 조작할 ì°½ì„ ì§€ì •í•œë‹¤. 특별한 ì‹ë³„명으" "ë¡ \n" " 루트 ì°½ì— ëŒ€í•œ `root'ê°€ 있다. 그리고\n" " 현재 ì´ˆì ì´ 있는 ì°½ì— ëŒ€í•œ `focus'ê°€ 있" "다.\n" " -class WM_CLASS 조작할 ì°½(들)ì˜ ì°½ 관리 í´ëž˜ìФ.\n" " ë§Œì¼ WM_CLASSê°€ 마침표를 í¬í•¨í•˜ê³  있으" "ë©´,\n" " ë˜‘ê°™ì€ WM_CLASS ì†ì„±ì˜ 창들만 맞춘다.\n" " ë§Œì¼ ë§ˆì¹¨í‘œê°€ 없으면, ê°™ì€ í´ëž˜ìФì˜\n" " 창들과 ê°™ì€ instanceì˜ ì°½ë“¤ì´\n" " (aka. `-name') ì„ íƒëœë‹¤.\n" "\n" "ë™ìž‘:\n" " setIconTitle TITLE ì•„ì´ì½˜ 타ì´í‹€ì„ 정한다.\n" " setWindowTitle TITLE ì°½ 타ì´í‹€ì„ 정한다.\n" " setGeometry geometry ì°½ì˜ í¬ê¸°ì™€ 위치를 정한다\n" " setState MASK STATE GNOME ì°½ ìƒíƒœë¥¼ STATE로 정한다.\n" " MASK로 ì„ íƒí•œ 비트만 ì˜í–¥ì„ 받는다.\n" " STATE와 MASK는 `GNOME window state'\n" " ë„ë©”ì¸ì˜ 표현ì‹ì´ë‹¤.\n" " toggleState STATE STATE 표현ì‹ìœ¼ë¡œ 지정한\n" " GNOME ì°½ ìƒíƒœ 비트를 토글한다.\n" " setHints HINTS GNOME ì°½ 힌트를 HINTS로 정한다.\n" " setLayer LAYER ì°½ì„ ë‹¤ë¥¸ GNOME ì°½ ë ˆì´ì–´ë¡œ 옮긴다.\n" " setWorkspace WORKSPACE ì°½ì„ ë‹¤ë¥¸ 작업공간으로 옮긴다. 현재\n" " ìž‘ì—…ê³µê°„ì„ ë°”ê¾¸ê¸° 위해선 루트 ì°½ì„ ì„ íƒ" "하ë¼.\n" " listWorkspaces 모든 ìž‘ì—…ê³µê°„ì˜ ì´ë¦„ë“¤ì„ ì—´ê±°í•œë‹¤.\n" " setTrayOption TRAYOPTION IceWM tray 옵션 힌트를 정한다.\n" "\n" "표현ì‹:\n" " 표현ì‹ì€ 한 ë„ë©”ì¸ì˜ ì‹¬ë³¼ì„ `+'나 `|'로 연결한 리스트ì´ë‹¤:\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgid "GNOME window state" msgstr "GNOME ì°½ ìƒíƒœ" msgid "GNOME window hint" msgstr "GNOME ì°½ 힌트" msgid "GNOME window layer" msgstr "GNOME ì°½ ë ˆì´ì–´" msgid "IceWM tray option" msgstr "IceWM íŠ¸ë ˆì´ ì˜µì…˜" msgid "Usage error: " msgstr "사용법 오류: " #, c-format msgid "Invalid argument: `%s'." msgstr "ìž˜ëª»ëœ ì¸ìˆ˜: `%s'." msgid "No actions specified." msgstr "아무 ë™ìž‘ë„ ì§€ì •í•˜ì§€ 않ìŒ." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "디스플레ì´ë¥¼ ì—´ì§€ 못함: %s. X 실행 중여야 하고 $DISPLAY 정해야 함." #, c-format msgid "Invalid window identifier: `%s'" msgstr "ìž˜ëª»ëœ ì°½ ì‹ë³„명: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "작업공간 #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "알 수 없는 ë™ìž‘: `%s'" #, c-format msgid "Socket error: %d" msgstr "소켓 오류: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "#%d (%s) 샘플 연주" #, c-format msgid "No such device: %s" msgstr "%s: 그런 장치가 ì—†ìŒ" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "사운드 ë°ëª¬ì— ì—°ê²° 못함: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "`%s:%s'를 업로드 중 <%d> 오류" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "샘플 <%d>를 `%s:%s'로 업로드" #, c-format msgid "Playing sample #%d" msgstr "샘플 #%d 연주" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "%s: YIFF 서버로 ì—°ê²° 못함" #, c-format msgid "Can't change to audio mode `%s'." msgstr "`%s' ìŒí–¥ 모드로 바꾸지 못함." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "ìŒí–¥ 모드 전환 ê°ì§€, ì²˜ìŒ ìŒí–¥ 모드 `%s' ë” ì´ìƒ 효력 ì—†ìŒ." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "ìŒí–¥ 모드 전환 ê°ì§€, ìžë™ ìŒí–¥ 모드 전환 못하게 함." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "ì´ì „ ìŒí–¥ 모드 `%s' ê°•ì œ 변경." #, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "사용법: %s [옵션]...\n" "\n" "IceWMê°€ GUI ì´ë²¤íŠ¸ë¥¼ 만들 때 ìŒí–¥ 파ì¼ì„ 연주한다.\n" "\n" "옵션:\n" "\n" " -d, --display=DISPLAY IceWMê°€ 사용하는 ë””ìŠ¤í”Œë ˆì´ (기본값: " "$DISPLAY).\n" " -s, --sample-dir=DIR ìŒí–¥ 파ì¼ì´ 있는 디렉토리를\n" " 지정한다 (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET OSS, YIFF, ESD ê°€ìš´ë° ìŒí–¥ 출력 대" "ìƒ\n" " ì¸í„°íŽ˜ì´ìФ 하나를 지정한다\n" " -D, --device=DEVICE (오로지 OSS) 디지털 신호 처리기를\n" " 지정한다 (기본값 /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD와 YIFF) 서버 주소와 í¬íЏ 번호" "를\n" " 지정한다 (기본값 ESD는 " "localhost:16001\n" " 그리고 YIFF는 localhost:9433).\n" " -m, --audio-mode[=MODE] (오로지 YIFF) ìŒí–¥ 모드를 지정한다\n" " (목ë¡ì„ 얻기 위해 비워 ë‘ë¼).\n" " --audio-mode-auto (오로지 YIFF) 샘플 오디오를 최ì ìœ¼ë¡œ " "맞추기\n" " 위해 ìŒí–¥ 모드를 실시간으로 바꾼다 " "(다른\n" " Y í´ë¼ì´ì–¸íŠ¸ì™€ 문제를 ì¼ìœ¼í‚¬ 수 있" "ê³ ,\n" " --audio-mode를 ê°•ì œ 변경).\n" "\n" " -v, --verbose ë§ì´ ë§Žë„ë¡ (표준출력으로 ê° ì†Œë¦¬ ì´" "벤트를\n" " 프린트).\n" " -V, --version 버전 정보를 프린트하고 나간다.\n" " -h, --help (ì´) ë„ì›€ë§ ìŠ¤í¬ë¦°ì„ 프린트하고 나간" "다.\n" "\n" "Return ê°’:\n" "\n" " 0 성공.\n" " 1 ì¼ë°˜ì  오류.\n" " 2 명령행 오류.\n" " 3 Subsystems 오류 (즉 서버 ì—°ê²° 못함).\n" "\n" msgid "Multiple sound interfaces given." msgstr "여러 ìŒí–¥ ì¸í„°íŽ˜ì´ìŠ¤ê°€ 주어ì§." #, c-format msgid "Support for the %s interface not compiled." msgstr "%s ì¸í„°íŽ˜ì´ìФ ì§€ì›ì´ ì»´íŒŒì¼ ì•ˆ ë˜ì—ˆìŒ." #, c-format msgid "Unsupported interface: %s." msgstr "%s: ì¸í„°íŽ˜ì´ìФ ì§€ì› ì•ˆ ë¨." #, c-format msgid "Received signal %d: Terminating..." msgstr "%d 신호 ë°›ìŒ: 종료..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "%d 신호 ë°›ìŒ: 샘플 다시 ì½ìŒ..." msgid "Hex View" msgstr "16진수 보기" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "탭 확장" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "줄 넘기기" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "사용법: icewmbg [ -r | -q ]\n" " -r icewmbg 다시 시작\n" " -q icewmbg ë내기\n" "preferences 파ì¼ì— ë”°ë¼ ë°”íƒ•í™”ë©´ ë°°ê²½ì„ ê·¸ë¦°ë‹¤\n" " DesktopBackgroundCenter - 바탕화면 ë°°ê²½ì„ ë°˜ë³µí•˜ì§€ 않고 가운ë°ë¡œ 표" "시\n" " SupportSemitransparency - 반투명 터미날 ì§€ì›\n" " DesktopBackgroundColor - 바탕화면 ë°°ê²½ 색\n" " DesktopBackgroundImage - 바탕화면 ë°°ê²½ ì´ë¯¸ì§€\n" " DesktopTransparencyColor - 반투명 창들ì—게 알릴 색\n" " DesktopTransparencyImage - 반투명 창들ì—게 알릴 ì´ë¯¸ì§€\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: 알아볼 수 없는 옵션 `%s'\n" "`%s --help' 하여 ìžì„¸í•œ 정보를 ë³´ë¼.\n" #, c-format msgid "Loading image %s failed" msgstr "%s ì´ë¯¸ì§€ 그리기 실패" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "\"%s\" pixmap 로드 실패: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "사용법: icewmhint [class.instance] option arg\n" #, c-format msgid "Out of memory (len=%d)." msgstr "메모리 부족 (len=%d)." msgid "Warning: " msgstr "경고: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "ì´ë™/í¬ê¸°ì¡°ì ˆ 요구ì—서 알 수 없는 ë°©í–¥: %d" msgid "Default" msgstr "기본값" msgid "(C)" msgstr "(C)" msgid "Theme:" msgstr "테마:" msgid "Theme Description:" msgstr "테마 설명:" msgid "Theme Author:" msgstr "테마 만든ì´:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewmì— ê´€í•˜ì—¬" msgid "Unable to get current font path." msgstr "현재 í°íЏ 경로를 ì–»ì„ ìˆ˜ ì—†ìŒ." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "ICEWM_FONT_PATH ì†ì„±ì´ 예ìƒí•˜ì§€ 못한 형ì‹" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "\"%s\" gradientì— ëŒ€í•´ 다수 언급" #, c-format msgid "Unknown gradient name: %s" msgstr "알 수 없는 gradient ì´ë¦„: %s" msgid "_Logout" msgstr "종료(_L)" msgid "_Cancel logout" msgstr "종료 취소(_C)" msgid "Lock _Workstation" msgstr "화면 잠그기(_W)" msgid "Re_boot" msgstr "다시 부팅(_B)" msgid "Shut_down" msgstr "ë„기(_D)" msgid "Restart _Icewm" msgstr "Icewm 다시 시작(_I)" msgid "Restart _Xterm" msgstr "Xterm 다시 시작(_X)" msgid "_Menu" msgstr "메뉴(_M)" msgid "_Above Dock" msgstr "ë„í¬ ìœ„(_A)" msgid "_Dock" msgstr "ë„í¬(_D)" msgid "_OnTop" msgstr "위(_O)" msgid "_Normal" msgstr "보통(_N)" msgid "_Below" msgstr "아래(_B)" msgid "D_esktop" msgstr "바탕화면(_E)" msgid "_Restore" msgstr "ì›ëž˜ í¬ê¸°ë¡œ(_R)" msgid "_Move" msgstr "옮기기(_M)" msgid "_Size" msgstr "í¬ê¸° ì¡°ì ˆ(_S)" msgid "Mi_nimize" msgstr "최소화(_N)" msgid "Ma_ximize" msgstr "최대화(_X)" msgid "_Fullscreen" msgstr "화면 채우기(_F)" msgid "_Hide" msgstr "숨기기(_H)" msgid "Roll_up" msgstr "ë§ì•„올리기(_U)" msgid "R_aise" msgstr "앞으로(_A)" msgid "_Lower" msgstr "뒤로(_L)" msgid "La_yer" msgstr "ë ˆì´ì–´(_Y)" msgid "Move _To" msgstr "보내기(_T)" msgid "Occupy _All" msgstr "모든 작업공간(_A)" msgid "Limit _Workarea" msgstr "작업ì˜ì—­ 제한(_W)" msgid "Tray _icon" msgstr "íŠ¸ë ˆì´ ì•„ì´ì½˜(_I)" msgid "_Close" msgstr "닫기(_C)" msgid "_Kill Client" msgstr "죽ì´ê¸°(_K)" msgid "_Window list" msgstr "ì°½ 목ë¡(_W)" msgid "Another window manager already running, exiting..." msgstr "다른 ì°½ ê´€ë¦¬ìž ì´ë¯¸ 실행 중, 나ê°..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "다시 시작 못함: %s\n" "$PATHê°€ %s를 가리키는가?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "사용법: %s [옵션]\n" "IceWM ì°½ 관리ìžë¥¼ 시작한다.\n" "\n" "옵션:\n" " --display=NAME NAMEì˜ X 서버를 사용.\n" "%s --sync X11 ëª…ë ¹ì–´ë“¤ì„ ë™ê¸°í™”.\n" "\n" " -c, --config=FILE FILEì—서 설정 ê°’ë“¤ì„ ì½ìŒ.\n" " -t, --theme=FILE FILEì—서 테마 ì„¤ì •ì„ ì½ìŒ.\n" " -n, --no-configure preferences íŒŒì¼ ë¬´ì‹œ.\n" "\n" " -v, --version 버전 정보를 ë³´ì´ê³  나ê°.\n" " -h, --help ì´ ì‚¬ìš©ë²• í™”ë©´ì„ ë³´ì´ê³  나ê°.\n" "%s --replace ê¸°ì¡´ì˜ ì°½ 관리ìžë¥¼ êµì²´í•œë‹¤.\n" " --restart ì´ê²ƒì€ 사용하지 마ë¼: ë‚´ë¶€ì  flag.\n" "\n" "환경 변수:\n" " ICEWM_PRIVCFG=PATH ì‚¬ìš©ìž ê°œì¸ ì„¤ì • 파ì¼ë“¤ì´ 있는 디렉토리,\n" " 기본값으로 \"$HOME/.icewm/\".\n" " DISPLAY=NAME 사용할 X ì„œë²„ì˜ ì´ë¦„, 기본값으로 Xlibì— ì˜ì¡´.\n" " MAIL=URL 사용ìžì˜ ìš°íŽ¸í•¨ì˜ ìœ„ì¹˜. schemaê°€ ë¹ ì¡Œì„ ë•Œ\n" " 로컬 \"file\" schemaê°€ 가정ë¨.\n" "\n" "버그 ë³´ê³ , ì§€ì› ìš”ì²­, ì˜ê²¬ 따위는 http://www.icewm.org/ 방문\n" msgid "Confirm Logout" msgstr "종료 확ì¸" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "종료하면 실행 ì¤‘ì¸ í”„ë¡œê·¸ëž¨ì„ ëª¨ë‘ ë냅니다.\n" "종료할까요?" msgid "Bad Look name" msgstr "보기 안 ì¢‹ì€ ì´ë¦„" #, fuzzy msgid "Loc_k Workstation" msgstr "화면 잠그기(_W)" msgid "_Logout..." msgstr "종료...(_L)" msgid "_Cancel" msgstr "취소(_C)" msgid "_Restart icewm" msgstr "icewm 다시 시작(_R)" msgid "_About" msgstr "ì •ë³´(_A)" msgid "Maximize" msgstr "최대화" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "최소화" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "숨기기" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "ë§ì•„올리기" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "앞으로/뒤로" msgid "Kill Client: " msgstr "í´ë¼ì´ì–¸íЏ 죽ì´ê¸°: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "경고! ì´ í´ë¼ì´ì–¸íŠ¸ë¥¼ 죽ì´ë©´ 저장ë˜ì§€ 않ì€\n" "변경 ì‚¬í•­ì„ ëª¨ë‘ ìžƒì–´ë²„ë¦½ë‹ˆë‹¤. 계ì†í• ê¹Œìš”?" msgid "Restore" msgstr "ì›ëž˜ í¬ê¸°ë¡œ" msgid "Rolldown" msgstr "ë§ì•„내리기" #, c-format msgid "Error in window option: %s" msgstr "윈ë„ìš° 옵션 오류: %s" #, c-format msgid "Unknown window option: %s" msgstr "알 수 없는 ì°½ 옵션: %s" msgid "Syntax error in window options" msgstr "ì°½ 옵션ì—서 문법 오류" msgid "Out of memory for window options" msgstr "윈ë„ìš° ì˜µì…˜ì— ëŒ€í•´ 메모리 부족" msgid "Missing command argument" msgstr "명령어 ì¸ìˆ˜ ë¹ ì§" #, c-format msgid "Bad argument %d" msgstr "ì¸ìˆ˜ 틀림 %d" #, c-format msgid "Error at prog %s" msgstr "%s 프로그램ì—서 오류" #, c-format msgid "Unexepected keyword: %s" msgstr "예ìƒí•˜ì§€ 못한 키워드: %s" #, c-format msgid "Error at key %s" msgstr "%s 키ì—서 오류" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "프로그램" msgid "_Run..." msgstr "실행...(_R)" msgid "_Windows" msgstr "ì°½(_W)" msgid "_Help" msgstr "ë„움ë§(_H)" msgid "_Click to focus" msgstr "í´ë¦­ì— ì˜í•œ ì´ˆì (_C)" msgid "_Sloppy mouse focus" msgstr "ë§ˆìš°ìŠ¤ì— ë”°ë¥¸ ì´ˆì (_S)" msgid "Custo_m" msgstr "ì‚¬ìš©ìž ì„¤ì •ëŒ€ë¡œ(_M)" msgid "_Focus" msgstr "ì´ˆì (_F)" msgid "_Themes" msgstr "모양새(_T)" msgid "Se_ttings" msgstr "설정(_T)" #, c-format msgid "Session Manager: Unknown line %s" msgstr "세션 관리ìž: 알 수 없는 줄 %s" msgid "Task Bar" msgstr "태스í¬ë°”" msgid "Tile _Vertically" msgstr "ìˆ˜ì§ ì •ë ¬(_V)" msgid "T_ile Horizontally" msgstr "ìˆ˜í‰ ì •ë ¬(_I)" msgid "Ca_scade" msgstr "ê³„ë‹¨ì‹ ì •ë ¬(_S)" msgid "_Arrange" msgstr "ì •ë ¬(_A)" msgid "_Minimize All" msgstr "ëª¨ë‘ ìµœì†Œí™”(_M)" msgid "_Hide All" msgstr "ëª¨ë‘ ìˆ¨ê¸°ê¸°(_H)" msgid "_Undo" msgstr "실행 취소(_U)" msgid "Arrange _Icons" msgstr "ì•„ì´ì½˜ ì •ë ¬(_I)" msgid "_Refresh" msgstr "새롭게(_R)" msgid "_License" msgstr "ë¼ì´ì„¼ìФ(_L)" msgid "Favorite applications" msgstr "ì¦ê²¨ì“°ëŠ” 프로그램들" msgid "Window list menu" msgstr "ì°½ ëª©ë¡ ë©”ë‰´" msgid "Show Desktop" msgstr "바탕화면 보기" msgid "All Workspaces" msgstr "모든 작업공간" msgid "Del" msgstr "지우기" msgid "_Terminate Process" msgstr "프로세스 종결(_T)" msgid "Kill _Process" msgstr "프로세스 죽ì´ê¸°(_P)" msgid "_Show" msgstr "보여주기(_S)" msgid "_Minimize" msgstr "최소화(_M)" msgid "Window list" msgstr "ì°½ 목ë¡" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. 작업공간 %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "메시지 루프: select 실패 (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "알아볼 수 없는 옵션: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "알아볼 수 없는 ì¸ìˆ˜: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "%s ìŠ¤ìœ„ì¹˜ì— ì¸ìˆ˜ í•„ìš”" #, c-format msgid "Unknown key name %s in %s" msgstr "알 수 없는 키 ì´ë¦„ %s: %s" #, c-format msgid "Bad argument: %s for %s" msgstr "ì¸ìˆ˜ 틀림: %s for %s" #, c-format msgid "Bad option: %s" msgstr "옵션 틀림: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "\"%s\" 그림 ì½ê¸° 실패" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "커서 ê·¸ë¦¼ì´ ìž˜ëª»ë¨: \"%s\"는 ë…특한 ìƒ‰ê¹”ì´ ë„ˆë¬´ ë§ŽìŒ" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "버그? Imlib는 \"%s\"를 ì½ì„ 수 있었ìŒ" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "버그? ìž˜ëª»ëœ ëª¨ì–‘ì˜ XPM 앞부분 그러나 Imlib는 \"%s\"를 í•´ì„í•  수 있었" "ìŒ" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "버그? XPM íŒŒì¼ ê°‘ìžê¸° ë났으나 Imlib는 \"%s\"를 í•´ì„í•  수 있었ìŒ" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "버그? 예ìƒí•˜ì§€ 못한 ê¸€ìž ê·¸ëŸ¬ë‚˜ Imlib는 \"%s\"를 í•´ì„í•  수 있었ìŒ" #, c-format msgid "Could not load font \"%s\"." msgstr "\"%s\" í°íŠ¸ë¥¼ ì½ì§€ 못함." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "기본 í°íЏ \"%s\" ì½ê¸° 실패." #, c-format msgid "Could not load fontset \"%s\"." msgstr "\"%s\" í°íŠ¸ì…‹ ì½ì§€ 못함." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "\"%s\" í°íŠ¸ì…‹ì— ëŒ€í•œ 코드셋 ë¹ ì§:" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "\"%s\" ê·¸ë¦¼ì— ëŒ€í•´ 메모리 부족" #, c-format msgid "Loading of image \"%s\" failed" msgstr "ì´ë¯¸ì§€ \"%s\" ì½ê¸° 실패" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: X pixmap íšë“ 실패" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Imlib ì´ë¯¸ì§€ì—서 X pixmap 매핑 실패" msgid "Cu_t" msgstr "잘ë¼ë‚´ê¸°(_T)" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "복사(_C)" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "붙여넣기(_P)" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "ì„ íƒ ë‚´ìš© ë¶™ì´ê¸°(_S)" msgid "Select _All" msgstr "ì „ì²´ ì„ íƒ(_A)" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "C ë¼ì´ë¸ŒëŸ¬ë¦¬ê°€ ì§€ì›í•˜ì§€ 않는 로케ì¼. 'C' 로케ì¼ë¡œ 바꿈." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "현재 로케ì¼ì˜ ì½”ë“œì…‹ì„ ê²°ì •í•  수 ì—†ìŒ. ISO-8859-1 가정.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv는 (충분한) %s를 %s ë³€í™˜ê¸°ì— ê³µê¸‰í•˜ì§€ 않는다." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "ìž˜ëª»ëœ ë©€í‹°ë°”ì´íЏ 문ìžì—´ \"%s\": %s" msgid "OK" msgstr "예" msgid "Cancel" msgstr "아니오" #, c-format msgid "Out of memory for pixel map %s" msgstr "픽셀 ë§µ %sì— ëŒ€í•´ 메모리 부족" #, c-format msgid "Could not find pixel map %s" msgstr "픽셀 ë§µ %s를 ì°¾ì„ ìˆ˜ ì—†ìŒ" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "RGB 픽셀 ë²„í¼ %sì— ëŒ€í•´ 메모리 부족" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "RGB 픽셀 ë²„í¼ %s를 ì°¾ì„ ìˆ˜ ì—†ìŒ" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "픽셀 ë³€í™˜ì„ ìœ„í•´ 기본 ê³µì •ì„ ì‚¬ìš© (깊ì´: %d; ë§ˆìŠ¤í¬ (빨강/ì´ˆë¡/파" "ëž‘): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d 비트 ì‹œê° í‘œì‹œ ì§€ì› (ì•„ì§) 안 ë¨" msgid "$USER or $LOGNAME not set?" msgstr "$USER ë˜ëŠ” $LOGNAME 정해지지 않ìŒ?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\"는 ë³´í†µì˜ ì¸í„°ë„· 체계를 기술하지 않는다" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\"는 체계 ì„¤ëª…ì„ í¬í•¨í•˜ì§€ 않는다" #~ msgid "%s - unknown format (%d)" #~ msgstr "%s - 모르는 í˜•ì‹ (%d)" #~ msgid "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgstr "수치:\tì‚¬ìš©ìž = %i, ìš°ì„ ë„ = %i, 시스템 = %i, 한가 = %i" #~ msgid "bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgstr "막대:\tì‚¬ìš©ìž = %i, ìš°ì„ ë„ = %i, 시스템 = %i (h = %i)\n" #~ msgid " processes." #~ msgstr " 프로세스." #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "cpu: %d %d %d %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstatì´ ë„ˆë¬´ ë§Žì€ cpu를 발견: %d 개여야 함" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "window 0x%xì— ëŒ€í•´ XQueryTree 실패" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "DEBUG flag로 컴파ì¼ë¨. 디버깅 메시지를 프린트할 것임." #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X 오류 %s(0x%lX): %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "분기 실패 (errno=%d)" #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "ì´ë¦„없는 파ì´í”„ 만들기 실패 (error=%d)." #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "커서 ê·¸ë¦¼ì´ ìž˜ëª»ë¨: \"%s\"는 ë…특한 ìƒ‰ê¹”ì´ ë„ˆë¬´ ë§ŽìŒ" #~ msgid "program label expected" #~ msgstr "프로그램 ë¼ë²¨ 예ìƒë¨" #~ msgid "icon name expected" #~ msgstr "ì•„ì´ì½˜ ì´ë¦„ 예ìƒë¨" #~ msgid "window management class expected" #~ msgstr "ì°½ 관리 í´ëž˜ìФ 예ìƒë¨" #~ msgid "menu caption expected" #~ msgstr "메뉴 캡션 예ìƒë¨" #~ msgid "opening curly expected" #~ msgstr "curly 열기 예ìƒë¨" #~ msgid "action name expected" #~ msgstr "ë™ìž‘ ì´ë¦„ 예ìƒë¨" #~ msgid "unknown action" #~ msgstr "알 수 없는 ë™ìž‘" #~ msgid "Failed to open %s: %s" #~ msgstr "%s를 여는 ë° ì‹¤íŒ¨: %s" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "ì´ë¦„없는 파ì´í”„ 만들기 실패: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "íŒŒì¼ ê¸°ìˆ ìž ë³µì œ 실패: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "%s 실행 실패: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "ìžì‹ 프로세스 만들기 실패: %s" #~ msgid "Not a regular file: %s" #~ msgstr "보통 íŒŒì¼ ì•„ë‹˜: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "한 ìŒì˜ 16진수 숫ìžê°€ 예ìƒë¨" #~ msgid "Unexpected identifier" #~ msgstr "예ìƒí•˜ì§€ 못한 ì‹ë³„ìž" #~ msgid "Identifier expected" #~ msgstr "ì‹ë³„ìž ì˜ˆìƒë¨" #~ msgid "Separator expected" #~ msgstr "êµ¬ë¶„ìž ì˜ˆìƒë¨" #~ msgid "Invalid token" #~ msgstr "ìž˜ëª»ëœ í† í°" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: 그릴 수 있는 0x%x를 픽셀 버í¼ë¡œ 복사 실패" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: 그릴 수 있는 0x%x를 픽셀 버í¼ë¡œ 복사 실패 (%d:%d-%dx%d" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "ICE ì—°ê²°ì´ ë„ˆë¬´ ë§ŽìŒ -- ì§€ì› ì•ˆ ë¨" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "세션 관리ìž: IceAddConnectionWatch 실패." #~ msgid "Session Manager: Init error: %s" #~ msgstr "세션 관리ìž: 초기화 오류: %s" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "16진수 숫ìžê°€ 아님: %c%c (\"%s\"ì—서)" icewm-1.3.7/po/zh_TW.po0000664000076600007660000010026311463274241013643 0ustar develdevel# Traditional Chinese Messages for icewm. # Copyright (C) 2000, 05, 07 Free Software Foundation, Inc. # Li Wei Jih , 2000. # Wei-Lun Chao , 2005, 07. # msgid "" msgstr "Project-Id-Version: icewm 1.2.30\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2007-02-22 14:45+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" msgid " - Power" msgstr " - 供電中" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "P" #, c-format msgid " - Charging" msgstr " - 充電中" msgid "C" msgstr "C" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "CPU 負載:" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "ä¿¡ç®±å”定無效:「%sã€" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "信箱路徑無效:「%sã€" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "使用信箱:「%sã€\n" msgid "Error checking mailbox." msgstr "檢查信箱發生錯誤。" #, c-format msgid "%ld mail message." msgstr "%ld å°éƒµä»¶ã€‚" #, c-format msgid "%ld mail messages." msgstr "%ld å°éƒµä»¶ã€‚" #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "ä»‹é¢ %s:\n" " ç›®å‰é€Ÿçއ (å…¥/出):\t%li %s/%li %s\n" " ç›®å‰å¹³å‡ (å…¥/出):\t%lli %s/%lli %s\n" " å…¨éƒ¨å¹³å‡ (å…¥/出):\t%li %s/%li %s\n" " å·² 傳 é€ (å…¥/出):\t%lli %s/%lli %s\n" " 上線時間:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " 執行者 id:\t" msgid "Workspace: " msgstr "工作å€ï¼š" msgid "Back" msgstr "後退" msgid "Alt+Left" msgstr "Alt+Left" msgid "Forward" msgstr "å‰é€²" msgid "Alt+Right" msgstr "Alt+Right" msgid "Previous" msgstr "上一個" msgid "Next" msgstr "下一個" msgid "Contents" msgstr "內容" msgid "Index" msgstr "索引" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "關閉" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "用法: %s 檔案å稱\n" "\n" "éžå¸¸ç°¡å–®çš„ HTML ç€è¦½å™¨ï¼Œç”¨ä»¥é¡¯ç¤ºç”±æª”案å稱所指定的文件。\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "路徑無效:%s\n" msgid "Invalid path: " msgstr "路徑無效:" msgid "List View" msgstr "清單檢視" msgid "Icon View" msgstr "圖示檢視" msgid "Open" msgstr "開啟" msgid "Undo" msgstr "復原" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "新增" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "釿–°å•Ÿå‹•" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Same éŠæˆ²" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "動作「%sã€è¦æ±‚至少 %d 個引數。" #, c-format msgid "Invalid expression: `%s'" msgstr "表示å¼ç„¡æ•ˆï¼šã€Œ%sã€" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "網域「%sã€çš„命å符號 (數值範åœ: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "工作å€å稱無效:「%sã€" #, c-format msgid "Workspace out of range: %d" msgstr "工作å€è¶…å‡ºå¯æŽ¥å—的範åœ: %d" #, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "用法: %s [é¸é …] 動作\n" "\n" "é¸é …:\n" " -display DISPLAY 連çµåˆ° DISPLAY 所指定的 X 伺æœå™¨ã€‚\n" " é è¨­å€¼: $DISPLAY 或是 :0.0 (當變數未設" "定時)\n" " -window WINDOW_ID 指定控管的視窗。特別識別字 'root' 用於" "根視窗\n" " 而 'focus' 用於目å‰çš„焦點視窗。\n" " -class WM_CLASS 視窗中用以控管的視窗管ç†é¡žåˆ¥ã€‚如果 " "WM_CLASS \n" " 包å«å°æ•¸é»žï¼Œå°±åªæœ‰å‰›å¥½å…·æœ‰ç›¸åŒ " "WM_CLASS 特性\n" " 的視窗æ‰ç¬¦åˆã€‚å¦‚æžœæ²’æœ‰å°æ•¸é»žï¼Œé‚£éº¼ç›¸åŒ" "類別的\n" " 視窗以åŠå…·æœ‰ç›¸åŒå¯¦é«” (äº¦å³ '-name') çš„" "視窗都\n" " 會被é¸å–。\n" "\n" "動作:\n" " setIconTitle TITLE 設定圖示標題。\n" " setWindowTitle TITLE 設定視窗標題。\n" " setGeometry geometry 設定視窗座標。\n" " setState MASK STATE 設定 GNOME 視窗狀態為 STATEã€‚åªæœ‰ç”± " "MASK 所\n" " é¸å–çš„ä½å…ƒæ‰æœƒæœ‰ä½œç”¨ã€‚STATE 與 MASK 都" "是\n" " 'GNOME window state' 領域中的表示å¼ã€‚\n" " toggleState STATE 切æ›ç”± STATE 所指定的 'GNOME window " "state'。\n" " setHints HINTS 設定 GNOME 視窗æç¤ºç‚º HINTS。\n" " setLayer LAYER 移動視窗到其他的 GNOME 視窗層次。\n" " setWorkspace WORKSPACE 移動視窗到其他的工作å€ã€‚\n" " é¸å–根視窗以變更目å‰çš„工作å€ã€‚\n" " listWorkspaces 列出所有工作å€çš„å稱。\n" " setTrayOption TRAYOPTION 設定 IceWM 狀態å€çš„é¸é …æç¤ºã€‚\n" "\n" "表示å¼:\n" " è¡¨ç¤ºå¼æ˜¯ä¸€ä¸²å–®ä¸€é ˜åŸŸç¬¦è™Ÿçš„列表,彼此由 '+' 或 '-' 所連接:\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgid "GNOME window state" msgstr "GNOME 視窗狀態" msgid "GNOME window hint" msgstr "GNOME 視窗æç¤º" msgid "GNOME window layer" msgstr "GNOME 視窗層次" msgid "IceWM tray option" msgstr "IceWM 狀態å€é¸é …" msgid "Usage error: " msgstr "用法錯誤:" #, c-format msgid "Invalid argument: `%s'." msgstr "引數無效:「%sã€ã€‚" msgid "No actions specified." msgstr "未指定動作。" #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "無法開啟顯示:%s。X 必須正在執行且已設定 $DISPLAY。" #, c-format msgid "Invalid window identifier: `%s'" msgstr "無效的視窗識別碼:「%sã€" #, c-format msgid "workspace #%d: `%s'\n" msgstr "å·¥ä½œå€ #%d:「%sã€\n" #, c-format msgid "Unknown action: `%s'" msgstr "䏿˜Žå‹•作:「%sã€" #, c-format msgid "Socket error: %d" msgstr "æ’æ§½éŒ¯èª¤ï¼š%d" #, c-format msgid "Playing sample #%d (%s)" msgstr "正在播放樣本 #%d (%s)" #, c-format msgid "No such device: %s" msgstr "沒有此一è£ç½®: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "無法連線到 ESound 伺æœç¨‹å¼ï¼š%s" msgid "" msgstr "<ç„¡>" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "錯誤 <%d> 發生於上傳「%s:%sã€æ™‚" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "樣本 <%d> åšç‚ºã€Œ%s:%sã€ä¸Šå‚³" #, c-format msgid "Playing sample #%d" msgstr "正在播放樣本 #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr " 無法連çµåˆ° YIFF 伺æœå™¨: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "無法更改至音效模å¼ã€Œ%sã€ã€‚" #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "嵿¸¬åˆ°åˆ‡æ›éŸ³æ•ˆæ¨¡å¼ï¼Œèµ·å§‹çš„音效模å¼ã€Œ%sã€ä¸å†æœ‰ä½œç”¨ã€‚" msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "嵿¸¬åˆ°åˆ‡æ›éŸ³æ•ˆæ¨¡å¼ï¼Œè‡ªå‹•音效模å¼è®Šæ›´åŠŸèƒ½å·²åœç”¨ã€‚" #, c-format msgid "Overriding previous audio mode `%s'." msgstr "è“‹éŽä¹‹å‰çš„音效模å¼ã€Œ%sã€ã€‚" #, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "用法: %s [é¸é …]...\n" "\n" "播放由 IceWM 引發的 GUI 事件所伴隨之音效檔案。\n" "\n" "é¸é …:\n" "\n" " -d, --display=DISPLAY ç”± IceWM æ‰€ä½¿ç”¨çš„é¡¯ç¤ºé¢ (é è¨­å€¼: " "$DISPLAY)。\n" " -s, --sample-dir=DIR æŒ‡å®šå«æœ‰è²éŸ³æª”案的目錄 (如 ~/.icewm/" "sounds)。\n" " -i, --interface=TARGET 指定è²éŸ³è¼¸å‡ºç›®çš„ä»‹é¢ (OSSã€YIFFã€ESD " "之一)。\n" " -D, --device=DEVICE (僅 OSS) 指定數ä½è¨Šè™Ÿè™•ç†å™¨ (é è¨­ /" "dev/dsp)。\n" " -S, --server=ADDR:PORT (ESD 與 YIFF) 指定伺æœå™¨ä½å€å’Œé€£æŽ¥åŸ " "號碼\n" " (é è¨­ ESD 為 localhost:16001 而 YIFF " "為\n" " localhost:9433)。\n" " -m, --audio-mode[=MODE] (僅 YIFF) æŒ‡å®šéŸ³æ•ˆæ¨¡å¼ (ä¿æŒç©ºç™½ä»¥å–" "得列表)。\n" " --audio-mode-auto (僅 YIFF) 隨時變更音效模å¼ä»¥æœŸæœ€ç¬¦åˆ" "樣本的音\n" " 效 (å¯èƒ½æœƒé€ æˆèˆ‡å…¶ä»– Y 客戶端的å•題," "優先於\n" " --audio-mode)。\n" "\n" " -v, --verbose 詳細輸出 (å°å‡ºæ¯å€‹è²éŸ³äº‹ä»¶åˆ°æ¨™æº–輸" "出)。\n" " -V, --version å°å‡ºç‰ˆæœ¬è³‡è¨Šä¸¦é›¢é–‹ã€‚\n" " -h, --help å°å‡º (本) 輔助畫é¢ä¸¦é›¢é–‹ã€‚\n" "\n" "回傳值:\n" "\n" " 0 æˆåŠŸã€‚\n" " 1 一般錯誤。\n" " 2 命令列錯誤。\n" " 3 å­ç³»çµ±éŒ¯èª¤ (例如: 無法與伺æœå™¨é€£ç·š)。\n" "\n" msgid "Multiple sound interfaces given." msgstr "æä¾›å¤šé‡è²éŸ³ä»‹é¢ã€‚" #, c-format msgid "Support for the %s interface not compiled." msgstr "å°æ–¼ %s 介é¢çš„æ”¯æ´æœªç·¨è­¯é€²ä¾†ã€‚" #, c-format msgid "Unsupported interface: %s." msgstr "䏿”¯æ´çš„介é¢: %s。" #, c-format msgid "Received signal %d: Terminating..." msgstr "接收到訊號 %d: æ­£åœ¨çµæŸä¸­..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "接收到訊號 %d: æ­£åœ¨é‡æ–°è¼‰å…¥æ¨£æœ¬..." msgid "Hex View" msgstr "16 進使ª¢è¦–" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "展開 Tab" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "æ›åˆ—" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "用法:icewmbg [ -r | -q ]\n" " -r 釿–°å•Ÿå‹• icewmbg\n" " -q 離開 icewmbg\n" "根據å好檔案載入桌é¢èƒŒæ™¯\n" " DesktopBackgroundCenter - é ä¸­å°é½Šé¡¯ç¤ºæ¡Œé¢èƒŒæ™¯ï¼Œä¸ä»¥æ ¼ç‹€ä¸¦æŽ’\n" " SupportSemitransparency - 支æ´åŠé€æ˜Žçš„終端機程å¼\n" " DesktopBackgroundColor - 桌é¢èƒŒæ™¯é¡è‰²\n" " DesktopBackgroundImage - 桌é¢èƒŒæ™¯åœ–案\n" " DesktopTransparencyColor - åšç‚ºåŠé€æ˜Žè¦–窗的é¡è‰²\n" " DesktopTransparencyImage - åšç‚ºåŠé€æ˜Žè¦–窗的圖案\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s:無法識別的é¸é …「%sã€\n" "試試「%s --helpã€ä»¥å¾—到更多資訊。\n" #, c-format msgid "Loading image %s failed" msgstr "è¼‰å…¥å½±åƒ %s 失敗" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "載入åƒç´ åœ–「%sã€å¤±æ•—:%s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "用法:icewmhint [類別.實體] é¸é … 引數\n" #, c-format msgid "Out of memory (len=%d)." msgstr "記憶體ä¸è¶³ (長度=%d)。" msgid "Warning: " msgstr "警告:" #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "è¦æ±‚移動/æ”¹è®Šå¤§å°æ™‚æœ‰ä¸æ˜Žçš„æ–¹å‘: %d" msgid "Default" msgstr "é è¨­" msgid "(C)" msgstr "©" msgid "Theme:" msgstr "佈景主題:" msgid "Theme Description:" msgstr "佈景主題æè¿°ï¼š" msgid "Theme Author:" msgstr "佈景主題作者:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm - 關於" msgid "Unable to get current font path." msgstr "無法å–å¾—ç›®å‰å­—型路徑。" msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "éžé æœŸæ ¼å¼çš„ ICEWM_FONT_PATH 特性" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "漸層 \"%s\" 使用多é‡åƒè€ƒå€¼" #, c-format msgid "Unknown gradient name: %s" msgstr "䏿˜Žçš„æ¼¸å±¤å稱:%s" msgid "_Logout" msgstr "登出(_L)" msgid "_Cancel logout" msgstr "å–æ¶ˆç™»å‡º(_C)" msgid "Lock _Workstation" msgstr "鎖定工作站(_W)" msgid "Re_boot" msgstr "釿–°é–‹æ©Ÿ(_B)" msgid "Shut_down" msgstr "關機(_D)" msgid "Restart _Icewm" msgstr "釿–°å•Ÿå‹• _Icewm" msgid "Restart _Xterm" msgstr "釿–°å•Ÿå‹• _Xterm" msgid "_Menu" msgstr "é¸å–®(_M)" msgid "_Above Dock" msgstr "åœé å€ä¹‹ä¸Š(_A)" msgid "_Dock" msgstr "åœé å€(_D)" msgid "_OnTop" msgstr "上層(_O)" msgid "_Normal" msgstr "正常(_N)" msgid "_Below" msgstr "下層(_B)" msgid "D_esktop" msgstr "桌é¢(_E)" msgid "_Restore" msgstr "還原(_R)" msgid "_Move" msgstr "移動(_M)" msgid "_Size" msgstr "大å°(_S)" msgid "Mi_nimize" msgstr "縮å°(_N)" msgid "Ma_ximize" msgstr "放大(_X)" msgid "_Fullscreen" msgstr "全螢幕(_F)" msgid "_Hide" msgstr "éš±è—(_H)" msgid "Roll_up" msgstr "å‘上循環(_U)" msgid "R_aise" msgstr "æå‡(_A)" msgid "_Lower" msgstr "é™ä½Ž(_L)" msgid "La_yer" msgstr "層次(_Y)" msgid "Move _To" msgstr "移至(_T)" msgid "Occupy _All" msgstr "全部佔據(_A)" msgid "Limit _Workarea" msgstr "é™åˆ¶å·¥ä½œå€åŸŸ(_W)" msgid "Tray _icon" msgstr "工具列圖示(_I)" msgid "_Close" msgstr "關閉(_C)" msgid "_Kill Client" msgstr "ç æŽ‰å®¢æˆ¶ç«¯ç¨‹å¼(_K)" msgid "_Window list" msgstr "視窗清單(_W)" msgid "Another window manager already running, exiting..." msgstr "å¦ä¸€å€‹è¦–窗管ç†ç¨‹å¼å·²ç¶“在執行,離開中..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "ç„¡æ³•é‡æ–°å•Ÿå‹•:%s\n" "$PATH æœ‰æŒ‡å‘ %s 嗎?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "用法: %s [é¸é …]\n" "啟動 IceWM 視窗管ç†ç¨‹å¼\n" "\n" "é¸é …:\n" " --display=å稱 使用的 X 伺æœå™¨å稱。\n" "%s --sync åŒæ­¥ X11 命令。\n" "\n" " -c, --config=檔案 從檔案載入使用å好。\n" " -t, --theme=檔案 從檔案載入佈景主題。\n" " -n, --no-configure 忽略使用å好檔案。\n" "\n" " -v, --version å°å‡ºç‰ˆæœ¬è³‡è¨Šä¸¦é›¢é–‹ã€‚\n" " -h, --help å°å‡ºæœ¬ç”¨æ³•ç•«é¢ä¸¦é›¢é–‹ã€‚\n" "%s --replace ç½®æ›å·²å­˜åœ¨çš„視窗管ç†ç¨‹å¼ã€‚\n" " --restart ä¸è¦ä½¿ç”¨é€™å€‹: 它是個內部的旗標。\n" "\n" "環境變數:\n" " ICEWM_PRIVCFG=路徑 用以放置使用者ç§äººè¨­å®šæª”案的目錄,\n" " é è¨­ç‚º \"$HOME/.icewm/\"\n" " DISPLAY=å稱 使用的 X 伺æœå™¨å稱,é è¨­å€¼æœƒä¾æ“š Xlib。\n" " MAIL=URL 您的信箱ä½ç½®ã€‚如果çœç•¥äº†æ¦‚è¦ï¼Œå°±æœƒå‡å®šç‚º\n" " 本機的 \"file\" 概è¦ã€‚\n" "\n" "åƒçœ‹ http://www.icewm.org/ 以回報錯誤ã€è¦æ±‚支æ´ã€æä¾›æ„見...\n" msgid "Confirm Logout" msgstr "確定登出" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "登出會關閉所有活動中的應用程å¼ã€‚\n" "è¦ç¹¼çºŒï¼Ÿ" msgid "Bad Look name" msgstr "ä¸ç•¶çš„ Look å稱" #, fuzzy msgid "Loc_k Workstation" msgstr "鎖定工作站(_W)" msgid "_Logout..." msgstr "登出(_L)..." msgid "_Cancel" msgstr "å–æ¶ˆ(_C)" msgid "_Restart icewm" msgstr "釿–°å•Ÿå‹• icewm(_R)" msgid "_About" msgstr "關於(_A)" msgid "Maximize" msgstr "放到最大" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "縮到最å°" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "éš±è—" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "å‘上循環" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "æå‡/é™ä½Ž" msgid "Kill Client: " msgstr "ç æŽ‰å®¢æˆ¶ç«¯ç¨‹å¼ï¼š" msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "警告ï¼ç•¶é€™å€‹å®¢æˆ¶ç«¯ç¨‹å¼è¢«ç æŽ‰æ™‚,所有未儲存的變更都將會失去。\n" "您希望繼續進行嗎?" msgid "Restore" msgstr "還原" msgid "Rolldown" msgstr "å‘下循環" #, c-format msgid "Error in window option: %s" msgstr "視窗é¸é …錯誤:%s" #, c-format msgid "Unknown window option: %s" msgstr "䏿˜Žè¦–窗é¸é …:%s" msgid "Syntax error in window options" msgstr "視窗é¸é …語法錯誤" msgid "Out of memory for window options" msgstr "視窗é¸é …記憶體ä¸è¶³" msgid "Missing command argument" msgstr "命令引數ä¸è¶³" #, c-format msgid "Bad argument %d" msgstr "ä¸ç•¶å¼•數 %d" #, c-format msgid "Error at prog %s" msgstr "ç¨‹å¼ %s 錯誤" #, c-format msgid "Unexepected keyword: %s" msgstr "éžé æœŸçš„é—œéµå­—:%s" #, c-format msgid "Error at key %s" msgstr "æŒ‰éµ %s 錯誤" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "程å¼" msgid "_Run..." msgstr "執行(_R)..." msgid "_Windows" msgstr "視窗(_W)" msgid "_Help" msgstr "求助(_H)" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "主題(_T)" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "作業階段管ç†ç¨‹å¼ï¼šä¸æ˜Žçš„列 %s" msgid "Task Bar" msgstr "工作列" msgid "Tile _Vertically" msgstr "垂直並排(_V)" msgid "T_ile Horizontally" msgstr "水平並排(_I)" msgid "Ca_scade" msgstr "階狀(_S)" msgid "_Arrange" msgstr "排列(_A)" msgid "_Minimize All" msgstr "全部縮到最å°(_M)" msgid "_Hide All" msgstr "全部隱è—(_H)" msgid "_Undo" msgstr "復原(_U)" msgid "Arrange _Icons" msgstr "排列圖示(_I)" msgid "_Refresh" msgstr "釿–°æ•´ç†(_R)" msgid "_License" msgstr "授權(_L)" msgid "Favorite applications" msgstr "喜愛的應用程å¼" msgid "Window list menu" msgstr "視窗列表é¸å–®" msgid "Show Desktop" msgstr "顯示桌é¢" msgid "All Workspaces" msgstr "所有工作å€" msgid "Del" msgstr "刪除" msgid "_Terminate Process" msgstr "終止行程(_T)" msgid "Kill _Process" msgstr "ç æŽ‰è¡Œç¨‹(_P)" msgid "_Show" msgstr "顯示(_S)" msgid "_Minimize" msgstr "縮到最å°(_M)" msgid "Window list" msgstr "視窗清單" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%luã€‚å·¥ä½œå€ %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "" #, c-format msgid "Unrecognized option: %s\n" msgstr "無法識別的é¸é …:%s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "無法識別的引數:%s\n" #, c-format msgid "Argument required for %s switch" msgstr "åˆ‡æ› %s 需è¦å¼•數" #, c-format msgid "Unknown key name %s in %s" msgstr "䏿˜Žçš„æŒ‰éµå稱 %s / %s" #, c-format msgid "Bad argument: %s for %s" msgstr "ä¸ç•¶çš„引數:%s å°æ–¼ %s" #, c-format msgid "Bad option: %s" msgstr "ä¸ç•¶çš„é¸é …:%s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "載入åƒç´ åœ– \"%s\" 失敗" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "無效的游標åƒç´ åœ–:\"%s\" 嫿œ‰å¤ªå¤šå–®ä¸€é¡è‰²" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "程å¼éŒ¯èª¤ï¼ŸImlib 之å‰å¯ä»¥è®€å– \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "程å¼éŒ¯èª¤ï¼Ÿç•°å¸¸çš„ XPM 標頭,但是 Imlib 之å‰å¯ä»¥è§£æž \"%s\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "程å¼éŒ¯èª¤ï¼ŸXPM 檔案éžé æœŸçµæŸï¼Œä½†æ˜¯ Imlib 之å‰å¯ä»¥è§£æž \"%s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "程å¼éŒ¯èª¤ï¼Ÿéžé æœŸå­—元,但是 Imlib 之å‰å¯ä»¥è§£æž \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "無法載入字型「%sã€ã€‚" #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "載入後備字型 \"%s\" 失敗" #, c-format msgid "Could not load fontset \"%s\"." msgstr "無法載入字型集「%sã€ã€‚" #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "字型集 \"%s\" 缺少編碼:" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "åƒç´ åœ– \"%s\" 的記憶體ä¸è¶³" #, c-format msgid "Loading of image \"%s\" failed" msgstr "載入圖案 \"%s\" 失敗" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: X åƒç´ åœ–å–得失敗" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Imlib 圖案至 X åƒç´ åœ–å°æ‡‰å¤±æ•—" msgid "Cu_t" msgstr "剪下(_T)" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "複製(_C)" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "貼上(_P)" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "貼上所é¸(_S)" msgid "Select _All" msgstr "全部é¸å–(_A)" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "C 函å¼åº«ä¸æ”¯æ´èªžå€ã€‚回復到 'C' 語å€ã€‚" msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "判別目å‰èªžå€çš„編碼時失敗。å‡å®šç‚º ISO-8859-1。\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv ä¸(充分)æ”¯æ´ %s 到 %s 的轉æ›å™¨ã€‚" #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "無效的多ä½å…ƒå­—串「%sã€ï¼š%s" msgid "OK" msgstr "確定" msgid "Cancel" msgstr "å–æ¶ˆ" #, c-format msgid "Out of memory for pixel map %s" msgstr "åƒç´ åœ– %s 的記憶體ä¸è¶³" #, c-format msgid "Could not find pixel map %s" msgstr "找ä¸åˆ°åƒç´ åœ– %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "RGB åƒç´ ç·©è¡å€ %s 的記憶體ä¸è¶³" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "找ä¸åˆ° RGB åƒç´ ç·©è¡å€ %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "使用回復機制來轉æ›åƒç´  (色深:%dï¼›é®ç½© (ç´…/ç¶ /è—):%0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d ä½å…ƒè¦–訊(å°š)未支æ´" msgid "$USER or $LOGNAME not set?" msgstr "$USER 或 $LOGNAME 未設定?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "「%sã€ä¸¦æœªæè¿°ä¸€èˆ¬ç¶²éš›ç¶²è·¯æ–¹æ¡ˆ" #, c-format msgid "\"%s\" contains no scheme description" msgstr "「%sã€æ²’æœ‰åŒ…å«æ–¹æ¡ˆæè¿°" #~ msgid " processes." #~ msgstr "行程。" #~ msgid "program label expected" #~ msgstr "需è¦ç¨‹å¼æ¨™ç±¤" #~ msgid "icon name expected" #~ msgstr "需è¦åœ–示å稱" #~ msgid "window management class expected" #~ msgstr "需è¦è¦–窗管ç†é¡žåˆ¥" #~ msgid "menu caption expected" #~ msgstr "需è¦é¸å–®æ¨™é¡Œ" #~ msgid "opening curly expected" #~ msgstr "éœ€è¦æ²æ›²é–‹å•Ÿ" #~ msgid "action name expected" #~ msgstr "需è¦å‹•作å稱" #~ msgid "unknown action" #~ msgstr "未知的動作" #~ msgid "Failed to open %s: %s" #~ msgstr "開啟 %s:%s 時失敗" #~ msgid "Failed to execute %s: %s" #~ msgstr "執行 %s 時失敗:%s" #~ msgid "Failed to create child process: %s" #~ msgstr "建立å­è¡Œç¨‹æ™‚失敗:%s" #~ msgid "Not a regular file: %s" #~ msgstr "䏿˜¯æ™®é€šæª”案:%s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "éœ€è¦æˆå°çš„ 16 進使•¸å­—" #~ msgid "Unexpected identifier" #~ msgstr "éžé æœŸçš„識別字" #~ msgid "Identifier expected" #~ msgstr "需è¦è­˜åˆ¥å­—" #~ msgid "Separator expected" #~ msgstr "需è¦åˆ†éš”符號" #~ msgid "Invalid token" #~ msgstr "無效的標記" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "䏿˜¯ 16 進使•¸å­—:%c%c(在「%sã€ï¼‰" icewm-1.3.7/po/it.po0000664000076600007660000011066011463274241013226 0ustar develdevel# Italian Messages for IceWM. # Copyright @ 2000-2001 Marko Macek. # Current translator: # Yuri Bongiorno http://yuri.webhop.org/, 2007. # Traduttori Italiani GNU: http://www.linux.it/tp # Previous translator: # Riccardo Murri # msgid "" msgstr "Project-Id-Version: IceWM 1.2.31\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2007-06-11 11:37+0200\n" "Last-Translator: Yuri Bongiorno http://yuri.webhop.org/\n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Alimentazione" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "P" #, c-format msgid " - Charging" msgstr " - Sotto carica" msgid "C" msgstr "C" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "Carico della CPU: " #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Protocollo mailbox non valido: «%s»" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Percorso mailbox non valido: «%s»" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "È in uso la mailbox «%s»\n" msgid "Error checking mailbox." msgstr "Errore durante il controllo della mailbox." #, c-format msgid "%ld mail message." msgstr "%ld messaggio di posta." #, c-format msgid "%ld mail messages." msgstr "%ld messaggi di posta." #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Interfaccia %s:\n" " Velocità attuale (ingr/usc):\t%li·%s/%li·%s\n" " Media attuale (ingr/usc):\t%lli·%s/%lli·%s\n" " Media totale (ingr/usc):\t%li·%s/%li·%s\n" " Trasferiti (ingr/usc):\t%lli·%s/%lli·%s\n" " Tempo di collegamento:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Chiamante:\t" msgid "Workspace: " msgstr "Area di lavoro: " msgid "Back" msgstr "Indietro" msgid "Alt+Left" msgstr "Alt+FrecciaSinistra" msgid "Forward" msgstr "Avanti" msgid "Alt+Right" msgstr "Alt+FrecciaDestra" msgid "Previous" msgstr "Precedente" msgid "Next" msgstr "Successivo" msgid "Contents" msgstr "Sommario" msgid "Index" msgstr "Indice analitico" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Chiudi" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Uso: %s NOMEFILE\n" "\n" "Un semplice visualizzatore HTML che mostra il documento specificato " "da NOMEFILE.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Percorso non valido: %s\n" msgid "Invalid path: " msgstr "Percorso non valido: " msgid "List View" msgstr "Vista a lista" msgid "Icon View" msgstr "Vista a icone" msgid "Open" msgstr "Apri" msgid "Undo" msgstr "Annulla" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Nuovo" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Ricomincia" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Same Game" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "L'azione «%s» richiede almeno %d argomenti." #, c-format msgid "Invalid expression: `%s'" msgstr "Espressione non valida: «%s»" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Simboli con nome del dominio «%s» (intervallo numerico %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Nome dell'area di lavoro non valido: «%s»" #, c-format msgid "Workspace out of range: %d" msgstr "Area di lavoro fuori intervallo: %d" #, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Uso: %s [OPZIONI] AZIONI\n" "\n" "Opzioni:\n" " -display DISPLAY Si connette al server X specificato da " "DISPLAY.\n" " Predefinito: $DISPLAY o :0.0 quando " "non impostato.\n" " -window WINDOW_ID Specifica la finestra su cui agire. " "Identificatori\n" " speciali sono «root» per lo sfondo e " "«focus»\n" " per la finestra che attualmente ha il " "focus.\n" " -class WM_CLASS La classe di gestione delle finestre\n" " da manipolare. Se WM_CLASS contiene un " "punto,\n" " corrispondono solo le finestre con " "esattamente\n" " la stessa WM_CLASS. Se non c'è alcun " "punto, sono\n" " selezionate le finestre della stessa " "classe e quelle\n" " della stessa instanza (alias «-name»).\n" "\n" "Azioni:\n" " setIconTitle TITOLO Imposta il titolo dell'icona.\n" " setWindowTitle TITOLO Imposta il titolo della finestra.\n" " setGeometry geometria Imposta la geometria della finestra\n" " setState MASC STATE Imposta lo stato della finestra di " "GNOME a STATO.\n" " Solo i bit selezionati da MASC sono " "modificati.\n" " STATO e MASC sono espressioni del " "dominio\n" " «stato della finestra di GNOME».\n" " toggleState STATO Commuta i bit di stato della finestra " "di GNOME\n" " indicati da STATO.\n" " setHints HINTS Imposta i suggerimenti della finestra " "di GNOME a HINTS.\n" " setLayer LIVELLO Sposta la finestra su un'altro livello " "di finestra di GNOME.\n" " setWorkspace SPAZIO Sposta la finestra in un'altra area di " "lavoro. Seleziona\n" " lo sfondo per cambiare l'attuale area " "di lavoro.\n" " listWorkspaces Elenca i nomi di tutte le aree di " "lavoro\n" " setTrayOption OPZVASSOIO Imposta il suggerimento dell'opzione " "vassoio\n" "\n" "Espressioni:\n" " Le espressioni sono liste di simboli di un dominio concatenate da " "«+» o «|»:\n" "\n" " ESPRESSIONE ::= SIMBOLO | ESPRESSIONE ( «+» | «|» ) SIMBOLO\n" "\n" msgid "GNOME window state" msgstr "Stato della finestra di GNOME" msgid "GNOME window hint" msgstr "Suggerimento della finestra di GNOME" msgid "GNOME window layer" msgstr "Livello della finestra di GNOME" msgid "IceWM tray option" msgstr "Opzione vassoio di IceWM" msgid "Usage error: " msgstr "Errore d'uso: " #, c-format msgid "Invalid argument: `%s'." msgstr "Argomento non valido: «%s»." msgid "No actions specified." msgstr "Nessuna azione specificata." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Impossibile aprire il display: %s. X deve essere in esecuzione\n" "e la variabile $DISPLAY impostata correttamente." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Identificatore della finestra non valido: «%s»" #, c-format msgid "workspace #%d: `%s'\n" msgstr "area di lavoro #%d: «%s»\n" #, c-format msgid "Unknown action: `%s'" msgstr "Azione sconosciuta: «%s»" #, c-format msgid "Socket error: %d" msgstr "Errore di socket: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Riproduzione del campione #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Non esiste il device: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Impossibile connettersi al demone ESound: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Errore <%d> durante il caricamento di «%s:%s»" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Campione <%d> caricato come «%s:%s»" #, c-format msgid "Playing sample #%d" msgstr "Riproduzione del campione #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Impossibile connettersi al server YIFF: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Impossibile passare alla modalità audio «%s»." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Rilevato un cambiamento della modalità audio, la modalità audio " "iniziale «%s» non è più attiva." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Rilevato un cambiamento della modalità audio, cambiamento automatico " "della modalità audio disabilitato." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Ignorata la precedente modalità audio «%s»." #, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Uso: %s [OPZIONE]...\n" "\n" "Suona file audio in risposta agli eventi generati da IceWM.\n" "\n" "Opzioni:\n" "\n" " -d, --display=DISPLAY Display usato da IceWM " "(predefinito: $DISPLAY).\n" " -s, --sample-dir=DIRECTORY Specifica la directory che contiene " "i file\n" " sonori (es. ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifica l'interfaccia sonora:\n" " scegliere tra OSS, YIFF, ESD.\n" " -D, --device=DSP (solo OSS) specifica il DSP da " "usare\n" " (predefinito: /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD e YIFF) specifica indirizzo e " "porta del server\n" " (predefinito localhost:16001 per " "ESD,\n" " o localhost:9433 per YIFF\n" " -m, --audio-mode[=MODO] (solo YIFF) specifica la modalità " "audio\n" " (lasciare vuoto per ottenere una " "lista).\n" " --audio-mode-auto (solo YIFF) cambia al volo la " "modalità\n" " audio per adattarsi a quella del " "campione\n" " (può causare problemi con altri " "client YIFF,\n" " ignora --audio-mode)\n" " -v, --verbose Prolisso (stampa ogni evento sonoro " "su stdout).\n" " -V, --version Mostra le informazioni sulla " "versione ed esce.\n" " -h, --help Mostra questo aiuto ed esce.\n" "\n" "Valori restituiti:\n" "\n" " 0 Successo.\n" " 1 Errore generale.\n" " 2 Errore nella riga di comando.\n" " 3 Errore dei sottosistemi (es. impossibile connettersi al " "server).\n" "\n" msgid "Multiple sound interfaces given." msgstr "È stata indicata più di una interfaccia sonora." #, c-format msgid "Support for the %s interface not compiled." msgstr "Il supporto per l'interfaccia %s non è stato compilato." #, c-format msgid "Unsupported interface: %s." msgstr "Interfaccia non supportata: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Ricevuto il segnale %d: viene terminata l'esecuzione..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Ricevuto il segnale %d: vengono ricaricati i campioni..." msgid "Hex View" msgstr "Vista esadecimale" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Espandi i tab" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "A capo automatico" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "Uso: icewmbg [ -r | -q ]\n" " -r Riavvia icewmbg\n" " -q Termina icewmbg\n" "Carica lo sfondo del desktop in base al file «preferences»\n" " DesktopBackgroundCenter - Mostra lo sfondo centrato, non " "affiancato\n" " SupportSemitransparency - Supporto per i terminali " "semitrasparenti\n" " DesktopBackgroundColor - Colore dello sfondo del desktop\n" " DesktopBackgroundImage - Immagine dello sfondo del desktop\n" " DesktopTransparencyColor - Colore per le finestre semitrasparenti\n" " DesktopTransparencyImage - Immagine per le finestre " "semitrasparenti\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: opzione «%s» non riconosciuta\n" "Provare «%s --help» per maggiori informazioni.\n" #, c-format msgid "Loading image %s failed" msgstr "Fallito il caricamento dell'immagine %s" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Fallito il caricamento della pixmap «%s»: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Uso: icewmhint [classe.istanza] opzione valore\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Memoria esaurita (len=%d)." msgid "Warning: " msgstr "Attenzione: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Direzione sconosciuta nella richiesta sposta/ridimensiona: %d" msgid "Default" msgstr "Predefinito" msgid "(C)" msgstr "@" msgid "Theme:" msgstr "Tema:" msgid "Theme Description:" msgstr "Descrizione del tema:" msgid "Theme Author:" msgstr "Autore del tema:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm - Informazioni" msgid "Unable to get current font path." msgstr "Impossibile ottenere il percorso attuale dei font." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Formato sconosciuto della proprietà ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Riferimenti multipli per il gradiente «%s»" #, c-format msgid "Unknown gradient name: %s" msgstr "Nome gradiente sconosciuto: %s" msgid "_Logout" msgstr "_Esci" msgid "_Cancel logout" msgstr "Annulla us_cita" msgid "Lock _Workstation" msgstr "_Blocca lo schermo" msgid "Re_boot" msgstr "Riav_via il computer" msgid "Shut_down" msgstr "Arresta il _sistema" msgid "Restart _Icewm" msgstr "Riavvia _Icewm" msgid "Restart _Xterm" msgstr "Riavvia _Xterm" msgid "_Menu" msgstr "_Menù" msgid "_Above Dock" msgstr "Sopr_a il dock" msgid "_Dock" msgstr "_Dock" msgid "_OnTop" msgstr "In alt_o" msgid "_Normal" msgstr "_Normale" msgid "_Below" msgstr "In _basso" msgid "D_esktop" msgstr "D_esktop" msgid "_Restore" msgstr "Ri_pristina" msgid "_Move" msgstr "_Sposta" msgid "_Size" msgstr "Ri_dimensiona" msgid "Mi_nimize" msgstr "Mi_nimizza" msgid "Ma_ximize" msgstr "Massimi_zza" msgid "_Fullscreen" msgstr "Sc_hermo intero" msgid "_Hide" msgstr "Nasc_ondi" msgid "Roll_up" msgstr "A_rrotola" msgid "R_aise" msgstr "_Alza" msgid "_Lower" msgstr "Ab_bassa" msgid "La_yer" msgstr "_Livello" msgid "Move _To" msgstr "Spos_ta in" msgid "Occupy _All" msgstr "In t_utti" msgid "Limit _Workarea" msgstr "Limita l'a_rea di lavoro" msgid "Tray _icon" msgstr "_Icona in vassoio" msgid "_Close" msgstr "_Chiudi" msgid "_Kill Client" msgstr "_Uccidi il client" msgid "_Window list" msgstr "Elenco delle _finestre" msgid "Another window manager already running, exiting..." msgstr "Un altro window manager è già attivo, esco..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Impossibile riavviare: %s\n" "%s si trova in $PATH?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "Uso: %s [OPZIONI]\n" "Avvia il window manager IceWM.\n" "\n" "Opzioni:\n" " --display=NOME NOME del server X in uso.\n" "%s --sync Sincronizza i comandi X11.\n" "\n" " -c, --config=FILE Carica le preferenze da FILE.\n" " -t, --theme=FILE Carica il tema da FILE.\n" " -n, --no-configure Ignora il file delle preferenze.\n" "\n" " -v, --version Mostra le informazioni sulla versione ed " "esce.\n" " -h, --help Mostra questo aiuto ed esce.\n" "%s --replace Sostituisce un window manager esistente.\n" "%s --restart Non usare: è un'opzione interna.\n" "\n" "Variabili d'ambiente:\n" " ICEWM_PRIVCFG=PATH Directory da usare per i file di " "configurazione personale,\n" " «$HOME/.icewm/» è quella predefinita.\n" " DISPLAY=NOME Nome del server X in uso, dipende da Xlib.\n" " MAIL=URL Locazione della mailbox. Se lo schema è " "omesso\n" " si assume il «file» di schema locale.\n" "\n" "Visitare http://www.icewm.org/ per segnalare bug, richieste, " "commenti...\n" msgid "Confirm Logout" msgstr "Conferma uscita" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Tutte le applicazioni ancora attive stanno per essere chiuse.\n" "Procedere?" msgid "Bad Look name" msgstr "Nome look errato" #, fuzzy msgid "Loc_k Workstation" msgstr "_Blocca lo schermo" msgid "_Logout..." msgstr "_Esci" msgid "_Cancel" msgstr "_Annulla" msgid "_Restart icewm" msgstr "_Riavvia icewm" msgid "_About" msgstr "_Informazioni" msgid "Maximize" msgstr "Massimizza" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Minimizza" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Nascondi" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Arrotola" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Alza/Abbassa" msgid "Kill Client: " msgstr "Uccidi il client: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "Attenzione: uccidendo questo client si perdono\n" "le modifiche non ancora salvate. Procedere?" msgid "Restore" msgstr "Ripristina" msgid "Rolldown" msgstr "Srotola" #, c-format msgid "Error in window option: %s" msgstr "Errore nell'opzione della finestra: %s" #, c-format msgid "Unknown window option: %s" msgstr "Opzione sconosciuta della finestra: %s" msgid "Syntax error in window options" msgstr "Errore di sintassi nelle opzioni della finestra" msgid "Out of memory for window options" msgstr "Memoria esaurita per le opzioni della finestra" msgid "Missing command argument" msgstr "Manca l'argomento del comando" #, c-format msgid "Bad argument %d" msgstr "Argomento %d errato" #, c-format msgid "Error at prog %s" msgstr "Errore in prog %s" #, c-format msgid "Unexepected keyword: %s" msgstr "Keyword inattesa: %s" #, c-format msgid "Error at key %s" msgstr "Errore nel tasto %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programmi" msgid "_Run..." msgstr "E_segui..." msgid "_Windows" msgstr "_Finestre" msgid "_Help" msgstr "_Aiuto" msgid "_Click to focus" msgstr "_Cliccare per il focus" msgid "_Sloppy mouse focus" msgstr "Il focus _segue il mouse" msgid "Custo_m" msgstr "Perso_nalizzato" msgid "_Focus" msgstr "_Focus" msgid "_Themes" msgstr "_Temi" msgid "Se_ttings" msgstr "Impos_tazioni" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Session Manager: riga %s sconosciuta" msgid "Task Bar" msgstr "Barra delle applicazioni" msgid "Tile _Vertically" msgstr "Affianca _verticalmente" msgid "T_ile Horizontally" msgstr "Affianca or_izzontalmente" msgid "Ca_scade" msgstr "A ca_scata" msgid "_Arrange" msgstr "Dis_poni" msgid "_Minimize All" msgstr "_Minimizza tutto" msgid "_Hide All" msgstr "_Nascondi tutto" msgid "_Undo" msgstr "Ann_ulla" msgid "Arrange _Icons" msgstr "Disponi le _icone" msgid "_Refresh" msgstr "Aggio_rna" msgid "_License" msgstr "_Licenza d'uso" msgid "Favorite applications" msgstr "Applicazioni preferite" msgid "Window list menu" msgstr "Menù elenco finestre" msgid "Show Desktop" msgstr "Mostra desktop" msgid "All Workspaces" msgstr "Tutte le aree di lavoro" msgid "Del" msgstr "Canc" msgid "_Terminate Process" msgstr "_Termina il processo" msgid "Kill _Process" msgstr "Uccidi il _processo" msgid "_Show" msgstr "Mo_stra" msgid "_Minimize" msgstr "_Minimizza" msgid "Window list" msgstr "Elenco finestre" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Area di lavoro %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Message Loop: select fallito (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Opzione non riconosciuta: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Argomento non riconosciuto: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "L'argomento ha richiesto lo switch %s" #, c-format msgid "Unknown key name %s in %s" msgstr "Tasto %s sconosciuto in %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Argomento errato: %s per %s" #, c-format msgid "Bad option: %s" msgstr "Opzione errata: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Fallito il caricamento della pixmap «%s»" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Cursore della pixmap non valido: «%s» contiene troppi colori unici" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "BUG? Imlib era riuscito a leggere «%s»" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "BUG? Header XPM malformato ma Imlib era capace di analizzare «%s»" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "BUG? Fine inaspettata del file XPM ma Imlib era capace di analizzare " "«%s»" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "BUG? Carattere inatteso, ma Imlib era capace di analizzare «%s»" #, c-format msgid "Could not load font \"%s\"." msgstr "Impossibile caricare il font «%s»." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Fallito il caricamento del font di riserva «%s»." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Impossibile caricare il fontset «%s»." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "Mancano i codeset per il fontset «%s»:" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Memoria esaurita per la pixmap «%s»" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Fallito il caricamento dell'immagine «%s»" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: fallita l'acquisizione della pixmap X" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: fallita la conversione da immagine Imlib a pixmap X" msgid "Cu_t" msgstr "_Taglia" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Copia" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_Incolla" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Incolla la _selezione" msgid "Select _All" msgstr "Selezion_a tutto" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Localizzazione non supportata dalla libreria C. Si ripiega sulla " "localizzazione C." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "Impossibile determinare l'attuale codeset di locale. Si assume ISO-" "8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv non fornisce (abbastanza) convertitori da %s a %s." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Stringa multibyte «%s» non valida: %s" msgid "OK" msgstr "Ok" msgid "Cancel" msgstr "Annulla" #, c-format msgid "Out of memory for pixel map %s" msgstr "Memoria esaurita per la pixmap %s" #, c-format msgid "Could not find pixel map %s" msgstr "Impossibile trovare la pixmap %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Memoria esaurita per il buffer di pixel RGB %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Impossibile trovare il buffer di pixel RGB %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "In uso il meccanismo di riserva per convertire i pixel (profondità: %" "d; maschera (R/G/B): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: profondità di %d bit non (ancora) supportata" msgid "$USER or $LOGNAME not set?" msgstr "$USER o $LOGNAME non impostati?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "«%s» non descrive uno schema comune di indirizzo internet" #, c-format msgid "\"%s\" contains no scheme description" msgstr "«%s» non contiene uno schema di descrizione" #~ msgid "%s - unknown format (%d)" #~ msgstr "%s - formato sconosciuto (%d)" #~ msgid "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgstr "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgid "bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgstr "bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgid " processes." #~ msgstr " processi." #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "cpu: %d %d %d %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat trova troppe cpu: dovrebbe essere %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree ha fallito per la finestra 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Compilato con l'opzione DEBUG. Vengono visualizzati i " #~ "messaggi di debug." #~ msgid "X error %s(0x%lX): %s" #~ msgstr "Errore di X %s(0x%lX): %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "Fork fallito (errno=%d)" #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "Impossibile creare una pipe anonima (errno=%d)." #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Cursore della pixmap non valido: «%s» contiene troppi colori " #~ "unici" #~ msgid "program label expected" #~ msgstr "attesa un'etichetta di programma" #~ msgid "icon name expected" #~ msgstr "atteso un nome di icona" #~ msgid "window management class expected" #~ msgstr "attesa una classe di gestione di finestre" #~ msgid "menu caption expected" #~ msgstr "attesa la descrizione di un menù" #~ msgid "opening curly expected" #~ msgstr "attesa una parentesi graffa aperta" #~ msgid "action name expected" #~ msgstr "atteso il nome di un'azione" #~ msgid "unknown action" #~ msgstr "azione sconosciuta" #~ msgid "Failed to open %s: %s" #~ msgstr "Impossibile creare %s: %s" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Impossibile creare una pipe anonima: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Impossibile duplicare il descrittore del file: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Impossibile eseguire %s: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Impossibile creare il processo figlio: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Non è un file regolare: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Attesa una coppia di cifre esadecimali" #~ msgid "Unexpected identifier" #~ msgstr "Identificatore inatteso" #~ msgid "Identifier expected" #~ msgstr "Atteso un identificatore" #~ msgid "Separator expected" #~ msgstr "Atteso un separatore" #~ msgid "Invalid token" #~ msgstr "Token non valido" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: fallita la copia di drawable 0x%x in pixel buffer" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: fallita la copia di drawable 0x%x in pixel buffer (%d:" #~ "%d-%dx%d" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "TROPPE CONNESSIONI ICE -- non supportato" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Session Manager: IceAddConnectionWatch fallito." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Session Manager: init error: %s" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Non è un numero esadecimale: %c%c (in «%s»)" icewm-1.3.7/po/ja.po0000664000076600007660000006537511463274241013220 0ustar develdevel# Japanese messages for IceWM # Copyright (C) 1999 Free Software Foundation, Inc. # Yoichi ASAI , 1999-2001. # msgid "" msgstr "Project-Id-Version: icewm 1.0.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2001-01-10 23:14+0900\n" "Last-Translator: Yoichi ASAI \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - 給電中" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "P" #, c-format msgid " - Charging" msgstr " - 充電中" msgid "C" msgstr "" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "CPU è² è·: %3.2f %3.2f %3.2f, %d 個ã®ãƒ—ロセス." #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" #, fuzzy, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "無効ãªãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹" #, fuzzy, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "ä¸é©åˆ‡ãªãƒ‘ス: %s\n" #, fuzzy, c-format msgid "Using MailBox \"%s\"\n" msgstr "使ã†ãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹: '%s'\n" msgid "Error checking mailbox." msgstr "メールボックスãƒã‚§ãƒƒã‚¯å¤±æ•—." #, c-format msgid "%ld mail message." msgstr "%ld 通ã®ãƒ¡ãƒ¼ãƒ«" #, c-format msgid "%ld mail messages." msgstr "%ld 通ã®ãƒ¡ãƒ¼ãƒ«" #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "" msgid "\n" " Caller id:\t" msgstr "" msgid "Workspace: " msgstr "ワークスペース: " msgid "Back" msgstr "戻る" msgid "Alt+Left" msgstr "Alt+Left" msgid "Forward" msgstr "進む" msgid "Alt+Right" msgstr "Alt+Right" msgid "Previous" msgstr "å‰" msgid "Next" msgstr "次" msgid "Contents" msgstr "内容" msgid "Index" msgstr "目次" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "é–‰ã˜ã‚‹" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "" #, fuzzy, c-format msgid "Invalid path: %s\n" msgstr "ä¸é©åˆ‡ãªãƒ‘ス: %s\n" #, fuzzy msgid "Invalid path: " msgstr "ä¸é©åˆ‡ãªãƒ‘ス: %s\n" msgid "List View" msgstr "リスト閲覧" msgid "Icon View" msgstr "アイコン閲覧" msgid "Open" msgstr "é–‹ã" msgid "Undo" msgstr "å…ƒã«æˆ»ã™" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "æ–°è¦" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "å†èµ·å‹•" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "ã•ã‚ãŒã‚" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "" #, fuzzy, c-format msgid "Invalid expression: `%s'" msgstr "無効ãªå¼•æ•°: %d" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "" #, c-format msgid "Invalid workspace name: `%s'" msgstr "" #, c-format msgid "Workspace out of range: %d" msgstr "" #, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "" msgid "GNOME window state" msgstr "" msgid "GNOME window hint" msgstr "" msgid "GNOME window layer" msgstr "" msgid "IceWM tray option" msgstr "" #, fuzzy msgid "Usage error: " msgstr "ソケットエラー: %d" #, fuzzy, c-format msgid "Invalid argument: `%s'." msgstr "無効ãªå¼•æ•°: %d" msgid "No actions specified." msgstr "" #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "ディスプレイ %s ã‚’é–‹ã‘ã¾ã›ã‚“。X ãŒèµ·å‹•ã—㦠$DISPLAY ãŒã‚»ãƒƒãƒˆã•れã¦ã„" "ãªã‘れã°ãªã‚Šã¾ã›ã‚“。" #, c-format msgid "Invalid window identifier: `%s'" msgstr "" #, fuzzy, c-format msgid "workspace #%d: `%s'\n" msgstr "ワークスペース: " #, fuzzy, c-format msgid "Unknown action: `%s'" msgstr "未知ã®ã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã‚ªãƒ—ション: %s" #, c-format msgid "Socket error: %d" msgstr "ソケットエラー: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "" #, c-format msgid "No such device: %s" msgstr "" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "" msgid "" msgstr "<ãªã—>" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "" #, c-format msgid "Playing sample #%d" msgstr "" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "" #, c-format msgid "Can't change to audio mode `%s'." msgstr "" #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "" msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "" #, c-format msgid "Overriding previous audio mode `%s'." msgstr "" #, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "" msgid "Multiple sound interfaces given." msgstr "" #, c-format msgid "Support for the %s interface not compiled." msgstr "" #, c-format msgid "Unsupported interface: %s." msgstr "" #, c-format msgid "Received signal %d: Terminating..." msgstr "" #, c-format msgid "Received signal %d: Reloading samples..." msgstr "" msgid "Hex View" msgstr "16進閲覧" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "タブ拡張" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "行折り返ã—" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "" #, c-format msgid "Loading image %s failed" msgstr "ç”»åƒ %s ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—" #, fuzzy, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "ç”»åƒ %s ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "使ã„ã‹ãŸ: icewmhint [class.instance] option arg\n" #, c-format msgid "Out of memory (len=%d)." msgstr "メモリä¸è¶³ (len=%d)." msgid "Warning: " msgstr "警告: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "" #, fuzzy msgid "Default" msgstr "削除" msgid "(C)" msgstr "©" msgid "Theme:" msgstr "テーマ:" msgid "Theme Description:" msgstr "テーマã®èª¬æ˜Ž:" msgid "Theme Author:" msgstr "テーマã®ä½œè€…:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm ã«ã¤ã„ã¦" msgid "Unable to get current font path." msgstr "" msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "" #, fuzzy, c-format msgid "Unknown gradient name: %s" msgstr "未知ã®ã‚­ãƒ¼å %s / %s" msgid "_Logout" msgstr "ログアウト(_L)" msgid "_Cancel logout" msgstr "ログアウトを破棄(_C)" msgid "Lock _Workstation" msgstr "ワークステーションをロック(_W)" msgid "Re_boot" msgstr "リブート(_B)" msgid "Shut_down" msgstr "シャットダウン(_D)" msgid "Restart _Icewm" msgstr "icewm ã‚’å†èµ·å‹•(_I)" msgid "Restart _Xterm" msgstr "xterm ã‚’å†èµ·å‹•(_X)" msgid "_Menu" msgstr "メニュー(_M)" msgid "_Above Dock" msgstr "ドックã®ä¸Š(_A)" msgid "_Dock" msgstr "ドック(_D)" msgid "_OnTop" msgstr "上ã«(_O)" msgid "_Normal" msgstr "通常(_N)" msgid "_Below" msgstr "下ã«(_B)" msgid "D_esktop" msgstr "デスクトップ(_E)" msgid "_Restore" msgstr "å…ƒã«æˆ»ã™(_R)" msgid "_Move" msgstr "移動(_M)" msgid "_Size" msgstr "サイズ(_S)" msgid "Mi_nimize" msgstr "最å°åŒ–(_N)" msgid "Ma_ximize" msgstr "最大化(_X)" msgid "_Fullscreen" msgstr "" msgid "_Hide" msgstr "éš ã™(_H)" msgid "Roll_up" msgstr "シェード(_U)" msgid "R_aise" msgstr "上ã«è¡¨ç¤º(_A)" msgid "_Lower" msgstr "下ã«è¡¨ç¤º(_L)" msgid "La_yer" msgstr "レイヤー(_Y)" msgid "Move _To" msgstr "ç§»é€(_T)" msgid "Occupy _All" msgstr "居座る(_A)" msgid "Limit _Workarea" msgstr "" msgid "Tray _icon" msgstr "" msgid "_Close" msgstr "é–‰ã˜ã‚‹(_C)" msgid "_Kill Client" msgstr "クライアント強制終了(_K)" msgid "_Window list" msgstr "ウインドウ一覧(_W)" msgid "Another window manager already running, exiting..." msgstr "ä»–ã®ã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ãƒžãƒãƒ¼ã‚¸ãƒ£ãŒæ—¢ã«èµ·å‹•ã—ã¦ã„ã¾ã™. 終了ã—ã¾ã™..." #, fuzzy, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "%s ã‚’å†èµ·å‹•ã§ãã¾ã›ã‚“. パス上ã«ã‚りã¾ã™ã‹?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "" msgid "Confirm Logout" msgstr "ログアウトã®ç¢ºèª" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "ログアウトã™ã‚‹ã¨èµ·å‹•中ã®ã‚¢ãƒ—リケーションを\n" "å…¨ã¦çµ‚了ã—ã¾ã™ã€‚ç¶šã‘ã¾ã™ã‹?" msgid "Bad Look name" msgstr "ä¸é©åˆ‡ãª Look å" #, fuzzy msgid "Loc_k Workstation" msgstr "ワークステーションをロック(_W)" msgid "_Logout..." msgstr "ログアウト(_L)..." msgid "_Cancel" msgstr "キャンセル(_C)" msgid "_Restart icewm" msgstr "icewm ã‚’å†èµ·å‹•(_R)" msgid "_About" msgstr "情報(_A)" msgid "Maximize" msgstr "最大化" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "最å°åŒ–" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "éš ã™" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "シェード" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "上/下ã«è¡¨ç¤º" msgid "Kill Client: " msgstr "クライアント強制終了: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "" msgid "Restore" msgstr "å…ƒã«æˆ»ã™" msgid "Rolldown" msgstr "シェード解除" #, c-format msgid "Error in window option: %s" msgstr "ウインドウオプションã®ã‚¨ãƒ©ãƒ¼: %s" #, c-format msgid "Unknown window option: %s" msgstr "未知ã®ã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã‚ªãƒ—ション: %s" msgid "Syntax error in window options" msgstr "ã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã®æ–‡æ³•エラー" msgid "Out of memory for window options" msgstr "ウインドウオプションã®ãŸã‚ã®ãƒ¡ãƒ¢ãƒªãŒè¶³ã‚Šã¾ã›ã‚“" msgid "Missing command argument" msgstr "コマンド引数ãŒè¶³ã‚Šã¾ã›ã‚“" #, c-format msgid "Bad argument %d" msgstr "無効ãªå¼•æ•°: %d" #, c-format msgid "Error at prog %s" msgstr "プログラム %s ã§ã‚¨ãƒ©ãƒ¼" #, c-format msgid "Unexepected keyword: %s" msgstr "" #, c-format msgid "Error at key %s" msgstr "キー %s ã§ã‚¨ãƒ©ãƒ¼" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "プログラム" msgid "_Run..." msgstr "実行(_R)..." msgid "_Windows" msgstr "ウインドウ一覧(_W)" #, fuzzy msgid "_Help" msgstr "éš ã™(_H)" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "テーマ(_T)" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "セッションマãƒãƒ¼ã‚¸ãƒ£: 未知ã®è¡Œ %s" msgid "Task Bar" msgstr "タスクãƒãƒ¼" msgid "Tile _Vertically" msgstr "垂直ã«ä¸¦ã¹ã‚‹(_V)" msgid "T_ile Horizontally" msgstr "æ°´å¹³ã«ä¸¦ã¹ã‚‹(_I)" msgid "Ca_scade" msgstr "カスケード(_S)" msgid "_Arrange" msgstr "整列(_A)" msgid "_Minimize All" msgstr "å…¨ã¦æœ€å°åŒ–(_M)" msgid "_Hide All" msgstr "å…¨ã¦éš ã™(_H)" msgid "_Undo" msgstr "å…ƒã«æˆ»ã™(_U)" msgid "Arrange _Icons" msgstr "アイコン整列(_I)" msgid "_Refresh" msgstr "å†æç”»(_R)" msgid "_License" msgstr "ライセンス(_L)" msgid "Favorite applications" msgstr "" #, fuzzy msgid "Window list menu" msgstr "ウインドウ一覧" #, fuzzy msgid "Show Desktop" msgstr "デスクトップ(_E)" #, fuzzy msgid "All Workspaces" msgstr "ワークスペース: " #, fuzzy msgid "Del" msgstr "削除" msgid "_Terminate Process" msgstr "プロセス終了(_T)" msgid "Kill _Process" msgstr "プロセス強制終了(_P)" msgid "_Show" msgstr "表示(_S)" msgid "_Minimize" msgstr "最å°åŒ–(_M)" msgid "Window list" msgstr "ウインドウ一覧" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. ワークスペース %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "メッセージループ: select 失敗 (errno=%d)" #, fuzzy, c-format msgid "Unrecognized option: %s\n" msgstr "未知ã®ã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã‚ªãƒ—ション: %s" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "" #, c-format msgid "Argument required for %s switch" msgstr "" #, c-format msgid "Unknown key name %s in %s" msgstr "未知ã®ã‚­ãƒ¼å %s / %s" #, c-format msgid "Bad argument: %s for %s" msgstr "無効ãªå¼•æ•°: %s ã«å¯¾ã—㦠%s" #, c-format msgid "Bad option: %s" msgstr "ä¸é©åˆ‡ãªã‚ªãƒ—ション: %s" #, fuzzy, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "ç”»åƒ %s ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "" #, fuzzy, c-format msgid "Could not load font \"%s\"." msgstr "フォント '%s' をロードã§ãã¾ã›ã‚“ã§ã—ãŸ" #, fuzzy, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "ç”»åƒ %s ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—" #, fuzzy, c-format msgid "Could not load fontset \"%s\"." msgstr "フォントセット '%s' をロードã§ãã¾ã›ã‚“ã§ã—ãŸ" #, fuzzy, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "プログラム %s ã®ç¬¬2引数ãŒã‚りã¾ã›ã‚“" #, fuzzy, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "pixmap %s ã®ãŸã‚ã®ãƒ¡ãƒ¢ãƒªä¸è¶³" #, fuzzy, c-format msgid "Loading of image \"%s\" failed" msgstr "ç”»åƒ %s ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: X pixmap ã®è²¼ã‚Šã¤ã‘ã«å¤±æ•—" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Imlib ç”»åƒã‹ã‚‰ X pixmap ã¸ã®ãƒžãƒƒãƒ”ングã«å¤±æ•—" msgid "Cu_t" msgstr "カット(_T)" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "コピー(_C)" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "ペースト(_P)" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "ãƒšãƒ¼ã‚¹ãƒˆé¸æŠž(_S)" msgid "Select _All" msgstr "å…¨ã¦é¸æŠž(_A)" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "" msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "" #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "" msgid "OK" msgstr "了解" msgid "Cancel" msgstr "キャンセル" #, fuzzy, c-format msgid "Out of memory for pixel map %s" msgstr "pixmap %s ã®ãŸã‚ã®ãƒ¡ãƒ¢ãƒªä¸è¶³" #, fuzzy, c-format msgid "Could not find pixel map %s" msgstr "pixmap %s を見ã¤ã‘られã¾ã›ã‚“" #, fuzzy, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "pixmap %s ã®ãŸã‚ã®ãƒ¡ãƒ¢ãƒªä¸è¶³" #, fuzzy, c-format msgid "Could not find RGB pixel buffer %s" msgstr "pixmap %s を見ã¤ã‘られã¾ã›ã‚“" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "" msgid "$USER or $LOGNAME not set?" msgstr "$USER ã¾ãŸã¯ $LOGNAME ãŒã‚»ãƒƒãƒˆã•れã¦ã„ã¾ã›ã‚“" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "" #, c-format msgid "\"%s\" contains no scheme description" msgstr "" #, fuzzy #~ msgid "unknown action" #~ msgstr "未知ã®ã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã‚ªãƒ—ション: %s" #, fuzzy #~ msgid "Invalid token" #~ msgstr "ä¸é©åˆ‡ãªãƒ‘ス: %s\n" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - 未知ã®ãƒ•ォーマット(%d)" #~ msgid "M" #~ msgstr "M" #~ msgid "cpu: %d %d %d %d" #~ msgstr "cpu: %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat ã®æ¤œå‡ºã—㟠CPU ãŒå¤šéŽãŽã¾ã™: %d 個ã§ã‚ã‚‹ã¹ãã§ã™" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "# preferences(%s) - generated by genpref\n" #~ "\n" #~ msgstr "# 設定(%s) - genpref ãŒç”Ÿæˆã—ã¾ã—ãŸ\n" #~ "\n" #~ msgid "# NOTE: All settings are commented out by default, be sure " #~ "to\n" #~ "# uncomment them if you change them!\n" #~ "\n" #~ msgstr "# 注æ„: å…¨ã¦ã®è¨­å®šãŒãƒ‡ãƒ•ォルトã§ã¯ã‚³ãƒ¡ãƒ³ãƒˆã‚¢ã‚¦ãƒˆã•れã¦ã„ã¾" #~ "ã™ã€‚\n" #~ "# 変更ã™ã‚‹æ™‚ã ã‘コメントを外ã™ã‚ˆã†ã«ã—ã¦ãã ã•ã„。\n" #~ "\n" #, fuzzy #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "使ã„ã‹ãŸ: icewmbg pixmap1 pixmap2 ...\n" #~ "\n" #~ "ワークスペース切替ãˆã§ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—ã®èƒŒæ™¯ã‚’変ãˆã¾ã™ã€‚\n" #~ "最åˆã® pixmap ãŒãƒ‡ãƒ•ォルトã¨ã—ã¦ä½¿ã‚れã¾ã™ã€‚\n" #, fuzzy #~ msgid "_Minimized" #~ msgstr "最å°åŒ–(_M)" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X エラー %s(0x%lX): %s" #, fuzzy #~ msgid "Obsolete option: %s" #~ msgstr "ä¸é©åˆ‡ãªã‚ªãƒ—ション: %s" #~ msgid "Gnome" #~ msgstr "Gnome" #~ msgid "Gnome User Apps" #~ msgstr "Gnome ユーザーメニュー" #~ msgid "KDE" #~ msgstr "KDE" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "ICE 接続ãŒå¤šéŽãŽã¾ã™ -- サãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "セッションマãƒãƒ¼ã‚¸ãƒ£: IceAddConnectionWatch 失敗" #~ msgid "Session Manager: Init error: %s" #~ msgstr "セッションマãƒãƒ¼ã‚¸ãƒ£: åˆæœŸåŒ–エラー: %s" #~ msgid "Pipe creation failed (errno=%d)." #~ msgstr "パイプ生æˆå¤±æ•— (errno=%d)" #~ msgid "%s@%s: Sent: %db Rcvd: %db in %ds" #~ msgstr "%s@%s: é€ä¿¡: %db å—ä¿¡: %db / %ds" #~ msgid "Load pixmap %s failed with rc=%d" #~ msgstr "pixmap %s ㌠rc=%d ã§èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ" #~ msgid "Warning! Unsaved changes will be lost!\n" #~ "Proceed?" #~ msgstr "警告: ä¿å­˜ã—ã¦ã„ãªã„変更ã¯å¤±ã‚れã¾ã™ã€‚\n" #~ "ç¶šã‘ã¾ã™ã‹?" #~ msgid "Fallback to '*fixed*' failed." #~ msgstr "'*fixed*' ã¸ã®ãƒ•ォールãƒãƒƒã‚¯ã«å¤±æ•—ã—ã¾ã—ãŸ" #~ msgid "Missing fontset in loading '%s'" #~ msgstr "'%s' をロードã™ã‚‹ã®ã«ãƒ•ォントセットãŒã‚りã¾ã›ã‚“" #~ msgid "Fallback to 'fixed' failed." #~ msgstr "'fixed' ã¸ã®ãƒ•ォールãƒãƒƒã‚¯ã«å¤±æ•—ã—ã¾ã—ãŸ" icewm-1.3.7/po/da.po0000664000076600007660000010650111463274241013175 0ustar develdevel# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "Project-Id-Version: IceWM 1.2.26\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2006-05-28 15:27+0100\n" "Last-Translator: Ole Carlsen \n" "Language-Team: Danish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Strøm" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "S" #, c-format msgid " - Charging" msgstr " - Lader" msgid "C" msgstr "L" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "Processor Belastning: " #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Ugyldig postkasse protokol: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Ugyldig postkasse sti: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Bruger postkasse \"%s\"\n" msgid "Error checking mailbox." msgstr "Fejl under kontrol af postkasse." #, c-format msgid "%ld mail message." msgstr "%ld post besked." #, c-format msgid "%ld mail messages." msgstr "%ld post beskeder." #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Grænseflade %s ind/ud\n" " Nuværende hastighed:\t%li %s/%li %s\n" " Nuværende gennemsnit:\t%lli %s/%lli %s\n" " Samlet gennemsnit:\t%li %s/%li %s\n" " Overført:\t%lli %s/%lli %s\n" " Opkoblet tid:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Opkalds id:\t" msgid "Workspace: " msgstr "ArbejdsomrÃ¥de:" msgid "Back" msgstr "Tilbage" msgid "Alt+Left" msgstr "Alt+Venstre" msgid "Forward" msgstr "Frem" msgid "Alt+Right" msgstr "Alt+Højre" msgid "Previous" msgstr "ForegÃ¥ende" msgid "Next" msgstr "Næste" msgid "Contents" msgstr "Indhold" msgid "Index" msgstr "Indeks" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Lukke" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Brug: %s FILNAVN\n" "\n" "En meget simpel HTML netlæser som viser dokumentet angivet af " "FILNAVN.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Ugyldig sti: %s\n" msgid "Invalid path: " msgstr "Ugyldig sti:" msgid "List View" msgstr "Listevisning" msgid "Icon View" msgstr "Ikonvisning" msgid "Open" msgstr "Ã…bne" msgid "Undo" msgstr "Genskabe" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Ny" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Genstart" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Start spillet igen" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "Handling `%s' kræver mindst %d argument." #, c-format msgid "Invalid expression: `%s'" msgstr "Ugyldigt udtryk: `%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Navngivne symboler pÃ¥ domæne `%s' (numerisk omrÃ¥de: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Ugyldigt arbejdsomrÃ¥de navn: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "ArbejdsomrÃ¥de udenfor omrÃ¥de: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Brug: %s [TILVALG] HANDLING\n" "\n" "Tilvalg:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" "\t\t\t `focus' for the currently focused window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " \t \t \t manipulate. If WM_CLASS contains a period, " "only\n" " \t \t windows with exactly the same WM_CLASS " "property\n" "\t\t\t are matched. If there is no period, windows of\n" "\t\t\t the same class and windows of the same instance\n" "\t\t\t (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " \t\t\t Only the bits selected by MASK are affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set th GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " \t\t\t the root window to change the current workspace.\n" " listWorkspaces \t Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgid "GNOME window state" msgstr "GNOME vindue tilstand" msgid "GNOME window hint" msgstr "GNOME vindue fif" msgid "GNOME window layer" msgstr "GNOME vindue lag" msgid "IceWM tray option" msgstr "IceWM bakke indstilling" msgid "Usage error: " msgstr "Brugsfejl:" #, c-format msgid "Invalid argument: `%s'." msgstr "Ugyldigt argument: `%s'." msgid "No actions specified." msgstr "Ingen handlinger anført." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Kan ikke Ã¥bne skærm: %s. X skal køre og $DISPLAY sat." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Ugyldig vindue identificering: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "arbejdsomrÃ¥de #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "Ukendt handling: '%s'" #, c-format msgid "Socket error: %d" msgstr "Sokkel fejl: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Afspiller prøve #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Ingen sÃ¥dan enhed: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Kan ikke forbinde til ESound tjeneste: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Fejl <%d> under overførsel `%s:%s'" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Prøve <%d> overført som `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "Afspiller prøve #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Kan ikke forbinde til YIFF tjeneste: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Kan ikke ændre til lyd tilstand '%s'." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Lyd tilstand flag fundet, opstarts lyd tilstand `%s' ikke længere " "aktiv." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Lyd tilstand flag fundet, automatisk skift af lyd tilstand " "deaktiveret." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Tilsidesæt foregÃ¥ende lyd tilstand `%s'." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Brug: %s [TILVALG]...\n" "\n" "Afspiller lyd filer pÃ¥ grafisk brugergrænseflade hændelse hævet af " "IceWM.\n" "\n" "Tilvalg:\n" "\n" " -d, --display=DISPLAY Display used by IceWM (default: " "$DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory which " "contains\n" " the sound files (ie ~/.icewm/" "sounds).\n" " -i, --interface=TARGET Specifies the sound output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the digital " "signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT\t(ESD and YIFF) specifies server address " "and\n" " port number (default localhost:16001 " "for ESD\n" "\t\t\t\tand localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the Audio mode " "(leave\n" " blank to get a list).\n" " --audio-mode-auto \t(YIFF only) change Audio mode on the fly " "to\n" " best match sample's Audio (can " "cause\n" " problems with other Y clients, " "overrides\n" " --audio-mode).\n" "\n" " -v, --verbose Be verbose (prints out each sound " "event to\n" " stdout).\n" " -V, --version Prints version information and " "exits.\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" msgid "Multiple sound interfaces given." msgstr "Flere lyd grænseflader angivet." #, c-format msgid "Support for the %s interface not compiled." msgstr "Understøttelse for %s grænseflade ikke oversat." #, c-format msgid "Unsupported interface: %s." msgstr "Ikke understøttet grænseflade: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Modtaget signal %d: Afslutter..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Modtaget signal %d: Genindlæser prøver..." msgid "Hex View" msgstr "Hex Visning" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Udvide Faneblade" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Ombryde Linjer" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "Brug: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: uigenkendelig indstilling `%s'\n" "Prøv `%s --help' for mere information.\n" #, c-format msgid "Loading image %s failed" msgstr "Indlæsning af billede %s mislykkedes" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Indlæsning af billedpunkt kort \"%s\" mislykkedes: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Brug: icewmhint [class.instance] indstilling arg\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Ikke mere hukommelse (len=%d)" msgid "Warning: " msgstr "Advarsel: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Ukendt retning i flyt/ændreforespørgsel: %d" msgid "Default" msgstr "Standard" msgid "(C)" msgstr "(C)" msgid "Theme:" msgstr "Tema:" msgid "Theme Description:" msgstr "Tema Beskrivelse:" msgid "Theme Author:" msgstr "Tema Forfatter:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm - Om" msgid "Unable to get current font path." msgstr "Ikke i stand til at læse nuværende skrifttype sti." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Uventet format for ICEWM_FONT_PATH egenskab" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Flere referencer for farveovergang \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "Ukendt farveovergangsnavn: %s" msgid "_Logout" msgstr "_Logud" msgid "_Cancel logout" msgstr "Annullere logud" msgid "Lock _Workstation" msgstr "LÃ¥s Arbejdsstation" msgid "Re_boot" msgstr "Genstart" msgid "Shut_down" msgstr "Ne_dlukning" msgid "Restart _Icewm" msgstr "Genstart _Icewm" msgid "Restart _Xterm" msgstr "Genstart _xTerminal" msgid "_Menu" msgstr "Menu" msgid "_Above Dock" msgstr "Over dok" msgid "_Dock" msgstr "Dok" msgid "_OnTop" msgstr "Øverst" msgid "_Normal" msgstr "Normal" msgid "_Below" msgstr "Under" msgid "D_esktop" msgstr "Skrivebord" msgid "_Restore" msgstr "Gendanne" msgid "_Move" msgstr "Flytte" msgid "_Size" msgstr "_Størrelse" msgid "Mi_nimize" msgstr "Minimere" msgid "Ma_ximize" msgstr "Maksimere" msgid "_Fullscreen" msgstr "_Fuldskærm" msgid "_Hide" msgstr "Skjule" msgid "Roll_up" msgstr "Rul op" msgid "R_aise" msgstr "Hæv" msgid "_Lower" msgstr "Sænk" msgid "La_yer" msgstr "Lag" msgid "Move _To" msgstr "Flyt _Til" msgid "Occupy _All" msgstr "Optag _Alle" msgid "Limit _Workarea" msgstr "Afgræns arbejdsomrÃ¥de" msgid "Tray _icon" msgstr "_Ikonbakke" msgid "_Close" msgstr "Lukke" msgid "_Kill Client" msgstr "Afslutte _Klient" msgid "_Window list" msgstr "Vindue liste" msgid "Another window manager already running, exiting..." msgstr "En anden vindue manager kører allerede, afslutter..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Kunne ikke genstarte: %s\n" "Leder $PATH til %s?" #, fuzzy, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "Brug: %s [TILVALG]\n" "Starter IceWM vindue manager.\n" "\n" "Tilvalg:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Besøg http://www.icewm.org/ for at rapportere fejl, support " "forespørgsel, kommentar...\n" msgid "Confirm Logout" msgstr "Bekræfte Logud" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Logud vil lukke alle aktive programmer.\n" "Fortsætte?" msgid "Bad Look name" msgstr "Ugyldig Look navn" #, fuzzy msgid "Loc_k Workstation" msgstr "LÃ¥s Arbejdsstation" msgid "_Logout..." msgstr "Logud..." msgid "_Cancel" msgstr "Annullere" msgid "_Restart icewm" msgstr "Gensta_rt icewm" msgid "_About" msgstr "Om" msgid "Maximize" msgstr "Maksimere" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Minimere" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Skjule" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Rul op" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Hæve/Sænke" msgid "Kill Client: " msgstr "Afslutte Klient:" msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "ADVARSEL! Alle ikke gemte ændringer vil være tabte nÃ¥r\n" "denne klient bliver afsluttet. Ønsker du at fortsætte?" msgid "Restore" msgstr "Gendanne" msgid "Rolldown" msgstr "Rul ned" #, c-format msgid "Error in window option: %s" msgstr "Fejl i vindue indstilling: %s" #, c-format msgid "Unknown window option: %s" msgstr "Ukendt vindue indstilling: %s" msgid "Syntax error in window options" msgstr "Syntaks fejl i vindue indstillinger" msgid "Out of memory for window options" msgstr "Ingen hukommelse for vindue indstillinger" msgid "Missing command argument" msgstr "Mangler kommando argument" #, c-format msgid "Bad argument %d" msgstr "Ugyldigt argument %d" #, c-format msgid "Error at prog %s" msgstr "Fejl i program %s" #, c-format msgid "Unexepected keyword: %s" msgstr "Ikke forventet nøgleord: %s" #, c-format msgid "Error at key %s" msgstr "Fejl i nøgle %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programmer" msgid "_Run..." msgstr "Køre..." msgid "_Windows" msgstr "Vinduer" msgid "_Help" msgstr "Hjælp" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "Temaer" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "SessionshÃ¥ndtering: Ukendt linje %s" msgid "Task Bar" msgstr "Værktøjslinje" msgid "Tile _Vertically" msgstr "Fliselag lodret" msgid "T_ile Horizontally" msgstr "Fliselag vandret" msgid "Ca_scade" msgstr "Kaskade" msgid "_Arrange" msgstr "Ordne" msgid "_Minimize All" msgstr "Minimere Alle" msgid "_Hide All" msgstr "Skjule Alle" msgid "_Undo" msgstr "Genskabe" msgid "Arrange _Icons" msgstr "Ordne _Ikoner" msgid "_Refresh" msgstr "Opdatere" msgid "_License" msgstr "Licens" msgid "Favorite applications" msgstr "Favorit programmer" msgid "Window list menu" msgstr "Vindue menu liste" msgid "Show Desktop" msgstr "Vis Skrivebord" msgid "All Workspaces" msgstr "Alle ArbejdsomrÃ¥der" msgid "Del" msgstr "Slette" msgid "_Terminate Process" msgstr "Afslutte Proces" msgid "Kill _Process" msgstr "Afslutte _Proces" msgid "_Show" msgstr "Vis" msgid "_Minimize" msgstr "Minimere" msgid "Window list" msgstr "Vindue liste" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. ArbejdsomrÃ¥de %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Besked løkke: valg mislykkedes (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Ukendt indstilling: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "ukendt argument: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Argument krævet for %s flag" #, c-format msgid "Unknown key name %s in %s" msgstr "ukendt nøgle navn %s i %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Ugyldigt argument: %s for %s" #, c-format msgid "Bad option: %s" msgstr "Ugyldig indstilling: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Indlæsning af billedpunkt kort \"%s\" mislykkedes" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Ukendt markør billedpunkt kort: \"%s\" indholder for mange unikke " "farver" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "BUG? Imlib kunne læse \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "BUG? Fejl formatteret XPM hoved men Imlib kunne fortolke \"%s\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "BUG? Uventet afslutning pÃ¥ XPM fil men Imlib kunne fortolke \"%s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "BUG? Uventet karakter men Imlib kunne fortolke \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "Kunne ikke indlæse skrifttype \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Indlæsning af standard skrifttype \"%s\" mislykkedes." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Kunne ikke indlæse skrifttype \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "Mangler tegnkoder for skrifttype \"%s\":" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Ingen hukommelse for billedpunkt kort \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Mislykket indlæsning af billede \"%s\"" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: Erhvervelse af X billedpunkt kort mislykkedes" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Imlib billede til X billedpunkt kort afbildning mislykkedes" msgid "Cu_t" msgstr "Klippe" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "Kopiere" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "Sæt ind" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Ind_sæt markering" msgid "Select _All" msgstr "Markere Alt" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Sprog ikke understøttet af C bibliotek. Indlæser standard 'C " "lokalitet'." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "Fastsættelse af nuværende lokalitetsskrifttype mislykkedes. Antager " "ISO-8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv levere ikke (tilstrækkelig) %s til %s konverter." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Ugyldig multibyte streng \"%s\": %s" msgid "OK" msgstr "O.k." msgid "Cancel" msgstr "Annullere" #, c-format msgid "Out of memory for pixel map %s" msgstr "Ikke mere hukommelse for billedepunkt kort %s" #, c-format msgid "Could not find pixel map %s" msgstr "Kunne ikke finde billedpunkt kort %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Ikke mere hukommelse for RGB billedpunkt buffer %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Kunne ikke finde RGB billedpunkt buffer %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Bruger standard mekanisme for at omdanne billedpunkt (dybde: %d; " "maske (rød/grøn/blÃ¥): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d synlige bit er ikke understøttet (endnu)" msgid "$USER or $LOGNAME not set?" msgstr "$USER eller $LOGNAME ikke angivet?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" beskriver ikke et fælles internet skema" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" indholder ingen skema beskrivelse" #~ msgid " processes." #~ msgstr " processer." #~ msgid "program label expected" #~ msgstr "program etikette forventet" #~ msgid "icon name expected" #~ msgstr "ikon navn forventet" #~ msgid "window management class expected" #~ msgstr "vindue hÃ¥ndteringsklasse forventet" #~ msgid "menu caption expected" #~ msgstr "menu billedtekst forventet" #~ msgid "opening curly expected" #~ msgstr "Ã¥bning af krøllede parenteser forventet" #~ msgid "action name expected" #~ msgstr "kaldenavn forventet" #~ msgid "unknown action" #~ msgstr "ukendt handling" #~ msgid "Failed to open %s: %s" #~ msgstr "Kunne ikke Ã¥bne %s: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Kørsel af %s: %s mislykkedes" #~ msgid "Failed to create child process: %s" #~ msgstr "Oprette underproces mislykkedes: %s" #~ msgid "Not a regular file: %s" #~ msgstr "ikke en almindelig fil: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Hexadecimal ciffer par forventet" #~ msgid "Unexpected identifier" #~ msgstr "Ukendt identificering" #~ msgid "Identifier expected" #~ msgstr "Identificering forventet" #~ msgid "Separator expected" #~ msgstr "Adskiller forventet" #~ msgid "Invalid token" #~ msgstr "Ugyldigt symbol" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Ikke et hexadecimal tal: %c%c (in \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - ukendt format (%d)" #~ msgid "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgstr "staus:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgid "bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgstr "bjælker:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "Processor: %d %d %d %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat finder for mange CPUer: bør være %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree for vindue 0x%x mislykkedes" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Oversat med fejlsøg flag. Fejlsøg beskeder vil blive " #~ "udskrevet." #~ msgid "_No icon" #~ msgstr "I_ngen ikon" #~ msgid "_Minimized" #~ msgstr "Minimeret" #~ msgid "_Exclusive" #~ msgstr "_Eksklusiv" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X fejl %s(0x%lX): %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "Forgrening mislykkedes (errno=%d)" #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "Oprettelse af anonym kanal mislykkedes (errno=%d)" #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Ukendt markør billedpunkt kort: \"%s\" indholder for mange " #~ "unikke farver" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Oprettelse af anonym kanal mislykkedes: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Duplikering af fildeskriptor mislykket: %s" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Kopiering af tegnelig 0x%x til billedpunkt buffer " #~ "mislykkedes" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: Kopiering af tegnelig 0x%x til billedpunkt buffer (%d:" #~ "%d-%dx%d mislykkedes" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "FOR MANGE ICE FORBINDELSER -- ikke understøttet" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "SessionshÃ¥ndtering: IceAddConnectionWatch mislykkedes." #~ msgid "Session Manager: Init error: %s" #~ msgstr "SessionshÃ¥ndtering: Initialiseringsfejl: %s" icewm-1.3.7/po/el.po0000664000076600007660000006555711463274241013230 0ustar develdevel# translation of el.po to hellenic # This file is distributed under the same license as the PACKAGE package. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # Nick Apostolakis , 2003 # msgid "" msgstr "Project-Id-Version: el\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2003-10-14 09:41+0300\n" "Last-Translator: Nick Apostolakis \n" "Language-Team: hellenic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.0\n" msgid " - Power" msgstr " - ΤÏοφοδοσία" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "" #, c-format msgid " - Charging" msgstr " - ΦόÏτιση" msgid "C" msgstr "" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "ΦόÏτος ΕπεξεÏγαστή: %3.2f %3.2f %3.2f, %d διεÏγασίες." #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Μη έγκυÏο Ï€Ïοτόκολο γÏαμματοκιβωτίου: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Μη έγκυÏο κατάλογος γÏαμματοκιβωτίου: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "ΧÏησιμοποιοÏμενο γÏαμματοκιβώτιο \"%s\"\n" msgid "Error checking mailbox." msgstr "Σφάλμα κατά τον έλεγχο του γÏαμματοκιβωτίου." #, c-format msgid "%ld mail message." msgstr "%ld μÏνημα αλληλογÏαφίας." #, c-format msgid "%ld mail messages." msgstr "%ld μυνήματα αλληλογÏαφίας." #, fuzzy, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Interface %s:\n" " ΤÏέχων Ïυθμός (μέσα/έξω):\t%lli %s/%lli %s\n" " ΤÏέχων μέσος ÏŒÏος (μέσα/έξω):\t%lli %s/%lli %s\n" " Ολικός μέσος ÏŒÏος (μέσα/έξω):\t%lli %s/%lli %s\n" " ΜεταφέÏθηκαν (μέσα/έξω):\t%lli %s/%lli %s\n" " ΧÏόνος σÏνδεσης:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " ΑÏιθμός τηλεφώνου καλοÏντος:\t" msgid "Workspace: " msgstr "Επιφάνεια εÏγασίας: " msgid "Back" msgstr "Πίσω" msgid "Alt+Left" msgstr "Alt+Left" msgid "Forward" msgstr "ΠÏοχώÏησε" msgid "Alt+Right" msgstr "Alt+Right" msgid "Previous" msgstr "ΠÏοηγοÏμενο" msgid "Next" msgstr "Επόμενο" msgid "Contents" msgstr "ΠεÏιεχόμενα" msgid "Index" msgstr "ΕυÏετήÏιο" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Κλείσε" msgid "Ctrl+Q" msgstr "" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "ΤÏόπος χÏήσης: %s Όνομα αÏχείου\n" "\n" "Ένας Ï€Î¿Î»Ï Î±Ï€Î»ÏŒÏ‚ HTML browser ο οποίος δείχνει το αÏχείο που έχει " "Ï€ÏοσδιοÏιστεί απο το Όνομα αÏχείου.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Εσφαλμένη τοποθεσία: %s\n" msgid "Invalid path: " msgstr "Εσφαλμένη τοποθεσία: " msgid "List View" msgstr "Εμφάνιση ως λίστα" msgid "Icon View" msgstr "Εμφάνιση ως εικονίδια" msgid "Open" msgstr "Άνοιξε" msgid "Undo" msgstr "ΑναίÏεση" msgid "Ctrl+Z" msgstr "" msgid "New" msgstr "Îέο" msgid "Ctrl+N" msgstr "" msgid "Restart" msgstr "Επανεκκίνηση" msgid "Ctrl+R" msgstr "" #. !!! fix msgid "Same Game" msgstr "Ίδιο παιχνίδι" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "Η Ï€Ïάξη `%s' απαιτεί τουλάχιστον %d οÏίσματα." #, c-format msgid "Invalid expression: `%s'" msgstr "Μη έγκυÏη έκφÏαση: `%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Μη έγκυÏο όνομα επιφάνειας εÏγασίας: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "Επιφάνεια εÏγασίας εκτός πεÏιοχής: %d" #, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "" msgid "GNOME window state" msgstr "GNOME κατάσταση παÏάθυÏου" msgid "GNOME window hint" msgstr "" msgid "GNOME window layer" msgstr "" msgid "IceWM tray option" msgstr "" msgid "Usage error: " msgstr "Σφάλμα χÏήσης:" #, c-format msgid "Invalid argument: `%s'." msgstr "Μη έγκυÏο ÏŒÏισμα: `%s'." msgid "No actions specified." msgstr "Δεν υπάÏχουν καθοÏισμένες ενέÏγειες" #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Δεν μποÏÏŽ να ανοίξω το display: %s. τα X θα Ï€Ïέπει να Ï„Ïέχουν και η " "μεταβλητή $DISPLAY να έχει οÏιστεί." #, c-format msgid "Invalid window identifier: `%s'" msgstr "" #, c-format msgid "workspace #%d: `%s'\n" msgstr "επιφάνεια εÏγασίας #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "Άγνωστη ενέÏγεια: `%s'" #, c-format msgid "Socket error: %d" msgstr "" #, c-format msgid "Playing sample #%d (%s)" msgstr "Παίζεται το δείγμα #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Δεν υπάÏχει η συσκευή %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Δεν μποÏÏŽ να συνδεθώ στον ESound daemon: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Σφάλμα <%d> κατά το ανέβασμα `%s:%s'" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Το δείγμα <%d> ανέβηκε ως `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "Παίζοντας το δείγμα #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Δεν μποÏÏŽ να συνδεθώ στον YIFF server: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Δεν μποÏÏŽ να αλλάξω σε audio mode `%s'." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "" msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "" #, c-format msgid "Overriding previous audio mode `%s'." msgstr "" #, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "" msgid "Multiple sound interfaces given." msgstr "Έχουν δωθεί πολλαπλές διεπαφές ήχου." #, c-format msgid "Support for the %s interface not compiled." msgstr "Η υποστήÏιξη για την διεπαφή %s δεν έχει γίνει compile." #, c-format msgid "Unsupported interface: %s." msgstr "Μη υποστηÏιζόμενη διεπαφή" #, c-format msgid "Received signal %d: Terminating..." msgstr "" #, c-format msgid "Received signal %d: Reloading samples..." msgstr "" msgid "Hex View" msgstr "Δεκαεξαδική εμφάνιση" msgid "Ctrl+H" msgstr "" msgid "Expand Tabs" msgstr "Επέκτεινε τους Στηλοθέτες" msgid "Ctrl+T" msgstr "" msgid "Wrap Lines" msgstr "" msgid "Ctrl+W" msgstr "" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: μη αναγνωÏισμένη επιλογή `%s'\n" "Δοκιμάστε `%s --help' για πεÏισσότεÏες πληÏοφοÏίες.\n" #, c-format msgid "Loading image %s failed" msgstr "Η φόÏτωση της φωτογÏαφίας %s απέτυχε" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Η φόÏτωση του pixmap \"%s\" απέτυχε: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "" #, c-format msgid "Out of memory (len=%d)." msgstr "Εκτός μνήμης (μέγεθος=%d)." msgid "Warning: " msgstr "ΠÏοειδοποίηση: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Άγνωστη κατεÏθυνση σε αίτηση μετακίνησης/αλλαγής σχήματος: %d" msgid "Default" msgstr "Εξ οÏισμοÏ" msgid "(C)" msgstr "" msgid "Theme:" msgstr "Θέμα: " msgid "Theme Description:" msgstr "ΠεÏιγÏαφή θέματος:" msgid "Theme Author:" msgstr "ΣυγγÏαφέας θέματος:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "" msgid "Unable to get current font path." msgstr "Δεν βÏέθηκε η Ï„Ïέχουσα τοποθεσία των font." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "" #, c-format msgid "Unknown gradient name: %s" msgstr "" msgid "_Logout" msgstr "_Έξοδος" msgid "_Cancel logout" msgstr "_ΑκÏÏωση εξόδου" msgid "Lock _Workstation" msgstr "Κλείδωμα _Î£Ï„Î±Î¸Î¼Î¿Ï ÎµÏγασίας" msgid "Re_boot" msgstr "Επαν_εκκίνηση" msgid "Shut_down" msgstr "" msgid "Restart _Icewm" msgstr "Επανεκκίνηση _Icewm" msgid "Restart _Xterm" msgstr "Επανεκκίνηση _Xterm" msgid "_Menu" msgstr "_Κατάλογος" msgid "_Above Dock" msgstr "" msgid "_Dock" msgstr "" msgid "_OnTop" msgstr "_Στην κοÏυφή" msgid "_Normal" msgstr "_Κανονικό" msgid "_Below" msgstr "_Απο κάτω" msgid "D_esktop" msgstr "Ε_πιφάνεια εÏγασίας" msgid "_Restore" msgstr "_ΕπαναφοÏά" msgid "_Move" msgstr "_Μετακκίνηση" msgid "_Size" msgstr "_Μέγεθος" msgid "Mi_nimize" msgstr "Ελ_αχιστοποίηση" msgid "Ma_ximize" msgstr "Με_γιστοποίηση" msgid "_Fullscreen" msgstr "_ΠλήÏης οθόνη" msgid "_Hide" msgstr "_ΑπόκÏυψη" msgid "Roll_up" msgstr "" msgid "R_aise" msgstr "" msgid "_Lower" msgstr "" msgid "La_yer" msgstr "Στ_Ïώμα" msgid "Move _To" msgstr "Μετακκίνηση _Σε" msgid "Occupy _All" msgstr "Κατάληψη _Όλων" msgid "Limit _Workarea" msgstr "ÎŒÏιο _ΠεÏιοχής εÏγασίας" msgid "Tray _icon" msgstr "" msgid "_Close" msgstr "_Κλείσε" msgid "_Kill Client" msgstr "" msgid "_Window list" msgstr "_Λίστα παÏαθÏÏων" msgid "Another window manager already running, exiting..." msgstr "Ένας άλλος διαχειÏιστής παÏαθÏÏων ήδη Ï„Ïέχει, έξοδος..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "" msgid "Confirm Logout" msgstr "Επιβεβαίωση Εξόδου" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Η έξοδος θα κλείσει όλες τις ενεÏγές εφαÏμογές.\n" "Îα Ï€ÏοχωÏήσω?" msgid "Bad Look name" msgstr "" #, fuzzy msgid "Loc_k Workstation" msgstr "Κλείδωμα _Î£Ï„Î±Î¸Î¼Î¿Ï ÎµÏγασίας" msgid "_Logout..." msgstr "_ΑποσÏνδεση..." msgid "_Cancel" msgstr "_ΑκÏÏωση" msgid "_Restart icewm" msgstr "_Επανεκκίνηση icewm" msgid "_About" msgstr "_ΠεÏί" msgid "Maximize" msgstr "Μεγιστοποίηση" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Ελαχιστοποίηση" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "ΑπόκÏυψη" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "" msgid "Kill Client: " msgstr "" msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "" msgid "Restore" msgstr "ΕπαναφοÏά" msgid "Rolldown" msgstr "" #, c-format msgid "Error in window option: %s" msgstr "Σφάλμα στην παÏάμετÏο παÏαθÏÏου: %s" #, c-format msgid "Unknown window option: %s" msgstr "Άγνωστη παÏάμετÏος παÏαθÏÏου: %s" msgid "Syntax error in window options" msgstr "Σφάλμα σÏνταξης στις παÏαμέτÏους των παÏαθÏÏων" msgid "Out of memory for window options" msgstr "Εκτός μνήμης για τις παÏαμέτÏους παÏαθÏÏου" msgid "Missing command argument" msgstr "Λείπει ÏŒÏισμα εντολής" #, c-format msgid "Bad argument %d" msgstr "Λάθος ÏŒÏισμα %d" #, c-format msgid "Error at prog %s" msgstr "Σφάλμα στο Ï€ÏόγÏαμμα %s" #, c-format msgid "Unexepected keyword: %s" msgstr "Μη αναμενόμενη λέξη κλειδί %s" #, c-format msgid "Error at key %s" msgstr "" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "ΠÏογÏάμματα" msgid "_Run..." msgstr "_Εκτέλεση..." msgid "_Windows" msgstr "_ΠαÏάθυÏα" msgid "_Help" msgstr "_Βοήθεια" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Θέματα" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "" msgid "Task Bar" msgstr "" msgid "Tile _Vertically" msgstr "" msgid "T_ile Horizontally" msgstr "" msgid "Ca_scade" msgstr "" msgid "_Arrange" msgstr "_Διευθέτηση" msgid "_Minimize All" msgstr "_Ελαχιστοποίηση όλων" msgid "_Hide All" msgstr "_ΑπόκÏυψη όλων" msgid "_Undo" msgstr "_ΑναίÏεση" msgid "Arrange _Icons" msgstr "Διευθέτηση _Εικονιδίων" msgid "_Refresh" msgstr "_Ανανέωση" msgid "_License" msgstr "_Άδεια χÏήσης" msgid "Favorite applications" msgstr "Αγαπημένες εφαÏμογές" msgid "Window list menu" msgstr "Λίστα παÏαθÏÏων" #, fuzzy msgid "Show Desktop" msgstr "Ε_πιφάνεια εÏγασίας" msgid "All Workspaces" msgstr "Όλες οι επιφάνειες εÏγασίας" msgid "Del" msgstr "" msgid "_Terminate Process" msgstr "_ΤεÏματισμός διεÏγασίας" msgid "Kill _Process" msgstr "" msgid "_Show" msgstr "_Εμφάνιση" msgid "_Minimize" msgstr "_Ελαχιστοποίηση" msgid "Window list" msgstr "Λίστα παÏαθÏÏων" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Επιφάνεια εÏγασίας %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "" #, c-format msgid "Unrecognized option: %s\n" msgstr "" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Μη αναγνωÏισμένο ÏŒÏισμα: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "" #, c-format msgid "Unknown key name %s in %s" msgstr "" #, c-format msgid "Bad argument: %s for %s" msgstr "Λάθος ÏŒÏισμα: %s για %s" #, c-format msgid "Bad option: %s" msgstr "Λάθος επιλογή: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "" #, c-format msgid "Could not load font \"%s\"." msgstr "Δεν μπόÏεσα να φοÏτώσω το font \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Το φόÏτωμα του font ασφαλείας \"%s\" απέτυχε." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Δεν μπόÏεσα να φοÏτώσω την οικογένεια font \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Εκτός μνήμης για το pixmap \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Η φόÏτωση της φωτογÏαφίας \"%s\" απέτυχε" msgid "Imlib: Acquisition of X pixmap failed" msgstr "" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "" msgid "Cu_t" msgstr "Αποκοπ_ή" msgid "Ctrl+X" msgstr "" msgid "_Copy" msgstr "_ΑντιγÏαφή" msgid "Ctrl+C" msgstr "" msgid "_Paste" msgstr "_Επικόλληση" msgid "Ctrl+V" msgstr "" msgid "Paste _Selection" msgstr "Επικόλληση _Επιλογής" msgid "Select _All" msgstr "Επιλογή _Όλων" msgid "Ctrl+A" msgstr "" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "" msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "" #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "" msgid "OK" msgstr "" msgid "Cancel" msgstr "ΑκÏÏωση" #, c-format msgid "Out of memory for pixel map %s" msgstr "Εκτός μνήμης για το pixel map %s" #, c-format msgid "Could not find pixel map %s" msgstr "Δεν μπόÏεσα να βÏÏŽ το pixel map %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Εκτός μνήμης για το RGB pixel buffer %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "" msgid "$USER or $LOGNAME not set?" msgstr "" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "" #, c-format msgid "\"%s\" contains no scheme description" msgstr "" #~ msgid "unknown action" #~ msgstr "άγνωστη Ï€Ïάξη" #~ msgid "Failed to open %s: %s" #~ msgstr "Αποτυχία ανοίγματος %s: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Αποτυχία εκτέλεσης %s: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Όχι ένα κανονικό αÏχείο: %s" #~ msgid "cpu: %d %d %d %d" #~ msgstr "ΚεντÏικός επεξεÏγαστής: %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "Το kstat βÏήκε πάÏα πολλοÏÏ‚ επεξεÏγαστές: θα έπÏεπε να είναι " #~ "%d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "_Minimized" #~ msgstr "_Ελαχιστοποιημένο" #~ msgid "_Exclusive" #~ msgstr "_Αποκλειστικά" #~ msgid "Obsolete option: %s" #~ msgstr "ΠαÏωχημένη επιλογή %s" icewm-1.3.7/po/ca.po0000664000076600007660000010247311463274241013200 0ustar develdevel# Missatges en català per al gestor de finestres Ice. # Copyright (C) 2001, 2002 Free Software Foundation, Inc. # Toni Cuñat i Alario , 2001, 2002. # msgid "" msgstr "Project-Id-Version: icewm 1.0.9\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2002-02-10 23:33+01:00\n" "Last-Translator: Toni Cunyat i Alario \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8 bit\n" msgid " - Power" msgstr "- Energia" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "P" #, c-format msgid " - Charging" msgstr " - Carregant" msgid "C" msgstr "" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "Càrrega de la CPU: %3.2f %3.2f %3.2f, %d procesos." #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Bústia invàlida: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Camí de la bústia no vàlid: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Emprant la Bústia: '%s'\n" msgid "Error checking mailbox." msgstr "Error comprovant la bústia" #, c-format msgid "%ld mail message." msgstr "missatge de correu %ld." #, c-format msgid "%ld mail messages." msgstr "missatges de correu %ld." #, fuzzy, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Interficie %s\n" " Ratio actual (entrada/eixida): %d %s/%d %s\n" " Ratio mitjà (entrada/eixida): %d %s/%d %s\n" " Transferit (entrada/eixida): %d %s/%d %s\n" " Temps En línea: %d:%02d:%02d%s%s" msgid "\n" " Caller id:\t" msgstr "\n" "Identificador de trucada\t" msgid "Workspace: " msgstr "Espai de treball:" msgid "Back" msgstr "Endarrere" msgid "Alt+Left" msgstr "Alt+Left" msgid "Forward" msgstr "Endavant" msgid "Alt+Right" msgstr "Alt+Right" msgid "Previous" msgstr "Anterior" msgid "Next" msgstr "Pròxim" msgid "Contents" msgstr "Continguts" msgid "Index" msgstr "Ãndex" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Tancar" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Us: %s NOM FITXER\n" "\n" "Un senzill fullejador HTML que mostra el document especificat per " "NOM FITXER\n" #, c-format msgid "Invalid path: %s\n" msgstr "Camí no vàlid: %s\n" msgid "Invalid path: " msgstr "Camí no vàlid: " msgid "List View" msgstr "Vista amb Llista" msgid "Icon View" msgstr "Vista amb Icones" msgid "Open" msgstr "Obrir" msgid "Undo" msgstr "Desfer" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Nou" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Reinicialitzar" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "El mateix Joc" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "" #, fuzzy, c-format msgid "Invalid expression: `%s'" msgstr "Argument no vàlid: %s" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Símbols enumerats del domini `%s' (rang numèric: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Nom de escritori no válid: %s" #, c-format msgid "Workspace out of range: %d" msgstr "Escritori fóra de rang: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Ús: %s [OPCIONS] ACCIONS\n" "\n" "Opcions:\n" " -display DISPLAY Conecta al servidor X especificat per " "DISPLAY.\n" " Per defecte: $DISPLAY o :0.0.\n" " -window WINDOW_ID Especifica la finestra a manipular. " "Identificador especial són root per al " "fons de la pantalla \n" " `focus'per a la finestra amb el focus " "actual.\n" "\n" "Accions:\n" " setIconTitle TÃTOL Posa títol a una icona.\n" " setWindowTitle TÃTOL Posa el Títol a una finestra.\n" " setState MASK STATE Posa la finestra d'estat GNOME en mode " "STATE.\n" " \t\t\t Sols els bits seleccionats per MASK són afectats.\n" " STATE i MASK són expressions del " "domini\n" " `GNOME window state'.\n" " toggleState STATE Canvia els bits de l'estat de la " "finestra GNOME\n" " especificats per l'expressió STATE.\n" " setHints HINTS Posa GNOME window hints a HINTS.\n" " setLayer LAYER Mou la finestra a altra capa de " "finestra GNOME.\n" " setWorkspace WORKSPACE Mou la finestra a altre escriptori " "virtual. Selecciona\n" " \t\t\t el fons de la finestra per a canviar al escriptori " "actual.\n" " listWorkspaces \t Mostra els noms de tots els escriptoris.\n" " setTrayOption TRAYOPTION Posa la safata de IceWM tray option " "hint.\n" "\n" "Expressions:\n" " Expressions són llistes de símbols d'un domini concatenats per `+' " "o `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgid "GNOME window state" msgstr "Finestra d'estat de GNOME" msgid "GNOME window hint" msgstr "Finestra de pista GNOME" msgid "GNOME window layer" msgstr "Capa de finestra GNOME" msgid "IceWM tray option" msgstr "Opció de la safata de IceWM" msgid "Usage error: " msgstr "Error d'us:" #, c-format msgid "Invalid argument: `%s'." msgstr "Argument no vàlid: %s" msgid "No actions specified." msgstr "Ninguna acció especificada." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "No es pot obrir la pantalla: %s. Les X han d'estar funcionant i " "$DISPLAY configurat." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Identificador de finestra no vàlid: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "Escritori #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "Acció desconeguda: %s" #, c-format msgid "Socket error: %d" msgstr "Error de Socket: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Tocant mostra #%d (%s)" #, c-format msgid "No such device: %s" msgstr "No hi ha tal dispositiu: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "No es pot conectar al \"dimoni\" Esound: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Error <%d> mentre s'està actualizant `%s:%s'" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Mostra <%d> carregada com a `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "Tocant mostra #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "No es pot conectar al servidos YIFF: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "No es pot canviar al mode audio `%s'." #, fuzzy, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Canvi de mode audio detectat, mode audio inicial `%s'sense efecte " "posteriorment." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Canvi de mode audio detectat, canvi de mode audio automàtic " "deshabilitat." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Sobrescriure el mode audio anterior `%s'." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Us: %s [OPTION]...\n" "\n" "Toca arxius de audio en events GUI gestionats per IceWM.\n" "\n" "Opcions:\n" "\n" " -d, --display=DISPLAY Pantalla emprada per IceWM (per " "defecte: $DISPLAY).\n" " -s, --sample-dir=DIR Especifica el directori que conte\n" " els arxius de so (ie ~/.icewm/" "sounds).\n" " -i, --interface=TARGET Especifica l'interficie de so \n" " , a escollir: OSS, YIFF, ESD\n" " -D, --device=DEVICE (sols OSS) especifica el processador " "de senyal (per defecte /dev/dsp).\n" " -S, --server=ADDR:PORT\t(ESD i YIFF) especifica la adreça i port " "del servidor\n" " (per defecte localhost:16001 per a " "ESD i\n" " localhost:9433 per a YIFF).\n" " -m, --audio-mode[=MODE] (sols YIFF) especica el mode de " "Audio (deixau en\n" " blanc per a obtindre un llistat).\n" " --audio-mode-auto \t(sols YIFF) canvia el mode de Audio al " "vol la millor\n" " mostra de Audio corresponent (pot " "provocar problemes\n" " amb altres clients Y, sobreescriu --" "audio-mode).\n" " -v, --verbose Be verbose (mostra cada event de so " "per la eixida \n" " estandard \"stdout\").\n" " -V, --version Mostra la informació sobre la " "versió i acaba.\n" " -h, --help Mostra (aquesta) pantalla d'ajuda i " "acaba.\n" "\n" "Valors de retorn:\n" "\n" " 0 Èxit.\n" " 1 Errada General.\n" " 2 Errada a la linea de comandes.\n" " 3 Error de subsistema(ie: no pot conectar al servidor).\n" msgid "Multiple sound interfaces given." msgstr "Multiples interfícies de so donades." #, c-format msgid "Support for the %s interface not compiled." msgstr "El suport per aquesta interfície %s no s'ha compilat." #, c-format msgid "Unsupported interface: %s." msgstr "Interfície no suportada: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Senyal %d rebuda: Acabant..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Senyal %d rebuda: Tornant a carregar mostres..." msgid "Hex View" msgstr "Vista Hex" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Expandir Pestanyes" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Ajustar Línies" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: opció no reconeguda '%s'\n" "prova '%s --help' per a més informació.\n" #, c-format msgid "Loading image %s failed" msgstr "Error en la càrrega de la imatge %s" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Càrrega de la imatge %s fallada: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Sintaxi: icewmhint [class.instance] opció arg\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Sense memòria (len=%d)." msgid "Warning: " msgstr "Atenció: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "" #, fuzzy msgid "Default" msgstr "Borrar" msgid "(C)" msgstr "" msgid "Theme:" msgstr "Tema:" msgid "Theme Description:" msgstr "Descripció del Tema:" msgid "Theme Author:" msgstr "Autor del Tema:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm - A propòsit de" msgid "Unable to get current font path." msgstr "No s'ha pogut accedir al camí de les fonts" msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Format no esperat en les propietats de ICEWM_FONT_PATH " #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Referencies multiples per al gradient \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "Nom del gradient %s desconegut " msgid "_Logout" msgstr "_Eixir" msgid "_Cancel logout" msgstr "_Cancel·lar la eixida" msgid "Lock _Workstation" msgstr "Protegir l'_Estació de Treball" msgid "Re_boot" msgstr "Re_inicialitzament" msgid "Shut_down" msgstr "_Tancament" msgid "Restart _Icewm" msgstr "Reinicialitzar _Icewm" msgid "Restart _Xterm" msgstr "Reinicialitzar _Xterm" msgid "_Menu" msgstr "_Menú" msgid "_Above Dock" msgstr "Sobre fixe" msgid "_Dock" msgstr "_Fixe" msgid "_OnTop" msgstr "_Al davant" msgid "_Normal" msgstr "_Normal" msgid "_Below" msgstr "_Baix" msgid "D_esktop" msgstr "_Escriptori" msgid "_Restore" msgstr "_Restaurar" msgid "_Move" msgstr "_Moure" msgid "_Size" msgstr "_Tamany" msgid "Mi_nimize" msgstr "Mi_nimitzar" msgid "Ma_ximize" msgstr "Ma_ximitzar" msgid "_Fullscreen" msgstr "" msgid "_Hide" msgstr "_Amagar" msgid "Roll_up" msgstr "Enrotll_ar" msgid "R_aise" msgstr "_Elevar" msgid "_Lower" msgstr "_Baixar" msgid "La_yer" msgstr "_Capa" msgid "Move _To" msgstr "Mo_ure a" msgid "Occupy _All" msgstr "Ocupar _Tot" msgid "Limit _Workarea" msgstr "Límit de l'_Escriptori" msgid "Tray _icon" msgstr "" msgid "_Close" msgstr "_Tancar" msgid "_Kill Client" msgstr "_Eliminar Client" msgid "_Window list" msgstr "Llista de _Finestres" msgid "Another window manager already running, exiting..." msgstr "Altre gestor de finestres està en ús, sortint..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "No s'a pogut reiniciar: %s\n" "Apunta $PATH a %s?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "" msgid "Confirm Logout" msgstr "Confirmar Sortir" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Sortir tancarà totes les aplicacions actives." msgid "Bad Look name" msgstr "Nom Look erròni" #, fuzzy msgid "Loc_k Workstation" msgstr "Protegir l'_Estació de Treball" msgid "_Logout..." msgstr "_Sortir..." msgid "_Cancel" msgstr "_Cancel·lar" msgid "_Restart icewm" msgstr "_Reinicialitzar icewm" msgid "_About" msgstr "_A propòsit de" msgid "Maximize" msgstr "Maximitzar" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Minimitzar" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Amagar" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Enrrotllar" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Elevar/Baixar" msgid "Kill Client: " msgstr "Matar Client:" msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "ATENCIÓ! Tots els canvis no desats es perdran en\n" "matar el client. Encara vols continuar?" msgid "Restore" msgstr "Restaurar" msgid "Rolldown" msgstr "Desenrrotllar" #, c-format msgid "Error in window option: %s" msgstr "Error en l'opció de finestra: %s" #, c-format msgid "Unknown window option: %s" msgstr "Opció de finestra desconocida: %s" msgid "Syntax error in window options" msgstr "Error de sintaxis en l'opció de finestra" msgid "Out of memory for window options" msgstr "Sense memòria per a l'opció de finestra" msgid "Missing command argument" msgstr "Argument de comanda no trobat" #, c-format msgid "Bad argument %d" msgstr "Argument %d erròni" #, c-format msgid "Error at prog %s" msgstr "Error en prog %s" #, c-format msgid "Unexepected keyword: %s" msgstr "" #, c-format msgid "Error at key %s" msgstr "Error en clau %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programes" msgid "_Run..." msgstr "_Executar..." msgid "_Windows" msgstr "_Finestres" msgid "_Help" msgstr "_Ajuda" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Temes" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Gestor de Sessions: Línia %s desconeguda" msgid "Task Bar" msgstr "Barra de Tasques" msgid "Tile _Vertically" msgstr "Mosaic _Vertical" msgid "T_ile Horizontally" msgstr "Mosaic _Horitzontal" msgid "Ca_scade" msgstr "Ca_scada" msgid "_Arrange" msgstr "_Organitzar" msgid "_Minimize All" msgstr "_Minimitzar Tot" msgid "_Hide All" msgstr "_Amagar tot" msgid "_Undo" msgstr "_Desfer" msgid "Arrange _Icons" msgstr "Organitzar _Icones" msgid "_Refresh" msgstr "_Refrescar" msgid "_License" msgstr "_Llicència" msgid "Favorite applications" msgstr "Aplicacions preferides" msgid "Window list menu" msgstr "Llista de finestres" #, fuzzy msgid "Show Desktop" msgstr "_Escriptori" #, fuzzy msgid "All Workspaces" msgstr "Espai de treball:" #, fuzzy msgid "Del" msgstr "Borrar" msgid "_Terminate Process" msgstr "Term_inar Procesos" msgid "Kill _Process" msgstr "Eliminar _Procesos" msgid "_Show" msgstr "_Mostrar" msgid "_Minimize" msgstr "_Minimitzar" msgid "Window list" msgstr "Llista de finestres" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Espai de treball %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Bucle de Mensaje: select fallido (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Opció desconeguda: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Argument no reconegut: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Argument requerit per al paràmetre %s" #, c-format msgid "Unknown key name %s in %s" msgstr "Nom clau %s desconegut en %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Argument erròni: %s per a %s" #, c-format msgid "Bad option: %s" msgstr "Opció errònia: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Error en la càrrega de la imatge \"%s\"" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "No hi ha cap cursor de pixmap: \"%s\" té massa colors únics" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "ERRADA? Imlib ha segut capaç de llegir \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "ERRADA? Capçalera XPM malformada, però Imlib ha pogut analitzar \"%s" "\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "ERRADA? Final del fitxer XPM imprevist, però Imlib ha pogut " "analitzar \"%s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "ERRADA? Caràcter imprevist, però Imlib ha pogut analitzar \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "No s'ha pogut carregar la font \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Càrrega de la font \"%s\" fallada." #, c-format msgid "Could not load fontset \"%s\"." msgstr "No s'ha pogut carregar la font \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "No s'ha trobat codificació per a la font \"%s\":" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Sense memòria per al pixmap \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Error en la càrrega de la imatge \"%s\"" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: Error al adquirir el pixmap per a X" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Error de mapejat de imatge Imlib a pixmap per a X" msgid "Cu_t" msgstr "Retal_lar" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Copiar" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_Pegar" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Pegar _Selecció" msgid "Select _All" msgstr "Seleccionar _Tot" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "" msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "" #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Cadena \"multibyte\" invàlida \"%s\": %s" msgid "OK" msgstr "OK" msgid "Cancel" msgstr "Cancel·lar" #, c-format msgid "Out of memory for pixel map %s" msgstr "Sense memòria per al mapa de pixels %s" #, c-format msgid "Could not find pixel map %s" msgstr "No es pot trobar el mapa de pixels %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Sense memòria per al buffer RGB %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "No es pot trobar el buffer RGB %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Emprant mecanisme de protecció per a convertir pixels (depth: %d; " "masks (roig/verd/blau): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d bits visuals no suportats (encara)" msgid "$USER or $LOGNAME not set?" msgstr "¿$USER o $LOGNAME no configurat?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" no descriu un esquema comú d'Internet" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\"no conté cap descripció d'esquema" #, fuzzy #~ msgid "program label expected" #~ msgstr "Separador esperat" #, fuzzy #~ msgid "menu caption expected" #~ msgstr "Separador esperat" #, fuzzy #~ msgid "opening curly expected" #~ msgstr "Identificador esperat" #, fuzzy #~ msgid "action name expected" #~ msgstr "Separador esperat" #, fuzzy #~ msgid "unknown action" #~ msgstr "Acció desconeguda: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Parella de digits hexadecimals prevists" #~ msgid "Unexpected identifier" #~ msgstr "Identificador imprevist" #~ msgid "Identifier expected" #~ msgstr "Identificador esperat" #~ msgid "Separator expected" #~ msgstr "Separador esperat" #, fuzzy #~ msgid "Invalid token" #~ msgstr "Camí no vàlid: " #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "No és un nombre hexadecimal: %c%c (en \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - format desconegut (%d)" #~ msgid "M" #~ msgstr "M" #~ msgid "cpu: %d %d %d %d" #~ msgstr "cpu: %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat troba massa CPU's: deurien de ser %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "# preferences(%s) - generated by genpref\n" #~ "\n" #~ msgstr "# preferències(%s) - generat per genpref\n" #~ msgid "# NOTE: All settings are commented out by default, be sure " #~ "to\n" #~ "# uncomment them if you change them!\n" #~ "\n" #~ msgstr "# NOTA: Totes les configuracions estan comentades per " #~ "defecte, assegurat\n" #~ "# de descomentar-les si les vols canviar!!\n" #~ "\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree fallada per a la finestra 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "En cas de estar compilat amb l'etiqueta DEBUG, es mostraran " #~ "els missatges de depuració." #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "Sintaxi: icewmbg pixmap1 pixmap2 ...\n" #~ "Canvia el fons de la pantalla al canviar d'escriptori.\n" #~ "El primer pixmap és el predeterminat.\n" #~ "\n" #~ "-s, --semitransparency Activa el suport per a terminals amb semi-" #~ "trasparència\n" #~ msgid "©" #~ msgstr "©" #~ msgid "_Ignore" #~ msgstr "_Ignorar" #~ msgid "_Minimized" #~ msgstr "_Minimitzat" #~ msgid "_Exclusive" #~ msgstr "_Exclussiu" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X error %s(0x%lX): %s" #~ msgid "Window %p has no XA_ICEWM_PID property. Export the " #~ "LD_PRELOAD variable to preload the preice library." #~ msgstr "La finestra %p no té adecuadament XA_ICEWM_PID. Exportar la " #~ "variable LD_PRELOAD per a precarregar la biblioteca." #~ msgid "Obsolete option: %s" #~ msgstr "Opció obsoleta: %s" #~ msgid "Gnome" #~ msgstr "Gnome" #~ msgid "Gnome User Apps" #~ msgstr "Aplicacions d'Usuari de Gnome" #~ msgid "KDE" #~ msgstr "KDE" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "MASSA CONEXIONS D'ICE -- no suportat" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Gestor de Sessions: IceAddConnectionWatch fallit." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Gestor de Sessions: Error de Init: %s" #~ msgid "Pipe creation failed (errno=%d)." #~ msgstr "Creación de Pipe fallida (errno=%d)." #~ msgid "Can't establish %s to %s conversion" #~ msgstr "No es pot establir la converssió de %s a %s" #~ msgid "Resource allocation for rotated string \"%s\" (%dx%d px) " #~ "failed" #~ msgstr "Assignació de recursos per a la cadena rotada \"%s\" (%dx%d " #~ "px) fallada" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Fallada en copiar dibuixable 0x%x a la memòria " #~ "intermèdia del pixel" icewm-1.3.7/po/hu.po0000644000076600007660000011666111463274241013233 0ustar develdevel# Hungarian messages (av1) for IceWM # Copyright (C) 2000-2001 Marko Macek # Tamas Czinege , 2001. # Gabor Suveg , 2001, 2002, 2003. # Somogyi Peter, 2003. # Andras Timar , 2003. # msgid "" msgstr "Project-Id-Version: icewm 1.2.7\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2003-04-14 21:23+0200\n" "Last-Translator: Gabor Suveg \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 0.9.6\n" # ../src/aapm.cc:93 msgid " - Power" msgstr " - Hálózati feszültség" # ../src/aapm.cc:95 #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "H" # ../src/aapm.cc:98 #, c-format msgid " - Charging" msgstr " - Töltés alatt" msgid "C" msgstr "T" # ../src/acpustatus.cc:133 #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "CPU terhelés: %3.2f %3.2f %3.2f, %d folyamattal" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" # ../src/amailbox.cc:69 #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Érvénytelen levelesláda protokoll: \"%s\"" # ../src/amailbox.cc:71 #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Érvénytelen levelesláda elérési útvonal: \"%s\"" # ../src/amailbox.cc:303 #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Használt postafiók: \"%s\"\n" # ../src/amailbox.cc:402 msgid "Error checking mailbox." msgstr "Hiba történt a postafiók ellenÅ‘rzésekor." # ../src/amailbox.cc:408 #, c-format msgid "%ld mail message." msgstr "%ld üzenet." # ../src/amailbox.cc:409 #, c-format msgid "%ld mail messages." msgstr "%ld üzenet." #, fuzzy, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Eszköz: %s\n" " Pillanatnyi átvitel (be/ki):\t%lli %s/%lli %s\n" " Ãtlagos átvitel (be/ki):\t%lli %s/%lli %s\n" " Összforgalom (be/ki):\t%lli %s/%lli %s\n" " Online idÅ‘:\t%d:%02d:%02d%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Hívóazonosító:\t" # ../src/wmstatus.cc:170 msgid "Workspace: " msgstr "Munkaterület: " # ../src/icehelp.cc:539 msgid "Back" msgstr "Vissza" # ../src/icehelp.cc:539 msgid "Alt+Left" msgstr "Alt+Bal" # ../src/icehelp.cc:540 msgid "Forward" msgstr "ElÅ‘re" # ../src/icehelp.cc:540 msgid "Alt+Right" msgstr "Alt+Jobb" # ../src/icehelp.cc:542 msgid "Previous" msgstr "ElÅ‘zÅ‘" # ../src/icehelp.cc:543 msgid "Next" msgstr "KövetkezÅ‘" # ../src/icehelp.cc:545 msgid "Contents" msgstr "Tartalom" # ../src/icehelp.cc:546 msgid "Index" msgstr "Index" # ../src/icehelp.cc:548 ../src/icesame.cc:59 ../src/iceview.cc:69 # ../src/wmframe.cc:127 #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Bezárás" # ../src/icehelp.cc:548 ../src/icesame.cc:59 ../src/iceview.cc:69 msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Használat: %s FÃJLNÉV\n" "\n" "Egyszerű HTML-böngészÅ‘ben jelenik meg a FÃJL.\n" "\n" # ../src/icehelp.cc:1247 #, c-format msgid "Invalid path: %s\n" msgstr "Érvénytelen útvonal: %s\n" # ../src/icehelp.cc:1252 msgid "Invalid path: " msgstr "Érvénytelen útvonal: " # ../src/icelist.cc:77 msgid "List View" msgstr "Listanézet" # ../src/icelist.cc:78 msgid "Icon View" msgstr "Ikonnézet" # ../src/icelist.cc:82 msgid "Open" msgstr "Megnyitás" # ../src/icesame.cc:54 msgid "Undo" msgstr "Visszavonás" # ../src/icesame.cc:54 msgid "Ctrl+Z" msgstr "Ctrl+Z" # ../src/icesame.cc:56 msgid "New" msgstr "Új" # ../src/icesame.cc:56 msgid "Ctrl+N" msgstr "Ctrl+N" # ../src/icesame.cc:57 msgid "Restart" msgstr "Újraindítás" # ../src/icesame.cc:57 msgid "Ctrl+R" msgstr "Ctrl+R" # ../src/icesame.cc:62 #. !!! fix msgid "Same Game" msgstr "Same Game" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "A(z) `%s' művelet legalább %d argumentumot vár." # ../src/icehelp.cc:1247 #, c-format msgid "Invalid expression: `%s'" msgstr "Érvénytelen kifejezés: \"%s\"" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Névvel rendelkezÅ‘ szimbólumok a \"%s\" tartományból (numerikus " "tartomány: %ld-%ld):\n" # ../src/icehelp.cc:1247 #, c-format msgid "Invalid workspace name: `%s'" msgstr "Érvénytelen munkaterület név: \"%s\"" #, c-format msgid "Workspace out of range: %d" msgstr "Munkaterület tartományon kívül: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Használat: %s [KAPCSOLÓK] MŰVELETEK\n" "\n" "Kapcsolók:\n" " -display DISPLAY A DISPLAY által megadott X-" "kiszolgálóhoz kapcsolódik.\n" " Alapértelmezett: $DISPLAY vagy :0.0 ha " "nincs beállítva.\n" " -window WINDOW_ID Megadja a kezelendÅ‘ ablakot. Vannak " "különleges\n" " azonosítók: `root' a gyökérablak és " "`focus' a fókuszban\n" " levÅ‘ ablak. \n" " -class WM_CLASS A kezelendÅ‘ ablakok ablakkezelÅ‘-" "osztálya. Ha a\n" " \t \t \t WM_CLASS tartalmaz pontot, csak azok az " "ablakok\n" " \t \t számítanak, amelyeknek pontosan ugyanaz a " "WM_CLASS \n" "\t\t\t tulajdonságuk. Ha nincs pont, az azonos osztályba és az\n" "\t\t\t azonos példányhoz (azaz `-name') tartozó ablakok " "lesznek\n" "\t\t\t kiválasztva.\n" "\n" "Műveletek:\n" " setIconTitle CÃM Az ikon címének beállítása.\n" " setWindowTitle CÃM Az ablak címének beállítása.\n" " setState MASZK ÃLLAPOT A GNOME-ablak beállítása az ÃLLAPOT " "állapotba.\n" " \t\t\t Csak a MASZK által kiválasztott bitek érintettek.\n" " Az ÃLLAPOT és a MASZK a `GNOME windows " "state' \n" " tartomány kifejezései.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set th GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " \t\t\t the root window to change the current workspace.\n" " listWorkspaces \t Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgid "GNOME window state" msgstr "GNOME ablakállapot" msgid "GNOME window hint" msgstr "GNOME ablaksegéd" msgid "GNOME window layer" msgstr "GNOME ablakréteg" msgid "IceWM tray option" msgstr "IceWM panel tulajdonságok" # ../src/iceskt.cc:36 msgid "Usage error: " msgstr "Használati hiba:" # ../src/icehelp.cc:1247 #, c-format msgid "Invalid argument: `%s'." msgstr "Érvénytelen argumentum: \"%s\"" msgid "No actions specified." msgstr "Nincs megadott művelet." # ../src/icetail.cc:124 ../src/icewmbg.cc:199 ../src/icewmhint.cc:74 # ../src/yapp.cc:582 #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Nem lehet megnyitni a %s képernyÅ‘t. Az X-nek futnia kell \n" "és a $DISPLAY-t be kell állítani." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Érvénytelen ablak azonosító: \"%s\"" # ../src/wmstatus.cc:170 #, c-format msgid "workspace #%d: `%s'\n" msgstr "Munkaterület száma: %d: \"%s\"\n" # ../src/wmoption.cc:209 #, c-format msgid "Unknown action: `%s'" msgstr "Ismeretlen ablakbeállítás: \"%s\"" # ../src/iceskt.cc:36 #, c-format msgid "Socket error: %d" msgstr "Socket hiba: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "%d (%s) minta lejátszása" #, c-format msgid "No such device: %s" msgstr "Nem létezÅ‘ eszköz: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Sikertelen kapcsolódás a %s ESound kiszolgálóhoz." # ../src/icetail.cc:126 ../src/icewmbg.cc:201 ../src/icewmhint.cc:76 # ../src/yapp.cc:584 msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "<%d> hiba \"%s:%s\" feltöltésekor" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "<%d> minta feltöltve \"%s:%s\" néven" #, c-format msgid "Playing sample #%d" msgstr "%d Minta lejátszása" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Sikertelen kapcsolódás a YIFF kiszolgálóhoz: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "%s audio mód váltása sikertelen." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Audiomód-váltás észlelve, a \"%s\" audiomód tovább már nem elérhetÅ‘." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Audiomód-váltás észlelve, automata audiomód-víáltás kikapcsolva." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "ElÅ‘zÅ‘ \"%s\" audiomód felülbírálva." #, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "" msgid "Multiple sound interfaces given." msgstr "Több hang eszköz van megadva." #, c-format msgid "Support for the %s interface not compiled." msgstr "A %s eszköz támogatása nincs befordítva a programba." #, c-format msgid "Unsupported interface: %s." msgstr "Nem támogatott %s eszköz." #, c-format msgid "Received signal %d: Terminating..." msgstr "%d jelet (signal) kaptam. Megszakítás..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "%d jelet (signal) kaptam. Minták újratöltése..." # ../src/iceview.cc:65 msgid "Hex View" msgstr "Hexa nézet" # ../src/iceview.cc:65 msgid "Ctrl+H" msgstr "Ctrl+H" # ../src/iceview.cc:66 msgid "Expand Tabs" msgstr "Tabok kifejtése" # ../src/iceview.cc:66 msgid "Ctrl+T" msgstr "Ctrl+T" # ../src/iceview.cc:67 msgid "Wrap Lines" msgstr "Sortörés" # ../src/iceview.cc:67 msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" # ../src/icetail.cc:78 ../src/icewmbg.cc:172 #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: ismeretlen opció: `%s'\n" "Próbáld meg a(z) `%s --help' -et további információért.\n" # ../src/icewmbg.cc:92 ../src/icons.cc:40 ../src/icons.cc:94 #, c-format msgid "Loading image %s failed" msgstr "A következÅ‘ kép betöltése nem sikerült: %s" # ../src/ycursor.cc:110 #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Hiba a \"%s\" pixmap betöltésekor: %s" # ../src/icewmhint.cc:47 msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Használat: icewmhint [osztály.példány] opció argumentum\n" # ../src/icewmhint.cc:63 ../src/ypaint.cc:238 #, c-format msgid "Out of memory (len=%d)." msgstr "Elfogyott a memória (hossz=%d)." # ../src/misc.cc:275 msgid "Warning: " msgstr "Figyelmeztetés: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Ismeretlen irány az áthelyezés/átméretezés kérésnél: %d" # ../src/wmwinlist.cc:236 #, fuzzy msgid "Default" msgstr "Törlés" # ../src/wmabout.cc:26 ../src/wmabout.cc:27 msgid "(C)" msgstr "(C)" # ../src/wmabout.cc:31 msgid "Theme:" msgstr "Téma: " # ../src/wmabout.cc:32 msgid "Theme Description:" msgstr "Téma leírása:" # ../src/wmabout.cc:33 msgid "Theme Author:" msgstr "Téma szerzÅ‘je: " msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" # ../src/wmabout.cc:47 msgid "icewm - About" msgstr "IceWM - Névjegy" # ../src/wmapp.cc:177 msgid "Unable to get current font path." msgstr "Nem lehet elérni a jelenlegi betűkészlet elérési útvonalát" # ../src/wmapp.cc:205 msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Az ICEWM_FONT_PATH hibásan van megadva" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Többszörös hivatkozás a \"%s\" színátmenetre" # ../src/wmconfig.cc:248 #, c-format msgid "Unknown gradient name: %s" msgstr "Ismeretlen színátmenet név: %s" # OS/2 is dead, but... ;-) # ../src/wmapp.cc:457 msgid "_Logout" msgstr "_Kilépés" # ../src/wmapp.cc:458 msgid "_Cancel logout" msgstr "_Kilépés megszakítása" # ../src/wmdialog.cc:59 msgid "Lock _Workstation" msgstr "Munkaállomás le_zárása" # ../src/wmdialog.cc:87 msgid "Re_boot" msgstr "Ú_jraindítás" # ../src/wmdialog.cc:94 msgid "Shut_down" msgstr "_Kikapcsolás" # ../src/wmapp.cc:468 msgid "Restart _Icewm" msgstr "Az _IceWM újraindítása" # ../src/wmapp.cc:474 msgid "Restart _Xterm" msgstr "Az _Xterm újraindítása" # ../src/wmapp.cc:488 msgid "_Menu" msgstr "_Menü" # ../src/wmapp.cc:489 msgid "_Above Dock" msgstr "Dokk _felett" # ../src/wmapp.cc:490 msgid "_Dock" msgstr "_Dokk" # ../src/wmapp.cc:491 msgid "_OnTop" msgstr "_Elöl" # ../src/wmapp.cc:492 msgid "_Normal" msgstr "_Normál" # ../src/wmapp.cc:493 msgid "_Below" msgstr "_Hátul" # ../src/wmapp.cc:494 msgid "D_esktop" msgstr "_Asztal" # ../src/wmapp.cc:505 msgid "_Restore" msgstr "_Visszaállítás" # ../src/wmapp.cc:506 msgid "_Move" msgstr "_Mozgatás" # ../src/wmapp.cc:507 msgid "_Size" msgstr "Mé_retezés" # ../src/wmapp.cc:508 msgid "Mi_nimize" msgstr "Mi_nimalizálás" # ../src/wmapp.cc:509 msgid "Ma_ximize" msgstr "Ma_ximalizálás" msgid "_Fullscreen" msgstr "_Teljes képernyÅ‘" # ../src/wmapp.cc:511 ../src/wmwinlist.cc:248 msgid "_Hide" msgstr "Elre_jtés" # ../src/wmapp.cc:513 msgid "Roll_up" msgstr "Fel_görgetés" # ../src/wmapp.cc:515 msgid "R_aise" msgstr "_ElÅ‘rehozás" # ../src/wmapp.cc:516 msgid "_Lower" msgstr "_Hátra küldés" # ../src/wmapp.cc:517 msgid "La_yer" msgstr "E_lrendezés" # ../src/wmapp.cc:520 ../src/wmwinlist.cc:251 msgid "Move _To" msgstr "Ãthelye_zés másik munkaterületre" # ../src/wmapp.cc:521 msgid "Occupy _All" msgstr "Megjelenés minden mun_katerületen" msgid "Limit _Workarea" msgstr "_Munkaterület korlátozása" msgid "Tray _icon" msgstr "Panel_ikon" # ../src/wmapp.cc:524 ../src/wmwinlist.cc:236 ../src/wmwinlist.cc:258 msgid "_Close" msgstr "_Bezárás" # ../src/wmwinlist.cc:238 msgid "_Kill Client" msgstr "_Kliens lelövése" # ../src/wmapp.cc:527 ../src/wmwinmenu.cc:135 msgid "_Window list" msgstr "Ablak_lista" # # ../src/wmapp.cc:581 msgid "Another window manager already running, exiting..." msgstr "Egy másik ablakkezelÅ‘ már fut, kilépés..." # ../src/wmapp.cc:637 #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Nem lehet újraindítani: %s\n" "Esetleg nincsen a $PATH-ban (elérési\n" "útvonalban) és ezért nem elérhetÅ‘ %s?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "" # ../src/wmapp.cc:676 msgid "Confirm Logout" msgstr "Kilépés megerÅ‘sítése" # ../src/wmapp.cc:677 msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Kilépéskor bezáródik az összes futó alkalmazás.\n" "Mégis?" # # ../src/wmconfig.cc:350 msgid "Bad Look name" msgstr "Rossz nézetnév" # ../src/wmdialog.cc:59 #, fuzzy msgid "Loc_k Workstation" msgstr "Munkaállomás le_zárása" # ../src/wmdialog.cc:66 ../src/wmprog.cc:629 ../src/wmtaskbar.cc:236 msgid "_Logout..." msgstr "_Kilépés..." # ../src/wmdialog.cc:73 msgid "_Cancel" msgstr "_Mégsem" # ../src/wmapp.cc:468 msgid "_Restart icewm" msgstr "Az _IceWM újraindítása" # ../src/wmprog.cc:633 ../src/wmtaskbar.cc:230 ../src/wmtaskbar.cc:233 msgid "_About" msgstr "N_évjegy" # ../src/wmframe.cc:105 ../src/wmframe.cc:515 ../src/wmframe.cc:2182 msgid "Maximize" msgstr "Maximalizálás" # ../src/wmframe.cc:118 #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Minimalizálás" # ../src/wmframe.cc:139 #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Elrejtés" # ../src/wmframe.cc:149 ../src/wmframe.cc:2214 #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Felgörgetés" # # ../src/wmframe.cc:158 #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "ElÅ‘hoz/Hátra küld" # # ../src/wmframe.cc:1183 msgid "Kill Client: " msgstr "Kliens leölése: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "FIGYELMEZTETÉS! Minden el nem mentett\n" "változtatás elveszik, ha ez a kliens ki lesz lÅ‘ve!\n" "Biztosan ezt akarod?" # ../src/wmframe.cc:2179 msgid "Restore" msgstr "Visszaállítás" # ../src/wmframe.cc:2212 msgid "Rolldown" msgstr "Legörget" # ../src/wmoption.cc:196 #, c-format msgid "Error in window option: %s" msgstr "Hiba az ablak beállításában: %s" # ../src/wmoption.cc:209 #, c-format msgid "Unknown window option: %s" msgstr "Ismeretlen ablakbeállítás: %s" # ../src/wmoption.cc:268 msgid "Syntax error in window options" msgstr "Helytelenül megadott ablakbeállítás" # ../src/wmoption.cc:306 msgid "Out of memory for window options" msgstr "Elfogyott a memória az ablakok beállításához" # ../src/wmprog.cc:195 msgid "Missing command argument" msgstr "Hiányzó parancsargumentum" # ../src/wmprog.cc:210 #, c-format msgid "Bad argument %d" msgstr "Rossz argumentum: %d" # ../src/wmprog.cc:289 #, c-format msgid "Error at prog %s" msgstr "Hiba a programban: %s" #, c-format msgid "Unexepected keyword: %s" msgstr "Nem várt kulcsszó: %s" # ../src/wmprog.cc:349 #, c-format msgid "Error at key %s" msgstr "Hiba a kulcsban: %s" # ../src/wmprog.cc:587 #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programok" # ../src/wmprog.cc:621 msgid "_Run..." msgstr "_Futtatás..." # ../src/wmprog.cc:617 ../src/wmtaskbar.cc:218 msgid "_Windows" msgstr "_Ablakok" # ../src/wmprog.cc:642 msgid "_Help" msgstr "_Súgó" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" # ../src/wmprog.cc:627 msgid "_Themes" msgstr "_Témák" msgid "Se_ttings" msgstr "" # ../src/wmsession.cc:261 ../src/wmsession.cc:277 ../src/wmsession.cc:287 #, c-format msgid "Session Manager: Unknown line %s" msgstr "Munkafolyamat-kezelÅ‘: ismeretlen sor %s" # ../src/wmtaskbar.cc:145 ../src/wmtaskbar.cc:146 msgid "Task Bar" msgstr "Panel" # ../src/wmtaskbar.cc:207 ../src/wmwinlist.cc:253 ../src/wmwinlist.cc:262 msgid "Tile _Vertically" msgstr "_FüggÅ‘leges mozaik" # ../src/wmtaskbar.cc:208 ../src/wmwinlist.cc:254 ../src/wmwinlist.cc:263 msgid "T_ile Horizontally" msgstr "_Vízszintes mozaik" # ../src/wmtaskbar.cc:209 ../src/wmwinlist.cc:255 ../src/wmwinlist.cc:264 msgid "Ca_scade" msgstr "Vízesés" # ../src/wmtaskbar.cc:210 ../src/wmwinlist.cc:256 ../src/wmwinlist.cc:265 msgid "_Arrange" msgstr "El_rendez" # ../src/wmtaskbar.cc:211 ../src/wmwinlist.cc:266 msgid "_Minimize All" msgstr "_Mindent minimalizál" # ../src/wmtaskbar.cc:212 ../src/wmwinlist.cc:267 msgid "_Hide All" msgstr "Mindent elre_jt" # ../src/wmtaskbar.cc:213 ../src/wmwinlist.cc:268 msgid "_Undo" msgstr "_Visszavonás" # ../src/wmtaskbar.cc:215 msgid "Arrange _Icons" msgstr "_Ikonok elrendezése" # ../src/wmtaskbar.cc:221 msgid "_Refresh" msgstr "_Frissítés" # ../src/wmtaskbar.cc:228 msgid "_License" msgstr "_LicencszerzÅ‘dés" msgid "Favorite applications" msgstr "Kedvenc alkalmazások" # ../src/wmwinlist.cc:276 ../src/wmwinlist.cc:277 msgid "Window list menu" msgstr "Ablaklista menü" # ../src/wmapp.cc:494 #, fuzzy msgid "Show Desktop" msgstr "_Asztal" # ../src/wmstatus.cc:170 #, fuzzy msgid "All Workspaces" msgstr "Munkaterület: " # ../src/wmwinlist.cc:236 #, fuzzy msgid "Del" msgstr "Törlés" # ../src/wmwinlist.cc:240 msgid "_Terminate Process" msgstr "Folyama_t leállítása" # ../src/wmwinlist.cc:241 msgid "Kill _Process" msgstr "Folyamat lelö_vése" # ../src/wmwinlist.cc:246 msgid "_Show" msgstr "_Megjelenítés" # ../src/wmwinlist.cc:250 msgid "_Minimize" msgstr "_Minimalizálás" # ../src/wmwinlist.cc:276 ../src/wmwinlist.cc:277 msgid "Window list" msgstr "Ablaklista" # ../src/wmwinmenu.cc:125 #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Munkaterület %-.32s" # ../src/yapp.cc:884 #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Üzenethurok: nem kijelölhetÅ‘ (hibaszám=%d)" # ../src/wmoption.cc:209 #, c-format msgid "Unrecognized option: %s\n" msgstr "Ismeretlen beállítás: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Ismeretlen argumentum: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Argumentumhoz hiányzik a(z) %s paraméter" # ../src/wmconfig.cc:248 #, c-format msgid "Unknown key name %s in %s" msgstr "Ismeretlen kulcs: %s Hely: %s" # ../src/wmconfig.cc:264 ../src/wmconfig.cc:277 #, c-format msgid "Bad argument: %s for %s" msgstr "Rossz argumentum: %s - %s" # ../src/wmconfig.cc:355 #, c-format msgid "Bad option: %s" msgstr "Rossz beállítás : %s" # ../src/ycursor.cc:110 #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "A(z) \"%s\" kép (pixmap) nem betölthetÅ‘" # ../src/ycursor.cc:89 ../src/ycursor.cc:143 #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Érvénytelen kurzorkép (pixmap): \"%s\" túl sok egyedi színt tartalmaz" # ../src/ycursor.cc:165 #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "LEHET, HOGY EZ HIBA? Az Imlib be tudta tölteni a(z) \"%s\"-t!" # ../src/ycursor.cc:191 #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "LEHET, HOGY EZ HIBA? Helytelen XPM fejléc, de az Imlib mégis tudta " "elemezni \"%s\"-t." # ../src/ycursor.cc:199 #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "LEHET, HOGY EZ EGY HIBA? Váratlan XPM fájlvégzÅ‘dés, de az Imlib " "mégis tudta elemezni \"%s\"-t." # ../src/ycursor.cc:199 #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "LEHET, HOGY EZ EGY HIBA? Helytelen XPM fájlvégzÅ‘dés, de az Imlib " "mégis tudta elemezni \"%s\"-t." # ../src/ypaint.cc:287 #, c-format msgid "Could not load font \"%s\"." msgstr "Nem betölthetÅ‘ betűkészlet: \"%s\"." # ../src/ycursor.cc:110 #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "A(z) \"%s\" kép (pixmap) nem betölthetÅ‘" # ../src/ypaint.cc:262 #, c-format msgid "Could not load fontset \"%s\"." msgstr "A betűkészlet nem betölthetÅ‘: \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "A(z) \"%s\" betűkészlethez hiányoznak a kódlapok." # ../src/icons.cc:211 ../src/icons.cc:316 ../src/icons.cc:329 #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Elfogyott a memória a következÅ‘ képhez: \"%s\"" # ../src/icewmbg.cc:92 ../src/icons.cc:40 ../src/icons.cc:94 #, c-format msgid "Loading of image \"%s\" failed" msgstr "A következÅ‘ kép betöltése nem sikerült: \"%s\"" # ../src/icons.cc:120 ../src/icons.cc:137 msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: Az X pixmap megszerzése nem sikerült" # ../src/icons.cc:129 msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Imlib kép X pixmap leképezése sikertelen" # ../src/yinput.cc:53 msgid "Cu_t" msgstr "_Kivágás" # ../src/yinput.cc:53 msgid "Ctrl+X" msgstr "Ctrl+X" # ../src/yinput.cc:54 msgid "_Copy" msgstr "_Másolás" # ../src/yinput.cc:54 msgid "Ctrl+C" msgstr "Ctrl+C" # ../src/yinput.cc:55 msgid "_Paste" msgstr "_Beillesztés" # ../src/yinput.cc:55 msgid "Ctrl+V" msgstr "Ctrl+V" # ../src/yinput.cc:56 msgid "Paste _Selection" msgstr "Beilleszti a ki_jelölt részt" # ../src/yinput.cc:58 msgid "Select _All" msgstr "Mi_ndent kijelöl" # ../src/yinput.cc:58 msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "A locale-t nem támogatja a C függvénykönyvtár. A 'C' locale lesz " "használva." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "Nem sikerült megállapítani az aktuális locale kódkészletét. ISO-8859-" "1 lesz feltételezve.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv számára nem elegendÅ‘ (hiányzó) %s ba %s konverzió" # ../src/amailbox.cc:71 #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Érvénytelen több byte-os karakterlánc (multibyte string): \"%s\": %s" # ../src/ymsgbox.cc:34 msgid "OK" msgstr "OK" # ../src/ymsgbox.cc:42 msgid "Cancel" msgstr "Mégsem" # ../src/icons.cc:211 ../src/icons.cc:316 ../src/icons.cc:329 #, c-format msgid "Out of memory for pixel map %s" msgstr "Elfogyott a memória a következÅ‘ képhez (pixmaphez): %s" # ../src/icons.cc:220 #, c-format msgid "Could not find pixel map %s" msgstr "A következÅ‘ kép (pixmap) nem található: %s" # ../src/icons.cc:211 ../src/icons.cc:316 ../src/icons.cc:329 #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Elfogyott a memória a következÅ‘ RGB képhez (pixmaphez): %s" # ../src/icons.cc:220 #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "A következÅ‘ RGB kép (pixmap) nem található: %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "A tartalék megoldás használata a képpontok konvertálásához (mélység: " "%d;\n" "maszk (vörös/zöld/kék): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d megjelenítendÅ‘ színmélység (még) nem támogatott" # ../src/yapp.cc:187 msgid "$USER or $LOGNAME not set?" msgstr "$USER vagy $LOGNAME nincsen beállítva?" # ../src/yurl.cc:74 #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" nem tűnik egy internet-címnek" # ../src/yurl.cc:77 #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" nem tartalmaz internetcímet" # ../src/yparser.cc:159 #~ msgid "program label expected" #~ msgstr "hiányzik a programcímke" #~ msgid "icon name expected" #~ msgstr "hiányzik az ikonnév" #~ msgid "window management class expected" #~ msgstr "hiányzik az ablakkezelÅ‘-osztály" # ../src/yparser.cc:159 #~ msgid "menu caption expected" #~ msgstr "hiányzik a menüfelirat" # ../src/yparser.cc:153 #~ msgid "opening curly expected" #~ msgstr "hiányzik a kezdÅ‘ kapcsos zárójel" # ../src/yparser.cc:159 #~ msgid "action name expected" #~ msgstr "hiányzik a műveletnév" # ../src/wmoption.cc:209 #~ msgid "unknown action" #~ msgstr "ismeretlen művelet" #~ msgid "Failed to open %s: %s" #~ msgstr "%s megnyitása sikertelen: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "%s végrehajtása sikertelen: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Gyermekfolyamat létrehozása sikertelen: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Nem reguláris fájl: %s" # ../src/yparser.cc:126 #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Egy hexadecimális számpár szükséges" # ../src/yparser.cc:147 #~ msgid "Unexpected identifier" #~ msgstr "Váratlan azonosító" # ../src/yparser.cc:153 #~ msgid "Identifier expected" #~ msgstr "Hiányzik az azonosító" # ../src/yparser.cc:159 #~ msgid "Separator expected" #~ msgstr "Hiányzik az elválasztó" # ../src/icehelp.cc:1252 #~ msgid "Invalid token" #~ msgstr "Érvénytelen token" # ../src/yurl.cc:95 #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Nem hexadecimális szám: %c%c (\"%s\")" # ../src/aapm.cc:60 #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - ismeretlen formátum (%d)" #~ msgid "/" #~ msgstr "/" # ../src/acpustatus.cc:190 #~ msgid "cpu: %d %d %d %d" #~ msgstr "CPU: %d %d %d %d" # ../src/acpustatus.cc:277 #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "A kstat túl sok cpu-t talált: %d kell legyen" # ../src/apppstatus.cc:420 #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree hibát okozott a 0x%x ablaknál" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr ", YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/aapm.cc:177 ../src/aapm.cc:424 ../src/aapm.cc:628 ../src/aapm.cc:730 msgid " - Power" msgstr "" #. / if (!prettyClock) strcat(s, " "); #: ../src/aapm.cc:179 ../src/aapm.cc:427 ../src/aapm.cc:631 msgid "P" msgstr "" #: ../src/aapm.cc:183 ../src/aapm.cc:407 ../src/aapm.cc:611 ../src/aapm.cc:704 #, c-format msgid " - Charging" msgstr "" #: ../src/aapm.cc:185 ../src/aapm.cc:409 ../src/aapm.cc:613 msgid "C" msgstr "" #: ../src/acpustatus.cc:225 #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #: ../src/acpustatus.cc:229 #, c-format msgid "" "\n" "Ram: %5.2f/%.2fM" msgstr "" #: ../src/acpustatus.cc:234 #, c-format msgid "" "\n" "Swap: %.2f/%.2fM" msgstr "" #: ../src/acpustatus.cc:238 #, c-format msgid "" "\n" "ACPI Temp:" msgstr "" #: ../src/acpustatus.cc:243 #, c-format msgid "" "\n" "CPU Freq: %.3fGHz" msgstr "" #: ../src/acpustatus.cc:255 msgid "CPU Load: " msgstr "" #: ../src/amailbox.cc:77 #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "" #: ../src/amailbox.cc:79 #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "" #: ../src/amailbox.cc:326 #, c-format msgid "Using MailBox \"%s\"\n" msgstr "" #: ../src/amailbox.cc:434 msgid "Error checking mailbox." msgstr "" #: ../src/amailbox.cc:440 #, c-format msgid "%ld mail message." msgstr "" #: ../src/amailbox.cc:441 #, c-format msgid "%ld mail messages." msgstr "" #: ../src/apppstatus.cc:181 #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "" #: ../src/apppstatus.cc:194 msgid "" "\n" " Caller id:\t" msgstr "" #: ../src/aworkspaces.cc:153 ../src/wmstatus.cc:168 msgid "Workspace: " msgstr "" #: ../src/icehelp.cc:686 msgid "Back" msgstr "" #: ../src/icehelp.cc:686 msgid "Alt+Left" msgstr "" #: ../src/icehelp.cc:687 msgid "Forward" msgstr "" #: ../src/icehelp.cc:687 msgid "Alt+Right" msgstr "" #: ../src/icehelp.cc:689 msgid "Previous" msgstr "" #: ../src/icehelp.cc:690 msgid "Next" msgstr "" #: ../src/icehelp.cc:692 msgid "Contents" msgstr "" #: ../src/icehelp.cc:693 msgid "Index" msgstr "" #. fCloseButton->setWinGravity(NorthEastGravity); #: ../src/icehelp.cc:695 ../src/icesame.cc:63 ../src/iceview.cc:76 #: ../src/wmframe.cc:168 msgid "Close" msgstr "" #: ../src/icehelp.cc:695 ../src/icesame.cc:63 ../src/iceview.cc:76 msgid "Ctrl+Q" msgstr "" #: ../src/icehelp.cc:1290 #, c-format msgid "" "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by FILENAME.\n" "\n" msgstr "" #: ../src/icehelp.cc:1300 #, c-format msgid "Invalid path: %s\n" msgstr "" #: ../src/icehelp.cc:1305 msgid "Invalid path: " msgstr "" #: ../src/icelist.cc:84 msgid "List View" msgstr "" #: ../src/icelist.cc:85 msgid "Icon View" msgstr "" #: ../src/icelist.cc:89 msgid "Open" msgstr "" #: ../src/icesame.cc:58 msgid "Undo" msgstr "" #: ../src/icesame.cc:58 msgid "Ctrl+Z" msgstr "" #: ../src/icesame.cc:60 msgid "New" msgstr "" #: ../src/icesame.cc:60 msgid "Ctrl+N" msgstr "" #: ../src/icesame.cc:61 msgid "Restart" msgstr "" #: ../src/icesame.cc:61 msgid "Ctrl+R" msgstr "" #. !!! fix #: ../src/icesame.cc:66 msgid "Same Game" msgstr "" #. **************************************************************************** #. **************************************************************************** #: ../src/icesh.cc:187 #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "" #: ../src/icesh.cc:194 #, c-format msgid "Invalid expression: `%s'" msgstr "" #: ../src/icesh.cc:316 #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "" #: ../src/icesh.cc:429 #, c-format msgid "Invalid workspace name: `%s'" msgstr "" #: ../src/icesh.cc:435 #, c-format msgid "Workspace out of range: %d" msgstr "" #: ../src/icesh.cc:569 #, c-format msgid "" "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not set.\n" " -window WINDOW_ID Specifies the window to manipulate. Special\n" " identifiers are `root' for the root window " "and\n" " `focus' for the currently focused window.\n" " -class WM_CLASS Window management class of the window(s) to\n" " manipulate. If WM_CLASS contains a period, " "only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, windows " "of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are affected.\n" " STATE and MASK are expressions of the domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits specified " "by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME window " "layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "" #: ../src/icesh.cc:608 msgid "GNOME window state" msgstr "" #: ../src/icesh.cc:609 msgid "GNOME window hint" msgstr "" #: ../src/icesh.cc:610 msgid "GNOME window layer" msgstr "" #: ../src/icesh.cc:611 msgid "IceWM tray option" msgstr "" #: ../src/icesh.cc:616 msgid "Usage error: " msgstr "" #: ../src/icesh.cc:687 #, c-format msgid "Invalid argument: `%s'." msgstr "" #: ../src/icesh.cc:696 msgid "No actions specified." msgstr "" #. ====== connect to X11 === #: ../src/icesh.cc:703 ../src/icesound.cc:872 ../src/icewmhint.cc:76 #: ../src/yxapp.cc:803 #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "" #: ../src/icesh.cc:743 #, c-format msgid "Invalid window identifier: `%s'" msgstr "" #: ../src/icesh.cc:896 #, c-format msgid "workspace #%d: `%s'\n" msgstr "" #: ../src/icesh.cc:914 #, c-format msgid "Unknown action: `%s'" msgstr "" #: ../src/iceskt.cc:36 #, c-format msgid "Socket error: %d" msgstr "" #: ../src/icesound.cc:248 ../src/icesound.cc:614 #, c-format msgid "Playing sample #%d (%s)" msgstr "" #: ../src/icesound.cc:290 #, c-format msgid "No such device: %s" msgstr "" #: ../src/icesound.cc:383 #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "" #: ../src/icesound.cc:384 ../src/icesound.cc:561 ../src/icesound.cc:602 #: ../src/icewmhint.cc:78 ../src/yxapp.cc:804 msgid "" msgstr "" #: ../src/icesound.cc:404 #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "" #: ../src/icesound.cc:410 #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "" #: ../src/icesound.cc:469 #, c-format msgid "Playing sample #%d" msgstr "" #: ../src/icesound.cc:560 ../src/icesound.cc:601 #, c-format msgid "Can't connect to YIFF server: %s" msgstr "" #: ../src/icesound.cc:566 #, c-format msgid "Can't change to audio mode `%s'." msgstr "" #: ../src/icesound.cc:708 #, c-format msgid "" "Audio mode switch detected, initial audio mode `%s' no longer in effect." msgstr "" #: ../src/icesound.cc:715 msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "" #: ../src/icesound.cc:761 ../src/icesound.cc:774 #, c-format msgid "Overriding previous audio mode `%s'." msgstr "" #: ../src/icesound.cc:800 #, c-format msgid "" " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM (default: " "$DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory which " "contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound output " "target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the digital " "signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies server " "address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the Audio " "mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio mode on the " "fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out each sound " "event to\n" " stdout).\n" " -V, --version Prints version information and " "exits.\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:997 msgid "Multiple sound interfaces given." msgstr "" #: ../src/icesound.cc:1012 ../src/icesound.cc:1025 #, c-format msgid "Support for the %s interface not compiled." msgstr "" #: ../src/icesound.cc:1029 #, c-format msgid "Unsupported interface: %s." msgstr "" #: ../src/icesound.cc:1046 #, c-format msgid "Received signal %d: Terminating..." msgstr "" #: ../src/icesound.cc:1055 #, c-format msgid "Received signal %d: Reloading samples..." msgstr "" #: ../src/iceview.cc:72 msgid "Hex View" msgstr "" #: ../src/iceview.cc:72 msgid "Ctrl+H" msgstr "" #: ../src/iceview.cc:73 msgid "Expand Tabs" msgstr "" #: ../src/iceview.cc:73 msgid "Ctrl+T" msgstr "" #: ../src/iceview.cc:74 msgid "Wrap Lines" msgstr "" #: ../src/iceview.cc:74 msgid "Ctrl+W" msgstr "" #: ../src/icewmbg.cc:384 msgid "" "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent windows\n" msgstr "" #: ../src/icewmbg.cc:399 #, c-format msgid "" "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "" #: ../src/icewmbg.cc:527 #, c-format msgid "Loading image %s failed" msgstr "" #: ../src/icewmbg.cc:541 ../src/ycursor.cc:102 ../src/yimage.cc:81 #: ../src/ypixbuf.cc:879 #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "" #: ../src/icewmhint.cc:49 msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "" #: ../src/icewmhint.cc:65 #, c-format msgid "Out of memory (len=%d)." msgstr "" #: ../src/misc.cc:324 msgid "Warning: " msgstr "" #: ../src/movesize.cc:906 #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "" #: ../src/themes.cc:93 msgid "Default" msgstr "" #: ../src/wmabout.cc:29 ../src/wmabout.cc:31 msgid "(C)" msgstr "" #: ../src/wmabout.cc:37 msgid "Theme:" msgstr "" #: ../src/wmabout.cc:38 msgid "Theme Description:" msgstr "" #: ../src/wmabout.cc:39 msgid "Theme Author:" msgstr "" #: ../src/wmabout.cc:43 msgid "CodeSet:" msgstr "" #: ../src/wmabout.cc:44 msgid "Language:" msgstr "" #: ../src/wmabout.cc:69 msgid "icewm - About" msgstr "" #: ../src/wmapp.cc:345 msgid "Unable to get current font path." msgstr "" #: ../src/wmapp.cc:372 msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "" #: ../src/wmapp.cc:426 #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "" #: ../src/wmapp.cc:501 #, c-format msgid "Unknown gradient name: %s" msgstr "" #: ../src/wmapp.cc:753 msgid "_Logout" msgstr "" #: ../src/wmapp.cc:754 msgid "_Cancel logout" msgstr "" #: ../src/wmapp.cc:765 msgid "Lock _Workstation" msgstr "" #: ../src/wmapp.cc:767 ../src/wmdialog.cc:110 msgid "Re_boot" msgstr "" #: ../src/wmapp.cc:769 ../src/wmdialog.cc:117 msgid "Shut_down" msgstr "" #: ../src/wmapp.cc:772 msgid "Restart _Icewm" msgstr "" #: ../src/wmapp.cc:775 msgid "Restart _Xterm" msgstr "" #: ../src/wmapp.cc:790 msgid "_Menu" msgstr "" #: ../src/wmapp.cc:791 msgid "_Above Dock" msgstr "" #: ../src/wmapp.cc:792 msgid "_Dock" msgstr "" #: ../src/wmapp.cc:793 msgid "_OnTop" msgstr "" #: ../src/wmapp.cc:794 msgid "_Normal" msgstr "" #: ../src/wmapp.cc:795 msgid "_Below" msgstr "" #: ../src/wmapp.cc:796 msgid "D_esktop" msgstr "" #: ../src/wmapp.cc:808 msgid "_Restore" msgstr "" #: ../src/wmapp.cc:810 msgid "_Move" msgstr "" #: ../src/wmapp.cc:812 msgid "_Size" msgstr "" #: ../src/wmapp.cc:814 msgid "Mi_nimize" msgstr "" #: ../src/wmapp.cc:816 msgid "Ma_ximize" msgstr "" #: ../src/wmapp.cc:818 msgid "_Fullscreen" msgstr "" #: ../src/wmapp.cc:822 ../src/wmwinlist.cc:303 msgid "_Hide" msgstr "" #: ../src/wmapp.cc:825 msgid "Roll_up" msgstr "" #: ../src/wmapp.cc:832 msgid "R_aise" msgstr "" #: ../src/wmapp.cc:834 msgid "_Lower" msgstr "" #: ../src/wmapp.cc:836 msgid "La_yer" msgstr "" #: ../src/wmapp.cc:840 ../src/wmwinlist.cc:306 msgid "Move _To" msgstr "" #: ../src/wmapp.cc:841 msgid "Occupy _All" msgstr "" #: ../src/wmapp.cc:847 msgid "Limit _Workarea" msgstr "" #: ../src/wmapp.cc:852 msgid "Tray _icon" msgstr "" #: ../src/wmapp.cc:858 ../src/wmwinlist.cc:291 ../src/wmwinlist.cc:317 msgid "_Close" msgstr "" #: ../src/wmapp.cc:860 ../src/wmwinlist.cc:293 msgid "_Kill Client" msgstr "" #: ../src/wmapp.cc:864 ../src/wmdialog.cc:131 ../src/wmwinmenu.cc:136 msgid "_Window list" msgstr "" #: ../src/wmapp.cc:922 msgid "Another window manager already running, exiting..." msgstr "" #: ../src/wmapp.cc:988 #, c-format msgid "" "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "" #: ../src/wmapp.cc:1546 #, c-format msgid "" "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private configuration " "files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib by " "default.\n" " MAIL=URL Location of your mailbox. If the schema is omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, comments...\n" msgstr "" #: ../src/wmapp.cc:1659 msgid "Confirm Logout" msgstr "" #: ../src/wmapp.cc:1660 msgid "" "Logout will close all active applications.\n" "Proceed?" msgstr "" #: ../src/wmconfig.cc:116 msgid "Bad Look name" msgstr "" #: ../src/wmdialog.cc:82 msgid "Loc_k Workstation" msgstr "" #: ../src/wmdialog.cc:89 ../src/wmprog.cc:844 ../src/wmprog.cc:846 #: ../src/wmtaskbar.cc:418 ../src/wmtaskbar.cc:420 msgid "_Logout..." msgstr "" #: ../src/wmdialog.cc:96 msgid "_Cancel" msgstr "" #: ../src/wmdialog.cc:103 msgid "_Restart icewm" msgstr "" #: ../src/wmdialog.cc:124 ../src/wmprog.cc:788 ../src/wmtaskbar.cc:410 #: ../src/wmtaskbar.cc:413 msgid "_About" msgstr "" #: ../src/wmframe.cc:146 ../src/wmframe.cc:3141 msgid "Maximize" msgstr "" #. fMinimizeButton->setWinGravity(NorthEastGravity); #: ../src/wmframe.cc:159 msgid "Minimize" msgstr "" #. fHideButton->setWinGravity(NorthEastGravity); #: ../src/wmframe.cc:180 msgid "Hide" msgstr "" #. fRollupButton->setWinGravity(NorthEastGravity); #: ../src/wmframe.cc:190 ../src/wmframe.cc:3174 msgid "Rollup" msgstr "" #. fDepthButton->setWinGravity(NorthEastGravity); #: ../src/wmframe.cc:199 msgid "Raise/Lower" msgstr "" #: ../src/wmframe.cc:1643 msgid "Kill Client: " msgstr "" #: ../src/wmframe.cc:1647 msgid "" "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "" #: ../src/wmframe.cc:3138 msgid "Restore" msgstr "" #: ../src/wmframe.cc:3172 msgid "Rolldown" msgstr "" #: ../src/wmoption.cc:238 #, c-format msgid "Error in window option: %s" msgstr "" #: ../src/wmoption.cc:255 #, c-format msgid "Unknown window option: %s" msgstr "" #: ../src/wmoption.cc:338 msgid "Syntax error in window options" msgstr "" #: ../src/wmoption.cc:385 msgid "Out of memory for window options" msgstr "" #: ../src/wmprog.cc:171 msgid "Missing command argument" msgstr "" #: ../src/wmprog.cc:189 #, c-format msgid "Bad argument %d" msgstr "" #: ../src/wmprog.cc:275 ../src/wmprog.cc:374 ../src/wmprog.cc:416 #, c-format msgid "Error at prog %s" msgstr "" #: ../src/wmprog.cc:325 #, c-format msgid "Unexepected keyword: %s" msgstr "" #: ../src/wmprog.cc:464 #, c-format msgid "Error at key %s" msgstr "" #. / if (programs->itemCount() > 0) #: ../src/wmprog.cc:757 msgid "Programs" msgstr "" #: ../src/wmprog.cc:762 msgid "_Run..." msgstr "" #: ../src/wmprog.cc:769 ../src/wmtaskbar.cc:398 msgid "_Windows" msgstr "" #: ../src/wmprog.cc:799 msgid "_Help" msgstr "" #: ../src/wmprog.cc:813 msgid "_Click to focus" msgstr "" #: ../src/wmprog.cc:818 msgid "_Sloppy mouse focus" msgstr "" #: ../src/wmprog.cc:823 msgid "Custo_m" msgstr "" #: ../src/wmprog.cc:829 msgid "_Focus" msgstr "" #: ../src/wmprog.cc:836 msgid "_Themes" msgstr "" #: ../src/wmprog.cc:838 msgid "Se_ttings" msgstr "" #: ../src/wmsession.cc:239 ../src/wmsession.cc:255 ../src/wmsession.cc:265 #, c-format msgid "Session Manager: Unknown line %s" msgstr "" #: ../src/wmtaskbar.cc:248 ../src/wmtaskbar.cc:249 msgid "Task Bar" msgstr "" #: ../src/wmtaskbar.cc:387 ../src/wmwinlist.cc:308 ../src/wmwinlist.cc:321 msgid "Tile _Vertically" msgstr "" #: ../src/wmtaskbar.cc:388 ../src/wmwinlist.cc:309 ../src/wmwinlist.cc:322 msgid "T_ile Horizontally" msgstr "" #: ../src/wmtaskbar.cc:389 ../src/wmwinlist.cc:310 ../src/wmwinlist.cc:323 msgid "Ca_scade" msgstr "" #: ../src/wmtaskbar.cc:390 ../src/wmwinlist.cc:311 ../src/wmwinlist.cc:324 msgid "_Arrange" msgstr "" #: ../src/wmtaskbar.cc:391 ../src/wmwinlist.cc:313 ../src/wmwinlist.cc:325 msgid "_Minimize All" msgstr "" #: ../src/wmtaskbar.cc:392 ../src/wmwinlist.cc:314 ../src/wmwinlist.cc:326 msgid "_Hide All" msgstr "" #: ../src/wmtaskbar.cc:393 ../src/wmwinlist.cc:315 ../src/wmwinlist.cc:327 msgid "_Undo" msgstr "" #: ../src/wmtaskbar.cc:395 msgid "Arrange _Icons" msgstr "" #: ../src/wmtaskbar.cc:401 msgid "_Refresh" msgstr "" #: ../src/wmtaskbar.cc:408 msgid "_License" msgstr "" #: ../src/wmtaskbar.cc:527 msgid "Favorite applications" msgstr "" #: ../src/wmtaskbar.cc:544 msgid "Window list menu" msgstr "" #: ../src/wmtaskbar.cc:553 msgid "Show Desktop" msgstr "" #: ../src/wmwinlist.cc:60 msgid "All Workspaces" msgstr "" #: ../src/wmwinlist.cc:291 msgid "Del" msgstr "" #: ../src/wmwinlist.cc:295 msgid "_Terminate Process" msgstr "" #: ../src/wmwinlist.cc:296 msgid "Kill _Process" msgstr "" #: ../src/wmwinlist.cc:301 msgid "_Show" msgstr "" #: ../src/wmwinlist.cc:305 msgid "_Minimize" msgstr "" #: ../src/wmwinlist.cc:338 ../src/wmwinlist.cc:339 msgid "Window list" msgstr "" #: ../src/wmwinmenu.cc:126 #, c-format msgid "%lu. Workspace %-.32s" msgstr "" #: ../src/yapp.cc:393 #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "" #: ../src/ycmdline.cc:43 #, c-format msgid "Unrecognized option: %s\n" msgstr "" #. pos #: ../src/ycmdline.cc:48 #, c-format msgid "Unrecognized argument: %s\n" msgstr "" #: ../src/ycmdline.cc:64 #, c-format msgid "Argument required for %s switch" msgstr "" #: ../src/yconfig.cc:186 #, c-format msgid "Unknown key name %s in %s" msgstr "" #: ../src/yconfig.cc:211 ../src/yconfig.cc:224 #, c-format msgid "Bad argument: %s for %s" msgstr "" #: ../src/yconfig.cc:259 #, c-format msgid "Bad option: %s" msgstr "" #: ../src/ycursor.cc:127 #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "" #: ../src/ycursor.cc:160 #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "" #: ../src/ycursor.cc:182 #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "" #: ../src/ycursor.cc:208 #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "" #: ../src/ycursor.cc:216 #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "" #: ../src/ycursor.cc:219 #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "" #: ../src/yfontcore.cc:71 ../src/yfontxft.cc:125 #, c-format msgid "Could not load font \"%s\"." msgstr "" #: ../src/yfontcore.cc:74 ../src/yfontcore.cc:121 ../src/yfontxft.cc:148 #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "" #: ../src/yfontcore.cc:114 #, c-format msgid "Could not load fontset \"%s\"." msgstr "" #: ../src/yfontcore.cc:126 #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "" #: ../src/yicon.cc:143 #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "" #: ../src/yimage.cc:61 ../src/yimage.cc:109 ../src/ypixbuf.cc:1063 #, c-format msgid "Loading of image \"%s\" failed" msgstr "" #: ../src/yimage.cc:141 ../src/yimage.cc:159 msgid "Imlib: Acquisition of X pixmap failed" msgstr "" #: ../src/yimage.cc:150 msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "" #: ../src/yinput.cc:53 msgid "Cu_t" msgstr "" #: ../src/yinput.cc:53 msgid "Ctrl+X" msgstr "" #: ../src/yinput.cc:54 msgid "_Copy" msgstr "" #: ../src/yinput.cc:54 msgid "Ctrl+C" msgstr "" #: ../src/yinput.cc:55 msgid "_Paste" msgstr "" #: ../src/yinput.cc:55 msgid "Ctrl+V" msgstr "" #: ../src/yinput.cc:56 msgid "Paste _Selection" msgstr "" #: ../src/yinput.cc:58 msgid "Select _All" msgstr "" #: ../src/yinput.cc:58 msgid "Ctrl+A" msgstr "" #. || False == XSupportsLocale() #: ../src/ylocale.cc:46 msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "" #: ../src/ylocale.cc:63 msgid "" "Failed to determinate the current locale's codeset. Assuming ISO-8859-1.\n" msgstr "" #: ../src/ylocale.cc:95 ../src/ylocale.cc:102 #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "" #: ../src/ylocale.cc:156 #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "" #: ../src/ymsgbox.cc:37 msgid "OK" msgstr "" #: ../src/ymsgbox.cc:45 msgid "Cancel" msgstr "" #: ../src/ypaths.cc:135 #, c-format msgid "Out of memory for pixel map %s" msgstr "" #: ../src/ypaths.cc:141 #, c-format msgid "Could not find pixel map %s" msgstr "" #: ../src/ypaths.cc:160 ../src/ypaths.cc:184 #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "" #: ../src/ypaths.cc:166 ../src/ypaths.cc:190 #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "" #: ../src/ypixbuf.cc:482 ../src/ypixbuf.cc:668 #, c-format msgid "" "Using fallback mechanism to convert pixels (depth: %d; masks (red/green/" "blue): %0*x/%0*x/%0*x)" msgstr "" #: ../src/ypixbuf.cc:576 ../src/ypixbuf.cc:725 #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "" #: ../src/ysmapp.cc:106 msgid "$USER or $LOGNAME not set?" msgstr "" #: ../src/yurl.cc:82 #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "" #: ../src/yurl.cc:85 #, c-format msgid "\"%s\" contains no scheme description" msgstr "" icewm-1.3.7/po/fr.po0000664000076600007660000010634611463274241013227 0ustar develdevel# French messages for IceWM # Copyright (C) 2000-2001 Marko Macek # Frederic Dubuy , 2001. # Laurent Pouillet # LiNuCe msgid "" msgstr "Project-Id-Version: icewm 1.2.15pre3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2000-12-15 12:13+2000\n" "Last-Translator: LiNuCe \n" "Language-Team: French\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Courant" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "C" #, c-format msgid " - Charging" msgstr " - En charge" msgid "C" msgstr "" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "Charge CPU: %3.2f %3.2f %3.2f, %d processus" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "Charge processeur : " #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Protocole de boîte à lettre incorrect : \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Chemin de boîte à lettre incorrect : %s" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Utilisation de la boîte à lettre \"%s\"\n" msgid "Error checking mailbox." msgstr "Échec de vérification de la boîte à lettre." #, c-format msgid "%ld mail message." msgstr "%ld message." #, c-format msgid "%ld mail messages." msgstr "%ld messages." #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Interface réseau %s :\n" " Taux de transfert instantané (E/S) :\t%li %s/%li %s\n" " Taux de transfert moyen (E/S) :\t%lli %s/%lli %s\n" " Taux de transfert total (E/S) :\t%li %s/%li %s\n" " Données transférées (E/S) :\t%lli %s/%lli %s\n" " Temps passé en ligne:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Numéro de l'appelant :\t" msgid "Workspace: " msgstr "Bureau : " msgid "Back" msgstr "Retour" msgid "Alt+Left" msgstr "Alt+Gauche" msgid "Forward" msgstr "En avant" msgid "Alt+Right" msgstr "Alt+Droite" msgid "Previous" msgstr "Précédent" msgid "Next" msgstr "Suivant" msgid "Contents" msgstr "Sommaire" msgid "Index" msgstr "Index" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Fermer" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Utilisation: %s FICHIER\n" "\n" "Un simple navigateur HTML affichant le document spécifié par " "FICHIER.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Chemin incorrect : %s\n" msgid "Invalid path: " msgstr "Chemin incorrect : " msgid "List View" msgstr "Liste" msgid "Icon View" msgstr "Icônes" msgid "Open" msgstr "Ouvrir" msgid "Undo" msgstr "Annuler" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Nouveau" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Redémarrer" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Même jeu" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "L'action \"%s\" nécessite au moins %d paramètre(s)." #, c-format msgid "Invalid expression: `%s'" msgstr "Expression incorrecte : \"%s\"" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Symboles nommés du domaine \"%s\" (intervalle numérique: %ld-%ld) :\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Nom de bureau incorrect : \"%s\"" #, c-format msgid "Workspace out of range: %d" msgstr "Bureau hors limites : %d" #, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "" msgid "GNOME window state" msgstr "État de fenêtre GNOME" msgid "GNOME window hint" msgstr "Recommandation de fenêtre GNOME" msgid "GNOME window layer" msgstr "Couche de fenêtre GNOME" msgid "IceWM tray option" msgstr "Option du \"tray\" IceWM" msgid "Usage error: " msgstr "Erreur d'utilisation : " #, c-format msgid "Invalid argument: `%s'." msgstr "Paramètre incorrect : \"%s\"." msgid "No actions specified." msgstr "Aucune action spécifiée." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Impossible d'ouvrir le display %s. X doit être lancé et \n" "$DISPLAY doit être positionnée." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Identifiant de fenêtre incorrect : \"%s\"" #, c-format msgid "workspace #%d: `%s'\n" msgstr "Bureau n°%d : \"%s\"\n" #, c-format msgid "Unknown action: `%s'" msgstr "Action inconnue : \"%s\"" #, c-format msgid "Socket error: %d" msgstr "Erreur de socket : %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Lecture du son n°%d (%s)" #, c-format msgid "No such device: %s" msgstr "Le périphérique %s n'existe pas" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Échec de connexion au démon ESound : %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Erreur <%d> pendant le chargement de \"%s:%s\"" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Son <%d> chargé, correspond à \"%s:%s\"" #, c-format msgid "Playing sample #%d" msgstr "Lecture du son n°%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Échec de connexion au server YIFF: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Impossible de passer en mode audio \"%s\"." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Changement de mode audio détecté. Le mode précédent \"%s\" n'est " "plus utilisé." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Changement de mode audio détecté. Changement de mode audio " "automatique désactivé." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Écrasement du mode audio précédent \"%s\"." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Utilisation : %s [OPTION] ...\n" "\n" "Lit les fichiers audio correspondant aux événements émits par IceWM\n" "\n" "Options :\n" "\n" " -d, --display=DISPLAY Display utilisé by IceWM (par défaut: " "$DISPLAY).\n" " -s, --sample-dir=DOSSIER Spécifie le répertoire contenant les " "fichiers son (par exemple ~/.icewm/" "sounds).\n" " -i, --interface=TARGET Spécifie l'interface audio à utiliser. " "Choix\n" " possibles : OSS, YIFF, ESD.\n" " -D, --device=PERIPHERIQUE OSS seulement : périphérique son. Par " "défaut\n" " le périphérique /dev/dsp est utilisé.\n" " -S, --server=ADR:PORT ESD & YIFF seulement : adresse & port " "du serveur\n" " de son. Pour ESD, localhost:16001 est " "utilisé par\n" " défaut. Pour YIFF, il s'agit de " "localhost:9433\n" " -m, --audio-mode[=MODE] YIFF seulement : spécifie le mode audio " "(laisser\n" " vide pour obtenir la liste des modes " "possibles).\n" " --audio-mode-auto YIFF seulement : change le mode audio à " "la\n" " volée pour correspondre au mieux au " "son\n" " (peut causer des problèmes avec " "d'autres\n" " clients Y, écrase --audio-mode).\n" "\n" " -v, --verbose Mode verbeux (imprime sur la sortie " "standard\n" " tous les événements sonores)\n" " -V, --version Affiche le version et sort.\n" " -h, --help Affiche cet écran d'aide et sort.\n" "\n" "Valeurs retournées :\n" "\n" " 0 : succès.\n" " 1 : erreur générale.\n" " 2 : erreur sur la ligne de commande.\n" " 3 : erreur sous-systèmes (par exemple, connexion au serveur " "impossible).\n" "\n" msgid "Multiple sound interfaces given." msgstr "Plusieurs interfaces sonores données." #, c-format msgid "Support for the %s interface not compiled." msgstr "Support pour l'interface %s non compilé." #, c-format msgid "Unsupported interface: %s." msgstr "Interface %s non supportée." #, c-format msgid "Received signal %d: Terminating..." msgstr "Réception du signal %d : terminaison ..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Réception du signal %d : rechargement des sons ..." msgid "Hex View" msgstr "Vue hexadécimale" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Développer les tabulations" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Retour à la ligne automatique" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: option inconnue `%s'\n" "Essayez \"%s --help\" pour plus d'information.\n" #, c-format msgid "Loading image %s failed" msgstr "Échec de chargement de l'image %s" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Échec de chargement de l'image %s : %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Utilisation : icewmhint [classe.instance] option paramètre\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Plus de mémoire (len=%d)." msgid "Warning: " msgstr "Attention : " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Direction inconnue dans la requête de déplacement/dimensionnement: %d" msgid "Default" msgstr "Thème par défaut" msgid "(C)" msgstr "©" msgid "Theme:" msgstr "Thème :" msgid "Theme Description:" msgstr "Description du thème :" msgid "Theme Author:" msgstr "Auteur du thème :" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "IceWM - À propos" msgid "Unable to get current font path." msgstr "Impossible d'obtenir le chemin de recherche des polices." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Format de la propriété ICEWM_FONT_PATH incorrect" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Références multiples pour le dégradé \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "Nom de dégradé inconnu : %s" # OS/2 is dead, but... ;-) msgid "_Logout" msgstr "_Déconnexion" msgid "_Cancel logout" msgstr "_Annuler la déconnexion" msgid "Lock _Workstation" msgstr "_Verrouiller l'écran" msgid "Re_boot" msgstr "Re_démarrer l'ordinateur" msgid "Shut_down" msgstr "_Arrêter l'ordinateur" msgid "Restart _Icewm" msgstr "Redémarrer _IceWM" msgid "Restart _Xterm" msgstr "Remplacer IceWM par _XTerm" msgid "_Menu" msgstr "_Menu" msgid "_Above Dock" msgstr "_Au dessus du Dock" msgid "_Dock" msgstr "_Dock" msgid "_OnTop" msgstr "Au de_ssus" msgid "_Normal" msgstr "_Normal" msgid "_Below" msgstr "En dess_ous" msgid "D_esktop" msgstr "Bur_eau" msgid "_Restore" msgstr "_Restaurer" msgid "_Move" msgstr "Dé_placer" msgid "_Size" msgstr "Dimen_sionner" msgid "Mi_nimize" msgstr "Icô_nifier" msgid "Ma_ximize" msgstr "Ma_ximiser" msgid "_Fullscreen" msgstr "Plein écran" msgid "_Hide" msgstr "Cac_her" msgid "Roll_up" msgstr "Enro_uler" msgid "R_aise" msgstr "A_vant plan" msgid "_Lower" msgstr "Arr_ière plan" msgid "La_yer" msgstr "C_ouche" msgid "Move _To" msgstr "Envo_yer vers" msgid "Occupy _All" msgstr "Occuper tous les bure_aux" msgid "Limit _Workarea" msgstr "_Limiter l'aire de travail" msgid "Tray _icon" msgstr "Icône de barre de tâche" msgid "_Close" msgstr "_Fermer" msgid "_Kill Client" msgstr "Tuer le client X" msgid "_Window list" msgstr "_Liste des fenêtres" # msgid "Another window manager already running, exiting..." msgstr "Un gestionnaire de fenêtre tourne déjà. Terminaison ..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Impossible de relancer \"%s\"\n" "$PATH mène-t-il à \"%s\" ?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "" msgid "Confirm Logout" msgstr "Confirmer la déconnexion" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "La déconnexion va terminer toutes les applications ouvertes.\n" "Êtes-vous sûr de vouloir vous déconnecter ?" # msgid "Bad Look name" msgstr "Nom de l'option Look incorrect" #, fuzzy msgid "Loc_k Workstation" msgstr "_Verrouiller l'écran" msgid "_Logout..." msgstr "_Déconnexion ..." msgid "_Cancel" msgstr "A_nnuler" msgid "_Restart icewm" msgstr "_Redémarrer IceWM" msgid "_About" msgstr "À _propos" msgid "Maximize" msgstr "Maximiser" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Icônifier" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Cacher" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Enrouler" # #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Premier/Dernier plan" # msgid "Kill Client: " msgstr "Tuer le client : " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "ATTENTION ! Tous les changements non sauvegardés seront\n" "perdus quand ce client sera tué. Souhaitez-vous continuer ?" msgid "Restore" msgstr "Restaurer" msgid "Rolldown" msgstr "Dérouler" #, c-format msgid "Error in window option: %s" msgstr "Erreur dans l'option de fenêtre : %s" #, c-format msgid "Unknown window option: %s" msgstr "Option de fenêtre inconnue : %s" msgid "Syntax error in window options" msgstr "Erreur de syntaxe dans les options de fenêtre" msgid "Out of memory for window options" msgstr "Plus de mémoire pour les options de fenêtre" msgid "Missing command argument" msgstr "Paramètre de commande manquant" #, c-format msgid "Bad argument %d" msgstr "Mauvais paramètre %d" #, c-format msgid "Error at prog %s" msgstr "Erreur à la directive prog \"%s\"" #, c-format msgid "Unexepected keyword: %s" msgstr "Mot-clé inattendu : %s" #, c-format msgid "Error at key %s" msgstr "Erreur à la directive key %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programmes" msgid "_Run..." msgstr "_Exécuter ..." msgid "_Windows" msgstr "_Fenêtres" msgid "_Help" msgstr "_Aide" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Thèmes" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Gestionnaire de session : ligne \"%s\" inconnue" msgid "Task Bar" msgstr "Barre de tâche" msgid "Tile _Vertically" msgstr "Mosaïque _verticale" msgid "T_ile Horizontally" msgstr "Mosaïque hori_zontale" msgid "Ca_scade" msgstr "Ca_scade" msgid "_Arrange" msgstr "_Arranger" msgid "_Minimize All" msgstr "_Tout icônifier" msgid "_Hide All" msgstr "Tout _cacher" msgid "_Undo" msgstr "Ann_uler" msgid "Arrange _Icons" msgstr "Arranger les _icônes" msgid "_Refresh" msgstr "_Rafraîchir" msgid "_License" msgstr "_Licence" msgid "Favorite applications" msgstr "Applications favorites" msgid "Window list menu" msgstr "Menu des fenêtres" msgid "Show Desktop" msgstr "Montrer le bureau" msgid "All Workspaces" msgstr "Tous les bureaux" #, fuzzy msgid "Del" msgstr "Supprimer" msgid "_Terminate Process" msgstr "_Terminer le processus" msgid "Kill _Process" msgstr "Tuer le _processus" msgid "_Show" msgstr "_Montrer" msgid "_Minimize" msgstr "Mi_nimiser" msgid "Window list" msgstr "Liste des fenêtres" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Bureau %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Boucle de message : échec de sélection (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Option inconnue : %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Paramètre inconnu : %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Argument manquant pour l'option %s" #, c-format msgid "Unknown key name %s in %s" msgstr "Nom de touche inconnu : %s dans %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Paramètre inconnu : %s pour %s" #, c-format msgid "Bad option: %s" msgstr "Option inconnue : %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Échec de chargement du pixmap \"%s\"" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Pixmap de curseur incorrect : \"%s\" contient trop de couleurs " "uniques" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "BOGUE ? Imlib a pu lire \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "BOGUE ? Entête XPM mal formé mais Imlib a pu lire \"%s\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "BOGUE ? Fin prématurée de fichier XPM mais Imlib a pu lire \"%s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "BOGUE ? Caractère inattendu mais Imlib a pu lire \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "Impossible de charger la police \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Échec de chargement de la police par défaut \"%s\"." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Impossible de charger le jeu de police \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "Encodage absent pour le jeu de police \"%s\" : " #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Plus de mémoire pour le pixmap \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Échec de chargement de l'image \"%s\"" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: échec d'acquisition du pixmap X" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: échec lors du mapping de l'image Imlib en pixmap X" msgid "Cu_t" msgstr "Cou_per" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Copier" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "Co_ller" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Coller la _sélection" msgid "Select _All" msgstr "T_out sélectionner" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Locale non supportée par la bibliothèque C. Utilisation de la locale " "\"C\"." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "Échec lors de la détection de l'encodage des caractères courants.\n" "Utilisation de l'encodage par défaut ISO-8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv ne fournit pas de convertisseur %s vers %s suffisant." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Chaîne de caractère multi-octects incorrecte \"%s\" : %s" msgid "OK" msgstr "Valider" msgid "Cancel" msgstr "Annuler" #, c-format msgid "Out of memory for pixel map %s" msgstr "Plus de mémoire pour le pixmap %s" #, c-format msgid "Could not find pixel map %s" msgstr "Impossible de trouver le pixmap %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Plus de mémoire pour le tampon de pixel RVB %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Impossible de trouver le tampon de pixel RVB %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Utilisation du mécanisme par défaut pour convertir les pixels " "(profondeur: %d ; masques (rouge/vert/bleu): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: les visuels %d bits ne sont pas (encore) supportés" msgid "$USER or $LOGNAME not set?" msgstr "Variables d'environnement $USER/$LOGNAME non initialisées ?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" n'est pas un format Internet standard" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" ne contient pas de description de protocole" #~ msgid " processes." #~ msgstr " processus." #~ msgid "program label expected" #~ msgstr "Étiquette de programme attendue" #~ msgid "icon name expected" #~ msgstr "Nom d'icône attendu" #~ msgid "window management class expected" #~ msgstr "Classe de fenêtre attendue" #~ msgid "menu caption expected" #~ msgstr "Nom de menu attendu" #~ msgid "opening curly expected" #~ msgstr "Crochet ouvrant attendu" #~ msgid "action name expected" #~ msgstr "Nom de l'action attendu" #~ msgid "unknown action" #~ msgstr "Action inconnue" #~ msgid "Failed to open %s: %s" #~ msgstr "Échec d'ouverture de %s : %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Échec d'exécution de %s : %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Échec de création d'un processus fils: %s" #~ msgid "Not a regular file: %s" #~ msgstr "N'est pas un fichier : %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Paire de chiffres hexadécimaux attendue" #~ msgid "Unexpected identifier" #~ msgstr "Identifiant inattendu" #~ msgid "Identifier expected" #~ msgstr "Identifiant attendu" #~ msgid "Separator expected" #~ msgstr "Séparateur attendu" #~ msgid "Invalid token" #~ msgstr "Marque incorrecte" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Nombre hexadécimal incorrect : %c%c (dans \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - Format inconnu (%d)" #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "CPU: %d %d %d %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat a trouvé trop de processeurs : il devrait y en avoir %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "Échec de XQueryTree pour la fenêtre 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Option DEBUG active : les messages de déboguage seront " #~ "affichés." #~ msgid "_No icon" #~ msgstr "_Pas d'icône" #~ msgid "_Minimized" #~ msgstr "Mi_nimisé" #~ msgid "_Exclusive" #~ msgstr "_Exclusif" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "Erreur X %s(0x%lX): %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "Échec de duplication de processus (errno=%d)." #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "Échec de création de tube anonyme (errno=%d)." #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Pixmap de curseur incorrect : \"%s\" contient trop de " #~ "couleurs uniques" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Échec de création d'un tube anonyme : %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Échec de duplication du descripteur de fichier : %s" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: échec de copie du dessin 0x%x dans le tampon de pixels" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: échec de copie du dessin 0x%x dans le tampon de pixel " #~ "(%d:%d-%dx%d)" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "TROP DE CONNEXION ICE -- non supporté" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Gestionnaire de session : IceAddConnectionWatch a échoué." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Gestionnaire de session : erreur d'initialisation : %s" #~ msgid "M" #~ msgstr "L" #~ msgid "# preferences(%s) - generated by genpref\n" #~ "\n" #~ msgstr "# préférences(%s) - générées par genpref\n" #~ "\n" #~ msgid "# NOTE: All settings are commented out by default, be sure " #~ "to\n" #~ "# uncomment them if you change them!\n" #~ "\n" #~ msgstr "# NOTE: Tous les paramètres sont commentés par défaut, " #~ "assurez-vous\n" #~ "# de les décommenter si vous les modifiez !\n" #~ "\n" #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "Syntaxe: icewmbg [OPTION]... pixmap1 [pixmap2] ...\n" #~ "Change le fond d'écran lors d'un changement de bureau.\n" #~ "Le premier pixmap est celui utilisé par défaut ...\n" #~ "\n" #~ "-s, --semitransparency\tActive le support des terminaux semi-" #~ "transparents\n" #~ msgid "_Ignore" #~ msgstr "_Ignorer" #~ msgid "Window %p has no XA_ICEWM_PID property. Export the " #~ "LD_PRELOAD variable to preload the preice library." #~ msgstr "La fenêtre %p n'a pas de propriété XA_ICEWM_PID. Exportez " #~ "lavariable LD_PRELOAD pour précharger la librairie preice." #~ msgid "Obsolete option: %s" #~ msgstr "Option obsolète: %s" #~ msgid "Gnome" #~ msgstr "Gnome" #~ msgid "Gnome User Apps" #~ msgstr "Applications Gnome" #~ msgid "KDE" #~ msgstr "KDE" #~ msgid "Resource allocation for rotated string \"%s\" (%dx%d px) " #~ "failed" #~ msgstr "Allocation de ressources pour la chaîne tournée \"%s\" (%dx%" #~ "d px)" #~ msgid "Out of memory: Unable to allocated %d bytes." #~ msgstr "Plus de mémoire : impossible d'allouer %d octets." #~ msgid "Invalid fonts in fontset definition \"%s\":" #~ msgstr "Fontes invalides dans la définition du fontset \"%s\":" #~ msgid "%s@%s: Sent: %db Rcvd: %db in %ds" #~ msgstr "%s@%s: Envoyé : %db Reçu: %db en %ds" #~ msgid "Usage: icetail [OPTIONS] file1 [file2]...\n" #~ "Paints a files tail on the desktop background.\n" #~ msgstr "Usage: icetail [OPTIONS] fichier1 [fichier2]...\n" #~ "Affiche la fin d'un fichier en fond d'écran\n" #~ msgid "Load pixmap %s failed with rc=%d" #~ msgstr "Le chargement du pixmap %s a échoué, code d'erreur : %d" #~ msgid "Warning! Unsaved changes will be lost!\n" #~ "Proceed?" #~ msgstr "Attention! Les changements non sauvegardés seront perdus !\n" #~ "Continuer ?" #, fuzzy #~ msgid "Loading of pixmap %s failed with rc=%d" #~ msgstr "Le chargement du pixmap %s a échoué, code d'erreur : %d" #~ msgid "Fallback to '*fixed*' failed." #~ msgstr "Retour en police '*fixe*' impossible." #~ msgid "Missing fontset in loading '%s'" #~ msgstr "Groupe de police manquant en chargeant '%s'" #~ msgid "Fallback to 'fixed' failed." #~ msgstr "Retour en police 'fixe' impossible." icewm-1.3.7/po/Makefile0000664000076600007660000001034611463274255013717 0ustar develdevelsrcdir = . top_srcdir = .. prefix = /usr datadir = ${prefix}/share PACKAGE = icewm LOCDIR = /usr/share/locale DESTDIR = SOURCES = $(top_srcdir)/src/aapm.cc $(top_srcdir)/src/acpustatus.cc $(top_srcdir)/src/amailbox.cc $(top_srcdir)/src/apppstatus.cc $(top_srcdir)/src/aworkspaces.cc $(top_srcdir)/src/icehelp.cc $(top_srcdir)/src/icelist.cc $(top_srcdir)/src/icesame.cc $(top_srcdir)/src/icesh.cc $(top_srcdir)/src/iceskt.cc $(top_srcdir)/src/icesound.cc $(top_srcdir)/src/iceview.cc $(top_srcdir)/src/icewmbg.cc $(top_srcdir)/src/icewmhint.cc $(top_srcdir)/src/misc.cc $(top_srcdir)/src/movesize.cc $(top_srcdir)/src/testnetwmhints.cc $(top_srcdir)/src/testwinhints.cc $(top_srcdir)/src/themes.cc $(top_srcdir)/src/wmabout.cc $(top_srcdir)/src/wmapp.cc $(top_srcdir)/src/wmconfig.cc $(top_srcdir)/src/wmdialog.cc $(top_srcdir)/src/wmframe.cc $(top_srcdir)/src/wmoption.cc $(top_srcdir)/src/wmprog.cc $(top_srcdir)/src/wmsession.cc $(top_srcdir)/src/wmstatus.cc $(top_srcdir)/src/wmtaskbar.cc $(top_srcdir)/src/wmwinlist.cc $(top_srcdir)/src/wmwinmenu.cc $(top_srcdir)/src/yapp.cc $(top_srcdir)/src/ybutton.cc $(top_srcdir)/src/ycmdline.cc $(top_srcdir)/src/yconfig.cc $(top_srcdir)/src/ycursor.cc $(top_srcdir)/src/yfontcore.cc $(top_srcdir)/src/yfontxft.cc $(top_srcdir)/src/yicon.cc $(top_srcdir)/src/yimage.cc $(top_srcdir)/src/yinput.cc $(top_srcdir)/src/ylocale.cc $(top_srcdir)/src/ymenuitem.cc $(top_srcdir)/src/ymsgbox.cc $(top_srcdir)/src/ypaths.cc $(top_srcdir)/src/ypixbuf.cc $(top_srcdir)/src/ysmapp.cc $(top_srcdir)/src/yurl.cc $(top_srcdir)/src/yxapp.cc POFILES = be.po bg.po ca.po cs.po da.po de.po el.po en.po es.po fi.po fr.po hr.po hu.po id.po it.po ja.po ko.po lt.po lv.po mk.po nb.po nl.po pl.po pt_BR.po ro.po ru.po sk.po sl.po sv.po tr.po uk.po vi.po zh_CN.po zh_TW.po POXFILES = be.pox bg.pox ca.pox cs.pox da.pox de.pox el.pox en.pox es.pox fi.pox fr.pox hr.pox hu.pox id.pox it.pox ja.pox ko.pox lt.pox lv.pox mk.pox nb.pox nl.pox pl.pox pt_BR.pox ro.pox ru.pox sk.pox sl.pox sv.pox tr.pox uk.pox vi.pox zh_CN.pox zh_TW.pox MOFILES = be.mo bg.mo ca.mo cs.mo da.mo de.mo el.mo en.mo es.mo fi.mo fr.mo hr.mo hu.mo id.mo it.mo ja.mo ko.mo lt.mo lv.mo mk.mo nb.mo nl.mo pl.mo pt_BR.mo ro.mo ru.mo sk.mo sl.mo sv.mo tr.mo uk.mo vi.mo zh_CN.mo zh_TW.mo INSTALL = /usr/bin/install -c INSTALLDIR = /usr/bin/install -c -m 755 -d INSTALLLIB = ${INSTALL} -m 644 XGETTEXT = /usr/bin/xgettext MSGMERGE = /usr/bin/msgmerge MSGFMT = /usr/bin/msgfmt .SUFFIXES: .SUFFIXES: .po .mo all: $(MOFILES) install: all @echo "Installing message catalogues in $(DESTDIR)$(LOCDIR)" @for catalog in $(MOFILES); do \ lang=`echo $${catalog} | sed -e 's/\.mo//'` ; \ msgdir="$(DESTDIR)$(LOCDIR)/$${lang}/LC_MESSAGES"; \ echo "Installing language: $${lang}" ; \ $(INSTALLDIR) "$${msgdir}"; \ $(INSTALLLIB) "$${catalog}" "$${msgdir}/$(PACKAGE).mo"; \ done clean: rm -f $(MOFILES) *~ # Merge existing translations and new code merge: $(POXFILES) # POTFILES.in lists files containing translatable strings POTFILES.in: $(SOURCES) echo $(SOURCES) | tr ' ' '\n' > $@ # $(PACKAGE).pot is a template file for translations $(PACKAGE).pot: POTFILES.in $(XGETTEXT) --default-domain=$(PACKAGE) --directory=../src \ --add-comments --keyword=_ --keyword=N_ --files-from=POTFILES.in && \ test ! -f $(PACKAGE).po || \ ( rm -f ./$(PACKAGE).pot && \ mv $(PACKAGE).po ./$(PACKAGE).pot ) # create new translations %.pox: %.po $(PACKAGE).pot $(MSGMERGE) --no-location --output-file $@ $< $(PACKAGE).pot # convert portable into machine objects .po.mo: $(MSGFMT) -o $@ $< report.html: *.po Makefile @(echo "

      National Language Support Status Report

      "; \ date; echo "

      "; \ for catalog in *.po; do \ echo -n "

    • $${catalog}"; \ sed -ne's|^.*"Last-Translator[^:]*:\(.*\)<.*$$| by\1
        |p' \ "$${catalog}"; \ echo -n '
      • '; \ LC_ALL=en $(MSGFMT) -o /dev/null "$${catalog}" 2>&1 |\ sed -e's|, |
      • |g' -e's|\.$$||'; \ echo '
      '; \ done ) >$@ @cat $@ #upload-report: report.html # scp report.html massel@icewm.sf.net:icesf/libphp/nls.html stats: for x in *.po ; do echo -n "$$x: " ; $(MSGFMT) --statistics $$x 2>&1 ; done update: merge for x in *.pox ; do cp -af $$x $${x%%pox}po ; done icewm-1.3.7/po/de.po0000664000076600007660000010522711463274241013205 0ustar develdevel# German messages for IceWM # Copyright (C) 2000-2001 Marko Macek # Mathias Hasselmann , 2000. # msgid "" msgstr "Project-Id-Version: icewm 1.2.26\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2001-10-02 00:28+0200\n" "Last-Translator: Eduard Bloch \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Energie" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "E" #, c-format msgid " - Charging" msgstr " - Aufladen" msgid "C" msgstr "" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "Auslastung: %3.2f %3.2f %3.2f, %d Prozesse" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Unbekanntes E-Mail-Protokoll: »%s«" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Ungültiger Mailbox-Pfad: »%s«" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Benutze Postfach: »%s«\n" msgid "Error checking mailbox." msgstr "Problem beim Prüfen des Postfaches" #, c-format msgid "%ld mail message." msgstr "%ld Nachricht." #, c-format msgid "%ld mail messages." msgstr "%ld Nachrichten." #, fuzzy, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "einterface %s:\n" " Momentane Transferrate (ein/aus):\t%d %s/%d %s\n" " Durchschnitt (ein/aus):\t%d %s/%d %s\n" " Gesamt (ein/aus):\t%d %s/%d %s\n" " Onlinezeit:\t%d:%02d:%02d%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Anschlußkennung:\t" msgid "Workspace: " msgstr "Arbeitsbereich: " msgid "Back" msgstr "Zurück" msgid "Alt+Left" msgstr "Alt+Links" msgid "Forward" msgstr "Weiter" msgid "Alt+Right" msgstr "Alt+Rechts" msgid "Previous" msgstr "Vorherige Seite" msgid "Next" msgstr "Nächste Seite" msgid "Contents" msgstr "Inhaltsverzeichnis" msgid "Index" msgstr "Index" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Schließen" msgid "Ctrl+Q" msgstr "Strg+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Syntax: %s DATEI\n" "\n" "Ein einfacher HTML-Browser zum Betrachten der angegebenen DATEI.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Ungültiger Pfad: %s\n" msgid "Invalid path: " msgstr "Ungültiger Pfad: " msgid "List View" msgstr "Listenansicht" msgid "Icon View" msgstr "Symbolansicht" msgid "Open" msgstr "Öffnen" msgid "Undo" msgstr "Rückgängig" msgid "Ctrl+Z" msgstr "Strg+Z" msgid "New" msgstr "Neu" msgid "Ctrl+N" msgstr "Strg+N" msgid "Restart" msgstr "Neustart" msgid "Ctrl+R" msgstr "Strg+R" #. !!! fix msgid "Same Game" msgstr "IceSAME" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "" #, fuzzy, c-format msgid "Invalid expression: `%s'" msgstr "Ungültiges Argument: »%s«." #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Benannte Symbole aus der Domäne »%s« (Wertebereich: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Ungültiger Arbeitsbereich: »%s«" #, c-format msgid "Workspace out of range: %d" msgstr "Arbeitsbereich außerhalb des Wertebereich: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Syntax: %s [OPTIONEN] AKTIONEN\n" "\n" "Optionen:\n" " -display DISPLAY Mit dem durch DISPLAY beschriebenen X-" "Server\n" " verbinden.\n" " Vorgabe: $DISPLAY oder :0.0 falls " "nicht gesetzt.\n" " -window FENSTER_ID Das zu manipulierenden Fenster. " "Besondere\n" " Symbole sind »root« für den Desktop und " "»focus«\n" " für das momentan fokussierte Fenster.\n" "\n" "Aktionen:\n" " setIconTitle TITEL Setze den Symboltitel.\n" " setWindowTitle TITEL Setze den Fenstertitel.\n" " setState MASKE ZUSTAND Setze den GNOME-Fensterzustand zu " "ZUSTAND.\n" " Nur die durch die MASKE gewählten Bit " "werden\n" " geändert. ZUSTAND und MASKE sind " "Ausdrücke der\n" "\t Domäne »GNOME-Fensterzustand«.\n" " toggleState ZUSTAND Wechsle die GNOME-Fensterzustandsbits " "die durch\n" " den Ausdruck ZUSTAND beschrieben " "werden.\n" " setHints BESCHREIBUNG Setze die GNOME-Fensterbeschreibung.\n" " setLayer EBENE Legt das Fenster auf eine andere " "Fensterebene.\n" " setWorkspace ARBEITSBEREICH Legt das Fenster auf einen anderen " "Arbeitsbereich.\n" " Bei Auswahl des Desktopfensters wird " "der momentane\n" " Arbeitsbereich gewechselt.\n" " listWorkspaces Zeigt eine Liste aller " "Arbeitsbereiche.\n" " setTrayOption TRAYOPTION Setzt die IceWM-Trayoption.\n" "\n" "Ausdrücke:\n" " Ausdrücke sind Folgen von Symbols der selben Domäne, die durch das " "Pluszeichen\n" " »+« oder einen senkrechen Balken »|« verbunden sind:\n" "\n" " AUSDRUCK ::= SYMBOL | AUSDRUCK ( `+' | `|' ) SYMBOL\n" "\n" msgid "GNOME window state" msgstr "GNOME-Fensterzustand" msgid "GNOME window hint" msgstr "GNOME-Fensterbeschreibung" msgid "GNOME window layer" msgstr "GNOME-Fensterebene" msgid "IceWM tray option" msgstr "IceWM-Trayoption" msgid "Usage error: " msgstr "Syntaxfehler: " #, c-format msgid "Invalid argument: `%s'." msgstr "Ungültiges Argument: »%s«." msgid "No actions specified." msgstr "Keine Aktion angegeben." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Das Display %s ist nicht erreichbar. Der X-Server muß laufen und \n" "die Umgebungsvariable $DISPLAY auf ihn verweisen." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Ungültiger Fensterbezeichner: »%s«" #, c-format msgid "workspace #%d: `%s'\n" msgstr "Arbeitsbereich #%d: »%s«\n" #, c-format msgid "Unknown action: `%s'" msgstr "Unbekannte Aktion: »%s«" #, c-format msgid "Socket error: %d" msgstr "Socketfehler: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Spiele Sample #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Kein derartiges Gerät: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Kann keine Verbindung zum ESound-Daemon herstellen: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Fehler <%d> beim Hochladen von »%s:%s«" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Sample <%d> wurde als »%s:%s« geladen" #, c-format msgid "Playing sample #%d" msgstr "Spiele Sample #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Kann keine Verbindung zum YIFF-Server herstellen: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Kann nicht zum Audiomodus »%s« wechseln." #, fuzzy, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Wechsel des Audiomodus entdeckt. Der anfängliche Audiomodus »%s«wird " "nicht weiter benutzt." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Wechsel des Audiomodus entdeckt. Automatisches Wechseln des " "Audiomodus wurde deaktiviert." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Übergehe vorherigen Audiomodus »%s«." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Syntax: %s [OPTION]...\n" "\n" "Spielt zu den von IceWM erzeugten GUI-Ereignissen passende " "Audiodateien.\n" "\n" "Optionen:\n" "\n" " -d, --display=DISPLAY Das von IceWM benutzte Display\n" " (Standard: $DISPLAY).\n" " -s, --sample-dir=VERZEICHNIS Ein Verzeichnis, das die zu " "spielenden\n" " Audiodateien enthält (z.B. ~/.icewm/" "sounds).\n" " -i, --interface=ZIEL Das zu benutzende Audiointerface,\n" " entweder OSS, YIFF oder ESD\n" " -D, --device=GERÄT Nur OSS: Der digitale " "Signalprozessor\n" " (Standard: /dev/dsp).\n" " -S, --server=ADRESSE:PORT ESD und YIFF: Serveradresse und -" "portnummer\n" " (Standard: localhost:16001 für ESD\n" " und localhost:9433 für YIFF).\n" " -m, --audio-mode[=MODUS] Nur YIFF: Audiomodus (leer lassen, " "um eine\n" " Übersicht zu erhalten).\n" " --audio-mode-auto Nur YIFF: Wechsel den Audiomodus bei " "Bedarf\n" " (Kann Probleme mit anderen Y-" "Clients\n" " verursachen, überschreibt --audio-" "mode).\n" " -v, --verbose Sei geschwätzig (Zeigt alle GUI-" "Ereignisse auf\n" " stdout).\n" " -V, --version Zeigt die Programmversion.\n" " -h, --help Zeigt diese Hilfe an.\n" "\n" "Rückgabewerte:\n" "\n" " 0 Erfolg.\n" " 1 Allgemeiner Fehler.\n" " 2 Ungültige Befehlszeile.\n" " 3 Fehler in einem Subsystem (Im Allgemeinen keine Verbindung " "zum Server).\n" "\n" msgid "Multiple sound interfaces given." msgstr "Es wurden mehrere verschiedene Audiointerfaces angegeben." #, c-format msgid "Support for the %s interface not compiled." msgstr "Die Unterstützung für das %s-Interface wurde nicht einkompiliert." #, c-format msgid "Unsupported interface: %s." msgstr "Nicht unterstütztes Audiointerface: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Signal %d erhalten: Beende das Programm..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Signal %d erhalten: Aktualisiere die Samples..." msgid "Hex View" msgstr "Hexadezimalansicht" msgid "Ctrl+H" msgstr "Strg+H" msgid "Expand Tabs" msgstr "Tabulator expandieren" msgid "Ctrl+T" msgstr "Strg+T" msgid "Wrap Lines" msgstr "Lange Zeilen umbrechen" msgid "Ctrl+W" msgstr "Strg+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: Unbekannte Option: »%s«\n" "Versuchen Sie »%s --help« für weitere Informationen.\n" #, c-format msgid "Loading image %s failed" msgstr "Laden der Bilddatei %s fehlgeschlagen" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Laden der Bilddatei »%s« fehlgeschlagen: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Syntax: icewmhint [klasse.instanz] option argument\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Speichermangel (len=%d)." msgid "Warning: " msgstr "Achtung: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "" #, fuzzy msgid "Default" msgstr "Entfernen" msgid "(C)" msgstr "©" msgid "Theme:" msgstr "Motiv:" msgid "Theme Description:" msgstr "Motivbeschreibung:" msgid "Theme Author:" msgstr "Autor des Motives:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "IceWM - Produktinformation" msgid "Unable to get current font path." msgstr "Der aktuelle Fontpfad kann nicht bestimmt werden" msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Unerwartetes Format der ICEWM_FONT_PATH-Fenstereigenschaft" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Der Verlauf »%s« wurde mehrfach referenziert." #, c-format msgid "Unknown gradient name: %s" msgstr "Unbekannter Verlaufsname: »%s«" # OS/2 is dead, but... ;-) msgid "_Logout" msgstr "_Abmelden" msgid "_Cancel logout" msgstr "Abmeldevorgang _abbrechen" msgid "Lock _Workstation" msgstr "Arbeitsplatz _sperren" msgid "Re_boot" msgstr "_Warmstart" msgid "Shut_down" msgstr "_Herunterfahren" msgid "Restart _Icewm" msgstr "_IceWM neu starten" msgid "Restart _Xterm" msgstr "_Xterm neu starten" msgid "_Menu" msgstr "_Menü" msgid "_Above Dock" msgstr "_Über dem Dock" msgid "_Dock" msgstr "_Dock" msgid "_OnTop" msgstr "_Schwebend" msgid "_Normal" msgstr "_Normal" msgid "_Below" msgstr "_Tiefer" msgid "D_esktop" msgstr "D_esktop" msgid "_Restore" msgstr "_Wiederherstellen" msgid "_Move" msgstr "_Verschieben" msgid "_Size" msgstr "_Größe ändern" msgid "Mi_nimize" msgstr "Mi_nimieren" msgid "Ma_ximize" msgstr "Ma_ximieren" msgid "_Fullscreen" msgstr "ganzer Bi_ldschirm" msgid "_Hide" msgstr "Vers_tecken" msgid "Roll_up" msgstr "Ein_rollen" msgid "R_aise" msgstr "An_heben" msgid "_Lower" msgstr "Sen_ken" msgid "La_yer" msgstr "_Ebene" msgid "Move _To" msgstr "Verschieben na_ch" msgid "Occupy _All" msgstr "Auf _allen Arbeitsbereichen" msgid "Limit _Workarea" msgstr "_Beschränke Arbeitsfläche" msgid "Tray _icon" msgstr "Tray_icon" msgid "_Close" msgstr "_Schließen" msgid "_Kill Client" msgstr "Anwendung ab_würgen" msgid "_Window list" msgstr "_Fensterliste" # msgid "Another window manager already running, exiting..." msgstr "Ein anderer Fenstermanager ist bereits aktiv, breche ab..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Der Neustart ist fehlgeschlagen: %s\n" "Verweist die Variable »PATH« auf das Programm »%s«?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "" msgid "Confirm Logout" msgstr "Abmelden bestätigen" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Beim Abmelden werden alle aktiven Anwendungen geschlossen.\n" "Fortfahren?" # msgid "Bad Look name" msgstr "Ungültiger Stilname (look-Option)" #, fuzzy msgid "Loc_k Workstation" msgstr "Arbeitsplatz _sperren" msgid "_Logout..." msgstr "_Abmelden..." msgid "_Cancel" msgstr "Ab_brechen" msgid "_Restart icewm" msgstr "IceWM _neu starten" msgid "_About" msgstr "Produkt_information" msgid "Maximize" msgstr "Maximieren" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Minimieren" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Verstecken" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Einrollen" # #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Anheben/Senken" # msgid "Kill Client: " msgstr "Abwürgen von: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "ACHTUNG! Alle nicht gesicherten Änderungen werden\n" "beim Abwürgen der Anwendung verloren gehen!\n" "Wünschen Sie trotzdem fortzufahren?" msgid "Restore" msgstr "Wiederherstellen" msgid "Rolldown" msgstr "Ausrollen" #, c-format msgid "Error in window option: %s" msgstr "Fehlerhafte Fensteroption: %s" #, c-format msgid "Unknown window option: %s" msgstr "Unbekannte Fensteroption: %s" msgid "Syntax error in window options" msgstr "Syntaxfehler in Fensteroptionen" msgid "Out of memory for window options" msgstr "Kein freier Speicher für Fensteroptionen verfügbar" msgid "Missing command argument" msgstr "Fehlendes Argument für Kommandozeilenparameter" #, c-format msgid "Bad argument %d" msgstr "Ungültiges Argument: %d" #, c-format msgid "Error at prog %s" msgstr "Fehler bei prog-Eintrag %s" #, c-format msgid "Unexepected keyword: %s" msgstr "" #, c-format msgid "Error at key %s" msgstr "Fehler bei key-Eintrag %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programme" msgid "_Run..." msgstr "Aus_führen..." msgid "_Windows" msgstr "_Fenster" msgid "_Help" msgstr "_Hilfe" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Motive" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Sitzungsmanager: Unbekannte Zeile %s" msgid "Task Bar" msgstr "Taskleiste" msgid "Tile _Vertically" msgstr "_Vertikal anordnen" msgid "T_ile Horizontally" msgstr "_Horizontal anordnen" msgid "Ca_scade" msgstr "_Überlappend anordnen" msgid "_Arrange" msgstr "_Optimal anordnen" msgid "_Minimize All" msgstr "Alle _minimieren" msgid "_Hide All" msgstr "Alle _verstecken" msgid "_Undo" msgstr "_Rückgängig" msgid "Arrange _Icons" msgstr "_Symbole anordnen" msgid "_Refresh" msgstr "_Aktualisieren" msgid "_License" msgstr "_Lizenz" msgid "Favorite applications" msgstr "Häufig benutzte Anwendungen" msgid "Window list menu" msgstr "Fensterliste" #, fuzzy msgid "Show Desktop" msgstr "D_esktop" #, fuzzy msgid "All Workspaces" msgstr "Arbeitsbereich: " #, fuzzy msgid "Del" msgstr "Entfernen" msgid "_Terminate Process" msgstr "Prozeß be_enden" msgid "Kill _Process" msgstr "Prozeß ab_brechen" msgid "_Show" msgstr "_Anzeigen" msgid "_Minimize" msgstr "Mi_nimieren" msgid "Window list" msgstr "Fensterliste" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Arbeitsbereich %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Nachrichtenschleife: select fehlgeschlagen (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Unbekannte Fensteroption: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Unbekanntes Argument: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Die %s-Option benötigt ein Argument." #, c-format msgid "Unknown key name %s in %s" msgstr "Unbekanntes Tastensymbol %s in %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Ungültiges argument: %s für %s" #, c-format msgid "Bad option: %s" msgstr "Ungültige Option: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Laden der Bilddatei »%s« fehlgeschlagen" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Ungültiges Cursorpixmap: »%s« enthält zu viele unterschiedliche Farben" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "BUG? Imlib war in der Lage »%s« zu lesen" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "BUG? Fehlerhafter XPM-Header (Imlib konnte die Datei »%s« aber " "interpretieren)" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "BUG? Unerwartetes Ende der XPM-Datei (Imlib konnte die Datei »%s« " "aber interpretieren)" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "Unerwartetes Zeichen (Imlib konnte die Datei »%s« aber interpretieren)" #, c-format msgid "Could not load font \"%s\"." msgstr "Die Schriftart »%s« konnte nicht geladen werden." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Rückgriff auf die Schriftart »%s« ist fehlgeschlagen." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Schriftfamilie »%s« konnte nicht geladen werden." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "Fehlende Zeichensätze in der Schriftfamilie »%s«:" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Kein Speicher frei zum Laden der Pixmap »%s«" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Laden der Bilddatei »%s« fehlgeschlagen" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: Übernahme der X-Pixmap ist gescheitert" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Abbildung des Imlib-Bildes auf eine X-Pixmap ist gescheitert" msgid "Cu_t" msgstr "Aus_schneiden" msgid "Ctrl+X" msgstr "Strg+X" msgid "_Copy" msgstr "_Kopieren" msgid "Ctrl+C" msgstr "Strg+C" msgid "_Paste" msgstr "_Einfügen" msgid "Ctrl+V" msgstr "Strg+V" msgid "Paste _Selection" msgstr "Aus_wahl einfügen" msgid "Select _All" msgstr "_Alles auswählen" msgid "Ctrl+A" msgstr "Strg+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "" msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv verfügt nicht über einen (zufriedenstellenden) %s zu %s-" "Konvertierer." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Ungültige Multibyte-Zeichenkette »%s«: %s" msgid "OK" msgstr "OK" msgid "Cancel" msgstr "Abbrechen" #, c-format msgid "Out of memory for pixel map %s" msgstr "Kein freier Speicher für die Pixmap %s verfügbar" #, c-format msgid "Could not find pixel map %s" msgstr "Pixmap %s nicht gefunden" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Kein freier Speicher für den RGB-Pixelpuffer »%s«" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "RGB-Pixelpuffer »%s« nicht gefunden" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Benutze den (langsamen) Ausweichalgorithmus zum Konvertieren von " "Pixeln (Farbtiefe: %d, Masken (Rot/Grün/Blau): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d-Bit-Visuals werden (momentan) nicht unterstützt" msgid "$USER or $LOGNAME not set?" msgstr "Sind die Umgebungsvariablen $USER bzw. $LOGNAME gesetzt?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "»%s« entspricht nicht der Common Internet Scheme Syntax" #, c-format msgid "\"%s\" contains no scheme description" msgstr "»%s« enthält keine Schemabeschreibung" #, fuzzy #~ msgid "program label expected" #~ msgstr "Trennzeichen erwartet" #, fuzzy #~ msgid "menu caption expected" #~ msgstr "Trennzeichen erwartet" #, fuzzy #~ msgid "opening curly expected" #~ msgstr "Schlüsselwort erwartet" #, fuzzy #~ msgid "action name expected" #~ msgstr "Trennzeichen erwartet" #, fuzzy #~ msgid "unknown action" #~ msgstr "Unbekannte Aktion: »%s«" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Paar von hexadezimalen Ziffern erwartet" #~ msgid "Unexpected identifier" #~ msgstr "Unerwartetes Schlüsselwort" #~ msgid "Identifier expected" #~ msgstr "Schlüsselwort erwartet" #~ msgid "Separator expected" #~ msgstr "Trennzeichen erwartet" #, fuzzy #~ msgid "Invalid token" #~ msgstr "Ungültiger Pfad: " #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Keine hexadezimale Ziffer: %c%c (in »%s«)" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - Unbekanntes Format (%d)" #~ msgid "M" #~ msgstr "L" #~ msgid "cpu: %d %d %d %d" #~ msgstr "CPU: %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat meldet zu viele CPUs: Es sollten %d sein" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "# preferences(%s) - generated by genpref\n" #~ "\n" #~ msgstr "# Einstellungen(%s) - erzeugt von genpref\n" #~ "\n" #~ msgid "# NOTE: All settings are commented out by default, be sure " #~ "to\n" #~ "# uncomment them if you change them!\n" #~ "\n" #~ msgstr "# HINWEIS: Alle Einstellungen sind normalerweise " #~ "auskommentiert.\n" #~ "# Achten Sie darauf das Kommentarzeichen zu entfernen,\n" #~ "# wenn Sie sie ändern wollen!\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree fehlgeschlagen für Fenster 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Mit DEBUG-Flag kompiliert. Debugging-Nachrichten werden " #~ "angezeigt." #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "Syntax: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Tauscht den Desktop-Hintergrund bei Arbeitsbereichwechseln.\n" #~ "Die erste Datei dient als Standard-Pixmap.\n" #~ "\n" #~ "-s, --semitransparency Aktiviere die Unterstützung for " #~ "semitransparente Terminals\n" #~ msgid "_No icon" #~ msgstr "_Kein icon" #~ msgid "_Minimized" #~ msgstr "_Minimiert" #~ msgid "_Exclusive" #~ msgstr "_Exklusiv" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X-Protokollfehler in %s(0x%lX): %s" #~ msgid "Window %p has no XA_ICEWM_PID property. Export the " #~ "LD_PRELOAD variable to preload the preice library." #~ msgstr "Das Fenster %p weißt keinen XA_ICEWM_PID-Wert auf. Setzen " #~ "Sie die Variable »LD_PRELOAD«, um die preice-Programmbibliothek zu " #~ "aktivieren." #~ msgid "Obsolete option: %s" #~ msgstr "Veraltete Option: %s" #~ msgid "Gnome" #~ msgstr "Gnome-Systemmenü" #~ msgid "Gnome User Apps" #~ msgstr "Gnome-Benutzermenü" #~ msgid "KDE" #~ msgstr "KDE" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "ZU VIELE ICE-VERBINDUNGEN -- nicht unterstützt" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Sitzungsmanager: IceAddConnectionWatch fehlgeschlagen." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Sitzungsmanager: Fehler bei Initialisierung: %s" #~ msgid "Pipe creation failed (errno=%d)." #~ msgstr "Erzeugen einer Pipe ist fehlgeschlagen (errno=%d)." #~ msgid "Resource allocation for rotated string \"%s\" (%dx%d px) " #~ "failed" #~ msgstr "Keine Ressourcen für die rotierte Zeichenkette »%s« (%dx%d " #~ "px) verfügbar" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Kopieren vom Fenster 0x%x in Pixelpuffer " #~ "fehlgeschlagen" #~ msgid "_Ignore" #~ msgstr "_Übergehen" #~ msgid "Out of memory: Unable to allocated %d bytes." #~ msgstr "Speichermangel: Anforderung von %d Byte ist fehlgeschlagen." #~ msgid "Invalid fonts in fontset definition \"%s\":" #~ msgstr "Ungültige Schriften in der Schriftfamiliendefinition »%s«:" icewm-1.3.7/po/vi.po0000664000076600007660000011314011463274241013224 0ustar develdevel# translation of icewm to Vietnamese # Copyright (C) 2000-2001 Marko Macek # first translator Phan Vinh Thinh , 2005. # # msgid "" msgstr "Project-Id-Version: icewm 1.2.21pre1 \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2005-06-18 11:46+0400\n" "Last-Translator: Phạm Thành Long \n" "Language-Team: Vietnamese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Nguồn Ä‘iện" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "" #, c-format msgid " - Charging" msgstr " - Äang nạp" msgid "C" msgstr "" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "Tải CPU: " #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Giao thức há»™p thư không hợp lệ: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "ÄÆ°á»ng dẫn há»™p thư không hợp lệ: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Sá»­ dụng há»™p thư \"%s\"\n" msgid "Error checking mailbox." msgstr "Lá»—i kiểm tra há»™p thư." #, c-format msgid "%ld mail message." msgstr "%ld thư." #, c-format msgid "%ld mail messages." msgstr "%ld thư." #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Giao diện %s:\n" " Tốc độ hiện thá»i (vào/ra):\t%li %s/%li %s\n" " TÄ‘ trung bình hiện thá»i (vào/ra):\t%lli %s/%lli %s\n" " Trung bình tổng (vào/ra):\t%li %s/%li %s\n" " Äã truyá»n tải (vào/ra):\t%lli %s/%lli %s\n" " Thá»i gian kết nối:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Id ngưá»i gá»i:\t" msgid "Workspace: " msgstr "Không gian: " msgid "Back" msgstr "Quay lại" msgid "Alt+Left" msgstr "Alt+Left" msgid "Forward" msgstr "Tiếp tục" msgid "Alt+Right" msgstr "Alt+Right" msgid "Previous" msgstr "Trước" msgid "Next" msgstr "Tiếp" msgid "Contents" msgstr "Ná»™i dung" msgid "Index" msgstr "Chỉ mục" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Äóng" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Sá»­ dụng: %s TẬP-TIN\n" "\n" "Má»™t trình duyệt HTML rất đơn giản, hiển thị ná»™i dung tài liệu có tên " "TẬP-TIN.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "ÄÆ°á»ng dẫn không đúng: %s\n" msgid "Invalid path: " msgstr "ÄÆ°á»ng dẫn không đúng: " msgid "List View" msgstr "Xem theo danh sách" msgid "Icon View" msgstr "Xem theo biểu tượng" msgid "Open" msgstr "Mở" msgid "Undo" msgstr "Hoàn tác" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Má»›i" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Khởi động lại" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "Hành động `%s' yêu cầu ít nhất %d tham số." #, c-format msgid "Invalid expression: `%s'" msgstr "Biểu thức không hợp lệ: `%s'." #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Các kí tá»± tên cá»§a vùng `%s' (giá»›i hạn số: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Tên không gian không há»™p lệ: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "Không gian nằm ngoài giá»›i hạn: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Sá»­ dụng: %s [TUỲ CHỌN] HÀNH-ÄỘNG\n" "\n" "Tuỳ chá»n:\n" " -display DISPLAY Kết nối tá»›i máy chá»§ X chỉ ra bởi biến " "DISPLAY.\n" " Mặc định: $DISPLAY hoặc :0.0 khi biến " "không đặt.\n" " -window WINDOW_ID Chỉ ra cá»­a sổ muốn Ä‘iá»u khiển. Tên đặc " "biệt\n" " là `root' cho cá»­a sổ root và\n" "\t\t\t `focus' cho cá»­a sổ tiêu Ä‘iểm hiện thá»i.\n" " -class WM_CLASS Loại hệ thống quản lí cá»­a sổ để Ä‘iá»u\n" " \t \t \t khiển. Nếu WM_CLASS có chứa má»™t chu kì " "(period), thì\n" " \t \t chỉ những cá»­a sổ có cùng thuá»™c tính " "WM_CLASS má»›i\n" "\t\t\t tương ứng. Nếu không có chu kì, thì cá»­a sổ cá»§a\n" "\t\t\t cùng má»™t loại và cá»­a sổ có cùng má»™t `-name'\n" "\t\t\t được chá»n.\n" "\n" "Hành động:\n" " setIconTitle TIÊUÄỀ Äặt tên biểu tượng.\n" " setWindowTitle TIÊUÄỀ Äặt tiêu đỠcá»­a sổ.\n" " setGeometry kích-thước Äặt kích thước hình há»c cá»§a cá»­a sổ\n" " setState MASK STATE Äặt trạng thái cá»§a cá»­a sổ GNOME thành " "STATE.\n" " \t\t\t Chỉ ảnh hưởng đến những bit được chá»n bởi MASK.\n" " STATE và MASK Ä‘á»u là biểu thức cá»§a " "miá»n\n" " `trạng thái cá»­a sổ GNOME'.\n" " toggleState STATE Bật tắt các bit trạng thái cá»­a sổ " "GNOME chỉ ra bởi\n" " biểu thức STATE.\n" " setHints GỢI-à Äặt gợi ý (hint) cá»­a sổ GNOME thành " "HINTS.\n" " setLayer LỚP Di chuyển cá»­a sổ tá»›i lá»›p cá»­a sổ GNOME " "khác\n" " setWorkspace KHÔNGGIAN Di chuyển cá»­a sổ tá»›i không gian khác. " "Chá»n\n" " \t\t\t cá»­a sổ root để thay đổi không gian hiện thá»i.\n" " listWorkspaces \t Liệt kê tên cá»§a tất cả không gian.\n" " setTrayOption TRAYOPTION Äặt tuỳ chá»n khay IceWM.\n" "\n" "Biểu thức:\n" " Biểu thức gồm các kí tá»± cá»§a má»™t miá»n được nối bằng `+' hay `|':\n" "\n" " BIỂUTHỨC ::= KÃ-Tá»° | BIỂUTHỨC ( `+' | `|' ) KÃ-Tá»°\n" "\n" msgid "GNOME window state" msgstr "Trạng thái cá»­a sổ GNOME" msgid "GNOME window hint" msgstr "Gợi ý cá»­a sổ GNOME" msgid "GNOME window layer" msgstr "Lá»›p cá»­a sổ GNOME" msgid "IceWM tray option" msgstr "Tuỳ chá»n khay IceWM" msgid "Usage error: " msgstr "Lá»—i sá»­ dụng: " #, c-format msgid "Invalid argument: `%s'." msgstr "Tham số không hợp lệ: `%s'." msgid "No actions specified." msgstr "Không có hành động nào được chỉ ra." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Không mở được màn hình: %s. Cần chạy X và đặt biến $DISPLAY." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Tên cá»­a sổ không hợp lệ: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "không gian #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "Hành động không xác định: `%s'" #, c-format msgid "Socket error: %d" msgstr "Lá»—i socket: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Äang chạy mẫu #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Không có thiết bị như vậy: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Không kết nối được tá»›i daemon ESound: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Lá»—i <%d> khi nạp lên `%s:%s'" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Äã nạp mẫu <%d> thành `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "Äang chạy mẫu #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Không kết nối được tá»›i máy chá»§ YIFF: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Không thay đổi được chế độ âm thanh `%s'." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Tìm thấy nút chuyển chế độ âm thanh, chế độ âm thanh ban đầu `%s' " "không còn hiệu lá»±c nữa." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Tìm thấy nút chuyển chế độ âm thanh, tắt việc tá»± động chuyển chế độ " "âm thanh." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Chèn lên chế độ âm thanh trước đây `%s'." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Sá»­ dụng: %s [TUỲ CHỌN]...\n" "\n" "Chạy các tập tin âm thanh khi có sá»± kiện GUI cá»§a IceWM.\n" "\n" "Tuỳ chá»n:\n" "\n" " -d, --display=MÀN-HÃŒNH Màn hình sá»­ dụng bởi IceWM (Mặc " "định: $DISPLAY).\n" " -s, --sample-dir=THƯ-MỤC Thư mục chứa\n" " các tập tin âm thanh (vd ~/.icewm/" "sounds).\n" " -i, --interface=ÄÃCH Giao thức âm thanh đầu ra,\n" " má»™t trong số OSS, YIFF, ESD\n" " -D, --device=THIẾT-BỊ (chỉ đối vá»›i OSS) bá»™ xá»­ lí tín \n" " hiệu số (mặc định /dev/dsp).\n" " -S, --server=ÄỊA-CHỈ:Cá»”NG\t(ESD và YIFF) địa chỉ máy chá»§ và \n" " số cá»§a cổng (mặc định " "localhost:16001 cho ESD\n" "\t\t\t\tvà localhost:9433 cho YIFF).\n" " -m, --audio-mode[=CHẾ-ÄỘ] (chỉ đối vá»›i YIFF) chế độ Âm thanh " "(để\n" " trống để xem danh sách).\n" " --audio-mode-auto \t(chỉ đối vá»›i YIFF) thay đổi chế độ Âm " "thanh \"cấp tốc\" \n" " để tìm Âm thanh tốt nhất (có thể " "tạo\n" " vấn đỠvá»›i máy con Y khác, ghi đè\n" " --audio-mode).\n" "\n" " -v, --verbose Dài dòng (in má»i sá»± kiện ra\n" " stdout).\n" " -V, --version Hiển thị thông tin phiên bản và " "thoát.\n" " -h, --help Hiển thị trợ giúp (này) và thoát.\n" "\n" "Giá trị trả lại:\n" "\n" " 0 Thành công.\n" " 1 Lá»—i chung.\n" " 2 Lá»—i dòng lệnh.\n" " 3 Lá»—i hệ thống con (vd không kết nối được tá»›i máy chá»§).\n" "\n" msgid "Multiple sound interfaces given." msgstr "ÄÆ°a ra nhiá»u giao diện âm thanh." #, c-format msgid "Support for the %s interface not compiled." msgstr "Việc há»— trợ cho giao diện %s không được biên dịch." #, c-format msgid "Unsupported interface: %s." msgstr "Không há»— trợ giao diện: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Nhận đưá»c tín hiệu %d: Äang dừng..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Nhận được tín hiệu %d: Äang nạp lại tập tin mẫu..." msgid "Hex View" msgstr "Xem mã 16 Hex" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Mở rá»™ng các thẻ" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Khuôn dòng" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "Sá»­ dụng: icewmbg [ -r | -q ]\n" " -r Khởi động lại icewmbg\n" " -q Thoát icewmbg\n" "Nạp ná»n màn hình mặc định dá»±a theo tập tin cấu hình\n" " DesktopBackgroundCenter - Hiển thị ná»n ở giữa màn hình, không nhân " "lên\n" " SupportSemitransparency - Há»— trợ các terminal ná»­a trong suốt\n" " DesktopBackgroundColor - Màu ná»n màn hình\n" " DesktopBackgroundImage - Ảnh ná»n màn hình\n" " DesktopTransparencyColor - Màu cho các cá»­a sổ ná»­a trong suốt\n" " DesktopTransparencyImage - Ảnh cho các cá»­a sổ ná»­a trong suốt\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: tuỳ chá»n không xác định`%s'\n" "Thá»­ `%s --help' để biết thêm thông tin.\n" #, c-format msgid "Loading image %s failed" msgstr "Lá»—i khi nạp ảnh %s" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Lá»—i khi nạp pixmap \"%s\": %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Sá»­ dụng: icewmhint [class.instance] tuỳ-chá»n tham-số\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Tràn bá»™ nhá»› (len=%d)." msgid "Warning: " msgstr "Cảnh báo: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Không rõ hướng cá»§a yêu cầu di chuyển/thay đổi kích thước: %d" msgid "Default" msgstr "Mặc định" msgid "(C)" msgstr "©" msgid "Theme:" msgstr "Sắc thái:" msgid "Theme Description:" msgstr "Mô tả vá» sắc thái:" msgid "Theme Author:" msgstr "Tác giả cá»§a sắc thái:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm - Thông tin" msgid "Unable to get current font path." msgstr "Không thể lấy đưá»ng dẫn phông chữ hiện thá»i" msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Äịnh dạng không mong muốn cá»§a thuá»™c tính ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Äa tuỳ chá»n cho dải màu \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "Không rõ tên dải màu: %s" msgid "_Logout" msgstr "_Thoát" msgid "_Cancel logout" msgstr "_Dừng thoát" msgid "Lock _Workstation" msgstr "_Khóa Màn hình" msgid "Re_boot" msgstr "Khởi động _lại máy" msgid "Shut_down" msgstr "Tắt _máy" msgid "Restart _Icewm" msgstr "Khởi động lại _Icewm" msgid "Restart _Xterm" msgstr "Chạy lại _Xterm" msgid "_Menu" msgstr "_Trình đơn" msgid "_Above Dock" msgstr "Trê_n Dock" msgid "_Dock" msgstr "Doc_k" msgid "_OnTop" msgstr "T_rên đỉnh" msgid "_Normal" msgstr "Thô_ng thưá»ng" msgid "_Below" msgstr "_Dưới" msgid "D_esktop" msgstr "_Màn hình" msgid "_Restore" msgstr "_Phục hồi" msgid "_Move" msgstr "_Di chuyển" msgid "_Size" msgstr "_Kích thước" msgid "Mi_nimize" msgstr "_Thu nhá»" msgid "Ma_ximize" msgstr "Phón_g to" msgid "_Fullscreen" msgstr "Äầy _màn hình" msgid "_Hide" msgstr "Ẩ_n" msgid "Roll_up" msgstr "Ké_o lên" msgid "R_aise" msgstr "T_rên tất cả" msgid "_Lower" msgstr "T_hấp hÆ¡n" msgid "La_yer" msgstr "_Lá»›p" msgid "Move _To" msgstr "Chuyển tá»›_i" msgid "Occupy _All" msgstr "_Chiếm má»i không gian" msgid "Limit _Workarea" msgstr "Giá»›i hạn _không gian" msgid "Tray _icon" msgstr "_Biểu tượng khay" msgid "_Close" msgstr "Äón_g" msgid "_Kill Client" msgstr "_Diệt chương trình con" msgid "_Window list" msgstr "Danh sách cá»­a _sổ" msgid "Another window manager already running, exiting..." msgstr "Có trình quản lí cá»­a sổ khác Ä‘ang chạy, thoát..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Không khởi động lại được: %s\n" "$PATH có chỉ tá»›i %s?" #, fuzzy, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "Sá»­ dụng: %s [TUỲ-CHỌN]\n" "Chạy trình quản lí cá»­a sổ IceWM.\n" "\n" "Tùy chá»n:\n" " --display=TÊN TÊN cá»§a máy chá»§ X muốn sá»­ dụng.\n" "%s --sync Äồng bá»™ hoá các câu lệnh X11.\n" "\n" " -c, --config=TẬPTIN Nạp cấu hình từ TẬPTIN.\n" " -t, --theme=TẬPTIN Nạp sắc thái từ TẬPTIN.\n" " -n, --no-configure Không dùng tập tin cấu hình.\n" "\n" " -v, --version In ra thông tin phiên bản rồi thoát.\n" " -h, --help In ra hướng dẫn sá»­ dụng này rồi thoát.\n" "%s --restart Äừng sá»­ dụng. Äây là má»™t tuỳ chá»n ná»™i " "bá»™.\n" "\n" "Biến môi trưá»ng:\n" " ICEWM_PRIVCFG=ÄDẪN Thư mục sá»­ dụng cho các tập tin cấu hình cá " "nhân,\n" " \"$HOME/.icewm/\" theo mặc định.\n" " DISPLAY=TÊN Tên cá»§a máy chá»§ sá»­ dụng, theo mặc định phụ " "thuá»™c vào Xlib.\n" " MAIL=URL Vị trí cá»§a há»™p thư ngưá»i dùng. Nếu không đưa " "ra, thì\n" " sẽ dùng sÆ¡ đồ \"tập tin\" cá»§a hệ thống.\n" "\n" "Äể báo cáo lá»—i, yêu cầu há»— trợ, nhận xét,... hãy lên http://www." "icewm.org/\n" msgid "Confirm Logout" msgstr "Xác nhận việc thoát" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Nếu thoát thì tất cả các ứng dụng Ä‘ang chạy sẽ đóng.\n" "Vẫn thoát?" msgid "Bad Look name" msgstr "Tên tìm kiếm tồi" #, fuzzy msgid "Loc_k Workstation" msgstr "_Khóa Màn hình" msgid "_Logout..." msgstr "_Thoát..." msgid "_Cancel" msgstr "Äón_g há»™p thoại" msgid "_Restart icewm" msgstr "_Chạy lại icewm" msgid "_About" msgstr "_Giá»›i thiệu vá» icewm" msgid "Maximize" msgstr "Phóng đại" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Thu nhá»" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Ẩn" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Kéo lên" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Lên trên/Xuống dưới cá»­a sổ khác" msgid "Kill Client: " msgstr "Diệt chương trình con: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "CẢNH BÃO! Tất cả những thay đổi chưa ghi nhá»› sẽ bị mất khi\n" "chương trình con này bị diệt. Bạn có muốn tiếp tục diệt?" msgid "Restore" msgstr "Phục hồi" msgid "Rolldown" msgstr "Thả xuống" #, c-format msgid "Error in window option: %s" msgstr "Lá»—i trong tuỳ chá»n cá»­a sổ: %s" #, c-format msgid "Unknown window option: %s" msgstr "Không rõ tuỳ chá»n cá»­a sổ: %s" msgid "Syntax error in window options" msgstr "Lá»—i cú pháp trong tuỳ chá»n cá»­a sổ" msgid "Out of memory for window options" msgstr "Không đủ bá»™ nhá»› cho tuỳ chá»n cá»­a sổ" msgid "Missing command argument" msgstr "Thiếu tham số lệnh" #, c-format msgid "Bad argument %d" msgstr "Tham số tồi %d" #, c-format msgid "Error at prog %s" msgstr "Lá»—i tại chương trình %s" #, c-format msgid "Unexepected keyword: %s" msgstr "Từ khoá không mong đợi: %s" #, c-format msgid "Error at key %s" msgstr "Lá»—i tại khoá %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Chương trình" msgid "_Run..." msgstr "_Chạy..." msgid "_Windows" msgstr "_Cá»­a sổ" msgid "_Help" msgstr "_Trợ giúp" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Sắc thái" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Trình quản lí: Dòng không rõ %s" msgid "Task Bar" msgstr "Thanh tác vụ" msgid "Tile _Vertically" msgstr "_Lát Thẳng đứng" msgid "T_ile Horizontally" msgstr "Lát _Nằm ngang" msgid "Ca_scade" msgstr "Xếp the_o tầng" msgid "_Arrange" msgstr "_Sắp xếp" msgid "_Minimize All" msgstr "_Thu nhá» tất cả" msgid "_Hide All" msgstr "Ẩn tất _cả" msgid "_Undo" msgstr "_Hoàn tác" msgid "Arrange _Icons" msgstr "Sắp xếp _biểu tượng" msgid "_Refresh" msgstr "Làm má»›i _màn hình" msgid "_License" msgstr "_Giấy phép" msgid "Favorite applications" msgstr "Ứng dụng ưa thích" msgid "Window list menu" msgstr "Trình đơn danh sách cá»­a sổ" msgid "Show Desktop" msgstr "Thu nhá» tất cả" msgid "All Workspaces" msgstr "Tất cả không gian" msgid "Del" msgstr "Xoá" msgid "_Terminate Process" msgstr "Dừng _tiến trình" msgid "Kill _Process" msgstr "Diệt tiến trì_nh" msgid "_Show" msgstr "_Hiện" msgid "_Minimize" msgstr "_Thu nhá»" msgid "Window list" msgstr "Danh sách cá»­a sổ" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Không gian %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Thông báo quay vòng: lá»—i lá»±a chá»n (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Tuỳ chá»n không xác định: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Tham số không xác định: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Yêu cầu tham số cho chuyển %s" #, c-format msgid "Unknown key name %s in %s" msgstr "Không rõ tên khoá %s trong %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Tham số tồi: %s cho %s" #, c-format msgid "Bad option: %s" msgstr "Tùy chá»n tồi: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Lá»—i khi nạp pixmap \"%s\"" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Pixmap cho trá» chuá»™t không hợp lệ: \"%s\" chứa quá nhiá»u màu" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "Lá»–I? Imlib Ä‘á»c được \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "Lá»–I? Phần đầu XPM rất lạ nhưng Imlib vẫn phân tích được \"%s\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "Lá»–I? Kết thúc cá»§a XPM lạ nhưng Imlib vẫn phân tích được \"%s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "Lá»–I? Kí tá»± không mong đợi nhưng Imlib vẫn phân tích được \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "Không thể nạp phông chữ \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Lá»—i khi nạp phông chữ dá»± phòng \"%s\"" #, c-format msgid "Could not load fontset \"%s\"." msgstr "Không thể nạp bá»™ phông chữ \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "Thiếu bá»™ mã cho bá»™ phông chữ \"%s\":" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Tràn bá»™ nhá»› cho pixmap \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Lá»—i nạp ảnh \"%s\"" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: Lá»—i lấy pixmap cá»§a X" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Lá»—i ánh xạ ảnh Imlib tá»›i pixmap cá»§a X" msgid "Cu_t" msgstr "_Cắt" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Sao chép" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_Dán" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Dán _Phần chá»n" msgid "Select _All" msgstr "Chá»n _tất cả" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Thư viện C không há»— trợ bản địa (locale) này. Quay lại dùng bản địa " "'C'." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "Không xác định thành công bảng mã cá»§a bản địa hiện thá»i. Coi như ISO-" "8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv không cung cấp (đủ) %s cho %s bá»™ chuyển đổi." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Lá»—i chuá»—i nhiá»u byte \"%s\": %s" msgid "OK" msgstr "Có" msgid "Cancel" msgstr "Không!" #, c-format msgid "Out of memory for pixel map %s" msgstr "Không đủ bá»™ nhá»› cho bản đồ pixel %s" #, c-format msgid "Could not find pixel map %s" msgstr "Không tìm thấy bản đồ pixel %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Không đủ bá»™ nhá»› cho bá»™ đệm pixel RGB %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Không tìm thấy bá»™ đệm pixel RGB %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Sá»­ dụng cÆ¡ chế dá»± phòng để chuyển đổi pixel (độ sâu: %d; mặt nạ (red/" "green/blue): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d bit visual chưa được há»— trợ" msgid "$USER or $LOGNAME not set?" msgstr "$USER hoặc $LOGNAME không được đặt?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" không mô tả má»™t sÆ¡ đồ internet chung" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" không chứa mô tả sÆ¡ đồ" #~ msgid " processes." #~ msgstr " tiến trình." #~ msgid "program label expected" #~ msgstr "mong đợi nhãn chương trình" #~ msgid "icon name expected" #~ msgstr "mong đợi tên biểu tượng" #~ msgid "window management class expected" #~ msgstr "mong đợi lá»›p cá»§a hệ thống quản lí cá»­a sổ" #~ msgid "menu caption expected" #~ msgstr "mong đợi tiêu đỠtrình đơn" #~ msgid "opening curly expected" #~ msgstr "mong đợi sá»± mở xoắn" #~ msgid "action name expected" #~ msgstr "mong đợi tên hành động" #~ msgid "unknown action" #~ msgstr "hành động không xác định" #~ msgid "Failed to open %s: %s" #~ msgstr "Lá»—i khi mở %s: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Lá»—i khi %s: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Lá»—i khi tạo tiến trình con: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Không phải là tập tin thông thưá»ng: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Mong đợi má»™t cặp số cá»§a hệ thập lục phân" #~ msgid "Unexpected identifier" #~ msgstr "Tên không mong đợi" #~ msgid "Identifier expected" #~ msgstr "Tên đã đợi" #~ msgid "Separator expected" #~ msgstr "Mong đợi vạch phân chia" #~ msgid "Invalid token" #~ msgstr "Dấu hiện không đúng" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Không là số hệ thập lục phân: %c%c (trong \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - không rõ định dạng (%d)" #~ msgid "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgstr "trạngthái:\tngưá»idùng = %i, nice = %i, hệthống = %i, ngừng = " #~ "%i" #~ msgid "bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgstr "cácthanh:\tngưá»idùng = %i, nice = %i, hệthống = %i (h = %i)\n" #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "cpu: %d %d %d %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat tìm thấy quá nhiá»u cpu: phải là %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "Lá»—i XQueryTree cho cá»­a sổ 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Biên dịch vá»›i cá» DEBUG. Thông báo sá»­a lá»—i sẽ được in ra." #~ msgid "_No icon" #~ msgstr "_Không biểu tượng" #~ msgid "_Minimized" #~ msgstr "_Thu nhá»" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "Lá»—i X %s(0x%lX): %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "Lá»—i phân nhánh (fork) (errno=%d)" #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "Lá»—i khi tạo đưá»ng ống không tên (errno=%d)." #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Pixmap cho trá» chuá»™t không hợp lệ: \"%s\" chứa quá nhiá»u màu" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Lá»—i khi tạo đưá»ng ống không tên: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Lá»—i khi nhân đôi mô tả tập tin: %s" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Lá»—i sao chép 0x%x có thể vẽ thành bá»™ đệm pixel" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: Lá»—i sao chép 0x%x có thể vẽ thành bá»™ đệm pixel (%d:%d-" #~ "%dx%d" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "QUà NHIỀU KẾT Ná»I ICE -- không được há»— trợ" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Trình quản lí phiên: lá»—i IceAddConnectionWatch." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Trình quản lí phiên: Lá»—i khởi chạy: %s" icewm-1.3.7/po/sv.po0000664000076600007660000010214311463274241013237 0ustar develdevel# Swedish translation of Icewm. # Copyright (C) 2001 Free Software Foundation, Inc. # Per Larsson , 2001. # msgid "" msgstr "Project-Id-Version: Icewm 1.2.0-beta1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2002-04-20 20:40+0200\n" "Last-Translator: Per Larsson \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Ström" # Hm. "P" och "M" stÃ¥r tydligen för "Power" och "Mobile". #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "S" #, c-format msgid " - Charging" msgstr " - Laddar" msgid "C" msgstr "" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "Processorbelastning: %3.2f %3.2f %3.2f, %d processer." #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Felaktigt brevlÃ¥deprotokoll: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Felaktig sökväg till brevlÃ¥da: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Använder brevlÃ¥da \"%s\"\n" msgid "Error checking mailbox." msgstr "GenomgÃ¥ng av brevlÃ¥da misslyckades." #, c-format msgid "%ld mail message." msgstr "%ld meddelande." #, c-format msgid "%ld mail messages." msgstr "%ld meddelanden." #, fuzzy, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Gränssnitt %s:\n" " Nuvarande hastighet (in/ut): %lli %s/%lli %s\n" " Medelhastighet (in/ut): %lli %s/%lli %s\n" " Överfört (in/ut): %lli %s/%lli %s\n" " Uppkopplad tid: %d:%02d:%02d%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Inkommande samtal:" msgid "Workspace: " msgstr "Arbetsyta:" msgid "Back" msgstr "BakÃ¥t" msgid "Alt+Left" msgstr "Alt+Vänster" msgid "Forward" msgstr "FramÃ¥t" msgid "Alt+Right" msgstr "Alt+Höger" msgid "Previous" msgstr "FöregÃ¥ende" msgid "Next" msgstr "Nästa" msgid "Contents" msgstr "InnehÃ¥ll" msgid "Index" msgstr "Index" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Stäng" msgid "Ctrl+Q" msgstr "Qtrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Användning: %s FILNAMN\n" "\n" "En väldigt enkel HTML-bläddrare som visar dokumentet som anges av " "FILNAMN.\n" #, c-format msgid "Invalid path: %s\n" msgstr "Felaktig sökväg: %s\n" msgid "Invalid path: " msgstr "Felaktig sökväg:" msgid "List View" msgstr "Listvy" msgid "Icon View" msgstr "Ikonvy" msgid "Open" msgstr "Öppna" msgid "Undo" msgstr "Ã…ngra" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Ny" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Starta om" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "IceSAME" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "Ã…tgärden \"%s\" kräver minst %d argument." #, c-format msgid "Invalid expression: `%s'" msgstr "Felaktigt uttryck: \"%s\"." #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Namngiven symbol i domänen \"%s\" (intervall: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Ogiltigt namn pÃ¥ arbetsyta: \"%s\"" #, c-format msgid "Workspace out of range: %d" msgstr "Arbetsyta utanför omrÃ¥det: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Användning: %s [FLAGGOR] Ã…TGÄRDER\n" "\n" "Flaggor:\n" " -display BILDSKÄRM Ansluter till X-servern angiven av " "BILDSKÄRM.\n" " Skönsvärde: $DISPLAY eller :0.0 om ej " "satt.\n" " -window FÖNSTERID Anger vilket fönster som ska hanteras. " "Speciella\n" " värden är \"root\" för skrivbordsytan " "och \"focus\"\n" " för det fönster som har fokus just " "nu.\n" "Ã…tgärder:\n" " setIconTitle TITEL Sätt ikontiteln.\n" " setWindowTitle TITEL Sätt fönstertiteln.\n" " setState MASK LÄGE Sätt Gnome-fönsterläget till LÄGE.\n" " Endast de bitar som anges av MASK " "pÃ¥verkas.\n" " LÄGE och MASK är uttryck i domänen\n" " \"GNOME window state\".\n" " toggleState LÄGE Växla de bitar i GNOME-fönsterläget " "som anges av\n" " uttrycket LÄGE.\n" " setHints INSTÄLLNINGAR Sätt GNOME-fönsterinställningarna " "till\n" " INSTÄLLNINGAR.\n" " setLayer LAGER Flyttar fönstret till ett annat GNOME-" "fönsterlager.\n" " setWorkspace ARBETSYTA Flyttar fönstret till en annan " "arbetsyta. Välj\n" " skrivbodsytan för att byta arbetsyta.\n" " listWorkspaces Lista namnen pÃ¥ alla arbetsytor.\n" " setTrayOption BRICKINSTÄLLNING\n" " Sätt inställningarna för IceWM-" "brickan.\n" "\n" "Uttryck:\n" " Uttryck är listor av symboler frÃ¥n en domän sammansatta med \"+\" " "eller \"|\":\n" "\n" " UTTRYCK ::= SYMBOL | UTTRYCK ( \"+\" | \"|\" ) SYMBOL\n" "\n" msgid "GNOME window state" msgstr "GNOME-fönsterläge" msgid "GNOME window hint" msgstr "GNOME-fönsterinställning" msgid "GNOME window layer" msgstr "GNOME-fönsterlager" msgid "IceWM tray option" msgstr "Inställningar för IceWM-programpanelen" msgid "Usage error: " msgstr "Användningsfel:" #, c-format msgid "Invalid argument: `%s'." msgstr "Felaktigt värde: \"%s\"." msgid "No actions specified." msgstr "Ingen Ã¥tgärd angiven." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Kan inte öppna bildskärm: %s. X mÃ¥ste vara igÃ¥ng och $DISPLAY satt." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Felaktig fönsteridentifierare: \"%s\"" #, c-format msgid "workspace #%d: `%s'\n" msgstr "arbetsyta #%d: \"%s\"\n" #, c-format msgid "Unknown action: `%s'" msgstr "Okänd Ã¥tgärd: \"%s\"" #, c-format msgid "Socket error: %d" msgstr "Uttagsfel: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Spelar ljud #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Enhet saknas: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Kan inte ansluta till ESound-demon: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Fel <%d> vid lämnande av \"%s:%s\"" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Ljud <%d> lämnades som \"%s:%s\"" #, c-format msgid "Playing sample #%d" msgstr "Spelar ljud #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Kan inte ansluta till YIFF-server: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Kan inte byta till ljudläge \"%s\"." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Ljudläget har förändrats, ursprungliga ljudläget \"%s\" gäller inte " "längre." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Ljudläget har förändrats, automatiskt byte av ljudläge inaktiverat." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Ersätter föregÃ¥ende ljudläge \"%s\"." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Användning: %s [FLAGGOR] ...\n" "\n" "Spelar ljudfiler vid grafiska IceWM-händelser.\n" "\n" "Flaggor:\n" "\n" " -d, --display=BILDSKÄRM Bildskärm som används av IceWM (förval: " "$DISPLAY)\n" " -s, --sample-dir=KAT Anger den katalog som innehÃ¥ller " "ljudfilerna\n" " (dvs ~/.icewm/sounds).\n" " -i, --interface=MÃ…L Anger mÃ¥lgränssnittet för ljudutdata, " "en av\n" " OSS, YIFF eller ESD\n" " -D --device=ENHET (Endast OSS) anger den digitala " "singalprocessorn\n" " (förval /dev/dsp)\n" " -S, --server=ADRESS:PORT (ESD och YIFF) anger server och " "portnummer\n" " (förval localhost:16001 för ESD och \n" " localhost:9433 för YIFF)\n" " -m, --audio-mode[=LÄGE] (Endast YIFF) anger ljudläget (lämna " "blank för\n" " att fÃ¥ en lista)\n" " --audio-mode-auto (Endast YIFF) Ändrar automatiskt " "ljudläge till\n" " det som bäst passar (kan orsaka problem " "med andra\n" " YIFF-klienter, trumfar --audio-mode).\n" " -v, --verbose Var utförlig (skriver alla " "ljudhändelser till\n" " standard ut).\n" " -V, --version Skriver versionsinformation och " "avslutar.\n" " -h, --help Skriver (denna) hjälpsida och " "avslutar.\n" "\n" "Resultat:\n" "\n" " 0 Lyckades.\n" " 1 Allmänt fel.\n" " 2 Fel pÃ¥ kommandorad.\n" " 3 Fel pÃ¥ undersystem (dvs kan inte ansluta till server).\n" msgid "Multiple sound interfaces given." msgstr "Flera ljudgränssnitt givna." #, c-format msgid "Support for the %s interface not compiled." msgstr "Stöd för %s-gränssnittet är ej inbyggt." #, c-format msgid "Unsupported interface: %s." msgstr "Stöder inte gränssnitt: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Mottog signal %d: Avslutar ..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Mottog signal %d: Läser om ljud ..." msgid "Hex View" msgstr "Hex-vy" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Ersätt tabulatortecken med mellanslag" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Ombryt rader" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: Okänd flagga \"%s\"\n" "Prova \"%s --help\" för mer information.\n" #, c-format msgid "Loading image %s failed" msgstr "Inläsning av bild %s misslyckades" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Inläsning av bild \"%s\" misslyckades: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Användning: icewmhint [class.instance] flagga argument\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Slut pÃ¥ minne (len=%d)." msgid "Warning: " msgstr "Varning: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "" #, fuzzy msgid "Default" msgstr "Ta bort" msgid "(C)" msgstr "©" msgid "Theme:" msgstr "Tema:" msgid "Theme Description:" msgstr "Temabeskrivning:" msgid "Theme Author:" msgstr "Temaförfattare:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm - Om" msgid "Unable to get current font path." msgstr "Kunde inte läsa av nuvarande typsnittsökväg." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Oväntat format pÃ¥ ICEWM_FONT_PATH-egenskapslistan" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Multipla referenser för färgtoning \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "Okänt namn pÃ¥ färgtoning: %s" msgid "_Logout" msgstr "_Avsluta" msgid "_Cancel logout" msgstr "A_vbryt avsluta" msgid "Lock _Workstation" msgstr "_LÃ¥s arbetsstationen" msgid "Re_boot" msgstr "Starta _om" msgid "Shut_down" msgstr "Stäng a_v" msgid "Restart _Icewm" msgstr "Starta om _Icewm" msgid "Restart _Xterm" msgstr "Starta om _Xterm" msgid "_Menu" msgstr "_Meny" msgid "_Above Dock" msgstr "_Ovanför docka" msgid "_Dock" msgstr "_Docka" msgid "_OnTop" msgstr "_Överst" msgid "_Normal" msgstr "_Normal" msgid "_Below" msgstr "_Under" msgid "D_esktop" msgstr "Skriv_bord" msgid "_Restore" msgstr "_Ã…terställ" msgid "_Move" msgstr "_Flytta" msgid "_Size" msgstr "_Storlek" msgid "Mi_nimize" msgstr "Mi_nimera" msgid "Ma_ximize" msgstr "Ma_ximera" msgid "_Fullscreen" msgstr "" msgid "_Hide" msgstr "_Göm" msgid "Roll_up" msgstr "Rulla _ihop" msgid "R_aise" msgstr "_Höj" msgid "_Lower" msgstr "Sän_k" msgid "La_yer" msgstr "_Lager" msgid "Move _To" msgstr "Flytta _till" msgid "Occupy _All" msgstr "Uppta _alla" msgid "Limit _Workarea" msgstr "_Begränsa arbetsyta" msgid "Tray _icon" msgstr "_Programpanelsikon" msgid "_Close" msgstr "St_äng" msgid "_Kill Client" msgstr "_Döda klient" msgid "_Window list" msgstr "F_önsterlista" msgid "Another window manager already running, exiting..." msgstr "En annan fönsterhanterare körs redan, avslutar ..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Kunde inte starta om: %s\n" "Finns %s i $PATH?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "" msgid "Confirm Logout" msgstr "Bekräfta avslutande" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Avsluta kommer stänga alla aktiva program.\n" "Fortsätta?" msgid "Bad Look name" msgstr "Felaktigt utseendenamn" #, fuzzy msgid "Loc_k Workstation" msgstr "_LÃ¥s arbetsstationen" msgid "_Logout..." msgstr "Avsl_uta..." msgid "_Cancel" msgstr "_Avbryt" msgid "_Restart icewm" msgstr "_Starta om icewm" msgid "_About" msgstr "_Om" msgid "Maximize" msgstr "Maximera" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Minimera" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Göm" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Rulla ihop" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Höj/Sänk" msgid "Kill Client: " msgstr "Döda klient: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "VARNING! Alla förändringar som inte sparats kommer\n" "att gÃ¥ förlorade när den här klienten dödas.\n" "Vill du fortsätta?" msgid "Restore" msgstr "Ã…terställ" msgid "Rolldown" msgstr "Rulla ut" #, c-format msgid "Error in window option: %s" msgstr "Fel i fönsterflagga: %s" #, c-format msgid "Unknown window option: %s" msgstr "Okänd fönsterflagga: %s" msgid "Syntax error in window options" msgstr "Syntaxfel i fönsterflaggor" msgid "Out of memory for window options" msgstr "Slut pÃ¥ minne för fönsterflaggor" msgid "Missing command argument" msgstr "Kommandoargument saknas" #, c-format msgid "Bad argument %d" msgstr "Felaktigt argument %d" #, c-format msgid "Error at prog %s" msgstr "Fel vid program %s" #, c-format msgid "Unexepected keyword: %s" msgstr "" #, c-format msgid "Error at key %s" msgstr "Fel vid nyckeln %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Program" msgid "_Run..." msgstr "_Kör..." msgid "_Windows" msgstr "_Fönster" msgid "_Help" msgstr "_Hjälp" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Teman" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Sessionshanteraren: Okänd rad %s" msgid "Task Bar" msgstr "Programrad" msgid "Tile _Vertically" msgstr "Rada upp _lodrätt" msgid "T_ile Horizontally" msgstr "Rada upp _vÃ¥grätt" msgid "Ca_scade" msgstr "_Kaskad" msgid "_Arrange" msgstr "O_rdna" msgid "_Minimize All" msgstr "_Minimera alla" msgid "_Hide All" msgstr "Göm _alla" msgid "_Undo" msgstr "_Ã…ngra" msgid "Arrange _Icons" msgstr "Ordna _Ikoner" msgid "_Refresh" msgstr "_Uppdatera" msgid "_License" msgstr "_Licens" msgid "Favorite applications" msgstr "Favoritprogram" msgid "Window list menu" msgstr "Fönsterlistmeny" #, fuzzy msgid "Show Desktop" msgstr "Skriv_bord" #, fuzzy msgid "All Workspaces" msgstr "Arbetsyta:" #, fuzzy msgid "Del" msgstr "Ta bort" msgid "_Terminate Process" msgstr "_Avsluta process" msgid "Kill _Process" msgstr "_Döda process" msgid "_Show" msgstr "V_isa" msgid "_Minimize" msgstr "Mi_nimera" msgid "Window list" msgstr "Fönsterlista" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Arbetsyta %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Meddelandeloop: select misslyckades (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Okänd flagga: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Okänt argument: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Argument krävs för växeln %s" #, c-format msgid "Unknown key name %s in %s" msgstr "Felaktigt nyckelnamn %s i %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Felaktigt argument: %s för %s" #, c-format msgid "Bad option: %s" msgstr "Felaktig flagga: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Inläsning av bild \"%s\" misslyckades" #, fuzzy, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Ogiltig muspekarbild: \"%s\" innehÃ¥ller för mÃ¥nga unika färger" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "FEL? Imlib kunde läsa \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "FEL? Felaktigt XPM-huvud men imlib kunde ändÃ¥ tolka \"%s\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "FEL? Oväntat slut pÃ¥ XPM-fil men Imlib kunde ändÃ¥ tolka \"%s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "FEL? Oväntat tecken men Imlib kunde ändÃ¥ tolka \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "Kunde inte läsa in typsnitt \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Inläsning av reservfont \"%s\" misslyckades." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Kunde inte läsa in typsnittsuppsättning \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "Kodning saknas för typsnittsuppsättning \"%s\"." #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Slut pÃ¥ minne för bild \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Inläsning av bild \"%s\" misslyckades" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: Inhämtning av X-bild misslyckades" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Avbildning frÃ¥n Imlib-bild till X-bild misslyckades" msgid "Cu_t" msgstr "_Klipp ut" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "K_opiera" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "K_listra in" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Klistra in _markering" msgid "Select _All" msgstr "Markera _allt" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "" msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "Kunde inte avgöra teckenuppsättning för aktuell lokal. Antar ISO-" "8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv tillhandahÃ¥ller inte (tillräckliga) %s till %s-konverterare." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Ogiltig multibyte-sträng \"%s\": %s" msgid "OK" msgstr "OK" msgid "Cancel" msgstr "Avbryt" #, c-format msgid "Out of memory for pixel map %s" msgstr "Slut pÃ¥ minne för bildpunktskarta %s" #, c-format msgid "Could not find pixel map %s" msgstr "Kunde inte hitta bildpunktskarta %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Slut pÃ¥ minne för RGB-bildbuffert %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Kunde inte hitta RGB-bildbuffert %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Använder reservmekanism för att konvertera bildpunkter (bilddjup: %" "d; mask (röd/grön/blÃ¥): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d-bitarsläge stöds inte (ännu)" msgid "$USER or $LOGNAME not set?" msgstr "$USER eller $LOGNAME inte satt?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" följer inte det allmänna internetmetodschemat" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" innehÃ¥ller inte nÃ¥gon metodbeskrivning" #, fuzzy #~ msgid "program label expected" #~ msgstr "Avskiljare förväntades" #, fuzzy #~ msgid "menu caption expected" #~ msgstr "Avskiljare förväntades" #, fuzzy #~ msgid "opening curly expected" #~ msgstr "Identifierare förväntades" #, fuzzy #~ msgid "action name expected" #~ msgstr "Avskiljare förväntades" #, fuzzy #~ msgid "unknown action" #~ msgstr "Okänd Ã¥tgärd: \"%s\"" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Hexadecimalt sifferpar förväntades" #~ msgid "Unexpected identifier" #~ msgstr "Oväntad identifierare" #~ msgid "Identifier expected" #~ msgstr "Identifierare förväntades" #~ msgid "Separator expected" #~ msgstr "Avskiljare förväntades" #, fuzzy #~ msgid "Invalid token" #~ msgstr "Felaktig sökväg:" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Inte ett hexadecimalt tal: %c%c (i \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - okänt format (%d)" #~ msgid "M" #~ msgstr "L" #~ msgid "cpu: %d %d %d %d" #~ msgstr "processor: %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat hittar för mÃ¥nga processorer: borde vara %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "# preferences(%s) - generated by genpref\n" #~ "\n" #~ msgstr "# inställningar(%s) - skapade av genpref\n" #~ msgid "# NOTE: All settings are commented out by default, be sure " #~ "to\n" #~ "# uncomment them if you change them!\n" #~ "\n" #~ msgstr "# OBS: Alla inställningar är utkommenterade frÃ¥n början, " #~ "tänk\n" #~ "# pÃ¥ att ta bort kommentarsmärket om du ändrar dem.\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree misslyckades för fönster 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Byggd med DEBUG-flaggan. Felsökningsmeddelanden kommer att " #~ "skrivas ut." #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "Användning: icewmbg [FLAGGA]... bild1 [bild2]...\n" #~ "Ändrar skrivbordsbakgrund vid byte av arbetsyta.\n" #~ "Den första bilden används som standardbild.\n" #~ "\n" #~ "-s, --semitransparency SlÃ¥ pÃ¥ stöd för halvgenomskinliga " #~ "terminaler\n" #~ msgid "_No icon" #~ msgstr "_Ingen ikon" #~ msgid "_Minimized" #~ msgstr "_Minimerad" #~ msgid "_Exclusive" #~ msgstr "_Exklusiv" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X-fel %s(0x%lX): %s" #~ msgid "Window %p has no XA_ICEWM_PID property. Export the " #~ "LD_PRELOAD variable to preload the preice library." #~ msgstr "Fönstret %p har ingen XA_ICEWM_PID-egenskap. Använd " #~ "variabeln LD_PRELOAD för att läsa in preice-biblioteket." #~ msgid "Obsolete option: %s" #~ msgstr "FörÃ¥ldrad flagga: %s" #~ msgid "Gnome" #~ msgstr "Gnome" #~ msgid "Gnome User Apps" #~ msgstr "Användarprogram för Gnome" #~ msgid "KDE" #~ msgstr "KDE" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "FÖR MÃ…NGA ICE-ANSLUTNINGAR -- stöds inte" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Sessionshanteraren: IceAddConnectionWatch misslyckades" #~ msgid "Session Manager: Init error: %s" #~ msgstr "Sessionshanteraren: Initieringsfel: %s" #~ msgid "Pipe creation failed (errno=%d)." #~ msgstr "Fel vid skapande av rör (errno=%d)." #~ msgid "Resource allocation for rotated string \"%s\" (%dx%d px) " #~ "failed" #~ msgstr "Resurstilldelning för roterad sträng \"%s\" (%dx%d px) " #~ "misslyckades" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Misslyckades med att kopiera bild 0x%x till " #~ "bildbuffert" icewm-1.3.7/po/lt.po0000664000076600007660000010512211463274241013226 0ustar develdevel# Lithuanian messages for IceWM. # Copyright (C) 2001-2002 Free Software Foundation, Inc. # Martynas Jocius , 2001-2002. # Gediminas Paulauskas , 2001. # msgid "" msgstr "Project-Id-Version: icewm 1.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2002-06-18 23:20+0200\n" "Last-Translator: Martynas Jocius \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Energija" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "E" #, c-format msgid " - Charging" msgstr " - Kraunu" msgid "C" msgstr "" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "CPU apkrovimas: %3.2f %3.2f %3.2f, %d procesai." #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Neteisingas paÅ¡to protokolas: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Neteisingas kelias iki paÅ¡to dėžutÄ—s: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Naudojama paÅ¡to dėžutÄ—: \"%s\"\n" msgid "Error checking mailbox." msgstr "Klaida tikrinant paÅ¡to dėžutÄ™." #, c-format msgid "%ld mail message." msgstr "%ld laiÅ¡kas." #, c-format msgid "%ld mail messages." msgstr "%ld laiÅ¡kai." #, fuzzy, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "SÄ…saja %s:\n" " Esamas greitis (į/iÅ¡):\t%d %s/%d %s\n" " Vidutinis greitis (į/iÅ¡):\t%d %s/%d %s\n" " Persiųsta (į/iÅ¡):\t%d %s/%d %s\n" " PrisijungÄ™s:\t%d:%02d:%02d%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " KvietÄ—jo ID:\t" msgid "Workspace: " msgstr "Darbalaukis: " msgid "Back" msgstr "Atgal" msgid "Alt+Left" msgstr "Alt+Left" msgid "Forward" msgstr "Pirmyn" msgid "Alt+Right" msgstr "Alt+Right" msgid "Previous" msgstr "Praeitas" msgid "Next" msgstr "Sekantis" msgid "Contents" msgstr "Turinys" msgid "Index" msgstr "RodyklÄ—" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Uždaryti" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Naudojimas: %s BYLA\n" "\n" "Paprasta HTML narÅ¡yklÄ—, vaizduojanti nurodytÄ… BYLA bylÄ….\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Neteisingas kelias: %s\n" msgid "Invalid path: " msgstr "Neteisingas kelias: " msgid "List View" msgstr "ŽiÅ«rÄ—ti sÄ…rašą" msgid "Icon View" msgstr "ŽiÅ«rÄ—ti ženkliukus" msgid "Open" msgstr "Atidaryti" msgid "Undo" msgstr "AtÅ¡aukti" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Naujas" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Perkrauti" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Tas pats žaidimas" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "" #, fuzzy, c-format msgid "Invalid expression: `%s'" msgstr "Neteisingas argumentas: `%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Srities `%s' įvardinti simboliai (skaitinÄ— riba: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Neteisingas darbalaukio pavadinimas: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "Peržengta darbalaukių skaiÄiau riba: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Naudojimas: %s [PARINKTYS] VEIKSMAI\n" "\n" "Parinktys:\n" " -display DISPLAY Prijungia prie DISPLAY nurodyto X " "serverio.\n" " Paprastai $DISPLAY arba :0:0 jei " "nenustatyta.\n" " -window WINDOW_ID Nurodo langÄ…, kuriuo manipuliuoti. " "SpecialÅ«s\n" " vardai yra `root' langui ir 'focus' " "aktyviam langui.\n" "\n" "Veiksmai:\n" " setIconTitle TITLE Nurodo ikonos pavadinimÄ….\n" " set WindowTitle TITLE Nurodo lango pavadinimÄ….\n" " setState MASK STATE KeiÄia GNOME lango bÅ«senÄ… į STATE.\n" " Naudojami tik MASK pažymÄ—ti bitai.\n" " STATE ir MASK yra `GNOME window " "state' srities iÅ¡raiÅ¡kos.\n" " toggleState STATE Ä®jungia GNOME lango bÅ«senos bitus, " "nurodytus STATE \n" " iÅ¡raiÅ¡kos.\n" " setHints HINTS KeiÄia GNOME lango patarimus į " "HINTS.\n" " setLayer LAYER Perkelia langÄ… į kitÄ… GNOME lango " "sluoksnį.\n" " setWorkspace WORKSPACE Perkelia langÄ… į kitÄ… darbalaukį. PažymÄ—k " "root langÄ… esamo \n" " darbalaukio pakeitimui. \n" " listWorkspaces IÅ¡vardija visų darbalaukių " "pavadinimus.\n" " setTrayOption TRAYOPTION Nurodo IceWM durelių parinkties " "patarimÄ….\n" "\n" "IÅ¡raiÅ¡kos:\n" " IÅ¡raiÅ¡kos yra vienos srities, sujungtos `+' arba `|', simbolių " "sÄ…raÅ¡as:\n" "\n" " IÅ RAIÅ KA ::= SIMBOLIS | IÅ RAIÅ KA (`+' | `|') SIMBOLIS\n" "\n" "\n" msgid "GNOME window state" msgstr "GNOME lango bÅ«sena" msgid "GNOME window hint" msgstr "GNOME lango patarimas" msgid "GNOME window layer" msgstr "GNOME lango lygmuo" msgid "IceWM tray option" msgstr "IceWM durelių parinktis" # Äia man neaiÅ¡ku apie kÄ… kalba eina msgid "Usage error: " msgstr "Naudojimo klaida: " #, c-format msgid "Invalid argument: `%s'." msgstr "Neteisingas argumentas: `%s'" msgid "No actions specified." msgstr "Nenurodytas joks veiksmas" #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Negaliu atidaryti ekrano: %s.\n" "X'ai turi veikti ir $DISPLAY turi bÅ«ti nustatytas." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Neteisingas lango identifikatorius: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "Darbalaukis #%d: `%s'\n" " \n" #, c-format msgid "Unknown action: `%s'" msgstr "Nežinomas veiksmas: %s" # Äia man neaiÅ¡ku apie kÄ… kalba eina #, c-format msgid "Socket error: %d" msgstr "Socket klaida: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Grojamas pavyzdys #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Ä®renginys nerastas: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Negaliu prisijungti prie ESound demono: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Klaida <%d> iÅ¡siunÄiant `%s:%s'" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Pavyzdys <%d> iÅ¡siųstas kaip `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "Grojamas pavyzdys #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Negaliu prisijungti prie YIFF serverio: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Negaliu pakeisti audio režimo `%s'" #, fuzzy, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Aptikta, jog audio režimas pasikeitÄ—, pradinis režimas `%s' " "nebenaudojamas." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Aptikta, jog audio režimas pasikeitÄ—, audio režimas automatiÅ¡kai " "nebekeiÄiamas." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Grąžinu praÄ—jusį audio režimÄ… `%s'." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Naudojimas: %s [PARINKTIS] ...\n" "\n" "Groja audio bylas IceWM nustatytomis GUI programomis.\n" "\n" "Parinktys:\n" " -d, --display=EKRANAS IceWM naudojamas ekranas (įprastas: " "$DISPLAY).\n" " -s, --sample-dir=KATALOGAS Nurodo katalogÄ…, kuriame yra garsai\n" " (pvz. ~/.icewm/sounds).\n" " -i, --interface=SÄ„SAJA Nurodo garso iÅ¡vesties sÄ…sajÄ…,\n" " vienÄ… iÅ¡ OSS, YIFF, ESD.\n" " -D, --device=Ä®RENGINYS (Tik OSS) nurodo skaitmeninių " "signalų\n" " procesorių (įprastas yra /dev/dsp).\n" " -S, --server=ADRESAS:PRIEVAD (ESD ir YIFF) nurodo serverio adresÄ… " "ir\n" " prievado numerį (įprastai ESD yra\n" " localhost:16001, o YIFF yra " "localhost:9433).\n" " -m, --audio-mode[=REŽIMAS] (Tik YIFF) nurodo Audio režimÄ… " "(palik tuÅ¡ÄiÄ…,\n" " kad gautum sÄ…rašą\n" " --audio-mode-auto (Tik YIFF) pakeisti Audio režimÄ… į " "labiausiai\n" " tinkamÄ… esamam kÅ«riniui (gali " "sukelti\n" " problemų su kitais Y klientais,\n" " nekreipia dÄ—mesio į --audio-mode).\n" "\n" " -v, --verbose KiekvienÄ… garso įvykį iÅ¡veda į " "standartinÄ—s\n" " iÅ¡vesties srautÄ… (stdout).\n" " -V, --version IÅ¡veda informacijÄ… apie versijÄ… ir " "iÅ¡eina\n" " -h, --help Atspausdina (Å¡iÄ…) pagalbÄ… ir " "iÅ¡eina.\n" "\n" "Grąžinamos reikÅ¡mÄ—s:\n" "\n" " 0 Viskas gerai.\n" " 1 Klaida.\n" " 2 Klaida komandinÄ—je eilutÄ—je\n" " 3 PosistemÄ—s klaida (pvz. negali prisijungti prie serverio.\n" "\n" msgid "Multiple sound interfaces given." msgstr "Duota keletas garso sÄ…sajų." #, c-format msgid "Support for the %s interface not compiled." msgstr "%s sÄ…sajos palaikymas neįkompiliuotas." #, c-format msgid "Unsupported interface: %s." msgstr "Nepalaikoma sÄ…saja: %s" #, c-format msgid "Received signal %d: Terminating..." msgstr "Gautas signalas %d: Baigiu darbÄ…..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Gautas signalas %d: Perkraunu pavyzdžius..." msgid "Hex View" msgstr "ŽiÅ«rÄ—ti Hex režimu" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "IÅ¡plÄ—sti tabus" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Laužyti eilutes" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: neatpažinta parinktis `%s'\n" "Bandyk `%s --help'.\n" #, c-format msgid "Loading image %s failed" msgstr "Nepavyko įkelti paveikslÄ—lio %s" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Nepavyko įkelti paveikslÄ—lio %s: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Naudojimas: icewmhint [klasÄ—.instance] parinktis argumentas\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Nepakanka atminties (dydis=%d)." msgid "Warning: " msgstr "DÄ—mesio: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "" #, fuzzy msgid "Default" msgstr "IÅ¡trinti" msgid "(C)" msgstr "©" msgid "Theme:" msgstr "Tema: " msgid "Theme Description:" msgstr "Temos apraÅ¡ymas:" msgid "Theme Author:" msgstr "Temos autorius:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "IceWM - Apie" msgid "Unable to get current font path." msgstr "Negaliu nustatyti kelio iki esamo Å¡rifto." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Netinkamas ICEWM_FONT_PATH laikomos reikÅ¡mÄ—s formatas" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "SudÄ—tinis adresas perÄ—jimui \"%s\"" #, fuzzy, c-format msgid "Unknown gradient name: %s" msgstr "Nežinomas perÄ—jimo pavadinimas %s" msgid "_Logout" msgstr "Atsi_jungti" msgid "_Cancel logout" msgstr "A_tÅ¡aukti atsijungimÄ…" msgid "Lock _Workstation" msgstr "Užrakinti _kompiuterį" msgid "Re_boot" msgstr "P_erkrauti kompiuterį" msgid "Shut_down" msgstr "IÅ¡_jungti kompiuterį" msgid "Restart _Icewm" msgstr "Perkrauti _IceWM" msgid "Restart _Xterm" msgstr "Perkrauti _Xterm" msgid "_Menu" msgstr "_Meniu" msgid "_Above Dock" msgstr "_VirÅ¡ doko" msgid "_Dock" msgstr "_Dokas" msgid "_OnTop" msgstr "_AukÅ¡Äiau" msgid "_Normal" msgstr "_Normalus" msgid "_Below" msgstr "Ž_emiau" msgid "D_esktop" msgstr "Dar_balaukio" msgid "_Restore" msgstr "_Atstatyti" msgid "_Move" msgstr "Per_kelti" msgid "_Size" msgstr "Kei_sti dydį" msgid "Mi_nimize" msgstr "Sumaži_nti" msgid "Ma_ximize" msgstr "Pa_didinti" msgid "_Fullscreen" msgstr "" msgid "_Hide" msgstr "_PaslÄ—pti" msgid "Roll_up" msgstr "S_uvynioti" msgid "R_aise" msgstr "IÅ¡_kelti" msgid "_Lower" msgstr "Nu_leisti" msgid "La_yer" msgstr "L_ygmuo" msgid "Move _To" msgstr "Perkel_ti į" msgid "Occupy _All" msgstr "Rodyti _visur" msgid "Limit _Workarea" msgstr "Apriboti _darbalaukį" msgid "Tray _icon" msgstr "UžduoÄių juostos _ikonos" msgid "_Close" msgstr "_Uždaryti" msgid "_Kill Client" msgstr "_Nužudyti klientÄ…" msgid "_Window list" msgstr "Lan_gų sÄ…raÅ¡as" msgid "Another window manager already running, exiting..." msgstr "Kita langų tvarkyklÄ— jau veikia, iÅ¡sijungiu..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Negaliu perkrauti %sAr $PATH turi %s?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "" msgid "Confirm Logout" msgstr "Patvirtink atsijungimÄ…" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Atsijungimas uždarys visas veikianÄias programas.\n" "TÄ™sti?" msgid "Bad Look name" msgstr "Blogai atrodantis pavadinimas" #, fuzzy msgid "Loc_k Workstation" msgstr "Užrakinti _kompiuterį" msgid "_Logout..." msgstr "_Atsijungti..." msgid "_Cancel" msgstr "A_tÅ¡aukti" msgid "_Restart icewm" msgstr "Pe_rkrauti IceWM" msgid "_About" msgstr "_Apie" msgid "Maximize" msgstr "Padidinti" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Sumažinti" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "PaslÄ—pti" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Suvynioti" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "IÅ¡kelti/Nuleisti" msgid "Kill Client: " msgstr "Nužudyti klientÄ…: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "DÄ–MESIO! Visi neiÅ¡saugoti pakeitimai bus prarasti nužudžius šį " "klientÄ…. Ar nori tÄ™sti?" msgid "Restore" msgstr "Atkurti" msgid "Rolldown" msgstr "Atvynioti" #, c-format msgid "Error in window option: %s" msgstr "Klaida lango parinktyje: %s" #, c-format msgid "Unknown window option: %s" msgstr "Nežinoma lango parinktis: %s" msgid "Syntax error in window options" msgstr "SintaksÄ—s klaida lango parinktyse" msgid "Out of memory for window options" msgstr "Nepakanka atminties lango parinktims" msgid "Missing command argument" msgstr "Praleistas komandos argumentas" #, c-format msgid "Bad argument %d" msgstr "Blogas argumentas %d" #, c-format msgid "Error at prog %s" msgstr "Klaida programoje %s" #, c-format msgid "Unexepected keyword: %s" msgstr "" #, c-format msgid "Error at key %s" msgstr "Klaida klaviÅ¡e %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programos" msgid "_Run..." msgstr "_Paleisti..." msgid "_Windows" msgstr "_Langai" msgid "_Help" msgstr "Pa_galba" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Temos" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Sesijos menedžeris: Nežinoma eilutÄ— %s" msgid "Task Bar" msgstr "UžduoÄių juosta" msgid "Tile _Vertically" msgstr "Suskirstyti _vertikaliai" msgid "T_ile Horizontally" msgstr "Suskirstyti _horizontaliai" msgid "Ca_scade" msgstr "Suskirstyti ka_skadiÅ¡kai" msgid "_Arrange" msgstr "Sutv_arkyti" msgid "_Minimize All" msgstr "Su_mažinti visus" msgid "_Hide All" msgstr "_PaslÄ—pti visus" msgid "_Undo" msgstr "AtÅ¡a_ukti" msgid "Arrange _Icons" msgstr "Sutvarkyt_i ženklelius" msgid "_Refresh" msgstr "At_naujinti" msgid "_License" msgstr "_Licenzija" msgid "Favorite applications" msgstr "MÄ—gstamiausios programos" msgid "Window list menu" msgstr "Langų sÄ…raÅ¡o meniu" #, fuzzy msgid "Show Desktop" msgstr "Dar_balaukio" #, fuzzy msgid "All Workspaces" msgstr "Darbalaukis: " #, fuzzy msgid "Del" msgstr "IÅ¡trinti" msgid "_Terminate Process" msgstr "_Užbaigti procesÄ…" msgid "Kill _Process" msgstr "Nužudyti _procesÄ…" msgid "_Show" msgstr "_Rodyti" msgid "_Minimize" msgstr "Su_mažinti" msgid "Window list" msgstr "Langų sÄ…raÅ¡as" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Darbalaukis %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "ŽinuÄių ciklas: žymÄ—jimas nepavyko (klaidos numeris = %d)." #, c-format msgid "Unrecognized option: %s\n" msgstr "Neatpažinta parinktis: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Neatpažintas argumentas: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "%s parinkÄiai reikalingas argumentas" #, c-format msgid "Unknown key name %s in %s" msgstr "Nežinomas klaviÅ¡o pavadinimas %s (%s)" #, c-format msgid "Bad argument: %s for %s" msgstr "Blogas argumentas: %s skirtas %s" #, c-format msgid "Bad option: %s" msgstr "Bloga parinktis: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Nepavyko įkelti paveikslÄ—lio %s" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Ne žymeklio paveikslÄ—lis: %s yra per daug skirtingų spalvų" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "KLAIDA? Imlib galÄ—jo perskaityti %s" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "KLAIDA? Sugadinta XPM antraÅ¡tÄ—, taÄiau Imlib galÄ—jo nuskaityti %s" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "KLAIDA? Nerasta XPM bylos pabaiga, taÄiau Imlib galÄ—jo nuskaityti %s" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "KLAIDA? Simbolis nerastas, taÄiau Imlib galÄ—jo nuskaityti %s" #, c-format msgid "Could not load font \"%s\"." msgstr "Negaliu įkelti Å¡rifto \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Nepavyko įkelti paskutinįkart naudoto Å¡rifto \"%s\"" #, c-format msgid "Could not load fontset \"%s\"." msgstr "Negaliu įkelti Å¡rifto aibÄ—s \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "TrÅ«ksta koduoÄių aibÄ—s Å¡riftų aibei \"%s\":" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "PaveikslÄ—liui \"%s\" neužtenka atminties" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Nepavyko įkelti paveikslÄ—lio %s" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: X'ų paveikslÄ—lio pasisavinimas nepavyko" # Pasisavinimas? Hmm.... msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Imlib pieÅ¡inÄ—lio perdirbimas į X'ų pieÅ¡inÄ—lį nepavyko" msgid "Cu_t" msgstr "_IÅ¡kirpti" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Kopijuoti" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "Ä®_dÄ—ti" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Ä®dÄ—ti _pažymÄ—tÄ…" msgid "Select _All" msgstr "PažymÄ—ti _viskÄ…" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "" msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv nepalaiko (pakankamai) %s į %s pavertÄ—jų." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Neteisinga daugiabaitinÄ— eilutÄ— \"%s\": %s" msgid "OK" msgstr "Gerai" msgid "Cancel" msgstr "AtÅ¡aukti" #, c-format msgid "Out of memory for pixel map %s" msgstr "PaveikslÄ—liui %s neužtenka atminties" #, fuzzy, c-format msgid "Could not find pixel map %s" msgstr "Negaliu rasti paveikslÄ—lio %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "RGB taÅ¡kų buferiui %s neužtenka atminties" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Negaliu rasti RGB taÅ¡kų buferio %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Naudoju ankstesnį mechanizmÄ… taÅ¡kų konvertavimui (gylis: %d; kaukÄ—s " "(raudona/žalia/mÄ—lyna): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d bitų vaizdai nepalaikomi (kol kas)" msgid "$USER or $LOGNAME not set?" msgstr "$USER ar $LOGNAME nenustatyti?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" neapraÅ¡o bendros interneto schemos" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" neturi schemos apraÅ¡ymo" #, fuzzy #~ msgid "program label expected" #~ msgstr "TikÄ—tasi skyriklio" #, fuzzy #~ msgid "menu caption expected" #~ msgstr "TikÄ—tasi skyriklio" #, fuzzy #~ msgid "opening curly expected" #~ msgstr "TikÄ—tasi kintamojo" #, fuzzy #~ msgid "action name expected" #~ msgstr "TikÄ—tasi skyriklio" #, fuzzy #~ msgid "unknown action" #~ msgstr "Nežinomas veiksmas: %s" #, fuzzy #~ msgid "Failed to open %s: %s" #~ msgstr "Nepavyko įraÅ¡yti istorijos bylos %s: %s" #, fuzzy #~ msgid "Failed to execute %s: %s" #~ msgstr "Nepavyko įraÅ¡yti istorijos bylos %s: %s" #, fuzzy #~ msgid "Failed to create child process: %s" #~ msgstr "Nepavyko įraÅ¡yti istorijos bylos %s: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "TikÄ—tasi Å¡eÅ¡ioliktainių skaiÄių poros" #~ msgid "Unexpected identifier" #~ msgstr "NetikÄ—tas kintamasis" #~ msgid "Identifier expected" #~ msgstr "TikÄ—tasi kintamojo" #~ msgid "Separator expected" #~ msgstr "TikÄ—tasi skyriklio" #, fuzzy #~ msgid "Invalid token" #~ msgstr "Neteisingas kelias: " #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Ne Å¡eÅ¡ioliktainis skaiÄius: %c%c (rastas \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - nežinomas formatas (%d)" #~ msgid "M" #~ msgstr "P" #~ msgid "cpu: %d %d %d %d" #~ msgstr "CPU: %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat rado per daug centrinių procesorių (CPU): turÄ—tų bÅ«ti %" #~ "d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "# preferences(%s) - generated by genpref\n" #~ "\n" #~ msgstr "# Nustatymai(%s) - sudaryti genpref\n" #~ "\n" #~ msgid "# NOTE: All settings are commented out by default, be sure " #~ "to\n" #~ "# uncomment them if you change them!\n" #~ "\n" #~ msgstr "# PASTABA: Visi nustatymai standartiÅ¡kai užkomentuoti,\n" #~ "# neužmirÅ¡k atkomentuoti jų, jei pakeitei!\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree nepavyko langui 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Kompiliuota su DEBUG nuostata. Derinimo žinutÄ—s bus " #~ "spausdinamos." #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "Naudojimas: icewmbg [parinktis] ... paveikslÄ—lis1 " #~ "[paveikslÄ—lis2] ...\n" #~ "KeiÄia fonÄ…, kai perjungiamas darbalaukis.\n" #~ "Pirmasis paveikslÄ—lis naudojamas kaip įprastas.\n" #~ "\n" #~ "-s, --semitransperancy Palaikyti pusiau skaidrius terminalus\n" #~ msgid "_No icon" #~ msgstr "_Be ikonos" #~ msgid "_Minimized" #~ msgstr "_Su ikona" #~ msgid "_Exclusive" #~ msgstr "_Tik ikona" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X'ų klaida %s(0x%lX): %s" #~ msgid "Window %p has no XA_ICEWM_PID property. Export the " #~ "LD_PRELOAD variable to preload the preice library." #~ msgstr "Langas %p neturi XA_ICEWM_PID savybÄ—s. Eksportuok LD_PRELOAD " #~ "kintamÄ…jį reikiamos bibliotekos užkrovimui." #~ msgid "Obsolete option: %s" #~ msgstr "Pasenusi parinktis: %s" #~ msgid "Gnome" #~ msgstr "Gnome" #~ msgid "Gnome User Apps" #~ msgstr "Gnome vartotojo programos" #~ msgid "KDE" #~ msgstr "KDE" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "PER DAUG ICEWM JUNGÄŒiŲ -- nepalaikoma" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Sesijos menedžeris: IceAddConnectionWatch nepavyko." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Sesijos menedžeris: paleidimo klaida: %s" #~ msgid "Pipe creation failed (errno=%d)." #~ msgstr "Nepavyko sukurti kanalo (klaidos numeris = %d)." #~ msgid "Resource allocation for rotated string \"%s\" (%dx%d px) " #~ "failed" #~ msgstr "Resursų iÅ¡skyrimas pasuktai eilutei \"%s\" (*%dx%d px) " #~ "nepavyko" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Nepavyko nukopijuoti pieÅ¡iamo 0x%x į taÅ¡kų buferį" #~ msgid "%s@%s: Sent: %db Rcvd: %db in %ds" #~ msgstr "%s@%s: IÅ¡siųsta: %db Parsiųsta: %db per %ds" #~ msgid "Load pixmap %s failed with rc=%d" #~ msgstr "Nepavyko įkelti paveikslÄ—lio %s, rc=%d" #~ msgid "Warning! Unsaved changes will be lost!\n" #~ "Proceed?" #~ msgstr "DÄ—mesio! NeiÅ¡saugoti pakeitimai bus prarasti!\n" #~ "TÄ™sti?" #~ msgid "Loading of pixmap %s failed with rc=%d" #~ msgstr "Nepavyko įkelti paveikslÄ—lio %s, rc=%d" #~ msgid "Fallback to '*fixed*' failed." #~ msgstr "Nepavyko sugrįžti prie '*fixed*'." #~ msgid "Missing fontset in loading '%s'" #~ msgstr "TrÅ«ksta Å¡rifto aibÄ—s įkeliant '%s'" #~ msgid "Fallback to 'fixed' failed." #~ msgstr "Nepavyko sugrįžti prie 'fixed'." icewm-1.3.7/po/be.po0000664000076600007660000012701311463274241013200 0ustar develdevel# Copyright (C) 2003 Free Software Foundation, Inc. # Hleb Valoska , 2003. # msgid "" msgstr "Project-Id-Version: 1.2.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2003-01-27 22:26+0300\n" "Last-Translator: Hleb Valoska \n" "Language-Team: Belarusian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Сілкаваньне" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "P" #, c-format msgid " - Charging" msgstr " - Зарад" msgid "C" msgstr "C" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "Загрузка CPU: %3.2f %3.2f %3.2f, %d працÑÑаў" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "ÐÑправільны пратакол паштовай Ñкрыні: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "ÐÑправільны шлÑÑ… да паштовай Ñкрыні: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Ужываю паштовую Ñкрыню: \"%s\"\n" msgid "Error checking mailbox." msgstr "Памылка пра праверцы паштовай Ñкрыні." #, c-format msgid "%ld mail message." msgstr "%ld ліÑтоў." #, c-format msgid "%ld mail messages." msgstr "%ld ліÑтоў." #, fuzzy, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "ІнтÑрфÑÐ¹Ñ %s:\n" " БÑÐ³ÑƒÑ‡Ð°Ñ Ñ…ÑƒÑ‚ÐºÐ°Ñьць (нам/вонкі):\t%lli %s/%lli %s\n" " СÑÑ€ÑднÑÑ Ñ…ÑƒÑ‚ÐºÐ°Ñьць (нам/вонкі):\t%lli %s/%lli %s\n" " Перададзена (нам/вонкі):\t%lli %s/%lli %s\n" " Ð§Ð°Ñ Ð½Ð° лініі:\t%d:%02d:%02d%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Id выклікальніка:\t" msgid "Workspace: " msgstr "Працоўнае поле: " msgid "Back" msgstr "Ðазад" msgid "Alt+Left" msgstr "Alt+Улева" msgid "Forward" msgstr "Ðаперад" msgid "Alt+Right" msgstr "Alt+Управа" msgid "Previous" msgstr "ПапÑÑ€Ñдні" msgid "Next" msgstr "ÐаÑтупны" msgid "Contents" msgstr "ЗьмеÑÑ‚" msgid "Index" msgstr "Пералік" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Закрыць" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Ужывай: %s ІМЯ_ФÐЙЛÐ\n" "\n" "ГÑта вельмі проÑты гартач HTML, Ñкі паказвае дакумант зь іменем " "ІМЯ_ФÐЙЛÐ.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "ÐÑправільны шлÑÑ…: %s\n" msgid "Invalid path: " msgstr "ÐÑправільны шлÑÑ…:" msgid "List View" msgstr "Паказ ÑьпіÑу" msgid "Icon View" msgstr "Паказ значак" msgid "Open" msgstr "Ðдкрыць" msgid "Undo" msgstr "СкаÑаваць зьмены" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Ðовы" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "ПеразапуÑк" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Тую ж гульню" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "ДзеÑньне `%s' патрабуе прынамÑÑ– %d парамÑтраў." #, c-format msgid "Invalid expression: `%s'" msgstr "ÐÑправільны выраз: `%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "ÐŸÑ€Ð°Ð¹Ð¼ÐµÐ½Ð°Ð²Ð°Ð½Ñ‹Ñ Ñымбалі воблаÑьці `%s' (лікавы дыÑпазон: %ld%-ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "ДрÑннае Ñ–Ð¼Ñ Ð²Ð°Ñ€ÑˆÑ‚Ð°Ñ‚Ð°: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "Варштат па-за межамі: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Ужывай: %s [ОПЦЫІ] ДЗЕЯÐЬÐІ\n" "\n" "Опцыі:\n" " -display ДЫСПЛЕЙ Злучаецца з X ÑÑрвÑрам вызначаным Ñк " "ДЫСПЛЕЙ.\n" " ДаўнÑта: $DISPLAY ці :0.0, Ñк Ð½Ñ " "вызначаны.\n" " -window ID_Ð’ÐКÐРВызначае вакно Ð´Ð»Ñ Ð¼Ð°Ð½Ñ–Ð¿ÑƒÐ»Ñцый. " "ÐÑобныÑ\n" " вызначнікі - `root' Ð´Ð»Ñ ÐºÐ°Ñ€Ð½Ñвога " "вакна ды\n" "\t\t\t `focus' Ð´Ð»Ñ Ð²Ð°ÐºÐ½Ð° Ñž фокуÑе ўводу.\n" " -class WM_CLASS КлÑÑа ÐºÑ–Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ð²Ð¾ÐºÐ½Ð°Ð¼Ñ– Ð´Ð»Ñ Ñ‚Ñ‹Ñ… " "вакон, ÑкіÑ\n" "\t\t\t будуць абÑлугоўваю утрымлівае\n" "\t\t\t кропку, то толькі вокны з дакладна такой жа\n" "\t\t\t ўлаÑьціваÑьцю WM_CLASS выбіраюцца. Калі кропкі\n" "\t\t\t нÑма вокны, то вокны тае ж клÑÑÑ‹ ці таго ж\n" "\t\t\t аÑобніка (г.зн. `-name') выбіраюцца.\n" "ДзеÑньні:\n" " setIconTitle ЗÐГÐЛОВÐК УÑтанавіць загаловак значкі.\n" " setWindowTitle ЗÐГÐЛОВÐК УÑтанавіць загаловак вакна.\n" " setState МÐСКРСТÐРУÑтанавіць Ñтан вакна GNOME'а Ñž " "`СТÐÐ'.\n" " \t\t\t Узьдзейнічае толькі на біты, Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ñ‹Ñ `МÐСКÐЙ'.\n" " `СТÐÐ' ды `МÐСКÐ' - выразы з " "воблаÑьці\n" " `Ñтан вакна GNOME'.\n" " toggleState СТÐРПераключыць біты Ñтану вакна GNOME'а " "вызначаныÑ\n" " выразам `СТÐÐ'.\n" " setHints ПÐДКÐЗКІ УÑтанавіць падказкі вакон GNOME у " "`ПÐДКÐЗКІ'.\n" " setLayer ПЛÐСТ ПерамеÑьціць вакно Ñž іншы плаÑÑ‚ вакон " "GNOME'а.\n" " setWorkspace Ð’ÐРШТÐТ ПерамеÑьціць вакно на іншы варштат. " "Выберы\n" " \t\t\t карнÑвое вакно, каб перайÑьці да іншага варштату.\n" " listWorkspaces \t Паказаць імёны ÑžÑÑ–Ñ… варштатаў.\n" " setTrayOption ОПЦЫЯ_ПÐÐЭЛІ УÑтанавіць падказку опцыі Ñподка " "IceWM.\n" "\n" "Выразы:\n" " Выраз - гÑта ÑÑŒÐ¿Ñ–Ñ Ð·Ð½Ð°ÐºÐ°Ñž аднае воблаÑьці, Ð·Ð»ÑƒÑ‡Ð°Ð½Ñ‹Ñ Ð· дапамогай `" "+' ці `|':\n" "\n" " ВЫРÐЗ ::= ЗÐÐКL | ВЫРÐЗ ( `+' | `|' ) ЗÐÐК\n" "\n" # Set the IceWM tray option hint?? msgid "GNOME window state" msgstr "Стан вакна GNOME'а" msgid "GNOME window hint" msgstr "Падказка вакна GNOME'а" msgid "GNOME window layer" msgstr "ПлаÑÑ‚ вакна GNOME'а" msgid "IceWM tray option" msgstr "ÐžÐ¿Ñ†Ñ‹Ñ Ñподка IceWM" msgid "Usage error: " msgstr "Памылка ўжываньнÑ: " #, c-format msgid "Invalid argument: `%s'." msgstr "ДрÑнны парамÑтар: `%s'." msgid "No actions specified." msgstr "ÐÑ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð° дзеÑньнÑÑž." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Ðемагчыма адкрыць дыÑплей: %s. ПатрÑбна запуÑьціць X Ñ– ÑžÑтанавіць " "$DISPLAY." #, c-format msgid "Invalid window identifier: `%s'" msgstr "ДрÑнны вызначнік вакна: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "Працоўнае поле #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "ÐевÑдомае дзеÑньне: `%s'" #, c-format msgid "Socket error: %d" msgstr "Памылка Ñокета: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Іграю ўзор #%d (%s)" #, c-format msgid "No such device: %s" msgstr "ÐÑма такой прылады: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Ðемагчыма злучыцца з дÑманам ESound: %s" msgid "" msgstr "<нÑма>" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Памылка <%d> Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð¿Ð°Ð´Ð³Ñ€ÑƒÐ·ÐºÑ– `%s:%s'" # fixme #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Узор <%d> падгружаны Ñк `%s:%s'" # fixme #, c-format msgid "Playing sample #%d" msgstr "Іграю ўзор #%d" # fixme #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Ðемагчыма злучыцца з ÑÑрвÑрам YIFF: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Ðемагчыма зьÑніць аўдыёрÑжым у `%s'." #, fuzzy, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "ДÑÑ‚Ñктаванае пераключÑньне аўдыёрÑжымаў, пачатковы Ñ€Ñжым `%s' больш " "Ð½Ñ Ð´Ð·ÐµÐ¹Ñны." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "ДÑÑ‚Ñктаванае пераключÑньне аўдыёрÑжымаў, аўтазьмена Ñ€Ñжыму Ð½Ñ " "дзейÑнаÑ." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "ПапÑÑ€Ñдні аўдыёрÑжым перавызначаны `%s'." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Ужывай: %s [ОПЦЫЯ]...\n" "\n" "Прайграе аўдыёфайлы, Ð°Ð´Ð¿Ð°Ð²ÐµÐ´Ð½Ñ‹Ñ Ð·Ð´Ð°Ñ€ÑньнÑм GUI, учыненым IceWM'ам.\n" "\n" "Опцыі:\n" "\n" " -d, --display=ДЫСПЛЕЙ Ужыты IceWM'ам дыÑплей (даўнÑта: " "$DISPLAY).\n" " -s, --sample-dir=КÐТ Вызначае каталёг, Ñкі ўтрымлівае " "гукавыÑ\n" " файлы (г.зн. ~/.icewm/sounds).\n" " -i, --interface=ÐТРЫМÐЛЬÐІК Вызначае атрымальнік гукавога " "вываду,\n" " можа быць: OSS, YIFF ці ESD\n" " -D, --device=ПРЫЛÐДР(Толькі OSS) вызначае апрацоўшчык " "лічбавага\n" " гукавога Ñыгналу (даўнÑта /dev/" "dsp).\n" " -S, --server=ÐДР:ПОРТ\t (ESD ды YIFF) вызначае Ð°Ð´Ñ€Ð°Ñ Ð´Ñ‹ нумар " "порту\n" " ÑÑрвÑру (даўнÑта localhost:16001 Ð´Ð»Ñ " "ESD\n" "\t\t\t\tды localhost:9433 Ð´Ð»Ñ YIFF).\n" " -m, --audio-mode[=РЭЖЫМ] (Толькі YIFF) вызначае аўдыёрÑжым " "(пакінь\n" " пуÑтым, каб атрымаць ÑьпіÑ).\n" " --audio-mode-auto \t(Толькі YIFF) зьмÑнÑе аўдыёрÑжым зьлёту " "длÑ\n" " найлепшай адпаведнаÑьці ўзору (можа " "выклікаць\n" " праблемы зь іншымі кліентамі Y, " "перавызначае\n" " --audio-mode).\n" "\n" " -v, --verbose Быць шматÑлоўным (піÑаць кожнае " "гукавое\n" " здарÑньне Ñž stdout).\n" " -V, --version ÐапіÑаць вÑÑ€ÑÑ–ÑŽ ды выйÑьці.\n" " -h, --help ÐапіÑаць (гÑты) Ñкран даведкі ды " "выйÑьці.\n" "\n" "Ð’Ñртае значÑньні:\n" "\n" " 0 ПаÑьпÑхова.\n" " 1 ÐÐ³ÑƒÐ»ÑŒÐ½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°.\n" " 2 Памылка каманднага радка.\n" " 3 Памылка падÑÑ‹ÑÑ‚Ñмы (г.зн. немагчыма злучыцца з ÑÑрвÑрам).\n" "\n" msgid "Multiple sound interfaces given." msgstr "Ð”Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ Ð½ÐµÐºÐ°Ð»ÑŒÐºÑ– гукавых інтÑрфÑйÑаў." #, c-format msgid "Support for the %s interface not compiled." msgstr "Падтрымка Ð´Ð»Ñ Ñ–Ð½Ñ‚ÑрфÑйÑу %s Ð½Ñ ÑžÐ»ÑƒÑ‡Ð°Ð½Ð°Ñ." #, c-format msgid "Unsupported interface: %s." msgstr "ІнтÑрфÑÐ¹Ñ %s не падтрымліваецца." #, c-format msgid "Received signal %d: Terminating..." msgstr "Ðтрыманы Ñыгнал %d: СканчÑньне працы..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Ðтрыманы Ñыгнал %d: Перазагрузка ўзораў..." msgid "Hex View" msgstr "ШаÑнаццаткавы праглÑд" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "РаÑкрываць табулÑцыі" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "ПераноÑіць радкі" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: нераÑÐ¿Ð°Ð·Ð½Ð°Ð½Ð°Ñ Ð¾Ð¿Ñ†Ñ‹Ñ `%s'\n" "ПаÑпрабуй `%s --help', каб атрымаць болей зьвеÑтак.\n" #, c-format msgid "Loading image %s failed" msgstr "ÐÑÑžÐ´Ð°Ð»Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° выÑвы %s" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "ÐÑÑžÐ´Ð°Ð»Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° выÑвы \"%s\": %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Ужывай: icewmhint [клÑÑа.аÑобнік] Ð¾Ð¿Ñ†Ñ‹Ñ Ð¿Ð°Ñ€Ð°Ð¼Ñтар\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Ðе Ñтае памÑці (даўжынÑ=%d)." msgid "Warning: " msgstr "Увага: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "" #, fuzzy msgid "Default" msgstr "Выдаліць" msgid "(C)" msgstr "(C)" msgid "Theme:" msgstr "ТÑма: " msgid "Theme Description:" msgstr "ÐпіÑаньне Ñ‚Ñмы:" msgid "Theme Author:" msgstr "Ðўтар Ñ‚Ñмы:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm - Пра" msgid "Unable to get current font path." msgstr "Ðемагчыма атрымаць багучы шлÑÑ… шрыфтоў." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "ÐевÑдомы фармат улаÑьціваÑьці ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Ð¨Ð¼Ð°Ñ‚Ñ€Ð°Ð·Ð¾Ð²Ñ‹Ñ Ð·Ð³Ð°Ð´ÐºÑ– градыента \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "ÐевÑдомае Ñ–Ð¼Ñ Ð³Ñ€Ð°Ð´Ñ‹ÐµÐ½Ñ‚Ð°: %s" msgid "_Logout" msgstr "_ВыйÑьці" msgid "_Cancel logout" msgstr "_Ðдмена выхаду" msgid "Lock _Workstation" msgstr "_ЗаблÑкаваць Станцыю" msgid "Re_boot" msgstr "Перазагрузіць _кампутар" msgid "Shut_down" msgstr "_Выключыць кампутар" msgid "Restart _Icewm" msgstr "ПеразапуÑк _Icewm" msgid "Restart _Xterm" msgstr "ПеразапуÑк _Xterm" msgid "_Menu" msgstr "Ðа ўзроўні _мÑню" msgid "_Above Dock" msgstr "Па-над _докам" # fixme msgid "_Dock" msgstr "Ðа _ўзроўні доку" # fixme msgid "_OnTop" msgstr "Ðад уÑімі _вокнамі" msgid "_Normal" msgstr "_Ðармальнае разьмÑшчÑньне" msgid "_Below" msgstr "_Пад уÑімі вокнамі" msgid "D_esktop" msgstr "Ðа ўзроўні _Ñтальца" msgid "_Restore" msgstr "Вернуць ранейшы _Ñтан" msgid "_Move" msgstr "_ПераÑунуць вакно" msgid "_Size" msgstr "ЗьмÑніць па_мер" msgid "Mi_nimize" msgstr "З_гарнуць" msgid "Ma_ximize" msgstr "_Разгарнуць" msgid "_Fullscreen" msgstr "Ðа поўны _Ñкран" msgid "_Hide" msgstr "С_хаваць" msgid "Roll_up" msgstr "С_круціць угору" msgid "R_aise" msgstr "Уз_ьнÑць над уÑімі вокнамі" msgid "_Lower" msgstr "Ðп_уÑьціць пад уÑе вокны" msgid "La_yer" msgstr "Узровень разьмÑ_шчÑньнÑ" msgid "Move _To" msgstr "ПерамеÑьціць на _варштат" msgid "Occupy _All" msgstr "Хай займае _ÑžÑе варштаты" msgid "Limit _Workarea" msgstr "_Ðбмежаваць воблаÑьць" msgid "Tray _icon" msgstr "Значка _панÑлі" msgid "_Close" msgstr "За_крыць" msgid "_Kill Client" msgstr "Заб_іць кліент" msgid "_Window list" msgstr "_Ð¡ÑŒÐ¿Ñ–Ñ Ð²Ð°ÐºÐ¾Ð½" msgid "Another window manager already running, exiting..." msgstr "Іншы кіраўнік вакон запушчаны, выходжу..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Ðемагчыма перазапуÑьціца: %s\n" "Ці ÑпаÑылаецца $PATH на %s?" #, fuzzy, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "Ужывай: %s [ОПЦЫІ]\n" "ЗапуÑкае кіраўнік вакон IceWM.\n" "\n" "Опцыі:\n" " --display=ІМЯ ІМЯ X ÑÑрвÑра, Ñкі будзе выкарыÑтоўвацца.\n" "%s --sync Сынхранізаваць каманды X11.\n" "\n" " -t, --theme=ФÐЙЛ Загрузіць Ñ‚Ñму з ФÐЙЛа.\n" " -c, --config=ФÐЙЛ Загрузіць уÑталёўкі з ФÐЙЛа.\n" " -n, --no-configure Ігнараваць файл уÑталёвак.\n" "\n" " -v, --version Ðадрукаваць зьвеÑткі аб вÑÑ€ÑÑ–Ñ– ды выйÑьці.\n" " -h, --help Ðадрукаваць гÑты Ñкран даведкі ды выйÑьці.\n" "%s --restart Толькі Ð”Ð»Ñ Ð½ÑƒÑ‚Ñ€Ð°Ð½Ð°Ð³Ð° ўжытку, не " "выкарыÑтоўвай!\n" "\n" "ÐŸÐµÑ€Ð°Ð¼ÐµÐ½Ð½Ñ‹Ñ Ð°ÐºÑ€ÑƒÐ¶ÑньнÑ:\n" " ICEWM_PRIVCFG=ШЛЯХ Каталёг, Ñкі будзе ўжывацца Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð°Ñž " "ÑžÑталёвак\n" " карыÑтальніка, \"$HOME/.icewm/\" даўнÑта.\n" " DISPLAY=ІМЯ Ð†Ð¼Ñ X ÑÑрвÑра, Ñкі будзе выкарыÑтоўацца. " "ДаўнÑта\n" " залежыць ад Xlib.\n" " MAIL=URL РазьмÑшчÑньне паштовай Ñкрыні. Калі адÑутнічае " "тып\n" " ужываецца лÑкальны тып \"file://\".\n" "\n" "Ðаведай http://www.icewm.org/ каб паведаміць пра памылкі, " "запатрабаваць\n" "падтрымкі, ці проÑта выказацца пра IceWM...\n" msgid "Confirm Logout" msgstr "Пацьвердзі выйÑьце" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Ð”Ð»Ñ Ð²Ñ‹Ð¹ÑÑŒÑ†Ñ Ñ‚Ñ€Ñба закрыць уÑе даÑтававаньні.\n" "ПрацÑгнуць?" msgid "Bad Look name" msgstr "КепÑкае Ñ–Ð¼Ñ `ВыглÑду'" #, fuzzy msgid "Loc_k Workstation" msgstr "_ЗаблÑкаваць Станцыю" msgid "_Logout..." msgstr "_Скончыць ÑÑанÑ" msgid "_Cancel" msgstr "_Ðдмена" msgid "_Restart icewm" msgstr "_ПеразапуÑьціць icewm" msgid "_About" msgstr "Пр_а" msgid "Maximize" msgstr "Разгарнуць" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Згарнуць" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Схаваць" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Пракруціць" # fixme #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "УзьнÑць/апуÑьціць" msgid "Kill Client: " msgstr "Забіць кліент: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "УВÐГÐ! УÑе Ð½ÐµÐ·Ð°Ñ…Ð°Ð²Ð°Ð½Ñ‹Ñ Ð·ÑŒÐ¼ÐµÐ½Ñ‹ будуць згубленыÑ,\n" "калі забіць гÑты кліент. ПрацÑгваць?" msgid "Restore" msgstr "Ðднавіць" msgid "Rolldown" msgstr "РаÑкруціць" # fixme #, c-format msgid "Error in window option: %s" msgstr "КепÑÐºÐ°Ñ Ð¾Ð¿Ñ†Ñ‹Ñ Ð²Ð°ÐºÐ½Ð°: %s" #, c-format msgid "Unknown window option: %s" msgstr "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¾Ð¿Ñ†Ñ‹Ñ Ð²Ð°ÐºÐ½Ð°: %s" msgid "Syntax error in window options" msgstr "СынтакÑÑ‹Ñ‡Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ñž опцыÑÑ… вакна" msgid "Out of memory for window options" msgstr "Ðе Ñтае памÑці Ð´Ð»Ñ Ð¾Ð¿Ñ†Ñ‹Ð¹ вакон." msgid "Missing command argument" msgstr "Прапушчаны парамÑтар каманды" #, c-format msgid "Bad argument %d" msgstr "КепÑкі парамÑтар %d" #, c-format msgid "Error at prog %s" msgstr "Памылка праграмы %s" #, c-format msgid "Unexepected keyword: %s" msgstr "Ðечаканае ключавое Ñлова: %s" # fixme #, c-format msgid "Error at key %s" msgstr "Памылка ключа %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Праграмы" msgid "_Run..." msgstr "_Выканаць..." msgid "_Windows" msgstr "Ð’_окны" msgid "_Help" msgstr "Да_ведка" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_ТÑмы" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Кіраўнік ÑÑÑій: невÑдомы радок %s" msgid "Task Bar" msgstr "ПанÑль задач" msgid "Tile _Vertically" msgstr "Побач па _вÑртыкалі" msgid "T_ile Horizontally" msgstr "Побач па _гарызанталі" msgid "Ca_scade" msgstr "_КаÑкадам" msgid "_Arrange" msgstr "_Упарадкавана" msgid "_Minimize All" msgstr "_Згарнуць уÑе" msgid "_Hide All" msgstr "_Схаваць уÑе" msgid "_Undo" msgstr "_Вернуць" msgid "Arrange _Icons" msgstr "Упарадкаваць _значкі" msgid "_Refresh" msgstr "Ð_бнавіць" msgid "_License" msgstr "_ЛіцÑнзіÑ" msgid "Favorite applications" msgstr "Ð›ÑŽÐ±Ñ–Ð¼Ñ‹Ñ Ð´Ð°ÑтаÑаваньні" msgid "Window list menu" msgstr "МÑню ÑьпіÑу вакон" #, fuzzy msgid "Show Desktop" msgstr "Ðа ўзроўні _Ñтальца" #, fuzzy msgid "All Workspaces" msgstr "Працоўнае поле: " #, fuzzy msgid "Del" msgstr "Выдаліць" msgid "_Terminate Process" msgstr "Ск_ончыць працÑÑ" msgid "Kill _Process" msgstr "Забіць _працÑÑ" msgid "_Show" msgstr "Па_казаць" msgid "_Minimize" msgstr "Зга_рнуць" msgid "Window list" msgstr "Ð¡ÑŒÐ¿Ñ–Ñ Ð²Ð°ÐºÐ¾Ð½" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Варштат %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Цыкль паведамленьнÑÑž: нÑўдалы выбар (errno=%d)" # fixme #, c-format msgid "Unrecognized option: %s\n" msgstr "ÐераÑÐ¿Ð°Ð·Ð½Ð°Ð½Ð°Ñ Ð¾Ð¿Ñ†Ñ‹Ñ: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "ÐераÑпазнаны парамÑтар: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "ПарамÑтар патрÑбны Ð´Ð»Ñ Ð¿ÐµÑ€Ð°ÐºÐ»ÑŽÑ‡ÑÐ½ÑŒÐ½Ñ %s" #, c-format msgid "Unknown key name %s in %s" msgstr "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ñ–Ð¼Ñ ÐºÐ»ÑŽÑ‡Ð° %s у %s" #, c-format msgid "Bad argument: %s for %s" msgstr "КепÑкі парамÑтар: %s у %s" # fixme #, c-format msgid "Bad option: %s" msgstr "КепÑÐºÐ°Ñ Ð¾Ð¿Ñ†Ñ‹Ñ: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "ÐÑÑžÐ´Ð°Ð»Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° карцінкі \"%s\"" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Ð‘Ð»Ð°Ð³Ð°Ñ ÐºÐ°Ñ€Ñ†Ñ–Ð½ÐºÐ° курÑора: \"%s\" утрымлівае зашмат унікальных колераў" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "ХІБÐ? Imlib быў здольны чытаць \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "ХІБÐ? КепÑкі загаловак XPM, але Imlib быў здольны разабраць \"%s\"" # fixme #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "ХІБÐ? Ðечаканы канец файла XPM, але Imlib быў здольны разабраць \"%s" "\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "ХІБÐ? Ðечаканы знак, але Imlib быў здольны разабраць \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "Ðемагчыма загрузіць шрыфт \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "нÑÑžÐ´Ð°Ð»Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° даўнÑтага шрыфту \"%s\"." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Ðемагчыма загрузіць шрыфтовае мноÑтва \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "ÐдÑутнічае кодавы набор Ð´Ð»Ñ Ð¼Ð½Ð¾Ñтва шрыфтоў \"%s\"." # fixme #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Ðе Ñтае памÑці Ð´Ð»Ñ Ð²Ñ‹Ñвы \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "ÐÑÑžÐ´Ð°Ð»Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° выÑвы \"%s\"" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: нÑўдалае набыцьцё карцінкі X" # fixme msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: нÑўдалае ÑупаÑтаўленьне выÑвы Imlib Ñž карцінку X" msgid "Cu_t" msgstr "_Выразаць" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_КапіÑваць" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_УÑтавіць" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "УÑтавіць в_ылучанае" msgid "Select _All" msgstr "Вылучыць _уÑÑ‘" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "ÐаÑтройкі лÑкалі не падтрымліваюцца бібліÑÑ‚Ñкай C: ужываю лÑкаль \\'С" "\\'." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "ÐÑўдалае вызначÑньне кодавага набору Ñž данай лÑкалі. Ужываецца ISO-" "8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv не забÑÑьпечвае (даÑтаткова) пераўтварÑньне з %s у %s." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "ÐÑправільны шматбайтавы радок \"%s\": %s" msgid "OK" msgstr "Так" msgid "Cancel" msgstr "Ðдмена" #, c-format msgid "Out of memory for pixel map %s" msgstr "Ðе Ñтае памÑці Ð´Ð»Ñ Ð¼Ð°Ð¿Ñ‹ пікÑалÑÑž %s" #, c-format msgid "Could not find pixel map %s" msgstr "Ðемагчыма знайÑьці мапу пікÑалÑÑž %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Ðе Ñтае памÑці Ð´Ð»Ñ Ð±ÑƒÑ„Ñра RGB пікÑалÑÑž %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "ÐÑ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹ буфÑÑ€ RGB пікÑалÑÑž %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Ужываю даўнÑты мÑханізм Ð´Ð»Ñ Ð¿ÐµÑ€Ð°ÑžÑ‚Ð²Ð°Ñ€ÑÐ½ÑŒÐ½Ñ Ð¿Ñ–ÐºÑалÑÑž (глыбінÑ: %d; " "маÑка (чырвоны/зÑлёны/Ñіні): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d-бітны буфÑÑ€ не падтрымліваюцца (покуль) " msgid "$USER or $LOGNAME not set?" msgstr "$USER ці $LOGNAME Ð½Ñ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ñ‹Ñ?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" не апіÑвае агульную Ñхему інтÑрнÑту" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" Ð½Ñ ÑžÑ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ апіÑÐ°Ð½ÑŒÐ½Ñ Ñхемы" #, fuzzy #~ msgid "program label expected" #~ msgstr "ЧакаўÑÑ Ð¿Ð°Ð´Ð·ÐµÐ»ÑŒÐ½Ñ–Ðº" #, fuzzy #~ msgid "menu caption expected" #~ msgstr "ЧакаўÑÑ Ð¿Ð°Ð´Ð·ÐµÐ»ÑŒÐ½Ñ–Ðº" #, fuzzy #~ msgid "opening curly expected" #~ msgstr "ЧакаўÑÑ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð½Ñ–Ðº" #, fuzzy #~ msgid "action name expected" #~ msgstr "ЧакаўÑÑ Ð¿Ð°Ð´Ð·ÐµÐ»ÑŒÐ½Ñ–Ðº" #, fuzzy #~ msgid "unknown action" #~ msgstr "ÐевÑдомае дзеÑньне: `%s'" #~ msgid "Failed to open %s: %s" #~ msgstr "ÐÑўдалае адкрыцьцё %s: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "ÐÑўдалы запуÑк %s: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "ÐÑўдалае ÑтварÑньне дзіцÑчага працÑÑу: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Файл %s не зьÑўлÑецца звычайным" # fixme #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "ЧакалаÑÑ Ð¿Ð°Ñ€Ð° шаÑнаццаткавых лічбаў" #~ msgid "Unexpected identifier" #~ msgstr "Ðечаканы вызначнік" #~ msgid "Identifier expected" #~ msgstr "ЧакаўÑÑ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð½Ñ–Ðº" #~ msgid "Separator expected" #~ msgstr "ЧакаўÑÑ Ð¿Ð°Ð´Ð·ÐµÐ»ÑŒÐ½Ñ–Ðº" #, fuzzy #~ msgid "Invalid token" #~ msgstr "ÐÑправільны шлÑÑ…:" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Ðе шаÑнаццаткавы лік: %c%c (у \"%s\")" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - невÑдомы фармат (%d)" #~ msgid "cpu: %d %d %d %d" #~ msgstr "працÑÑар: %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat знайшоў зашмат працÑÑараў: мае быць %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "# preferences(%s) - generated by genpref\n" #~ "\n" #~ msgstr "# уÑталёўкі(%s) ÑÑ‚Ð²Ð¾Ñ€Ð°Ð½Ñ‹Ñ genpref\n" #~ "\n" #~ msgid "# NOTE: All settings are commented out by default, be sure " #~ "to\n" #~ "# uncomment them if you change them!\n" #~ "\n" #~ msgstr "# ЗÐÐŽÐ’ÐГÐ: уÑе ÑžÑталёўкі даўнÑта закамÑнтаваныÑ, не забудзь\n" #~ "# раÑкамÑнтаваць Ñ–Ñ… па зьмÑненьні!\n" #~ "\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "ÐÑўдалае ўжываньне XQueryTree з вакном 0x%x" #~ msgid "Failed to select focused window" #~ msgstr "ÐÑўдалы выбар вакна, Ñкое ўтрымлівае фокуÑ" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Сабраны Ñа ÑьцÑгам DEBUG. Будуць друкавацца паведамленьні " #~ "адладкі." #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "Ужывай: icewmbg [ОПЦЫЯ]... карцінка1 [карцінка2]...\n" #~ "ЗьмÑнÑе тло Ñтальца пры пераключÑньні варштатаў.\n" #~ "ÐŸÐµÑ€ÑˆÐ°Ñ ÐºÐ°Ñ€Ñ†Ñ–Ð½ÐºÐ° ўжываецца Ñк даўнÑтаÑ.\n" #~ "\n" #~ "-s, --semitransparency Задзейнічаць падтрымку пÑÑўдапразрыÑтых " #~ "Ñ‚Ñрміналаў\n" #~ msgid "_No icon" #~ msgstr "_БÑз значкі" #~ msgid "_Minimized" #~ msgstr "_Калі вакно згорнутае" #~ msgid "_Exclusive" #~ msgstr "_Выключнае ўжываньне" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "Памылкі X %s(0x%lX): %s" #~ msgid "Window %p has no XA_ICEWM_PID property. Export the " #~ "LD_PRELOAD variable to preload the preice library." #~ msgstr "Вакно %p Ð½Ñ Ð¼Ð°Ðµ ўлаÑьціваÑьці XA_ICEWM_PID. ЭкÑпартуй " #~ "пераменную LD_PRELOAD,каб папÑÑ€Ñдне загружаць кніжню preice." #~ msgid "Obsolete option: %s" #~ msgstr "СаÑтарÑÐ»Ð°Ñ Ð¾Ð¿Ñ†Ñ‹Ñ: %s" #, fuzzy #~ msgid "Forking failed (errno=%d)" #~ msgstr "ÐÑўдалае ÑтварÑньне каналу (errno=%d)." #~ msgid "Gnome" #~ msgstr "GNOME" #~ msgid "Gnome User Apps" #~ msgstr "ДаÑтаÑаваньні GNOME карыÑтальніка" #~ msgid "KDE" #~ msgstr "KDE" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "Зашмат злучÑньнÑÑž ICE -- не падтрымліваецца" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Кіраўнік ÑÑÑій: нÑÑžÐ´Ð°Ð»Ð°Ñ Ñпроба IceAddConnectionWatch." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Кіраўнік ÑÑÑій: памылка ініцыÑлізацыі: %s" #, fuzzy #~ msgid "Failed to create annonymous pipe (errno=%d)." #~ msgstr "ÐÑўдалае ÑтварÑньне каналу (errno=%d)." #, fuzzy #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Ð‘Ð»Ð°Ð³Ð°Ñ ÐºÐ°Ñ€Ñ†Ñ–Ð½ÐºÐ° курÑора: \"%s\" утрымлівае зашмат унікальных " #~ "колераў" #~ msgid "Resource allocation for rotated string \"%s\" (%dx%d px) " #~ "failed" #~ msgstr "ÐÑўдалае выдзÑленьне Ñ€ÑÑурÑаў Ð´Ð»Ñ Ð¿Ð°Ð²ÐµÑ€Ð½ÑƒÑ‚Ð°Ð³Ð° радка \"%s\" (%" #~ "dx%d px)" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "ÐÑўдалае ÑтварÑньне ананімнага каналу: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "ÐÑўдалае падваеньне файлавага дÑÑкрыптара: %s" # fixme #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: нÑўдалае капіÑваньне графічнага ÑлемÑнта 0x%x у буфÑÑ€ " #~ "пікÑалÑÑž" #~ msgid "M" #~ msgstr "M" icewm-1.3.7/po/pt_BR.po0000664000076600007660000011275411463274241013626 0ustar develdevel# Portuguese messages for IceWM # Copyright (C) 2000-2001 Marko Macek # This file is distributed under the same license as the icewm 1.3.4pre2 package. # Translator: Sérgio Brandão Cipolla , 2009 # Previous translation by: Fernando Brunelli , 2000. msgid "" msgstr "Project-Id-Version: icewm 1.3.4pre2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2009-06-20 11:46-0300\n" "Last-Translator: Sérgio Brandão Cipolla \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Language: pt_BR\n" msgid " - Power" msgstr " - Energia" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "E" #, c-format msgid " - Charging" msgstr " - Recarregando" msgid "C" msgstr "R" #, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "" #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "Carga da CPU: " #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Protocolo de correio inválido: \"%s\"" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Caminho ao correio inválido: \"%s\"" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Usando Correio: \"%s\"\n" msgid "Error checking mailbox." msgstr "Erro ao checar o correio." #, c-format msgid "%ld mail message." msgstr "%ld mensagem de correio." #, c-format msgid "%ld mail messages." msgstr "%ld mensagens de correio." #, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr "Interface %s:\n" " Taxa atual (entrada/saída):\t%li %s/%li %s\n" " Média atual (entrada/saída):\t%lli %s/%lli %s\n" " Média total (entrada/saída):\t%li %s/%li %s\n" " Transferido (entrada/saída):\t%lli %s/%lli %s\n" " Tempo de conexão:\t%ld:%02ld:%02ld%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Id chamante:\t" msgid "Workspace: " msgstr "ÃÂrea de trabalho: " msgid "Back" msgstr "Voltar" msgid "Alt+Left" msgstr "Alt+Esquerda" msgid "Forward" msgstr "Avançar" msgid "Alt+Right" msgstr "Alt+Direita" msgid "Previous" msgstr "Anterior" msgid "Next" msgstr "Próximo" msgid "Contents" msgstr "Conteúdo" msgid "Index" msgstr "ÃÂndice" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Fechar" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Uso: %s NOMEDOARQUIVO\n" "\n" "Um navegador HTML muito simples que mostra o documento especificado " "por NOMEDOARQUIVO.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Caminho inválido: %s\n" msgid "Invalid path: " msgstr "Caminho inválido: " msgid "List View" msgstr "Ver como lista" msgid "Icon View" msgstr "Ver como ícones" msgid "Open" msgstr "Abrir" msgid "Undo" msgstr "Desfazer" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Novo" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Reiniciar" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Mesmo Jogo" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "A ação `%s' requer ao menos %d argumentos." #, c-format msgid "Invalid expression: `%s'" msgstr "Expressão inválida: `%s'" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Símbolos nominados do domínio `%s' (âmbito numérico: %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Nome da área de trabalho inválido: `%s'" #, c-format msgid "Workspace out of range: %d" msgstr "ÃÂrea de trabalho fora de âmbito: %d" # - I translated the terms in capitals but was in doubt if that's right. # - Shouldn't 'geometry' be in capitals too? # - In the original 'list' should be 'lists'. #, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Uso: %s [OPÇÕES] AÇÕES\n" "\n" "Opções:\n" " -display DISPLAY Conecta-se ao servidor X especificado " "por DISPLAY.\n" " Padrão: $DISPLAY ou :0.0 quando não " "definido.\n" " -janela ID_JANELA Especifica a janela a manipular. " "Especial\n" " identificadores são `raiz' para a " "janela raiz e\n" " `foco' para a janela focalizada.\n" " -classe CLASSE_GJ Classe de gerenciamento da(s) janela" "(s) a\n" " manipular. Se CLASSE_GJ contém um " "ponto, apenas\n" " janelas com exatamente a mesma " "propriedade CLASSE_GJ\n" " são combinadas. Se não há ponto, " "janelas da\n" " mesma classe e janelas da mesma instâ" "ncia\n" " (ou `-nome') são selecionadas.\n" "\n" "Ações:\n" " definirNomedoÃÂcone NOME Definir o nome do ícone.\n" " definirNomedaJanela NOME Definir o nome da janela.\n" " definirGeometria GEOMETRIA Definir a geometria da janela.\n" " definirEstado MÃÂSCARA ESTADO Transpôr o estado da janela " "GNOME para ESTADO.\n" " Apenas as partes escolhidas por " "MÃÂSCARA são afetadas.\n" " ESTADO e MÃÂSCARA são expressões do " "domínio\n" " `estado da janela GNOME'.\n" " trocarEstado ESTADO Trocar as partes do estado da janela " "GNOME especificados\n" " pela expressão ESTADO.\n" " definirDicas DICAS Transpôr as dicas da janela GNOME " "para DICAS.\n" " definirCamada CAMADA Move a janela para outra camada " "de janela GNOME.\n" " definirÃÂreadetrabalho ÃÂREADETRABALHO Transfere a janela para " "outra área de trabalho.\n" " Seleciona a janela raiz para mudar a " "área de trabalho atual.\n" " listarÃÂreasdetrabalho Lista os nomes das áreas de " "trabalho\n" " definirOpçõesdaBandeja OPÇÕESDABANDEJA Definir a dica de " "opções da bandeja do IceWM.\n" "\n" "Expressões:\n" "Expressões são listas de símbolos de um domínio concatenados por " "`+' ou `|':\n" " EXPRESSÃO ::= SÃÂMBOLO | EXPRESSÃO ( `+' | `|' ) SÃÂMBOLO\n" "\n" msgid "GNOME window state" msgstr "Estado da janela GNOME" msgid "GNOME window hint" msgstr "Dica da janela GNOME" msgid "GNOME window layer" msgstr "Camada da janela GNOME" msgid "IceWM tray option" msgstr "Opções da bandeja IceWM" msgid "Usage error: " msgstr "Erro de uso: " #, c-format msgid "Invalid argument: `%s'." msgstr "Argumento inválido `%s'." msgid "No actions specified." msgstr "Nenhuma ação especificada." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Incapaz de abrir o display: %s. O X precisa estar rodando e o " "$DISPLAY definido." #, c-format msgid "Invalid window identifier: `%s'" msgstr "Identificador da janela inválido: `%s'" #, c-format msgid "workspace #%d: `%s'\n" msgstr "área de trabalho #%d: `%s'\n" #, c-format msgid "Unknown action: `%s'" msgstr "Ação desconhecida: `%s'" #, c-format msgid "Socket error: %d" msgstr "Erro de soquete: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Tocando amostra #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Dispositivo inexistente: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "Incapaz de conectar ao daemon ESound: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "Erro <%d> ao subir `%s:%s'" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Amostra <%d> subida como `%s:%s'" #, c-format msgid "Playing sample #%d" msgstr "Tocando amostra #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "Incapaz de conectar ao servidor YIFF: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Incapaz de mudar para o modo de áudio `%s'." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Mudança no modo de áudio detectada, modo de áudio inicial `%s' nÃ" "£o mais em vigor." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Mudança no modo de áudio detectada, mudança automática do modo " "de áudio desabilitada." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Sobrepujando o modo de áudio anterior `%s'." # It's used "ie" (that is). You didn't mean to use "e.g." (for example)? #, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 " Uso: %s [OPÇÃO] \n" " \n" " Toca arquivos de áudio em eventos gráficos abertos " "pelo IceWM.\n" " \n" " Opções:\n" " \n" " -d, --display=DISPLAY Display usado pelo IceWM " "(padrão: $DISPLAY).\n" " -s, --sample-dir=DIR Especifica o diretório " "que contém\n" " os arquivos de som (~/.icewm/sounds).\n" " -i, --interface=ALVO Especifica a interface alvo " "da saída de som,\n" " uma de OSS, YIFF, ESD\n" " -D, --device=DISPOSITIVO (somente OSS) " "especifica o processador\n" " de sinal digital (padrão /dev/dsp).\n" " -S, --server=END:PORT (ESD e YIFF) especifica o " "endereço do servidor e\n" " o número da porta (padrão localhost:16001 para ESD\n" " e localhost:9433 para YIFF).\n" " -m, --audio-mode[=MODO] (somente YIFF) especifica " "o modo ÃÂudio (deixe\n" " em branco para obter uma lista).\n" " --audio-mode-auto (somente YIFF) muda o modo " "ÃÂudio no ato para\n" " combinar melhor com ÃÂudio da amostra (pode causar " "problemas\n" " com outros clientes Y, sobrepuja\n" " --audio-mode).\n" " \n" " -v, --verbose Eloquente (imprime cada " "evento de áudio para\n" " stdout).\n" " -V, --version Imprime a informação da " "versão e finaliza.\n" " -h, --help Imprime (esta) tela de " "ajuda e finaliza.\n" " \n" " Valores de retorno:\n" " \n" " 0 Successo.\n" " 1 Erro genérico.\n" " 2 Erro de linha de comando.\n" " 3 Erro de subsistemas (incapaz de conectar ao " "servidor).\n" "\n" msgid "Multiple sound interfaces given." msgstr "Várias interfaces de som fornecidas." #, c-format msgid "Support for the %s interface not compiled." msgstr "Suporte para a interface %s não compilado." #, c-format msgid "Unsupported interface: %s." msgstr "Interface não suportada: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Sinal %d recebido: Terminando..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Sinal %d recebido: Recarregando amostras..." msgid "Hex View" msgstr "Visualização hex" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Expandir abas" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Envolver linhas" msgid "Ctrl+W" msgstr "Ctrl+W" msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "Uso: icewmbg [ -r | -q ]\n" " -r Reiniciar icewmbg\n" " -q Encerrar icewmbg\n" "Carrega o plano de fundo da área de trabalho conforme o arquivo de " "preferências\n" " DesktopBackgroundCenter - Mostra o plano de fundo centrado, não " "azulejado\n" " SupportSemitransparency - Suporte para terminais " "semitransparentes\n" " DesktopBackgroundColor - Cor do plano de fundo\n" " DesktopBackgroundImage - Imagem do plano de fundo\n" " DesktopTransparencyColor - Cor a anunciar para janelas " "semitransparentes\n" " DesktopTransparencyImage - Imagem a anunciar para janelas " "semitransparentes\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: opção não reconhecida `%s'\n" "Tente `%s --help' para mais informações.\n" #, c-format msgid "Loading image %s failed" msgstr "Carregamento da imagem %s falhou" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "Carregamento do pixmap \"%s\" falhou: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Uso: icewmhint [classe.instância] opção argumento\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Memória insuficiente (len=%d)." msgid "Warning: " msgstr "Atenção: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Ordem desconhecida no requerimento para mover/redimensionar: %d" msgid "Default" msgstr "Padrão" msgid "(C)" msgstr "(C)" msgid "Theme:" msgstr "Tema: " msgid "Theme Description:" msgstr "Descrição do tema:" msgid "Theme Author:" msgstr "Autor do tema:" msgid "CodeSet:" msgstr "Codificação:" msgid "Language:" msgstr "Língua:" msgid "icewm - About" msgstr "icewm - Sobre" msgid "Unable to get current font path." msgstr "Incapaz de obter o caminho atual para a fonte." # Should I translate ICEWM_FONT_PATH? msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "Formato imprevisto da propriedade ICEWM_FONT_PATH" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Várias referências para o gradiente \"%s\"" #, c-format msgid "Unknown gradient name: %s" msgstr "Nome do gradiente desconhecido: %s" msgid "_Logout" msgstr "_Sair da sessão" msgid "_Cancel logout" msgstr "_Cancelar saída" msgid "Lock _Workstation" msgstr "Bloquear _estação" msgid "Re_boot" msgstr "Rei_niciar" msgid "Shut_down" msgstr "Deslig_ar" msgid "Restart _Icewm" msgstr "Reiniciar _Icewm" msgid "Restart _Xterm" msgstr "Reiniciar _Xterm" msgid "_Menu" msgstr "_Menu" msgid "_Above Dock" msgstr "_Sobre o dock" msgid "_Dock" msgstr "_Dock" msgid "_OnTop" msgstr "Em _cima" msgid "_Normal" msgstr "_Normal" msgid "_Below" msgstr "Em_baixo" msgid "D_esktop" msgstr "ÃÂr_ea de trabalho" msgid "_Restore" msgstr "_Restaurar" msgid "_Move" msgstr "_Mover" msgid "_Size" msgstr "_Tamanho" msgid "Mi_nimize" msgstr "Mi_nimizar" msgid "Ma_ximize" msgstr "Ma_ximizar" msgid "_Fullscreen" msgstr "Tela _cheia" msgid "_Hide" msgstr "_Ocultar" msgid "Roll_up" msgstr "Enrol_ar" msgid "R_aise" msgstr "Para _frente" msgid "_Lower" msgstr "Para trá_s" msgid "La_yer" msgstr "Cama_da" msgid "Move _To" msgstr "Mover _para" msgid "Occupy _All" msgstr "Oc_upar todas" msgid "Limit _Workarea" msgstr "_Limitar área" msgid "Tray _icon" msgstr "ÃÂcone _bandeja" msgid "_Close" msgstr "Fec_har" msgid "_Kill Client" msgstr "_Interromper cliente" msgid "_Window list" msgstr "Lista de _janelas" msgid "Another window manager already running, exiting..." msgstr "Outro gerenciador de janelas já está sendo executado, saindo..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Não foi possível reiniciar: %s\n" "O $PATH leva a %s?" #, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "Uso: %s [OPÇÕES]\n" "Inicia o gerenciador de janelas IceWM.\n" "\n" "Opções:\n" " --display=NOME NOME do servidor X a usar.\n" "%s --sync Sincronizar comandos X11.\n" "\n" " -c, --config=ARQUIVO Carrega as preferências do ARQUIVO.\n" " -t, --theme=ARQUIVO Carrega tema do ARQUIVO.\n" " -n, --no-configure Ignora o arquivo de preferências.\n" "\n" " -v, --version Imprime a informação da versão e finaliza.\n" " -h, --help Imprime a janela sobre o uso e finaliza.\n" "%s --replace Substitui um gerenciador de janelas " "existente.\n" " --restart Não use isto: é uma flag interna.\n" "\n" "Variáveis do ambiente:\n" " ICEWM_PRIVCFG=CAMINHO Diretório a ser usado para arquivos de " "configuração\n" " privados, por padrão \"$HOME/.icewm/\".\n" " DISPLAY=NOME Nome do servidor X a usar, por padrão depende " "de Xlib.\n" " MAIL=URL Localização da sua caixa de correio. Se o " "esquema for omitido,\n" " o esquema do \"arquivo\" local é assumido.\n" "\n" "Visite http://www.icewm.org/ para reportar bugs, solicitar recursos, " "comentários...\n" msgid "Confirm Logout" msgstr "Confirmação de Saída" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Este procedimento fechará todas as aplicações ativas.\n" "Deseja continuar?" msgid "Bad Look name" msgstr "Nome de estilo (Look) inválido" msgid "Loc_k Workstation" msgstr "Blo_quear estação de trabalho" msgid "_Logout..." msgstr "_Sair..." msgid "_Cancel" msgstr "_Cancelar" msgid "_Restart icewm" msgstr "_Reiniciar icewm" msgid "_About" msgstr "So_bre" msgid "Maximize" msgstr "Maximizar" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Minimizar" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Ocultar" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Enrolar" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Frente/Trás" msgid "Kill Client: " msgstr "Interromper cliente: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "ATENÇÃO! Qualquer mudança não salva será perdida\n" "ao interromper este cliente. Deseja continuar?" msgid "Restore" msgstr "Restaurar" msgid "Rolldown" msgstr "Desenrolar" #, c-format msgid "Error in window option: %s" msgstr "Erro na opção da janela: %s" #, c-format msgid "Unknown window option: %s" msgstr "Opção desconhecida de janela: %s" msgid "Syntax error in window options" msgstr "Erro de sintaxe nas opções de janela" msgid "Out of memory for window options" msgstr "Memória insuficiente para as opções de janela" msgid "Missing command argument" msgstr "Argumento do comando faltando" #, c-format msgid "Bad argument %d" msgstr "Argumento inválido %d" #, c-format msgid "Error at prog %s" msgstr "Erro no prog %s" #, c-format msgid "Unexepected keyword: %s" msgstr "Palavra-chave imprevista: %s" #, c-format msgid "Error at key %s" msgstr "Erro na chave %s" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programas" msgid "_Run..." msgstr "_Executar..." msgid "_Windows" msgstr "_Janelas" msgid "_Help" msgstr "_Ajuda" msgid "_Click to focus" msgstr "_Clicar para focar" msgid "_Sloppy mouse focus" msgstr "_Foco segue o mouse" msgid "Custo_m" msgstr "_Personalizado" msgid "_Focus" msgstr "_Foco" msgid "_Themes" msgstr "_Temas" msgid "Se_ttings" msgstr "Con_figuração" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Gerenciador de sessão: linha desconhecida %s" msgid "Task Bar" msgstr "Barra de tarefas" msgid "Tile _Vertically" msgstr "Agrupar _verticalmente" msgid "T_ile Horizontally" msgstr "Agrupar hor_izontalmente" msgid "Ca_scade" msgstr "Cas_cata" msgid "_Arrange" msgstr "_Organizar" msgid "_Minimize All" msgstr "_Minimizar tudo" msgid "_Hide All" msgstr "Ocultar _tudo" msgid "_Undo" msgstr "_Desfazer" msgid "Arrange _Icons" msgstr "Organizar íco_nes" msgid "_Refresh" msgstr "_Atualizar" msgid "_License" msgstr "_Licença" msgid "Favorite applications" msgstr "Favoritos" msgid "Window list menu" msgstr "Lista de janelas" msgid "Show Desktop" msgstr "Mostrar área de trabalho" msgid "All Workspaces" msgstr "ÃÂreas de trabalho" msgid "Del" msgstr "Apagar" msgid "_Terminate Process" msgstr "T_erminar processo" msgid "Kill _Process" msgstr "Interromper _processo" msgid "_Show" msgstr "_Mostrar" msgid "_Minimize" msgstr "Minimi_zar" msgid "Window list" msgstr "Lista de janelas" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. ÃÂrea de trabalho %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Loop de mensagem: selecionar falhou (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Opção não reconhecida: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Argumento não reconhecido: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "Argumento requerido para comutador %s" #, c-format msgid "Unknown key name %s in %s" msgstr "Nome de chave %s desconhecido em %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Argumento inválido: %s para %s" #, c-format msgid "Bad option: %s" msgstr "Opção inválida: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "Carregamento do pixmap \"%s\" falhou" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Pixmap do cursor inválido: \"%s\" contém demasiadas cores " "singulares" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "BUG? lmlib pôde ler \"%s\"" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "BUG? Cabeçalho XPM malformado mas lmlib pôde analisar \"%s\"" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "BUG? Final do arquivo XPM imprevisto mas lmlib pôde analisar \"%s\"" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "BUG? Caractere imprevisto mas lmlib pôde analisar \"%s\"" #, c-format msgid "Could not load font \"%s\"." msgstr "Não foi possível carregar a fonte \"%s\"." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "Carregamento da fonte de reserva \"%s\" falhou." #, c-format msgid "Could not load fontset \"%s\"." msgstr "Não foi possível carregar o jogo de fontes \"%s\"." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "Codificação para fontes \"%s\" faltando:" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Memória insuficiente para o pixmap \"%s\"" #, c-format msgid "Loading of image \"%s\" failed" msgstr "Carregamento da imagem \"%s\" falhou" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: aquisição do pixmap do X falhou" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: mapeamento de pixmap Imlib da imagem para o X falhou" msgid "Cu_t" msgstr "Recor_tar" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "_Copiar" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "Co_lar" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "Colar _seleção" msgid "Select _All" msgstr "Selecion_ar tudo" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "Localização não suportada pela biblioteca C. Retrocedendo à " "localização 'C'." msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "Incapaz de determinar a codificação de localização atual. " "Assumindo ISO-8859-1.\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv não supre (suficientes) %s para conversores %s." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Cadeia multibyte \"%s\" inválida: %s" msgid "OK" msgstr "OK" msgid "Cancel" msgstr "Cancelar" #, c-format msgid "Out of memory for pixel map %s" msgstr "Memória insuficiente para o mapa de pixel %s" #, c-format msgid "Could not find pixel map %s" msgstr "Não foi possível encontrar o mapa de pixel %s" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "Memória insuficiente para o buffer de pixel RGB %s" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "Não foi possível encontrar o buffer de pixel RGB %s" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Usando mecanismo de reserva para converter pixels (profundidade: %d; " "máscaras (verm./verde/azul): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: visuais %d bit não são suportados (ainda)" msgid "$USER or $LOGNAME not set?" msgstr "$USER ou $LOGNAME não definidos?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "\"%s\" não descreve um esquema de Internet comum" #, c-format msgid "\"%s\" contains no scheme description" msgstr "\"%s\" não contém descrição do esquema" #~ msgid "%s - unknown format (%d)" #~ msgstr "%s - formato desconhecido (%d)" #~ msgid "stat:\tuser = %i, nice = %i, sys = %i, idle = %i" #~ msgstr "estat:\tusuário = %i, bom = %i, sis = %i, inat = %i" #~ msgid "bars:\tuser = %i, nice = %i, sys = %i (h = %i)\n" #~ msgstr "barras:\tusuário = %i, bom = %i, sis = %i (h = %i)\n" #~ msgid " processes." #~ msgstr " processos." #~ msgid "cpu: %d %d %d %d %d %d %d" #~ msgstr "cpu: %d %d %d %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat encontra demasiadas cpus: deveria(m) ser %d" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree falhou para a janela 0x%x" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "Compilado com a flag DEBUG. Mensagens de debug serão " #~ "imprimidas." #~ msgid "X error %s(0x%lX): %s" #~ msgstr "Erro do X %s(0x%lX): %s" #~ msgid "Forking failed (errno=%d)" #~ msgstr "Falha na bifurcação (errno=%d)" #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "Incapaz de criar pipe anônimo (errno=%d)." #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Pixmap do cursor inválido: \"%s\" contém demasiadas cores " #~ "singulares" #~ msgid "program label expected" #~ msgstr "rótulo do programa previsto" #~ msgid "icon name expected" #~ msgstr "nome do ícone previsto" #~ msgid "window management class expected" #~ msgstr "classe de gerenciamento de janelas prevista" #~ msgid "menu caption expected" #~ msgstr "rubrica do menu prevista" #~ msgid "opening curly expected" #~ msgstr "Chave de abertura '{' prevista" #~ msgid "action name expected" #~ msgstr "nome da ação previsto" #~ msgid "unknown action" #~ msgstr "ação desconhecida" #~ msgid "Failed to open %s: %s" #~ msgstr "Incapaz de abrir %s: %s" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Incapaz de criar pipe anônimo: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Incapaz de duplicar o descritor do arquivo: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "Incapaz de executar %s: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Incapaz de criar processo filho: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Não é um arquivo regular: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Par de dígitos hexadecimais previsto" #~ msgid "Unexpected identifier" #~ msgstr "Identificador imprevisto" #~ msgid "Identifier expected" #~ msgstr "Identificador previsto" #~ msgid "Separator expected" #~ msgstr "Separador previsto" #~ msgid "Invalid token" #~ msgstr "Testemunho inválido" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: Incapaz de copiar o drawable 0x%x ao buffer de pixel" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: Incapaz de copiar o drawable 0x%x ao buffer de pixel " #~ "(%d:%d-%dx%d" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "DEMASIADAS CONEXÕES ICE -- não suportado" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Gerenciador de sessão: IceAddConnectionWatch falhou." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Gerenciador de sessão: erro do init: %s" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Não é um número hexadecimal: %c%c (em \"%s\")" icewm-1.3.7/po/.cvsignore0000644000076600007660000000001611463274241014241 0ustar develdevel*.mo Makefile icewm-1.3.7/po/tr.po0000664000076600007660000011051611463274241013237 0ustar develdevel# Turkish Messages for IceWM. # Copyright @ 2000-2001 Marko Macek. # Current translator: # CoÅŸku Erdem. # msgid "" msgstr "Project-Id-Version: IceWM 1.2.12\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-07-05 19:58+0200\n" "PO-Revision-Date: 2004-01-21 9:30+0200\n" "Last-Translator: CoÅŸku Erdem\n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid " - Power" msgstr " - Güç" #. / if (!prettyClock) strcat(s, " "); msgid "P" msgstr "P" #, c-format msgid " - Charging" msgstr " - Åžarj oluyor" msgid "C" msgstr "C" #, fuzzy, c-format msgid "CPU Load: %3.2f %3.2f %3.2f, %d" msgstr "CPU Yükü: %3.2f %3.2f %3.2f, %d süreç." #, c-format msgid "\n" "Ram: %5.2f/%.2fM" msgstr "" #, c-format msgid "\n" "Swap: %.2f/%.2fM" msgstr "" #, c-format msgid "\n" "ACPI Temp:" msgstr "" #, c-format msgid "\n" "CPU Freq: %.3fGHz" msgstr "" msgid "CPU Load: " msgstr "" #, c-format msgid "Invalid mailbox protocol: \"%s\"" msgstr "Hatalı posta kutusu protokolü: «%s»" #, c-format msgid "Invalid mailbox path: \"%s\"" msgstr "Hatalı posta kutusu yolu: «%s»" #, c-format msgid "Using MailBox \"%s\"\n" msgstr "Kullanılan Posta Kutusu, «%s»\n" msgid "Error checking mailbox." msgstr "Posta kutusu okunurken hata oluÅŸtu." #, c-format msgid "%ld mail message." msgstr "%ld posta mesajı." #, c-format msgid "%ld mail messages." msgstr "%ld posta mesajı." #, fuzzy, 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" " Total average (in/out):\t%li %s/%li %s\n" " Transferred (in/out):\t%lli %s/%lli %s\n" " Online time:\t%ld:%02ld:%02ld%s%s" msgstr " Arabirim %s:\n" " Etkin hız (gelen/giden):\t%lli %s/%lli %s\n" " Etkin ortalama (gelen/giden):\t%lli %s/%lli %s\n" " Toplam ortalama (gelen/giden):\t%lli %s/%lli %s\n" " Aktarılan (gelen/giden):\t%lli %s/%lli %s\n" " BaÄŸlı kalınan süre:\t%d:%02d:%02d%s%s" msgid "\n" " Caller id:\t" msgstr "\n" " Arayan:\t" msgid "Workspace: " msgstr "Çalışma Alanı: " msgid "Back" msgstr "Geri" msgid "Alt+Left" msgstr "Alt+Sol" msgid "Forward" msgstr "İleri" msgid "Alt+Right" msgstr "Alt+SaÄŸ" msgid "Previous" msgstr "Önceki" msgid "Next" msgstr "Sonraki" msgid "Contents" msgstr "İçindekiler" msgid "Index" msgstr "Indeks" #. fCloseButton->setWinGravity(NorthEastGravity); msgid "Close" msgstr "Kapat" msgid "Ctrl+Q" msgstr "Ctrl+Q" #, c-format msgid "Usage: %s FILENAME\n" "\n" "A very simple HTML browser displaying the document specified by " "FILENAME.\n" "\n" msgstr "Kullanım: %s DOSYADI\n" "\n" "DOSYAADI olarak belirtilen dokümanı görüntüleyen için basit bir HTML " "göstericisi.\n" "\n" #, c-format msgid "Invalid path: %s\n" msgstr "Hatalı yol: %s\n" msgid "Invalid path: " msgstr "Hatalı yol: " msgid "List View" msgstr "Liste Görünümü" msgid "Icon View" msgstr "Simge Görünümü" msgid "Open" msgstr "Aç" msgid "Undo" msgstr "Gerial" msgid "Ctrl+Z" msgstr "Ctrl+Z" msgid "New" msgstr "Yeni" msgid "Ctrl+N" msgstr "Ctrl+N" msgid "Restart" msgstr "Yeniden BaÅŸlat" msgid "Ctrl+R" msgstr "Ctrl+R" #. !!! fix msgid "Same Game" msgstr "Same Game" #. **************************************************************************** #. **************************************************************************** #, c-format msgid "Action `%s' requires at least %d arguments." msgstr "«%s» iÅŸlemi en az %d argüman gerektirir." #, c-format msgid "Invalid expression: `%s'" msgstr "Hatalı ifade: «%s»" #, c-format msgid "Named symbols of the domain `%s' (numeric range: %ld-%ld):\n" msgstr "Domain'in adlandırılmış sembolleri «%s» (numerik aralık %ld-%ld):\n" #, c-format msgid "Invalid workspace name: `%s'" msgstr "Hatalı çalışma alanı adı: «%s»" #, c-format msgid "Workspace out of range: %d" msgstr "Çalışma alanı limit dışında: %d" #, fuzzy, c-format msgid "Usage: %s [OPTIONS] ACTIONS\n" "\n" "Options:\n" " -display DISPLAY Connects to the X server specified by " "DISPLAY.\n" " Default: $DISPLAY or :0.0 when not " "set.\n" " -window WINDOW_ID Specifies the window to manipulate. " "Special\n" " identifiers are `root' for the root " "window and\n" " `focus' for the currently focused " "window.\n" " -class WM_CLASS Window management class of the window" "(s) to\n" " manipulate. If WM_CLASS contains a " "period, only\n" " windows with exactly the same WM_CLASS " "property\n" " are matched. If there is no period, " "windows of\n" " the same class and windows of the same " "instance\n" " (aka. `-name') are selected.\n" "\n" "Actions:\n" " setIconTitle TITLE Set the icon title.\n" " setWindowTitle TITLE Set the window title.\n" " setGeometry geometry Set the window geometry\n" " setState MASK STATE Set the GNOME window state to STATE.\n" " Only the bits selected by MASK are " "affected.\n" " STATE and MASK are expressions of the " "domain\n" " `GNOME window state'.\n" " toggleState STATE Toggle the GNOME window state bits " "specified by\n" " the STATE expression.\n" " setHints HINTS Set the GNOME window hints to HINTS.\n" " setLayer LAYER Moves the window to another GNOME " "window layer.\n" " setWorkspace WORKSPACE Moves the window to another workspace. " "Select\n" " the root window to change the current " "workspace.\n" " listWorkspaces Lists the names of all workspaces.\n" " setTrayOption TRAYOPTION Set the IceWM tray option hint.\n" "\n" "Expressions:\n" " Expressions are list of symbols of one domain concatenated by `+' " "or `|':\n" "\n" " EXPRESSION ::= SYMBOL | EXPRESSION ( `+' | `|' ) SYMBOL\n" "\n" msgstr "Kullanım: %s [SEÇENEKLER] İŞLEMLER\n" "\n" "Seçenekler:\n" " -display DISPLAY DISPLAY'in belirttiÄŸi X Sunucusuna " "baÄŸlanır.\n" " Varsayılan: $DISPLAY ya da " "belirtilmemiÅŸse :0.0.\n" " -window WINDOW_ID DeÄŸiÅŸtirilecek pencereyi belirtir. Özel " "Belirteçler\n" " kök pencere için «root» ve\n" "\t\t\t etkin pencere için «focus».\n" " -class WM_CLASS DeÄŸiÅŸtirilecek pencereler için " "Pencere\n" " \t \t \t yönetim sınıfı. WM_CLASS nokta iceriyorsa, " "sadece\n" " \t \t WM_CLASS özelliÄŸi tam olarak uyuÅŸan " "pencereler\n" "\t\t\t seçilir. Nokta yoksa, aynı sınıfın pencereleri ve aynı " "örneÄŸin\n" "\t\t\t pencereleri (aka. -name) seçilir.\n" "\n" "İşlemler:\n" " setIconTitle TITLE Simge baÅŸlığını belirler.\n" " setWindowTitle TITLE Pencere baÅŸlığını belirler.\n" " setGeometry geometry Pencere geometrisini belirler.\n" " setState MASK STATE GNOME window durumunu STATE olarak " "ayarlar.\n" " \t\t\t Sadece MASK'ın belirlediÄŸi bitler etkilenir.\n" " STATE ve MASK, «GNOME pencere durumu»\n" " Domain'inin ifadeleridir.\n" " toggleState STATE GNOME pencere durumu bitlerini STATE " "ifadesine\n" " göre deÄŸiÅŸtirir.\n" " setHints HINTS GNOME pencere ipuçlarını HINTS olarak " "ayarlar.\n" " setLayer LAYER Pencereyi baÅŸka bir GNOME pencere " "katmanına taşır.\n" " setWorkspace WORKSPACE Pencereyi baÅŸka bir çalışma alanına " "taşır. Etkin\n" "\t\t\t Çalışma alanını deÄŸiÅŸtirmek için kök pencereyi seçin.\n" " listWorkspaces \t Çalışma alanlarının isimlerini listeler\n" " setTrayOption TRAYOPTION IceWM tray seçeneÄŸi ipucunu belirler.\n" "\n" "İfadeler:\n" " İfadeler, bir domaindeki «+» ya da «|» kullanılarak birleÅŸtirilmiÅŸ " "sembollerin listesidir.\n" "\n" " ESPRESSION ::= SYMBOL | ESPRESSION ( «+» | «|» ) SYMBOL\n" "\n" msgid "GNOME window state" msgstr "GNOME pencere durumu" msgid "GNOME window hint" msgstr "GNOME pencere ipucu" msgid "GNOME window layer" msgstr "GNOME pencere katmanı" msgid "IceWM tray option" msgstr "IceWM tray seçeneÄŸi" msgid "Usage error: " msgstr "Kullanım Hatası: " #, c-format msgid "Invalid argument: `%s'." msgstr "Hatalı argüman: «%s»." msgid "No actions specified." msgstr "İşlem belirtilmedi." #. ====== connect to X11 === #, c-format msgid "Can't open display: %s. X must be running and $DISPLAY set." msgstr "Display açılamıyor: %s. X çalışıyor ve $DISPLAY ayarlanmış olmalı" #, c-format msgid "Invalid window identifier: `%s'" msgstr "Hatalı pencere belirteci: «%s»" #, c-format msgid "workspace #%d: `%s'\n" msgstr "çalışma alanı #%d: «%s»\n" #, c-format msgid "Unknown action: `%s'" msgstr "Bilinmeyen iÅŸlem: «%s»" #, c-format msgid "Socket error: %d" msgstr "Soket Hatası: %d" #, c-format msgid "Playing sample #%d (%s)" msgstr "Örnek çalınıyor, #%d (%s)" #, c-format msgid "No such device: %s" msgstr "Cihaz bulunamadı: %s" #, c-format msgid "Can't connect to ESound daemon: %s" msgstr "ESound daemon'una baÄŸlanılamadı: %s" msgid "" msgstr "" #, c-format msgid "Error <%d> while uploading `%s:%s'" msgstr "«%s:%s» indirilirken hata oluÅŸtu: <%d>" #, c-format msgid "Sample <%d> uploaded as `%s:%s'" msgstr "Örnek <%d> «%s:%s» olarak upload edildi" #, c-format msgid "Playing sample #%d" msgstr "Örnek çalınıyor #%d" #, c-format msgid "Can't connect to YIFF server: %s" msgstr "YIFF sunucusuna baÄŸlanılamıyor: %s" #, c-format msgid "Can't change to audio mode `%s'." msgstr "Ses moduna geçilemiyor «%s»." #, c-format msgid "Audio mode switch detected, initial audio mode `%s' no longer in " "effect." msgstr "Ses modu deÄŸiÅŸimi algılandı, önceki ses modu «%s» artık etkin deÄŸil." msgid "Audio mode switch detected, automatic audio mode changing disabled." msgstr "Ses modu deÄŸiÅŸimi algılandı, otomatik ses modu deÄŸiÅŸimi devre dışı " "bırakıldı." #, c-format msgid "Overriding previous audio mode `%s'." msgstr "Önceki ses modu eziliyor «%s»." #, fuzzy, c-format msgid " Usage: %s [OPTION]...\n" " \n" " Plays audio files on GUI events raised by IceWM.\n" " \n" " Options:\n" " \n" " -d, --display=DISPLAY Display used by IceWM " "(default: $DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory " "which contains\n" " the sound files (ie ~/.icewm/sounds).\n" " -i, --interface=TARGET Specifies the sound " "output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the " "digital signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT (ESD and YIFF) specifies " "server address and\n" " port number (default localhost:16001 for ESD\n" " and localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the " "Audio mode (leave\n" " blank to get a list).\n" " --audio-mode-auto (YIFF only) change Audio " "mode on the fly to\n" " best match sample's Audio (can cause\n" " problems with other Y clients, overrides\n" " --audio-mode).\n" " \n" " -v, --verbose Be verbose (prints out " "each sound event to\n" " stdout).\n" " -V, --version Prints version " "information and exits.\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 "Kullanım: %s [SEÇENEKLER]...\n" "\n" "IceWM'in kaldırdığı GUI olaylarında ses dosyaları çalar.\n" "\n" "Seçenekler:\n" " -d, --display=DISPLAY Display used by IceWM (default: " "$DISPLAY).\n" " -s, --sample-dir=DIR Specifies the directory which " "contains\n" " the sound files (ie ~/.icewm/" "sounds).\n" " -i, --interface=TARGET Specifies the sound output target\n" " interface, one of OSS, YIFF, ESD\n" " -D, --device=DEVICE (OSS only) specifies the digital " "signal\n" " processor (default /dev/dsp).\n" " -S, --server=ADDR:PORT\t(ESD and YIFF) specifies server address " "and\n" " port number (default localhost:16001 " "for ESD\n" "\t\t\t\tand localhost:9433 for YIFF).\n" " -m, --audio-mode[=MODE] (YIFF only) specifies the Audio mode " "(leave\n" " blank to get a list).\n" " --audio-mode-auto \t(YIFF only) change Audio mode on the fly " "to\n" " best match sample's Audio (can " "cause\n" " problems with other Y clients, " "overrides\n" " --audio-mode).\n" "\n" " -v, --verbose Be verbose (prints out each sound " "event to\n" " stdout).\n" " -V, --version Prints version information and " "exits.\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" msgid "Multiple sound interfaces given." msgstr "Birden çok ses arabirimi verildi." #, c-format msgid "Support for the %s interface not compiled." msgstr "%s arabirimi desteÄŸi derlenmedi." #, c-format msgid "Unsupported interface: %s." msgstr "Desteklenmeyen arabirim: %s." #, c-format msgid "Received signal %d: Terminating..." msgstr "Alınan sinyal %d: öldürülüyor..." #, c-format msgid "Received signal %d: Reloading samples..." msgstr "Alınan sinyal %d: Örnekler tekrar yükleniyor..." msgid "Hex View" msgstr "Hex Görünümü" msgid "Ctrl+H" msgstr "Ctrl+H" msgid "Expand Tabs" msgstr "Tabları GeniÅŸlet" msgid "Ctrl+T" msgstr "Ctrl+T" msgid "Wrap Lines" msgstr "Satırları Kaydır" msgid "Ctrl+W" msgstr "Ctrl+W" #, fuzzy msgid "Usage: icewmbg [ -r | -q ]\n" " -r Restart icewmbg\n" " -q Quit icewmbg\n" "Loads desktop background according to preferences file\n" " DesktopBackgroundCenter - Display desktop background centered, not " "tiled\n" " SupportSemitransparency - Support for semitransparent terminals\n" " DesktopBackgroundColor - Desktop background color\n" " DesktopBackgroundImage - Desktop background image\n" " DesktopTransparencyColor - Color to announce for semi-transparent " "windows\n" " DesktopTransparencyImage - Image to announce for semi-transparent " "windows\n" msgstr "Kullanım: icewmbg\n" "Tercihler dosyasına göre masaüstü arkaplanını yükler\n" " DesktopBackgroundCenter - Masaüstü arkaplanını yayılmış deÄŸil " "ortalanmış olarak görüntüler\n" " SupportSemitransparency - Yarı saydam terminal desteÄŸi\n" " DesktopBackgroundColor - Masaüstü arkaplan rengi\n" " DesktopBackgroundImage - Masaüstü arkaplan resmi\n" " DesktopTransparencyColor - Yarı saydam pencereler için duyurulacak " "renk\n" " DesktopTransparencyImage - Yarı saydam pencereler için duyurulacak " "resim\n" #, c-format msgid "%s: unrecognized option `%s'\n" "Try `%s --help' for more information.\n" msgstr "%s: tanınmayan seçenek «%s»\n" "Daha fazla bilgi için «%s --help» deneyin.\n" #, c-format msgid "Loading image %s failed" msgstr "%s remi yüklenirken hata oluÅŸtu" #, c-format msgid "Loading of pixmap \"%s\" failed: %s" msgstr "«%s» pixmap'i yüklenirken hata oluÅŸtu: %s" msgid "Usage: icewmhint [class.instance] option arg\n" msgstr "Kullanım: icewmhint [class.instance] seçenek arg\n" #, c-format msgid "Out of memory (len=%d)." msgstr "Yetersiz hafıza (len=%d)." msgid "Warning: " msgstr "Uyarı: " #, c-format msgid "Unknown direction in move/resize request: %d" msgstr "Taşıma/boyutlandırma isteÄŸinde bilimeyen yön: %d" msgid "Default" msgstr "Varsayılan" msgid "(C)" msgstr "@" msgid "Theme:" msgstr "Tema:" msgid "Theme Description:" msgstr "Tema Açıklaması:" msgid "Theme Author:" msgstr "Tema Yazarı:" msgid "CodeSet:" msgstr "" msgid "Language:" msgstr "" msgid "icewm - About" msgstr "icewm - Hakkında" msgid "Unable to get current font path." msgstr "Etkin font yolu bulunamıyor." msgid "Unexpected format of ICEWM_FONT_PATH property" msgstr "ICEWM_FONT_PATH özellÄŸi için beklenmeyen biçim" #, c-format msgid "Multiple references for gradient \"%s\"" msgstr "Gradient için birden çok referans «%s»" #, c-format msgid "Unknown gradient name: %s" msgstr "Bilinmeyen gradient adı: %s" msgid "_Logout" msgstr "_Oturumu Kapat" msgid "_Cancel logout" msgstr "O_turum kapatmayı iptal et" msgid "Lock _Workstation" msgstr "_Bilgisayarı Kitle" msgid "Re_boot" msgstr "Bilgi_sayarı Yeniden BaÅŸlat" msgid "Shut_down" msgstr "Bilgisa_yarı Kapat" msgid "Restart _Icewm" msgstr "Icewm'i Yeniden BaÅŸlat" msgid "Restart _Xterm" msgstr "Xterm'i Yeniden BaÅŸlat" msgid "_Menu" msgstr "_Menü" msgid "_Above Dock" msgstr "_En üstte" msgid "_Dock" msgstr "_Daha üstte" msgid "_OnTop" msgstr "Üs_tte" msgid "_Normal" msgstr "_Normal" msgid "_Below" msgstr "_Altta" msgid "D_esktop" msgstr "Ma_saüstü" msgid "_Restore" msgstr "_Eski haline" msgid "_Move" msgstr "_Taşı" msgid "_Size" msgstr "B_oyutlandır" msgid "Mi_nimize" msgstr "_Küçült" msgid "Ma_ximize" msgstr "_Büyüt" msgid "_Fullscreen" msgstr "Tam ek_ran" msgid "_Hide" msgstr "G_izle" msgid "Roll_up" msgstr "_Sar" msgid "R_aise" msgstr "Y_ukarı Kaldır" msgid "_Lower" msgstr "_AÅŸağı İndir" msgid "La_yer" msgstr "Kat_man" msgid "Move _To" msgstr "_Taşı" msgid "Occupy _All" msgstr "_Hepsini Kapla" msgid "Limit _Workarea" msgstr "Çalışma alanını kısıtla" msgid "Tray _icon" msgstr "_Tray'e küçült" msgid "_Close" msgstr "Ka_pat" msgid "_Kill Client" msgstr "_Istemciyi Öldür" msgid "_Window list" msgstr "Pen_cere listesi" msgid "Another window manager already running, exiting..." msgstr "BaÅŸka bir pencere yöneticisi zaten çalışıyor..." #, c-format msgid "Could not restart: %s\n" "Does $PATH lead to %s?" msgstr "Yeniden baÅŸlatılamıyor: %s\n" "$PATH, %s'i gösteriyor mu?" #, fuzzy, c-format msgid "Usage: %s [OPTIONS]\n" "Starts the IceWM window manager.\n" "\n" "Options:\n" " --display=NAME NAME of the X server to use.\n" "%s --sync Synchronize X11 commands.\n" "\n" " -c, --config=FILE Load preferences from FILE.\n" " -t, --theme=FILE Load theme from FILE.\n" " -n, --no-configure Ignore preferences file.\n" "\n" " -v, --version Prints version information and exits.\n" " -h, --help Prints this usage screen and exits.\n" "%s --replace Replace an existing window manager.\n" " --restart Don't use this: It's an internal flag.\n" "\n" "Environment variables:\n" " ICEWM_PRIVCFG=PATH Directory to use for user private " "configuration files,\n" " \"$HOME/.icewm/\" by default.\n" " DISPLAY=NAME Name of the X server to use, depends on Xlib " "by default.\n" " MAIL=URL Location of your mailbox. If the schema is " "omitted\n" " the local \"file\" schema is assumed.\n" "\n" "Visit http://www.icewm.org/ for report bugs, support requests, " "comments...\n" msgstr "Kullanım: %s [SEÇENEKLER]\n" "IceWM pencere yöneticisini baÅŸlatır.\n" "\n" "Seçenekler:\n" " --display=NAME baÄŸlanılacak X sunucusunun adı.\n" "%s --sync eÅŸzamanlanacak X11 komutları.\n" "\n" " -c, --config=FILE FILE tercihler dosyasını kullan.\n" " -t, --theme=FILE temayı FILE dosyasından yükle.\n" " -n, --no-configure Tercihler dosyasını dikkate alma.\n" "\n" " -v, --version Versiyon bilgisini yazıp çıkar.\n" " -h, --help Bu kullanım ekranını yazıp çıkar.\n" "%s --restart Bunu kullanmayın: Bu bir iç seçenektir.\n" "\n" "Çevre DeÄŸiÅŸkenleri:\n" " ICEWM_PRIVCFG=PATH Kullanıcıya özel ayarlar için kullanılacak " "dizin,\n" " Varsayılan olarak «$HOME/.icewm/».\n" " DISPLAY=NAME BaÄŸlanılacak X sunucusunun adı, Varsayılan " "olarak Xlib'e baÄŸlıdır.\n" " MAIL=URL Posta kutusunun yeri. Åžema belirtilmemiÅŸse " "yerel\n" " «file» ÅŸeması kullanılır.\n" "\n" "Hata raporları, destek talebi ve yorumlar için http://www.icewm." "org/ adresini ziyaret ediniz...\n" msgid "Confirm Logout" msgstr "Oturum Kapatma Onayı" msgid "Logout will close all active applications.\n" "Proceed?" msgstr "Oturumu kapatmak tüm aktif uygulamaların kapanmasına neden " "olacaktır.\n" "Emin misiniz?" msgid "Bad Look name" msgstr "Kötü Look adı" #, fuzzy msgid "Loc_k Workstation" msgstr "_Bilgisayarı Kitle" msgid "_Logout..." msgstr "_Oturumu Kapat..." msgid "_Cancel" msgstr "_Vazgeç" msgid "_Restart icewm" msgstr "I_ceVM'i Yeniden BaÅŸlat" msgid "_About" msgstr "_Hakkında" msgid "Maximize" msgstr "Büyüt" #. fMinimizeButton->setWinGravity(NorthEastGravity); msgid "Minimize" msgstr "Küçült" #. fHideButton->setWinGravity(NorthEastGravity); msgid "Hide" msgstr "Gizle" #. fRollupButton->setWinGravity(NorthEastGravity); msgid "Rollup" msgstr "Sar" #. fDepthButton->setWinGravity(NorthEastGravity); msgid "Raise/Lower" msgstr "Kaldır/İndir" msgid "Kill Client: " msgstr "İstemciyi öldür: " msgid "WARNING! All unsaved changes will be lost when\n" "this client is killed. Do you wish to proceed?" msgstr "DİKKAT!! Bu istemci öldürüldüğünde tüm kaydedilmemiÅŸ\n" "deÄŸiÅŸiklikler kaybedilecektir. Emin misiniz?" msgid "Restore" msgstr "Eski haline" msgid "Rolldown" msgstr "AÅŸağı sar" #, c-format msgid "Error in window option: %s" msgstr "Pencere seçeneÄŸinde hata: %s" #, c-format msgid "Unknown window option: %s" msgstr "Bilinmeyen pencere seÅŸeneÄŸi: %s" msgid "Syntax error in window options" msgstr "Pencere seçeneklerinde söz dizimi hatası" msgid "Out of memory for window options" msgstr "Pencere seçenekleri için yetersiz hafıza" msgid "Missing command argument" msgstr "Eksik komut argümanı" #, c-format msgid "Bad argument %d" msgstr "Kötü argüman %d" #, c-format msgid "Error at prog %s" msgstr "%s programında hata" #, c-format msgid "Unexepected keyword: %s" msgstr "Beklenmeyen anahtar kelime: %s" #, c-format msgid "Error at key %s" msgstr "%s anahtarında hata" #. / if (programs->itemCount() > 0) msgid "Programs" msgstr "Programlar" msgid "_Run..." msgstr "Çalıştır" msgid "_Windows" msgstr "P_encereler" msgid "_Help" msgstr "_Yardım" msgid "_Click to focus" msgstr "" msgid "_Sloppy mouse focus" msgstr "" msgid "Custo_m" msgstr "" msgid "_Focus" msgstr "" msgid "_Themes" msgstr "_Temalar" msgid "Se_ttings" msgstr "" #, c-format msgid "Session Manager: Unknown line %s" msgstr "Session Manager: Bilinmeyen satır %s" msgid "Task Bar" msgstr "Görev ÇubuÄŸu" msgid "Tile _Vertically" msgstr "D_ikey Döşe" msgid "T_ile Horizontally" msgstr "_Yatay Döşe" msgid "Ca_scade" msgstr "_Basamakla" msgid "_Arrange" msgstr "_Düzenle" msgid "_Minimize All" msgstr "_Hepsini Küçült" msgid "_Hide All" msgstr "H_epsini gizle" msgid "_Undo" msgstr "Ge_rial" msgid "Arrange _Icons" msgstr "_Simgeleri Düzenle" msgid "_Refresh" msgstr "Ye_nile" msgid "_License" msgstr "_Lisans" msgid "Favorite applications" msgstr "Favori uygulamalar" msgid "Window list menu" msgstr "Pencere listesi menüsü" #, fuzzy msgid "Show Desktop" msgstr "Ma_saüstü" msgid "All Workspaces" msgstr "Tüm Çalışma Alanları" msgid "Del" msgstr "Del" msgid "_Terminate Process" msgstr "_Süreci Yoket" msgid "Kill _Process" msgstr "_Süreci Öldür" msgid "_Show" msgstr "_Göster" msgid "_Minimize" msgstr "_Küçült" msgid "Window list" msgstr "Pencere Listesi" #, c-format msgid "%lu. Workspace %-.32s" msgstr "%lu. Çalışma Alanı %-.32s" #, c-format msgid "Message Loop: select failed (errno=%d)" msgstr "Mesaj Döngüsü: seçim hatası (errno=%d)" #, c-format msgid "Unrecognized option: %s\n" msgstr "Tanınmayan seçenek: %s\n" #. pos #, c-format msgid "Unrecognized argument: %s\n" msgstr "Tanınamayan argüman: %s\n" #, c-format msgid "Argument required for %s switch" msgstr "%s deÄŸiÅŸimi için argüman gerekli" #, c-format msgid "Unknown key name %s in %s" msgstr "%s'te bilimeyen anahtar adı %s" #, c-format msgid "Bad argument: %s for %s" msgstr "Kötü Argüman: %s için %s" #, c-format msgid "Bad option: %s" msgstr "Kötü seçenek: %s" #, c-format msgid "Loading of pixmap \"%s\" failed" msgstr "«%s» pixmap'i yüklenemedi" #, c-format msgid "Invalid cursor pixmap: \"%s\" contains too much unique colors" msgstr "Hatalı takipçi pixmap'i: «%s» çok fazla tekli renk içeriyor" #, c-format msgid "BUG? Imlib was able to read \"%s\"" msgstr "BUG? Imlib okuyamıyor «%s»" #, c-format msgid "BUG? Malformed XPM header but Imlib was able to parse \"%s\"" msgstr "BUG? Hatalı XPM baÅŸlığı ancak Imlib parse edemedi «%s»" #, c-format msgid "BUG? Unexpected end of XPM file but Imlib was able to parse \"%s\"" msgstr "BUG? Beklenmeyen XPM dosyası sonu ancak Imlib parse edemedi «%s»" #, c-format msgid "BUG? Unexpected characted but Imlib was able to parse \"%s\"" msgstr "BUG? Beklenmeyen karakter ancak Imlib parse edemedi «%s»" #, c-format msgid "Could not load font \"%s\"." msgstr "«%s» fontu yüklenemedi." #, c-format msgid "Loading of fallback font \"%s\" failed." msgstr "«%s» fallback fontu yüklenemedi." #, c-format msgid "Could not load fontset \"%s\"." msgstr "«%s» font kümesi yüklenemedi." #, c-format msgid "Missing codesets for fontset \"%s\":" msgstr "«%s» font kümesi için code'setler eksik" #, c-format msgid "Out of memory for pixmap \"%s\"" msgstr "Pixmap için yetersiz hafıza«%s»" #, c-format msgid "Loading of image \"%s\" failed" msgstr "«%s» resmi yüklenirken hata oluÅŸtu" msgid "Imlib: Acquisition of X pixmap failed" msgstr "Imlib: X pixmap elde edilirken hata oluÅŸtu" msgid "Imlib: Imlib image to X pixmap mapping failed" msgstr "Imlib: Imlib resmi X pixmap'e dönüştürülemedi" msgid "Cu_t" msgstr "_Kes" msgid "Ctrl+X" msgstr "Ctrl+X" msgid "_Copy" msgstr "K_opyala" msgid "Ctrl+C" msgstr "Ctrl+C" msgid "_Paste" msgstr "_Yapıştır" msgid "Ctrl+V" msgstr "Ctrl+V" msgid "Paste _Selection" msgstr "_Seçimi Yapıştır" msgid "Select _All" msgstr "_Hepsini Seç" msgid "Ctrl+A" msgstr "Ctrl+A" #. || False == XSupportsLocale() msgid "Locale not supported by C library. Falling back to 'C' locale'." msgstr "C kütüphanesi Locale'i desteklemiyor. 'C' locale'i kullanılacak" msgid "Failed to determinate the current locale's codeset. Assuming ISO-" "8859-1.\n" msgstr "Geçerli locale'in codeseti belirlenmedi. ISO-8859-1 varsayılıyor..\n" #, c-format msgid "iconv doesn't supply (sufficient) %s to %s converters." msgstr "iconv (yeterli) %s saÄŸlayamıyor: %s." #, c-format msgid "Invalid multibyte string \"%s\": %s" msgstr "Hatalı multibyte string «%s»: %s" msgid "OK" msgstr "Tamam" msgid "Cancel" msgstr "İptal" #, c-format msgid "Out of memory for pixel map %s" msgstr "%s pixel haritası için yetersiz hafıza" #, c-format msgid "Could not find pixel map %s" msgstr "%s pixel haritası bulunamadı" #, c-format msgid "Out of memory for RGB pixel buffer %s" msgstr "%s RGB pixel buffer'ı için yetersiz hafıza" #, c-format msgid "Could not find RGB pixel buffer %s" msgstr "%s RGB pixel buffre'ı bulunamadı" #, c-format msgid "Using fallback mechanism to convert pixels (depth: %d; masks (red/" "green/blue): %0*x/%0*x/%0*x)" msgstr "Pixelleri çevirmek için fallback mekanizması kullanılıyor (derinlik: " "%d; maske (R/G/B): %0*x/%0*x/%0*x)" #, c-format msgid "%s:%d: %d bit visuals are not supported (yet)" msgstr "%s:%d: %d bit görünümler desteklenmiyor (henüz)" msgid "$USER or $LOGNAME not set?" msgstr "$USER ya da $LOGNAME ayarlanmamış?" #, c-format msgid "\"%s\" doesn't describe a common internet scheme" msgstr "«%s» yaygın bir internet ÅŸemasını tarif etmiyor" #, c-format msgid "\"%s\" contains no scheme description" msgstr "«%s» ÅŸema tarifi içermiyor" #~ msgid "program label expected" #~ msgstr "program etiketi bekleniyor" #~ msgid "icon name expected" #~ msgstr "simge adı bekleniyor" #~ msgid "window management class expected" #~ msgstr "pencere yönetim sınıfı bekleniyor" #~ msgid "menu caption expected" #~ msgstr "menü baÅŸlığı bekleniyor" #~ msgid "opening curly expected" #~ msgstr "açık kıvrım bekleniyor" #~ msgid "action name expected" #~ msgstr "iÅŸlem adı bekleniyor" #~ msgid "unknown action" #~ msgstr "bilinmeyen iÅŸlem" #~ msgid "Failed to open %s: %s" #~ msgstr "%s açılamadı: %s" #~ msgid "Failed to execute %s: %s" #~ msgstr "%s çalıştırılamadı: %s" #~ msgid "Failed to create child process: %s" #~ msgstr "Alt süreç yaratılamadı: %s" #~ msgid "Not a regular file: %s" #~ msgstr "Düzgün bir dosya deÄŸil: %s" #~ msgid "Pair of hexadecimal digits expected" #~ msgstr "Çift Hexadecimal basamak bekleniyor" #~ msgid "Unexpected identifier" #~ msgstr "Beklenmeyen belirleyici" #~ msgid "Identifier expected" #~ msgstr "Belirleyici bekleniyor" #~ msgid "Separator expected" #~ msgstr "Ayraç bekleniyor" #~ msgid "Invalid token" #~ msgstr "Hatalı token" #~ msgid "Not a hexadecimal number: %c%c (in \"%s\")" #~ msgstr "Hexadecimal numara deÄŸil: %c%c (in «%s»)" #~ msgid "/proc/apm - unknown format (%d)" #~ msgstr "/proc/apm - Tanınmayan Biçim (%d)" #~ msgid "/" #~ msgstr "/" #~ msgid "cpu: %d %d %d %d" #~ msgstr "cpu: %d %d %d %d" #~ msgid "kstat finds too many cpus: should be %d" #~ msgstr "kstat çok fazla cpu buldu: %d olmalı" #~ msgid "%s@%d: %s\n" #~ msgstr "%s@%d: %s\n" #~ msgid "XQueryTree failed for window 0x%x" #~ msgstr "XQueryTree, 0x%x penceresi için hata üretti" #~ msgid "Compiled with DEBUG flag. Debugging messages will be printed." #~ msgstr "DEBUG bayrağı ile derlenmiÅŸ. Debug mesajları yazılacak." #~ msgid "Usage: icewmbg [OPTION]... pixmap1 [pixmap2]...\n" #~ "Changes desktop background on workspace switches.\n" #~ "The first pixmap is used as a default one.\n" #~ "\n" #~ "-s, --semitransparency Enable support for semi-transparent " #~ "terminals\n" #~ msgstr "Kullanım: icewmbg [SEÇENEKLER]... pixmap1 [pixmap2]...\n" #~ "Çalışma alanı deÄŸiÅŸimlerinde maaüstü araplanını deÄŸiÅŸtirir.\n" #~ "İlk pixmap varsayılan olarak kullanılır.\n" #~ "\n" #~ "-s, --semitransparency Yarı saydamlık desteÄŸini açar\n" #~ msgid "_No icon" #~ msgstr "_Simge yok" #~ msgid "_Minimized" #~ msgstr "_Küçültülmüş" #~ msgid "_Exclusive" #~ msgstr "Öze_llikli" #~ msgid "X error %s(0x%lX): %s" #~ msgstr "X hatası %s(0x%lX): %s" #~ msgid "Window %p has no XA_ICEWM_PID property. Export the " #~ "LD_PRELOAD variable to preload the preice library." #~ msgstr "%p penceresinin XA_ICEWM_PID özelliÄŸi yok. Preice " #~ "kütüphanesiniönyüklemek için LD_PRELOAD deÄŸiÅŸkenini export edin." #~ msgid "Forking failed (errno=%d)" #~ msgstr "Hatalı çatallama (errno=%d)" #~ msgid "Failed to create anonymous pipe (errno=%d)." #~ msgstr "Anonim boru yaratılamadı (errno=%d)." #~ msgid "Obsolete option: %s" #~ msgstr "EskimiÅŸ seçenek: %s" #~ msgid "Invalid cursor pixmap: \"%s\" contains too many unique colors" #~ msgstr "Hatalı takipçi pixmap'i: «%s» çok fazla tekli renk içeriyor" #~ msgid "Resource allocation for rotated string \"%s\" (%dx%d px) " #~ "failed" #~ msgstr "«%s» rotated string'i için kaynak ayrılamadı (%dx%d px)" #~ msgid "Failed to create anonymous pipe: %s" #~ msgstr "Anonim boru yaratılmadı: %s" #~ msgid "Failed to duplicate file descriptor: %s" #~ msgstr "Dosya tanımlayıcısı kopyalanamadı: %s" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer" #~ msgstr "%s:%d: 0x%x çizilebiliri pixel buffer'a kopyalanamadı" #~ msgid "%s:%d: Failed to copy drawable 0x%x to pixel buffer (%d:%d-%" #~ "dx%d" #~ msgstr "%s:%d: 0x%x çizilebiliri (%d:%d-%dx%d pixel buffer'ına " #~ "kopyalanamadı" #~ msgid "TOO MANY ICE CONNECTIONS -- not supported" #~ msgstr "ÇOK FAZLA ICE BAÄžLANTISI -- desteklenmiyor" #~ msgid "Session Manager: IceAddConnectionWatch failed." #~ msgstr "Session Manager: IceAddConnectionWatch hata üretti." #~ msgid "Session Manager: Init error: %s" #~ msgstr "Session Manager: Init error: %s" icewm-1.3.7/icewm.spec0000664000076600007660000000670111463274241013614 0ustar develdevel Name: icewm Version: 1.3.7 Release: 1 Obsoletes: icewm-common <= 1.2.2 Summary: Fast and small X11 window manager Group: User Interface/Desktops License: LGPL URL: http://www.icewm.org/ Packager: Marko Macek Source: http://ftp.sourceforge.net/icewm/%{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot %define pkgdata %{_datadir}/%{name} %description A lightweight window manager for the X Window System. Optimized for "feel" and speed, not looks. Features multiple workspaces, opaque move/resize, task bar, window list, clock, mailbox, CPU, Network, APM status. %package l10n Group: %{group} Summary: Message translations for icewm Requires: icewm = %{version} %description l10n Message translations for icewm. %package themes Group: %{group} Summary: Extra themes for icewm Requires: icewm > 1.2.2 %description themes Extra themes for icewm. %if %{?_with_menus_gnome2:1}%{!?_with_menus_gnome2:0} %package menu-gnome2 Group: %{group} Summary: GNOME menu support for icewm (using gnome 2.x). Requires: icewm > 1.2.2 Requires: gnome-libs >= 1.4 %description menu-gnome2 GNOME 1.0 menu support for icewm (using gnome 2.x). %endif %prep %setup %build CXXFLAGS="$RPM_OPT_FLAGS" ./configure \ --prefix=%{_prefix} \ --exec-prefix=%{_exec_prefix} \ --datadir=%{_datadir} \ --sysconfdir=%{_sysconfdir} \ --with-docdir=%{_docdir} \ %{?_with_menus_gnome2:--enable-menus-gnome2} \ %{?_with_debug:--enable-debug} make %install make DESTDIR=$RPM_BUILD_ROOT install install-desktop mkdir -p $RPM_BUILD_ROOT/etc/icewm %clean test -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" && rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) %doc README COPYING AUTHORS CHANGES BUGS doc/*.html doc/icewm.sgml %doc icewm.lsm %config %{pkgdata}/keys %config %{pkgdata}/menu %config %{pkgdata}/preferences %config %{pkgdata}/toolbar %config %{pkgdata}/winoptions %dir /etc/icewm %dir %{pkgdata}/icons %dir %{pkgdata}/ledclock %dir %{pkgdata}/mailbox %dir %{pkgdata}/taskbar %dir %{pkgdata}/themes %{_bindir}/* %{pkgdata}/icons/* %{pkgdata}/ledclock/* %{pkgdata}/mailbox/* %{pkgdata}/taskbar/* %{pkgdata}/themes/icedesert/* /usr/share/xsessions/icewm-session.desktop /usr/share/applications/icewm.desktop %if %{?_with_menus_gnome2:1}%{!?_with_menus_gnome2:0} %files menu-gnome2 %defattr(-,root,root) %{_bindir}/icewm-menu-gnome2 %endif %files l10n %defattr(-,root,root) %dir %{_datadir}/locale %{_datadir}/locale/* %files themes %defattr(-,root,root) %dir %{pkgdata}/themes/nice %{pkgdata}/themes/nice/* %dir %{pkgdata}/themes/nice2 %{pkgdata}/themes/nice2/* %dir %{pkgdata}/themes/gtk2 %{pkgdata}/themes/gtk2/* %dir %{pkgdata}/themes/warp3 %{pkgdata}/themes/warp3/* %dir %{pkgdata}/themes/warp4 %{pkgdata}/themes/warp4/* %dir %{pkgdata}/themes/motif %{pkgdata}/themes/motif/* %dir %{pkgdata}/themes/win95 %{pkgdata}/themes/win95/* %dir %{pkgdata}/themes/metal2 %{pkgdata}/themes/metal2/* %dir %{pkgdata}/themes/Infadel2 %{pkgdata}/themes/Infadel2/* %dir %{pkgdata}/themes/yellowmotif %{pkgdata}/themes/yellowmotif/* %changelog * Sun Mar 06 2005 Jiri Slaby 1.2.20 - Repaired uid in packages (themes, il2 and gnomefiles) * Sun Feb 02 2003 Christian W. Zuckschwerdt 1.2.6 - Switched to rpm build in macros. * Sun Dec 15 2002 Marko Macek 1.2.3pre2 - Completely rewritten and simplified packaging. icewm-1.3.7/configure.in0000644000076600007660000010216511463274241014144 0ustar develdeveldnl ================================================= IceWM configure script === dnl dnl Process this file with autoconf to produce a configure script. dnl dnl ========================================================= Initialization === dnl --------------------------------------------------------- Setup autoconf --- dnl AC_INIT(configure.in) AC_PREREQ([2.50]) AC_CONFIG_HEADER(src/config.h) AC_CANONICAL_TARGET dnl --------------------------------------------------- Some basic variables --- dnl TARGETS=base APPLICATIONS='icewm icewm-session icesh icewmhint icewmbg icewmtray' TESTCASES=`echo src/test*.cc | sed 's%src/\([[^ ]]*\)\.cc%\1%g'` TESTCASES="$TESTCASES iceview icesame iceicon icerun icelist" # iceclock features='' dnl ---------- Checking for a C compiler in hope that it understands C++ too --- dnl AC_LANG_CPLUSPLUS AC_PROG_CXX dnl ----------- If both CC and CXX are GNU compilers, it is better to use CC --- dnl ---- for linking. dnl Unfortunately this has problems with newer g++/gcc/... :( dnl if test x"$ac_cv_prog_gxx" != x; then dnl AC_PROG_CC dnl if test x"$ac_cv_prog_gcc" != x; then dnl CXX_LINK=${CC} dnl AC_DEFINE(NEED_ALLOC_OPERATORS, 1, dnl [ Define if you need an implementation of the allocation operators. (gcc 3.0) ]) dnl fi dnl fi dnl ---------- Also check how to turn off RTTI and exception handling --- dnl --- SunONE C++ supports no-rtti flag only in compat=4 mode if test -z "`${CXX} -V 2>&1 | grep Sun`"; then ICE_CXX_FLAG_ACCEPT(no_rtti, -fno-rtti) fi dnl --- Intel C++ supports -fno-rtti, but doens't support -fno-*-exceptions if test $(basename $CXX) != "icc"; then if test -n "`${CXX} -V 2>&1 | grep Sun`"; then dnl --- Sun ONE C++ syntax for "no exceptions" ICE_CXX_FLAG_ACCEPT(no_exceptions, -features=no%except) else if test $(basename $CXX) = "g++" || test $(basename $CXX) = "gcc"; then ICE_CXX_FLAG_ACCEPT(no_exceptions, -fno-exceptions) if test x"$no_exceptions_ok" = xno; then ICE_CXX_FLAG_ACCEPT(no_exceptions, -fno-handle-exceptions) fi fi fi fi if test $(basename $CXX) = "g++" || test $(basename $CXX) = "gcc" ; then ICE_CXX_FLAG_ACCEPT(warn_xxx, -Wall -Wpointer-arith -Wwrite-strings -Woverloaded-virtual -W) ICE_CXX_FLAG_ACCEPT(permissive, -fpermissive) else dnl --- Sun ONE doesn't support GCC -W* and -fpermissive dnl --- Intel C++ doesn't supports lots of GCC -W* and -fpermissive if test $(basename $CXX) = "icc"; then dnl --- Using -w0 to avoid noisy "remark" messages ICE_CXX_FLAG_ACCEPT(warn_xxx, -w0) fi fi if test x"$CXX_LINK" = x; then CXX_LINK=$CXX fi AC_SUBST(CXX_LINK) if test x"$HOSTCXX" = x; then HOSTCXX=$CXX fi AC_SUBST(HOSTCXX) if test x"$HOSTCXX_LINK" = x; then HOSTCXX_LINK=$CXX fi AC_SUBST(HOSTCXX_LINK) #this test is broken, because AC_TRY_LINK calls g++ #AC_MSG_CHECKING([if we need our own C++ allocation operators]) #AC_TRY_LINK([ void icewm_alloc() { # char * cp = new char; delete cp; # char *ca = new char[23]; delete[] ca; } ],, # [ AC_MSG_RESULT(no) ], # [ AC_MSG_RESULT(yes) # AC_DEFINE(NEED_ALLOC_OPERATORS, 1, # [ Define if you need an implementation of the allocation operators. (gcc 3.0) ]) ]) AC_PROG_INSTALL dnl ================================ Checks for things which don't require X === dnl ------------------------------------------------ Checks for header files --- dnl AC_HEADER_DIRENT AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(fcntl.h limits.h strings.h sys/ioctl.h sys/time.h unistd.h) AC_CHECK_HEADERS(linux/threads.h linux/tasks.h) AC_CHECK_HEADERS(sched.h sys/dkstat.h sys/param.h sys/sysctl.h uvm/uvm_param.h) AC_CHECK_HEADERS(libgen.h) dnl -- basename() for FreeBSD AC_CHECK_HEADERS(machine/apmvar.h) AC_CHECK_HEADERS(machine/apm_bios.h) AC_CHECK_HEADERS(kstat.h, [ CORE_LIBS="${CORE_LIBS} -lkstat" AC_MSG_CHECKING([if have old kstat]) AC_TRY_COMPILE([#include ], [kstat_named_t k; k.value.ui32], [ AC_MSG_RESULT(no) ], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_OLD_KSTAT, 1, [define if have old kstat (Solaris only?)])])]) dnl ---------- Checks for typedefs, structures, and compiler characteristics --- AC_TYPE_SIZE_T AC_HEADER_TIME AC_STRUCT_TM AC_CHECK_SIZEOF(char, 1) AC_CHECK_SIZEOF(short, 2) AC_CHECK_SIZEOF(int, 4) AC_CHECK_SIZEOF(long, 4) dnl ------------------------------------------- Checks for library functions --- AC_TYPE_SIGNAL AC_FUNC_STRFTIME AC_FUNC_VPRINTF AC_CHECK_FUNCS(gettimeofday putenv select socket strtol strtoul basename) AC_CHECK_FUNCS(sysctlbyname) AC_FUNC_SELECT_ARGTYPES dnl ------ Checking for getloadavg(). Compatible with gcc 3.3 on FreeBSD 5.2 --- AC_MSG_CHECKING([for getloadavg]) AC_TRY_LINK([#include ], [double loadavg[3]; getloadavg(loadavg, 3) == 0;], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_GETLOADAVG2, 1, [getloadavg() is available])], [ AC_MSG_RESULT(no) ]) dnl ---------------------------------------- Check for kern.cp_time MIB item --- AC_MSG_CHECKING([for kern.cp_time]) if /sbin/sysctl kern.cp_time 2>&1 | grep 'kern.cp_time *[[:=]]' >/dev/null; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SYSCTL_CP_TIME, 1, [kern.cp_time MIB item is available]) else AC_MSG_RESULT(no) fi dnl ------------------------------------------------------- Checking for X11 --- AC_PATH_XTRA if test x"$no_x" != x; then AC_MSG_ERROR([X Window System or development libraries not found. Make sure you have headers and libraries installed!]) fi dnl ===================================================== Maintaince Support === dnl AC_ARG_ENABLE(depend, [ --enable-depend Automatic .h dependencies. Requires GNU make and gcc.], [ if test "${enable_depend}" != "no"; then features="${features} depend" GCCDEP=-MMD fi ]) AC_ARG_ENABLE(debug, [ --enable-debug Use this option if you want to debug IceWM], [ if test "${enable_debug}" = "yes"; then AC_DEFINE(DEBUG, 1, [Define if you want to debug IceWM]) DEBUG="-g -DDEBUG -O0" features="${features} debugging-symbols" else DEBUG= fi ]) dnl =========================================================== I18N Support === dnl AC_ARG_ENABLE(i18n, [ --disable-i18n Disable internationalization]) if test "$enable_i18n" != "no"; then AC_CHECK_HEADERS(langinfo.h,, [ AC_MSG_ERROR([I18N support has been requested but langinfo.h wasn´t found. *** Check your system configuration.])]) AC_CHECK_FUNC(nl_langinfo,, [ AC_MSG_ERROR([I18N support has been requested but nl_langinfo wasn´t found. *** Check your system configuration.])]) ice_nl_codesets="" ICE_CHECK_NL_ITEM(CODESET, [ ice_nl_codesets="${ice_nl_codesets} CODESET," ]) ICE_CHECK_NL_ITEM(_NL_CTYPE_CODESET_NAME, [ ice_nl_codesets="${ice_nl_codesets} _NL_CTYPE_CODESET_NAME," ]) if test "${ice_nl_codesets}" = ""; then AC_MSG_ERROR([I18N support has been requested but nl_langinfo doesn't *** return any information about the locale's codeset. Check your manuals. *** Ask your vendor. Contact icewm-devel@lists.sourceforge.net when you know *** the name of the locale-dependent parameter for your platform.]) fi ice_nl_codesets="${ice_nl_codesets} 0" AC_DEFINE_UNQUOTED(CONFIG_NL_CODESETS, ${ice_nl_codesets}, [define how to query the current locale's codeset]) ice_iconv_cxxflags="${CXXFLAGS}" AC_CHECK_HEADERS(iconv.h,, [ AC_MSG_ERROR([I18N support has been requested but iconv.h wasn´t found. *** Check your system configuration. *** *** You might have to upgrade your C runtime library. If your system is *** based on the GNU C library (glibc) you'll need version 2.2 or newer. *** You also have the chance to install GNU libiconv available *** from ftp://ftp.gnu.org/pub/gnu/libiconv/. *** *** Alternatively you could call configure with the --disable-i18n switch.])]) AC_CHECK_DECL(_libiconv_version, [ AC_MSG_RESULT(assuming iconv.h belongs to GNU libiconv) LIBS="-liconv $LIBS" AC_TRY_LINK([#include ], [iconv(0,0,0,0,0);], AC_TRY_LINK([#include ], [iconv_open(0,0);], AC_TRY_LINK([#include ], [iconv_close(0);], CXXFLAGS="${CXXFLAGS}" CORE_LIBS="${CORE_LIBS} -liconv" AC_DEFINE(CONFIG_LIBICONV, 1, [Define when using libiconv]), AC_MSG_ERROR([iconv.h appears to be part of libiconv but linking failed. *** Check your system configuration. *** *** You might have to upgrade your C runtime library. If your system is *** based on the GNU C library (glibc) you'll need version 2.2 or newer. *** You also have the chance to install GNU libiconv available *** from ftp://ftp.gnu.org/pub/gnu/libiconv/. *** *** Alternatively you could call configure with the --disable-i18n switch.]))))], [ AC_MSG_RESULT(assuming iconv.h belongs to the C library) AC_CHECK_FUNCS(iconv iconv_open iconv_close,, AC_MSG_ERROR([iconv.h appears to be part of libc but linking failed. *** Check your system configuration. *** *** You might have to upgrade your C runtime library. If your system is *** based on the GNU C library (glibc) you'll need version 2.2 or newer. *** You also have the chance to install GNU libiconv available *** from ftp://ftp.gnu.org/pub/gnu/libiconv/. *** *** Alternatively you could call configure with the --disable-i18n switch.]))], [#include ]) AC_ARG_WITH(unicode-set, [ --with-unicode-set=CODESET your iconv's unicode set in machine endian encoding (e.g. WCHAR_T, UCS-4-INTERNAL, UCS-4LE, UCS-4BE)], AC_DEFINE_UNQUOTED(CONFIG_UNICODE_SET, "$with_unicode_set", [preferred Unicode set]), with_unicode_set=UCS-4//TRANSLIT) if test "$with_unicode_set" = "UCS-4//TRANSLIT" ; then ice_sufficent_iconv=no ICE_CHECK_CONVERSION(UTF-8,$with_unicode_set,no,$ice_libiconv, ice_sufficent_iconv=yes) if test "$ice_sufficent_iconv" != "yes" then AC_MSG_WARN([Your implementation of iconv doesn't grok TRANSLIT]) with_unicode_set=UCS-4 fi fi ice_sufficent_iconv=no ICE_CHECK_CONVERSION(ISO-8859-1,$with_unicode_set,no,$ice_libiconv, ICE_CHECK_CONVERSION(ISO-8859-2,$with_unicode_set,no,$ice_libiconv, ICE_CHECK_CONVERSION(UTF-8,$with_unicode_set,no,$ice_libiconv, ice_sufficent_iconv=yes))) CXXFLAGS="${ice_iconv_cxxflags}" if test "$ice_sufficent_iconv" != "yes" then AC_MSG_ERROR([Your implementation of iconv isn't able to perform *** the codeset conversions required. Check your system configuration. *** *** You might have to upgrade your C runtime library. If your system is *** based on the GNU C library (glibc) you'll need version 2.2 or newer. *** You also have the chance to install GNU libiconv available *** from ftp://ftp.gnu.org/pub/gnu/libiconv/. *** *** Alternatively you could call configure with the --disable-i18n switch.]) fi AC_DEFINE(CONFIG_I18N, 1, [Define to enable internationalization]) features="${features} i18n" fi dnl ============================================================ NLS Support === dnl AC_ARG_ENABLE(nls, [ --disable-nls Disable internationalized message]) if test "$enable_nls" != "no"; then AC_CHECK_FUNC(bindtextdomain,, [ AC_CHECK_LIB(intl, bindtextdomain, [ CORE_LIBS="${CORE_LIBS} -lintl" ], [ AC_MSG_ERROR([NLS (national language support) has been requested but *** the 'bindtextdomain' function neither has been found in your C runtime library *** nor in an external library called 'libintl'. *** *** Install your vendor's version of libintl or get GNU gettext available *** from ftp://ftp.gnu.org/pub/gnu/gettext/. *** *** Alternatively you could call configure with the --disable-nls switch.])])]) AC_DEFINE(ENABLE_NLS, 1, [Define to enable internationalized message]) features="${features} nls" TARGETS=$TARGETS' nls' AC_PATH_PROG(XGETTEXT, xgettext) AC_PATH_PROG(MSGMERGE, msgmerge) AC_PATH_PROG(MSGFMT, msgfmt) MSGMERGE="${MSGMERGE}" # --indent --verbose" MSGFMT="${MSGFMT}" # --check --statistics --verbose" if test ! -x "$MSGFMT" ; then AC_MSG_ERROR(['msgfmt' not found. Perhaps you need to install 'gettext'?.]) fi AC_SUBST(XGETTEXT) AC_SUBST(MSGMERGE) AC_SUBST(MSGFMT) NLS_SOURCES=`grep -l '\<_\>' "src/"*.cc | sed 's%^%\$(top_srcdir)/%g'` NLS_SOURCES=`echo ${NLS_SOURCES}` NLS_POFILES=`cd "${srcdir}/po"; echo *.po` NLS_POXFILES=`echo ${NLS_POFILES} | sed 's%\.po%.pox%g'` NLS_MOFILES=`echo ${NLS_POFILES} | sed 's%\.po%.mo%g'` AC_SUBST(NLS_SOURCES) AC_SUBST(NLS_POFILES) AC_SUBST(NLS_POXFILES) AC_SUBST(NLS_MOFILES) localedir='${datadir}/locale' fi dnl ================================================ Features of the XServer === dnl CORE_CFLAGS="${X_CFLAGS}" CORE_LIBS="${X_PRE_LIBS} ${CORE_LIBS} -lX11 ${X_LIBS} ${X_EXTRA_LIBS}" no_x_libs=$LIBS LIBS=$CORE_LIBS AC_CHECK_LIB(X11, XInternAtoms, [ AC_DEFINE(HAVE_XINTERNATOMS, 1, [Define to enable XInternAtoms]) ]) AC_ARG_ENABLE(sm, [ --disable-sm Don't support the X session managment protocol]) if test "$enable_sm" != "no"; then AC_CHECK_LIB(ICE, IceConnectionNumber, [ AC_DEFINE(CONFIG_SESSION, 1, [Define to support the X session managment protocol]) ], [ AC_MSG_WARN([Unable to use X shared memory extension]) ]) fi ac_have_shape=no AC_ARG_ENABLE(shape, [ --disable-shape Don't use X shape extension]) if test "$enable_shape" != "no"; then AC_CHECK_LIB(Xext, XShapeCombineRectangles, [ CORE_LIBS="${CORE_LIBS} -lXext" AC_DEFINE(CONFIG_SHAPE, 1, [Define to enable X shape extension]) ac_have_shape=yes ], [ AC_MSG_WARN([Unable to use X shape extension]) ]) fi if test "$ac_have_shape" = "yes"; then AC_ARG_ENABLE(shaped-decorations, [ --disable-shaped-decorations Disable transparent frame decoration (titlebar, borders), requires X shape extension (experimental) ]) if test "$enable_shaped_decorations" != "no"; then AC_DEFINE(CONFIG_SHAPED_DECORATION, 1, [Define to allow transparent frame borders.]) features="${features} shaped-decorations" fi fi AC_ARG_ENABLE(gradients, [ --disable-gradients Support gradients]) if test "$enable_gradients" != "no"; then AC_DEFINE(CONFIG_GRADIENTS, 1, [Define to enable gradient support.]) enable_antialiasing=yes features="${features} gradients" fi dnl AC_ARG_ENABLE(antialiasing, dnl [ --enable-antialiasing Support antialiasing (experimental, dnl implies --enable-xfreetype) ]) dnl if test "$enable_antialiasing" = "yes"; then dnl AC_DEFINE(CONFIG_ANTIALIASING, 1, [Define to enable antialiasing.]) dnl features="${features} antialiasing" dnl dnl if test "$enable_xfreetype" = "" ; then dnl enable_xfreetype=implied dnl fi dnl fi AC_ARG_ENABLE(xrandr, [ --disable-xrandr Disable XRANDR extension support]) if test "$enable_xrandr" != "no"; then AC_DEFINE(CONFIG_XRANDR, 1, [Define to enable XRANDR extension]) CORE_LIBS="$LIBS -lXrandr -lXrender -lXext" fi AC_ARG_ENABLE(corefonts, [ --enable-corefonts Support X11 core fonts]) AC_ARG_ENABLE(xfreetype, [ --disable-xfreetype Don't use XFreeType for text rendering. Requires --enable-i18n. ]) if test "$enable_corefonts" != "yes" -a "$enable_xfreetype" = no; then AC_MSG_ERROR("xfreetype or core fonts must be enabled") fi if test "$enable_xfreetype" != "no" -o "$enable_xfreetype" = "implied"; then AC_PATH_PROG(XFT_CONFIG, xft-config,, ${with_xft_arg-${PATH}}) if test "${XFT_CONFIG}" = ""; then AC_PATH_PROG(PKG_CONFIG, pkg-config) if test "${PKG_CONFIG}" != ""; then ${PKG_CONFIG} xft 2>/dev/null if test $? -eq 0 ; then XFT_CONFIG='pkg-config freetype2 xft' fi fi fi if test "${XFT_CONFIG}" != ""; then XFT_CFLAGS=`${XFT_CONFIG} --cflags` XFT_LIBS=`${XFT_CONFIG} --libs` AC_DEFINE(CONFIG_XFREETYPE, 2, [Define to enable XFreeType support.]) CORE_CFLAGS="${CORE_CFLAGS} $XFT_CFLAGS" CORE_LIBS="${CORE_LIBS} $XFT_LIBS" features="${features} xfreetype" else AC_CHECK_HEADERS(X11/Xft/Xft.h, [ AC_CHECK_LIB(Xft, XftDrawCreate, [ AC_DEFINE(CONFIG_XFREETYPE, 1, [Define to enable XFreeType support.]) CORE_LIBS="${CORE_LIBS} -lXft" enable_corefonts=yes features="${features} xfreetype" ], [ if test "$enable_xfreetype" != "implied"; then AC_MSG_ERROR([Xft support has been requested but libraries were not found. *** Configure your X server to support XFreeType. *** Information about how to do this can be found in RELNOTES for XFree86.]) fi ])], [ if test "$enable_xfreetype" != "implied"; then AC_MSG_ERROR([Xft support has been requested but headers were not found. *** Configure your X server to support XFreeType. *** Information about how to do this can be found in RELNOTES for XFree86.]) fi ]) fi fi if test "$enable_corefonts" = "yes"; then AC_DEFINE(CONFIG_COREFONTS, 1, [Define to enable X11 core conts.]) features="${features} corefonts" fi dnl ============================================================= GUI Events === dnl AC_ARG_ENABLE(guievents, [ --enable-guievents Enable GUI events (experimental)], [ if test "$enable_guievents" != "no"; then AC_DEFINE(CONFIG_GUIEVENTS, 1, [Define to enable GUI events support.]) features="${features} gui-events" AC_ARG_WITH(icesound, [ --with-icesound=interfaces] [ List of audio interfaces for icesound. Requires] [ support for GUI events. Default: OSS,Y,ESound],, [ with_icesound='OSS,Y,ESound' ]) for iface in `[ echo ${with_icesound} | sed -e 's/\([^,][^,]*\)\(,\|$\)/\1 /g' ]`; do case ${iface} in OSS|oss) AC_DEFINE(ENABLE_OSS, 1, [Define to enable OSS support.]) CONFIG_OSS=yes;; Y|Y2|YIFF|y|y2|yiff) AC_CHECK_HEADERS(Y2/Y.h, AC_CHECK_LIB(Y2, YOpenConnection, [ AC_DEFINE(ENABLE_YIFF, 1, [Define to enable YIFF support.]) AUDIO_LIBS="${AUDIO_LIBS} -lY2" CONFIG_YIFF=yes ]));; ESound|ESD|esound|esd) AC_ARG_WITH(esd-config, [ --with-esd-config=path Path to esd-config], [ ESD_CONFIG=$with_esd_config ], [ AC_PATH_PROG(ESD_CONFIG, esd-config) ]) if test "${ESD_CONFIG}" != ""; then ESD_CFLAGS="`${ESD_CONFIG} --cflags`" ESD_LIBS="`${ESD_CONFIG} --libs`" ac_flags="$CXXFLAGS ${ESD_CFLAGS}" ac_libs="$LIBS ${ESD_LIBS}" # CXXFLAGS="${CXXFLAGS} ${ESD_CFLAGS}" # LIBS="${LIBS} ${ESD_LIBS}" AC_CHECK_HEADERS(esd.h,, [ AC_MSG_ERROR([Invalid compiler flags returned by ${ESD_CONFIG}. *** Check your installation.])]) AC_CHECK_LIB(esd, esd_open_sound,, [ AC_MSG_ERROR([Invalid linker flags returned by ${ESD_CONFIG}. *** Check your installation.])]) CXXFLAGS="$ac_flags" LIBS="$ac_libs" AC_DEFINE(ENABLE_ESD, 1, [Define to enable ESD support.]) AUDIO_CFLAGS="${AUDIO_CFLAGS} ${ESD_CFLAGS}" AUDIO_LIBS="${AUDIO_LIBS} ${ESD_LIBS}" CONFIG_ESD=yes fi;; *) AC_MSG_WARN([Invalid audio interface: ${iface}]) esac done for iface in OSS YIFF ESD; do eval test \"\${CONFIG_${iface}}\" = "yes" && audio_support="${audio_support} ${iface}" done if test "${audio_support}" = ""; then AC_MSG_ERROR([You have to specify at least one valid audio interface.]) else APPLICATIONS="${APPLICATIONS} icesound" fi fi ]) AC_ARG_ENABLE(xinerama, [ --disable-xinerama Disable xinerama support]) if test "$enable_xinerama" = "no"; then echo ; else LIBS="$LIBS -lXinerama -lXext " AC_CHECK_LIB(Xinerama, XineramaQueryScreens, [ CORE_LIBS="-lXinerama $CORE_LIBS" AC_DEFINE(XINERAMA, 1, [Define to enable Xinerama support])], [ AC_MSG_ERROR([Xinerama can not be found])]) fi AC_ARG_ENABLE(x86-asm, [ --disable-x86-asm Don't use optimized x86 assembly code ]) case $target_cpu in i[[3-6]]86) ice_x86_target=yes;; *) ice_x86_target=no;; esac if test "$ice_x86_target" = "yes"; then test "$enable_x86_asm" != "no" && enable_x86_asm=yes \ || enable_x86_asm=no fi if test "$enable_x86_asm" = "yes"; then AC_DEFINE(CONFIG_X86_ASM, 1, [Define to enable x86 assembly code.]) features="${features} x86-asm" fi AC_ARG_ENABLE(prefs, [ --disable-prefs Disable configurable preferences]) if test "$enable_prefs" = "no"; then AC_DEFINE(NO_CONFIGURE, 1, [Define to disable preferences support.]) fi AC_ARG_ENABLE(keyconf, [ --disable-keyconf Disable configurable keybindings]) if test "$enable_keyconf" = "no"; then AC_DEFINE(NO_KEYBIND, 1, [Define to disable keybinding support.]) fi AC_ARG_ENABLE(menuconf, [ --disable-menuconf Disable configurable menus]) if test "$enable_menuconf" = "no"; then AC_DEFINE(NO_CONFIGURE_MENUS, 1, [Define to disable configurable menu support.]) fi AC_ARG_ENABLE(winoptions, [ --disable-winoptions Disable configurable window options]) if test "$enable_winoptions" = "no"; then AC_DEFINE(NO_WINDOW_OPTIONS, 1, [Define to disable configurable window options support.]) fi dnl ======================================== Stripped down versions of IceWM === dnl AC_ARG_ENABLE(taskbar, [ --disable-taskbar Disable builtin taskbar]) if test "$enable_taskbar" = "no"; then echo; else AC_DEFINE(CONFIG_TASKBAR, 1, [Define to to enable the builtin taskbar.]) fi AC_ARG_ENABLE(winmenu, [ --disable-winmenu Disable the window list menu]) if test "$enable_winmenu" = "no"; then echo; else AC_DEFINE(CONFIG_WINMENU, 1, [Define to to enable the window list menu.]) fi AC_ARG_ENABLE(lite, [ --enable-lite Build lightweight version of IceWM],, [ enable_lite=no ]) if test "${enable_lite}" != "yes"; then AC_DEFINE(CONFIG_TOOLTIP, 1, [Tooltips]) if test "${enable_taskbar}" != "no"; then AC_DEFINE(CONFIG_TASKBAR, 1, [Taskbar]) AC_DEFINE(CONFIG_ADDRESSBAR, 1, [Address bar]) AC_DEFINE(CONFIG_TRAY, 1, [Window tray]) AC_DEFINE(CONFIG_APPLET_MAILBOX, 1, [Mailbox applet]) AC_DEFINE(CONFIG_APPLET_CPU_STATUS, 1, [CPU status applet]) AC_DEFINE(CONFIG_APPLET_NET_STATUS, 1, [Network status applet]) AC_DEFINE(CONFIG_APPLET_CLOCK, 1, [LCD clock applet]) AC_DEFINE(CONFIG_APPLET_APM, 1, [APM status applet]) fi AC_DEFINE(CONFIG_WINLIST, 1, [OS/2 like window list]) if test "${enable_winmenu}" != "no"; then AC_DEFINE(CONFIG_WINMENU, 1, [Window menu]) fi APPLICATIONS="${APPLICATIONS} icehelp" else AC_DEFINE(LITE, 1, [Lite version]) fi dnl AC_ARG_WITH(gnome-root-property, dnl [ --with-gnome-root-property[=atom]] dnl [ Name of a root window property indicating that] dnl [ GNOME is active. Default: GNOME_SM_PROXY.] dnl [--without-gnome-root-property] dnl [ Assume that GNOME is active when \$SESSION_MANAGER] dnl [ is set. Most session managers set this variable.]) dnl if test "${with_gnome_root_property}" != "no"; then dnl if test "${with_gnome_root_property}" = ""; then dnl with_gnome_root_property="GNOME_SM_PROXY" dnl fi dnl AC_DEFINE_UNQUOTED(CONFIG_GNOME_ROOT_PROPERTY, dnl [ "${with_gnome_root_property}" ], dnl [ Name of a root window property indicating that GNOME is active.]) dnl fi dnl ========================================================== Image library === dnl dnl ICE_ARG_WITH(imlib, dnl [ --with-imlib[=path] Use Imlib for images [path to imlib-config]]) dnl ICE_ARG_WITH(xpm, dnl [ --with-xpm[=prefix] Use libXpm for images [search it in prefix/lib]]) dnl ICE_ARG_WITH(gdk_pixbuf_xlib, dnl [ --with-gdk_pixbuf_xlib[=prefix] Use gdk_pixbuf_xlib for images [search it in prefix/lib]]) dnl dnl if test "${with_imlib_sign}" != "yes"; then dnl if test "${with_xpm_sign}" != "yes"; then dnl if test "${with_gdk_pixbuf_xlib_sign}" != "yes"; then dnl if test "${with_gdk_pixbuf_xlib_sign}" != "no"; then dnl with_gdk_pixbuf_xlib_sign=yes dnl else dnl if test "${with_imlib_sign}" != "no"; then dnl with_imlib_sign=yes dnl else dnl with_xpm_sign=yes dnl fi dnl fi dnl fi dnl fi dnl fi dnl if test "${with_imlib_sign}" = "yes"; then dnl if test "${with_xpm_sign}" = "yes"; then dnl # if test "${with_xpm_sign}" = "yes"; then dnl AC_MSG_ERROR([libXpm and Imlib can not be used in the same time]) dnl # fi dnl fi dnl fi IMAGE_CFLAGS=`pkg-config gdk-pixbuf-xlib-2.0 --cflags` IMAGE_LIBS=`pkg-config gdk-pixbuf-xlib-2.0 --libs` AC_DEFINE(CONFIG_GDK_PIXBUF_XLIB, 1, [Define to use gdk_pixbuf_xlib for image rendering]) image_library=gdk_pixbuf_xlib dnl ------------------------------------------------------ check for Imlib --- dnl dnl if test "${with_imlib_sign}" = "yes"; then dnl AC_PATH_PROG(IMLIB_CONFIG, imlib-config,, ${with_imlib_arg-${PATH}}) dnl if test "${IMLIB_CONFIG}" = ""; then dnl AC_MSG_ERROR([imlib-config can not be found]) dnl else dnl IMAGE_CFLAGS=`$IMLIB_CONFIG --cflags` dnl IMAGE_LIBS=`$IMLIB_CONFIG --libs` dnl dnl AC_DEFINE(CONFIG_IMLIB, 1, [Define to use Imlib for image rendering]) dnl dnl image_library=Imlib dnl fi dnl fi dnl -------------------------------------------------------- check for Xpm --- dnl dnl if test "${with_xpm_sign}" = "yes"; then dnl if test x"$with_xpm_arg" != x; then dnl xpm_cflags="-I${with_xpm_arg}/include" dnl xpm_lflags="-L${with_xpm_arg}/lib" dnl fi dnl AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, dnl [ IMAGE_CFLAGS="${xpm_cflags}" dnl IMAGE_LIBS="${xpm_lflags} -lXpm" dnl dnl AC_DEFINE(CONFIG_XPM, 1, [Define to use libXpm for image rendering]) dnl no_imlib=yes ], dnl [# if test "${with_xpm_sign}" = ""; then dnl AC_MSG_ERROR([libXpm can not be found]) dnl # fi dnl ], dnl [ $xpm_lflags ]) dnl dnl image_library=libXpm dnl fi dnl --------------------- We need mkfontdir to create fonts.dir for Infadel2 --- AC_ARG_WITH(mkfontdir, [ --with-mkfontdir=path Path to mkfontdir], [ MKFONTDIR=$with_mkfontdir ], [ AC_PATH_PROG(MKFONTDIR, mkfontdir,, $PATH:/usr/X11R6/bin) ]) LIBS=$no_x_libs dnl Path adjustment AC_ARG_WITH(kdedatadir, [ --with-kdedatadir=path KDE's data directory (\$KDEDIR/share)], [ if test x"$with_kdedatadir" = x -o "$with_kdedatadir" = "yes"; then AC_MSG_ERROR([Invalid usage of --with-kdedatadir argument]) else kdedatadir=$with_kdedatadir fi ], [ if test x"$KDEDIR" != x; then kdedatadir="${KDEDIR}/share" else kdedatadir="${datadir}" fi ] ) dnl ======================================================== Some path stuff === dnl AC_ARG_WITH(libdir, [ --with-libdir=path Default data directory (\$datadir/icewm)], [ if test x"$with_libdir" = x -o "$with_libdir" = "yes"; then AC_MSG_ERROR([Invalid usage of --with-libdir argument]) else libdatadir=$with_libdir fi ], [ libdatadir='${datadir}/icewm' ]) AC_ARG_WITH(cfgdir, [ --with-cfgdir=path System configuration directory (/etc/icewm)], [ if test x"$with_cfgdir" = x -o "$with_cfgdir" = "yes"; then AC_MSG_ERROR([Invalid usage of --with-cfgdir argument]) else cfgdatadir=$with_cfgdir fi ], [ cfgdatadir='/etc/icewm' ]) AC_ARG_WITH(docdir, [ --with-docdir=path Documentation directory (\$prefix/doc)], [ if test x"$with_docdir" = x -o "$with_docdir" = "yes"; then AC_MSG_ERROR([Invalid usage of --with-docdir argument]) else docdir=$with_docdir fi ], [ docdir='${datadir}/doc' ]) dnl ============================================================ GNOME stuff === dnl AC_ARG_ENABLE(menus-gnome1, [ --enable-menus-gnome1 Display GNOME 1 menus], [ if test "${enable_menus_gnome1}" = "yes"; then AC_PATH_PROG(GNOME1_CONFIG, gnome-config) if test "${GNOME1_CONFIG}" != ""; then GNOME_VER=1 GNOME1_CFLAGS=`$GNOME1_CONFIG --cflags gnome` GNOME1_LIBS=`$GNOME1_CONFIG --libs gnome` AC_DEFINE(CONFIG_GNOME_MENUS, 1, [Define to make IceWM more GNOME-friendly]) APPLICATIONS="${APPLICATIONS} icewm-menu-gnome1" GWMDIR="`${GNOME1_CONFIG} --datadir`/gnome/wm-properties/" CONFIG_GNOME1_MENU_DIR="`${GNOME1_CONFIG} --prefix`/share/gnome/apps/" fi if test "${GNOME1_CFLAGS}" = ""; then AC_MSG_ERROR([gnome-config can not be found. *** Install the GNOME´s development packages.]) fi fi ]) AC_ARG_ENABLE(menus-gnome2, [ --enable-menus-gnome2 Display GNOME 2 menus], [ if test "${enable_menus_gnome2}" = "yes"; then AC_PATH_PROG(PKG_CONFIG, pkg-config) if test "${PKG_CONFIG}" != ""; then GNOME_VER=2 GNOME2_CFLAGS=`pkg-config --cflags gnome-desktop-2.0 libgnomeui-2.0` GNOME2_LIBS=`pkg-config --libs gnome-desktop-2.0 libgnomeui-2.0` AC_DEFINE(CONFIG_GNOME_MENUS, 1, [Define to make IceWM more GNOME-friendly]) APPLICATIONS="${APPLICATIONS} icewm-menu-gnome2" GNOME2_PREFIX=`pkg-config --variable=prefix gnome-desktop-2.0` GWMDIR="${GNOME2_PREFIX}/share/gnome/wm-properties/" CONFIG_GNOME2_MENU_DIR="${GNOME2_PREFIX}/share/desktop-directories/" fi if test "${GNOME2_CFLAGS}" = ""; then AC_MSG_ERROR([gnome 2 can not be found via pkg-config. *** Install the GNOME´s development packages.]) fi fi ]) CONFIG_KDE_MENU_DIR="`kde-config --path apps | sed -e 's/.*://'`" AC_SUBST(GNOME_VER) AC_SUBST(CONFIG_GNOME1_MENU_DIR) AC_SUBST(CONFIG_GNOME2_MENU_DIR) AC_SUBST(CONFIG_KDE_MENU_DIR) AC_DEFINE(WMSPEC_HINTS, 1, [wmspec hints]) AC_DEFINE(GNOME1_HINTS, 1, [GNOME1 hints]) dnl ====================================================== Write out results === dnl ---------------------------------------- First adjust some substitutions --- AC_SUBST(PACKAGE,`sed -ne 's/PACKAGE=//p' VERSION`) AC_SUBST(VERSION,`sed -ne 's/VERSION=//p' VERSION`) AC_SUBST(HOSTOS,`uname -sr || echo unknown`) AC_SUBST(HOSTCPU,`uname -m || echo unknown`) dnl -------------------------------------------- Compiler flags, definitions --- AC_SUBST(DEBUG) AC_SUBST(GCCDEP) AC_SUBST(CORE_CFLAGS) AC_SUBST(IMAGE_CFLAGS) AC_SUBST(AUDIO_CFLAGS) AC_SUBST(GNOME1_CFLAGS) AC_SUBST(GNOME2_CFLAGS) AC_SUBST(CORE_LIBS) AC_SUBST(IMAGE_LIBS) AC_SUBST(AUDIO_LIBS) AC_SUBST(GNOME1_LIBS) AC_SUBST(GNOME2_LIBS) ICE_EXPAND(PREFIX,${prefix}) ICE_EXPAND(BINDIR,${bindir}) ICE_EXPAND(LIBDIR,${libdatadir}) ICE_EXPAND(CFGDIR,${cfgdatadir}) ICE_EXPAND(LOCDIR,${localedir}) ICE_EXPAND(KDEDIR,${kdedatadir}) ICE_EXPAND(DOCDIR,${docdir}) ICE_EXPAND(MANDIR,${mandir}) AC_SUBST(PREFIX) AC_SUBST(BINDIR) AC_SUBST(LIBDIR) AC_SUBST(CFGDIR) AC_SUBST(LOCDIR) AC_SUBST(KDEDIR) AC_SUBST(DOCDIR) AC_SUBST(MANDIR) AC_SUBST(GWMDIR) dnl ---------------------------------------------------------- Build targets --- DEPENDENCIES="" BASEOBJS="" BASEBINS="" for binary in ${APPLICATIONS}; do BASEOBJS="${BASEOBJS} \$(${binary}_OBJS)" BASEBINS="${BASEBINS} ${binary}\$(EXEEXT)" done AC_SUBST(BASEOBJS) AC_SUBST(BASEBINS) TESTOBJS="" TESTBINS="" for binary in ${TESTCASES}; do TESTOBJS="${TESTOBJS} \$(${binary}_OBJS)" TESTBINS="${TESTBINS} ${binary}\$(EXEEXT)" done AC_SUBST(TESTOBJS) AC_SUBST(TESTBINS) dnl -------------------------------------------------------- Install targets --- TARGETS_INSTALL=`for target in ${TARGETS}; do echo $ECHO_N "install-${target} $ECHO_C"; done` BINFILES=`for binary in ${APPLICATIONS}; do echo $ECHO_N "\\\$(top_srcdir)/src/${binary}\\\$(EXEEXT) $ECHO_C"; done` AC_SUBST(TARGETS) AC_SUBST(TARGETS_INSTALL) AC_SUBST(APPLICATIONS) AC_SUBST(TESTCASES) AC_SUBST(BINFILES) AC_SUBST(INSTALL) AC_SUBST(INSTALLDIR,"${INSTALL} -m 755 -d") AC_SUBST(INSTALLBIN,"${INSTALL_PROGRAM}") AC_SUBST(INSTALLLIB,"${INSTALL_DATA}") AC_SUBST(INSTALLETC,"${INSTALL_DATA}") AC_SUBST(INSTALLMAN,"${INSTALL_DATA}") dnl --------------------------------------------------------- Generate files --- AC_CONFIG_COMMANDS(config.status, [ for binary in ${ac_targets_binaries}; do echo "${binary}\$(EXEEXT): \$(${binary}_OBJS)" >> "${srcdir}/src/Makefile" done if test "${ac_depend}" = "yes"; then echo >> "${srcdir}/src/Makefile" echo '-include $(OBJECTS:.o=.d)' >> "${srcdir}/src/Makefile" echo '-include $(genpref_OBJS:.o=.d)' >> "${srcdir}/src/Makefile" fi ],[ ac_targets_binaries="${APPLICATIONS} ${TESTCASES}" ac_depend="${enable_depend}" ]) AC_OUTPUT( Makefile src/Makefile po/Makefile lib/keys lib/menu lib/programs lib/toolbar lib/winoptions ) dnl -------------------------------------------------------- Display results --- AC_MSG_RESULT() ICE_MSG_VALUE([Build targets], TARGETS) ICE_MSG_VALUE([Applications], APPLICATIONS) ICE_MSG_VALUE([Image library], image_library) ICE_MSG_VALUE([Audio support], audio_support) ICE_MSG_VALUE([Features], features) ICE_MSG_VALUE([Paths: PREFIX], prefix) ICE_MSG_VALUE([ BINDIR], bindir) ICE_MSG_VALUE([ LOCDIR], localedir) ICE_MSG_VALUE([ LIBDIR], libdatadir) ICE_MSG_VALUE([ CFGDIR], cfgdatadir) ICE_MSG_VALUE([ KDEDIR], kdedatadir) ICE_MSG_VALUE([ DOCDIR], docdir) ICE_MSG_VALUE([ MANDIR], mandir) icewm-1.3.7/TODO0000644000076600007660000000366711463274241012332 0ustar develdevel only set background in icewmbg (with it's own config/theme file) lock focus to active window if possible accept url/file DND on taskbar menu/icons (to launch program) show disabled titlebar buttons remember focused window when switching workspaces if needed make generic border code for all widgets multi-column menus fix xsession annoyance somehow (has workaround in winoptions) WM_COLORMAP_WINDOWS property support implement application(group)-modal/transient dialogs (Motif - Adobe Acrobat ?) configuration utility (use GTK or java) true-color icons configurable icon sizes dither icons to small set of colors scale icon pixmaps to necessary sizes if missing configure options on the fly super-hotkey to abort grab would be nice (for C-A-D) combine window list and C+A+D? support .ICO (windows,os2) icons and a.xpm&mini/mini-a.xpm format icons modularize (for 2.0) taskbar rewrite: double/dynamic/vertical taskbar modularize taskbar objects (toolbar,workspaces,appicons,applets) taskbar keyboard navigation dynamic configuration of workspaces done? echo I$[$(/bin/echo 'internationalization\c' | wc -c)-2]N windows dockable to edge of screen and other windows minimize/restore transient windows when owner is minimized/restored general: fix -n option not to use any user/system specific settings? pixmaps need to be defined using translated colors (dark,bright,bg,fg) pointer move/size during keyboard move/size -clickFocus,+pointerColormap,xlock -install -nolock -mode swirl colormap switching for popup windows? (key/mouse differs? in gimp) opaque move/size locks up during xkoules fadein/out (xkoules BUG?) fix motif hints handling (decorations/functions - show disabled buttons) ClickToFocus=0 -> switching workspaces back/forth changes focus win !other Xdnd implementations have a bug with workspace switching buttons (drag-over switches) icewm-1.3.7/CHANGES0000644000076600007660000021737611463274241012641 0ustar develdevelstable: 1.3.7: 2010-10-31 - fix crash with "Cascade" - fix crash when dragging Task bar app icons 1.3.7pre2: 2010-04-28 - winoption: appTakesFocus - for apps that actually use globally active input 1.3.7pre1: 2010-04-27 - battery status as graphics not text (Alexander Drozdov) - 'icewm-set-gnomewm' script to set GNOME window manager to icewm 1.3.6: - build fixes 1.3.6pre3: 2010-01-05 - bug fixes (task bar auto hide) 1.3.6pre2: 2010-01-04 - bug fixes 1.3.6pre1: 2010-01-03 - new setting: HideTitleBarWhenMaximized - bug fixes 1.3.5 - merged changes up to 1.2.38pre2 - fix possible crash when loading application icons (Eduard Bloch) - rpm .spec file updates 1.3.4pre2: 2009-04-13: - option XRRPrimaryScreenName - xrandr output name for primary screen (with taskbar) - XRRDisable - option to disable use of XRANDR 1.3.4pre1: 2009-01-25 - xrandr screen configuration support (replaces xinerama) - per-screen work area - merged changes up to 1.2.37 1.3.3: - merged changes up to 1.2.36 - add FocusRequestFlashInterval (0 = disable) 1.3.2: - merged changes up to 1.2.34 1.3.1: - merged changes up to 1.2.32 - handle all NET_WM_ICON app properties (Thomas Holder) - display memory/swap/temperature/frequency information in the CPU applet (Eugeny Vdovin) - warp the mouse pointer on mouse triggered workspace switch (Owen Marshall) - show window preview for workspaces in taskbar (Thomas Holder) 1.3.0: - merged changes up to 1.2.30 - NET_WM_ICON support - gdk_pixbuf_xlib now used as image library old: 1.2.38pre2: - various bug fixes 1.2.38pre1: - xinerama fixes - app-group transient window implementation - FreeBSD ACPI support - Alexander Motin (amotin) 1.2.37: - fix centering of transient windows over parents (Bert Wesarg) - check if window is allowed to be moved, before starting movement (Bert Wesarg) - fix key handling on buttons 1.2.36: - add option TaskBarFullscreenAutoShow (default = 1) 1.2.36pre2: 2008-08-17 - regrab keyboard bindings when keyboard mapping changes 1.2.36pre1: 2008-08-07 - fix unresponsive taskbar when PassFirstClickToClient=0 - add support for sysfs interface (instead of proc) for battery status (initial code by Santiago Garcia Mantinan) - fix maximized window repositioning on fullscreen toggle - bug 1852567 - make searching for icons more consistent (iconPath first, search each directory first for all possible types - xpm, png) - Italian translation update - Korean translation update - translation cleanup: converted .po files to UTF-8 1.2.35: 2008-01-05 - Application tray bug fixes - Add encoding/language to about dialog 1.2.34: 2007-12-27 - fix gmplayer switching to fullscreen - popup dialog focus fixes - fix screen change with xrandr 1.2 1.2.33: 2007-11-04 - build fixes (Bert Wesarg) - fix FocusOnRaise - tray fixes - fix taskbar popup in fullscreen mode 1.2.32: 2007-08-07 - fix session shutdown when logging out (Stanislav Maslovski) - tweaks to taskbar auto-hide in fullscreen mode 1.2.31: 2007-07-27 - auto-hide like taskbar activation in full screen mode - fix raise/lower of windows of java6 apps - fix iconic app startup 1.2.31pre1: 2007-05-20 - fix crash when using battery status applet without ACPI (flitsch) - fix CPU status applet with long uptime - zh_CN translation update (LI Daobing) - zh_TW translation update (Wei-Lun Chao) - added missing ShowSettingsMenu and ShowFocusModeMenu settings (Evgenii Terechkov) - Czech translation update - cross compilation fix (Lucas Correia Villa Real) - fix --enable-lite + --enable-gradients (Lucas Correia Villa Real) - binding to raise window with mouse (MouseWinRaise=Ctrl+Alt+Mouse1) (Thomas Holder) - Russian translation update (Evgenii Terechkov) 1.2.30: 2006-12-24 - battery status cleanups - new option BatteryPollingPeriod (default 10 seconds) 1.2.30pre1: 2006-12-17 - fix focus after minimizing all windows - moved Themes selection to Settings menu - added Settings -> Focus menu (config saved to ~/.icewm/focus_mode as FocusMode=1,2 or 0) - startMinimized window option fixed - new setting MapInactiveOnTop (default 1) - new setting RequestFocusOnAppRaise (when FocusOnAppRaise=0) 1.2.29: 2006-12-03 - Spanish translation updated (Eulogio Serradilla) 1.2.29pre1: 2006-11-12 - reduce slow down when drawing in GIMP (repeated titlebar update) - fix relayout when screen rotates - fix crash with qt4 apps - German translation fixes - altgr_binding_support by Jörg Sommer - Apple PMU support by Jörg Sommer 1.2.28: 2006-09-10 - fix potential crash with layer/z-order changes - Spanish translation update (Eulogio Serradilla) 1.2.28pre2: 2006-08-31 - fix smart placement - warning fixes 1.2.28pre1: 2006-08-24 - start menu pixmap now named: taskbar/start.xpm - fix zOrder in ShowDesktop action - fix occasional keyboard navigation malfunction in the start menu - try to mouse focus only when mouse actually moves to another window - prevent focusing taskbar with mouse focus - use locale strings in 'icewm-menu-gnome2' - also search for .png icons when only basename is specified (Manuel Carrasco) - change mouse cursor when dragging the taskbar (Manuel Carrasco) - major focus cleanups and improvements - icewmtray: catch HUP signal to reload theme and other fixes (Manuel Carrasco) - new preferences option: WinMenuItems (default=rmsnxfhualyticw) (Manuel Carrasco/Marko Macek) 1.2.27: 2006-08-06 - Danish translation (by Ole Carlsen) - added 'Look=flat' (oscarello) - added TaskbarButtonWidthDivisor (lysanderslair) - minor workspace switching optimization - Ramunas Lukosevicius - new FSF address added in COPYING 1.2.26: 2006-04-16 - fix icesh workspace switching (Thomas Holder) - Polish translation fix (Pawel Chwalowski) - fix focus after closing fullscreen window - new option: TaskBarShowTransientWindows (default = 1, for now) 1.2.25: 2006-02-03 - fix resize of maximized windows when taskbar set to AutoHide - fix support for screens 0.1 and up 1.2.25pre1: 2006-01-31 - fix format in window size/position display (Bert Wesarg) - fix configure to use pkg-config for xft (Marius Feraru) - fix build with Sun Forte C++ (Grant McDorman) - icewmtray crash fixes (Grant McDorman) 1.2.24: 2006-01-22 - option to --replace an extisting window manager - change menu scroll wheel direction (Thomas Holder) - paint desktop tray background (Thomas Holder) - gcc 4.1 build fixes (Hanno Boeck) - fix gcc strict aliasing errors (Pavel Nemec) 1.2.24pre1: 2005-12-04 - restore Dutch translation from Ton Kersten - zh_TW translation from Wei-Lun Chao - fix TaskBarKeepBelow=1 preference - fix problems in horizontal maximization - implemented support for --replace option - Make shaped decorations work in 21 bit graphics cards (like those common in sparcs) -- Bernhard R. Link 1.2.23: 2005-08-14 - make taskbar pop out even when collaped - Slovak translation update (Zdenko Podobny) 1.2.23pre1: 2005-07-31 - fix crash when hiding the taskbar and "collapse" button is hidden - fix repeated drag over taskbar icon not working - fix problems with Unmap events being handled incorrectly - customizable placement order options for minimized window icons (MiniIconsPlaceHorizontal, MiniIconsRightToLeft, MiniIconsBottomToTop) - (Konstantin Korikov - lostclus) 1.2.22: 2005-07-17 - AutoShowDelay setting (opposite of AutoHideDelay) - use Workspace status window instead of showing the taskbar when workspace changes if taskbar autohide is enabled 1.2.22pre3: 2005-07-15 - fix focusing after window minimized or hidden 1.2.22pre2: 2005-07-10 - Remember last focused window per-workspace - Enable the LockCommand functionality only if command found (Eduard Bloch) - new Korean translation (Ken Yeo) 1.2.22pre1: 2005-06-28 - Latvian translation (Kristaps Kaupe) - Double click activates workspace in window list - Fixes to taskbar layout when only tasks visible - Made network status applets show/hide dynamically again - Add image to taskbar collapse button - Fix MinimizeToDesktop windows getting out of desktop area - Added key binding: KeySysCollapseTaskBar - Fixed UTF-8 input support in AddressBar 1.2.21: 2005-05-31 1.2.21pre2: 2005-05-16 - translation: Vietnamese (Phan Vinh Thinh) - translation: Indonesian (Arif E. Nugroho) - translation update: Simplified Chinese (Hiweed Leng) - translation update: French (Frederic Bothamy) - APM applet support for NetBSD (Iain Hibbert (plunky)) - add new winoption: noFocusOnMap - fix ClientWindowMouseActions for Window-Drag combination 1.2.21pre1: 2005-03-20 - improve selection of "urgent" windows with alt+tab - fix possible crash (Grant McDorman) - fix 64bit usage of Xft (Marcus Meissner) - cleanup warning on still-open file descriptors - disabled some Ctrl+Alt+Del commands by default since they need some configuring to work on all systems - fix desktop layer setting for nautilus 1.2.20: 2005-01-09 - fix+revert default binding for MouseWinMove an MouseWinSize - fix 1 pixel border when taskbar at top of screen - fix themes not loading from user directory 1.2.19: 2004-12-26 - fix crash/build failure when taskbar disabled - fix build/link with some gcc/g++ versions 1.2.18: 2004-12-18 - changed icedesert colors (Hanspeter Roth) 1.2.18pre1: 2004-12-05 - disable SupportsSemitransparency by default, this makes icewmbg exit after setting the image and reduces memory usage - fix Meta key handling typo - fix CPU waste in icewm-session and icewmtray - fix some Win+x key combinations - new settings MouseWinMove (=Alt+Ctrl+Pointer_Button1) and MouseWinSize (=Alt+Ctrl+PointerButton3). The default bindings have changed from Alt+button drag to Ctrl+Alt (or Super). 1.2.17: 2004-11-07 - fix: windows were not expanding when taskbar was hidden - fix: reused (hidden) application windows popped up on original workspace - fix: build with --disable-taskbar - fix: maximize/restore for rxvt - fix: reboot/shutdown functionality (default configuration changed to use 'sudo') 1.2.17pre2: 2004-10-31 - fix crash on startup when mailbox or net status disabled - fix build with gcc > 3.3 - fix gray lines on taskbar bottom - major changes in window geometry/layout handling - fix "tray icon" 1.2.17pre1: 2004-10-24 - fix \ quoting in configuration files (Eduard Bloch) - fix "win" key when NumLock active - more weird modifier map fixesa - updated Slovenian translation (Jernej Kovacic) - add the button to collapse the task bar - rewrite of taskbar layout code - force Imlib to use default visual (fix xorg visual mess) - vertical layout for Alt+Tab (Eduard Bloch) 1.2.16: 2004-08-16 - fullscreen fix for _NET_WM_STATE_FULLSCREEN (affects mplayer) - use our own replacement for basename - ACPI battery status fix (gicco) - fix bug 984427 (addressbar ignores backspace when numlock pressed) - Polish translation update 1.2.15: 2004-08-09 - enable locale for icesh 1.2.15pre4: 2004-08-05 - fix crash/lockup at startup in ACPI status applet when ac module not loaded - tray icon sizing cleanups - fix bug 883518: keyboard gets locked until icewm menu is activated - double buffering fixes - French translation update - Finnish translation update (Taisto Kuikka) - menuprogreload menu keyword added (Konstantin Korikov) syntax: menuprogreload title icon timeout command ... - battery status display for FreeBSD (Hanspeter Roth) - smart snap window positioning triggered by C+S+A+numpad (Bert Wesarg) - key to show desktop (Super+D) 1.2.15pre3: 2004-08-01 - icesound gcc 2.95.3 compile fix (Thomas Zajic) - net status support for OpenBSD (Hanspeter Roth) - FreeBSD build fix (Hanspeter Roth) - basename cleanups for FreeBSD - systray cleanups for wine, ... - battery status uses design capacity (Hanspeter Roth) 1.2.15pre2: 2004-07-18 - Slovak translation (Radovan Stas) - fix activation from gnome-2.6 panel to properly raise window - fix transparency support (caused crashes in xchat...) - NetBSD support for NetStatus (Iain Hibbert) - net modifier setup code to cope with weird xorg modifier setup 1.2.15pre1: 2004-06-27 - fix ppp applet isdn online status - fix focusing new+maximized windows - fix some alt+tab pref combinations (hidden + all/group workspaces) - some more gcc 3.4 fixes (morfic) 1.2.14: 2004-05-22 - minor tweak to alt+tab behavior when selecting from all workspaces 1.2.14pre16: 2004-05-09 - netwm modal state broken, disabled - make menu/config file parsing behave more like sh (handle both single and double quotes) -- Eduard Bloch - Italian translation update - Czech translation update - fix build with gcc-3.4 1.2.14pre15: 2004-05-02 - add new theme yellowmotif (Andreas Leitgeb (avl42)) - fix in window mapping code for Citrix client - bug fixes in xft clipping 1.2.14pre14: 2004-04-20 - Solaris fixes to configure.in (Damjan Perenic) - implement EWMH "modal" state - show themable preferences in ~/.icewm/preferences - fix order in CPU Status (Hanspeter Roth) 1.2.14pre13: 2004-04-12 - fix antialiasing of menu icons - fix raising of new window when in fullscreen - Linux Kernel 2.6 iowait,irq,softirq cpu status support (Hanspeter Roth) - improved support for NetWM hints (state: above, below, ...) - fix delayed mouse focus with fast keyboard desktop switches 1.2.14pre12: 2004-03-21 - fixed icon antialiasing with IMLIB - fix crash with XPM icon loading - Solaris fixes (Damjan Perenic) 1.2.14pre11: 2004-03-16 - minor bug fixes and build fixes 1.2.14pre10: 2004-02-29 - fix comile with --enable-lite - CPUStatus fix for FreeBSD 5.2 / gcc 3.3.3 (Hanspeter Roth) - fix crash in CPU status (L10N related, translations need to be updated) - made ShowMenuButtonIcon setting themable again - KeyWinMaximizeHoriz binding (no default key yet) - Italian translation update (Yuri Bongiorno) - Finnish translation update (Taisto Kuikka) - Turkish translation (CoÅku Erdem) 1.2.14pre9: 2004-01-19 - improve maximized window position handling on workspace switches 1.2.14pre8: 2004-01-11 - add Xft font specification for Infadel2 theme - image support for the "show desktop" icon - change startup order in icewm-session (icewm now first, startup last) - minimize all / show desktop should not minimize unminimizable windows - improvements to icehelp - fix winoptions icon override behavior - keep theme history in ~/.icewm/themes (Eduard Bloch) 1.2.14pre7: 2004-01-03 - fix reaping of children in icewm-session - initial mapping code cleanup 1.2.14pre6: 2003-12-30 - fix "lost focus when maximizing" in mouse-focus mode - fix "Super+key" bindings again - remove line/string length limits for preferences file 1.2.14pre5: 2003-12-25 - fix problem with replaying Super+X when not activating menu - build fixes for FreeBSD - build fix for Xrandr < 1.0 (not tested) - *bsd cpu status support (Hanspeter Roth) 1.2.14pre4: 2003-12-23 - movesize-fx obsoleted - wm-session obsoleted - header cleanups - fix monitor for linux 2.0 (Miroslav Stibor) - fix focus/click with multiple emacs frames - all font preferences now have a ...Xft variant that can be set to fontconfig pattern specification. example: MenuFontNameXft=sans-serif:size=12:bold - enabled shaped window decorations by default (configure) 1.2.14pre3: 2003-12-22 - debian fixes (Eduard Bloch) - fixes and cleanups 1.2.14pre2: 2003-12-20 - compile fixes for egcs-2.91.66 (Miroslav Stibor) - icewm-session explicitly terminates icewm and icewmtray (Hanspeter Roth) - code refactoring and cleanup 1.2.14pre1: 2003-11-01 - initial support for XRANDR - enable alt+Tab in LITE - only allow a restricted set of prefs to be set in a theme - fix shutdown in logout menu (was a reboot) - fix crash on startup when TaskBarShowWindowListMenu=0 and TaskBarDoubleHeight=1 set (Alexander Portnoy - alexpor) - icesound fixes (some variants need testing) - nested themes menus (Eduard Bloch) - support for rollover titlebar buttons (Rob Costello) - CPU status fixes. New option: TaskBarCPUDelay (Miroslav Stibor) - Net status fixes. New options: TaskBarNetSamples, TaskBarNetDelay (Miroslav Stibor) - fixes to icewm-session - Ctrl+Alt+Numpad moves window (Bert Wesarg) 1.2.13: 2003-09-27 - build fixes - only handle KDE tray protocol when icewmtray running 1.2.13pre3: 2003-09-14 - ShowDesktop button added (someone make a nice icon, please) - fix defunct icewmbg processes on theme selection - fix setting themes with a SPACE in the name - KDE system tray support (experimental) - support for scaled backgrounds (experimental) - fix crash on option parsing in icesound - remove "xftdummy" foundry from default fonts (Pavel Roskin) - add reboot/shutdown to logout menu (Hanspeter Roth) - sort theme menu by name 1.2.13pre2: 2003-09-05 - fix icewmbg not setting the background when started before icewm 1.2.13pre1: 2003-08-31 - fix ~/.icewm/theme file permissions - fix drawing of checkboxes in menus - fix display corruption in network status - fix memory leak in icewmbg on workspace switches - fix menu behavior with xinerama - Italian translation updated - new preference "DoubleBuffer" (default: 1) - experimental: icewm-session (runs icewmbg. icewmtray, icewm and restarts icewm on crash) 1.2.12: 2003-08-24 - MAJOR CHANGE: reverted preferences/theme order to same as before 1.2.10. Added "prefoverride" file for overriding theme preferences. - icewmbg is only re/started when already running - fix build with --disable-taskbar - fix build with --disable-shape - fix ShowMoveSizeStatus with OpaqueMove/Resize 1.2.11: 2003-08-19 - added forcedClose window option (Hanspeter Roth) - added recent average in network monitor - fix icewmbg not setting theme background - fix spelling of _NET_WORKAREA hint (Jeff Pohlmeyer (tgeek)) - fix spelling of --client-id option name (YAMAMOTO, Taku ) - fix random restart failures - fix codeset handling on FreeBSD - Czech translation update (Jan Horak) - Bulgarian translation (Pavel Pyuter) - fix painting of exposed icons 1.2.10: 2003-08-11 - added "Default" to Themes submenu - documentation updates 1.2.10pre11: 2003-08-10 - theme selector now writes the selected theme in ~/.icewm/theme - theme selector now restarts icewmbg automatically - minor cleanups in apm applet - build fixes - Infadel2 theme cleanups (Hanspeter Roth) 1.2.10pre10: 2003-08-01 - fixed icewmbg semtransparency support. icewmbg will no longer exit when semitransparency is enabled - major focus cleanups 1.2.10pre9: 2003-07-30 - double buffering performance optimizations 1.2.10pre8: 2003-07-27 - FIXED: taskbar tray location off by one pixel - FIXED: rendering of icons on big-endian systems when --enable-antialiasing 1.2.10pre7: 2003-07-26 - FIXED: shaped windows when --enable-shaped-decorations - FIXED: icewmbg prefs now added to default preferences file 1.2.10pre6: 2003-07-25 - FIXED: theme local font path with Xft/fontconfig - disabled movement of maximized windows offscreen (use shift to override) - corefonts now enabled when Xft major version = 1 1.2.10pre5: 2003-07-24 - FIXED: compile with --enable-corefonts - FIXED: compile with Xft v1 - Dutch translation update by Reinout van Schouwen - added internal border to taskbar 1.2.10pre4: 2003-07-19 - FIXED: problem with --enable-shaped-decorations and full-screen windows (mplayer) - Italian translation update by Yuri Bongiorno 1.2.10pre3: 2003-07-13 - implement support for depth 1 window icons - FIXED build with some compilers - painting is now double buffered (TODO: optional) and faster - Russian translation update (Anton B. Farygin) 1.2.10pre2: 2003-07-05 - MAJOR CHANGE: the theme needs to be specified in the ~/.icewm/theme file, like this: Theme=icedesert/default.theme - Theme settings are now loaded before ~/.icewm/preferences - FIXED network monitor crash with "pl" locale (Pawel Warowny) - simplified tray icon option in window menu - Finnish translation update (Taisto Kuikka (taistok)) 1.2.10pre1: 2003-06-29 - MAJOR CHANGE: icewm background handling moved to icewmbg program - fixes to gnome2 menu support (Nehal Mistry) - FIXED: task bar auto hide with taskbar menus - FIXED: some focusing problems with gtk2 (Owen Taylor, Bernhard Walle) - code cleanups in font handling - configuration file handling cleanup 1.2.9: 2003-06-22 - added gnome2 menu support (Nehal Mistry) - added missing netwm active window notification - new option FocusRequestFlashTime - fix problem with accented characters in the title bar - fix aspect ratio on maximization - fix gcc 3.3 build - fix crash with a single workspace (oops!) - Polish translation update (Arkadiusz Lipiec) - documentation of using WINDOW_ROLE property in winoptions (Jo Valentine-Cooper) 1.2.8: 2003-06-08 - various build/minor fixes - new option enableAddressBar(=1) 1.2.8pre3: 2003-06-03 - fix Alt+Tab window getting stuck under load - menu mnemonics tweaks (Hanspeter Roth) - add mnemonics to zh_TW.Big5.po (Benshark Chen) - task bar layout tweaks - Restrictions on command line argument parsing. Only -o, -o ARG or --option, --option=ARG forms are accepted now, not any other combinations - improvements for NETWM system tray (you must run 'icewmtray' in background to support this) 1.2.8pre2: 2003-05-18 - improved focus handling (alt+tab, window close, workspace switch) - fix taskbar issues from pre1 - GNOME 2 workspace switcher applet (Adam James Fitzpatrick) - renamed --with-gnome-menus to --enable-menus-gnome1 - cleanups in configurable keyboard bindings handling - renamed modMetaIsCtrlAlt to modSuperIsCtrlAlt. Win95keys now enabled by default. 1.2.8pre1: 2003-05-04 - fix: interaction between shaped windows and fullscreen (Owen Marshall) - fix: posible crash on shutdown - minor memory leak fixes - fix handling of fullscreen windows with shaped window borders (Owen Marshall) - convert zh_CN.gb2312.po to UTF-8 (zh_CN.po) - lark@lark.net.cn - autodetect gnome/kde menu directories (Nehal Mistry) - fixed address bar behavior in various configurations - Hungarian translation update (Peter Somogyi) - Xft2 doesn't require RENDER extension (Make Fabian) - partial Korean translation (Hwang, Sang-Jin / Make Fabian) - LDFLAGS fix (Robert Klein) - fix problem with menufile items not having mnemonics (_) - initial implementation of NETWM system tray 1.2.7: 2003-03-08 - minor bug fixes 1.2.7pre3: 2003-03-02 - new option QuickSwitchGroupWorkspaces (if QuickSwitchToAllWorkspaces=1) - Italian translation update - more menu tweaks - implement NetWM window type SPLASH - ACPI status patch from Klaus Schneider - Made Alt+ behave in more standard manner - DoNotFocus window option added. 1.2.7pre2: 2003-02-26 - Major improvement in percieved speed of menus - Dutch translation by Ton Kersten - add new options: ShowRun, ShowAbout, ShowWindowList, ShowLogoutSubMenu, AllowFullscreen (Ton Kersten) - support WM_WINDOW_ROLE, too - fix detection of netwm hints for some apps - fix AutoReloadMenus bug 1.2.7pre1: 2003-02-23 - fix .order file handling for gnome menus (Thomas Zajic) - changed default theme to icedesert (Nehal Mistry) - fix crash in alt+tab when window closes - rewrite icewm.spec.in Christian W. Zuckschwerdt (zany@triq.net) - Belarussian translation by Hleb Valoska (el_globus@tut.by) - tweaked character set (CODESET) detection - 'Programs' menu is now invoked from menu file, not from the code - fixed fonts in Infadel2 theme when Xft is used 1.2.6: 2003-01-19 - Slovenian translation by Jernej Kovacic - improve focus handling on non-xinerama multihead displays - another submenu/icon handling fix for gnome menus (Thomas Zajic) - added nonICCCMconfigureRequest window option workaround for non ICCCM compliant applications - WINDOW_ROLE handling for winoptions (Stanislav Svirid) - fix crash in mail status checker in pop/imap configuration - implement startMinimized window option, similiar to startMaximized 1.2.5: 2003-01-05 - fix lockup when doing operations through window list - fix compile problem --with-xpm - fix icesh.cc focus handling (by Todd R. Eigenschink) - update workaround for some TK issues - slow startup fix (caused by broken lazy menu loading) 1.2.4: 2003-01-03 - fixed submenu/icon handling for gnome menus (Thomas Zajic) - acpi optimization (Michal Ceresna) - fix crash in "Tile ..." - fix submenu deactivation problem (reported by Bernhard Walle) - fix focus loss on xmms exit (reported by Bernhard Walle) - fix problem with restarting the wm (when icewm-menu-gnome1 not present) 1.2.3: 2002-12-26 - IMPORTANT: system configuration directory changed to /etc/icewm (from /etc/X11/icewm or /usr/local/etc/X11/icewm). icewm now installs it's data files in /usr/local/share/icewm. - added --disable-winmenu and --disable-taskbar configure options - bug fixes in menu code - fixed lockup when running under session manager (GNOME2) 1.2.3pre2: 2002-12-15 - support for Xinerama - rewritten RPM packaging - new "menuprog" statement in menu files for reading a submenu from a pipe - Italian translation update - moved gnome menu support into an external utility (icewm-menu-gnome1) (used trough "menuprog", requires gnome 1.x) - added keybinding for showing the window list menu (KeySysWinListMenu) 1.2.3pre1: 2002-10-20 + soon - some small fixes for the swedish translation (tucker) - new APM/ACPI monitor code by Michal Ceresna (cemi) - Norwegian translation by Petter Johan Olsen - the Address Bar in the taskbar now works even without TaskBarDoubleHeight (Ctrl+Alt+Space) - new APM/ACPI battery monitoring code - rewritten the work area implementation (doNotCover should now work much better) - new "preferences" setting: focusOnAppRaise - focus the window when application requests to raise it - cleaned up the icewmbg implementation (TODO: config file for it) - fixed the Reboot vs Shutdown issue - Alt+Left Button drag now used for window move and resize (no more Ctrl+Alt) - fixed configure option: --enable-depend now used for make depend 1.2.2: 2002-09-06 - fixed icewm.spec file for building RPMs - fixed CHANGES file 1.2.1: 2002-08-31 - TaskBar and root menu is no longer disabled under Gnome (adjust your ~/.icewm/preferences manually: ShowTaskBar=0; UseRootButtons=0) - feature: partial support of the Enhanced Window Manager Specification (NETWM) needed for GNOME2 and KDE3 compliance flux - feature: scriptable menus (as found in WindowMaker) - feature: execute "startup" or "restart" script found in resource path ($ICEWM_HOME, $ETCDIR, $LIBDIR) after initialization - bugfix: added --help switch to icewm, allow GNU stylish long options - feature: the directory for user preferences can be selected by the ICEWM_PRIVCFG variable now (default still is and will forever be ~/.icewm, but think about the beauty of setting ICEWM_PRIVCFG to "$HOME/.etc/icewm"...) - bugfix/feature: menu parser is case-insensitive now - bugfix/feature: normal users won't need GNU make anymore - cleanup of lib/.../*.xpm by Andrey Smagin - FocusChangesWorkspace option by Daniel Pittman -- determines if a new window open on another workspace switches to that workspace - PointerRaiseDelay focusing fix by Thomas Linder - bugfix: enable menu items in window list popup only when appropriate (closes bug 217168) - change the ppp status applet to decrease the scale when the troughput goes down. - feature: improved icesh's worth by adding support for window classes - ui-change: added fullscreen window menu action; changed default key binding for hide, rollup and undoArrange action - added startMaximized{,Vert,Horz} winoptions - initial UrgencyHint implementation - added "menufile" statement for menu files - configure script defaults changed: imlib, i18n, nls are now default 1.2.0: 2002-06-30 - Czech translation by Jan Horak - Lithuanian translation updated (Martynas Jocius) 1.2.0pre3: 2002-06-12 - updated configure platform coverage - really fix --with-guievents / compile w/ ESD - several memory leaks fixed 1.2.0pre2: 2002-05-26 - bugfix: TaskBarDoubleHeight has incorrect layout - workaround: doNotCover option removed from default winoptions (seems to have problems with GKrellM) - bugfix: --with-guievents; esd compile fix 1.2.0pre1: 2002-05-12 - bugfix: fix syntax error when HAVE_BASENAME is defined (under cygwin for example) - bugfix: updated Catalan translation (thanks Toni Cunyat i Alario) - bugfix: updated config.guess in order to allow autodetection of more recent architectures - bugfix: the network load indicator field `transferred' overflew when > 2Go. Now make use of 64 bits value for the network load (See: bugs.debian.org/118728, thanks Eduard Bloch) - bugfix: fix for sefault when TrayDrawBevel=1 (thanks Julien Lemoine) - bugfix: fix for a window position which marches up the screen, noticeable when launching Galeon and Xchat (thanks Julien Lemoine) - bugfix: fix display of taskbar(in hide mode) - bugfix: fix logout problem (in icewm-lite) - bugfix: height and width problem in maximized mode (difference of 2 pixels) - bugfix: fix problem with xawdecode (in fullscreen mode) - bugfix: POP3 mailcheck breaks with some server (Thanks Rob Funk) - feature: new translation: Simplified Chinese (Thanks Li Wei Jih) - bugfix: crash when handling the application icons - bugfix: layout taskbar to the edge of the window - several options have been deprecated. Look for warning messages on the console at startup - bugfix: memory leak in hasColormap (needs performance tweak) - bugfix: close extra file handles before running apps - bugfix: force layer for dialogs above the parent window - bugfix: fix handling of window gravitu - bugfix: winoptions geometry option fixed - bugfix: handling of win95 keys (XK_Super_L, XK_Super_R) ... 1.0.9-2: 2001-10-09 - bugfix: show application supplied frame icons even if without icon mask - bugfix (for binary distribution): determinate the langinfo codeset item id on runtime - bugfix: remove icons from icon cache when destroyed - bugfix/compatiblity hack: fallback to linux.xpm when provided by the current theme - bugfix: window menu crashed when tray completely disabled - bugfix: tray crashed when compiled without gradient support - bugfix: #469081 Java cause IceWM to crash on mapping 1.0.9: 2001-10-08 - bugfix: #209114 fixed? - feature: new translations: Croatian (Vlatko Kosturjak), Italian (Riccardo Murri), Lithuanian (Gediminas Paulauskas), Polish (Przemyslaw Sulek), Romanian (Tiberiu Micu) - bugfix: killed dangling WindowOptions::icon pointer in combineOptions - bugfix: limitSize still was broken (Max Kirillov) - bugfix/feature: ColorScrollBarInactiveArrow - feature: continuous edge switching - bugfix: colored edge switching cursors - bugfix: COMPOUND_TEXT handling (Florin) - feature: HorizontalEdgeSwitch and VerticalEdgeSwitch - feature: LowerOnClickWhenRaised lower the active window when clicked again - bugfix: #445264 CenterMaximizedWindows=0 was broken - bugfix: dynamic chaning of client icons - bugfix: reparenting (aka. swallowing) should work now - bugfix: comments into config examples about discarding of changes - bugfix/feature: massive I18N cleanup: fallback to C locale; proper dectection of multibyte mode; unicode conversion; clean, C++ stylish font handling; ... - feature: added icesh - a command line window manager - bugfix: mailbox monitor falls back to /var/spool/mail/$LOGIN when neither MailBoxPath nor $MAIL are set. - bugfix: use argv[0] to build the themes menu - enhanced "Starting icewm" section of INSTALL and added a section describing how to setup Xft - experimental feature: antialiasing for icons and text; configure with --enable-antialiasing and --enable-xfreetype; --enable-antialiasing attempts to activate XFreeType support implicitly; use the XFreeType option to disable XFreeType support on runtime. Xnest (XFree86 4.1.0) crashes on startup when Xnest is invisible - why? Are there other X servers with this problem? - feature: allow to toggle between environment and root property base GNOME autodetection on compile time; configure with --with-gnome-root-property[=atom] and --without-gnome-root-property - feature: menu item to toggle doNotCover flag; due some internas the window has to be sticky (allWorkspaces flag) to let this option take effect. - feature: Move/Resize FX (experimental bloat); options: MoveSizeFXFontName (string), MoveSizeInterior, MoveSizeDimensionLines, MoveSizeGaugeLines, MoveSizeDimensionLabels, MoveSizeGeometryLabels (bitmasks); configure with --enable-movesize-fx; problem: Expose problems in other windows with opaque mode. Need to grab XServer. Better solutions? - feature: TitleBarHorzOffset/TitleBarVertOffset - feature: TimeFormatAlt option (Jan Krupa) - feature: icon tray (Jan Krupa) options: TaskBarShowTray, TrayDrawBevel, TrayShowAllWindows window option: tray (Ignore: no icon on tray (default); Minimized: icon on tray and if not minimized also on task pane; Exclusive: icon on tray only (and not on task pane)) - bugfix: renamed START_PIXMAP from linux.xpm to icewm.xpm - bugfix: #427048 compatibility issues in Makefile.in - bugfix: #424194 ellipsis for long labels on mini icons - feature: pixmap for workspace buttons: create a "workspace" subdirectory and name your workspaces accordingly to the pixmaps in this directory - feature: allow transparent menu selection (ColorActiveMenuItem="") - feature/bugfix: support taskbar/taskbutton* pixmap for all pixmap looks (not only gtk) - feature/bugfix: corner pixmap can have another size than specified by CornerSizeX/Y now - feature: more specific widget setup (pixmaps: buttonI.xpm, buttonA.xpm, listbg.xpm, dialogbg.xpm, taskbar/toolbuttonbg.xpm, taskbar/workspacebuttonbg.xpm taskbar/workspacebuttonactive.xpm; colors: ColorToolButton, ColorToolButtonText, ColorActiveWorkspaceButton, ColorActiveWorkspaceButtonText, ColorNormalWorkspaceButton, ColorNormalWorkspaceButtonText; fonts: ToolButtonFontName, ActiveWorkspaceFontName, NormalWorkspaceFontName) - experimental feature: gradient support the option "Gradients" lists the pixmaps to scale; titlebar gradients can be adjusted with TitleBarJoinLeft and TitleBarJoinRight; configure with --enable-gradients - feature: transparent applets (clock, net/cpu status): use an empty string for their background/idle color - bugfix/feature: DisableImlibCaches - bugfix: reduce warnings with Intel's C++ compiler for Linux - feature DesktopTransparencyColor/Image: fast, but memory consuming static effects for semi-transparent windows -- I love it - better[?] colormap detection (at least for AIX) - experimental feature: shaped decorations, nonoptimal performance; option: ShapesProtectClientWindow; configure with --enable-shaped-decorations - optional (and experimental) feature: /proc/wm-session support (mainly useful for X-PDAs, details in README.wm-session) - feature: mouse wheel support for menus, holding shift increases velocity by factor 2.5 (should UseMouseWheel be respected?) - bugfix/feature: support for runonce hotkeys - feature: show all icons in quickswitch and more. new options: QuickSwitchShowIcons, QuickSwitchTextFirst, QuickSwitchSmallWindow, QuickSwitchHugeIcon, QuickSwitchFillSelection, QuickSwitch{Horz,Vert,Icon}Margin, QuickSwitchIconBorder, QuickSwitchSeparatorHeight, ColorQuickSwitchActive (inspired by Andrew Oliver´s and Marius Gedminas´s patches #400421 and #400635) - feature: added support for menusep.xpm, menusel.xpm pixmap to improve themes using menubg.xpm - bugfix: provide consistence behaviour in resource priority for absolutely and relatively specified themes (reported by Helmut Pitters) - feature: new keybindings: KeySysCascade, KeySysArrange, KeySysTileVertical, KeySysTileHorizontal, KeySysUndoArrange KeySysArrangeIcons, KeySysMinimizeAll, KeySysHideAll (inspired by Liav Asseraf) - bugfix: #420404 "minimize all" in windowListPopup - bugfix: #420404 superfluous separator for empty menu files - feature: ShowGNOMEAppsMenu, ShowGNOMEUserMenu, ShowKDEMenu (inspired by Liav Asseraf, Chmouel Boudjnah) - feature: improved net status tooltip, multiline tooltips (inspired by Marius Gedminas) - bugfix: ctrl-double click resets net monitor graph (Marius Gedminas) - feature: additional keys to move/resize windows (use combinations of shift and ctrl to speed up, KP_Begin (5 on keypad) to center) (#400633: Marius Gedminas) - feature: multiple mailbox and network monitors - feature: added mkbuilddir.sh - feature: MailClassHint, ClockClassHint, CPUStatusClassHint NetStatusClassHint and default values - feature: TaskBarLaunchOnSingleClick command 1.0.8-6: 2001-05-07 - bugfix: #419977 icewm-default-1.0.8-5 used invalid --prefix 1.0.8-5: 2001-04-26 - bugfix: improved gettext detection - bugfix: Win95Keys=0 caused undeterminated key grabbing - bugfix: #418469 TitleBarCentered compatibility hack - bugfix: improved detection of libesd - bugfix: #418719 help browser has no scroll bar in 1.0.8-4 - bugfix: #418383 need to log out twice - bugfix: #418291 Alt+key doesn't work in 1.0.8-4 (thank you KoRn3, for helping me to track it down) 1.0.8-4: 2001-04-23 - bugfix: s/TitleButtons/TitleButtonsRight/ in win95/default.theme - bugfix: #409500 Infadel2 theme failed to install - bugfix: segfault in icehelp - bugfix: usage screen for icehelp - bugfix: cursor definitions of global themes (libdir, cfgdir) were ignored (Olivier Samyn) - bugfix: #409622 duplicate themes not in their sections - bugfix/feature: absolute paths for themes are allowed now - bugfix: #407766 icewm 1.0.6 fails to compile (glibc 2.2 and AIX) - bugfix: #410988 maximizing click failed randomly/ #410971 keybindings not working randomly (thank you moss, for helping me to track it down) - bugfix: #408519 fd leak on restart - bugfix: #409804, #410954, #410959 doNotCover quirks - feature: Hungarian messages (Czinege Tamas) - feature: Catalan messages (Toni Cunyat i Alario) - feature: ColorDisabledMenuItemShadow - feature: improved autoscrolling of menus - feature: improved handling of the Penguin/Win_L/Win_R key - feature: MenuMaximalWidth option - feature: TitleBarCentered replaced by TitleBarJustify option - bugfix: autotracking was broken for submenus - feature: TaskBarShowWindowIcons option - bugfix/feature: themeable scrollbars - feature: ShowLogoutMenu option - bugfix: attempt to fix globally active input mode (focus problems with Nautilus) - feature: option - bugfix: when reading \xnn sequences very next char was ignored - feature: DontRotateMenuPointer option (cteg, du nervst ;-)) - bugfix: consider horiz/vert border when moving maximized windows - bugfix: item selection in window listbox (focusVisible) - bugfix: dragging of scrollbars broken when modifiers were active - bugfix: renamed "Infadel2/All Buttons.theme" to "Infadel2/Overloaded.theme" (some shells do not like "creative" file names containing space characters) 1.0.7: 2001-03-13 - feature: consider horiz/vert border when maximizing (heiky, slow) - feature/bugfix: taught the clock applet to respect the user's current locale (if compiled with I18N support) - feature: native support of semitransparency (gkrellm, Eterm, aterm) - bugfix: respect user defined key bindings for window switching - bugfix: fixed a little show stopper in themes menu - feature: colored mouse pointers (inspired by Oleastre) - feature: simple online help (powered by Marko's icehelp) - bugfix: automatic resizing according to limited workarea - feature: advanced ESound support in icesound (Ch. W. Zuckschwerdt) - feature: YIFF support in icesound (Tara Malina) - bugfix: heavy code cleanup in icesound (Tara Malina) - feature: add the theme directory to the X server's font path it contains a file named fonts.dir - bugfix: new URL decoder (for mailbox monitor) handling escaped characters - bugfix: accept Courier-IMAP's STATUS responses - feature: support for IMAP subfolders - bugfix: documentation updates - bugfix: some bright parts of menus weren't themeable (white was used instead of a brighter version of the background color) - bugfix: improved handling of _WIN_WORKAREA property (allows applications like the GNOME panel to limit the workspace available for regular applications) (inspired by Coventive) - feature: runonce keyword in menu, toolbar and keys files (inspired by Coventive) - bugfix: destruction of transient windows created dangling pointers (gnomermind bug) - bugfix/feature: support for WIN_HINTS_DO_NOT_COVER (solves the trouble with opening drawers and the "Keep below windows" option of the GNOME Panel, LimitByDockLayer restores old behavior, added doNotCover winoption for applications like gkrellm) - feature: TaskBarKeepBelow option - bugfix: icesound: GNUish usage screen, cleanup/conversion into C++, NLS support - bugfix: cleaned up library dependencies (a little bit) - feature: two new titlebar pixmaps: title[JQ][AI].xpm, look into Infadel for reference - feature: well, some people will smack me: Invadel2 as new default theme 1.0.6: 2001-01-14 - feature: theme menus lists theme source - feature: scaling of application supplied icons (Imlib only) - feature: spanish translation (Antonio de la Torre) - bugfix: "About" desktop menuentry for lite version - bugfix: malformed "NOTE" comment generated by genpref - bugfix: speparate build/install targets for icesound - bugfix/feature: more flexible compile time path configration - bugfix: ppp/net status on non linux/freebsd machines - feature: zh_TW.Big5.po (originally by Li Wei Jih) - bugfix: Proper handling of Shift-Motion in WinListBox - feature: new .spec file building different incarnations of icewm from one .src.rpm file (Alexander Skwar) - feature: distribution of window manager property file for GNOME - feature: French messages (Frédéric Dubuy) - feature: Finnish messages (Mika Leppänen) - feature: shadows for titlebar texts (slow) - since too much people couldn't wait for 1.0.7.... 1.0.5: 2000-12-12 - NLS support (Yoichi ASAI, Tomohiro Kubota, Mathias Hasselmann aka. tbf) - workspace switch status (tbf) - font guessing for non-latin1 fonts (Tomohiro Kubota) - infinite ToolTipTime (Marius Gedminas) - key to switch between current and previously active workspace (Marius Gedminas) - improved handling of transient windows which's parent was minimized/hidden (Markus Marcek + tbf) - improved GNOME menu handling (NLS, ordering, icons, toplevel menu) (tbf, inspired by oleastre) - support for KDE menus (with GNOME libraries) (tbf, inspired by oleastre) - minor icesound improvements (oleastre) - external logout signal (kill -QUIT) (tbf) 1.0.4: 2000-06-11 - minor fix for tcl/tk apps (please report any more tcl/tk again) - fix -c option restart (tnx to Diego Zamboni) - auto-detect multiByte (by - exit Start menu with Alt or Win/... 1.0.3: 2000-03-19 - empty taskbar window title fix - set pointer default for each toplevel window - mwm hints tweaking - multiple SIGHUP restart fix 1.0.2: 2000-02-19: - clock should not get stuck anymore - improved handling of wrong MWM hints set by netscape - fixed saving of rolled up window geometry - use $LOGNAME if $USER not set - APM & PPP status improvements 1.0.1: 2000-01-13 - ToolTipTime didn't actually work :) - fixed fontset loading problem - i18n (build), MultiByte (config) now enabled by default. If you use an 8-bit character set (most european users), be sure to set $LC_CTYPE correctly (I use sl_SI.iso88592). 1.0: 1999-12-26 - minor doc changes - fix for overlap detection by Giuliano Pochini - new option: ToolTipTime (time before tooltip is hidden) 0.9.57: 1999-12-24 - fixed random lockup on signal handling if session manager used - improved session restore 0.9.55: 1999-12-23 - fixed restart crash if session manager used - documentation updates 0.9.55: 1999-12-19 - support keys for switching to 12 workspaces - fixes to depth button support - signal handling cleanup - fully fixed size limitations for large windows - new option: MultiByte(=0) - don't switch colormaps in TrueColor mode - more tuning of menu activation 0.9.54: 1999-12-12 - added support for binding arbitrary programs to keys (keys config file) - new option: AddressBarCommand (default none) - improved menu heuristics (Mac like) - new option: MenuActivateDelay (default 10ms) - new option: SubmenuActivateDelay (default 300ms) - new option: ReplayMenuCancelClick (default = 0) - fix gnome pager rollup operation - fixed shutdown and reboot in some situations - fixed session information saving/loading (escape strings) - clipboard (and selection paste) support in addressbar 0.9.53: 1999-12-05 - new option CenterTransientsOnOwner (enabled by default) - tooltip improvements - Z-order raise lower button capability (see metal2 theme) - fixed missing button press event replay when clicking outside menu 0.9.52: 1999-11-23 - minor tweak of desktop switching code (please report any problems with xawtv, exmh, gnomepager) - default theme now warp3 - new options: CPUStatusCommand, NetStatusCommand - fixed PPP status sent/receive colors - portability fixes 0.9.51: 1999-11-21 - new option for themes: TitleButtonsSupported (default=xmis) - detect old kstat on Solaris (pre 2.6) - fixed mailbox checking code not to beep on (re)start - new options: confirmLogout, shutdownCommand, rebootCommand - fixed ClientWindowMouseActions (now enabled by default) - support for multiple .theme files in a directory - fixed Move operation in window menu - fixed xawtv again (please report) - new window option: ignorePositionHint to ignore program specified position hint - fixed arrange of windows on inactive workspaces (from window list) 0.9.50: 1999/11/13 - new option: SmartPlacement=1 - new option: TitleBarCentered=0 (pixmapped themes require 4 new title pixmaps (titleAS, titleAP, titleIS, titleIP) to support centering - draw ... (ellipsis) in taskbar and titlebar when string too long - configure check for -fpermissive (always uses it for now) - network status now checks if the device is up - fixed drawing of CPU load graph - new option "ShowThemesMenu" - fixed SnapTo to snap to smaller windows too - arrange/cascade/hide/minimize in taskbar and window list implemented 0.9.49: 1999/10/06 - option ClientWindowMouseActions=0 as a workaround for some broken programs (xfm, ...) - --with-gnome-menus is no longer the default (not needed for pure gnome operation) - mailbox pixmaps now have transparency set to make themes look better - fixed stuff to make Solaris CC work (please report) - some fixes to pass -c option when restarting self - improved manual placement with pointer outside window - fixed QuickSwitchToHidden=0 0.9.48: 1999/08/23 - new option: TaskBarShowAPMStatus 0.9.47: 1999/08/22 - fixed crash when TaskBarShowWorkspaces=0 - changed the look of conditional cascade submenu indicator - APM status (for people with laptops) - CPU status support for Solaris - some warning fixes (need more) - the default configuration file has most things commented out by default (builtin defaults are the same). 0.9.46: 1999/08/13 - fixed clock drawing when AM/PM used. - clock tooltip now updated dynamically - improved mailbox mail handling - mailbox now counts mail again - Ctrl+Alt+Button1 now moves the window (will be configurable later) - Shift+Click on close button now activates Kill Client operation - Rollup->Rolldown tooltip fix. 0.9.45: 1999/08/12 - configuration in /etc/X11/icewm works again - fixed the unsigned char madness - fixed net device tooltip - removed generation of different preferences files when GNOME defined - new option: QuickSwitchToHidden - mailCheckDelay default fixed - fixed Desktop and TitleBar button configuration - fixed window menu for current workspace 0.9.44: 1999/08/11 - fixes to make it compile - fix start failure when mailbox misconfigured 0.9.43: 1999/08/11 - added workarounds for some applications to default 'winoptions' file - fixed bug that caused shaped windows to blink while being moved - fixed Alt+Tab window when not invoked with Alt+Tab :) - fixed handling of GraphicsExpose during scrolling - pop3/imap support for mail checker - new option: AutoDetectGNOME (disables taskbar, desktop handling) GNOME detection is currently based on SESSION_MANAGER env variable - new option: TaskBarShowWindows - renamed option: TaskBarShowPPPStatus -> TaskBarShowNetStatus - new option: ShowMenuButtonIcon - new options: - DesktopWinMenuButton - DesktopWinListButton - DesktopMenuButton - TitleBarMaximizeButton - TitleBarRollupButton - new option: NewMailCommand - new option: MailCheckDelay - Linux: rewritten PPP status to use /proc/net/dev - new option: NetworkStatusDevice - new options for CPU status colors - SnapMove now works during window movement, not just after - support for Super, Hyper modifiers in keybindings 0.9.42: 1999/06/15: - fixes to configure - fixed some focusing problems - some new netscape icons added - fixes to shell command execution (no longer crashes on restart wm) - improvement in shaped windows handling - allow relative pathname in background image specification - made window stacking not interfere with DND icons - fix: minimize action in window list is no longer a toggle - detect both Alt_L and Alt_R keysf for Alt modifier. - configure event coalescing is now done to improve performance 0.9.41: 1999/05/24: - fixed compilation of keyboard configuration - fixed minimized shaped windows with MinimizeToDesktop=1 - eliminate duplicate themes in the menu - fix for client window button grab 0.9.40: 1999/05/22 - autoconf support contributed by Pavel Roskin - fixed some focus problems - fixed infinite loop when reading menu files - fixed QuickSwitchToAllWorkspaces option 0.9.39: 1999/05/16 - fix MWM hints support on alpha - two settings are changed when --with-gnome is used - desktop background setting is disabled - root window buttons are left for gnome the default preferences generated differently - imlib icon loading improvement? (scaling) - do not search for icon in current directory (found executable sometimes) - focus fix on Ctrl+Alt+Delete cancel - Ctrl+Alt click accesses root menus even with GNOME. - implemented .geometry option for 'winoptions' - unclosable windows no longer stop shutdown - fix for session save when no ~/.icewm directory (also creates directory) - fixed possible crash when accessing window list from taskbar 0.9.38: 1999/05/02 - More pixmap theme support contributed by chister backstrom. See his theme "Natural" for an example. - Cleaned up menu command handling. - Complete rewrite of program menu handling. - Fixed menus not to ignore keyboard when menu is empty. - If (GNOME) session manager is running, shutdown will now use it. - Support saving all window positions on session save (make sure $HOME/.icewm directory exists). - SIGHUP now restarts icewm. - When menu has multiple identical mnemonics, you can now cycle between them. (Program menus now have mnemonics). - Restart option in C+A+Del dialog. - Scrollbars now handle DND scrolling. 0.9.37: 1999/04/06 - documentation updates - fixed parser bug that caused startup problems with commas - fixed crash if there is no maximize button - fixed rare race condition in window mapping - faster startup with XInternAtoms - handle WIN_AREA{_COUNT} - just to be compatible - mailbox is now only counted before showing the tooltip - scroll bar fixes 0.9.36: 1999/03/24 - PPP status now disabled by default - new option: AutoReloadMenus - new option: FocusOnMapTransientsActive - lower no longer ignores layers in some situations - compile fixes for g++ 2.7.x - some mem leak fixes - bug fixes... 0.9.35: 1999/03/18 - fixed 'genpref' to actually use 'WorkspaceNames' setting - fixed? gqmpeg shape handling - fixed sysmenu button configuration (TitleButtonsLeft='sx' works) - changed gnome apps directory to gnome_datadir_file("gnome/apps"). 0.9.34: 1999/03/15 - new option: ButtonRaiseMask - new option: TitleButtonsLeft,TitleButtonsRight - new option: WorkspaceNames (list) - new option: TerminalCommand (=xterm) - removed: TitleButtons, AddWorkspace - new option: ShowPopupMenusAbovePointer (=1) - some focus fixes - fixes for rollup,hide title buttons updating - all menu files now dynamically reload - fixed taskbar update when last window minimized - selection/painting fixes in list box - color matching fixes 0.9.33: 1999/02/04 - fix mailbox status not updating count if mailbox empty - changed display in pppstatus.cc - initial scrollbar update in window list now fixed - fixed crash in popup menus 0.9.32: 1999/02/02 - complete restructuring of source code (less dependencies, faster builds) - fixed some problems with keybindings - horizontal scrollbar for window list - 'make dist' did not build html documentation 0.9.31: 1999/01/31 - fix possible crash on dialog close (happened only in ccmalloc) - configurable keyboard bindings (optional, enabled) - new options: ModMetaIsCtrlAlt=1 - windows list now hides scrollbar if not needed - fixed focusing problems when switching from empty workspace - Alt+Shift+Tab now handles minimized windows correctly - fixes in taskbar initialization 0.9.30: 1999/01/25 - normal size of maximized windows remembered across restarts - reduced colors in gimp icon - removed ShowXButton option - new option: TitleButtons="xmi" - new option: QuickSwitchToAllWorkspaces=0,1 - ICCCM compliant window placement - new options: LimitSize, LimitPosition=0,1 - new option: TaskBarShowPPPStatus - new options: ColorInvisibleTaskBarApp{Text} - new options: ColorInput{Selection}{Text} - rollup and hide title buttons for some themes - fixes in modifier mapping - Alt+Tab now remembers key codes for Alt modifier. - nicer focus indicator for buttons - cleanups/fixes in window managing/mapping - color palette optimizations - minor shaped window performance improvement - cleanup/unification of auto-scroll - snapTo handles screen edges better - fix for small scrollbars - fix 3d border in win95 titlebar buttons - tab-focus cleanup - consistent handling of 0x0 windows 0.9.29: 1999/01/15 - fresh supply of maximize buttons :) - fixes in modifier detection (hardcode mod1=alt even more :) - logout/kill confirmation dialogs - menu autoscroll 0.9.28: 1999/01/11 - --with-xlocale option (default = without) - fixed --with-i18n compile - font fallback fixes - timer optimization - passFirstClickToClient=1 should now work on taskbar too - improved sizeHints handling when no MWM hints set - fix for GNOME compatible _WIN_STATE - support for (ICON.xpm mini/ICON.xpm naming convention (kde?)) - try to keep larger part of the pulldown menus on screen - tuneup of the conditional cascade submenus - menus have less spacing between items - window list now centers below chord (root window, titlebar) - Ctrl+Esc will show start menu even if disabled on task bar 0.9.27: - preferences file now autogenerated (with comments) - contributed debian.xpm now uses less colors - motif theme now has X-close button - mailbox status now has icon for no-mail state too. - UseRootButtons option (bitmask) Unused root buttons will be left to other applications (for GNOME) - implemented LogoutCommand and LogoutCancelCommand settings - Ctrl+Alt+R/Win+R runs RunCommand if configured - Autoscrolling in window list. - Clicking on menu item with conditional cascade submenu hides the submenu if visible instead of activating the item. - Conditional cascade item/submenu now behaves just like normal if Control key is held. - Strings now implement some C escaping rules (\n,\t,\xXX). - Scrollbar now has auto-repeat. 0.9.26: - possible fix for race condition where mouse grab could get stuck - about dialog no longer stays in window list 0.9.25: - fixed launching gnome desktop files - About dialog displaying author and theme info 0.9.24: - GNOME integration fixes - improved handling of SM die,shutdown cancelled callbacks 0.9.23: - Contributed themes are now available separately. - EdgeResistance now back to 32, set it to 10000 to make it infinite. - Tile Horiz/Vert+Undo now available from taskbar and window list. - TaskBar clock should now display day/month names without cutting off - detach executed programs from the tty, open /dev/null as stdin - Logout - send WM_DELETE_WINDOW to all windows and exit after all close - SnapTo: try screen edge first, then other windows - Fix z-order of popup menus when new window opens - Frame painting in Motif,Warp3 no longer blinks. 0.9.22: - window move code changes: added snapTo option, can disable by pressing Ctrl while moving, will not allow move off screen unless Ctrl pressed, to disable this, set EdgeResistance for now (send mail if your really dislike) - now default EdgeResistance=0 (disabled) - new option: SnapMove=0,1 (enabled by default) - new option: SnapDistance=8 - switch workspaces by moving mouse to left/right screen edge - new option: EdgeSwitch=0,1 (default disabled) - new option: EdgeSwitchDelay=600 - fixed emacs minimize when MinimizeToDesktop=1 - GNOME panel now correctly negotiates workarea when horizontal (see FAQ) - window no longer blinks when moved to new workspace with C+A+S+Left/Right,... - improved window list resizing - new option: DesktopBackgroundCenter - focus now correctly reverts when Alt+F4 pressed - minimized/rollup windows no longer negotiate workarea - Alt+Tab should no longer get stuck (send mail if ever does!) - fixes in root window key handling 0.9.21: - crash on startup when TaskBarAutoHide=1 - Alt+Button1Click on titlebar did not lower window - new option: GrabRootWindow=1 - when set to 0 does not grab mouse events for the root window 0.9.20: - TaskBar clock now shows GMT time with ctrl+click (ctrl + mouse-enter for the tooltip. - Taskbar was not updated on Move To command. - Rollup did not correctly reset focus. - Better selection of window to switch to on close (skip unfocusable) - Ctrl+Enter in address bar did not run the shell - Frame buttons do not get focus frames painted around them. - Alt+Tab now shows target frame again. - TaskBar now uses non-resizable frame - Fixed default theme selection. - new option: StrongMouseFocus (default =0) - Alt+Tab should no longer get stuck on occasion. - Taskbar on auto-hide should no longer determine work-area. - Better detection if window can be raised. - Frame menu is now correctly updated with valid options before show. - Fixed too much window flashing on WM restart. 0.9.19: - new option: TaskBarMailboxStatusCountMessages (default=0) - fixed emacs rollup problem - memory usage reduction by using smaller replicated pixmaps - windows with allWorkspaces winoption set would not start iconized 0.9.18: - new theme: Wigren by Per Wigren - changed gtk theme to gtk2 (removed metal frame style) - changed WIN_HINTS support to be compatible with latest GNOME (cvs) it will not work with gnome 0.30 (no complaints to me, please) - Alt+Tab crash now really fixed, I hope :) - pixmaps for window frames/titlebars will no replicated at loading. This speeds things up a lot when drawing. Also updated most themes to take advantage of this. 0.9.17: - updated win31 theme (by Pavel Roskin) - non-resizeable window now hide the resizing border unless requested by MWM hints. - if theme pixmaps for border/titlebar are missing drawing will be done using normal routines 0.9.16: - fvwm theme now installed, too. :) - config fix to use gcc to link and avoid dependency on libstdc++ - pointerFocus only activates if mouse actually moves - New theme: TechnologicEnvy by Mike L Kesl - fixed painting of non-resizing-border 0.9.15: - Alt+Tab no longer crashes on empty desktop - Fixed crash in desktop background pixmap loading - Frame border decoration hint was sometimes ignored - Added compatibility kludge for GNOME 0.30 wmpager - Fixed compilation problem for sound events - Taskbar now supports Xdnd v3: bug with workspace switching still unresolved - New: Workspace switching with Ctrl+Alt+[1-9] - New theme: fvwm by Thomas Kaehn 0.9.14: - new option: QuickSwitchToMinimized - determines if Alt+Tab will cycle trough minimized windows. - fixes in menu generation - display message count as mailbox indicator tooltip - fixes in root menu click handling (chord/click) - fixes (hacks) in modifier autodetect - new options: DesktopBackgroundColor, DesktopBackgroundImage - fixed window positioning on restart for certain window geometries - new theme: aesthetech by "Daniel Richard G." 0.9.13: - The license has changed from GPL to LGPL. There is no library yet, but there will be (someday). - Lots of work on modularity. - Initial support for Xdnd drag drop in the taskbar. You can drag things over the taskbar window icons and the windows will raise. You can also switch to another workspace by dragging over the workspace switching buttons. - Fixed 'restart wmaker' problem (again). - Fixes for WarpPointer=1 - Alt+Tab now includes minimized windows. - If any titlebar pixmaps are missing, they will be skipped when tiling across the titlebar. If there is only title?B.xpm for the titlebar pixmaps it will be tiled accross the entire titlebar. - New settings: DelayPointerFocus=0,1; PointerFocusDelay=x (ms) - Mouse Wheel support (UseMouseWheel=0,1 option) Meta/Ctrl+Alt+wheel can be used to switch between windows. - New theme: BluePlastic by Xavier Bourvellec (slowleon@yahoo.com) - New settings: ClickMotionDelay, delay before even one pixel motion is interpreted as a drag. See also ClickMotionDistance - Experimental support for GNOME menus/imlib icons. - New config program. - Option TaskBarDoubleHeight=0,1 0.9.12: - Task bar did not auto hide when program was run from it :-) - Event grab lock up when clicking both buttons in titlebar menu button. - Fix for WIN_ICONS property. - Windows minimized to desktop were on activated on mouse enter when in PointerFocus mode. 0.9.11: - Unminimizing the window would not set X focus properly. - Added options AutoRaise and AutoRaiseDelay. - Added options TaskBarAutoHide and AutoHideDelay. - Documentation updates. 0.9.10: - Windows in other layers were not correctly focused on close/switch. - Renamed settings: (old ones will still work for some time) ShowTaskBarClock -> TaskBarShowClock ShowMailBoxStatus -> TaskBarShowMailboxStatus PrettyClock -> TaskBarClockLeds - New settings: TaskBarShowStartMenu, TaskBarShowWindowListMenu. - Bluegold theme updated/renamed to BlueIce (default and light theme) - New theme: Jaywalk by Roef Ragas 0.9.9: - NumLock should now be properly ignored for keybindings. - When modal window is closed, it's parent should properly get focus. 0.9.8: - fixed color configuration for pressed buttons. - taskBarShowAllWindows=1 did not activate windows on other workspaces correctly (minimized them instead). - iconized windows were not correctly configurable by clients - new theme "monte-carlo" by: Josef "Jupp" Schugt (jupp@gmx.de) 0.9.7: - added more color/font settings for buttons, minimized window icons - fixes for SGI CC - minimized windows do not appear at the same place anymore (needs tuning) 0.9.6: - upon restart, all WM_STATE hints were reset to WithdrawnState, oops! - major fixes for handling window state. behaves much better when minimizeToDesktop=1, but this is still not completed 0.9.5: - removed debug message for select - fixed painting of conditional cascade indicator in gtk look - fixed icon/pixmap searching. {icons,taskbar,ledclock,mailbox} pixmaps are now searched in themes too. - Added 'bluegold' (hi-color) theme by: Andras Wappel - Added 'metal-big' theme by: Straker Skunk - Set layer command added to window menu. - Rollup focus fix by: Kevin Brown 0.9.4: - Hidden windows were not hidden after restart (taskbar). - Reimplemented menu painting. Improvements in Gtk and Metal look. 0.9.3: - Rollup function did not hide client window - workaround for JDK1.1.5(6?) bug? with reusing windows, when doing setResizable(false) - bug fixes. 0.9.2: - Restore function did not work. - SM registration was not entirely correct. - A start at Gtk look/theme. Currently only menus are gtk lookalike. A good theme for frame borders would be appreciated (I just copied Metal for now). 0.9.1: - Initial Session Management support. (only register with the SM). - windows without titlebars now can't be rolled up - some of the WM functionality is now exposed using properties/ hints. See WinMgr.h (the spec is not finalized, please comment). - KWM_WIN_ICONS is supported. See WinMgr.h for more extensible solution. Icewm only uses 16x16 and 32x32 icons at this time. - lots of internal changes wrt. workspaces/layers/states. Things like focus/... are still slightly broken. Please report even the smallest problems (compared to 0.8.16). - winoptions "workspace" and "layer" options now work. - removed fShade (replaced by fRollup in 0.8.16) window option - ... (lots) 0.8.16: - TaskBarShowAllWindows=1 it did not do so after restart - opaqueMove/Resize=0 left border on screen when Esc pressed - Some dialogs in Mathematica incorrectly forced to height=1 pixel - Fix windowlist Show menu option not to focus selected windows 0.8.15: - fixed wrong handling of transient windows (could sometimes crash) - taskbar now correctly repaints when there is no WM_ICON_NAME set. - window repositioning fixed (xv,java works ok now) - window now loses maximized state if app resizes it 0.8.14: - Fixed random crashing problem when (un)mapping windows. - Metal theme fixes. - Fixed shaped windows with no titlebar. - Fix MoveToWorkspace to update taskbar correctly. - Memory leak fixes. 0.8.13: - Bug fixes. - ManualPlacement setting (probably needs tuning) 0.8.12: - Conditional cascades now used for window list submenus. - Fixed Alt+Tab after workspace was switched. - Normal modal dialogs now keep focus from their owners. - Mouse handling improvements for task bar icons. - ICCCM positioning fixes (too bad ICCCM specifies policy here :-() - Clock mostly reimplemented. Now more customizable. - Tooltips appear in some places. - Simplification of multi-workspace concept. Now only single workspace for window and sticky windows. - Mail,Clock,Lock can now be configured to actually run programs. 0.8.11: - Alt+Space is not used by wm, use Shift+Esc instead - Ctrl+Esc shows start menu, Ctrl+Shift+Esc shows window list - Ctrl+Alt+Delete now supports some navigation keys - -t can be used on the command line to specify a theme - PgUp/Dn now work in the window list - Crash with accelx fixed. - Some mnemonics fixed in menus. - Refresh command is now builtin. 0.8.10: - windows would not be raised from taskbar when RaiseOnFocus was 0 - added 'restart' for 'menu' file. Use like this: restart "Label" icon window-manager options - you can now define a new look using pixmaps. This is not complete yet. There is a sample win31-like look. 0.8.9: - apps using Globally Active Input could not get focus (fixed?) - Delete,Shift+F10 in window list added. - some memory leak fixes 0.8.8: - added window list (Ctrl+Esc) - added some themes capability 0.8.7: - added setting showTaskBarClock showMailBoxStatus mailBoxPath 0.8.6: - now uses ~/.icewm/ directory for settings. configuration files have been renamed: system.icewmrc, .icewmrc -> preferences system.icewm-menu, .icewm-menu -> menu new configuration file: winoptions - implemented option: EdgeResistance <0-10000> - configurable window options: - icon set to icon_name all boolean options: set to 0 or 1 - onTop - allWorkspaces - ignoreWinList - ignoreTaskBar - fullKeys window functions - fMove - fResize - fClose - fMinimize - fMaximize - fHide - fShade window decorations - dTitleBar - dSysMenu - dBorder - dResize - dClose - dMinimize - dMaximize - dHide icewm-1.3.7/config.guess0000755000076600007660000011330011463274241014144 0ustar develdevel#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002 Free Software Foundation, Inc. timestamp='2002-05-29' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi dummy=dummy-$$ trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int dummy(){}" > $dummy.c ; for c in cc gcc c89 c99 ; do ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; if test $? = 0 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; rm -f $dummy.c $dummy.o $dummy.rel ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; arc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; macppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvmeppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; pmax:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sgi:OpenBSD:*:*) echo mipseb-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sun3:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; wgrisc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} exit 0 ;; alpha:OSF1:*:*) if test $UNAME_RELEASE = "V4.0"; then UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` fi # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. cat <$dummy.s .data \$Lformat: .byte 37,100,45,37,120,10,0 # "%d-%x\n" .text .globl main .align 4 .ent main main: .frame \$30,16,\$26,0 ldgp \$29,0(\$27) .prologue 1 .long 0x47e03d80 # implver \$0 lda \$2,-1 .long 0x47e20c21 # amask \$2,\$1 lda \$16,\$Lformat mov \$0,\$17 not \$1,\$18 jsr \$26,printf ldgp \$29,0(\$26) mov 0,\$16 jsr \$26,exit .end main EOF eval $set_cc_for_build $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null if test "$?" = 0 ; then case `./$dummy` in 0-0) UNAME_MACHINE="alpha" ;; 1-0) UNAME_MACHINE="alphaev5" ;; 1-1) UNAME_MACHINE="alphaev56" ;; 1-101) UNAME_MACHINE="alphapca56" ;; 2-303) UNAME_MACHINE="alphaev6" ;; 2-307) UNAME_MACHINE="alphaev67" ;; 2-1307) UNAME_MACHINE="alphaev68" ;; esac fi rm -f $dummy.s $dummy echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit 0 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit 0 ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit 0 ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit 0 ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit 0 ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit 0 ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit 0 ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD $dummy.c -o $dummy \ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; Night_Hawk:*:*:PowerMAX_OS) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit 0 ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit 0 ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit 0 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit 0 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit 0 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit 0 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit 0 ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit 0 ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit 0 ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit 0 ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit 0 ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit 0 ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy` if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi rm -f $dummy.c $dummy fi ;; esac echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit 0 ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit 0 ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit 0 ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3D:*:*:*) echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; x86:Interix*:3*) echo i386-pc-interix3 exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i386-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` rm -f $dummy.c test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0 ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit 0 ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit 0 ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit 0 ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit 0 ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit 0 ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit 0 ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit 0 ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit 0 ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #ifdef __INTEL_COMPILER LIBC=gnu #else LIBC=gnuaout #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` rm -f $dummy.c test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; i*86:*:5:[78]*) case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit 0 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 exit 0 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit 0 ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4.3${OS_REL} && exit 0 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit 0 ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit 0 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit 0 ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit 0 ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit 0 ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) echo `uname -p`-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit 0 ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit 0 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit 0 ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit 0 ;; *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit 0 ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit 0 ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; c34*) echo c34-convex-bsd exit 0 ;; c38*) echo c38-convex-bsd exit 0 ;; c4*) echo c4-convex-bsd exit 0 ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: icewm-1.3.7/.cvsignore0000644000076600007660000000016311463274241013626 0ustar develdevel*.inc *.mo Makefile config.log config.status configure config.h.in autom4te*.cache aclocal.m4 icewm.spec icewm.lsm icewm-1.3.7/COPYING0000644000076600007660000006152211463274241012667 0ustar develdevel GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA. Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! --- The new adddress of the FSF is: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA