feat: goog (#1)

This commit is contained in:
Jozef Steinhübl 2024-08-08 22:36:37 +02:00 committed by GitHub
commit c3212b6149
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 195 additions and 6 deletions

View file

@ -41,3 +41,6 @@ rbenv() {
export NVM_DIR="$HOME/.nvm" export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
# moon
export PATH="$HOME/.moon/bin:$PATH"

View file

@ -3,7 +3,7 @@ require("presence").setup({
neovim_image_text = "Neovim", -- Text displayed when hovered over the Neovim image neovim_image_text = "Neovim", -- Text displayed when hovered over the Neovim image
main_image = "neovim", -- Main image display (either "neovim" or "file") main_image = "neovim", -- Main image display (either "neovim" or "file")
client_id = "793271441293967371", -- Use your own Discord application client id (not recommended) 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") log_level = "debug", -- 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)`) 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 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 blacklist = {}, -- A list of strings or Lua patterns that disable Rich Presence if the current file name, path, or workspace matches

View file

@ -24,8 +24,9 @@ return require("packer").startup(function(use)
use "theprimeagen/harpoon" use "theprimeagen/harpoon"
use "mbbill/undotree" use "mbbill/undotree"
use "tpope/vim-fugitive" use "tpope/vim-fugitive"
use "andweeb/presence.nvim" use "jiriks74/presence.nvim"
use "wakatime/vim-wakatime" use "wakatime/vim-wakatime"
use "github/copilot.vim"
use { use {
'nvim-lualine/lualine.nvim', 'nvim-lualine/lualine.nvim',

View file

@ -89,6 +89,11 @@ _G.packer_plugins = {
path = "/home/hyro/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", path = "/home/hyro/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp",
url = "https://github.com/hrsh7th/cmp-nvim-lsp" url = "https://github.com/hrsh7th/cmp-nvim-lsp"
}, },
["copilot.vim"] = {
loaded = true,
path = "/home/hyro/.local/share/nvim/site/pack/packer/start/copilot.vim",
url = "https://github.com/github/copilot.vim"
},
harpoon = { harpoon = {
loaded = true, loaded = true,
path = "/home/hyro/.local/share/nvim/site/pack/packer/start/harpoon", path = "/home/hyro/.local/share/nvim/site/pack/packer/start/harpoon",
@ -153,7 +158,7 @@ _G.packer_plugins = {
["presence.nvim"] = { ["presence.nvim"] = {
loaded = true, loaded = true,
path = "/home/hyro/.local/share/nvim/site/pack/packer/start/presence.nvim", path = "/home/hyro/.local/share/nvim/site/pack/packer/start/presence.nvim",
url = "https://github.com/andweeb/presence.nvim" url = "https://github.com/jiriks74/presence.nvim"
}, },
["telescope.nvim"] = { ["telescope.nvim"] = {
loaded = true, loaded = true,

View file

@ -1,6 +1,6 @@
tint2 & tint2 &
xcompmgr & xcompmgr &
nitrogen --restore xwallpaper --zoom ~/Pictures/Th0q7eQ.jpg
xrandr --output eDP-1 --auto --output HDMI-1 --mode 1920x1080 --rate 144 --primary --left-of eDP-1 xrandr --output eDP-1 --auto --output HDMI-1 --mode 1920x1080 --rate 144 --primary --left-of eDP-1
xbindkeys xbindkeys
xinput --set-prop "pointer:Razer Razer DeathAdder Essential" "libinput Accel Speed" -0.85 xinput --set-prop "pointer:Razer Razer DeathAdder Essential" "libinput Accel Speed" -0.85

View file

@ -12,9 +12,12 @@
</startupnotify> </startupnotify>
</action> </action>
</item> </item>
<item label="intellij"> <item label="idea">
<action name="Execute"><command>idea</command></action> <action name="Execute"><command>idea</command></action>
</item> </item>
<item label="zed">
<action name="Execute"><command>zed</command></action>
</item>
</menu> </menu>
<menu id="apps-games-menu" label="Games"> <menu id="apps-games-menu" label="Games">

View file

@ -5,6 +5,7 @@ pulse.rules = [
# Disable mic auto gain for some applications # Disable mic auto gain for some applications
matches = [ matches = [
{ application.process.binary = "chrome" } { application.process.binary = "chrome" }
{ application.process.binary = "chromium" }
{ application.process.binary = "Discord" } { application.process.binary = "Discord" }
{ application.process.binary = "teams" } { application.process.binary = "teams" }
{ application.process.binary = "skypeforlinux" } { application.process.binary = "skypeforlinux" }

56
.config/zed/settings.json Normal file
View file

@ -0,0 +1,56 @@
// 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 the `open default settings` command
// from the command palette or from `Zed` application menu.
{
"theme": "One Dark",
"ui_font_size": 15,
"buffer_font_size": 14,
// Mine
"format_on_save": "on",
"terminal": {
"font_family": "DejaVuSansM Nerd Font",
"line_height": "standard",
"font_size": 15
},
"project_panel": {
"default_width": 320
},
// ruby
"lsp": {
"solargraph": {
"initialization_options": {
"diagnostics": true,
"formatting": false
}
}
}
// The following settings have been changed from the upstream defaults to
// improve security and privacy. Here are the upstream defaults, you can
// uncomment them if you like.
//
// "features": {
// // Enable copilot (provided by an online service).
// "copilot": true,
// "inline_completion_provider": "copilot"
// },
// "assistant": {
// "version": "1",
// // Enable the assistant (provided by an online service).
// "enabled": true
// },
// "telemetry": {
// // Send debug info like crash reports to Zed Industries.
// "diagnostics": true,
// // Send anonymized usage data like what languages you're using Zed with
// // to Zed Industries.
// "metrics": true
// },
// "journal": {
// "hour_format": "hour12"
// }
}

8
.local/bin/yarn Executable file
View file

@ -0,0 +1,8 @@
#!/bin/bash
if [[ $1 == "build" ]]; then
bun run $@
exit
fi
bun $@

View file

@ -1 +1,11 @@
This repository contains my configs, themes and other stuff that I'm using on void linux. # <img src="https://voidlinux.org/assets/img/void_bg.png" width="24" /> Void Linux Configuration
My configuration files, themes and other stuff I daily use on my machine.
### How to synchronize?
You can use [goog](./goog) for automatic synchronization. Option `-s` forces goog to copy all dotfiles into directories.
```sh
$ ./goog -s
```

1
common/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
__pycache__

23
common/dump.py Normal file
View file

@ -0,0 +1,23 @@
from glob import glob
import shutil
import os
def dump(stuff: list[str]):
for pattern in stuff:
expand = os.path.expanduser(pattern)
for path in glob(expand, recursive=True):
normalized_path = path.removeprefix(os.path.expanduser("~/"))
if os.path.isdir(path):
if os.path.exists(normalized_path):
shutil.rmtree(normalized_path)
os.makedirs(normalized_path)
else:
dirname = os.path.dirname(normalized_path)
if dirname:
os.makedirs(dirname, exist_ok=True)
shutil.copy2(path, normalized_path)
exit(1)

31
common/sync.py Normal file
View file

@ -0,0 +1,31 @@
from glob import glob
import shutil
import os
def sync(stuff: list[str]):
for pattern in stuff:
normalized_pattern = pattern.removeprefix("~")
normalized_pattern = normalized_pattern.removeprefix("/")
pattern_prefix = pattern[:2] if pattern.startswith("~") else pattern[0]
overwrite = False
for path in glob(normalized_pattern, recursive=True):
system_path = os.path.expanduser(pattern_prefix + path)
if os.path.isdir(path):
os.makedirs(system_path, exist_ok=True)
else:
print(f":: Copying {path} to {system_path}")
if os.path.exists(system_path) and not overwrite:
print(f":: Path {system_path} already exists. Do you want to overwrite it with {path}? y/n/a")
ask = input()
if ask not in ("y", "a"):
continue
overwrite = ask == "a"
shutil.copy2(path, system_path)
exit(1)

15
common/util.py Normal file
View file

@ -0,0 +1,15 @@
import re
def expand(pattern: str) -> list[str]:
match = re.search(r'\{([^{}]*)\}', pattern)
if not match:
return [pattern]
pre, post = pattern[:match.start()], pattern[match.end():]
options = match.group(1).split(',')
expanded_patterns = []
for option in options:
expanded_patterns.extend(expand(pre + option + post))
return expanded_patterns

32
goog Executable file
View file

@ -0,0 +1,32 @@
#!/usr/bin/env python3
from getopt import getopt
import sys
from common.dump import dump
from common.sync import sync
from common.util import expand
stuff: list[str] = [
*expand("~/.config/{kitty,nvim,openbox,pipewire,tint2,zed}/**"),
"~/.config/starship.toml",
"~/.themes/**",
*expand("~/.local/bin/{yarn}"),
"~/.bashrc",
"~/.xbindkeysrc"
]
options, _ = getopt(sys.argv[1:], "ds", ["dump", "sync"])
for option, _ in options:
if option in ("-d", "--dump"):
dump(stuff)
break
if option in ("-s", "--sync"):
sync(stuff)
break
print("Usage: ./goog [-d | --dump] [-s | --sync]\n")
print("A simple tool for dumping dotfiles and syncing them")
exit(1)