-
Notifications
You must be s 8000 igned in to change notification settings - Fork 22
The wizard is quite confusing #32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Gif Recorder wasn't available when I created Silentcast and appears to have been inspired by it. When I saw Gif Recorder featured on Linux Action Show, I instantly recognized it was a simplified version of Silentcast, and thought to myself, I should've offered the ability to set a default mode of operation so that it would not be necessary to go through all the settings all the time if you always wanted the transparent window for example. I created Silentcast because there was nothing comparable available for linux at the time, and it seemed easy to put together already available tools using bash scripts. I thought I would use it for a blog I would start, but then never started the blog. So, haven't been using it or developing it other than trying to address some of the issues. I may work on the UI before the end of this year, but not before November. Thank you for giving me a reason to look at it again though. |
I realized why I ended up recording the entire screen the second time - the wizard defaults the The second suggestion would be to default to Entirety of a Window, since full screen screencast tend to be very large and besides running into #31, are probably less often recorded than specific areas. |
Ok, those are probably simple changes. I remember very little of the details of how these bash scripts I wrote actually work. This was the one and only time in my life I did extensive bash scripting, so learned a lot in doing it, but after a couple of years of not doing any bash scripting, I will have to relearn some of it before making simple fixes like this. I may work on it before the end of October though. I will definitely make your suggested changes first. |
Another suggestion: at step 2, I was unclear on what "Move the next active window to the area to be recorded, and resize manually if desired." means. The window behind silentcast is what I want to record: After reading the instructions, I was tempted to resize the silentcast window itself, but that turned out not to be necessary. Just a suggestion, maybe for new users an easier flow for Window recording would be:
|
Ok, I will improve the instructions provided by this dialogue too. If I really get into working on this again, I will redo the whole UI though. I originally wanted to eliminate the need for |
I'm lacking motivation to fix the UI, but I've made the settings persistent (and saved in |
I'm going to fix the UI. I'm teaching myself Gtk 3 and glade hoping to use that to redo the whole application in C with a more professional UI. That will be version 3.0 of Silentcast. I don't know if I will do a 2.6 version just fixing what I can of the UI while still using My basic idea is to make the 1st dialog something the user only sees if they choose configuration from a notification icon that is persistent. Instead of the configuration coming up every time, it will go straight to a transparent window, sized and positioned to record the active window. There would be an option in the notification icon menu to record the interior of the active window instead of including the decorations. The transparent window could, of course, be resized as well, and F11 for fullscreen. I think I could do all this still using yad and modifying the bash and python scripts, but I'll probably just go straight to version 3.0 using Gtk3 and glade, rewriting everything in C. It will take at least a month, I think. |
@dandv, @voor, @woodyrew, @dgmcguire, @Seth-Johnson, @sbrl, @Arkni I made quick progress in about 10 days in December, but then stopped completely for 2 months. I got back to work this month, and now would like people to test what I've done so far. I've pushed it to the next branch. Please checkout next and pull. Go into silentcast3 and run (I have tested the binary with |
I'll have to take a look at it, I've moved to Wayland as my default window manager, so I'm not able to |
Thank you for being willing to try it out. Right now, X11 is more than a make dependency, it is required to run it too. That's because X11 is needed to identify the window that was active on startup. There are features that depend on knowing that. I could eventually support Wayland by disabling those features, but for now, this is X11 only. |
@colinkeenan Cool! Unfortunately, I can't get it to build. I'm sure it's a simple issue, but I'm not sure what I need to do to fix it.
|
@sbrl, I'm not on Ubuntu, but I think this will let you make it:
|
I think you may need 2 packages
|
@colinkeenan I get the following error:
|
Hi @colinkeenan
By the way, here is my setup:
|
I will try to figure out what may need to be installed or changed in the makefile tonight and update when I know. The makefile was something new to me and I clearly didn't make a portable one. |
Now that I have time to look at the errors, it seems my makefile is OK (but some people have to add -std=gnu99 for some reason). The problem is that I didn't use any deprecated Gtk functions and I didn't know before learning Gtk+ that there are so many things that break from one version to the next. It seems that I would have to write a different version of Silentcast for each version of Gtk, or else find a way to only use functions that are common to all versions after whatever is on Ubuntu 14.04. What version of Gtk is on your system? I found this guide for setting up other environments for building packages in Ubuntu: But, it looks like a lot of work for people that are not doing a lot of packaging for Ubuntu. Does anyone have Ubuntu 16.10? Can you make Silentcast on 16.10? |
I had to install
|
Well, that answers that question. Even 16.10 doesn't have gtk 3.22. I found this command that will display what version of gtk3 you have:
@Seth-Johnson, what version does it report? |
The version is 3.20.9. Stable Ubuntu releases are usually a few releases behind GNOME upstream for stability and compatibility reasons (as you're finding, changing versions isn't always easy..). 17.04 will ship with 3.24. |
Thanks. I will spend some time tomorrow figuring out what version of Gtk is required for each of the functions I'm using and try to find a way to get them all below 3.20 without using deprecated functions. I may have to do more in x11 than I already do. |
GTK version: `3.18.9` on Ubuntu 16.04.1 LTS
|
I've searched all the source files for "gtk_" and "gdk_" and found a list of 75 functions. I then looked them up one by one in the documentation and put the version number listed by it. For those with no version number, I put 0.00. Then I sorted. Here's the list:
Surprisingly, out of 75 functions, only 5 are specific to Gtk3. I definitely need So, it's just the 2 functions that everyone got errors on that I need to replace, both having to do with |
@Seth-Johnson, @woodyrew, @dandv, @voor, @sbrl, @Arkni, I've found a way to avoid those monitor functions that aren't available before 3.22, however, it introduces a bug: nothing is displayed until the user clicks the mouse. I will work on fixing that, but please check that it compiles and runs (from the silentcast3 directory) after doing a (P.S. you can ignore any warning about not being able to draw the widget. It's been giving that warning sometimes every since I started drawing a fullscreen translucent window. It draws anyway, and has nothing to do with this new issue where the user has to click the mouse to get the draw to show on startup.) |
I'm not sure whether it's a good idea to run that command....? |
@Seth-Johnson installed just |
Just compiled the source code and tried the package. As far as I can tell, all shortcuts are working as expected. The UI looks good so far. The app looks very slick, for me, to use. Note that I still needed to add the Thanks for your time and also for working on improving this package.
I didn't get any warning. I think that's only true in some systems |
Turns out ffmpeg has a C API too. I should probably use it because for now, I can only stop ffmpeg by spawning "pkill -f ffmpeg" which would stop all ffmpeg commands running at the time, which is not really what I want to do. |
@Seth-Johnson @woodyrew @dandv @voor @sbrl @Arkni Although I've got more to do before it can be released and packaged, it basically works. Please test and let me know what UI problems you are having and that you find unacceptable. For this release, I'm planning to leave the UI how it is now, but will fix anything that's obviously not working how I intended. I have ideas for improving the temptoanim part of the UI. For now, it puts up a dialog while each spawned command is running and then closes the dialog when done. This is ugly and confusing, especially if a dialog is hiding behind something or they pop up in various different locations because the desktop is set to show windows where the mouse is. However, this is basically what the bash version was doing. My idea for a future release is to put up one dialog listing all the steps. Then as each command runs, a progress bar will be displayed next to that step. Once the spawned command is finished, the progress bar will be full and the next progress bar will start. All of this will take a lot of programming and getting this far was already 5 times harder than I expected. I figured out more about controlling spawned applications and didn't see any advantage to using an API instead of just spawning. In fact, I see a disadvantage to using the API - what if they have a different version? Working on this "temptoanim" part of the application reminded me how tedious even the bash version was. This was far more tedious, and the most straightforward translation to C didn't work because it was trying to run everything at once. I ended up running a watch_child on each spawned command and running the next command in the callback function that runs when the spawned command ended. All the logic of temptoanim ended up in being called from that callback function. It took me a long time to decide this was what I had to do. |
@Seth-Johnson @woodyrew @dandv @voor @sbrl @Arkni It's usable so went ahead and did a release of v3.0. Seth, I hope you will package it for Ubuntu. There are certainly bugs that need to be worked out and many further UI improvements yet to be made. I want to release it now and find out what's important to fix first though. One thing I realize is that by recording uncompressed video and turning it into high quality pngs, the animated gif has to be very small since Imagemagick convert does everything in memory. The link you pointed me to has the advantage of recording compressed video so the pngs are probably smaller and therefore a longer gif can be created. I will eventually add choices for the initial recording, but will relax for while waiting to see what bugs people need fixed right away. Advantages to recording uncompressed video beyond higher quality is that the cpu/gpu don't have to do much and so even low end processors can do it. |
The
|
Hi @colinkeenan Thanks for the updates. Just pulled the latest changes and compiled. I just noticed a bug which is the spawned Here are the steps I followed:
Also, I see an error on my terminal related to the video file:
Testing on other distributions: I did a quick test using I still hadn't a chance to test on Thanks! |
I can reproduce the same ffmpeg bug that @Arkni mentioned. ffmpeg continues to run even after Silentcast has finished. Also on Ubuntu
which is more portable (although |
Thank you for testing right away. I am disappointed there is such a huge bug as ffmpeg not stopping. I noticed the ffmpeg still running just when I was testing running silentcast while it was already running. I didn't see it happen before, but maybe there was some change I'm not aware of that caused this issue. I will test that now. |
I am not experiencing this issue of ffmpeg still running, but it's a huge issue that I will need to solve. For the moment, I changed the shebang in the install script as you suggested, @Seth-Johnson. I would prefer to write a script that always works though and will look into that. One way to solve the ffmpeg still running issue would be to go back to using What I don't understand about this killing ffmpeg bug is that there should be a dialog that pops up if my kill routine fails. And, I have verified that dialog works. It seems to mean that the kill command successfully kills something. |
@Seth-Johnson and @Arkni I have released v3.01 which, after trying to kill the specific ffmpeg process that was spawned immediately goes ahead and does a Please let me know if it kills ffmpeg now. If not, I will remove |
Oohps. I thought it was an easy fix, but it's causing segfault core dump. I didn't even test before releasing. stupid. I will work on this. |
Ok. It was an easy fix but I thought I didn't need to deal with errors when trying to pkill -f ffmpeg, but I did. It's good now. Please verify it stops ffmpeg now. Also, @Arkni, in looking through the steps you listed, I noticed you didn't say anything about the file browser popping up at the end when the green rectangle returned. Did it open the file browser for you? |
@Arkni I just want to be sure - when you ran |
Sorry, I forgot to mention that step. Yes, it did open the file browser. Also, the bug about
I was running the latest version of yesterday. I compiled it and In case you're replaying to my comment about |
I've just managed to compile it and take a look! It's a huge improvement (the interface is much more streamlined for one), but there's a few things I've noticed that bother me a bit.
|
@sbrl Thank you for your feedback. I've got some questions for you and agree that some issues need to be solved.
Please answer my question about whether right-click and scroll wheel are working or I need to make those controls more obvious. Thanks again for providing feedback. |
|
Looking at my code, I realized it was pretty easy to move the text around on the screen and so fixed that, but just by hardcoding the number of pixels needed on each edge. If that isn't working for some people, I will eventually figure out how to calculate the number of pixels needed. I just chose round numbers like 100, 200, and 300, which worked reasonably well on my screen. I have also included your idea of displaying the directory since that's also very easy. I will take a look at what I have to do to get CTRL+Left Click to work. I kind of remember trying something like that before and couldn't get it to work. If I remember right, I could get Gtk+ to detect CTRL+key but not CTRL+mouse-button. If I can quickly get CTRL+Right-click to work, I'll include that in a 3.02 release soon. Otherwise, I'll release 3.02 without that because I think these other fixes are important. |
By the way, you can set the working directory from F1->Configuration which has the same options as the original Silentcast. |
I pushed the fixes so far so you can test even though not released as 3.02 yet. The about dialog will show 3.02 though. |
I went ahead and released 3.02 that makes all the fixes you suggested except CTRL+Left-Click because that one will be difficult. The silentcast directory shows up in the edit pngs dialog and is selectable. |
@sbrl Please let me know how this release works for you. Thanks. |
Last night I finally ran valgrind on silentcast again and discovered a mistake. My one and only use of malloc was off by 1 because I didn't realize strlen didn't include the terminating nul character. I fixed that (at first by adding 1 and then by using g_strdup instead since it does full error checking automatically) However, there are many read/write errors coming from cairo that only happen when dialogs are displayed. I have filed a bug report against cairo because valgrind doesn't show any silentcast functions causing the error. Here is the bug report: https://bugs.freedesktop.org/show_bug.cgi?id=100713 This is against cairo 1.14.8. I would like to know if the same errors are happening on other versions of cairo. Please run:
and search on "Invalid" |
I got 3
To see the full dump, head to: https://gist.github.com/Arkni/f0a2968691e91f0a78f82446ad1095bb By the way, this is against |
Thanks, but that is the error I already fixed. Are you sure that you have the latest? I originally was using malloc strlen but when I saw that error, changed it to malloc strlen + 1 which fixed the problem. And then later, realized there's a better way that does error checking, which is strdup or even better, g_strdup. Please take a look at SC_temptoanim.c line 129. If you see a malloc nearby, you have an old version. It's good to know that the problem I'm seeing is probably with cairo 1.14.8 as I reported in the bug. |
Oops, my bad! I think I need my dose of cafe. Sorry :/ I fetched the latest changes and compiled then analysed the binary using the command you mentioned in your previous comment. I got no In case you want to see the new dump, please head to: https://gist.github.com/Arkni/7134074b1a29e588c78a25fe63c5c241 |
Heya! Just cloned + tested the latest commit. Works a lot better! The display of the directory that contains the raw images is helpful, and the moving the text to the top / bottom depending on the green box is useful too - though if I've got a selection selected that covers most of the screen, then the text is still hidden. Perhaps it could be shown inside the box if there's no space at either the top or bottom? I thought of another potential improvement: Include a configuration option to optionally hide the mouse pointer. Perhaps I should file a separate bug about that though? Great work so far! 🌟 |
@sbri Thanks. I'm confused about why you would hide the mouse pointer though. Why? And, more importantly, how would you stop recording if you couldn't even see where to click the icon? Yes - go ahead and open another issue for the trackpad problem and any other ideas you have (but explain why and how you would use a new feature like hiding the mouse pointer.) When I have time, I'll work on those. Thank you again. |
Ah, I didn't mean 'hide the mouse pointer' on the screen - only in the recording. Is that possible? Sometimes I'd like to record something that's happening on the screen without the mouse pointer, but I don't have anywhere to put it that's out of the way. Perhaps an alternative here would be a keyboard shortcut to stop the recording? |
Thanks for opening the trackpad issue. You can open this mouse pointer issue too, but I don't see an easy way to do it. I have not heard of ffmpeg having an option to ignore the mouse pointer when grabbing the screen. Silentcast is minimized when recording and minimized Gtk+ applications ignore events while minimized (which makes my code a little easier). There's probably a way to get a Gtk+ application to continue listening for keyboard or mouse events while minimized. There may also be another application that hides the mouse pointer until a certain keyboard or mouse event. So, go ahead and open the issue. If you find an application that does the job, comment on that too. Thanks. |
@colinkeenan You're welcome! The cursor issue isn't a priority at all, really - just an idea of mine I had. |
I'm coming from Gif Recorder, which was pulled by the author. Thanks for making Silentcast free!
However, the wizard/setup experience is unnecessarily confusing IMO. There are about 5 screens before you can start recording. The second time I ran
bash silentcast
there were fewer dialogs, but it was unclear what exactly was being recorded, and I ended up recording my entire desktop instead of a given window (see #31).Gif Recorder has a much simpler and more effective UI: its window is a frame (transparent, with borders and a stop button at the bottom). You resize this window to enclose the area to record, and click the Record button.
That was it. No compression step, no complicated instructions, no out of memory messages. It just worked.
Unfortunately, it truncated the last seconds of the gif, which is why I've been searching for an alternative.
The text was updated successfully, but these errors were encountered: