diff --git a/polybar/config b/polybar/config index bc5ad7d..6df34fd 100644 --- a/polybar/config +++ b/polybar/config @@ -67,7 +67,7 @@ foreground = ${colors.foreground} padding-left = 0 padding-right = 1 -font-0 = "Iosevka:size=12;2" +font-0 = "JetBrainsMono:size=11;2" font-1 = "FontAwesome:size=10;2" font-2 = "FontAwesome:size=30;7" @@ -167,8 +167,8 @@ content-background = ${colors.blue} [module/battery] type = internal/battery -battery = BAT1 -adapter = ADP1 +battery = BAT0 +adapter = AC full-at = 98 format-charging-background = ${colors.green} format-charging-foreground = ${colors.background} diff --git a/rofi/config.rasi b/rofi/config.rasi index b2035e5..8fdf10f 100644 --- a/rofi/config.rasi +++ b/rofi/config.rasi @@ -3,7 +3,7 @@ configuration { /* width: 50;*/ /* lines: 15;*/ /* columns: 1;*/ - font: "Iosevka 12"; + font: "Jetbrains Mono 12"; /* bw: 1;*/ /* location: 0;*/ /* padding: 5;*/ diff --git a/scripts/hlwm-display-switch.sh b/scripts/hlwm-display-switch.sh new file mode 100755 index 0000000..e2a4377 --- /dev/null +++ b/scripts/hlwm-display-switch.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +extern_1="HDMI1" +extern_2="DP1" +intern="eDP1" +polybar_top_padding=22 + +switch_internal() { + xrandr --output "$extern_2" --off \ + --output "$extern_1" --off \ + --output "$intern" --auto --primary + herbstclient detect_monitors + herbstclient pad 0 "$polybar_top_padding" + ~/.fehbg & + xmodmap ~/.Xmodmap +} + +switch_external() { + xrandr --output "$extern_2" --primary --auto \ + --output "$extern_1" --auto --left-of "$extern_2" \ + --output "$intern" --auto --right-of "$extern_2" + herbstclient detect_monitors + herbstclient pad 0 0 + herbstclient pad 2 0 + herbstclient pad 1 "$polybar_top_padding" + ~/.fehbg & + xmodmap ~/.Xmodmap +} + +case "$1" in + i* ) + switch_internal + ;; + e* ) + switch_external + ;; + * ) + echo "Specify new output configuration. Possibilities are: 'external' and 'internal'" + ;; +esac diff --git a/shells/fish/conf.d/90-emacs-vterm.fish b/shells/fish/conf.d/90-emacs-vterm.fish new file mode 100644 index 0000000..7f26825 --- /dev/null +++ b/shells/fish/conf.d/90-emacs-vterm.fish @@ -0,0 +1,40 @@ +function vterm_printf; + if [ -n "$TMUX" ] + # tell tmux to pass the escape sequences through + printf "\ePtmux;\e\e]%s\007\e\\" "$argv" + else if string match -q -- "screen*" "$TERM" + # GNU screen (screen, screen-256color, screen-256color-bce) + printf "\eP\e]%s\007\e\\" "$argv" + else + printf "\e]%s\e\\" "$argv" + end +end + +function vterm_prompt_end; + vterm_printf '51;A'(whoami)'@'(hostname)':'(pwd) +end +functions --copy fish_prompt vterm_old_fish_prompt +function fish_prompt --description 'Write out the prompt; do not replace this. Instead, put this at end of your file.' + # Remove the trailing newline from the original prompt. This is done + # using the string builtin from fish, but to make sure any escape codes + # are correctly interpreted, use %b for printf. + printf "%b" (string join "\n" (vterm_old_fish_prompt)) + vterm_prompt_end +end + +function vterm_cmd --description 'Run an Emacs command among the ones been defined in vterm-eval-cmds.' + set -l vterm_elisp () + for arg in $argv + set -a vterm_elisp (printf '"%s" ' (string replace -a -r '([\\\\"])' '\\\\\\\\$1' $arg)) + end + vterm_printf '51;E'(string join '' $vterm_elisp) +end + +function find_file + set -q argv[1]; or set argv[1] "." + vterm_cmd find-file (realpath "$argv") +end + +function say + vterm_cmd message "%s" "$argv" +end diff --git a/shells/fish/conf.d/nix-env.fish b/shells/fish/conf.d/nix-env.fish new file mode 100644 index 0000000..809d786 --- /dev/null +++ b/shells/fish/conf.d/nix-env.fish @@ -0,0 +1,138 @@ +# Setup Nix + +# We need to distinguish between single-user and multi-user installs. +# This is difficult because there's no official way to do this. +# We could look for the presence of /nix/var/nix/daemon-socket/socket but this will fail if the +# daemon hasn't started yet. /nix/var/nix/daemon-socket will exist if the daemon has ever run, but +# I don't think there's any protection against accidentally running `nix-daemon` as a user. +# We also can't just look for /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh because +# older single-user installs used the default profile instead of a per-user profile. +# We can still check for it first, because all multi-user installs should have it, and so if it's +# not present that's a pretty big indicator that this is a single-user install. If it does exist, +# we still need to verify the install type. To that end we'll look for a root owner and sticky bit +# on /nix/store. Multi-user installs set both, single-user installs don't. It's certainly possible +# someone could do a single-user install as root and then manually set the sticky bit but that +# would be extremely unusual. + +set -l nix_profile_path /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh +set -l single_user_profile_path ~/.nix-profile/etc/profile.d/nix.sh +if test -e $nix_profile_path + # The path exists. Double-check that this is a multi-user install. + # We can't just check for ~/.nix-profile/… because this may be a single-user install running as + # the wrong user. + + # stat is not portable. Splitting the output of ls -nd is reliable on most platforms. + set -l owner (string split -n ' ' (/bin/ls -nd /nix/store 2>/dev/null))[3] + if not test -k /nix/store -a $owner -eq 0 + # /nix/store is either not owned by root or not sticky. Assume single-user. + set nix_profile_path $single_user_profile_path + end +else + # The path doesn't exist. Assume single-user + set nix_profile_path $single_user_profile_path +end + +if test -e $nix_profile_path + # Source the nix setup script + # We're going to run the regular Nix profile under bash and then print out a few variables + for line in (env -u BASH_ENV bash -c '. "$0"; for name in PATH "${!NIX_@}"; do printf "%s=%s\0" "$name" "${!name}"; done' $nix_profile_path | string split0) + set -xg (string split -m 1 = $line) + end + + # Insert Nix's fish share directories into fish's special variables. + # nixpkgs-installed fish tries to set these up already if NIX_PROFILES is defined, which won't + # be the case when sourcing $__fish_data_dir/share/config.fish normally, but might be for a + # recursive invocation. To guard against that, we'll only insert paths that don't already exit. + # Furthermore, for the vendor_conf.d sourcing, we'll use the pre-existing presence of a path in + # $fish_function_path to determine whether we want to source the relevant vendor_conf.d folder. + + # To start, let's locally define NIX_PROFILES if it doesn't already exist. + set -al NIX_PROFILES + if test (count $NIX_PROFILES) -eq 0 + set -a NIX_PROFILES $HOME/.nix-profile + end + # Replicate the logic from nixpkgs version of $__fish_data_dir/__fish_build_paths.fish. + set -l __nix_profile_paths (string split ' ' -- $NIX_PROFILES)[-1..1] + set -l __extra_completionsdir \ + $__nix_profile_paths/etc/fish/completions \ + $__nix_profile_paths/share/fish/vendor_completions.d + set -l __extra_functionsdir \ + $__nix_profile_paths/etc/fish/functions \ + $__nix_profile_paths/share/fish/vendor_functions.d + set -l __extra_confdir \ + $__nix_profile_paths/etc/fish/conf.d \ + $__nix_profile_paths/share/fish/vendor_conf.d \ + + ### Configure fish_function_path ### + # Remove any of our extra paths that may already exist. + # Record the equivalent __extra_confdir path for any function path that exists. + set -l existing_conf_paths + for path in $__extra_functionsdir + if set -l idx (contains --index -- $path $fish_function_path) + set -e fish_function_path[$idx] + set -a existing_conf_paths $__extra_confdir[(contains --index -- $path $__extra_functionsdir)] + end + end + # Insert the paths before $__fish_data_dir. + if set -l idx (contains --index -- $__fish_data_dir/functions $fish_function_path) + # Fish has no way to simply insert into the middle of an array. + set -l new_path $fish_function_path[1..$idx] + set -e new_path[$idx] + set -a new_path $__extra_functionsdir + set fish_function_path $new_path $fish_function_path[$idx..-1] + else + set -a fish_function_path $__extra_functionsdir + end + + ### Configure fish_complete_path ### + # Remove any of our extra paths that may already exist. + for path in $__extra_completionsdir + if set -l idx (contains --index -- $path $fish_complete_path) + set -e fish_complete_path[$idx] + end + end + # Insert the paths before $__fish_data_dir. + if set -l idx (contains --index -- $__fish_data_dir/completions $fish_complete_path) + set -l new_path $fish_complete_path[1..$idx] + set -e new_path[$idx] + set -a new_path $__extra_completionsdir + set fish_complete_path $new_path $fish_complete_path[$idx..-1] + else + set -a fish_complete_path $__extra_completionsdir + end + + ### Source conf directories ### + # The built-in directories were already sourced during shell initialization. + # Any __extra_confdir that came from $__fish_data_dir/__fish_build_paths.fish was also sourced. + # As explained above, we're using the presence of pre-existing paths in $fish_function_path as a + # signal that the corresponding conf dir has also already been sourced. + # In order to simulate this, we'll run through the same algorithm as found in + # $__fish_data_dir/config.fish except we'll avoid sourcing the file if it comes from an + # already-sourced location. + # Caveats: + # * Files will be sourced in a different order than we'd ideally do (because we're coming in + # after the fact to source them). + # * If there are existing extra conf paths, files in them may have been sourced that should have + # been suppressed by paths we're inserting in front. + # * Similarly any files in $__fish_data_dir/vendor_conf.d that should have been suppressed won't + # have been. + set -l sourcelist + for file in $__fish_config_dir/conf.d/*.fish $__fish_sysconf_dir/conf.d/*.fish + # We know these paths were sourced already. Just record them. + set -l basename (string replace -r '^.*/' '' -- $file) + contains -- $basename $sourcelist + or set -a sourcelist $basename + end + for root in $__extra_confdir + for file in $root/*.fish + set -l basename (string replace -r '^.*/' '' -- $file) + contains -- $basename $sourcelist + and continue + set -a sourcelist $basename + contains -- $root $existing_conf_paths + and continue # this is a pre-existing path, it will have been sourced already + [ -f $file -a -r $file ] + and source $file + end + end +end diff --git a/shells/zshrc b/shells/zshrc index 15bdf58..50edb4a 100644 --- a/shells/zshrc +++ b/shells/zshrc @@ -11,10 +11,10 @@ else fi # Set path to oh-my-zsh installation. -if [[ "$DEFAULT_USER" == "ftu15" ]]; then +if [[ "$USER" == "ftu15" ]]; then export ZSH=/users/student1/ftu15/.oh-my-zsh else - export ZSH=/home/mmk2410/.oh-my-zsh + export ZSH=/home/$USER/.oh-my-zsh fi # Set name of the theme to load. @@ -65,12 +65,12 @@ HIST_STAMPS="dd/mm/yyyy" # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ # Example format: plugins=(rails git textmate ruby lighthouse) # Add wisely, as too many plugins slow down shell startup. -plugins=(git adb battery bower coffee command-not-found debian gitignore github git-prompt gnu-utils node npm python terminator web-search) +plugins=(git adb battery bower coffee command-not-found debian gitignore github git-prompt gnu-utils node npm python web-search) # User configuration # If on kiz, add user path -if [[ "$DEFAULT_USER" == "ftu15" ]]; then +if [[ "$USER" == "ftu15" ]]; then export PATH="/users/student1/ftu15/bin:$PATH" fi @@ -83,7 +83,8 @@ source $ZSH/oh-my-zsh.sh # Preferred editor for local and remote sessions # if [[ -n $SSH_CONNECTION ]]; then -export EDITOR='vim' +export EDITOR='es' +export VISUAL='es' # else # export EDITOR='mvim' # fi diff --git a/x/xprofile b/x/xprofile new file mode 100755 index 0000000..cdf44f8 --- /dev/null +++ b/x/xprofile @@ -0,0 +1,18 @@ +#!/bin/sh + +###################################### +### Additional X Environment variables +###################################### + +export QT_QPA_PLATFORMTHEME=qt5ct + +################################## +### Adjust for multi-monitor setup +################################## + +extern="HDMI-1" +intern="eDP-1" + +if xrandr | grep "$extern connected"; then + xrandr --output "$extern" --auto --primary --left-of "$intern" +fi