Compare commits

17 Commits
main ... linux

Author SHA1 Message Date
2fb3eb1f52 update 2025-10-24 10:53:43 +02:00
28441df095 various 2025-08-03 13:16:51 +02:00
2670f63d20 various updates 2025-06-19 10:04:20 +02:00
34b5a37e8a various updates 2025-02-27 10:40:26 +01:00
7256aef51f wlogout 2024-12-17 14:54:55 +01:00
05499d1bf7 wireplumber, to disable hfp 2024-12-17 14:54:48 +01:00
c0a61cf814 various 2024-12-17 14:54:14 +01:00
88c24e8d37 dunst notifications styling 2024-12-17 14:54:05 +01:00
df5b4cd922 vscode keybinds 2024-12-17 14:53:57 +01:00
5714f8612c update configs 2024-11-11 02:30:59 +01:00
a0fb1d31f3 various updates, mainly hyprland 2024-10-29 01:14:57 +01:00
417c05c469 ignore Renviron 2024-08-21 01:25:31 +02:00
2a6d2cbb4d vscode changes 2024-08-21 01:24:33 +02:00
acd6b00420 changed some 2024-08-21 01:24:22 +02:00
319fceddd0 various 2024-04-03 00:08:40 +02:00
a1354d13fd bunch of config files 2024-03-30 01:19:14 +01:00
b9262745cb layout for gnu stow 2024-03-18 00:36:04 +01:00
54 changed files with 2560 additions and 237 deletions

6
.Rprofile Normal file
View File

@ -0,0 +1,6 @@
# Default CRAN repository
local({
r <- getOption("repos")
r["CRAN"] <- "https://cran.r-project.org"
options(repos=r)
})

View File

@ -0,0 +1 @@
{"partition":{"per_host_zoom_levels":{"17930316523213634392":{"app.clickup.com":2.0}}},"spellcheck":{"dictionaries":["en-US","de-DE"],"dictionary":""}}

View File

@ -0,0 +1,400 @@
// Place your key bindings in this file to override the defaultsauto[]
[
// -------------- 1. EDITOR PANE MANAGEMENT --------------
// -------------- 1.1 EDITOR PANE CREATION ---------------
{
"key": "ctrl+a shift+7",
"command": "workbench.action.splitEditorRight"
},
{
"key": "ctrl+a -",
"command": "workbench.action.splitEditorDown"
},
// -------------- 1.2 EDITOR PANE SWITCHING --------------
{
"key": "ctrl+a left",
"command": "workbench.action.focusLeftGroup"
},
{
"key": "ctrl+a right",
"command": "workbench.action.focusRightGroup"
},
{
"key": "ctrl+a up",
"command": "workbench.action.focusAboveGroup"
},
{
"key": "ctrl+a down",
"command": "workbench.action.focusBelowGroup"
},
// --------------- 1.3 EDITOR PANE MOVEMENT --------------
{
"key": "ctrl+a shift+left",
"command": "workbench.action.moveActiveEditorGroupLeft"
},
{
"key": "ctrl+a shift+right",
"command": "workbench.action.moveActiveEditorGroupRight"
},
{
"key": "ctrl+a shift+up",
"command": "workbench.action.moveActiveEditorGroupUp"
},
{
"key": "ctrl+a shift+down",
"command": "workbench.action.moveActiveEditorGroupDown"
},
// ------------------ 2. FILE MANAGEMENT -----------------
{
"key": "ctrl+e",
"command": "workbench.files.action.focusFilesExplorer"
},
{
"key": "ctrl+n",
"command": "explorer.newFile",
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
},
{
"key": "ctrl+d",
"command": "explorer.newFolder",
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
},
// ----------------- 3. SYMBOL MANAGEMENT ----------------
{
"key": "shift+ctrl+r",
"command": "editor.action.rename",
"when": "editorHasRenameProvider && editorTextFocus && !editorReadonly"
},
{
"key": "shift+ctrl+d",
"command": "editor.action.revealDefinition",
"when": "editorHasDefinitionProvider && editorTextFocus && !isInEmbeddedEditor"
},
// ------------- 4. VARIOUS EDITOR SHORTCUTS -------------
{
"key": "ctrl+d",
"command": "editor.action.copyLinesDownAction",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "ctrl+t",
"command": "workbench.action.createTerminalEditor"
},
{
"key": "ctrl+u",
"command": "workbench.action.showAllSymbols"
},
{
"key": "ctrl+r",
"command": "editor.action.startFindReplaceAction",
"when": "editorFocus && findInputFocussed"
},
{
"key": "shift+ctrl+w",
"command": "workbench.action.closeAllGroups"
},
// ----------------- 4. REMOVED SHORTCUTS ----------------
{
"key": "ctrl+d",
"command": "-editor.action.addSelectionToNextFindMatch",
"when": "editorFocus"
},
{
"key": "shift+alt+down",
"command": "-editor.action.copyLinesDownAction",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "ctrl+t",
"command": "-workbench.action.showAllSymbols"
},
{
"key": "ctrl+u",
"command": "-cursorUndo",
"when": "textInputFocus"
},
{
"key": "ctrl+k down",
"command": "-workbench.action.moveActiveEditorGroupDown"
},
{
"key": "ctrl+k left",
"command": "-workbench.action.moveActiveEditorGroupLeft"
},
{
"key": "ctrl+k right",
"command": "-workbench.action.moveActiveEditorGroupRight"
},
{
"key": "ctrl+k up",
"command": "-workbench.action.moveActiveEditorGroupUp"
},
{
"key": "alt+enter",
"command": "-notebook.cell.executeAndInsertBelow",
"when": "notebookCellListFocused && notebookCellType == 'markup' || notebookCellListFocused && notebookMissingKernelExtension && !notebookCellExecuting && notebookCellType == 'code' || notebookCellListFocused && !notebookCellExecuting && notebookCellType == 'code' && notebookKernelCount > 0 || notebookCellListFocused && !notebookCellExecuting && notebookCellType == 'code' && notebookKernelSourceCount > 0"
},
{
"key": "alt+enter",
"command": "-debug.openBreakpointToSide",
"when": "breakpointsFocused"
},
{
"key": "f2",
"command": "-editor.action.rename",
"when": "editorHasRenameProvider && editorTextFocus && !editorReadonly"
},
{
"key": "shift+ctrl+r",
"command": "-rerunSearchEditorSearch",
"when": "inSearchEditor"
},
{
"key": "shift+ctrl+w",
"command": "-workbench.action.closeWindow"
},
{
"key": "ctrl+k shift+ctrl+w",
"command": "-workbench.action.closeAllGroups"
},
{
"key": "shift+ctrl+d",
"command": "-workbench.view.debug",
"when": "viewContainer.workbench.view.debug.enabled"
},
{
"key": "f12",
"command": "-editor.action.revealDefinition",
"when": "editorHasDefinitionProvider && editorTextFocus && !isInEmbeddedEditor"
},
{
"key": "shift+ctrl+[Comma] ctrl+i",
"command": "-testing.toggleInlineTestOutput"
},
{
"key": "shift+ctrl+i",
"command": "-workbench.action.quickchat.toggle",
"when": "hasChatProvider"
},
{
"key": "shift+ctrl+[Comma] shift+ctrl+i",
"command": "-testing.toggleInlineCoverage",
"when": "testing.isTestCoverageOpen"
},
{
"key": "ctrl+f12",
"command": "-editor.action.goToImplementation",
"when": "editorHasImplementationProvider && editorTextFocus && !isInEmbeddedEditor"
},
{
"key": "shift+ctrl+f12",
"command": "-editor.action.peekImplementation",
"when": "editorHasImplementationProvider && editorTextFocus && !inReferenceSearchEditor && !isInEmbeddedEditor"
},
{
"key": "alt+[BracketRight]",
"command": "jupyter.insertCellBelow",
"when": "editorTextFocus && jupyter.hascodecells && !jupyter.webExtension && !notebookEditorFocused"
},
{
"key": "ctrl+shift+[Comma] b",
"command": "-jupyter.insertCellBelow",
"when": "editorTextFocus && jupyter.hascodecells && !jupyter.webExtension && !notebookEditorFocused"
},
{
"key": "shift+alt+[BracketRight]",
"command": "jupyter.insertCellAbove",
"when": "editorTextFocus && jupyter.hascodecells && !jupyter.webExtension && !notebookEditorFocused"
},
{
"key": "ctrl+shift+[Comma] a",
"command": "-jupyter.insertCellAbove",
"when": "editorTextFocus && jupyter.hascodecells && !jupyter.webExtension && !notebookEditorFocused"
},
{
"key": "ctrl+down",
"command": "jupyter.gotoNextCellInFile"
},
{
"key": "ctrl+up",
"command": "jupyter.gotoPrevCellInFile"
},
{
"key": "ctrl+a a",
"command": "editor.action.selectAll"
},
{
"key": "ctrl+a",
"command": "-editor.action.selectAll"
},
{
"key": "alt+w",
"command": "-toggleSearchEditorWholeWord",
"when": "inSearchEditor && searchInputBoxFocus"
},
{
"key": "alt+w",
"command": "-workbench.action.terminal.toggleFindWholeWord",
"when": "terminalFindVisible && terminalHasBeenCreated || terminalFindVisible && terminalProcessSupported"
},
{
"key": "alt+w",
"command": "-toggleFindWholeWord",
"when": "editorFocus"
},
{
"key": "alt+w",
"command": "-toggleSearchWholeWord",
"when": "searchViewletFocus"
},
{
"key": "alt+w",
"command": "editor.emmet.action.wrapWithAbbreviation",
"when": "editorFocus"
},
{
"key": "ctrl+shift+i",
"command": "-workbench.action.toggleDevTools",
"when": "isDevelopment"
},
{
"key": "ctrl+shift+i",
"command": "-notebook.formatCell",
"when": "editorHasDocumentFormattingProvider && editorTextFocus && inCompositeEditor && notebookEditable && !editorReadonly && activeEditor == 'workbench.editor.notebook'"
},
{
"key": "ctrl+shift+i",
"command": "-editor.action.formatDocument",
"when": "editorHasDocumentFormattingProvider && editorTextFocus && !editorReadonly && !inCompositeEditor"
},
{
"key": "ctrl+shift+i",
"command": "-editor.action.formatDocument.none",
"when": "editorTextFocus && !editorHasDocumentFormattingProvider && !editorReadonly"
},
{
"key": "ctrl+shift+i",
"command": "-notebook.format",
"when": "notebookEditable && !editorTextFocus && activeEditor == 'workbench.editor.notebook'"
},
{
"key": "ctrl+shift+[Comma] ctrl+shift+i",
"command": "-testing.toggleInlineCoverage"
},
{
"key": "ctrl+alt+i",
"command": "-workbench.action.chat.open",
"when": "chatPanelParticipantRegistered"
},
{
"key": "ctrl+shift+i",
"command": "workbench.action.chat.openInEditor"
},
{
"key": "ctrl+k e",
"command": "-workbench.files.action.focusOpenEditorsView",
"when": "workbench.explorer.openEditorsView.active"
},
{
"key": "ctrl+e",
"command": "-workbench.action.quickOpen"
},
{
"key": "ctrl+e",
"command": "-thunder-client.change-env",
"when": "activeWebviewPanelId == 'tc.env-view' || activeWebviewPanelId == 'tc.request-view' || activeWebviewPanelId == 'tc.runcol-view'"
},
{
"key": "ctrl+e",
"command": "-editor.action.toggleScreenReaderAccessibilityMode",
"when": "accessibilityHelpIsShown"
},
{
"key": "ctrl+r",
"command": "renameFile",
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
},
{
"key": "f2",
"command": "-renameFile",
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
},
{
"key": "ctrl+l",
"command": "-notebook.centerActiveCell",
"when": "notebookEditorFocused"
},
{
"key": "ctrl+shift+h",
"command": "-workbench.action.replaceInFiles"
},
{
"key": "ctrl+shift+h",
"command": "references-view.showCallHierarchy",
"when": "editorHasCallHierarchyProvider"
},
{
"key": "ctrl+shift+c",
"command": "workbench.files.action.collapseExplorerFolders",
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !inputFocus"
},
{
"key": "alt+p",
"command": "goto-folder.find-folder"
},
{
"key": "ctrl+shift+alt+m",
"command": "-goto-folder.find-folder"
},
{
"key": "alt+p",
"command": "-togglePreserveCase",
"when": "editorFocus"
},
{
"key": "alt+p",
"command": "-toggleSearchPreserveCase",
"when": "searchViewletFocus"
},
{
"key": "alt+p",
"command": "-keybindings.editor.toggleSortByPrecedence",
"when": "inKeybindings"
},
{
"key": "ctrl+shift+g",
"command": "-workbench.action.terminal.openDetectedLink",
"when": "accessibleViewIsShown && terminalHasBeenCreated && accessibleViewCurrentProviderId == 'terminal'"
},
{
"key": "ctrl+shift+g",
"command": "-workbench.view.scm",
"when": "workbench.scm.active"
},
{
"key": "ctrl+alt+g",
"command": "-workbench.action.terminal.sendSequence",
"when": "terminalFocus"
},
{
"key": "ctrl+g",
"command": "-workbench.action.terminal.goToRecentDirectory",
"when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported"
},
{
"key": "ctrl+shift+g",
"command": "workbench.action.gotoLine"
},
{
"key": "ctrl+g",
"command": "-workbench.action.gotoLine"
},
{
"key": "ctrl+g",
"command": "relative-goto.goto"
},
{
"key": "alt+g",
"command": "-relative-goto.goto"
},
]

