Herbstluftwm определяет последний кадр в теге

Вложенные структуры, а именно JSON, должны обрабатываться (структурными подпрограммами JSON ). Всякий раз, когда вы пытаетесь обработать его с помощью (нескольких )строк -, поддерживающих только подпрограммы, вы всегда будете подвергаться ложным -срабатываниям.

Таким образом, ваш запрос (еще раз, поскольку его правильно сформированный JSON )легко достижим с помощьюjtc:

bash $ jtc -w'[list-value]l' -u'"example-value-changed-567"' file.json
{
   "list-value": {
      "object-value": {
         "value": "example-value-changed-567"
      }
   }
}
bash $ 

0
08.02.2021, 13:07
1 ответ

Я могу получить желаемое поведение, используя следующий набор функций. IDK, насколько это оптимальное решение, но если у кого-то есть идеи по улучшению этого, я был бы рад услышать об этом.

#!/usr/bin/env bash

# this is a simple config for herbstluftwm

hc() {
    herbstclient "$@"
}

use_empty_index()
{
  hc use_previous
  local previous_tag=$(hc attr tags.focus.index)
  hc use_previous
  local origin_tag=$(hc attr tags.focus.index)
  local tag=$(hc use_index $1)
  while [[ $tag != $origin_tag ]] && [ $(hc attr tags.focus.client_count) == 0 ];
  do
    tag=$(hc use_index $1)
  done
  tag=$(hc attr tags.focus.index)
  hc use_index $previous_tag
  hc use_index $tag
}

is_first_client_in_tag()
{
  v=$(echo $1 | grep ^0*$)
  local curframe_windex=$(hc attr tags.focus.curframe_windex)
  if [[ ${v:0:1} == 0 ]] && [[ $curframe_windex == 0 ]]; then
    echo 1
  fi
}

is_last_client_in_tag()
{
  v=$(echo $1 | grep ^1*$)
  local curframe_windex=$(hc attr tags.focus.curframe_windex)
  local curframe_wcount=$(hc attr tags.focus.curframe_wcount)
  if [[ ${v:0:1} == 1 ]] && [[ $curframe_windex == $(($curframe_wcount - 1)) ]]; then
    echo 1
  fi
}

cycle_focus_all_tags()
{
  local v=$(hc attr clients.focus.parent_frame.index)
  if [[ $v == '' ]]; then
    use_empty_index $1
  elif [ $1 == "+1" ] && [[ $(is_last_client_in_tag $v) == 1 ]]; then
    use_empty_index $1
  elif [ $1 == "-1" ] && [[ $(is_first_client_in_tag $v) == 1 ]]; then
    use_empty_index $1
  else
    hc cycle_all $1
  fi
}
0
18.03.2021, 22:31

Теги

Похожие вопросы