Compare commits

..

21 Commits

Author SHA1 Message Date
aaf25faab6 stuff 2026-07-08 09:22:05 +02:00
a8d7ae73f4 stuff 2026-03-20 14:30:47 +01:00
84bee93e89 stuff 2026-03-05 09:40:10 +01:00
0a4ff4c504 add stuff 2026-02-16 20:03:21 +01:00
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
82 changed files with 5474 additions and 396 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,434 @@
// 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": "alt+space",
"command": "relative-goto.goto"
},
{
"key": "alt+g",
"command": "-relative-goto.goto"
},
{
"key": "alt+left",
"command": "workbench.action.navigateBack",
"when": "canNavigateBack"
},
{
"key": "ctrl+alt+-",
"command": "-workbench.action.navigateBack",
"when": "canNavigateBack"
},
{
"key": "alt+right",
"command": "workbench.action.navigateForward",
"when": "canNavigateForward"
},
{
"key": "ctrl+shift+-",
"command": "-workbench.action.navigateForward",
"when": "canNavigateForward"
},
{
"key": "ctrl+i",
"command": "-workbench.action.chat.startVoiceChat",
"when": "chatIsEnabled && hasSpeechProvider && inChatInput && !editorFocus && !notebookEditorFocused && !scopedVoiceChatGettingReady && !speechToTextInProgress || chatIsEnabled && hasSpeechProvider && inlineChatFocused && !editorFocus && !notebookEditorFocused && !scopedVoiceChatGettingReady && !speechToTextInProgress"
},
{
"key": "ctrl+i",
"command": "-workbench.action.chat.stopListeningAndSubmit",
"when": "inChatInput && voiceChatInProgress && scopedVoiceChatInProgress == 'editor' || inChatInput && voiceChatInProgress && scopedVoiceChatInProgress == 'inline' || inChatInput && voiceChatInProgress && scopedVoiceChatInProgress == 'quick' || inChatInput && voiceChatInProgress && scopedVoiceChatInProgress == 'view' || inlineChatFocused && voiceChatInProgress && scopedVoiceChatInProgress == 'editor' || inlineChatFocused && voiceChatInProgress && scopedVoiceChatInProgress == 'inline' || inlineChatFocused && voiceChatInProgress && scopedVoiceChatInProgress == 'quick' || inlineChatFocused && voiceChatInProgress && scopedVoiceChatInProgress == 'view'"
},
{
"key": "ctrl+i",
"command": "workbench.action.openChatToSide"
},
]

View File

@@ -1,98 +1,137 @@
{ {
// "workbench.iconTheme": "Monokai Pro Light Icons",
// Appearance "editor.fontFamily": "JetBrains Mono Semibold, Fira Code, Menlo, Monaco, 'Courier New', monospace",
"workbench.colorTheme": "Monokai Pro (Filter Octagon)", "editor.fontSize": 18,
"workbench.iconTheme": "Monokai Pro (Filter Octagon) Icons", "editor.fontWeight": "normal",
"editor.fontFamily": "Fira Code, Menlo, Monaco, 'Courier New', monospace", "editor.fontLigatures": true,
"editor.fontSize": 18, "editor.stickyScroll.enabled": true,
"editor.fontWeight": "normal", "editor.minimap.renderCharacters": false,
"editor.fontLigatures": true, "editor.suggestSelection": "first",
"editor.stickyScroll.enabled": true, "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
"editor.minimap.renderCharacters": false, "window.titleBarStyle": "custom",
"editor.suggestSelection": "first", "workbench.sideBar.location": "right",
"vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue", //
// // Excluded files and directories
// Excluded files and directories "files.exclude": {
"files.exclude": { "**/.classpath": true,
"**/.classpath": true, "**/.project": true,
"**/.project": true, "**/.settings": true,
"**/.settings": true, "**/.factorypath": true
"**/.factorypath": true },
}, "files.watcherExclude": {
"files.watcherExclude": { "**/.bloop": true,
"**/.bloop": true, "**/.metals": true,
"**/.metals": true, "**/.ammonite": true
"**/.ammonite": true },
}, //
// // File associations with languages
// Settings Sync "files.associations": {
"settingsSync.ignoredSettings": [ "*.pgpass" : "yaml",
"sshfs.configs", },
"editor.fontFamily" //
], // Settings Sync
// "settingsSync.ignoredSettings": [
// Various settings "sshfs.configs",
"explorer.confirmDragAndDrop": false, "editor.fontFamily"
"workbench.startupEditor": "none", ],
"security.workspace.trust.untrustedFiles": "open", //
"emmet.showExpandedAbbreviation": "never", // Remote SSH
// "remote.SSH.remotePlatform": {
// Remote SSH "lab-pc07": "linux",
"remote.SSH.remotePlatform": { "lab-pc28": "linux",
"lab-pc07": "linux", "lab-pc01": "linux",
"lab-pc28": "linux", "wasteside": "linux",
"lab-pc01": "linux", "sralab": "linux"
"wasteside": "linux", },
"sralab": "linux" "remote.SSH.serverInstallPath": {
}, "sralab": "/srv/scratch/paul.aumann",
"remote.SSH.serverInstallPath": { "lab-pc00": "/srv/scratch/paul.aumann",
"sralab": "/srv/scratch/paul.aumann", "lab-pc44": "/srv/scratch/paul.aumann",
"lab-pc00": "/srv/scratch/paul.aumann", },
"lab-pc44": "/srv/scratch/paul.aumann", //
}, // Python
// "python.languageServer": "Default",
// Python "python.createEnvironment.trigger": "off",
"python.languageServer": "Default", "[python]": {
"[python]": { "editor.formatOnSave": true,
"editor.formatOnSave": true, "editor.rulers": [
"editor.rulers": [ 120
120 ],
], "editor.defaultFormatter": "ms-python.black-formatter",
"editor.defaultFormatter": "ms-python.black-formatter", "editor.codeActionsOnSave": {
"editor.codeActionsOnSave": { "source.organizeImports": "explicit"
"source.organizeImports": "explicit" }
} },
}, "black-formatter.args": [
"black-formatter.args": [ "--line-length",
"--line-length", "120"
"120" ],
], //
// // Jupyter Notebooks
// Jupyter Notebooks "notebook.cellToolbarLocation": {
"notebook.cellToolbarLocation": { "default": "right",
"default": "right", "jupyter-notebook": "left"
"jupyter-notebook": "left" },
}, "workbench.editorAssociations": {
"workbench.editorAssociations": { "*.ipynb": "jupyter-notebook"
"*.ipynb": "jupyter-notebook" },
}, //
// // R
// R "r.lsp.diagnostics": false,
"r.lsp.diagnostics": false, //
// // JSON
// JSON "[json][jsonc]": {
"[json][jsonc]": { "editor.defaultFormatter": "vscode.json-language-features",
"editor.defaultFormatter": "vscode.json-language-features", },
}, "prettier.singleQuote": true,
"prettier.singleQuote": true, //
// // Webdev
// Webdev "[typescript][typescriptreact][javascript][html]": {
"[typescript][typescriptreact][javascript][html]": { "editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true,
"editor.formatOnSave": true, "editor.indentSize": "tabSize",
"editor.indentSize": "tabSize", "editor.tabSize": 2,
"editor.tabSize": 2, "emmet.showAbbreviationSuggestions": false,
"emmet.showAbbreviationSuggestions": false, "editor.linkedEditing": true,
"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": "",
"editor.lineNumbers": "relative",
"github.copilot.nextEditSuggestions.enabled": true,
"json.schemaDownload.trustedDomains": {
"https://developer.microsoft.com/json-schemas/": true,
"https://json-schema.org/": true,
"https://json.schemastore.org/": true,
"https://raw.githubusercontent.com/": true,
"https://raw.githubusercontent.com/devcontainers/spec/": true,
"https://raw.githubusercontent.com/microsoft/vscode/": true,
"https://schemastore.azurewebsites.net/": true,
"https://unpkg.com": true,
"https://vicinae.com/schemas/config.json": true,
"https://www.schemastore.org/": true
},
"workbench.colorTheme": "Monokai Pro Light",
"workbench.editor.editorActionsLocation": "hidden",
} }