View File

@ -1,8 +1,8 @@
{
//
// Appearance
"workbench.colorTheme": "Monokai Pro (Filter Octagon)",
"workbench.iconTheme": "Monokai Pro (Filter Octagon) Icons",
"workbench.colorTheme": "Monokai Pro",
"workbench.iconTheme": "Monokai Pro Icons",
"editor.fontFamily": "Fira Code, Menlo, Monaco, 'Courier New', monospace",
"editor.fontSize": 18,
"editor.fontWeight": "normal",
@ -11,6 +11,8 @@
"editor.minimap.renderCharacters": false,
"editor.suggestSelection": "first",
"vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
"window.titleBarStyle": "custom",
"workbench.sideBar.location": "right",
//
// Excluded files and directories
"files.exclude": {
@ -25,18 +27,17 @@
"**/.ammonite": true
},
//
// File associations with languages
"files.associations": {
"*.pgpass" : "yaml",
},
//
// Settings Sync
"settingsSync.ignoredSettings": [
"sshfs.configs",
"editor.fontFamily"
],
//
// Various settings
"explorer.confirmDragAndDrop": false,
"workbench.startupEditor": "none",
"security.workspace.trust.untrustedFiles": "open",
"emmet.showExpandedAbbreviation": "never",
//
// Remote SSH
"remote.SSH.remotePlatform": {
"lab-pc07": "linux",
@ -53,6 +54,7 @@
//
// Python
"python.languageServer": "Default",
"python.createEnvironment.trigger": "off",
"[python]": {
"editor.formatOnSave": true,
"editor.rulers": [
@ -94,5 +96,31 @@
"editor.tabSize": 2,
"emmet.showAbbreviationSuggestions": false,
"editor.linkedEditing": true,
"editor.codeActionsOnSave": {
// "source.organizeImports": "always"
}
},
//
// Hex Editor
"hexeditor.columnWidth": 4,
"hexeditor.showDecodedText": true,
"hexeditor.defaultEndianness": "little",
"hexeditor.inspectorType": "aside",
//
// Typst
"typst-lsp.exportPdf": "onType",
///
// Various settings
"explorer.confirmDragAndDrop": false,
"workbench.startupEditor": "none",
"security.workspace.trust.untrustedFiles": "open",
"emmet.showExpandedAbbreviation": "never",
"git.openRepositoryInParentFolders": "never",
"editor.selectionClipboard": false,
"git.blame.editorDecoration.enabled": true,
"python.analysis.typeCheckingMode": "basic",
"workbench.editor.empty.hint": "hidden",
"python.defaultInterpreterPath": "/home/paul/.pyenv/versions/3.12.5/envs/wasteside-tools",
"editor.lineNumbers": "relative",
"github.copilot.nextEditSuggestions.enabled": true,
}

View File

@ -44,6 +44,6 @@
"python shebang" : {
"scope": "python",
"prefix": "sb",
"body": "#!/usr/bin/python3"
"body": "#!/usr/bin/env python3"
}
}

View File

@ -0,0 +1,82 @@
[colors]
draw_bold_text_with_bright_colors = false
[cursor.style]
shape = "Beam"
blinking = "On"
[font]
size = 16.0
[font.bold]
family = "Monaspace Neon"
style = "Regular"
[font.glyph_offset]
x = 0
y = 0
[font.italic]
family = "Monaspace Neon"
style = "Italic"
[font.normal]
family = "Monaspace Neon"
style = "Regular"
[font.offset]
x = 0
y = 0
[bell]
animation = "EaseOutExpo"
color = "0xffffff"
duration = 0
[debug]
log_level = "OFF"
persistent_logging = false
print_events = false
render_timer = false
[mouse]
bindings = [
{ action = "PasteSelection", mouse = "Middle" },
]
[keyboard]
bindings = [
{ key = "Back", mods = "Control", chars = "\u001b\u007f"},
{ key = "N", mods = "Control", action = "SpawnNewInstance" }
]
[scrolling]
history = 100000
multiplier = 3
[selection]
save_to_clipboard = false
semantic_escape_chars = ",│`|:\"' ()[]{}<>"
[window]
decorations = "full"
blur = false
dynamic_padding = false
opacity = 1
startup_mode = "windowed"
title = "Terminal"
dynamic_title = false
[window.dimensions]
columns = 85
lines = 40
[window.padding]
x = 5
y = 5
[general]
live_config_reload = true
# Set the theme by changing the link 'themes/current.toml'
import = ["~/.config/alacritty/themes/current.toml"]

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 128 128" style="display:inline;enable-background:new" version="1.0" id="svg11300" height="128" width="128">
<title id="title4162">Adwaita Icon Template</title>
<defs id="defs3">
<linearGradient id="linearGradient1948">
<stop id="stop1944" offset="0" style="stop-color:#2d2839;stop-opacity:1;"/>
<stop id="stop1946" offset="1" style="stop-color:#282433;stop-opacity:1"/>
</linearGradient>
<linearGradient id="linearGradient1020">
<stop id="stop1016" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
<stop id="stop1018" offset="1" style="stop-color:#ffffff;stop-opacity:0.09411765"/>
</linearGradient>
<linearGradient id="linearGradient1001">
<stop id="stop989" offset="0" style="stop-color:#77767b;stop-opacity:1"/>
<stop style="stop-color:#c0bfbc;stop-opacity:1" offset="0.05" id="stop991"/>
<stop id="stop993" offset="0.09999998" style="stop-color:#9a9996;stop-opacity:1"/>
<stop style="stop-color:#9a9996;stop-opacity:1" offset="0.89999938" id="stop995"/>
<stop id="stop997" offset="0.94999999" style="stop-color:#c0bfbc;stop-opacity:1"/>
<stop id="stop999" offset="1" style="stop-color:#77767b;stop-opacity:1"/>
</linearGradient>
<linearGradient gradientUnits="userSpaceOnUse" y2="44" x2="464" y1="44" x1="48" id="linearGradient965" xlink:href="#linearGradient1001"/>
<radialGradient gradientUnits="userSpaceOnUse" gradientTransform="matrix(-4.7272726,7.935912e-7,-3.0301491e-7,-1.6363636,238.54547,49.766183)" r="44" fy="194.19048" fx="63.999996" cy="194.19048" cx="63.999996" id="radialGradient1030" xlink:href="#linearGradient1020"/>
<linearGradient gradientUnits="userSpaceOnUse" y2="269.13693" x2="70.346565" y1="245.39511" x1="70.346565" id="linearGradient1950" xlink:href="#linearGradient1948"/>
</defs>
<metadata id="metadata4">
</metadata>
<g transform="translate(0,-172)" style="display:inline" id="layer1">
<g style="display:inline" id="layer9">
<g transform="rotate(-30,420.69873,288.4192)" id="g1710" style="display:inline;enable-background:new"/>
<rect transform="matrix(0.25,0,0,0.25,0,225)" style="display:inline;opacity:1;fill:url(#linearGradient965);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" id="rect953" width="416" height="376" x="48" y="-124" rx="32" ry="32"/>
<rect ry="32" rx="32" y="-164" x="48" height="384" width="416" id="rect950" style="display:inline;opacity:1;fill:#deddda;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" transform="matrix(0.25,0,0,0.25,0,225)"/>
<rect transform="scale(1,-1)" ry="3.9999695" rx="4" y="-276" x="16" height="87.999969" width="96" id="rect1004" style="display:inline;opacity:1;vector-effect:none;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:0.01121096px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new"/>
<rect transform="scale(-1)" style="display:inline;opacity:0.05;vector-effect:none;fill:url(#radialGradient1030);fill-opacity:1;stroke:none;stroke-width:0.01121096px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" id="rect968" width="88" height="78" x="-108" y="-272"/>
<g id="g976" transform="translate(-2,-2)" style="fill:#ffffff">
<path d="M 44.012301,210.88755 30,203.27182 V 208 l 9.710724,4.62951 v 0.1422 L 30,218 v 4.72818 l 14.012301,-8.21451 z" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:1.25;font-family:'Source Code Pro';-inkscape-font-specification:'Source Code Pro, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.24999999" id="path972"/>
<path d="m 47.999998,226 2e-6,4 h 16.00001 l -2e-6,-4 z" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:1.25;font-family:'Source Code Pro';-inkscape-font-specification:'Source Code Pro, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.24999999" id="path974"/>
</g>
<path d="m 100,244 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m 84,4 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m 76,4 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m 84,4 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m 76,4 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m 84,4 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m 76,4 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z m -8,0 h 4 v 4 h -4 z" style="opacity:1;vector-effect:none;fill:url(#linearGradient1950);fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" id="rect1059"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@ -0,0 +1 @@
dark/default.toml

View File

@ -0,0 +1,44 @@
# Alacritty's default color scheme pre-0.13 (based on tomorrow_night)
# https://github.com/alacritty/alacritty/blob/v0.12.3/alacritty/src/config/color.rs
[colors.primary]
foreground = "#c5c8c6"
background = "#1d1f21"
[colors.normal]
black = "#1d1f21"
red = "#cc6666"
green = "#b5bd68"
yellow = "#f0c674"
blue = "#81a2be"
magenta = "#b294bb"
cyan = "#8abeb7"
white = "#c5c8c6"
[colors.bright]
black = "#666666"
red = "#d54e53"
green = "#b9ca4a"
yellow = "#e7c547"
blue = "#7aa6da"
magenta = "#c397d8"
cyan = "#70c0b1"
white = "#eaeaea"
[colors.dim]
black = "#131415"
red = "#864343"
green = "#777c44"
yellow = "#9e824c"
blue = "#556a7d"
magenta = "#75617b"
cyan = "#5b7d78"
white = "#828482"
[colors.hints]
start = { foreground = "#1d1f21", background = "#e9ff5e" }
end = { foreground = "#e9ff5e", background = "#1d1f21" }
[colors.search]
matches = { foreground = "#000000", background = "#ffffff" }
focused_match = { foreground = "#ffffff", background = "#000000" }

View File

@ -0,0 +1 @@
alacritty-0-12.toml

View File

@ -0,0 +1,27 @@
[colors.bright]
black = "#505050"
blue = "#547C99"
cyan = "#7DD6CF"
green = "#7B9246"
magenta = "#9F4E85"
red = "#A53C23"
white = "#F5F5F5"
yellow = "#D3A04D"
[colors.cursor]
cursor = "0x4d4d4c"
text = "0xffffff"
[colors.normal]
black = "#151515"
blue = "#6C99BB"
cyan = "#7DD6CF"
green = "#7B9246"
magenta = "#9F4E85"
red = "#A53C23"
white = "#D0D0D0"
yellow = "#D3A04D"
[colors.primary]
background = "#222222"
foreground = "#D0D0D0"

View File

@ -0,0 +1 @@
google-light.toml

View File

@ -0,0 +1,27 @@
[colors.bright]
black = "#666666"
blue = "#0000ff"
cyan = "#00e5e5"
green = "#00d900"
magenta = "#e500e5"
red = "#e50000"
white = "#e5e5e5"
yellow = "#e5e500"
[colors.cursor]
cursor = "0x4d4d4c"
text = "0xffffff"
[colors.normal]
black = "#000000"
blue = "#0000b2"
cyan = "#00a6b2"
green = "#00a600"
magenta = "#b200b2"
red = "#990000"
white = "#bfbfbf"
yellow = "#999900"
[colors.primary]
background = "#f0f0f0"
foreground = "#000000"

2
.config/code-flags.conf Normal file
View File

@ -0,0 +1,2 @@
--enable-features=UseOzonePlatform
--ozone-platform=wayland

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#fff" d="M18.75 9v.704c0 .845.24 1.671.692 2.374l1.108 1.723c1.011 1.574.239 3.713-1.52 4.21a25.8 25.8 0 0 1-14.06 0c-1.759-.497-2.531-2.636-1.52-4.21l1.108-1.723a4.4 4.4 0 0 0 .693-2.374V9c0-3.866 3.022-7 6.749-7s6.75 3.134 6.75 7" opacity="0.5"/><path fill="#fff" d="M7.243 18.545a5.002 5.002 0 0 0 9.513 0c-3.145.59-6.367.59-9.513 0"/></svg>

After

Width:  |  Height:  |  Size: 439 B

442
.config/dunst/dunstrc Normal file
View File

@ -0,0 +1,442 @@
# See dunst(5) for all configuration options
[global]
### Display ###
# Which monitor should the notifications be displayed on.
monitor = DP-2
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
# keyboard: follow window with keyboard focus
# none: don't follow anything
#
# "keyboard" needs a window manager that exports the
# _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern window managers.
#
# If this option is set to mouse or keyboard, the monitor option
# will be ignored.
# follow = mouse
### Geometry ###
# dynamic width from 0 to 300
# width = (0, 300)
# constant width of 300
width = (150, 500)
# The maximum height of a single notification, excluding the frame.
height = (50, 300)
# Position the notification in the top right corner
origin = top-center
# Offset from the origin
offset = (0, 28)
# Scale factor. It is auto-detected if value is 0.
scale = 0
# Maximum number of notification (0 means no limit)
notification_limit = 0
### Progress bar ###
# Turn on the progress bar. It appears when a progress hint is passed with
# for example dunstify -h int:value:12
progress_bar = true
# Set the progress bar height. This includes the frame, so make sure
# it's at least twice as big as the frame width.
progress_bar_height = 5
# Set the frame width of the progress bar
progress_bar_frame_width = 0
# Set the minimum width for the progress bar
progress_bar_min_width = 150
# Set the maximum width for the progress bar
progress_bar_max_width = 350
# Show how many messages are currently hidden (because of
# notification_limit).
indicate_hidden = yes
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing window manager is
# present (e.g. xcompmgr, compiz, etc.). (X11 only)
transparency = 0
# Draw a line of "separator_height" pixel height between two
# notifications.
# Set to 0 to disable.
separator_height = 1
# Padding between text and separator.
padding = 10
# Horizontal padding.
horizontal_padding = 8
# Padding between text and icon.
text_icon_padding = 10
# Defines width in pixels of frame around the notification window.
# Set to 0 to disable.
frame_width = 2
# Defines color of the frame around the notification window.
frame_color = "#727072"
# Define a color for the separator.
# possible values are:
# * auto: dunst tries to find a color fitting to the background;
# * foreground: use the same color as the foreground;
# * frame: use the same color as the frame;
# * anything else will be interpreted as a X color.
separator_color = "#44475a"
# Sort messages by urgency.
sort = yes
# Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds.
# Set to 0 to disable.
# A client can set the 'transient' hint to bypass this. See the rules
# section for how to disable this if necessary
idle_threshold = 120
### Text ###
font = Fira Sans 10
# The spacing between lines. If the height is smaller than the
# font height, it will get raised to the font height.
line_height = 0
# Possible values are:
# full: Allow a small subset of html markup in notifications:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <https://docs.gtk.org/Pango/pango_markup.html>.
#
# strip: This setting is provided for compatibility with some broken
# clients that send markup even though it's not enabled on the
# server. Dunst will try to strip the markup but the parsing is
# simplistic so using this option outside of matching rules for
# specific applications *IS GREATLY DISCOURAGED*.
#
# no: Disable markup parsing, incoming notifications will be treated as
# plain text. Dunst will not advertise that it has the body-markup
# capability if this is set as a global setting.
#
# It's important to note that markup inside the format option will be parsed
# regardless of what this is set to.
markup = full
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# %% Literal %
# Markup is allowed
format = "<b>%s</b>\n%b"
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = left
# Vertical alignment of message text and icon.
# Possible values are "top", "center" and "bottom".
vertical_alignment = center
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = 60
# Specify where to make an ellipsis in long lines.
# Possible values are "start", "middle" and "end".
ellipsize = middle
# Ignore newlines '\n' in notifications.
ignore_newline = no
# Stack together notifications with the same content
stack_duplicates = true
# Hide the count of stacked notifications with the same content
hide_duplicate_count = true
# Display indicators for URLs (U) and actions (A).
show_indicators = no
### Icons ###
# Align icons left/right/off
icon_position = left
# Scale small icons up to this size, set to 0 to disable. Helpful
# for e.g. small files or high-dpi screens. In case of conflict,
# max_icon_size takes precedence over this.
min_icon_size = 0
# Scale larger icons down to this size, set to 0 to disable
max_icon_size = 50
# Paths to default icons.
icon_path = /usr/share/icons/Adwaita/16x16/mimetypes/:/usr/share/icons/Papirus-Dark/16x16/actions/
default_icon = "/home/paul/.config/dunst/default.svg"
### History ###
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = yes
# Maximum amount of notifications kept in history
history_length = 20
### Misc/Advanced ###
dmenu = /usr/bin/tofi
# Browser for opening urls in context menu.
browser = /usr/bin/xdg-open
# Always run rule-defined scripts, even if the notification is suppressed
always_run_script = true
# Define the title of the windows spawned by dunst
title = Dunst
# Define the class of the windows spawned by dunst
class = Dunst
# Define the corner radius of the notification window
# in pixel size. If the radius is 0, you have no rounded
# corners.
# The radius will be automatically lowered if it exceeds half of the
# notification height to avoid clipping text and/or icons.
corner_radius = 10
# Ignore the dbus closeNotification message.
# Useful to enforce the timeout set by dunst configuration. Without this
# parameter, an application may close the notification sent before the
# user defined timeout.
ignore_dbusclose = false
### Wayland ###
# These settings are Wayland-specific. They have no effect when using X11
# Uncomment this if you want to let notications appear under fullscreen
# applications (default: overlay)
# layer = top
# Set this to true to use X11 output on Wayland.
force_xwayland = false
### Legacy
# Use the Xinerama extension instead of RandR for multi-monitor support.
# This setting is provided for compatibility with older nVidia drivers that
# do not support RandR and using it on systems that support RandR is highly
# discouraged.
#
# By enabling this setting dunst will not be able to detect when a monitor
# is connected or disconnected which might break follow mode if the screen
# layout changes.
force_xinerama = false
### mouse
# Defines list of actions for each mouse event
# Possible values are:
# * none: Don't do anything.
# * do_action: Invoke the action determined by the action_name rule. If there is no
# such action, open the context menu.
# * open_url: If the notification has exactly one url, open it. If there are multiple
# ones, open the context menu.
# * close_current: Close current notification.
# * close_all: Close all notifications.
# * context: Open context menu for the notification.
# * context_all: Open context menu for all notifications.
# These values can be strung together for each mouse event, and
# will be executed in sequence.
mouse_left_click = do_action
mouse_middle_click = do_action, close_current
mouse_right_click = close_all
# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
[experimental]
# Calculate the dpi to use on a per-monitor basis.
# If this setting is enabled the Xft.dpi value will be ignored and instead
# dunst will attempt to calculate an appropriate dpi value for each monitor
# using the resolution and physical size. This might be useful in setups
# where there are multiple screens with very different dpi values.
per_monitor_dpi = false
[urgency_low]
background = "#2D2A2E"
foreground = "#f8f8f2"
frame_color = "#727072"
timeout = 5
# Icon for notifications with low urgency, uncomment to enable
#default_icon = /path/to/icon
[urgency_normal]
background = "#2D2A2E"
foreground = "#f8f8f2"
frame_color = "#727072"
timeout = 10
# Icon for notifications with normal urgency, uncomment to enable
#default_icon = /path/to/icon
[urgency_critical]
background = "#2D2A2E"
foreground = "#f8f8f2"
frame_color = "#ff5555"
timeout = 0
# Icon for notifications with critical urgency, uncomment to enable
#default_icon = /path/to/icon
[spotify]
appname = "Spotify"
frame_color = "#1ED760"
format = "Now Playing\n<b>%s</b>\n%b"
# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
#
# Messages can be matched by
# appname (discouraged, see desktop_entry)
# body
# category
# desktop_entry
# icon
# match_transient
# msg_urgency
# stack_tag
# summary
#
# and you can override the
# background
# foreground
# format
# frame_color
# fullscreen
# new_icon
# set_stack_tag
# set_transient
# set_category
# timeout
# urgency
# skip_display
# history_ignore
# action_name
# word_wrap
# ellipsize
# alignment
#
# Shell-like globbing will get expanded.
#
# Instead of the appname filter, it's recommended to use the desktop_entry filter.
# GLib based applications export their desktop-entry name. In comparison to the appname,
# the desktop-entry won't get localized.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
# Disable the transient hint so that idle_threshold cannot be bypassed from the
# client
#[transient_disable]
# match_transient = yes
# set_transient = no
#
# Make the handling of transient notifications more strict by making them not
# be placed in history.
#[transient_history_ignore]
# match_transient = yes
# history_ignore = yes
# fullscreen values
# show: show the notifications, regardless if there is a fullscreen window opened
# delay: displays the new notification, if there is no fullscreen window active
# If the notification is already drawn, it won't get undrawn.
# pushback: same as delay, but when switching into fullscreen, the notification will get
# withdrawn from screen again and will get delayed like a new notification
#[fullscreen_delay_everything]
# fullscreen = delay
#[fullscreen_show_critical]
# msg_urgency = critical
# fullscreen = show
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# skip_display = true
#[history-ignore]
# # This notification will not be saved in history
# summary = "foobar"
# history_ignore = yes
#[skip-display]
# # This notification will not be displayed, but will be included in the history
# summary = "foobar"
# skip_display = yes
#[signed_on]
# appname = Pidgin
# summary = "*signed on*"
# urgency = low
#
#[signed_off]
# appname = Pidgin
# summary = *signed off*
# urgency = low
#
#[says]
# appname = Pidgin
# summary = *says*
# urgency = critical
#
#[twitter]
# appname = Pidgin
# summary = *twitter.com*
# urgency = normal
#
#[stack-volumes]
# appname = "some_volume_notifiers"
# set_stack_tag = "volume"
#
# vim: ft=cfg

View File

@ -0,0 +1,2 @@
--enable-features=UseOzonePlatform
--ozone-platform=wayland

View File

@ -0,0 +1,20 @@
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<match target="font">
<test qual="any" name="family">
<string>Calibri</string>
</test>
<edit name="embeddedbitmap">
<bool>false</bool>
</edit>
</match>
<match target="font">
<test qual="any" name="family">
<string>Aptos</string>
</test>
<edit name="embeddedbitmap">
<bool>false</bool>
</edit>
</match>
</fontconfig>

193
.config/gSnap/layouts.json Normal file
View File

@ -0,0 +1,193 @@
{
"workspaces": [
[
{
"current": 2
},
{
"current": 3
}
],
[
{
"current": 2
},
{
"current": 3
}
]
],
"definitions": [
{
"name": "None",
"type": 0,
"length": 100,
"items": []
},
{
"name": "Default Monitor 0",
"type": 0,
"length": 100,
"items": [
{
"length": 33.358974358974365,
"items": []
},
{
"length": 66.64102564102564,
"items": []
}
]
},
{
"name" : "Default Monitor 1",
"type" : 1,
"length": 100,
"items" : [
{
"length": 38
},
{
"length" : 62
}
]
},
{
"name": "2 Column Split",
"type": 0,
"length": 100,
"items": [
{
"type": 1,
"length": 50,
"items": []
},
{
"type": 1,
"length": 50,
"items": []
}
]
},
{
"name": "3 Column",
"type": 0,
"length": 100,
"items": [
{
"type": 1,
"length": 33,
"items": []
},
{
"type": 1,
"length": 34,
"items": []
},
{
"type": 1,
"length": 33,
"items": []
}
]
},
{
"name": "3 Column (Focused)",
"type": 0,
"length": 100,
"items": [
{
"type": 1,
"length": 25,
"items": []
},
{
"type": 1,
"length": 50,
"items": []
},
{
"type": 1,
"length": 25,
"items": []
}
]
},
{
"name": "3 Columns (Custom)",
"type": 0,
"length": 100,
"items": [
{
"type": 1,
"length": 42,
"items": []
},
{
"type": 1,
"length": 16,
"items": [
{
"type": 0,
"length": 33,
"items": []
},
{
"type": 0,
"length": 34,
"items": []
},
{
"type": 0,
"length": 33,
"items": []
}
]
},
{
"type": 1,
"length": 42,
"items": []
}
]
},
{
"name" : "1920x1080 Centered",
"type" : 0,
"length" : 100,
"items" : [
{
"type" : 0,
"length" : 21.9,
"items" : []
},
{
"type" : 1,
"length" : 56.2,
"items" : [
{
"type" : 1,
"length" : 9.8,
"items" : []
},
{
"type" : 1,
"length" : 80.4,
"items" : []
},
{
"type" : 1,
"length" : 9.8,
"items" : []
}
]
},
{
"type" : 0,
"length" : 21.9,
"items" : []
}
]
}
]
}

2
.config/gdb/gdbinit Normal file
View File

@ -0,0 +1,2 @@
add-auto-load-safe-path /home/paul/code/ma/repo/scripts/gdb/vmlinux-gdb.py
add-auto-load-safe-path /home/paul/code/ma/morsel-linux-kernel/scripts/gdb/vmlinux-gdb.py

374
.config/hypr/hyprland.conf Normal file
View File

@ -0,0 +1,374 @@
# This is an example Hyprland config file.
# Refer to the wiki for more information.
# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
# You can split this configuration into multiple files
# Create your files separately and then link them to this file like this:
# source = ~/.config/hypr/myColors.conf
################
### MONITORS ###
################
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=DP-2,3440x1440@144,auto,auto
monitor=DP-3,1920x1080,-1080x-550,1,transform,1
monitor=HDMI-A-1,3440x1440@144,auto,auto
###################
### MY PROGRAMS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
# Set programs that you use
$terminal = alacritty
$fileManager = nautilus --new-window
$browser = firefox
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
exec-once = hyprpaper
exec-once = hypridle
exec-once = systemctl --user start hyprpolkitagent
exec-once = dunst
exec-once = wl-paste --type text --watch cliphist store # Stores only text data
exec-once = waybar
# Open programs on special workspaces
exec-once = [ workspace special:term silent] $terminal
exec-once = [ workspace special:browser silent] $browser "https://web.whatsapp.com" "https://mail.google.com/mail/u/0/\##inbox/\##wasteside\##container-wasteside"
exec-once = [ workspace special:browser silent] gnome-calendar
exec-once = [ workspace special:music silent] $terminal -e spotify_player
exec-once = [ workspace special:todo silent] clickup
exec-once = [ workspace special:files silent] $fileManager
exec-once = [ workspace special:files silent] localsend
# Script to make bitwarden firefox extension windows launch in floating mode
exec-once = ~/.config/hypr/scripts/float-bitwarden.sh
# Makes sure ratbag is running
exec-once = ratbagctl list
# Plugins
exec-once = hyprpm enable Hyprspace
exec-once = hyprpm reload
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
env = LIBVA_DRIVER_NAME,nvidia
env = XDG_SESSION_TYPE,wayland
env = GBM_BACKEND,nvidia-drm
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
env = HYPRSHOT_DIR,/home/paul/screenshots
cursor {
no_hardware_cursors = true
}
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 5
gaps_out = 10,20,20,20
border_size = 2
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa)
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 10
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 1.0
dim_special = 0.9
# Deprecated v0.45 ?
# drop_shadow = true
# shadow_range = 4
# shadow_render_power = 3
# col.shadow = rgba(1a1a1aee)
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 3
passes = 1
vibrancy = 0.1696
}
}
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
enabled = true
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
animation = specialWorkspaceIn, 1, 2, default
}
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master {
new_status = master
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
}
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout = de
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 2
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = false
}
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
# cursor {
# no_warps = true
# }
###################
### KEYBINDINGS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, T, exec, $terminal
bind = $mainMod, B, exec, $browser
bind = $mainMod, Return, exec, tofi-drun | xargs hyprctl dispatch exec --
bind = $mainMod, Q, killactive,
bind = $mainMod, F, fullscreen,
bind = $mainMod, M, splitratio, exact 0.6,
bind = $mainMod, mouse_down, splitratio, 0.1
bind = $mainMod, mouse_up, splitratio, -0.1
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, exec, cliphist list | tofi | cliphist decode | wl-copy
bind = $mainMod, X, togglefloating,
bind = $mainMod, P, pin, active
bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod SHIFT, S, exec, hyprshot -m region
bind = $mainMod, PRINT, exec, hyprshot -m window
bind = $mainMod SHIFT, B, exec, pkill waybar & hyprctl dispatch exec waybar
bind = $mainMod SHIFT, C, exec, hyprpicker | wl-copy
# bind = $mainMod, TAB, overview:toggle
bind = $mainMod, END, exec, wlogout -b 6 -L 1100 -R 1100 -T 650 -B 650
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Move windows with mainMod + SHIFT + arrow keys
bind = $mainMod SHIFT, left, movewindow, l
bind = $mainMod SHIFT, right, movewindow, r
bind = $mainMod SHIFT, up, movewindow, u
bind = $mainMod SHIFT, down, movewindow, d
# Switch workspaces of primary monitor with mainMod + [1-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
# Switch workspaces of secondary monitor with mainMod + [F1-9]
bind = $mainMod, F1, workspace, 11
bind = $mainMod, F2, workspace, 12
bind = $mainMod, F3, workspace, 13
bind = $mainMod, F4, workspace, 14
bind = $mainMod, F5, workspace, 15
bind = $mainMod, F6, workspace, 16
bind = $mainMod, F7, workspace, 17
bind = $mainMod, F8, workspace, 18
# Move active window to a workspace with mainMod + SHIFT + [1-9] (primary monitor)
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
# Move active window to a workspace with mainMod + SHIFT + [F1-F9] (secondary monitor)
bind = $mainMod SHIFT, F1, movetoworkspace, 11
bind = $mainMod SHIFT, F2, movetoworkspace, 12
bind = $mainMod SHIFT, F3, movetoworkspace, 13
bind = $mainMod SHIFT, F4, movetoworkspace, 14
bind = $mainMod SHIFT, F5, movetoworkspace, 15
bind = $mainMod SHIFT, F6, movetoworkspace, 16
bind = $mainMod SHIFT, F7, movetoworkspace, 17
# Special workspaces (scratchpad)
bind = $mainMod, F12, togglespecialworkspace, term
bind = $mainMod SHIFT, F12, movetoworkspace, special:term
bind = $mainMod, F11, togglespecialworkspace, browser
bind = $mainMod SHIFT, F11, movetoworkspace, special:browser
bind = $mainMod, F10, togglespecialworkspace, music
bind = $mainMod SHIFT, F10, movetoworkspace, special:music
bind = $mainMod, F9, togglespecialworkspace, todo
bind = $mainMod SHIFT, F9, movetoworkspace, special:todo
bind = $mainMod, F8, togglespecialworkspace, files
bind = $mainMod SHIFT, F8, movetoworkspace, special:files
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
# Ignore maximize requests from apps. You'll probably like this.
windowrulev2 = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
# Window rules to assign windows to workspaces
windowrulev2 = float,title:^(.*Extension: Bitwarden.*)$
# Always center ClickUp command bar
windowrulev2 = center, title:ClickUp Command Bar
# Dont use floating mode for freerdp
windowrulev2 = tile, class:xfreerdp
# Open audio settings in floating mode
windowrulev2 = float, class:org.pulseaudio.pavucontrol
windowrulev2 = size 500 1000, class:org.pulseaudio.pavucontrol
windowrulev2 = move 2841 61, class:org.pulseaudio.pavucontrol
windowrulev2 = pin, class:org.pulseaudio.pavucontrol
# Same for bluetooth settings
windowrulev2 = float, initialTitle:overskride
windowrulev2 = size 765 765, initialTitle:overskride
windowrulev2 = move 2653 44, initialTitle:overskride
windowrulev2 = pin, initialTitle:overskride
# Change border color of pinned windows
windowrulev2 = bordercolor rgb(CC34A4) rgb(4B2D70), pinned:1
# Notification animation style
layerrule = animation slide, notifications
# Workspace rules to assign workspaces to monitors
workspace = 1, monitor:DP-2, default:true
workspace = 2, monitor:DP-2
workspace = 3, monitor:DP-2
workspace = 4, monitor:DP-2
workspace = 5, monitor:DP-2
workspace = 11, monitor:DP-3, default:true
workspace = 12, monitor:DP-3
workspace = 13, monitor:DP-3
workspace = 14, monitor:DP-3
workspace = 15, monitor:DP-3
workspace = special:music, gapsout:40 1800 50 50
workspace = special:music, monitor:DP-2

