У меня проблема схожести, пинг github.com (192.30.253.112) терпит неудачу.
~$ ping github.com
PING github.com (192.30.253.112) 56(84) bytes of data.
From 192.168.1.28 icmp_seq=1 Destination Host Unreachable
From 192.168.1.28 icmp_seq=2 Destination Host Unreachable
From 192.168.1.28 icmp_seq=3 Destination Host Unreachable
Я обнаружил ключевую проблему после того, как увидел ваши комментарии
~$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
192.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth0
, где указано, что третий маршрут означает, что когда я посещаю 192.xxx.xxx.xxx
, это будет некоторая ошибка. {{1} } удалив этот маршрут, я успешно пингую github.com
.
ping github.com
PING github.com (192.30.253.112) 56(84) bytes of data.
64 bytes from 192.30.253.112: icmp_seq=1 ttl=43 time=235 ms
64 bytes from 192.30.253.112: icmp_seq=2 ttl=43 time=234 ms
64 bytes from 192.30.253.112: icmp_seq=3 ttl=43 time=235 ms
Ответ ниже был написан и протестирован на Gnome3 / Ubuntu. Пожалуйста, сообщите, если у вас возникнут проблемы при запуске на Fedora / Gnome.
Приведенный ниже скрипт закроет все окна на определенном рабочем пространстве, с двумя вариантами:
При запуске без аргументов, он закрывает все окна на текущем рабочем пространстве, например:
python3 /path/to/script.py
при запуске с определенным рабочим пространством в качестве аргумента, закроет все окна на этом рабочем пространстве, например:
python3 /path/to/script.py 0
закроет все приложения на рабочем пространстве 1. Обратите внимание, что первое рабочее пространство имеет индекс 0
#!/usr/bin/env python3
import subprocess
import sys
arg = sys.argv[1:]
def check_close(w_id):
w_data = get(["xprop", "-id", w_id])
if "_NET_WM_WINDOW_TYPE_NORMAL" in w_data:
subprocess.call(["wmctrl", "-ic", w])
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8")
wlist = [l.split() for l in get(["wmctrl", "-lG"]).splitlines()]
arg = arg[0] if arg else [
l.split()[0] for l in get(["wmctrl", "-d"]).splitlines() if '*' in l
][0]
for w in [w[0] for w in wlist if w[1] == arg]:
check_close(w)
close_wins.py
Теперь протестируйте и запустите скрипт из окна терминала, указав в качестве аргумента целевое рабочее пространство, например:
python3 /path/to/close_wins.py 2
чтобы изящно закрыть все окна на рабочем пространстве 3 (0 = рабочее пространство 1)
Чтобы закрыть все окна на текущем рабочем пространстве, запустите его без аргументов:
python3 /path/to/close_wins.py
Если все работает нормально, добавьте его к клавише быстрого доступа: выберите: Системные настройки > "Клавиатура" > "Ярлыки" > "Пользовательские ярлыки". Нажмите на "+" и добавьте команду:
python3 /path/to/close_wins.py
... или запустите ее любым другим способом, который вам больше нравится.
Команда wmctrl -lG
даст нам информацию о текущих открытых окнах. Вывод выглядит так:
0x018000f9 0 135 206 650 500 jacob-System-Product-Name pscript_6.py (1,6 GB Volume /media/jacob/6C08-F637) - gedit
0x01600a09 1 283 275 724 443 jacob-System-Product-Name jacob@jacob-System-Product-Name: ~
0x018018be 1 152 407 650 500 jacob-System-Product-Name Untitled Document 1 - gedit
0x0140008c 2 0 101 1280 960 jacob-System-Product-Name gnome - Can I have a countdown window show the time until next suspend? - Ask Ubuntu - Mozilla Firefox
0x01600a49 2 47 146 724 443 jacob-System-Product-Name jacob@jacob-System-Product-Name: ~
Из второго столбца мы можем получить местоположение окна:
0x0140008c 2 0 101 1280 960 jacob-System-Product-Name gnome - Can I have a countdown window show the time until next suspend? - Ask Ubuntu - Mozilla Firefox
Значение 2
означает, что окно находится на рабочем пространстве 3, поскольку 0
относится к первому рабочему пространству.
Если сценарий запускается с рабочим пространством в качестве аргумента, сценарий разбирает соответствующие идентификаторы окон и впоследствии закрывает их изящно командой (например):
wmctrl -ic 0x0140008c
Если сценарий запускается без рабочего пространства в качестве аргумента, сценарий получает текущее рабочее пространство из команды:
wmctrl -d
и впоследствии использует текущее рабочее пространство внутренне в качестве аргумента.