View File

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

1
.config/_default.jsonc Symbolic link
View File

@@ -0,0 +1 @@
vicinae/_default.jsonc

View File

@@ -0,0 +1,82 @@
[colors]
draw_bold_text_with_bright_colors = false
[cursor.style]
shape = "Beam"
blinking = "On"
[font]
size = 15.0
[font.bold]
family = "JetBrains Mono"
style = "Medium"
[font.glyph_offset]
x = 0
y = 0
[font.italic]
family = "JetBrains Mono"
style = "Italic"
[font.normal]
family = "JetBrains Mono"
style = "Medium"
[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 @@
/home/paul/.config/alacritty/themes/light/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 = "#131414"
[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,30 @@
# Colors (Alabaster)
# author tonsky
[colors.primary]
background = '#F7F7F7'
foreground = '#434343'
[colors.cursor]
text = '#F7F7F7'
cursor = '#434343'
[colors.normal]
black = '#000000'
red = '#AA3731'
green = '#448C27'
yellow = '#CB9000'
blue = '#325CC0'
magenta = '#7A3E9D'
cyan = '#0083B2'
white = '#BBBBBB'
[colors.bright]
black = '#777777'
red = '#F05050'
green = '#60CB00'
yellow = '#FFBC5D'
blue = '#007ACC'
magenta = '#E64CE6'
cyan = '#00AACB'
white = '#FFFFFF'

View File

@@ -0,0 +1,27 @@
[colors.primary]
background = '#f3f4f5'
foreground = '#565e65'
[colors.cursor]
text = '#f3f4f5'
cursor = '#565e65'
[colors.normal]
black = '#1c2023'
red = '#c7ae95'
green = '#95c7ae'
yellow = '#aec795'
blue = '#ae95c7'
magenta = '#c795ae'
cyan = '#95aec7'
white = '#c7ccd1'
[colors.bright]
black = '#747c84'
red = '#c7ae95'
green = '#95c7ae'
yellow = '#aec795'
blue = '#ae95c7'
magenta = '#c795ae'
cyan = '#95aec7'
white = '#f3f4f5'

View File

@@ -0,0 +1,75 @@
# Nightfox Alacritty Colors
## name: dawnfox
## upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/dawnfox/alacritty.toml
[colors.primary]
background = "#faf4ed"
foreground = "#575279"
dim_foreground = "#4c4769"
bright_foreground = "#625c87"
[colors.cursor]
text = "#575279"
cursor = "#625c87"
[colors.vi_mode_cursor]
text = "#575279"
cursor = "#56949f"
[colors.search.matches]
foreground = "#575279"
background = "#b8cece"
[colors.search.focused_match]
foreground = "#575279"
background = "#618774"
[colors.footer_bar]
foreground = "#575279"
background = "#ebdfe4"
[colors.hints.start]
foreground = "#575279"
background = "#d7827e"
[colors.hints.end]
foreground = "#575279"
background = "#ebdfe4"
[colors.selection]
text = "#575279"
background = "#d0d8d8"
[colors.normal]
black = "#575279"
red = "#b4637a"
green = "#618774"
yellow = "#ea9d34"
blue = "#286983"
magenta = "#907aa9"
cyan = "#56949f"
# white = "#e5e9f0" # Manually inverted from the original theme to match the light background
white = "#575279"
[colors.bright]
black = "#5f5695"
red = "#c26d85"
green = "#629f81"
yellow = "#eea846"
blue = "#2d81a3"
magenta = "#9a80b9"
cyan = "#5ca7b4"
# white = "#e6ebf3" # Manually inverted from the original theme to match the light background
white = "#5f5695"
[colors.dim]
black = "#504c6b"
red = "#a5576d"
green = "#597668"
yellow = "#dd9024"
blue = "#295e73"
magenta = "#816b9a"
cyan = "#50848c"
# white = "#c8cfde" # Manually inverted from the original theme to match the light background
white = "#504c6b"

View File

@@ -0,0 +1 @@
dawnfox.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"

1
.config/appeareance.jsonc Symbolic link
View File

@@ -0,0 +1 @@
vicinae/appeareance.jsonc

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

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

0
.config/config.toml Normal file
View File

View File

@@ -0,0 +1,3 @@
lat: 52.375893
lng: 9.732010
dbusserver: true

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

443
.config/dunst/dunstrc Normal file
View File

@@ -0,0 +1,443 @@
# See dunst(5) for all configuration options
[global]
### Display ###
# Which monitor should the notifications be displayed on.
monitor = DP-1
# 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/symbolic/actions:/home/paul/.config/dunst/icons"
# enable_recursive_icon_lookup = true
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 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#fff" d="M22.939 10.627L13.061.749a1.505 1.505 0 0 0-2.121 0l-9.879 9.878C.478 11.21 0 12.363 0 13.187v9c0 .826.675 1.5 1.5 1.5h9.227l-4.063-4.062a2 2 0 0 1-.664.113c-1.13 0-2.05-.92-2.05-2.05s.92-2.05 2.05-2.05s2.05.92 2.05 2.05c0 .233-.041.456-.113.665l3.163 3.163V9.928a2.05 2.05 0 0 1-1.15-1.84c0-1.13.92-2.05 2.05-2.05s2.05.92 2.05 2.05a2.05 2.05 0 0 1-1.15 1.84v8.127l3.146-3.146A2.05 2.05 0 0 1 18 12.239c1.13 0 2.05.92 2.05 2.05s-.92 2.05-2.05 2.05a2 2 0 0 1-.709-.13L12.9 20.602v3.088h9.6c.825 0 1.5-.675 1.5-1.5v-9c0-.825-.477-1.977-1.061-2.561z"/></svg>

After

Width:  |  Height:  |  Size: 659 B

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

1
.config/general.jsonc Symbolic link
View File

@@ -0,0 +1 @@
vicinae/general.jsonc

18
.config/helix/config.toml Normal file
View File

@@ -0,0 +1,18 @@
theme = "base16_transparent"
[editor]
line-number = "relative"
end-of-line-diagnostics="error"
completion-replace = true
[editor.file-picker]
hidden = false
[editor.statusline]
left = ["mode", "spinner", "read-only-indicator", ]
center = ["file-name", "file-modification-indicator", "spacer", "version-control"]
right = ["diagnostics", "selections", "position", "file-encoding", "file-line-ending", "file-type"]
separator = "|"
[editor.soft-wrap]
enable = true

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

@@ -0,0 +1,510 @@
# 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-1,3440x1440@144,auto,auto
monitor=DP-2,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
$launcher = vicinae toggle
# $launcher = tofi-drun | xargs hyprctl dispatch exec --
#################
### 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
exec-once = darkman run
exec-once = vicinae server
exec-once = udiskie
exec-once = swayosd-server
# Open programs on special workspaces
exec-once = [ workspace special:term silent] $terminal
exec-once = [ workspace special:browser silent] $browser "ext+container:name=Meta&url=https://web.whatsapp.com" "ext+container:name=Wasteside&url=https://mail.google.com"
exec-once = [ workspace special:browser silent] gnome-calendar
exec-once = [ workspace special:music silent] $terminal -e spotify_player
exec-once = [ workspace special:music silent] $terminal -e wiremix
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
# Custom scripts
exec-once = ~/code/ha-notifications/ha-notifications
# Plugins
exec-once = hyprpm reload
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
env = XDG_SESSION_TYPE,wayland
env = HYPRSHOT_DIR,/home/paul/screenshots
cursor {
no_hardware_cursors = 0
}
#####################
### 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
# Use dwindle per default, changed on a per-workspace basis in the workspace rules below
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.7
# 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 = bz, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 4, bz
animation = windowsOut, 1, 4, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 3, default
animation = specialWorkspace, 1, 2, default, fade
}
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling.
preserve_split = true # You probably want this
smart_split = false # No splitting based on cursor position
force_split = 2 # Always split to right
}
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master {
new_status = slave # New windows are slaves by default
mfact = 0.7
orientation = right
}
layout {
# single_window_aspect_ratio = 16 9
}
# 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. :(
close_special_on_empty = false
}
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout = de
kb_variant =
kb_model =
kb_options =
kb_rules =
numlock_by_default = true
follow_mouse = 2
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
# 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
}
binds {
hide_special_on_workspace_change = true
}
# 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, $launcher
bind = $mainMod, Space, exec, $launcher
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, V, exec, vicinae vicinae://extensions/vicinae/clipboard/history
bind = $mainMod, X, togglefloating
bind = $mainMod, P, pin, active
bind = $mainMod, J, layoutmsg, 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, hyprtasking:toggle, cursor
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-7]
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-7]
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
# Move active window to a workspace with mainMod + SHIFT + [1-7] (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-F7] (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)
# Special workspaces should only be opened on the primary monitor.
bind = $mainMod, F12, focusmonitor, DP-1
bind = $mainMod, F12, togglespecialworkspace, term
bind = $mainMod SHIFT, F12, movetoworkspace, special:term
bind = $mainMod, F11, focusmonitor, DP-1
bind = $mainMod, F11, togglespecialworkspace, browser
bind = $mainMod SHIFT, F11, movetoworkspace, special:browser
bind = $mainMod, F10, focusmonitor, DP-1
bind = $mainMod, F10, togglespecialworkspace, music
bind = $mainMod SHIFT, F10, movetoworkspace, special:music
bind = $mainMod, F9, focusmonitor, DP-1
bind = $mainMod, F9, togglespecialworkspace, todo
bind = $mainMod SHIFT, F9, movetoworkspace, special:todo
bind = $mainMod, F8, focusmonitor, DP-1
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 = ,XF86AudioRaiseVolume, exec, swayosd-client --output-volume raise
bindel = ,XF86AudioLowerVolume, exec, swayosd-client --output-volume lower
bindel = ,XF86AudioMute, exec, swayosd-client --output-volume mute-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 -a
bindl = , XF86AudioPlay, exec, playerctl play-pause -a
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.
windowrule = match:class .*, suppress_event maximize
# 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
windowrule = match:title ^(.*Extension: Bitwarden.*)$, float 1
# Always center ClickUp command bar
windowrule = match:title ClickUp Command Bar, center 1
# Dont use floating mode for freerdp
windowrule = match:class ^(xfreerdp)$, tile 1
# Open audio settings in floating mode
windowrule = match:class org.pulseaudio.pavucontrol, float 1, size 500 1000, move 2841 61, pin 1
# Same for bluetooth settings
windowrule = match:title overskride, float 1, size 765 765, move 2653 44, pin 1
# Change border color of pinned windows
windowrule = match:pin 1, border_color rgb(CC34A4) rgb(4B2D70)
# Share Picker is always floating
windowrule = match:class com.paulaumann.hyprland-share-picker, float 1, center 1
# Waydroid is always floating and exact size
windowrule {
name = "waydroid"
match:initial_class = Waydroid
float = 1
size = 576 1024
}
windowrule {
name = "waydroid-apps"
match:initial_class = waydroid\..*
float = 1
size = 576 1024
}
# Vicinae is always floating and exact size
windowrule {
name = "vicinae"
match:initial_class = vicinae
float = 1
pin = 1
stay_focused = on
dim_around = on
no_anim = on
}
# ClickUp Command Bar will disappear if mouse is not over it, so we pin it and disable focus loss
windowrule {
name = "clickup-command-bar"
match:initial_title = ClickUp Command Bar
float = 1
stay_focused = on
}
# UXPlay windows are always floating and exact size
windowrule {
name = "uxplay"
match:initial_class = GStreamer
match:initial_title = Pauls PC # This is the server name (-n) set in ~/.config/uxplayrc
float = 1
center = 1
}
# Import Modal for LibreOffice calc is always floating and exact size
windowrule {
name = "libreoffice-import-modal"
match:initial_class = soffice
match:initial_title = Text Import.*
float = 1
size = 800 400
stay_focused = on
dim_around = on
move = 1320 520
}
# Notification animation style
layerrule = match:namespace notifications, animation slide
# Fixes black border around screenshots due to animation after selection
layerrule {
name = no_anim_for_selection
match:namespace = selection
no_anim = on
}
# Blur behind certain layers
layerrule {
name = blur_waybar
match:namespace = waybar
blur = on
}
layerrule {
name = blur_tofi
match:namespace = launcher
blur = on
}
layerrule {
name = blur_swayosd
match:namespace = swayosd
blur = on
}
# Disabled since vicinae is currently a window, and not a layer.
# layerrule {
# name = blur_vicinae
# match:namespace = vicinae
# blur = on
# ignore_alpha = on
# dim_around = on
# }
# layerrule {
# name = no_animation_for_vicinae
# match:namespace = vicinae
# no_anim = on
# }
# Workspace rules to assign workspaces to monitors
workspace = 1, monitor:DP-1, default:true
workspace = 2, monitor:DP-1
workspace = 3, monitor:DP-1
workspace = 4, monitor:DP-1
workspace = 5, monitor:DP-1
workspace = 11, monitor:DP-2, default:true
workspace = 12, monitor:DP-2
workspace = 13, monitor:DP-2
workspace = 14, monitor:DP-2
workspace = 15, monitor:DP-2
workspace = special:term, gapsout:64
workspace = special:browser, gapsout:64
workspace = special:music, gapsout:64
workspace = special:todo, gapsout:64
workspace = special:files, gapsout:64
# Workspace rules to set layouts for specific workspaces (default is currently dwindle)
workspace = 1, layout:master
workspace = special:term, layout:master

View File

@@ -0,0 +1,13 @@
wallpaper {
monitor = DP-1
path = ~/.config/hypr/img/gnome-background.webp
fit_mode = cover
}
wallpaper {
monitor = DP-2
path = ~/.config/hypr/img/gnome-background.webp
fit_mode = cover
}
splash = false

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,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 = { }
}
]

1
.config/settings.json Symbolic link
View File

@@ -0,0 +1 @@
vicinae/settings.json

View File

@@ -0,0 +1,51 @@
theme = "dracula"
client_id = "7fed45e8d6ec4ff1b50e5464852fe136"
client_port = 8080
login_redirect_uri = "http://127.0.0.1:8989/login"
playback_format = """
{status} {track} • {artists} {liked}
{album}
{metadata}"""
notify_timeout_in_secs = 0
tracks_playback_limit = 50
app_refresh_duration_in_ms = 32
playback_refresh_duration_in_ms = 0
page_size_in_rows = 20
play_icon = "▶"
pause_icon = "▌▌"
liked_icon = "♥"
border_type = "Plain"
progress_bar_type = "Rectangle"
cover_img_length = 9
cover_img_width = 5
cover_img_scale = 1.0
cover_img_pixels = 64
enable_media_control = true
enable_streaming = "Always"
enable_notify = true
enable_cover_image_cache = true
default_device = "spotify-player"
notify_streaming_only = false
seek_duration_secs = 5
sort_artist_albums_by_type = false
[notify_format]
summary = "{track} • {artists}"
body = "{album}"
[layout]
playback_window_position = "Top"
playback_window_height = 6
[layout.library]
playlist_percent = 40
album_percent = 40
[device]
name = "spotify-player"
device_type = "speaker"
volume = 70
bitrate = 320
audio_cache = false
normalization = false
autoplay = false

