View Issue Details

IDProjectCategoryView StatusLast Update
0000580Cinelerra-GG[All Projects] Featurepublic2021-06-29 06:47
Reportersachmovictor Assigned ToPhyllisSmith  
PrioritynormalSeverityminorReproducibilityalways
Status acknowledgedResolutionopen 
Product Version2020-08 
Target VersionFixed in Version 
Summary0000580: Focus all windows at once option?
DescriptionFrom what I understand, Cinelerra GG Infinity has it's own code for it's GUI), and I do know that long time cinelerra users value the multi-window workflow - I AM NOT SUGGESTING THIS BE CHANGED. However, if at all possible, I do think a non-default option to automatically focus all windows when any one window is selected would make the program far more accessible to a wider user base without compromising any long time user's workflow (especially if the option is not enabled by default). I used xdotool to create a similar effect for a time, but it never quite worked with multiple windows. This would effectively unify the workflow for those who like to work via one large screen - while also still allowing immediate re-positioning to multiple screens - and again, would have to be enabled anyway. The convenience of this theoretical "auto focus all windows" option would make it so that you could quickly move back and forth between this program and other programs (especially those that can be used in conjunction with Cineleraa GG Infinity, such as Blender, Ardour, Darktable, etc). This is the primary convenience people who use a single window workflow look for anyway (other than moving all windows by moving one window). I apologize if this functionality isn't possible, practical, or provided by another program I am unfamiliar with (or if this is not how feature requests are made).
Steps To Reproduce//no reproduction. feature request.
TagsFeature request, GUI, New Feature, Window

Activities

sachmovictor

sachmovictor

2021-06-29 06:47

reporter   ~0004868

@sge Thank you for your feedback and the script. I will be looking at it within the next few days. Again, much appreciated!
sge

sge

2021-06-22 10:09

reporter   ~0004859

@Andrea_Paz
Usually, to alter or remove window decorations, one can configure his window manager. One defines the appropriate regular expression matching the needed window title or window class and then chooses the attributes which he wish to assign specifically to this kind of windows (which match the defined regex). There is a lot of configurable attributes, like existence of window title, width of window border, existence of window controls (maximize/minimize/close/etc.), whether the window is to be on top (above other windows), sticky (shown on all desktops), window size and placement, modality override, resizeability override, and more.
I just looked: KDE, for example, has this all. Press the top left window manager button of some window, select something like 'More options', and you get a rich dialog to redefine special properties for the window selected.
Any window manager has similar set of options, but of course, each window manager provides its own way to configure these options. You can experiment with them.
Andrea_Paz

Andrea_Paz

2021-06-22 07:56

manager   ~0004858

@sge
Thank you for the script.
Do you know if it is possible to remove the window decorations to get a more unified and compact view?
PhyllisSmith

PhyllisSmith

2021-06-22 06:19

manager   ~0004857

@sge
@Andrea_Paz
Added small section to Manual describing xdotool workaround as this keeps coming up as an issue based on notes above.
PhyllisSmith

PhyllisSmith

2021-06-22 04:13

manager   ~0004856

@sge
@sachmovictor
Re-opened BT 579 in case want to provide feedback (and moved copy of note/script over there too).
sge

sge

2021-06-21 17:11

reporter   ~0004853

@sachmovictor
@PhyllisSmith
Note on BT579 which has been marked 'resolved'

Take the Perl script 'cin_run' from the attachment. Make it executable. Edit it in any text editor.

Several things have to be defined in the script: name of the 'cin' program, location of Cinelerra_rc file, and two displacements $X_ADJ and $Y_ADJ. The two displacements have to be configured by trial and error under your window manager which unpleasantly shifts Cinelerra windows on each start. You should adjust both displacements to compensate the quirk of your window manager.

Then run cin not directly but via this Perl script. It firstly executes the actual cin executable, and then, after it exits, corrects X and Y coords of the four Cinelerra windows in the rc-file.

Of course, the displacements depend on the window frame widths and/or window title height, and have to be readjusted again if they get changed by user.

