taildragger
Anmeldungsdatum: 11. Mai 2016
Beiträge: 76
Wohnort: Löwenberger Land
|
Guten Tag, Ich hoffe Ihr könnt mir helfen, ich finde einfach nichts im Netz, vielleicht auch weil ich falsch suche. Ich möchte unter Ubuntu 20.04 LTS das Kleine Programm "Counter" (ist aber eigentlich egal welches Programm) in einer bestimmten Fenstergröße starten. Aktuell startet es immer maximiert. Ich verkleinere es dann jedes Mal und da kostet sehr viel Zeit. Gibt es eine Möglichkeit ein kleines Startscript zu schreiben, welches das Programm gleich in die richtige Größe zwingt? Oder hat Ubuntu sogar eine Funktion dafür, welche ich noch nicht entdeckt habe? Vielen Dank vorab.
Steffen
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17548
Wohnort: Berlin
|
Unter 18.04 finde ich das Programm nicht. Hast Du einen Link dazu? Je nach dem mit welcher Bibliothek/Sprache das geschrieben ist, kann man es mit Startparametern aufrufen, die die Größe festlegen. Ein erster Test dafür wäre: Das xfce4-terminal kann man mit einer gewissen Geometrie aufrufen xfce4-terminal --geometry=80x25 , was aber nicht Pixel sondern Zeichenzahl misst. Grundsätzlich kann ein Programm seine Größe selbst bestimmen und viele Programme tun dies unmittelbar nach dem Start und erwarten keine Zuweisung durch Parameter oder Konfigurationsdatei. Mit xwininfo kann man die Größe eines Fensters feststellen, etwa für xcalc:
| xcalc & sleep 0.4 && xwininfo -name Calculator -size
|
Eine Möglichkeit, die zu ändern sehe ich da nicht, aber das Problem, dass es mehrere Fenster mit gleichem Namen geben kann. Man kann eine Id benutzen, um ein spezifisches Fenster anzusprechen, aber wie man die Id automatisch ermittelt ist mir noch unklar. Mit einem Macro könnte man die Mausaktionen aufnehmen und später abspielen, die eine Größenänderung bewirkt. Wenn es ein Open-Source-Programm ist, könnte es am leichtesten sein, sich den Quellcode zu besorgen, und das Programm neu zu kompilieren, nachdem man es im Quellcode geändert hat. Vielleicht hat ein Programm auch in ~/.config ein Unterverzeichnis mit seinen Settings und kann da manipuliert werden. I.d.R. dürften das aber Programme sein, die ihre Settings beim Beenden speichern und beim Neustart wieder einlesen, so dass es leichter ist, das Programm mit diesen Settings zu beenden, als erst den rc-File zu suchen.
|
taildragger
(Themenstarter)
Anmeldungsdatum: 11. Mai 2016
Beiträge: 76
Wohnort: Löwenberger Land
|
Counter ist ein snap-paket, befindet sich in den "normalen" Quellen, hatte ich bei 18.04 auch schon drin meine ich. sudo snap install counter Ausgabe nach counter --help Usage:
counter [OPTION…]
Help Options:
-h, --help Show help options
--help-all Show all help options
--help-gapplication Show GApplication options
--help-gtk GTK+-Optionen anzeigen
Application Options:
--display=ANZEIGE X-Anzeige, die verwendet werden soll
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17548
Wohnort: Berlin
|
Na snap kommt mir nicht ins Haus! Was sagen denn | counter --help-gtk
counter --help-gapplication
|
- ist da nichts darunter?
|
sh4711
Anmeldungsdatum: 13. Februar 2011
Beiträge: 912
|
Es ist sicherlich der beste Weg so wie user_unknown beschreibt zu schauen ob das Programm mittels Startparameter dazu zu bringen ist das zu machen was man möchte. Falls das nicht funktioniert kann man z.B. mit wmctrl Fenster anpassen.
Der folgende Aufruf startet meinen Editor mousepad, wartet (sleep) eine Sekunde und "unmaximized" das aktive Fenster (also meinen Editor mousepad der maximiert startete)
$mousepad & sleep 1; wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz Quelle/Basis: how-to-close-minimize-and-maximize-a-specified-window-from-terminal Ersetze mousepad durch counter und starte es z.B. in einem Terminalfenster. Je nach Geschwindigkeit müsste man "sleep 1" auf z.B. 2 oder 3 erhöhen, damit sichergestellt ist, dass das Programm Counter fertig geladen wurde bzw. ein aktiviertes Fenster anzeigt bevor wmctrl das aktive Fenster manipuliert. Nachteil:
Das Verfahren ist fehleranfällig und counter wird zunächst maximiert gestartet und wird nach ca. 1 Sekunde wieder "unmaximiert" (entschuldigt bitte gibt es dafür ein besseres Wort?). Das heißt es kommt zu einem kleinen "Flackern". taildragger schrieb: ...
Oder hat Ubuntu sogar eine Funktion dafür, welche ich noch nicht entdeckt habe?
...
Wenn ich das richtig lese sollte es auch mit compiz gehen das habe ich jedoch noch nicht hinbekommen. Zu guter Letzt: Manche Programme starten so wie sie geschlossen wurden. Z.B. wird mousepad maximiert geschlossen, so wird es maximiert auch beim nächsten Start wieder geöffnet. Genau so passiert es wenn es nicht maximiert geschlossen wird.
|
taildragger
(Themenstarter)
Anmeldungsdatum: 11. Mai 2016
Beiträge: 76
Wohnort: Löwenberger Land
|
user_unknown schrieb: Na snap kommt mir nicht ins Haus! Was sagen denn | counter --help-gtk
counter --help-gapplication
|
- ist da nichts darunter?
counter --help-gtk
Usage:
counter [OPTION…]
GTK+-Optionen
--class=KLASSE Programmklasse wie sie vom Fenstermanager verwendet wird
--name=NAME Programmname, der vom Fenstermanager benutzt wird
--display=ANZEIGE X-Anzeige, die verwendet werden soll
--gdk-debug=OPTIONEN Zu übergebende GDK-Fehlerdiagnoseoptionen
--gdk-no-debug=OPTIONEN Nicht zu übergebende GDK-Fehlerdiagnoseoptionen
--gtk-module=MODULE Zusätzliche GTK+-Module laden
--g-fatal-warnings Alle Warnungen als fatal betrachten
--gtk-debug=OPTIONEN Zu übergebende GTK+-Fehlerdiagnoseoptionen
--gtk-no-debug=OPTIONEN Nicht zu übergebende GTK+-Fehlerdiagnoseoptionen
counter --help-gapplication
Usage:
counter [OPTION…]
GApplication options
--gapplication-service Enter GApplication service mode (use from D-Bus service files)
|
taildragger
(Themenstarter)
Anmeldungsdatum: 11. Mai 2016
Beiträge: 76
Wohnort: Löwenberger Land
|
@sh4711 danke für die Tipps, dass versuche ich im Notfall. Also normales schließen und öffnen in der selben Größe funktioniert halt nicht. Das Ding startet immer maximiert.. Vielleicht kennt ja auch jemand noch ein anderes Programm. Ich brauche halt einen kleinen Counter... der hoch zählt wenn ich drauf klicke, den ich an eine Bildschirmecke in den Vordergrund packen kann.. Ich hab halt nur den gefunden... 😐 Für Android nebst Forks... gibt es gefühlt 100.000 apps dafür... bei Linux-Desktops offenbar Mangelware...
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17548
Wohnort: Berlin
|
Hm. Dann weiß ich auch nicht, und verweise auf sh4711s wmctl . Oder Du schaust bei:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | apt search stopwatch
Sorting... Done
Full Text Search... Done
gnome-clocks/bionic 3.28.0-1 amd64
Simple GNOME app with stopwatch, timer, and world clock support
kronometer/bionic 2.2.1-2 amd64
simple stopwatch application
libtime-stopwatch-perl/bionic,bionic 1.00-5 all
Perl module to use tied scalars as timers
php-symfony-stopwatch/bionic-updates,bionic-updates,bionic-security,bionic-security 3.4.6+dfsg-1ubuntu0.1 all
profile PHP code
stopwatch/bionic,bionic 3.5-6 all
Virtual stopwatch and timer
timewarrior/bionic 1.0.0+ds.1-3 amd64
feature-rich time tracking utility
|
|
taildragger
(Themenstarter)
Anmeldungsdatum: 11. Mai 2016
Beiträge: 76
Wohnort: Löwenberger Land
|
ok - trotzdem vielen Dank für die Mühe! ☺ Ich probiere das mal von sh4711. Danke user_unknown
|
sh4711
Anmeldungsdatum: 13. Februar 2011
Beiträge: 912
|
Alternativ zu den Programmvorschlägen von user_unknown kannst du auch warten bis jemand hier ein (z.B. python) skript postetet das das kann. Python kann ich leider nicht von daher hier Lazarus-Code im Anhang als Zip Datei. Wenn hier Interesse besteht bitte kurze Rückmeldung bei Fragen zur Kompilierung.
- lcounter.zip (124.4 KiB)
- Download lcounter.zip
|
sh4711
Anmeldungsdatum: 13. Februar 2011
Beiträge: 912
|
Oder alternativ als Bash-Script dann muss nichts kompiliert werden: #!/bin/bash
i="0"
(sleep 1 && wmctrl -F -a "Bash Counter" -e 0,800,10,100,100 && wmctrl -F -a "Bash Counter" -b add,above) &
while (zenity --info --title="Bash Counter" --text="$i")
do
((i++))
(sleep 0.5 && wmctrl -F -a "Bash Counter" -e 0,800,10,100,100 && wmctrl -F -a "Bash Counter" -b add,above) &
done
Quelle/Basis: keep-a-zenity-dialog-box-always-on-top-in-foreground Das Skript benötigt die Installaton von wmctrl und zenity Nachteil:
Zenity Fenster werden immer zentriert dargestellt. Durch das Verschieben an die x,y Position -e 0,800,10,100,100 kommt es zu einem deutlichen Flackern 😢 Wenn jemand noch eine bessere Idee hat wie man das Flackern minimieren kann dann ... besten Dank.
|
micneu
Anmeldungsdatum: 19. Januar 2021
Beiträge: 200
|
eine bessere idee, den entwickler des programms anschreiben und bitten das er es implementiert wennes für "taildragger" so wichtig ist.
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12802
|
taildragger schrieb:
Ich probiere das mal von sh4711.
Hast Du denn mal counter --geometry=100x200 versucht? Vielleicht tut es ja.
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11176
Wohnort: München
|
micneu schrieb: eine bessere idee, den entwickler des programms anschreiben und bitten das er es implementiert wennes für "taildragger" so wichtig ist.
Falls es um https://snapcraft.io/counter geht, wird der vermutlich nichts machen, das das Nebenprodukt eines Tutorials, wie man eine Flutter-App als Snap verpackt. Dementsprechend kann man das selber in theshivamlko/flutter-desktop-linux-snapcraft/blob/master/linux/my_application.cc anpassen und sich ein Snap bauen... sh4711 schrieb: Alternativ zu den Programmvorschlägen von user_unknown kannst du auch warten bis jemand hier ein (z.B. python) skript postetet das das kann.
Mit Python3 könnte man z.B. sowas machen (läuft unter Ubuntu 20.04, aber da sind einige Dinge dabei, die mit neueren GTK3-Versionen nicht mehr so einfach funktionieren, an die Bildschirmgröße zu kommen erfordert da einige Umbauarbeiten):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 | #!/usr/bin/env python3
import gi
gi.require_version("Gdk", "3.0")
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gdk
screen = Gdk.Screen.get_default()
gtk_provider = Gtk.CssProvider()
gtk_context = Gtk.StyleContext()
gtk_context.add_provider_for_screen(screen, gtk_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
css = """
#styled_label {
font: bold 16 px;
}
#styled_box {
margin: 10px ;
}
"""
gtk_provider.load_from_data(css.encode())
class MyWindow(Gtk.Window):
def __init__(self):
self.counter = 0
Gtk.Window.__init__(self, title="Counter")
self.box = Gtk.Box(spacing=10)
self.box.set_name("styled_box")
self.add(self.box)
self.inner_box = Gtk.Box(spacing=10)
self.box.add(self.inner_box)
self.label = Gtk.Label(label=f"{self.counter: 5d}")
self.label.set_name("styled_label")
self.inner_box.add(self.label)
self.button = Gtk.Button(label="+")
self.button.connect("clicked", self.on_button_clicked)
self.inner_box.add(self.button)
self.reset_button = Gtk.Button(label="\u27F3")
self.reset_button.connect("clicked", self.on_reset_button_clicked)
self.inner_box.add(self.reset_button)
def on_button_clicked(self, widget):
self.counter += 1
self.label.set_text(f"{self.counter: 5d}")
def on_reset_button_clicked(self, widget):
self.counter = 0
self.label.set_text(f"{self.counter: 5d}")
if __name__ == '__main__':
win = MyWindow()
win.set_gravity(Gdk.Gravity.NORTH_EAST) # position is measured by the right upper corner of the window
win.move(screen.width(), 0) # move to the top right corner
win.set_keep_above(True) # keep on top of other windows
win.set_default_size(100, 50)
win.connect("destroy", Gtk.main_quit)
|
|
taildragger
(Themenstarter)
Anmeldungsdatum: 11. Mai 2016
Beiträge: 76
Wohnort: Löwenberger Land
|
rklm schrieb: taildragger schrieb:
Ich probiere das mal von sh4711.
Hast Du denn mal counter --geometry=100x200 versucht? Vielleicht tut es ja.
nee - geht leider nicht.
|