Ubuntu két firefox oldal megjelenítése két különböző kijelzőn

Fórumok

Feltúrtam a netet, de nem találtam választ. Azt szeretném, hogy kettő különböző weboldal indításkor automatikusan elinduljon külön-külön monitoron. Amire jutottam, annyi, hogy elvileg címezhetem a kimeneteket, de nem jön össze.

a xrandr kimenete a következő:

Monitors: 2
 0: +*XWAYLAND0 1920/530x1080/300+0+0  XWAYLAND0
 1: +XWAYLAND1 1680/470x1050/300+1920+0  XWAYLAND1

Ha kiadom ezt: (persze ezt még finomítanám)

firefox --display=:0.0

Error: cannot open display: :0.0, illetve ha az 1-et, akkor is ez a válasz.

sajnos ennél tovább nem jutottam.

Ha valaki tudna segíteni, megköszönném.

Hozzászólások

Nem használom a wayland protokollt, de lehet, valami ilyesmivel próbálkoznék:

WAYLAND_DISPLAY=wayland-1 firefox &
 

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Multiseat setup és két külön user? X? Ezeket próbálnám, ha másképp nem megy.

Gnome Normibuntun nem tudom hogy lehet ilyet, sajnos a mainstream DE-k ilyen speciális igényekre elég korlátosak lehetnek, bár valami hack talán létezik rá, pl. Gnome Tweaks-ben. Én bspwm alatt így simán meg tudnám oldani, ha lenne több monitorom és ilyen kéne, beírnám a ~/.config/bspwmrc végére:

bspc rule -a másikweboldalcíme monitor='^2'

Itt a weboldal címén nem az URL-t értem, hanem a weboldalnak azt a tényleges címét, ami a böngésző ablakának fején, vagy a fülön megjelenik ténylegesen, pl. a HUP főoldalán ez "Címlap | HUP".

A Firefoxot meg így indítanám, mondjuk egy scriptből:

#!/bin/sh
firefox egyikurl
firefox -new-window másikurl

Aztán legfeljebb ezt a scriptet bedrótoznám sxhkdrc-ben egy gyorsbillentyűre:

super + shift + f
  /path/to/script

Annyit előre tudok mondani, ha tud is ilyet a Gnome, akkor azt nem xrandr-rel kell csinálni. A Gnome default Wayland sessionben fut, a Wayandnek saját megoldása van a monitorok kezelésére. A xrandr, ahogy a neve is mutatja, X szerverhez készült, nem Wayland-re!

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

sajnos a mainstream DE-k ilyen speciális igényekre elég korlátosak lehetnek

Egyszer érdemes lenne rájönnöd, hogy nem csak a saját kis homokozóid működnek. A KDEben pl van egy komplett, szépen konfigurálható rule system, ahol window propertyk ( application class, type, role, title..) alapján be lehet állítani kb bármit is, screen, virtual desktopot, méretet, helyet, tök tudját, és ezt lehet akár forceolni is, akkor folyamatosan nézi. Szóval a firefoxot pl a title alapján menet közben is átbaszarintja a megfelelő screenre, ha az adott oldalra navigálsz, és megjelenik a title. Uh kb elég elindítani a firefox --new-window akarmi urlt, megírni a két forceos rulet, és boldogság.

És akkor még az is megoldódik, hogy nem kell gyorsbillentyű, ami kevésbé teljesíti az "automatikusan" kritériumot. (Az sh-d, meg nem működne, mert az első firefox kilépéséig nem indul el a második, de jók ezek a sajtreszelős nem normi cuccok)

Ja, és ha ez kevés lenne, akkor ott vannak a kwin scriptek :)

Az a baj, hogy te is saját homokozódból írogatsz. Épp annyira releváns, amit én írtam, hiszen a kérdező Gnome-ot használ KDE helyett. Ráadásul itt most nehezít, hogy a Gnome default Wayland session-nel fut, így egyéb X-es (wmctrl, xdo, xdotool, stb.) megoldásokkal sem lehet próbálkozni.

Még mindig nem zárom ki, hogy van egyébként Gnome-ra valami tweaks hack, vagy addon, ami tudja, de nem találok ilyet.

Amit én írtam, arra se kell gyorsbillentyű, a futó WM automatikusan detektálja, hogy valami olyan programot indítottak el, aminek másik monitorra kellene mennie. A gyorsbillentyűt csak a két weboldal indítására írtam, ha egyszerre el akarod őket indítani. Működik anélkül is, csak akkor meg azért nem lesz automata, mert a két kérdéses weboldalt kell neked indítani. Így teljesen automatikus nem lesz, hacsak be nem rakod valami automatikus indításba, ez bspwm alatt a ~/.config/bspwm/bspwmrc vagy akár xinit scriptbe, XDG autostart-ba, stb. is be lehet tenni, persze ezek is X only megoldások.

