diff --git a/UsableRice/README.md b/UsableRice/README.md new file mode 100644 index 00000000..7331d994 --- /dev/null +++ b/UsableRice/README.md @@ -0,0 +1,2 @@ +# Opafix's Dotfiles for his Usable Rice (i3/conky) + Sorry it's a mess, will upload dependancies etc soon. diff --git a/UsableRice/app-icons.json b/UsableRice/app-icons.json new file mode 100644 index 00000000..fb767165 --- /dev/null +++ b/UsableRice/app-icons.json @@ -0,0 +1,22 @@ +{ + "firefox": "firefox", + "caprine": "facebook-messenger", + "alacritty": "desktop", + "thunderbird": "envelope", + "gimp": "paint-brush", + "dolphin": "folder-open", + "vlc": "play", + "steam": "steam", + "libreoffice-writer": "file-word", + "libreoffice-calc": "file-excel", + "libreoffice-impress": "file-powerpoint", + "libreoffice-draw": "file-signature", + "libreoffice-math": "file-prescription", + "libreoffice-base": "file-medical", + "libreoffice-startcenter": "file", + "soffice": "file", + "blueman-manager": "bluetooth", + "wicd-client.py": "wifi", + "qutebrowser": "globe", + "pavucontrol": "volume-up" +} diff --git a/UsableRice/conkyrc b/UsableRice/conkyrc new file mode 100644 index 00000000..c77ce69e --- /dev/null +++ b/UsableRice/conkyrc @@ -0,0 +1,100 @@ +out_to_x no +own_window no +out_to_console yes +background no +max_text_width 0 + +# Update interval in seconds +update_interval 0.5 + +# This is the number of times Conky will update before quitting. +# Set to zero to run forever. +total_run_times 0 + +# Shortens units to a single character (kiB->k, GiB->G, etc.). Default is off. +short_units yes + +# How strict should if_up be when testing an interface for being up? +# The value is one of up, link or address, to check for the interface +# being solely up, being up and having link or being up, having link +# and an assigned IP address. +if_up_strictness address + +# Add spaces to keep things from moving about? This only affects certain objects. +# use_spacer should have an argument of left, right, or none +use_spacer left + +# Force UTF8? note that UTF8 support required XFT +override_utf8_locale no + +# number of cpu samples to average +# set to 1 to disable averaging +cpu_avg_samples 2 + +pad_percents 2 + +#template0 ${color0}\1: ${exec ~/.i3/conky/info.py \2} +#template1 ${color0}\1 \2: ${exec ~/.i3/conky/info.py \3} + + +# Stuff after 'TEXT' will be formatted on screen +TEXT + +# JSON for i3bar + +[ +${if_match ${battery_percent BAT0} <= 20 } + ${if_empty ${exec cat /sys/class/power_supply/BAT0/status | grep 'Discharging'}}${else} + {"full_text": "ВСТАВЬ ЗАРЯДКУ!!!", "urgent": true, "color": "\#da8252"}, + ${endif} +${endif} +#Battery alert + { "full_text" : "CPU ${hwmon 0 temp 1}°C" , "color": + ${if_match ${hwmon 0 temp 1} < 65} + "\#9fab63" + ${else}${if_match ${hwmon 0 temp 1}<75} + "\#48718f" + ${else}${if_match ${battery_percent}<80} + "\#d3a061" + ${else} + "\#da8252" + ${endif}${endif}${endif}}, +#Free disk space + { "full_text" : "Home ${fs_free /home} Free" , "color" : "\#b2aa87" }, +#CPU + { "full_text" : "CPU ${cpu}%" , "color" : "\#b2aa87" }, +#Ram + { "full_text" : "RAM ${memperc}%" , "color" : + ${if_match ${memperc}<90}"\#b2aa87"${else}"\#da8252"${endif} }, +#Sound + { "full_text" : "♪ ${exec pamixer --get-volume } %" , "color" : "\#b2aa87" }, +#Brightness + { "full_text" : "☀ ${exec xbacklight -get } %" , "color" : "\#b2aa87" }, + +#WIFI + {"full_text" : ${if_empty ${exec wicd-cli -i | grep "Connection status: Connected"}} + "disconnected", "color" : "\#da8252"}, + ${else} + "${exec wicd-cli -i | grep 'Connected to ' | sed -e 's/^\(.\{13\}\)//' -e 's/\(.\{27\}\)$//'}", "color" : "\#9fab63"}, + ${endif} +#Is internet + ${if_empty ${exec fping archlinux.org -c 1 -t 300 | grep '0% loss'}} + { "full_text" : "E N/A" , "color" : "\#da8252" }, + ${else} + { "full_text" : "E" , "color" : "\#9fab63" }, + ${endif} +#Battery + { "full_text": "${battery_percent} %", "color": + ${if_empty ${exec cat /sys/class/power_supply/BAT0/status | grep 'Discharging'}} + "\#9fab63" + ${else}${if_match ${battery_percent}<20} + "\#da8252" + ${else}${if_match ${battery_percent}<50} + "\#d3a061" + ${else} + "\#b2aa87" + ${endif}${endif}${endif}}, +#Date + {"full_text" : "${time %Y/%m/%d} ${time %H:%M:%S}", "color" : "\#b2aa87"} +], + diff --git a/UsableRice/i3-quiet-togglebar.py b/UsableRice/i3-quiet-togglebar.py new file mode 100755 index 00000000..4e233ba4 --- /dev/null +++ b/UsableRice/i3-quiet-togglebar.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 + +from subprocess import run, check_output +from i3ipc.aio import Connection +from i3ipc import Event +import asyncio + +async def main(): + def on_event(self, e): + ws = 99 + if e.current.num == ws: + run('i3-msg bar mode invisible'.split()) + run('polybar-msg cmd hide'.split()) + elif e.old and e.old.num == ws: + run('i3-msg bar mode dock'.split()) + run('polybar-msg cmd show'.split()) + + c = await Connection(auto_reconnect=True).connect() + workspaces = await c.get_workspaces() + c.on(Event.WORKSPACE_FOCUS, on_event) + await c.main() + +asyncio.get_event_loop().run_until_complete(main()) diff --git a/UsableRice/i3-quiet.py b/UsableRice/i3-quiet.py new file mode 100755 index 00000000..10a6d673 --- /dev/null +++ b/UsableRice/i3-quiet.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 + +import sys +import json +import subprocess +import os + +ZEN_NUMBER = 99 +ZEN_NAME = 'zen' + +WIDTH_PERC=90 +MAX_WIDTH=1920 +HEIGHT_PERC=90 +MAX_HEIGHT=1024 + +ZEN_BORDER = 'none' +DEFAULT_BORDER = 'none' + +ZEN_FILE_PATH = os.path.join(os.environ['HOME'], '.config/i3/.i3-quiet.json') + +def enable_zen_mode(workspace): + width = round(min(workspace['rect']['width'] * WIDTH_PERC / 100, MAX_WIDTH)) + height = round(min(workspace['rect']['height'] * HEIGHT_PERC / 100, MAX_HEIGHT)) + workspace_name = '{}: {}'.format(ZEN_NUMBER, workspace['name']) + with open(ZEN_FILE_PATH, 'w') as zen_file: + json.dump(workspace, zen_file) + return ';'.join([ + 'move container to workspace {}'.format(workspace_name), + 'workspace {}'.format(workspace_name), + 'floating enable', + 'border {}'.format(ZEN_BORDER), + 'resize set width {}'.format(width), + 'resize set height {}'.format(height), + 'move position center' + ]) + +def disable_zen_mode(workspace): + return ';'.join([ + 'move container to workspace number {}'.format(workspace['num']), + 'workspace number {}'.format(workspace['num']), + 'floating disable', + 'border {}'.format(DEFAULT_BORDER) + ]) + +def goto_zen(workspace_name): + return 'workspace {}'.format(workspace_name) + +out = subprocess.run(['i3-msg', '-t', 'get_workspaces'], capture_output=True) +workspaces = json.loads(out.stdout) + +with open(ZEN_FILE_PATH, 'r') as zen_file: + try: + workspace_previous = json.load(zen_file) + except: + workspace_previous = None +workspace_current = list(filter(lambda w: w['focused'], workspaces))[0] +workspace_zen = list(filter(lambda w: w['num'] == ZEN_NUMBER, workspaces)) + +if __name__ == '__main__': + if len(sys.argv) > 1: + if len(workspace_zen): + msg = disable_zen_mode(workspace_previous) + else: + if len(workspace_zen): + msg = goto_zen(workspace_zen[0]['name']) + else: + msg = enable_zen_mode(workspace_current) + print(msg) + subprocess.run(['i3-msg', msg]) + diff --git a/UsableRice/i3config b/UsableRice/i3config new file mode 100644 index 00000000..c2e8e320 --- /dev/null +++ b/UsableRice/i3config @@ -0,0 +1,377 @@ +################################################################################### +# ____ __ _ _ _ ____ __ _ # +# / __ \ / _(_) ( ) (_)___ \ / _(_) # +# | | | |_ __ __ _| |_ ___ _|/ ___ _ __) | ___ ___ _ __ | |_ _ __ _ # +# | | | | '_ \ / _` | _| \ \/ / / __| | ||__ < / __/ _ \| '_ \| _| |/ _` | # +# | |__| | |_) | (_| | | | |> < \__ \ | |___) | | (_| (_) | | | | | | | (_| | # +# \____/| .__/ \__,_|_| |_/_/\_\ |___/ |_|____/ \___\___/|_| |_|_| |_|\__, | # +# / ____| | | | _ | ____| | | __/ | # +# | (___ |_| _ ___| |_ ___ _ __ ___ (_) | |__ ___ __ _ _ __ _ __ | | __|___/ _ # +# \___ \| | | / __| __/ _ \ '_ ` _ \ | __/ _ \/ _` | '__| '_ \| |/ _ \ | | | # +# ____) | |_| \__ \ || __/ | | | | |_ | | | __/ (_| | | | | | | | __/ |_| | # +# |_____/ \__, |___/\__\___|_| |_| |_(_) |_| \___|\__,_|_| |_| |_|_|\___|\__, | # +# __/ | __/ | # +# |___/ |___/ # +################################################################################### +# Last Edit: 2020/01/31 +################################################################################### + +set $mod Mod4 +set $alt Mod1 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +font xft:Fira Sans:size=8 + +############################################################ +# _ __ ____ _ _ _ # +# | |/ / | _ \(_) | (_) # +# | ' / ___ _ _ | |_) |_ _ __ __| |_ _ __ __ _ ___ # +# | < / _ \ | | | | _ <| | '_ \ / _` | | '_ \ / _` / __| # +# | . \ __/ |_| | | |_) | | | | | (_| | | | | | (_| \__ \ # +# |_|\_\___|\__, | |____/|_|_| |_|\__,_|_|_| |_|\__, |___/ # +# __/ | __/ | # +# |___/ |___/ # +############################################################ + +# Connect to eduroam +bindsym $mod+Shift+e exec gksudo $HOME/.bin/eduroam_connect + +# Sticky Toggle +bindsym $mod+Shift+s sticky toggle + +# Quiet mode +bindsym $mod+z exec $HOME/.config/i3/i3-quiet.py +bindsym $mod+Shift+z exec $HOME/.config/i3/i3-quiet.py toggle +exec_always $HOME/.config/i3/i3-quiet-togglebar.py + +## Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# kill focused window +bindsym $mod+Shift+q kill + +# start dmenu (a program launcher) +# bindsym $mod+d exec dmenu + +# Rofi bindings +bindsym $mod+d exec ~/.config/rofi/scripts/appsmenu.sh +bindsym $mod+c exec ~/.config/rofi/scripts/i3layoutmenu.sh +bindsym $mod+p exec ~/.config/rofi/scripts/powermenu.sh +bindsym $mod+Print exec ~/.config/rofi/scripts/scrotmenu.sh +# bindsym $mod+shift+d exec rofi -show window + +# blank windows (weird) +bindsym $mod+F7 exec i3 open && feh --bg-fill ~/.wallpaper + +# enable Alt+Tab Functionality +bindsym $mod+Tab workspace next +bindsym $mod+Shift+Tab workspace prev + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+semicolon move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+a focus parent + +# reload the configuration file +bindsym $mod+Shift+c reload + +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart + +# exit i3 (logs you out of your X session) +# bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" + +# Pulse Audio Controls +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound + +# Sreen brightness controls +bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 5 # increase screen brightness +bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 5 # decrease screen brightness + +# Media player controls +bindsym XF86AudioPlay exec --no-startup-id playerctl play +bindsym XF86AudioPause exec --no-startup-id playerctl pause +bindsym XF86AudioNext exec --no-startup-id playerctl next +bindsym XF86AudioPrev exec --no-startup-id playerctl previous + +############################################################# +# __ __ _ # +# \ \ / / | | # +# \ \ /\ / /__ _ __| | _____ _ __ __ _ ___ ___ ___ # +# \ \/ \/ / _ \| '__| |/ / __| '_ \ / _` |/ __/ _ \/ __| # +# \ /\ / (_) | | | <\__ \ |_) | (_| | (_| __/\__ \ # +# \/ \/ \___/|_| |_|\_\___/ .__/ \__,_|\___\___||___/ # +# | | # +# |_| # +# # +############################################################# + +# Define names for default workspaces for which we configure key bindings later on. +# We use variables to avoid repeating the names in multiple places. +set $ws1 "1" +set $ws2 "2" +set $ws3 "3" +set $ws4 "4" +set $ws5 "5" +set $ws6 "6" +set $ws7 "7" +set $ws8 "8" +set $ws9 "9" +set $ws10 "10" + +# switch to workspace +bindsym $mod+1 workspace number 1 +bindsym $mod+2 workspace number 2 +bindsym $mod+3 workspace number 3 +bindsym $mod+4 workspace number 4 +bindsym $mod+5 workspace number 5 +bindsym $mod+6 workspace number 6 +bindsym $mod+7 workspace number 7 +bindsym $mod+8 workspace number 8 +bindsym $mod+9 workspace number 9 +bindsym $mod+0 workspace number 10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace number 1 +bindsym $mod+Shift+2 move container to workspace number 2 +bindsym $mod+Shift+3 move container to workspace number 3 +bindsym $mod+Shift+4 move container to workspace number 4 +bindsym $mod+Shift+5 move container to workspace number 5 +bindsym $mod+Shift+6 move container to workspace number 6 +bindsym $mod+Shift+7 move container to workspace number 7 +bindsym $mod+Shift+8 move container to workspace number 8 +bindsym $mod+Shift+9 move container to workspace number 9 +bindsym $mod+Shift+0 move container to workspace number 10 + +################################## +# __ __ _ # +# | \/ | | | # +# | \ / | ___ __| | ___ ___ # +# | |\/| |/ _ \ / _` |/ _ \/ __| # +# | | | | (_) | (_| | __/\__ \ # +# |_| |_|\___/ \__,_|\___||___/ # +# # +################################## + +# Change gaps +set $mode_gaps Gaps: (o) outer, (i) inner +set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) +set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) +bindsym $mod+Shift+g mode "$mode_gaps" + +mode "$mode_gaps" { + bindsym o mode "$mode_gaps_outer" + bindsym i mode "$mode_gaps_inner" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +mode "$mode_gaps_inner" { + bindsym plus gaps inner current plus 5 + bindsym minus gaps inner current minus 5 + bindsym 0 gaps inner current set 0 + + bindsym Shift+plus gaps inner all plus 5 + bindsym Shift+minus gaps inner all minus 5 + bindsym Shift+0 gaps inner all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} +mode "$mode_gaps_outer" { + bindsym plus gaps outer current plus 5 + bindsym minus gaps outer current minus 5 + bindsym 0 gaps outer current set 0 + + bindsym Shift+plus gaps outer all plus 5 + bindsym Shift+minus gaps outer all minus 5 + bindsym Shift+0 gaps outer all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# resize window (you can also use the mouse for that) +bindsym $mod+r mode "resize" +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym semicolon resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape or $mod+r + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} + +#Application Launcher +set $launcher "application launcher: [w]eb [e]mails [t]erminal [f]iles [s]team [a]udio" +bindsym $mod+Return mode $launcher +mode $launcher { + bindsym w exec --no-startup-id "qutebrowser" mode "default" + bindsym e exec --no-startup-id "thunderbird" mode "default" + bindsym t exec --no-startup-id "alacritty" mode "default" + bindsym s exec --no-startup-id "steam" mode "default" + bindsym a exec --no-startup-id "pavucontrol" mode "default" + bindsym f exec --no-startup-id "dolphin" mode "default" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +#Power Menu +set $sysmenu "system: [r]eload [e]xit [l]ock [p]oweroff re[b]oot [s]uspend" +bindsym $mod+Delete mode $sysmenu +mode $sysmenu { + bindsym r restart + bindsym e exit + bindsym p exec sudo shutdown -P now + bindsym b exec sudo shutdown -r now + bindsym s exec "dm-tool lock && systemctl suspend" mode "default" + bindsym l exec "dm-tool lock" mode "default" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +################################ +# _ ____ ____ # +# (_)___ \ | _ \ # +# _ __) | | |_) | __ _ _ __ # +# | ||__ < | _ < / _` | '__| # +# | |___) | | |_) | (_| | | # +# |_|____/ |____/ \__,_|_| # +# # +################################ + +# Start i3bar to display a workspace bar (plus the system information i3blocks finds +# out, if available) + +bar { + status_command $HOME/.bin/conky-i3bar + colors { + background #262c35 + statusline #b2aa87 + separator #b2aa87 + + #class border backgr. text + focused_workspace #48718f #2e485c #b2aa87 + active_workspace #48718f #2e485c #b2aa87 + inactive_workspace #444f60 #262c35 #726d56 + urgent_workspace #da8252 #8b5335 #b2aa87 + } +} + +# class border backgr. text indicator child_border +client.focused #48718f #2e485c #b2aa87 #2e485c #48718f +client.focused_inactive #48718f #2e485c #b2aa87 #2e485c #48718f +client.unfocused #444f60 #262c35 #726d56 #262c35 #444f60 +client.urgent #da8252 #8b5335 #b2aa87 #8b5335 #da8252 + +client.background #262c35 + +############################################################### +# _____ _ _ _ _ _ _ _ # +# |_ _| (_) | (_) | (_) | | (_) # +# | | _ __ _| |_ _ __ _| |_ ___ __ _| |_ _ ___ _ __ # +# | | | '_ \| | __| |/ _` | | / __|/ _` | __| |/ _ \| '_ \ # +# _| |_| | | | | |_| | (_| | | \__ \ (_| | |_| | (_) | | | | # +# |_____|_| |_|_|\__|_|\__,_|_|_|___/\__,_|\__|_|\___/|_| |_| # +# # +############################################################### + +# Start the Bumblebee Daemon +#exec --no-startup-id sudo bumblebeed -D + +# Dynamic Workspaces +exec_always --no-startup-id exec ~/.local/bin/i3-workspace-names-daemon + +# Dunst +exec --no-startup-id dunst + +# Set Keyboard Layout +exec --no-startup-id setxkbmap gb + +# Set Wallpaper +exec --no-startup-id feh --bg-fill ~/.wallpaper + +# Start Blueman +exec --no-startup-id blueman-applet + +# Start wicd-gtk +exec --no-startup-id wicd-gtk --tray + +# Start pasystray +exec --no-startup-id pasystray + +# Start Compton +exec --no-startup-id picom -b --config ~/.config/picom/picom.conf + +# Start Redshift +exec --no-startup-id redshift-gtk + +# Remove Window Border +for_window [class="^.*"] border none + +#Configure Gaps +gaps inner 8 +gaps outer 0 +smart_gaps on +smart_borders no_gaps +