Puncte:-2

Pozițiile implicite ale terminalului Ubuntu

drapel in

După cum mulți dintre voi știți, de fiecare dată când deschideți o nouă fereastră de terminal pe Ubuntu, aceasta se află în partea din stânga sus a ecranului. Următorul este situat chiar sub el. Al treilea este în dreapta sus, al patrulea în partea dreaptă jos a ecranului. Vreau să adaug această funcționalitate la o altă distribuție Linux pe care o folosesc acum. Vreau doar să știu cum se gestionează acest lucru în Ubuntu.

De asemenea, asta nu funcționează numai cu gnome-terminal. Funcționează cu orice emulator de terminal pe care l-am descărcat până acum. Deci cred că nu este o problemă specifică emulatorului de terminal.Stie cineva cum se face asta?

Puncte:2
drapel it

RECOMANDARE

Aș recomanda să înveți instrumentul la care te vei muta. Aproape toate terminalele au un fel de fișier de configurare, cum ar fi alacritty. Acestea fiind spuse, iată câteva „trucuri” pe care le-am întâlnit pe parcurs”.

CUM O FAC

Când lansați un terminal, există o opțiune care vă permite să setați atât dimensiunea, cât și offset-urile X și Y.

Opțiunea este --geometrie, si e disponibil pe multe (majoritatea?) emulatori de terminale linux. Terminalul Gnome nu face excepție. Cât despre o mereu soluție, unii dezvoltatori pur și simplu nu își fac timp pentru a construi cârlige suplimentare de automatizare pentru programator/superutilizator.

Sintaxa de utilizare a opțiunii de geometrie cu terminalul nostru este următoarea:

$ gnome-terminal --geometrie LxH+X+Y

Rețineți că în șirul de argumente, totul, în afară de majuscule, trebuie interpretat literal. Capacele reprezintă lăţime măsurată în coloane, Înălţime măsurată în rânduri și X Y decalaje față de poziția ecranului (0,0).

Obișnuiam să scriu o comandă pentru a o salva în $HOME, salvarea în ~/.bashrc, care o persistă. Aceasta este o idee pe care cred că am primit-o de pe același site cu mult timp în urmă, dar acum folosesc o metodă creată de mine atunci când trebuie să scriu un script pentru funcționalitatea.

Ca o notă secundară rapidă: dacă mă schimb în Ubuntu, creez (sau schimb) un altul profilul terminalului. Fiecare profil l nou pe care îl faceți în setările „preferințe” terminalului gui vă permite să specificați culoarea b-g, transparența etc. ale terminalului împreună cu setările menționate anterior.

De asemenea, voi deschide vim și voi imprima comanda de mai sus pe o singură linie. În continuare, îl voi copia vertical de câte ori este nevoie și îl voi configura pe fiecare la o dimensiune / poziție convenabilă.

În cele din urmă deschid o despărțire cu ~/.bash-aliases încărcat în buffer-ul său și setați un alias pentru fiecare instanță a comenzii.

Apoi pot pune doar un nume de 3-4 litere, ca poate midl de fiecare dată când am nevoie de un nou proces de terminal guit pentru a lansa în mijlocul ecranului.

Puncte:1
drapel in

Mulțumesc Nate. Am folosit ideea pe care mi-ai dat-o și am venit cu acel script care îmi rezolvă problema. Este un script python care este conceput special pentru rezoluția mea, care este 1920x1080. Depinde și de un instrument numit wmctrl. Iată scenariul:

#!/usr/bin/python3

import os


def elimina(iter):
    res = []
    pentru eu in iter:
        dacă eu:
            res.apend(i)
    returnare res


spațiu de lucru = "wmctrl -d | grep '*' | cut -d ' ' -f1 > /tmp/curr_ws"

os.system (spațiu de lucru)
out_workspace = ""
cu open("/tmp/curr_ws","r") ca f:
    out_workspace = f.read()
out_workspace = int(out_workspace)
print("DEBUG: Spațiu de lucru curent:", out_workspace)

poziții = 'wmctrl -lG | grep "kali:" | grep „^........... {0}” | tr -s " " | cut -d " " -f 3,4 > /tmp/positions'.format(out_workspace)
dimensiuni = 'wmctrl -lG | grep "kali:" | grep „^........... {0}” | tr -s " " | cut -d " " -f 5,6 > /tmp/sizes'.format(out_workspace)

os.system(poziții)
out_positions = ""
cu open("/tmp/positions","r") ca f:
    out_positions = f.read()
out_positions = eliminare(out_positions.split("\n"))

sistem(dimensiuni) os.system
out_sizes = ""
cu open("/tmp/sizes","r") ca f:
    out_sizes = f.read()
out_sizes = eliminare(out_sizes.split("\n"))