Wayland alatt a Sway, Hyperland, Qtile, labwc (és talán az utóbbin keresztül az LXQt) tuti tud ilyet. Ezek szerint a KDE is. Sajnos ez a baj a Waylanddel, ha lemegyünk ilyen mélyre, akkor kiderül, hogy az ilyen X alatt alap könnyű dolgok Waylanden nehezen oldhatók meg, ha meg is oldhatók, az nagyon függ a konkrét Wayland kompozitortól. Ezt nem érti a sok soydev, hogy nem lehet az X-et csak úgy elavultatni, mert egy csomó területen jobban van szabványosítva, támogatva, többféle tool létezik hozzá, többféle rendszer között közös nevező, nem lehet most csak azért kidobni, meg betiltani, mert valaki a Red Hatnél elfingotta magát, hogy már pedig mostantól csak Wayland lesz mindenkinek.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Az a baj, hogy te is saját homokozódból írogatsz. Épp annyira releváns, amit én írtam, hiszen a kérdező Gnome-ot használ KDE helyett. Ráadásul itt most nehezít, hogy a Gnome default Wayland session-nel fut, így egyéb X-es (wmctrl, xdo, xdotool, stb.) megoldásokkal sem lehet próbálkozni.

Abban igazad van, hogy a kde nem oldja meg a gnomeot (bár, ahogy nézem kde lett a vége :) ), viszont nem is azért mondtam, hanem azért, mert megint jöttél azzal, hogy a vacak normi cuccokkal nem lehet ilyet megcsinálni, ami persze, mint az esetek jelentős részében, már megint nem igaz :)

Még mindig nem zárom ki, hogy van egyébként Gnome-ra valami tweaks hack, vagy addon, ami tudja, de nem találok ilyet.

Olybá tűnik, hogy van egy beépített auto-move-windows extension (meg pár hasonló tool), aminek a doksija bár elég non existent, de találtam bugot, hogy akad valami másikkal waylandon, szóval elvileg megy waylandon is. De jep, a gnome valóban szeret fura (szerintük) edge caseket nem kezelni. (Pl én azért jöttem le róla, mert a multi monitort is csak valami extensionnel sikerült megoldani jó darabig, mert alapból fos volt. Azóta megoldották, bár azt hiszem, egymás alatt még mindig nem tudnak lenni, ahogy én szeretem pl) Mondjuk több threadet olvastam, ahol kb azt mondták, hogy ők nem ellenségei az opcióknak, csak valahogy mindig az a vége, hogy az alap usecaset kiegyszerűsíteni sikerül, a többire meg nincs elég kéz :)

Amit én írtam, arra se kell gyorsbillentyű, a futó WM automatikusan detektálja, hogy valami olyan programot indítottak el, aminek másik monitorra kellene mennie. A gyorsbillentyűt csak a két weboldal indítására írtam, ha egyszerre el akarod őket indítani. Működik anélkül is, csak akkor meg azért nem lesz automata, mert a két kérdéses weboldalt kell neked indítani. Így teljesen automatikus nem lesz,

Nem teljesen értem, de akkor most az van, hogy a kérdező bajára a nem normi megoldásod nem ad megoldást, csak darabjaiban? :)

Wayland alatt a Sway, Hyperland, Qtile, labwc (és talán az utóbbin keresztül az LXQt) tuti tud ilyet. Ezek szerint a KDE is. Sajnos ez a baj a Waylanddel, ha lemegyünk ilyen mélyre, akkor kiderül, hogy az ilyen X alatt alap könnyű dolgok Waylanden nehezen oldhatók meg, ha meg is oldhatók, az nagyon függ a konkrét Wayland kompozitortól. Ezt nem érti a sok soydev, hogy nem lehet az X-et csak úgy elavultatni, mert egy csomó területen jobban van szabványosítva, támogatva, többféle tool létezik hozzá, többféle rendszer között közös nevező, nem lehet most csak azért kidobni, meg betiltani, mert valaki a Red Hatnél elfingotta magát, hogy már pedig mostantól csak Wayland lesz mindenkinek.

Jajj, hagyjuk már. Egyrészt ez egy teljesen edge case window managerből, és szinte biztosan indikálja, hogy valami kiosk szerű működés kell, szóval mindegy, mi fogja elindítani azt a két ablakot, hogy aztán statikusan ott maradjon, erre most adtál te vagy 3 megoldást. Másrészt úgy tűnik, hogy a nagyok közül mégiscsak tudja a gnome is meg a kde is, ha tippelnem kellene, akkor van valami az xfcehez is, szóval mi is nem megy?

Harmadrészt ez pontosan arról szól, hogy a soydevek direkt visszavettek abból a rengeteg lófaszból, ami az x körül burjánzott, ez egy tudatos döntés volt, hogy ezentúl ha ilyet akar valaki csinálni, tegye be a saját megoldásába. És mint látszik, ha van rá igény, meg is csinálják. Ahol meg nincs, ott nem kötelező kerülgetni hatszáz másik ilyen edge cassel együtt. Igazából a wayland tök linux "one thing, one thing well" szemléletű, nem is értem a sirkánozást.

Szerkesztve: 2024. 04. 01., h – 04:02

Egy C++ program addig megoldotta, hogy mindkét oldal megjelenik, de csak az első kijelzőn egymás fölött. És átváltottam chromium-ra