View File

@ -0,0 +1,2 @@
preload = ~/.config/hypr/img/gnome-background.webp
wallpaper = , ~/.config/hypr/img/gnome-background.webp

View File

@ -0,0 +1,7 @@
#!/bin/bash
hyprctl dispatch exec "[ workspace 11 ]" "firefox -n"
hyprctl dispatch exec "[ workspace 12 silent ]" "clickup"
hyprctl dispatch exec "[ workspace 1 ]" "firefox -n"
hyprctl dispatch exec "[ workspace 1 ]" "code ~/code/wasteside/app"

View File

@ -0,0 +1,33 @@
#!/bin/bash
timeout=0
handle() {
case $1 in
windowtitle*)
# Extract the window ID from the line
window_id=${1#*>>}
# Fetch the list of windows and parse it using jq to find the window by its decimal ID
window_info=$(hyprctl clients -j | jq --arg id "0x$window_id" '.[] | select(.address == ($id))')
# Extract the title from the window info
window_title=$(echo "$window_info" | jq -r '.title')
# Check if the title matches the characteristics of the Bitwarden popup window
if [[ "$window_title" == *"(Bitwarden"*"Password Manager) - Bitwarden"* ]]; then
# in case of double rename only allow once per second
if ((SECONDS < timeout)); then
return
fi
timeout=$((SECONDS + 1))
# echo "$window_id", "$window_title"
hyprctl --batch "dispatch togglefloating address:0x$window_id; dispatch resizewindowpixel exact 20% 54%,address:0x$window_id; dispatch centerwindow"
fi
;;
esac
}
# Listen to the Hyprland socket for events and process each line with the handle function
socat -U - UNIX-CONNECT:"$XDG_RUNTIME_DIR"/hypr/"$HYPRLAND_INSTANCE_SIGNATURE"/.socket2.sock | while read -r line; do handle "$line"; done

