Question

Rooter by Yanike Mann (YeoWorks)

http://www.youtube.com/watch?v=heANjFpablU

Rooter is a better way of locating files from root using PHP. You can use Rooter for locating anything from a root folder of your choice. You can now place multiple includes in one file and rooter will know exactly how to find the files from root using the Rooter script. No more "./", "../", "../../", and etc done differently on each page to find files. Rooter takes care of that for you and also can use URLs as root as well.

Background of Rooter: I started my new job with a web development/video production company who used Microsoft Servers for development. Coming from PHP, I really didn't like ASP. Long story short.. Boss told me if I could find a way to make PHP use root like ASP does with "/", then I could code their sites in PHP. So I went home and created Rooter, which uses any folder of choice or domain as root.

You can use my Rooter script in personal and/or commercial products for FREE. Just leave the Copyright intact.

Rooter_by_Yanike_Mann.zip

Link to comment
https://www.neowin.net/forum/topic/1075267-rooter-php-root-folder-locator/
Share on other sites

24 answers to this question

Recommended Posts

  • 0

I understand that you have offered the code as is, but as you have made an effort to make a video and a Google code page, then there are a few little things that I would have done (I have limited experience compared to others here btw).

The video is far too shaky. Use a scripted mouse or a fixed screen area to make it easier to watch.

Offer the code on a HTML page (not through a ZIP file). Also, don't compact the code into one line, it is a nightmare for inspecting/debugging/extending. Compacting code is normally used with Javascript files to minimise bandwidth between client and server.

Namespaces and Autoloaders can be used to deal with including extra PHP files from PHP 5.3+ with ease. I normally define a global constant from the root index using define('ROOT_PATH', dirname(__FILE__)) to use with the Autoloaers. Though I think your code deals with URLs and parsing HTML link tags instead. In this case, I either use a function to dynamically extract the base URL from the URI or use a pre-set value from a config file.

Also one last thing, it may have been better to enclose your routine in a function for re-use in other files.

Though do carry on providing code for all to use.

  • 0

---- Rooter v2----

In Rooter v2, Rooter is a function instead of a variable. You can now just type rdot('FILENAME'); to locate a file from your selected ROOT. For PHP INCLUDES, you will use rdotinc('FILE');.

// ROOTER INCLUDE - Copyright 2012 Yanike Mann (YeoWorks) www.ywcorp.com yeoworks@gmail.com
// USE rdot() for locating anything using ./, ../, etc. e.g. rdot('img/ball.png');[/color]
function rdot($rstr){
$rooterchecker = 0; $rootdot = './'; $rootdot2 = '../'; while($rooterchecker != 2){ if($rooterchecker == 0){ include($rootdot."rooter.php"); if($rootercheck == 1){ echo $rootdot.$rstr; break; } else { $rooterchecker++; } } elseif($rooterchecker == 1){ include($rootdot2."rooter.php"); if($rootercheck == 1){ echo $rootdot2.$rstr; break; } else { $rootdot2 .= '../'; } } }
}
// USE rdotinc() FOR PHP INCLUDES e.g. rdotinc('inc/hi.php');[/color]
function rdotinc($rstr){
$rooterchecker = 0; $rootdot = './'; $rootdot2 = '../'; while($rooterchecker != 2){ if($rooterchecker == 0){ include($rootdot."rooter.php"); if($rootercheck == 1){ include($rootdot.$rstr); break; } else { $rooterchecker++; } } elseif($rooterchecker == 1){ include($rootdot2."rooter.php"); if($rootercheck == 1){ include($rootdot2.$rstr); break; } else { $rootdot2 .= '../'; } } }
}

<body>
	<p><?php rdotinc('inc/hi.php'); ?><br /><img src="<?php rdot('img/yeoworks.png'); ?>" /></p>
</body> 

Download Rooter

  • 0

The main reason of Rooter is to easily have one or more root directories. No need to deal with config files. It's just a tool to use if you need it. You can use config files if you want. This is just another way to get to a ROOT folder or ROOT folders of your choice.


