LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   xdm-slackware-theme multimonitor can't see Button_Bar? (https://www.linuxquestions.org/questions/slackware-14/xdm-slackware-theme-multimonitor-cant-see-button_bar-4175643432/)

bamunds 11-30-2018 04:07 PM

xdm-slackware-theme multimonitor can't see Button_Bar?
 
After successfully installing xdm-slackware-theme-2018.1026 on my Slackware64-14.2 there are two issues which the documentation doesn't cover that I need help. Both are related to multi-monitors of different resolutions. One of my monitors is an HP 2009m, which is 1600x900 the other is a Dell 19" with 1280x1024. The HP is setup as the default monitor. I use nouveau as graphics driver for a NVIDI GS8400. The XDM login screen appears on the HP. I don't use an Xorg.conf (maybe I should), but rely instead on the Xorg self detecting and setting the required resolutions. XDM properly starts up and shows the clock and login box (with beautiful Slackware logo), but I don't see the button bar on the bottom. I wonder if Xorg and the Xsetup script of the package is picking the wrong screen for AXIS measuring.

Will I need to use an Xorg.conf so XDM can properly show the buttons?

The second issue is the documentation is somewhat confusing about the background image. In one place it says that only the images in the /pixmap directory can be used. In another it says to setup the background image by using an included script to generate the image. Can't I simply create a pic with imagemagik and put it in /pixmap and then change the symlink?

Thanks for any help.
Thanks phenixia2003 for the slackpkg to start.
Cheers.

phenixia2003 12-01-2018 05:53 AM

Hello,

Quote:

Originally Posted by bamunds (Post 5932038)
After successfully installing xdm-slackware-theme-2018.1026 on my Slackware64-14.2 there are two issues which the documentation doesn't cover that I need help. Both are related to multi-monitors of different resolutions. One of my monitors is an HP 2009m, which is 1600x900 the other is a Dell 19" with 1280x1024. The HP is setup as the default monitor. I use nouveau as graphics driver for a NVIDI GS8400. The XDM login screen appears on the HP. I don't use an Xorg.conf (maybe I should), but rely instead on the Xorg self detecting and setting the required resolutions. XDM properly starts up and shows the clock and login box (with beautiful Slackware logo), but I don't see the button bar on the bottom. I wonder if Xorg and the Xsetup script of the package is picking the wrong screen for AXIS measuring.

Will I need to use an Xorg.conf so XDM can properly show the buttons?

I have the same configuration as you (1st monitor 1920x1080, 2nd 1280x1024) and had encountered that issue when I implemented xdm-slackware-theme. To fix this, you need to create a file named 10-monitors.conf (or whatever you want) in /etc/X11/xorg.conf.d with a content like as below :

Code:

Section "Monitor"
  Identifier "<ID-OF-PRIMARY-MONITORY>"
  Option "Primary" "true"
EndSection

Section "Monitor"
  Identifier "<ID-OF-SECONDARY-MONITORY>"
  Option "RightOf" "<ID-OF-PRIMARY-MONITORY>"
EndSection

Attention, do not forget to change the identifiers <ID-OF-PRIMARY-MONITORY> and <ID-OF-SECONDARY-MONITORY> to match the identifiers of your monitors. You'll find them by running xrandr (in bold in example below) :
Code:

$ xrandr -q | grep -w connected
Screen 0: minimum 8 x 8, current 3200 x 1080, maximum 16384 x 16384
VGA-0 connected 1280x1024+1920+0 (normal left inverted right x axis y axis) 338mm x 270mm
DVI-D-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 287mm

For reference, my /etc/X11/xorg.conf.d/10-monitors.conf is as below :
Code:

Section "Monitor"
  Identifier "DVI-D-0"
  Option "Primary" "true"
EndSection

Section "Monitor"
  Identifier "VGA-0"
  Option "RightOf" "DVI-D-0"
EndSection

If you have trouble with this, post the output of xrandr.

Note: To force XDM to use only the primary monitor, open /etc/X11/xdm/slackware/Xsetup.conf then set PRIMARY_ONLY to 1.

Quote:

Originally Posted by bamunds (Post 5932038)
The second issue is the documentation is somewhat confusing about the background image. In one place it says that only the images in the /pixmap directory can be used.

Show me where so that I could correct it.

Quote:

Originally Posted by bamunds (Post 5932038)
In another it says to setup the background image by using an included script to generate the image. Can't I simply create a pic with imagemagik and put it in /pixmap and then change the symlink?

You can :
  • put any image you want in .../pixmaps then change the symlink default-wallpaper.pixmap
  • change the symlink default-wallpaper.pixmap to point to any image you want, even if it is not in .../pixmaps directory.
  • you can specify the full path of the image you want through the variable XDMBGIMG declared in /etc/X11/xdm/slackware/Xsetup.conf

Hope this helps.

--
SeB

bamunds 12-01-2018 12:13 PM

Hi! Thanks for the timely response. I've tried to implement the suggested file, but it doesn't seem to make a difference, because I still can't see the Button Bar. The configurations are slightly different, the primary screen is 1600x900 and screen 0 maximums are different. But it has not solved the problem, even after a full reboot, although a simple init 3, then init 4 should have resolved starting and stopping Xorg.

Xrandr reports:
Code:

bash-4.3$ xrandr -q | grep connected
DVI-I-1 connected primary 1600x900+0+0 (normal left inverted right x axis y axis) 443mm x 250mm
VGA-1 connected 1280x1024+1600+0 (normal left inverted right x axis y axis) 376mm x 301mm
bash-4.3$

I've used the following:
Code:

bash-4.3$ cat /etc/X11/xorg.conf.d/10-monitors.conf
Section "Monitor"
  Identifier "DVI-I-1"
  Option "Primary" "true"
EndSection

Section "Monitor"
  Identifier "VGA-1"
  Option "RightOf" "DVI-I-1"
EndSection
base-4.3$

Any thoughts on why my 10-monitors.conf isn't working? Maybe I need to specify the screen size specifically? I don't have a very good Xorg understanding.

