Cosmetic adjustments
This commit is contained in:
parent
16c7474ca9
commit
cd0e4c9084
46
plock
46
plock
|
@ -1,21 +1,25 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import pwd
|
||||
import sys
|
||||
import hashlib
|
||||
|
||||
from PyQt5.QtWidgets import QApplication
|
||||
from PyQt5.QtWidgets import QMainWindow
|
||||
from PyQt5.QtWidgets import QLineEdit
|
||||
from PyQt5.QtWidgets import QLabel
|
||||
from PyQt5.QtWidgets import QVBoxLayout
|
||||
from PyQt5.QtWidgets import QWidget
|
||||
from PyQt5.QtGui import QCursor
|
||||
from PyQt5.QtWidgets import QDesktopWidget
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtCore import QTimer
|
||||
from PyQt5.QtGui import QCursor
|
||||
|
||||
|
||||
CORRECT_PASSWORD_HASH = '1d2e2b10cf9a5474612138ac00bc8b1e8fe895822ddc1e77e0edd023fcff4565'
|
||||
|
||||
class FullScreenWindow(QMainWindow):
|
||||
class LockScreen(QMainWindow):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.title = 'plock'
|
||||
|
@ -24,21 +28,40 @@ class FullScreenWindow(QMainWindow):
|
|||
def initUI(self):
|
||||
self.setWindowTitle(self.title)
|
||||
|
||||
self.setWindowFlags(Qt.FramelessWindowHint)
|
||||
|
||||
self.central_widget = QWidget()
|
||||
self.central_widget.setFixedSize(300, 100)
|
||||
self.setCentralWidget(self.central_widget)
|
||||
|
||||
layout = QVBoxLayout()
|
||||
|
||||
current_user = pwd.getpwuid(os.getuid())[0]
|
||||
self.password_label = QLabel(f"{current_user}'s password:")
|
||||
self.password_label.setAlignment(Qt.AlignCenter)
|
||||
|
||||
layout.addWidget(self.password_label)
|
||||
|
||||
self.password_field = QLineEdit()
|
||||
self.password_field.setEchoMode(QLineEdit.Password)
|
||||
self.password_field.returnPressed.connect(self.check_password)
|
||||
self.password_field.setFixedWidth(200)
|
||||
|
||||
layout.addWidget(self.password_field, 0, Qt.AlignCenter)
|
||||
layout.setContentsMargins(50, 20, 50, 20)
|
||||
|
||||
self.central_widget.setLayout(layout)
|
||||
|
||||
self.showFullScreen()
|
||||
self.show()
|
||||
QTimer.singleShot(100, self.centerOnScreen)
|
||||
# self.showFullScreen()
|
||||
|
||||
def centerOnScreen(self):
|
||||
screen_center = QDesktopWidget().availableGeometry().center()
|
||||
frame_geometry = self.frameGeometry()
|
||||
screen_center.setY(screen_center.y() - 100)
|
||||
frame_geometry.moveCenter(screen_center)
|
||||
self.move(frame_geometry.topLeft())
|
||||
|
||||
def check_password(self):
|
||||
entered_password_hash = hashlib.sha256(self.password_field.text().encode('utf-8')).hexdigest()
|
||||
|
@ -50,25 +73,28 @@ class FullScreenWindow(QMainWindow):
|
|||
QTimer.singleShot(100, self.grabKeyboardAndMouse)
|
||||
|
||||
def grabKeyboardAndMouse(self):
|
||||
super().showFullScreen()
|
||||
self.grabMouse()
|
||||
self.grabKeyboard()
|
||||
self.setCursor(QCursor(Qt.BlankCursor))
|
||||
# self.setCursor(QCursor(Qt.BlankCursor))
|
||||
self.password_field.setFocus()
|
||||
|
||||
def keyPressEvent(self, event):
|
||||
self.grabMouse()
|
||||
self.grabKeyboard()
|
||||
if event.key() == Qt.Key_Escape:
|
||||
if event.modifiers() & Qt.ControlModifier:
|
||||
print("Secure exit requested")
|
||||
self.close()
|
||||
# Secret bypass (currently inactive)
|
||||
if (
|
||||
False
|
||||
and event.key() == Qt.Key_Escape
|
||||
and event.modifiers() & Qt.ControlModifier
|
||||
):
|
||||
print("Secure exit requested")
|
||||
self.close()
|
||||
else:
|
||||
self.password_field.keyPressEvent(event)
|
||||
|
||||
def main() -> int:
|
||||
app = QApplication(sys.argv)
|
||||
ex = FullScreenWindow()
|
||||
ex = LockScreen()
|
||||
return app.exec_()
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
#!/bin/sh
|
||||
/home/"$(whoami)"/.local/bin/cmatrix -f
|
||||
/home/"$(whoami)"/.local/bin/cmatrix -f -C blue "${@}"
|
||||
|
|
Loading…
Reference in New Issue