View File

@ -0,0 +1,5 @@
#!/bin/bash
song_info=$(playerctl metadata --format '{{title}}  {{artist}}')
echo "$song_info"

193
.config/i3/config Normal file
View File

@ -0,0 +1,193 @@
# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#
# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
set $mod Mod1
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
# font pango:monospace 8
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
font pango:DejaVu Sans Mono 8
# Start XDG autostart .desktop files using dex. See also
# https://wiki.archlinux.org/index.php/XDG_Autostart
exec --no-startup-id dex --autostart --environment i3
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend. Use loginctl lock-session to lock your screen.
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
exec --no-startup-id nm-applet
# Use pactl to adjust volume in PulseAudio.
set $refresh_i3status killall -SIGUSR1 i3status
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# move tiling windows via drag & drop by left-clicking into the title bar,
# or left-clicking anywhere into the window while holding the floating modifier.
tiling_drag modifier titlebar
# start a terminal
bindsym $mod+Return exec i3-sensible-terminal
# kill focused window
bindsym $mod+Shift+q kill
# start dmenu (a program launcher)
bindsym $mod+d exec --no-startup-id dmenu_run
# A more modern dmenu replacement is rofi:
# bindcode $mod+40 exec "rofi -modi drun,run -show drun"
# There also is i3-dmenu-desktop which only displays applications shipping a
# .desktop file. It is a wrapper around dmenu, so you need that installed.
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
# change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+odiaeresis focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+odiaeresis move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# split in horizontal orientation
bindsym $mod+h split h
# split in vertical orientation
bindsym $mod+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
#bindsym $mod+d focus child
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
# switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym odiaeresis resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape or $mod+r
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
status_command i3status
}
gaps inner 10

