From 346a975e8061cc5f329ff18488c6cf9df0eee466 Mon Sep 17 00:00:00 2001 From: js0ny Date: Sat, 25 Jan 2025 21:02:00 +0000 Subject: [PATCH] feat: Add zed & awesomeWM config --- platforms/linux/awesome/rc.lua | 604 +++++++++++++++++++++++ platforms/linux/chromium-flags.conf | 12 + platforms/linux/etc/environment | 23 + platforms/linux/hypr/hyprland.conf | 22 +- platforms/linux/hypr/hyprpaper.conf | 2 +- platforms/linux/kde/elisarc | 18 + platforms/linux/mako-config | 25 + tools/nvim/lazy-lock.json | 50 +- tools/vscode/extensions/vspacecode.jsonc | 2 +- tools/zed/keymap.json | 62 +++ tools/zed/settings.json | 30 ++ tools/zed/snippets/c.json | 28 ++ 12 files changed, 843 insertions(+), 35 deletions(-) create mode 100644 platforms/linux/awesome/rc.lua create mode 100644 platforms/linux/chromium-flags.conf create mode 100644 platforms/linux/etc/environment create mode 100644 platforms/linux/kde/elisarc create mode 100644 platforms/linux/mako-config create mode 100755 tools/zed/keymap.json create mode 100644 tools/zed/settings.json create mode 100755 tools/zed/snippets/c.json diff --git a/platforms/linux/awesome/rc.lua b/platforms/linux/awesome/rc.lua new file mode 100644 index 0000000..2633e92 --- /dev/null +++ b/platforms/linux/awesome/rc.lua @@ -0,0 +1,604 @@ +-- If LuaRocks is installed, make sure that packages installed through it are +-- found (e.g. lgi). If LuaRocks is not installed, do nothing. +pcall(require, "luarocks.loader") + +-- Standard awesome library +local gears = require("gears") +local awful = require("awful") +require("awful.autofocus") +-- Widget and layout library +local wibox = require("wibox") +-- Theme handling library +local beautiful = require("beautiful") +-- Notification library +local naughty = require("naughty") +local menubar = require("menubar") +local hotkeys_popup = require("awful.hotkeys_popup") +-- Enable hotkeys help widget for VIM and other apps +-- when client with a matching name is opened: +require("awful.hotkeys_popup.keys") + +-- {{{ Error handling +-- Check if awesome encountered an error during startup and fell back to +-- another config (This code will only ever execute for the fallback config) +if awesome.startup_errors then + naughty.notify({ + preset = naughty.config.presets.critical, + title = "Oops, there were errors during startup!", + text = awesome.startup_errors, + }) +end + +-- Handle runtime errors after startup +do + local in_error = false + awesome.connect_signal("debug::error", function(err) + -- Make sure we don't go into an endless error loop + if in_error then + return + end + in_error = true + + naughty.notify({ + preset = naughty.config.presets.critical, + title = "Oops, an error happened!", + text = tostring(err), + }) + in_error = false + end) +end +-- }}} + +-- {{{ Variable definitions +-- Themes define colours, icons, font and wallpapers. +beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua") + +-- This is used later as the default terminal and editor to run. +terminal = "wezterm" +editor = os.getenv("EDITOR") or "vim" +editor_cmd = terminal .. " -e " .. editor + +-- Default modkey. +-- Usually, Mod4 is the key with a logo between Control and Alt. +-- If you do not like this or do not have such a key, +-- I suggest you to remap Mod4 to another key using xmodmap or other tools. +-- However, you can use another modifier like Mod1, but it may interact with others. +modkey = "Mod4" + +-- Table of layouts to cover with awful.layout.inc, order matters. +awful.layout.layouts = { + awful.layout.suit.tile, -- Tile by default + awful.layout.suit.floating, + awful.layout.suit.tile.left, + awful.layout.suit.tile.bottom, + awful.layout.suit.tile.top, + awful.layout.suit.fair, + awful.layout.suit.fair.horizontal, + awful.layout.suit.spiral, + awful.layout.suit.spiral.dwindle, + awful.layout.suit.max, + awful.layout.suit.max.fullscreen, + awful.layout.suit.magnifier, + awful.layout.suit.corner.nw, + -- awful.layout.suit.corner.ne, + -- awful.layout.suit.corner.sw, + -- awful.layout.suit.corner.se, +} +-- }}} + +-- {{{ Menu +-- Create a launcher widget and a main menu +myawesomemenu = { + { + "hotkeys", + function() + hotkeys_popup.show_help(nil, awful.screen.focused()) + end, + }, + { "manual", terminal .. " -e man awesome" }, + { "edit config", editor_cmd .. " " .. awesome.conffile }, + { "restart", awesome.restart }, + { + "quit", + function() + awesome.quit() + end, + }, +} + +mymainmenu = awful.menu({ + items = { + { "awesome", myawesomemenu, beautiful.awesome_icon }, + { "open terminal", terminal }, + }, +}) + +mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, menu = mymainmenu }) + +-- Menubar configuration +menubar.utils.terminal = terminal -- Set the terminal for applications that require it +-- }}} + +-- Keyboard map indicator and switcher +mykeyboardlayout = awful.widget.keyboardlayout() + +-- {{{ Wibar +-- Create a textclock widget +mytextclock = wibox.widget.textclock() + +-- Create a wibox for each screen and add it +local taglist_buttons = gears.table.join( + awful.button({}, 1, function(t) + t:view_only() + end), + awful.button({ modkey }, 1, function(t) + if client.focus then + client.focus:move_to_tag(t) + end + end), + awful.button({}, 3, awful.tag.viewtoggle), + awful.button({ modkey }, 3, function(t) + if client.focus then + client.focus:toggle_tag(t) + end + end), + awful.button({}, 4, function(t) + awful.tag.viewnext(t.screen) + end), + awful.button({}, 5, function(t) + awful.tag.viewprev(t.screen) + end) +) + +local tasklist_buttons = gears.table.join( + awful.button({}, 1, function(c) + if c == client.focus then + c.minimized = true + else + c:emit_signal("request::activate", "tasklist", { raise = true }) + end + end), + awful.button({}, 3, function() + awful.menu.client_list({ theme = { width = 250 } }) + end), + awful.button({}, 4, function() + awful.client.focus.byidx(1) + end), + awful.button({}, 5, function() + awful.client.focus.byidx(-1) + end) +) + +local function set_wallpaper(s) + -- Wallpaper + if beautiful.wallpaper then + local wallpaper = beautiful.wallpaper + -- If wallpaper is a function, call it with the screen + if type(wallpaper) == "function" then + wallpaper = wallpaper(s) + end + gears.wallpaper.maximized(wallpaper, s, true) + end +end + +-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution) +screen.connect_signal("property::geometry", set_wallpaper) + +awful.screen.connect_for_each_screen(function(s) + -- Wallpaper + set_wallpaper(s) + + -- Each screen has its own tag table. + awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1]) + + -- Create a promptbox for each screen + s.mypromptbox = awful.widget.prompt() + -- Create an imagebox widget which will contain an icon indicating which layout we're using. + -- We need one layoutbox per screen. + s.mylayoutbox = awful.widget.layoutbox(s) + s.mylayoutbox:buttons(gears.table.join( + awful.button({}, 1, function() + awful.layout.inc(1) + end), + awful.button({}, 3, function() + awful.layout.inc(-1) + end), + awful.button({}, 4, function() + awful.layout.inc(1) + end), + awful.button({}, 5, function() + awful.layout.inc(-1) + end) + )) + -- Create a taglist widget + s.mytaglist = awful.widget.taglist({ + screen = s, + filter = awful.widget.taglist.filter.all, + buttons = taglist_buttons, + }) + + -- Create a tasklist widget + s.mytasklist = awful.widget.tasklist({ + screen = s, + filter = awful.widget.tasklist.filter.currenttags, + buttons = tasklist_buttons, + }) + + -- Create the wibox + s.mywibox = awful.wibar({ position = "top", screen = s }) + + -- Add widgets to the wibox + s.mywibox:setup({ + layout = wibox.layout.align.horizontal, + { -- Left widgets + layout = wibox.layout.fixed.horizontal, + mylauncher, + s.mytaglist, + s.mypromptbox, + }, + s.mytasklist, -- Middle widget + { -- Right widgets + layout = wibox.layout.fixed.horizontal, + mykeyboardlayout, + wibox.widget.systray(), + mytextclock, + s.mylayoutbox, + }, + }) +end) +-- }}} + +-- {{{ Mouse bindings +root.buttons(gears.table.join( + awful.button({}, 3, function() + mymainmenu:toggle() + end), + awful.button({}, 4, awful.tag.viewnext), + awful.button({}, 5, awful.tag.viewprev) +)) +-- }}} + +-- {{{ Key bindings +globalkeys = gears.table.join( + awful.key({ modkey }, "s", hotkeys_popup.show_help, { description = "show help", group = "awesome" }), + awful.key({ modkey }, "Left", awful.tag.viewprev, { description = "view previous", group = "tag" }), + awful.key({ modkey }, "Right", awful.tag.viewnext, { description = "view next", group = "tag" }), + awful.key({ modkey }, "Escape", awful.tag.history.restore, { description = "go back", group = "tag" }), + + awful.key({ modkey }, "n", function() + awful.client.focus.byidx(1) + end, { description = "focus next by index", group = "client" }), + awful.key({ modkey }, "e", function() + awful.client.focus.byidx(-1) + end, { description = "focus previous by index", group = "client" }), + awful.key({ modkey }, "w", function() + mymainmenu:show() + end, { description = "show main menu", group = "awesome" }), + + -- Layout manipulation + awful.key({ modkey, "Shift" }, "n", function() + awful.client.swap.byidx(1) + end, { description = "swap with next client by index", group = "client" }), + awful.key({ modkey, "Shift" }, "e", function() + awful.client.swap.byidx(-1) + end, { description = "swap with previous client by index", group = "client" }), + awful.key({ modkey, "Control" }, "n", function() + awful.screen.focus_relative(1) + end, { description = "focus the next screen", group = "screen" }), + awful.key({ modkey, "Control" }, "e", function() + awful.screen.focus_relative(-1) + end, { description = "focus the previous screen", group = "screen" }), + awful.key({ modkey }, "u", awful.client.urgent.jumpto, { description = "jump to urgent client", group = "client" }), + awful.key({ modkey }, "Tab", function() + awful.client.focus.history.previous() + if client.focus then + client.focus:raise() + end + end, { description = "go back", group = "client" }), + + -- Standard program + awful.key({ modkey }, "Return", function() + awful.spawn(terminal) + end, { description = "open a terminal", group = "launcher" }), + awful.key({ modkey, "Control" }, "r", awesome.restart, { description = "reload awesome", group = "awesome" }), + awful.key({ modkey, "Shift" }, "q", awesome.quit, { description = "quit awesome", group = "awesome" }), + + awful.key({ modkey }, "i", function() + awful.tag.incmwfact(0.05) + end, { description = "increase master width factor", group = "layout" }), + awful.key({ modkey }, "h", function() + awful.tag.incmwfact(-0.05) + end, { description = "decrease master width factor", group = "layout" }), + awful.key({ modkey, "Shift" }, "h", function() + awful.tag.incnmaster(1, nil, true) + end, { description = "increase the number of master clients", group = "layout" }), + awful.key({ modkey, "Shift" }, "i", function() + awful.tag.incnmaster(-1, nil, true) + end, { description = "decrease the number of master clients", group = "layout" }), + awful.key({ modkey, "Control" }, "h", function() + awful.tag.incncol(1, nil, true) + end, { description = "increase the number of columns", group = "layout" }), + awful.key({ modkey, "Control" }, "i", function() + awful.tag.incncol(-1, nil, true) + end, { description = "decrease the number of columns", group = "layout" }), + awful.key({ modkey }, "space", function() + awful.spawn.with_shell("albert show") + end, { description = "select next", group = "layout" }), + awful.key({ modkey, "Shift" }, "space", function() + awful.layout.inc(-1) + end, { description = "select previous", group = "layout" }), + + awful.key({ modkey, "Control" }, "k", function() + local c = awful.client.restore() + -- Focus restored client + if c then + c:emit_signal("request::activate", "key.unminimize", { raise = true }) + end + end, { description = "restore minimized", group = "client" }), + + -- Prompt + awful.key({ modkey }, "r", function() + awful.screen.focused().mypromptbox:run() + end, { description = "run prompt", group = "launcher" }), + + awful.key({ modkey }, "x", function() + awful.prompt.run({ + prompt = "Run Lua code: ", + textbox = awful.screen.focused().mypromptbox.widget, + exe_callback = awful.util.eval, + history_path = awful.util.get_cache_dir() .. "/history_eval", + }) + end, { description = "lua execute prompt", group = "awesome" }), + -- Menubar + awful.key({ modkey }, "p", function() + menubar.show() + end, { description = "show the menubar", group = "launcher" }) +) + +clientkeys = gears.table.join( + awful.key({ modkey }, "f", function(c) + c.fullscreen = not c.fullscreen + c:raise() + end, { description = "toggle fullscreen", group = "client" }), + awful.key({ modkey, "Shift" }, "c", function(c) + c:kill() + end, { description = "close", group = "client" }), + awful.key( + { modkey, "Control" }, + "space", + awful.client.floating.toggle, + { description = "toggle floating", group = "client" } + ), + awful.key({ modkey, "Control" }, "Return", function(c) + c:swap(awful.client.getmaster()) + end, { description = "move to master", group = "client" }), + awful.key({ modkey }, "o", function(c) + c:move_to_screen() + end, { description = "move to screen", group = "client" }), + awful.key({ modkey }, "t", function(c) + c.ontop = not c.ontop + end, { description = "toggle keep on top", group = "client" }), + awful.key({ modkey }, "k", function(c) + -- The client currently has the input focus, so it cannot be + -- minimized, since minimized clients can't have the focus. + c.minimized = true + end, { description = "minimize", group = "client" }), + awful.key({ modkey }, "m", function(c) + c.maximized = not c.maximized + c:raise() + end, { description = "(un)maximize", group = "client" }), + awful.key({ modkey, "Control" }, "m", function(c) + c.maximized_vertical = not c.maximized_vertical + c:raise() + end, { description = "(un)maximize vertically", group = "client" }), + awful.key({ modkey, "Shift" }, "m", function(c) + c.maximized_horizontal = not c.maximized_horizontal + c:raise() + end, { description = "(un)maximize horizontally", group = "client" }) +) + +-- Bind all key numbers to tags. +-- Be careful: we use keycodes to make it work on any keyboard layout. +-- This should map on the top row of your keyboard, usually 1 to 9. +for i = 1, 9 do + globalkeys = gears.table.join( + globalkeys, + -- View tag only. + awful.key({ modkey }, "#" .. i + 9, function() + local screen = awful.screen.focused() + local tag = screen.tags[i] + if tag then + tag:view_only() + end + end, { description = "view tag #" .. i, group = "tag" }), + -- Toggle tag display. + awful.key({ modkey, "Control" }, "#" .. i + 9, function() + local screen = awful.screen.focused() + local tag = screen.tags[i] + if tag then + awful.tag.viewtoggle(tag) + end + end, { description = "toggle tag #" .. i, group = "tag" }), + -- Move client to tag. + awful.key({ modkey, "Shift" }, "#" .. i + 9, function() + if client.focus then + local tag = client.focus.screen.tags[i] + if tag then + client.focus:move_to_tag(tag) + end + end + end, { description = "move focused client to tag #" .. i, group = "tag" }), + -- Toggle tag on focused client. + awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9, function() + if client.focus then + local tag = client.focus.screen.tags[i] + if tag then + client.focus:toggle_tag(tag) + end + end + end, { description = "toggle focused client on tag #" .. i, group = "tag" }) + ) +end + +clientbuttons = gears.table.join( + awful.button({}, 1, function(c) + c:emit_signal("request::activate", "mouse_click", { raise = true }) + end), + awful.button({ modkey }, 1, function(c) + c:emit_signal("request::activate", "mouse_click", { raise = true }) + awful.mouse.client.move(c) + end), + awful.button({ modkey }, 3, function(c) + c:emit_signal("request::activate", "mouse_click", { raise = true }) + awful.mouse.client.resize(c) + end) +) + +-- Set keys +root.keys(globalkeys) +-- }}} + +-- {{{ Rules +-- Rules to apply to new clients (through the "manage" signal). +awful.rules.rules = { + -- All clients will match this rule. + { + rule = {}, + properties = { + border_width = beautiful.border_width, + border_color = beautiful.border_normal, + focus = awful.client.focus.filter, + raise = true, + keys = clientkeys, + buttons = clientbuttons, + screen = awful.screen.preferred, + placement = awful.placement.no_overlap + awful.placement.no_offscreen, + }, + }, + + -- Floating clients. + { + rule_any = { + instance = { + "DTA", -- Firefox addon DownThemAll. + "copyq", -- Includes session name in class. + "pinentry", + }, + class = { + "Arandr", + "Blueman-manager", + "Gpick", + "Kruler", + "MessageWin", -- kalarm. + "Sxiv", + "Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size. + "Wpa_gui", + "veromix", + "xtightvncviewer", + }, + + -- Note that the name property shown in xprop might be set slightly after creation of the client + -- and the name shown there might not match defined rules here. + name = { + "Event Tester", -- xev. + }, + role = { + "AlarmWindow", -- Thunderbird's calendar. + "ConfigManager", -- Thunderbird's about:config. + "pop-up", -- e.g. Google Chrome's (detached) Developer Tools. + }, + }, + properties = { floating = true }, + }, + + -- Add titlebars to normal clients and dialogs + { rule_any = { type = { "normal", "dialog" } }, properties = { titlebars_enabled = true } }, + + -- Set Firefox to always map on the tag named "2" on screen 1. + -- { rule = { class = "Firefox" }, + -- properties = { screen = 1, tag = "2" } }, +} +-- }}} + +-- {{{ Signals +-- Signal function to execute when a new client appears. +client.connect_signal("manage", function(c) + -- Set the windows at the slave, + -- i.e. put it at the end of others instead of setting it master. + -- if not awesome.startup then awful.client.setslave(c) end + + if awesome.startup and not c.size_hints.user_position and not c.size_hints.program_position then + -- Prevent clients from being unreachable after screen count changes. + awful.placement.no_offscreen(c) + end +end) + +-- Add a titlebar if titlebars_enabled is set to true in the rules. +client.connect_signal("request::titlebars", function(c) + -- buttons for the titlebar + local buttons = gears.table.join( + awful.button({}, 1, function() + c:emit_signal("request::activate", "titlebar", { raise = true }) + awful.mouse.client.move(c) + end), + awful.button({}, 3, function() + c:emit_signal("request::activate", "titlebar", { raise = true }) + awful.mouse.client.resize(c) + end) + ) + + awful.titlebar(c):setup({ + { -- Left + awful.titlebar.widget.iconwidget(c), + buttons = buttons, + layout = wibox.layout.fixed.horizontal, + }, + { -- Middle + { -- Title + align = "center", + widget = awful.titlebar.widget.titlewidget(c), + }, + buttons = buttons, + layout = wibox.layout.flex.horizontal, + }, + { -- Right + awful.titlebar.widget.floatingbutton(c), + awful.titlebar.widget.maximizedbutton(c), + awful.titlebar.widget.stickybutton(c), + awful.titlebar.widget.ontopbutton(c), + awful.titlebar.widget.closebutton(c), + layout = wibox.layout.fixed.horizontal(), + }, + layout = wibox.layout.align.horizontal, + }) +end) + +-- Enable sloppy focus, so that focus follows mouse. +client.connect_signal("mouse::enter", function(c) + c:emit_signal("request::activate", "mouse_enter", { raise = false }) +end) + +client.connect_signal("focus", function(c) + c.border_color = beautiful.border_focus +end) +client.connect_signal("unfocus", function(c) + c.border_color = beautiful.border_normal +end) +-- }}} +-- + +autorun = true + +autorunApps = { + "fcitx5", + "albert", +} + +if autorun then + for app = 1, #autorunApps do + awful.spawn(autorunApps[app]) + end +end + +awful.spawn.with_shell("setxkbmap -option caps:escape") +awful.spawn.with_shell("feh --bg-fill ~/Pictures/Wallpaper/current.jpg") diff --git a/platforms/linux/chromium-flags.conf b/platforms/linux/chromium-flags.conf new file mode 100644 index 0000000..1f66a07 --- /dev/null +++ b/platforms/linux/chromium-flags.conf @@ -0,0 +1,12 @@ +# $DOTFILES/platforms/linux/chromium-flags.conf +# Date: 2025-01-25 +# Author: js0ny +# Force chromium apps to use kwallet6 for password storage +# This solves the issue of chromium apps not being able to access passwords in non-plasma environments + +# Location: +# ~/.config/chromium-flags.conf +# ~/.var/app/com.vivaldi.Vivaldi/config/vivaldi-flags.conf (For flatpak) +# Linking: +# ln -sf $DOTFILES/platforms/linux/chromium-flags.conf ~/.var/app/com.vivaldi.Vivaldi/config/vivaldi-flags.conf +--password-store=kwallet6 diff --git a/platforms/linux/etc/environment b/platforms/linux/etc/environment new file mode 100644 index 0000000..4b0e152 --- /dev/null +++ b/platforms/linux/etc/environment @@ -0,0 +1,23 @@ +# $DOTFILES/platforms/linux/etc/environment +# Date: 2025-01-25 +# Author: js0ny +# Description: Environment variables that defines the applications and IME +# +# Location: +# /etc/environment +# Linking: +# cp $DOTFILES/platforms/linux/etc/environment /etc/environment +# +# This file is parsed by pam_env module +# +# Syntax: simple "KEY=VAL" pairs on separate lines +# +#QT_QPA_PLATFORMTHEME=qt5ct +#QT_STYLE_OVERRIDE=kvantum +BROWSER="com.vivaldi.Vivaldi" +EDITOR=nvim +GTK_IM_MODULE=fcitx +QT_IM_MODULE=fcitx +SDL_IM_MODULE=fcitx +XMODIFIFERS="@im=fcitx" +GLFW_IM_MODULE=fcitx diff --git a/platforms/linux/hypr/hyprland.conf b/platforms/linux/hypr/hyprland.conf index 5a1871d..72a3e6b 100644 --- a/platforms/linux/hypr/hyprland.conf +++ b/platforms/linux/hypr/hyprland.conf @@ -6,7 +6,7 @@ # Location: # $XDG_CONFIG_HOME/hypr/hyprland.conf # Linking: (Link the whole `hypr` directory) -# ln -sf $DOTFILES/platforms/linux/hyprland/hypr $XDG_CONFIG_HOME/hypr +# ln -sf $DOTFILES/platforms/linux/hypr $XDG_CONFIG_HOME/hypr # ####################################################################################### # AUTOGENERATED HYPRLAND CONFIG. @@ -38,7 +38,11 @@ xwayland { ################ # See https://wiki.hyprland.org/Configuring/Monitors/ -monitor=,preferred,auto,auto +# +# monitor=,preferred,auto,auto +# Format: +# MONITOR_NAME,RESOLUTION@REFRESH_RATE,OFFSET_XxOFFSET_Y,SCALE +monitor=DP-2,3840x2160@59,0x0,1.666667 ################### @@ -48,9 +52,9 @@ monitor=,preferred,auto,auto # See https://wiki.hyprland.org/Configuring/Keywords/ # Set programs that you use -$terminal = kitty +$terminal = wezterm-gui $fileManager = dolphin -$menu = wofi --show drun +$menu = albert show ################# @@ -62,7 +66,7 @@ $menu = wofi --show drun # exec-once = $terminal # exec-once = nm-applet & -exec-once = waybar & hyprpaper & mako & systemctl --user start hyprpolkitagent & fcitx5 +exec-once = waybar & hyprpaper & mako & systemctl --user start hyprpolkitagent & fcitx5 & albert & ############################# @@ -71,7 +75,7 @@ exec-once = waybar & hyprpaper & mako & systemctl --user start hyprpolkitagent & # See https://wiki.hyprland.org/Configuring/Environment-variables/ -env = XCURSOR_SIZE,24 +# env = XCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24 @@ -93,12 +97,14 @@ general { col.inactive_border = rgba(595959aa) # Set to true enable resizing windows by clicking and dragging on borders and gaps - resize_on_border = false + resize_on_border = true # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = false layout = dwindle + + no_border_on_floating = true } # https://wiki.hyprland.org/Configuring/Variables/#decoration @@ -193,7 +199,7 @@ input { kb_layout = us kb_variant = kb_model = - kb_options = + kb_options = caps:escape kb_rules = follow_mouse = 1 diff --git a/platforms/linux/hypr/hyprpaper.conf b/platforms/linux/hypr/hyprpaper.conf index 51d9aa6..129a0a5 100644 --- a/platforms/linux/hypr/hyprpaper.conf +++ b/platforms/linux/hypr/hyprpaper.conf @@ -6,7 +6,7 @@ # Location: # $XDG_CONFIG_HOME/hypr/hyprpaper.conf # Linking: (Link the whole `hypr` directory) -# ln -sf $DOTFILES/platforms/linux/hyprland/hypr $XDG_CONFIG_HOME/hypr +# ln -sf $DOTFILES/platforms/linux/hypr $XDG_CONFIG_HOME/hypr preload = ~/Pictures/Wallpaper/current.jpg wallpaper = DP-2, ~/Pictures/Wallpaper/current.jpg diff --git a/platforms/linux/kde/elisarc b/platforms/linux/kde/elisarc new file mode 100644 index 0000000..999f0ae --- /dev/null +++ b/platforms/linux/kde/elisarc @@ -0,0 +1,18 @@ +# $DOTFILES/platforms/linux/kde/elisarc +# Date: 2024-12-22 +# Author: js0ny +# Dolphin - KDE Music Player + +# Location: +# $XDG_CONFIG_HOME/elisarc +# Linking: +# ln -sf $DOTFILES/platforms/linux/kde/elisarc $XDG_CONFIG_HOME/elisarc + +[ElisaFileIndexer] +RootPath[$e]=$HOME/Music + +[UiSettings] +ColorScheme= + +[Views] +InitialFilesViewPath=/mnt/d/Media/Music diff --git a/platforms/linux/mako-config b/platforms/linux/mako-config new file mode 100644 index 0000000..84fb745 --- /dev/null +++ b/platforms/linux/mako-config @@ -0,0 +1,25 @@ +sort=-time +layer=overlay +background-color=#22222266 +width=450 +height=150 +border-size=1 +border-color=#d3e4c9 +border-radius=12 +icons=1 +max-icon-size=64 +default-timeout=5000 +ignore-timeout=0 +font=PingFangHK +margin=12 +padding=12,20 + +[urgency=low] +border-color=#aaaaaa + +[urgency=normal] +border-color=#cceeff + +[urgency=critical] +border-color=#ff7777 +default-timeout=0 diff --git a/tools/nvim/lazy-lock.json b/tools/nvim/lazy-lock.json index 9e52037..c6272e5 100644 --- a/tools/nvim/lazy-lock.json +++ b/tools/nvim/lazy-lock.json @@ -1,47 +1,47 @@ { - "LuaSnip": { "branch": "master", "commit": "2592b91577136dbb355a4708be1e60619456b7f6" }, + "LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" }, "alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" }, "auto-session": { "branch": "main", "commit": "021b64ed7d4ac68a37be3ad28d8e1cba5bec582c" }, - "betterTerm.nvim": { "branch": "main", "commit": "6f03af3a1ed4d054ecbcb0aa8266ddaf610aa657" }, - "bufferline.nvim": { "branch": "main", "commit": "261a72b90d6db4ed8014f7bda976bcdc9dd7ce76" }, - "catppuccin": { "branch": "main", "commit": "faf15ab0201b564b6368ffa47b56feefc92ce3f4" }, + "betterTerm.nvim": { "branch": "main", "commit": "5d3f41d9e8b3553d49764906a14e45a08dbe2308" }, + "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, + "catppuccin": { "branch": "main", "commit": "f67b886d65a029f12ffa298701fb8f1efd89295d" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, "code_runner.nvim": { "branch": "main", "commit": "65218f8f646fe61e506090522df357539642ae83" }, - "conform.nvim": { "branch": "master", "commit": "70019124aa4f2e6838be9fbd2007f6d13b27a96d" }, + "conform.nvim": { "branch": "master", "commit": "363243c03102a531a8203311d4f2ae704c620d9b" }, "copilot.vim": { "branch": "release", "commit": "87038123804796ca7af20d1b71c3428d858a9124" }, - "friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" }, - "gitsigns.nvim": { "branch": "main", "commit": "9541f5e8e24571723cb02a5c2bf078aeacc5a711" }, + "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, + "gitsigns.nvim": { "branch": "main", "commit": "d8918f06624dd53b9a82bd0e29c31bcfd541b40d" }, "hover.nvim": { "branch": "main", "commit": "140c4d0ae9397b76baa46b87c574f5377de09309" }, "kanagawa.nvim": { "branch": "master", "commit": "988082eb00b845e4afbcaa4fd8e903da8a3ab3b9" }, - "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" }, + "lazy.nvim": { "branch": "main", "commit": "d8f26efd456190241afd1b0f5235fe6fdba13d4a" }, "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, "luasnip-latex-snippets.nvim": { "branch": "main", "commit": "cab134611eb755abe9ba95f5d86969f5cece448d" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "8e46de9241d3997927af12196bd8faa0ed08c29a" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "e942edf5c85b6a2ab74059ea566cac5b3e1514a4" }, "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, "mini.pairs": { "branch": "main", "commit": "7e834c5937d95364cc1740e20d673afe2d034cdb" }, - "nvim-cmp": { "branch": "main", "commit": "ca4d3330d386e76967e53b85953c170658255ecb" }, - "nvim-lspconfig": { "branch": "master", "commit": "7b0a2f6b14485bb5a237fc1328a487ff3e4a08c5" }, - "nvim-tree.lua": { "branch": "master", "commit": "c7639482a1598f4756798df1b2d72f79fe5bb34f" }, - "nvim-treesitter": { "branch": "master", "commit": "454354e5998edb448111574e58d5f5f2d6a940bd" }, - "nvim-treesitter-context": { "branch": "master", "commit": "d0dd7ce5a9d0be1f28086e818e52fdc5c78975df" }, - "nvim-web-devicons": { "branch": "master", "commit": "203da76ecfbb4b192cf830665b03eb651b635c94" }, + "nvim-cmp": { "branch": "main", "commit": "12509903a5723a876abd65953109f926f4634c30" }, + "nvim-lspconfig": { "branch": "master", "commit": "b4d65bce97795438ab6e1974b3672c17a4865e3c" }, + "nvim-tree.lua": { "branch": "master", "commit": "d529a99f88e0dff02e0aa275db2f595cd252a2c8" }, + "nvim-treesitter": { "branch": "master", "commit": "f3d7c0dafcbc86c4d63f765649c884a03bc1360a" }, + "nvim-treesitter-context": { "branch": "master", "commit": "bece284c5322ddf6946fa4bdc383a2bc033269d7" }, + "nvim-web-devicons": { "branch": "master", "commit": "37334adf4517fecfd97c0b44e1d4718e377e9e52" }, "obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" }, - "onedarkpro.nvim": { "branch": "main", "commit": "0feb5f55dd777352f2dddd7478dd13d050864ee3" }, - "orgmode": { "branch": "master", "commit": "fccccd432f8c9b8aadba51eea09a64200d718bc1" }, - "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, + "onedarkpro.nvim": { "branch": "main", "commit": "44775f8206ee43b692e7f3dc894ddc47996ee523" }, + "orgmode": { "branch": "master", "commit": "2a5eeb38a7446d07375444e1f812cf95c0182dc5" }, + "plenary.nvim": { "branch": "master", "commit": "3707cdb1e43f5cea73afb6037e6494e7ce847a66" }, "project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" }, - "render-markdown.nvim": { "branch": "main", "commit": "634acd5da964c32f6947cd0c7802d7a116662665" }, - "telescope.nvim": { "branch": "master", "commit": "2eca9ba22002184ac05eddbe47a7fe2d5a384dfc" }, + "render-markdown.nvim": { "branch": "main", "commit": "ad055861d17afe058bd835e82292e14a64b51b1d" }, + "telescope.nvim": { "branch": "master", "commit": "415af52339215926d705cccc08145f3782c4d132" }, "vim-floaterm": { "branch": "master", "commit": "4e28c8dd0271e10a5f55142fb6fe9b1599ee6160" }, "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, "vim-just": { "branch": "main", "commit": "ed67f198e981f555c0f9e9ed5b69b4b06543a9e1" }, - "vim-wakatime": { "branch": "master", "commit": "cf51327a9e08935569614d1cb24e779ee9f45519" }, - "vimtex": { "branch": "master", "commit": "a707d39e77cb27a6d02922f269875d1727860dcf" }, - "which-key.nvim": { "branch": "main", "commit": "9b365a6428a9633e3eeb34dbef1b791511c54f70" }, + "vim-wakatime": { "branch": "master", "commit": "e46d7c4f98ee0f40782008dd60cb2a79c377fb1d" }, + "vimtex": { "branch": "master", "commit": "b4eb43603dccf33b7d8597fbe1403c6430a24886" }, + "which-key.nvim": { "branch": "main", "commit": "6cebd86917df559a88de0f806b2989799c6e6423" }, "winbar.nvim": { "branch": "main", "commit": "13739fdb31be51a1000486189662596f07a59a31" }, - "yanky.nvim": { "branch": "main", "commit": "f9b905994cccf3c55f41af3a0a1f4c76c844e411" } + "yanky.nvim": { "branch": "main", "commit": "d2696b30e389dced94d5acab728f524a25f308d2" } } diff --git a/tools/vscode/extensions/vspacecode.jsonc b/tools/vscode/extensions/vspacecode.jsonc index ab844ed..8698e86 100644 --- a/tools/vscode/extensions/vspacecode.jsonc +++ b/tools/vscode/extensions/vspacecode.jsonc @@ -9531,4 +9531,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/tools/zed/keymap.json b/tools/zed/keymap.json new file mode 100755 index 0000000..d3a9cd5 --- /dev/null +++ b/tools/zed/keymap.json @@ -0,0 +1,62 @@ +// $DOTFILES/tools/zed/keymaps.json +// Date: 2025-01-25 +// Author: js0ny +// Description: Zed keymaps + +// Location: +// GNU/Linux: ~/.config/zed/keymaps.json +// Windows: %APPDATA%\Zed\keymaps.json +// Linking: (link the whole directory) +// ln -sf $DOTFILES/tools/zed ~/.config/zed + +// Zed keymap + +// + +// For information on binding keys, see the Zed + +// documentation: https://zed.dev/docs/key-bindings + +// + +// To see the default key bindings run `zed: open default keymap` + +// from the command palette. + +[ + { + "context": "Workspace", + + "bindings": { + // "shift shift": "file_finder::Toggle" + } + }, + + { + "context": "Editor", + + "bindings": { + // "j k": ["workspace::SendKeystrokes", "escape"] + } + }, + { + "context": "vim_mode == normal || vim_mode == visual", + + "bindings": { + "N": "vim::JoinLines", + "l": "vim::InsertBefore", + "L": "vim::InsertFirstNonWhitespace" + } + }, + { + "context": "vim_mode == normal || vim_mode == visual || vim_mode == operator", + + "bindings": { + "n": "vim::Down", + "e": "vim::Up", + "i": "vim::Right", + "k": "search::SelectNextMatch", + "K": "search::SelectPrevMatch" + } + } +] diff --git a/tools/zed/settings.json b/tools/zed/settings.json new file mode 100644 index 0000000..c54a8b7 --- /dev/null +++ b/tools/zed/settings.json @@ -0,0 +1,30 @@ +// $DOTFILES/tools/zed/settings.json +// Date: 2025-01-25 +// Author: js0ny +// Description: Zed settings (jsonc) + +// Location: +// GNU/Linux: ~/.config/zed/settings.json +// Windows: %APPDATA%\Zed\settings.json +// Linking: (link the whole directory) +// ln -sf $DOTFILES/tools/zed ~/.config/zed +// +// Zed settings +// +// For information on how to configure Zed, see the Zed +// documentation: https://zed.dev/docs/configuring-zed +// +// To see all of Zed's default settings without changing your +// custom settings, run `zed: open default settings` from the +// command palette (cmd-shift-p / ctrl-shift-p) +{ + "vim_mode": true, + "ui_font_size": 16, + "buffer_font_size": 16, + "theme": { + "mode": "dark", + "light": "One Light", + "dark": "One Dark" + }, + "relative_line_numbers": true +} diff --git a/tools/zed/snippets/c.json b/tools/zed/snippets/c.json new file mode 100755 index 0000000..6291a41 --- /dev/null +++ b/tools/zed/snippets/c.json @@ -0,0 +1,28 @@ +{ + "main": { + "prefix": "main", + "body": [ + "int main() {", + " $1", + " return 0;", + "}" + ], + "description": "Main function with no arguments" + }, + "mainn": { + "prefix": "mainn", + "body": [ + "", + "int main(int argc, char *argv[]) {", + " $1", + " return 0;", + "}" + ], + "description": "Main function with arguments" + }, + "once": { + "prefix": "#once", + "body": ["#ifndef $1", "#define $1", "", "$2", "", "#endif"], + "description": "Include guard" + } +}