poziții_terminale = [[110, 101, 854, 479], [973, 101, 854, 479], [110, 611, 854, 479], [973, 611, 854, 479]]
terminal_strings = ["gnome-terminal --geometry 105x25+100+45", "gnome-terminal --geometry 105x25+963+45",
                    "gnome-terminal --geometry 105x25+100+555", "gnome-terminal --geometry 105x25+963+555"]

parsed_positions = []
pentru i în interval (0,len(out_positions)):
    parsed_positions.append([ int(out_positions[i].split(" ")[0]),int(out_positions[i].split(" ")[1]),int(out_sizes[i].split(" " )[0]),int(out_sizes[i].split(" ")[1]) ])
print("DEBUG: Poziții:", poziții_parsed)

def check(term_pos, parsed_pos):
    indice = 0
    suprapunere = Fals
    pentru i în pozițiile_terminale:
        suprapunere = Fals
        pentru j în parsed_positions:
            ax0 = term_left_start = i[0]
            ay0 = term_up_start = i[1]
            ax1 = term_left_end = i[0] + i[2]
            ay1 = term_up_end = i[1] + i[3]
            
            bx0 = pars_left_start = j[0]
            by0 = pars_up_start = j[1]
            bx1 = pars_left_end = j[0] + j[2]
            by1 = pars_up_end = j[1] + j[3]

            # dacă term_left_start >= pars_left_end sau term_left_end <= pars_left_start sau term_up_end <= pars_up_start sau term_up_start >= pars_up_end:
            # overlap = Adevărat

            dacă ((bx0 <= ax0) și (ax1 <= bx1)) sau ((ax0 <= bx0 <= ax1) și (ax1 <= bx1)) sau ((ax0 >= bx0) și (ax1 >= bx1 > = ax0)) sau ((ax0 <= bx0 <= ax1) și (ax1 >= bx1 >= ax0)):
                dacă ((by0 <= ay0) și (ay1 <= by1)) sau ((ay0 <= by0 <= ay1) și (ay1 <= by1)) sau ((ay0 >= by0) și (ay1 >= by1 > = ay0)) sau ((ay0 <= by0 <= ay1) și (ay1 >= by1 >= ay0)):
                    suprapunere = Adevărat

        dacă se suprapun:
            indice += 1
        altceva:
            indice de returnare


    întoarce -1


loc = verificare (poziții_terminale, poziții_parse)

dacă locul == -1:
    os.system("gnome-terminal")
altceva:
    os.system(terminal_strings[loc])

Trebuie să includeți locația scriptului în variabila PATH, apoi să atribuiți o comandă rapidă unei comenzi care execută scriptul

Nate T avatar
drapel it
Excelent! Arata bine. Singurul lucru mic pe care îl văd este _poate_ logica pentru obținerea lungimii și lățimii. Așa cum arată, operațiunea și ordinea pot fi înapoi. Dacă am dreptate, nu o vei observa niciodată atâta timp cât numerele mici x0 și y0 au valori zero. Cu toate acestea, dacă această valoare se mișcă în oricare direcție, va provoca stingerea afișajului.Dacă se întâmplă acest lucru, comutați doar pozițiile operandului din operator.
Nate T avatar
drapel it
De exemplu, `x[0] + x[1]` ar fi schimbat în `x[1] - x [0]`. Cel mai probabil mă înșel, deoarece m-am uitat la el doar câteva minute și probabil că te-ai uitat la el de cine știe cât timp. Știam doar că dacă nu spun ceva, voi uita. Și de îndată ce n-aș spune nimic, ar fi corect. Așa că ia-o cu un grăunte de sare. Nu încercând să iau o revizuire a codului, doar am văzut un poate și m-am gândit să spun ceva. Ar trebui să te uiți la modificare pentru a lua argumente (poate un device.conf?) Și să vezi despre pack/pub.
Nate T avatar
drapel it
Rezolvă o problemă unică. Un dispozitiv preconfigurat în mai multe distribuții. Sunt sigur că există deja un instrument, pentru că sunt atât de multe. Dar, din moment ce sunt atât de multe, nimeni nu știe despre majoritatea, așa că cu cât sunt mai mulți, cu atât mai bine! ...? ...! eu
Muhammed Özen avatar
drapel in
Vă mulțumesc mult pentru sugestie. Da, ai dreptate și sincer nu am găsit niciun script care să facă asta. Sunt sigur că sunt multe acolo, dar nu m-am întâlnit niciodată cu niciuna dintre ele. Scriptul are, de asemenea, un alt bug care este de fiecare dată când dau jos terminalul, dar nu îl închid, va presupune că este încă acolo și, pentru a preveni suprapunerea, va deschide terminalul în următoarea poziție. Nu am idee cum să o rezolv, dar vă mulțumesc foarte mult pentru contribuție
Nate T avatar
drapel it
Există o bază de date în sistemele Linux numită `terminfo` sau ceva similar care stochează toate aceste informații. Se termină probabil într-un „.d”. Vă garantez că răspunsul dvs. va fi acolo.
Muhammed Özen avatar
drapel in
Multumesc mult din nou. am să verific

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.