Compare commits

...

3 Commits

Author SHA1 Message Date
foreverpyrite
a9d2cb3e29 this tmux stuff needs refining 2025-11-09 15:23:35 -06:00
foreverpyrite
05d7845b60 Neovide copy and paste and a based Python LSP
ew python
those darn snake charmers (that's practically a slur for python devs,
right?)
2025-10-05 17:56:58 -05:00
foreverpyrite
afce2ca400 Trying some Quickshell stuff with Noctalia
See I am WAYY too lazy to write all that CSS...maybe if I were like a
graphic designer or something but I'm not.
Oddly though, this feels like a desktop environment. I'm a little
worried about battery life too.
I'm happiest that this got nightlight to work lol.
I also switched to NetworkManager for the interface.
I think doing stuff very manually was good education and I don't regret
it, but...lets be so fr there's no real reason to be doing all that.
2025-09-30 21:13:21 +00:00
12 changed files with 400 additions and 143 deletions

View File

@@ -42,10 +42,10 @@ starship init fish | source
# yet for some reason I'm not always using it
#
# Should only activate in a terminal emulator though, since it starting
# with the env of the tty instead of the wayland session is really
# annoying tbh
# with the env of the tty or neovim instead of the wayland session is
# really annoying tbh
if not tty | string match --quiet --regex '^/dev/tty[0-9]+$'
if not tty | string match --quiet --regex '^/dev/tty[0-9]+$' || set -q TMUX || set -q NVIM
# Making it a varible just in case I wanna change it some day
set DEFAULT_SESSION home
if status is-interactive && not set -q TMUX

View File

@@ -1,120 +0,0 @@
let {
$workspaces = {
type = "workspaces"
all_monitors = false
// name_map = {
// 1 = "󰙯"
// 2 = "icon:firefox"
// 3 = ""
// Games = "icon:steam"
// Code = ""
// }
}
$focused = { type = "focused" }
$launcher = {
type = "launcher"
favorites = ["firefox" "discord" "steam"]
show_names = false
show_icons = true
}
$mpris = {
type = "music"
player_type = "mpris"
on_click_middle = "playerctl play-pause"
on_scroll_up = "playerctl volume +5"
on_scroll_down = "playerctl volume -5"
}
$notifications = {
type = "notifications"
show_count = true
icons.closed_none = "󰍥"
icons.closed_some = "󱥂"
icons.closed_dnd = "󱅯"
icons.open_none = "󰍡"
icons.open_some = "󱥁"
icons.open_dnd = "󱅮"
}
$sys_info = {
type = "sys_info"
interval.memory = 30
interval.cpu = 1
interval.temps = 5
interval.disks = 300
interval.networks = 3
format = [
" {cpu_percent}% | {cpu_frequency} GHz | {temp_c@CPUTIN}°C"
" {memory_used} / {memory_total} GB ({memory_available} {swap_used} / {swap_total} GB ({swap_free} | {swap_percent}%)"
"󰋊 {disk_used#T@/:.1} / {disk_total#T@/:.1} TB ({disk_percent@/}%) | {disk_read} / {disk_write} MB/s"
"󰓢 {net_down@enp39s0} / {net_up@enp39s0} Mbps"
// "󰖡 {load_average1} | {load_average5} | {load_average15}"
"󰥔 {uptime}"
]
}
$tray = { type = "tray" }
$clock = { type = "clock" }
$clipboard = { type = "clipboard" max_items = 75 truncate.mode = "end" truncate.length = 50 }
$volume = {
type = "volume"
format = "{icon} {percentage}%"
max_volume = 100
icons.volume_high = "󰕾"
icons.volume_medium = "󰖀"
icons.volume_low = "󰕿"
icons.muted = "󰝟"
}
// -- begin custom --
$button = { type = "button" name="power-btn" label = "" on_click = "popup:toggle" }
$popup = {
type = "box"
orientation = "vertical"
widgets = [
{ type = "label" name = "header" label = "Power menu" }
{
type = "box"
widgets = [
{ type = "button" class="power-btn" label = "<span font-size='40pt'></span>" on_click = "!shutdown now" }
{ type = "button" class="power-btn" label = "<span font-size='40pt'></span>" on_click = "!reboot" }
]
}
{ type = "label" name = "uptime" label = "Uptime: {{30000:uptime -p | cut -d ' ' -f2-}}" }
]
}
$power_menu = {
type = "custom"
class = "power-menu"
bar = [ $button ]
popup = [ $popup ]
tooltip = "Up: {{30000:uptime -p | cut -d ' ' -f2-}}"
}
// -- end custom --
$left = [ $workspaces $launcher ]
$right = [ $sys_info $volume $clipboard $power_menu $clock $notifications ]
}
in {
anchor_to_edges = true
position = "top"
icon_theme = "Paper"
start = $left
end = $right
}

