# Special workspace -\> normal workspace

**URL:** <http://forum.hypr.land/t/special-workspace-normal-workspace/1683>\
**Category:** Ricing\
**Tags:** question, help, window-management\
**Created:** [June 14, 2026, 5:19pm UTC](http://forum.hypr.land/t/special-workspace-normal-workspace/1683 "2026-06-14T17:19:30Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![derxen](http://forum.hypr.land/letter_avatar_proxy/v4/letter/d/e274bd/32.png) [@derxen](http://forum.hypr.land/u/derxen)\
**Post date:** [June 14, 2026, 5:19pm UTC](http://forum.hypr.land/t/special-workspace-normal-workspace/1683/1 "2026-06-14T17:19:30Z")

</div>

I am considering putting my file manager on a dedicated special workspace. But I want the files I open via the file manager to open on the normal workspace underneath the special workspace. Is that possible?

---

<div class="post-metadata">

**Author:** ![Armory0678](http://forum.hypr.land/letter_avatar_proxy/v4/letter/a/8491ac/32.png) [@Armory0678](http://forum.hypr.land/u/Armory0678)\
**Post date:** [June 15, 2026, 10:00am UTC](http://forum.hypr.land/t/special-workspace-normal-workspace/1683/2 "2026-06-15T10:00:16Z")

</div>

I’m not sure if you could do it when opening the window because I don’t know how file managers open files usually, but you could try setting up [window rules](https://wiki.hypr.land/Configuring/Basics/Window-Rules/) for either whatever opens your files, or everything other than your file manager to **not** open in your special workspace.

---

<div class="post-metadata">

**Author:** ![derxen](http://forum.hypr.land/letter_avatar_proxy/v4/letter/d/e274bd/32.png) [@derxen](http://forum.hypr.land/u/derxen)\
**Post date:** [June 15, 2026, 5:22pm UTC](http://forum.hypr.land/t/special-workspace-normal-workspace/1683/3 "2026-06-15T17:22:39Z")

</div>

Thanks, I’ll give that a try.

---

<div class="post-metadata">

**Author:** ![derxen](http://forum.hypr.land/letter_avatar_proxy/v4/letter/d/e274bd/32.png) [@derxen](http://forum.hypr.land/u/derxen)\
**Post date:** [June 15, 2026, 6:31pm UTC](http://forum.hypr.land/t/special-workspace-normal-workspace/1683/4 "2026-06-15T18:31:53Z")

</div>

And the result is bizarre. Here is what I did:

```auto
hl.window_rule({
    name = thunar_rule,
    match = {
        class = "negative:thunar"
    },
    workspace = "special:thunar[false]"
})

```

And files I open from thunar do not open in the special workspace. Just what I wanted. But when I toggle the special workspace with thunar again, the document (a pdf for example) disappears, nowhere to be found on any of the workspaces. Then when I open another file from thunar, that document appears and the first document reappears too. As if what is opened from thunar on the special workspace somehow remains connected to it.  
Thoughts?

---

<div class="post-metadata">

**Author:** ![Armory0678](http://forum.hypr.land/letter_avatar_proxy/v4/letter/a/8491ac/32.png) [@Armory0678](http://forum.hypr.land/u/Armory0678)\
**Post date:** [June 16, 2026, 8:55am UTC](http://forum.hypr.land/t/special-workspace-normal-workspace/1683/5 "2026-06-16T08:55:34Z")

</div>

> [@derxen](#):
>
> Thoughts?

That’s the weirdest thing I’ve ever heard happen. Try and find out where the file goes (after it disappeared) with `hyprctl clients`, it should tell you the workspace it’s at.

---

<div class="post-metadata">

**Author:** ![sanjay](http://forum.hypr.land/letter_avatar_proxy/v4/letter/s/58956e/32.png) [@sanjay](http://forum.hypr.land/u/sanjay)\
**Post date:** [June 16, 2026, 11:40am UTC](http://forum.hypr.land/t/special-workspace-normal-workspace/1683/6 "2026-06-16T11:40:51Z")

</div>

Probably I need to try your case, but I’m using nemo should not be a big difference. But configuring it with `window.open` or `window.open_early` should do it. I will update this later.

Reference : [Expanding functionality – Hyprland Wiki](https://wiki.hypr.land/Configuring/Advanced-and-Cool/Expanding-functionality/)

did I just figured it out ? One of the example is

```auto
hl.bind("SUPER + X", function()
  local w = hl.get_active_window()
  if w ~= nil and w.title == "htop" do
    hl.dispatch(hl.dsp.window.float({ action = "set" }))
  else
    hl.dispatch(hl.dsp.window.float({ action = "toggle" }))
  end
end)

```

and my own keybinding

```auto
hl.bind(mainMod .. " + SHIFT + 0", function()
	local active_workspace = hl.get_active_workspace().id
	hl.dispatch(hl.dsp.window.move({ workspace = active_workspace }))
end)

```

But now can we do it like this

```auto
hl.on ("window.open",function()
	local w = hl.get_active_window()
	local a = hl.get_active_workspace()
	if w.initial_title ~= "Home" and w.class ~= "nemo" and w.initial_title ~= nil and w.class ~= nil then
		hl.dispatch(hl.dsp.window.move({ workspace = a.id }))
	end
end)

```

I have tested this it works, I’m pretty sure you are good with my keybindings than that `hl.on` 🫣.

At one point I realise making use of tables and comparing over for loop is the best choice.

---

<div class="post-metadata">

**Author:** ![derxen](http://forum.hypr.land/letter_avatar_proxy/v4/letter/d/e274bd/32.png) [@derxen](http://forum.hypr.land/u/derxen)\
**Post date:** [June 16, 2026, 7:59pm UTC](http://forum.hypr.land/t/special-workspace-normal-workspace/1683/7 "2026-06-16T19:59:05Z")

</div>

It’s even stranger than I thought. A document I open from thunar with these settings ends up on workspace -97, special:thunar[false]. when I toggle thunar, the document disappears, but it is still listed as being on workspace -97, special:thunar[false]. Then if I toggle my terminal, which is on its own special workspace, that too is listed as being on workspace -97, special:thunar[false], and: the document reappears too, behind the terminal. Meanwhile, thunar remains on its own workspace -98, special:thunar.

---

<div class="post-metadata">

**Author:** ![derxen](http://forum.hypr.land/letter_avatar_proxy/v4/letter/d/e274bd/32.png) [@derxen](http://forum.hypr.land/u/derxen)\
**Post date:** [June 17, 2026, 8:01am UTC](http://forum.hypr.land/t/special-workspace-normal-workspace/1683/8 "2026-06-17T08:01:40Z")

</div>

Thanks, Sanjay. I’m not a hyprland expert, but do I understand correctly that you used your keybinding to move windows opened by nemo from the special workspace to the workspace underneath? And that the new hl.on automatically moves any window opened by nemo to the workspace underneath?

---

<div class="post-metadata">

**Author:** ![sanjay](http://forum.hypr.land/letter_avatar_proxy/v4/letter/s/58956e/32.png) [@sanjay](http://forum.hypr.land/u/sanjay)\
**Post date:** [June 18, 2026, 6:30pm UTC](http://forum.hypr.land/t/special-workspace-normal-workspace/1683/9 "2026-06-18T18:30:52Z")

</div>

can you try removing the windowrule and only try with what I suggested. both of them may not play well together. u don’t need to remove blur effects, but the part which you describe workspace. i.e `workspace = x`

I’m on hl-git. Also double check the configs for duplicate entries, this you may not be aware but I have spent days for just figuring this out, just check for duplicate lines.

---

<div class="post-metadata">

**Author:** ![derxen](http://forum.hypr.land/letter_avatar_proxy/v4/letter/d/e274bd/32.png) [@derxen](http://forum.hypr.land/u/derxen)\
**Post date:** [June 18, 2026, 8:45pm UTC](http://forum.hypr.land/t/special-workspace-normal-workspace/1683/10 "2026-06-18T20:45:04Z")

</div>

Marvelous, that works. Thank you so much. So in the hl.on, the second initial\_title and class refer to the window opened from nemo (or thunar in my case)?

---

<div class="post-metadata">

**Author:** ![sanjay](http://forum.hypr.land/letter_avatar_proxy/v4/letter/s/58956e/32.png) [@sanjay](http://forum.hypr.land/u/sanjay)\
**Post date:** [June 19, 2026, 1:56am UTC](http://forum.hypr.land/t/special-workspace-normal-workspace/1683/11 "2026-06-19T01:56:18Z")

</div>

you can use `hyprprop` or `hyprctl clients` to figure this out open a `thunar` window in special workspace and then use hyprprop to get it’s properties. observe what properties are unique to it, also the `hl.on` applies to windows after creation and moves it comparison with `nil` is to avoid error.

few of them I can guess

- `workspace`
- `initial_title`
- `title`
- `class`

in the rule I’m explicitly saying that if the given window isn’t belongs to given set of properties of a windows please move them to workspace below it, whenever it is created. I tend to understand it in that way. hope this is helpful.

I just found out that adding a `nill` condition for `w` is preffered if it gets exited. i.e `w ~= nil`

---

<div class="post-metadata">

**Author:** ![derxen](http://forum.hypr.land/letter_avatar_proxy/v4/letter/d/e274bd/32.png) [@derxen](http://forum.hypr.land/u/derxen)\
**Post date:** [June 19, 2026, 1:44pm UTC](http://forum.hypr.land/t/special-workspace-normal-workspace/1683/12 "2026-06-19T13:44:01Z")

</div>

Okay, now I understand the point of the nill condition. Thanks Sanjay, you have been very helpful.

---

<div class="post-metadata">

**Author:** ![derxen](http://forum.hypr.land/letter_avatar_proxy/v4/letter/d/e274bd/32.png) [@derxen](http://forum.hypr.land/u/derxen)\
**Post date:** [June 21, 2026, 7:03am UTC](http://forum.hypr.land/t/special-workspace-normal-workspace/1683/13 "2026-06-21T07:03:12Z")

</div>

I do get an error message, hl.on runtime error, attempt to index a nil value. And although the thunar special workspace toggles nicely, my terminal special workspace no longer toggles. The binding now just creates new instances.
