Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: browsers via script in specifieke workspace laten starten  (gelezen 1932 keer)

browsers via script in specifieke workspace laten starten
« Gepost op: 2021/01/14, 12:30:27 »
Os = Xubuntu 20.04

Ik wil vier browsers (Firefox, Brave, Tor en Chromium) via enkele toegevoegde regels aan een reeds bestaand script (zie hieronder) laten starten, waarbij iedere browser wordt gestart in een specifieke(!) workspace in de Workspace Switcher.
Bv Firefox in Workspace 1, Brave in Workspace 2, Tor in Workspace 3 en Chromium in Workspace 4.

De startcommando’s zijn - in mijn geval - de volgende :
Firefox : firejail firefox &
Brave : brave-browser
Tor : torbrowser-launcher %u
Chromium : chromium-browser %U

Het script :

#!/bin/bash

# Run the update command
sudo apt-get update && sudo apt-get -y upgrade

# Start Firefox
firejail firefox &

# Empty Trash
rm -rf ~/.local/share/Trash/*

# Empty Downloads
rm -r -f ~/Downloads/*

# Empty apt-get cache
sudo apt-get clean

Iemand een idee hoe dit voor elkaar te krijgen, want op internet kan ik zo gauw helaas geen concreet antwoord vinden.  Thx!

(ps : ik ben geen script expert dus het liefst zo simpel mogelijk :))





Een boek doet het altijd...

Offline vanadium

  • Lid
Re: browsers via script in specifieke workspace laten starten
« Reactie #1 Gepost op: 2021/01/14, 13:15:55 »
Zowel wmctrl als xdotool kunnen bestaande vensters naar een andere workspace verplaatsen. Met devilspie of devilspie2 (dat laatste gebruik ik) kan je regels definiëren voor nieuw aangemaakte vensters, bijvoorbeeld dat het venster moet aangemaakt worden op een specifieke workspace.

Wil je dat je browservensters *altijd* op de gewenste workspace verschijnen, gebruik dan devilspie. Wil je het eenmalig in een script, dan kan je met wmctrl of xdotool werken. Details weet ik zelf niet, maar deze sleutelwoorden kunnen je helpen uit te zoeken hoe het kan gebeuren, of iemand anders hier kan in stappen  ;)


Re: browsers via script in specifieke workspace laten starten
« Reactie #2 Gepost op: 2021/01/14, 16:52:55 »
Voor mij lijkt wmctrl de handigste optie. Zoals ik al aangaf wil ik in het script commando's opnemen, waarbij iedere browser wordt gestart in een specifieke workspace in de Workspace Switcher.

Ik heb me verdiept in wmctrl en wat commando's uitgeprobeerd maar niet met het gewenste resultaat. Ik denk dat de commando's niet kloppen. Te weinig ervaring mee :'( Bv :
brave-browser && wmctrl -s Workspace 3

Kan iemand met script- en wmctrl-ervaring mij wellicht aangeven welke exacte commando's ik moet gebruiken om het door mij geschetste doel te bereiken? Ben nu al een uurtje of twee aan het aanmodderen :|
Een boek doet het altijd...

Re: browsers via script in specifieke workspace laten starten
« Reactie #3 Gepost op: 2021/01/15, 11:47:59 »
Anybody ;)?
Een boek doet het altijd...

Offline vanadium

  • Lid
Re: browsers via script in specifieke workspace laten starten
« Reactie #4 Gepost op: 2021/01/15, 11:50:43 »
Het is niet meer dan:
wmctrl -s 1 && chromium &

Hier een discussie daarover: https://unix.stackexchange.com/questions/27050/how-to-start-an-application-on-a-different-workspace.
"man wmctrl" zal je informatie geven over de manier waarop het commando wmctrl moet gebruikt worden.

Re: browsers via script in specifieke workspace laten starten
« Reactie #5 Gepost op: 2021/01/18, 14:23:11 »
Vanadium bedankt!

Ik ben al een heel eind gekomen voor een script-newbie, maar weet niet hoe en waar ik een extra commando om - laten we zeggen - 'applicatieX' ook nog te laten starten in dezelfde workspace waar de brave browser ook start (workspace 3 in dit geval).

Dit script werkt prima waarbij de vier browsers keurig in de workspaces 2,3,4 en 5 worden gestart (sleep commando gebruikt omdat anders de browsers niet in de gewenste workspaces openden; ze gingen elkaar a.h.w. overlappen) :

#!/bin/bash

# Start Firefox Workspace2
wmctrl -s 1 && firejail firefox &

# Start Brave Workspace3
sleep 5;wmctrl -s 2 && firejail brave-browser &

# Start Tor Workspace4
sleep 5;wmctrl -s 3 && torbrowser-launcher &

# Start Chromium Workspace5
sleep 10;wmctrl -s 4 && chromium &


Wat ik dus wil is 'applicatieX' ook laten starten in workspace 3 nadat brave browser is gestart. Ik heb het volgende uitgeprobeerd, maar 'applicatieX' wordt niet gestart en het scriptproces stopt :| :

# Start Brave Workspace3
sleep 5;wmctrl -s 2 && firejail brave-browser & && applicatieX

# Start Brave Workspace3
sleep 5;wmctrl -s 2 && firejail brave-browser && applicatieX

# Start Brave Workspace3
sleep 5;wmctrl -s 2 && firejail brave-browser &;applicatieX

Weet jij waar en hoe ik het commando moet plaatsen?
 
« Laatst bewerkt op: 2021/01/18, 14:37:27 door kfboerne »
Een boek doet het altijd...

Offline vanadium

  • Lid
Re: browsers via script in specifieke workspace laten starten
« Reactie #6 Gepost op: 2021/01/18, 15:53:40 »
sleep 5 ; wmctrl -s 2 && applicatie1 & applicatie2 &
zou het moeten doen.
« Laatst bewerkt op: 2021/01/18, 16:08:29 door vanadium »

Re: browsers via script in specifieke workspace laten starten
« Reactie #7 Gepost op: 2021/01/18, 17:14:09 »
sleep 5 ; wmctrl -s 2 && applicatie1 & applicatie2 &
zou het moeten doen.
Klopt helemaal! Ik maak een diepe buiging =D.
Een boek doet het altijd...

Re: browsers via script in specifieke workspace laten starten
« Reactie #8 Gepost op: 2021/04/24, 16:15:14 »
Het scriptje loopt tot dusver prima (met dank aan Vanadium!) alleen worden sommige windows niet gemaximaliseerd geopend en ik vind dat onhandig. Moet ze iedere keer manueel maximaliseren. Nou ben ik al weer wat uurtjes aan het uitproberen hoe ik dat in het scriptje verwerkt krijg maar het lukt niet :'(.

Het volgende topic op Askubuntu gevonden en van daaruit van alles geprobeerd : https://askubuntu.com/questions/703628/how-to-close-minimize-and-maximize-a-specified-window-from-terminal
Om te maximaliseren staat er dit commando : wmctrl -ir <window_id> -b add,maximized_vert,maximized_horz
Ik heb dat als volgt in het scriptje verwerkt -wat dus niet werkt!- voor wat betreft de eerste browser (Firefox) die opent :
# Start Firefox Workspace2
wmctrl -s 1 && firejail firefox & wmctrl -ir <window_id> -b add,maximized_vert,maximized_horz
 
en deze werkt ook niet :
# Start Firefox Workspace2
wmctrl -s 1 && firejail firefox & wmctrl :ACTIVE: -b add,maximized_vert,maximized_horz

Weet iemand misschien welk exact commando, op welke plaats etc. ik moet gebruiken om de windows bij opening van de browsers direct gemaximaliseerd te krijgen ;)? (Ik ben hier duidelijk niet voor in de wieg gelegd hoe interessant ik het ook vind =D).



Een boek doet het altijd...

Re: browsers via script in specifieke workspace laten starten
« Reactie #9 Gepost op: 2021/04/26, 14:38:59 »
Anybody :)?
Een boek doet het altijd...

Offline Bloom

  • Lid
Re: browsers via script in specifieke workspace laten starten
« Reactie #10 Gepost op: 2021/04/26, 15:09:06 »
Het actieve window zou dat waarin het script draait kunnen zijn, en dan werkt je :ACTIVE: niet of niet zoals je verwacht.


Probeer dit:
wmctrl -s 1 && firejail firefox ; FFid=$(wmctrl -l|grep Firefox|cut -d " " -f 1) ; wmctrl -ir $FFid -b add,maximized_vert,maximized_horz


Bovendien zorgt '&' ervoor dat taken parallel opgestart worden. Vermits je dat eigenlijk niet wil, want je wil dat het maximalisatiebevel wacht op het starten van de eigenlijke taak, gebruik je best ';' om de bevelen van elkaar te scheiden en te zorgen dat ze achtereenvolgens worden uitgevoerd.

Offline vanadium

  • Lid
Re: browsers via script in specifieke workspace laten starten
« Reactie #11 Gepost op: 2021/04/26, 17:53:48 »
Zo eenvoudig de eerste vraag was, zo lastig is de tweede. Controle over je vensters is niet gemakkelijk. Het is in eerste instantie de applicatie zelf die positie en grootte van het venster controleert. Doet die dat niet (helemaal), dan beslist de window manager. Achteraf kan je inderdaad dat venster aanpassen, maar daarvoor moet het al bestaan, en moet je het dus weten te vinden.

Het wmctrl commando na ; laten volgen op het commando waarmee het venster gegenereerd wordt, kan om twee redenen falen

1) Het eerste commando gaat niet naar de achtergrond. Dan zal wmctrl enkel uitgevoerd worden als het programma gesloten wordt, m.a.w., als het venster al niet meer bestaat.
2) Het eerste commando gaat wel naar de achtergrond - de prompt wordt vrijgegeven. Dat is zo met "firefox" en mogelijk ook met "firejail firefox". Terwijl dat venster aangemaakt wordt, wordt wmctrl aangeroepen: het is mogelijk dat het firefox venster nog niet klaar is op het ogenblik dat wmctrl aangeroepen wordt.

Een "oplossing" hier is een vertraging inbouwen, vb "sleep 0.5". Je maakt de tijd lang genoeg zodat het venster "klaar" is als je wmctrl aanroept.

Verder een vereenvoudiging: als je dan toch een venster zoekt op naam, dan kan je dat rechtstreeks in éénzelfde wmctrl commando doen:

wmctrl -i firefox -b add,maximized_vert,maximized_horz
zal in één klap het venster zoeken en maximalizeren.

Dan zou het worden als:

wmctrl -s 1 && firejail firefox & sleep 0.5 && wmctrl -i firefox -b add,maximized_vert,maximized_horz
« Laatst bewerkt op: 2021/04/26, 18:04:53 door vanadium »

Re: browsers via script in specifieke workspace laten starten
« Reactie #12 Gepost op: 2021/04/28, 16:57:04 »
Bloom en Vanadium allereerst bedankt voor jullie reacties! Erg leerzaam door de duidelijke uitleg erbij. Een 'programmeerwonder' zal ik denk ik nooit worden ( ;)), maar ik ben inmiddels wel in staat om de commando's heel redelijk te 'lezen' en dat maakt alles aanzienlijk duidelijker.

Het meest handig en simpel zou denk ik zijn wanneer iedere browser de ingebouwde optie zou hebben om te kunnen kiezen voor 'venster(s) altijd gemaximaliseerd starten' of iets van dergelijke strekking. In Firefox heb ik zo'n optie niet kunnen vinden. Maar goed, daar zal mogelijk een (veiligheids?) reden voor zijn. Maar daar gaat dit topic niet over.

@Vanadium : ik heb het commando wmctrl -s 1 && firejail firefox & sleep 0.5 && wmctrl -i firefox -b add,maximized_vert,maximized_horz uiteraard uitgeprobeerd, maar helaas zonder het beoogde resultaat :'(. Ik heb 0.5 gewijzigd in 4 en zelfs 15 om te kijken of dat wellicht een oplossing bracht maar ook dat hielp niet.
@Bloom : jouw commando heb ik ook uitgeprobeerd, maar ook hier geen resultaat.

Nooit geweten dat venster beheer zo moeilijk kan zijn. En dan wil ik ook nog mijn overige browsers (zoals al eerder in dit topic vermeld) gemaximaliseerd laten opstarten. Dat zou denk ik makkelijk moeten zijn (?) wanneer ik het correcte commando heb voor Firefox.

Houdt het hier op of hebben jullie nog een mogelijk andere commando in petto dat wellicht wel zou (kunnen) werken? In het askubuntu-topic heeft degene die antwoordt, het over het soms 'buggy' functioneren van wmctrl in Unity en Gnome (ikzelf werk met Xfce op Xubuntu 20.04) en dat xdotool beter zou kunnen zijn :
'From my own experience, using maximizing in a script; Using wmctrl to maximize / unmaximize can be a bit buggy on both Unity and Gnome, while the xdotool option works more robust in my experience. In most scripts, I end up in using a mix of both wmctrl and xdotool.'
Zou er met xdotool meer kans van slagen zijn en zo ja wat wordt het commando dan?
« Laatst bewerkt op: 2021/04/28, 16:59:29 door kfboerne »
Een boek doet het altijd...

Offline Bloom

  • Lid
Re: browsers via script in specifieke workspace laten starten
« Reactie #13 Gepost op: 2021/04/28, 17:15:27 »
Probeer dit eens:
wmctrl -s 1 && firejail firefox & sleep 10 ; wmctrl -ir :ACTIVE: -b add,maximized_vert,maximized_horz

Offline vanadium

  • Lid
Re: browsers via script in specifieke workspace laten starten
« Reactie #14 Gepost op: 2021/04/28, 17:52:43 »
Ik begrijp het ook niet meer. Gisteren lukte het, nu krijg ik "No window was specified". Misschien beter met xdotool, inderdaad.

Offline Bloom

  • Lid
Re: browsers via script in specifieke workspace laten starten
« Reactie #15 Gepost op: 2021/04/28, 18:42:01 »
Ik heb er even op moeten zoeken, maar deze werkt iedere keer bij mij:
firejail firefox & sleep 2; wmctrl -ir $(wmctrl -l|grep -i  firefox|cut -d " " -f 1) -b add,maximized_vert,maximized_horz -t 1
Deze opent de applicatie eerst, wacht 2 seconden om het venster de tijd te geven te openen en voert dan een actie uit om het venster-id te achterhalen en dat te gebruiken voor een maximalisatie-opdracht gevolgd door een verplaatsing naar desktop 2 (je ziet 1 staan in de opdracht omdat wmctrl begint vanaf 0 voor de eerste desktop).

Offline vanadium

  • Lid
Re: browsers via script in specifieke workspace laten starten
« Reactie #16 Gepost op: 2021/04/29, 11:18:19 »
Het verplaatsen van werkplek gaat door bij mij, maar de vensters worden niet veranderd.


Re: browsers via script in specifieke workspace laten starten
« Reactie #18 Gepost op: 2021/04/30, 16:06:13 »
Probeer dan de sleep-parameter te verhogen van 2 naar 5 naar 10 totdat het lukt.
Heb ik geprobeerd maar helaas ook hier geen resultaat voor wat betreft het maximaliseren van het venster.

Net als bij Vanadium gaat het verplaatsen naar de werkplek wel goed.
« Laatst bewerkt op: 2021/04/30, 16:09:22 door kfboerne »
Een boek doet het altijd...

Offline Bloom

  • Lid
Re: browsers via script in specifieke workspace laten starten
« Reactie #19 Gepost op: 2021/04/30, 17:04:19 »

En als Firefox geopend is in een venster (dus niet maximized) en je gaat in dezelfde workspace een terminal openen en je paste deze regel daarin:
wmctrl -ir $(wmctrl -l|grep -i  firefox|cut -d " " -f 1) -b add,maximized_vert,maximized_horz

Wordt het venster dan wel gemaximaliseerd? Indien niet, geef dan eens wat de output van het volgende is met geopende Firefox:
wmctrl -l|grep -i  firefox|cut -d " " -f 1

Re: browsers via script in specifieke workspace laten starten
« Reactie #20 Gepost op: 2021/05/02, 15:49:51 »
Ik heb beide commando's uitgeprobeerd. Bij beiden gebeurt er helemaal niets. Firefox wordt ook niet meer geopend :'(.

Een boek doet het altijd...

Offline vanadium

  • Lid
Re: browsers via script in specifieke workspace laten starten
« Reactie #21 Gepost op: 2021/05/02, 17:41:32 »
Dat komt dan enkel omdat Bloom alleen het gedeelte weergeeft dat betrekking heeft op het maximalizeren van het venster.

Ik zei al dat dat je moeilijker vraag was. Nu is het zo dat Firefox normaal opstart op de wijze waarop het laatst werd gesloten. Als Firefox gemaximalizeerd was bij het afsluiten, dan start ie de volgende keer weer gemaximalizeerd op. Daarom heb ik althans bij Firefox geen probleem: die start altijd netjes gemaximaliseerd op. Is het misschien omdat je in firejail draait, dat dit niet werkt?

Een andere methode, die bij mij werkt, is een lelijke hack te gebruiken: met xdotool de toetsencombinatie indrukt om het venster te maximalizeren:

firefox & sleep 0.2 ; xdotool key Super+Up
doet het bij mij. Dit start firefox op, en na 0.2 seconden wordt op Super+Up gedrukt, de toetsenbordcombinatie die in standaard Ubuntu vensters maximalizeert. Je kan ook Alt+F10 gebruiken: dit werkt in de meeste desktops, maar is een schakelaar: als het venster al gemaximaliseerd is, dan zal het venster genormaliseerd worden.

xdotool kan ook een venster vergroten zoals wmctrl dat hoort te kunnen. Het werkt misschien beter dan wmctrl hiervoor.

Offline vanadium

  • Lid
Re: browsers via script in specifieke workspace laten starten
« Reactie #22 Gepost op: 2021/05/02, 18:03:27 »
IJverig als we zijn, helpen we verder met het huiswerk: een combinatie van xdotool en wmctrl doet het voor mij:

firefox & sleep 0.2 && wmctrl -ir $(xdotool search --sync --onlyvisible --class "Firefox" | tail -n 1) -b add,maximized_vert,maximized_horz
De venstercode wordt met xdotool gezocht. De "tail -n -1" neemt het laatste nummer uit de lijst, d.w.z., het meest recent geopende venster (enkel nodig als er al Firefox vensters zijn). Indien tragere computer: 0.2 (seconden) verlengen.

Offline vanadium

  • Lid
Re: browsers via script in specifieke workspace laten starten
« Reactie #23 Gepost op: 2021/05/02, 18:36:42 »
En uiteindelijk een scriptje dat je aanroept met "maxprog firefox"  om firefox op te starten met gemaximalizeerd venster:

#!/bin/bash
APP="$1"
NUM=$(xdotool search --sync --onlyvisible --class "$APP" | wc -l)
CUR=$NUM
$APP &
until [ $(xdotool search --sync --onlyvisible --class "$APP" | wc -l) -gt ${NUM} ] ; do
done
wmctrl -ir $(xdotool search --sync --onlyvisible --class "$APP" | tail -n 1) -b add,maximized_vert,maximized_horz
Dit script telt het aantal open vensters van Firefox, en start dan een nieuw venster van firefox op. Het blijft nu hangen (until;  do ... done loop) zolang het aantal vensters van firefox niet verhoogd is. Wanneer dat wel het geval is, gaat het script verder en maximaliseert het laatst bijgemaakte venster.

Re: browsers via script in specifieke workspace laten starten
« Reactie #24 Gepost op: 2021/05/05, 15:01:39 »
Vanadium bedankt voor alle moeite =D! Ik zit momenteel wat krap in m'n tijd, maar ga alles uitproberen zodra mogelijk en kom er hier dan op terug.
Een boek doet het altijd...