View File

@@ -117,7 +117,7 @@ input {
// https://yalter.github.io/niri/Configuration:-Layout
layout {
// Set gaps around windows in logical pixels.
gaps 8
gaps 4
// When to center a column when changing focus, options are:
// - "never", default behavior, focusing an off-screen column will keep at the left
@@ -165,7 +165,7 @@ layout {
// off
// How many logical pixels the ring extends out from the windows.
width 4
width 2
// Colors can be set in a variety of ways:
// - CSS named colors: "red"
@@ -274,8 +274,11 @@ layout {
// See the binds section below for more spawn examples.
// This line starts waybar, a commonly used bar for Wayland compositors.
spawn-at-startup "ironbar"
spawn-at-startup "swaync"
// spawn-at-startup "ironbar"
// spawn-at-startup "swaync"
// Trying this noctalia thing and we will go from there
spawn-at-startup "qs" "-c" "noctalia-shell"
// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup:
// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell"
@@ -348,10 +351,20 @@ window-rule {
// Example: enable rounded corners for all windows.
window-rule {
geometry-corner-radius 12
geometry-corner-radius 20
clip-to-geometry true
}
// Suggested for Noctalia
layer-rule {
match namespace="^quickshell-overview$"
place-within-backdrop true
}
debug {
honor-xdg-activation-with-invalid-serial
}
binds {
// Keys consist of modifiers separated by + signs, followed by an XKB key name
// in the end. To find an XKB name for a particular key, you may use a program
@@ -367,10 +380,29 @@ binds {
// shows a list of important hotkeys.
Mod+Shift+Slash { show-hotkey-overlay; }
// Core Noctalia binds
Mod+D { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "launcher" "toggle"; }
Mod+S { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "controlCenter" "toggle"; }
Mod+Comma { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "settings" "toggle"; }
// Audio controls
XF86AudioRaiseVolume { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "volume" "increase"; }
XF86AudioLowerVolume { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "volume" "decrease"; }
XF86AudioMute { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "volume" "muteOutput"; }
// Brightness controls
XF86MonBrightnessUp { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "brightness" "increase"; }
XF86MonBrightnessDown { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "brightness" "decrease"; }
// Utility shortcuts
Mod+V { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "launcher" "clipboard"; }
// Mod+C { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "launcher" "calculator"; }
Mod+Alt+L { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "lockScreen" "toggle"; }
// Suggested binds for running programs: terminal, app launcher, screen locker.
Mod+T hotkey-overlay-title="Open a Terminal: alacritty" { spawn "alacritty"; }
Mod+D hotkey-overlay-title="Run an Application: anyrun" { spawn "anyrun"; }
Super+Alt+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; }
Alt+Space hotkey-overlay-title="Run an Application: anyrun" { spawn "anyrun"; }
// Super+Alt+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; }
// Use spawn-sh to run a shell command. Do this if you need pipes, multiple commands, etc.
// Note: the entire command goes as a single argument. It's passed verbatim to `sh -c`.
@@ -380,9 +412,9 @@ binds {
// Example volume keys mappings for PipeWire & WirePlumber.
// The allow-when-locked=true property makes them work even when the session is locked.
// Using spawn-sh allows to pass multiple arguments together with the command.
XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; }
XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; }
XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; }
// XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; }
// XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; }
// XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; }
XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
// On the topic of this, if you ever get a media (player) manager, the numpad keys
// are KP_Divide, KP_Multiply, and KP_Subtract you weirdo
@@ -390,8 +422,8 @@ binds {
// Example brightness key mappings for brightnessctl.
// You can use regular spawn with multiple arguments too (to avoid going through "sh"),
// but you need to manually put each argument in separate "" quotes.
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; }
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; }
// XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; }
// XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; }
// Open/close the Overview: a zoomed-out view of workspaces and windows.
// You can also move the mouse into the top-left hot corner,
@@ -543,10 +575,11 @@ binds {
Mod+BracketLeft { consume-or-expel-window-left; }
Mod+BracketRight { consume-or-expel-window-right; }
// These have just messed with me lowkey
// Consume one window from the right to the bottom of the focused column.
Mod+Comma { consume-window-into-column; }
// Mod+Comma { consume-window-into-column; }
// Expel the bottom window from the focused column to the right.
Mod+Period { expel-window-from-column; }
// Mod+Period { expel-window-from-column; }
Mod+R { switch-preset-column-width; }
// Cycling through the presets in reverse order is also possible.
@@ -581,7 +614,8 @@ binds {
Mod+Shift+Equal { set-window-height "+10%"; }
// Move the focused window between the floating and the tiling layout.
Mod+V { toggle-window-floating; }
// These keybinds don't feel ergonomic in the slightest
Mod+Alt+V { toggle-window-floating; }
Mod+Shift+V { switch-focus-between-floating-and-tiling; }
// Toggle tabbed column display mode.

View File

@@ -0,0 +1,16 @@
{
"mError": "#f38ba8",
"mOnError": "#11111b",
"mOnPrimary": "#11111b",
"mOnSecondary": "#11111b",
"mOnSurface": "#cdd6f4",
"mOnSurfaceVariant": "#a3b4eb",
"mOnTertiary": "#11111b",
"mOutline": "#4c4f69",
"mPrimary": "#cba6f7",
"mSecondary": "#fab387",
"mShadow": "#11111b",
"mSurface": "#1e1e2e",
"mSurfaceVariant": "#313244",
"mTertiary": "#94e2d5"
}

View File

@@ -0,0 +1,229 @@
{
"appLauncher": {
"backgroundOpacity": 1,
"enableClipboardHistory": true,
"pinnedExecs": [
],
"position": "center",
"sortByMostUsed": true,
"useApp2Unit": false
},
"audio": {
"cavaFrameRate": 60,
"mprisBlacklist": [
],
"preferredPlayer": "",
"visualizerType": "linear",
"volumeOverdrive": false,
"volumeStep": 5
},
"bar": {
"backgroundOpacity": 1,
"density": "default",
"floating": false,
"marginHorizontal": 1.25,
"marginVertical": 0.25,
"monitors": [
],
"position": "top",
"showCapsule": true,
"widgets": {
"center": [
{
"hideUnoccupied": false,
"id": "Workspace",
"labelMode": "index"
}
],
"left": [
{
"id": "SystemMonitor",
"showCpuTemp": true,
"showCpuUsage": true,
"showDiskUsage": false,
"showMemoryAsPercent": false,
"showMemoryUsage": true,
"showNetworkStats": false
},
{
"autoHide": true,
"id": "ActiveWindow",
"scrollingMode": "hover",
"showIcon": true
},
{
"autoHide": true,
"id": "MediaMini",
"scrollingMode": "hover",
"showAlbumArt": false,
"showVisualizer": false,
"visualizerType": "linear"
}
],
"right": [
{
"id": "ScreenRecorder"
},
{
"id": "Tray"
},
{
"hideWhenZero": true,
"id": "NotificationHistory",
"showUnreadBadge": true
},
{
"id": "WiFi"
},
{
"id": "Bluetooth"
},
{
"displayMode": "onhover",
"id": "Battery",
"warningThreshold": 30
},
{
"displayMode": "onhover",
"id": "Volume"
},
{
"displayMode": "onhover",
"id": "Brightness"
},
{
"formatHorizontal": "HH:mm ddd, MMM dd",
"formatVertical": "HH mm - dd MM",
"id": "Clock",
"useMonospacedFont": true,
"usePrimaryColor": true
},
{
"customIconPath": "",
"icon": "noctalia",
"id": "ControlCenter",
"useDistroLogo": false
}
]
}
},
"brightness": {
"brightnessStep": 5
},
"colorSchemes": {
"darkMode": true,
"matugenSchemeType": "scheme-rainbow",
"predefinedScheme": "Catppuccin",
"useWallpaperColors": false
},
"dock": {
"autoHide": false,
"backgroundOpacity": 1,
"exclusive": false,
"floatingRatio": 1,
"monitors": [
],
"pinnedApps": [
]
},
"general": {
"animationDisabled": false,
"animationSpeed": 1.1500000000000001,
"avatarImage": "/home/foreverpyrite/Pictures/Pysprite/ForeverPyrite Head.png",
"dimDesktop": true,
"forceBlackScreenCorners": false,
"radiusRatio": 1,
"screenRadiusRatio": 1,
"showScreenCorners": false
},
"hooks": {
"darkModeChange": "",
"enabled": false,
"wallpaperChange": ""
},
"location": {
"name": "New York",
"showWeekNumberInCalendar": false,
"use12hourFormat": false,
"useFahrenheit": true
},
"matugen": {
"enableUserTemplates": false,
"foot": false,
"fuzzel": false,
"ghostty": false,
"gtk3": false,
"gtk4": false,
"kitty": false,
"pywalfox": false,
"qt5": false,
"qt6": false,
"vesktop": false
},
"network": {
"wifiEnabled": true
},
"nightLight": {
"autoSchedule": true,
"dayTemp": "6500",
"enabled": true,
"forced": true,
"manualSunrise": "06:30",
"manualSunset": "18:30",
"nightTemp": "4000"
},
"notifications": {
"alwaysOnTop": false,
"criticalUrgencyDuration": 15,
"doNotDisturb": false,
"lastSeenTs": 1759199713000,
"location": "top_right",
"lowUrgencyDuration": 3,
"monitors": [
],
"normalUrgencyDuration": 8,
"respectExpireTimeout": false
},
"osd": {
"autoHideMs": 2000,
"enabled": true,
"location": "top_right",
"monitors": [
]
},
"screenRecorder": {
"audioCodec": "opus",
"audioSource": "default_output",
"colorRange": "limited",
"directory": "/home/foreverpyrite/Videos",
"frameRate": 60,
"quality": "very_high",
"showCursor": true,
"videoCodec": "h264",
"videoSource": "portal"
},
"settingsVersion": 12,
"ui": {
"fontBillboard": "Inter",
"fontDefault": "NimbusSansDOT Nerd Font",
"fontFixed": "Hack Nerd Font Mono",
"idleInhibitorEnabled": false,
"monitorsScaling": [
]
},
"wallpaper": {
"directory": "/home/foreverpyrite/Pictures/Wallpapers",
"enableMultiMonitorDirectories": false,
"enabled": false,
"fillColor": "#000000",
"fillMode": "crop",
"monitors": [
],
"randomEnabled": false,
"randomIntervalSec": 300,
"setWallpaperOnAllMonitors": true,
"transitionDuration": 1500,
"transitionEdgeSmoothness": 0.05,
"transitionType": "random"
}
}

View File

@@ -1,10 +1,30 @@
-- bootstrap lazy.nvim, LazyVim and your plugins
require("config.lazy")
-- Unfortunately, the file paths are too long and break things
vim.loader.enable(false)
-- Clipboard (hopefully, right now my clipboard provider is tmux ig so...)
vim.o.clipboard = "unnamedplus"
vim.api.nvim_set_keymap("", "<D-v>", "+p<CR>", { noremap = true, silent = true })
vim.api.nvim_set_keymap("!", "<D-v>", "<C-R>+", { noremap = true, silent = true })
vim.api.nvim_set_keymap("t", "<D-v>", "<C-R>+", { noremap = true, silent = true })
vim.api.nvim_set_keymap("v", "<D-v>", "<C-R>+", { noremap = true, silent = true })
-- Is there a way I can set these in neovide config?
if vim.g.neovide then
-- Neovide copy & pasting
vim.keymap.set("n", "<D-s>", ":w<CR>") -- Save
vim.keymap.set("v", "<D-c>", '"+y') -- Copy
vim.keymap.set("n", "<D-v>", '"+P') -- Paste normal mode
vim.keymap.set("v", "<D-v>", '"+P') -- Paste visual mode
vim.keymap.set("c", "<D-v>", "<C-R>+") -- Paste command mode
vim.keymap.set("i", "<D-v>", '<ESC>l"+Pli') -- Paste insert mode
-- Neovide Scaling support
vim.g.neovide_scale_factor = 1.0
local set_scale_factor = function(value)
vim.g.nevoide_scale_factor = value
end
local change_scale_factor = function(delta)
vim.g.neovide_scale_factor = vim.g.neovide_scale_factor * delta
end
@@ -14,10 +34,10 @@ if vim.g.neovide then
vim.keymap.set("n", "<C-->", function()
change_scale_factor(1 / 1.25)
end)
-- Neovide
vim.keymap.set("n", "<C-0>", function()
set_scale_factor(1.0)
end)
-- General Neovide settings
vim.g.neovide_detach_on_quit = "always_detach"
vim.g.neovide_fullscreen = true
end
-- Unfortunately, the file paths are too long and break things
vim.loader.enable(false)

View File

@@ -2,7 +2,9 @@
"extras": [
"lazyvim.plugins.extras.lang.python",
"lazyvim.plugins.extras.lang.rust",
"lazyvim.plugins.extras.lang.toml"
"lazyvim.plugins.extras.lang.tailwind",
"lazyvim.plugins.extras.lang.toml",
"lazyvim.plugins.extras.util.mini-hipatterns"
],
"install_version": 8,
"news": {

View File

@@ -1,3 +1,8 @@
-- Options are automatically loaded before lazy.nvim startup
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
-- Add any additional options here
-- LSP Server to use for Python.
vim.g.lazyvim_python_lsp = "basedpyright"
-- Set to "ruff_lsp" to use the old LSP implementation version.
vim.g.lazyvim_python_ruff = "ruff"

View File

@@ -0,0 +1,16 @@
return {
"neovim/nvim-lspconfig",
opts = {
servers = {
basedpyright = {
settings = {
basedpyright = {
analysis = {
typeCheckingMode = "strict",
},
},
},
},
},
},
}

View File

@@ -0,0 +1,27 @@
-- I don't know why I got rid of this lol, it's not like markdown-oxide was gonna replace it
-- For configuration options: https://github.com/obsidian-nvim/obsidian.nvim/blob/main/lua/obsidian/config/default.lua
return {
"obsidian-nvim/obsidian.nvim",
version = "*", -- recommended, use latest release instead of latest commit
ft = "markdown",
-- Replace the above line with this if you only want to load obsidian.nvim for markdown files in your vault:
-- event = {
-- -- If you want to use the home shortcut '~' here you need to call 'vim.fn.expand'.
-- -- E.g. "BufReadPre " .. vim.fn.expand "~" .. "/my-vault/*.md"
-- -- refer to `:h file-pattern` for more examples
-- "BufReadPre path/to/my-vault/*.md",
-- "BufNewFile path/to/my-vault/*.md",
-- },
---@module 'obsidian'
---@type obsidian.config
opts = {
workspaces = {
{
name = "Vault",
path = "~/Obsidian/Vault/",
},
},
-- see below for full list of options 👇
},
}

View File

@@ -0,0 +1,25 @@
return {
"andweeb/presence.nvim",
opts = {
auto_update = true, -- Update activity based on autocmd events (if `false`, map or manually execute `:lua package.loaded.presence:update()`)
neovim_image_text = "certifiably NOT getting laid", -- Text displayed when hovered over the Neovim image
main_image = "neovim", -- Main image display (either "neovim" or "file")
client_id = "793271441293967371", -- Use your own Discord application client id (not recommended)
log_level = nil, -- Log messages at or above this level (one of the following: "debug", "info", "warn", "error")
debounce_timeout = 10, -- Number of seconds to debounce events (or calls to `:lua package.loaded.presence:update(<filename>, true)`)
enable_line_number = false, -- Displays the current line number instead of the current project
blacklist = {}, -- A list of strings or Lua patterns that disable Rich Presence if the current file name, path, or workspace matches
buttons = true, -- Configure Rich Presence button(s), either a boolean to enable/disable, a static table (`{{ label = "<label>", url = "<url>" }, ...}`, or a function(buffer: string, repo_url: string|nil): table)
file_assets = {}, -- Custom file asset definitions keyed by file names and extensions (see default config at `lua/presence/file_assets.lua` for reference)
show_time = true, -- Show the timer
-- Rich Presence text options
editing_text = "Editing %s", -- Format string rendered when an editable file is loaded in the buffer (either string or function(filename: string): string)
file_explorer_text = "Browsing %s", -- Format string rendered when browsing a file explorer (either string or function(file_explorer_name: string): string)
git_commit_text = "Committing changes", -- Format string rendered when committing changes in git (either string or function(filename: string): string)
plugin_manager_text = "Managing plugins", -- Format string rendered when managing plugins (either string or function(plugin_manager_name: string): string)
reading_text = "Reading %s", -- Format string rendered when a read-only or unmodifiable file is loaded in the buffer (either string or function(filename: string): string)
workspace_text = "Working on %s", -- Format string rendered when in a git repository (either string or function(project_name: string|nil, filename: string): string)
line_number_text = "Line %s out of %s", -- Format string rendered when `enable_line_number` is set to true (either string or function(line_number: number, line_count: number): string)
},
}

View File

@@ -11,6 +11,9 @@ set-option -g prefix C-a
unbind C-b
bind-key C-a send-prefix
# Clipboard lol
set -g allow-passthrough on
# Start windows and panes at 1, not 0
set -g base-index 1
setw -g pane-base-index 1