mirror of
https://github.com/Manoj-HV30/i3wm-ubuntu-dotfiles.git
synced 2026-05-16 19:35:23 +00:00
Initial Ubuntu i3wm dotfiles
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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" }
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
return {
|
||||
"nvimdev/dashboard-nvim",
|
||||
event = "VimEnter",
|
||||
config = function()
|
||||
require("dashboard").setup({
|
||||
theme = "doom",
|
||||
config = {
|
||||
|
||||
-- ================= HEADER =================
|
||||
header = {
|
||||
"",
|
||||
" ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗",
|
||||
" ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║",
|
||||
" ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║",
|
||||
" ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║",
|
||||
" ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║",
|
||||
" ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝",
|
||||
"",
|
||||
" “If it feels slow, you’re 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,
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
return {
|
||||
"lukas-reineke/indent-blankline.nvim",
|
||||
main = "ibl",
|
||||
event = { "BufReadPost", "BufNewFile" },
|
||||
opts = {
|
||||
indent = { char = "│" },
|
||||
scope = { enabled = false }, -- cleaner look
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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 },
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user