Git Product home page Git Product logo

dotfiles's Introduction

Fully-featured global themes coming, be patient

โœจ Dotfiles

2024-03-06-004525_1920x1080_daisy-noize_snip_trim_yuv420p__panel_showcase.mp4

preview

preview

๐Ÿงฑ Dependencies

# official repos (arch)
bash

# aur
picom-ftlabs-git

For added functionalities (optional)

# From the official repos:
geoclue2
# From the AUR:
wpgtk pywalfox expect playerctl

To install all of the above (on Arch) run:

sudo pacman -S bash geoclue2
yay -S picom-ftlabs-git wpgtk pywalfox expect playerctl

Not in the AUR (or any other repo)*

*Correct me if I'm wrong.

Required

Optional

๐Ÿ”ง Setup

I'm working on a setup script. You can clone the repo for now and manually move things where they belong.

Something like

git clone https://github.com/cherrynoize/dotfiles
mv -n dotfiles/* ~
mv -n dotfiles/.* ~

should generally work. Please take note of the -n (no-clobber) flag in mv commands, meaning existing files won't be replaced and you should manually take care of that.

You also need to run:

./setup.sh

from the repo directory. This is just a stub for a full installer which should render this README section obsolete one day.

๐Ÿ”„ Update

From now on you can just run:

cfg pull

and it should automatically update your dotfiles. (Please, take care of your own unstaged changes.)

โš™ Configuration

.initrc

You should copy the .github/initrc file somewhere and source it during startup. It provides configuration used all over the place. To do this you can add something like:

[ -f ~/.initrc ] && . ~/.initrc

to your ~/.xinitrc, ~/.xprofile or whatever does the trick for you.

~/.initrc is the recommended location, as that would be the default install path once an installation script is completed.

Right now it's just a stub, but I plan on condensing dotfiles-wide config as much as possible into this file.

Wpgtk

This config uses wpgtk for easier global theming and automatic colorscheme generation with pywal.

You're going to need to refer to the wiki if you want to start editing themes or creating your own.

Also, for better portability template symlinks are not hardcoded and can be (re-)generated at anytime using fix-wpg-templates.

Pfp

You might want to place your own profile picture inside of ~/.pfp. It can be any picture file with any name, such as ~/.pfp/pfp.jpg.

Neovim

The nvim configuration is based upon AstroNvim, an IDE layer for Neovim. Check out the docs for info about configuration.

๐Ÿ“ Binaries

The repo also includes a large collection of shell scripts, some collected around the internet, but most of them actually mine. Being each few hundreds LOC tops, they're not very large (bin sits at 492K at the time of writing - Nov. 16 2023), and since they're heavily integrated into most of the config it made little sense leaving them out.

$ Shell

Active development is currently only on fish. bash is currently my login shell, so the .bashrc is maintained but in a basic sense.

๐ŸŽจ Themes

Please, refer to the theme documentation for usage.

๐Ÿ›  Usage

โš  Please do not use binaries or shell aliases unless you understand what they do. Take the time to inspect the code first.

โŒ˜ Useful commands, aliases & shortcuts

You can find all binary files in ~/bin and ~/.local/bin, shell aliases in ~/.config/fish/config.fish and keyboard shortcuts in .config/sxhkd/sxhkdrc. Compiling an extensive shortcuts/commands help is in the TODO list.

This is just some basic commands to get you started.

Spawn a terminal window

"$TERMINAL" # Super+shift

Application launcher

rofi -show drun # Super+x

Run prompt

rofi -show run # Super+r

Theme selector

theme-picker # Super+space

Switch between selected theme's wallpapers

wall-picker # Super+ctrl+space

Random wallpaper

change-wallpaper # Super+Ctrl+w

Dark mode on/off

switch-mode # Super+<

Toggle dock

dock toggle # Super+z

Launch browser

"$BROWSER" # Super+Alt+w

Text editor

launch-nvim # use 'nvim' as an alias fish/bash

Fix common issues

unfuck everything # Super+Shift+Esc

โŒจ Keys

Neovim

{Alt,Shift}+Tab            Move to next/previous tab
Space;{Shift}+Tab          Move to next/previous buffer
Alt+{h,j,k,l}              Move to adjacent window
Ctrl+{h,j,k,l}             Move to adjacent window (wraparound)
Ctrl+{Left,Up,Down,Right}  Resize window
Space                      Help menu

Rofi

{Tab,Shift}+Tab  Move to next/previous entry
h,j,k,l          Vi-like keybindings for moving around
Alt+{h,j,k,l}    Where there's also a searchbar

๐Ÿ“” Tricks & tips

Auto-refresh sudo timeout

sudo privilege timeout for the shell is refreshed with sudo -v. fish already has an abbreviation set to replace sudo with sudo -v; sudo so that it gets updated each time. However, I find that cumbersome as well as annoying to have that prefix to each command and it doesn't work well with auto-completion/suggestions as well as with other abbreviations, so you can call sd rather than sudo to avoid all that. (Also, in case you're wondering, you cannot use a function because that would enter an infinite loop.)

In case it conflicts with other programs in your system, just use sudo.

๐Ÿ› Known bugs

Firefox

Some text visibility issues in light mode. (Inherited from theme)

eww

  • Widget windows closers sometimes get stuck open, causing you to accidentally open popup windows when clicking on other windows rather than close them. To fix this you could restart eww, but usually it's enough to click on the pfp icon that open the panel window once to open it, then a second time to close it.

  • eww tends to get on top of other windows after being restarted during the session. I still haven't found how I could prevent it from happening (all suggestions are welcome).

My workaround for the time being is to just toggle the bar. Besides, if you don't ever toggle it this shouldn't come up.

Music player cover

I currently use Spotify and as such I only set music to fetch cover arts from Spotify metadata. I will try to expand on this but, please, if anyone has a specific request provide me with a metadata sample (output of playerctl --player="$player" metadata mpris:artUrl) and I'll add it.

๐Ÿ”ฉ Troubleshooting

In case something's not working as expected:

unfuck everything

This might help. If it doesn't, you'll have to identify the issue and actually do something about it. (You can have a look at the known bugs.) If you find something that doesn't fit, please open an issue.

๐Ÿ“‹ TODO

Install and configuration

  • Installation script
  • Finish making initrc

Bar

  • Auto memorize bar status (open or closed) between sessions
  • Fix bar auto closing on resume after sleep

Support

  • Shortcuts/commands usage popup window

โœจ Contribute

You can have a look at the TODO and known bugs lists. Or open a PR/issue if you have found more.

If you feel like you have something to add please do.

๐Ÿ’• Sponsor

Buy me a coke ๐Ÿ’™

๐Ÿ™ Thanks

  • gh0stzk's dotfiles for inspiration as well as a lot of code stolen especially for the Rofi theme selector

And thanks to you for using my dotfiles

Bye!

dotfiles's People

Contributors

cherrynoize avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.