#612 pcmanfm don't check "--display" parameter anymore

pcmanfm (107)

I have 2 monitors, xorg configured for 2 separate screens with separate X sessions (I mean, without TwinView or Xinerama). Version 1.0.1 pcmanfm drawing desktop on both screens by default (if you don't provide "--display") and don't count on "--display" parameter any more. So, there are no way to make pcmanfm work for only one display as desktop manager, you have none or dual.


    • milestone: 3086046 --> 1.2
    • priority: 5 --> 2
  • I believe it still honors --display but that option has no relation to your issue since it describes your session as whole (such as local one or remote one).
    And as for --screen option, the PCManFM just manages all available screens of your local session if run as desktop manager. It had to work so from the very start and if that wasn't so then it was probably broken.
    It is possible though to add some option to manage only one X screen if you need that behavior.

  • Ah, I read it wrong - you said separate X sessions. Have I read it right now - you mean different X servers and different logins but the same machine for the same user? I highly doubt it is possible to access different sessions in the same application at all since it's basic principle of any X application - it connects to some X session and works with it.
    And if you use one X server but with separate monitors those monitors exist inside of single display and are called screens. State when few monitors are merged into single screen is TwinView or Xinerama which you've mentioned earlier. That is the hierarchy.

  • viewizard

    Yes... different X servers but the same machine for the same user. I know about X server model, and I really don't know how pcmanfm could do this at all, I see one pcmanfm process and two pcmanfm desktops on different displays (yes, displays, not screens from one display).

    I have LXDE (with pcmanfm) for display 0.0 and openbox+tint2+feh for display 0.1
    All works like a charm with version 1.0 - pcmanfm cover only first display with desktop by default (display 0.0 in my case, with LXDE session), plus, I could use --display to manipulate which one display will use pcmanfm desktop and force it to 0.1 display instead of 0.0, for example.

    I tested 1.0.1 version a bit more, and fount one more thing. When I tryed change wallpaper with pcmanfm desktops on both displays, I got pcmanfm crash with error:

    The program 'pcmanfm' received an X Window System error.
    This probably reflects a bug in the program.
    The error was 'BadMatch (invalid parameter attributes)'.
    (Details: serial 11628 error_code 8 request_code 2 minor_code 0)
    (Note to programmers: normally, X errors are reported asynchronously;
    that is, you will receive the error a while after causing it.
    To debug your program, run it with the --sync command line
    option to change this behavior. You can then get a meaningful
    backtrace from your debugger if you break on the gdk_x_error() function.)

  • Thank you very much.
    Look, what was changed in 1.0.1. How it was before:

    Determine the display.
    For each screen in display:
    determine size of screen;
    manage that size.

    How it is now:

    Determine the display.
    For each screen in display:
    for each monitor of screen:
    determine size of monitor;
    manage that size.

    Since only change is determination of monitors for screen and that is done by call to XRandr/Xinerama part of XOrg server (see GDK sources) that bug is definitely is bug of XOrg. It can be either configuration bug or internal XOrg bug. In latter case that should be reported to them.

    And also your example tells me that was definitely a bug - display :0.1 means "display 0, screen 1", i.e. it IS another screen on the same display as :0.0 but it should have been :1.0 instead for another X server running and :0.1 should be never available in configuration with fully isolated monitors.

  • If you have debug enabled then you can see some messages like 'DEBUG: fm_desktop_constructor for monitor 0' in the log. It should only report that once for only the monitor(s) your session supports. In your case each running server should have exactly one monitor managed.

  • viewizard

    Ah... I finally got this idea, thanks a lot lstranger for your time and explanations! English is not my native, but I trying do my best.

    my xorg.conf generated by nvidia-settings, and looks clear for me. I have debug enabled in pcmanfm/libfm, and my output for separate screens configuration are:

    # pcmanfm --desktop --profile LXDE
    ** (pcmanfm:3841): DEBUG: fm_desktop_constructor for monitor 0
    ** (pcmanfm:3841): DEBUG: fm_desktop_constructor for monitor 0

    with xinerama or twinview screens configuration, output are:

    # pcmanfm --desktop --profile LXDE
    ** (pcmanfm:3841): DEBUG: fm_desktop_constructor for monitor 0
    ** (pcmanfm:3841): DEBUG: fm_desktop_constructor for monitor 1

    just figured out, that the pcmanfm with "--desktop" parameter using "--display" / "--screen" parameters now in different way instead of version 1.0, and I thought that was a bug ^_^ . I just think, that better fill false bug report than do nothing with possible real bug.

    Only one thing worried me now, how to hide desktop shortcut duplicates from second screen :-)

  • Russian is one of my native languaues so you can write in Russian as well if it's hard for you to write in English.
    And about your situation it's clear that your config gives you two screens for one display. I can add an option for pcmanfm '--one-screen' to manage only current screen if you need such behavior.
    To add a possibility do not show icons (and ignore drag&drop as well) for any of managed screens/desktops but let wallpaper still be managed is on my TODO list (and I've left a reminder in Feature Requests tracker too).

  • viewizard

    I think now, the main problem was my knowledge gap about X server, and a little bit was connected to English language.

    I know, most people are using xinerama or twinview, and they don't need this option, but, please, add '--one-screen' option if possible, for nuts like me with different environment for different screens. ^_^

  • I've added an option --one-screen into pcmanfm. Change is in Git. Please, test it thoroughly and tell me whether it works as you need. Thank you very much.

    • assigned_to: nobody --> lstranger
    • status: open --> pending-fixed
  • Change the status to Closed to know if you've tested it and found it fixed. Thank you.

    • status: pending-fixed --> closed-fixed