// rdot() is nba folder and rdot2() wnba folder.
<img src="<?php rdot('img/ball.png'); ?>" />
<img src="<?php rdot2('img/ball.png'); ?>" />

// using rdot() is easier to see and better than writing:

<img src="../../../../../../../nba/img/ball.png" />
<img src="../../../../../../../wnba/img/ball.png" />

// or writing this:

<img src="../../../../nba/img/ball.png" />
<img src="../../../../../../../wnba/img/ball.png" />

[/CODE]

Especially if you have to use the right number of dots by hand. rdot() takes care of everything for you.

  • 0

Your code is written really sloppy, and although I haven't tried it, I know it won't work.

  • include($rootdot."rooter.php"); - why are we including rooter.php? I don't have a file called rooter.php... I thought copying the function into my PHP file would suffice?
  • if($rootercheck == 1) will never invoke, because it is inside if($rooterchecker == 0)
  • The two references to if($rootercheck == 1) will never invoke, because $rootercheck is never declared (or you typo'd $rooterchecker)
  • You're going from while($rooterchecker != 2) to if($rooterchecker == 0) $rooterchecker++; back round to the while loop - why?!
  • The whole if($rooterchecker == 0) and elseif($rooterchecker == 1) blocks are basically the same code repeated - why?

That's just in your rdot() function, I haven't even looked at your rdotinc() function.

I'm sure I could go on, but it seems like a very poor implementation of a simple $root = '/dir/'; approach. I was going to simply clean up your code, but after trying, I can't even figure out what your code's meant to do because it's so poorly written.

  • 0
  On 15/05/2012 at 21:10, -Alex- said:

Your code is written really sloppy, and although I haven't tried it, I know it won't work....

Amazing how you know so much when you know nothing. Download the script and learn it before judging blind. The code is written fine. It's been tested with no errors so far. I use my code on commercial sites and others professionally use it. Are you really that.... to think I would share a code that doesn't work???

Anyways, it's there if you need it. I have things to do.

  • 0
  On 16/05/2012 at 02:40, viogin said:

Amazing how you know so much when you know nothing. Download the script and learn it before judging blind. The code is written fine. It's been tested with no errors so far. I use my code on commercial sites and others professionally use it. Are you really that.... to think I would share a code that doesn't work???

Anyways, it's there if you need it. I have things to do.

I'm sorry mate, but Alex is right. Your script doesn't look like it would work at all.

Looking at v2

you have two declared functions, each of which attempts to include a file named rooter.php. These are both in a file called rooter.php. In each function the first iteration of the while loop attempts to include a file named rooter.php in the path ./ - ie, the functions attempt to include the file in which they were declared. This should cause a fatal error, since functions cannot be redeclared.

In the same functions a check is made against a variable called $rootercheck. This variable does not exist in the scope of either function, this should raise a php uninitialized variable warning.

In the case of both function it's hard to see how the following which you posted possibly translates

// rdot() is nba folder and rdot2() wnba folder.
&lt;img src="&lt;?php rdot('img/ball.png'); ?&gt;" /&gt;
&lt;img src="&lt;?php rdot2('img/ball.png'); ?&gt;" /&gt;

// using rdot() is easier to see and better than writing:

&lt;img src="../../../../../../../nba/img/ball.png" /&gt;
&lt;img src="../../../../../../../wnba/img/ball.png" /&gt;

how is rdot nba folder? where is that defined?

how is rdot2 wnba folder? where is that defined?

Are you suggestion we write a function for each root folder and include that globally in order to access files in those folders?

What the hell is wrong with

// include.php - include in main script, bootstrap, w/e
define('NBA_FOLDER', 'path/to/nba/');
define('WNBA_FOLDER', 'path/to/wnba/');

and then in html

&lt;img src="&lt;?php echo NBA_FOLDER . 'img/ball.png'; ?&gt;" /&gt;
&lt;img src="&lt;?php echo WNBA_FOLDER . 'img/ball.png'; ?&gt;" /&gt;

It's unclear from your code and from the files contained in your download how your functions are meant to function and where they should be placed, and how they should be used. Perhaps if you could address the shortcomings it might help. As it stands, I concur with Alex.

  • 0

ok, so looking closer, and trying to understand what this is meant to do, we're meant to place a file named rooter some place in the file system, and when called it will prepend ../ to whatever path we supply to rdot() and rdotinc() until it eventually finds itself (rooter.php) and then use that as the base?

So, we need to then duplicate the functions with different names and place at least one in each path under which we need a root? Again, why would you not just define the roots as constants and use those? It seems a lot easier than first having to remember the paths to the rooters to include them, and then having to remember what you called the functions in order to use the correct ones. Maybe I'm missing something, just seems like an awful lot of extra code/files and definitely doesn't fit with the DRY principle.

  • 0

It is a good script for a bit of fun to learn PHP and to play around with functions, while you're still learning PHP.

Really though i think most developers it would be common practice to define this type of data in a config file, use a bootstrapper or something similar.

Even for the smallest of projects.

Also why is your functions code all one line? It offers no performance gain and really makes it difficult for others to read and understand it. Especially with the amount of ifs and whiles you use.

  • 0

I believe the script is basically equivalent to this (if HI_IM_THE_ROOT.wtf was in your 'root' directory):

function rdot($rstr){
$path = './';
while (!file_exists($path . 'HI_IM_THE_ROOT.wtf')) { $path .= '../'; }
echo $path . $rstr;
}[/CODE]

But does it in a buggy convoluted way... and it's a terrible idea to begin with, as stated in the comments above just define the paths yourself.

Anyway, if you want to continue with this idea (however bad it may be) here's some constructive criticism based on your code:

- Don't access uninitialized variables (E_NOTICE)

- Don't attempt to include non-existent files (E_WARNING)

- If rooter.php doesn't exist you enter an infinite loop (Fatal)

- Once you find the root path store it so you don't have to repeat the loop every time you call rdot

- rdot and rdotinc repeat the same logic, don't.

  • Like 3
  • 0
  On 16/05/2012 at 11:03, Lingwo said:

It is a good script for a bit of fun to learn PHP and to play around with functions, while you're still learning PHP.

Really though i think most developers it would be common practice to define this type of data in a config file, use a bootstrapper or something similar.

Even for the smallest of projects.

Also why is your functions code all one line? It offers no performance gain and really makes it difficult for others to read and understand it. Especially with the amount of ifs and whiles you use.

I'm used to compacting my script now and coding it that way. For my professional sites, I usually expand my code.

Some developers don't know how to use includes well. You can seriously use one header include for an entire site that has the rooter include, doc type and other scripts that's needed on every page.

Everyone codes differently and sometimes developers have to remember there's always usually more than one way to do a task. No way is really right or wrong.

Good luck out there fellow developers.

@ZakO,

There's nothing wrong with the script and it's not badly coded. Also, if you take time to read and actually test codes against PHP, you will know that rdot() and rdotinc() are not the same.

Also v1 and v2 are different methods to do the same thing. Kind of like working a math problem two different ways but coming up with the same answer. Neither is better than the other.

  • 0
  Quote
There's nothing wrong with the script and it's not badly coded...

Kind of like working a math problem two different ways but coming up with the same answer. Neither is better than the other.

I would disagree, put error_reporting(E_ALL) at the top of your script. It will return several messages (E_NOTICE and E_WARNING which most PHP developers will consider bad) due to accessing uninitialized variables and including non-existent files. Don't get me wrong, I know there's always many ways to achieve the same thing but in some cases one way is better than the other.

  Quote
The rdotinc(); on the other hand does the same thing, but puts it all in an INCLUDE(). WHY? Because during testing I found that trying to include a function in an INCLUDE() doesn't work. It just echos out text on the page. So, I wrapped the INCLUDE() with the function and everything works as expected.

This seems to show a lack of understanding of the basics of PHP. You absolutely can include the return value of a function inside an include call, the reason it's not working for you is because your rdot function is echoing a value, not returning one.

  • Like 2
  • 0
  On 16/05/2012 at 21:46, -Alex- said:

Seriously though, I'd love you to share your comments. You're one of the few people on here whose PHP advice I respect... so I say go for it!

Well... then I shall say this Rooter thing is an overkill not unlike an attempt to shoot yourself in the foot by amputating it with a rusted hacksaw mounted backwards, then supergluing it in front of a Gatling gun, then designing a remote-control enabled Arduino board synced to NTP pool to make a controlled precision shot, and then trying to sew the remains of that foot back using chopsticks, Ethernet cable and a bunch of bread bag gizmos.

ZakO's approach is way more simple, seen in practice, too. Though hammering filesystem repeatedly for every little crud one might want to refer to that way is still very inefficient.

* Generate all necessary paths based on $_SERVER['DOCUMENT_ROOT']

* (Recommended) Cache them (APC) or even store them (hidef)

* Take care not to expose them to the world

* Profit!

Oh, and I work at a convenience store (not unlike Dante Hicks), and just code crap because I hate everything else, so perhaps I really shouldn't be respected.

  • 0

I've been trying to install something called PPVDemon and it's supposed to work with some license code but when I enter it in it doesn't do anything on my web host is it possible and I got the error located at:

http://fast-profits-now.comoj.com/ppvdemon/ppv/

What does this error mean and how can I fix it?

Thanks in advanced for any helpful reply.

  • 0
  On 18/05/2012 at 01:31, netsurfer802 said:

I've been trying to install something called PPVDemon and it's supposed to work with some license code but when I enter it in it doesn't do anything on my web host is it possible and I got the error located at:

http://fast-profits-...m/ppvdemon/ppv/

What does this error mean and how can I fix it?

Thanks in advanced for any helpful reply.

Create your own thread rather than hijacking others ;)

This topic is now closed to further replies.
  • Posts

    • Grab the 2025 MacBook Air with M4 and save 18 percent now by Paul Hill If you’re in the market for a modern MacBook Air, check out the Apple 2025 MacBook Air 15-inch with the M4 chip on Amazon. It packs 16GB of Unified Memory and features a 256GB SSD. It's now discounted by 18%. This brings the price down to $1,178 from its original $1,428, a saving of $250. The deal also includes AppleCare+ for three years, which will help to protect your laptop. If you’re interested in this deal, act fast because it’s only available for a limited time. Powering this MacBook Air is Apple’s latest M4 chip which brings big performance boosts for multitasking, video editing, and graphically demanding games. The laptop boasts excellent battery life with up to 18 hours between charges, making it an exceptional choice for users on the go. This MacBook Air features a 15.3-inch Liquid Retina display which boasts vibrant colors and sharp details and there is a 12MP Center Stage camera, a three-mic array, and six speakers with Spatial Audio for improved video calls and media consumption. As for connectivity, you get two Thunderbolt 4 ports, MagSafe charging, a headphone jack, Wi-Fi 6E, and Bluetooth 5.3, with support for up to two external displays. This deal includes AppleCare+ which extends the standard one-year warranty and 90 days of technical support to three years from the purchase date. This gives you access to unlimited repairs for accidental damage, such as screen cracks or liquid spills, with a service fee ($99 for screen/enclosure damage, $299 for other accidental damage). With AppleCare+, you get 24/7 priority access to Apple experts for technical support and get global repair coverage and convenient service options such as carry-in and mail-in. Covered by AppleCare+ is the MacBook, its battery if the capacity drops below 80%, included accessories, Apple memory, and the Apple USB SuperDrive. Apple 2025 MacBook Air 15-inch: $1,178 (Amazon US) / MSRP $1,428 This Amazon deal is US-specific and not available in other regions unless specified. If you don't like it or want to look at more options, check out the Amazon US deals page here. Get Prime (SNAP), Prime Video, Audible Plus or Kindle / Music Unlimited. Free for 30 days. As an Amazon Associate, we earn from qualifying purchases.
    • Our top 10 stories about Windows 10 from the past decade by Usama Jawad Windows 10 is approaching its 10th anniversary in a couple of days, and to celebrate this occasion, we have been publishing content that reminisces the decade that we have spent with the operating system. So far, we have talked about 10 features in Windows 10 that just never took off, as well as Windows 10 being the primary reason why we are so conscious about privacy now. Now, we are taking a look at our Windows 10 coverage from the past 10 years, highlighting the 10 stories that were read the most by our audience. Please note that this list is sorted in ascending order, which means that out of this collection of 10 stories, we will be moving from least views to most views. Also keep in mind that an additional criterion for the stories in this piece was that while they can contain information about other topics too, the core focus should be around Windows 10. Without further ado, let's begin! 10. Windows 10 May 2021 Update is live - here's what to expect This is a rather interesting piece due to the background surrounding it. While Microsoft only releases one feature update for Windows now, it used to roll out two back in the day; H1 and H2. The H1 update was typically a major update with lots of new features, while H2 was a relatively minor release that was mostly an enablement package to light up certain disabled capabilities. With the Windows 10 May 2021 Update, also know as Windows 10, version 21H1, Microsoft flipped the script a bit, and made this supposed feature update an enablement package too. At that time, this became the operating system's smallest feature update with only three enhancements revolving around Windows Hello, Windows Defender Application Guard, and Windows Management Instrumentation (WMI). Not particularly interesting. Still, a lot of you read this piece, those were exciting times as Microsoft was reportedly working on Windows 10X too. However, the company ended up canceling the OS within a month within a few weeks following the release of the Windows 10 May 2021 Update. 9. Clean installed Windows 10 22H2 vs Windows 11 23H2 benchmarked for performance Our readers are typically quite interested in performance benchmarks and while we regularly cover results from third-party testing in our news stream, we decided to conduct our own testing on this particular occasion. We essentially pitted the latest available versions of both Windows 10 and Windows 11 on "clean" systems. Our findings across various CPU and GPU benchmarking tools revealed that Windows 10 and Windows 11 are pretty close in terms of performance. While one sometimes tops the other in a particular category, the difference is very negligible. This conclusion was important for a couple of reasons. It emphasized that despite Microsoft's attempts to convince you otherwise, Windows 11 doesn't sport a major increase in performance. But more importantly, it also served as proof to our readers that Windows 11 isn't worse off in gaming either, so this shouldn't be a factor when you are considering upgrading. 8. Microsoft's app that promises Windows performance improvements has some shady stuff inside Over a year ago, Microsoft released a PC Manager app in the Microsoft Store as a means to optimize and boost the performance of your Windows 10 and Windows 11. However, an investigation from our readers revealed some rather shady stuff. For one, the Deep Cleaning option in the app was rather aggressive and would end up deleting the Windows Prefetch folder, which is something that even Microsoft doesn't recommend that you do. Secondly, the app contained affiliate links with trackers to some Chinese software websites that were offering utilities. It's rather odd that a first-party official Microsoft app wasn't polished on release, but it once again cemented the belief that "optimizers" aren't ideal. 7. Save your computer from Microsoft's Windows 10 end-of-life planned obsolescence Image via GMUNK This is one of our more recent pieces surrounding the upcoming end-of-support deadline for Windows 10. This editorial penned by our News Editor Paul Hill talks about the impact that this deadline will have on the environment as old PCs are eventually dumped in landfills. Although Paul does highlight the ways in which you can officially or unofficially extend support (ESU, 0patch, Flyby), he believes that the best option right now is to switch to a Linux distribution. Paul lays out several options including GNOME, KDE, Cinnamon, Mint, LXQt, Fedora SilverBlue, Lubuntu, and more. Despite Neowin being a Windows-focused website, this article received a lot of views and fairly positive feedback too. 6. Windows 10 version 20H2 is here - here's what you need to know Remember when I said earlier that the H1 package used to be a major feature update for Windows 10, while H2 was mostly an enablement package? Well, at that time, we were talking about Windows 10 21H1, which turned out to be a minor update with only three new features. This piece was about the preceding update, Windows 10 20H2, which should now give you some reference point of how small the next update was. This roundup piece covered all the new capabilities and enhancements present in the Windows 10 version 20H2 update, including Start menu improvements, theme-aware tiles, All Apps redesign, tablet mode upgrades, the new Chromium-based Edge, and more. At that time, we called this a minor update, because we didn't know that Microsoft would be ditching its established conventions and making Windows 10, version 21H1 even smaller. 5. Windows 10 reaches 70% market share as Windows 11 keeps declining Although Windows 11 is just about to overtake Windows 10 in terms of market share according to the latest reports, this wasn't always the case. In fact, just over a year ago in May 2024, Windows 10 stood strong at 70%, while Windows 11 was limping at 25%. However, with Windows 10's death approaching fast, Windows 11 has finally turned a corner and both operating systems now occupy roughly 48% each of the Windows market. Things can only improve from here. 4. Microsoft admits it can't fix Windows 10 KB5034441 "0x80070643 - ERROR_INSTALL_FAILURE" Windows 10 users are often greeted with error 0x80070643 when dealing with the Windows Recovery Environment (WinRE). Although it can be manually fixed by customers, Microsoft says that it is impossible to resolve it in an automated manner controlled by the company itself. This particular issue has been a major annoyance for Windows customers in the past couple of years and in recent months, Microsoft has been telling customers to just ignore it and is reiterating that it can't ever be truly fixed. You have to wonder what the complexity of the problem is for Microsoft to issue such statements, but at least it doesn't impact anything critical. 3. Microsoft finally lifts two-year old block preventing Windows 10 users from upgrading to 11 Although we recently wrote an article about Microsoft finally lifting a long-standing Windows 11, version 24H2 block, the news story we'll be discussing in this section is slightly older. This piece is from April 2024 when Microsoft finally resolved a two-year-old update block surrounding the Intel Smart Sound Technology Audio Controller driver (Intel SST). It was particularly annoying that a problematic driver version was what was blocking customers from upgrading to Windows 11, and even I can relate since it impacted my daily driver too. That said, it is important to note that this was an external block since the driver in question was manufactured by Intel. Fortunately, Microsoft was able to work with Intel to release driver updates which finally lifted this block. 2. Windows 10 version 1909 is coming - here's what you need to know As you may have observed, our roundup articles do quite well here on Neowin. This particular piece is about the features present in Windows 10 version 1909. This was a rather unfriendly naming scheme that Microsoft dropped later, but just to give you context, it refers to Windows 10, version 19H2, which makes it almost six years old! Since this is an H2 update, this was an enablement package too, with improvements in tow for notifications, lock screen, desktop environment, battery life, accessibility, and more. Even though Microsoft rolled out two feature updates at that time, it seems like the company really put effort into packing as many capabilities as it could into each release. 1. Windows 10 version 2004 is here - here's what you need to know about it The magnum opus of our Windows 10 coverage in the past decade is... another feature roundup! This time, it's about Windows 10, version 2004 (or 20H1), which is the version immediately succeeding the one that we just talked about previously. Since this was an H1 release, it was a massive, massive upgrade. Customers were treated to a new Cortana app, Windows Subsystem for Linux 2 (WSL 2), Notepad enhancements, Windows Search upgrades, Windows Sandbox and virtual desktop improvements, and just so much more. It's almost impossible to recap them all in a way that gives justice to all the capabilities in tow. No wonder our readers flocked to this article, making this our most-viewed Windows 10 story of the past 10 years. This story is a part of our "10 Years of Windows 10" collection, in celebration of the operating system's tenth anniversary, falling on July 29, 2025. Over the next few days and weeks, you'll be able to find more content on this topic in our dedicated section available here.
    • Also on the dedication wall Lt Nog's name was there      Mr. Kim actually got a promotion!
    • Shotcut 25.07 by Razvan Serea Shotcut is a free, open source, cross-platform video editor for Windows, Mac and Linux. Major features include support for a wide range of formats; no import required meaning native timeline editing; Blackmagic Design support for input and preview monitoring; and resolution support to 4k. Editing Features Trimming on source clip player or timeline with ripple option Append, insert, overwrite, lift, and ripple delete editing on the timeline 3-point editing Hide, mute, and lock track controls Multitrack timeline with thumbnails and waveforms Unlimited undo and redo for playlist edits including a history view Create, play, edit, save, load, encode, and stream MLT XML projects (with auto-save) Save and load trimmed clip as MLT XML file Load and play complex MLT XML file as a clip Drag-n-drop files from file manager Scrubbing and transport control Video Effects Video compositing across video tracks HTML5 (sans audio and video) as video source and filters 3-way (shadows, mids, highlights) color wheels for color correction and grading Eye dropper tool to pick neutral color for white balancing Deinterlacing Auto-rotate Fade in/out audio and fade video from and to black with easy-to-use fader controls on timeline Video wipe transitions: bar, barn door, box, clock (radial), diagonal, iris, matrix, and custom gradient image Track compositing/blending modes: Over, Add, Saturate, Multiply, Screen, Overlay, Darken, Dodge, Burn, Hard Light, Soft Light, Difference, Exclusion, HSL Hue, HSL Saturation, HSL Color, HSL Luminosity. Video Filters: Alpha Channel: Adjust, Alpha Channel: View, Blur, Brightness, Chroma Key: Advanced, Chroma Key: Simple, Contrast, Color Grading, Crop, Diffusion, Glow, Invert Colors, Key Spill: Advanced, Key Spill: Simple, Mirror, Old Film: Dust, Old Film: Grain, Old Film: Projector, Old Film: Scratches, Old Film: Technocolor, Opacity, Rotate, Rutt-Etra-Izer, Saturation, Sepia Tone, Sharpen, Size and Position, Stabilize, Text, Vignette, Wave, White Balance Speed effect for audio/video clips Hardware Support Blackmagic Design SDI and HDMI for input and preview monitoring Leap Motion for jog/shuttle control Webcam capture Audio capture to system audio card Capture (record) SDI, HDMI, webcam (V4L2), JACK audio, PulseAudio, IP stream, X11 screen, and Windows DirectShow devices Multi-core parallel image processing (when not using GPU and frame-dropping is disabled) DeckLink SDI keyer output OpenGL GPU-based image processing with 16-bit floating point linear per color component ShotCut 25.07 changelog: Added a Whisper.cpp (GGML) model downloader to the Speech to Text dialog. A model is no longer included in the download and installation reducing their sizes. Improved the System theme to follow the operating system palette on Windows (darker and more contrast), and improved its appearance on macOS dark mode. Added Settings > Theme > System Fusion that combines the operating system palette with the monochrome, symbolic icons of the Fusion themes. Added an Outline video filter that uses the input alpha channel--useful with rich text or assets with a transparent background. This means that, like Drop Shadow, it will not work as expected when used after a text filter on a video or image clip. Rather, you must use a text clip (transparent color generator with text filter) on an upper track. Other New Features Added the ability to drag the waveform peak line to adjust audio gain. Added Settings > Timeline > Adjust Clip Gain/Volume to turn off the above. Added rolling an edit/trim to Timeline: Hold Ctrl (command on macOS) while trimming to simultaneously trim the neighbor clip. Added a Soft Focus filter set. Added Audio/Video duration to the Slideshow Generator dialog, defaults to 4 hours. This facilitates using Slideshow Generator to make transitions between everything when including both video and images. (It still respects the source duration and in & out points; duration here is a maximum.) Surround Sound Mixing Improvements Added fader and surround balance to the Balance audio filter if channels > 2. Added Channels toggle buttons to many audio filters: Band Pass Compressor Delay Downmix Equalizer: 3-Band Equalizer: 15-Band Equalizer: Parametric Expander Gain/Volume High Pass Low Pass Limiter Mute Noise Gate Notch Added support for 4 channels in the Copy Channel audio filter. For example, now you can: Copy stereo music to the rear channels and use the fader in the Balance filter to reduce its volume, Downmix spoken word into the center channel and apply a Band Pass filter to it, and Route music or sound effects to the low-frequency channels and apply a Low Pass filter to it. Other Improvements Changed the default Export > Audio > Rate control to Average Bitrate for AAC, Opus, and MP3. Added the ability to add/use multiple Mask: Apply filters. Added support for Scrub While Dragging to trimming on the timeline. Added hold Shift to ripple-trim when Ripple is turned off. Added French (Canadian) and Lithuanian translations. Fixes Fixed Mask: Apply with multiple Mask: Simple Shape (broke in v25.05) Fixed exporting projects containing only Generator clips on Windows (broke in v25.05). Fixed converting 10-bit full to limited range (broke in v25.01). Fixed dropdown menus using Settings > Theme > System on Windows. Fixed Balance and Pan audio muted channels if audio channels > 2. Fixed Export > Use hardware encoder fails with H.264 on macOS 15. Fixed Properties > Convert or Reverse for iPhone 16 Pro videos with Ambisonic audio. Fixed a single frame fade out filter would either mute or make black. Fixed repairing a project (e.g. broken file links) with proxy turned on. Fixed doing Freeze Frame on the first frame of a clip. Download: ShotCut 25.07 | Portable | ARM64 ~200.0 MB (Open Source) View: Shotcut Home Page | Other Operating Systems | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Win8 still takes the crown though in terms of worst Microsoft OS which all boiled down to it's horrible interface upon release as it was actually difficult to do even basic stuff. I remember trying it in a VM early on and it was a chore doing the basics we have had for ages and I quickly dumped that and never bothered with it again. in fact, prior to Win11 it was the only OS from Microsoft I have never used/had on a real machine and I have been using windows from Win v3.11 in mid-1990's through Windows 10. basically Win v3.11, 95, 98, Me, 2k, XP, 7, Vista, 10. but putting Windows 8 aside, I would probably place Win11 next in line (lets start from WinXP to date since that's basically when Windows got good and PC's pretty much went mainstream), but at least Win11 is not in the 'horrible' category as at least it's basic interface is normal. but if I ignore the interface, Win11 is a strong candidate, not only for telemetry and the like, but forced "requirements" which make people jump through hoops we should not have to all in the name of "better security", which personally I think is not enough of a boost to justify the forced "requirements". but one area you can tell Linux is faster is installing updates and, as a bonus, we generally don't need to reboot (short of like Kernel updates but those I am in no rush as my longest every main PC system uptime without a reboot was Aug 2023 until Jan 2025). but yeah, I suspect all of the background junk Windows has running does slow things a bit. p.s. speaking of that 'CachyOS', I used one of their custom Proton's (on Lutris) to get NTSync recently as while I usually use the more typical 'GE-Proton10-10' (this and '10-9' have NTSync support which was added recently. but 10-9 you have to manually enable where as 10-10 is automatic if it's available in the kernel to the system), I have one game which does not play back in-game videos with the Proton 10 series (you can hear audio but it's basically a black screen) but works in the 9 series and 'CachyOS' had a build from Jan 2025 that has NTSync, so I used that and it worked. I had to use 'PROTON_USE_NTSYNC=1' though since it's not enabled by default (along with 'sudo modprobe ntsync', or setup a udev rule etc if you want it to work in reboots without needing to do that command). one can see NTSync is working through MangoHud if you setup 'winesync' (just add that entry to "~/.config/MangoHud/MangoHud.conf") in the configuration file for ManngoHud or if you want to directly see it in proton log I did 'PROTON_LOG=1', which then creates a log in the Home folder which, at least on GE-Proton10-10, creates 'steam-default.log' and in that shows "wineserver: NTSync up and running!" where as if you don't it will generally show "fsync: up and running."
  • Recent Achievements

    • Week One Done
      Lokmat Rajasthan earned a badge
      Week One Done
    • One Month Later
      TheRingmaster earned a badge
      One Month Later
    • First Post
      smileyhead earned a badge
      First Post
    • One Month Later
      K V earned a badge
      One Month Later
    • Week One Done
      K V earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      641
    2. 2
      ATLien_0
      243
    3. 3
      Xenon
      180
    4. 4
      neufuse
      155
    5. 5
      +FloatingFatMan
      125
  • Tell a friend

    Love Neowin? Tell a friend!