cin_run (1,668 bytes)
#!/usr/bin/perl

# These X and Y displacements have to be adjusted by trial and error
# under your window manager
$X_ADJ = 41;
$Y_ADJ = 20;

# CinelerraGG executable
#$CIN = '/disk2/sge/cin-git/bin/cin';
$CIN = '/where/cinelerra/installed/bin/cin';

# CinelerraGG user's rc-file and a tmpfile
$CINRC = $ENV{HOME} . '/.bcast5/Cinelerra_rc';
$TMPRC = $ENV{HOME} . '/.bcast5/tmp_rc';

# Run CinelerraGG
system ($CIN);

# After CinelerraGG exits, edit rc-file produced to correct for displacements
open CRC, $CINRC or die "Cannot open $CINRC: $!";
open TRC, ">$TMPRC" or die "Cannot create $TMPRC: $!";

# Four windows displacements will be corrected:
# Timeline, Compositor, Viewer, Resources
while (<CRC>)
{
  chomp;
  if (($val) = /^MWINDOW_X\s+(.+)$/)
  {
    $val += $X_ADJ;
    print TRC "MWINDOW_X $val\n";
    next;
  }
  if (($val) = /^MWINDOW_Y\s+(.+)$/)
  {
    $val += $Y_ADJ;
    print TRC "MWINDOW_Y $val\n";
    next;
  }
  if (($val) = /^CWINDOW_X\s+(.+)$/)
  {
    $val += $X_ADJ;
    print TRC "CWINDOW_X $val\n";
    next;
  }
  if (($val) = /^CWINDOW_Y\s+(.+)$/)
  {
    $val += $Y_ADJ;
    print TRC "CWINDOW_Y $val\n";
    next;
  }
  if (($val) = /^VWINDOW_X\s+(.+)$/)
  {
    $val += $X_ADJ;
    print TRC "VWINDOW_X $val\n";
    next;
  }
  if (($val) = /^VWINDOW_Y\s+(.+)$/)
  {
    $val += $Y_ADJ;
    print TRC "VWINDOW_Y $val\n";
    next;
  }
  if (($val) = /^AWINDOW_X\s+(.+)$/)
  {
    $val += $X_ADJ;
    print TRC "AWINDOW_X $val\n";
    next;
  }
  if (($val) = /^AWINDOW_Y\s+(.+)$/)
  {
    $val += $Y_ADJ;
    print TRC "AWINDOW_Y $val\n";
    next;
  }
  print TRC "$_\n";
}

close TRC;
unlink $CINRC;
rename $TMPRC, $CINRC;

exit 0;
cin_run (1,668 bytes)
sge

sge

2021-06-21 15:36

reporter   ~0004852