Itt a kód, hátha valaki okosabb:

#include <iostream>
#include <unistd.h>
#include <sys/wait.h>

int main() {
    // Első gyermekprocessz létrehozása
    pid_t child1_pid = fork();
    
    if (child1_pid == 0) { // Gyermekprocessz
        // Weboldal URL-je
        char *url = (char *)"https://lottoeredmeny.azurewebsites.net/egykep7.html";
        // Parancs összeállítása
        char *args[] = {(char *)"chromium-browser", (char *)"--new-window", (char *)"--display=:0", (char *)"--start-fullscreen", url, NULL};
        // Chromium böngésző megnyitása teljes képernyőn az első monitoron
        execvp("chromium-browser", args);
    } else if (child1_pid > 0) { // Szülőprocessz
        // Második gyermekprocessz létrehozása
        pid_t child2_pid = fork();
        if (child2_pid == 0) { // Gyermekprocessz
            // Weboldal URL-je
            char *url = (char *)"https://lottoeredmeny.azurewebsites.net/putto7.html";
            // Parancs összeállítása
            char *args[] = {(char *)"chromium-browser", (char *)"--new-window", (char *)"--display=:1", (char *)"--start-fullscreen", url, NULL};
            // Chromium böngésző megnyitása teljes képernyőn a második monitoron
            execvp("chromium-browser", args);
        } else if (child2_pid < 0) { // Fork hiba
            std::cerr << "Hiba a második gyermekprocessz létrehozásakor." << std::endl;
            return 1;
        }
    } else { // Fork hiba
        std::cerr << "Hiba az első gyermekprocessz létrehozásakor." << std::endl;
        return 1;
    }

    // Szülőprocessz várakozik a gyermekprocesszekre
    wait(NULL);
    wait(NULL);

    return 0;
}

Szóval, jelenleg eddig jutottam

Szerkesztve: 2024. 04. 01., h – 11:07

Wayland-hez nem tudok hozzászólni, nálam X alatt a `wmctrl' a megoldás.

Ehhez hasonló scriptet használok: (ezzel teszem ki a kívánt ablakot a kívánt monitorra - a monitorok egy nagy virtuális screen-t alkotnak)

WINDOW_ID="Ez az egyik weboldal címe - Mozilla Firefox"

# Set active
wmctrl -a "${WINDOW_ID}"

# Remove "fullscreen" property
wmctrl -r "${WINDOW_ID}" -b remove,fullscreen

# Remove "hidden" property
wmctrl -r "${WINDOW_ID}" -b remove,hidden

# Remove "maximized_*" property
wmctrl -r "${WINDOW_ID}" -b remove,maximized_horz,maximized_vert

# Move to second display
wmctrl -r "${WINDOW_ID}" -e 0,1921,0,-1,-1

# Add "maximized_*" property
# wmctrl -r "${WINDOW_ID}" -b add,maximized_horz,maximized_vert

# Add "fullscreen" property
wmctrl -r "${WINDOW_ID}" -b add,fullscreen

# Set active
wmctrl -a "${WINDOW_ID}"

Megoldódott.

Feltettem a kubuntut, Firefoxot használtam. Van egy olyan tulajdonsága a KDE-nek, vagy legalábbis nálam ez van, hogy amelyik monitoron van az egérkurzor, ott jeleníti meg a Firefoxot. A scriptben ezt használtam ki:

#!/bin/bash

# Függvény a Firefox indítására a megadott monitoron
firefox_inditas_monitoron() {
    local profil="$1"
    local url="$2"
    
    # Firefox megnyitása a megadott profilúval, URL-lel, a megadott monitoron
    firefox -P "$profil" -new-window -fullscreen -kiosk "$url" &
    
    # Várakozás, hogy a Firefox megnyíljon
    sleep 5
}

# Az elsődleges képernyő közepére mozgatjuk az egérkurzort
xdotool mousemove --screen 0 $(xrandr | grep -w primary | awk '{print $4}' | awk -F '+' '{print $2}' | sed 's/x/,/')

# Firefox megnyitása kiosk_1 profillal az elsődleges monitoron
firefox_inditas_monitoron "kiosk_1" "https://lottoeredmeny.azurewebsites.net/egykep.html"

# Az aktuális egérpozíció lekérése
x_pos=$(xdotool getmouselocation --shell | grep "X" | awk -F "=" '{print $2}')

# A második link előtt az egérkurzor pozicionálása az aktuális pozíciótól jobbra 800 pixellel
x_pos=$((x_pos + 800))
xdotool mousemove $x_pos $(xdotool getmouselocation --shell | grep "Y" | awk -F "=" '{print $2}')

# Firefox megnyitása kiosk_2 profillal az aktuális monitoron
firefox_inditas_monitoron "kiosk_2" "https://lottoeredmeny.azurewebsites.net/putto.html"

Egyszerűen arrébb raktam az egérkurzort.

KDE alatt nézd meg ezt:

Ablakfejlécén jobb klikk -> További műveletek -> Speciális ablakbeállítások módosítása -> Tulajdonság hozzáadása