BSPWM, laptop has 1920x1080 resolution, external screen has 1680x1050. xrandr --output DP-1 1680x1050 cuts image, if I change resolution to 1920x1080, I get “full” image, but quality is just bad. I have another machine with XFCE, it’s display utility does the trick and I wonder can I achieve smth similar on BSPWM with some simple console command?

  • maybe I’m just one of very few that have external resolution lower than host

    You aren’t.

    How do you have your displays set up? Your xrandr command didn’t seem complete. You say you aren’t mirroring; are you then using both the laptop and external monitor at the same time? If so, I’d expect a command more like:

    xrandr \
      --output eDP1 --auto \
      --output DP-1 --auto --right-of eDP1 
    

    or if it’s really not auto-detecting⋮

    xrandr \
      --output eDP1 --mode 1920x1080 \
      --output DP-1 --mode 1680x1050 --right-of eDP1 
    

    Can you post your full xrandr command? Also, arandr and grandr can be a little easier to fiddle with if you’re trying to arrange things.

    • questionAskerOP
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      1 year ago

      I turn of internal display and enable external by script, I don’t use mirroring or extending

      Here is xrandr output:

      spoiler
      Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
      eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 309mm x 173mm
         1920x1080     60.00*+  59.97    59.96    59.93
         1680x1050     59.95    59.88
         1400x1050     59.98
         1600x900      59.99    59.94    59.95    59.82
         1280x1024     60.02
         1400x900      59.96    59.88
         1280x960      60.00
         1440x810      60.00    59.97
         1368x768      59.88    59.85
         1280x800      59.99    59.97    59.81    59.91
         1280x720      60.00    59.99    59.86    59.74
         1024x768      60.04    60.00
         960x720       60.00
         928x696       60.05
         896x672       60.01
         1024x576      59.95    59.96    59.90    59.82
         960x600       59.93    60.00
         960x540       59.96    59.99    59.63    59.82
         800x600       60.00    60.32    56.25
         840x525       60.01    59.88
         864x486       59.92    59.57
         700x525       59.98
         800x450       59.95    59.82
         640x512       60.02
         700x450       59.96    59.88
         640x480       60.00    59.94
         720x405       59.51    58.99
         684x384       59.88    59.85
         640x400       59.88    59.98
         640x360       59.86    59.83    59.84    59.32
         512x384       60.00
         512x288       60.00    59.92
         480x270       59.63    59.82
         400x300       60.32    56.34
         432x243       59.92    59.57
         320x240       60.05
         360x202       59.51    59.13
         320x180       59.84    59.32
      DP-1 connected (normal left inverted right x axis y axis)
         1680x1050     59.95 +
         1920x1080     60.00    50.00    59.94
         1920x1080i    60.00    50.00    59.94
         1600x1000     60.01
         1280x1024     75.02    60.02
         1440x900      59.90
         1280x960      60.00
         1152x864      75.00
         1280x720      60.00    50.00    59.94
         1152x720      59.97
         1024x768      75.03    60.00
         832x624       74.55
         800x600       75.00    60.32
         720x576       50.00
         720x480       60.00    59.94
         640x480       75.00    60.00    59.94
         720x400       70.08
      HDMI-1 disconnected (normal left inverted right x axis y axis)
      DP-2 disconnected (normal left inverted right x axis y axis)
      HDMI-2 disconnected (normal left inverted right x axis y axis)
      
      • questionAskerOP
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        1 year ago

        So I played around arandr and resolved initial issue…but got another one (as always). I added script to my bspwmrc file:

        if [[ $(xrandr -q | grep "DP-1 disconnected") ]];
        then
            xrandr --output eDP-1 --primary --mode 1920x1080 --pos 0x0 --rotate normal --output DP-1 --off --output HDMI-1 --off --output DP-2 --off --output HDMI-2 --off
            bspc monitor eDP-1 -d 1 2 3 4 5
        else
            xrandr --output eDP-1 --off --output DP-1 --mode 1680x1050 --pos 0x0 --rotate normal --output HDMI-1 --off --output DP-2 --off --output HDMI-2 --off
            bspc monitor DP-1 -d  1 2 3 4 5
        fi
        

        So if i plug external monitor and reload bspwm (which also reloads polybar), it adds second pane to my polybar (1 2 3 4 5 1 2 3 4 5), but works.

        Now smth interesting, when I unplug external monitor and then again reload bspwm, it switches to internal one but now cuts window for every application.

        • Question 1: how to get rid of multiple workspaces on polybar when I toggle external monitor?
        • Question 2: how to force bspwm respect resolution after switching resolutions?
        • Great! Looks like progress.

          I do suggest looking at autorandr (or similar). autorandr stores your X geometry as profiles, and can detect changes and run scripts.

          I haven’t used bspwm in a long while; I ended up preferring herbstluftwm, but IIRC you have to tell bspwm to configure each screen and delete unused workspaces when you change. It felt more fussy to me, which is why I landed on hlwm.

          Anyway, try adding a line to tell bspwm to “remove” the monitors you aren’t using. It doesn’t detect and remove these itself. Add the lines (after your desktop DP-1 -d setting:

          bspc monitor eDP-1 -r
          bspc wm -o
          

          Swap out eDP-1 with DP-1 when going in the other direction.

          The bspc wm -o is pretty important; it tells bspwm to re-lay everything out (or, at least, that’s what I guess it’s doing). In any case, it fixed a lot of issues when I ran it when changing layouts.

          I found the bspwm community to be largely unhelpful, and containing some caustic people. It very much has a “give a man a fish” mentality. Given how fussy the wm itself is, even after quite an amount of time scripting it, I still felt as if I were casting about most of the time, getting things right only by trial and error, and not being able to reliably predict how my commands would affect the wm.

          If you find yourself in this situation, try herbstluftwm. The community is more helpful, and the WM itself seems more intuitive. For instance, while it allows you to define virtual monitors, it does require fewer commands to deal with physical monitor change events. You still get the “all configuration is done with commands”, but it seems more… sane and consistent. It’s just my opinion, but I appreciate the WM, whereas with bspwm I just felt like I was fighting it all the time.

          • questionAskerOP
            link
            fedilink
            arrow-up
            1
            ·
            edit-2
            1 year ago

            Sir, you are magician, addition to script did the trick!

            Will definitely play with autorandr, because if I understood you correctly, it can automatically reload bspwm listening to certain events.

            Right now I’m trying master (or understand, at least) QEMU, can you recommend me some combination with sane defaults (for ex mint + installer for herb) I can play on vm?

            Thank you!

              • questionAskerOP
                link
                fedilink
                arrow-up
                1
                ·
                1 year ago

                Yes.

                It’s easy way to learn things without fear to break something, can herbstluftwm use sxhkd?

                Easily but why?