View File

@ -0,0 +1,2 @@
gui:
mouseEvents: false

View File

@ -0,0 +1,6 @@
context.modules = [
{
name = libpipewire-module-raop-discover
args = { }
}
]

18
.config/tofi/config Normal file
View File

@ -0,0 +1,18 @@
prompt-text = "> "
text-color = #cdd6f4
prompt-color = #585b70
selection-color = #33ccff
background-color = #181825aa
width = 100%
padding-left = 25%
padding-top = 30%
height = 100%
border-width = 0
outline-width = 0
result-spacing = 14
num-results = 8
font = Cantarell
font-variations = "wght 600"
font-size = 14

120
.config/waybar/config.jsonc Normal file
View File

@ -0,0 +1,120 @@
{
"layer": "top",
"output": "DP-2",
"modules-left": [
"custom/power",
"hyprland/workspaces",
"custom/spotify"
],
"modules-center": [
"clock"
],
"modules-right": [
"privacy",
"custom/coffee",
"pulseaudio",
"cpu",
"memory",
"bluetooth",
// "network",
"custom/wireguard"
],
"custom/power": {
"format": "⏻",
"tooltip": false,
"on-click": "hyprctl dispatch exec 'wlogout -b 6 -L 1100 -R 1100 -T 650 -B 650'"
},
"custom/coffee": {
"exec": "/usr/bin/python3 /home/paul/.config/waybar/scripts/coffee.py",
"format": "{}",
"return-type": "json",
"interval": 1,
"on-click": "pidof hypridle >/dev/null && killall hypridle || hyprctl dispatch exec hypridle"
},
"hyprland/workspaces": {
"format": "{name}",
"tooltip": false,
"all-outputs": true,
"on-click": "none"
},
"clock": {
"format": "{0:%b, %d %H:%M:%S}",
"interval": 1,
"tooltip": true,
"tooltip-format": "{0:%A, %d.%m.%Y W%V}"
},
"custom/spotify": {
"exec": "/usr/bin/python3 /home/paul/downloads/repos/Waybar/resources/custom_modules/mediaplayer.py",
"format": "{}",
"return-type": "json",
"on-click": "playerctl play-pause",
"on-scroll-up": "playerctl next",
"on-scroll-down": "playerctl previous"
},
"privacy": {
"icon-spacing": 4,
"icon-size": 12,
"transition-duration": 250,
"modules": [
{
"type": "screenshare",
"tooltip": true,
"tooltip-icon-size": 24
},
{
"type": "audio-in",
"tooltip": true,
"tooltip-icon-size": 24
}
]
},
"cpu": {
"format": " {usage}%",
"interval": 5,
"on-click": "hyprctl dispatch exec 'resources -t cpu'"
},
"memory": {
"format": " {percentage}% ({used}G)",
"interval": 5,
"on-click": "hyprctl dispatch exec 'resources -t memory'"
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-muted": "",
"tooltip": false,
"format-icons": {
"headphone": "",
"default": [
"",
"",
"󰕾",
"󰕾",
"󰕾",
"",
"",
""
]
},
"scroll-step": 1,
"on-click": "pavucontrol"
},
"bluetooth": {
"format": " {status}",
"format-disabled": "", // an empty format will hide the module
"format-connected": " {num_connections}",
"tooltip-format": "{device_enumerate}",
"tooltip-format-enumerate-connected": "{device_alias} {device_address}",
"on-click": "hyprctl dispatch exec overskride"
},
// "network": {
// "format": " {ifname}",
// "format-ethernet": " {ipaddr}/{cidr}",
// "tooltip": false,
// },
"custom/wireguard": {
"exec": "/usr/bin/python3 /home/paul/.config/waybar/scripts/wireguard.py wasteside",
"format": "󰒄 {}",
"return-type": "json",
"interval": 5
}
}