@sachmovictor
@PhyllisSmith
Install xdotool (https://www.semicomplete.com/projects/xdotool/)

Iconifying all Cinelerra windows at once:
xdotool search --name Cinelerra windowminimize %@

Reactivating all Cinelerra windows at once:
xdotool search --name Cinelerra windowactivate %@

You can do anything!
sachmovictor

sachmovictor

2021-06-20 18:11

reporter   ~0004847

@sge as I said in my original post, I do see the value in allowing for multiple windows over a single window interface. Which is why I am not suggesting a single window interface, simply an option to focus all windows at once (and perhaps an option to move windows at the same time, once you have a configuration you like) so that you can simply go back and forth between programs and not have to hunt down every window in your interface. This would not preclude the ability to separate your windows or simply disable the presumably non-default option. Perhaps many people here are considerably better with xdotool than I am - but it only provided a buggy and incomplete solution for me. I can probably create something using visual studio for my own use, on my own time time.

@PhyllisSmith @sge If Guicast is an old, custom widget system - then the re-write would be staggering. Something like Qt would also put the project at the mercy of another dependency that even larger projects with an organization behind it occasionally struggle with (i.e. Krita). The GUI is fine, I simply wish I could focus all the windows at once to quicken my workflow. I appreciate the help and information about Cinelerra GG Infinity that everyone has given me here. I will simply create a work around on my own time. Thanks again.
sge

sge

2021-06-20 16:52

reporter   ~0004844

Guicast has nothing to do with gtk, it is even not based on Xt. It is the totally custom widget set created on top of raw libX11. Switching to another widget set would mean to rewrite everything. So it is not an option.
IMHO, making Cinelerra a single-window application is also not an option. Kdenlive with its tiny preview area, in comparison with cin's set of windows, is like a disaster.
From other side, make a window manager to bring several well entitled windows on top simultaneously is quite easy, either with some special X11 client like xdotool, or even some window managers can do such scripting.
Andrea_Paz

Andrea_Paz

2021-06-20 08:19

manager   ~0004838

Last edited: 2021-06-20 09:13

View 2 revisions

I remember GG saying that GUICAST (Cinelerra's GTK-based libraries) was not modifiable and that switching to QT would require rewriting the entire program.
A small improvement was proposed by Andrew, who managed to eliminate the windows decorations to obtain a more unified view. But I don't remember how he did it.
Another small improvement could be to remove the automatism of switching from the focus of a window to another. This is done by disabling the check in Settings --> preferences --> Appearance Tab --> "Set Input Focus when window entered".

EDIT:
I was misremembering both GG's words and Andrew's work. See BT#0392 (and also BT#0358)

sachmovictor

sachmovictor

2021-06-20 03:10

reporter   ~0004835

@PhyllisSmith Thanks for the reply. I figured that it was likely an old but reliable GUI code. Considering the substantial capabilities of the program it is little more than a quibble. I will research a possible work around etc for my own amusement and contribute said option should it prove useful to others. I am new to Cinelerra GG Infinity, but from what I can tell it is a professional solution easily comparable to more well known high end solution. Definitely the most capable open source video editor I have used. I look forward to using it and being a part of this community. Thanks again.
PhyllisSmith

PhyllisSmith

2021-06-20 01:18

manager   ~0004833

This feature request comes up once in awhile and indeed, it would be nice to have this as an option.
Probably the best thing that could happen is for QT to be the implementation goal (so I am told).
Unfortunately, computer software and hardware has really changed dramatically since 2000 when Cinelerra got its start and some of the things people take for granted today were not even conceived of at that time.

Personally, I like the way it is and would hate having only 1 window, but a Preference would be nice for some users.
Your suggestions and ideas are always welcome so do not hesitate to present them but we need additional developer support to keep up with the times.

Issue History

Date Modified Username Field Change
2021-06-20 00:12 sachmovictor New Issue
2021-06-20 00:12 sachmovictor Tag Attached: Feature request
2021-06-20 00:12 sachmovictor Tag Attached: GUI
2021-06-20 00:12 sachmovictor Tag Attached: New Feature
2021-06-20 00:12 sachmovictor Tag Attached: Window
2021-06-20 01:18 PhyllisSmith Assigned To => PhyllisSmith
2021-06-20 01:18 PhyllisSmith Status new => acknowledged
2021-06-20 01:18 PhyllisSmith Note Added: 0004833
2021-06-20 03:10 sachmovictor Note Added: 0004835
2021-06-20 08:19 Andrea_Paz Note Added: 0004838
2021-06-20 09:13 Andrea_Paz Note Edited: 0004838 View Revisions
2021-06-20 16:52 sge Note Added: 0004844
2021-06-20 18:11 sachmovictor Note Added: 0004847
2021-06-21 15:36 sge Note Added: 0004852
2021-06-21 17:11 sge File Added: cin_run
2021-06-21 17:11 sge Note Added: 0004853
2021-06-22 04:13 PhyllisSmith Note Added: 0004856
2021-06-22 06:19 PhyllisSmith Note Added: 0004857
2021-06-22 07:56 Andrea_Paz Note Added: 0004858
2021-06-22 10:09 sge Note Added: 0004859
2021-06-29 06:47 sachmovictor Note Added: 0004868