2016-06-04 12:03:38 +02:00
|
|
|
--- Tests for _NET_CURRENT_DESKTOP
|
|
|
|
|
|
|
|
local runner = require("_runner")
|
|
|
|
local test_client = require("_client")
|
|
|
|
local awful = require("awful")
|
2017-03-08 21:18:33 +01:00
|
|
|
local gtable = require("gears.table")
|
2016-06-04 12:03:38 +02:00
|
|
|
|
|
|
|
local c
|
|
|
|
local s = screen[1]
|
|
|
|
local tags = s.tags
|
|
|
|
|
|
|
|
local function wait_for_current_desktop(tag)
|
|
|
|
-- The X property has 0-based indicies
|
2017-03-08 21:18:33 +01:00
|
|
|
local idx = gtable.hasitem(tags, tag) - 1
|
2016-06-04 12:03:38 +02:00
|
|
|
return function()
|
|
|
|
local file = io.popen("xprop -notype -root _NET_CURRENT_DESKTOP")
|
|
|
|
local result = file:read("*all")
|
|
|
|
file:close()
|
|
|
|
|
|
|
|
-- Extract the value
|
|
|
|
local value = string.sub(result, 24, -2)
|
|
|
|
|
|
|
|
if tostring(idx) == value then
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
print(string.format("Got _NET_CURRENT_DESKTOP = '%s', expected %d", value, idx))
|
2017-02-06 19:55:08 +01:00
|
|
|
return false
|
2016-06-04 12:03:38 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
local steps = {
|
|
|
|
|
|
|
|
-- Set up the state we want
|
|
|
|
function(count)
|
|
|
|
if count == 1 then
|
|
|
|
test_client()
|
|
|
|
awful.tag.viewmore({ tags[3], tags[4], tags[5] }, s)
|
|
|
|
end
|
|
|
|
|
|
|
|
c = awful.client.visible()[1]
|
|
|
|
|
|
|
|
if c then
|
|
|
|
c:move_to_tag(tags[4])
|
|
|
|
client.focus = c
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
end,
|
|
|
|
wait_for_current_desktop(tags[4]),
|
|
|
|
|
|
|
|
-- Move the client around
|
|
|
|
function()
|
|
|
|
c:move_to_tag(tags[5])
|
|
|
|
return true
|
|
|
|
end,
|
|
|
|
wait_for_current_desktop(tags[5]),
|
|
|
|
|
|
|
|
-- Move the client to a non-selected tag
|
|
|
|
function()
|
|
|
|
c:move_to_tag(tags[6])
|
|
|
|
assert(client.focus == nil)
|
|
|
|
return true
|
|
|
|
end,
|
|
|
|
wait_for_current_desktop(tags[3]),
|
|
|
|
|
|
|
|
-- Move the client back
|
|
|
|
function(count)
|
|
|
|
if count == 1 then
|
|
|
|
c:move_to_tag(tags[4])
|
|
|
|
return
|
|
|
|
end
|
2016-06-04 17:05:42 +02:00
|
|
|
client.focus = c
|
|
|
|
return true
|
|
|
|
end,
|
|
|
|
wait_for_current_desktop(tags[4]),
|
2016-06-04 12:03:38 +02:00
|
|
|
|
2016-06-04 17:05:42 +02:00
|
|
|
-- Killing the client means the first selected tag counts
|
2017-02-02 23:02:52 +01:00
|
|
|
function(count)
|
|
|
|
if count == 1 then
|
2019-11-11 00:39:26 +01:00
|
|
|
assert(c.active)
|
2017-02-02 23:02:52 +01:00
|
|
|
c:kill()
|
|
|
|
c = nil
|
|
|
|
return
|
|
|
|
end
|
2016-06-04 12:03:38 +02:00
|
|
|
return true
|
|
|
|
end,
|
|
|
|
wait_for_current_desktop(tags[3]),
|
|
|
|
|
|
|
|
-- Change tag selection
|
|
|
|
function()
|
|
|
|
tags[3].selected = false
|
|
|
|
return true
|
|
|
|
end,
|
|
|
|
wait_for_current_desktop(tags[4]),
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
runner.run_steps(steps)
|
|
|
|
|
|
|
|
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|