Virtual Desktop switching in Mavericks

With Mavericks, each display has its own set of virtual desktops whereas before, a virtual desktop "spanned" displays.
I used to have 4 virtual desktops.  After the upgrade, these virtual desktops were mapped to my primary monitor, and the secondary had one virtual desktop.  That part was ok as I use the secondary monitor only to run a Terminal that I would use across all my virtual desktops.  But the inconvenience now is switching virtual desktops!  If I'm typing something in the terminal on the secondary monitor and want to quickly go to another virtual desktop, I now first have to bring the mouse over to the primary monitor and THEN switch desktops.  Very annoying.
Does someone know of a setting or utility that can map the "virtual desktop switching" keyboard combination to a fixed display?
Apple, are you listening?  Why is Mavericks not smart enough to realize that when a user hits the keyboard combination for switching virtual desktops on a display with only ONE virtual desktop that this probably means they meant to switch virtual desktops on the other display (especially when there's only one display with multiple virtual desktops!)?

tjwolf wrote:
Apple, are you listening?
It is highly unlikely anybody working for Apple who can do anything about this is reading these forums. You might want to consider submitting the form at http://www.apple.com/feedback/macosx.html for things like this.
Be sure to indicate in the 'feedback type' popup the most appropriate choice for your submission. That is the best way to get it seen by the right people.

Similar Messages

  • [SOLVED] OpenBox - Transparency and Virtual Desktop Switcher

    Hi All
    I've just recently, in the last 2 days, switched from Gnome 3.2 to Openbox. I've never really used it before except for a short period on #! as I recall. I've a couple of problems I don't seem to be able to find any answers to and hopefully someone on here already knows how:
    1) I'm using Guake dropdown terminal - I don't mind switching to any other terminal if necessary. I can't get transparency to work correctly with it though. I've installed the following to try to resolve the issue:
    Cairo Composite Manager
    transset-df
    If I issue the command:
    transset-df -n 'Guake!' &
    the Guake terminal sets to transparent which is great. However, as soon as the window retracts and I call it back again the transparency has switched off.
    2) I've installed tint2 and it's pretty good. Problem is I can't find a way to get a virtual desktop switcher. Again, this choice isn't cast in stone, I'm quite happy to change to any other application, or set of applications, to achieve the following:
    Virtual Desktop Switcher - i like the way pypanel does this actually. I'm happy enough with the mouse wheel switching desktops but I'd like some indication of which desktop I'm on.
    Date and Time with a calendar - I've got Orca working quite well on a click on the clock for the calendar.
    I would have thought this was pretty simple to resolve really, it's just that i don't know Openbox that well yet and I could use some advice on the best way to resolve the issues.
    Thanks in advance
    Rich
    Last edited by RichAustin (2011-10-23 09:20:13)

    I've actually managed to resolve the transparency issue as well.
    sudo pacman -S devilspie xcompmgr transset-df
    Then in .config/openbox/autostart:
    # Start Composite Manager
    xcompmgr &
    # Start Devilspie to alter windows
    devilspie -a &
    # Start Main Panel
    tint2 &
    Finally, create a file in .devilspie called guake.ds with the following content:
    (if
    (is (window_name) "guake.py" )
    (begin
    (spawn_sync (str "transset-df -i " (window_xid) " 0.5") )

  • [SOLVED]penbox Virtual Desktop Switch - Horiz Vert

    How can I change the pop up that comes up when you switch virtual desktops in openbox to a vertical orientation instead of the default horizontal one?
    Last edited by johan1391 (2011-07-24 23:39:38)

    Have a look at obsetlayout.
    http://aur.archlinux.org/packages.php?ID=34376
    After you install the program just run obsetlayout it pretty self explanatory.

  • No virtual desktops in Win10 (please fix)?: Dangerous game promoting app switching on different displays as virtual desktops

    Seems virtual desktops are overpromoted - and in fact not about virtual desktops (changing content on the desktops). The socalled virtual desktops are right now
    no more than app switching on different displays.
    Dangerous game again from Microsoft promoting things as something they are not.
    Virtual desktops are already a well-defined concept - and people will expect the desktop to be able to change content (be dynamic) ... the data and launching programs for documents, different backgrounds.
    ... but as others may already have stated in other threads: (Right now) Windows 10 does not contain virtual desktops/displays/screens. Not at all.
    A skeptical hypothesis - hopefully it is not so, and we will be able to work with data in a valuable way. The data is on the desktop anyway today - so why not make it real virtual desktops? I simply do not understand the decision.
    So here comes the skeptical hypothesis - it's not a Steve thing. It's Microsoft still looking for that next revamped business model to finance their future.
    So the freak kind of virtual desktops (virtual desktops in Win10 a lie?) will disappoint - have already begun to do so - and seems Microsoft is just taken up with inserting an additional intermediary step towards relaunching the appstore and hiding
    all the user data in cloud again. Really, hiding the difference between data availability - not making the cloud something MORE but making the local system something LESS. The NEXT BIG thing? So we're going to loose file system, folders and the general ability
    to form concepts of our own - and get a freak system? The NEXT BIG thing - data integration? Because data was hidden away now. Also in local systems. Artificially creating new problems - rather than solving new interesting ones?
    We need to able to pin the data onto the display whether desktop, start screen, what ever. It's also on the feature requests. Desktops/Start Screen/Original displays for workflows/whatever actual starting points on login ... needs to have
    more links than application from appstores and application containers linked to them.
    If any more app (read: not cloud, data) but appstore, appstore, appstore
    application containers hiding the data away comes into the UI I am going with Linux. I am that close ...

    A better name would be Virtual Display Layouts ... Virtual Screens ... Virtual Start Screens (please let us be able to pin files/folders to the Start Screen, a requested voted for feature for Windows 10).
    You see, go back and read the topics for Windows 8 ... you will learn the Start Screen is/was the new desktop - and should have been made virtual.
    So please get your act together and stop confusing everything ... and make on coherent system. Drop the Start Screen - and go with the virtual desktop
    (put the Start Screen technology into the virtual desktop - and let users pin folders and files there as requested ... both local and in the cloud)

  • Mountain Lion bug:  Switching between virtual desktops not possible when using external screen only.

    I think I have found a bug.  I upgraded to Mountain Lion last week, 2 days after ML became available.  My laptop is a Macbook Pro from November 2011.  I ran Lion before and I did an upgrade on my laptop (not reinstall, but upgrade).
    I have an external HP screen (24 inch) connected using DVI (standard connection). I also have an external Apple keyboard (bluetooth) and the external trackpad (bluetooth). I concider myself as a power user with long experience.  I started using multiple desktops in Snow Leopard, and really liked the "4 finger swipe up" that came in Lion.  By swiping 4 fingers up on the trackpad, I can see all "virtual desktops" on the top of the screen and select or more applications to the different screens.
    This function does still work, but when I put the Macbook pro in "clamshell mode" (meaning the lid is locked and I am ONLY using the external screen), then this does not work.  When I do the gesture (4 finger swipe up), the virtual desktops on top of the screen are not shown. 
    But if I open the Mac and then having 2 active screens, both the internal LCD on the Macbook Pro and the external HP screen, it works again.  It does not matter which screen the "Finder many" is active on.
    Picture below show how it is supposed to work.  And it still works if no external screen is connected or if the external screen connected but the lid on the Mac is still open (not clamshell mode).
    This is how it looks on the external screen when I do the "4 finger swipe up" and the Macbook Pro is in clamshell mode (lid down).  Please also note how the background image is not minimized in the same way as before.
    Have any other experienced the same problem ?  Where do I report this to Apple ?  Any e-mail or WEB pages where I can report bugs ?

    As an update, I tried switching the main display to the MBP. Nothing changed.
    However, I changed the rotation to 90 degrees and everything is back to Normal! Aside from the fact that I'm looking a 24" screen in the vertical position.

  • Yosemite reverts to a certain virtual desktop on startup.

    I'm working on one of the 2008 iMacs and I recently upgraded to Yosemite after skipping Mavericks.
    What I immediately noticed when I had changed to a desired wallpaper, initially, is that on starting up, restarting, or logging back in the wallpaper would switch back to the grey solid wallpaper.
    I deleted that.
    It would then revert to the next solid coloured wallpaper (blue).
    What I did after this was create a new folder and put my own desktop wallpapers in it, and used that.
    When I started up again the next time, it reverted to one of the default yosemite picture wallpapers in 'pictures'. I had a look at the setup for the desktop setups. There were 32. I deleted all but 2 of the virtual desktops, and changed the desktop wallpaper to be identical on both.
    I restarted and, again, got the picture of the yellowy-purple yosemite.
    I inspected the virtual desktops. Only 'desktop 1' had changed.
    I changed the order, so now that Desktop 1 became Desktop 2  (and vice versa).
    I restarted.
    Again I was greeted by the yellowy-purple yosemite. Once again I inspected the virtual desktops. I found that OS X had started up on Desktop 2 (which used to be desktop 1) even though I had restarted on Desktop 1.
    I'm out of ideas...anyone else having this problem?

    1. If you log in automatically, a bug in some versions of OS X will cause the desktop picture to revert to the default image at every startup. The only known workaround is to disable automatic login in the Users & Groups preference pane.
    2. If the selected Desktop picture is stored in an iPhoto library on an external drive, export it from iPhoto and move it to a folder on the startup volume. (Credit for this solution to ASC member janay.)
    3. If the desktop picture always reverts to a plain blue background, one of your login items may be causing the problem. The "TeamViewer" application can have this effect; see this thread. If it's not that in your case, rule out all other third-party login items as possible causes.
    4. If you have a MacBook Pro with automatic graphics switching, disable it temporarily in the Energy Saver preference pane, set the Desktop picture, then restart the computer and re-enable graphics switching.
    5. If none of the above applies to you, proceed as follows.

  • Applescript to set a wallpaper on all virtual desktops/spaces

    Hello everybody,
    i just want to share something i came up with after trying many things to set a wallpaper to every of my virtual desktops/spaces... feel free to use and improve it!
    This applescript is based on a few solutions i found on the internet...
    It's really silly, but all the other things doesn't work for me.
    FIRST make sure that AppleScript Editor.app is checked in
    System Preferences --> Security & Privacy --> Privacy --> Accessibility
    Then start AppleScript Editor and paste the following:
    ----- snip -----
    set myWallpaper to "/path/to/image.jpg"
    set myNumberOfSpaces to 5
    -- switch to first space
    tell application "System Events" to key code 18 using control down
    delay 1
    tell application "System Events" to set picture of current desktop to myWallpaper
    delay 0.5
    repeat with theIncrementValue from 2 to myNumberOfSpaces
      -- switch to next space
              tell application "System Events" to key code 124 using control down
      delay 1
              tell application "System Events" to set picture of current desktop to myWallpaper
              delay 0.5
    end repeat
    ----- snip -----
    Adjust the two variables to your needs...
    e.g. i have 5 virtual desktops/spaces
    Then click the Run button and watch it working :-)
    Hopefully this will help someone.
    I think you can easylie make an osascript or o droplet out of this...
    Till now i found no other working shiny easy solution of setting one picture to all my desktops in mavericks.
    Improvements are welcome!
    woodst0ck

    There’s been a couple threads about this, the solution seems to be to install a compositor like xcompmgr or maybe compton (I’m using compton and not seeing the issue).

  • How to set printer margins if using a lot of printers in virtual desktops which are deleted each time users logs off

    Hello,
    i am using Firefox version 31. I have a problem with page setup margins. I need to use left
    30mm; right 10mm; top 20mm; bottom 20mm. I am using VMware floating assignemnt linked clones
    virtual desktops. After users log off - machines are deleted and users next time logs on get's brand
    new VDI's. Users gets printers to VDI using login script from Active Directory.
    Option Explicit
    Dim strPrinterUNC, objNetwork
    strPrinterUNC = "\\some_server\printer_number_1"
    Set objNetwork = CreateObject("WScript.Network")
    objNetwork.AddWindowsPrinterConnection strPrinterUNC
    WScript.Sleep (20000)
    objNetwork.SetDefaultPrinter strPrinterUNC
    Set objNetwork = Nothing
    Each user have different logon script, because they use different printers (different printer names e.g. \\some_server\printer_number_2 ; \\some_server\printer_number_3 and etc. Page setup margins in Internet Explorer are ok. But how to make Firefox page setup margins as i need? For other options i have
    used CCK2 Wizard 2.0.4 tool. It worked fine. Maybe i can put some information in C:\Program
    Files\Mozilla Firefox\defaults\pref\autoconfig.js I have some usefull data in it allready. I
    have found info that: "Setting print margins is done in the printer settings". I have a lot of
    printers, so i can not set printer margins individualy for each of them. Now mozilla shows top,
    bottom, right, left each 12.7 mm. What should i do if i have a lot of printers in enterprise
    environment?

    Firefox has a profile folder that has preferences to save this. But the config that would need to be changed is:
    print. save_print_settings = True - (default): Save the print settings after each print job
    Locking that preference: [http://kb.mozillazine.org/Locking_preferences]
    Or done manually:
    #In order to check the margins, we need to go to ''File'' > ''Page Setup''.
    #Once this is done, switch to the ''Margins & Header/Footer'' tab.
    #Check what's set there under ''Margins''.
    The following are the default values for ''Margins'':
    Check these values accordingly and change them if necessary.

  • Hacking conky's own_window_type desktop to run on one virtual desktop

    Since I have no dual screen setup (just a laptop) I'd like to use my virtual desktops to run different conky instances on (almost) every virtual desktop. I tried to accomplish this by using own_window_type normal in conky, and that works - until I call the desktop, then it just minimises like a regular app. That's not what I want.
    People in #conky suggested I use the if_match functionality in conky, so I can keep using the own_window_type desktop setting, but that does not solve my issue since you cannot define different conky window sizes in one configuration file. I checked in with #openbox and they told me essentially Conky should not display on every virtual desktop (and frankly they have a point, since you can tell e.g. Openbox to sticky an app on every virtual desktop). However, one would need to hack the code for that (specifically the stuff that takes care of putting the desktop window type on every virtual desktop). That's where you guys come in, since my C knowledge is close to non-existent .
    I was told to look at x11.c and specifically the init_window() function but I'm at loss where to start...
    /* -*- mode: c; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: t -*-
    * vim: ts=4 sw=4 noet ai cindent syntax=c
    * Conky, a system monitor, based on torsmo
    * Any original torsmo code is licensed under the BSD license
    * All code written since the fork of torsmo is licensed under the GPL
    * Please see COPYING for details
    * Copyright (c) 2004, Hannu Saransaari and Lauri Hakkarainen
    * Copyright (c) 2005-2010 Brenden Matthews, Philip Kovacs, et. al.
    * (see AUTHORS)
    * All rights reserved.
    * This program is free software: you can redistribute it and/or modify
    * it under the terms of the GNU General Public License as published by
    * the Free Software Foundation, either version 3 of the License, or
    * (at your option) any later version.
    * This program is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    * GNU General Public License for more details.
    * You should have received a copy of the GNU General Public License
    * along with this program. If not, see <http://www.gnu.org/licenses/>.
    #include "config.h"
    #include "conky.h"
    #include "logging.h"
    #include "common.h"
    #include "x11.h"
    #include <X11/Xlib.h>
    #include <X11/Xatom.h>
    #include <X11/Xmd.h>
    #include <X11/Xutil.h>
    #ifdef IMLIB2
    #include "imlib2.h"
    #endif /* IMLIB2 */
    #ifdef XFT
    #include <X11/Xft/Xft.h>
    int use_xft = 0;
    #endif
    #ifdef HAVE_XDBE
    int use_xdbe;
    #endif
    #ifdef USE_ARGB
    int use_argb_visual;
    int have_argb_visual;
    #endif /* USE_ARGB */
    int own_window_argb_value;
    /* some basic X11 stuff */
    Display *display = NULL;
    int display_width;
    int display_height;
    int screen;
    static int set_transparent;
    static int background_colour;
    /* workarea from _NET_WORKAREA, this is where window / text is aligned */
    int workarea[4];
    /* Window stuff */
    struct conky_window window;
    char window_created = 0;
    /* local prototypes */
    static void update_workarea(void);
    static Window find_desktop_window(Window *p_root, Window *p_desktop);
    static Window find_subwindow(Window win, int w, int h);
    /* X11 initializer */
    void init_X11(const char *disp)
    if (!display) {
    if ((display = XOpenDisplay(disp)) == NULL) {
    CRIT_ERR(NULL, NULL, "can't open display: %s", XDisplayName(disp));
    screen = DefaultScreen(display);
    display_width = DisplayWidth(display, screen);
    display_height = DisplayHeight(display, screen);
    get_x11_desktop_info(display, 0);
    update_workarea();
    static void update_workarea(void)
    /* default work area is display */
    workarea[0] = 0;
    workarea[1] = 0;
    workarea[2] = display_width;
    workarea[3] = display_height;
    /* Find root window and desktop window.
    * Return desktop window on success,
    * and set root and desktop byref return values.
    * Return 0 on failure. */
    static Window find_desktop_window(Window *p_root, Window *p_desktop)
    Atom type;
    int format, i;
    unsigned long nitems, bytes;
    unsigned int n;
    Window root = RootWindow(display, screen);
    Window win = root;
    Window troot, parent, *children;
    unsigned char *buf = NULL;
    if (!p_root || !p_desktop) {
    return 0;
    /* some window managers set __SWM_VROOT to some child of root window */
    XQueryTree(display, root, &troot, &parent, &children, &n);
    for (i = 0; i < (int) n; i++) {
    if (XGetWindowProperty(display, children[i], ATOM(__SWM_VROOT), 0, 1,
    False, XA_WINDOW, &type, &format, &nitems, &bytes, &buf)
    == Success && type == XA_WINDOW) {
    win = *(Window *) buf;
    XFree(buf);
    XFree(children);
    fprintf(stderr,
    PACKAGE_NAME": desktop window (%lx) found from __SWM_VROOT property\n",
    win);
    fflush(stderr);
    *p_root = win;
    *p_desktop = win;
    return win;
    if (buf) {
    XFree(buf);
    buf = 0;
    XFree(children);
    /* get subwindows from root */
    win = find_subwindow(root, -1, -1);
    update_workarea();
    win = find_subwindow(win, workarea[2], workarea[3]);
    if (buf) {
    XFree(buf);
    buf = 0;
    if (win != root) {
    fprintf(stderr,
    PACKAGE_NAME": desktop window (%lx) is subwindow of root window (%lx)\n",
    win, root);
    } else {
    fprintf(stderr, PACKAGE_NAME": desktop window (%lx) is root window\n", win);
    fflush(stderr);
    *p_root = root;
    *p_desktop = win;
    return win;
    static int colour_set = -1;
    /* if no argb visual is configured sets background to ParentRelative for the Window and all parents,
    else real transparency is used */
    void set_transparent_background(Window win, int alpha)
    (void)alpha; /* disable warnings when unused */
    #ifdef USE_ARGB
    if (have_argb_visual) {
    // real transparency
    if (set_transparent) {
    XSetWindowBackground(display, win, 0x00);
    } else if (colour_set != background_colour) {
    XSetWindowBackground(display, win,
    background_colour | (alpha << 24));
    colour_set = background_colour;
    } else {
    #endif /* USE_ARGB */
    // pseudo transparency
    if (set_transparent) {
    Window parent = win;
    unsigned int i;
    for (i = 0; i < 50 && parent != RootWindow(display, screen); i++) {
    Window r, *children;
    unsigned int n;
    XSetWindowBackgroundPixmap(display, parent, ParentRelative);
    XQueryTree(display, parent, &r, &parent, &children, &n);
    XFree(children);
    } else if (colour_set != background_colour) {
    XSetWindowBackground(display, win, background_colour);
    colour_set = background_colour;
    #ifdef USE_ARGB
    #endif /* USE_ARGB */
    #ifdef USE_ARGB
    static int get_argb_visual(Visual** visual, int *depth) {
    /* code from gtk project, gdk_screen_get_rgba_visual */
    XVisualInfo visual_template;
    XVisualInfo *visual_list;
    int nxvisuals = 0, i;
    visual_template.screen = screen;
    visual_list = XGetVisualInfo (display, VisualScreenMask,
    &visual_template, &nxvisuals);
    for (i = 0; i < nxvisuals; i++) {
    if (visual_list[i].depth == 32 &&
    (visual_list[i].red_mask == 0xff0000 &&
    visual_list[i].green_mask == 0x00ff00 &&
    visual_list[i].blue_mask == 0x0000ff)) {
    *visual = visual_list[i].visual;
    *depth = visual_list[i].depth;
    DBGP("Found ARGB Visual");
    XFree(visual_list);
    return 1;
    // no argb visual available
    DBGP("No ARGB Visual found");
    XFree(visual_list);
    return 0;
    #endif /* USE_ARGB */
    void destroy_window(void)
    #ifdef XFT
    if(window.xftdraw) {
    XftDrawDestroy(window.xftdraw);
    #endif
    if(window.gc) {
    XFreeGC(display, window.gc);
    memset(&window, 0, sizeof(struct conky_window));
    colour_set = -1;
    void init_window(int own_window, int w, int h, int set_trans, int back_colour,
    char **argv, int argc)
    /* There seems to be some problems with setting transparent background
    * (on fluxbox this time). It doesn't happen always and I don't know why it
    * happens but I bet the bug is somewhere here. */
    set_transparent = set_trans;
    background_colour = back_colour;
    window_created = 1;
    #ifdef OWN_WINDOW
    if (own_window) {
    int depth = 0, flags;
    Visual *visual = NULL;
    if (!find_desktop_window(&window.root, &window.desktop)) {
    return;
    #ifdef USE_ARGB
    if (use_argb_visual && get_argb_visual(&visual, &depth)) {
    have_argb_visual = 1;
    window.visual = visual;
    window.colourmap = XCreateColormap(display,
    DefaultRootWindow(display), window.visual, AllocNone);
    } else {
    #endif /* USE_ARGB */
    window.visual = DefaultVisual(display, screen);
    window.colourmap = DefaultColormap(display, screen);
    depth = CopyFromParent;
    visual = CopyFromParent;
    #ifdef USE_ARGB
    #endif /* USE_ARGB */
    if (window.type == TYPE_OVERRIDE) {
    /* An override_redirect True window.
    * No WM hints or button processing needed. */
    XSetWindowAttributes attrs = { ParentRelative, 0L, 0, 0L, 0, 0,
    Always, 0L, 0L, False, StructureNotifyMask | ExposureMask, 0L,
    True, 0, 0 };
    #ifdef USE_ARGB
    if (have_argb_visual) {
    attrs.colormap = window.colourmap;
    flags = CWBorderPixel | CWColormap | CWOverrideRedirect;
    } else {
    #endif /* USE_ARGB */
    flags = CWBackPixel | CWOverrideRedirect;
    #ifdef USE_ARGB
    #endif /* USE_ARGB */
    /* Parent is desktop window (which might be a child of root) */
    window.window = XCreateWindow(display, window.desktop, window.x,
    window.y, w, h, 0, depth, InputOutput, visual,
    flags, &attrs);
    XLowerWindow(display, window.window);
    fprintf(stderr, PACKAGE_NAME": window type - override\n");
    fflush(stderr);
    } else { /* window.type != TYPE_OVERRIDE */
    /* A window managed by the window manager.
    * Process hints and buttons. */
    XSetWindowAttributes attrs = { ParentRelative, 0L, 0, 0L, 0, 0,
    Always, 0L, 0L, False, StructureNotifyMask | ExposureMask |
    ButtonPressMask | ButtonReleaseMask, 0L, False, 0, 0 };
    XClassHint classHint;
    XWMHints wmHint;
    Atom xa;
    #ifdef USE_ARGB
    if (have_argb_visual) {
    attrs.colormap = window.colourmap;
    flags = CWBorderPixel | CWColormap | CWOverrideRedirect;
    } else {
    #endif /* USE_ARGB */
    flags = CWBackPixel | CWOverrideRedirect;
    #ifdef USE_ARGB
    #endif /* USE_ARGB */
    if (window.type == TYPE_DOCK) {
    window.x = window.y = 0;
    /* Parent is root window so WM can take control */
    window.window = XCreateWindow(display, window.root, window.x,
    window.y, w, h, 0, depth, InputOutput, visual,
    flags, &attrs);
    classHint.res_name = window.class_name;
    classHint.res_class = classHint.res_name;
    wmHint.flags = InputHint | StateHint;
    /* allow decorated windows to be given input focus by WM */
    wmHint.input =
    TEST_HINT(window.hints, HINT_UNDECORATED) ? False : True;
    if (window.type == TYPE_DOCK || window.type == TYPE_PANEL) {
    wmHint.initial_state = WithdrawnState;
    } else {
    wmHint.initial_state = NormalState;
    XmbSetWMProperties(display, window.window, NULL, NULL, argv,
    argc, NULL, &wmHint, &classHint);
    XStoreName(display, window.window, window.title);
    /* Sets an empty WM_PROTOCOLS property */
    XSetWMProtocols(display, window.window, NULL, 0);
    /* Set window type */
    if ((xa = ATOM(_NET_WM_WINDOW_TYPE)) != None) {
    Atom prop;
    switch (window.type) {
    case TYPE_DESKTOP:
    prop = ATOM(_NET_WM_WINDOW_TYPE_DESKTOP);
    fprintf(stderr, PACKAGE_NAME": window type - desktop\n");
    fflush(stderr);
    break;
    case TYPE_DOCK:
    prop = ATOM(_NET_WM_WINDOW_TYPE_DOCK);
    fprintf(stderr, PACKAGE_NAME": window type - dock\n");
    fflush(stderr);
    break;
    case TYPE_PANEL:
    prop = ATOM(_NET_WM_WINDOW_TYPE_DOCK);
    fprintf(stderr, PACKAGE_NAME": window type - panel\n");
    fflush(stderr);
    break;
    case TYPE_NORMAL:
    default:
    prop = ATOM(_NET_WM_WINDOW_TYPE_NORMAL);
    fprintf(stderr, PACKAGE_NAME": window type - normal\n");
    fflush(stderr);
    break;
    XChangeProperty(display, window.window, xa, XA_ATOM, 32,
    PropModeReplace, (unsigned char *) &prop, 1);
    /* Set desired hints */
    /* Window decorations */
    if (TEST_HINT(window.hints, HINT_UNDECORATED)) {
    /* fprintf(stderr, PACKAGE_NAME": hint - undecorated\n");
    fflush(stderr); */
    xa = ATOM(_MOTIF_WM_HINTS);
    if (xa != None) {
    long prop[5] = { 2, 0, 0, 0, 0 };
    XChangeProperty(display, window.window, xa, xa, 32,
    PropModeReplace, (unsigned char *) prop, 5);
    /* Below other windows */
    if (TEST_HINT(window.hints, HINT_BELOW)) {
    /* fprintf(stderr, PACKAGE_NAME": hint - below\n");
    fflush(stderr); */
    xa = ATOM(_WIN_LAYER);
    if (xa != None) {
    long prop = 0;
    XChangeProperty(display, window.window, xa, XA_CARDINAL, 32,
    PropModeAppend, (unsigned char *) &prop, 1);
    xa = ATOM(_NET_WM_STATE);
    if (xa != None) {
    Atom xa_prop = ATOM(_NET_WM_STATE_BELOW);
    XChangeProperty(display, window.window, xa, XA_ATOM, 32,
    PropModeAppend, (unsigned char *) &xa_prop, 1);
    /* Above other windows */
    if (TEST_HINT(window.hints, HINT_ABOVE)) {
    /* fprintf(stderr, PACKAGE_NAME": hint - above\n");
    fflush(stderr); */
    xa = ATOM(_WIN_LAYER);
    if (xa != None) {
    long prop = 6;
    XChangeProperty(display, window.window, xa, XA_CARDINAL, 32,
    PropModeAppend, (unsigned char *) &prop, 1);
    xa = ATOM(_NET_WM_STATE);
    if (xa != None) {
    Atom xa_prop = ATOM(_NET_WM_STATE_ABOVE);
    XChangeProperty(display, window.window, xa, XA_ATOM, 32,
    PropModeAppend, (unsigned char *) &xa_prop, 1);
    /* Sticky */
    if (TEST_HINT(window.hints, HINT_STICKY)) {
    /* fprintf(stderr, PACKAGE_NAME": hint - sticky\n");
    fflush(stderr); */
    xa = ATOM(_NET_WM_DESKTOP);
    if (xa != None) {
    CARD32 xa_prop = 0xFFFFFFFF;
    XChangeProperty(display, window.window, xa, XA_CARDINAL, 32,
    PropModeAppend, (unsigned char *) &xa_prop, 1);
    xa = ATOM(_NET_WM_STATE);
    if (xa != None) {
    Atom xa_prop = ATOM(_NET_WM_STATE_STICKY);
    XChangeProperty(display, window.window, xa, XA_ATOM, 32,
    PropModeAppend, (unsigned char *) &xa_prop, 1);
    /* Skip taskbar */
    if (TEST_HINT(window.hints, HINT_SKIP_TASKBAR)) {
    /* fprintf(stderr, PACKAGE_NAME": hint - skip_taskbar\n");
    fflush(stderr); */
    xa = ATOM(_NET_WM_STATE);
    if (xa != None) {
    Atom xa_prop = ATOM(_NET_WM_STATE_SKIP_TASKBAR);
    XChangeProperty(display, window.window, xa, XA_ATOM, 32,
    PropModeAppend, (unsigned char *) &xa_prop, 1);
    /* Skip pager */
    if (TEST_HINT(window.hints, HINT_SKIP_PAGER)) {
    /* fprintf(stderr, PACKAGE_NAME": hint - skip_pager\n");
    fflush(stderr); */
    xa = ATOM(_NET_WM_STATE);
    if (xa != None) {
    Atom xa_prop = ATOM(_NET_WM_STATE_SKIP_PAGER);
    XChangeProperty(display, window.window, xa, XA_ATOM, 32,
    PropModeAppend, (unsigned char *) &xa_prop, 1);
    fprintf(stderr, PACKAGE_NAME": drawing to created window (0x%lx)\n",
    window.window);
    fflush(stderr);
    XMapWindow(display, window.window);
    } else
    #endif /* OWN_WINDOW */
    XWindowAttributes attrs;
    if (!window.window) {
    window.window = find_desktop_window(&window.root, &window.desktop);
    window.visual = DefaultVisual(display, screen);
    window.colourmap = DefaultColormap(display, screen);
    if (XGetWindowAttributes(display, window.window, &attrs)) {
    window.width = attrs.width;
    window.height = attrs.height;
    fprintf(stderr, PACKAGE_NAME": drawing to desktop window\n");
    /* Drawable is same as window. This may be changed by double buffering. */
    window.drawable = window.window;
    #ifdef HAVE_XDBE
    if (use_xdbe) {
    int major, minor;
    if (!XdbeQueryExtension(display, &major, &minor)) {
    use_xdbe = 0;
    } else {
    window.back_buffer = XdbeAllocateBackBufferName(display,
    window.window, XdbeBackground);
    if (window.back_buffer != None) {
    window.drawable = window.back_buffer;
    fprintf(stderr, PACKAGE_NAME": drawing to double buffer\n");
    } else {
    use_xdbe = 0;
    if (!use_xdbe) {
    NORM_ERR("failed to set up double buffer");
    if (!use_xdbe) {
    fprintf(stderr, PACKAGE_NAME": drawing to single buffer\n");
    #endif
    #ifdef IMLIB2
    cimlib_init(display, window.drawable, window.visual, window.colourmap);
    #endif /* IMLIB2 */
    XFlush(display);
    XSelectInput(display, window.window, ExposureMask | PropertyChangeMask
    #ifdef OWN_WINDOW
    | (own_window ? (StructureNotifyMask |
    ButtonPressMask | ButtonReleaseMask) : 0)
    #endif
    static Window find_subwindow(Window win, int w, int h)
    unsigned int i, j;
    Window troot, parent, *children;
    unsigned int n;
    /* search subwindows with same size as display or work area */
    for (i = 0; i < 10; i++) {
    XQueryTree(display, win, &troot, &parent, &children, &n);
    for (j = 0; j < n; j++) {
    XWindowAttributes attrs;
    if (XGetWindowAttributes(display, children[j], &attrs)) {
    /* Window must be mapped and same size as display or
    * work space */
    if (attrs.map_state != 0 && ((attrs.width == display_width
    && attrs.height == display_height)
    || (attrs.width == w && attrs.height == h))) {
    win = children[j];
    break;
    XFree(children);
    if (j == n) {
    break;
    return win;
    void create_gc(void)
    XGCValues values;
    values.graphics_exposures = 0;
    values.function = GXcopy;
    window.gc = XCreateGC(display, window.drawable,
    GCFunction | GCGraphicsExposures, &values);
    //Get current desktop number
    static inline void get_x11_desktop_current(Display *current_display, Window root, Atom atom)
    Atom actual_type;
    int actual_format;
    unsigned long nitems;
    unsigned long bytes_after;
    unsigned char *prop = NULL;
    struct information *current_info = &info;
    if (atom == None) return;
    if ( (XGetWindowProperty( current_display, root, atom,
    0, 1L, False, XA_CARDINAL,
    &actual_type, &actual_format, &nitems,
    &bytes_after, &prop ) == Success ) &&
    (actual_type == XA_CARDINAL) &&
    (nitems == 1L) && (actual_format == 32) ) {
    current_info->x11.desktop.current = prop[0]+1;
    if(prop) {
    XFree(prop);
    //Get total number of available desktops
    static inline void get_x11_desktop_number(Display *current_display, Window root, Atom atom)
    Atom actual_type;
    int actual_format;
    unsigned long nitems;
    unsigned long bytes_after;
    unsigned char *prop = NULL;
    struct information *current_info = &info;
    if (atom == None) return;
    if ( (XGetWindowProperty( current_display, root, atom,
    0, 1L, False, XA_CARDINAL,
    &actual_type, &actual_format, &nitems,
    &bytes_after, &prop ) == Success ) &&
    (actual_type == XA_CARDINAL) &&
    (nitems == 1L) && (actual_format == 32) ) {
    current_info->x11.desktop.number = prop[0];
    if(prop) {
    XFree(prop);
    //Get all desktop names
    static inline void get_x11_desktop_names(Display *current_display, Window root, Atom atom)
    Atom actual_type;
    int actual_format;
    unsigned long nitems;
    unsigned long bytes_after;
    unsigned char *prop = NULL;
    struct information *current_info = &info;
    if (atom == None) return;
    if ( (XGetWindowProperty( current_display, root, atom,
    0, (~0L), False, ATOM(UTF8_STRING),
    &actual_type, &actual_format, &nitems,
    &bytes_after, &prop ) == Success ) &&
    (actual_type == ATOM(UTF8_STRING)) &&
    (nitems > 0L) && (actual_format == 8) ) {
    if(current_info->x11.desktop.all_names) {
    free(current_info->x11.desktop.all_names);
    current_info->x11.desktop.all_names = NULL;
    current_info->x11.desktop.all_names = malloc(nitems*sizeof(char));
    memcpy(current_info->x11.desktop.all_names, prop, nitems);
    current_info->x11.desktop.nitems = nitems;
    if(prop) {
    XFree(prop);
    //Get current desktop name
    static inline void get_x11_desktop_current_name(char *names)
    struct information *current_info = &info;
    unsigned int i = 0, j = 0;
    int k = 0;
    while ( i < current_info->x11.desktop.nitems ) {
    if ( names[i++] == '\0' ) {
    if ( ++k == current_info->x11.desktop.current ) {
    if (current_info->x11.desktop.name) {
    free(current_info->x11.desktop.name);
    current_info->x11.desktop.name = NULL;
    current_info->x11.desktop.name = malloc((i-j)*sizeof(char));
    //desktop names can be empty but should always be not null
    strcpy( current_info->x11.desktop.name, (char *)&names[j] );
    break;
    j = i;
    void get_x11_desktop_info(Display *current_display, Atom atom)
    Window root;
    static Atom atom_current, atom_number, atom_names;
    struct information *current_info = &info;
    XWindowAttributes window_attributes;
    root = RootWindow(current_display, current_info->x11.monitor.current);
    /* Check if we initialise else retrieve changed property */
    if (atom == 0) {
    atom_current = XInternAtom(current_display, "_NET_CURRENT_DESKTOP", True);
    atom_number = XInternAtom(current_display, "_NET_NUMBER_OF_DESKTOPS", True);
    atom_names = XInternAtom(current_display, "_NET_DESKTOP_NAMES", True);
    get_x11_desktop_current(current_display, root, atom_current);
    get_x11_desktop_number(current_display, root, atom_number);
    get_x11_desktop_names(current_display, root, atom_names);
    get_x11_desktop_current_name(current_info->x11.desktop.all_names);
    /* Set the PropertyChangeMask on the root window, if not set */
    XGetWindowAttributes(display, root, &window_attributes);
    if (!(window_attributes.your_event_mask & PropertyChangeMask)) {
    XSetWindowAttributes attributes;
    attributes.event_mask = window_attributes.your_event_mask | PropertyChangeMask;
    XChangeWindowAttributes(display, root, CWEventMask, &attributes);
    XGetWindowAttributes(display, root, &window_attributes);
    } else {
    if (atom == atom_current) {
    get_x11_desktop_current(current_display, root, atom_current);
    get_x11_desktop_current_name(current_info->x11.desktop.all_names);
    } else if (atom == atom_number) {
    get_x11_desktop_number(current_display, root, atom_number);
    } else if (atom == atom_names) {
    get_x11_desktop_names(current_display, root, atom_names);
    get_x11_desktop_current_name(current_info->x11.desktop.all_names);
    void update_x11info(void)
    struct information *current_info = &info;
    if (x_initialised != YES)
    return;
    current_info->x11.monitor.number = XScreenCount(display);
    current_info->x11.monitor.current = XDefaultScreen(display);
    #ifdef OWN_WINDOW
    /* reserve window manager space */
    void set_struts(int sidenum)
    Atom strut;
    if ((strut = ATOM(_NET_WM_STRUT)) != None) {
    /* reserve space at left, right, top, bottom */
    signed long sizes[12] = {0};
    int i;
    /* define strut depth */
    switch (sidenum) {
    case 0:
    /* left side */
    sizes[0] = window.x + window.width;
    break;
    case 1:
    /* right side */
    sizes[1] = display_width - window.x;
    break;
    case 2:
    /* top side */
    sizes[2] = window.y + window.height;
    break;
    case 3:
    /* bottom side */
    sizes[3] = display_height - window.y;
    break;
    /* define partial strut length */
    if (sidenum <= 1) {
    sizes[4 + (sidenum*2)] = window.y;
    sizes[5 + (sidenum*2)] = window.y + window.height;
    } else if (sidenum <= 3) {
    sizes[4 + (sidenum*2)] = window.x;
    sizes[5 + (sidenum*2)] = window.x + window.width;
    /* check constraints */
    for (i = 0; i < 12; i++) {
    if (sizes[i] < 0) {
    sizes[i] = 0;
    } else {
    if (i <= 1 || i >= 8) {
    if (sizes[i] > display_width) {
    sizes[i] = display_width;
    } else {
    if (sizes[i] > display_height) {
    sizes[i] = display_height;
    XChangeProperty(display, window.window, strut, XA_CARDINAL, 32,
    PropModeReplace, (unsigned char *) &sizes, 4);
    if ((strut = ATOM(_NET_WM_STRUT_PARTIAL)) != None) {
    XChangeProperty(display, window.window, strut, XA_CARDINAL, 32,
    PropModeReplace, (unsigned char *) &sizes, 12);
    #endif /* OWN_WINDOW */
    #ifdef HAVE_XDBE
    void xdbe_swap_buffers(void)
    if (use_xdbe) {
    XdbeSwapInfo swap;
    swap.swap_window = window.window;
    swap.swap_action = XdbeBackground;
    XdbeSwapBuffers(display, &swap, 1);
    #endif /* HAVE_XDBE */
    I guess this is one of the important bits:
    switch (window.type) {
    case TYPE_DESKTOP:
    prop = ATOM(_NET_WM_WINDOW_TYPE_DESKTOP);
    fprintf(stderr, PACKAGE_NAME": window type - desktop\n");
    fflush(stderr);
    break;
    Reading the NET_WM spec (which all major WMs use as the standard more or less) does not tell me anything meaningful (at least not for me ):
    _NET_WM_WINDOW_TYPE_DESKTOP indicates a desktop feature. This can include a single window containing desktop icons with the same dimensions as the screen, allowing the desktop environment to have full control of the desktop, without the need for proxying root window clicks.
    If anyone could tell me what to replace, that would be great .

    Hi lewisspindlove,
    Thanks for your input,
    it doesn't happen when i have my desktop in a "single picture" mode, and,
    it doesn't happen on other accounts, because besides mine(Admin), there is only
    the Guest account and this does not occur on that account.
    I tried your method of removing the wallpapers folder from Libary, then I
    noticed that the computer will select ANY image which I last used when in
    "single picture" mode, not "Change picture every 5mins" mode.
    For example, let's say I have a picture which I saved in the Documents folder,
    and I use that in "single picture" mode; after which I revert back to the folder which contains the pictures I want for "Change picture every 5mins" mode (which is stored somewhere else).
    If i go to the Login window & log back in again, the computer selects the picture
    I last used (the one in the Documents folder) as my background, BUT, after 5mins the picture changes to the ones I'm using for "Change picture every 5mins".
    I hope I'm not confusing everyone!
    This is a complicated & weird but ANNOYING problem!
    Any ideas if an Archive & Install would help? Does that erase all of my stored data on my HDD?

  • Parallels Desktop 5 or Parallels Desktop Switch to Mac ?

    I recently bought my first Mac (Macbook Pro 7,1 and plan to port some of my Windows applications into a Parallels virtual machine. The Mac specialist who sold me the package included Parallels Desktop 5 for Mac. Upon reading the installation instructions I learn that there is a different program, Parallels Desktop Switch to Mac. Would that be better for my needs? Should I exchange the one I have for a Switch to Mac?

    Welcome to Apple Discussions
    Parallels Desktop 5 will allow you to install a virtual machine for Windows onto your mac provided you have a copy of Windows and a serial number available. You will be starting from scratch so will have to install your applications again and move any data folders/files across to the new locations.
    If you want Tutorials on how Mac's work and some extra migration tools then Switch to Mac might suit you better (but IMHO it's not worth it)

  • Vlc & chromium contents persist across virtual desktops after -Syu

    I have just completed today's large pacman -Syu which includes upgrades chromium, vlc, a new kernel and nvidia blob  and many others.  On rebooting I  see that:
    (1) The vlc video window persists across across virtual desktops (although its frame is lost away from the desktop on which it was launched). This is using icewm as my WM.
    (2) The content of chromium tabs persist in the same way.
    Is anybody else seeing this please?
    Last edited by perseus (2014-01-13 23:15:05)

    This is interesting.
    I'm using openbox and I have the same problem when playing StarCraft II under wine. Just to clarify, I use the nvidia-drivers.
    I start it on my second vdesktop*, tab to the first one.. persists. Tab back to 2, tab to 3 (all fine), tab to 1 and everything stays fine.
    So I'd have to switch to 3, then to 1 to cleanly access 1.
    What the heck is going on?
    *Virtual desktop as in workspace. They are defined within openbox config.
    Edit: No one in #archlinux seems to know anything so far.
    Another edit: It only seems to happen when firefox is open on the desktop I want to access. Turning hardware acceleration off doesn't change a thing though.
    Last edited by Jellicent (2014-01-14 18:56:51)

  • ARD from a Virtual Desktop?

    Hi,
    tested and still exists on ARD 3.7.2
    I'm trying to leapfrog from one machine to another, without disturbing a user, is that possible?
    I can login to another mavericks machine, and start a virtual desktop (login as "User2" with out interrupting user "User1" and view your desktop).
    That machine(Mac mini) has ARD installed on it, but when I try to run the application, nothing happens... it freezes up and needs to be force quit...
    If I am the primary account on the machine (Log in on the machine locally) then login via ARDI can launch the ARD application just fine (yes the "Allow control of this computer when running this application" is selected) so it is not an application failure...
    I know there are otherways to skin this cat, like using a VPN or other such, but why doesn't this method work?
    Thanks.
    HazM@

    I faced the same problem after I upgraded BI statistics flow to 7.x SAP Note 996735 provides a quick solution:
    Call transaction SE16 "Data Browser" for table RSDCUBE.
    In the selection screen, enter the name of the VirtualProvider for the INFOCUBE and enter the value 'M' for OBJVERS. Execute the selection.
    Change the selected data record by deleting the contents of field ISOURCE (InfoSource) and then save your change.
    Activate the VirtualProvider.
    Call transaction SE16 "Data Browser" for table RSOACUBE_LOGSYS.
    In the selection screen, enter the name of the VirtualProvider for INFOCUBE (InfoCube) and execute the selection.
    Select all lines that are displayed for this VirtualProvider and in the menu, choose "Table entry -> Delete all"
    cheers,
    Mathijs

  • VoiP with Virtual Desktops

    My company is switching over to VoiP with HUD and we are also looking into using the Virtual Desktops with existing PCs. Will the phone system work with VDI?

    Hi
    VDI is base in RDP or X11 protocol.
    With Windows 2003R2, the RDP sound is on way only. The RDP is not bidirectional yet.
    Microsoft plan to put is in Windows 2008R2 Server but is only roadmap.
    Best Regard's
    Marcelo Moreira Martins
    [email protected]
    Technical Consultant - Tarantella Systems Engineer
    SE- Systems Engineer - M3 System Integrator.
    Sun Microsystems do Brasil - Authorized Reseller
    VMware VIP Partner
    +55-51-3333-2644 - Porto Alegre Office
    +55 11-4063-6584 - SP
    +55-51-8167-9382 - Mobile Phone
    Visit the EduSoft web site: http://www.sun.com/edu/edusoft/

  • Pypanel and apps starting in another virtual desktop

    Hi, I began recently to use pypanel and I am liking it a lot. However I have a strange issue: if I am in a virtual desktop and launch an app in another virtual desktop (through a keybinding or from a terminal: let us say that the app is sent to the other virtual desktop by my openbox configuration file), then pypanel seems to be unable to detect it also when later I switch to that desktop: no window is displayed in the pypanel TASKS section. If I now kill pypanel and launch pypanel again then the windows are seen.
    Any suggestion?

    Curiously, if I switch to the desktop where the application has been launched and launch there any other app, then also the first app is seen in the pypanel TASKS section

  • Virtual desktops

    I have got two questions about gnome virtual desktops.
    Is it possible to have every application in the application bar anyway, even if they are in different desktop? The same for Alt-Tab, is it possible to make the application switcher switch between applications in different desktops?
    The second thing is more about compiz. I have the expo plugin activated, and it displays every desktop in a single row. Is it possible to make it display the desktops two 2 elements rows?
    Thanks,
    Francesco

    katzen wrote:
    hBd wrote:
    katzen wrote:
    I have got two questions about gnome virtual desktops.
    Is it possible to have every application in the application bar anyway, even if they are in different desktop?
    Yes. Window List (Right Click aka properties ) -> Preferences -> Show Windows From all Workspaces
    u cant alt + tab
    the compiz stuff aint know, coz i use just a few thing, and expo is not the one of them
    Thanks, but I can't find this menu...
    In system->preferences->windows there is no such menu
    Right click on the windows list (i.e. the taskbar) and click preferences.

Maybe you are looking for