mirror of
https://github.com/kossLAN/dots.git
synced 2025-11-04 22:49:50 -05:00
refactor: make screenshots even less bad, and copy to the clipboard
This commit is contained in:
parent
62ed66e60a
commit
29658fa910
4 changed files with 52 additions and 7 deletions
|
|
@ -40,7 +40,6 @@ Variants {
|
||||||
// Left side of bar
|
// Left side of bar
|
||||||
RowLayout {
|
RowLayout {
|
||||||
spacing: 15
|
spacing: 15
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.alignment: Qt.AlignLeft
|
Layout.alignment: Qt.AlignLeft
|
||||||
|
|
||||||
|
|
@ -94,6 +93,7 @@ Variants {
|
||||||
Clock {
|
Clock {
|
||||||
id: clock
|
id: clock
|
||||||
color: ShellSettings.colors.active
|
color: ShellSettings.colors.active
|
||||||
|
Layout.leftMargin: 5
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import Quickshell
|
||||||
import Quickshell.Io
|
import Quickshell.Io
|
||||||
import Quickshell.Wayland
|
import Quickshell.Wayland
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
import qs
|
||||||
|
|
||||||
Singleton {
|
Singleton {
|
||||||
id: root
|
id: root
|
||||||
|
|
@ -53,10 +54,30 @@ Singleton {
|
||||||
const height = Math.floor(selection.height);
|
const height = Math.floor(selection.height);
|
||||||
|
|
||||||
let position = `${x},${y} ${width}x${height}`;
|
let position = `${x},${y} ${width}x${height}`;
|
||||||
let path = "/home/koss/Pictures/screenshot.png";
|
|
||||||
|
// i hate javascript
|
||||||
|
let date = new Date();
|
||||||
|
let year = date.getFullYear();
|
||||||
|
let month = date.getMonth();
|
||||||
|
let day = date.getDay();
|
||||||
|
let dateString = `${year}-${month}-${day}`;
|
||||||
|
|
||||||
|
let hour = date.getHours();
|
||||||
|
let minutes = date.getMinutes();
|
||||||
|
let seconds = date.getSeconds();
|
||||||
|
let timeString = `${hour}:${minutes}:${seconds}`;
|
||||||
|
|
||||||
|
let fileName = `screenshot-${dateString}-${timeString}.png`
|
||||||
|
const path = `${ShellSettings.settings.screenshotPath}/${fileName}`;
|
||||||
|
|
||||||
|
console.log(`Screenshot saved to ${path}`);
|
||||||
|
|
||||||
|
// take a screenshot with grim, probably a better way to get this path...
|
||||||
|
let scriptUrl = Qt.resolvedUrl("root:scripts/screenshot.sh").toLocaleString();
|
||||||
|
let scriptPath = scriptUrl.replace(/^(file:\/{2})/, "");
|
||||||
|
|
||||||
Quickshell.execDetached({
|
Quickshell.execDetached({
|
||||||
command: ["grim", "-g", position, path]
|
command: ["sh", scriptPath, position, path]
|
||||||
});
|
});
|
||||||
|
|
||||||
root.windowOpen = false;
|
root.windowOpen = false;
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,17 @@ Item {
|
||||||
property color overlayColor: "#80000000"
|
property color overlayColor: "#80000000"
|
||||||
property rect selectionRect: Qt.rect(0, 0, 0, 0)
|
property rect selectionRect: Qt.rect(0, 0, 0, 0)
|
||||||
property point startPosition: Qt.point(0, 0)
|
property point startPosition: Qt.point(0, 0)
|
||||||
|
property real borderSize: 2
|
||||||
|
|
||||||
signal areaSelected(rect selection)
|
signal areaSelected(rect selection)
|
||||||
|
|
||||||
// only send signal when selection rectangle has finished
|
// only send signal when selection rectangle has finished
|
||||||
onVisibleChanged: areaSelected(selectionRect)
|
onVisibleChanged: {
|
||||||
|
if (!visible)
|
||||||
|
selectionRect.width -= borderSize;
|
||||||
|
selectionRect.height -= borderSize;
|
||||||
|
areaSelected(selectionRect);
|
||||||
|
}
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
id: selectionArea
|
id: selectionArea
|
||||||
|
|
@ -94,7 +101,7 @@ Item {
|
||||||
id: rectangle
|
id: rectangle
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
border.color: ShellSettings.colors.active_translucent
|
border.color: ShellSettings.colors.active_translucent
|
||||||
border.width: 2
|
border.width: root.borderSize
|
||||||
x: 0
|
x: 0
|
||||||
y: 0
|
y: 0
|
||||||
width: 0
|
width: 0
|
||||||
|
|
|
||||||
17
shell/scripts/screenshot.sh
Normal file
17
shell/scripts/screenshot.sh
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
# Very basic script for taking a screenshot and then
|
||||||
|
# copying it the clipboard
|
||||||
|
|
||||||
|
if [ "$#" -ne 2 ]; then
|
||||||
|
echo "Usage: $0 <geometry> <path>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create directory if doesn't already exist
|
||||||
|
mkdir -p ~/Pictures
|
||||||
|
|
||||||
|
# 1 - Geometry
|
||||||
|
# 2 - Path
|
||||||
|
grim -g "$1" $2
|
||||||
|
wl-copy <$2
|
||||||
Loading…
Add table
Add a link
Reference in a new issue