View File

@ -0,0 +1,25 @@
from argparse import ArgumentParser
from json import dumps
from subprocess import run
COFFEE_ICON = "\ue751"
if __name__ == "__main__":
result = run(["pidof", "hypridle"], capture_output=True, text=True)
if result.returncode == 0:
# Hypridle is running
print(dumps({
"text": COFFEE_ICON,
"tooltip": "Hypridle is running",
"class": "inactive"
}))
else:
# Hypridle is not running
print(dumps({
"text": COFFEE_ICON,
"tooltip": "Hypridle is not running",
"class": "active"
}))

View File

@ -0,0 +1,23 @@
from argparse import ArgumentParser
from json import dumps
from subprocess import run
if __name__ == "__main__":
parser = ArgumentParser()
parser.add_argument("interfaces", nargs="+", help="one or more names of interfaces to watch")
args = parser.parse_args()
watch = set(args.interfaces)
ifconfig = run(["ifconfig", "-s"], capture_output=True, text=True).stdout
interfaces = {line.split()[0] for line in ifconfig.splitlines()[1:]}
active = interfaces.intersection(watch)
result = {
"text": "active" if len(active) > 0 else "inactive",
"tooltip": "\n".join(active),
}
print(dumps(result))

113
.config/waybar/style.css Normal file
View File

@ -0,0 +1,113 @@
* {
border: none;
font-family: 'Verdana', 'Cantarell', 'monospace', 'Symbols Nerd Font Mono';
font-size: 12px;
font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
background: rgba(0, 0, 0, 0.5);
}
/* All modules */
/* Module on the left */
.modules-left {
color: #cdd6f4;
}
#custom-power {
color: white;
padding: 0px 8px;
padding-left: 18px;
font-weight: 800;
}
#custom-power:hover {
background-color: #33ccff;
color: #107091;
}
#workspaces {
margin-left: 10px;
font-size: 12px;
border-radius: 100px;
padding: 2px;
}
#workspaces button {
color: white;
animation: gradient_f 20s ease-in infinite;
transition: all 0.2s ease-in;
margin: 0px;
padding: 0px;
}
#workspaces button:hover {
background: none;
color: white;
box-shadow: inherit;
text-shadow: inherit;
}
#workspaces button.active {
color: #33ccff;
}
#custom-spotify {
padding: 0px 10px;
}
#custom-spotify:hover {
background-color: rgba(0, 0, 0, 0.4);
}
/* Module in the middle */
#clock {
color: #cdd6f4;
padding-left: 10px;
padding-right: 10px;
margin-right: 15px;
}
/* Module on the right */
.modules-right {
color: white;
margin-right: 10px;
}
.modules-right *:hover {
background-color: rgba(0, 0, 0, 0.2);
}
.modules-right * {
padding: 0px 10px;
}
#memory {
padding-left: 5px;
}
#cpu {
padding-right: 5px;
}
#bluetooth {
padding-right: 5px;
}
#custom-wireguard {
padding-left: 5px;
}
#custom-coffee {
padding-right: 5px;
}
.inactive {
opacity: 0.5;
}

