commit a50a16e10e886d29377d51a4f13ad5fa5c403b03 Author: Stachelbeere1248 Date: Sun Jul 13 18:35:30 2025 +0200 initial commit diff --git a/.alias b/.alias new file mode 100644 index 0000000..599b046 --- /dev/null +++ b/.alias @@ -0,0 +1 @@ +alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME' diff --git a/.config/foot/foot.ini b/.config/foot/foot.ini new file mode 100755 index 0000000..339dab9 --- /dev/null +++ b/.config/foot/foot.ini @@ -0,0 +1,261 @@ +# -*- conf -*- + +# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd) +# term=foot (or xterm-256color if built with -Dterminfo=disabled) +# login-shell=no + +# app-id=foot # globally set wayland app-id. Default values are "foot" and "footclient" for desktop and server mode +# title=foot +# locked-title=no + + font=monospace:size=12 +# font-bold= +# font-italic= +# font-bold-italic= +# font-size-adjustment=0.5 +# line-height= +# letter-spacing=0 +# horizontal-letter-offset=0 +# vertical-letter-offset=0 +# underline-offset= +# underline-thickness= +# strikeout-thickness= +# box-drawings-uses-font-glyphs=no +# dpi-aware=no + +# initial-window-size-pixels=700x500 # Or, +# initial-window-size-chars= +# initial-window-mode=windowed +# pad=0x0 # optionally append 'center' +# resize-by-cells=yes +# resize-keep-grid=yes +# resize-delay-ms=100 + +# bold-text-in-bright=no +# word-delimiters=,│`|:"'()[]{}<> +# selection-target=primary +# workers= +# utmp-helper=/usr/lib/utempter/utempter # When utmp backend is ‘libutempter’ (Linux) +# utmp-helper=/usr/libexec/ulog-helper # When utmp backend is ‘ulog’ (FreeBSD) + +[environment] +# name=value + +[bell] +# urgent=no +# notify=no +# visual=no +# command= +# command-focused=no + +[desktop-notifications] +# command=notify-send --wait --app-name ${app-id} --icon ${app-id} --category ${category} --urgency ${urgency} --expire-time ${expire-time} --hint STRING:image-path:${icon} --hint BOOLEAN:suppress-sound:${muted} --hint STRING:sound-name:${sound-name} --replace-id ${replace-id} ${action-argument} --print-id -- ${title} ${body} +# command-action-argument=--action ${action-name}=${action-label} +# close="" +# inhibit-when-focused=yes + + +[scrollback] +# lines=1000 +# multiplier=3.0 +# indicator-position=relative +# indicator-format="" + +[url] +# launch=xdg-open ${url} +# label-letters=sadfjklewcmpgh +# osc8-underline=url-mode +# protocols=http, https, ftp, ftps, file, gemini, gopher +# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[] + +[cursor] + style=beam +# color= + blink=yes +# blink-rate=500 +# beam-thickness=1.5 +# underline-thickness= + +[mouse] +# hide-when-typing=no +# alternate-scroll-mode=yes + +[touch] +# long-press-delay=400 + +[colors] + alpha=0.8 + background=000000 +# foreground=ffffff +# flash=7f7f00 +# flash-alpha=0.5 + +## Normal/regular colors (color palette 0-7) +regular0=0E2221 # black +regular1=B33A25 # red +regular2=176815 # green +regular3=CEBE16 # yellow +regular4=3A6BA9 # blue +regular5=7C63C5 # magenta +regular6=1FB9A9 # cyan +regular7=C6C6B5 # white + +## Bright colors (color palette 8-15) +bright0=214C43 # bright black +bright1=DA651D # bright red +bright2=8FC711 # bright green +bright3=FCFC56 # bright yellow +bright4=4590D0 # bright blue +bright5=C28DC6 # bright magenta +bright6=7DCAC9 # bright cyan +bright7=DEDEDD # bright white + +## dimmed colors (see foot.ini(5) man page) +#dim0=0E2221 # black +#dim1=B33A25 # red +#dim2=176815 # green +#dim3=CEBE16 # yellow +#dim4=3A6BA9 # blue +#dim5=7C63C5 # magenta +#dim6=1FB9A9 # cyan +#dim7=C6C6B5 # white + +## The remaining 256-color palette +# 16 = <256-color palette #16> +# ... +# 255 = <256-color palette #255> + +## Sixel colors +# sixel0 = 000000 +# sixel1 = 3333cc +# sixel2 = cc2121 +# sixel3 = 33cc33 +# sixel4 = cc33cc +# sixel5 = 33cccc +# sixel6 = cccc33 +# sixel7 = 878787 +# sixel8 = 424242 +# sixel9 = 545499 +# sixel10 = 994242 +# sixel11 = 549954 +# sixel12 = 995499 +# sixel13 = 549999 +# sixel14 = 999954 +# sixel15 = cccccc + +## Misc colors +# selection-foreground= +# selection-background= +# jump-labels= # black-on-yellow +# scrollback-indicator= # black-on-bright-blue +# search-box-no-match= # black-on-red +# search-box-match= # black-on-yellow +# urls= + +[csd] +# preferred=server +# size=26 +# font= +# color= +# hide-when-maximized=no +# double-click-to-maximize=yes +# border-width=0 +# border-color= +# button-width=26 +# button-color= +# button-minimize-color= +# button-maximize-color= +# button-close-color= + +[key-bindings] +# scrollback-up-page=Shift+Page_Up +# scrollback-up-half-page=none +# scrollback-up-line=none +# scrollback-down-page=Shift+Page_Down +# scrollback-down-half-page=none +# scrollback-down-line=none +# scrollback-home=none +# scrollback-end=none +# clipboard-copy=Control+Shift+c XF86Copy +# clipboard-paste=Control+Shift+v XF86Paste +# primary-paste=Shift+Insert +# search-start=Control+Shift+r +# font-increase=Control+plus Control+equal Control+KP_Add +# font-decrease=Control+minus Control+KP_Subtract +# font-reset=Control+0 Control+KP_0 +# spawn-terminal=Control+Shift+n +# minimize=none +# maximize=none +# fullscreen=none +# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none +# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none +# pipe-selected=[xargs -r firefox] none +# pipe-command-output=[wl-copy] none # Copy last command's output to the clipboard +# show-urls-launch=Control+Shift+o +# show-urls-copy=none +# show-urls-persistent=none +# prompt-prev=Control+Shift+z +# prompt-next=Control+Shift+x +# unicode-input=Control+Shift+u +# noop=none + +[search-bindings] +# cancel=Control+g Control+c Escape +# commit=Return +# find-prev=Control+r +# find-next=Control+s +# cursor-left=Left Control+b +# cursor-left-word=Control+Left Mod1+b +# cursor-right=Right Control+f +# cursor-right-word=Control+Right Mod1+f +# cursor-home=Home Control+a +# cursor-end=End Control+e +# delete-prev=BackSpace +# delete-prev-word=Mod1+BackSpace Control+BackSpace +# delete-next=Delete +# delete-next-word=Mod1+d Control+Delete +# extend-char=Shift+Right +# extend-to-word-boundary=Control+w Control+Shift+Right +# extend-to-next-whitespace=Control+Shift+w +# extend-line-down=Shift+Down +# extend-backward-char=Shift+Left +# extend-backward-to-word-boundary=Control+Shift+Left +# extend-backward-to-next-whitespace=none +# extend-line-up=Shift+Up +# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste +# primary-paste=Shift+Insert +# unicode-input=none +# quit=none +# scrollback-up-page=Shift+Page_Up +# scrollback-up-half-page=none +# scrollback-up-line=none +# scrollback-down-page=Shift+Page_Down +# scrollback-down-half-page=none +# scrollback-down-line=none +# scrollback-home=none +# scrollback-end=none + +[url-bindings] +# cancel=Control+g Control+c Control+d Escape +# toggle-url-visible=t + +[text-bindings] +# \x03=Mod4+c # Map Super+c -> Ctrl+c + +[mouse-bindings] +# scrollback-up-mouse=BTN_WHEEL_BACK +# scrollback-down-mouse=BTN_WHEEL_FORWARD +# font-increase=Control+BTN_WHEEL_BACK +# font-decrease=Control+BTN_WHEEL_FORWARD +# selection-override-modifiers=Shift +# primary-paste=BTN_MIDDLE +# select-begin=BTN_LEFT +# select-begin-block=Control+BTN_LEFT +# select-extend=BTN_RIGHT +# select-extend-character-wise=Control+BTN_RIGHT +# select-word=BTN_LEFT-2 +# select-word-whitespace=Control+BTN_LEFT-2 +# select-quote = BTN_LEFT-3 +# select-row=BTN_LEFT-4 + +# vim: ft=dosini diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100755 index 0000000..5d35b39 --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1,2 @@ +require("config.lazy") +require("stachel") diff --git a/.config/nvim/init.vim.bak b/.config/nvim/init.vim.bak new file mode 100755 index 0000000..2f94316 --- /dev/null +++ b/.config/nvim/init.vim.bak @@ -0,0 +1,40 @@ +call plug#begin() + +" List your plugins here +Plug 'projekt0n/github-nvim-theme' +Plug 'neovim/nvim-lspconfig' + +call plug#end() + +colorscheme github_dark +highlight Normal guibg=none ctermbg=none +highlight NonText guibg=none ctermbg=none +highlight NormalNC guibg=none ctermbg=none + +lua << EOF +require('lspconfig').rust_analyzer.setup({ + cmd = { "/usr/bin/rust-analyzer" }, + on_attach = function(client, bufnr) + -- Enable completion triggered by + vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + + -- Key mappings + local opts = { noremap = true, silent = true } + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', 'lua vim.lsp.buf.definition()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', 'lua vim.lsp.buf.hover()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'rn', 'lua vim.lsp.buf.rename()', opts) + vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', 'lua vim.lsp.buf.references()', opts) + end, + + settings = { + ["rust-analyzer"] = { + cargo = { + allFeatures = true, + }, + procMacro = { + enable = true, + }, + }, + }, +}) +EOF diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua new file mode 100755 index 0000000..f5ee74c --- /dev/null +++ b/.config/nvim/lua/config/lazy.lua @@ -0,0 +1,35 @@ +-- Bootstrap lazy.nvim +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +-- Make sure to setup `mapleader` and `maplocalleader` before +-- loading lazy.nvim so that mappings are correct. +-- This is also a good place to setup other settings (vim.opt) +vim.g.mapleader = " " +vim.g.maplocalleader = "\\" + +-- Setup lazy.nvim +require("lazy").setup({ + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, +}) diff --git a/.config/nvim/lua/plugins/init.lua b/.config/nvim/lua/plugins/init.lua new file mode 100755 index 0000000..d12936f --- /dev/null +++ b/.config/nvim/lua/plugins/init.lua @@ -0,0 +1,13 @@ +return { + "projekt0n/github-nvim-theme", + "neovim/nvim-lspconfig", + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + "hrsh7th/cmp-cmdline", + "hrsh7th/nvim-cmp", + "hrsh7th/cmp-vsnip", + "hrsh7th/vim-vsnip", + "lervag/vimtex", + "andweeb/presence.nvim", +} diff --git a/.config/nvim/lua/stachel/colorscheme.lua b/.config/nvim/lua/stachel/colorscheme.lua new file mode 100755 index 0000000..7e41c28 --- /dev/null +++ b/.config/nvim/lua/stachel/colorscheme.lua @@ -0,0 +1,85 @@ +vim.cmd('hi Normal guibg=NONE ctermbg=NONE') +vim.cmd('hi NonText guibg=NONE ctermbg=NONE') +vim.cmd('hi SignColumn guibg=NONE ctermbg=NONE') +vim.cmd('hi VertSplit guibg=NONE ctermbg=NONE') +vim.cmd('hi StatusLine guibg=NONE ctermbg=NONE') +vim.cmd('hi StatusLineNC guibg=NONE ctermbg=NONE') + +-- Terminal colors +local Colors = { + black = { cterm=0, hex=0x0E2221 }, + red = { cterm=1, hex=0xB33A25 }, + green = { cterm=2, hex=0x176815 }, + yellow = { cterm=3, hex=0xCEBE16 }, + blue = { cterm=4, hex=0x3A6BA9 }, + magenta = { cterm=5, hex=0x7C63C5 }, + cyan = { cterm=6, hex=0x1FB9A9 }, + white = { cterm=7, hex=0xC6C6B5 }, + + bright_black = { cterm=8, hex=0x214C43 }, + bright_red = { cterm=9, hex=0xDA651D }, + bright_green = { cterm=10, hex=0x8FC711 }, + bright_yellow = { cterm=11, hex=0xFCFC56 }, + bright_blue = { cterm=12, hex=0x4590D0 }, + bright_magenta = { cterm=13, hex=0xC28DC6 }, + bright_cyan = { cterm=14, hex=0x7DCAC9 }, + bright_white = { cterm=15, hex=0xDEDEDD }, +} + +local Highlights = { + ["Type"] = Colors.bright_red, + ["Function"] = Colors.blue, + ["Variable"] = Colors.white, + ["Keyword"] = Colors.red, + ["String"] = Colors.bright_cyan, + ["Comment"] = Colors.bright_black, + ["Constant"] = Colors.green, + ["Operator"] = Colors.bright_green, + ["Parameter"] = Colors.yellow, + ["Property"] = Colors.yellow, + ["Identifier"] = Colors.yellow, + + ["@attribute"] = Colors.red, + ["@comment"] = Colors.bright_black, + ["@comment.error"] = Colors.red, + ["@comment.note"] = Colors.blue, + ["@comment.todo"] = Colors.bright_yellow, + ["@comment.warning"] = Colors.bright_red, + ["@function.method"] = Colors.bright_blue, + ["@label"] = Colors.bright_yellow, + ["@exception"] = Colors.blue, + ["@reference"] = Colors.cyan, + + ["@lsp.type.type"] = Colors.bright_red, + ["@lsp.type.decorator"] = Colors.red, + ["@lsp.type.enumMember"] = Colors.bright_yellow, + ["@lsp.type.event"] = Colors.green, + ["@lsp.type.interface"] = Colors.green, + ["@lsp.type.macro"] = Colors.magenta, + ["@lsp.type.modifier"] = Colors.red, + ["@lsp.type.namespace"] = Colors.cyan, + ["@lsp.type.regexp"] = Colors.bright_cyan, + ["@lsp.type.typeParameter"] = Colors.green, + + -- Other + ["TermCursor"] = Colors.white, + ["TermCursorNC"] = Colors.bright_white, + ["TermNormal"] = Colors.bright_black, + ["TermCursorLine"] = Colors.bright_black, + + ["GitSignsAdd"] = Colors.green, + ["GitSignsDelete"] = Colors.red, + ["GitSignsChange"] = Colors.yellow, + ["@diff.delta"] = Colors.green, + ["@diff.minus"] = Colors.red, + ["@diff.plus"] = Colors.green, + + ["DiagnosticError"] = Colors.red, + ["DiagnosticWarn"] = Colors.yellow, + ["DiagnosticInfo"] = Colors.cyan, + ["DiagnosticHint"] = Colors.bright_cyan, +} + +for group, color in pairs(Highlights) do + vim.cmd(string.format("highlight %s ctermfg=%d ctermbg=NONE guifg=#%06X guibg=NONE", group, color.cterm, color.hex)) +end diff --git a/.config/nvim/lua/stachel/completion.lua b/.config/nvim/lua/stachel/completion.lua new file mode 100755 index 0000000..58b589a --- /dev/null +++ b/.config/nvim/lua/stachel/completion.lua @@ -0,0 +1,43 @@ +local cmp = require("cmp") + +cmp.setup({ + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + end, + }, + mapping = { + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + else + fallback() -- Insert a tab character if no menu is visible + end + end, { 'i' }), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + else + fallback() -- Reverse tab character if no menu is visible + end + end, { 'i' }), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.confirm({ select = true }) -- Confirm the selected item + else + fallback() -- Insert a newline if no menu is visible + end + end, { 'i' }), + }, + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'vsnip' }, + }, { + { name = 'buffer' }, + { name = 'path' }, + }) +}) diff --git a/.config/nvim/lua/stachel/init.lua b/.config/nvim/lua/stachel/init.lua new file mode 100755 index 0000000..21451e2 --- /dev/null +++ b/.config/nvim/lua/stachel/init.lua @@ -0,0 +1,11 @@ +require("stachel.colorscheme") +require("stachel.lspconfig") +require("stachel.remap") +require("stachel.completion") +require("stachel.latex") +require("stachel.presence") + +vim.opt.tabstop = 2 -- Number of spaces that a counts for +vim.opt.shiftwidth = 2 -- Number of spaces to use for each step of autoindent +vim.opt.expandtab = true -- Convert tabs to spaces +vim.o.splitright = true diff --git a/.config/nvim/lua/stachel/latex.lua b/.config/nvim/lua/stachel/latex.lua new file mode 100755 index 0000000..39cabba --- /dev/null +++ b/.config/nvim/lua/stachel/latex.lua @@ -0,0 +1,3 @@ +vim.g.vimtex_view_method = "mupdf" -- Use Zathura as PDF viewer +vim.g.vimtex_compiler_method = "latexmk" -- Use latexmk for automatic compilation +vim.g.vimtex_quickfix_mode = 0 -- Disable quickfix window by default diff --git a/.config/nvim/lua/stachel/lspconfig.lua b/.config/nvim/lua/stachel/lspconfig.lua new file mode 100755 index 0000000..edfe322 --- /dev/null +++ b/.config/nvim/lua/stachel/lspconfig.lua @@ -0,0 +1,99 @@ +local lspconfig = require("lspconfig") + +vim.diagnostic.config({ + virtual_text = { + prefix = '', + spacing = 2, + }, + signs = true, + underline = true, + update_in_insert = false, + severity_sort = true, +}) + +lspconfig.rust_analyzer.setup({ + settings = { + ["rust-analyzer"] = { + cargo = { + buildScripts = { + enable = true + } + }, + procMacro = { + enable = true + }, + checkOnSave = true, + } + } +}) + +lspconfig.clangd.setup { + cmd = { "clangd" }, + filetypes = { "c", "cpp", "objc", "objcpp"}, + root_dir = lspconfig.util.root_pattern("compile_commands.json", ".git", "Makefile"), +} + +lspconfig.tinymist.setup { + settings = { + formatterMode = "typstyle", + exportPdf = "onSave", + semanticTokens = "enable" + } +} + +lspconfig.jdtls.setup { + cmd = {'jdtls'}, + filetypes = { "java" } +} + +lspconfig.kotlin_language_server.setup { + cmd = {'/opt/kotlin-language-server/bin/kotlin-language-server'}, +} + +lspconfig.bashls.setup({ + filetypes = { "sh", "bash", "zsh", "yash" }, +}) + +lspconfig.lua_ls.setup { + settings = { + Lua = { + diagnostics = { + globals = { "vim" }, -- Recognize `vim` as a global + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), -- Make LSP aware of runtime files + checkThirdParty = false, + }, + telemetry = { + enable = false, + }, + }, + }, +} + +lspconfig.pylsp.setup { + cmd = { "pylsp" }, + settings = { + pylsp = { + plugins = { + pycodestyle = { enabled = false }, -- Use ruff instead + mccabe = { enabled = false }, + pyflakes = { enabled = false }, + pylint = { enabled = false }, + mypy = { enabled = true }, + black = { enabled = true }, + ruff = { enabled = true }, + rope_autoimport = { enabled = true }, + }, + }, + }, +} + +lspconfig.csharp_ls.setup{ + cmd = { "csharp-ls" }, + filetypes = { "cs", "cshtml", "razor" }, + root_dir = function () + -- Manually treat any directory as the root for a single .cs file + return vim.fn.getcwd() -- Uses the current working directory + end, +} diff --git a/.config/nvim/lua/stachel/presence.lua b/.config/nvim/lua/stachel/presence.lua new file mode 100755 index 0000000..8f04e43 --- /dev/null +++ b/.config/nvim/lua/stachel/presence.lua @@ -0,0 +1,15 @@ +require("presence").setup({ + auto_update = true, + neovim_image_text = "nvim", -- Text displayed when using Neovim + main_image = "neovim", -- Can be "neovim" or "file" + client_id = "793271441293967371", -- Default Neovim Client ID + enable_line_number = false, -- Show line numbers in status + editing_text = "Editing", + file_explorer_text = "Browsing files", + git_commit_text = "Committing changes", + plugin_manager_text = "Managing plugins", + reading_text = "Reading", + workspace_text = "Working on project", --%s + line_number_text = "Line %s/%s", +}) + diff --git a/.config/nvim/lua/stachel/remap.lua b/.config/nvim/lua/stachel/remap.lua new file mode 100755 index 0000000..ece7398 --- /dev/null +++ b/.config/nvim/lua/stachel/remap.lua @@ -0,0 +1,12 @@ +vim.g.mapleader = " " +vim.keymap.set("n", "eq", vim.cmd.Ex) +vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) +vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts) +vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts) +vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) +vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) +vim.keymap.set("n", "", vim.lsp.buf.signature_help, opts) +vim.keymap.set("i", "", vim.lsp.buf.completion, context) +vim.keymap.set("n", "rn", vim.lsp.buf.rename, { desc = "Rename symbol" }) +vim.keymap.set('n', 'fe', ':!zathura --fork %:r.pdf', { noremap = true, silent = true }) +-- vim.keymap.set("") diff --git a/.config/rc/rc.conf b/.config/rc/rc.conf new file mode 100644 index 0000000..25ffa8d --- /dev/null +++ b/.config/rc/rc.conf @@ -0,0 +1 @@ +rc_env_allow="WAYLAND_DISPLAY" diff --git a/.config/rc/runlevels/gui/pipewire b/.config/rc/runlevels/gui/pipewire new file mode 120000 index 0000000..1eeaabd --- /dev/null +++ b/.config/rc/runlevels/gui/pipewire @@ -0,0 +1 @@ +/etc/user/init.d/pipewire \ No newline at end of file diff --git a/.config/rc/runlevels/gui/pipewire-pulse b/.config/rc/runlevels/gui/pipewire-pulse new file mode 120000 index 0000000..516d346 --- /dev/null +++ b/.config/rc/runlevels/gui/pipewire-pulse @@ -0,0 +1 @@ +/etc/user/init.d/pipewire-pulse \ No newline at end of file diff --git a/.config/rc/runlevels/gui/wireplumber b/.config/rc/runlevels/gui/wireplumber new file mode 120000 index 0000000..a90f273 --- /dev/null +++ b/.config/rc/runlevels/gui/wireplumber @@ -0,0 +1 @@ +/etc/user/init.d/wireplumber \ No newline at end of file diff --git a/.config/rc/runlevels/gui/xdg-desktop-portal b/.config/rc/runlevels/gui/xdg-desktop-portal new file mode 120000 index 0000000..41f6dd2 --- /dev/null +++ b/.config/rc/runlevels/gui/xdg-desktop-portal @@ -0,0 +1 @@ +/etc/user/init.d/xdg-desktop-portal \ No newline at end of file diff --git a/.config/rc/runlevels/gui/xdg-desktop-portal-wlr b/.config/rc/runlevels/gui/xdg-desktop-portal-wlr new file mode 120000 index 0000000..2babae2 --- /dev/null +++ b/.config/rc/runlevels/gui/xdg-desktop-portal-wlr @@ -0,0 +1 @@ +/etc/user/init.d/xdg-desktop-portal-wlr \ No newline at end of file diff --git a/.config/river/init b/.config/river/init new file mode 100755 index 0000000..3e9ca7b --- /dev/null +++ b/.config/river/init @@ -0,0 +1,166 @@ +#!/bin/sh + +# This is the example configuration file for river. +# +# If you wish to edit this, you will probably want to copy it to +# $XDG_CONFIG_HOME/river/init or $HOME/.config/river/init first. +# +# See the river(1), riverctl(1), and rivertile(1) man pages for complete +# documentation. + +# Note: the "Super" modifier is also known as Logo, GUI, Windows, Mod4, etc. + +# Super+Shift+Return to start an instance of foot (https://codeberg.org/dnkl/foot) +riverctl map normal Super Return spawn foot +riverctl map normal None XF86Back spawn : + +# Super+Q to close the focused view +riverctl map normal Super+Shift Q close + +# Super+Shift+E to exit river +riverctl map normal Super+Shift E exit + +# Super+J and Super+K to focus the next/previous view in the layout stack +riverctl map normal Super J focus-view next +riverctl map normal Super K focus-view previous + +# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous +# view in the layout stack +riverctl map normal Super+Shift J swap next +riverctl map normal Super+Shift K swap previous + +# Super+Period and Super+Comma to focus the next/previous output +riverctl map normal Super Period focus-output next +riverctl map normal Super Comma focus-output previous + +# Super+Shift+{Period,Comma} to send the focused view to the next/previous output +riverctl map normal Super+Shift Period send-to-output next +riverctl map normal Super+Shift Comma send-to-output previous + +# Super+Return to bump the focused view to the top of the layout stack +riverctl map normal Super+Shift Return zoom + +# Super+H and Super+L to decrease/increase the main ratio of rivertile(1) +riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05" +riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05" + +# Super+Shift+H and Super+Shift+L to increment/decrement the main count of rivertile(1) +riverctl map normal Super+Shift H send-layout-cmd rivertile "main-count +1" +riverctl map normal Super+Shift L send-layout-cmd rivertile "main-count -1" + +# Super+Alt+{H,J,K,L} to move views +riverctl map normal Super+Alt H move left 100 +riverctl map normal Super+Alt J move down 100 +riverctl map normal Super+Alt K move up 100 +riverctl map normal Super+Alt L move right 100 + +# Super+Alt+Control+{H,J,K,L} to snap views to screen edges +riverctl map normal Super+Alt+Control H snap left +riverctl map normal Super+Alt+Control J snap down +riverctl map normal Super+Alt+Control K snap up +riverctl map normal Super+Alt+Control L snap right + +# Super+Alt+Shift+{H,J,K,L} to resize views +riverctl map normal Super+Alt+Shift H resize horizontal -100 +riverctl map normal Super+Alt+Shift J resize vertical 100 +riverctl map normal Super+Alt+Shift K resize vertical -100 +riverctl map normal Super+Alt+Shift L resize horizontal 100 + +riverctl map-pointer normal Super BTN_LEFT move-view +riverctl map-pointer normal Super BTN_RIGHT resize-view +riverctl map-pointer normal Super BTN_MIDDLE toggle-float + +riverctl map normal Super S spawn wl-ss +riverctl map normal Super+Shift S spawn wl-fullss + +for i in $(seq 1 9) +do + tags=$((1 << ($i - 1))) + + # Super+[1-9] to focus tag [0-8] + riverctl map normal Super $i set-focused-tags $tags + + # Super+Shift+[1-9] to tag focused view with tag [0-8] + riverctl map normal Super+Shift $i set-view-tags $tags + + # Super+Control+[1-9] to toggle focus of tag [0-8] + riverctl map normal Super+Control $i toggle-focused-tags $tags + + # Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view + riverctl map normal Super+Shift+Control $i toggle-view-tags $tags +done + +# Super+0 to focus all tags +# Super+Shift+0 to tag focused view with all tags +all_tags=$(((1 << 32) - 1)) +riverctl map normal Super 0 set-focused-tags $all_tags +riverctl map normal Super+Shift 0 set-view-tags $all_tags + +# Super+Space to toggle float +riverctl map normal Super Space toggle-float + +# Super+F to toggle fullscreen +riverctl map normal Super F toggle-fullscreen + +# Super+{Up,Right,Down,Left} to change layout orientation +riverctl map normal Super Up send-layout-cmd rivertile "main-location top" +riverctl map normal Super Right send-layout-cmd rivertile "main-location right" +riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom" +riverctl map normal Super Left send-layout-cmd rivertile "main-location left" + +# Declare a passthrough mode. This mode has only a single mapping to return to +# normal mode. This makes it useful for testing a nested wayland compositor +riverctl declare-mode passthrough + +# Super+F11 to enter passthrough mode +riverctl map normal Super F11 enter-mode passthrough + +# Super+F11 to return to normal mode +riverctl map passthrough Super F11 enter-mode normal + +# Various media key mapping examples for both normal and locked mode which do +# not have a modifier +for mode in normal locked+Shift +do + # Eject the optical drive (well if you still have one that is) + riverctl map $mode None XF86Eject spawn 'eject -T' + + # Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer) + riverctl map $mode None XF86AudioRaiseVolume spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+' + riverctl map $mode None XF86AudioLowerVolume spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-' + riverctl map $mode None XF86AudioMute spawn 'wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle' + + # Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl) + riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause' + riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause' + riverctl map $mode None XF86AudioPrev spawn 'playerctl previous' + riverctl map $mode None XF86AudioNext spawn 'playerctl next' + + # Control screen backlight brightness with brightnessctl (https://github.com/Hummer12007/brightnessctl) + riverctl map $mode None XF86MonBrightnessUp spawn 'brightnessctl set +5%' + riverctl map $mode None XF86MonBrightnessDown spawn 'brightnessctl set 5%-' +done + +# Set background and border color +riverctl border-color-focused 0x93a1a1 +riverctl border-color-unfocused 0x586e75 +riverctl spawn "swaybg -i '$HOME/.desktop/wallpaper'" + +# Set keyboard repeat rate +riverctl set-repeat 50 300 +riverctl input pointer-7805-11400-ROCCAT_ROCCAT_Kone_Pro accel-profile flat +riverctl input pointer-7805-11400-ROCCAT_ROCCAT_Kone_Pro pointer-accel -0.75 +riverctl keyboard-layout -variant nodeadkeys de + +# Make all views with an app-id that starts with "float" and title "foo" start floating. +riverctl rule-add -app-id 'float*' -title 'foo' float + +# Make all views with app-id "bar" and any title use client-side decorations +riverctl rule-add -app-id "bar" csd + +# Set the default layout generator to be rivertile and start it. +# River will send the process group of the init executable SIGTERM on exit. +riverctl default-layout rivertile +openrc --user gui & +dbus-update-activation-environment WAYLAND_DISPLAY DISPLAY XDG_CURRENT_DESKTOP=river XDG_SESSION_DESKTOP XDG_SESSION_TYPE +rivertile -view-padding 0 -outer-padding 0 & diff --git a/.config/yash/profile b/.config/yash/profile new file mode 100755 index 0000000..ca6dcbf --- /dev/null +++ b/.config/yash/profile @@ -0,0 +1,29 @@ +export EDITOR=nvim +export LANG=en_US.UTF-8 +export MANPAGER="nvim +Man!" +export PAGER="less" +export HOME=/home/stachel +export XDG_CONFIG_HOME="$HOME/.config" +export XDG_CACHE_HOME="$HOME/.cache" +export XDG_DATA_HOME="$HOME/.local/share" +export XDG_STATE_HOME="$HOME/.local/state" +export PATH="$HOME/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" + +if [ -f ~/.config/user-dirs.dirs ]; then + while IFS='=' read -r key value; do + key=${key//[$'\t\r\n']} # Remove whitespace + value=${value//\"/} # Remove quotes + value=${value//\$HOME/~} # Expand $HOME + export "$key=$value" + done < ~/.config/user-dirs.dirs +fi + +#if [ -z "$XDG_RUNTIME_DIR" ]; then +# XDG_RUNTIME_DIR="/tmp/$(id -u)-runtime-dir" +# mkdir -pm 0700 "$XDG_RUNTIME_DIR" +# export XDG_RUNTIME_DIR +#fi + +if [ -z "$SSH_AUTH_SOCK" ]; then + eval "$(ssh-agent -s)" +fi diff --git a/.config/yash/rc b/.config/yash/rc new file mode 100755 index 0000000..7488680 --- /dev/null +++ b/.config/yash/rc @@ -0,0 +1,301 @@ +set --extended-glob +set --no-clobber +set --no-unset + +. "$HOME/.alias" + +if command --identify --builtin-command history >/dev/null; then + + # don't save commands starting with a space in history + set --hist-space + + # prevent clearing history by accident + history() + if [ -t 0 ] && ( + for arg do + case "${arg}" in + (-[drsw]?* | --*=*) ;; + (-*c*) exit;; + esac + done + false + ) then + printf 'history: seems you are trying to clear the whole history.\n' >&2 + printf 'are you sure? (yes/no) ' >&2 + case "$(head -n 1)" in + ([Yy]*) command history "$@";; + (*) printf 'history: cancelled.\n' >&2;; + esac + else + command history "$@" + fi + +fi + +cp() if [ -t 0 ]; then command cp -i "$@"; else command cp "$@"; fi +mv() if [ -t 0 ]; then command mv -i "$@"; else command mv "$@"; fi +rm() if [ -t 0 ]; then command rm -i "$@"; else command rm "$@"; fi + +# normally yash is more POSIX-compliant than /bin/sh :-) +sh() { yash --posix "$@"; } +yash() { command yash "$@"; } +# By re-defining 'yash' using the 'command' built-in, the 'jobs' built-in +# prints a command name that exposes the arguments like +# 'yash --posix -n foo.sh' rather than a command name that hides the +# arguments like 'yash --posix "${@}"'. This applies to the 'yash' command +# invoked via the 'sh' function. + +# ensure job control works as expected +case $- in (*m*) + trap - TSTP TTIN TTOU +esac + +# avoid removing existing crontab by accident +crontab() +if [ -t 0 ] && ( + for arg do + case "${arg}" in + (-*r*) exit;; + esac + done + false +) then + printf 'crontab: seems you are trying to clear your crontab.\n' >&2 + printf 'are you sure? (yes/no) ' >&2 + case "$(head -n 1)" in + ([Yy]*) command crontab "$@";; + (*) printf 'crontab: cancelled.\n' >&2;; + esac +else + command crontab "$@" +fi + +# an alias that opens a file +if command --identify xdg-open >/dev/null 2>&1; then + alias o='xdg-open' +elif command --identify cmd.exe wslpath >/dev/null 2>&1; then + alias o='open' + open() ( + target="$(wslpath -w "$1")" + cd /mnt/c # suppress UNC path warning + cmd.exe /c start "$target" + ) +elif command --identify cygstart >/dev/null 2>&1; then + alias o='cygstart' +elif [ "$(uname)" = Darwin ] 2>/dev/null; then + alias o='open' +fi + +# define some basic variables if missing +: ${PAGER:=less} ${EDITOR:=nvim} ${FCEDIT:=$EDITOR} +: ${LOGNAME:=$(logname)} ${HOSTNAME:=$(uname -n)} + +# disable confusing treatment of arguments in the echo command +: ${ECHO_STYLE:=RAW} + +# variables needed for command history + +if ! [ "${HISTFILE-}" ]; then + HISTFILE=${XDG_STATE_HOME:-~/.local/state}/yash/history +fi + +# create HISTFILE parent directory if missing +! [ -d "${HISTFILE%/*}" ] && mkdir -p "${HISTFILE%/*}" + +HISTSIZE=5000 + +# emulate bash's $SHLVL +if [ "${_old_shlvl+set}" != set ]; then + _old_shlvl=${SHLVL-} +fi +SHLVL=$((_old_shlvl+1)) 2>/dev/null || SHLVL=1 +export SHLVL + +# initialize event handlers +COMMAND_NOT_FOUND_HANDLER=() +PROMPT_COMMAND=() +POST_PROMPT_COMMAND=() +YASH_AFTER_CD=() + +# find escape sequence to change terminal window title +case "$TERM" in + (xterm|xterm[+-]*|gnome|gnome[+-]*|putty|putty[+-]*|cygwin) + _tsl='\033];' _fsl='\a' ;; + (*) + _tsl=$( (tput tsl 0; echo) 2>/dev/null | + sed -e 's;\\;\\\\;g' -e 's;;\\033;g' -e 's;;\\a;g' -e 's;%;%%;g') + _fsl=$( (tput fsl ; echo) 2>/dev/null | + sed -e 's;\\;\\\\;g' -e 's;;\\033;g' -e 's;;\\a;g' -e 's;%;%%;g') ;; +esac + +# if terminal window title can be changed... +if [ "$_tsl" ] && [ "$_fsl" ]; then + + # set terminal window title on each prompt + _set_term_title() + if [ -t 2 ]; then + printf "$_tsl"'%s@%s:%s'"$_fsl" "${LOGNAME}" "${HOSTNAME%%.*}" \ + "${${PWD:/$HOME/\~}/#$HOME\//\~\/}" >&2 + fi + PROMPT_COMMAND=("$PROMPT_COMMAND" '_set_term_title') + + # reset window title when changing host or user + ssh() { + if [ -t 2 ]; then printf "$_tsl"'ssh %s'"$_fsl" "$*" >&2; fi + command ssh "$@" + } + su() { + if [ -t 2 ]; then printf "$_tsl"'su %s'"$_fsl" "$*" >&2; fi + command su "$@" + } + sudo() { + if [ -t 2 ]; then printf "$_tsl"'sudo %s'"$_fsl" "$*" >&2; fi + command sudo "$@" + } + doas() { + if [ -t 2 ]; then printf "$_tsl"'doas %s'"$_fsl" "$*" >&2; fi + command doas "$@" + } + +fi + +# define function that updates $_vcs_info and $_vcs_root +_update_vcs_info() { + typeset type branch + { + read --raw-mode type + read --raw-mode _vcs_root + read --raw-mode branch + } <( + exec 2>/dev/null + typeset COMMAND_NOT_FOUND_HANDLER= + while true; do + if [ -e .git ] || [ . -ef "${GIT_WORK_TREE-}" ]; then + printf 'git\n%s\n' "${GIT_WORK_TREE:-$PWD}" + git branch --no-color | sed -n '/^\*/s/^..//p' + exit + elif [ -d .hg ]; then + printf 'hg\n%s\n' "$PWD" + exec cat .hg/branch + elif [ -d .svn ]; then + printf 'svn\n' + _vcs_root=$(svn info --show-item=wc-root) + printf '%s\n' "$_vcs_root" + path=$(svn info --show-item=relative-url) + case $path in + (*/branches/*) + printf '%s\n' "${${path#*/branches/}%%/*}" + esac + exit + fi + if [ / -ef . ] || [ . -ef .. ]; then + exit + fi + \command cd -P .. + done + ) + case "$type#$branch" in + (hg#default) _vcs_info='hg';; + (git#master) _vcs_info='git';; + (*# ) _vcs_info="$type";; + (* ) _vcs_info="$type@$branch";; + esac +} +# update $_vcs_info on each prompt +PROMPT_COMMAND=("$PROMPT_COMMAND" '_update_vcs_info') + +# Firstly, load the common customization script. +# If you don't like settings applied in this script, remove this line. +#. --autoload --no-alias initialization/common + +# These are additional aliases that are not defined in the common script. +# Uncomment to enable them. +alias ls='ls --color=auto' +alias gitlog='git log --graph --branches --oneline' +alias sc='shellcheck -s sh' + +# And add your own customization below. + + + +# Prompt: +if [ -n "${SSH_CONNECTION-}" ]; then + _hc='\fy.' # yellow hostname for SSH remote +else + _hc='\fg.' # green hostname for local +fi + +if [ "$(id -u)" -eq 0 ]; then + _uc='\fr.' # red username for root + _2c='\fr.' # red PS2 for root +else + _uc='\fy.' # same username color as hostname for non-root user + _2c= # PS2 in normal color for non-root user +fi +_dc='\fc.' + +YASH_PS1=$_uc'${LOGNAME}'$_hc'@${HOSTNAME%%.*}\fd. '$_dc'${PWD/#$HOME/\~} ${{?:/0/}:+\\fr.$?\\fd. }'$_uc'\$ ' +YASH_PS1R='\fm.${_vcs_info}' +YASH_PS1S='\fo.' +YASH_PS2=$_2c'> ' +#YASH_PS2R= +YASH_PS2S=$YASH_PS1S +YASH_PS4='\fm.+ ' +YASH_PS4S='\fmo.' +unset _hc _uc _2c _dc +# No escape sequences allowed in the POSIXly-correct mode. +PS1='${LOGNAME}@${HOSTNAME%%.*} '$PS1 + +_update_direnv() { + eval "$( + direnv export json | + jq -r 'to_entries | .[] | + if .value == null then + @sh "unset \(.key)" + else + @sh "export \(.key)=\(.value)" + end' + )" +} +_update_direnv +YASH_AFTER_CD=("$YASH_AFTER_CD" '_update_direnv') + +replace() { + [ "$#" -eq 0 ] && { printf 'Usage: replace [args...]\n' >&2; return 1; } + + # Get the tty device + TTY=$(tty) || { printf 'Failed to get tty\n' >&2; return 1; } + + # Ensure the script is running in an interactive terminal + case "$TTY" in + /dev/tty*|/dev/pts/*) ;; + *) printf 'Not running in a valid terminal\n' >&2; return 1 ;; + esac + + # Detach from the current terminal and execute the command + nohup "$@" "$TTY" 2>&1 & + disown + exit +} + +disowned() { + [ "$#" -eq 0 ] && { printf 'Usage: disowned [args...]\n' >&2; return 1; } + + # Get the tty device + TTY=$(tty) || { printf 'Failed to get tty\n' >&2; return 1; } + + # Ensure the script is running in an interactive terminal + case "$TTY" in + /dev/tty*|/dev/pts/*) ;; + *) printf 'Not running in a valid terminal\n' >&2; return 1 ;; + esac + + # Detach from the current terminal and execute the command + nohup "$@" "$TTY" 2>&1 & + disown +} + +alias foliate='replace foliate' +alias vpager="nvim -R -c 'setlocal nobackup noswapfile nowrap' -" +export LESS='-R --mouse --wheel-lines=3' +. "$HOME/.cargo/env" diff --git a/.desktop/wallpaper b/.desktop/wallpaper new file mode 120000 index 0000000..9e13b0e --- /dev/null +++ b/.desktop/wallpaper @@ -0,0 +1 @@ +wallpapers/323739.jpg \ No newline at end of file diff --git a/.desktop/wallpapers/323739.jpg b/.desktop/wallpapers/323739.jpg new file mode 100755 index 0000000..c349c34 Binary files /dev/null and b/.desktop/wallpapers/323739.jpg differ diff --git a/.desktop/wallpapers/664493-final.jpeg b/.desktop/wallpapers/664493-final.jpeg new file mode 100755 index 0000000..ed48699 Binary files /dev/null and b/.desktop/wallpapers/664493-final.jpeg differ diff --git a/.desktop/wallpapers/ai-galaxy.png b/.desktop/wallpapers/ai-galaxy.png new file mode 100755 index 0000000..2b2b198 Binary files /dev/null and b/.desktop/wallpapers/ai-galaxy.png differ diff --git a/.desktop/wallpapers/fantasy_sea_moon_art-wallpaper-3840x1080.jpg b/.desktop/wallpapers/fantasy_sea_moon_art-wallpaper-3840x1080.jpg new file mode 100755 index 0000000..48c14e1 Binary files /dev/null and b/.desktop/wallpapers/fantasy_sea_moon_art-wallpaper-3840x1080.jpg differ diff --git a/.desktop/wallpapers/galaxy.jpg b/.desktop/wallpapers/galaxy.jpg new file mode 100755 index 0000000..1cd8d35 Binary files /dev/null and b/.desktop/wallpapers/galaxy.jpg differ diff --git a/.desktop/wallpapers/river_forest_summer_sun-wallpaper-3840x1080.jpg b/.desktop/wallpapers/river_forest_summer_sun-wallpaper-3840x1080.jpg new file mode 100755 index 0000000..d720a95 Binary files /dev/null and b/.desktop/wallpapers/river_forest_summer_sun-wallpaper-3840x1080.jpg differ diff --git a/.desktop/wallpapers/sci-fi-city.png b/.desktop/wallpapers/sci-fi-city.png new file mode 100755 index 0000000..78f15ef Binary files /dev/null and b/.desktop/wallpapers/sci-fi-city.png differ diff --git a/.desktop/wallpapers/snowy_mountain_forest.jpg b/.desktop/wallpapers/snowy_mountain_forest.jpg new file mode 100755 index 0000000..802de00 Binary files /dev/null and b/.desktop/wallpapers/snowy_mountain_forest.jpg differ diff --git a/.local/bin/file-upload b/.local/bin/file-upload new file mode 100755 index 0000000..af0726e --- /dev/null +++ b/.local/bin/file-upload @@ -0,0 +1,34 @@ +#!/bin/sh +SERVER_IP="files.stachel.xyz" +SSH="contabo_filehost" +REMOTE_PATH="/var/www/filehost" + +if [ $# -eq 0 ]; then + echo "Usage: $0 " + exit 1 +fi +LOCAL_FILE="$1" +if [ ! -f "$LOCAL_FILE" ]; then + echo "Error: File '$LOCAL_FILE' does not exist." >& 2 + exit 1 +fi + +EXT="${LOCAL_FILE##*.}" +if echo "$LOCAL_FILE" | grep -q "\." && [ "$EXT" != "$LOCAL_FILE" ]; then + FILENAME="file-$(date +%Y%m%d%H%M%S).$EXT" +else + FILENAME="file-$(date +%Y%m%d%H%M%S)" +fi + +if ! scp "$LOCAL_FILE" "$SSH:$REMOTE_PATH/$FILENAME"; then + echo "Error: Failed to upload file." >& 2 + exit 1 +fi + +echo "Upload successful" + +FILE_URL="https://$SERVER_IP/$FILENAME" +echo "URL: $FILE_URL" + +printf "%s" "$FILE_URL" | wl-copy +echo "The URL has been copied to your clipboard." diff --git a/.local/bin/river b/.local/bin/river new file mode 100755 index 0000000..d752ba5 --- /dev/null +++ b/.local/bin/river @@ -0,0 +1,3 @@ +#!/bin/sh +touch $XDG_RUNTIME_DIR/openrc/softlevel +exec dbus-run-session -- /usr/bin/river diff --git a/.local/bin/wl-fullss b/.local/bin/wl-fullss new file mode 100755 index 0000000..92472ee --- /dev/null +++ b/.local/bin/wl-fullss @@ -0,0 +1,4 @@ +#!/bin/sh +XDG_PICTURES_DIR=/home/stachel/med/pic +grim -l 1 - | tee "$XDG_PICTURES_DIR/LATEST.png" "$XDG_PICTURES_DIR/$(date +%Y%m%d%H%M%S).png" +exec /usr/bin/wl-copy < "$XDG_PICTURES_DIR/LATEST.png" diff --git a/.local/bin/wl-ss b/.local/bin/wl-ss new file mode 100755 index 0000000..ccd7ca0 --- /dev/null +++ b/.local/bin/wl-ss @@ -0,0 +1,15 @@ +#!/bin/sh +XDG_PICTURES_DIR="/home/stachel/med/pic" +FILE="$XDG_PICTURES_DIR/LATEST.png" + +grim -l 0 - | tee "$FILE" "$XDG_PICTURES_DIR/$(date +%Y%m%d%H%M%S).png" > /dev/null +REGION="$(slurp -f %wx%h+%x+%y < /dev/null)" + +if [ -n "$REGION" ]; then + magick "$FILE" -crop "$REGION" "$FILE" +else + echo "no region" >& 2 + exit 1 +fi + +exec wl-copy < "$FILE" diff --git a/.profile b/.profile new file mode 120000 index 0000000..16354d5 --- /dev/null +++ b/.profile @@ -0,0 +1 @@ +.yash_profile \ No newline at end of file diff --git a/.ssh/config b/.ssh/config new file mode 100644 index 0000000..7900857 --- /dev/null +++ b/.ssh/config @@ -0,0 +1,91 @@ +PreferredAuthentications publickey,password + +Host * + SendEnv TERM + SendEnv LS_COLORS + +Host rex2 + Hostname rex2.ur.de + Port 22 + User rom17543 + IdentityFile ~/.ssh/ur_rex2 + +Host git.stachel.xyz + Hostname git.stachel.xyz + Port 2248 + User git + IdentityFile ~/.ssh/git_auth + +Host git.uni-regensburg.de + IdentityFile ~/.ssh/ur_gitlab + +Host github.com + Port 22 + IdentityFile ~/.ssh/github_auth_1 + +Host codeberg.org + Port 22 + IdentityFile ~/.ssh/codeberg_auth + +Hostname 84.247.164.40 + Port 2222 + +Host contabo + Hostname 84.247.164.40 + Port 2222 + User root + IdentityFile ~/.ssh/contabo_root + +Host contabo_git + Hostname 84.247.164.40 + Port 2222 + User git + IdentityFile ~/.ssh/contabo_git + +Host contabo_zmp-bot + Hostname 84.247.164.40 + Port 2222 + User zmp-bot + IdentityFile ~/.ssh/contabo_zmp-bot + +Host contabo_stachel + Hostname 84.247.164.40 + Port 2222 + User stachel + IdentityFile ~/.ssh/contabo_stachel + +Host contabo_filehost + Hostname 84.247.164.40 + Port 2222 + User filehost + IdentityFile ~/.ssh/contabo_filehost + +Host contabo_terraria + Hostname 84.247.164.40 + Port 2222 + User terraria + IdentityFile ~/.ssh/contabo_terraria + +Host contabo_musava + Hostname 84.247.164.40 + Port 2222 + User musava + IdentityFile ~/.ssh/musava2 + +Host contabo_ffsync + Hostname 84.247.164.40 + Port 2222 + User ffsync + IdentityFile ~/.ssh/contabo_ffsync + +Host contabo_pylab + Hostname 84.247.164.40 + Port 2222 + User pylab + IdentityFile ~/.ssh/contabo_pylab + +Host mobile + Hostname 192.168.178.3 + Port 8022 + User u0_a348 + IdentityFile ~/.ssh/mobile diff --git a/.yash_profile b/.yash_profile new file mode 120000 index 0000000..8de893c --- /dev/null +++ b/.yash_profile @@ -0,0 +1 @@ +.config/yash/profile \ No newline at end of file