View File

@@ -0,0 +1,22 @@
/* ~/.config/swayosd/colors.css
* Static example palette (Material-ish, dark)
* Used by: style.css via `@import "colors.css";`
*/
@define-color primary #8AB4F8; /* blue */
@define-color primary_container #1E3A5F; /* deep blue container */
@define-color surface_container_low #12161C; /* dark surface (low) */
@define-color outline #3A4654; /* subtle border/outline */
/* Optional extras (safe to keep even if unused) */
@define-color on_primary #0B1220;
@define-color on_primary_container #D7E3FF;
@define-color surface_container #161B22;
@define-color surface_container_high #1D2430;
@define-color error #F28B82;
@define-color warning #FDD663;
/* If you ever need transparency variants */
@define-color primary_transparent alpha(@primary, 0.7);
@define-color outline_transparent alpha(@outline, 0.7);

48
.config/swayosd/style.css Normal file
View File

@@ -0,0 +1,48 @@
@import "colors.css";
window#osd {
border-radius: 10px;
border: 2px solid @outline;
background: alpha(@surface_container_low, 0.4);
}
window#osd #container {
margin: 6px;
padding: 2px;
background: transparent;
}
window#osd image {
-gtk-icon-transform: scale(0.7);
}
window#osd image,
window#osd label {
color: @primary;
}
window#osd progressbar:disabled,
window#osd image:disabled {
opacity: 0.5;
}
window#osd progressbar {
min-height: 6px;
border-radius: 999px;
background: transparent;
border: none;
}
window#osd trough {
min-height: inherit;
border-radius: inherit;
border: none;
background: alpha(@primary_container, 0.5);
}
window#osd progress {
min-height: inherit;
border-radius: inherit;
border: none;
background: @primary;
}

View File

@@ -0,0 +1,6 @@
[Unit]
Description=Hyprland session
BindsTo=graphical-session.target
Wants=graphical-session-pre.target
After=graphical-session-pre.target
PropagatesStopTo=graphical-session.target

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

3
.config/uxplayrc Normal file
View File

@@ -0,0 +1,3 @@
n "Pauls PC"
nh
fps 60

11
.config/vicinae/.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,11 @@
{
"[json]": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": "explicit"
}
},
"[jsonc]": {
"editor.formatOnSave": true
},
}

View File

@@ -0,0 +1,186 @@
{
"$schema": "https://vicinae.com/schemas/config.json",
// A list of paths pointed to separate configuration files to source during loading.
// Note that values defined in the main configuration file always take precedence over imported
// files.
// Relative paths are accepted, and are relative to the configuration directory in which the importing configuration file is located.
"imports": [],
// Whether root search should also search files directly.
// File search is performed asynchrounously: files may take an instant to appear after a query is entered.
// Turning this on results in an increase in CPU usage when searching.
// Note that vicinae has a built-in file search command that can be used to perform file search in isolation, accompanied with
// rich content preview. This should be more than enough for most users.
"search_files_in_root": false,
// What vicinae should do when the "escape" key is pressed
// Supports "navigate_back" or "close_window"
"escape_key_behavior": "navigate_back",
// If the layer shell protocol is used to position the window and the keyboard interactivity is
// set to "exclusive" (the default) then this setting will have no effect. Either switch to "on_demand" interactivity
// or disable layer shell.
"close_on_focus_loss": false,
// Whether IME preedit strings should be searched in real time.
"consider_preedit": false,
// Reset the navigation state every time the window is closed
"pop_to_root_on_close": false,
// What favicon service to use when loading favicons is needed.
// Available values are: 'twenty' | 'google' | 'none'
// If this is set to 'none', favicon loading is disabled and a placeholder icon will be used when a favicon is expected.
"favicon_service": "twenty",
// EXPERIMENTAL!
// Enable specific editing motions in the main search bar and during navigation.
// This will probably be changed in future updates.
// Supports: 'default' | 'emacs'
"keybinding": "default",
"font": {
// The font family to use for the general vicinae UI.
// "auto" (recommended): uses the bundled Inter font
// "system": uses the system/platform default font
// Or specify any font family name (e.g. "Fira Sans")
"normal": {
"family": "auto",
// The point size of the font (unlike pixel size, the point size scales with resolution)
"size": 10.5
}
},
// The general vicinae theme as well as the system icon theme (used for applications and file icons) can be customized
// according to the system appearance.
// When editing the current theme through the vicinae GUI, it will modify the value that maps to the current system appearance.
"theme": {
"light": {
"name": "vicinae-light",
"icon_theme": "auto"
},
"dark": {
"name": "vicinae-dark",
"icon_theme": "auto"
}
},
"launcher_window": {
// Control the opacity of the main window.
// Opacity for other surfaces are controlled by the active theme.
"opacity": 0.95,
// Blur the window background.
// Only suported on Hyprland for now.
// May require a server restart to disable properly.
"blur": {
"enabled": true
},
// Dims everything behind the vicinae window.
// Only supported on Hyprland for now.
// May require a server restart to disable properly.
"dim_around": true,
// You can turn client side decorations off if you want to let your compositor draw the rounded
// borders and such. This usually gives better results, but is more complicated to setup, if at all possible.
"client_side_decorations": {
"enabled": true,
"rounding": 10,
"border_width": 2
},
// In compact mode, vicinae only shows a search bar in the root search if no query is entered, only expanding to its full size when searching.
// WARNING: compact mode works best when vicinae is rendered as a layer surface (the default if available), as opposed to a regular floating window.
// That's because the part that is not rendered in compact mode is still part of the full window size, allowing the window to be gracefully expanded without having to deal
// with a compositor window resize which can generate a lot of visual noise. Server side borders and blur will look notably out of place.
"compact_mode": {
"enabled": false
},
// The vicinae UI is designed to work best at the default size. If you change this it is highly recommended
// that you preserve a similar aspect ratio.
"size": {
"width": 770,
"height": 480
},
// EXPERIMENTAL - X11 ONLY!
// The name of the screen (as provided by a tool like xrandr) on which the vicinae window
// needs to be shown.
// e.g "eDP1", "DP-1"
"screen": "auto",
// Only for wayland compositors that support the 'wlr-layer-shell' protocol (https://wayland.app/protocols/wlr-layer-shell-unstable-v1)
// NOTE: layer shell support for the cosmic compositor is explicitly disabled as it is currently broken
"layer_shell": {
"enabled": true,
// 'exclusive' | 'on_demand'
// WARNING: 'exclusive' is known to break mouse stuff on popups (such as the action panel) on Hyprland
"keyboard_interactivity": "on_demand",
// either 'overlay' or 'top'.
// Other layers are not supported as they are unsuitable for a launcher.
// 'top' is recommended as using 'overlay' will make the vicinae window appear on top of IME popovers in some scenarios.
"layer": "top"
}
},
// How much memory (in MB) can be used to cache small image assets in memory directly
// The higher this value is the more memory vicinae will use. In exchange for this, you get lower cpu usage.
"pixmap_cache_mb": 50,
// Keybinds are serialized using a custom format.
// It is recommended to edit them through the settings GUI, which will write them to this file.
"keybinds": {
// common shortcuts
"open-search-filter": "control+P",
"open-settings": "control+,",
"toggle-action-panel": "control+B",
// used to assign shortcuts to generic actions
// if an extension provides a specific kind of action, it is encouraged to use shortcuts as defined here.
"action.copy": "control+shift+C",
"action.copy-name": "control+shift+.",
"action.copy-path": "control+shift+,",
"action.dangerous-remove": "control+shift+X",
"action.duplicate": "control+D",
"action.edit": "control+E",
"action.edit-secondary": "control+shift+E",
"action.move-down": "control+shift+ARROWDOWN",
"action.move-up": "control+shift+ARROWUP",
"action.new": "control+N",
"action.open": "control+O",
"action.pin": "control+shift+P",
"action.refresh": "control+R",
"action.remove": "control+X",
"action.save": "control+S"
},
// List of entrypoints that are tagged as "favorite".
// They show up on the very top of the root search when no search query is active.
// Each value is a serialized entrypoint ID.
"favorites": [
"clipboard:history"
],
// List of entrypoints to suggest as a fallback when no result matches the
// provided search query.
// Each value is a serialized entrypoint ID.
"fallbacks": [
"files:search"
],
// Every item that can be activated from the vicinae root search is referred as an entrypoint, or sometimes, in the case of extensions, as a "command".
// Entrypoints are always grouped under a provider.
// e,g applications entrypoints are all grouped under the "applications" provider
//
// The best way to interact with providers and entrypoints is through the graphical interface provided by the
// settings window ("extensions" tab). Every time a change is made through this GUI, the relevant values will be
// written to the "providers" object below (password preferences excluded).
//
// The exact list of available providers depends on what extensions have been installed.
"providers": {}
}