View File

@ -0,0 +1,17 @@
# Disable all monitor sources (e.g. output mirrors) so they don't appear as input devices
monitor.rules = [
{
matches = [
{
device.class = "monitor"
}
]
actions = {
update-props = {
device.nick = "Please Be Disabled"
device.disabled = true
device.description = "Disabled Monitor Source"
}
}
}
]

View File

@ -0,0 +1,75 @@
monitor.alsa.rules = [
# OUTPUT DEVICES
{
matches = [
{ node.name = "alsa_output.pci-0000_01_00.1.hdmi-stereo" }
],
actions = {
update-props = {
node.description = "BenQ GL2580",
}
}
},
{
matches = [
{ node.name = "alsa_output.pci-0000_11_00.6.analog-stereo" }
],
actions = {
update-props = {
node.description = "Logitech Z313",
}
}
},
{
matches = [
{ node.name = "alsa_output.usb-Razer_Razer_BlackShark_V2_Pro-00.analog-stereo" }
],
actions = {
update-props = {
node.description = "Razer BlackShark V2 Pro",
}
}
},
{
matches = [
{ node.name = "alsa_output.usb-R__DE_Microphones_R__DE_NT-USB_Mini_514A76EB-00.analog-stereo" }
],
actions = {
update-props = {
node.description = "RØDE NT-USB Mini",
}
}
},
# INPUT DEVICES
{
matches = [
{ node.name = "alsa_input.usb-R__DE_Microphones_R__DE_NT-USB_Mini_514A76EB-00.mono-fallback" }
],
actions = {
update-props = {
node.description = "RØDE NT-USB Mini",
}
}
},
{
matches = [
{ node.name = "alsa_input.usb-Razer_Razer_BlackShark_V2_Pro-00.mono-fallback" }
],
actions = {
update-props = {
node.description = "Razer BlackShark V2 Pro",
}
}
},
{
matches = [
{ node.name = "alsa_input.pci-0000_11_00.6.analog-stereo" }
],
actions = {
update-props = {
node.description = "3.5mm Input",
}
}
}
]

View File

@ -0,0 +1,32 @@
## In WirePlumber there's a bug where some applications trigger switching to Headset Profile
## --
## See issue #634, #645, #630, #629, #613
## --
## This config mitigates the issue by completely disabling the switching and support for Headset Profile (HFP)
## Using this would only make sense if you never plan on using the microphone that comes with your headset.
wireplumber.settings = {
## Whether to use headset profile in the presence of an input stream.
## --
## Disable for now, as it causes issues. See note at the top as to why.
bluetooth.autoswitch-to-headset-profile = false
}
monitor.bluez.properties = {
## Enabled roles (default: [ a2dp_sink a2dp_source bap_sink bap_source hfp_hf hfp_ag ])
##
## Currently some headsets (Sony WH-1000XM3) are not working with
## both hsp_ag and hfp_ag enabled, so by default we enable only HFP.
##
## Supported roles: hsp_hs (HSP Headset),
## hsp_ag (HSP Audio Gateway),
## hfp_hf (HFP Hands-Free),
## hfp_ag (HFP Audio Gateway)
## a2dp_sink (A2DP Audio Sink)
## a2dp_source (A2DP Audio Source)
## bap_sink (LE Audio Basic Audio Profile Sink)
## bap_source (LE Audio Basic Audio Profile Source)
## --
## Only enable A2DP here and disable HFP. See note at the top as to why.
bluez5.roles = [ a2dp_sink a2dp_source ]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

36
.config/wlogout/layout Normal file
View File

@ -0,0 +1,36 @@
{
"label" : "lock",
"action" : "loginctl lock-session",
"text" : "Lock",
"keybind" : "l"
}
{
"label" : "logout",
"action" : "loginctl terminate-user $USER",
"text" : "Logout",
"keybind" : "e"
}
{
"label" : "shutdown",
"action" : "systemctl poweroff",
"text" : "Shutdown",
"keybind" : "s"
}
{
"label" : "suspend",
"action" : "systemctl suspend",
"text" : "Suspend",
"keybind" : "u"
}
{
"label" : "reboot",
"action" : "systemctl reboot",
"text" : "Reboot",
"keybind" : "r"
}
{
"label" : "windows",
"action" : "/usr/local/bin/reboot_windows",
"text" : "Windows",
"keybind" : "w"
}

51
.config/wlogout/style.css Normal file
View File

@ -0,0 +1,51 @@
* {
background-image: none;
box-shadow: none;
font-family: "Cantarell", 'Courier New', Courier, monospace;
}
window {
background-color: rgba(12, 12, 12, 0.9);
}
button {
border-radius: 500px;
text-decoration-color: #FFFFFF;
color: #FFFFFF;
border-style: solid;
border-width: 1px;
background-repeat: no-repeat;
background-position: center;
background-size: 15%;
border: none;
}
button:focus, button:active, button:hover {
color: #33CCFF;
outline-style: none;
font-family: "Cantarell";
}
#lock {
background-image: image(url("/home/paul/.config/wlogout/icons/lock.png"), url("/usr/local/share/wlogout/icons/lock.png"));
}
#logout {
background-image: image(url("/home/paul/.config/wlogout/icons/logout.png"), url("/usr/local/share/wlogout/icons/logout.png"));
}
#suspend {
background-image: image(url("/home/paul/.config/wlogout/icons/suspend.png"), url("/usr/local/share/wlogout/icons/suspend.png"));
}
#shutdown {
background-image: image(url("/home/paul/.config/wlogout/icons/shutdown.png"), url("/usr/local/share/wlogout/icons/shutdown.png"));
}
#reboot {
background-image: image(url("/home/paul/.config/wlogout/icons/reboot.png"), url("/usr/local/share/wlogout/icons/reboot.png"));
}
#windows {
background-image: image(url("/home/paul/.config/wlogout/icons/windows.png"), url("/usr/local/share/wlogout/icons/windows.png"));
}

3
.gitignore vendored
View File

@ -1,2 +1,5 @@
# scripts to fetch config files
getconfig.sh
# sensitive data
.Renviron

View File

@ -3,7 +3,13 @@ unbind-key C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# split panes using |<7C>(vertically) and - (horizontally)
# use command prompt shortcut similar to vscode
bind-key -n C-p command-prompt
# since tmux prefix is now ctrl+a, use ctrl+b to send ctrl+a to program
bind-key -n C-b send C-a
# split panes using | (vertically) and - (horizontally)
bind / split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
@ -13,9 +19,15 @@ unbind %
# reload on r
bind r source-file ~/.tmux.conf \; display "Reloaded config!"
# number of scrollback lines
set-option -g history-limit 5000
# enable mouse mode
set -g mouse on
# stop window to stop jump to bottom when selection something
unbind-key -T copy-mode-vi MouseDragEnd1Pane
# start numbering panes at 1
set -g base-index 1
setw -g pane-base-index 1

3
.zprofile Normal file
View File

@ -0,0 +1,3 @@
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

View File

