Add fix_screen_tearing.pl
This commit is contained in:
parent
6e8cae42c5
commit
645ae18a05
28
dotfiles/lib/bin/fix_screen_tearing.pl
Executable file
28
dotfiles/lib/bin/fix_screen_tearing.pl
Executable file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/perl
|
||||
# Quickly set ForceFullCompositionPipeline with nvidia-settings for all currently connected screens, useful for gamers seeing screen tear issues
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
# Grab xrandr output for parsing
|
||||
my $xrandrOutput = `xrandr`;
|
||||
|
||||
# Filter all currently selected modes
|
||||
my @modes = $xrandrOutput =~ /.*\sconnected.*/g;
|
||||
die "Output didn't match expected format\n" if ( scalar @modes lt 1 );
|
||||
my @newModes = ();
|
||||
foreach my $mode ( @modes )
|
||||
{
|
||||
# Filter the current modes and add to list in right format
|
||||
my @details = $mode =~ /(.*)\sconnected.*?(\d[^\s]+).*/g;
|
||||
die "Output didn't match expected format\n" if ( scalar @details lt 2 );
|
||||
push( @newModes, join( ":", @details ) );
|
||||
}
|
||||
|
||||
# Construct the new mode command
|
||||
my $newModeCommand = "nvidia-settings --assign CurrentMetaMode='";
|
||||
$newModeCommand .= "$_ { ForceFullCompositionPipeline = On }, " foreach ( @newModes );
|
||||
$newModeCommand .= "'";
|
||||
|
||||
# Print and set our new mode
|
||||
print "running \"$newModeCommand\"\n";
|
||||
system( $newModeCommand );
|
Loading…
Reference in New Issue
Block a user