Windows Rules (Shuffler) doesn't seem to work

I’ve just moved to Ubuntu Budgie after having plasma issues with kubuntu.
I’m running Budgie 21:04 and i’m looking to setup applications to launch on login to set workspaces and monitors. ie Firefox - display 1, workspace 1, Terminal - display 2, workspace 1 etc. By default having firefox launching in startup automatically is in display 1 and workspace 1 so nothing to do on that one. Terminal will also launch in Display 1. Windows Shuffler Daemon is enabled and I have set up windows shuffler for gnome-terminal as follows:

Enable Window Shuffler - Enabled
Enable Window Shuffler Grid - Enabled
Enable Window Layouts - Enabled

Swap windows - Enabled
Enable animation - Enabled
Show notification on incorrect window size - Enabled

Grid: columns & rows
Columns - 10
Rows - 10

Setup Layouts
Layout name - Start positions
Window Tasks - Terminal
Application
Command* - gnome-terminal
WM class group - gnome-terminal
Window name -

 Window position & size
   Grid size; column & rows    - 10:10
   Target window position, x/y - 1:1
   Window cell span, hor/vert  - 8:7
 Miscellaneous
   Target monitor - DP-1-2
   Try to move existing window - Enabled

Tests as expected.

If I launch gnome-terminal either manually or in startup it still defaults to display 1 and size & position is also ignored.

Have I missed a setting somewhere to make this work?

Just to check - you are definitely running gnome-terminal? i.e. the default for UB 21.04 is tilix not gnome-terminal.

I think you are mixing up rules with Layouts. Defining how new windows of a certain application are positioned is a rule. Rules has no GUI yet, but I can guide you how to setup.
Layouts is the ability to launch a set of window into a layout. To run a layout, press Super + Alt + L and pick the layout you created.

Yep, I installed gnome-terminal as I just prefer it.

Many thanks for your feedback. My understanding was off the mark.
Super + Alt + L works for the Layout but if there is a way to set Rules, I would appreciate some guidance.

Sure,

  1. Create the directory ~/.config/budgie-extras/shuffler/windowrules

  2. Create a file containing these fields:

    XPosition=0
    YPosition=0
    Cols=2
    Rows=2
    XSpan=1
    YSpan=1
    Monitor=HDMI-1
    

    Save it, named after the WM class of the application’s windows, like: gedit.windowrule
    NB: the fields refer to grid positions & sizes, not px positions!

  3. Now let’s switch rules on:

    gsettings set org.ubuntubudgie.windowshuffler windowrules true
    

This example will make new gedit windows open in topleft quarter, on monitor HDMI-1. Any changes you make to the .windowrule file, or any new file, will be applied immediately.

Thanks for the input. Unfortunately it didn’t work. I used the same settings but as well as HDMI-1 I also tried DP-1-1 & DP-1-2 which are how they are in the shuffler layout. I used gnome-terminal and saved the file as gnome-terminal.windowrule, then ran gsettings set org.ubuntubudgie.windowshuffler windowrules true

Could you show me the exact content of the file, the names of the monitors as well as the wm-class? (open a terminal, type xprop WM_CLASS, press return and click on a gnome-terminal window).

oh, and the output of gsettings get org.ubuntubudgie.windowshuffler windowrules

nvm, gnome-terminal has Gnome-terminal as WM class, so you need to name the file Gnome-terminal.windowrule

(mind the capital G)

As requested:

les@Esub:~$ xprop WM_CLASS
WM_CLASS(STRING) = “gnome-terminal-server”, “Gnome-terminal”

les@Esub:~/.config/budgie-extras/shuffler/rules$ gsettings set org.ubuntubudgie.windowshuffler windowrules
Usage:
gsettings [–schemadir SCHEMADIR] set SCHEMA[:PATH] KEY VALUE

Set the value of KEY to VALUE

Arguments:
SCHEMADIR A directory to search for additional schemas
SCHEMA The name of the schema
PATH The path, for relocatable schemas
KEY The key within the schema
VALUE The value to set

gsettings set org.ubuntubudgie.windowshuffler windowrules true I get no output.
I’ve changed the file name to Gnome-terminal.windowrule and still no joy.

YPosition=1
Cols=5
Rows=5
XSpan=4
YSpan=5
Monitor=DP-1-2

Hi kuabi, two things:

  • You need to include the XPosition field, else shuffler will not know where to throw the window
  • The requested command was gsettings get org.ubuntubudgie.windowshuffler windowrules ← mind the get this time, to see if rules is on :slight_smile:

Also mind that if you set YSpan=5, YPosition=1 needs to be set to 0.

Apologies, the missing XPosition was a bad copy.

GNU nano 5.4 Gnome-terminal.windowrule
XPosition=0
YPosition=0
Cols=5
Rows=5
XSpan=4
YSpan=5
Monitor=DP-1-1

les@Esub:~/.config/budgie-extras/shuffler/rules$ gsettings get org.ubuntubudgie.windowshuffler windowrules
true

Still no joy

Works perfectly here…

Could you try to log out/in?

Not sure what the issue is here. Just tried logout and back in but still no change. Maybe it’s just a display port issue though it see’s it ok in the layout.

I need to go work now… The joys, so i’ll look at it again tomorrow.

Thanks for your help.

Silly question, but you saved the file in ~/.config/budgie-extras/shuffler/rules right?

Good morning vlijm

I have:
les@Esub:~$ ls .config/budgie-extras/shuffler/rules/
Gnome-terminal.windowrule

wait, should be in ~/.config, not in .config

ls was from my home dir, so .config should be correct

les@Esub:~$ ls ~/.config/budgie-extras/shuffler/rules/
Gnome-terminal.windowrule

ls .config/budgie-extras/shuffler/rules/
Gnome-terminal.windowrule

Same location

Ah, silly, was on the phone, my bad. It’s too early in the morning.