@ -65,12 +65,15 @@ DISABLE_UNTRACKED_FILES_DIRTY="true"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Force pyenv to stop complaining about non-interactive shells
ZSH_PYENV_QUIET="true"
# Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git zsh-autosuggestions macos pip pyenv docker autojump colorize copyfile brew)
plugins=(git zsh-autosuggestions zsh-syntax-highlighting fast-syntax-highlighting macos pip pyenv docker colorize copyfile brew)
source $ZSH/oh-my-zsh.sh
@ -81,11 +84,20 @@ source $ZSH/oh-my-zsh.sh
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
# Usually, vscode returns immediately after being run. This makes it not
# suitable for things like crontab or git, which wait until the editor has
# closed to continue. In such cases, we use the -w option to make it wait.
codewait="/usr/local/bin/code-wait.sh"
if [ ! -e $codewait ]; then
echo "Waiting version of vscode is missing."
fi
# Preferred editor for local and remote sessions
if [[ -n $SSH_CONNECTION ]]; then
export EDITOR='nano'
else
export EDITOR='code'
export EDITOR=$codewait
export VISUAL=$codewait
fi
# Compilation flags
@ -100,30 +112,42 @@ fi
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
# Reboot to Windows (REPLACED WITH SCRIPT)
# reboot_windows()
# {
# windows_title=$(grep -i windows /boot/grub/grub.cfg | cut -d "'" -f 2)
# sudo grub-reboot "$windows_title" && sudo reboot
# }
# alias reboot-windows='reboot_windows'
# Command aliases
alias py=python3
alias ll="ls -lah"
# Custom scripts
export PATH="/Users/paul/Code/scripts:$PATH"
qrshow(){
qrencode $1 -o - | viu -
}
# Shortcuts
export ONEDRIVE="/Users/paul/Library/CloudStorage/OneDrive-Personal/"
export VSCODE_USER=~/Library/Application\ Support/Code/User
alias korrektur="$EDITOR /Volumes/pauls-dateien/uni/GBS\ Tutorjob/Y3/Korrektur"
alias sshconfig="$EDITOR ~/.ssh/config"
alias zshconfig="$EDITOR ~/.zshrc"
alias zshreload="source ~/.zshrc"
alias zshsource="source ~/.zshrc"
alias home="cd ~"
alias userchrome="$EDITOR /Users/paul/Library/Application\ Support/Firefox/Profiles/k37hu3wo.default-release/chrome/userChrome.css"
alias userchrome="$EDITOR ~/.mozilla/firefox/jcjwalyb.default-release/chrome/userChrome.css"
alias kw='echo Current Week: $((10#$(date +"%V")))'
alias wol=wakeonlan
alias ge=gnome-extensions
alias open="xdg-open"
alias lg="lazygit"
alias ccat="pygmentize -g -O style=monokai,linenos=1"
alias rm="echo Use the full path i.e. '/bin/rm', consider using: trash"
alias explain="gh copilot explain"
alias csv="csvlens"
alias wstmux="cd ~/code/wasteside/app && tmux new -A -s wasteside"
alias R="R --no-save"
# Python tkinter stuff
export PATH="/usr/local/opt/tcl-tk/bin:$PATH"
@ -131,30 +155,54 @@ export PATH="/usr/local/opt/tcl-tk/bin:$PATH"
# autojump
[ -f /opt/homebrew/etc/profile.d/autojump.sh ] && . /opt/homebrew/etc/profile.d/autojump.sh
# spicetify
alias sba="spicetify backup apply"
# ws shortcuts
alias wsproddb="psql -h ep-shiny-brook-a23l5gzv-pooler.eu-central-1.aws.neon.tech -d neondb -U neondb_owner"
alias wsdevdb="psql -h ep-bitter-queen-a2jgwcaj-pooler.eu-central-1.aws.neon.tech -d verceldb -U default"
# bitwarden-cli
alias bw='NODE_OPTIONS="--no-deprecation" bw'
# Fix ls colors for synology directories
LS_COLORS+=':ow=01;33'
# connect to smb shares
alias mount-ds='[ -e "/Volumes/pauls-dateien" ] || open "smb://paul@192.168.193.68/pauls-dateien"'
# vscode shortcuts
alias ma="code --folder-uri=vscode-remote://ssh-remote+sralab/home/2021/pau.aumann/ma"
alias ws="code ~/Code/wasteside-v2"
# iTerm2 integration
source ~/.iterm2_shell_integration.zsh
# Fix colors for ssh sessions
TERM=xterm-256color
# history
HISTFILE=~/.histfile
HISTSIZE=10000
SAVEHIST=10000
# Android tools
export ANDROID_SDK_ROOT="$HOME/.local/opt/android-sdk"
export ANDROID_HOME="$ANDROID_SDK_ROOT"
export PATH="$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin"
export PATH="$PATH:$ANDROID_SDK_ROOT/build-tools/36.0.0/"
export PATH="$PATH:$ANDROID_SDK_ROOT/emulator"
# Unlock hyprlock
alias unlock=pkill -USR1 hyprlock
# zoxide
eval "$(zoxide init --cmd cd zsh)"
# SDKMAN & Java
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"
# Yarn
export PATH="$HOME/.yarn/bin:$PATH"
# More path stuff
export PATH="$HOME/.local/bin:$PATH"
# pyenv stuff (make sure this is at the end of the file)
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
#nvm
source /usr/share/nvm/init-nvm.sh
## [Completion]
## Completion scripts setup. Remove the following line to uninstall
[[ -f /home/paul/.dart-cli-completion/zsh-config.zsh ]] && . /home/paul/.dart-cli-completion/zsh-config.zsh || true
## [/Completion]

View File

@ -1,199 +0,0 @@
// Place your key bindings in this file to override the defaultsauto[]
[
// -------------- 1. EDITOR PANE MANAGEMENT --------------
// -------------- 1.1 EDITOR PANE CREATION ---------------
{
"key": "ctrl+a shift+7",
"command": "workbench.action.splitEditorRight"
},
{
"key": "ctrl+a -",
"command": "workbench.action.splitEditorDown"
},
// -------------- 1.2 EDITOR PANE SWITCHING --------------
{
"key": "ctrl+a left",
"command": "workbench.action.focusLeftGroup"
},
{
"key": "ctrl+a right",
"command": "workbench.action.focusRightGroup"
},
{
"key": "ctrl+a up",
"command": "workbench.action.focusAboveGroup"
},
{
"key": "ctrl+a down",
"command": "workbench.action.focusBelowGroup"
},
// --------------- 1.3 EDITOR PANE MOVEMENT --------------
{
"key": "ctrl+a shift+left",
"command": "workbench.action.moveActiveEditorGroupLeft"
},
{
"key": "ctrl+a shift+right",
"command": "workbench.action.moveActiveEditorGroupRight"
},
{
"key": "ctrl+a shift+up",
"command": "workbench.action.moveActiveEditorGroupUp"
},
{
"key": "ctrl+a shift+down",
"command": "workbench.action.moveActiveEditorGroupDown"
},
// ------------------ 2. FILE MANAGEMENT -----------------
{
"key": "ctrl+a f",
"command": "workbench.files.action.focusFilesExplorer"
},
{
"key": "cmd+n",
"command": "explorer.newFile",
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
},
{
"key": "cmd+d",
"command": "explorer.newFolder",
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
},
// ----------------- 3. SYMBOL MANAGEMENT ----------------
{
"key": "shift+cmd+r",
"command": "editor.action.rename",
"when": "editorHasRenameProvider && editorTextFocus && !editorReadonly"
},
{
"key": "shift+cmd+i",
"command": "editor.action.peekImplementation",
"when": "editorHasImplementationProvider && editorTextFocus && !inReferenceSearchEditor && !isInEmbeddedEditor"
},
{
"key": "shift+cmd+d",
"command": "editor.action.revealDefinition",
"when": "editorHasDefinitionProvider && editorTextFocus && !isInEmbeddedEditor"
},
// ------------- 4. VARIOUS EDITOR SHORTCUTS -------------
{
"key": "cmd+d",
"command": "editor.action.copyLinesDownAction",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "cmd+t",
"command": "workbench.action.createTerminalEditor"
},
{
"key": "cmd+u",
"command": "workbench.action.showAllSymbols"
},
{
"key": "cmd+r",
"command": "editor.action.startFindReplaceAction",
"when": "editorFocus && findInputFocussed"
},
{
"key": "shift+cmd+w",
"command": "workbench.action.closeAllGroups"
},
// ----------------- 4. REMOVED SHORTCUTS ----------------
{
"key": "cmd+d",
"command": "-editor.action.addSelectionToNextFindMatch",
"when": "editorFocus"
},
{
"key": "shift+alt+down",
"command": "-editor.action.copyLinesDownAction",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "cmd+t",
"command": "-workbench.action.showAllSymbols"
},
{
"key": "cmd+u",
"command": "-cursorUndo",
"when": "textInputFocus"
},
{
"key": "cmd+k down",
"command": "-workbench.action.moveActiveEditorGroupDown"
},
{
"key": "cmd+k left",
"command": "-workbench.action.moveActiveEditorGroupLeft"
},
{
"key": "cmd+k right",
"command": "-workbench.action.moveActiveEditorGroupRight"
},
{
"key": "cmd+k up",
"command": "-workbench.action.moveActiveEditorGroupUp"
},
{
"key": "alt+enter",
"command": "-notebook.cell.executeAndInsertBelow",
"when": "notebookCellListFocused && notebookCellType == 'markup' || notebookCellListFocused && notebookMissingKernelExtension && !notebookCellExecuting && notebookCellType == 'code' || notebookCellListFocused && !notebookCellExecuting && notebookCellType == 'code' && notebookKernelCount > 0 || notebookCellListFocused && !notebookCellExecuting && notebookCellType == 'code' && notebookKernelSourceCount > 0"
},
{
"key": "alt+enter",
"command": "-debug.openBreakpointToSide",
"when": "breakpointsFocused"
},
{
"key": "f2",
"command": "-editor.action.rename",
"when": "editorHasRenameProvider && editorTextFocus && !editorReadonly"
},
{
"key": "shift+cmd+r",
"command": "-rerunSearchEditorSearch",
"when": "inSearchEditor"
},
{
"key": "shift+cmd+w",
"command": "-workbench.action.closeWindow"
},
{
"key": "cmd+k shift+cmd+w",
"command": "-workbench.action.closeAllGroups"
},
{
"key": "shift+cmd+d",
"command": "-workbench.view.debug",
"when": "viewContainer.workbench.view.debug.enabled"
},
{
"key": "f12",
"command": "-editor.action.revealDefinition",
"when": "editorHasDefinitionProvider && editorTextFocus && !isInEmbeddedEditor"
},
{
"key": "shift+cmd+[Comma] cmd+i",
"command": "-testing.toggleInlineTestOutput"
},
{
"key": "shift+cmd+i",
"command": "-workbench.action.quickchat.toggle",
"when": "hasChatProvider"
},
{
"key": "shift+cmd+[Comma] shift+cmd+i",
"command": "-testing.toggleInlineCoverage",
"when": "testing.isTestCoverageOpen"
},
{
"key": "cmd+f12",
"command": "-editor.action.goToImplementation",
"when": "editorHasImplementationProvider && editorTextFocus && !isInEmbeddedEditor"
},
{
"key": "shift+cmd+f12",
"command": "-editor.action.peekImplementation",
"when": "editorHasImplementationProvider && editorTextFocus && !inReferenceSearchEditor && !isInEmbeddedEditor"
},
]