Załóżmy, że korzystam z 4 obszarów roboczych i przypadkowo potrzebuję więcej, czy istnieje zautomatyzowany proces lub, jeśli to niemożliwe, łatwy sposób, aby przypadkowo dodać więcej obszarów roboczych (zamiast instalować Ubuntu tweak
itp.).
14.04
unity
workspaces
automation
workspace-switcher
kernel_panic
źródło
źródło
Odpowiedzi:
Automatycznie ustaw liczbę obszarów roboczych; dodawaj i usuwaj kolumny i wiersze, w zależności od potrzeb
Poniżej wersji backround skryptu, który automatycznie doda obszary robocze, jeśli wprowadzisz ostatnią kolumnę lub wiersz matrycy obszaru roboczego.
Tak to działa:
Jeśli dojdziesz do ostatniej kolumny lub wiersza, zostaną dodane dodatkowe rzutnie:
Jeśli przestrzenie robocze są nieużywane przez 5-10 sekund i nie ma w nich okien, dodatkowe przestrzenie robocze zostaną ponownie usunięte. Zawsze jednak będziesz mieć jeden dodatkowy wiersz poniżej i jedną dodatkową kolumnę po prawej stronie bieżącego widoku:
Scenariusz:
Jak używać
add_space.py
W sekcji nagłówka skryptu edytuj linie, jeśli chcesz inne ustawienia (maksymalna liczba obszarów roboczych, domyślna macierz, np. 2x2):
Przetestuj - uruchom komendę:
Jeśli wszystko działa poprawnie, dodaj go do aplikacji startowych: Dash> Aplikacje startowe> Dodaj polecenie:
Uwaga
Jak zawsze skrypt ma bardzo niski poziom soku i nie dodaje zauważalnego obciążenia procesorowi.
Wyjaśnienie
Poniższa historia jest nieco skomplikowana i zawiera głównie wyjaśnienie koncepcji i procedury , a nie kodowania. Czytaj tylko, jeśli jesteś zainteresowany.
Jak obliczyć potrzebne obszary robocze (przykładowe kolumny)
Wyjście
wmctrl -d
wygląda następująco:W wyniku
VP: 1680,1050
daje nam informacje o tym, gdzie jesteśmy w rozpiętym obszarze roboczym (macierz wszystkich rzutni). Ta informacja jest przydatna tylko wtedy, gdy mamy również rozdzielczość ekranu, ponieważ np.1680
Może to być szerokość dwóch (mało prawdopodobne, ale nadal) lub jeden raz ekranu.Na szczęście możemy odczytać rozdzielczość ekranu z polecenia
xrandr
.Następnie, jeśli wiemy, że rozmiar x ekranu jest
1680
i obecnie jesteśmy włączeniVP: 1680,1050
, wiemy, że jesteśmy w drugiej kolumnie macierzy obszaru roboczego. Ponieważ znamy również rozmiar macierzy całkowitej (DG: 3360x2100
również z danych wyjściowychwmctrl -d
), wiemy, że bieżąca macierz zawiera dwie kolumny (3360/1680) i jesteśmy na „ostatniej”.Skrypt wyśle następnie instrukcję dodania kolumny do macierzy za pomocą polecenia:
To jest zasada.
Jak obliczyć obszary robocze do usunięcia (przykładowe kolumny)
Raz na 10 sekund skrypt uruchamia polecenie, aby wyświetlić listę wszystkich aktualnie otwartych okien, za pomocą polecenia:
Daje nam to również informacje o położeniu okna, wyglądając następująco:
Na wyjściu
3425
znajduje się pozycja x okna. Liczba ta dotyczy jednak bieżącego obszaru roboczego (lewa strona). Aby poznać bezwzględną pozycję okna (x-mądro) w macierzy obszaru roboczego, musimy dodać pierwszą liczbę bieżących informacji o rzutni (np.VP: 1680,1050
Z danych wyjściowychwmctrl -d
).Załóżmy jednak, ze względów uproszczenia, załóżmy, że jesteśmy w rzutni
1,1
(rzutnia w lewym górnym rogu), więc względna pozycja okna jest równa jego pozycji bezwzględnej.Ponieważ rozdzielczość ekranu wynosi
1680
, wiemy, że okno jest3425/1680
zaokrąglone w kolumnie , ponieważ wszystko pomiędzy3360 and 5040
znajduje się w tej samej kolumnie w matrycy (między 3 a 4-krotnością rozdzielczości). Do poprawnych obliczeń używamymath.ceil()
(python
)Ponieważ skrypt stosuje również regułę, aby zawsze mieć dodatkowy obszar roboczy po prawej / poniżej, musimy ustawić liczbę kolumn na najwyższą wartość:
I tak robi skrypt :)
Wiersze są zarządzane w dokładnie tej samej procedurze.
źródło
Technicznie nie ma skrótu do zmiany rozmiaru obszarów roboczych, ale możesz użyć prostego skryptu poniżej i powiązać go ze skrótem.
.local/share/applications
folderze lub gdziekolwiek chcesz.chmod 755 /path/to/script
Na przykład mam tę konfigurację:
Skrypt jest związany z ShiftCtrlAltI. Ale CtrlAltImoże też działać. Podaję pełną ścieżkę do skryptu, który jest
A oto jak powinno to wyglądać:
Scenariusz
Bardzo prosty w użyciu, bardzo prosty w konfiguracji
źródło