View File

@@ -0,0 +1,33 @@
{
"$schema": "https://vicinae.com/schemas/config.json",
"launcher_window": {
// You can turn client side decorations off if you want to let your compositor draw the rounded
// borders and such. This usually gives better results, but is more complicated to setup, if at all possible.
"client_side_decorations": {
"enabled": false
},
// Only for wayland compositors that support the 'wlr-layer-shell' protocol (https://wayland.app/protocols/wlr-layer-shell-unstable-v1)
// NOTE: layer shell support for the cosmic compositor is explicitly disabled as it is currently broken
"layer_shell": {
"enabled": false,
// 'exclusive' | 'on_demand'
// WARNING: 'exclusive' is known to break mouse stuff on popups (such as the action panel) on Hyprland
"keyboard_interactivity": "on_demand",
// either 'overlay' or 'top'.
// Other layers are not supported as they are unsuitable for a launcher.
// 'top' is recommended as using 'overlay' will make the vicinae window appear on top of IME popovers in some scenarios.
"layer": "top"
}
},
"font": {
// The font family to use for the general vicinae UI.
// "auto" (recommended): uses the bundled Inter font
// "system": uses the system/platform default font
// Or specify any font family name (e.g. "Fira Sans")
"normal": {
"family": "Verdana",
// The point size of the font (unlike pixel size, the point size scales with resolution)
"size": 10.5
}
}
}

View File

@@ -0,0 +1,7 @@
{
"$schema": "https://vicinae.com/schemas/config.json",
// If the layer shell protocol is used to position the window and the keyboard interactivity is
// set to "exclusive" (the default) then this setting will have no effect. Either switch to "on_demand" interactivity
// or disable layer shell.
"close_on_focus_loss": false
}

View File

@@ -0,0 +1,17 @@
// This configuration is merged with the default vicinae configuration file, which you can obtain by running the `vicinae config default` command.
// Every item defined in this file takes precedence over the values defined in the default config or any other imported file.
//
// You can make manual edits to this file, however you should keep in mind that this file may be written to by vicinae when a configuration change is made through the GUI.
// When that happens, any custom comments or formatting will be lost.
//
// If you want to maintain a configuration file with your own comments and formatting, you should create a separate file and add it to the 'imports' array.
//
// Learn more about configuration at https://docs.vicinae.com/config
{
"$schema": "https://vicinae.com/schemas/config.json",
"imports": [
"appeareance.jsonc",
"general.jsonc"
]
}

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

