#!/usr/bin/env python3
# I was looking at a certain provissioning tool, and keeping track of all the lines was hard,
# highlighting isnt an option, and theres a lot of stuff on the sceen.
# this script is to help me keep track of the line I'm on.
# pip install PyQt5
import sys
from PyQt5 import QtCore, QtWidgets, QtGui
class HighlightLineOverlay(QtWidgets.QWidget):
def __init__(self):
super().__init__()
# Set up the main window
self.setWindowFlags(
QtCore.Qt.FramelessWindowHint |
QtCore.Qt.WindowStaysOnTopHint |
QtCore.Qt.Tool |
QtCore.Qt.WindowTransparentForInput
)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
# Set the overlay window to full screen
self.screen_width = QtWidgets.QApplication.primaryScreen().size().width()
self.screen_height = QtWidgets.QApplication.primaryScreen().size().height()
self.setGeometry(0, 0, self.screen_width, self.screen_height)
# Create the highlight bar with semi-transparent color
self.bar_height = 15 # Adjust bar thickness here
self.bar_color = QtGui.QColor(255, 255, 0, 50) # Yellow bar with transparency (150)
self.bar_y_position = 100 # Initial Y position
self.showFullScreen()
# Set up a timer to update the bar position based on mouse Y coordinate
self.timer = QtCore.QTimer(self)
self.timer.timeout.connect(self.update_bar_position)
self.timer.start(20) # Refresh rate
def paintEvent(self, event):
# Draw the highlight bar
painter = QtGui.QPainter(self)
painter.setRenderHint(QtGui.QPainter.Antialiasing)
painter.setBrush(self.bar_color)
painter.setPen(QtCore.Qt.NoPen)
painter.drawRect(0, self.bar_y_position, self.screen_width, self.bar_height)
def update_bar_position(self):
# Get the current mouse position
cursor_pos = QtGui.QCursor.pos()
# Update the bar's Y position to follow the mouse's Y coordinate
self.bar_y_position = cursor_pos.y()
self.update() # Redraw the bar at the new position
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
overlay = HighlightLineOverlay()
overlay.show()
sys.exit(app.exec_())