Initial Ubuntu i3wm dotfiles

This commit is contained in:
2026-01-29 23:19:44 +05:30
commit 75a6027f67
40 changed files with 2261 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
-----------------------------------------------------------
-- BASIC OPTIONS (IDE COMFORT)
-----------------------------------------------------------
vim.g.mapleader = " "
vim.g.maplocalleader = " "
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.cursorline = true
vim.opt.termguicolors = true
vim.opt.mouse = "a"
vim.opt.clipboard = "unnamedplus"
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.opt.smartindent = true
vim.opt.splitbelow = true
vim.opt.splitright = true
-----------------------------------------------------------
-- LAZY.NVIM BOOTSTRAP (CRITICAL)
-----------------------------------------------------------
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
-----------------------------------------------------------
-- LOAD PLUGINS
-----------------------------------------------------------
require("lazy").setup("plugins", {
ui = {
border = "rounded",
},
change_detection = {
notify = false,
},
})
-- Transparent background
vim.api.nvim_set_hl(0, "Normal", { bg = "none" })
vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" })
vim.api.nvim_set_hl(0, "FloatBorder", { bg = "none" })
vim.api.nvim_set_hl(0, "SignColumn", { bg = "none" })
vim.api.nvim_set_hl(0, "EndOfBuffer", { bg = "none" })
vim.api.nvim_set_hl(0, "DashboardHeader", { fg = "#7aa2f7" }) -- neon blue
vim.api.nvim_set_hl(0, "DashboardQuote", { fg = "#9ece6a", italic = true }) -- soft green
+21
View File
@@ -0,0 +1,21 @@
{
"LuaSnip": { "branch": "master", "commit": "dae4f5aaa3574bd0c2b9dd20fb9542a02c10471c" },
"cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"dashboard-nvim": { "branch": "master", "commit": "0775e567b6c0be96d01a61795f7b64c1758262f6" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "1a14770dc8c7cb29643870ac79788eec6f7ce1f8" },
"mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" },
"nvim-autopairs": { "branch": "master", "commit": "007047febaa3681a8d2f3dd5126fdb9c6e81f393" },
"nvim-cmp": { "branch": "main", "commit": "da88697d7f45d16852c6b2769dc52387d1ddc45f" },
"nvim-lspconfig": { "branch": "master", "commit": "bf81bef7d75a0f4a0cf61462b318ea00b3c97cc8" },
"nvim-tree.lua": { "branch": "master", "commit": "c07ce43527e5f0242121f4eb1feb7ac0ecea8275" },
"nvim-treesitter": { "branch": "main", "commit": "04ab807f8e6d3e42f385b872fd1dc20dcef12193" },
"nvim-web-devicons": { "branch": "master", "commit": "803353450c374192393f5387b6a0176d0972b848" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" },
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
"tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" }
}
+11
View File
@@ -0,0 +1,11 @@
return {
"windwp/nvim-autopairs",
event = "InsertEnter",
config = function()
require("nvim-autopairs").setup({
check_ts = true, -- use Treesitter (smarter)
disable_filetype = { "TelescopePrompt", "vim" },
})
end,
}
+35
View File
@@ -0,0 +1,35 @@
return {
"hrsh7th/nvim-cmp",
dependencies = {
"hrsh7th/cmp-nvim-lsp",
"L3MON4D3/LuaSnip",
"saadparwaiz1/cmp_luasnip",
},
config = function()
local cmp = require("cmp")
cmp.setup({
snippet = {
expand = function(args)
require("luasnip").lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert({
["<CR>"] = cmp.mapping.confirm({ select = true }),
["<C-Space>"] = cmp.mapping.complete(),
}),
sources = {
{ name = "nvim_lsp" },
{ name = "luasnip" },
},
})
-- Optional: make autopairs + completion cooperate
pcall(function()
require("nvim-autopairs.completion.cmp").setup({
map_cr = true,
})
end)
end,
}
+41
View File
@@ -0,0 +1,41 @@
return {
"nvimdev/dashboard-nvim",
event = "VimEnter",
config = function()
require("dashboard").setup({
theme = "doom",
config = {
-- ================= HEADER =================
header = {
"",
" ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗",
" ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║",
" ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║",
" ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║",
" ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║",
" ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝",
"",
" “If it feels slow, youre doing it wrong.”",
"",
},
-- ================= CENTER =================
center = {
{ icon = "", desc = "New file", key = "n", action = "enew" },
{ icon = "", desc = "Find file", key = "f", action = "Telescope find_files" },
{ icon = "", desc = "Live grep", key = "g", action = "Telescope live_grep" },
{ icon = "󰈙 ", desc = "Recent files", key = "r", action = "Telescope oldfiles" },
{ icon = "󰩈 ", desc = "Quit", key = "q", action = "qa" },
},
footer = {},
},
})
-- ================= COLORS =================
vim.api.nvim_set_hl(0, "DashboardHeader", { fg = "#7aa2f7" }) -- logo
vim.api.nvim_set_hl(0, "DashboardFooter", { fg = "#9ece6a", italic = true }) -- quote
end,
}
+10
View File
@@ -0,0 +1,10 @@
return {
"lukas-reineke/indent-blankline.nvim",
main = "ibl",
event = { "BufReadPost", "BufNewFile" },
opts = {
indent = { char = "" },
scope = { enabled = false }, -- cleaner look
},
}
+40
View File
@@ -0,0 +1,40 @@
return {
"neovim/nvim-lspconfig",
tag = "v1.6.0",
dependencies = {
"williamboman/mason.nvim",
"williamboman/mason-lspconfig.nvim",
},
config = function()
-- Mason: installer only
require("mason").setup()
require("mason-lspconfig").setup({
ensure_installed = {
"lua_ls",
"pyright",
"bashls",
"clangd",
},
automatic_installation = false,
})
-- LSP setup (Neovim <= 0.10 way)
local lspconfig = require("lspconfig")
lspconfig.lua_ls.setup({
settings = {
Lua = {
diagnostics = {
globals = { "vim" },
},
},
},
})
lspconfig.pyright.setup({})
lspconfig.bashls.setup({})
lspconfig.clangd.setup({})
end,
}
+14
View File
@@ -0,0 +1,14 @@
return {
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
require("lualine").setup({
options = {
theme = "tokyonight",
section_separators = "",
component_separators = "",
},
})
end,
}
+19
View File
@@ -0,0 +1,19 @@
return {
{
"williamboman/mason.nvim",
config = function()
require("mason").setup()
end,
},
{
"williamboman/mason-lspconfig.nvim",
tag = "v1.28.0",
config = function()
require("mason-lspconfig").setup({
ensure_installed = {},
automatic_installation = false,
})
end,
},
}
+12
View File
@@ -0,0 +1,12 @@
return {
"nvim-telescope/telescope.nvim",
tag = "0.1.5", -- compatible with Neovim 0.9.x
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
local builtin = require("telescope.builtin")
vim.keymap.set("n", "<leader>ff", builtin.find_files)
vim.keymap.set("n", "<leader>fg", builtin.live_grep)
vim.keymap.set("n", "<leader>fb", builtin.buffers)
end,
}
+18
View File
@@ -0,0 +1,18 @@
return {
{
"folke/tokyonight.nvim",
priority = 1000,
opts = {
transparent = true,
styles = {
sidebars = "transparent",
floats = "transparent",
},
},
config = function(_, opts)
require("tokyonight").setup(opts)
vim.cmd("colorscheme tokyonight-night")
end,
},
}
+28
View File
@@ -0,0 +1,28 @@
return {
"akinsho/toggleterm.nvim",
version = "*",
config = function()
require("toggleterm").setup({
-- Open with Ctrl + `
open_mapping = [[<C-`>]],
-- Terminal behavior
start_in_insert = true,
insert_mappings = true,
terminal_mappings = true,
persist_size = true,
close_on_exit = true,
-- Visuals
hide_numbers = true,
shade_terminals = false, -- important for transparency
direction = "float",
float_opts = {
border = "rounded",
winblend = 0,
},
})
end,
}
+9
View File
@@ -0,0 +1,9 @@
return {
"nvim-tree/nvim-tree.lua",
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
require("nvim-tree").setup()
vim.keymap.set("n", "<C-b>", ":NvimTreeToggle<CR>")
end,
}
+21
View File
@@ -0,0 +1,21 @@
return {
"nvim-treesitter/nvim-treesitter",
event = { "BufReadPost", "BufNewFile" },
build = function()
pcall(vim.cmd, "TSUpdate")
end,
opts = {
ensure_installed = {
"lua",
"python",
"c",
"cpp",
"bash",
"json",
"markdown",
},
highlight = { enable = true },
indent = { enable = true },
},
}