LINUX.ORG.RU

История изменений

Исправление 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 однопоточный, потому на каждую лишнюю проверку у тебя тратится время, интерфейс будет лагать.

Да ладно.

  1. Не лагает даже на моем г-не. Переключаются окошки так же шустро, как и 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"}
        ), -- }}}
  1. Сколько там этих проверок? Ну пусть у меня 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 однопоточный, потому на каждую лишнюю проверку у тебя тратится время, интерфейс будет лагать.

Да ладно.

  1. Не лагает даже на моем г-не. Переключается окошки так же красиво, как и 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"}
        ), -- }}}
  1. Сколько там этих проверок? Ну пусть у меня 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 однопоточный, потому на каждую лишнюю проверку у тебя тратится время, интерфейс будет лагать.

Да ладно.

  1. Не лагает даже на моем г-не. Переключается окошки так же красиво, как и 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"}
        ), -- }}}
  1. Сколько там этих проверок? Ну пусть у меня 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 однопоточный, потому на каждую лишнюю проверку у тебя тратится время, интерфейс будет лагать.

Да ладно

  1. Не лагает даже на моем г-не
  2. Сколько там этих проверок? Ну пусть у меня 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 однопоточный, потому на каждую лишнюю проверку у тебя тратится время, интерфейс будет лагать.

Да ладно

  1. Не лагает даже на моем г-не
  2. Сколько там этих проверок? Ну пусть у меня 20 окон открыто выбранном таге. Я тыкаю Mod4-Fn. Ну 20 лишних проверок. Фигня