Я использую 2 рабочих пространства прямо сейчас, и я хотел бы иметь возможность циклически переключаться между ними, используя один ярлык. На данный момент я могу сделать Ctrl + Alt + Right, чтобы переключиться на рабочую область 2, а Left переключится на 1, но я хочу, чтобы один ключ (или комбинация клавиш) переключился на рабочую область, в которой я не сейчас. Таким образом мне понадобится только этот ярлык, и мне не нужны два.
Я запускаю Ubuntu на старой машине, и это мешает мне включить компиляцию вообще. Я попытался написать сценарий, используя как wmctrl, так и xdotool, но не работаю должным образом (независимо от того, что я делаю, они оба переключаются только на рабочую область 1 и никогда не на 2).
Любые предложения ?
Вот сценарий, который переключается на следующую рабочую область, обертывая назад к первому после последнего. Обратите внимание, что рабочие пространства нумеруются от 0, возможно, это то, что бросило вас, когда вы пытались написать скрипт.
#!/bin/sh
total=$(wmctrl -d | wc -l)
current=$(wmctrl -d | sed -n 's/^\([0-9]\+\) *\*.*/\1/p')
if [ -z "$total" ] || [ -z "$current" ]; then
echo 1>&2 "$0: Could not obtain workspace information!"
exit 2
fi
target=$(($current+1))
if [ $target = $total ]; then
target=0
fi
wmctrl -s $target
Вот сценарий, который переключается на следующую рабочую область, обертывая назад к первому после последнего. Обратите внимание, что рабочие пространства нумеруются от 0, возможно, это то, что бросило вас, когда вы пытались написать скрипт.
#!/bin/sh
total=$(wmctrl -d | wc -l)
current=$(wmctrl -d | sed -n 's/^\([0-9]\+\) *\*.*/\1/p')
if [ -z "$total" ] || [ -z "$current" ]; then
echo 1>&2 "$0: Could not obtain workspace information!"
exit 2
fi
target=$(($current+1))
if [ $target = $total ]; then
target=0
fi
wmctrl -s $target
Вот сценарий, который переключается на следующую рабочую область, обертывая назад к первому после последнего. Обратите внимание, что рабочие пространства нумеруются от 0, возможно, это то, что бросило вас, когда вы пытались написать скрипт.
#!/bin/sh
total=$(wmctrl -d | wc -l)
current=$(wmctrl -d | sed -n 's/^\([0-9]\+\) *\*.*/\1/p')
if [ -z "$total" ] || [ -z "$current" ]; then
echo 1>&2 "$0: Could not obtain workspace information!"
exit 2
fi
target=$(($current+1))
if [ $target = $total ]; then
target=0
fi
wmctrl -s $target
Вот сценарий, который переключается на следующую рабочую область, обертывая назад к первому после последнего. Обратите внимание, что рабочие пространства нумеруются от 0, возможно, это то, что бросило вас, когда вы пытались написать скрипт.
#!/bin/sh
total=$(wmctrl -d | wc -l)
current=$(wmctrl -d | sed -n 's/^\([0-9]\+\) *\*.*/\1/p')
if [ -z "$total" ] || [ -z "$current" ]; then
echo 1>&2 "$0: Could not obtain workspace information!"
exit 2
fi
target=$(($current+1))
if [ $target = $total ]; then
target=0
fi
wmctrl -s $target
Вот сценарий, который переключается на следующую рабочую область, обертывая назад к первому после последнего. Обратите внимание, что рабочие пространства нумеруются от 0, возможно, это то, что бросило вас, когда вы пытались написать скрипт.
#! / Bin / sh total = $ (wmctrl -d | wc -l) current = $ (wmctrl -d | sed -n 's / ^ \ ([0-9] \ + \) * \ *. * / \ 1 / p'), если [-z "$ total"] || [-z "$ current"]; затем echo 1 & amp; 2 "$ 0: не удалось получить информацию о рабочем пространстве!" exit 2 fi target = $ (($ current + 1)), если [$ target = $ total]; то target = 0 fi wmctrl -s $ target
Вот сценарий, который переключается на следующую рабочую область, обертывая назад к первому после последнего. Обратите внимание, что рабочие пространства нумеруются от 0, возможно, это то, что бросило вас, когда вы пытались написать скрипт.
#! / Bin / sh total = $ (wmctrl -d | wc -l) current = $ (wmctrl -d | sed -n 's / ^ \ ([0-9] \ + \) * \ *. * / \ 1 / p'), если [-z "$ total"] || [-z "$ current"]; затем echo 1 & amp; 2 "$ 0: не удалось получить информацию о рабочем пространстве!" exit 2 fi target = $ (($ current + 1)), если [$ target = $ total]; то target = 0 fi wmctrl -s $ target
Вот сценарий, который переключается на следующую рабочую область, обертывая назад к первому после последнего. Обратите внимание, что рабочие пространства нумеруются от 0, возможно, это то, что бросило вас, когда вы пытались написать скрипт.
#! / Bin / sh total = $ (wmctrl -d | wc -l) current = $ (wmctrl -d | sed -n 's / ^ \ ([0-9] \ + \) * \ *. * / \ 1 / p'), если [-z "$ total"] || [-z "$ current"]; затем echo 1 & amp; 2 "$ 0: не удалось получить информацию о рабочем пространстве!" exit 2 fi target = $ (($ current + 1)), если [$ target = $ total]; то target = 0 fi wmctrl -s $ target
Вот сценарий, который переключается на следующую рабочую область, обертывая назад к первому после последнего. Обратите внимание, что рабочие пространства нумеруются от 0, возможно, это то, что бросило вас, когда вы пытались написать скрипт.
#! / Bin / sh total = $ (wmctrl -d | wc -l) current = $ (wmctrl -d | sed -n 's / ^ \ ([0-9] \ + \) * \ *. * / \ 1 / p'), если [-z "$ total"] || [-z "$ current"]; затем echo 1 & amp; 2 "$ 0: не удалось получить информацию о рабочем пространстве!" exit 2 fi target = $ (($ current + 1)), если [$ target = $ total]; то target = 0 fi wmctrl -s $ target
Вот сценарий, который переключается на следующую рабочую область, обертывая назад к первому после последнего. Обратите внимание, что рабочие пространства нумеруются от 0, возможно, это то, что бросило вас, когда вы пытались написать скрипт.
#! / Bin / sh total = $ (wmctrl -d | wc -l) current = $ (wmctrl -d | sed -n 's / ^ \ ([0-9] \ + \) * \ *. * / \ 1 / p'), если [-z "$ total"] || [-z "$ current"]; затем echo 1 & amp; 2 "$ 0: не удалось получить информацию о рабочем пространстве!" exit 2 fi target = $ (($ current + 1)), если [$ target = $ total]; то target = 0 fi wmctrl -s $ target
Вот сценарий, который переключается на следующую рабочую область, обертывая назад к первому после последнего. Обратите внимание, что рабочие пространства нумеруются от 0, возможно, это то, что бросило вас, когда вы пытались написать скрипт.
#! / Bin / sh total = $ (wmctrl -d | wc -l) current = $ (wmctrl -d | sed -n 's / ^ \ ([0-9] \ + \) * \ *. * / \ 1 / p'), если [-z "$ total"] || [-z "$ current"]; затем echo 1 & amp; 2 "$ 0: не удалось получить информацию о рабочем пространстве!" exit 2 fi target = $ (($ current + 1)), если [$ target = $ total]; то target = 0 fi wmctrl -s $ target
chmod + x filename
). Перейдите в раздел «Система - & gt; Предпочтения - & gt; Ярлыки клавиш ". В этом меню создайте новый ярлык, дайте ему какое угодно имя и укажите его на сохраненный файл. Например, если вы сохраните файл как «script.sh», в вашей домашней папке, что вам нужно написать в «Command & quot; поле ввода: «/home/yourusername/script.sh" ;.
– Malabarba
6 October 2010 в 10:40
Я знаю, что это старо, но вот мои версии:
Для нескольких рабочих пространств (как в ответе Гилла):
wmctrl -s `wmctrl -d | awk '$2=="*"{cur=NR} END{print cur % NR}'`
Для нескольких видовых экранов:
[ f2]Я знаю, что это старо, но вот мои версии:
Для нескольких рабочих пространств (как в ответе Гилла):
wmctrl -s `wmctrl -d | awk '$2=="*"{cur=NR} END{print cur % NR}'`
Для нескольких видовых экранов:
wmctrl -o `wmctrl -d | awk '{gsub(/[^0-9]/," ",$0);x = ($4 + $6 + $8) % $2; if(
x == 0 ) y = ($5 + $7 + $9) % $3; else y = $5; print x","y}'`
Я знаю, что это старо, но вот мои версии:
Для нескольких рабочих пространств (как в ответе Гилла):
wmctrl -s `wmctrl -d | awk '$2=="*"{cur=NR} END{print cur % NR}'`
Для нескольких видовых экранов:
wmctrl -o `wmctrl -d | awk '{gsub(/[^0-9]/," ",$0);x = ($4 + $6 + $8) % $2; if(
x == 0 ) y = ($5 + $7 + $9) % $3; else y = $5; print x","y}'`
Я знаю, что это старо, но вот мои версии:
Для нескольких рабочих пространств (как в ответе Гилла):
wmctrl -s `wmctrl -d | awk '$2=="*"{cur=NR} END{print cur % NR}'`
Для нескольких видовых экранов:
wmctrl -o `wmctrl -d | awk '{gsub(/[^0-9]/," ",$0);x = ($4 + $6 + $8) % $2; if(
x == 0 ) y = ($5 + $7 + $9) % $3; else y = $5; print x","y}'`
Я знаю, что это старый, но вот мои версии:
Для нескольких рабочих пространств (как в ответе Гилла):
wmctrl -s `wmctrl -d | awk '$ 2 == "*" {cur = NR} END {print cur% NR}' `
Для нескольких видовых экранов:
wmctrl -o `wmctrl -d | awk '{gsub (/ [^ 0-9] /, "", $ 0); x = ($ 4 + $ 6 + $ 8)% $ 2; if (x == 0) y = ($ 5 + $ 7 + $ 9)% $ 3; else y = $ 5; print x "," y} '`
Я знаю, что это старый, но вот мои версии:
Для нескольких рабочих пространств (как в ответе Гилла):
wmctrl -s `wmctrl -d | awk '$ 2 == "*" {cur = NR} END {print cur% NR}' `
Для нескольких видовых экранов:
wmctrl -o `wmctrl -d | awk '{gsub (/ [^ 0-9] /, "", $ 0); x = ($ 4 + $ 6 + $ 8)% $ 2; if (x == 0) y = ($ 5 + $ 7 + $ 9)% $ 3; else y = $ 5; print x "," y} '`
Я знаю, что это старый, но вот мои версии:
Для нескольких рабочих пространств (как в ответе Гилла):
wmctrl -s `wmctrl -d | awk '$ 2 == "*" {cur = NR} END {print cur% NR}' `
Для нескольких видовых экранов:
wmctrl -o `wmctrl -d | awk '{gsub (/ [^ 0-9] /, "", $ 0); x = ($ 4 + $ 6 + $ 8)% $ 2; if (x == 0) y = ($ 5 + $ 7 + $ 9)% $ 3; else y = $ 5; print x "," y} '`
Я знаю, что это старый, но вот мои версии:
Для нескольких рабочих пространств (как в ответе Гилла):
wmctrl -s `wmctrl -d | awk '$ 2 == "*" {cur = NR} END {print cur% NR}' `
Для нескольких видовых экранов:
wmctrl -o `wmctrl -d | awk '{gsub (/ [^ 0-9] /, "", $ 0); x = ($ 4 + $ 6 + $ 8)% $ 2; if (x == 0) y = ($ 5 + $ 7 + $ 9)% $ 3; else y = $ 5; print x "," y} '`
Я знаю, что это старый, но вот мои версии:
Для нескольких рабочих пространств (как в ответе Гилла):
wmctrl -s `wmctrl -d | awk '$ 2 == "*" {cur = NR} END {print cur% NR}' `
Для нескольких видовых экранов:
wmctrl -o `wmctrl -d | awk '{gsub (/ [^ 0-9] /, "", $ 0); x = ($ 4 + $ 6 + $ 8)% $ 2; if (x == 0) y = ($ 5 + $ 7 + $ 9)% $ 3; else y = $ 5; print x "," y} '`
Я знаю, что это старый, но вот мои версии:
Для нескольких рабочих пространств (как в ответе Гилла):
wmctrl -s `wmctrl -d | awk '$ 2 == "*" {cur = NR} END {print cur% NR}' `
Для нескольких видовых экранов:
wmctrl -o `wmctrl -d | awk '{gsub (/ [^ 0-9] /, "", $ 0); x = ($ 4 + $ 6 + $ 8)% $ 2; if (x == 0) y = ($ 5 + $ 7 + $ 9)% $ 3; else y = $ 5; print x "," y} '`