@@ -0,0 +1,120 @@
{
"layer": "top",
"output": "DP-1",
"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,51 @@
# For documentation, FAQ, additional configuration options and technical help, visit: https://github.com/dockur/windows
name: "winapps" # Docker Compose Project Name.
# volumes:
# Create Volume 'data'.
# Located @ '/var/lib/docker/volumes/winapps_data/_data' (Docker).
# Located @ '/var/lib/containers/storage/volumes/winapps_data/_data' or '~/.local/share/containers/storage/volumes/winapps_data/_data' (Podman).
# data:
services:
windows:
image: ghcr.io/dockur/windows:latest
container_name: winapps # Created Docker VM Name.
environment:
# Version of Windows to configure. For valid options, visit:
# https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-select-the-windows-version
# https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-install-a-custom-image
VERSION: "11"
RAM_SIZE: "8G" # RAM allocated to the Windows VM.
CPU_CORES: "4" # CPU cores allocated to the Windows VM.
DISK_SIZE: "64G" # Size of the primary hard disk.
# DISK2_SIZE: "32G" # Uncomment to add an additional hard disk to the Windows VM. Ensure it is mounted as a volume below.
USERNAME: "paul" # Edit here to set a custom Windows username. The default is 'MyWindowsUser'.
PASSWORD: "nicerdicer" # Edit here to set a password for the Windows user. The default is 'MyWindowsPassword'.
HOME: "${HOME}" # Set path to Linux user home folder.
ARGUMENTS: "-cpu host,arch_capabilities=off"
ports:
- 8006:8006 # Map '8006' on Linux host to '8006' on Windows VM --> For VNC Web Interface @ http://127.0.0.1:8006.
- 3389:3389/tcp # Map '3389' on Linux host to '3389' on Windows VM --> For Remote Desktop Protocol (RDP).
- 3389:3389/udp # Map '3389' on Linux host to '3389' on Windows VM --> For Remote Desktop Protocol (RDP).
cap_add:
- NET_ADMIN # Add network permission
stop_grace_period: 120s # Wait 120 seconds before sending SIGTERM when attempting to shut down the Windows VM.
restart: on-failure # Restart the Windows VM if the exit code indicates an error.
volumes:
- ~/.winapps:/storage # Mount local folder 'data' to use as Windows 'C:' drive.
- ${HOME}:/shared # Mount Linux user home directory @ '\\host.lan\Data'.
#- /path/to/second/hard/disk:/storage2 # Uncomment to create a virtual second hard disk and mount it within the Windows VM. Ensure 'DISK2_SIZE' is specified above.
- ./oem:/oem # Enables automatic post-install execution of 'oem/install.bat', applying Windows registry modifications contained within 'oem/RDPApps.reg'.
#- /path/to/windows/install/media.iso:/custom.iso # Uncomment to use a custom Windows ISO. If specified, 'VERSION' (e.g. 'tiny11') will be ignored.
devices:
- /dev/kvm # Enable KVM.
- /dev/net/tun # Enable tuntap
# Uncomment to mount a disk directly within the Windows VM.
# WARNING: /dev/sdX paths may change after reboot. Use persistent identifiers!
# NOTE: 'disk1' will be mounted as the main drive. THIS DISK WILL BE FORMATTED BY DOCKER.
# All following disks (disk2, ...) WILL NOT BE FORMATTED.
# - /dev/disk/by-id/<id>:/disk1
# - /dev/disk/by-id/<id>:/disk2
# group_add: # uncomment this line and the next one for using rootless podman containers
# - keep-groups # to make /dev/kvm work with podman. needs "crun" installed, "runc" will not work! Add your user to the 'kvm' group or another that can access /dev/kvm.

1794
.config/winapps/setup.sh Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,139 @@
##################################
# WINAPPS CONFIGURATION FILE #
##################################
# INSTRUCTIONS
# - Leading and trailing whitespace are ignored.
# - Empty lines are ignored.
# - Lines starting with '#' are ignored.
# - All characters following a '#' are ignored.
# [WINDOWS USERNAME]
RDP_USER="paul"
# [WINDOWS PASSWORD]
# NOTES:
# - If using FreeRDP v3.9.0 or greater, you *have* to set a password
RDP_PASS="nicerdicer"
# [WINDOWS DOMAIN]
# DEFAULT VALUE: '' (BLANK)
RDP_DOMAIN=""
# [WINDOWS IPV4 ADDRESS]
# NOTES:
# - If using 'libvirt', 'RDP_IP' will be determined by WinApps at runtime if left unspecified.
# DEFAULT VALUE:
# - 'docker': '127.0.0.1'
# - 'podman': '127.0.0.1'
# - 'libvirt': '' (BLANK)
RDP_IP="127.0.0.1"
# [VM NAME]
# NOTES:
# - Only applicable when using 'libvirt'
# - The libvirt VM name must match so that WinApps can determine VM IP, start the VM, etc.
# DEFAULT VALUE: 'RDPWindows'
VM_NAME="RDPWindows"
# [WINAPPS BACKEND]
# DEFAULT VALUE: 'docker'
# VALID VALUES:
# - 'docker'
# - 'podman'
# - 'libvirt'
# - 'manual'
WAFLAVOR="docker"
# [DISPLAY SCALING FACTOR]
# NOTES:
# - If an unsupported value is specified, a warning will be displayed.
# - If an unsupported value is specified, WinApps will use the closest supported value.
# DEFAULT VALUE: '100'
# VALID VALUES:
# - '100'
# - '140'
# - '180'
RDP_SCALE="100"
# [MOUNTING REMOVABLE PATHS FOR FILES]
# NOTES:
# - By default, `udisks` (which you most likely have installed) uses /run/media for mounting removable devices.
# This improves compatibility with most desktop environments (DEs).
# ATTENTION: The Filesystem Hierarchy Standard (FHS) recommends /media instead. Verify your system's configuration.
# - To manually mount devices, you may optionally use /mnt.
# REFERENCE: https://wiki.archlinux.org/title/Udisks#Mount_to_/media
REMOVABLE_MEDIA="/run/media"
# [ADDITIONAL FREERDP FLAGS & ARGUMENTS]
# NOTES:
# - You can try adding /network:lan to these flags in order to increase performance, however, some users have faced issues with this.
# DEFAULT VALUE: '/cert:tofu /sound /microphone +home-drive'
# VALID VALUES: See https://github.com/awakecoding/FreeRDP-Manuals/blob/master/User/FreeRDP-User-Manual.markdown
RDP_FLAGS="/cert:tofu /sound /microphone +home-drive"
# [DEBUG WINAPPS]
# NOTES:
# - Creates and appends to ~/.local/share/winapps/winapps.log when running WinApps.
# DEFAULT VALUE: 'true'
# VALID VALUES:
# - 'true'
# - 'false'
DEBUG="true"
# [AUTOMATICALLY PAUSE WINDOWS]
# NOTES:
# - This is currently INCOMPATIBLE with 'docker' and 'manual'.
# - See https://github.com/dockur/windows/issues/674
# DEFAULT VALUE: 'off'
# VALID VALUES:
# - 'on'
# - 'off'
AUTOPAUSE="off"
# [AUTOMATICALLY PAUSE WINDOWS TIMEOUT]
# NOTES:
# - This setting determines the duration of inactivity to tolerate before Windows is automatically paused.
# - This setting is ignored if 'AUTOPAUSE' is set to 'off'.
# - The value must be specified in seconds (to the nearest 10 seconds e.g., '30', '40', '50', etc.).
# - For RemoteApp RDP sessions, there is a mandatory 20-second delay, so the minimum value that can be specified here is '20'.
# - Source: https://techcommunity.microsoft.com/t5/security-compliance-and-identity/terminal-services-remoteapp-8482-session-termination-logic/ba-p/246566
# DEFAULT VALUE: '300'
# VALID VALUES: >=20
AUTOPAUSE_TIME="300"
# [FREERDP COMMAND]
# NOTES:
# - WinApps will attempt to automatically detect the correct command to use for your system.
# DEFAULT VALUE: '' (BLANK)
# VALID VALUES: The command required to run FreeRDPv3 on your system (e.g., 'xfreerdp', 'xfreerdp3', etc.).
FREERDP_COMMAND=""
# [TIMEOUTS]
# NOTES:
# - These settings control various timeout durations within the WinApps setup.
# - Increasing the timeouts is only necessary if the corresponding errors occur.
# - Ensure you have followed all the Troubleshooting Tips in the error message first.
# PORT CHECK
# - The maximum time (in seconds) to wait when checking if the RDP port on Windows is open.
# - Corresponding error: "NETWORK CONFIGURATION ERROR" (exit status 13).
# DEFAULT VALUE: '5'
PORT_TIMEOUT="5"
# RDP CONNECTION TEST
# - The maximum time (in seconds) to wait when testing the initial RDP connection to Windows.
# - Corresponding error: "REMOTE DESKTOP PROTOCOL FAILURE" (exit status 14).
# DEFAULT VALUE: '30'
RDP_TIMEOUT="30"
# APPLICATION SCAN
# - The maximum time (in seconds) to wait for the script that scans for installed applications on Windows to complete.
# - Corresponding error: "APPLICATION QUERY FAILURE" (exit status 15).
# DEFAULT VALUE: '60'
APP_SCAN_TIMEOUT="60"
# WINDOWS BOOT
# - The maximum time (in seconds) to wait for the Windows VM to boot if it is not running, before attempting to launch an application.
# DEFAULT VALUE: '120'
BOOT_TIMEOUT="120"

View File

@@ -0,0 +1,19 @@
# Disable all monitor sources (e.g. output mirrors) so they don't appear as input devices
monitor.alsa.rules =
[
{
matches =
[
{
node.name = "~.*"
}
]
actions =
{
update-props =
{
item.features.monitor = false
}
}
}
]

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"));
}

