10/23/2021 0 Comments Native Screen Capture Tool For The Mac
Additionally there is a video editing option, and sharing available via AirDrop and Open In.It's more ideally suited to iOS 12 or higher for full one-touch functionality, and the video editor comes with a small but decent range of features such as the ability to trim your video, add filters, adjust playback speed, change the background, and rotate the image.Recordings are filed within the app for easy access, but as well as being available to save in your camera roll, there's also an easy export option for uploading to YouTube.While the main app is free, there is a pro version available as an in-app upgrade which allows sharing of videos more than 3 minutes long. Get your life in order with the best task management apps. The Mac operating system has Grab built in. It is an excellent snipping tool for Mac to capture the screen including the cursor.In fact, simplicity is key to the Capture experience, and it's a value that also extends down to the development of Capture’s underlying code.One of our team’s guiding principles is “be a Margherita pizza.” Just as a Margherita pizza is perfect in its simplicity—what more do you need than tomato sauce, mozzarella, and basil?—we’ve tried to keep Capture’s ingredients as simple and straightforward as possible. There's no formal onboarding required, and you can start sharing your ideas in seconds. Dropbox Capture is a new visual communication tool designed to make it easy for teams to asynchronously share their work using screen recordings, video messages, screenshots, or GIFs. Screenshot provides a panel of tools.The app is surprisingly good for what you get.In fact, we were looking for something that would give us more control at every layer—that didn’t require us to jump through quite so many hoops to call native code—and would better support the new features we wanted to build.There were a lot of ways we could have solved these problems—perhaps more TypeScript, or C++—but in the end we decided to go with Rust.In some respects, it was an easy decision. We also wanted more control over our ability to take screen captures and recordings, better error handling, and faster performance behind the scenes. But finding the right third ingredient that would enable us to quickly, simply, and reliably call native OS-level code took a bit more experimentation.Ideally, we wanted streamlined a codebase that could target multiple platforms painlessly, consistently, and that was easy for our developers to build.
![]() Native Screen Capture Tool For The Pro Version AvailableIn early versions, we used a handful of third-party libraries to do things like take screenshots and process GIFs. Building a custom Rust library helped unlock higher-quality screen recording from 720p through 4K, made screenshots and screen recordings available to share more quickly, and dramatically improved our error handling capabilities, allowing us to offer a more reliable experience for our users.We also thought it would be a fun excuse to learn the most-loved programming language of recent years.Capture began as an internal Hack Week project where rapid iteration was key. We also use it for file compression, in our crash reporting infrastructure, and in Magic Pocket—our exabyte scale custom storage infrastructure—to optimize the storage of file data.It turned out that Rust was perfect for our needs, too. Rust is at the heart of our desktop client’s recently re-written sync engine, which is what makes the Dropbox folder on your computer work like magic. If a line failed to parse, we assumed it was an error, and if it was an error, the issue was likely masked and we wouldn’t know exactly what broke in the native code. Each line of output from the shell application had to be parsed. This meant spinning up an application each time we wanted to complete certain tasks, or in some cases having an application running continuously and awaiting input—not exactly ideal.More importantly, it also meant there was some inherent brittleness in the way Capture communicated with native code. But when we considered the long-term health of Capture’s codebase—and all the complexity these third party libraries introduced—we knew we would eventually have to pay our early technical debt down.The third-party libraries we used were usually shell-based applications Capture would send commands to each shell app and receive stderr and/or stdout responses in return. Initially we focused on re-writing simple functions that otherwise required a third-party library. Case in point: It took one of our engineers hours of valuable development time to learn how to build the Windows screen recording library just to fix a single parsing bug!Because Rust was new to the Capture team, our early efforts were extremely incremental. Each presented tradeoffs we had to work around, some more easily than others.For example, if we wanted to make any changes to the individual libraries we’d have to have the institutional knowledge of how to build each one and then build them into Capture. And while some libraries were well maintained but missing features that we needed, other libraries had everything we wanted but were not as well maintained. We found APIs could be quite different between macOS and Windows—even within the same cross-platform library—which added complexity when developing for the two platforms. In other words, we no longer had to spin up separate shell applications to complete certain tasks. With Neon-bindings we could now easily make calls to native OS code from TypeScript without any overhead (and more reliably, too). The more we learned, the more features we moved to our custom Rust library, which benefitted Capture in a handful of ways:No overhead. We were quickly able to port the feature to Rust on macOS, and then bring the feature to Windows where it didn’t previously exist.These early successes gave us the confidence to try more ambitious things. Ownership of the library meant fixes and enhancements could be made more quickly. No more trying to interpret the output from shell apps! Having all of our code in one place gave us more insight into how our app actually was actually behaving.More control. Once most of Capture’s code was running within our own library, and with a consistent API across both macOS and Windows, we were able to add more robust logging and monitoring. Rust also dramatically improved our ability to handle errors. As we found early on with activate-windows, moving to Rust also allowed us to do things we just couldn’t do before. And now that we could simply call functions as needed—instead of having shell applications running in the background at all times—we also needed less memory than before.New features. Around 17MB of Swift libraries were no longer needed on macOS, for example, after re-writing those capabilities in Rust. Not having to include third-party libraries also reduced the overall size of our app. It resulted in a simpler build pipeline across platforms, too.A smaller footprint. Simulate excel for mac on windowsInstead of wrestling with multiple libraries the way we used to, now we have a really simple document that basically says “here’s how to build everything using this single command.”With Rust, our developers know exactly what to expect—just like our beloved Margherita pizza.In time, we expect to move more features to our in-house library. And as our team grows, there’ll be less of a learning curve for new developers. In just a few weeks we were pushing Rust code to production, and we benefitted greatly from Dropbox’s supportive community of Rust-savvy engineers who offered help and guidance whenever we got stuck. It’s not so much that we couldn’t have built these things with another language, but rather, Rust allowed us to build them faster and with less effort than before.Capture is available now in Beta, and if you haven’t already you should try it out.One of our biggest surprises developing Capture was how easy it was to get started with Rust. We were also able to introduce a new crop tool, new recording controls, and add new recording types like audio or camera only, as well as increase recording quality to 720p/1080p/4K. Of course, if we had struggled with Rust it would have been easy to turn back. This means we can be intentional about which features we choose to re-write and when. We’ve configured Rust so that we can still call third-party libraries using the old shell process approach if needed. And we’re especially excited for the future of Rust on Windows, which just recently reached v0.21.0.But it’s also not an all-or-nothing approach. We’ve been moving features like GIF creation and other OS-level integrations into our Rust library, too. Visit our careers page to apply.Special thanks to the Capture team (Youcef Es-skouri, Noga Raviv, Joey Diab, Kyle Shay, Andy Liu, Will Hall, Alex Pelan, Alan Chu, Mike Boht, Karan Khanna, Lien Chung, and Lily Lee) as well as Parker Timmerman and the rest of Dropbox’s internal Rust developer community. If you're a front-end engineer with a talent, passion, and enthusiasm for Rust, we'd love to have you at Dropbox. We're always on the lookout for clever, curious front-end engineers who want to learn new things, take on bigger challenges, and build products our customers love.
0 Comments
Leave a Reply. |
AuthorJulie ArchivesCategories |