Git Product home page Git Product logo

dotfiles's Introduction

Arbab Khan’s Dotfiles

assets/images/home.png

Personal Configuration Of Arbab Khan

This is my personal configuration. This is not meant as a plug and play configuration.

Table of Contents

Caution

This repo is tailored towards a 1920x1080 system so things may not look correct on other resolutions. This is something yourself to get working on your system. I might make things a bit more friendly on other resolutions in the future.

Prerequisite Knowledge

You need to be a little familiar with the following to get the most out of this repo.

I have also linked good beginner resources if you need help with any of these.

About

As I said above, this is meant to be my personal configuration that I can clone on my system and get working instantly so many things are tailored to my personal liking. There may be some things you might want to change to get working to your liking.

This config also took a lot of inspiration from adi1090x’s rofi and Axarva’s xmonad configs so check them out.

Wayland

I needed to use some android apps on my system and couldn’t get anbox working so decided this would be a perfect time to configure a wayland wm for waydroid. I chose hyprland and waybar for this. It’s a bit rough around the edges and needs some more time but most things work. To get the wayland system up and running you need the following. Most but not all xmonad bindings work for hyprland.

Caution

The wayland setup has only been tested on arch linux. I don’t know if it will run just as smoothly on other distros. If you run into any issues, feel free to open an issue.

What To Install (Wayland)

Hyprland

Others

Showcase

Xmonad

assets/images/home.png

assets/images/terminal.png

assets/images/terminal2.png

assets/images/emacs.png

assets/images/neovim.png

assets/images/code.png

assets/images/code2.png

assets/images/code3.png

assets/images/rofi.png

assets/images/browser.png

assets/images/rofi-mpd.png

Hyprland

assets/images/wayland.png

Keybindings

Xmonad

Exit

KeybindFunction
super + shift + cRecompile xmonad
super + qClose window
super + shift + qOpen rofi powermenu
alt + F4Exit xmonad

Layout

KeybindFunction
super + nRefresh layouts
super + spaceCycle through layouts
super + tSnap floating window to tiling
super + upIncrease number of windows in master pane
super + downDecrease number of windows in master pane
super + f ctrl + fToggle tile
super + f shift + fToggle bar (polybar)
super + f fFullscreen focused window

Motion

KeybindFunction
super + 1…9Move from workspaces 1 to 9
super + ctrl + tabMove focus to next display
super + kMove focus to upper window
super + jMove focus to down window
super + .Warp cursor to focused window
super + shift + hHide focused window
super + h hShow last hidden window
super + tab tabMove focus to next display
super + tab shift + tabMove focus to previous display
alt + shift + tab tabSwap with next display
alt + shift + tab shift + tabSwap with previous display
super + mSwap focused window with master
super + alt + upMove window up by 10 pixels
super + alt + downMove window down by 10 pixels
super + alt + leftMove window left by 10 pixels
super + alt + rightMove window right by 10 pixels

Shift

KeybindFunction
super + shift + 1…9Shift to workspaces 1 to 9
super + shift + tab tabShift to next display
super + shift + tab shift +tabShift to previous display
super + shift + kShift to upper window
super + shift + jShift to down window

Resize

KeybindFunction
super + kp_addIncrease window size by 10 pixels
super + kp_subtractDecrease window size by 10 pixels
super + ctrl + kp_addIncrease window spacing by 10 pixels
super + ctrl + kp_subtractDecrease window spacing by 10 pixels
super + alt + kp_addIncrease screen spacing by 10 pixels
super + alt + kp_subtractDecrease screen spacing by 10 pixels

Emacs

KeybindFunction
super + e eOpen emacs
super + e super + enterOpen vterm
super + e zOpen dired

Rofi

KeybindFunction
super + d dOpen rofi drun
super + d shift + dOpen rofi run
super + d gOpen screenshot menu
super + d shift + gStop recording(in screenshot menu)
super + d xOpen mpd widget (rofi)
super + d sOpen spotify widget (rofi)
super + d bOpen browser menu(rofi)

Applications

KeybindFunction
super + enter enterLaunch terminal (alacritty)
super + a zOpen thunar
super + a shift + zOpen pcmanfm
super + a bOpen browser (firefox)
super + p rRestart bar (polybar)

Scratchpads

KeybindFunction
super + s super + enterLaunch terminal scratchpad (alacritty)
super + s xLaunch MPD player (ncmpcpp)
super + s zLaunch filemanager (lf)

Function Keys

KeybindFunction
XF86ExplorerLaunch filemanager (thunar)
XF86SearchLaunch rofi drun
XF86CalculatorLaunch calculator (qalculate)
XF86ToolsLaunch spotify
XF86AudioNextNext media (playerctl)
XF86AudioPrevPrevious media (playerctl)
XF86AudioPlayToggle media (playerctl)
XF86AudioStopStop media (playerctl)
XF86AudioMuteVolume mute (pactl)
XF86AudioRaiseVolumeVolume increase (pactl)
XF86AudioLowerVolumeVolume decrease (pactl)

What To Install

These programs are required to get you started with this config so make sure to install them. Only build them from source if you have checked your distribution’s package manager and cannot find them. If you’re on arch linux, make sure to also check the AUR.

Xmonad

Xmonad-log

Polybar

Shell

Tmux

NeoVim

lf

fzf

Rofi

MPD

Emacs

Others

Optionally

Note: Used to use i3 before xmonad, that’s why it’s here. Most things work with i3 but I mainly use it as a fallback wm.

Note: Thought of moving all my non-wm related keybindings to sxhkd but found it to be buggy and decided not to do so. You can still use it if you wish as all my bindings are configured.

Fonts

There are the fonts that are used in my configuratuin for text and icons. Make sure to install them.

Additional Notes

These are additional notes and instruction you have to follow to get this config up and running.

Xmonad

Xmonad With Polybar

Xmonad with polybar was a bit tricky to get running, I had to use xmonad-log to get things working. I have already put a compiled binary of xmonad-log in .config/polybar/scripts so no worries there but you do need to install haskell-dbus manually through your system’s package manager.

Xmonad Startup

Xmonad starts up a lot of things configured for my system, such as rclone etc. Make sure to disable the ones you don’t need.

Xmonad-ctl

Xmonad-ctl is required for exit to login manager with rofi-powermenu. Make sure to use -dynamic flag when compiling .xmonad/xmonadctl.hs

Emacs

LSP

Make sure to install the language-servers you need on your system.

Counsel-spotify

Define variables for spotify-client-id and spotify-client-secret for counsel-spotify in .emacs.d/env.el.
(defconst spotify_class_id "yourclassidhere")
(defconst spotify_class_secret "yourclasssecrethere")

If you don’t know how to get your spotify client id and secret, refer to this article.

Yasnippets

Make sure to set up the following symlink

ln -s ~/.emacs.d/yasnippet ~/emacs.d/etc

This is beacuase the no-littering package change the yas-snippet-dirs variable to ~/.emacs.d/etc/ instead to ~/.emacs.d, causing the snippets to not be in included the git repository because ~/.emacs.d/etc is in my .gitignore. The symlink fixes the issue.

Xmodmap

I have changed my caps key to ctrl and my right ctrl to caps key. If you don’t want this behavior, delete .Xmodmap.

Polybar

DIsplay

You need to set the MONITOR env to your output in .zshrc for polybar to display on the correct output.

Weather Module

You need to make a .env in your home directory with an OpenWeather API key and the code of the city you want to get the weather of. For more details on how to do this, check out my repo here.

Contributing

If you see me doing anything inefficiently in this config or you think something would be useful to me or you want to correct some error on my part, feel free to open a pull request.

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.