In looking at the Xorg and Xorg.conf man pages I think the real issue is that the button bar is on the bottom of the DVI connected monitor, which is 124 lines fewer than the VGA monitor so it simply isn't appearing due to the total size of the single screen is getting calculated by total rows and largest number of lines,
(note Screen 0 is saying current 2880 x 1024 in the xrandr output below
Code:

 
bash-4.3$ xrandr
Screen 0: minimum 320 x 200, current 2880 x 1024, maximum 8192 x 8192
DVI-I-1 connected primary 1600x900+0+0 (normal left inverted right x axis y axis) 443mm x 250mm
  1600x900      60.00*+
  1280x1024    60.02 
  1024x768      60.00 
  800x600      60.32 
  640x480      59.94 
  720x400      70.08 
VGA-1 connected 1280x1024+1600+0 (normal left inverted right x axis y axis) 376mm x 301mm
  1280x1024    60.02*+  75.02 
  1152x864      75.00 
  1024x768      75.03    60.00 
  800x600      75.00    60.32 
  640x480      75.00    59.94 
  720x400      70.08 
bash-4.3$ xrandr -v
xrandr program version      1.5.0
Server reports RandR version 1.5
bash-4.3$

I'm going to investigate if there is a way to have the button bar appear at the top instead and run clock. I have a similar issue with FVWM panel length always looses the lower clock and date (so I moved it to the top) because the DVI is only 900 and the VGA is 1024 lines so a right panel on the DVI primary display looses the bottom 124 lines. Maybe Xrandr can't handle the different size resolutions correctly without a xorg.conf that connects two different size monitors with a Screen section to connect them?

I also tried to place a different jpg into the /pixmap and changed the symlink. Results were not good. The jpg was only showing the upper part of the jpg, although it was across both screens. I notice the included jpg's are 1600 x 1000, while mine was 2048x1024. Switching my jpg to 1600x1000 resolved the issue of background display.

I'll keep updating this thread as progress with Xorg.conf and Screen is accomplished.

phenixia2003 12-02-2018 05:02 AM

2 Attachment(s)
Quote:

Originally Posted by bamunds (Post 5932249)
Any thoughts on why my 10-monitors.conf isn't working? Maybe I need to specify the screen size specifically? I don't have a very good Xorg understanding.

In looking at the Xorg and Xorg.conf man pages I think the real issue is that the button bar is on the bottom of the DVI connected monitor, which is 124 lines fewer than the VGA monitor so it simply isn't appearing due to the total size of the single screen is getting calculated by total rows and largest number of lines,
(note Screen 0 is saying current 2880 x 1024 in the xrandr output below

Oops, I didn't noticed your primary monitor resolution (in Y) is less than to the other. With such a configuration, the button bar is not visible because of the way xinerama works. If you swap your monitors (in configuration file 10-monitors.conf), the button bar will be visible but I guess you don't want to do that.

Quote:

Originally Posted by bamunds (Post 5932249)
I'm going to investigate if there is a way to have the button bar appear at the top instead and run clock.

I think the easiest would simply to run XDM on the primary screen only by setting PRIMARY_ONLY=1 in /etc/X11/xdm/slackware/Xsetup.conf. However, if you really want to have XDM background expanded on both screens with the button bar on top, here is how to do that :

1. Open /etc/X11/xdm/slackware/Xresources, then :

a. Change :
Code:

Xmessage.geometry: 500x34+0-0
by :

Code:

Xmessage.geometry: 500x34+0+0
This moves the buttons bar on top of screen.


b. Change :
Code:

XClock.geometry: 320x34+0+0
by :

Code:

XClock.geometry: 240x34-0+0
This moves xclock (when used) on upper right corner.
2. Open /etc/X11/xdm/slackware/Xsetup, then, in function set_background(), change :

Code:

OPTS="${OPTS} --bottom-border ${BORDERSIZE}"
by :
Code:

OPTS="${OPTS} --top-border ${BORDERSIZE}"
This is to enable border (on top) when the buttons bar is enabled.
3. Open /etc/X11/xdm/slackware/Xsetup.conf, then :

a. Change :
Code:

--offset-v=16
by :
Code:

--offset-v=52
This is to prevent xonclock (when used) to overlap the buttons bar (when on top).

b. Change :
Code:

"--yposition" "16"
by :
Code:

"--yposition" "52"
This is to prevent cairo-clock (when used) to overlap the buttons bar (when on top).

With this new configuration, you should have something like this:

a. With xclock

Attachment 29080

b. With cairo-clock
Attachment 29081
Quote:

Originally Posted by bamunds (Post 5932249)
I also tried to place a different jpg into the /pixmap and changed the symlink. Results were not good. The jpg was only showing the upper part of the jpg, although it was across both screens.

This is because /usr/bin/setxdmbg (called by /etc/X11/xdm/slackware/Xsetup to set the background) always preserve the ratio of the specified image to prevent distortion.

Hope this helps.

--
Seb

bamunds 12-02-2018 07:51 AM

Wow! Thank you SeB for the wonderful tutorial on resolving my specific issue in multiple ways. This is what I love about the Slackware community, that it is willing to help others who are learning Linux still. I'm not sure why I have the monitors oriented the way they are. Since my desk faces a corner it is probably because there is a window above the 1600x900 and a wall behind the 1280x1024 and this way I'm facing the window more than the wall when using the primary screen.

I'll make the changes after going to mass this morning for 1st Advent and then report back. Cheers BrianA_MN

allend 12-02-2018 10:14 AM

@phenixia2003 has shown how to move the missing information, but I think this is better addressed at the driver level.
Quote:

I use nouveau as graphics driver
I suggest adding "ZaphodHeads" options into your xorg.conf tree. For further information
I use a monolithic /etc/X11/xorg.conf, that defaults to Layout0, but that I change as required by running 'startx -- -layout Layout<number>'.
Code:

Section "ServerFlags"
    Option        "DefaultServerLayout" "Layout0"
EndSection

Section "ServerLayout"
    Identifier    "Layout0"
    Screen      0  "Screen0" 0 0
EndSection

Section "ServerLayout"
    Identifier    "Layout1"
    Screen      0  "Screen1" 0 0
EndSection

Section "ServerLayout"
    Identifier    "Layout2"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen2" RightOf "Screen0"
EndSection

Section "ServerLayout"
    Identifier    "Layout3"
    Screen      0  "Screen3"
    Option        "Xinerama" "True"
EndSection

Section "Device"
    Identifier    "Device0"
    Driver        "nouveau"
    BusID          "PCI:1:0:0"
    Screen          0
    Option        "ZaphodHeads" "DVI-I-1"
EndSection

Section "Device"
    Identifier    "Device1"
    Driver        "nouveau"
    BusID          "PCI:1:0:0"
    Screen          0
    Option        "ZaphodHeads" "VGA-1"
EndSection

Section "Device"
    Identifier    "Device2"
    Driver        "nouveau"
    BusID          "PCI:1:0:0"
    Screen          1
    Option        "ZaphodHeads" "VGA-1"
EndSection

Section "Device"
    Identifier    "Device3"
    Driver        "nouveau"
    BusID          "PCI:1:0:0"
    Option        "ZaphodHeads" "VGA-1,DVI-I-1"
EndSection

Section "Screen"
    Identifier    "Screen0"
    Device        "Device0"
    Monitor        "Separate-DVI-I-1"
    DefaultDepth    24
    SubSection    "Display"
        Depth      24
    EndSubSection
EndSection

Section "Screen"
    Identifier    "Screen1"
    Device        "Device1"
    Monitor        "Separate-VGA-1"
    DefaultDepth    24
    SubSection    "Display"
        Depth      24
    EndSubSection
EndSection

Section "Screen"
    Identifier    "Screen2"
    Device        "Device2"
    Monitor        "Separate-VGA-1"
    DefaultDepth    24
    SubSection    "Display"
        Depth      24
    EndSubSection
EndSection

Section "Screen"
    Identifier    "Screen3"
    Device        "Device3"
    DefaultDepth    24
    SubSection    "Display"
        Depth      24
    EndSubSection
EndSection

Section "Monitor"
    Identifier    "Separate-DVI-I-1"
    Modeline "1280x1024_60.0"  108.00  1280 1328 1440 1688  1024 1025 1028 1066 +hsync +vsync
    Option        "Primary" "true"
EndSection

Section "Monitor"
    Identifier    "Separate-VGA-1"
    Modeline "1920x1080_60.0"  148.50  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync
EndSection

Section "Monitor"
    Identifier    "DVI-I-1"
    Modeline "1280x1024_60.0"  108.00  1280 1328 1440 1688  1024 1025 1028 1066 +hsync +vsync
EndSection

Section "Monitor"
    Identifier    "VGA-1"
    Modeline "1920x1080_60.0"  148.50  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync
EndSection

The BusID and Modeline settings will need to be adjusted to suit your setup.
Be aware that the KDE and XFCE desktop environments do not always respect settings in the xorg.conf tree.

bamunds 12-02-2018 09:39 PM

@allend Thanks for sharing your configuration and the idea of ZaphodHead. It seems your two displays are closely the same dimension vertically. The two displays I'm working with are not. Also the setup is for a desktop which really doesn't change much. But it did give me ideas to consider after experimenting more with SeB's suggestions.

@phenixia2003 So obviously these two display formats are unmatched for optimal resolution use on both. Although there are sub-optimal resolution options that come close to matching vertically then images are distorted on one display, depending on which is given the sub-optimal format.

Trying the Primary_Only=1 should have worked, but it didn't, While I saw the bottom border there were no buttons showing. If I change the VGA-1 to 1152x864 then the logout of FVWM the bottom buttons show until I login in and out again. I'm wondering if there is a way to have the setting only during xdm and then allow the displays to revert to their optimal after login. I'll play some more. I'm also planning to try moving everything to the top line, which should resolve the issue, thanks for those configuration settings. Cheers.

bamunds 12-03-2018 09:04 AM

Just an update.... I've made the changes recommended by phenixia2003 for the buttons and xclock on the top line and everything is working correctly. The background images are excellent and I particularly like the Coumo river picture. Thank you! I'm going to mark this solved now. Cheers BrianA_MN

bamunds 02-26-2019 03:57 PM

If you want fast user switching to also work within XFCE, FVWM, or WM (maybe even KDE) then please see the solution I have found in this post.
https://www.linuxquestions.org/quest...ng-4175630606/.

I have moved on to SDDM because it is managing the memory usage of Xorg better than XDM. I found that XOrg was constantly growing with each session login and logout. Found this mentioned on some forums and no one had a solution. SDDM has some great features that XDM lacks, like a WM/DE selector on the screen, rather than remembering which F4-8 to press for each of them (hint read the man page).

Cheers.

GazL 02-27-2019 03:10 AM

Quote:

Originally Posted by bamunds (Post 5967333)
I have moved on to SDDM because it is managing the memory usage of Xorg better than XDM. I found that XOrg was constantly growing with each session login and logout. Found this mentioned on some forums and no one had a solution.

You should have asked here. ;)
DisplayManager*terminateServer: true


The session-selection stuff in xdm is a bit of a hidden feature. It's sufficient for me, however.

bamunds 02-27-2019 10:16 AM

Where would this go in XDM's configuration?

I'm all for using what PV supplies, it is all that is needed normally. It was just that I could see XOrg expanding and couldn't determine why.

phenixia2003 02-27-2019 12:00 PM

Hello,

Quote:

Originally Posted by bamunds (Post 5967678)
Where would this go in XDM's configuration?

in /etc/X11/xdm/xdm-config

--
SeB

bamunds 02-27-2019 07:56 PM

@phenixia2003. Did you mean in /etc/X11/xdm/slackware/xdm-config?
I read the xdm man pages about DisplayManager*terminateServer:true. According to the man page xdm will use the Xreset file to reset the server after logout of a "session" and restart the whole process again. This actually terminates the server, but isn't that what a reset also does?

I'm also not exactly sure where to place it in the xdm-config? At the beginning or the end or someplace in between, the man page isn't specific with an example. Will this limit the ability to "switch user" between tty7 and tty8? I'll have to test this tomorrow. Thanks.

Alien Bob 02-28-2019 04:47 AM

Quote:

Originally Posted by bamunds (Post 5967919)
@phenixia2003. Did you mean in /etc/X11/xdm/slackware/xdm-config?
I read the xdm man pages about DisplayManager*terminateServer:true. According to the man page xdm will use the Xreset file to reset the server after logout of a "session" and restart the whole process again. This actually terminates the server, but isn't that what a reset also does?

I'm also not exactly sure where to place it in the xdm-config? At the beginning or the end or someplace in between, the man page isn't specific with an example. Will this limit the ability to "switch user" between tty7 and tty8? I'll have to test this tomorrow. Thanks.

From the XDM man page:

Code:

DisplayManager.DISPLAY.reset
              This  specifies  a program which is run (as root) after the session terminates.  By
              default, no program is run.  The conventional name  is  Xreset.  See  the  section
              Reset Program.

Code:

      DisplayManager.DISPLAY.terminateServer
              This  boolean  resource  specifies whether the X server should be terminated when a
              session terminates (instead of resetting it).  This option can  be  used  when  the
              server  tends to grow without bound over time, in order to limit the amount of time
              the server is run.  The default value is ``false.''

Code:

RESET PROGRAM
      Symmetrical with Xstartup, the Xreset script is run after the user session has terminated.
      Run  as  root,  it  should contain commands that undo the effects of commands in Xstartup,
      updating entries in utmp or wtmp files, or unmounting directories from file servers.  The
      environment variables that were passed to Xstartup are also passed to Xreset.

      A sample Xreset script:
            #!/bin/sh
            #
            # Xreset
            #
            # This program is run as root after the session ends
            #
            sessreg -d -l $DISPLAY -x /etc/X11/xdm/Xservers $LOGNAME
            /etc/X11/xdm/TakeConsole
            exit 0

That contradicts your assumptions. The XReset program is not configured in Slackware's XDM. The 'X reset' is a administrative reset if you want. It does not actually terminate the X server process. The terminateServer connfig line does.

bamunds 02-28-2019 09:23 AM

@AlienBob, Hi and thanks for the information.

I noticed that the /etc/X11/xdm/slackware directory didn't have an Xreset in the folder. The xdm-config in that folder does have the proper reference to /etc/X11/xdm/Xreset. Would it make more sense to put the terminateServer statement in the Xreset file?

I also found that when switching back to XDM versus SDDM that the "switch user" functions referenced in post #9 above no longer function. Ie. the XFCE and KDE switch user options no longer work and the /usr/local/bin/usrchg file created no longer function. If run from a terminal I get the following:

Code:

bash-4.3$ qdbus --system org.freedesktop.DisplayManager /org/freedesktop/DisplayManager/Seat0.org freedesktop.DisplayManager.Seat.SwitchToGreeter
Path '/org/freedesktop/DisplayManager/Seat0.org' is not a valid path name.

Doesn't XDM use DisplayManager?


All times are GMT -5. The time now is 11:39 AM.