История изменений
Исправление dissident, (текущая версия) :
А вот оказывается awful.client.next(0) как раз и возвращает текущего сфокусированного.
Так и должно быть.
Т.е. твое:
local function get_focused_client()
for _, c in ipairs(awful.client.get()) do
if c and c.focused then
return c
end
end
return nil
end
Можно заменить на:
local function get_focused_client()
return awful.client.next(0)
end
Разве что я чего-то не понял?
PS И awful.client.get() что-то у меня не работал. Или что-то другое не работало. Сменил на awful.client.iterate - заработало.
Есть же awful.screen.selected_tags().
Мне нужно знать кол-во clients (программ) в selected_tag, а не кол-во selected_tags(), чтобы сделать вот этот sanity check:
-- Switches focus to the client of index in the taskbar = taskbar_idx:
-- * client with 1st taskbar item will have index 1
-- * client with 2nd taskbar item will have index 2
-- * etc
local function client_focus_by_taskbar_idx(taskbar_idx)
-- User wants to focus a non-existing client, e.g. there are only 2 opened in
-- focused screen selected tag clients and user wants to focus 3rd one, as there is
-- no 3rd one just do nothing
if taskbar_idx < 1 or taskbar_idx > selected_tag_number_of_clients() then
return
end
Можно было бы конечно выделить общую часть client_taskbar_idx() и selected_tag_number_of_clients() или, как сейчас модно говорить, рефакторизировать, но меня не покидает ощущение, что это можно сделать проще. Да и этот код IMHO не измениться никогда. Разве что кто-то (ты, например) расскажет как проще вернуть количество клиентов в выбранном tag, чем посчитать итерируя.
Lua однопоточный, потому на каждую лишнюю проверку у тебя тратится время, интерфейс будет лагать.
Да ладно.
- Не лагает даже на моем г-не. Переключаются окошки так же шустро, как и Mod4-j/k (которые я тоже, кстати, поменял, чтобы было так, что Mod4-j переключает в окно левее в таскбаре, а Mod4-k правее, а не как оригинально стэкозависимо). Но это я уже говорил. Короче кому как удобнее. Мои настройки более «аля xfce чем аля i3»:
-- {{{ changed (was according to stack, now according to taskbar position):
-- moving between windows left/right (as in tasklist)
awful.key({ modkey, }, "j",
function () awful.client.focus.byidx(-1) end,
{description = "next window to the left by index", group = "client"}
),
awful.key({ modkey, }, "k",
function () awful.client.focus.byidx(1) end,
{description = "next window to the right by index", group = "client"}
), -- }}}
- Сколько там этих проверок? Ну пусть у меня 20 окон открыто выбранном таге. Я тыкаю Mod4-Fn. Ну 20 лишних проверок на этот тык. Фигня
Исправление dissident, :
А вот оказывается awful.client.next(0) как раз и возвращает текущего сфокусированного.
Так и должно быть.
Т.е. твое:
local function get_focused_client()
for _, c in ipairs(awful.client.get()) do
if c and c.focused then
return c
end
end
return nil
end
Можно заменить на:
local function get_focused_client()
return awful.client.next(0)
end
Разве что я чего-то не понял?
PS И awful.client.get() что-то у меня не работал. Или что-то другое не работало. Сменил на awful.client.iterate - заработало.
Есть же awful.screen.selected_tags().
Мне нужно знать кол-во clients (программ) в selected_tag, а не кол-во selected_tags(), чтобы сделать вот этот sanity check:
-- Switches focus to the client of index in the taskbar = taskbar_idx:
-- * client with 1st taskbar item will have index 1
-- * client with 2nd taskbar item will have index 2
-- * etc
local function client_focus_by_taskbar_idx(taskbar_idx)
-- User wants to focus a non-existing client, e.g. there are only 2 opened in
-- focused screen selected tag clients and user wants to focus 3rd one, as there is
-- no 3rd one just do nothing
if taskbar_idx < 1 or taskbar_idx > selected_tag_number_of_clients() then
return
end
Можно было бы конечно выделить общую часть client_taskbar_idx() и selected_tag_number_of_clients() или, как сейчас модно говорить, рефакторизировать, но меня не покидает ощущение, что это можно сделать проще. Да и этот код IMHO не измениться никогда. Разве что кто-то (ты, например) расскажет как проще вернуть количество клиентов в выбранном tag, чем посчитать итерируя.
Lua однопоточный, потому на каждую лишнюю проверку у тебя тратится время, интерфейс будет лагать.
Да ладно.
- Не лагает даже на моем г-не. Переключается окошки так же красиво, как и Mod4-j/k (которые я тоже, кстати, поменял, чтобы было так, что Mod4-j переключает в окно левее в таскбаре, а Mod4-k правее, а не как оригинально стэкозависимо). Но это я уже говорил. Короче кому как удобнее. Мои настройки более «аля xfce чем аля i3»:
-- {{{ changed (was according to stack, now according to taskbar position):
-- moving between windows left/right (as in tasklist)
awful.key({ modkey, }, "j",
function () awful.client.focus.byidx(-1) end,
{description = "next window to the left by index", group = "client"}
),
awful.key({ modkey, }, "k",
function () awful.client.focus.byidx(1) end,
{description = "next window to the right by index", group = "client"}
), -- }}}
- Сколько там этих проверок? Ну пусть у меня 20 окон открыто выбранном таге. Я тыкаю Mod4-Fn. Ну 20 лишних проверок. Фигня
Исправление dissident, :
А вот оказывается awful.client.next(0) как раз и возвращает текущего сфокусированного.
Так и должно быть.
Т.е. твое:
local function get_focused_client()
for _, c in ipairs(awful.client.get()) do
if c and c.focused then
return c
end
end
return nil
end
Можно заменить на:
local function get_focused_client()
return awful.client.next(0)
end
Разве что я чего-то не понял?
PS И awful.client.get() что-то у меня не работал. Или что-то другое не работало. Сменил на awful.client.iterate - заработало.
Есть же awful.screen.selected_tags().
Мне нужно знать кол-во clients (программ) в selected_tag, а не кол-во selected_tags(), чтобы сделать вот этот sanity check:
-- Switches focus to the client of index in the taskbar = taskbar_idx:
-- * client with 1st taskbar item will have index 1
-- * client with 2nd taskbar item will have index 2
-- * etc
local function client_focus_by_taskbar_idx(taskbar_idx)
-- User wants to focus a non-existing client, e.g. there are only 2 opened in
-- focused screen selected tag clients and user wants to focus 3rd one, as there is
-- no 3rd one just do nothing
if taskbar_idx < 1 or taskbar_idx > selected_tag_number_of_clients() then
return
end
Можно было бы конечно выделить общую часть client_taskbar_idx() и selected_tag_number_of_clients() или, как сейчас модно говорить, рефакторизировать, но меня не покидает ощущение, что это можно сделать проще. Да и этот код IMHO не измениться никогда. Разве что кто-то (ты, например) расскажеи как проще вернуть количество клиентов в выбранном tag, чем посчитать итерируя.
Lua однопоточный, потому на каждую лишнюю проверку у тебя тратится время, интерфейс будет лагать.
Да ладно.
- Не лагает даже на моем г-не. Переключается окошки так же красиво, как и Mod4-j/k (которые я тоже, кстати, поменял, чтобы было так, что Mod4-j переключает в окно левее в таскбаре, а Mod4-k правее, а не как оригинально стэкозависимо). Но это я уже говорил. Короче кому как удобнее. Мои настройки более «аля xfce чем аля i3»:
-- {{{ changed (was according to stack, now according to taskbar position):
-- moving between windows left/right (as in tasklist)
awful.key({ modkey, }, "j",
function () awful.client.focus.byidx(-1) end,
{description = "next window to the left by index", group = "client"}
),
awful.key({ modkey, }, "k",
function () awful.client.focus.byidx(1) end,
{description = "next window to the right by index", group = "client"}
), -- }}}
- Сколько там этих проверок? Ну пусть у меня 20 окон открыто выбранном таге. Я тыкаю Mod4-Fn. Ну 20 лишних проверок. Фигня
Исправление dissident, :
А вот оказывается awful.client.next(0) как раз и возвращает текущего сфокусированного.
Так и должно быть.
Т.е. твое:
local function get_focused_client()
for _, c in ipairs(awful.client.get()) do
if c and c.focused then
return c
end
end
return nil
end
Можно заменить на:
local function get_focused_client()
return awful.client.next(0)
end
Разве что я чего-то не понял?
PS И awful.client.get() что-то у меня не работал. Или что-то другое не работало. Сменил на awful.client.iterate - заработало.
Есть же awful.screen.selected_tags().
Мне нужно знать кол-во clients (программ) в selected_tag, а не кол-во selected_tags(), чтобы сделать вот этот sanity check:
-- Switches focus to the client of index in the taskbar = taskbar_idx:
-- * client with 1st taskbar item will have index 1
-- * client with 2nd taskbar item will have index 2
-- * etc
local function client_focus_by_taskbar_idx(taskbar_idx)
-- User wants to focus a non-existing client, e.g. there are only 2 opened in
-- focused screen selected tag clients and user wants to focus 3rd one, as there is
-- no 3rd one just do nothing
if taskbar_idx < 1 or taskbar_idx > selected_tag_number_of_clients() then
return
end
Можно было бы конечно выделить общую часть client_taskbar_idx() и selected_tag_number_of_clients() или, как сейчас модно говорить, рефакторизировать, но меня не покидает ощущение, что это можно сделать проще. Да и этот код IMHO не измениться никогда. Разве что кто-то (ты, например, расскажешь как проще посчитатьб количество клиентов в выбранном tag).
Lua однопоточный, потому на каждую лишнюю проверку у тебя тратится время, интерфейс будет лагать.
Да ладно
- Не лагает даже на моем г-не
- Сколько там этих проверок? Ну пусть у меня 20 окон открыто выбранном таге. Я тыкаю Mod4-Fn. Ну 20 лишних проверок. Фигня
Исходная версия dissident, :
А вот оказывается awful.client.next(0) как раз и возвращает текущего сфокусированного.
Так и должно быть.
Т.е. твое:
local function get_focused_client()
for _, c in ipairs(awful.client.get()) do
if c and c.focused then
return c
end
end
return nil
end
Можно заменить на:
local function get_focused_client()
return awful.client.next(0)
end
Разве что я чего-то не понял?
PS И awful.client.get() что-то у меня не работал. Или что-то другое не работало. Сменил на awful.client.iterate - заработало.
Есть же awful.screen.selected_tags().
Мне нужно знать кол-во clients (программ) в selected_tag, а не кол-во selected_tags(), чтобы сделать вот этот sanity check:
-- Switches focus to the client of index in the taskbar = taskbar_idx:
-- * client with 1st taskbar item will have index 1
-- * client with 2nd taskbar item will have index 2
-- * etc
local function client_focus_by_taskbar_idx(taskbar_idx)
-- User wants to focus a non-existing client, e.g. there are only 2 opened in
-- focused screen selected tag clients and user wants to focus 3rd one, as there is
-- no 3rd one just do nothing
if taskbar_idx < 1 or taskbar_idx > selected_tag_number_of_clients() then
return
end
Можно было бы конечно выделить общую часть client_taskbar_idx() и selected_tag_number_of_clients или, как сейчас модно говорить, рефакторизировать, но меня не покидает ощущение, что это можно сделать проще. Да и этот код IMHO не измениться никогда. Разве что кто-то (ты, например, расскажешь как проще посчитатьб количество клиентов в выбранном tag).
Lua однопоточный, потому на каждую лишнюю проверку у тебя тратится время, интерфейс будет лагать.
Да ладно
- Не лагает даже на моем г-не
- Сколько там этих проверок? Ну пусть у меня 20 окон открыто выбранном таге. Я тыкаю Mod4-Fn. Ну 20 лишних проверок. Фигня