initial commit
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
[main]
|
||||
font=DejaVu Sans Mono:size=14
|
||||
pad=10x10
|
||||
term=foot
|
||||
|
||||
[cursor]
|
||||
style=block
|
||||
blink=no
|
||||
|
||||
[colors]
|
||||
alpha=0.90
|
||||
background=1a1b26
|
||||
foreground=c0caf5
|
||||
regular0=15161e
|
||||
regular1=f7768e
|
||||
regular2=9ece6a
|
||||
regular3=e0af68
|
||||
regular4=7aa2f7
|
||||
regular5=bb9af7
|
||||
regular6=7dcfff
|
||||
regular7=a9b1d6
|
||||
bright0=414868
|
||||
bright1=f7768e
|
||||
bright2=9ece6a
|
||||
bright3=e0af68
|
||||
bright4=7aa2f7
|
||||
bright5=bb9af7
|
||||
bright6=7dcfff
|
||||
bright7=c0caf5
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
[user]
|
||||
name = Bartal Læarsson
|
||||
email = bartal@flo.fo
|
||||
signingkey = ~/.ssh/id_ed25519.pub
|
||||
[commit]
|
||||
gpgsign = true
|
||||
[tag]
|
||||
gpgsign = true
|
||||
[gpg]
|
||||
format = ssh
|
||||
[gpg "ssh"]
|
||||
allowedSignersFile = ~/.ssh/allowed_signers
|
||||
[core]
|
||||
editor = nvim
|
||||
autocrlf = input
|
||||
[pull]
|
||||
rebase = true
|
||||
[push]
|
||||
autoSetupRemote = true
|
||||
[init]
|
||||
defaultBranch = main
|
||||
[merge]
|
||||
conflictstyle = diff3
|
||||
[diff]
|
||||
colorMoved = zebra
|
||||
|
||||
@@ -0,0 +1,490 @@
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = " "
|
||||
vim.g.have_nerd_font = true
|
||||
vim.o.number = true
|
||||
vim.o.relativenumber = true
|
||||
vim.o.mouse = "a"
|
||||
vim.o.showmode = false
|
||||
vim.schedule(function()
|
||||
vim.o.clipboard = "unnamedplus"
|
||||
end)
|
||||
vim.o.breakindent = true
|
||||
vim.o.undofile = true
|
||||
vim.o.ignorecase = true
|
||||
vim.o.smartcase = true
|
||||
vim.o.signcolumn = "yes"
|
||||
vim.o.updatetime = 250
|
||||
vim.o.timeoutlen = 300
|
||||
vim.o.splitright = true
|
||||
vim.o.splitbelow = true
|
||||
vim.o.list = true
|
||||
vim.opt.listchars = { tab = "» ", trail = "·", nbsp = "␣" }
|
||||
vim.o.inccommand = "split"
|
||||
vim.o.cursorline = true
|
||||
vim.o.scrolloff = 15
|
||||
vim.o.confirm = true
|
||||
|
||||
vim.keymap.set("n", "<Esc>", "<cmd>nohlsearch<CR>")
|
||||
|
||||
vim.diagnostic.config({
|
||||
update_in_insert = false,
|
||||
severity_sort = true,
|
||||
float = { border = "rounded", source = "if_many" },
|
||||
underline = { severity = { min = vim.diagnostic.severity.WARN } },
|
||||
virtual_text = true,
|
||||
virtual_lines = false,
|
||||
jump = { float = true },
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>q", vim.diagnostic.setloclist, { desc = "Open diagnostic [Q]uickfix list" })
|
||||
vim.keymap.set("t", "<Esc><Esc>", "<C-\\><C-n>", { desc = "Exit terminal mode" })
|
||||
vim.keymap.set("n", "<C-h>", "<C-w><C-h>", { desc = "Move focus to the left window" })
|
||||
vim.keymap.set("n", "<C-l>", "<C-w><C-l>", { desc = "Move focus to the right window" })
|
||||
vim.keymap.set("n", "<C-j>", "<C-w><C-j>", { desc = "Move focus to the lower window" })
|
||||
vim.keymap.set("n", "<C-k>", "<C-w><C-k>", { desc = "Move focus to the upper window" })
|
||||
|
||||
vim.api.nvim_create_autocmd("TextYankPost", {
|
||||
desc = "Highlight when yanking (copying) text",
|
||||
group = vim.api.nvim_create_augroup("kickstart-highlight-yank", { clear = true }),
|
||||
callback = function()
|
||||
vim.hl.on_yank()
|
||||
end,
|
||||
})
|
||||
|
||||
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
|
||||
error("Error cloning lazy.nvim:\n" .. out)
|
||||
end
|
||||
end
|
||||
|
||||
---@type vim.Option
|
||||
local rtp = vim.opt.rtp
|
||||
rtp:prepend(lazypath)
|
||||
|
||||
require("lazy").setup({
|
||||
{ "NMAC427/guess-indent.nvim", opts = {} },
|
||||
|
||||
{
|
||||
"lewis6991/gitsigns.nvim",
|
||||
---@module 'gitsigns'
|
||||
---@type Gitsigns.Config
|
||||
---@diagnostic disable-next-line: missing-fields
|
||||
opts = {
|
||||
signs = {
|
||||
add = { text = "+" }, ---@diagnostic disable-line: missing-fields
|
||||
change = { text = "~" }, ---@diagnostic disable-line: missing-fields
|
||||
delete = { text = "_" }, ---@diagnostic disable-line: missing-fields
|
||||
topdelete = { text = "‾" }, ---@diagnostic disable-line: missing-fields
|
||||
changedelete = { text = "~" }, ---@diagnostic disable-line: missing-fields
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
"nvim-telescope/telescope.nvim",
|
||||
enabled = true,
|
||||
event = "VimEnter",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
{
|
||||
"nvim-telescope/telescope-fzf-native.nvim",
|
||||
build = "make",
|
||||
cond = function()
|
||||
return vim.fn.executable("make") == 1
|
||||
end,
|
||||
},
|
||||
{ "nvim-telescope/telescope-ui-select.nvim" },
|
||||
{ "nvim-tree/nvim-web-devicons", enabled = vim.g.have_nerd_font },
|
||||
},
|
||||
config = function()
|
||||
require("telescope").setup({
|
||||
extensions = {
|
||||
["ui-select"] = { require("telescope.themes").get_dropdown() },
|
||||
},
|
||||
})
|
||||
pcall(require("telescope").load_extension, "fzf")
|
||||
pcall(require("telescope").load_extension, "ui-select")
|
||||
|
||||
local builtin = require("telescope.builtin")
|
||||
vim.keymap.set("n", "<leader>sh", builtin.help_tags, { desc = "[S]earch [H]elp" })
|
||||
vim.keymap.set("n", "<leader>sk", builtin.keymaps, { desc = "[S]earch [K]eymaps" })
|
||||
vim.keymap.set("n", "<leader>sf", builtin.find_files, { desc = "[S]earch [F]iles" })
|
||||
vim.keymap.set("n", "<leader>ss", builtin.builtin, { desc = "[S]earch [S]elect Telescope" })
|
||||
vim.keymap.set({ "n", "v" }, "<leader>sw", builtin.grep_string, { desc = "[S]earch current [W]ord" })
|
||||
vim.keymap.set("n", "<leader>sg", builtin.live_grep, { desc = "[S]earch by [G]rep" })
|
||||
vim.keymap.set("n", "<leader>sd", builtin.diagnostics, { desc = "[S]earch [D]iagnostics" })
|
||||
vim.keymap.set("n", "<leader>sr", builtin.resume, { desc = "[S]earch [R]esume" })
|
||||
vim.keymap.set("n", "<leader>s.", builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
|
||||
vim.keymap.set("n", "<leader>sc", builtin.commands, { desc = "[S]earch [C]ommands" })
|
||||
vim.keymap.set("n", "<leader><leader>", builtin.buffers, { desc = "[ ] Find existing buffers" })
|
||||
|
||||
vim.api.nvim_create_autocmd("LspAttach", {
|
||||
group = vim.api.nvim_create_augroup("telescope-lsp-attach", { clear = true }),
|
||||
callback = function(event)
|
||||
local buf = event.buf
|
||||
vim.keymap.set("n", "grr", builtin.lsp_references, { buffer = buf, desc = "[G]oto [R]eferences" })
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"gri",
|
||||
builtin.lsp_implementations,
|
||||
{ buffer = buf, desc = "[G]oto [I]mplementation" }
|
||||
)
|
||||
vim.keymap.set("n", "grd", builtin.lsp_definitions, { buffer = buf, desc = "[G]oto [D]efinition" })
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"gO",
|
||||
builtin.lsp_document_symbols,
|
||||
{ buffer = buf, desc = "Open Document Symbols" }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"gW",
|
||||
builtin.lsp_dynamic_workspace_symbols,
|
||||
{ buffer = buf, desc = "Open Workspace Symbols" }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"grt",
|
||||
builtin.lsp_type_definitions,
|
||||
{ buffer = buf, desc = "[G]oto [T]ype Definition" }
|
||||
)
|
||||
end,
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>/", function()
|
||||
builtin.current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({
|
||||
winblend = 20,
|
||||
previewer = false,
|
||||
}))
|
||||
end, { desc = "[/] Fuzzily search in current buffer" })
|
||||
|
||||
vim.keymap.set("n", "<leader>s/", function()
|
||||
builtin.live_grep({
|
||||
grep_open_files = true,
|
||||
prompt_title = "Live Grep in Open Files",
|
||||
})
|
||||
end, { desc = "[S]earch [/] in Open Files" })
|
||||
|
||||
vim.keymap.set("n", "<leader>sn", function()
|
||||
builtin.find_files({ cwd = vim.fn.stdpath("config") })
|
||||
end, { desc = "[S]earch [N]eovim files" })
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
dependencies = {
|
||||
{ "j-hui/fidget.nvim", opts = {} },
|
||||
},
|
||||
config = function()
|
||||
vim.api.nvim_create_autocmd("LspAttach", {
|
||||
group = vim.api.nvim_create_augroup("kickstart-lsp-attach", { clear = true }),
|
||||
callback = function(event)
|
||||
local map = function(keys, func, desc, mode)
|
||||
mode = mode or "n"
|
||||
vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = "LSP: " .. desc })
|
||||
end
|
||||
|
||||
map("grn", vim.lsp.buf.rename, "[R]e[n]ame")
|
||||
map("gra", vim.lsp.buf.code_action, "[G]oto Code [A]ction", { "n", "x" })
|
||||
map("grD", vim.lsp.buf.declaration, "[G]oto [D]eclaration")
|
||||
|
||||
local client = vim.lsp.get_client_by_id(event.data.client_id)
|
||||
|
||||
if client and client:supports_method("textDocument/documentHighlight", event.buf) then
|
||||
local highlight_augroup =
|
||||
vim.api.nvim_create_augroup("kickstart-lsp-highlight", { clear = false })
|
||||
|
||||
vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, {
|
||||
buffer = event.buf,
|
||||
group = highlight_augroup,
|
||||
callback = vim.lsp.buf.document_highlight,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, {
|
||||
buffer = event.buf,
|
||||
group = highlight_augroup,
|
||||
callback = vim.lsp.buf.clear_references,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("LspDetach", {
|
||||
group = vim.api.nvim_create_augroup("kickstart-lsp-detach", { clear = true }),
|
||||
callback = function(event2)
|
||||
vim.lsp.buf.clear_references()
|
||||
vim.api.nvim_clear_autocmds({
|
||||
group = "kickstart-lsp-highlight",
|
||||
buffer = event2.buf,
|
||||
})
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
if client and client:supports_method("textDocument/inlayHint", event.buf) then
|
||||
map("<leader>th", function()
|
||||
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = event.buf }))
|
||||
end, "[T]oggle Inlay [H]ints")
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
local servers = {
|
||||
clangd = {},
|
||||
zls = {},
|
||||
gopls = {},
|
||||
rust_analyzer = {},
|
||||
omnisharp = {},
|
||||
jdtls = {},
|
||||
|
||||
ts_ls = {},
|
||||
|
||||
lua_ls = {
|
||||
on_init = function(client)
|
||||
if client.workspace_folders then
|
||||
local path = client.workspace_folders[1].name
|
||||
if
|
||||
path ~= vim.fn.stdpath("config")
|
||||
and (vim.uv.fs_stat(path .. "/.luarc.json") or vim.uv.fs_stat(path .. "/.luarc.jsonc"))
|
||||
then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
client.config.settings.Lua = vim.tbl_deep_extend("force", client.config.settings.Lua, {
|
||||
runtime = {
|
||||
version = "LuaJIT",
|
||||
path = { "lua/?.lua", "lua/?/init.lua" },
|
||||
},
|
||||
workspace = {
|
||||
checkThirdParty = false,
|
||||
library = vim.tbl_extend("force", vim.api.nvim_get_runtime_file("", true), {
|
||||
"${3rd}/luv/library",
|
||||
"${3rd}/busted/library",
|
||||
}),
|
||||
},
|
||||
})
|
||||
end,
|
||||
settings = {
|
||||
Lua = {},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for name, server in pairs(servers) do
|
||||
vim.lsp.config(name, server)
|
||||
vim.lsp.enable(name)
|
||||
end
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
"stevearc/conform.nvim",
|
||||
event = { "BufWritePre" },
|
||||
cmd = { "ConformInfo" },
|
||||
keys = {
|
||||
{
|
||||
"<leader>f",
|
||||
function()
|
||||
require("conform").format({ async = true, lsp_format = "fallback" })
|
||||
end,
|
||||
mode = "",
|
||||
desc = "[F]ormat buffer",
|
||||
},
|
||||
},
|
||||
---@module 'conform'
|
||||
---@type conform.setupOpts
|
||||
opts = {
|
||||
notify_on_error = false,
|
||||
format_on_save = function(bufnr)
|
||||
local disable_filetypes = { c = true, cpp = true }
|
||||
if disable_filetypes[vim.bo[bufnr].filetype] then
|
||||
return nil
|
||||
else
|
||||
return {
|
||||
timeout_ms = 500,
|
||||
lsp_format = "fallback",
|
||||
}
|
||||
end
|
||||
end,
|
||||
formatters_by_ft = {
|
||||
lua = { "stylua" },
|
||||
python = { "isort", "black" },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
"saghen/blink.cmp",
|
||||
event = "VimEnter",
|
||||
version = "1.*",
|
||||
dependencies = {
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
version = "2.*",
|
||||
build = (function()
|
||||
if vim.fn.has("win32") == 1 or vim.fn.executable("make") == 0 then
|
||||
return
|
||||
end
|
||||
return "make install_jsregexp"
|
||||
end)(),
|
||||
dependencies = {},
|
||||
opts = {},
|
||||
},
|
||||
},
|
||||
---@module 'blink.cmp'
|
||||
---@type blink.cmp.Config
|
||||
opts = {
|
||||
keymap = {
|
||||
preset = "default",
|
||||
},
|
||||
appearance = {
|
||||
nerd_font_variant = "mono",
|
||||
},
|
||||
completion = {
|
||||
documentation = { auto_show = false, auto_show_delay_ms = 500 },
|
||||
},
|
||||
sources = {
|
||||
default = { "lsp", "path", "snippets" },
|
||||
},
|
||||
snippets = { preset = "luasnip" },
|
||||
fuzzy = { implementation = "prefer_rust_with_warning" },
|
||||
signature = { enabled = true },
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
"folke/tokyonight.nvim",
|
||||
priority = 1000,
|
||||
config = function()
|
||||
---@diagnostic disable-next-line: missing-fields
|
||||
require("tokyonight").setup({
|
||||
styles = {
|
||||
comments = { italic = true },
|
||||
},
|
||||
})
|
||||
vim.cmd.colorscheme("tokyonight-night")
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
"folke/todo-comments.nvim",
|
||||
event = "VimEnter",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
---@module 'todo-comments'
|
||||
---@type TodoOptions
|
||||
---@diagnostic disable-next-line: missing-fields
|
||||
opts = { signs = false },
|
||||
},
|
||||
|
||||
{
|
||||
"nvim-mini/mini.nvim",
|
||||
config = function()
|
||||
require("mini.ai").setup({ n_lines = 500 })
|
||||
require("mini.surround").setup()
|
||||
local statusline = require("mini.statusline")
|
||||
statusline.setup({ use_icons = vim.g.have_nerd_font })
|
||||
---@diagnostic disable-next-line: duplicate-set-field
|
||||
statusline.section_location = function()
|
||||
return "%2l:%-2v"
|
||||
end
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
lazy = false,
|
||||
branch = "main",
|
||||
build = ":TSUpdate",
|
||||
config = function()
|
||||
-- Pre-install parsers for languages we know we use.
|
||||
-- For any other filetype, the FileType autocmd below will
|
||||
-- auto-install the parser on first open.
|
||||
local parsers = {
|
||||
"javascript",
|
||||
"typescript",
|
||||
"tsx",
|
||||
"json",
|
||||
"bash",
|
||||
"c",
|
||||
"c_sharp",
|
||||
"diff",
|
||||
"go",
|
||||
"html",
|
||||
"java",
|
||||
"lua",
|
||||
"luadoc",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"python",
|
||||
"query",
|
||||
"rust",
|
||||
"vim",
|
||||
"vimdoc",
|
||||
"zig",
|
||||
}
|
||||
|
||||
local installed = require("nvim-treesitter.config").get_installed()
|
||||
local to_install = vim.tbl_filter(function(p)
|
||||
return not vim.tbl_contains(installed, p)
|
||||
end, parsers)
|
||||
if #to_install > 0 then
|
||||
require("nvim-treesitter").install(to_install)
|
||||
end
|
||||
|
||||
-- Helper: try to start treesitter highlighting + indentation for a buffer
|
||||
local function treesitter_try_attach(buf, language)
|
||||
if not pcall(vim.treesitter.start, buf, language) then
|
||||
return
|
||||
end
|
||||
local has_indent_query = pcall(vim.treesitter.query.get, language, "indents")
|
||||
if has_indent_query then
|
||||
vim.bo[buf].indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
|
||||
end
|
||||
end
|
||||
|
||||
-- On every FileType event:
|
||||
-- 1. If the parser is already installed, attach immediately.
|
||||
-- 2. If not, auto-install it then attach once done.
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
callback = function(args)
|
||||
local buf, filetype = args.buf, args.match
|
||||
local language = vim.treesitter.language.get_lang(filetype)
|
||||
if not language then
|
||||
return
|
||||
end
|
||||
|
||||
if vim.treesitter.language.add(language) then
|
||||
-- Parser already available — attach right away
|
||||
treesitter_try_attach(buf, language)
|
||||
else
|
||||
-- Parser missing — install it, then attach
|
||||
require("nvim-treesitter").install(language):await(function()
|
||||
treesitter_try_attach(buf, language)
|
||||
end)
|
||||
end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
}, { ---@diagnostic disable-line: missing-fields
|
||||
ui = {
|
||||
icons = vim.g.have_nerd_font and {} or {
|
||||
cmd = "⌘",
|
||||
config = "🛠",
|
||||
event = "📅",
|
||||
ft = "📂",
|
||||
init = "⚙",
|
||||
keys = "🗝",
|
||||
plugin = "🔌",
|
||||
runtime = "💻",
|
||||
require = "🌙",
|
||||
source = "📄",
|
||||
start = "🚀",
|
||||
task = "📌",
|
||||
lazy = "💤 ",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
Host flo-homeserver
|
||||
HostName 10.0.0.2
|
||||
User bl
|
||||
ProxyJump vps
|
||||
|
||||
Host vps
|
||||
HostName 139.59.166.35
|
||||
User bl
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
@@ -0,0 +1,118 @@
|
||||
# Sway workstation configuration translated from NixOS behavior.
|
||||
set $mod Mod4
|
||||
set $term foot -e tmux new-session -A -s main
|
||||
set $browser zen
|
||||
set $menu rofi -show drun
|
||||
|
||||
font pango:DejaVu Sans Mono 10
|
||||
|
||||
output * scale 1
|
||||
output * bg ~/.config/sway/tux.png fill
|
||||
|
||||
input type:keyboard {
|
||||
xkb_layout fo
|
||||
xkb_model pc105
|
||||
}
|
||||
|
||||
input type:touchpad {
|
||||
natural_scroll disabled
|
||||
tap enabled
|
||||
}
|
||||
|
||||
gaps inner 5
|
||||
gaps outer 10
|
||||
smart_gaps on
|
||||
default_border pixel 2
|
||||
default_floating_border pixel 2
|
||||
|
||||
client.focused #33ccff #33ccff #1a1b26 #33ccff #33ccff
|
||||
client.focused_inactive #595959 #595959 #c0caf5 #595959 #595959
|
||||
client.unfocused #595959 #595959 #c0caf5 #595959 #595959
|
||||
|
||||
floating_modifier $mod normal
|
||||
|
||||
# Applications and session
|
||||
bindsym $mod+t exec $term
|
||||
bindsym $mod+b exec $browser
|
||||
bindsym $mod+d exec $menu
|
||||
bindsym $mod+q kill
|
||||
bindsym $mod+Shift+c reload
|
||||
bindsym $mod+Shift+e exec swaynag -t warning -m 'Exit Sway?' -B 'Exit' 'swaymsg exit'
|
||||
|
||||
# Focus movement
|
||||
bindsym $mod+h focus left
|
||||
bindsym $mod+j focus down
|
||||
bindsym $mod+k focus up
|
||||
bindsym $mod+l focus right
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# Move windows
|
||||
bindsym $mod+Shift+h move left
|
||||
bindsym $mod+Shift+j move down
|
||||
bindsym $mod+Shift+k move up
|
||||
bindsym $mod+Shift+l move right
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# Workspaces
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
# Layout and scratchpad
|
||||
bindsym $mod+s layout toggle split
|
||||
bindsym $mod+e layout toggle split
|
||||
bindsym $mod+f fullscreen toggle
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
bindsym $mod+minus scratchpad show
|
||||
bindsym $mod+Shift+minus move scratchpad
|
||||
|
||||
# Hardware controls
|
||||
bindsym XF86AudioRaiseVolume exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindsym XF86AudioLowerVolume exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindsym XF86AudioMute exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindsym XF86AudioMicMute exec wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindsym XF86MonBrightnessUp exec brightnessctl set 5%+
|
||||
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
|
||||
bindsym Print exec grim -g "$(slurp)" "$HOME/Pictures/screenshot-$(date +%Y%m%d-%H%M%S).png"
|
||||
|
||||
# Session services
|
||||
exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP
|
||||
exec /usr/libexec/lxqt-policykit-agent
|
||||
exec nm-applet --indicator
|
||||
exec mako
|
||||
exec ~/.config/waybar/launch.sh
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 49 KiB |
@@ -0,0 +1,28 @@
|
||||
set -ga terminal-overrides ",xterm-256color:RGB"
|
||||
set -g display-time 4000
|
||||
set -g status-position top
|
||||
setw -g pane-base-index 1
|
||||
|
||||
# Tokyo Night Colors
|
||||
bg="#1a1b26"
|
||||
default_fg="#c0caf5"
|
||||
session_fg="#9ece6a"
|
||||
session_selection_fg="#1a1b26"
|
||||
session_selection_bg="#7aa2f7"
|
||||
active_window_fg="#7dcfff"
|
||||
active_pane_border="#7aa2f7"
|
||||
|
||||
set -g status-left-length 200
|
||||
set -g status-right-length 200
|
||||
set -g status-left "#[fg=${session_fg},bold,bg=${bg}] #S #[fg=${default_fg},nobold,bg=${bg}] | "
|
||||
set -g status-right "#[fg=${active_window_fg},bg=${bg}] #(acpi -b | awk -F', ' '{print $2}') #[fg=${default_fg},nobold,bg=${bg}] | #[fg=${active_window_fg},bg=${bg}] %H:%M #[fg=${default_fg},nobold,bg=${bg}] | #[fg=${session_fg},bg=${bg}] %a %Y-%m-%d "
|
||||
set -g status-justify left
|
||||
set -g status-style "bg=${bg}"
|
||||
set -g window-status-format "#[fg=${default_fg},bg=default] #I:#W"
|
||||
set -g window-status-current-format "#[fg=${active_window_fg},bold,bg=default] #[underscore]#I:#W"
|
||||
set -g window-status-last-style "fg=${default_fg},bg=default"
|
||||
set -g message-command-style "bg=default,fg=${default_fg}"
|
||||
set -g message-style "bg=default,fg=${default_fg}"
|
||||
set -g mode-style "bg=${session_selection_bg},fg=${session_selection_fg}"
|
||||
set -g pane-active-border-style "fg=${active_pane_border},bg=default"
|
||||
set -g pane-border-style "fg=brightblack,bg=default"
|
||||
@@ -0,0 +1,12 @@
|
||||
set -g prefix C-b
|
||||
setw -g mode-keys vi
|
||||
set -g default-shell /usr/bin/zsh
|
||||
set -sg escape-time 0
|
||||
set -g focus-events on
|
||||
set -g default-terminal tmux-256color
|
||||
set -g history-limit 10000
|
||||
setw -g aggressive-resize on
|
||||
set -g base-index 1
|
||||
setw -g pane-base-index 1
|
||||
|
||||
source-file ~/.config/tmux/theme.conf
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"height": 34,
|
||||
"margin-top": 8,
|
||||
"margin-left": 0,
|
||||
"margin-right": 0,
|
||||
|
||||
"modules-left": ["sway/workspaces", "sway/window"],
|
||||
"modules-center": ["clock"],
|
||||
"modules-right": ["pulseaudio", "network", "battery", "tray"],
|
||||
|
||||
"sway/workspaces": {
|
||||
"all-outputs": true,
|
||||
"disable-scroll": true,
|
||||
"format": "{name}"
|
||||
},
|
||||
|
||||
"sway/window": {
|
||||
"max-length": 40
|
||||
},
|
||||
|
||||
"clock": {
|
||||
"format": "{:%a %b %d %I:%M %p}"
|
||||
},
|
||||
|
||||
"battery": {
|
||||
"format": "{capacity}%"
|
||||
},
|
||||
|
||||
"network": {
|
||||
"format-wifi": "wifi {essid}",
|
||||
"format-ethernet": "wired",
|
||||
"format-disconnected": "offline",
|
||||
"on-click": "nm-connection-editor"
|
||||
},
|
||||
|
||||
"pulseaudio": {
|
||||
"format": "vol {volume}%",
|
||||
"format-muted": "muted",
|
||||
"on-click": "pavucontrol"
|
||||
}
|
||||
}
|
||||
|
||||
Executable
+21
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
config_dir="${XDG_CONFIG_HOME:-$HOME/.config}/waybar"
|
||||
base_config="$config_dir/config"
|
||||
runtime_config="$config_dir/config.runtime"
|
||||
|
||||
width=$(swaymsg -r -t get_outputs | jq -r '[.[] | select(.focused)][0] // .[0] // {rect: {width: 1440}} | .rect.width // 1440')
|
||||
|
||||
if ! [[ "$width" =~ ^[0-9]+$ ]] || (( width == 0 )); then
|
||||
width=1440
|
||||
fi
|
||||
|
||||
margin=$((width * 125 / 1000))
|
||||
jq --argjson margin "$margin" '
|
||||
.["margin-left"] = $margin
|
||||
| .["margin-right"] = $margin
|
||||
' "$base_config" > "$runtime_config"
|
||||
|
||||
exec waybar -c "$runtime_config"
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
@import "themes/current.css";
|
||||
|
||||
* {
|
||||
font-family: "DejaVu Sans Mono", monospace;
|
||||
font-size: 13px;
|
||||
border: none;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: @bar-bg;
|
||||
color: @text;
|
||||
border-radius: 18px;
|
||||
border: 1px solid @border;
|
||||
}
|
||||
|
||||
window#waybar > box {
|
||||
padding: 0 4px;
|
||||
}
|
||||
|
||||
#workspaces label {
|
||||
padding: 0 10px;
|
||||
margin: 5px 3px;
|
||||
color: @text;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
#workspaces .active {
|
||||
background: @accent;
|
||||
color: @accent-fg;
|
||||
}
|
||||
|
||||
#window {
|
||||
padding: 0 12px;
|
||||
margin: 5px 4px;
|
||||
background: @accent;
|
||||
color: @accent-fg;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#clock,
|
||||
#battery,
|
||||
#network,
|
||||
#pulseaudio,
|
||||
#tray {
|
||||
padding: 0 12px;
|
||||
margin: 5px 4px;
|
||||
background: @module-bg;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
@define-color bar-bg rgba(17, 17, 27, 0.82);
|
||||
@define-color module-bg rgba(49, 50, 68, 0.85);
|
||||
@define-color border rgba(203, 166, 247, 0.35);
|
||||
@define-color text #cdd6f4;
|
||||
@define-color accent #cba6f7;
|
||||
@define-color accent-fg #11111b;
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
@define-color bar-bg rgba(17, 17, 27, 0.82);
|
||||
@define-color module-bg rgba(49, 50, 68, 0.85);
|
||||
@define-color border rgba(203, 166, 247, 0.35);
|
||||
@define-color text #cdd6f4;
|
||||
@define-color accent #cba6f7;
|
||||
@define-color accent-fg #11111b;
|
||||
@@ -0,0 +1,6 @@
|
||||
@define-color bar-bg rgba(249, 245, 215, 0.88);
|
||||
@define-color module-bg rgba(235, 219, 178, 0.86);
|
||||
@define-color border rgba(181, 118, 20, 0.35);
|
||||
@define-color text #3c3836;
|
||||
@define-color accent #b57614;
|
||||
@define-color accent-fg #f9f5d7;
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
HISTFILE="$HOME/.zsh_history"
|
||||
HISTSIZE=10000
|
||||
SAVEHIST=10000
|
||||
|
||||
setopt append_history
|
||||
|
||||
alias gp='git push'
|
||||
alias gcm='git commit -am'
|
||||
alias gsw='git switch'
|
||||
alias gst='git status'
|
||||
alias ga='git add .'
|
||||
alias gtree="git log --graph --all --pretty=format:'%C(yellow)%h%Creset%C(cyan)%d%Creset %s %C(dim)(%cr) <%an>%Creset'"
|
||||
alias typ='typora --enable-features=UseOzonePlatform --ozone-platform=wayland &'
|
||||
|
||||
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
|
||||
export GOPATH="${GOPATH:-$HOME/go}"
|
||||
export PATH="$HOME/.scripts:$HOME/.local/bin:$HOME/.cargo/bin:$HOME/.bun/bin:$HOME/bin/zig:$HOME/bin/zls:$GOPATH/bin:$PATH"
|
||||
|
||||
start-ssh-agent() {
|
||||
local agent_env="$HOME/.ssh/agent.env"
|
||||
if [[ -f "$agent_env" ]]; then
|
||||
source "$agent_env" >/dev/null
|
||||
fi
|
||||
if ! ssh-add -l &>/dev/null; then
|
||||
eval "$(ssh-agent -s)" >/dev/null
|
||||
ssh-agent -s >"$agent_env"
|
||||
chmod 600 "$agent_env"
|
||||
ssh-add ~/.ssh/id_ed25519 2>/dev/null || ssh-add ~/.ssh/id_rsa 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
|
||||
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
|
||||
eval "$(fzf --zsh)"
|
||||
eval "$(starship init zsh)"
|
||||
Reference in New Issue
Block a user