Ενεργό παράθυρο, εστίαση.

...εγκαταστάσεις, αναβαθμίσεις, διαχείριση partitions, boot-loader, κλπ

Συντονιστής: adem1

Κανόνες Δ. Συζήτησης
Στην ενότητα αυτή γράφουμε θέματα/ προβλήματα μόνο για το UBUNTU ή τα παράγωγά του.

Ενεργό παράθυρο, εστίαση.

Δημοσίευσηαπό malos » 08 Απρ 2024, 16:48

Αρκετές εφαρμογές έχουν μία συντόμευση πληκτρολογίου για την εκτύπωση. Την Ctrl+P.
Ίσως και όλες οι εφαρμογές που μπορούν να εκτυπώσουν κάτι. Παρατηρώ ότι έχω ανοιχτό το firefox, πατάω πατάω αυτά τα πλήκτρα, και ανοίγει μία χαρά ο διάλογος για την εκτύπωση. Αντίστοιχα όταν έχω ανοιχτό κάποιον viewer και κοιτάζω μία εικόνα, πατάω πάλι αυτά τα πλήκτρα και ετοιμάζεται ξανά ο διάλογος για εκτύπωση έτοιμος να εκτυπώσει αυτή την εικόνα.
Έφτιαξα ένα script όμως που είναι αυτό
Κώδικας: Επιλογή όλων
#!/bin/bash
xdotool key Ctrl+P

Το έκανα εκτελέσιμο και του έβγαλε ένα εικονιδιάκι στην μπάρα εργασιών.
Έχω λοιπόν ανοιχτό το παράθυρό μου, είναι σε κατάσταση focus, είναι forground είναι active. Πατάω το εικονιδιάκι να εκτελεστεί το σκριπτ και δεν κάνει τίποτα. Το καταλαβαίνω βέβαια με το που κάνω κλικ εκεί πέρα χάνεται η εστίαση.
Έχετε καμία γνώμη για το πώς να καθιστώ for ground το παράθυρο που με ενδιαφέρει; Ακόμα κι αν κάνω κλικ κάπου αλλού; Ήτανος πάντων έχετε κάποια ιδέα πώς να εκτελεστεί αυτό το σενάριο για το παράθυρο που με ενδιαφέρει; Φαντάστηκα μήπως υπάρχει κάτι που μας δείχνει το ιστορικό ενεργών παραθύρων, ώστε να διαλέξω το τελευταίο. Η xprops μπας και έχει κάποια σχέση;
Κάτι άλλο;
Επεξεργαστής: AMD Ryzen 9 5900x
Μνήμη Gskill 16gb (2X8gb), 3200 mh, CL 14
Μητρική: Asrock X570 phantom gaming X
Τροφοδοτικό: Corsair 850 platinum
Δίσκος: SSD Corsair MP600 (1 TB)
Άβαταρ μέλους
malos
saintTUX
saintTUX
 
Δημοσιεύσεις: 1251
Εγγραφή: 02 Νοέμ 2008, 12:00
Εκτύπωση

Re: Ενεργό παράθυρο, εστίαση.

Δημοσίευσηαπό sotos21 » 08 Απρ 2024, 23:59

Αν επιλέξεις με δεξί κλικ στην μπάρα του παραθύρου που σε ενδιαφέρει το ¨Πάντα στην κορυφή" μήπως κάνεις κάτι;
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Καθόλου ┃ Αγγλικών: Καθόλου
2 Ubuntu 23.10 Mantic Minotaur 6.3.0-7-generic 64bit (el_GR.UTF-8, Unity:Unity7:ubuntu unity)
3 AMD Ryzen 7 7730U with Radeon Graphics ‖ RAM 15368 MiB ‖ASUS TN3604YA - ASUS Vivobook_S_Flip TN3604YA_TN3604YA
4 Advanced Micro Devices, Inc. [AMD/ATI] Barcelo [1002:15e7] {amdgpu}
5 wlp1s0: MEDIATEK Corp. Device [14c3:7922]
Άβαταρ μέλους
sotos21
Freedom
Freedom
 
Δημοσιεύσεις: 6304
Εγγραφή: 21 Φεβ 2011, 21:28
Τοποθεσία: Αθήνα
Εκτύπωση

Re: Ενεργό παράθυρο, εστίαση.

Δημοσίευσηαπό malos » 09 Απρ 2024, 12:01

sotos21 έγραψε:Αν επιλέξεις με δεξί κλικ στην μπάρα του παραθύρου που σε ενδιαφέρει το ¨Πάντα στην κορυφή" μήπως κάνεις κάτι;


Δεν γίνεται και πάλι. Αλλά και να γινότανε δεν το θέλω ως λύση γι αυτό που θέλω να κάνω. Θέλω κατευθείαν από το script χωρίς να χρειάζεται από μεριά μου κάποια χειροκίνητη παρέμβαση.
Βρήκα αυτό αλλά διαβάζει μόνο το όνομα του παραθύρου, όχι τη διαδρομή του.

Κώδικας: Επιλογή όλων
import time
from ewmh import EWMH

ewmh = EWMH()

# περιμένω 5 δευτερόλεπτα για να γίνει ενεργό το παράθυρο κάνοντας κλικ με το ποντίκι στο διάστημα αυτό των 5 δευτερολέπτων. Aλλά και πάλι δεν είναι η λύση που θέλω
time.sleep(5)

# Oρίζεται ποιο είναι το ενεργό παράθυρο
active_window = ewmh.getActiveWindow()

# Διαβάζει το όνομα του παραθύρου με βάση το id
window_name = ewmh.getWmName(active_window)

# Δείχνει το όνομα του παραθύρου στο τερματικό
print("Active Window Name:", window_name)
Επεξεργαστής: AMD Ryzen 9 5900x
Μνήμη Gskill 16gb (2X8gb), 3200 mh, CL 14
Μητρική: Asrock X570 phantom gaming X
Τροφοδοτικό: Corsair 850 platinum
Δίσκος: SSD Corsair MP600 (1 TB)
Άβαταρ μέλους
malos
saintTUX
saintTUX
 
Δημοσιεύσεις: 1251
Εγγραφή: 02 Νοέμ 2008, 12:00
Εκτύπωση

Re: Ενεργό παράθυρο, εστίαση.

Δημοσίευσηαπό Maras » 09 Απρ 2024, 12:52

Για την οικονομία της συζήτησης θα υποθέσω ότι είσαι σε Ubuntu, με GNOME, και X11.
Το script ας το ονομάσουμε printing.sh, θα περιέχει:
Κώδικας: Επιλογή όλων
#!/bin/bash
xdotool key Ctrl+p

Προσοχή μικρό p, γιατί κεφαλαίο μεταφράζεται σε Ctrl+Shift+p.
Φτιάξε και ένα αρχείο με το όνομα ctrl-p.desktop μέσα στον κατάλογο ~/.local/share/applications/, μέσα να περιέχει τα εξής:
Κώδικας: Επιλογή όλων
[Desktop Entry]
Type=Application
Name=Ctrl+P Shortcut
Comment=Simulate Ctrl+P key press
Exec=/home/monopati_gia_to_ektelesimo/printing.sh
#Icon=/path/to/your/icon.png
Terminal=false
StartupNotify=false

Τροποποίησε τις γραμμές Exec και Icon κατάλληλα για να δείχνουν στο script και σε εικονίδιο (εάν θέλεις), και κάνε το *.desktop αρχείο εκτελέσιμο.
Δώσε την εντολή:
Κώδικας: Επιλογή όλων
sudo update-desktop-database

και ψάξε στις εφαρμογές, την συγκεκριμένη με το όνομα Ctrl-P Shortcut, πρόσθεσέ την στο dock, και όποτε κάνεις κλικ θα τρέχει το script για την εφαρμογή που είχε focus τελευταία, πριν πάει ο mouse cursor στον dock launcher.

Εάν θέλεις την τελευταία ενεργή εφαρμογή, κάνε το script σου έτσι:
Κώδικας: Επιλογή όλων
#!/bin/bash

# Get the window ID of the currently focused window
window_id=$(xdotool getactivewindow)

# Simulate the Ctrl+p key press event in the currently focused window
xdotool windowactivate --sync $window_id key Ctrl+p
“Long is the way, and hard, that out of hell leads up to light.”
Άβαταρ μέλους
Maras
saintTUX
saintTUX
 
Δημοσιεύσεις: 1561
Εγγραφή: 25 Ιούλ 2017, 12:49
Εκτύπωση

Re: Ενεργό παράθυρο, εστίαση.

Δημοσίευσηαπό malos » 10 Απρ 2024, 13:28

Πολύ καλό. Μπράβο ρε φίλε. Ευχαριστώ.
Παίρνει το τελευταίο σε σειρά active window.

Προσωρινά θα ήθελα να βρω τρόπο να παίρνει και το προτελευταίο, αλλά μελλοντικά μάλλον δεν μου χρειάζεται. Και εξηγώ
(όχι ότι έχει σημασία ή ενδιαφέρον, τον πόνο μου λέω. Με ξέρεις τώρα)

Κώδικας: Επιλογή όλων

"τύπωσε το": "/home/family/scripts/ada/printing.sh",
"τύπωσέ το": "/home/family/scripts/ada/printing.sh",
"τύποσέ το": "/home/family/scripts/ada/printing.sh",
"τι ποσέ το": "/home/family/scripts/ada/printing.sh",
"τι ποσό του": "/home/family/scripts/ada/printing.sh",
"τι πώς έχω": "/home/family/scripts/ada/printing.sh",
"τι ποσέτο": "/home/family/scripts/ada/printing.sh",
"τύπος έχω": "/home/family/scripts/ada/printing.sh",
"τυποσέτο": "/home/family/scripts/ada/printing.sh",
"τιποσέ το": "/home/family/scripts/ada/printing.sh",
"τύποσε": "/home/family/scripts/ada/printing.sh",
"τύπωσε": "/home/family/scripts/ada/printing.sh",
"τιποσέ το": "/home/family/scripts/ada/printing.sh",
"τι ποσό το": "/home/family/scripts/ada/printing.sh",
"τυποσέ το": "/home/family/scripts/ada/printing.sh",
"τύπος": "/home/family/scripts/ada/printing.sh",


Αυτά είναι στο κομμάτι του κώδικα που λέγεται actions. Επειδή ακούει ότι θέλει, αντέγραψα ό,τι άκουγε. Και πάλι δεν φτάνουν. Ξεκίνησα με το "τύπωσε το" και μου έχει βγάλει μέχρι και "τι υποθέτω", "τι υπόθετο" και τέτοια.

Το λέω όσο μπορώ καθαρά και δουλεύει

Εικόνα

Βέβαια για να του πω την εντολή πρέπει να κάνω κλικ στο μικροφωνάκι το κόκκινο που βλέπεις. Με το κλικ χάνεται η εστίαση και την παίρνει το widget. Οπότε αμέσως μετά το κλικ στο μικροφωνάκι, έκανα κι ένα κλικ μέσα στη σελίδα στον firefox. Του είπα "τύπωσε" και τσουπ! Άνοιξε ο διάλογος εκτύπωσης.

Αυτό που λέω για μελλοντικά, εννοώ ότι κάποια στιγμή θα το κάνω να είναι σε διαρκή κατάσταση ακρόασης και αντί για πάτημα του start recognition button, θα του δίνω μία wake word. Πιστεύω τότε δεν θα κλέβει εστίαση. Έχω βρει τρόπο να είναι σε μόνιμη κατάσταση ακρόασης και χωρίς wake word. Αλλά ό,τι ακούει, που μιλάμε κανονικά στο σπίτι (κάποιες φορές :wtf: ) αντιδράει με "δεν αναγνωρίζεται η εντολή".

Αυτά.
Επεξεργαστής: AMD Ryzen 9 5900x
Μνήμη Gskill 16gb (2X8gb), 3200 mh, CL 14
Μητρική: Asrock X570 phantom gaming X
Τροφοδοτικό: Corsair 850 platinum
Δίσκος: SSD Corsair MP600 (1 TB)
Άβαταρ μέλους
malos
saintTUX
saintTUX
 
Δημοσιεύσεις: 1251
Εγγραφή: 02 Νοέμ 2008, 12:00
Εκτύπωση

Re: Ενεργό παράθυρο, εστίαση.

Δημοσίευσηαπό Maras » 11 Απρ 2024, 13:03

Ωραίος, δοκίμασε επίσης να ακολουθεί το focus, στην επιφάνεια εργασίας, τον κέρσορα του ποντικιού για να μην χρειάζεται να κάνεις κλικ.
“Long is the way, and hard, that out of hell leads up to light.”
Άβαταρ μέλους
Maras
saintTUX
saintTUX
 
Δημοσιεύσεις: 1561
Εγγραφή: 25 Ιούλ 2017, 12:49
Εκτύπωση


Επιστροφή στο Λειτουργικό Σύστημα