5
.gitignore vendored
View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1 @@
<svg id="emoji" width="36" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><g id="color"><path fill="#F4AA41" stroke="none" d="M23.5,14.5855l-4.5,1.75l-7.25,8.5l-4.5,10.75l2,5.25c1.2554,3.7911,3.5231,7.1832,7.25,10l2.5-3.3333 c0,0,3.8218,7.7098,10.7384,8.9598c0,0,10.2616,1.936,15.5949-0.8765c3.4203-1.8037,4.4167-4.4167,4.4167-4.4167l3.4167-3.4167 l1.5833,2.3333l2.0833-0.0833l5.4167-7.25L64,37.3355l-0.1667-4.5l-2.3333-5.5l-4.8333-7.4167c0,0-2.6667-4.9167-8.1667-3.9167 c0,0-6.5-4.8333-11.8333-4.0833S32.0833,10.6688,23.5,14.5855z"></path><polygon fill="#EA5A47" stroke="none" points="36,47.2521 32.9167,49.6688 30.4167,49.6688 30.3333,53.5021 31.0833,57.0021 32.1667,58.9188 35,60.4188 39.5833,59.8355 41.1667,58.0855 42.1667,53.8355 41.9167,49.8355 39.9167,50.0855"></polygon><polygon fill="#3F3F3F" stroke="none" points="32.5,36.9188 30.9167,40.6688 33.0833,41.9188 34.3333,42.4188 38.6667,42.5855 41.5833,40.3355 39.8333,37.0855"></polygon></g><g id="hair"></g><g id="skin"></g><g id="skin-shadow"></g><g id="line"><path fill="#000000" stroke="none" d="M29.5059,30.1088c0,0-1.8051,1.2424-2.7484,0.6679c-0.9434-0.5745-1.2424-1.8051-0.6679-2.7484 s1.805-1.2424,2.7484-0.6679S29.5059,30.1088,29.5059,30.1088z"></path><path fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M33.1089,37.006h6.1457c0.4011,0,0.7634,0.2397,0.9203,0.6089l1.1579,2.7245l-2.1792,1.1456 c-0.6156,0.3236-1.3654-0.0645-1.4567-0.754"></path><path fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M34.7606,40.763c-0.1132,0.6268-0.7757,0.9895-1.3647,0.7471l-2.3132-0.952l1.0899-2.9035 c0.1465-0.3901,0.5195-0.6486,0.9362-0.6486"></path><path fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M30.4364,50.0268c0,0-0.7187,8.7934,3.0072,9.9375c2.6459,0.8125,5.1497,0.5324,6.0625-0.25 c0.875-0.75,2.6323-4.4741,1.8267-9.6875"></path><path fill="#000000" stroke="none" d="M44.2636,30.1088c0,0,1.805,1.2424,2.7484,0.6679c0.9434-0.5745,1.2424-1.8051,0.6679-2.7484 c-0.5745-0.9434-1.805-1.2424-2.7484-0.6679C43.9881,27.9349,44.2636,30.1088,44.2636,30.1088z"></path><path fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M25.6245,42.8393c-0.475,3.6024,2.2343,5.7505,4.2847,6.8414c1.1968,0.6367,2.6508,0.5182,3.7176-0.3181l2.581-2.0233l2.581,2.0233 c1.0669,0.8363,2.5209,0.9548,3.7176,0.3181c2.0504-1.0909,4.7597-3.239,4.2847-6.8414"></path><path fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M19.9509,28.3572c-2.3166,5.1597-0.5084,13.0249,0.119,15.3759c0.122,0.4571,0.0755,0.9355-0.1271,1.3631l-1.9874,4.1937 c-0.623,1.3146-2.3934,1.5533-3.331,0.4409c-3.1921-3.7871-8.5584-11.3899-6.5486-16.686 c7.0625-18.6104,15.8677-18.1429,15.8677-18.1429c2.8453-1.9336,13.1042-6.9375,24.8125,0.875c0,0,8.6323-1.7175,14.9375,16.9375 c1.8036,5.3362-3.4297,12.8668-6.5506,16.6442c-0.9312,1.127-2.7162,0.8939-3.3423-0.4272l-1.9741-4.1656 c-0.2026-0.4275-0.2491-0.906-0.1271-1.3631c0.6275-2.3509,2.4356-10.2161,0.119-15.3759"></path><path fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M52.6309,46.4628c0,0-3.0781,6.7216-7.8049,8.2712"></path><path fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M19.437,46.969c0,0,3.0781,6.0823,7.8049,7.632"></path><line x1="36.2078" x2="36.2078" y1="47.3393" y2="44.3093" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"></line></g></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,53 @@
#!/usr/bin/env python3
import subprocess
from argparse import ArgumentParser
from pathlib import Path
if __name__ == "__main__":
parser = ArgumentParser(description="Alacritty theme switcher")
parser.add_argument(
"mode",
help="The mode to switch the Alacritty theme to (e.g., 'dark' or 'light')",
)
args = parser.parse_args()
if args.mode not in ["dark", "light"]:
print("Invalid mode. Please choose 'dark' or 'light'.")
exit(1)
"""
The Alacritty config directory should contain the following files:
└── themes
├── current.toml -> dark/default.toml
├── dark
│ └── default.toml
└── light
└── default.toml
The default.toml files can be symlinks to the actual theme files, so you can easily switch between
different themes by changing the symlink target.
To change the light/dark theme, we can simply change the current.toml symlink to point to the
appropriate theme file.
"""
alacritty_config = Path.home() / ".config/alacritty"
themes_dir = alacritty_config / "themes"
current_theme = themes_dir / "current.toml"
target_theme = themes_dir / args.mode / "default.toml"
if not target_theme.exists():
print(f"Target theme file not found at {target_theme}")
exit(1)
if current_theme.exists() and not current_theme.is_symlink():
print(f"Current theme file {current_theme} is not a symlink. Please fix this manually.")
exit(1)
if current_theme.exists():
current_theme.unlink()
current_theme.symlink_to(target_theme)
print("Done!")

View File

@@ -0,0 +1,30 @@
#!/usr/bin/env python3
import subprocess
from argparse import ArgumentParser
if __name__ == "__main__":
parser = ArgumentParser(description="GTK theme switcher")
parser.add_argument(
"mode",
help="The mode to switch the GTK theme to (e.g., 'dark' or 'light')",
)
args = parser.parse_args()
if args.mode not in ["dark", "light"]:
print("Invalid mode. Please choose 'dark' or 'light'.")
exit(1)
gtk_theme = "Adwaita-dark" if args.mode == "dark" else "Adwaita"
color_scheme = "prefer-dark" if args.mode == "dark" else "prefer-light"
# Set the GTK theme using gsettings
subprocess.run(
["gsettings", "set", "org.gnome.desktop.interface", "gtk-theme", gtk_theme],
check=True,
)
subprocess.run(
["gsettings", "set", "org.gnome.desktop.interface", "color-scheme", color_scheme],
check=True,
)

View File

