summaryrefslogtreecommitdiff
path: root/archive/bin/xmouse-away-from-edge
diff options
context:
space:
mode:
Diffstat (limited to 'archive/bin/xmouse-away-from-edge')
-rwxr-xr-xarchive/bin/xmouse-away-from-edge43
1 files changed, 43 insertions, 0 deletions
diff --git a/archive/bin/xmouse-away-from-edge b/archive/bin/xmouse-away-from-edge
new file mode 100755
index 00000000..8ddf8aaa
--- /dev/null
+++ b/archive/bin/xmouse-away-from-edge
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2019 Sean Whitton
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or (at
+# your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+use 5.028;
+use strict;
+use warnings;
+
+our $tolerance = 50;
+our $jitter = 50;
+
+my $xdpyinfo = `xdpyinfo`;
+$xdpyinfo =~ /dimensions: ([0-9]+)x([0-9]+)/;
+my ($width, $height) = ($1, $2);
+my $getmouselocation = `xdotool getmouselocation`;
+$getmouselocation =~ /x:([0-9]+) y:([0-9]+)/;
+my ($x, $y) = ($1, $2);
+
+if ($width - $x > 0 && $width - $x < $tolerance) {
+ move(-$jitter, 0);
+} elsif ($x < $tolerance) {
+ move($jitter, 0);
+}
+if ($height - $y > 0 && $height - $y < $tolerance) {
+ move(0, -$jitter);
+} elsif ($y < $tolerance) {
+ move(0, $jitter);
+}
+
+sub move { system "xdotool mousemove_relative --sync -- $_[0] $_[1]" }