From 6179b747fa866ccf03e9f4db83501e9fabd1dcf3 Mon Sep 17 00:00:00 2001 From: Juni Kim Date: Sat, 7 Dec 2024 18:42:42 -0500 Subject: [PATCH] first commit --- .config/alacritty/alacritty.toml | 48 +++ .config/hypr/hyprland.conf | 313 ++++++++++++++++++ .config/hypr/hyprlock.conf | 24 ++ .config/hypr/hyprpaper.conf | 2 + .config/nvim/init.lua | 6 + .config/nvim/lazy-lock.json | 21 ++ .config/nvim/lua/arch2025/init.lua | 0 .config/nvim/lua/arch2025/plugins/lualine.lua | 31 ++ .config/nvim/lua/arch2025/plugins/theme.lua | 15 + .config/nvim/lua/junikim/bootstrap-lazy.lua | 16 + .config/nvim/lua/junikim/init.lua | 4 + .config/nvim/lua/junikim/options.lua | 104 ++++++ .../nvim/lua/junikim/plugins/autopairs.lua | 7 + .config/nvim/lua/junikim/plugins/barbar.lua | 43 +++ .config/nvim/lua/junikim/plugins/devicons.lua | 1 + .config/nvim/lua/junikim/plugins/emmet.lua | 1 + .config/nvim/lua/junikim/plugins/fugitive.lua | 6 + .config/nvim/lua/junikim/plugins/gitsigns.lua | 1 + .config/nvim/lua/junikim/plugins/lsp.lua | 101 ++++++ .../nvim/lua/junikim/plugins/nvim-tree.lua | 13 + .../nvim/lua/junikim/plugins/telescope.lua | 37 +++ .../nvim/lua/junikim/plugins/treesitter.lua | 20 ++ .config/nvim/lua/junikim/plugins/vimtex.lua | 1 + .config/nvim/lua/junikim/remaps.lua | 53 +++ .config/rofi/config.rasi | 105 ++++++ .config/waybar/config.jsonc | 218 ++++++++++++ .config/waybar/style.css | 213 ++++++++++++ .tmux.conf | 52 +++ .zshrc | 50 +++ 29 files changed, 1506 insertions(+) create mode 100644 .config/alacritty/alacritty.toml create mode 100644 .config/hypr/hyprland.conf create mode 100644 .config/hypr/hyprlock.conf create mode 100644 .config/hypr/hyprpaper.conf create mode 100644 .config/nvim/init.lua create mode 100644 .config/nvim/lazy-lock.json create mode 100644 .config/nvim/lua/arch2025/init.lua create mode 100644 .config/nvim/lua/arch2025/plugins/lualine.lua create mode 100644 .config/nvim/lua/arch2025/plugins/theme.lua create mode 100644 .config/nvim/lua/junikim/bootstrap-lazy.lua create mode 100644 .config/nvim/lua/junikim/init.lua create mode 100644 .config/nvim/lua/junikim/options.lua create mode 100644 .config/nvim/lua/junikim/plugins/autopairs.lua create mode 100644 .config/nvim/lua/junikim/plugins/barbar.lua create mode 100644 .config/nvim/lua/junikim/plugins/devicons.lua create mode 100644 .config/nvim/lua/junikim/plugins/emmet.lua create mode 100644 .config/nvim/lua/junikim/plugins/fugitive.lua create mode 100644 .config/nvim/lua/junikim/plugins/gitsigns.lua create mode 100644 .config/nvim/lua/junikim/plugins/lsp.lua create mode 100644 .config/nvim/lua/junikim/plugins/nvim-tree.lua create mode 100644 .config/nvim/lua/junikim/plugins/telescope.lua create mode 100644 .config/nvim/lua/junikim/plugins/treesitter.lua create mode 100644 .config/nvim/lua/junikim/plugins/vimtex.lua create mode 100644 .config/nvim/lua/junikim/remaps.lua create mode 100644 .config/rofi/config.rasi create mode 100644 .config/waybar/config.jsonc create mode 100644 .config/waybar/style.css create mode 100644 .tmux.conf create mode 100644 .zshrc diff --git a/.config/alacritty/alacritty.toml b/.config/alacritty/alacritty.toml new file mode 100644 index 0000000..079988b --- /dev/null +++ b/.config/alacritty/alacritty.toml @@ -0,0 +1,48 @@ +[window] + +padding = {x = 10, y = 10} +opacity = 0.8 + +[general] +live_config_reload = true + +[font] +size = 12.0 + +[font.bold] +family = "JetBrainsMono Nerd Font Mono" +style = "Bold" + +[font.bold_italic] +family = "JetBrainsMono Nerd Font Mono" +style = "Bold Italic" + +[font.italic] +family = "JetBrainsMono Nerd Font Mono" +style = "Italic" + +[font.normal] +family = "JetBrainsMono Nerd Font Mono" +style = "Regular" + +[colors.primary] +background= '#2d353b' +foreground= '#d3c6aa' +[colors.normal] +black= '#475258' +red= '#e67e80' +green= '#a7c080' +yellow= '#dbbc7f' +blue= '#7fbbb3' +magenta= '#d699b6' +cyan= '#83c092' +white= '#d3c6aa' +[colors.bright] +black= '#475258' +red= '#e67e80' +green= '#a7c080' +yellow= '#dbbc7f' +blue= '#7fbbb3' +magenta= '#d699b6' +cyan= '#83c092' +white= '#d3c6aa' diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf new file mode 100644 index 0000000..eebdb05 --- /dev/null +++ b/.config/hypr/hyprland.conf @@ -0,0 +1,313 @@ +# This is an example Hyprland config file. +# Refer to the wiki for more information. +# https://wiki.hyprland.org/Configuring/ + +# Please note not all available settings / options are set here. +# For a full list, see the wiki + +# You can split this configuration into multiple files +# Create your files separately and then link them to this file like this: +# source = ~/.config/hypr/myColors.conf + + +################ +### MONITORS ### +################ + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=eDP-1, 1920x1080@60, 0x0, 1 +# why the skibidi is this here. +monitor=Unknown-1, disable + + +################### +### MY PROGRAMS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ + +# Set programs that you use +$terminal = alacritty +$fileManager = dolphin +$browser = firefox +$menu = rofi -show drun + + +################# +### AUTOSTART ### +################# + +# Autostart necessary processes (like notifications daemons, status bars, etc.) +# Or execute your favorite apps at launch like this: + +# exec-once = $terminal +# exec-once = nm-applet & +# exec-once = waybar & hyprpaper & firefox + +exec-once = hyprpaper +exec-once = waybar + +############################# +### ENVIRONMENT VARIABLES ### +############################# + +# See https://wiki.hyprland.org/Configuring/Environment-variables/ + +env = XCURSOR_SIZE,24 +env = HYPRCURSOR_SIZE,24 + + +##################### +### LOOK AND FEEL ### +##################### + +# Refer to https://wiki.hyprland.org/Configuring/Variables/ + +# https://wiki.hyprland.org/Configuring/Variables/#general +general { + gaps_in = 5 + gaps_out = 20 + + border_size = 2 + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + col.active_border = rgba(93b259ee) + col.inactive_border = rgba(595959aa) + + # Set to true enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = false + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false + + layout = dwindle +} + +# https://wiki.hyprland.org/Configuring/Variables/#decoration +decoration { + rounding = 10 + + # Change transparency of focused and unfocused windows + active_opacity = 1.0 + inactive_opacity = 1.0 + + shadow { + enabled = true + range = 4 + render_power = 3 + color = rgba(1a1a1aee) + } + + # https://wiki.hyprland.org/Configuring/Variables/#blur + blur { + enabled = true + size = 3 + passes = 1 + + vibrancy = 0.1696 + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#animations +animations { + enabled = yes, please :) + + # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = easeOutQuint,0.23,1,0.32,1 + bezier = easeInOutCubic,0.65,0.05,0.36,1 + bezier = linear,0,0,1,1 + bezier = almostLinear,0.5,0.5,0.75,1.0 + bezier = quick,0.15,0,0.1,1 + + animation = global, 1, 10, default + animation = border, 1, 5.39, easeOutQuint + animation = windows, 1, 4.79, easeOutQuint + animation = windowsIn, 1, 4.1, easeOutQuint, popin 87% + animation = windowsOut, 1, 1.49, linear, popin 87% + animation = fadeIn, 1, 1.73, almostLinear + animation = fadeOut, 1, 1.46, almostLinear + animation = fade, 1, 3.03, quick + animation = layers, 1, 3.81, easeOutQuint + animation = layersIn, 1, 4, easeOutQuint, fade + animation = layersOut, 1, 1.5, linear, fade + animation = fadeLayersIn, 1, 1.79, almostLinear + animation = fadeLayersOut, 1, 1.39, almostLinear + animation = workspaces, 1, 1.94, almostLinear, fade + animation = workspacesIn, 1, 1.21, almostLinear, fade + animation = workspacesOut, 1, 1.94, almostLinear, fade +} + +# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/ +# "Smart gaps" / "No gaps when only" +# uncomment all if you wish to use that. +# workspace = w[tv1], gapsout:0, gapsin:0 +# workspace = f[1], gapsout:0, gapsin:0 +# windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1] +# windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1] +# windowrulev2 = bordersize 0, floating:0, onworkspace:f[1] +# windowrulev2 = rounding 0, floating:0, onworkspace:f[1] + +# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more +dwindle { + pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # You probably want this +} + +# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +master { + new_status = master +} + +# https://wiki.hyprland.org/Configuring/Variables/#misc +misc { + force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :( +} + + +############# +### INPUT ### +############# + +# https://wiki.hyprland.org/Configuring/Variables/#input +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + touchpad { + natural_scroll = true + tap-to-click = false + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#gestures +gestures { + workspace_swipe = false +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more +device { + name = epic-mouse-v1 + sensitivity = -0.5 +} + + +################### +### KEYBINDINGS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ +$mainMod = SUPER # Sets "Windows" key as main modifier + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod SHIFT, A, exec, $terminal +bind = $mainMod SHIFT, Q, killactive, +bind = $mainMod SHIFT, E, exit, +#bind = $mainMod, E, exec, $fileManager +bind = $mainMod SHIFT, W, exec, firefox +bind = $mainMod, V, togglefloating, +bind = $mainMod, SPACE, exec, $menu +bind = $mainMod, P, pseudo, # dwindle +#bind = $mainMod, J, togglesplit, # dwindle + +# Move focus with mainMod + arrow keys +bind = $mainMod, h, movefocus, l +bind = $mainMod, l, movefocus, r +bind = $mainMod, k, movefocus, u +bind = $mainMod, j, movefocus, d + +bind = $mainMod SHIFT, h, movewindow, l +bind = $mainMod SHIFT, l, movewindow, r +bind = $mainMod SHIFT, k, movewindow, u +bind = $mainMod SHIFT, j, movewindow, d + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1 +bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2 +bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3 +bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4 +bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5 +bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6 +bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7 +bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8 +bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 +bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10 + +# Example special workspace (scratchpad) +bind = $mainMod, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Laptop multimedia keys for volume and LCD brightness +bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ +bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+ +bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%- + +# Requires playerctl +bindl = , XF86AudioNext, exec, playerctl next +bindl = , XF86AudioPause, exec, playerctl play-pause +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous + +# Screen Locker +bindl = , switch:Lid Switch, exec, hyprlock + +############################## +### WINDOWS AND WORKSPACES ### +############################## + +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ + +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ + +windowrulev2 = workspace 1,class:Alacritty +windowrulev2 = workspace 1,class:kitty +windowrulev2 = workspace 3,class:Code +windowrulev2 = workspace 3,class:jetbrains +windowrulev2 = workspace 3,class:sublime +windowrulev2 = workspace 2,class:firefox +windowrulev2 = workspace 8,class:discord +windowrulev2 = workspace 8 float,class:zoom +windowrulev2 = workspace 7 float,class:Blueberry.py + +# Ignore maximize requests from apps. You'll probably like this. +windowrulev2 = suppressevent maximize, class:.* + +# Fix some dragging issues with XWayland +windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 diff --git a/.config/hypr/hyprlock.conf b/.config/hypr/hyprlock.conf new file mode 100644 index 0000000..7b77fe2 --- /dev/null +++ b/.config/hypr/hyprlock.conf @@ -0,0 +1,24 @@ +# sample hyprlock.conf +# for more configuration options, refer https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock + +input-field { + monitor = + size = 30%, 60% + outline_thickness = 3 + inner_color = rgba(0, 0, 0, 0.0) # no fill + + font_color = rgb(143, 143, 143) + fade_on_empty = false + rounding = 15 + + halign = center + valign = center + font_family = JetBrainsMono Nerd Font Mono +} + +background { + path = /home/junikim/wallpaper/trees.png + color = rgb(23, 39, 41) +} + + diff --git a/.config/hypr/hyprpaper.conf b/.config/hypr/hyprpaper.conf new file mode 100644 index 0000000..42e2f51 --- /dev/null +++ b/.config/hypr/hyprpaper.conf @@ -0,0 +1,2 @@ +preload = /home/junikim/wallpaper/trees.png +wallpaper = eDP-1, /home/junikim/wallpaper/trees.png diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..bb5772f --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1,6 @@ +vim.g.mapleader = " " +require("junikim") +require("lazy").setup({ + { import = 'junikim.plugins' }, + { import = 'arch2025.plugins', enabled = true } +}) diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json new file mode 100644 index 0000000..45f4764 --- /dev/null +++ b/.config/nvim/lazy-lock.json @@ -0,0 +1,21 @@ +{ + "barbar.nvim": { "branch": "master", "commit": "53b5a2f34b68875898f0531032fbf090e3952ad7" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, + "emmet-vim": { "branch": "master", "commit": "6c511a8d7d2863066f32e25543e2bb99d505172c" }, + "everforest-nvim": { "branch": "main", "commit": "3598755ade98f87e66415cb0e15d3f99b895bdf8" }, + "gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" }, + "lazy.nvim": { "branch": "main", "commit": "ee64abc76be2b237b95d241a924b0323005b868a" }, + "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "8e46de9241d3997927af12196bd8faa0ed08c29a" }, + "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, + "nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" }, + "nvim-cmp": { "branch": "main", "commit": "ca4d3330d386e76967e53b85953c170658255ecb" }, + "nvim-lspconfig": { "branch": "master", "commit": "47f236c058f0511702286a21ba53bbf42abbd8a8" }, + "nvim-tree.lua": { "branch": "master", "commit": "c7639482a1598f4756798df1b2d72f79fe5bb34f" }, + "nvim-treesitter": { "branch": "master", "commit": "53e20aa728713af5cb4a3e0e2dcfea18975d49fc" }, + "nvim-web-devicons": { "branch": "master", "commit": "21417212f640a1dad28a1408f04468819848f5e7" }, + "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, + "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, + "vim-fugitive": { "branch": "master", "commit": "320b18fba2a4f2fe3c8225c778c687e0d2620384" }, + "vimtex": { "branch": "master", "commit": "44a2f1203ce2b6fcf1ff2b03aeca52c45f8a157e" } +} diff --git a/.config/nvim/lua/arch2025/init.lua b/.config/nvim/lua/arch2025/init.lua new file mode 100644 index 0000000..e69de29 diff --git a/.config/nvim/lua/arch2025/plugins/lualine.lua b/.config/nvim/lua/arch2025/plugins/lualine.lua new file mode 100644 index 0000000..60f0a41 --- /dev/null +++ b/.config/nvim/lua/arch2025/plugins/lualine.lua @@ -0,0 +1,31 @@ +local function getWords() + local wordcount = vim.fn.wordcount() + if wordcount.visual_words ~= nil then + return tostring(wordcount.visual_words) .. "/" .. tostring(wordcount.words) .. " W" + end + return tostring(wordcount.words) .. " W" +end + +return { + 'nvim-lualine/lualine.nvim', + dependencies = { 'nvim-tree/nvim-web-devicons' }, + init = function() + vim.opt.laststatus = 3 + end, + opts = { + options = { + icons_enabled = true, + theme = 'everforest', + section_separators = { left = '', right = '' }, + component_separators = { left = '', right = '' }, + }, + sections = { + lualine_a = { 'mode' }, + lualine_b = { 'branch', 'diff', 'diagnostics' }, + lualine_c = { 'filename' }, + lualine_x = { 'encoding', 'fileformat', 'filetype' }, + lualine_y = { getWords }, + --lualine_z = { [[require'lsp-status'.status()]] } + }, + } +} diff --git a/.config/nvim/lua/arch2025/plugins/theme.lua b/.config/nvim/lua/arch2025/plugins/theme.lua new file mode 100644 index 0000000..e7dd375 --- /dev/null +++ b/.config/nvim/lua/arch2025/plugins/theme.lua @@ -0,0 +1,15 @@ +return { + "neanias/everforest-nvim", + version = false, + lazy = false, + priority = 1000, -- make sure to load this before all the other start plugins + -- Optional; default configuration will be used if setup isn't called. + config = function() + require("everforest").setup({ + -- Your config here + transparent_background_level = 1, + background = "medium", + }) + vim.cmd.colorscheme 'everforest' + end, +} diff --git a/.config/nvim/lua/junikim/bootstrap-lazy.lua b/.config/nvim/lua/junikim/bootstrap-lazy.lua new file mode 100644 index 0000000..4bf4cea --- /dev/null +++ b/.config/nvim/lua/junikim/bootstrap-lazy.lua @@ -0,0 +1,16 @@ +-- 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) diff --git a/.config/nvim/lua/junikim/init.lua b/.config/nvim/lua/junikim/init.lua new file mode 100644 index 0000000..005e867 --- /dev/null +++ b/.config/nvim/lua/junikim/init.lua @@ -0,0 +1,4 @@ +vim.g.mapleader = " " +require("junikim.bootstrap-lazy") +require("junikim.options") +require("junikim.remaps") diff --git a/.config/nvim/lua/junikim/options.lua b/.config/nvim/lua/junikim/options.lua new file mode 100644 index 0000000..7405529 --- /dev/null +++ b/.config/nvim/lua/junikim/options.lua @@ -0,0 +1,104 @@ +vim.opt.mouse:append('a') +vim.opt.guicursor = "" +vim.opt.number = true +vim.opt.linebreak = true +vim.opt.shiftwidth = 2 +vim.opt.tabstop = 2 +vim.opt.softtabstop = 2 +vim.opt.expandtab = true +vim.opt.smarttab = true +vim.opt.shiftround = true +vim.opt.autoindent = true +vim.opt.textwidth = 80 +vim.opt.colorcolumn = "80" +vim.opt.list = true +vim.opt.wrap = false +vim.opt.conceallevel = 0 + +vim.opt.splitbelow = false +vim.opt.splitright = false + +vim.g.indentLine_fileTypeExclude = { 'text', 'tex' } + +vim.opt.undodir = vim.fn.stdpath('data') .. "/undodir" +vim.opt.undofile = true +vim.opt.hlsearch = false +vim.opt.incsearch = true + +vim.opt.nu = true +vim.opt.rnu = true +vim.opt.termguicolors = true + +vim.opt.scrolloff = 7 + +vim.cmd("filetype plugin indent on") +vim.cmd("filetype on") + +vim.api.nvim_create_autocmd("FileType", { + pattern = "python", + callback = function(args) + vim.bo.textwidth = 0 + vim.bo.formatprg = "autopep8" + vim.bo.shiftwidth = 4 + vim.bo.tabstop = 4 + vim.bo.softtabstop = 4 + end +}) + +vim.api.nvim_create_autocmd( + { "BufRead", "BufNewFile" }, + { + pattern = { "*.ms", "*.me", "*.mom" }, + callback = function(args) + vim.bo.filetype = "groff" + end + } +) + +vim.api.nvim_create_autocmd( + { "BufRead", "BufNewFile" }, + { + pattern = { "*.mdx", "*.md" }, + callback = function(args) + vim.bo.filetype = "markdown" + end + } +) + +vim.api.nvim_create_autocmd("FileType", { + pattern = { "tex", "text" }, + callback = function(args) + vim.o.smarttab = false + vim.bo.autoindent = false + end +}) + +vim.api.nvim_create_autocmd("FileType", { + pattern = { "c", "cpp", "slang" }, + callback = function(args) + vim.bo.cindent = true + end +}) + +vim.api.nvim_create_autocmd("FileType", { + pattern = "markdown", + callback = function(args) + vim.bo.shiftwidth = 2 + vim.bo.tabstop = 2 + vim.bo.softtabstop = 2 + vim.bo.autoindent = true + end +}) + +vim.api.nvim_create_autocmd("FileType", { + pattern = "go", + callback = function(args) + vim.bo.shiftwidth = 4 + vim.bo.expandtab = false + vim.bo.tabstop = 4 + vim.bo.softtabstop = 4 + vim.bo.preserveindent = true + vim.bo.copyindent = true + vim.api.nvim_set_keymap("n", "", ":w|:!cpgo test", { noremap = true }) + end +}) diff --git a/.config/nvim/lua/junikim/plugins/autopairs.lua b/.config/nvim/lua/junikim/plugins/autopairs.lua new file mode 100644 index 0000000..06228d7 --- /dev/null +++ b/.config/nvim/lua/junikim/plugins/autopairs.lua @@ -0,0 +1,7 @@ +return { + 'windwp/nvim-autopairs', + event = "InsertEnter", + config = true + -- use opts = {} for passing setup options + -- this is equivalent to setup({}) function +} diff --git a/.config/nvim/lua/junikim/plugins/barbar.lua b/.config/nvim/lua/junikim/plugins/barbar.lua new file mode 100644 index 0000000..bb3c20a --- /dev/null +++ b/.config/nvim/lua/junikim/plugins/barbar.lua @@ -0,0 +1,43 @@ +return { + 'romgrk/barbar.nvim', + dependencies = { + 'lewis6991/gitsigns.nvim', -- OPTIONAL: for git status + 'nvim-tree/nvim-web-devicons', -- OPTIONAL: for file icons + }, + init = function() + vim.g.barbar_auto_setup = false + local map = vim.api.nvim_set_keymap + local opts = { noremap = true, silent = true } + + -- Move to previous/next + map('n', ',', 'BufferPrevious', opts) + map('n', '.', 'BufferNext', opts) + -- Re-order to previous/next + map('n', '<', 'BufferMovePrevious', opts) + map('n', '>', 'BufferMoveNext', opts) + -- Goto buffer in position... + map('n', '1', 'BufferGoto 1', opts) + map('n', '2', 'BufferGoto 2', opts) + map('n', '3', 'BufferGoto 3', opts) + map('n', '4', 'BufferGoto 4', opts) + map('n', '5', 'BufferGoto 5', opts) + map('n', '6', 'BufferGoto 6', opts) + map('n', '7', 'BufferGoto 7', opts) + map('n', '8', 'BufferGoto 8', opts) + map('n', '9', 'BufferGoto 9', opts) + map('n', '0', 'BufferLast', opts) + -- Pin/unpin buffer + map('n', 'p', 'BufferPin', opts) + map('n', 'i', 'BufferPick', opts) + -- Close buffer + map('n', 'c', 'w|BufferClose', opts) + map('n', 'q', 'BufferClose!', opts) + end, + opts = { + -- lazy.nvim will automatically call setup for you. put your options here, anything missing will use the default: + -- animation = true, + -- insert_at_start = true, + -- …etc. + }, + version = '^1.0.0', -- optional: only update when a new 1.x version is released +} diff --git a/.config/nvim/lua/junikim/plugins/devicons.lua b/.config/nvim/lua/junikim/plugins/devicons.lua new file mode 100644 index 0000000..6fc7b01 --- /dev/null +++ b/.config/nvim/lua/junikim/plugins/devicons.lua @@ -0,0 +1 @@ +return { 'nvim-tree/nvim-web-devicons' } diff --git a/.config/nvim/lua/junikim/plugins/emmet.lua b/.config/nvim/lua/junikim/plugins/emmet.lua new file mode 100644 index 0000000..1e2539e --- /dev/null +++ b/.config/nvim/lua/junikim/plugins/emmet.lua @@ -0,0 +1 @@ +return { 'mattn/emmet-vim' } diff --git a/.config/nvim/lua/junikim/plugins/fugitive.lua b/.config/nvim/lua/junikim/plugins/fugitive.lua new file mode 100644 index 0000000..2cdee8f --- /dev/null +++ b/.config/nvim/lua/junikim/plugins/fugitive.lua @@ -0,0 +1,6 @@ +return { + 'tpope/vim-fugitive', + init = function() + vim.keymap.set("n", "gs", vim.cmd.Git) + end +} diff --git a/.config/nvim/lua/junikim/plugins/gitsigns.lua b/.config/nvim/lua/junikim/plugins/gitsigns.lua new file mode 100644 index 0000000..d3dff4b --- /dev/null +++ b/.config/nvim/lua/junikim/plugins/gitsigns.lua @@ -0,0 +1 @@ +return { 'lewis6991/gitsigns.nvim' } diff --git a/.config/nvim/lua/junikim/plugins/lsp.lua b/.config/nvim/lua/junikim/plugins/lsp.lua new file mode 100644 index 0000000..c1390e1 --- /dev/null +++ b/.config/nvim/lua/junikim/plugins/lsp.lua @@ -0,0 +1,101 @@ +return { + { + 'williamboman/mason.nvim', + lazy = false, + opts = {}, + }, + + -- Autocompletion + { + 'hrsh7th/nvim-cmp', + event = 'InsertEnter', + config = function() + local cmp = require('cmp') + + cmp.setup({ + sources = { + { name = 'nvim_lsp' }, + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.select_prev_item(cmp_select), + [''] = cmp.mapping.select_next_item(cmp_select), + [''] = cmp.mapping.confirm({ select = true }), + [""] = cmp.mapping.complete(), + [''] = nil, + [''] = nil, + }), + snippet = { + expand = function(args) + vim.snippet.expand(args.body) + end, + }, + }) + end + }, + + -- LSP + { + 'neovim/nvim-lspconfig', + cmd = { 'LspInfo', 'LspInstall', 'LspStart' }, + event = { 'BufReadPre', 'BufNewFile' }, + dependencies = { + { 'hrsh7th/cmp-nvim-lsp' }, + { 'williamboman/mason.nvim' }, + { 'williamboman/mason-lspconfig.nvim' }, + }, + init = function() + -- Reserve a space in the gutter + -- This will avoid an annoying layout shift in the screen + vim.opt.signcolumn = 'yes' + end, + config = function() + local lsp_defaults = require('lspconfig').util.default_config + + -- Add cmp_nvim_lsp capabilities settings to lspconfig + -- This should be executed before you configure any language server + lsp_defaults.capabilities = vim.tbl_deep_extend( + 'force', + lsp_defaults.capabilities, + require('cmp_nvim_lsp').default_capabilities() + ) + + -- LspAttach is where you enable features that only work + -- if there is a language server active in the file + vim.api.nvim_create_autocmd('LspAttach', { + desc = 'LSP actions', + callback = function(event) + local opts = { buffer = event.buf } + + vim.keymap.set('n', 'K', 'lua vim.lsp.buf.hover()', opts) + vim.keymap.set('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + vim.keymap.set('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + vim.keymap.set('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + vim.keymap.set('n', 'go', 'lua vim.lsp.buf.type_definition()', opts) + vim.keymap.set('n', 'gr', 'lua vim.lsp.buf.references()', opts) + vim.keymap.set('n', 'gs', 'lua vim.lsp.buf.signature_help()', opts) + vim.keymap.set('n', 'rn', 'lua vim.lsp.buf.rename()', opts) + vim.keymap.set({ 'n', 'x' }, 'ft', 'lua vim.lsp.buf.format({async = true})', opts) + vim.keymap.set('n', '', 'lua vim.lsp.buf.code_action()', opts) + end, + }) + + require('mason-lspconfig').setup({ + ensure_installed = { + 'tailwindcss', + 'ts_ls', + 'texlab', + 'pyright', + 'ltex', + 'jsonls' + }, + handlers = { + -- this first function is the "default handler" + -- it applies to every language server without a "custom handler" + function(server_name) + require('lspconfig')[server_name].setup({}) + end, + } + }) + end + } +} diff --git a/.config/nvim/lua/junikim/plugins/nvim-tree.lua b/.config/nvim/lua/junikim/plugins/nvim-tree.lua new file mode 100644 index 0000000..6f73cb4 --- /dev/null +++ b/.config/nvim/lua/junikim/plugins/nvim-tree.lua @@ -0,0 +1,13 @@ +return { + "nvim-tree/nvim-tree.lua", + version = "*", + lazy = false, + dependencies = { + "nvim-tree/nvim-web-devicons", + }, + config = function() + local api = require("nvim-tree.api") + vim.keymap.set("n", "", api.tree.toggle) + require("nvim-tree").setup {} + end, +} diff --git a/.config/nvim/lua/junikim/plugins/telescope.lua b/.config/nvim/lua/junikim/plugins/telescope.lua new file mode 100644 index 0000000..1866d8e --- /dev/null +++ b/.config/nvim/lua/junikim/plugins/telescope.lua @@ -0,0 +1,37 @@ +return { + 'nvim-telescope/telescope.nvim', + tag = '0.1.x', + dependencies = { 'nvim-lua/plenary.nvim' }, + config = function() + local builtin = require("telescope.builtin") + local path = require("plenary.path") + + local function git_exists() + local p = "." + while true do + local gitpath = p .. "/.git" + local d = io.open(gitpath) + if d then + d:close() + return true + else + p = p .. "/.." + end + if path:new(p):absolute() == "/" then + return false + end + end + end + + vim.keymap.set('n', '', function() + if git_exists() then + builtin.git_files() + else + builtin.find_files() + end + end, {}) + vim.keymap.set('n', 'ff', builtin.find_files, {}) + vim.keymap.set('n', 'fg', builtin.live_grep, {}) + vim.keymap.set('n', 'fh', builtin.help_tags, {}) + end +} diff --git a/.config/nvim/lua/junikim/plugins/treesitter.lua b/.config/nvim/lua/junikim/plugins/treesitter.lua new file mode 100644 index 0000000..ab9abf9 --- /dev/null +++ b/.config/nvim/lua/junikim/plugins/treesitter.lua @@ -0,0 +1,20 @@ +return { -- Highlight, edit, and navigate code + 'nvim-treesitter/nvim-treesitter', + build = ':TSUpdate', + main = 'nvim-treesitter.configs', -- Sets main module to use for opts + -- [[ Configure Treesitter ]] See `:help nvim-treesitter` + opts = { + ensure_installed = { "c", "cpp", "rust", "javascript", "typescript", "tsx", "json", "html", "latex", "bash", "python", "go", "css", "bibtex", "make", "vim", "lua", "markdown", "gitignore", "toml", "yaml", "nix" }, + -- Autoinstall languages that are not installed + auto_install = true, + sync_install = false, + highlight = { + enable = true, + -- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules. + -- If you are experiencing weird indenting issues, add the language to + -- the list of additional_vim_regex_highlighting and disabled languages for indent. + additional_vim_regex_highlighting = { 'ruby' }, + }, + indent = { enable = true, disable = { 'ruby' } }, + }, +} diff --git a/.config/nvim/lua/junikim/plugins/vimtex.lua b/.config/nvim/lua/junikim/plugins/vimtex.lua new file mode 100644 index 0000000..95f3194 --- /dev/null +++ b/.config/nvim/lua/junikim/plugins/vimtex.lua @@ -0,0 +1 @@ +return { 'lervag/vimtex' } diff --git a/.config/nvim/lua/junikim/remaps.lua b/.config/nvim/lua/junikim/remaps.lua new file mode 100644 index 0000000..3c58038 --- /dev/null +++ b/.config/nvim/lua/junikim/remaps.lua @@ -0,0 +1,53 @@ +vim.g.mapleader = " " + +vim.keymap.set("n", "", "h") +vim.keymap.set("n", "", "j") +vim.keymap.set("n", "", "k") +vim.keymap.set("n", "", "l") + +vim.keymap.set("i", "", "ā") +vim.keymap.set("i", "", "ē") +vim.keymap.set("i", "", "ī") +vim.keymap.set("i", "", "ō") +vim.keymap.set("i", "", "ū") + +vim.keymap.set("n", "", ":w|:!texbld run compile") +vim.keymap.set("n", "", ":w|:!./test.sh") + +-- hacks +vim.keymap.set("v", "J", ":m '>+1gv=gv") +vim.keymap.set("v", "K", ":m '<-2gv=gv") +vim.keymap.set("v", "gq", "gw") + +vim.keymap.set("n", "J", "mzJ`z") +vim.keymap.set("n", "", "zz") +vim.keymap.set("n", "", "zz") +vim.keymap.set("n", "n", "nzzzv") +vim.keymap.set("n", "N", "Nzzzv") + +vim.keymap.set("x", "p", [["_dP]]) +vim.keymap.set({ "n", "v" }, "y", [["+y]]) +vim.keymap.set("n", "Y", [["+Y]]) +vim.keymap.set("n", "x", "!chmod +x %", { silent = true }) +vim.keymap.set("n", "X", "!chmod -x %", { silent = true }) + + +-- execute file +vim.keymap.set("n", "r", "so ~/.config/nvim/init.lua") +vim.keymap.set("n", "e", "!%:p", { silent = true }) + +vim.keymap.set("n", "vz", "e ~/.zshrc"); +vim.keymap.set("n", "vc", "e ~/.config/nvim"); + + +if os.getenv("TMUX") ~= nil then + vim.keymap.set("n", "", [[silent !tmux neww tmuxs\; setenv WORKSPACES $WORKSPACES \;]]) + vim.keymap.set("n", "", [[silent !tmux neww cht.sh]]) +else + local function unavailable() + print("Not in a tmux session") + end + + vim.keymap.set("n", "", unavailable) + vim.keymap.set("n", "", unavailable) +end diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi new file mode 100644 index 0000000..b99dc0e --- /dev/null +++ b/.config/rofi/config.rasi @@ -0,0 +1,105 @@ +* { + font: "JetBrainsMono Nerd Font Mono Medium 11"; + + bgdark: #272E33; + bgalt: #3C4841; + bggreen: #56635F; + fg0: #A7C080; + + accent-color: #A7C080; + urgent-color: #DBBC7F; + + background-color: transparent; + text-color: @fg0; + + transparent: rgba(0,0,0,0); +} + +window { + location: center; + anchor: center; + transparency: "screenshot"; + padding: 10px; + border: 0px; + border-radius: 3px; + + background-color: @transparent; + spacing: 0; + children: [mainbox]; + orientation: horizontal; +} + +mainbox { + spacing: 0; + children: [ inputbar, message, listview ]; +} + +message { + color: @bggreen; + padding: 5px; + border-color: @fg0; + border: 0px 2px 2px 2px; + background-color: @bgdark; +} + +inputbar { + color: @fg0; + padding: 11px; + background-color: @bgalt; + + border: 1px; + border-radius: 3px 3px 0px 0px; + border-color: @bggreen; +} + +entry, prompt, case-indicator { + text-font: inherit; + text-color:inherit; +} + +prompt { + margin: 0px 1em 0em 0em ; +} + +listview { + padding: 8px; + border-radius: 0px 0px 3px 3px; + border-color: @bggreen; + border: 0px 1px 1px 1px; + background-color: rgba(46,52,64,0.9); + dynamic: false; +} + +element { + padding: 3px; + vertical-align: 0.5; + border-radius: 3px; + background-color: transparent; + color: @fg0; + text-color: rgb(216, 222, 233); +} + +element selected.normal { + background-color: @accent-color; + text-color: #2e3440; +} + +element-text, element-icon { + background-color: inherit; + text-color: inherit; +} + +button { + padding: 6px; + color: @fg0; + horizontal-align: 0.5; + + border: 2px 0px 2px 2px; + border-radius: 4px 0px 0px 4px; + border-color: @bggreen; +} + +button selected normal { + border: 2px 0px 2px 2px; + border-color: @fg0; +} diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc new file mode 100644 index 0000000..c68e9a3 --- /dev/null +++ b/.config/waybar/config.jsonc @@ -0,0 +1,218 @@ +// -*- mode: jsonc -*- +{ + // "layer": "top", // Waybar at top layer + // "position": "bottom", // Waybar position (top|bottom|left|right) + "height": 40, // Waybar height (to be removed for auto height) + // "width": 1280, // Waybar width + "spacing": 4, // Gaps between modules (4px) + "margin-top": 2, + "margin-left": 20, + "margin-right": 20, + // Choose the order of the modules + "modules-left": [ + "hyprland/workspaces", + "hyprland/window" + ], + "modules-center": [ + ], + "modules-right": [ + //"mpd", + "wireplumber", + "cpu", + //"memory", + //"temperature", + "backlight", + //"keyboard-state", + "battery", + "network", + "clock" + //"tray", + //"custom/power" + ], + "hyprland/workspaces": { + "format": "{icon}", + "format-icons": { + "1": "", + "2": "", + "3": "", + "4": "󰀑", + "5": "󰒋", + "6": "♪", + "7": "", + "8": "󰙯", + "9": "" + }, + "persistent-workspaces": { + "*": 9 + } + }, + "hyprland/window": { + "format": "👉 {}", + "rewrite": { + "(.*) — Mozilla Firefox": "🌎 $1", + "(.*) - fish": "> [$1]" + }, + "separate-outputs": true + }, + "keyboard-state": { + "numlock": true, + "capslock": true, + "format": "{name} {icon}", + "format-icons": { + "locked": "", + "unlocked": "" + } + }, + "mpd": { + "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", + "format-disconnected": "Disconnected ", + "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", + "unknown-tag": "N/A", + "interval": 5, + "consume-icons": { + "on": " " + }, + "random-icons": { + "off": " ", + "on": " " + }, + "repeat-icons": { + "on": " " + }, + "single-icons": { + "on": "1 " + }, + "state-icons": { + "paused": "", + "playing": "" + }, + "tooltip-format": "MPD (connected)", + "tooltip-format-disconnected": "MPD (disconnected)" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + "tray": { + // "icon-size": 21, + "spacing": 10 + }, + "clock": { + // "timezone": "America/New_York", + "tooltip-format": "{:%Y %B}\n{calendar}", + "format-alt": "{:%Y-%m-%d}" + }, + "cpu": { + "format": "{usage}% ", + "tooltip": false + }, + "memory": { + "format": "{}% " + }, + "temperature": { + // "thermal-zone": 2, + // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", + "critical-threshold": 80, + // "format-critical": "{temperatureC}°C {icon}", + "format": "{temperatureC}°C {icon}", + "format-icons": [ + "", + "", + "" + ] + }, + "backlight": { + // "device": "acpi_video1", + "format": "{percent}% {icon}", + "format-icons": [ + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-full": "{capacity}% {icon}", + "format-charging": "{capacity}% ", + "format-plugged": "{capacity}% ", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": [ + "", + "", + "", + "", + "" + ], + "interval": 2 + }, + "power-profiles-daemon": { + "format": "{icon}", + "tooltip-format": "Power profile: {profile}\nDriver: {driver}", + "tooltip": true, + "format-icons": { + "default": "", + "performance": "", + "balanced": "", + "power-saver": "" + } + }, + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": "{essid} ({signalStrength}%) ", + "format-ethernet": "{ipaddr}/{cidr} ", + "tooltip-format": "{ifname} via {gwaddr} ", + "format-linked": "{ifname} (No IP) ", + "format-disconnected": "Disconnected ⚠", + "format-alt": "{ifname}: {ipaddr}/{cidr}" + }, + "wireplumber": { + "format": "{volume}% {icon}", + "format-muted": "muted ", + "on-click": "helvum", + "format-icons": [ + "", + "", + "" + ] + }, + "custom/media": { + "format": "{icon} {}", + "return-type": "json", + "max-length": 40, + "format-icons": { + "spotify": "", + "default": "🎜" + }, + "escape": true, + "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder + // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name + }, + "custom/power": { + "format": "⏻ ", + "tooltip": false, + "menu": "on-click", + "menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder + "menu-actions": { + "shutdown": "shutdown", + "reboot": "reboot", + "suspend": "systemctl suspend", + "hibernate": "systemctl hibernate" + } + } +} diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..0619038 --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,213 @@ +* { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: JetBrainsMono Nerd Font Mono; + /*font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;*/ + font-size: 16px; +} + +window#waybar { + background-color: rgba(43, 48, 59, 0.9); + color: #d3c6aa; + transition-property: background-color; + transition-duration: .5s; + padding-left: 4px; + padding-right: 4px; + border-radius: 12px; +} + +window#waybar.hidden { + opacity: 0.2; +} + +window#waybar.termite { + background-color: #3F3F3F; +} + +window#waybar.chromium { + background-color: #000000; + border: none; +} + +button { + /* Use box-shadow instead of border so the text isn't offset */ + box-shadow: inset 0 -3px transparent; + /* Avoid rounded borders under each button name */ + border: none; + border-radius: 0; +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +button:hover { + background: inherit; + box-shadow: inherit; + text-shadow: inherit; +} + +/* you can set a style on hover for any module like this */ +#pulseaudio:hover { + background-color: #a37800; +} + +#window, #workspaces { + background-color: #343f44; + border: 2px solid #4f585e; + border-radius: 10px; +} + +#window { + padding-left: 4px; + padding-right: 4px; + border: 2px solid #a7c080; +} + +#workspaces button { + padding: 0 8px; + background-color: transparent; + color: #d3c6aa; +} + +#workspaces button.empty { + color: rgba(211,198,170,0.5); +} + +#workspaces button.active { + background: rgba(0, 0, 0, 0.2); + box-shadow: inset 0 -3px #d3c6aa; +} + +#workspaces button.focused { + background-color: #64727D; + box-shadow: inset 0 -3px #d3c6aa; +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#mode { + background-color: #64727D; + box-shadow: inset 0 -3px #d3c6aa; +} + +#clock, +#battery, +#cpu, +#memory, +#disk, +#temperature, +#wireplumber, +#backlight, +#network, +#pulseaudio, +#custom-media, +#tray, +#mode, +#idle_inhibitor, +#scratchpad, +#power-profiles-daemon, +#mpd { + padding: 0 10px; + color: #d3c6aa; + border-radius: 10px; + background-color: #343f44; +} + +.modules-left, +.modules-right { + padding: 4px 4px 4px 4px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + + +#clock { + border: 2px solid #e67e80; +} + +#battery { + border: 2px solid #7fbbb3; +} + +@keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } +} + +#power-profiles-daemon { + padding-right: 15px; +} + +#power-profiles-daemon.performance { + background-color: #f53c3c; + color: #ffffff; +} + +#power-profiles-daemon.balanced { + background-color: #2980b9; + color: #ffffff; +} + +#power-profiles-daemon.power-saver { + background-color: #2ecc71; + color: #000000; +} + +label:focus { + background-color: #000000; +} + +#cpu { + border: 2px solid #83c092; +} + +#memory { + background-color: #9b59b6; +} + +#disk { + background-color: #964B00; +} + +#backlight { + border: 2px solid #dbbc7f; +} + +#network { + border: 2px solid #d699b6; +} + +#wireplumber { + border: 2px solid #e67e80; +} + +#custom-media { + background-color: #66cc99; + color: #2a5c45; + min-width: 100px; +} + +#custom-media.custom-spotify { + background-color: #66cc99; +} + +#custom-media.custom-vlc { + background-color: #ffa000; +} + +#temperature { + background-color: #f0932b; +} + +#temperature.critical { + background-color: #eb4d4b; +} diff --git a/.tmux.conf b/.tmux.conf new file mode 100644 index 0000000..9ea74da --- /dev/null +++ b/.tmux.conf @@ -0,0 +1,52 @@ +set -s escape-time 0 +set -g focus-events on +set-option -g status-style fg=white,bg=black + +set-window-option -g mode-keys vi + +#set-option -g default-terminal "tmux-256color" +#set -sa terminal-overrides ",tmux-256color*:Tc" +set-option -sa terminal-overrides ",xterm*:Tc" + +unbind-key C-b +set-option -g prefix C-a +bind-key C-a send-prefix + +bind c new-window -c "#{pane_current_path}" +bind % split-window -h -c "#{pane_current_path}" +bind '"' split-window -v -c "#{pane_current_path}" + +bind -r k select-pane -U +bind -r j select-pane -D +bind -r h select-pane -L +bind -r l select-pane -R +bind -r r source-file ~/.tmux.conf +set -g mouse on + +bind-key X \ + if-shell '[ "$(tmux display -p "#{session_many_attached}")" -gt 0 ]' { + # the session is attached to multiple clients, so we can just switch the client to a different session. + choose-session + } { + # we are the last client attached to this session; kill it. + # we need to use `run-shell` to ensure that the current session number is expanded *before* we switch to the new session. + confirm -p 'Kill #S (y/n)?' { + choose-tree -s { + run-shell 'tmux switch-client -t "%%" \; kill-session -t "#S"' + } + } + } + +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'TanglingTreats/tmux-everforest' # Adds to the list of plugins +set -g @tmux-everforest 'dark-medium' # Sets the option to select the theme. Also the default. + +# Other examples: +# set -g @plugin 'github_username/plugin_name' +# set -g @plugin 'github_username/plugin_name#branch' +# set -g @plugin 'git@github.com:user/plugin' +# set -g @plugin 'git@bitbucket.com:user/plugin' + +# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) +run '~/.tmux/plugins/tpm/tpm' +#set-window-option -g status-left " #30S " diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..d923765 --- /dev/null +++ b/.zshrc @@ -0,0 +1,50 @@ +# export PATH=$HOME/bin:/usr/local/bin:$PATH + +export ZSH="$HOME/.oh-my-zsh" +ZSH_THEME="edvardm" +plugins=(git zsh-syntax-highlighting) + +source $ZSH/oh-my-zsh.sh + +set -o vi +alias gac='git add . && git commit' +alias v='nvim' +alias s='ls' +alias c='clear' +alias e='exit' +alias o='xdg-open' +alias cp='cp -r' +alias vc='nvim ~/.config/nvim' +alias vrc='vim ~/.vimrc' +alias vz='nvim ~/.zshrc' +alias sz='source ~/.zshrc' +alias sy='systemctl' +# ~/.zshrc + +export MT_EDITOR=nvim +export VISUAL=nvim + +export WORKSPACES=$HOME/Documents +f() { + fff "$@" + cd "$(cat "${XDG_CACHE_HOME:=${HOME}/.cache}/fff/.fff_d")" +} + +bindkey -s "^f" "~/.local/bin/tmuxs\n" + + +export WORKSPACES=$HOME/.config/waybar:$HOME/.config/alacritty:$HOME/.config/hypr:$HOME/.config/nvim:$WORKSPACES +alias schoolmount='sudo mount 192.168.1.179:/srv/nfs ~/nfs/rpi' +alias d2mount='sudo mount.cifs -o username=junikim,uid=$(id -u),gid=$(id -g) //157.245.86.196/d2nas ~/nfs/d2' +alias mp='ncmpcpp' +alias vh='nvim ~/.config/hypr/hyprland.conf' + +export EDITOR=nvim +export PATH=$HOME/.local/bin:$PATH +export PATH=$HOME/go/bin:$PATH + +if [[ "$(command -v nvim)" ]]; then + export EDITOR='nvim' + export MANPAGER='nvim +Man!' + export MANWIDTH=999 +fi