@@ -0,0 +1,39 @@
#!/usr/bin/env python3
import re
from argparse import ArgumentParser
from pathlib import Path
if __name__ == "__main__":
parser = ArgumentParser(description="VS Code theme switcher")
parser.add_argument(
"mode",
help="The mode to switch the VS Code theme to (e.g., 'dark' or 'light')",
)
args = parser.parse_args()
if args.mode not in ["dark", "light"]:
print("Invalid mode. Please choose 'dark' or 'light'.")
exit(1)
settings = Path.home() / ".config/Code/User/settings.json"
if not settings.exists():
print(f"VS Code settings file not found at {settings}")
exit(1)
# We just replace the theme name in the settings file using regex,
# this way we don't have to worry about jsonc parsing.
theme = "Monokai Pro" if args.mode == "dark" else "Monokai Pro Light"
with settings.open("r") as f:
content = f.read()
new_content = re.sub(
r'"workbench\.colorTheme"\s*:\s*".*?"',
f'"workbench.colorTheme": "{theme}"',
content,
)
with settings.open("w") as f:
f.write(new_content)

View File

@@ -3,7 +3,13 @@ unbind-key C-b
set-option -g prefix C-a set-option -g prefix C-a
bind-key C-a send-prefix 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 -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}" bind - split-window -v -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}" bind c new-window -c "#{pane_current_path}"
@@ -13,9 +19,15 @@ unbind %
# reload on r # reload on r
bind r source-file ~/.tmux.conf \; display "Reloaded config!" bind r source-file ~/.tmux.conf \; display "Reloaded config!"
# number of scrollback lines
set-option -g history-limit 5000
# enable mouse mode # enable mouse mode
set -g mouse on 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 # start numbering panes at 1
set -g base-index 1 set -g base-index 1
setw -g pane-base-index 1 setw -g pane-base-index 1
@@ -33,4 +45,4 @@ set -g status-right-length 50
set -g status-left-length 10 set -g status-left-length 10
setw -g window-status-current-style "fg=black bg=color6" setw -g window-status-current-style "fg=black bg=color6"
setw -g window-status-current-format " #I #W #F " setw -g window-status-current-format " #I #W #F "
setw -g window-status-format " #I #[fg=colour7]#W #[fg=colour1]#F " setw -g window-status-format " #I #[fg=colour7]#W #[fg=colour1]#F "

1
.zprofile Normal file
View File

@@ -0,0 +1 @@

162
.zshrc
View File

@@ -1,129 +1,76 @@
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH="$HOME/.oh-my-zsh" export ZSH="$HOME/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will # Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case, # load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME # to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes # See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="gentoo" ZSH_THEME="custom"
# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in $ZSH/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment one of the following lines to change the auto-update behavior
# zstyle ':omz:update' mode disabled # disable automatic updates
# zstyle ':omz:update' mode auto # update automatically without asking
# zstyle ':omz:update' mode reminder # just remind me to update when it's time
# Uncomment the following line to change how often to auto-update (in days).
# zstyle ':omz:update' frequency 13
# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS="true"
# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# You can also set it to another string to have that shown instead of the default red dots.
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
# COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files # Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories # under VCS as dirty. This makes repository status check for large repositories
# much, much faster. # much, much faster.
DISABLE_UNTRACKED_FILES_DIRTY="true" DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load? # Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/ # Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/ # Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse) # Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup. # 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 pip docker uv zsh-uv-env colorize copyfile)
source $ZSH/oh-my-zsh.sh source $ZSH/oh-my-zsh.sh
# User configuration # User configuration
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment # You may need to manually set your language environment
# export LANG=en_US.UTF-8 # 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 # Preferred editor for local and remote sessions
if [[ -n $SSH_CONNECTION ]]; then if [[ -n $SSH_CONNECTION ]]; then
export EDITOR='nano' export EDITOR='nano'
else else
export EDITOR='code' export EDITOR="helix"
export VISUAL=$codewait
fi fi
# Compilation flags # Compilation flags
# export ARCHFLAGS="-arch x86_64" # export ARCHFLAGS="-arch x86_64"
# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# 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 -)"
# Command aliases # Command aliases
alias py=python3 alias py=python3
alias pip=pip3
alias ll="ls -lah" alias ll="ls -lah"
# Custom scripts qrshow(){
export PATH="/Users/paul/Code/scripts:$PATH" qrencode $1 -o - | viu -
}
# Shortcuts # 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 sshconfig="$EDITOR ~/.ssh/config"
alias zshconfig="$EDITOR ~/.zshrc" alias zshconfig="$EDITOR ~/.zshrc"
alias zshreload="source ~/.zshrc" alias zshreload="source ~/.zshrc"
alias zshsource="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 kw='echo Current Week: $((10#$(date +"%V")))'
alias wol=wakeonlan alias wol=wakeonlan
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 csv="csvlens"
alias ccopilot="cd ~/code/copilot && copilot"
alias hx="helix"
alias R="R --no-save"
export GOPATH="$HOME/.local/share/go"
export GOBIN="$HOME/.local/bin"
# Python tkinter stuff # Python tkinter stuff
export PATH="/usr/local/opt/tcl-tk/bin:$PATH" export PATH="/usr/local/opt/tcl-tk/bin:$PATH"
@@ -131,30 +78,53 @@ export PATH="/usr/local/opt/tcl-tk/bin:$PATH"
# autojump # autojump
[ -f /opt/homebrew/etc/profile.d/autojump.sh ] && . /opt/homebrew/etc/profile.d/autojump.sh [ -f /opt/homebrew/etc/profile.d/autojump.sh ] && . /opt/homebrew/etc/profile.d/autojump.sh
# spicetify # ws shortcuts
alias sba="spicetify backup apply" 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"
alias wsrecupdb="psql -h ep-icy-dew-aggbrr4l-pooler.c-2.eu-central-1.aws.neon.tech -d neondb -U neondb_owner"
alias wsrecupdevdb="psql -h ep-broad-base-ag8vy0hl-pooler.c-2.eu-central-1.aws.neon.tech -d neondb -U neondb_owner"
# bitwarden-cli # Fix ls colors for synology directories
alias bw='NODE_OPTIONS="--no-deprecation" bw' LS_COLORS+=':ow=01;33'
# connect to smb shares # Fix colors for ssh sessions
alias mount-ds='[ -e "/Volumes/pauls-dateien" ] || open "smb://paul@192.168.193.68/pauls-dateien"' TERM=xterm-256color
# 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
# history # history
HISTFILE=~/.histfile HISTFILE=~/.histfile
HISTSIZE=10000 HISTSIZE=10000
SAVEHIST=10000 SAVEHIST=10000
# zoxide export XDG_DATA_DIRS="$HOME/.local/share:$XDG_DATA_DIRS"
# 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
# zoxided
eval "$(zoxide init --cmd cd zsh)" eval "$(zoxide init --cmd cd zsh)"
# SDKMAN & Java # SDKMAN & Java
export SDKMAN_DIR="$HOME/.sdkman" export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh" [[ -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"
#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"
},
]

24
makepkg.conf Normal file
View File

@@ -0,0 +1,24 @@
#!/hint/bash
# shellcheck disable=2034
#########################################################################
# GLOBAL PACKAGE OPTIONS
# These are default values for the options=() settings
#########################################################################
#
# Makepkg defaults:
# OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug !lto !autodeps)
# A negated option will do the opposite of the comments below.
#
#-- strip: Strip symbols from binaries/libraries
#-- docs: Save doc directories specified by DOC_DIRS
#-- libtool: Leave libtool (.la) files in packages
#-- staticlibs: Leave static library (.a) files in packages
#-- emptydirs: Leave empty directories in packages
#-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip
#-- purge: Remove files specified by PURGE_TARGETS
#-- debug: Add debugging flags as specified in DEBUG_* variables
#-- lto: Add compile flags for building with link time optimization
#-- autodeps: Automatically add depends/provides
#
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug lto)