This commit is contained in:
Loïc Gremaud 2023-05-24 14:14:36 +02:00
parent 5d399c7700
commit 10f6634765
No known key found for this signature in database
GPG Key ID: ACD9F65FA7E19986
596 changed files with 114803 additions and 375 deletions

View File

@ -0,0 +1,53 @@
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Configuration for Alacritty, the GPU enhanced terminal emulator.
## It's a very basic and simple config file, for full configuration...
## See, /usr/share/doc/alacritty/example/alacritty.yml
## Import files (Colors, Fonts, Etc)
import:
- ~/.config/i3/alacritty/colors.yml
- ~/.config/i3/alacritty/fonts.yml
## Set environment variables
env:
TERM: alacritty
WINIT_X11_SCALE_FACTOR: '1.0'
## Terminal window settings
window:
dimensions:
columns: 82
lines: 24
padding:
x: 10
y: 10
decorations: full
startup_mode: Windowed
dynamic_title: true
## scrolling
history: 10000
multiplier: 3
## Background opacity
opacity: 0.92
## Cursor
cursor:
style:
shape: Block
blinking: On
unfocused_hollow: false
## Live config reload
live_config_reload: true
## Shell
#shell:
# program: /bin/zsh
# args:
# - --login

View File

@ -0,0 +1,29 @@
## Colors configuration
colors:
# Default colors
primary:
# background: '#282828'
background: '#000000'
foreground: '#ebdbb2'
# Normal colors
normal:
black: '#3C3C3C'
red: '#cc241d'
green: '#98971a'
yellow: '#d79921'
blue: '#458588'
magenta: '#b16286'
cyan: '#689d6a'
white: '#a89984'
# Bright colors
bright:
black: '#928374'
red: '#fb4934'
green: '#b8bb26'
yellow: '#fabd2f'
blue: '#83a598'
magenta: '#d3869b'
cyan: '#8ec07c'
white: '#ebdbb2'

View File

@ -0,0 +1,37 @@
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Font configuration
font:
# Normal (roman) font face
normal:
family: "JetBrainsMono Nerd Font"
#style: Regular
# Bold font face
bold:
family: "JetBrainsMono Nerd Font"
#style: Bold
# Italic font face
italic:
family: "JetBrainsMono Nerd Font"
#style: Italic
# Bold italic font face
bold_italic:
family: "JetBrainsMono Nerd Font"
#style: Bold Italic
# Point size
size: 16
# Offset
#offset:
# x: 0
# y: 0
# Glyph offset
#glyph_offset:
# x: 0
# y: 0

View File

@ -1,334 +1,326 @@
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
#bar {
#status_command i3status
#}
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## i3wm configuration for Archcraft
##
## i3 config file (v4)
# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#
##-- Include Config Files ----------------------
# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
#
## Tilde expands to the users home directory:
#include ~/.config/i3/01_theme.conf
set $mod Mod4
## Environment variables are expanded:
#include $HOME/.config/i3/01_theme.conf
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:DejaVu Sans Mono 10
## Wildcards are expanded:
#include ~/.config/i3/config.d/*.conf
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8
## Command substitution:
#include ~/.config/i3/`hostname`.conf
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.
## i3 changes the working directory while parsing a config file
## so that relative paths are interpreted relative to the directory
## of the config file that contains the path:
#include 01_theme.conf
# xss-lock zen grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend.
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
## To list all loaded configuration files, run `i3 --moreversion`
# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
exec --no-startup-id nm-applet
#------
exec --no-startup-id telegram-desktop
# exec --no-startup-id syncthing-gtk
exec --no-startup-id keepass
exec --no-startup-id onboard
exec --no-startup-id touchegg
exec --no-startup-id xscreensaver
# exec --no-startup-id mailspring
# exec --no-startup-id minetime
## Load i3 config files
include ~/.config/i3/config.d/*.conf
# No border :)
default_border pixel 1
default_floating_border none
# Default colors
# class border backgr. text indicator child_border
client.focused #ffffff #888888 #000000 #ffffff #888888
client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a
client.unfocused #a000ff #040404 #888888 #444444 #444444
client.urgent #2f343a #600099 #ffffff #600099 #600099
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
## Enable/Disable i3 bar
#include ~/.config/i3/i3status/statusbar.conf
client.background #000000
##-- Mod Keys ----------------------------------
set $MOD Mod4
set $ALT Mod1
# Use pactl to adjust volume in PulseAudio.
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +8%
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -7%
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle
##-- General Settings --------------------------
# Brightness settings
bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 5
bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 5
## Floating Modifier
##
## To move floating windows with your mouse, you can either grab their titlebar
## or configure the so-called floating modifier which you can then press and click
## anywhere in the window itself to move it.
##
## When holding the floating modifier, you can resize a floating window by pressing
## the right mouse button on it and moving around while holding it.
## If you hold the shift button as well, the resize will be proportional
## (the aspect ratio will be preserved).
floating_modifier $MOD
# Transparent lock
bindsym $mod+i exec xtrlock
#------
# Multiple display settings
bindsym XF86Display exec --no-startup-id arandr
## Orientation for new workspaces
##
## New workspaces get a reasonable default orientation: Wide-screen monitors
## (anything wider than high) get horizontal orientation, rotated monitors
## (anything higher than wide) get vertical orientation.
##
## Syntax: default_orientation horizontal|vertical|auto
default_orientation auto
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
#------
# start a terminal
bindsym $mod+Return exec i3-sensible-terminal
## Layout mode for new containers
##
## This option determines in which mode new containers on workspace level will start.
##
## Syntax: workspace_layout default|stacking|tabbed
workspace_layout default
# kill focused window
bindsym $mod+w kill
#------
# start dmenu (a program launcher)
#bindsym $mod+r exec dmenu_run
bindsym $mod+r exec --no-startup-id ~/.config/rofi/bin/menu_powermenu
#bindsym $mod+r exec --no-startup-id ~/rofi/files/powermenu/type-2/powermenu.sh
# start rofi
bindsym $mod+p exec "rofi -modes combi -show combi run,window"
# switch rofi
bindsym $mod+q exec rofi -show window
# rofi fb
bindsym $mod+g exec rofi -show file-browser-extended
# ssh rofi
#bindsym $mod+c exec rofi -show ssh
bindsym $mod+c exec --no-startup-id ~/.config/rofi/bin/menu_time
# lock screen
bindsym $mod+o exec ~/lock.sh
#bindsym $mod+o exec slimlock
# ristretto
bindsym $mod+e exec nemo
## Window title alignment
##
## This option determines the window titles text alignment. Default is left
##
## Syntax: title_align left|center|right
title_align center
# There also is the (new) i3-dmenu-desktop which only displays applications
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
# installed.
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
## Print all window titles in format of 'class | title'
for_window [class=".*"] title_format "%class | %title"
# change focus
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
## Enable window icons for all windows
for_window [all] title_window_icon off
# 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
## Enable window icons for all windows with extra horizontal padding
#for_window [all] title_window_icon padding 5px
# move focused window
bindsym $mod+Shift+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l 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
## Default border style for new windows
##
## This option determines which border style new windows will have. The default is `normal`.
## Note that `default_floating_border` applies only to windows which are starting out
## as floating windows, e.g., dialog windows, but not windows that are floated later on.
##
## Setting border style to `pixel` eliminates title bars. The border style `normal`
## allows you to adjust edge border width while keeping your title bar.
##
## Syntax:
#default_border normal|none|pixel
#default_border normal|pixel <px>
#default_floating_border normal|none|pixel
#default_floating_border normal|pixel <px>
#default_border pixel 2
#default_floating_border pixel 2
# Resizing windows
bindsym $mod+Ctrl+Shift+Up resize shrink height 10 px or 10 ppt
bindsym $mod+Ctrl+Shift+Down resize grow height 10 px or 10 ppt
bindsym $mod+Ctrl+Shift+Right resize shrink width 10 px or 10 ppt
bindsym $mod+Ctrl+Shift+Left resize grow width 10 px or 10 ppt
#------
bindsym $mod+Ctrl+Shift+k resize shrink height 10 px or 10 ppt
bindsym $mod+Ctrl+Shift+j resize grow height 10 px or 10 ppt
bindsym $mod+Ctrl+Shift+l resize shrink width 10 px or 10 ppt
bindsym $mod+Ctrl+Shift+h resize grow width 10 px or 10 ppt
## Hiding borders adjacent to the screen edges
##
## You can hide container borders adjacent to the screen edges using `hide_edge_borders`
## (the default is none). Hiding borders is useful if you are using scrollbars,
## or do not want to waste even two pixels in displayspace.
##
## The `smart` setting hides borders on workspaces with only one window visible,
## but keeps them on workspaces with multiple windows visible.
##
## The `smart_no_gaps` setting hides edge-specific borders of a container if the
## container is the only container on its workspace and the gaps to the screen edge are 0.
##
## Syntax: hide_edge_borders none|vertical|horizontal|both|smart|smart_no_gaps
hide_edge_borders none
# split in horizontal orientation
bindsym $mod+b split h
#------
# split in vertical orientation
bindsym $mod+v split v
## Smart borders
##
## Smart borders will draw borders on windows only if there is more than one window
## in a workspace. This feature can also be enabled only if the gap size between
## window and screen edge is 0.
##
## Syntax: smart_borders on|off|no_gaps
#smart_borders on
# 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+t layout tabbed
bindsym $mod+a layout toggle split
## Dont focus window upon opening
##
## When a new window appears, it will be focused. The `no_focus` directive allows
## preventing this from happening and must be used in combination with [command_criteria].
##
## Syntax: no_focus <criteria>
#no_focus [window_role="pop-up"]
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
#------
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
## Automatically putting workspaces on specific screens
##
## If you assign clients to workspaces, it might be handy to put the workspaces on
## specific screens. Also, the assignment of workspaces to screens will determine
## which workspace i3 uses for a new screen when adding screens or when starting
## (e.g., by default it will use 1 for the first screen, 2 for the second screen and so on).
##
## Syntax: workspace <workspace> output <output1> [output2]…
##
## The `output` is the name of the RandR output you attach your screen to.
## On a laptop, you might have VGA1 and LVDS1 as output names.
## You can see the available outputs by running `xrandr --current`
#workspace 1 output LVDS1
#workspace 2 output primary
#workspace 5 output VGA1 LVDS1
#workspace "2: vim" output VGA1
# focus the parent container
# bindsym $mod+a focus parent
#------
# focus the child container
#bindsym $mod+d focus child
## Interprocess communication
##
## i3 uses Unix sockets to provide an IPC interface. This allows third-party programs
## to get information from i3, such as the current workspaces (to display a workspace bar), and to control i3.
##
## You can override the default path through the environment-variable `I3SOCK`
## or by specifying the `ipc-socket` directive.This is discouraged, though,
## since i3 does the right thing by default. If you decide to change it,
## it is strongly recommended to set this to a location in your home directory
## so that no other user can create that directory.
#ipc-socket ~/.i3/i3-ipc.sock
# 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"
set $ws11 "A"
set $ws12 "B"
set $ws13 "C"
set $ws14 "D"
set $ws15 "E"
set $ws16 "F"
set $ws17 "G"
set $ws18 "H"
set $ws19 "I"
set $ws20 "J"
#------
# switch to workspace
bindsym $mod+1 workspace $ws1
bindsym $mod+2 workspace $ws2
bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+5 workspace $ws5
bindsym $mod+6 workspace $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
bindsym $mod+9 workspace $ws9
bindsym $mod+0 workspace $ws10
bindsym $mod+F1 workspace $ws11
bindsym $mod+F2 workspace $ws12
bindsym $mod+F3 workspace $ws13
bindsym $mod+F4 workspace $ws14
bindsym $mod+F5 workspace $ws15
bindsym $mod+F6 workspace $ws16
bindsym $mod+F7 workspace $ws17
bindsym $mod+F8 workspace $ws18
bindsym $mod+F9 workspace $ws19
bindsym $mod+F10 workspace $ws20
## Focus follows mouse
##
## By default, window focus follows your mouse movements as the mouse crosses window borders.
## However, if you have a setup where your mouse usually is in your way
## (like a touchpad on your laptop which you do not want to disable completely),
## you might want to disable `focus follows mouse` and control focus only by using your keyboard.
## The mouse will still be useful inside the currently active window (for example to click on links in your browser window).
##
## Syntax: focus_follows_mouse yes|no
focus_follows_mouse yes
# Scratchpad
# Make the currently focused window a scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the first scratchpad window
bindsym $mod+minus scratchpad show
#------
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace $ws1
bindsym $mod+Shift+2 move container to workspace $ws2
bindsym $mod+Shift+3 move container to workspace $ws3
bindsym $mod+Shift+4 move container to workspace $ws4
bindsym $mod+Shift+5 move container to workspace $ws5
bindsym $mod+Shift+6 move container to workspace $ws6
bindsym $mod+Shift+7 move container to workspace $ws7
bindsym $mod+Shift+8 move container to workspace $ws8
bindsym $mod+Shift+9 move container to workspace $ws9
bindsym $mod+Shift+0 move container to workspace $ws10
bindsym $mod+Shift+F1 move container to workspace $ws11
bindsym $mod+Shift+F2 move container to workspace $ws12
bindsym $mod+Shift+F3 move container to workspace $ws13
bindsym $mod+Shift+F4 move container to workspace $ws14
bindsym $mod+Shift+F5 move container to workspace $ws15
bindsym $mod+Shift+F6 move container to workspace $ws16
bindsym $mod+Shift+F7 move container to workspace $ws17
bindsym $mod+Shift+F8 move container to workspace $ws18
bindsym $mod+Shift+F9 move container to workspace $ws19
bindsym $mod+Shift+F10 move container to workspace $ws20
## Mouse warping
##
## By default, when switching focus to a window on a different output
## (e.g. focusing a window on workspace 3 on output VGA-1, coming from workspace 2 on LVDS-1),
## the mouse cursor is warped to the center of that window.
##
## With the `mouse_warping` option, you can control when the mouse cursor should be warped.
## `none` disables warping entirely, whereas `output` is the default behavior described above.
##
## Syntax: mouse_warping output|none
mouse_warping none
# 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'"
#
#resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
#------
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows 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
## Popups during fullscreen mode
##
## When you are in fullscreen mode, some applications still open popup windows (take Xpdf for example).
## This is because these applications might not be aware that they are in fullscreen mode
## (they do not check the corresponding hint).
## There are three things which are possible to do in this situation.
##
## Syntax: popup_during_fullscreen smart|ignore|leave_fullscreen
popup_during_fullscreen smart
# 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"
}
#
# Supposed to kill with center button
bindsym --release button2 killa
## Focus wrapping
##
## By default, when in a container with several windows or child containers,
## the opposite window will be focused when trying to move the focus over the edge of
## a container (and there are no other containers in that direction)the focus wraps.
##
## Syntax: focus_wrapping yes|no|force|workspace
# Disable focus wrapping
#focus_wrapping no
# Force focus wrapping
#focus_wrapping force
# Custom config window
for_window [class="vlc"] floating enable
for_window [class="feh"] floating enable
#------
# Assign to desktop
assign [class="Firefox"] 1
assign [class="KeePass"] 3
assign [class="Clementine"] 8
assign [class="Telegram"] 9
assign [class="Mailspring"] 7
assign [class="MineTime"] 7
## Forcing Xinerama
##
## As explained in-depth in https://i3wm.org/docs/multi-monitor.html, some X11 video
## drivers (especially the nVidia binary driver) only provide support for Xinerama
## instead of RandR. In such a situation, i3 must be told to use the inferior Xinerama
## API explicitly and therefore dont provide support for reconfiguring your screens
## on the fly (they are read only once on startup and thats it).
##
## Syntax: force_xinerama yes|no
#force_xinerama yes
#bindsym $mod+Return mode "resize"
#------
# Workspace config
#workspace 1 output DisplayPort-2
## Automatic back-and-forth when switching to the current workspace
##
## This configuration directive enables automatic `workspace back_and_forth`
## when switching to the workspace that is currently focused.
##
## Syntax: workspace_auto_back_and_forth yes|no
workspace_auto_back_and_forth yes
# i3 bar configuration
# ----------------------------------------------------------------------------
#------
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
# status_command i3status --
status_command py3status
## Delaying urgency hint reset on workspace change
##
## If an application on another workspace sets an urgency hint, switching to this
## workspace might lead to immediate focus of the application, which also means the
## window decoration color would be immediately reset to `client.focused`.
## This might make it unnecessarily hard to tell which window originally raised the event.
##
## In order to prevent this, you can tell i3 to delay resetting the urgency state by
## a certain time using the `force_display_urgency_hint` directive.
## Setting the value to 0 disables this feature. The default is 500ms.
##
## Syntax: force_display_urgency_hint <timeout> ms
force_display_urgency_hint 500 ms
position top
tray_output DisplayPort-2
#------
colors {
background #000000
statusline #a000ff
separator #aaaaaa
## Focus on window activation
##
## If a window is activated, e.g., via `google-chrome www.google.com`, it may request to take focus.
## Since this might not be preferable, different reactions can be configured.
##
## Note that this might not affect windows that are being opened.
## To prevent new windows from being focused.
##
## Syntax: focus_on_window_activation smart|urgent|focus|none
focus_on_window_activation smart
# Default conf
# focused_workspace #4c7899 #285577 #ffffff
focused_workspace #ffffff #888888 #000000
active_workspace #888888 #444444 #ffffff
inactive_workspace #888888 #000000 #a000ff
urgent_workspace #2f343a #600099 #ffffff
binding_mode #2f343a #600099 #ffffff
}
#------
separator_symbol "ʃ"
#separator_symbol "❰"
#separator_symbol "❱"
#separator_symbol " ▷ "
#separator_symbol " ∠ "
#separator_symbol "|"
#separator_symbol "ǁ"
## Drawing marks on window decoration
##
## If activated, marks on windows are drawn in their window decoration.
## However, any mark starting with an underscore in its name (_) will not be drawn
## even if this option is activated.
##
## The default for this option is yes.
##
## Syntax: show_marks yes|no
show_marks yes
strip_workspace_name no
strip_workspace_numbers yes
#------
binding_mode_indicator no
}
## Tiling drag
##
## You can configure how to initiate the tiling drag feature.
##
## Syntax:
#tiling_drag off
#tiling_drag modifier|titlebar [modifier|titlebar]
tiling_drag modifier titlebar
##-- Autostart ---------------------------------
## Automatically starting applications on i3 startup
##
## By using the `exec` keyword outside a keybinding, you can configure which commands
## will be performed by i3 on initial startup. `exec` commands will not run when
## restarting i3, if you need a command to run also when restarting i3 you should
## use the `exec_always` keyword. These commands will be run in order.
##
## Syntax:
#exec [--no-startup-id] <command>
#exec_always [--no-startup-id] <command>
exec_always --no-startup-id ~/.config/i3/scripts/i3_autostart
## The --no-startup-id parameter disables startup-notification support for this particular exec command.
## With startup-notification, i3 can make sure that a window appears on the workspace on which you used the exec command.

View File

@ -0,0 +1,91 @@
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Theme
##-- Theme Variables ---------------------
#~ Fonts
set $i3_fonts JetBrainsMono Nerd Font 8
#~ Border
set $i3_border_size 1
set $i3_border_style pixel
#~ Gaps
set $i3_gaps_inner 15
set $i3_gaps_outer 0
set $i3_gaps_smart off
#~ Colors
set $i3_cl_col_bg #282828
set $i3_cl_col_fg #ebdbb2
set $i3_cl_col_in #98971a
set $i3_cl_col_afoc #ffc86a
set $i3_cl_col_ifoc #458588
set $i3_cl_col_ufoc #353535
set $i3_cl_col_urgt #b16286
set $i3_cl_col_phol #282828
##-- Fonts (Global) ----------------------
## i3 has support for both X core fonts and FreeType fonts (through Pango) to render window titles.
## To generate an X core font description, you can use `xfontsel`
#font <X core font description>
#font pango:<family list> [<style options>] <size>
## Examples
#font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
#font pango:DejaVu Sans Mono 10
#font pango:DejaVu Sans Mono, Terminus Bold Semi-Condensed 11
#font pango:Terminus 11px
font pango:$i3_fonts
##-- Border ------------------------------
## Default border style for new/existing windows
for_window [class=".*"] border $i3_border_style $i3_border_size
##-- Gaps --------------------------------
## Gaps
##
## Since i3 4.22, you can configure window gaps. “Gaps” are added spacing between
## windows (or split containers) and to the screen edges.
##
## Syntax:
##
## Inner gaps for all windows: space between two adjacent windows.
#gaps inner <gap_size>[px]
## Outer gaps for all windows: space along the screen edges.
#gaps outer|horizontal|vertical|top|left|bottom|right <gap_size>[px]
## Inner and outer gaps for all windows on a specific workspace.
## <ws> can be a workspace number or name.
#workspace <ws> gaps inner <gap_size>[px]
#workspace <ws> gaps outer|horizontal|vertical|top|left|bottom|right <gap_size>[px]
## Enabling “Smart Gaps” means no gaps will be shown when there is
## precisely one window or split container on the workspace.
##
## inverse_outer only enables outer gaps when there is exactly one
## window or split container on the workspace.
#smart_gaps on|off|inverse_outer
gaps inner $i3_gaps_inner
gaps outer $i3_gaps_outer
smart_gaps $i3_gaps_smart
##-- Colors ------------------------------
## You can change all colors which i3 uses to draw the window decorations.
## Syntax: <colorclass> <border> <background> <text> <indicator> <child_border>
# class border backgr. text indicator child_border
client.focused $i3_cl_col_afoc $i3_cl_col_afoc $i3_cl_col_bg $i3_cl_col_in $i3_cl_col_afoc
client.focused_inactive $i3_cl_col_ifoc $i3_cl_col_ifoc $i3_cl_col_bg $i3_cl_col_in $i3_cl_col_ifoc
client.unfocused $i3_cl_col_ufoc $i3_cl_col_ufoc $i3_cl_col_fg $i3_cl_col_in $i3_cl_col_ufoc
client.urgent $i3_cl_col_urgt $i3_cl_col_urgt $i3_cl_col_fg $i3_cl_col_in $i3_cl_col_urgt
client.placeholder $i3_cl_col_phol $i3_cl_col_phol $i3_cl_col_fg $i3_cl_col_in $i3_cl_col_phol
client.background $i3_cl_col_bg

View File

@ -0,0 +1,249 @@
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Keybindings
##-- Key Bindings ------------------------
## A keysym (key symbol) is a description for a specific symbol, like "a" or "b",
## but also more strange ones like "underscore" instead of "_".
## These are the ones you use in Xmodmap to remap your keys.
## To get the current mapping of your keys, use `xmodmap -pke`.
## To interactively enter a key and see what keysym it is configured to, use `xev`.
##
## Keycodes do not need to have a symbol assigned (handy for custom vendor hotkeys on some notebooks)
## and they will not change their meaning as you switch to a different keyboard layout (when using `xmodmap`).
##
## If you often switch keyboard layouts but you want to keep your bindings in the
## same physical location on the keyboard, use keycodes.
## If you dont switch layouts, and want a clean and simple config file, use keysyms.
##
## Available Modifiers: Mod1-Mod5, Shift, Control
##
## Syntax:
# bindsym [--release] [<Group>+][<Modifiers>+]<keysym> command
# bindcode [--release] [<Group>+][<Modifiers>+]<keycode> command
##-- Variables ---------------------------
set $terminal ~/.config/i3/scripts/i3_term
set $music_player ~/.config/i3/scripts/i3_music
set $color_picker ~/.config/i3/scripts/i3_colorpicker
set $brightness ~/.config/i3/scripts/i3_brightness
set $volume ~/.config/i3/scripts/i3_volume
set $screenshot ~/.config/i3/scripts/i3_screenshot
set $alacritty alacritty --config-file ~/.config/i3/alacritty/alacritty.yml
set $rofi_applets ~/.config/i3/scripts
set $file_manager nemo
set $text_editor nvim
set $web_browser firefox
## -- Terminal --
bindsym $MOD+Return exec --no-startup-id $terminal
bindsym $MOD+Shift+Return exec --no-startup-id $terminal --float
bindsym $MOD+$ALT+Return exec --no-startup-id $terminal --full
## -- GUI Apps --
bindsym $MOD+Shift+f exec --no-startup-id $file_manager
bindsym $MOD+Shift+e exec --no-startup-id $text_editor
bindsym $MOD+Shift+w exec --no-startup-id $web_browser
## -- CLI Apps --
bindsym $ALT+Control+v exec --no-startup-id "$alacritty -e vim"
bindsym $ALT+Control+r exec --no-startup-id "$alacritty -e ranger"
bindsym $ALT+Control+h exec --no-startup-id "$alacritty -e htop"
bindsym $ALT+Control+m exec --no-startup-id $music_player
## -- Rofi Applets --
bindsym $MOD+p exec --no-startup-id $rofi_applets/rofi_launcher -dpi 1
bindsym $MOD+n exec --no-startup-id $rofi_applets/network_menu -dpi 1
bindsym $MOD+r exec --no-startup-id $rofi_applets/rofi_powermenu -dpi 1
bindsym $MOD+q exec --no-startup-id $rofi_applets/rofi_windows -dpi 1
bindsym $MOD+m exec --no-startup-id $rofi_applets/rofi_music -dpi 1
# bindsym $MOD+r exec --no-startup-id $rofi_applets/rofi_asroot
# bindsym $MOD+s exec --no-startup-id $rofi_applets/rofi_screenshot
bindsym $MOD+t exec --no-startup-id $rofi_applets/rofi_themes -dpi 1
## -- Function keys --
bindsym XF86MonBrightnessUp exec --no-startup-id "$brightness --inc"
bindsym XF86MonBrightnessDown exec --no-startup-id "$brightness --dec"
bindsym XF86AudioRaiseVolume exec --no-startup-id "$volume --inc"
bindsym XF86AudioLowerVolume exec --no-startup-id "$volume --dec"
bindsym XF86AudioMute exec --no-startup-id "$volume --toggle"
bindsym XF86AudioMicMute exec --no-startup-id "$volume --toggle-mic"
bindsym XF86AudioNext exec --no-startup-id "mpc next"
bindsym XF86AudioPrev exec --no-startup-id "mpc prev"
bindsym XF86AudioPlay exec --no-startup-id "mpc toggle"
bindsym XF86AudioStop exec --no-startup-id "mpc stop"
## -- Screenshots --
bindsym Print exec --no-startup-id "$screenshot --now"
bindsym Control+Print exec --no-startup-id "$screenshot --in5"
# bindsym Shift+Print exec --no-startup-id "$screenshot --in10"
bindsym Shift+Print exec --no-startup-id $rofi_applets/rofi_screenshot
bindsym Control+Shift+Print exec --no-startup-id "$screenshot --win"
bindsym $MOD+Print exec --no-startup-id "$screenshot --area"
## -- Misc --
# bindsym --release $MOD+p exec --no-startup-id $color_picker
bindsym $ALT+Control+l exec --no-startup-id "betterlockscreen --lock"
##-- WM Specific -------------------------
## Kill focused window
##
bindsym $MOD+w kill
bindsym $MOD+c kill
#------
## Send Notification
##
set $send-notify exec --no-startup-id dunstify -u low -h string:x-dunst-stack-tag:i3config
## Splitting containers
##
## split in horizontal orientation
bindsym $MOD+h split horizontal, $send-notify 'Split Horizontally'
## split in vertical orientation
bindsym $MOD+v split vertical, $send-notify 'Split Vertically'
## toggle split
#bindsym $MOD+g split toggle, $send-notify 'Split Mode'
#------
## Manipulating layout
##
## change container layout (stacked, tabbed, toggle split)
## Set stacking layout
bindsym $MOD+Shift+s layout stacking, $send-notify 'Layout - Stacking'
## Set tabbed layout
bindsym $MOD+Shift+t layout tabbed, $send-notify 'Layout - Tabbed'
## Set default layout
bindsym $MOD+Shift+d layout default, $send-notify 'Layout - Default'
## Toggle between stacking/tabbed/split:
bindsym $MOD+Shift+l layout toggle, $send-notify 'Cycling Layouts'
## Toggle between horizontal/vertical:
bindsym $MOD+Shift+v layout toggle split, $send-notify 'Layout - Hor/Vert'
## Toggle fullscreen
bindsym $MOD+f fullscreen toggle, $send-notify 'Toggled Fullscreen'
## Toggle floating/tiling
bindsym $MOD+space floating toggle, $send-notify 'Toggled Floating Mode'
#------
## Focusing containers
##
## Sets focus to the nearest container in the given direction.
bindsym $MOD+Left focus left
bindsym $MOD+Down focus down
bindsym $MOD+Up focus up
bindsym $MOD+Right focus right
## Sets focus to the parent container of the current container.
bindsym $MOD+a focus parent
## The opposite of `focus parent`, sets the focus to the last focused child container.
bindsym $MOD+d focus child
## Automatically sets focus to the adjacent container.
bindsym $MOD+Tab focus next
## Toggles focus between floating/tiling containers.
bindsym $MOD+Shift+space focus mode_toggle
#------
## Moving containers
##
## move focused window in the given direction.
bindsym $MOD+Shift+Left move left
bindsym $MOD+Shift+Down move down
bindsym $MOD+Shift+Up move up
bindsym $MOD+Shift+Right move right
## Move floating container to the center of all outputs (floating only)
bindsym $MOD+$ALT+c move absolute position center
## Move container to the current position of the cursor (floating only)
bindsym $MOD+$ALT+p move position mouse
#------
## Resizing containers/windows
##
bindsym $MOD+$ALT+Left resize shrink width 10 px or 10 ppt
bindsym $MOD+$ALT+Down resize grow height 10 px or 10 ppt
bindsym $MOD+$ALT+Up resize shrink height 10 px or 10 ppt
bindsym $MOD+$ALT+Right resize grow width 10 px or 10 ppt
#------
## Sticky floating windows (floating only)
##
bindsym $MOD+Shift+o sticky toggle, $send-notify 'Toggled Sticky'
#------
## Changing border style
##
bindsym $MOD+y border toggle, $send-notify 'Toggled Borders'
#------
## Scratchpad
##
## Make the currently focused window a scratchpad
bindsym $MOD+Shift+minus move scratchpad, $send-notify 'Scratchpad'
## Show the first scratchpad window
bindsym $MOD+minus scratchpad show
#------
## restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym Ctrl+Shift+r restart, $send-notify 'i3wm Restarted!'
## reload the configuration file
bindsym $MOD+Shift+c reload, $send-notify 'Configuration Reloaded!'
## quit i3 session
bindsym $MOD+Shift+q exit
#------
## Changing (named) workspaces/moving to workspaces
##
## 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 $ws1
bindsym $MOD+2 workspace number $ws2
bindsym $MOD+3 workspace number $ws3
bindsym $MOD+4 workspace number $ws4
bindsym $MOD+5 workspace number $ws5
bindsym $MOD+6 workspace number $ws6
bindsym $MOD+7 workspace number $ws7
bindsym $MOD+8 workspace number $ws8
bindsym $MOD+9 workspace number $ws9
bindsym $MOD+0 workspace number $ws10
## move focused container to workspace
bindsym $MOD+Shift+1 move container to workspace number $ws1
bindsym $MOD+Shift+2 move container to workspace number $ws2
bindsym $MOD+Shift+3 move container to workspace number $ws3
bindsym $MOD+Shift+4 move container to workspace number $ws4
bindsym $MOD+Shift+5 move container to workspace number $ws5
bindsym $MOD+Shift+6 move container to workspace number $ws6
bindsym $MOD+Shift+7 move container to workspace number $ws7
bindsym $MOD+Shift+8 move container to workspace number $ws8
bindsym $MOD+Shift+9 move container to workspace number $ws9
bindsym $MOD+Shift+0 move container to workspace number $ws10
## move a container to the next/previous workspace
bindsym $MOD+Control+Right "move container to workspace next, workspace next"
bindsym $MOD+Control+Left "move container to workspace prev, workspace prev"
## switch between the current and the previously focused one
bindsym $MOD+b workspace back_and_forth
bindsym $MOD+Shift+b "move container to workspace back_and_forth, workspace back_and_forth"

View File

@ -0,0 +1,25 @@
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Mousebindings
##-- Mouse Bindings ------------------------
## A mouse binding makes i3 execute a command upon pressing a specific mouse button
## in the scope of the clicked container.
## You can configure mouse bindings in a similar way to key bindings.
##
## Syntax:
# bindsym [--release] [--border] [--whole-window] [--exclude-titlebar] [<Modifiers>+]button<n> command
## By default, the binding will only run when you click on the titlebar of the window.
## If the `--release` flag is given, it will run when the mouse button is released.
## If the `--whole-window` flag is given, the binding will also run when any part of
## the window is clicked, with the exception of the border.
## To have a bind run when the border is clicked, specify the `--border` flag.
## If the `--exclude-titlebar` flag is given, the titlebar will not be considered for the keybinding.
## Kill the container with middle button click on titlebar
bindsym --release button2 kill
## Kill the container with Super+middle button click on anywhere in a window
bindsym --whole-window $MOD+button2 kill

View File

@ -0,0 +1,79 @@
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Modes
## Resize container (you can also use the mouse for that)
mode "Resize" {
# These bindings trigger as soon as you enter the 'Resize' mode
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+Shift+r mode "default"
}
bindsym $MOD+Shift+r mode "Resize"
#------
## Move container (you can also use the mouse for that)
mode "Move" {
# These bindings trigger as soon as you enter the 'Move' mode
bindsym Left move left 20px
bindsym Down move down 20px
bindsym Up move up 20px
bindsym Right move right 20px
# back to normal: Enter or Escape or $MOD+m
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $MOD+Shift+m mode "default"
}
bindsym $MOD+Shift+m mode "Move"
#------
## Gaps
set $mode_gaps Gaps: (o)uter, (i)nner
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
## Outer Gaps
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 "$mode_gaps"
bindsym Escape mode "default"
}
## Inner Gaps
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 "$mode_gaps"
bindsym Escape mode "default"
}
mode "$mode_gaps" {
bindsym o mode "$mode_gaps_outer"
bindsym i mode "$mode_gaps_inner"
bindsym Return mode "$mode_gaps"
bindsym Escape mode "default"
}
bindsym $MOD+Shift+g mode "$mode_gaps"

View File

@ -0,0 +1,66 @@
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Rules
##-- Workspace Rules ------------------------
## Automatically putting clients on specific workspaces
##
## To automatically make a specific window show up on a specific workspace,
## you can use an 'assignment'. You can match windows by using any criteria.
## The difference between assign and `for_window <criteria> move to workspace` is that
## the former will only be executed when the application maps the window
## (mapping means actually displaying it on the screen) but the latter will be executed
## whenever a window changes its properties to something that matches the specified criteria.
##
## Thus, it is recommended that you match on window classes (and instances, when appropriate)
## instead of window titles whenever possible because some applications first create
## their window, and then worry about setting the correct title. Firefox with Vimperator
## comes to mind. The window starts up being named Firefox, and only when Vimperator is
## loaded does the title change. As i3 will get the title as soon as the application
## maps the window, youd need to have to match on Firefox in this case. Another known
## issue is with Spotify, which doesnt set the class hints when mapping the window,
## meaning youll have to use a for_window rule to assign Spotify to a specific workspace.
## Finally, using assign [tiling] and assign [floating] is not supported.
##
## You can also assign a window to show up on a specific output. You can use RandR
## names such as 'VGA1' or names relative to the output with the currently focused
## workspace such as 'left' and 'down'.
##
## Assignments are processed by i3 in the order in which they appear in the config file.
## The first one which matches the window wins and later assignments are not considered.
##
## Syntax:
#assign <criteria> [→] [workspace] [number] <workspace>
#assign <criteria> [→] output left|right|up|down|primary|nonprimary|<output>
## Also, the arrow is not required, it just looks good :-). If you decide to use it,
## it has to be a UTF-8 encoded arrow, not -> or something like that.
##
## To get the class and instance, you can use `xprop`. After clicking on the window,
## you will see the following output: WM_CLASS(STRING) = "irssi", "URxvt"
## The first part of the WM_CLASS is the instance ("irssi" in this example),
## the second part is the class ("URxvt" in this example).
##
assign [class="Lxappearance|Nitrogen"] 6
assign [class="Pavucontrol|Xfce4-power-manager-settings"] 6
##-- Window Rules ---------------------------
## Arbitrary commands for specific windows (for_window)
##
## With the `for_window` directive, you can let i3 execute any command when it encounters
## a specific window. This can be used to set windows to floating or to change their
## border style, for example.
##
## Syntax: for_window <criteria> <command>
##
for_window [window_role="pop-up"] floating enable
for_window [window_role="task_dialog"] floating enable
for_window [class="alacritty-float|Music"] floating enable
for_window [class="Pcmanfm|Onboard|Yad"] floating enable
for_window [class="Lxappearance|Nitrogen"] floating enable
for_window [class="Pavucontrol|Xfce4-power-manager-settings|Nm-connection-editor"] floating enable
for_window [class="feh|Viewnior|Gpicview|Gimp|MPlayer"] floating enable
for_window [class="Kvantum Manager|qt5ct"] floating enable
for_window [class="VirtualBox Manager|qemu|Qemu-system-x86_64"] floating enable

71
config/i3/dunstrc Normal file
View File

@ -0,0 +1,71 @@
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
[global]
monitor = 0
follow = mouse
width = 300
height = 80
origin = top-right
offset = 15x53
corner_radius = 0
scale = 0
notification_limit = 0
progress_bar = true
progress_bar_height = 80
progress_bar_frame_width = 2
progress_bar_min_width = 300
progress_bar_max_width = 300
indicate_hidden = yes
transparency = 0
separator_height = 2
padding = 15
horizontal_padding = 15
text_icon_padding = 0
frame_width = 2
gap_size = 0
separator_color = frame
sort = yes
idle_threshold = 120
font = JetBrains Mono 10
line_height = 2
markup = full
format = %s\n%b
alignment = left
vertical_alignment = center
show_age_threshold = 60
ellipsize = middle
ignore_newline = no
stack_duplicates = true
hide_duplicate_count = false
show_indicators = yes
enable_recursive_icon_lookup = true
icon_position = left
min_icon_size = 24
max_icon_size = 48
sticky_history = yes
history_length = 20
browser = /usr/bin/xdg-open
always_run_script = true
mouse_left_click = close_current
mouse_middle_click = do_action, close_current
mouse_right_click = close_all
title = Dunst
class = Dunst
[urgency_low]
timeout = 2
background = "#282828"
foreground = "#ebdbb2"
frame_color = "#353535"
[urgency_normal]
timeout = 5
background = "#282828"
foreground = "#ebdbb2"
frame_color = "#353535"
[urgency_critical]
timeout = 0
background = "#282828"
foreground = "#cc241d"
frame_color = "#cc241d"

View File

@ -1,94 +0,0 @@
#order += nvidia_smi
order += bluetooth
order += keyboard_layout
order += arch_updates
order += "whatismyip"
order += spotify
# order += "ipv6"
order += "wireless _first_"
order += "ethernet _first_"
order += net_rate
# order += net_iplist
# order += "battery all"
order += "disk /"
order += "disk /home"
order += sysdata
# order += lm_sensors
# order += "load"
# order += "memory"
order += "tztime local"
spotify {
button_next = 4
button_play_pause = 3
button_previous = 5
format_down = ""
}
whatismyip {
# format = " {isp}\|{city}\|{countryCode} ({ip}) "
format = "{countryCode} ({ip}) "
hide_when_offline = True
url_geo = "http://ip-api.com/json"
}
battery all {
format = "%status %percentage %consumption"
low_threshold = 30
threshold_type = percentage
last_full_capacity = true
}
wireless _first_ {
format_up = " %ip (%essid)"
format_down = ""
}
ethernet _first_ {
format_up = " %ip (%speed)"
format_down = ""
on_click 1 = "exec sh /home/legrems/.screenlayout/swide.sh"
}
net_iplist {
cache_timeout = 30
format_iface = "[{ip4}]"
format = "{format_iface}"
}
net_rate {
cache_timeout = 10
format = "{total}"
}
disk "/" {
# format = "%percentage_used (%used / %free / %total)"
format = "/ %percentage_used %free"
on_click 1 = "exec nemo /"
}
disk "/home" {
# format = "%percentage_used (%used / %free / %total)"
format = "/home %percentage_used %free"
on_click 1 = "exec nemo /home/legrems/Documents"
}
tztime local {
format = "%Y-%m-%d %H:%M:%S"
timezone = "Europe/Zurich"
}
arch_updates {
format = "P:{pacman}/A:{aur}"
hide_if_zero = True
}
keyboard_layout {
layouts = ['us intl', 'us']
color_us_intl = "#ffff00"
color_us = "#ff00ff"
}
sysdata {
cache_timeout = 2
}

168
config/i3/i3status/config Normal file
View File

@ -0,0 +1,168 @@
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## i3status configuration for Archcraft
##-- General ---------------------------
general {
output_format = "i3bar"
interval = 5
markup = "pango"
separator = " "
colors = true
color_good = "#98971a"
color_degraded = "#d79921"
color_bad = "#cc241d"
color_separator = "#353535"
}
##-- Modules Order ---------------------
order += "volume master"
order += "battery all"
order += "wireless _first_"
order += "cpu_usage"
order += "memory"
order += "disk /"
order += "time"
#order += "load"
#order += "ipv6"
#order += "run_watch DHCP"
#order += "run_watch VPNC"
#order += "path_exists VPN"
#order += "ethernet _first_"
#order += "cpu_temperature 0"
#order += "tztime kolkata"
#order += "read_file UPTIME"
##-- Modules ---------------------------
## Module :: ipv6
ipv6 {
format_up = "%ip"
format_down = "No IPv6"
}
## Module :: disk
disk "/" {
# %free | %avail | %total | %percentage_used/free/avail
format = " %free"
format_not_mounted = " Not Mounted"
prefix_type = custom
low_threshold = 2
format_below_threshold = " Warning: %free Free Space"
threshold_type = gbytes_free
}
## Module :: run_watch
run_watch DHCP {
format = "%title: %status"
format_down = ""
}
## Module :: run_watch
run_watch VPNC {
format = "%title: %status"
format_down = ""
}
## Module :: path_exists
path_exists VPN {
format = "%title: %status"
format_down = ""
}
## Module :: wireless
wireless _first_ {
# %quality | %essid | %bitrate | %frequency | %ip
format_up = " %essid"
format_down = " Disconnected"
format_bitrate = "%g %cb/s"
format_noise = "%03d%s"
format_quality = "%03d%s"
format_signal = "%03d%s"
}
## Module :: ethernet
ethernet _first_ {
format_up = "%ip (%speed)"
format_down = "Disconnected"
}
## Module :: battery
battery all {
# %percentage | %status | %remaining | %emptytime | %consumption
format = "%status %percentage (%remaining)"
format_down = "No Battery"
format_percentage = "%.00f%s"
integer_battery_capacity = true
last_full_capacity = true
hide_seconds = true
low_threshold = 20
threshold_type = percentage
status_chr = ""
status_bat = ""
status_unk = ""
status_full = ""
}
## Module :: cpu_temperature
cpu_temperature 0 {
path = "/sys/devices/platform/coretemp.0/temp1_input"
format = "%degrees °C"
max_threshold = 60
format_above_threshold = " Warning: %degrees °C"
}
## Module :: cpu_usage
cpu_usage {
format = " %usage"
degraded_threshold = 25
format_above_degraded_threshold = " %usage"
max_threshold = 75
format_above_threshold = " Warning: %usage"
}
## Module :: memory
memory {
# %total | %free | %used | %available | %shared
format = " %free"
unit = auto
decimals = 1
threshold_degraded = 1G
threshold_critical = 1G
format_degraded = " Low Memory: %free"
}
## Module :: load
load {
format = " %1min %5min %15min"
max_threshold = "5"
format_above_threshold = " Warning: %1min %5min %15min"
}
## Module :: time
time {
format = " %I:%M %p"
}
## Module :: tztime
tztime kolkata {
format = " %I:%M %p"
timezone = "Asia/Kolkata"
locale = "en_US.UTF-8"
hide_if_equals_localtime = false
}
## Module :: volume
volume master {
device = "pulse"
format = " %volume"
format_muted = " Muted"
}
## Module :: read_file
read_file UPTIME {
format = "%title: %content"
format_bad = "%title - %errno: %error"
path = "/proc/uptime"
Max_characters = 255
}

View File

@ -0,0 +1,48 @@
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Status Bar
##-- Colors ---------------------------
set $i3_bar_bg #282828
set $i3_bar_fg #ebdbb2
set $i3_bar_sep #353535
set $i3_bar_foc #ffc86a
set $i3_bar_act #458588
set $i3_bar_ina #353535
set $i3_bar_urg #b16286
set $i3_bar_mod #98971a
set $i3_bar_fonts JetBrainsMono Nerd Font 20
##-- Bar ------------------------------
bar {
status_command i3status -c ~/.config/i3/i3status/config
id main-bar
position bottom
output primary
mode dock
hidden_state show
modifier Mod1
bindsym button2 workspace back_and_forth
bindsym --release button3 layout toggle
tray_output primary
tray_padding 6
separator_symbol "|"
workspace_buttons yes
workspace_min_width 34
strip_workspace_numbers yes
binding_mode_indicator yes
padding 6 10 6 0
font pango:$i3_bar_fonts
colors {
background $i3_bar_bg
statusline $i3_bar_fg
separator $i3_bar_sep
focused_workspace $i3_bar_foc $i3_bar_foc $i3_bar_bg
active_workspace $i3_bar_act $i3_bar_act $i3_bar_bg
inactive_workspace $i3_bar_ina $i3_bar_ina $i3_bar_fg
urgent_workspace $i3_bar_urg $i3_bar_urg $i3_bar_bg
binding_mode $i3_bar_mod $i3_bar_mod $i3_bar_bg
}
}

419
config/i3/picom.conf Normal file
View File

@ -0,0 +1,419 @@
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
#========================= Corners =========================#
corner-radius = 0;
rounded-corners-exclude = [
"window_type = 'normal'",
"class_g ?= 'rofi'",
"class_g ?= 'polybar'",
"class_g ?= 'tint2'"
];
round-borders = 0;
round-borders-exclude = [
"class_g = 'TelegramDesktop'"
];
# Specify a list of border width rules, in the format `PIXELS:PATTERN`,
# Note we don't make any guarantee about possible conflicts with the
# border_width set by the window manager.
#
# example:
# round-borders-rule = [ "2:class_g = 'URxvt'" ];
#
round-borders-rule = [
"2:class_g ?= 'URxvt'",
"2:class_g ?= 'Alacritty'",
"0:class_g ?= 'firefox'"
];
#========================= Shadows =========================#
# Enabled client-side shadows on windows. Note desktop windows
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
# unless explicitly requested using the wintypes option.
#
shadow = true;
# The blur radius for shadows, in pixels. (defaults to 12)
shadow-radius = 14;
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
shadow-opacity = 0.30;
# The left offset for shadows, in pixels. (defaults to -15)
shadow-offset-x = -12;
# The top offset for shadows, in pixels. (defaults to -15)
shadow-offset-y = -12;
# Red color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-red = 0
# Green color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-green = 0
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-blue = 0
# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
# shadow-color = "#000000"
# Specify a list of conditions of windows that should have no shadow.
#
# examples:
# shadow-exclude = "n:e:Notification";
#
# shadow-exclude = []
shadow-exclude = [
"class_g = 'Cairo-clock'",
"class_g = 'CoverGloobus'",
"class_g = 'Tilda'",
"name ?= 'gnome-pie'",
# "class_g = 'Dmenu'",
# "class_g ?= 'rofi'",
# "class_g ?= 'polybar'",
"class_g ?= 'Plank'",
"name *= 'recordmydesktop'",
"name = 'Notification'",
"name = 'Docky'",
"name = 'Kupfer'",
"name = 'xfce4-notifyd'",
"name *= 'VLC'",
"name *= 'Chromium'",
"name *= 'Chrome'",
"class_g = 'Conky'",
"class_g = 'Kupfer'",
"class_g = 'Synapse'",
"class_g ?= 'Notify-osd'",
"class_g ?= 'Cairo-dock'",
"class_g ?= 'Xfce4-notifyd'",
"class_g ?= 'Xfce4-power-manager'",
"_GTK_FRAME_EXTENTS@:c",
"_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
];
# Specify a X geometry that describes the region in which shadow should not
# be painted in, such as a dock window region. Use
# shadow-exclude-reg = "x10+0+0"
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
#
# shadow-exclude-reg = ""
# Crop shadow of a window fully on a particular Xinerama screen to the screen.
# xinerama-shadow-crop = false
#========================= Fading =========================#
# Fade windows in/out when opening/closing and when opacity changes,
# unless no-fading-openclose is used.
fading = true;
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
fade-in-step = 0.03;
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
fade-out-step = 0.03;
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
fade-delta = 5;
# Specify a list of conditions of windows that should not be faded.
# don't need this, we disable fading for all normal windows with wintypes: {}
fade-exclude = [
"class_g = 'slop'" # maim
]
# Do not fade on window open/close.
no-fading-openclose = false
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
no-fading-destroyed-argb = true
#========================= Opacity =========================#
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
# inactive-opacity = 1
inactive-opacity = 1;
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
# frame-opacity = 1.0
frame-opacity = 1.0;
# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
# inactive-opacity-override = true
inactive-opacity-override = false;
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
active-opacity = 1.0;
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
#inactive-dim = 0.5
# Specify a list of conditions of windows that should always be considered focused.
# focus-exclude = []
focus-exclude = [
"class_g = 'Cairo-clock'",
"class_g = 'Bar'", # lemonbar
"class_g = 'slop'" # maim
];
# Use fixed inactive dim value, instead of adjusting according to window opacity.
# inactive-dim-fixed = 1.0
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
# Note we don't make any guarantee about possible conflicts with other
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
# example:
# opacity-rule = [ "80:class_g = 'URxvt'" ];
#
# opacity-rule = []
opacity-rule = [
"100:class_g = 'Bar'", # lemonbar
"100:class_g = 'slop'", # maim
"100:class_g = 'XTerm'",
"100:class_g = 'URxvt'",
"100:class_g = 'kitty'",
"100:class_g = 'Alacritty'",
"100:class_g = 'Polybar'",
"100:class_g = 'code-oss'",
"100:class_g = 'Meld'",
"100:class_g = 'TelegramDesktop'",
"100:class_g = 'Joplin'",
"100:class_g = 'firefox'",
"100:class_g = 'Thunderbird'"
];
#========================= Blurring =========================#
blur: {
method = "none";
strength = 0;
background = false;
background-frame = false;
background-fixed = false;
kern = "3x3box";
}
# Exclude conditions for background blur.
blur-background-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"class_g = 'Plank'",
"class_g = 'slop'",
"_GTK_FRAME_EXTENTS@:c"
];
#========================= General Settings =========================#
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
# daemon = false
# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
# `xrender` is the default one.
#
#experimental-backends = true;
backend = "glx";
# Enable/disable VSync.
# vsync = false
vsync = true;
# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
# dbus = false
# Try to detect WM windows (a non-override-redirect window with no
# child that has 'WM_STATE') and mark them as active.
#
# mark-wmwin-focused = false
mark-wmwin-focused = true;
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
# mark-ovredir-focused = false
mark-ovredir-focused = true;
# Try to detect windows with rounded corners and don't consider them
# shaped windows. The accuracy is not very high, unfortunately.
#
# detect-rounded-corners = false
detect-rounded-corners = true;
# Detect '_NET_WM_OPACITY' on client windows, useful for window managers
# not passing '_NET_WM_OPACITY' of client windows to frame windows.
#
# detect-client-opacity = false
detect-client-opacity = true;
# Specify refresh rate of the screen. If not specified or 0, picom will
# try detecting this with X RandR extension.
#
# refresh-rate = 60
refresh-rate = 0;
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
# provided that the WM supports it.
#
# use-ewmh-active-win = false
# Unredirect all windows if a full-screen opaque window is detected,
# to maximize performance for full-screen windows. Known to cause flickering
# when redirecting/unredirecting windows.
#
# unredir-if-possible = false
# Delay before unredirecting the window, in milliseconds. Defaults to 0.
# unredir-if-possible-delay = 0
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
# unredir-if-possible-exclude = []
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
# in the same group focused at the same time.
#
# detect-transient = false
detect-transient = true;
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
# detect-transient is enabled, too.
#
# detect-client-leader = false
detect-client-leader = true;
# Resize damaged region by a specific number of pixels.
# A positive value enlarges it while a negative one shrinks it.
# If the value is positive, those additional pixels will not be actually painted
# to screen, only used in blur calculation, and such. (Due to technical limitations,
# with use-damage, those pixels will still be incorrectly painted to screen.)
# Primarily used to fix the line corruption issues of blur,
# in which case you should use the blur radius value here
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
# with a 5x5 one you use `--resize-damage 2`, and so on).
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
#
# resize-damage = 1
# Specify a list of conditions of windows that should be painted with inverted color.
# Resource-hogging, and is not well tested.
#
# invert-color-include = []
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
# Might cause incorrect opacity when rendering transparent content (but never
# practically happened) and may not work with blur-background.
# My tests show a 15% performance boost. Recommended.
#
glx-no-stencil = true;
# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes,
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
# Recommended if it works.
#
# glx-no-rebind-pixmap = false
# Disable the use of damage information.
# This cause the whole screen to be redrawn everytime, instead of the part of the screen
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
# The opposing option is use-damage
#
# no-use-damage = false
use-damage = true;
# Use X Sync fence to sync clients' draw calls, to make sure all draw
# calls are finished before picom starts drawing. Needed on nvidia-drivers
# with GLX backend for some users.
#
# xrender-sync-fence = false
# GLX backend: Use specified GLSL fragment shader for rendering window contents.
# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
# in the source tree for examples.
#
# glx-fshader-win = ""
# Force all windows to be painted with blending. Useful if you
# have a glx-fshader-win that could turn opaque pixels transparent.
#
# force-win-blend = false
# Do not use EWMH to detect fullscreen windows.
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
#
# no-ewmh-fullscreen = false
# Dimming bright windows so their brightness doesn't exceed this set value.
# Brightness of a window is estimated by averaging all pixels in the window,
# so this could comes with a performance hit.
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
#
# max-brightness = 1.0
# Make transparent windows clip other windows like non-transparent windows do,
# instead of blending on top of them.
#
# transparent-clipping = false
# Set the log level. Possible values are:
# "trace", "debug", "info", "warn", "error"
# in increasing level of importance. Case doesn't matter.
# If using the "TRACE" log level, it's better to log into a file
# using *--log-file*, since it can generate a huge stream of logs.
#
# log-level = "debug"
log-level = "info";
# Set the log file.
# If *--log-file* is never specified, logs will be written to stderr.
# Otherwise, logs will to written to the given file, though some of the early
# logs might still be written to the stderr.
# When setting this option from the config file, it is recommended to use an absolute path.
#
# log-file = "/path/to/your/log/file"
# Show all X errors (for debugging)
# show-all-xerrors = false
# Write process ID to a file.
# write-pid-path = "/path/to/your/log/file"
# Window type settings
#
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
# "tooltip", "notification", "combo", and "dnd".
#
# Following per window-type options are available: ::
#
# fade, shadow:::
# Controls window-type-specific shadow and fade settings.
#
# opacity:::
# Controls default opacity of the window type.
#
# focus:::
# Controls whether the window of this type is to be always considered focused.
# (By default, all window types except "normal" and "dialog" has this on.)
#
# full-shadow:::
# Controls whether shadow is drawn under the parts of the window that you
# normally won't be able to see. Useful when the window has parts of it
# transparent, and you want shadows in those areas.
#
# redir-ignore:::
# Controls whether this type of windows should cause screen to become
# redirected again after been unredirected. If you have unredir-if-possible
# set, and doesn't want certain window to cause unnecessary screen redirection,
# you can set this to `true`.
#
wintypes:
{
tooltip = { fade=true; shadow=true; opacity=0.95; focus=true; full-shadow=false; };
popup_menu = { opacity=1.0; }
dropdown_menu = { opacity=1.0; }
utility = { shadow=false; opacity=1.0; }
};

12
config/i3/scripts/i3_asroot Executable file
View File

@ -0,0 +1,12 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
# i3 directory
DIR="$HOME/.config/i3"
# rofi sudo askpass helper
export SUDO_ASKPASS="$DIR"/scripts/rofi_askpass
# execute the application
sudo -A $1

49
config/i3/scripts/i3_autostart Executable file
View File

@ -0,0 +1,49 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Autostart Programs
# i3 dir
idir="$HOME/.config/i3"
# Kill already running process
_ps=(xsettingsd ksuperkey)
for _prs in "${_ps[@]}"; do
if [[ `pidof ${_prs}` ]]; then
killall -9 ${_prs}
fi
done
# Lauch xsettingsd daemon
xsettingsd --config="$idir"/xsettingsd &
# polkit agent
if [[ ! `pidof xfce-polkit` ]]; then
/usr/lib/xfce-polkit/xfce-polkit &
fi
# Enable power management
xfce4-power-manager &
# Enable Super Keys For Menu
ksuperkey -e 'Super_L=Alt_L|F1' &
ksuperkey -e 'Super_R=Alt_L|F1' &
# Fix cursor
xsetroot -cursor_name left_ptr
# Restore wallpaper
"$idir"/themes/wallpaper.sh
# Lauch notification daemon
"$idir"/scripts/i3_dunst
# Lauch polybar
"$idir"/scripts/i3_bar
# Lauch compositor
"$idir"/scripts/i3_comp
# Start mpd
exec mpd &

9
config/i3/scripts/i3_bar Executable file
View File

@ -0,0 +1,9 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
# i3 directory
DIR="$HOME/.config/i3"
# launch polybar
bash "$DIR"/themes/polybar.sh

73
config/i3/scripts/i3_brightness Executable file
View File

@ -0,0 +1,73 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Script to manage brightness on Archcraft.
# Icons
iDIR='/usr/share/archcraft/icons/dunst'
# Graphics card
CARD=`ls /sys/class/backlight | head -n 1`
# Get brightness
get_backlight() {
if [[ "$CARD" == *"intel_"* ]]; then
BNESS=`xbacklight -get`
LIGHT=${BNESS%.*}
else
LIGHT=$(printf "%.0f\n" `light -G`)
fi
echo "${LIGHT}%"
}
# Get icons
get_icon() {
backlight="$(get_backlight)"
current="${backlight%%%}"
if [[ ("$current" -ge "0") && ("$current" -le "20") ]]; then
icon="$iDIR"/brightness-20.png
elif [[ ("$current" -ge "20") && ("$current" -le "40") ]]; then
icon="$iDIR"/brightness-40.png
elif [[ ("$current" -ge "40") && ("$current" -le "60") ]]; then
icon="$iDIR"/brightness-60.png
elif [[ ("$current" -ge "60") && ("$current" -le "80") ]]; then
icon="$iDIR"/brightness-80.png
elif [[ ("$current" -ge "80") && ("$current" -le "100") ]]; then
icon="$iDIR"/brightness-100.png
fi
}
# Notify
notify_bl() {
get_icon && dunstify -u low -h string:x-dunst-stack-tag:obbacklight -i "$icon" "Brightness : $(get_backlight)"
}
# Increase brightness
inc_backlight() {
if [[ "$CARD" == *"intel_"* ]]; then
xbacklight -inc 10 && notify_bl
else
light -A 5 && notify_bl
fi
}
# Decrease brightness
dec_backlight() {
if [[ "$CARD" == *"intel_"* ]]; then
xbacklight -dec 10 && notify_bl
else
light -U 5 && notify_bl
fi
}
# Execute accordingly
if [[ "$1" == "--get" ]]; then
get_backlight
elif [[ "$1" == "--inc" ]]; then
inc_backlight
elif [[ "$1" == "--dec" ]]; then
dec_backlight
else
get_backlight
fi

View File

@ -0,0 +1,22 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Simple script to pick color quickly.
color=$(xcolor --format hex --preview-size 255 --scale 10)
image=/tmp/${color}.png
main() {
if [[ "$color" ]]; then
# copy color code to clipboard
echo $color | tr -d "\n" | xclip -selection clipboard
# generate preview
convert -size 48x48 xc:"$color" ${image}
# notify about it
dunstify -u low -h string:x-dunst-stack-tag:obcolorpicker -i ${image} "$color, copied to clipboard."
fi
}
# run the script
main

15
config/i3/scripts/i3_comp Executable file
View File

@ -0,0 +1,15 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
# i3 directory
DIR="$HOME/.config/i3"
# Terminate if picom is already running
killall -q picom
# Wait until the processes have been shut down
while pgrep -u $UID -x picom >/dev/null; do sleep 1; done
# Launch picom
picom --config "$DIR"/picom.conf &

13
config/i3/scripts/i3_dunst Executable file
View File

@ -0,0 +1,13 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
# i3 directory
DIR="$HOME/.config/i3"
# Launch dunst daemon
if [[ `pidof dunst` ]]; then
pkill dunst
fi
dunst -config "$DIR"/dunstrc &

15
config/i3/scripts/i3_music Executable file
View File

@ -0,0 +1,15 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Run ncmpcpp with alternate config
# i3 directory
DIR="$HOME/.config/i3"
CONFIG="$DIR/alacritty/alacritty.yml"
alacritty --class 'Music,Music' --config-file "$CONFIG" \
-o window.dimensions.columns=109 window.dimensions.lines=22 \
-e ~/.ncmpcpp/scripts/ncmpcpp-art

87
config/i3/scripts/i3_screenshot Executable file
View File

@ -0,0 +1,87 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Script to take screenshots on Archcraft.
# file
time=`date +%Y-%m-%d-%H-%M-%S`
geometry=`xrandr | grep 'current' | head -n1 | cut -d',' -f2 | tr -d '[:blank:],current'`
dir="`xdg-user-dir PICTURES`/Screenshots"
file="Screenshot_${time}_${geometry}.png"
# directory
if [[ ! -d "$dir" ]]; then
mkdir -p "$dir"
fi
# notify and view screenshot
notify_view () {
notify_cmd_shot='dunstify -u low -h string:x-dunst-stack-tag:obscreenshot -i /usr/share/archcraft/icons/dunst/picture.png'
${notify_cmd_shot} "Copied to clipboard."
paplay /usr/share/sounds/freedesktop/stereo/screen-capture.oga &>/dev/null &
viewnior ${dir}/"$file"
if [[ -e "$dir/$file" ]]; then
${notify_cmd_shot} "Screenshot Saved."
else
${notify_cmd_shot} "Screenshot Deleted."
fi
}
# copy screenshot to clipboard
copy_shot () {
tee "$file" | xclip -selection clipboard -t image/png
}
# countdown
countdown () {
for sec in `seq $1 -1 1`; do
dunstify -t 1000 -h string:x-dunst-stack-tag:screenshottimer -i /usr/share/archcraft/icons/dunst/timer.png "Taking shot in : $sec"
sleep 1
done
}
# take shots
shotnow () {
cd ${dir} && maim -u -f png | copy_shot
notify_view
}
shot5 () {
countdown '5'
sleep 1 && cd ${dir} && maim -u -f png | copy_shot
notify_view
}
shot10 () {
countdown '10'
sleep 1 && cd ${dir} && maim -u -f png | copy_shot
notify_view
}
shotwin () {
cd ${dir} && maim -u -f png -i `xdotool getactivewindow` | copy_shot
notify_view
}
shotarea () {
cd ${dir} && maim -u -f png -s -b 2 -c 0.35,0.55,0.85,0.25 -l | copy_shot
notify_view
}
# execute
if [[ "$1" == "--now" ]]; then
shotnow
elif [[ "$1" == "--in5" ]]; then
shot5
elif [[ "$1" == "--in10" ]]; then
shot10
elif [[ "$1" == "--win" ]]; then
shotwin
elif [[ "$1" == "--area" ]]; then
shotarea
else
echo -e "Available Options : --now --in5 --in10 --win --area"
fi
exit 0

20
config/i3/scripts/i3_term Executable file
View File

@ -0,0 +1,20 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## launch alacritty with i3 config
# i3 directory
DIR="$HOME/.config/i3"
CONFIG="$DIR/alacritty/alacritty.yml"
if [ "$1" == "--float" ]; then
alacritty --class 'alacritty-float,alacritty-float' --config-file "$CONFIG"
elif [ "$1" == "--full" ]; then
alacritty --class 'Fullscreen,Fullscreen' --config-file "$CONFIG" \
-o window.startup_mode=fullscreen \
window.padding.x=30 window.padding.y=30 \
window.opacity=0.95 font.size=14
else
alacritty --config-file "$CONFIG"
fi

83
config/i3/scripts/i3_volume Executable file
View File

@ -0,0 +1,83 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Script to manage speaker volume on Archcraft.
# Icons
iDIR='/usr/share/archcraft/icons/dunst'
notify_cmd='dunstify -u low -h string:x-dunst-stack-tag:obvolume'
# Get Volume
get_volume() {
echo "`pulsemixer --get-volume | cut -d' ' -f1`"
}
# Get icons
get_icon() {
current="$(get_volume)"
if [[ "$current" -eq "0" ]]; then
icon="$iDIR/volume-mute.png"
elif [[ ("$current" -ge "0") && ("$current" -le "30") ]]; then
icon="$iDIR/volume-low.png"
elif [[ ("$current" -ge "30") && ("$current" -le "60") ]]; then
icon="$iDIR/volume-mid.png"
elif [[ ("$current" -ge "60") && ("$current" -le "100") ]]; then
icon="$iDIR/volume-high.png"
fi
}
# Notify
notify_user() {
${notify_cmd} -i "$icon" "Volume : $(get_volume)%"
}
# Increase Volume
inc_volume() {
[[ `pulsemixer --get-mute` == 1 ]] && pulsemixer --unmute
pulsemixer --max-volume 100 --change-volume +5 && get_icon && notify_user
}
# Decrease Volume
dec_volume() {
[[ `pulsemixer --get-mute` == 1 ]] && pulsemixer --unmute
pulsemixer --max-volume 100 --change-volume -5 && get_icon && notify_user
}
# Toggle Mute
toggle_mute() {
if [[ `pulsemixer --get-mute` == 0 ]]; then
pulsemixer --toggle-mute && ${notify_cmd} -i "$iDIR/volume-mute.png" "Mute"
else
pulsemixer --toggle-mute && get_icon && ${notify_cmd} -i "$icon" "Unmute"
fi
}
# Toggle Mic
toggle_mic() {
ID="`pulsemixer --list-sources | grep 'Default' | cut -d',' -f1 | cut -d' ' -f3`"
if [[ `pulsemixer --id $ID --get-mute` == 0 ]]; then
pulsemixer --id ${ID} --toggle-mute && ${notify_cmd} -i "$iDIR/microphone-mute.png" "Microphone Switched OFF"
else
pulsemixer --id ${ID} --toggle-mute && ${notify_cmd} -i "$iDIR/microphone.png" "Microphone Switched ON"
fi
}
# Execute accordingly
if [[ -x `which pulsemixer` ]]; then
if [[ "$1" == "--get" ]]; then
get_volume
elif [[ "$1" == "--inc" ]]; then
inc_volume
elif [[ "$1" == "--dec" ]]; then
dec_volume
elif [[ "$1" == "--toggle" ]]; then
toggle_mute
elif [[ "$1" == "--toggle-mic" ]]; then
toggle_mic
else
echo $(get_volume)%
fi
else
${notify_cmd} "'pulsemixer' is not installed."
fi

924
config/i3/scripts/network_menu Executable file
View File

@ -0,0 +1,924 @@
#!/usr/bin/env python3
# encoding:utf8
"""NetworkManager command line dmenu script.
To add new connections or enable/disable networking requires policykit
permissions setup per:
https://wiki.archlinux.org/index.php/NetworkManager#Set_up_PolicyKit_permissions
OR running the script as root
Add dmenu options and default terminal if desired to
~/.config/i3/themes/networkmenu_config.ini
"""
import pathlib
import struct
import configparser
import locale
import os
from os.path import expanduser
import shlex
from shutil import which
import sys
from time import sleep
import uuid
import subprocess
# pylint: disable=import-error
import gi
gi.require_version('NM', '1.0')
from gi.repository import GLib, NM # noqa pylint: disable=wrong-import-position
# pylint: enable=import-error
ENV = os.environ.copy()
ENV['LC_ALL'] = 'C'
ENC = locale.getpreferredencoding()
CONF = configparser.ConfigParser()
CONF.read(expanduser("~/.config/i3/themes/networkmenu_config.ini"))
def cli_args():
""" Don't override dmenu_cmd function arguments with CLI args. Removes -l
and -p if those are passed on the command line.
Exception: if -l is passed and dmenu_command is not defined, assume that the
user wants to switch dmenu to the vertical layout and include -l.
Returns: List of additional CLI arguments
"""
args = sys.argv[1:]
cmd = CONF.get('dmenu', 'dmenu_command', fallback=False)
if "-l" in args or "-p" in args:
for nope in ['-l', '-p'] if cmd is not False else ['-p']:
try:
nope_idx = args.index(nope)
del args[nope_idx]
del args[nope_idx]
except ValueError:
pass
return args
def dmenu_pass(command, color):
"""Check if dmenu passphrase patch is applied and return the correct command
line arg list
Args: command - string
color - obscure color string
Returns: list or None
"""
if command != 'dmenu':
return None
try:
# Check for dmenu password patch
dm_patch = b'P' in subprocess.run(["dmenu", "-h"],
capture_output=True,
check=False).stderr
except FileNotFoundError:
dm_patch = False
return ["-P"] if dm_patch else ["-nb", color, "-nf", color]
def dmenu_cmd(num_lines, prompt="Networks", active_lines=None):
"""Parse nmd.ini for menu options
Args: args - num_lines: number of lines to display
prompt: prompt to show
active_lines: list of line numbers to tag as active
Returns: command invocation (as a list of strings) for example
["dmenu", "-l", "<num_lines>", "-p", "<prompt>", "-i"]
"""
# Create command string
commands = {"dmenu": ["-p", str(prompt)],
"rofi": ["-dmenu", "-p", str(prompt), "-l", str(num_lines)],
"bemenu": ["-p", str(prompt)],
"wofi": ["-p", str(prompt)]}
command = shlex.split(CONF.get('dmenu', 'dmenu_command', fallback="dmenu"))
command.extend(cli_args())
command.extend(commands.get(command[0], []))
# Rofi Highlighting
rofi_highlight = CONF.getboolean('dmenu', 'rofi_highlight', fallback=False)
if rofi_highlight is True and command[0] == "rofi" and active_lines:
command.extend(["-a", ",".join([str(num) for num in active_lines])])
# Passphrase prompts
obscure = CONF.getboolean('dmenu_passphrase', 'obscure', fallback=False)
if prompt == "Passphrase" and obscure is True:
obscure_color = CONF.get('dmenu_passphrase', 'obscure_color', fallback='#222222')
pass_prompts = {"dmenu": dmenu_pass(command[0], obscure_color),
"rofi": ['-password'],
"bemenu": ['-x'],
"wofi": ['-P']}
command.extend(pass_prompts.get(command[0], []))
return command
def choose_adapter(client):
"""If there is more than one wifi adapter installed, ask which one to use
"""
devices = client.get_devices()
devices = [i for i in devices if i.get_device_type() == NM.DeviceType.WIFI]
if not devices:
return None
if len(devices) == 1:
return devices[0]
device_names = "\n".join([d.get_iface() for d in devices])
sel = subprocess.run(dmenu_cmd(len(devices), "CHOOSE ADAPTER:"),
capture_output=True,
check=False,
env=ENV,
input=device_names,
encoding=ENC).stdout
if not sel.strip():
sys.exit()
devices = [i for i in devices if i.get_iface() == sel.strip()]
assert len(devices) == 1
return devices[0]
def is_installed(cmd):
"""Check if a utility is installed"""
return which(cmd) is not None
def bluetooth_get_enabled():
"""Check if bluetooth is enabled via rfkill.
Returns None if no bluetooth device was found.
"""
# See https://www.kernel.org/doc/Documentation/ABI/stable/sysfs-class-rfkill
for path in pathlib.Path('/sys/class/rfkill/').glob('rfkill*'):
if (path / 'type').read_text().strip() == 'bluetooth':
return (path / 'soft').read_text().strip() == '0'
return None
def create_other_actions(client):
"""Return list of other actions that can be taken
"""
networking_enabled = client.networking_get_enabled()
networking_action = "Disable" if networking_enabled else "Enable"
wifi_enabled = client.wireless_get_enabled()
wifi_action = "Disable" if wifi_enabled else "Enable"
bluetooth_enabled = bluetooth_get_enabled()
bluetooth_action = "Disable" if bluetooth_enabled else "Enable"
actions = [Action(f"{wifi_action} Wifi", toggle_wifi,
not wifi_enabled),
Action(f"{networking_action} Networking",
toggle_networking, not networking_enabled)]
if bluetooth_enabled is not None:
actions.append(Action(f"{bluetooth_action} Bluetooth",
toggle_bluetooth, not bluetooth_enabled))
actions += [Action("Launch Connection Manager", launch_connection_editor),
Action("Delete a Connection", delete_connection)]
if wifi_enabled:
actions.append(Action("Rescan Wifi Networks", rescan_wifi))
return actions
def rescan_wifi():
"""
Rescan Wifi Access Points
"""
delay = CONF.getint('nmdm', 'rescan_delay', fallback=5)
for dev in CLIENT.get_devices():
if gi.repository.NM.DeviceWifi == type(dev):
try:
dev.request_scan_async(None, rescan_cb, None)
LOOP.run()
sleep(delay)
notify("Wifi scan complete")
main()
except gi.repository.GLib.Error as err:
# Too frequent rescan error
notify("Wifi rescan failed", urgency="critical")
if not err.code == 6: # pylint: disable=no-member
raise err
def rescan_cb(dev, res, data):
"""Callback for rescan_wifi. Just for notifications
"""
if dev.request_scan_finish(res) is True:
notify("Wifi scan running...")
else:
notify("Wifi scan failed", urgency="critical")
LOOP.quit()
def ssid_to_utf8(nm_ap):
""" Convert binary ssid to utf-8 """
ssid = nm_ap.get_ssid()
if not ssid:
return ""
ret = NM.utils_ssid_to_utf8(ssid.get_data())
return ret
def prompt_saved(saved_cons):
"""Prompt for a saved connection."""
actions = create_saved_actions(saved_cons)
sel = get_selection(actions)
sel()
def ap_security(nm_ap):
"""Parse the security flags to return a string with 'WPA2', etc. """
flags = nm_ap.get_flags()
wpa_flags = nm_ap.get_wpa_flags()
rsn_flags = nm_ap.get_rsn_flags()
sec_str = ""
if ((flags & getattr(NM, '80211ApFlags').PRIVACY) and
(wpa_flags == 0) and (rsn_flags == 0)):
sec_str = " WEP"
if wpa_flags:
sec_str = " WPA1"
if rsn_flags & getattr(NM, '80211ApSecurityFlags').KEY_MGMT_PSK:
sec_str += " WPA2"
if rsn_flags & getattr(NM, '80211ApSecurityFlags').KEY_MGMT_SAE:
sec_str += " WPA3"
if ((wpa_flags & getattr(NM, '80211ApSecurityFlags').KEY_MGMT_802_1X) or
(rsn_flags & getattr(NM, '80211ApSecurityFlags').KEY_MGMT_802_1X)):
sec_str += " 802.1X"
if ((wpa_flags & getattr(NM, '80211ApSecurityFlags').KEY_MGMT_OWE) or
(rsn_flags & getattr(NM, '80211ApSecurityFlags').KEY_MGMT_OWE)):
sec_str += " OWE"
# If there is no security use "--"
if sec_str == "":
sec_str = "--"
return sec_str.lstrip()
class Action(): # pylint: disable=too-few-public-methods
"""Helper class to execute functions from a string variable"""
def __init__(self,
name,
func,
args=None,
active=False):
self.name = name
self.func = func
self.is_active = active
if args is None:
self.args = None
elif isinstance(args, list):
self.args = args
else:
self.args = [args]
def __str__(self):
return self.name
def __call__(self):
if self.args is None:
self.func()
else:
self.func(*self.args)
def conn_matches_adapter(conn, adapter):
"""Return True if the connection is applicable for the given adapter.
There seem to be two ways for a connection specify what interface it belongs
to:
- By setting 'mac-address' in [wifi] to the adapter's MAC
- By setting 'interface-name` in [connection] to the adapter's name.
Depending on how the connection was added, it seems like either
'mac-address', 'interface-name' or neither of both is set.
"""
# [wifi] mac-address
setting_wireless = conn.get_setting_wireless()
mac = setting_wireless.get_mac_address()
if mac is not None:
return mac == adapter.get_permanent_hw_address()
# [connection] interface-name
setting_connection = conn.get_setting_connection()
interface = setting_connection.get_interface_name()
if interface is not None:
return interface == adapter.get_iface()
# Neither is set, let's assume this connection is for multiple/all adapters.
return True
def process_ap(nm_ap, is_active, adapter):
"""Activate/Deactivate a connection and get password if required"""
if is_active:
CLIENT.deactivate_connection_async(nm_ap, None, deactivate_cb, nm_ap)
LOOP.run()
else:
conns_cur = [i for i in CONNS if
i.get_setting_wireless() is not None and
conn_matches_adapter(i, adapter)]
con = nm_ap.filter_connections(conns_cur)
if len(con) > 1:
raise ValueError("There are multiple connections possible")
if len(con) == 1:
CLIENT.activate_connection_async(con[0], adapter, nm_ap.get_path(),
None, activate_cb, nm_ap)
LOOP.run()
else:
if ap_security(nm_ap) != "--":
password = get_passphrase()
else:
password = ""
set_new_connection(nm_ap, password, adapter)
def activate_cb(dev, res, data):
"""Notification if activate connection completed successfully
"""
try:
conn = dev.activate_connection_finish(res)
except GLib.Error:
conn = None
if conn is not None:
notify(f"Activated {conn.get_id()}")
else:
notify(f"Problem activating {data.get_id()}", urgency="critical")
LOOP.quit()
def deactivate_cb(dev, res, data):
"""Notification if deactivate connection completed successfully
"""
if dev.deactivate_connection_finish(res) is True:
notify(f"Deactivated {data.get_id()}")
else:
notify(f"Problem deactivating {data.get_id()}", urgency="critical")
LOOP.quit()
def process_vpngsm(con, activate):
"""Activate/deactive VPN or GSM connections"""
if activate:
CLIENT.activate_connection_async(con, None, None,
None, activate_cb, con)
else:
CLIENT.deactivate_connection_async(con, None, deactivate_cb, con)
LOOP.run()
def create_ap_actions(aps, active_ap, active_connection, adapter): # noqa pylint: disable=too-many-locals,line-too-long
"""For each AP in a list, create the string and its attached function
(activate/deactivate)
"""
active_ap_bssid = active_ap.get_bssid() if active_ap is not None else ""
names = [ssid_to_utf8(ap) for ap in aps]
max_len_name = max([len(name) for name in names]) if names else 0
secs = [ap_security(ap) for ap in aps]
max_len_sec = max([len(sec) for sec in secs]) if secs else 0
ap_actions = []
for nm_ap, name, sec in zip(aps, names, secs):
bars = NM.utils_wifi_strength_bars(nm_ap.get_strength())
wifi_chars = CONF.get("dmenu", "wifi_chars", fallback=False)
if wifi_chars:
bars = "".join([wifi_chars[i] for i, j in enumerate(bars) if j == '*'])
is_active = nm_ap.get_bssid() == active_ap_bssid
compact = CONF.getboolean("dmenu", "compact", fallback=False)
if compact:
action_name = f"{name} {sec} {bars}"
else:
action_name = f"{name:<{max_len_name}s} {sec:<{max_len_sec}s} {bars:>4}"
if is_active:
ap_actions.append(Action(action_name, process_ap,
[active_connection, True, adapter],
active=True))
else:
ap_actions.append(Action(action_name, process_ap,
[nm_ap, False, adapter]))
return ap_actions
def create_vpn_actions(vpns, active):
"""Create the list of strings to display with associated function
(activate/deactivate) for VPN connections.
"""
active_vpns = [i for i in active if i.get_vpn()]
return _create_vpngsm_actions(vpns, active_vpns, "VPN")
def create_wireguard_actions(wgs, active):
"""Create the list of strings to display with associated function
(activate/deactivate) for Wireguard connections.
"""
active_wgs = [i for i in active if i.get_connection_type() == "wireguard"]
return _create_vpngsm_actions(wgs, active_wgs, "Wireguard")
def create_eth_actions(eths, active):
"""Create the list of strings to display with associated function
(activate/deactivate) for Ethernet connections.
"""
active_eths = [i for i in active if 'ethernet' in i.get_connection_type()]
return _create_vpngsm_actions(eths, active_eths, "Eth")
def create_gsm_actions(gsms, active):
"""Create the list of strings to display with associated function
(activate/deactivate) GSM connections."""
active_gsms = [i for i in active if
i.get_connection() is not None and
i.get_connection().is_type(NM.SETTING_GSM_SETTING_NAME)]
return _create_vpngsm_actions(gsms, active_gsms, "GSM")
def create_blue_actions(blues, active):
"""Create the list of strings to display with associated function
(activate/deactivate) Bluetooth connections."""
active_blues = [i for i in active if
i.get_connection() is not None and
i.get_connection().is_type(NM.SETTING_BLUETOOTH_SETTING_NAME)]
return _create_vpngsm_actions(blues, active_blues, "Bluetooth")
def create_saved_actions(saved):
"""Create the list of strings to display with associated function
(activate/deactivate) for VPN connections.
"""
return _create_vpngsm_actions(saved, [], "SAVED")
def _create_vpngsm_actions(cons, active_cons, label):
active_con_ids = [a.get_id() for a in active_cons]
actions = []
for con in cons:
is_active = con.get_id() in active_con_ids
action_name = f"{con.get_id()}:{label}"
if is_active:
active_connection = [a for a in active_cons
if a.get_id() == con.get_id()]
if len(active_connection) != 1:
raise ValueError(f"Multiple active connections match {con.get_id()}")
active_connection = active_connection[0]
actions.append(Action(action_name, process_vpngsm,
[active_connection, False], active=True))
else:
actions.append(Action(action_name, process_vpngsm,
[con, True]))
return actions
def create_wwan_actions(client):
"""Create WWWAN actions
"""
wwan_enabled = client.wwan_get_enabled()
wwan_action = "Disable" if wwan_enabled else "Enable"
return [Action(f"{wwan_action} WWAN", toggle_wwan, not wwan_enabled)]
def combine_actions(eths, aps, vpns, wgs, gsms, blues, wwan, others, saved):
# pylint: disable=too-many-arguments
"""Combine all given actions into a list of actions.
Args: args - eths: list of Actions
aps: list of Actions
vpns: list of Actions
gsms: list of Actions
blues: list of Actions
wwan: list of Actions
others: list of Actions
"""
compact = CONF.getboolean("dmenu", "compact", fallback=False)
empty_action = [Action('', None)] if not compact else []
all_actions = []
all_actions += eths + empty_action if eths else []
all_actions += aps + empty_action if aps else []
all_actions += vpns + empty_action if vpns else []
all_actions += wgs + empty_action if wgs else []
all_actions += gsms + empty_action if (gsms and wwan) else []
all_actions += blues + empty_action if blues else []
all_actions += wwan + empty_action if wwan else []
all_actions += others + empty_action if others else []
all_actions += saved + empty_action if saved else []
return all_actions
def get_selection(all_actions):
"""Spawn dmenu for selection and execute the associated action."""
rofi_highlight = CONF.getboolean('dmenu', 'rofi_highlight', fallback=False)
inp = []
if rofi_highlight is True:
inp = [str(action) for action in all_actions]
else:
inp = [('== ' if action.is_active else ' ') + str(action)
for action in all_actions]
active_lines = [index for index, action in enumerate(all_actions)
if action.is_active]
command = dmenu_cmd(len(inp), active_lines=active_lines)
sel = subprocess.run(command,
capture_output=True,
check=False,
input="\n".join(inp),
encoding=ENC,
env=ENV).stdout
if not sel.rstrip():
sys.exit()
if rofi_highlight is False:
action = [i for i in all_actions
if ((str(i).strip() == str(sel.strip())
and not i.is_active) or
('== ' + str(i) == str(sel.rstrip('\n'))
and i.is_active))]
else:
action = [i for i in all_actions if str(i).strip() == sel.strip()]
assert len(action) == 1, f"Selection was ambiguous: '{str(sel.strip())}'"
return action[0]
def toggle_networking(enable):
"""Enable/disable networking
Args: enable - boolean
"""
toggle = GLib.Variant.new_tuple(GLib.Variant.new_boolean(enable))
try:
CLIENT.dbus_call(NM.DBUS_PATH, NM.DBUS_INTERFACE, "Enable", toggle,
None, -1, None, None, None)
except AttributeError:
# Workaround for older versions of python-gobject
CLIENT.networking_set_enabled(enable)
notify(f"Networking {'enabled' if enable is True else 'disabled'}")
def toggle_wifi(enable):
"""Enable/disable Wifi
Args: enable - boolean
"""
toggle = GLib.Variant.new_boolean(enable)
try:
CLIENT.dbus_set_property(NM.DBUS_PATH, NM.DBUS_INTERFACE, "WirelessEnabled", toggle,
-1, None, None, None)
except AttributeError:
# Workaround for older versions of python-gobject
CLIENT.wireless_set_enabled(enable)
notify(f"Wifi {'enabled' if enable is True else 'disabled'}")
def toggle_wwan(enable):
"""Enable/disable WWAN
Args: enable - boolean
"""
toggle = GLib.Variant.new_boolean(enable)
try:
CLIENT.dbus_set_property(NM.DBUS_PATH, NM.DBUS_INTERFACE, "WwanEnabled", toggle,
-1, None, None, None)
except AttributeError:
# Workaround for older versions of python-gobject
CLIENT.wwan_set_enabled(enable)
notify(f"Wwan {'enabled' if enable is True else 'disabled'}")
def toggle_bluetooth(enable):
"""Enable/disable Bluetooth
Args: enable - boolean
References:
https://github.com/blueman-project/blueman/blob/master/blueman/plugins/mechanism/RfKill.py
https://www.kernel.org/doc/html/latest/driver-api/rfkill.html
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/uapi/linux/rfkill.h?h=v5.8.9
"""
type_bluetooth = 2
op_change_all = 3
idx = 0
soft_state = 0 if enable else 1
hard_state = 0
data = struct.pack("IBBBB", idx, type_bluetooth, op_change_all,
soft_state, hard_state)
try:
with open('/dev/rfkill', 'r+b', buffering=0) as rff:
rff.write(data)
except PermissionError:
notify("Lacking permission to write to /dev/rfkill.",
"Check README for configuration options.",
urgency="critical")
else:
notify(f"Bluetooth {'enabled' if enable else 'disabled'}")
def launch_connection_editor():
"""Launch nmtui or the gui nm-connection-editor
"""
terminal = CONF.get("editor", "terminal", fallback="xterm")
gui_if_available = CONF.getboolean("editor", "gui_if_available", fallback=True)
guis = ["gnome-control-center", "nm-connection-editor"]
if gui_if_available is True:
for gui in guis:
if is_installed(gui):
subprocess.run(gui, check=False)
return
if is_installed("nmtui"):
subprocess.run([terminal, "-e", "nmtui"], check=False)
return
notify("No network connection editor installed", urgency="critical")
def get_passphrase():
"""Get a password
Returns: string
"""
pinentry = CONF.get("dmenu", "pinentry", fallback=None)
if pinentry:
pin = ""
out = subprocess.run(pinentry,
capture_output=True,
check=False,
encoding=ENC,
input='setdesc Get network password\ngetpin\n').stdout
if out:
res = out.split("\n")[2]
if res.startswith("D "):
pin = res.split("D ")[1]
return pin
return subprocess.run(dmenu_cmd(0, "Passphrase"),
stdin=subprocess.DEVNULL,
capture_output=True,
check=False,
encoding=ENC).stdout
def delete_connection():
"""Display list of NM connections and delete the selected one
"""
conn_acts = [Action(i.get_id(), i.delete_async, args=[None, delete_cb, None]) for i in CONNS]
conn_names = "\n".join([str(i) for i in conn_acts])
sel = subprocess.run(dmenu_cmd(len(conn_acts), "CHOOSE CONNECTION TO DELETE:"),
capture_output=True,
check=False,
input=conn_names,
encoding=ENC,
env=ENV).stdout
if not sel.strip():
sys.exit()
action = [i for i in conn_acts if str(i) == sel.rstrip("\n")]
assert len(action) == 1, f"Selection was ambiguous: {str(sel)}"
action[0]()
LOOP.run()
def delete_cb(dev, res, data):
"""Notification if delete completed successfully
"""
if dev.delete_finish(res) is True:
notify(f"Deleted {dev.get_id()}")
else:
notify(f"Problem deleting {dev.get_id()}", urgency="critical")
LOOP.quit()
def set_new_connection(nm_ap, nm_pw, adapter):
"""Setup a new NetworkManager connection
Args: ap - NM.AccessPoint
pw - string
"""
nm_pw = str(nm_pw).strip()
profile = create_wifi_profile(nm_ap, nm_pw, adapter)
CLIENT.add_and_activate_connection_async(profile, adapter, nm_ap.get_path(),
None, verify_conn, profile)
LOOP.run()
def create_wifi_profile(nm_ap, password, adapter):
# pylint: disable=line-too-long
# noqa From https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/examples/python/gi/add_connection.py
# noqa and https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/examples/python/dbus/add-wifi-psk-connection.py
# pylint: enable=line-too-long
"""Create the NM profile given the AP and passphrase"""
ap_sec = ap_security(nm_ap)
profile = NM.SimpleConnection.new()
s_con = NM.SettingConnection.new()
s_con.set_property(NM.SETTING_CONNECTION_ID, ssid_to_utf8(nm_ap))
s_con.set_property(NM.SETTING_CONNECTION_UUID, str(uuid.uuid4()))
s_con.set_property(NM.SETTING_CONNECTION_TYPE, "802-11-wireless")
profile.add_setting(s_con)
s_wifi = NM.SettingWireless.new()
s_wifi.set_property(NM.SETTING_WIRELESS_SSID, nm_ap.get_ssid())
s_wifi.set_property(NM.SETTING_WIRELESS_MODE, 'infrastructure')
s_wifi.set_property(NM.SETTING_WIRELESS_MAC_ADDRESS, adapter.get_permanent_hw_address())
profile.add_setting(s_wifi)
s_ip4 = NM.SettingIP4Config.new()
s_ip4.set_property(NM.SETTING_IP_CONFIG_METHOD, "auto")
profile.add_setting(s_ip4)
s_ip6 = NM.SettingIP6Config.new()
s_ip6.set_property(NM.SETTING_IP_CONFIG_METHOD, "auto")
profile.add_setting(s_ip6)
if ap_sec != "--":
s_wifi_sec = NM.SettingWirelessSecurity.new()
if "WPA" in ap_sec:
if "WPA3" in ap_sec:
s_wifi_sec.set_property(NM.SETTING_WIRELESS_SECURITY_KEY_MGMT,
"sae")
else:
s_wifi_sec.set_property(NM.SETTING_WIRELESS_SECURITY_KEY_MGMT,
"wpa-psk")
s_wifi_sec.set_property(NM.SETTING_WIRELESS_SECURITY_AUTH_ALG,
"open")
s_wifi_sec.set_property(NM.SETTING_WIRELESS_SECURITY_PSK, password)
elif "WEP" in ap_sec:
s_wifi_sec.set_property(NM.SETTING_WIRELESS_SECURITY_KEY_MGMT,
"None")
s_wifi_sec.set_property(NM.SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE,
NM.WepKeyType.PASSPHRASE)
s_wifi_sec.set_wep_key(0, password)
profile.add_setting(s_wifi_sec)
return profile
def verify_conn(client, result, data):
"""Callback function for add_and_activate_connection_async
Check if connection completes successfully. Delete the connection if there
is an error.
"""
try:
act_conn = client.add_and_activate_connection_finish(result)
conn = act_conn.get_connection()
if not all([conn.verify(),
conn.verify_secrets(),
data.verify(),
data.verify_secrets()]):
raise GLib.Error
notify(f"Added {conn.get_id()}")
except GLib.Error:
try:
notify(f"Connection to {conn.get_id()} failed",
urgency="critical")
conn.delete_async(None, None, None)
except UnboundLocalError:
pass
finally:
LOOP.quit()
def create_ap_list(adapter, active_connections):
"""Generate list of access points. Remove duplicate APs , keeping strongest
ones and the active AP
Args: adapter
active_connections - list of all active connections
Returns: aps - list of access points
active_ap - active AP
active_ap_con - active Connection
adapter
"""
aps = []
ap_names = []
active_ap = adapter.get_active_access_point()
aps_all = sorted(adapter.get_access_points(),
key=lambda a: a.get_strength(), reverse=True)
conns_cur = [i for i in CONNS if
i.get_setting_wireless() is not None and
conn_matches_adapter(i, adapter)]
try:
ap_conns = active_ap.filter_connections(conns_cur)
active_ap_name = ssid_to_utf8(active_ap)
active_ap_con = [active_conn for active_conn in active_connections
if active_conn.get_connection() in ap_conns]
except AttributeError:
active_ap_name = None
active_ap_con = []
if len(active_ap_con) > 1:
raise ValueError("Multiple connection profiles match"
" the wireless AP")
active_ap_con = active_ap_con[0] if active_ap_con else None
for nm_ap in aps_all:
ap_name = ssid_to_utf8(nm_ap)
if nm_ap != active_ap and ap_name == active_ap_name:
# Skip adding AP if it's not active but same name as active AP
continue
if ap_name not in ap_names:
ap_names.append(ap_name)
aps.append(nm_ap)
return aps, active_ap, active_ap_con, adapter
def notify(message, details=None, urgency="low"):
"""Use notify-send if available for notifications
"""
delay = CONF.getint('nmdm', 'rescan_delay', fallback=5)
args = ["-u", urgency, "-a", "networkmanager-dmenu",
"-t", str(delay * 1000), message]
if details is not None:
args.append(details)
if is_installed("notify-send"):
subprocess.run(["notify-send"] + args, check=False)
def run(): # pylint: disable=too-many-locals
"""Main script entrypoint"""
active = CLIENT.get_active_connections()
adapter = choose_adapter(CLIENT)
if adapter:
ap_actions = create_ap_actions(*create_ap_list(adapter, active))
else:
ap_actions = []
vpns = [i for i in CONNS if i.is_type(NM.SETTING_VPN_SETTING_NAME)]
try:
wgs = [i for i in CONNS if i.is_type(NM.SETTING_WIREGUARD_SETTING_NAME)]
except AttributeError:
# Workaround for older versions of python-gobject with no wireguard support
wgs = []
eths = [i for i in CONNS if i.is_type(NM.SETTING_WIRED_SETTING_NAME)]
blues = [i for i in CONNS if i.is_type(NM.SETTING_BLUETOOTH_SETTING_NAME)]
vpn_actions = create_vpn_actions(vpns, active)
wg_actions = create_wireguard_actions(wgs, active)
eth_actions = create_eth_actions(eths, active)
blue_actions = create_blue_actions(blues, active)
other_actions = create_other_actions(CLIENT)
wwan_installed = is_installed("ModemManager")
if wwan_installed:
gsms = [i for i in CONNS if i.is_type(NM.SETTING_GSM_SETTING_NAME)]
gsm_actions = create_gsm_actions(gsms, active)
wwan_actions = create_wwan_actions(CLIENT)
else:
gsm_actions = []
wwan_actions = []
list_saved = CONF.getboolean('dmenu', 'list_saved', fallback=False)
saved_cons = [i for i in CONNS if i not in vpns + wgs + eths + blues]
if list_saved:
saved_actions = create_saved_actions(saved_cons)
else:
saved_actions = [Action("Saved connections", prompt_saved, [saved_cons])]
actions = combine_actions(eth_actions, ap_actions, vpn_actions, wg_actions,
gsm_actions, blue_actions, wwan_actions,
other_actions, saved_actions)
sel = get_selection(actions)
sel()
def main():
"""Main. Enables script to be re-run after a wifi rescan
"""
global CLIENT, CONNS, LOOP # noqa pylint: disable=global-variable-undefined
CLIENT = NM.Client.new(None)
LOOP = GLib.MainLoop()
CONNS = CLIENT.get_connections()
run()
if __name__ == '__main__':
main()
# vim: set et ts=4 sw=4 :

15
config/i3/scripts/rofi_askpass Executable file
View File

@ -0,0 +1,15 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
# Import Current Theme
DIR="$HOME/.config/i3"
STYLE="gruvbox"
RASI="$DIR/themes/$STYLE/rofi/askpass.rasi"
# Rofi text dialog to get password
rofi -dmenu \
-password \
-i \
-p "Root" \
-theme ${RASI}

79
config/i3/scripts/rofi_asroot Executable file
View File

@ -0,0 +1,79 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
# Import Current Theme
DIR="$HOME/.config/i3"
STYLE="gruvbox"
RASI="$DIR/themes/$STYLE/rofi/asroot.rasi"
ASROOT="$DIR/scripts/i3_asroot"
# Theme Elements
prompt='Root'
mesg="Run Applications As Root"
term='alacritty --class alacritty-float,alacritty-float --config-file /root/.config/i3/alacritty/alacritty.yml'
# Options
layout=`cat ${RASI} | grep 'USE_ICON' | cut -d'=' -f2`
if [[ "$layout" == 'NO' ]]; then
option_1=" Alacritty"
option_2=" Thunar"
option_3=" Geany"
option_4=" Ranger"
option_5=" Vim"
else
option_1=""
option_2=""
option_3=""
option_4=""
option_5=""
fi
# Rofi CMD
rofi_cmd() {
rofi -dmenu \
-p "$prompt" \
-mesg "$mesg" \
-markup-rows \
-theme ${RASI}
}
# Pass variables to rofi dmenu
run_rofi() {
echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5" | rofi_cmd
}
# Execute Command
run_cmd() {
if [[ "$1" == '--opt1' ]]; then
${ASROOT} "$term"
elif [[ "$1" == '--opt2' ]]; then
${ASROOT} 'dbus-run-session thunar'
elif [[ "$1" == '--opt3' ]]; then
${ASROOT} geany
elif [[ "$1" == '--opt4' ]]; then
${ASROOT} "$term -e ranger"
elif [[ "$1" == '--opt5' ]]; then
${ASROOT} "$term -e vim"
fi
}
# Actions
chosen="$(run_rofi)"
case ${chosen} in
$option_1)
run_cmd --opt1
;;
$option_2)
run_cmd --opt2
;;
$option_3)
run_cmd --opt3
;;
$option_4)
run_cmd --opt4
;;
$option_5)
run_cmd --opt5
;;
esac

14
config/i3/scripts/rofi_launcher Executable file
View File

@ -0,0 +1,14 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
# Import Current Theme
DIR="$HOME/.config/i3"
STYLE="gruvbox"
RASI="$DIR/themes/$STYLE/rofi/launcher.rasi"
# Run
rofi \
-show drun \
-kb-cancel Alt-F1 \
-theme ${RASI}

119
config/i3/scripts/rofi_music Executable file
View File

@ -0,0 +1,119 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
# Import Current Theme
DIR="$HOME/.config/i3"
STYLE="gruvbox"
RASI="$DIR/themes/$STYLE/rofi/music.rasi"
# Theme Elements
status="`mpc status`"
if [[ -z "$status" ]]; then
prompt='Offline'
mesg="MPD is Offline"
else
prompt="`mpc -f "%artist%" current`"
mesg="`mpc -f "%title%" current` :: `mpc status | grep "#" | awk '{print $3}'`"
fi
# Options
layout=`cat ${RASI} | grep 'USE_ICON' | cut -d'=' -f2`
if [[ "$layout" == 'NO' ]]; then
if [[ ${status} == *"[playing]"* ]]; then
option_1=" Pause"
else
option_1=" Play"
fi
option_2=" Stop"
option_3=" Previous"
option_4=" Next"
option_5=" Repeat"
option_6=" Random"
else
if [[ ${status} == *"[playing]"* ]]; then
option_1=""
else
option_1=""
fi
option_2=""
option_3=""
option_4=""
option_5=""
option_6=""
fi
# Toggle Actions
active=''
urgent=''
# Repeat
if [[ ${status} == *"repeat: on"* ]]; then
active="-a 4"
elif [[ ${status} == *"repeat: off"* ]]; then
urgent="-u 4"
else
option_5=" Parsing Error"
fi
# Random
if [[ ${status} == *"random: on"* ]]; then
[ -n "$active" ] && active+=",5" || active="-a 5"
elif [[ ${status} == *"random: off"* ]]; then
[ -n "$urgent" ] && urgent+=",5" || urgent="-u 5"
else
option_6=" Parsing Error"
fi
# Rofi CMD
rofi_cmd() {
rofi -dmenu \
-p "$prompt" \
-mesg "$mesg" \
${active} ${urgent} \
-markup-rows \
-theme ${RASI}
}
# Pass variables to rofi dmenu
run_rofi() {
echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5\n$option_6" | rofi_cmd
}
# Execute Command
run_cmd() {
if [[ "$1" == '--opt1' ]]; then
mpc -q toggle && kunst --size 60x60 --silent
elif [[ "$1" == '--opt2' ]]; then
mpc -q stop
elif [[ "$1" == '--opt3' ]]; then
mpc -q prev && kunst --size 60x60 --silent
elif [[ "$1" == '--opt4' ]]; then
mpc -q next && kunst --size 60x60 --silent
elif [[ "$1" == '--opt5' ]]; then
mpc -q repeat
elif [[ "$1" == '--opt6' ]]; then
mpc -q random
fi
}
# Actions
chosen="$(run_rofi)"
case ${chosen} in
$option_1)
run_cmd --opt1
;;
$option_2)
run_cmd --opt2
;;
$option_3)
run_cmd --opt3
;;
$option_4)
run_cmd --opt4
;;
$option_5)
run_cmd --opt5
;;
$option_6)
run_cmd --opt6
;;
esac

116
config/i3/scripts/rofi_powermenu Executable file
View File

@ -0,0 +1,116 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
# Import Current Theme
DIR="$HOME/.config/i3"
STYLE="gruvbox"
RASI="$DIR/themes/$STYLE/rofi/powermenu.rasi"
CNFR="$DIR/themes/$STYLE/rofi/confirm.rasi"
# Theme Elements
prompt="`hostname` (`echo $DESKTOP_SESSION`)"
mesg="Uptime : `uptime -p | sed -e 's/up //g'`"
# Options
layout=`cat ${RASI} | grep 'USE_ICON' | cut -d'=' -f2`
if [[ "$layout" == 'NO' ]]; then
option_1=" Lock"
option_2=" Logout"
option_3=" Suspend"
option_4=" Hibernate"
option_5=" Reboot"
option_6=" Shutdown"
else
option_1=""
option_2=""
option_3=""
option_4=""
option_5=""
option_6=""
fi
cnflayout=`cat ${CNFR} | grep 'USE_ICON' | cut -d'=' -f2`
if [[ "$cnflayout" == 'NO' ]]; then
yes=' Yes'
no=' No'
else
yes=''
no=''
fi
# Rofi CMD
rofi_cmd() {
rofi -dmenu \
-p "$prompt" \
-mesg "$mesg" \
-markup-rows \
-theme ${RASI}
}
# Pass variables to rofi dmenu
run_rofi() {
echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5\n$option_6" | rofi_cmd
}
# Confirmation CMD
confirm_cmd() {
rofi -dmenu \
-p 'Confirmation' \
-mesg 'Are you Sure?' \
-theme ${CNFR}
}
# Ask for confirmation
confirm_exit() {
echo -e "$yes\n$no" | confirm_cmd
}
# Confirm and execute
confirm_run () {
selected="$(confirm_exit)"
if [[ "$selected" == "$yes" ]]; then
${1} && ${2} && ${3}
else
exit
fi
}
# Execute Command
run_cmd() {
if [[ "$1" == '--opt1' ]]; then
betterlockscreen --lock
elif [[ "$1" == '--opt2' ]]; then
confirm_run 'i3-msg exit'
elif [[ "$1" == '--opt3' ]]; then
confirm_run 'mpc -q pause' 'pulsemixer --mute' 'betterlockscreen --suspend'
elif [[ "$1" == '--opt4' ]]; then
confirm_run 'systemctl hibernate'
elif [[ "$1" == '--opt5' ]]; then
confirm_run 'systemctl reboot'
elif [[ "$1" == '--opt6' ]]; then
confirm_run 'systemctl poweroff'
fi
}
# Actions
chosen="$(run_rofi)"
case ${chosen} in
$option_1)
run_cmd --opt1
;;
$option_2)
run_cmd --opt2
;;
$option_3)
run_cmd --opt3
;;
$option_4)
run_cmd --opt4
;;
$option_5)
run_cmd --opt5
;;
$option_6)
run_cmd --opt6
;;
esac

13
config/i3/scripts/rofi_runner Executable file
View File

@ -0,0 +1,13 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
# Import Current Theme
DIR="$HOME/.config/i3"
STYLE="gruvbox"
RASI="$DIR/themes/$STYLE/rofi/runner.rasi"
# Run
rofi \
-show run \
-theme ${RASI}

142
config/i3/scripts/rofi_screenshot Executable file
View File

@ -0,0 +1,142 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
# Import Current Theme
DIR="$HOME/.config/i3"
STYLE="gruvbox"
RASI="$DIR/themes/$STYLE/rofi/screenshot.rasi"
# Theme Elements
prompt='Screenshot'
mesg="Directory :: `xdg-user-dir PICTURES`/Screenshots"
# Options
layout=`cat ${RASI} | grep 'USE_ICON' | cut -d'=' -f2`
if [[ "$layout" == 'NO' ]]; then
option_1=" Capture Desktop"
option_2=" Capture Area"
option_3=" Capture Window"
option_4=" Capture in 5s"
option_5=" Capture in 10s"
else
option_1=""
option_2=""
option_3=""
option_4=""
option_5=""
fi
# Rofi CMD
rofi_cmd() {
rofi -dmenu \
-p "$prompt" \
-mesg "$mesg" \
-markup-rows \
-theme ${RASI}
}
# Pass variables to rofi dmenu
run_rofi() {
echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5" | rofi_cmd
}
# Screenshot
time=`date +%Y-%m-%d-%H-%M-%S`
geometry=`xrandr | grep 'current' | head -n1 | cut -d',' -f2 | tr -d '[:blank:],current'`
dir="`xdg-user-dir PICTURES`/Screenshots"
file="Screenshot_${time}_${geometry}.png"
# Directory
if [[ ! -d "$dir" ]]; then
mkdir -p "$dir"
fi
# notify and view screenshot
notify_view() {
notify_cmd_shot='dunstify -u low -h string:x-dunst-stack-tag:obscreenshot -i /usr/share/archcraft/icons/dunst/picture.png'
${notify_cmd_shot} "Copied to clipboard."
paplay /usr/share/sounds/freedesktop/stereo/screen-capture.oga &>/dev/null &
viewnior ${dir}/"$file"
if [[ -e "$dir/$file" ]]; then
${notify_cmd_shot} "Screenshot Saved."
else
${notify_cmd_shot} "Screenshot Deleted."
fi
}
# Copy screenshot to clipboard
copy_shot () {
tee "$file" | xclip -selection clipboard -t image/png
}
# countdown
countdown () {
for sec in `seq $1 -1 1`; do
dunstify -t 1000 -h string:x-dunst-stack-tag:screenshottimer -i /usr/share/archcraft/icons/dunst/timer.png "Taking shot in : $sec"
sleep 1
done
}
# take shots
shotnow () {
cd ${dir} && sleep 0.5 && maim -u -f png | copy_shot
notify_view
}
shot5 () {
countdown '5'
sleep 1 && cd ${dir} && maim -u -f png | copy_shot
notify_view
}
shot10 () {
countdown '10'
sleep 1 && cd ${dir} && maim -u -f png | copy_shot
notify_view
}
shotwin () {
cd ${dir} && maim -u -f png -i `xdotool getactivewindow` | copy_shot
notify_view
}
shotarea () {
cd ${dir} && maim -u -f png -s -b 2 -c 0.35,0.55,0.85,0.25 -l | copy_shot
notify_view
}
# Execute Command
run_cmd() {
if [[ "$1" == '--opt1' ]]; then
shotnow
elif [[ "$1" == '--opt2' ]]; then
shotarea
elif [[ "$1" == '--opt3' ]]; then
shotwin
elif [[ "$1" == '--opt4' ]]; then
shot5
elif [[ "$1" == '--opt5' ]]; then
shot10
fi
}
# Actions
chosen="$(run_rofi)"
case ${chosen} in
$option_1)
run_cmd --opt1
;;
$option_2)
run_cmd --opt2
;;
$option_3)
run_cmd --opt3
;;
$option_4)
run_cmd --opt4
;;
$option_5)
run_cmd --opt5
;;
esac

50
config/i3/scripts/rofi_themes Executable file
View File

@ -0,0 +1,50 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
# Import Current Theme
DIR="$HOME/.config/i3"
STYLE="gruvbox"
RASI="$DIR/themes/$STYLE/rofi/themes.rasi"
# List Available Themes
THEMES=(`cd $DIR/themes && ls -d */ | cut -d '/' -f1`)
# Theme Elements
prompt="Themes"
mesg="<b>Available Themes</b> : `cd $DIR/themes && ls -d */ | cut -d '/' -f1 | wc -l`"
# Rofi CMD
rofi_cmd() {
rofi -dmenu \
-p "$prompt" \
-mesg "$mesg" \
-sep '|' \
-markup-rows \
-theme ${RASI}
}
# Pass variables to rofi dmenu
run_rofi() {
echo ${THEMES[@]} | sed 's/ /|/g' | sed 's/$/|/' | sed 's/^/Random||/' | rofi_cmd
}
# Apply Theme
apply_theme() {
selected="`run_rofi`"
current="`cat $DIR/themes/.current`"
for theme in "${THEMES[@]}"; do
if [[ -z "$selected" ]]; then
break
elif [[ "$selected" == "$theme" ]]; then
"$DIR"/themes/"$theme"/apply.sh
break
elif [[ "$selected" == 'Random' ]]; then
"$DIR"/themes/"$current"/random.sh
break
fi
done
}
apply_theme && exit 0

13
config/i3/scripts/rofi_windows Executable file
View File

@ -0,0 +1,13 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
# Import Current Theme
DIR="$HOME/.config/i3"
STYLE="gruvbox"
RASI="$DIR/themes/$STYLE/rofi/windows.rasi"
# Run
rofi \
-show window \
-theme ${RASI}

View File

@ -0,0 +1 @@
gruvbox

0
config/i3/themes/.system Normal file
View File

View File

@ -0,0 +1,316 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Script To Apply Themes
## Theme ------------------------------------
IDIR="$HOME/.config/i3"
TDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
THEME="${TDIR##*/}"
source "$IDIR"/themes/"$THEME"/theme.bash
altbackground="`pastel color $background | pastel lighten $light_value | pastel format hex`"
altforeground="`pastel color $foreground | pastel darken $dark_value | pastel format hex`"
modbackground=(`pastel gradient -n 7 $background $altbackground | pastel format hex`)
## Directories ------------------------------
PATH_CONF="$HOME/.config"
PATH_GEANY="$PATH_CONF/geany"
PATH_I3WM="$PATH_CONF/i3"
PATH_TERM="$PATH_I3WM/alacritty"
PATH_PBAR="$PATH_I3WM/themes/$THEME/polybar"
PATH_ROFI="$PATH_I3WM/themes/$THEME/rofi"
## Wallpaper ---------------------------------
apply_wallpaper() {
sed -i -e "s#WALLPAPER=.*#WALLPAPER='$wallpaper'#g" ${PATH_I3WM}/themes/wallpaper.sh
}
## Polybar -----------------------------------
apply_polybar() {
# modify polybar launch script
sed -i -e "s/STYLE=.*/STYLE=\"$THEME\"/g" ${PATH_I3WM}/themes/polybar.sh
# apply default theme fonts
sed -i -e "s/font-0 = .*/font-0 = \"$polybar_font\"/g" ${PATH_PBAR}/config.ini
# rewrite colors file
cat > ${PATH_PBAR}/colors.ini <<- EOF
[color]
BACKGROUND = ${background}
FOREGROUND = ${foreground}
ALTBACKGROUND = ${altbackground}
ALTFOREGROUND = ${altforeground}
ACCENT = ${accent}
BLACK = ${color0}
RED = ${color1}
GREEN = ${color2}
YELLOW = ${color3}
BLUE = ${color4}
MAGENTA = ${color5}
CYAN = ${color6}
WHITE = ${color7}
ALTBLACK = ${color8}
ALTRED = ${color9}
ALTGREEN = ${color10}
ALTYELLOW = ${color11}
ALTBLUE = ${color12}
ALTMAGENTA = ${color13}
ALTCYAN = ${color14}
ALTWHITE = ${color15}
BACKGROUND1 = ${modbackground[1]}
BACKGROUND2 = ${modbackground[2]}
BACKGROUND3 = ${modbackground[3]}
BACKGROUND4 = ${modbackground[4]}
BACKGROUND5 = ${modbackground[5]}
BACKGROUND6 = ${modbackground[6]}
EOF
}
# Rofi --------------------------------------
apply_rofi() {
# modify rofi scripts
sed -i -e "s/STYLE=.*/STYLE=\"$THEME\"/g" \
${PATH_I3WM}/scripts/rofi_askpass \
${PATH_I3WM}/scripts/rofi_asroot \
${PATH_I3WM}/scripts/rofi_launcher \
${PATH_I3WM}/scripts/rofi_music \
${PATH_I3WM}/scripts/rofi_powermenu \
${PATH_I3WM}/scripts/rofi_runner \
${PATH_I3WM}/scripts/rofi_screenshot \
${PATH_I3WM}/scripts/rofi_themes \
${PATH_I3WM}/scripts/rofi_windows
# apply default theme fonts
sed -i -e "s/font:.*/font: \"$rofi_font\";/g" ${PATH_ROFI}/shared/fonts.rasi
# rewrite colors file
cat > ${PATH_ROFI}/shared/colors.rasi <<- EOF
* {
background: ${background};
background-alt: ${modbackground[2]};
foreground: ${foreground};
selected: ${accent};
active: ${color2};
urgent: ${color1};
}
EOF
# modify icon theme
if [[ -f "$PATH_CONF"/rofi/config.rasi ]]; then
sed -i -e "s/icon-theme:.*/icon-theme: \"$rofi_icon\";/g" ${PATH_CONF}/rofi/config.rasi
fi
}
# Network Menu ------------------------------
apply_netmenu() {
if [[ -f "$PATH_I3WM"/themes/networkmenu_config.ini ]]; then
sed -i -e "s#dmenu_command = .*#dmenu_command = rofi -dmenu -theme $PATH_ROFI/networkmenu.rasi#g" ${PATH_I3WM}/themes/networkmenu_config.ini
fi
}
# Terminal ----------------------------------
apply_terminal() {
# alacritty : fonts
sed -i ${PATH_TERM}/fonts.yml \
-e "s/family: .*/family: \"$terminal_font_name\"/g" \
-e "s/size: .*/size: $terminal_font_size/g"
# alacritty : colors
cat > ${PATH_TERM}/colors.yml <<- _EOF_
## Colors configuration
colors:
# Default colors
primary:
background: '${background}'
foreground: '${foreground}'
# Normal colors
normal:
black: '${color0}'
red: '${color1}'
green: '${color2}'
yellow: '${color3}'
blue: '${color4}'
magenta: '${color5}'
cyan: '${color6}'
white: '${color7}'
# Bright colors
bright:
black: '${color8}'
red: '${color9}'
green: '${color10}'
yellow: '${color11}'
blue: '${color12}'
magenta: '${color13}'
cyan: '${color14}'
white: '${color15}'
_EOF_
}
# Geany -------------------------------------
apply_geany() {
sed -i ${PATH_GEANY}/geany.conf \
-e "s/color_scheme=.*/color_scheme=$geany_colors/g" \
-e "s/editor_font=.*/editor_font=$geany_font/g"
}
# Appearance --------------------------------
apply_appearance() {
XFILE="$PATH_I3WM/xsettingsd"
GTK2FILE="$HOME/.gtkrc-2.0"
GTK3FILE="$PATH_CONF/gtk-3.0/settings.ini"
# apply gtk theme, icons, cursor & fonts
if [[ `pidof xsettingsd` ]]; then
sed -i -e "s|Net/ThemeName .*|Net/ThemeName \"$gtk_theme\"|g" ${XFILE}
sed -i -e "s|Net/IconThemeName .*|Net/IconThemeName \"$icon_theme\"|g" ${XFILE}
sed -i -e "s|Gtk/CursorThemeName .*|Gtk/CursorThemeName \"$cursor_theme\"|g" ${XFILE}
else
sed -i -e "s/gtk-font-name=.*/gtk-font-name=\"$gtk_font\"/g" ${GTK2FILE}
sed -i -e "s/gtk-theme-name=.*/gtk-theme-name=\"$gtk_theme\"/g" ${GTK2FILE}
sed -i -e "s/gtk-icon-theme-name=.*/gtk-icon-theme-name=\"$icon_theme\"/g" ${GTK2FILE}
sed -i -e "s/gtk-cursor-theme-name=.*/gtk-cursor-theme-name=\"$cursor_theme\"/g" ${GTK2FILE}
sed -i -e "s/gtk-font-name=.*/gtk-font-name=$gtk_font/g" ${GTK3FILE}
sed -i -e "s/gtk-theme-name=.*/gtk-theme-name=$gtk_theme/g" ${GTK3FILE}
sed -i -e "s/gtk-icon-theme-name=.*/gtk-icon-theme-name=$icon_theme/g" ${GTK3FILE}
sed -i -e "s/gtk-cursor-theme-name=.*/gtk-cursor-theme-name=$cursor_theme/g" ${GTK3FILE}
fi
# inherit cursor theme
if [[ -f "$HOME"/.icons/default/index.theme ]]; then
sed -i -e "s/Inherits=.*/Inherits=$cursor_theme/g" "$HOME"/.icons/default/index.theme
fi
}
# Dunst -------------------------------------
apply_dunst() {
# modify dunst config
sed -i ${PATH_I3WM}/dunstrc \
-e "s/width = .*/width = $dunst_width/g" \
-e "s/height = .*/height = $dunst_height/g" \
-e "s/offset = .*/offset = $dunst_offset/g" \
-e "s/origin = .*/origin = $dunst_origin/g" \
-e "s/font = .*/font = $dunst_font/g" \
-e "s/frame_width = .*/frame_width = $dunst_border/g" \
-e "s/separator_height = .*/separator_height = $dunst_separator/g" \
-e "s/line_height = .*/line_height = $dunst_separator/g"
# modify colors
sed -i '/urgency_low/Q' ${PATH_I3WM}/dunstrc
cat >> ${PATH_I3WM}/dunstrc <<- _EOF_
[urgency_low]
timeout = 2
background = "${background}"
foreground = "${foreground}"
frame_color = "${accent}"
[urgency_normal]
timeout = 5
background = "${background}"
foreground = "${foreground}"
frame_color = "${accent}"
[urgency_critical]
timeout = 0
background = "${background}"
foreground = "${color1}"
frame_color = "${color1}"
_EOF_
}
# Compositor --------------------------------
apply_compositor() {
picom_cfg="$PATH_I3WM/picom.conf"
# modify picom config
sed -i "$picom_cfg" \
-e "s/backend = .*/backend = \"$picom_backend\";/g" \
-e "s/corner-radius = .*/corner-radius = $picom_corner;/g" \
-e "s/shadow-radius = .*/shadow-radius = $picom_shadow_r;/g" \
-e "s/shadow-opacity = .*/shadow-opacity = $picom_shadow_o;/g" \
-e "s/shadow-offset-x = .*/shadow-offset-x = $picom_shadow_x;/g" \
-e "s/shadow-offset-y = .*/shadow-offset-y = $picom_shadow_y;/g" \
-e "s/method = .*/method = \"$picom_blur_method\";/g" \
-e "s/strength = .*/strength = $picom_blur_strength;/g"
}
# I3WM -------------------------------------
apply_i3wm() {
# modify i3theme file
sed -i ${PATH_I3WM}/config.d/01_theme.conf \
-e "s/set \$i3_fonts.*/set \$i3_fonts $i3wm_fonts/g" \
\
-e "s/set \$i3_border_size.*/set \$i3_border_size $i3wm_border_size/g" \
-e "s/set \$i3_border_style.*/set \$i3_border_style $i3wm_border_style/g" \
\
-e "s/set \$i3_gaps_inner.*/set \$i3_gaps_inner $i3wm_gaps_inner/g" \
-e "s/set \$i3_gaps_outer.*/set \$i3_gaps_outer $i3wm_gaps_outer/g" \
-e "s/set \$i3_gaps_smart.*/set \$i3_gaps_smart $i3wm_gaps_smart/g" \
\
-e "s/set \$i3_cl_col_bg.*/set \$i3_cl_col_bg $background/g" \
-e "s/set \$i3_cl_col_fg.*/set \$i3_cl_col_fg $foreground/g" \
-e "s/set \$i3_cl_col_in.*/set \$i3_cl_col_in $color2/g" \
-e "s/set \$i3_cl_col_afoc.*/set \$i3_cl_col_afoc $accent/g" \
-e "s/set \$i3_cl_col_ifoc.*/set \$i3_cl_col_ifoc $color4/g" \
-e "s/set \$i3_cl_col_ufoc.*/set \$i3_cl_col_ufoc $altbackground/g" \
-e "s/set \$i3_cl_col_urgt.*/set \$i3_cl_col_urgt $color5/g" \
-e "s/set \$i3_cl_col_phol.*/set \$i3_cl_col_phol $background/g"
# modify i3bar file
sed -i ${PATH_I3WM}/i3status/statusbar.conf \
-e "s/set \$i3_bar_fonts.*/set \$i3_bar_fonts $i3wm_fonts/g" \
\
-e "s/set \$i3_bar_bg.*/set \$i3_bar_bg $background/g" \
-e "s/set \$i3_bar_fg.*/set \$i3_bar_fg $foreground/g" \
-e "s/set \$i3_bar_sep.*/set \$i3_bar_sep $altbackground/g" \
-e "s/set \$i3_bar_foc.*/set \$i3_bar_foc $accent/g" \
-e "s/set \$i3_bar_act.*/set \$i3_bar_act $color4/g" \
-e "s/set \$i3_bar_ina.*/set \$i3_bar_ina $altbackground/g" \
-e "s/set \$i3_bar_urg.*/set \$i3_bar_urg $color5/g" \
-e "s/set \$i3_bar_mod.*/set \$i3_bar_mod $color2/g"
# modify i3status file
sed -i ${PATH_I3WM}/i3status/config \
-e "s/color_good =.*/color_good = \"$color2\"/g" \
-e "s/color_degraded =.*/color_degraded = \"$color3\"/g" \
-e "s/color_bad =.*/color_bad = \"$color1\"/g" \
-e "s/color_separator =.*/color_separator = \"$altbackground\"/g"
# restart i3wm
i3-msg restart
}
# Create Theme File -------------------------
create_file() {
theme_file="$PATH_I3WM/themes/.current"
if [[ ! -f "$theme_file" ]]; then
touch ${theme_file}
fi
echo "$THEME" > ${theme_file}
}
# Notify User -------------------------------
notify_user() {
dunstify -u normal -h string:x-dunst-stack-tag:applytheme -i /usr/share/archcraft/icons/dunst/themes.png "Applying Style : $THEME"
}
## Execute Script ---------------------------
notify_user
create_file
apply_wallpaper
apply_polybar
apply_rofi
apply_netmenu
apply_terminal
apply_geany
apply_appearance
apply_dunst
apply_compositor
apply_i3wm

View File

@ -0,0 +1,31 @@
[color]
BACKGROUND = #121a1e
FOREGROUND = #d4d5d8
ALTBACKGROUND = #2f434e
ALTFOREGROUND = #84878f
ACCENT = #C0C0BE
BLACK = #121a1e
RED = #919491
GREEN = #A2A29B
YELLOW = #969BA5
BLUE = #9DA2AA
MAGENTA = #AFB2B8
CYAN = #C0C0BE
WHITE = #d4d5d8
ALTBLACK = #949597
ALTRED = #919491
ALTGREEN = #A2A29B
ALTYELLOW = #969BA5
ALTBLUE = #9DA2AA
ALTMAGENTA = #AFB2B8
ALTCYAN = #C0C0BE
ALTWHITE = #d4d5d8
BACKGROUND1 = #172025
BACKGROUND2 = #1b272d
BACKGROUND3 = #202e35
BACKGROUND4 = #25353d
BACKGROUND5 = #2a3c46
BACKGROUND6 = #2f434e

View File

@ -0,0 +1,307 @@
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; Global WM Settings
[global/wm]
; Adjust the _NET_WM_STRUT_PARTIAL top value
; Used for top aligned bars
margin-bottom = 0
; Adjust the _NET_WM_STRUT_PARTIAL bottom value
; Used for bottom aligned bars
margin-top = 0
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; File Inclusion
; include an external file, like module file, etc.
include-file = ../../system.ini
include-file = ./colors.ini
include-file = ./modules.ini
include-file = ./decor.ini
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; Bar Settings
[bar/main]
; Use either of the following command to list available outputs:
; If unspecified, the application will pick the first one it finds.
; $ polybar -m | cut -d ':' -f 1
; $ xrandr -q | grep " connected" | cut -d ' ' -f1
monitor = ${env:MONITOR:}
; Use the specified monitor as a fallback if the main one is not found.
monitor-fallback =
; Require the monitor to be in connected state
; XRandR sometimes reports my monitor as being disconnected (when in use)
monitor-strict = false
; Tell the Window Manager not to configure the window.
; Use this to detach the bar if your WM is locking its size/position.
override-redirect = false
; Put the bar at the bottom of the screen
bottom = false
; Prefer fixed center position for the `modules-center` block
; When false, the center position will be based on the size of the other blocks.
fixed-center = true
; Dimension defined as pixel value (e.g. 35) or percentage (e.g. 50%),
; the percentage can optionally be extended with a pixel offset like so:
; 50%:-10, this will result in a width or height of 50% minus 10 pixels
width = 100%
height = 34
; Offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
; the percentage can optionally be extended with a pixel offset like so:
; 50%:-10, this will result in an offset in the x or y direction
; of 50% minus 10 pixels
offset-x = 0%
offset-y = 0%
; Background ARGB color (e.g. #f00, #ff992a, #ddff1023)
background = ${color.BACKGROUND}
; Foreground ARGB color (e.g. #f00, #ff992a, #ddff1023)
foreground = ${color.FOREGROUND}
; Background gradient (vertical steps)
; background-[0-9]+ = #aarrggbb
;;background-0 =
; Value used for drawing rounded corners
; Note: This shouldn't be used together with border-size because the border
; doesn't get rounded
; Individual top/bottom values can be defined using:
; radius-{top,bottom}
radius-top = 0.0
radius-bottom = 0.0
; Under-/overline pixel size and argb color
; Individual values can be defined using:
; {overline,underline}-size
; {overline,underline}-color
line-size = 2
line-color = ${color.ACCENT}
; Values applied to all borders
; Individual side values can be defined using:
; border-{left,top,right,bottom}-size
; border-{left,top,right,bottom}-color
; The top and bottom borders are added to the bar height, so the effective
; window height is:
; height + border-top-size + border-bottom-size
; Meanwhile the effective window width is defined entirely by the width key and
; the border is placed withing this area. So you effectively only have the
; following horizontal space on the bar:
; width - border-right-size - border-left-size
border-top-size = 0
border-color = ${color.ACCENT}
; Number of spaces to add at the beginning/end of the bar
; Individual side values can be defined using:
; padding-{left,right}
padding = 0
; Number of spaces to add before/after each module
; Individual side values can be defined using:
; module-margin-{left,right}
module-margin-left = 0
module-margin-right = 0
; Fonts are defined using <font-name>;<vertical-offset>
; Font names are specified using a fontconfig pattern.
; font-0 = "Iosevka Nerd Font:size=10;3"
; font-1 = MaterialIcons:size=10
; font-2 = Termsynu:size=8;-1
; font-3 = FontAwesome:size=10
; See the Fonts wiki page for more details
font-0 = "Iosevka Nerd Font:size=10;3"
font-1 = "Iosevka Nerd Font:size=12;3"
font-2 = "Iosevka Nerd Font:size=20;5"
; Modules are added to one of the available blocks
; modules-left = cpu ram
; modules-center = xwindow xbacklight
; modules-right = ipc clock
# Default
modules-left = sepL menu 1LD i3 2LD cpu 3LD used-memory 4LD filesystem 5LD
modules-center = mpd
modules-right = 2RD volume 3RD backlight 4RD battery 5RD network 6RD date 7RD sysmenu sepR
# Alternate
;modules-left = openbox 2LD cpu 3LD memory 4LD filesystem 5LD
;modules-center = mpd
;modules-right = 2RD volume 3RD backlight 4RD battery 5RD network 6RD date sep
; The separator will be inserted between the output of each module
separator =
; This value is used to add extra spacing between elements
; @deprecated: This parameter will be removed in an upcoming version
spacing = 0
; Opacity value between 0.0 and 1.0 used on fade in/out
dim-value = 1.0
; Value to be used to set the WM_NAME atom
; If the value is empty or undefined, the atom value
; will be created from the following template: polybar-[BAR]_[MONITOR]
; NOTE: The placeholders are not available for custom values
wm-name = i3
; Locale used to localize various module data (e.g. date)
; Expects a valid libc locale, for example: sv_SE.UTF-8
locale =
; Position of the system tray window
; If empty or undefined, tray support will be disabled
; NOTE: A center aligned tray will cover center aligned modules
;
; Available positions:
; left
; center
; right
; none
tray-position = right
; If true, the bar will not shift its
; contents when the tray changes
tray-detached = false
; Tray icon max size
tray-maxsize = 16
; DEPRECATED! Since 3.3.0 the tray always uses pseudo-transparency
; Enable pseudo transparency
; Will automatically be enabled if a fully transparent
; background color is defined using `tray-background`
; tray-transparent = false
; Background color for the tray container
; ARGB color (e.g. #f00, #ff992a, #ddff1023)
; By default the tray container will use the bar
; background color.
tray-background = ${color.BACKGROUND6}
; Tray offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
tray-offset-x = 0
tray-offset-y = 0
; Pad the sides of each tray icon
tray-padding = 0
; Scale factor for tray clients
tray-scale = 1.0
; Restack the bar window and put it above the
; selected window manager's root
;
; Fixes the issue where the bar is being drawn
; on top of fullscreen window's
;
; Currently supported WM's:
; bspwm
; i3 (requires: `override-redirect = true`)
wm-restack = i3
; Set a DPI values used when rendering text
; This only affects scalable fonts
; dpi =
; Enable support for inter-process messaging
; See the Messaging wiki page for more details.
enable-ipc = true
; Fallback click handlers that will be called if
; there's no matching module handler found.
click-left =
click-middle =
click-right =
scroll-up =
scroll-down =
double-click-left =
double-click-middle =
double-click-right =
; Requires polybar to be built with xcursor support (xcb-util-cursor)
; Possible values are:
; - default : The default pointer as before, can also be an empty string (default)
; - pointer : Typically in the form of a hand
; - ns-resize : Up and down arrows, can be used to indicate scrolling
cursor-click =
cursor-scroll =
;; WM Workspace Specific
; bspwm
;;scroll-up = bspwm-desknext
;;scroll-down = bspwm-deskprev
;;scroll-up = bspc desktop -f prev.local
;;scroll-down = bspc desktop -f next.local
;i3
;;scroll-up = i3wm-wsnext
;;scroll-down = i3wm-wsprev
;;scroll-up = i3-msg workspace next_on_output
;;scroll-down = i3-msg workspace prev_on_output
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; Application Settings
[settings]
; The throttle settings lets the eventloop swallow up til X events
; if they happen within Y millisecond after first event was received.
; This is done to prevent flood of update event.
;
; For example if 5 modules emit an update event at the same time, we really
; just care about the last one. But if we wait too long for events to swallow
; the bar would appear sluggish so we continue if timeout
; expires or limit is reached.
throttle-output = 5
throttle-output-for = 10
; Time in milliseconds that the input handler will wait between processing events
;throttle-input-for = 30
; Reload upon receiving XCB_RANDR_SCREEN_CHANGE_NOTIFY events
screenchange-reload = false
; Compositing operators
; @see: https://www.cairographics.org/manual/cairo-cairo-t.html#cairo-operator-t
compositing-background = source
compositing-foreground = over
compositing-overline = over
compositing-underline = over
compositing-border = over
; Define fallback values used by all module formats
;format-foreground =
;format-background =
;format-underline =
;format-overline =
;format-spacing =
;format-padding =
;format-margin =
;format-offset =
; Enables pseudo-transparency for the bar
; If set to true the bar can be transparent without a compositor.
pseudo-transparency = false
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; __________ ______
;; / ____/ __ \/ ____/
;; / __/ / / / / /_
;; / /___/ /_/ / __/
;; /_____/\____/_/
;;
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

View File

@ -0,0 +1,92 @@
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
;; DECOR _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
[module/sepL]
type = custom/text
content = --
content-background = ${color.BACKGROUND5}
content-foreground = ${color.BACKGROUND5}
[module/sepR]
type = custom/text
content = --
content-background = ${color.BACKGROUND6}
content-foreground = ${color.BACKGROUND6}
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
[module/1LD]
type = custom/text
content = "%{T3}%{T-}"
content-background = ${color.BACKGROUND4}
content-foreground = ${color.BACKGROUND5}
[module/2LD]
type = custom/text
content = "%{T3}%{T-}"
content-background = ${color.BACKGROUND3}
content-foreground = ${color.BACKGROUND4}
[module/3LD]
type = custom/text
content = "%{T3}%{T-}"
content-background = ${color.BACKGROUND2}
content-foreground = ${color.BACKGROUND3}
[module/4LD]
type = custom/text
content = "%{T3}%{T-}"
content-background = ${color.BACKGROUND1}
content-foreground = ${color.BACKGROUND2}
[module/5LD]
type = custom/text
content = "%{T3}%{T-}"
content-background = ${color.BACKGROUND}
content-foreground = ${color.BACKGROUND1}
[module/7RD]
type = custom/text
content = "%{T3}%{T-}"
content-background = ${color.BACKGROUND6}
content-foreground = ${color.BACKGROUND5}
[module/6RD]
type = custom/text
content = "%{T3}%{T-}"
content-background = ${color.BACKGROUND5}
content-foreground = ${color.BACKGROUND4}
[module/5RD]
type = custom/text
content = "%{T3}%{T-}"
content-background = ${color.BACKGROUND4}
content-foreground = ${color.BACKGROUND3}
[module/4RD]
type = custom/text
content = "%{T3}%{T-}"
content-background = ${color.BACKGROUND3}
content-foreground = ${color.BACKGROUND2}
[module/3RD]
type = custom/text
content = "%{T3}%{T-}"
content-background = ${color.BACKGROUND2}
content-foreground = ${color.BACKGROUND1}
[module/2RD]
type = custom/text
content = "%{T3}%{T-}"
content-background = ${color.BACKGROUND}
content-foreground = ${color.BACKGROUND1}
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; __________ ______
;; / ____/ __ \/ ____/
;; / __/ / / / / /_
;; / /___/ /_/ / __/
;; /_____/\____/_/
;;
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

View File

@ -0,0 +1,42 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
CARD="$(light -L | grep 'backlight' | head -n1 | cut -d'/' -f3)"
INTERFACE="$(ip link | awk '/state UP/ {print $2}' | tr -d :)"
RFILE="$DIR/.module"
# Fix backlight and network modules
fix_modules() {
if [[ -z "$CARD" ]]; then
sed -i -e 's/backlight/bna/g' "$DIR"/config.ini
elif [[ "$CARD" != *"intel_"* ]]; then
sed -i -e 's/backlight/brightness/g' "$DIR"/config.ini
fi
if [[ "$INTERFACE" == e* ]]; then
sed -i -e 's/network/ethernet/g' "$DIR"/config.ini
fi
}
# Launch the bar
launch_bar() {
# Terminate already running bar instances
killall -q polybar
# Wait until the processes have been shut down
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
# Launch the bar
for mon in $(polybar --list-monitors | cut -d":" -f1); do
MONITOR=$mon polybar -q main -c "$DIR"/config.ini &
done
}
# Execute functions
if [[ ! -f "$RFILE" ]]; then
fix_modules
touch "$RFILE"
fi
launch_bar

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,218 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Apply Random Theme With Pywal
## Theme ------------------------------------
TDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
THEME="${TDIR##*/}"
# Set you wallpaper directory here.
WALLDIR="`xdg-user-dir PICTURES`/wallpapers"
WALFILE="$HOME/.cache/wal/colors.sh"
## Directories ------------------------------
PATH_CONF="$HOME/.config"
PATH_I3WM="$PATH_CONF/i3"
PATH_TERM="$PATH_I3WM/alacritty"
PATH_PBAR="$PATH_I3WM/themes/$THEME/polybar"
PATH_ROFI="$PATH_I3WM/themes/$THEME/rofi"
## Pywal ------------------------------------
check_wallpaper() {
if [[ -d "$WALLDIR" ]]; then
WFILES="`ls --format=single-column $WALLDIR | wc -l`"
if [[ "$WFILES" == 0 ]]; then
dunstify -u normal -h string:x-dunst-stack-tag:noimage -i /usr/share/archcraft/icons/dunst/picture.png "There are no wallpapers in : $WALLDIR"
exit
fi
else
mkdir -p "$WALLDIR"
dunstify -u normal -h string:x-dunst-stack-tag:noimage -i /usr/share/archcraft/icons/dunst/picture.png "Put some wallpapers in : $WALLDIR"
exit
fi
}
generate_colors() {
check_wallpaper
if [[ `which wal` ]]; then
dunstify -t 50000 -h string:x-dunst-stack-tag:runpywal -i /usr/share/archcraft/icons/dunst/hourglass.png "Generating Colorscheme. Please wait..."
wal -q -n -s -t -e -i "$WALLDIR"
if [[ "$?" != 0 ]]; then
dunstify -u normal -h string:x-dunst-stack-tag:runpywal -i /usr/share/archcraft/icons/dunst/palette.png "Failed to generate colorscheme."
exit
fi
else
dunstify -u normal -h string:x-dunst-stack-tag:runpywal -i /usr/share/archcraft/icons/dunst/palette.png "'pywal' is not installed."
exit
fi
}
generate_colors
source "$WALFILE"
altbackground="`pastel color $background | pastel lighten 0.15 | pastel format hex`"
altforeground="`pastel color $foreground | pastel darken 0.30 | pastel format hex`"
modbackground=(`pastel gradient -n 7 $background $altbackground | pastel format hex`)
accent="$color6"
## Wallpaper ---------------------------------
apply_wallpaper() {
sed -i -e "s#WALLPAPER=.*#WALLPAPER='$wallpaper'#g" ${PATH_I3WM}/themes/wallpaper.sh
}
## Polybar -----------------------------------
apply_polybar() {
# rewrite colors file
cat > ${PATH_PBAR}/colors.ini <<- EOF
[color]
BACKGROUND = ${background}
FOREGROUND = ${foreground}
ALTBACKGROUND = ${altbackground}
ALTFOREGROUND = ${altforeground}
ACCENT = ${accent}
BLACK = ${color0}
RED = ${color1}
GREEN = ${color2}
YELLOW = ${color3}
BLUE = ${color4}
MAGENTA = ${color5}
CYAN = ${color6}
WHITE = ${color7}
ALTBLACK = ${color8}
ALTRED = ${color9}
ALTGREEN = ${color10}
ALTYELLOW = ${color11}
ALTBLUE = ${color12}
ALTMAGENTA = ${color13}
ALTCYAN = ${color14}
ALTWHITE = ${color15}
BACKGROUND1 = ${modbackground[1]}
BACKGROUND2 = ${modbackground[2]}
BACKGROUND3 = ${modbackground[3]}
BACKGROUND4 = ${modbackground[4]}
BACKGROUND5 = ${modbackground[5]}
BACKGROUND6 = ${modbackground[6]}
EOF
}
# Rofi --------------------------------------
apply_rofi() {
# rewrite colors file
cat > ${PATH_ROFI}/shared/colors.rasi <<- EOF
* {
background: ${background};
background-alt: ${modbackground[2]};
foreground: ${foreground};
selected: ${accent};
active: ${color2};
urgent: ${color1};
}
EOF
}
# Terminal ----------------------------------
apply_terminal() {
# alacritty : colors
cat > ${PATH_TERM}/colors.yml <<- _EOF_
## Colors configuration
colors:
# Default colors
primary:
background: '${background}'
foreground: '${foreground}'
# Normal colors
normal:
black: '${color0}'
red: '${color1}'
green: '${color2}'
yellow: '${color3}'
blue: '${color4}'
magenta: '${color5}'
cyan: '${color6}'
white: '${color7}'
# Bright colors
bright:
black: '${color8}'
red: '${color9}'
green: '${color10}'
yellow: '${color11}'
blue: '${color12}'
magenta: '${color13}'
cyan: '${color14}'
white: '${color15}'
_EOF_
}
# Dunst -------------------------------------
apply_dunst() {
# modify colors
sed -i '/urgency_low/Q' ${PATH_I3WM}/dunstrc
cat >> ${PATH_I3WM}/dunstrc <<- _EOF_
[urgency_low]
timeout = 2
background = "${background}"
foreground = "${foreground}"
frame_color = "${accent}"
[urgency_normal]
timeout = 5
background = "${background}"
foreground = "${foreground}"
frame_color = "${accent}"
[urgency_critical]
timeout = 0
background = "${background}"
foreground = "${color1}"
frame_color = "${color1}"
_EOF_
}
# I3WM -------------------------------------
apply_i3wm() {
# modify i3theme file
sed -i ${PATH_I3WM}/config.d/01_theme.conf \
-e "s/set \$i3_cl_col_bg.*/set \$i3_cl_col_bg $background/g" \
-e "s/set \$i3_cl_col_fg.*/set \$i3_cl_col_fg $foreground/g" \
-e "s/set \$i3_cl_col_in.*/set \$i3_cl_col_in $color2/g" \
-e "s/set \$i3_cl_col_afoc.*/set \$i3_cl_col_afoc $accent/g" \
-e "s/set \$i3_cl_col_ifoc.*/set \$i3_cl_col_ifoc $color4/g" \
-e "s/set \$i3_cl_col_ufoc.*/set \$i3_cl_col_ufoc $altbackground/g" \
-e "s/set \$i3_cl_col_urgt.*/set \$i3_cl_col_urgt $color5/g" \
-e "s/set \$i3_cl_col_phol.*/set \$i3_cl_col_phol $background/g"
# modify i3bar file
sed -i ${PATH_I3WM}/i3status/statusbar.conf \
-e "s/set \$i3_bar_bg.*/set \$i3_bar_bg $background/g" \
-e "s/set \$i3_bar_fg.*/set \$i3_bar_fg $foreground/g" \
-e "s/set \$i3_bar_sep.*/set \$i3_bar_sep $altbackground/g" \
-e "s/set \$i3_bar_foc.*/set \$i3_bar_foc $accent/g" \
-e "s/set \$i3_bar_act.*/set \$i3_bar_act $color4/g" \
-e "s/set \$i3_bar_ina.*/set \$i3_bar_ina $altbackground/g" \
-e "s/set \$i3_bar_urg.*/set \$i3_bar_urg $color5/g" \
-e "s/set \$i3_bar_mod.*/set \$i3_bar_mod $color2/g"
# modify i3status file
sed -i ${PATH_I3WM}/i3status/config \
-e "s/color_good =.*/color_good = \"$color2\"/g" \
-e "s/color_degraded =.*/color_degraded = \"$color3\"/g" \
-e "s/color_bad =.*/color_bad = \"$color1\"/g" \
-e "s/color_separator =.*/color_separator = \"$altbackground\"/g"
# restart i3wm
i3-msg restart
}
## Execute Script ---------------------------
apply_wallpaper
apply_polybar
apply_rofi
apply_terminal
apply_dunst
apply_i3wm

View File

@ -0,0 +1,75 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*****----- Main Window -----*****/
window {
location: center;
anchor: center;
fullscreen: false;
width: 350px;
x-offset: 0px;
y-offset: 0px;
padding: 15px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: @background;
cursor: "default";
children: [ "inputbar", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "textbox-prompt-colon", "prompt", "entry" ];
}
dummy {
expand: false;
width: 10px;
background-color: transparent;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 10px 13px;
border-radius: 0px;
background-color: @urgent;
text-color: @background;
}
prompt {
enabled: true;
padding: 10px;
border-radius: 0px;
background-color: @selected;
text-color: @background;
}
entry {
enabled: true;
padding: 10px 15px;
border-radius: 0px;
background-color: @background-alt;
text-color: inherit;
cursor: text;
placeholder: "Password";
placeholder-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: false;
}

View File

@ -0,0 +1,147 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
show-icons: false;
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=NO
*/
/*****----- Main Window -----*****/
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 400px;
x-offset: 0px;
y-offset: 0px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 20px;
background-color: transparent;
children: [ "inputbar", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 0px;
padding: 0px;
border: 0px;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "textbox-prompt-colon", "prompt"];
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 10px 12px;
border-radius: 0px;
background-color: @urgent;
text-color: @background;
}
prompt {
enabled: true;
padding: 10px;
border-radius: 0px;
background-color: @background;
text-color: @foreground;
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: @background-alt;
text-color: @foreground;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 5;
cycle: true;
scrollbar: false;
layout: vertical;
spacing: 5px;
background-color: transparent;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
cursor: pointer;
}
element-text {
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
element normal.normal,
element alternate.normal {
background-color: var(background);
text-color: var(foreground);
}
element normal.urgent,
element alternate.urgent,
element selected.active {
background-color: var(urgent);
text-color: var(background);
}
element normal.active,
element alternate.active,
element selected.urgent {
background-color: var(active);
text-color: var(background);
}
element selected.normal {
background-color: var(selected);
text-color: var(background);
}

View File

@ -0,0 +1,147 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
show-icons: false;
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=NO
*/
/*****----- Main Window -----*****/
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 250px;
x-offset: 0px;
y-offset: 0px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 20px;
background-color: transparent;
children: [ "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
padding: 0px;
border: 0px;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "textbox-prompt-colon", "prompt"];
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 10px 14px;
border-radius: 100%;
background-color: @urgent;
text-color: @background;
}
prompt {
enabled: true;
padding: 10px;
border-radius: 20px;
background-color: @active;
text-color: @background;
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: @urgent;
text-color: @background;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 2;
cycle: true;
scrollbar: false;
layout: vertical;
spacing: 10px;
background-color: transparent;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
padding: 10px 10px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
cursor: pointer;
}
element-text {
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
element normal.normal,
element alternate.normal {
background-color: var(background-alt);
text-color: var(foreground);
}
element normal.urgent,
element alternate.urgent,
element selected.active {
background-color: var(urgent);
text-color: var(background);
}
element normal.active,
element alternate.active,
element selected.urgent {
background-color: var(active);
text-color: var(background);
}
element selected.normal {
background-color: var(selected);
text-color: var(background);
}

View File

@ -0,0 +1,303 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "drun,run,filebrowser,window";
show-icons: true;
display-drun: " Apps";
display-run: " Run";
display-filebrowser: " Files";
display-window: " Windows";
drun-display-format: "{name}";
window-format: "{c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 600px;
x-offset: 0px;
y-offset: 0px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 20px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "mode-switcher", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "entry" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
padding: 5px 0px;
expand: false;
str: "";
background-color: inherit;
text-color: @urgent;
}
entry {
enabled: true;
padding: 5px 0px;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "Search...";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 10px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
expand: false;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
}
textbox {
border: 0px solid;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 15px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,147 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
show-icons: false;
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=NO
*/
/*****----- Main Window -----*****/
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 400px;
x-offset: 0px;
y-offset: 0px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 20px;
background-color: transparent;
children: [ "inputbar", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 0px;
padding: 0px;
border: 0px;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "textbox-prompt-colon", "prompt"];
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 10px 14px;
border-radius: 0px;
background-color: @urgent;
text-color: @background;
}
prompt {
enabled: true;
padding: 10px;
border-radius: 0px;
background-color: @background;
text-color: @foreground;
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: @background-alt;
text-color: @foreground;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
scrollbar: false;
layout: vertical;
spacing: 5px;
background-color: transparent;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
cursor: pointer;
}
element-text {
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
element normal.normal,
element alternate.normal {
background-color: var(background);
text-color: var(foreground);
}
element normal.urgent,
element alternate.urgent,
element selected.active {
background-color: var(urgent);
text-color: var(background);
}
element normal.active,
element alternate.active,
element selected.urgent {
background-color: var(active);
text-color: var(background);
}
element selected.normal {
background-color: var(selected);
text-color: var(background);
}

View File

@ -0,0 +1,156 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
show-icons: false;
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=NO
*/
/*****----- Main Window -----*****/
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 500px;
height: 515px;
x-offset: 0px;
y-offset: 0px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 20px;
background-color: transparent;
children: [ "inputbar", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 0px;
padding: 0px;
border: 0px;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "textbox-prompt-colon", "prompt", "entry"];
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "直";
padding: 10px 14px;
border-radius: 0px;
background-color: @urgent;
text-color: @background;
}
prompt {
enabled: true;
padding: 10px;
border-radius: 0px;
background-color: @background;
text-color: @foreground;
}
entry {
enabled: true;
padding: 10px 0px;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder-color: inherit;
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: @background-alt;
text-color: @foreground;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
scrollbar: false;
layout: vertical;
spacing: 5px;
background-color: transparent;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
cursor: pointer;
}
element-text {
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
element normal.normal,
element alternate.normal {
background-color: var(background);
text-color: var(foreground);
}
element normal.urgent,
element alternate.urgent,
element selected.active {
background-color: var(urgent);
text-color: var(background);
}
element normal.active,
element alternate.active,
element selected.urgent {
background-color: var(active);
text-color: var(background);
}
element selected.normal {
background-color: var(selected);
text-color: var(background);
}

View File

@ -0,0 +1,147 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
show-icons: false;
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=NO
*/
/*****----- Main Window -----*****/
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 400px;
x-offset: 0px;
y-offset: 0px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 20px;
background-color: transparent;
children: [ "inputbar", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 0px;
padding: 0px;
border: 0px;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "textbox-prompt-colon", "prompt"];
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 10px 14px;
border-radius: 0px;
background-color: @urgent;
text-color: @background;
}
prompt {
enabled: true;
padding: 10px;
border-radius: 0px;
background-color: @background;
text-color: @foreground;
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: @background-alt;
text-color: @foreground;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
scrollbar: false;
layout: vertical;
spacing: 5px;
background-color: transparent;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
cursor: pointer;
}
element-text {
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
element normal.normal,
element alternate.normal {
background-color: var(background);
text-color: var(foreground);
}
element normal.urgent,
element alternate.urgent,
element selected.active {
background-color: var(urgent);
text-color: var(background);
}
element normal.active,
element alternate.active,
element selected.urgent {
background-color: var(active);
text-color: var(background);
}
element selected.normal {
background-color: var(selected);
text-color: var(background);
}

View File

@ -0,0 +1,303 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "run";
show-icons: true;
display-drun: " Apps";
display-run: " Run";
display-filebrowser: " Files";
display-window: " Windows";
drun-display-format: "{name}";
window-format: "{w} · {c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 500px;
x-offset: 0px;
y-offset: 0px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 20px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "entry" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
padding: 5px 0px;
expand: false;
str: "";
background-color: inherit;
text-color: @urgent;
}
entry {
enabled: true;
padding: 5px 0px;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "Run...";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 10px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
expand: false;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
}
textbox {
border: 0px solid;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 15px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,147 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
show-icons: false;
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=NO
*/
/*****----- Main Window -----*****/
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 400px;
x-offset: 0px;
y-offset: 0px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 20px;
background-color: transparent;
children: [ "inputbar", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 0px;
padding: 0px;
border: 0px;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "textbox-prompt-colon", "prompt"];
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 10px 12px;
border-radius: 0px;
background-color: @urgent;
text-color: @background;
}
prompt {
enabled: true;
padding: 10px;
border-radius: 0px;
background-color: @background;
text-color: @foreground;
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: @background-alt;
text-color: @foreground;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 5;
cycle: true;
scrollbar: false;
layout: vertical;
spacing: 5px;
background-color: transparent;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
cursor: pointer;
}
element-text {
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
element normal.normal,
element alternate.normal {
background-color: var(background);
text-color: var(foreground);
}
element normal.urgent,
element alternate.urgent,
element selected.active {
background-color: var(urgent);
text-color: var(background);
}
element normal.active,
element alternate.active,
element selected.urgent {
background-color: var(active);
text-color: var(background);
}
element selected.normal {
background-color: var(selected);
text-color: var(background);
}

View File

@ -0,0 +1,12 @@
/* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com> */
/* Colors */
* {
background: #121a1e;
background-alt: #1b272d;
foreground: #d4d5d8;
selected: #C0C0BE;
active: #A2A29B;
urgent: #919491;
}

View File

@ -0,0 +1,7 @@
/* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com> */
/* Text Font */
* {
font: "Iosevka 10";
}

View File

@ -0,0 +1,147 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
show-icons: false;
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=NO
*/
/*****----- Main Window -----*****/
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 400px;
x-offset: 0px;
y-offset: 0px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 20px;
background-color: transparent;
children: [ "inputbar", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 0px;
padding: 0px;
border: 0px;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "textbox-prompt-colon", "prompt"];
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 10px 14px;
border-radius: 0px;
background-color: @urgent;
text-color: @background;
}
prompt {
enabled: true;
padding: 10px;
border-radius: 0px;
background-color: @background;
text-color: @foreground;
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: @background-alt;
text-color: @foreground;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
scrollbar: false;
layout: vertical;
spacing: 5px;
background-color: transparent;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
cursor: pointer;
}
element-text {
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
element normal.normal,
element alternate.normal {
background-color: var(background);
text-color: var(foreground);
}
element normal.urgent,
element alternate.urgent,
element selected.active {
background-color: var(urgent);
text-color: var(background);
}
element normal.active,
element alternate.active,
element selected.urgent {
background-color: var(active);
text-color: var(background);
}
element selected.normal {
background-color: var(selected);
text-color: var(background);
}

View File

@ -0,0 +1,303 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "window";
show-icons: true;
display-drun: " Apps";
display-run: " Run";
display-filebrowser: " Files";
display-window: " Windows";
drun-display-format: "{name}";
window-format: "{c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 550px;
x-offset: 0px;
y-offset: 0px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 20px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "entry" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
padding: 5px 0px;
expand: false;
str: "";
background-color: inherit;
text-color: @urgent;
}
entry {
enabled: true;
padding: 5px 0px;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "Filter...";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 10px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
expand: false;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
}
textbox {
border: 0px solid;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 15px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,81 @@
# ------------------------------------------------------------------------------
# Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
#
# Adaptive Theme
# ------------------------------------------------------------------------------
# Colors
background='#222d32'
foreground='#c4c7c5'
color0='#263640'
color1='#ec7875'
color2='#61c766'
color3='#fdd835'
color4='#42a5f5'
color5='#ba68c8'
color6='#4dd0e1'
color7='#bfbaac'
color8='#4a697d'
color9='#fb8784'
color10='#70d675'
color11='#ffe744'
color12='#51b4ff'
color13='#c979d7'
color14='#5cdff0'
color15='#fdf6e3'
accent='#00BCD4'
light_value='0.15'
dark_value='0.30'
# Wallpaper
wdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
wallpaper="$wdir/wallpaper"
# Polybar
polybar_font='Iosevka Nerd Font:size=10;3'
# Rofi
rofi_font='Iosevka 10'
rofi_icon='Papirus-Apps'
# Terminal
terminal_font_name='JetBrainsMono Nerd Font'
terminal_font_size='10'
# Geany
geany_colors='adapta.conf'
geany_font='JetBrains Mono 10'
# Appearance
gtk_font='Noto Sans 9'
gtk_theme='Adapta-Nokto'
icon_theme='Luv-Folders-Dark'
cursor_theme='Vimix'
# Dunst
dunst_width='300'
dunst_height='80'
dunst_offset='15x49'
dunst_origin='top-right'
dunst_font='Iosevka 10'
dunst_border='1'
dunst_separator='1'
# Picom
picom_backend='glx'
picom_corner='0'
picom_shadow_r='14'
picom_shadow_o='0.30'
picom_shadow_x='-12'
picom_shadow_y='-12'
picom_blur_method='none'
picom_blur_strength='0'
# I3WM
i3wm_fonts='JetBrainsMono Nerd Font 10'
i3wm_border_size='1'
i3wm_border_style='pixel'
i3wm_gaps_inner='15'
i3wm_gaps_outer='0'
i3wm_gaps_smart='off'

View File

@ -0,0 +1 @@
/usr/share/backgrounds/adaptive.png

308
config/i3/themes/beach/apply.sh Executable file
View File

@ -0,0 +1,308 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Script To Apply Themes
## Theme ------------------------------------
IDIR="$HOME/.config/i3"
TDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
THEME="${TDIR##*/}"
source "$IDIR"/themes/"$THEME"/theme.bash
altbackground="`pastel color $background | pastel lighten $light_value | pastel format hex`"
altforeground="`pastel color $foreground | pastel darken $dark_value | pastel format hex`"
## Directories ------------------------------
PATH_CONF="$HOME/.config"
PATH_GEANY="$PATH_CONF/geany"
PATH_I3WM="$PATH_CONF/i3"
PATH_TERM="$PATH_I3WM/alacritty"
PATH_PBAR="$PATH_I3WM/themes/$THEME/polybar"
PATH_ROFI="$PATH_I3WM/themes/$THEME/rofi"
## Wallpaper ---------------------------------
apply_wallpaper() {
sed -i -e "s#WALLPAPER=.*#WALLPAPER='$wallpaper'#g" ${PATH_I3WM}/themes/wallpaper.sh
}
## Polybar -----------------------------------
apply_polybar() {
# modify polybar launch script
sed -i -e "s/STYLE=.*/STYLE=\"$THEME\"/g" ${PATH_I3WM}/themes/polybar.sh
# apply default theme fonts
sed -i -e "s/font-0 = .*/font-0 = \"$polybar_font\"/g" ${PATH_PBAR}/config.ini
# rewrite colors file
cat > ${PATH_PBAR}/colors.ini <<- EOF
[color]
BACKGROUND = ${background}
FOREGROUND = ${foreground}
ALTBACKGROUND = ${altbackground}
ALTFOREGROUND = ${altforeground}
ACCENT = ${accent}
BLACK = ${color0}
RED = ${color1}
GREEN = ${color2}
YELLOW = ${color3}
BLUE = ${color4}
MAGENTA = ${color5}
CYAN = ${color6}
WHITE = ${color7}
ALTBLACK = ${color8}
ALTRED = ${color9}
ALTGREEN = ${color10}
ALTYELLOW = ${color11}
ALTBLUE = ${color12}
ALTMAGENTA = ${color13}
ALTCYAN = ${color14}
ALTWHITE = ${color15}
EOF
}
# Rofi --------------------------------------
apply_rofi() {
# modify rofi scripts
sed -i -e "s/STYLE=.*/STYLE=\"$THEME\"/g" \
${PATH_I3WM}/scripts/rofi_askpass \
${PATH_I3WM}/scripts/rofi_asroot \
${PATH_I3WM}/scripts/rofi_launcher \
${PATH_I3WM}/scripts/rofi_music \
${PATH_I3WM}/scripts/rofi_powermenu \
${PATH_I3WM}/scripts/rofi_runner \
${PATH_I3WM}/scripts/rofi_screenshot \
${PATH_I3WM}/scripts/rofi_themes \
${PATH_I3WM}/scripts/rofi_windows
# apply default theme fonts
sed -i -e "s/font:.*/font: \"$rofi_font\";/g" ${PATH_ROFI}/shared/fonts.rasi
# rewrite colors file
cat > ${PATH_ROFI}/shared/colors.rasi <<- EOF
* {
background: ${background};
background-alt: ${altbackground};
foreground: ${foreground};
selected: ${accent};
active: ${color2};
urgent: ${color1};
}
EOF
# modify icon theme
if [[ -f "$PATH_CONF"/rofi/config.rasi ]]; then
sed -i -e "s/icon-theme:.*/icon-theme: \"$rofi_icon\";/g" ${PATH_CONF}/rofi/config.rasi
fi
}
# Network Menu ------------------------------
apply_netmenu() {
if [[ -f "$PATH_I3WM"/themes/networkmenu_config.ini ]]; then
sed -i -e "s#dmenu_command = .*#dmenu_command = rofi -dmenu -theme $PATH_ROFI/networkmenu.rasi#g" ${PATH_I3WM}/themes/networkmenu_config.ini
fi
}
# Terminal ----------------------------------
apply_terminal() {
# alacritty : fonts
sed -i ${PATH_TERM}/fonts.yml \
-e "s/family: .*/family: \"$terminal_font_name\"/g" \
-e "s/size: .*/size: $terminal_font_size/g"
# alacritty : colors
cat > ${PATH_TERM}/colors.yml <<- _EOF_
## Colors configuration
colors:
# Default colors
primary:
background: '${background}'
foreground: '${foreground}'
# Normal colors
normal:
black: '${color0}'
red: '${color1}'
green: '${color2}'
yellow: '${color3}'
blue: '${color4}'
magenta: '${color5}'
cyan: '${color6}'
white: '${color7}'
# Bright colors
bright:
black: '${color8}'
red: '${color9}'
green: '${color10}'
yellow: '${color11}'
blue: '${color12}'
magenta: '${color13}'
cyan: '${color14}'
white: '${color15}'
_EOF_
}
# Geany -------------------------------------
apply_geany() {
sed -i ${PATH_GEANY}/geany.conf \
-e "s/color_scheme=.*/color_scheme=$geany_colors/g" \
-e "s/editor_font=.*/editor_font=$geany_font/g"
}
# Appearance --------------------------------
apply_appearance() {
XFILE="$PATH_I3WM/xsettingsd"
GTK2FILE="$HOME/.gtkrc-2.0"
GTK3FILE="$PATH_CONF/gtk-3.0/settings.ini"
# apply gtk theme, icons, cursor & fonts
if [[ `pidof xsettingsd` ]]; then
sed -i -e "s|Net/ThemeName .*|Net/ThemeName \"$gtk_theme\"|g" ${XFILE}
sed -i -e "s|Net/IconThemeName .*|Net/IconThemeName \"$icon_theme\"|g" ${XFILE}
sed -i -e "s|Gtk/CursorThemeName .*|Gtk/CursorThemeName \"$cursor_theme\"|g" ${XFILE}
else
sed -i -e "s/gtk-font-name=.*/gtk-font-name=\"$gtk_font\"/g" ${GTK2FILE}
sed -i -e "s/gtk-theme-name=.*/gtk-theme-name=\"$gtk_theme\"/g" ${GTK2FILE}
sed -i -e "s/gtk-icon-theme-name=.*/gtk-icon-theme-name=\"$icon_theme\"/g" ${GTK2FILE}
sed -i -e "s/gtk-cursor-theme-name=.*/gtk-cursor-theme-name=\"$cursor_theme\"/g" ${GTK2FILE}
sed -i -e "s/gtk-font-name=.*/gtk-font-name=$gtk_font/g" ${GTK3FILE}
sed -i -e "s/gtk-theme-name=.*/gtk-theme-name=$gtk_theme/g" ${GTK3FILE}
sed -i -e "s/gtk-icon-theme-name=.*/gtk-icon-theme-name=$icon_theme/g" ${GTK3FILE}
sed -i -e "s/gtk-cursor-theme-name=.*/gtk-cursor-theme-name=$cursor_theme/g" ${GTK3FILE}
fi
# inherit cursor theme
if [[ -f "$HOME"/.icons/default/index.theme ]]; then
sed -i -e "s/Inherits=.*/Inherits=$cursor_theme/g" "$HOME"/.icons/default/index.theme
fi
}
# Dunst -------------------------------------
apply_dunst() {
# modify dunst config
sed -i ${PATH_I3WM}/dunstrc \
-e "s/width = .*/width = $dunst_width/g" \
-e "s/height = .*/height = $dunst_height/g" \
-e "s/offset = .*/offset = $dunst_offset/g" \
-e "s/origin = .*/origin = $dunst_origin/g" \
-e "s/font = .*/font = $dunst_font/g" \
-e "s/frame_width = .*/frame_width = $dunst_border/g" \
-e "s/separator_height = .*/separator_height = $dunst_separator/g" \
-e "s/line_height = .*/line_height = $dunst_separator/g"
# modify colors
sed -i '/urgency_low/Q' ${PATH_I3WM}/dunstrc
cat >> ${PATH_I3WM}/dunstrc <<- _EOF_
[urgency_low]
timeout = 2
background = "${background}"
foreground = "${foreground}"
frame_color = "${altbackground}"
[urgency_normal]
timeout = 5
background = "${background}"
foreground = "${foreground}"
frame_color = "${altbackground}"
[urgency_critical]
timeout = 0
background = "${background}"
foreground = "${color1}"
frame_color = "${color1}"
_EOF_
}
# Compositor --------------------------------
apply_compositor() {
picom_cfg="$PATH_I3WM/picom.conf"
# modify picom config
sed -i "$picom_cfg" \
-e "s/backend = .*/backend = \"$picom_backend\";/g" \
-e "s/corner-radius = .*/corner-radius = $picom_corner;/g" \
-e "s/shadow-radius = .*/shadow-radius = $picom_shadow_r;/g" \
-e "s/shadow-opacity = .*/shadow-opacity = $picom_shadow_o;/g" \
-e "s/shadow-offset-x = .*/shadow-offset-x = $picom_shadow_x;/g" \
-e "s/shadow-offset-y = .*/shadow-offset-y = $picom_shadow_y;/g" \
-e "s/method = .*/method = \"$picom_blur_method\";/g" \
-e "s/strength = .*/strength = $picom_blur_strength;/g"
}
# I3WM -------------------------------------
apply_i3wm() {
# modify i3theme file
sed -i ${PATH_I3WM}/config.d/01_theme.conf \
-e "s/set \$i3_fonts.*/set \$i3_fonts $i3wm_fonts/g" \
\
-e "s/set \$i3_border_size.*/set \$i3_border_size $i3wm_border_size/g" \
-e "s/set \$i3_border_style.*/set \$i3_border_style $i3wm_border_style/g" \
\
-e "s/set \$i3_gaps_inner.*/set \$i3_gaps_inner $i3wm_gaps_inner/g" \
-e "s/set \$i3_gaps_outer.*/set \$i3_gaps_outer $i3wm_gaps_outer/g" \
-e "s/set \$i3_gaps_smart.*/set \$i3_gaps_smart $i3wm_gaps_smart/g" \
\
-e "s/set \$i3_cl_col_bg.*/set \$i3_cl_col_bg $background/g" \
-e "s/set \$i3_cl_col_fg.*/set \$i3_cl_col_fg $foreground/g" \
-e "s/set \$i3_cl_col_in.*/set \$i3_cl_col_in $color2/g" \
-e "s/set \$i3_cl_col_afoc.*/set \$i3_cl_col_afoc $accent/g" \
-e "s/set \$i3_cl_col_ifoc.*/set \$i3_cl_col_ifoc $color4/g" \
-e "s/set \$i3_cl_col_ufoc.*/set \$i3_cl_col_ufoc $altbackground/g" \
-e "s/set \$i3_cl_col_urgt.*/set \$i3_cl_col_urgt $color5/g" \
-e "s/set \$i3_cl_col_phol.*/set \$i3_cl_col_phol $background/g"
# modify i3bar file
sed -i ${PATH_I3WM}/i3status/statusbar.conf \
-e "s/set \$i3_bar_fonts.*/set \$i3_bar_fonts $i3wm_fonts/g" \
\
-e "s/set \$i3_bar_bg.*/set \$i3_bar_bg $background/g" \
-e "s/set \$i3_bar_fg.*/set \$i3_bar_fg $foreground/g" \
-e "s/set \$i3_bar_sep.*/set \$i3_bar_sep $altbackground/g" \
-e "s/set \$i3_bar_foc.*/set \$i3_bar_foc $accent/g" \
-e "s/set \$i3_bar_act.*/set \$i3_bar_act $color4/g" \
-e "s/set \$i3_bar_ina.*/set \$i3_bar_ina $altbackground/g" \
-e "s/set \$i3_bar_urg.*/set \$i3_bar_urg $color5/g" \
-e "s/set \$i3_bar_mod.*/set \$i3_bar_mod $color2/g"
# modify i3status file
sed -i ${PATH_I3WM}/i3status/config \
-e "s/color_good =.*/color_good = \"$color2\"/g" \
-e "s/color_degraded =.*/color_degraded = \"$color3\"/g" \
-e "s/color_bad =.*/color_bad = \"$color1\"/g" \
-e "s/color_separator =.*/color_separator = \"$altbackground\"/g"
# restart i3wm
i3-msg restart
}
# Create Theme File -------------------------
create_file() {
theme_file="$PATH_I3WM/themes/.current"
if [[ ! -f "$theme_file" ]]; then
touch ${theme_file}
fi
echo "$THEME" > ${theme_file}
}
# Notify User -------------------------------
notify_user() {
dunstify -u normal -h string:x-dunst-stack-tag:applytheme -i /usr/share/archcraft/icons/dunst/themes.png "Applying Style : $THEME"
}
## Execute Script ---------------------------
notify_user
create_file
apply_wallpaper
apply_polybar
apply_rofi
apply_netmenu
apply_terminal
apply_geany
apply_appearance
apply_dunst
apply_compositor
apply_i3wm

View File

View File

@ -0,0 +1,24 @@
[color]
BACKGROUND = #141c21
FOREGROUND = #93a1a1
ALTBACKGROUND = #1a242b
ALTFOREGROUND = #485353
ACCENT = #5294E2
BLACK = #263640
RED = #d12f2c
GREEN = #819400
YELLOW = #b08500
BLUE = #2587cc
MAGENTA = #696ebf
CYAN = #289c93
WHITE = #bfbaac
ALTBLACK = #4a697d
ALTRED = #fa3935
ALTGREEN = #a4bd00
ALTYELLOW = #d9a400
ALTBLUE = #2ca2f5
ALTMAGENTA = #8086e8
ALTCYAN = #33c5ba
ALTWHITE = #fdf6e3

View File

@ -0,0 +1,317 @@
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; Global WM Settings
[global/wm]
; Adjust the _NET_WM_STRUT_PARTIAL top value
; Used for top aligned bars
margin-bottom = 0
; Adjust the _NET_WM_STRUT_PARTIAL bottom value
; Used for bottom aligned bars
margin-top = 0
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; File Inclusion
; include an external file, like module file, etc.
include-file = ../../system.ini
include-file = ./colors.ini
include-file = ./modules.ini
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; Bar Settings
[bar/main]
; Use either of the following command to list available outputs:
; If unspecified, the application will pick the first one it finds.
; $ polybar -m | cut -d ':' -f 1
; $ xrandr -q | grep " connected" | cut -d ' ' -f1
monitor = ${env:MONITOR:}
; Use the specified monitor as a fallback if the main one is not found.
monitor-fallback =
; Require the monitor to be in connected state
; XRandR sometimes reports my monitor as being disconnected (when in use)
monitor-strict = false
; Tell the Window Manager not to configure the window.
; Use this to detach the bar if your WM is locking its size/position.
override-redirect = false
; Put the bar at the bottom of the screen
bottom = true
; Prefer fixed center position for the `modules-center` block
; When false, the center position will be based on the size of the other blocks.
fixed-center = true
; Dimension defined as pixel value (e.g. 35) or percentage (e.g. 50%),
; the percentage can optionally be extended with a pixel offset like so:
; 50%:-10, this will result in a width or height of 50% minus 10 pixels
width = 100%
height = 38
; Offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
; the percentage can optionally be extended with a pixel offset like so:
; 50%:-10, this will result in an offset in the x or y direction
; of 50% minus 10 pixels
offset-x = 0%
offset-y = 0%
; Background ARGB color (e.g. #f00, #ff992a, #ddff1023)
background = ${color.BACKGROUND}
; Foreground ARGB color (e.g. #f00, #ff992a, #ddff1023)
foreground = ${color.FOREGROUND}
; Background gradient (vertical steps)
; background-[0-9]+ = #aarrggbb
;;background-0 =
; Value used for drawing rounded corners
; Note: This shouldn't be used together with border-size because the border
; doesn't get rounded
; Individual top/bottom values can be defined using:
; radius-{top,bottom}
radius-top = 0.0
radius-bottom = 0.0
; Under-/overline pixel size and argb color
; Individual values can be defined using:
; {overline,underline}-size
; {overline,underline}-color
line-size = 2
line-color = ${color.ACCENT}
; Values applied to all borders
; Individual side values can be defined using:
; border-{left,top,right,bottom}-size
; border-{left,top,right,bottom}-color
; The top and bottom borders are added to the bar height, so the effective
; window height is:
; height + border-top-size + border-bottom-size
; Meanwhile the effective window width is defined entirely by the width key and
; the border is placed withing this area. So you effectively only have the
; following horizontal space on the bar:
; width - border-right-size - border-left-size
border-size = 0
border-color = ${color.BACKGROUND}
; Number of spaces to add at the beginning/end of the bar
; Individual side values can be defined using:
; padding-{left,right}
padding = 0
; Number of spaces to add before/after each module
; Individual side values can be defined using:
; module-margin-{left,right}
module-margin-left = 1
module-margin-right = 1
; Fonts are defined using <font-name>;<vertical-offset>
; Font names are specified using a fontconfig pattern.
; font-0 = "Iosevka Nerd Font:size=10;3"
; font-1 = MaterialIcons:size=10
; font-2 = Termsynu:size=8;-1
; font-3 = FontAwesome:size=10
; See the Fonts wiki page for more details
; text
font-0 = "Iosevka Nerd Font:size=10;3"
; icons
font-1 = "Iosevka Nerd Font:size=12;3"
; glyphs
font-2 = "Iosevka Nerd Font:size=15;4"
; dot
font-3 = "Iosevka Nerd Font:size=10;4"
; clock & mpd
font-4 = "Iosevka:style=bold:size=10;4"
; Archcraft
font-5 = "archcraft:size=12;3"
; Modules are added to one of the available blocks
; modules-left = cpu ram
; modules-center = xwindow xbacklight
; modules-right = ipc clock
# Default
modules-left = menu i3
modules-center = mpd
modules-right = volume backlight battery network date sysmenu
# Alternate
;modules-left = openbox 2LD cpu 3LD memory 4LD filesystem 5LD
;modules-center = mpd
;modules-right = 2RD volume 3RD backlight 4RD battery 5RD network 6RD date sep
; The separator will be inserted between the output of each module
separator =
; This value is used to add extra spacing between elements
; @deprecated: This parameter will be removed in an upcoming version
spacing = 0
; Opacity value between 0.0 and 1.0 used on fade in/out
dim-value = 1.0
; Value to be used to set the WM_NAME atom
; If the value is empty or undefined, the atom value
; will be created from the following template: polybar-[BAR]_[MONITOR]
; NOTE: The placeholders are not available for custom values
wm-name = i3
; Locale used to localize various module data (e.g. date)
; Expects a valid libc locale, for example: sv_SE.UTF-8
locale =
; Position of the system tray window
; If empty or undefined, tray support will be disabled
; NOTE: A center aligned tray will cover center aligned modules
;
; Available positions:
; left
; center
; right
; none
tray-position = right
; If true, the bar will not shift its
; contents when the tray changes
tray-detached = false
; Tray icon max size
tray-maxsize = 16
; DEPRECATED! Since 3.3.0 the tray always uses pseudo-transparency
; Enable pseudo transparency
; Will automatically be enabled if a fully transparent
; background color is defined using `tray-background`
; tray-transparent = false
; Background color for the tray container
; ARGB color (e.g. #f00, #ff992a, #ddff1023)
; By default the tray container will use the bar
; background color.
tray-background = ${color.BACKGROUND}
; Tray offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
tray-offset-x = 0
tray-offset-y = 0
; Pad the sides of each tray icon
tray-padding = 0
; Scale factor for tray clients
tray-scale = 1.0
; Restack the bar window and put it above the
; selected window manager's root
;
; Fixes the issue where the bar is being drawn
; on top of fullscreen window's
;
; Currently supported WM's:
; bspwm
; i3 (requires: `override-redirect = true`)
wm-restack = i3
; Set a DPI values used when rendering text
; This only affects scalable fonts
; dpi =
; Enable support for inter-process messaging
; See the Messaging wiki page for more details.
enable-ipc = true
; Fallback click handlers that will be called if
; there's no matching module handler found.
click-left =
click-middle =
click-right =
scroll-up =
scroll-down =
double-click-left =
double-click-middle =
double-click-right =
; Requires polybar to be built with xcursor support (xcb-util-cursor)
; Possible values are:
; - default : The default pointer as before, can also be an empty string (default)
; - pointer : Typically in the form of a hand
; - ns-resize : Up and down arrows, can be used to indicate scrolling
cursor-click =
cursor-scroll =
;; WM Workspace Specific
; bspwm
;;scroll-up = bspwm-desknext
;;scroll-down = bspwm-deskprev
;;scroll-up = bspc desktop -f prev.local
;;scroll-down = bspc desktop -f next.local
;i3
;;scroll-up = i3wm-wsnext
;;scroll-down = i3wm-wsprev
;;scroll-up = i3-msg workspace next_on_output
;;scroll-down = i3-msg workspace prev_on_output
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; Application Settings
[settings]
; The throttle settings lets the eventloop swallow up til X events
; if they happen within Y millisecond after first event was received.
; This is done to prevent flood of update event.
;
; For example if 5 modules emit an update event at the same time, we really
; just care about the last one. But if we wait too long for events to swallow
; the bar would appear sluggish so we continue if timeout
; expires or limit is reached.
throttle-output = 5
throttle-output-for = 10
; Time in milliseconds that the input handler will wait between processing events
;throttle-input-for = 30
; Reload upon receiving XCB_RANDR_SCREEN_CHANGE_NOTIFY events
screenchange-reload = false
; Compositing operators
; @see: https://www.cairographics.org/manual/cairo-cairo-t.html#cairo-operator-t
compositing-background = source
compositing-foreground = over
compositing-overline = over
compositing-underline = over
compositing-border = over
; Define fallback values used by all module formats
;format-foreground =
;format-background =
;format-underline =
;format-overline =
;format-spacing =
;format-padding =
;format-margin =
;format-offset =
; Enables pseudo-transparency for the bar
; If set to true the bar can be transparent without a compositor.
pseudo-transparency = false
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; __________ ______
;; / ____/ __ \/ ____/
;; / __/ / / / / /_
;; / /___/ /_/ / __/
;; /_____/\____/_/
;;
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

View File

@ -0,0 +1,42 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
CARD="$(light -L | grep 'backlight' | head -n1 | cut -d'/' -f3)"
INTERFACE="$(ip link | awk '/state UP/ {print $2}' | tr -d :)"
RFILE="$DIR/.module"
# Fix backlight and network modules
fix_modules() {
if [[ -z "$CARD" ]]; then
sed -i -e 's/backlight/bna/g' "$DIR"/config.ini
elif [[ "$CARD" != *"intel_"* ]]; then
sed -i -e 's/backlight/brightness/g' "$DIR"/config.ini
fi
if [[ "$INTERFACE" == e* ]]; then
sed -i -e 's/network/ethernet/g' "$DIR"/config.ini
fi
}
# Launch the bar
launch_bar() {
# Terminate already running bar instances
killall -q polybar
# Wait until the processes have been shut down
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
# Launch the bar
for mon in $(polybar --list-monitors | cut -d":" -f1); do
MONITOR=$mon polybar -q main -c "$DIR"/config.ini &
done
}
# Execute functions
if [[ ! -f "$RFILE" ]]; then
fix_modules
touch "$RFILE"
fi
launch_bar

File diff suppressed because it is too large Load Diff

210
config/i3/themes/beach/random.sh Executable file
View File

@ -0,0 +1,210 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Apply Random Theme With Pywal
## Theme ------------------------------------
TDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
THEME="${TDIR##*/}"
# Set you wallpaper directory here.
WALLDIR="`xdg-user-dir PICTURES`/wallpapers"
WALFILE="$HOME/.cache/wal/colors.sh"
## Directories ------------------------------
PATH_CONF="$HOME/.config"
PATH_I3WM="$PATH_CONF/i3"
PATH_TERM="$PATH_I3WM/alacritty"
PATH_PBAR="$PATH_I3WM/themes/$THEME/polybar"
PATH_ROFI="$PATH_I3WM/themes/$THEME/rofi"
## Pywal ------------------------------------
check_wallpaper() {
if [[ -d "$WALLDIR" ]]; then
WFILES="`ls --format=single-column $WALLDIR | wc -l`"
if [[ "$WFILES" == 0 ]]; then
dunstify -u normal -h string:x-dunst-stack-tag:noimage -i /usr/share/archcraft/icons/dunst/picture.png "There are no wallpapers in : $WALLDIR"
exit
fi
else
mkdir -p "$WALLDIR"
dunstify -u normal -h string:x-dunst-stack-tag:noimage -i /usr/share/archcraft/icons/dunst/picture.png "Put some wallpapers in : $WALLDIR"
exit
fi
}
generate_colors() {
check_wallpaper
if [[ `which wal` ]]; then
dunstify -t 50000 -h string:x-dunst-stack-tag:runpywal -i /usr/share/archcraft/icons/dunst/hourglass.png "Generating Colorscheme. Please wait..."
wal -q -n -s -t -e -i "$WALLDIR"
if [[ "$?" != 0 ]]; then
dunstify -u normal -h string:x-dunst-stack-tag:runpywal -i /usr/share/archcraft/icons/dunst/palette.png "Failed to generate colorscheme."
exit
fi
else
dunstify -u normal -h string:x-dunst-stack-tag:runpywal -i /usr/share/archcraft/icons/dunst/palette.png "'pywal' is not installed."
exit
fi
}
generate_colors
source "$WALFILE"
altbackground="`pastel color $background | pastel lighten 0.03 | pastel format hex`"
altforeground="`pastel color $foreground | pastel darken 0.30 | pastel format hex`"
accent="$color4"
## Wallpaper ---------------------------------
apply_wallpaper() {
sed -i -e "s#WALLPAPER=.*#WALLPAPER='$wallpaper'#g" ${PATH_I3WM}/themes/wallpaper.sh
}
## Polybar -----------------------------------
apply_polybar() {
# rewrite colors file
cat > ${PATH_PBAR}/colors.ini <<- EOF
[color]
BACKGROUND = ${background}
FOREGROUND = ${foreground}
ALTBACKGROUND = ${altbackground}
ALTFOREGROUND = ${altforeground}
ACCENT = ${accent}
BLACK = ${color0}
RED = ${color1}
GREEN = ${color2}
YELLOW = ${color3}
BLUE = ${color4}
MAGENTA = ${color5}
CYAN = ${color6}
WHITE = ${color7}
ALTBLACK = ${color8}
ALTRED = ${color9}
ALTGREEN = ${color10}
ALTYELLOW = ${color11}
ALTBLUE = ${color12}
ALTMAGENTA = ${color13}
ALTCYAN = ${color14}
ALTWHITE = ${color15}
EOF
}
# Rofi --------------------------------------
apply_rofi() {
# rewrite colors file
cat > ${PATH_ROFI}/shared/colors.rasi <<- EOF
* {
background: ${background};
background-alt: ${altbackground};
foreground: ${foreground};
selected: ${accent};
active: ${color2};
urgent: ${color1};
}
EOF
}
# Terminal ----------------------------------
apply_terminal() {
# alacritty : colors
cat > ${PATH_TERM}/colors.yml <<- _EOF_
## Colors configuration
colors:
# Default colors
primary:
background: '${background}'
foreground: '${foreground}'
# Normal colors
normal:
black: '${color0}'
red: '${color1}'
green: '${color2}'
yellow: '${color3}'
blue: '${color4}'
magenta: '${color5}'
cyan: '${color6}'
white: '${color7}'
# Bright colors
bright:
black: '${color8}'
red: '${color9}'
green: '${color10}'
yellow: '${color11}'
blue: '${color12}'
magenta: '${color13}'
cyan: '${color14}'
white: '${color15}'
_EOF_
}
# Dunst -------------------------------------
apply_dunst() {
# modify colors
sed -i '/urgency_low/Q' ${PATH_I3WM}/dunstrc
cat >> ${PATH_I3WM}/dunstrc <<- _EOF_
[urgency_low]
timeout = 2
background = "${background}"
foreground = "${foreground}"
frame_color = "${altbackground}"
[urgency_normal]
timeout = 5
background = "${background}"
foreground = "${foreground}"
frame_color = "${altbackground}"
[urgency_critical]
timeout = 0
background = "${background}"
foreground = "${color1}"
frame_color = "${color1}"
_EOF_
}
# I3WM -------------------------------------
apply_i3wm() {
# modify i3theme file
sed -i ${PATH_I3WM}/config.d/01_theme.conf \
-e "s/set \$i3_cl_col_bg.*/set \$i3_cl_col_bg $background/g" \
-e "s/set \$i3_cl_col_fg.*/set \$i3_cl_col_fg $foreground/g" \
-e "s/set \$i3_cl_col_in.*/set \$i3_cl_col_in $color2/g" \
-e "s/set \$i3_cl_col_afoc.*/set \$i3_cl_col_afoc $accent/g" \
-e "s/set \$i3_cl_col_ifoc.*/set \$i3_cl_col_ifoc $color4/g" \
-e "s/set \$i3_cl_col_ufoc.*/set \$i3_cl_col_ufoc $altbackground/g" \
-e "s/set \$i3_cl_col_urgt.*/set \$i3_cl_col_urgt $color5/g" \
-e "s/set \$i3_cl_col_phol.*/set \$i3_cl_col_phol $background/g"
# modify i3bar file
sed -i ${PATH_I3WM}/i3status/statusbar.conf \
-e "s/set \$i3_bar_bg.*/set \$i3_bar_bg $background/g" \
-e "s/set \$i3_bar_fg.*/set \$i3_bar_fg $foreground/g" \
-e "s/set \$i3_bar_sep.*/set \$i3_bar_sep $altbackground/g" \
-e "s/set \$i3_bar_foc.*/set \$i3_bar_foc $accent/g" \
-e "s/set \$i3_bar_act.*/set \$i3_bar_act $color4/g" \
-e "s/set \$i3_bar_ina.*/set \$i3_bar_ina $altbackground/g" \
-e "s/set \$i3_bar_urg.*/set \$i3_bar_urg $color5/g" \
-e "s/set \$i3_bar_mod.*/set \$i3_bar_mod $color2/g"
# modify i3status file
sed -i ${PATH_I3WM}/i3status/config \
-e "s/color_good =.*/color_good = \"$color2\"/g" \
-e "s/color_degraded =.*/color_degraded = \"$color3\"/g" \
-e "s/color_bad =.*/color_bad = \"$color1\"/g" \
-e "s/color_separator =.*/color_separator = \"$altbackground\"/g"
# restart i3wm
i3-msg restart
}
## Execute Script ---------------------------
apply_wallpaper
apply_polybar
apply_rofi
apply_terminal
apply_dunst
apply_i3wm

View File

@ -0,0 +1,75 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*****----- Main Window -----*****/
window {
location: south;
anchor: south;
fullscreen: false;
width: 350px;
x-offset: 0px;
y-offset: -58px;
padding: 15px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: @background;
cursor: "default";
children: [ "inputbar", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "textbox-prompt-colon", "entry", "prompt" ];
}
dummy {
expand: false;
width: 10px;
background-color: transparent;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 10px 13px;
border-radius: 0px;
background-color: @urgent;
text-color: @background;
}
prompt {
enabled: true;
padding: 10px;
border-radius: 0px;
background-color: @selected;
text-color: @background;
}
entry {
enabled: true;
padding: 10px 15px;
border-radius: 0px;
background-color: @background-alt;
text-color: inherit;
cursor: text;
placeholder: "Password";
placeholder-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: false;
}

View File

@ -0,0 +1,306 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "run";
show-icons: false;
display-drun: "";
display-run: "";
display-filebrowser: "";
display-window: "";
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";
window-format: "{w} · {c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=NO
*/
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: south;
anchor: south;
fullscreen: false;
width: 350px;
x-offset: 0px;
y-offset: -58px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 30px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "prompt" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 5;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 0px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 0px;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected);
text-color: var(normal-background);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,306 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "run";
show-icons: false;
display-drun: "";
display-run: "";
display-filebrowser: "";
display-window: "";
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";
window-format: "{w} · {c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=NO
*/
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: southeast;
anchor: southeast;
fullscreen: false;
width: 250px;
x-offset: -20px;
y-offset: -58px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 30px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "prompt" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 2;
lines: 1;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 0px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 0px;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected);
text-color: var(normal-background);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.5;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,302 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "drun,run,filebrowser,window";
show-icons: true;
display-drun: "";
display-run: "";
display-filebrowser: "";
display-window: "";
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";
window-format: "{c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: southwest;
anchor: southwest;
fullscreen: false;
width: 500px;
x-offset: 20px;
y-offset: -58px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 40px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "message", "listview", "mode-switcher" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "prompt", "entry" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "::";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "search...";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 8;
cycle: true;
dynamic: true;
scrollbar: true;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 0px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 8px;
margin: 0px;
padding: 6px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected);
text-color: var(normal-background);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,306 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "run";
show-icons: false;
display-drun: "";
display-run: "";
display-filebrowser: "";
display-window: "";
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";
window-format: "{w} · {c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=NO
*/
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: south;
anchor: south;
fullscreen: false;
width: 350px;
x-offset: 0px;
y-offset: -58px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 30px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "prompt" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 0px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 0px;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected);
text-color: var(normal-background);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,303 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "run";
show-icons: false;
display-drun: "";
display-run: "";
display-filebrowser: "";
display-window: "";
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";
window-format: "{w} · {c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: southeast;
anchor: southeast;
fullscreen: false;
width: 450px;
height: 400px;
x-offset: -20px;
y-offset: -58px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 30px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "prompt", "entry" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "直";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
dynamic: true;
scrollbar: true;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 0px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 0px;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected);
text-color: var(normal-background);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,306 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "run";
show-icons: false;
display-drun: "";
display-run: "";
display-filebrowser: "";
display-window: "";
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";
window-format: "{w} · {c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=NO
*/
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: southeast;
anchor: southeast;
fullscreen: false;
width: 350px;
x-offset: -20px;
y-offset: -58px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 30px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "prompt" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 0px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 0px;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected);
text-color: var(normal-background);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,302 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "run";
show-icons: true;
display-drun: "";
display-run: "";
display-filebrowser: "";
display-window: "";
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";
window-format: "{w} · {c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: southwest;
anchor: southwest;
fullscreen: false;
width: 400px;
x-offset: 20px;
y-offset: -58px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 30px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "prompt", "entry" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "::";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "search...";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 0px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 8px;
margin: 0px;
padding: 6px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected);
text-color: var(normal-background);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,306 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "run";
show-icons: false;
display-drun: "";
display-run: "";
display-filebrowser: "";
display-window: "";
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";
window-format: "{w} · {c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=NO
*/
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: southeast;
anchor: southeast;
fullscreen: false;
width: 410px;
x-offset: -20px;
y-offset: -58px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 30px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "prompt" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 5;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 0px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 0px;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected);
text-color: var(normal-background);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,8 @@
* {
background: #141c21;
background-alt: #1a242b;
foreground: #93a1a1;
selected: #5294E2;
active: #819400;
urgent: #d12f2c;
}

View File

@ -0,0 +1,7 @@
/* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com> */
/* Text Font */
* {
font: "Iosevka 10";
}

View File

@ -0,0 +1,306 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "run";
show-icons: false;
display-drun: "";
display-run: "";
display-filebrowser: "";
display-window: "";
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";
window-format: "{w} · {c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=NO
*/
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: south;
anchor: south;
fullscreen: false;
width: 350px;
x-offset: 0px;
y-offset: -58px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 30px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "prompt" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 0px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 0px;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected);
text-color: var(normal-background);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,302 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "window";
show-icons: true;
display-drun: "";
display-run: "";
display-filebrowser: "";
display-window: "";
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";
window-format: "{c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: southwest;
anchor: southwest;
fullscreen: false;
width: 500px;
x-offset: 20px;
y-offset: -58px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 30px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "prompt", "entry" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "::";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "filter...";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 0px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 8px;
margin: 0px;
padding: 6px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected);
text-color: var(normal-background);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,81 @@
# ------------------------------------------------------------------------------
# Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
#
# Beach Theme
# ------------------------------------------------------------------------------
# Colors
background='#141c21'
foreground='#93a1a1'
color0='#263640'
color1='#d12f2c'
color2='#819400'
color3='#b08500'
color4='#2587cc'
color5='#696ebf'
color6='#289c93'
color7='#bfbaac'
color8='#4a697d'
color9='#fa3935'
color10='#a4bd00'
color11='#d9a400'
color12='#2ca2f5'
color13='#8086e8'
color14='#33c5ba'
color15='#fdf6e3'
accent='#5294E2'
light_value='0.03'
dark_value='0.30'
# Wallpaper
wdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
wallpaper="$wdir/wallpaper"
# Polybar
polybar_font='Iosevka Nerd Font:size=10;3'
# Rofi
rofi_font='Iosevka 10'
rofi_icon='Numix-Apps'
# Terminal
terminal_font_name='JetBrainsMono Nerd Font'
terminal_font_size='10'
# Geany
geany_colors='beach.conf'
geany_font='JetBrains Mono 10'
# Appearance
gtk_font='Noto Sans 9'
gtk_theme='Arc'
icon_theme='Arc-Circle'
cursor_theme='Future'
# Dunst
dunst_width='300'
dunst_height='80'
dunst_offset='20x58'
dunst_origin='bottom-right'
dunst_font='Iosevka 10'
dunst_border='0'
dunst_separator='2'
# Picom
picom_backend='glx'
picom_corner='0'
picom_shadow_r='14'
picom_shadow_o='0.30'
picom_shadow_x='-12'
picom_shadow_y='-12'
picom_blur_method='none'
picom_blur_strength='0'
# I3WM
i3wm_fonts='JetBrainsMono Nerd Font 10'
i3wm_border_size='2'
i3wm_border_style='pixel'
i3wm_gaps_inner='20'
i3wm_gaps_outer='0'
i3wm_gaps_smart='off'

View File

@ -0,0 +1 @@
/usr/share/backgrounds/beach.jpg

308
config/i3/themes/bouquet/apply.sh Executable file
View File

@ -0,0 +1,308 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Script To Apply Themes
## Theme ------------------------------------
IDIR="$HOME/.config/i3"
TDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
THEME="${TDIR##*/}"
source "$IDIR"/themes/"$THEME"/theme.bash
altbackground="`pastel color $background | pastel lighten $light_value | pastel format hex`"
altforeground="`pastel color $foreground | pastel darken $dark_value | pastel format hex`"
## Directories ------------------------------
PATH_CONF="$HOME/.config"
PATH_GEANY="$PATH_CONF/geany"
PATH_I3WM="$PATH_CONF/i3"
PATH_TERM="$PATH_I3WM/alacritty"
PATH_PBAR="$PATH_I3WM/themes/$THEME/polybar"
PATH_ROFI="$PATH_I3WM/themes/$THEME/rofi"
## Wallpaper ---------------------------------
apply_wallpaper() {
sed -i -e "s#WALLPAPER=.*#WALLPAPER='$wallpaper'#g" ${PATH_I3WM}/themes/wallpaper.sh
}
## Polybar -----------------------------------
apply_polybar() {
# modify polybar launch script
sed -i -e "s/STYLE=.*/STYLE=\"$THEME\"/g" ${PATH_I3WM}/themes/polybar.sh
# apply default theme fonts
sed -i -e "s/font-0 = .*/font-0 = \"$polybar_font\"/g" ${PATH_PBAR}/config.ini
# rewrite colors file
cat > ${PATH_PBAR}/colors.ini <<- EOF
[color]
BACKGROUND = ${background}
FOREGROUND = ${foreground}
ALTBACKGROUND = ${altbackground}
ALTFOREGROUND = ${altforeground}
ACCENT = ${accent}
BLACK = ${color0}
RED = ${color1}
GREEN = ${color2}
YELLOW = ${color3}
BLUE = ${color4}
MAGENTA = ${color5}
CYAN = ${color6}
WHITE = ${color7}
ALTBLACK = ${color8}
ALTRED = ${color9}
ALTGREEN = ${color10}
ALTYELLOW = ${color11}
ALTBLUE = ${color12}
ALTMAGENTA = ${color13}
ALTCYAN = ${color14}
ALTWHITE = ${color15}
EOF
}
# Rofi --------------------------------------
apply_rofi() {
# modify rofi scripts
sed -i -e "s/STYLE=.*/STYLE=\"$THEME\"/g" \
${PATH_I3WM}/scripts/rofi_askpass \
${PATH_I3WM}/scripts/rofi_asroot \
${PATH_I3WM}/scripts/rofi_launcher \
${PATH_I3WM}/scripts/rofi_music \
${PATH_I3WM}/scripts/rofi_powermenu \
${PATH_I3WM}/scripts/rofi_runner \
${PATH_I3WM}/scripts/rofi_screenshot \
${PATH_I3WM}/scripts/rofi_themes \
${PATH_I3WM}/scripts/rofi_windows
# apply default theme fonts
sed -i -e "s/font:.*/font: \"$rofi_font\";/g" ${PATH_ROFI}/shared/fonts.rasi
# rewrite colors file
cat > ${PATH_ROFI}/shared/colors.rasi <<- EOF
* {
background: ${background};
background-alt: ${altbackground};
foreground: ${foreground};
selected: ${accent};
active: ${color2};
urgent: ${color1};
}
EOF
# modify icon theme
if [[ -f "$PATH_CONF"/rofi/config.rasi ]]; then
sed -i -e "s/icon-theme:.*/icon-theme: \"$rofi_icon\";/g" ${PATH_CONF}/rofi/config.rasi
fi
}
# Network Menu ------------------------------
apply_netmenu() {
if [[ -f "$PATH_I3WM"/themes/networkmenu_config.ini ]]; then
sed -i -e "s#dmenu_command = .*#dmenu_command = rofi -dmenu -theme $PATH_ROFI/networkmenu.rasi#g" ${PATH_I3WM}/themes/networkmenu_config.ini
fi
}
# Terminal ----------------------------------
apply_terminal() {
# alacritty : fonts
sed -i ${PATH_TERM}/fonts.yml \
-e "s/family: .*/family: \"$terminal_font_name\"/g" \
-e "s/size: .*/size: $terminal_font_size/g"
# alacritty : colors
cat > ${PATH_TERM}/colors.yml <<- _EOF_
## Colors configuration
colors:
# Default colors
primary:
background: '${background}'
foreground: '${foreground}'
# Normal colors
normal:
black: '${color0}'
red: '${color1}'
green: '${color2}'
yellow: '${color3}'
blue: '${color4}'
magenta: '${color5}'
cyan: '${color6}'
white: '${color7}'
# Bright colors
bright:
black: '${color8}'
red: '${color9}'
green: '${color10}'
yellow: '${color11}'
blue: '${color12}'
magenta: '${color13}'
cyan: '${color14}'
white: '${color15}'
_EOF_
}
# Geany -------------------------------------
apply_geany() {
sed -i ${PATH_GEANY}/geany.conf \
-e "s/color_scheme=.*/color_scheme=$geany_colors/g" \
-e "s/editor_font=.*/editor_font=$geany_font/g"
}
# Appearance --------------------------------
apply_appearance() {
XFILE="$PATH_I3WM/xsettingsd"
GTK2FILE="$HOME/.gtkrc-2.0"
GTK3FILE="$PATH_CONF/gtk-3.0/settings.ini"
# apply gtk theme, icons, cursor & fonts
if [[ `pidof xsettingsd` ]]; then
sed -i -e "s|Net/ThemeName .*|Net/ThemeName \"$gtk_theme\"|g" ${XFILE}
sed -i -e "s|Net/IconThemeName .*|Net/IconThemeName \"$icon_theme\"|g" ${XFILE}
sed -i -e "s|Gtk/CursorThemeName .*|Gtk/CursorThemeName \"$cursor_theme\"|g" ${XFILE}
else
sed -i -e "s/gtk-font-name=.*/gtk-font-name=\"$gtk_font\"/g" ${GTK2FILE}
sed -i -e "s/gtk-theme-name=.*/gtk-theme-name=\"$gtk_theme\"/g" ${GTK2FILE}
sed -i -e "s/gtk-icon-theme-name=.*/gtk-icon-theme-name=\"$icon_theme\"/g" ${GTK2FILE}
sed -i -e "s/gtk-cursor-theme-name=.*/gtk-cursor-theme-name=\"$cursor_theme\"/g" ${GTK2FILE}
sed -i -e "s/gtk-font-name=.*/gtk-font-name=$gtk_font/g" ${GTK3FILE}
sed -i -e "s/gtk-theme-name=.*/gtk-theme-name=$gtk_theme/g" ${GTK3FILE}
sed -i -e "s/gtk-icon-theme-name=.*/gtk-icon-theme-name=$icon_theme/g" ${GTK3FILE}
sed -i -e "s/gtk-cursor-theme-name=.*/gtk-cursor-theme-name=$cursor_theme/g" ${GTK3FILE}
fi
# inherit cursor theme
if [[ -f "$HOME"/.icons/default/index.theme ]]; then
sed -i -e "s/Inherits=.*/Inherits=$cursor_theme/g" "$HOME"/.icons/default/index.theme
fi
}
# Dunst -------------------------------------
apply_dunst() {
# modify dunst config
sed -i ${PATH_I3WM}/dunstrc \
-e "s/width = .*/width = $dunst_width/g" \
-e "s/height = .*/height = $dunst_height/g" \
-e "s/offset = .*/offset = $dunst_offset/g" \
-e "s/origin = .*/origin = $dunst_origin/g" \
-e "s/font = .*/font = $dunst_font/g" \
-e "s/frame_width = .*/frame_width = $dunst_border/g" \
-e "s/separator_height = .*/separator_height = $dunst_separator/g" \
-e "s/line_height = .*/line_height = $dunst_separator/g"
# modify colors
sed -i '/urgency_low/Q' ${PATH_I3WM}/dunstrc
cat >> ${PATH_I3WM}/dunstrc <<- _EOF_
[urgency_low]
timeout = 2
background = "${background}"
foreground = "${foreground}"
frame_color = "${accent}"
[urgency_normal]
timeout = 5
background = "${background}"
foreground = "${foreground}"
frame_color = "${accent}"
[urgency_critical]
timeout = 0
background = "${background}"
foreground = "${color1}"
frame_color = "${color1}"
_EOF_
}
# Compositor --------------------------------
apply_compositor() {
picom_cfg="$PATH_I3WM/picom.conf"
# modify picom config
sed -i "$picom_cfg" \
-e "s/backend = .*/backend = \"$picom_backend\";/g" \
-e "s/corner-radius = .*/corner-radius = $picom_corner;/g" \
-e "s/shadow-radius = .*/shadow-radius = $picom_shadow_r;/g" \
-e "s/shadow-opacity = .*/shadow-opacity = $picom_shadow_o;/g" \
-e "s/shadow-offset-x = .*/shadow-offset-x = $picom_shadow_x;/g" \
-e "s/shadow-offset-y = .*/shadow-offset-y = $picom_shadow_y;/g" \
-e "s/method = .*/method = \"$picom_blur_method\";/g" \
-e "s/strength = .*/strength = $picom_blur_strength;/g"
}
# I3WM -------------------------------------
apply_i3wm() {
# modify i3theme file
sed -i ${PATH_I3WM}/config.d/01_theme.conf \
-e "s/set \$i3_fonts.*/set \$i3_fonts $i3wm_fonts/g" \
\
-e "s/set \$i3_border_size.*/set \$i3_border_size $i3wm_border_size/g" \
-e "s/set \$i3_border_style.*/set \$i3_border_style $i3wm_border_style/g" \
\
-e "s/set \$i3_gaps_inner.*/set \$i3_gaps_inner $i3wm_gaps_inner/g" \
-e "s/set \$i3_gaps_outer.*/set \$i3_gaps_outer $i3wm_gaps_outer/g" \
-e "s/set \$i3_gaps_smart.*/set \$i3_gaps_smart $i3wm_gaps_smart/g" \
\
-e "s/set \$i3_cl_col_bg.*/set \$i3_cl_col_bg $background/g" \
-e "s/set \$i3_cl_col_fg.*/set \$i3_cl_col_fg $foreground/g" \
-e "s/set \$i3_cl_col_in.*/set \$i3_cl_col_in $color2/g" \
-e "s/set \$i3_cl_col_afoc.*/set \$i3_cl_col_afoc $accent/g" \
-e "s/set \$i3_cl_col_ifoc.*/set \$i3_cl_col_ifoc $color4/g" \
-e "s/set \$i3_cl_col_ufoc.*/set \$i3_cl_col_ufoc $altbackground/g" \
-e "s/set \$i3_cl_col_urgt.*/set \$i3_cl_col_urgt $color5/g" \
-e "s/set \$i3_cl_col_phol.*/set \$i3_cl_col_phol $background/g"
# modify i3bar file
sed -i ${PATH_I3WM}/i3status/statusbar.conf \
-e "s/set \$i3_bar_fonts.*/set \$i3_bar_fonts $i3wm_fonts/g" \
\
-e "s/set \$i3_bar_bg.*/set \$i3_bar_bg $background/g" \
-e "s/set \$i3_bar_fg.*/set \$i3_bar_fg $foreground/g" \
-e "s/set \$i3_bar_sep.*/set \$i3_bar_sep $altbackground/g" \
-e "s/set \$i3_bar_foc.*/set \$i3_bar_foc $accent/g" \
-e "s/set \$i3_bar_act.*/set \$i3_bar_act $color4/g" \
-e "s/set \$i3_bar_ina.*/set \$i3_bar_ina $altbackground/g" \
-e "s/set \$i3_bar_urg.*/set \$i3_bar_urg $color5/g" \
-e "s/set \$i3_bar_mod.*/set \$i3_bar_mod $color2/g"
# modify i3status file
sed -i ${PATH_I3WM}/i3status/config \
-e "s/color_good =.*/color_good = \"$color2\"/g" \
-e "s/color_degraded =.*/color_degraded = \"$color3\"/g" \
-e "s/color_bad =.*/color_bad = \"$color1\"/g" \
-e "s/color_separator =.*/color_separator = \"$altbackground\"/g"
# restart i3wm
i3-msg restart
}
# Create Theme File -------------------------
create_file() {
theme_file="$PATH_I3WM/themes/.current"
if [[ ! -f "$theme_file" ]]; then
touch ${theme_file}
fi
echo "$THEME" > ${theme_file}
}
# Notify User -------------------------------
notify_user() {
dunstify -u normal -h string:x-dunst-stack-tag:applytheme -i /usr/share/archcraft/icons/dunst/themes.png "Applying Style : $THEME"
}
## Execute Script ---------------------------
notify_user
create_file
apply_wallpaper
apply_polybar
apply_rofi
apply_netmenu
apply_terminal
apply_geany
apply_appearance
apply_dunst
apply_compositor
apply_i3wm

View File

@ -0,0 +1,24 @@
[color]
BACKGROUND = #091927
FOREGROUND = #e1e7ee
ALTBACKGROUND = #0c2133
ALTFOREGROUND = #7f99b7
ACCENT = #8DA2B3
BLACK = #091927
RED = #77A7D6
GREEN = #7FB2E1
YELLOW = #8DA2B3
BLUE = #8DB5DE
MAGENTA = #A7C3E0
CYAN = #ADD0EC
WHITE = #e1e7ee
ALTBLACK = #9da1a6
ALTRED = #77A7D6
ALTGREEN = #7FB2E1
ALTYELLOW = #8DA2B3
ALTBLUE = #8DB5DE
ALTMAGENTA = #A7C3E0
ALTCYAN = #ADD0EC
ALTWHITE = #e1e7ee

View File

@ -0,0 +1,306 @@
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; Global WM Settings
[global/wm]
; Adjust the _NET_WM_STRUT_PARTIAL top value
; Used for top aligned bars
margin-bottom = 0
; Adjust the _NET_WM_STRUT_PARTIAL bottom value
; Used for bottom aligned bars
margin-top = 0
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; File Inclusion
; include an external file, like module file, etc.
include-file = ../../system.ini
include-file = ./colors.ini
include-file = ./modules.ini
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; Bar Settings
[bar/main]
; Use either of the following command to list available outputs:
; If unspecified, the application will pick the first one it finds.
; $ polybar -m | cut -d ':' -f 1
; $ xrandr -q | grep " connected" | cut -d ' ' -f1
monitor = ${env:MONITOR:}
; Use the specified monitor as a fallback if the main one is not found.
monitor-fallback =
; Require the monitor to be in connected state
; XRandR sometimes reports my monitor as being disconnected (when in use)
monitor-strict = false
; Tell the Window Manager not to configure the window.
; Use this to detach the bar if your WM is locking its size/position.
override-redirect = false
; Put the bar at the bottom of the screen
bottom = true
; Prefer fixed center position for the `modules-center` block
; When false, the center position will be based on the size of the other blocks.
fixed-center = true
; Dimension defined as pixel value (e.g. 35) or percentage (e.g. 50%),
; the percentage can optionally be extended with a pixel offset like so:
; 50%:-10, this will result in a width or height of 50% minus 10 pixels
width = 100%
height = 36
; Offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
; the percentage can optionally be extended with a pixel offset like so:
; 50%:-10, this will result in an offset in the x or y direction
; of 50% minus 10 pixels
offset-x = 0%
offset-y = 0%
; Background ARGB color (e.g. #f00, #ff992a, #ddff1023)
background = ${color.BACKGROUND}
; Foreground ARGB color (e.g. #f00, #ff992a, #ddff1023)
foreground = ${color.FOREGROUND}
; Background gradient (vertical steps)
; background-[0-9]+ = #aarrggbb
;;background-0 =
; Value used for drawing rounded corners
; Note: This shouldn't be used together with border-size because the border
; doesn't get rounded
; Individual top/bottom values can be defined using:
; radius-{top,bottom}
radius-top = 0.0
radius-bottom = 0.0
; Under-/overline pixel size and argb color
; Individual values can be defined using:
; {overline,underline}-size
; {overline,underline}-color
line-size = 2
line-color = ${color.ACCENT}
; Values applied to all borders
; Individual side values can be defined using:
; border-{left,top,right,bottom}-size
; border-{left,top,right,bottom}-color
; The top and bottom borders are added to the bar height, so the effective
; window height is:
; height + border-top-size + border-bottom-size
; Meanwhile the effective window width is defined entirely by the width key and
; the border is placed withing this area. So you effectively only have the
; following horizontal space on the bar:
; width - border-right-size - border-left-size
border-top-size = 0
border-color = ${color.ACCENT}
; Number of spaces to add at the beginning/end of the bar
; Individual side values can be defined using:
; padding-{left,right}
padding = 2
; Number of spaces to add before/after each module
; Individual side values can be defined using:
; module-margin-{left,right}
module-margin-left = 0
module-margin-right = 0
; Fonts are defined using <font-name>;<vertical-offset>
; Font names are specified using a fontconfig pattern.
; font-0 = "Iosevka Nerd Font:size=10;3"
; font-1 = MaterialIcons:size=10
; font-2 = Termsynu:size=8;-1
; font-3 = FontAwesome:size=10
; See the Fonts wiki page for more details
font-0 = "Iosevka Nerd Font:size=10;3"
font-1 = "Iosevka Nerd Font:size=12;3"
font-2 = "Iosevka:style=bold:size=12;3"
; Modules are added to one of the available blocks
; modules-left = cpu ram
; modules-center = xwindow xbacklight
; modules-right = ipc clock
# Default
modules-left = menu sep i3 sep cpu sep used-memory sep filesystem
modules-center = mpd
modules-right = volume sep backlight sep battery sep network sep date sep sysmenu
# Alternate
;modules-left = openbox 2LD cpu 3LD memory 4LD filesystem 5LD
;modules-center = mpd
;modules-right = 2RD volume 3RD backlight 4RD battery 5RD network 6RD date sep
; The separator will be inserted between the output of each module
separator =
; This value is used to add extra spacing between elements
; @deprecated: This parameter will be removed in an upcoming version
spacing = 0
; Opacity value between 0.0 and 1.0 used on fade in/out
dim-value = 1.0
; Value to be used to set the WM_NAME atom
; If the value is empty or undefined, the atom value
; will be created from the following template: polybar-[BAR]_[MONITOR]
; NOTE: The placeholders are not available for custom values
wm-name = i3
; Locale used to localize various module data (e.g. date)
; Expects a valid libc locale, for example: sv_SE.UTF-8
locale =
; Position of the system tray window
; If empty or undefined, tray support will be disabled
; NOTE: A center aligned tray will cover center aligned modules
;
; Available positions:
; left
; center
; right
; none
tray-position = right
; If true, the bar will not shift its
; contents when the tray changes
tray-detached = false
; Tray icon max size
tray-maxsize = 16
; DEPRECATED! Since 3.3.0 the tray always uses pseudo-transparency
; Enable pseudo transparency
; Will automatically be enabled if a fully transparent
; background color is defined using `tray-background`
; tray-transparent = false
; Background color for the tray container
; ARGB color (e.g. #f00, #ff992a, #ddff1023)
; By default the tray container will use the bar
; background color.
tray-background = ${color.BACKGROUND}
; Tray offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
tray-offset-x = 0
tray-offset-y = 0
; Pad the sides of each tray icon
tray-padding = 0
; Scale factor for tray clients
tray-scale = 1.0
; Restack the bar window and put it above the
; selected window manager's root
;
; Fixes the issue where the bar is being drawn
; on top of fullscreen window's
;
; Currently supported WM's:
; bspwm
; i3 (requires: `override-redirect = true`)
wm-restack = i3
; Set a DPI values used when rendering text
; This only affects scalable fonts
; dpi =
; Enable support for inter-process messaging
; See the Messaging wiki page for more details.
enable-ipc = true
; Fallback click handlers that will be called if
; there's no matching module handler found.
click-left =
click-middle =
click-right =
scroll-up =
scroll-down =
double-click-left =
double-click-middle =
double-click-right =
; Requires polybar to be built with xcursor support (xcb-util-cursor)
; Possible values are:
; - default : The default pointer as before, can also be an empty string (default)
; - pointer : Typically in the form of a hand
; - ns-resize : Up and down arrows, can be used to indicate scrolling
cursor-click =
cursor-scroll =
;; WM Workspace Specific
; bspwm
;;scroll-up = bspwm-desknext
;;scroll-down = bspwm-deskprev
;;scroll-up = bspc desktop -f prev.local
;;scroll-down = bspc desktop -f next.local
;i3
;;scroll-up = i3wm-wsnext
;;scroll-down = i3wm-wsprev
;;scroll-up = i3-msg workspace next_on_output
;;scroll-down = i3-msg workspace prev_on_output
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; Application Settings
[settings]
; The throttle settings lets the eventloop swallow up til X events
; if they happen within Y millisecond after first event was received.
; This is done to prevent flood of update event.
;
; For example if 5 modules emit an update event at the same time, we really
; just care about the last one. But if we wait too long for events to swallow
; the bar would appear sluggish so we continue if timeout
; expires or limit is reached.
throttle-output = 5
throttle-output-for = 10
; Time in milliseconds that the input handler will wait between processing events
;throttle-input-for = 30
; Reload upon receiving XCB_RANDR_SCREEN_CHANGE_NOTIFY events
screenchange-reload = false
; Compositing operators
; @see: https://www.cairographics.org/manual/cairo-cairo-t.html#cairo-operator-t
compositing-background = source
compositing-foreground = over
compositing-overline = over
compositing-underline = over
compositing-border = over
; Define fallback values used by all module formats
;format-foreground =
;format-background =
;format-underline =
;format-overline =
;format-spacing =
;format-padding =
;format-margin =
;format-offset =
; Enables pseudo-transparency for the bar
; If set to true the bar can be transparent without a compositor.
pseudo-transparency = false
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; __________ ______
;; / ____/ __ \/ ____/
;; / __/ / / / / /_
;; / /___/ /_/ / __/
;; /_____/\____/_/
;;
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

View File

@ -0,0 +1,42 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
CARD="$(light -L | grep 'backlight' | head -n1 | cut -d'/' -f3)"
INTERFACE="$(ip link | awk '/state UP/ {print $2}' | tr -d :)"
RFILE="$DIR/.module"
# Fix backlight and network modules
fix_modules() {
if [[ -z "$CARD" ]]; then
sed -i -e 's/backlight/bna/g' "$DIR"/config.ini
elif [[ "$CARD" != *"intel_"* ]]; then
sed -i -e 's/backlight/brightness/g' "$DIR"/config.ini
fi
if [[ "$INTERFACE" == e* ]]; then
sed -i -e 's/network/ethernet/g' "$DIR"/config.ini
fi
}
# Launch the bar
launch_bar() {
# Terminate already running bar instances
killall -q polybar
# Wait until the processes have been shut down
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
# Launch the bar
for mon in $(polybar --list-monitors | cut -d":" -f1); do
MONITOR=$mon polybar -q main -c "$DIR"/config.ini &
done
}
# Execute functions
if [[ ! -f "$RFILE" ]]; then
fix_modules
touch "$RFILE"
fi
launch_bar

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,210 @@
#!/usr/bin/env bash
## Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
##
## Apply Random Theme With Pywal
## Theme ------------------------------------
TDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
THEME="${TDIR##*/}"
# Set you wallpaper directory here.
WALLDIR="`xdg-user-dir PICTURES`/wallpapers"
WALFILE="$HOME/.cache/wal/colors.sh"
## Directories ------------------------------
PATH_CONF="$HOME/.config"
PATH_I3WM="$PATH_CONF/i3"
PATH_TERM="$PATH_I3WM/alacritty"
PATH_PBAR="$PATH_I3WM/themes/$THEME/polybar"
PATH_ROFI="$PATH_I3WM/themes/$THEME/rofi"
## Pywal ------------------------------------
check_wallpaper() {
if [[ -d "$WALLDIR" ]]; then
WFILES="`ls --format=single-column $WALLDIR | wc -l`"
if [[ "$WFILES" == 0 ]]; then
dunstify -u normal -h string:x-dunst-stack-tag:noimage -i /usr/share/archcraft/icons/dunst/picture.png "There are no wallpapers in : $WALLDIR"
exit
fi
else
mkdir -p "$WALLDIR"
dunstify -u normal -h string:x-dunst-stack-tag:noimage -i /usr/share/archcraft/icons/dunst/picture.png "Put some wallpapers in : $WALLDIR"
exit
fi
}
generate_colors() {
check_wallpaper
if [[ `which wal` ]]; then
dunstify -t 50000 -h string:x-dunst-stack-tag:runpywal -i /usr/share/archcraft/icons/dunst/hourglass.png "Generating Colorscheme. Please wait..."
wal -q -n -s -t -e -i "$WALLDIR"
if [[ "$?" != 0 ]]; then
dunstify -u normal -h string:x-dunst-stack-tag:runpywal -i /usr/share/archcraft/icons/dunst/palette.png "Failed to generate colorscheme."
exit
fi
else
dunstify -u normal -h string:x-dunst-stack-tag:runpywal -i /usr/share/archcraft/icons/dunst/palette.png "'pywal' is not installed."
exit
fi
}
generate_colors
source "$WALFILE"
altbackground="`pastel color $background | pastel lighten 0.03 | pastel format hex`"
altforeground="`pastel color $foreground | pastel darken 0.30 | pastel format hex`"
accent="$color3"
## Wallpaper ---------------------------------
apply_wallpaper() {
sed -i -e "s#WALLPAPER=.*#WALLPAPER='$wallpaper'#g" ${PATH_I3WM}/themes/wallpaper.sh
}
## Polybar -----------------------------------
apply_polybar() {
# rewrite colors file
cat > ${PATH_PBAR}/colors.ini <<- EOF
[color]
BACKGROUND = ${background}
FOREGROUND = ${foreground}
ALTBACKGROUND = ${altbackground}
ALTFOREGROUND = ${altforeground}
ACCENT = ${accent}
BLACK = ${color0}
RED = ${color1}
GREEN = ${color2}
YELLOW = ${color3}
BLUE = ${color4}
MAGENTA = ${color5}
CYAN = ${color6}
WHITE = ${color7}
ALTBLACK = ${color8}
ALTRED = ${color9}
ALTGREEN = ${color10}
ALTYELLOW = ${color11}
ALTBLUE = ${color12}
ALTMAGENTA = ${color13}
ALTCYAN = ${color14}
ALTWHITE = ${color15}
EOF
}
# Rofi --------------------------------------
apply_rofi() {
# rewrite colors file
cat > ${PATH_ROFI}/shared/colors.rasi <<- EOF
* {
background: ${background};
background-alt: ${altbackground};
foreground: ${foreground};
selected: ${accent};
active: ${color2};
urgent: ${color1};
}
EOF
}
# Terminal ----------------------------------
apply_terminal() {
# alacritty : colors
cat > ${PATH_TERM}/colors.yml <<- _EOF_
## Colors configuration
colors:
# Default colors
primary:
background: '${background}'
foreground: '${foreground}'
# Normal colors
normal:
black: '${color0}'
red: '${color1}'
green: '${color2}'
yellow: '${color3}'
blue: '${color4}'
magenta: '${color5}'
cyan: '${color6}'
white: '${color7}'
# Bright colors
bright:
black: '${color8}'
red: '${color9}'
green: '${color10}'
yellow: '${color11}'
blue: '${color12}'
magenta: '${color13}'
cyan: '${color14}'
white: '${color15}'
_EOF_
}
# Dunst -------------------------------------
apply_dunst() {
# modify colors
sed -i '/urgency_low/Q' ${PATH_I3WM}/dunstrc
cat >> ${PATH_I3WM}/dunstrc <<- _EOF_
[urgency_low]
timeout = 2
background = "${background}"
foreground = "${foreground}"
frame_color = "${accent}"
[urgency_normal]
timeout = 5
background = "${background}"
foreground = "${foreground}"
frame_color = "${accent}"
[urgency_critical]
timeout = 0
background = "${background}"
foreground = "${color1}"
frame_color = "${color1}"
_EOF_
}
# I3WM -------------------------------------
apply_i3wm() {
# modify i3theme file
sed -i ${PATH_I3WM}/config.d/01_theme.conf \
-e "s/set \$i3_cl_col_bg.*/set \$i3_cl_col_bg $background/g" \
-e "s/set \$i3_cl_col_fg.*/set \$i3_cl_col_fg $foreground/g" \
-e "s/set \$i3_cl_col_in.*/set \$i3_cl_col_in $color2/g" \
-e "s/set \$i3_cl_col_afoc.*/set \$i3_cl_col_afoc $accent/g" \
-e "s/set \$i3_cl_col_ifoc.*/set \$i3_cl_col_ifoc $color4/g" \
-e "s/set \$i3_cl_col_ufoc.*/set \$i3_cl_col_ufoc $altbackground/g" \
-e "s/set \$i3_cl_col_urgt.*/set \$i3_cl_col_urgt $color5/g" \
-e "s/set \$i3_cl_col_phol.*/set \$i3_cl_col_phol $background/g"
# modify i3bar file
sed -i ${PATH_I3WM}/i3status/statusbar.conf \
-e "s/set \$i3_bar_bg.*/set \$i3_bar_bg $background/g" \
-e "s/set \$i3_bar_fg.*/set \$i3_bar_fg $foreground/g" \
-e "s/set \$i3_bar_sep.*/set \$i3_bar_sep $altbackground/g" \
-e "s/set \$i3_bar_foc.*/set \$i3_bar_foc $accent/g" \
-e "s/set \$i3_bar_act.*/set \$i3_bar_act $color4/g" \
-e "s/set \$i3_bar_ina.*/set \$i3_bar_ina $altbackground/g" \
-e "s/set \$i3_bar_urg.*/set \$i3_bar_urg $color5/g" \
-e "s/set \$i3_bar_mod.*/set \$i3_bar_mod $color2/g"
# modify i3status file
sed -i ${PATH_I3WM}/i3status/config \
-e "s/color_good =.*/color_good = \"$color2\"/g" \
-e "s/color_degraded =.*/color_degraded = \"$color3\"/g" \
-e "s/color_bad =.*/color_bad = \"$color1\"/g" \
-e "s/color_separator =.*/color_separator = \"$altbackground\"/g"
# restart i3wm
i3-msg restart
}
## Execute Script ---------------------------
apply_wallpaper
apply_polybar
apply_rofi
apply_terminal
apply_dunst
apply_i3wm

View File

@ -0,0 +1,75 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*****----- Main Window -----*****/
window {
location: center;
anchor: center;
fullscreen: false;
width: 350px;
x-offset: 0px;
y-offset: 0px;
padding: 15px;
border: 0px solid;
border-radius: 10px;
border-color: @selected;
background-color: @background;
cursor: "default";
children: [ "inputbar", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "textbox-prompt-colon", "prompt", "entry" ];
}
dummy {
expand: false;
width: 10px;
background-color: transparent;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 10px 13px;
border-radius: 100%;
background-color: @urgent;
text-color: @background;
}
prompt {
enabled: true;
padding: 10px;
border-radius: 15px;
background-color: @selected;
text-color: @background;
}
entry {
enabled: true;
padding: 10px 15px;
border-radius: 15px;
background-color: @background-alt;
text-color: inherit;
cursor: text;
placeholder: "Password";
placeholder-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: false;
}

View File

@ -0,0 +1,152 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
show-icons: false;
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=YES
*/
/*****----- Main Window -----*****/
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 500px;
x-offset: 0px;
y-offset: 0px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 10px;
border-color: @selected;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 20px;
margin: 0px;
padding: 30px;
background-color: transparent;
children: [ "inputbar", "listview", "message" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
padding: 0px;
border: 0px;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "dummy", "textbox-prompt-colon", "prompt", "dummy" ];
}
dummy {
expand: true;
background-color: transparent;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 10px 12px;
border-radius: 100%;
background-color: @selected;
text-color: @background;
}
prompt {
enabled: true;
padding: 10px;
border-radius: 20px;
background-color: @selected;
text-color: @background;
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 100%;
border-color: @selected;
background-color: @background-alt;
text-color: @foreground;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 5;
lines: 1;
cycle: true;
scrollbar: false;
layout: vertical;
spacing: 10px;
background-color: transparent;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
padding: 22px 10px;
border: 0px solid;
border-radius: 100%;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
cursor: pointer;
}
element-text {
font: "feather 20";
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
element normal.normal,
element alternate.normal {
background-color: var(background-alt);
text-color: var(foreground);
}
element normal.urgent,
element alternate.urgent,
element selected.active {
background-color: var(urgent);
text-color: var(background);
}
element normal.active,
element alternate.active,
element selected.urgent {
background-color: var(active);
text-color: var(background);
}
element selected.normal {
background-color: var(selected);
text-color: var(background);
}

View File

@ -0,0 +1,148 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
show-icons: false;
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=YES
*/
/*****----- Main Window -----*****/
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 300px;
x-offset: 0px;
y-offset: 0px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 10px;
border-color: @selected;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 30px;
background-color: transparent;
children: [ "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
padding: 0px;
border: 0px;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "textbox-prompt-colon", "prompt"];
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 10px 14px;
border-radius: 100%;
background-color: @urgent;
text-color: @background;
}
prompt {
enabled: true;
padding: 10px;
border-radius: 20px;
background-color: @active;
text-color: @background;
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 100%;
border-color: @selected;
background-color: @background-alt;
text-color: @foreground;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 2;
lines: 1;
cycle: true;
scrollbar: false;
layout: vertical;
spacing: 10px;
background-color: transparent;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
padding: 5px;
border: 0px solid;
border-radius: 100%;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
cursor: pointer;
}
element-text {
font: "feather 20";
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
element normal.normal,
element alternate.normal {
background-color: var(background-alt);
text-color: var(foreground);
}
element normal.urgent,
element alternate.urgent,
element selected.active {
background-color: var(urgent);
text-color: var(background);
}
element normal.active,
element alternate.active,
element selected.urgent {
background-color: var(active);
text-color: var(background);
}
element selected.normal {
background-color: var(selected);
text-color: var(background);
}

View File

@ -0,0 +1,318 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "drun,run,filebrowser,window";
show-icons: true;
display-drun: " Apps";
display-run: " Run";
display-filebrowser: " Files";
display-window: " Windows";
display-ssh: " SSH";
drun-display-format: "{name}";
window-format: "{c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 600px;
x-offset: 0px;
y-offset: 0px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 20px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "message", "custombox" ];
}
/*****----- A Custom Box -----*****/
custombox {
spacing: 10px;
background-color: @background-colour;
text-color: @foreground-colour;
orientation: horizontal;
children: [ "mode-switcher", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 6px 12px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "entry" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
padding: 5px 0px;
expand: false;
str: "";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
padding: 5px 0px;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "Search...";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 10px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
expand: false;
orientation: vertical;
spacing: 10px;
margin: 0px;
padding: 0px 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 0px 20px 0px 20px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 10px 12px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,152 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
show-icons: false;
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=YES
*/
/*****----- Main Window -----*****/
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 600px;
x-offset: 0px;
y-offset: 0px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 10px;
border-color: @selected;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 20px;
margin: 0px;
padding: 30px;
background-color: transparent;
children: [ "inputbar", "listview", "message" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
padding: 0px;
border: 0px;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "dummy", "textbox-prompt-colon", "prompt", "dummy" ];
}
dummy {
expand: true;
background-color: transparent;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 10px 14px;
border-radius: 100%;
background-color: @selected;
text-color: @background;
}
prompt {
enabled: true;
padding: 10px;
border-radius: 20px;
background-color: @selected;
text-color: @background;
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 100%;
border-color: @selected;
background-color: @background-alt;
text-color: @foreground;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 6;
lines: 1;
cycle: true;
scrollbar: false;
layout: vertical;
spacing: 10px;
background-color: transparent;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
padding: 22px 10px;
border: 0px solid;
border-radius: 100%;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
cursor: pointer;
}
element-text {
font: "feather 20";
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
element normal.normal,
element alternate.normal {
background-color: var(background-alt);
text-color: var(foreground);
}
element normal.urgent,
element alternate.urgent,
element selected.active {
background-color: var(urgent);
text-color: var(background);
}
element normal.active,
element alternate.active,
element selected.urgent {
background-color: var(active);
text-color: var(background);
}
element selected.normal {
background-color: var(selected);
text-color: var(background);
}

View File

@ -0,0 +1,319 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "drun,run,filebrowser,window";
show-icons: false;
display-drun: " Apps";
display-run: " Run";
display-filebrowser: " Files";
display-window: " Windows";
display-ssh: " SSH";
drun-display-format: "{name}";
window-format: "{w} · {c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 450px;
height: 430px;
x-offset: 0px;
y-offset: 0px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 20px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "listview" ];
}
/*****----- A Custom Box -----*****/
custombox {
spacing: 10px;
background-color: @background-colour;
text-color: @foreground-colour;
orientation: horizontal;
children: [ "mode-switcher", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 10px 12px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "prompt", "entry" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
padding: 0px;
expand: false;
str: "直";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
padding: 0px;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 10px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
expand: false;
orientation: vertical;
spacing: 10px;
margin: 0px;
padding: 0px 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 0px 20px 0px 20px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 10px 12px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,152 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
show-icons: false;
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=YES
*/
/*****----- Main Window -----*****/
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 600px;
x-offset: 0px;
y-offset: 0px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 10px;
border-color: @selected;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 20px;
margin: 0px;
padding: 30px;
background-color: transparent;
children: [ "inputbar", "listview", "message" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
padding: 0px;
border: 0px;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "dummy", "textbox-prompt-colon", "prompt", "dummy" ];
}
dummy {
expand: true;
background-color: transparent;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 10px 14px;
border-radius: 100%;
background-color: @selected;
text-color: @background;
}
prompt {
enabled: true;
padding: 10px;
border-radius: 20px;
background-color: @selected;
text-color: @background;
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 100%;
border-color: @selected;
background-color: @background-alt;
text-color: @foreground;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 6;
lines: 1;
cycle: true;
scrollbar: false;
layout: vertical;
spacing: 10px;
background-color: transparent;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
padding: 22px 10px;
border: 0px solid;
border-radius: 100%;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
cursor: pointer;
}
element-text {
font: "feather 20";
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
element normal.normal,
element alternate.normal {
background-color: var(background-alt);
text-color: var(foreground);
}
element normal.urgent,
element alternate.urgent,
element selected.active {
background-color: var(urgent);
text-color: var(background);
}
element normal.active,
element alternate.active,
element selected.urgent {
background-color: var(active);
text-color: var(background);
}
element selected.normal {
background-color: var(selected);
text-color: var(background);
}

View File

@ -0,0 +1,318 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "run";
show-icons: true;
display-drun: " Apps";
display-run: " Run";
display-filebrowser: " Files";
display-window: " Windows";
display-ssh: " SSH";
drun-display-format: "{name}";
window-format: "{w} · {c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 450px;
x-offset: 0px;
y-offset: 0px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 20px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "listview" ];
}
/*****----- A Custom Box -----*****/
custombox {
spacing: 10px;
background-color: @background-colour;
text-color: @foreground-colour;
orientation: horizontal;
children: [ "mode-switcher", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 6px 12px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "entry" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
padding: 5px 0px;
expand: false;
str: "";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
padding: 5px 0px;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "Run...";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 10px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
expand: false;
orientation: vertical;
spacing: 10px;
margin: 0px;
padding: 0px 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 0px 20px 0px 20px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 10px 12px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,152 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
show-icons: false;
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*
USE_ICON=YES
*/
/*****----- Main Window -----*****/
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 500px;
x-offset: 0px;
y-offset: 0px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 10px;
border-color: @selected;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 20px;
margin: 0px;
padding: 30px;
background-color: transparent;
children: [ "inputbar", "listview", "message" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
padding: 0px;
border: 0px;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "dummy", "textbox-prompt-colon", "prompt", "dummy" ];
}
dummy {
expand: true;
background-color: transparent;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 10px 12px;
border-radius: 100%;
background-color: @selected;
text-color: @background;
}
prompt {
enabled: true;
padding: 10px;
border-radius: 20px;
background-color: @selected;
text-color: @background;
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 10px;
border: 0px solid;
border-radius: 100%;
border-color: @selected;
background-color: @background-alt;
text-color: @foreground;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 5;
lines: 1;
cycle: true;
scrollbar: false;
layout: vertical;
spacing: 10px;
background-color: transparent;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
padding: 22px 10px;
border: 0px solid;
border-radius: 100%;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
cursor: pointer;
}
element-text {
font: "feather 20";
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
element normal.normal,
element alternate.normal {
background-color: var(background-alt);
text-color: var(foreground);
}
element normal.urgent,
element alternate.urgent,
element selected.active {
background-color: var(urgent);
text-color: var(background);
}
element normal.active,
element alternate.active,
element selected.urgent {
background-color: var(active);
text-color: var(background);
}
element selected.normal {
background-color: var(selected);
text-color: var(background);
}

View File

@ -0,0 +1,12 @@
/* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com> */
/* Colors */
* {
background: #091927;
background-alt: #0c2133;
foreground: #e1e7ee;
selected: #8DA2B3;
active: #7FB2E1;
urgent: #77A7D6;
}

View File

@ -0,0 +1,7 @@
/* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com> */
/* Text Font */
* {
font: "Iosevka 10";
}

View File

@ -0,0 +1,319 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "drun,run,filebrowser,window";
show-icons: false;
display-drun: " Apps";
display-run: " Run";
display-filebrowser: " Files";
display-window: " Windows";
display-ssh: " SSH";
drun-display-format: "{name}";
window-format: "{w} · {c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 450px;
x-offset: 0px;
y-offset: 0px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 20px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "listview" ];
}
/*****----- A Custom Box -----*****/
custombox {
spacing: 10px;
background-color: @background-colour;
text-color: @foreground-colour;
orientation: horizontal;
children: [ "mode-switcher", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 6px 12px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "prompt" ];
}
prompt {
enabled: true;
padding: 5px 0px;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
padding: 5px 0px;
expand: false;
str: "";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
padding: 5px 0px;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "Run...";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 10px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
expand: false;
orientation: vertical;
spacing: 10px;
margin: 0px;
padding: 0px 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 0px 20px 0px 20px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 10px 12px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,318 @@
/**
* Copyright (C) 2020-2023 Aditya Shakya <adi1090x@gmail.com>
**/
/*****----- Configuration -----*****/
configuration {
modi: "window";
show-icons: true;
display-drun: " Apps";
display-run: " Run";
display-filebrowser: " Files";
display-window: " Windows";
display-ssh: " SSH";
drun-display-format: "{name}";
window-format: "{c} · {t}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 500px;
x-offset: 0px;
y-offset: 0px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 20px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "listview" ];
}
/*****----- A Custom Box -----*****/
custombox {
spacing: 10px;
background-color: @background-colour;
text-color: @foreground-colour;
orientation: horizontal;
children: [ "mode-switcher", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 6px 12px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "entry" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
padding: 5px 0px;
expand: false;
str: "";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
padding: 5px 0px;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "Filter...";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 10px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
expand: false;
orientation: vertical;
spacing: 10px;
margin: 0px;
padding: 0px 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 0px 20px 0px 20px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 10px 12px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 0px solid;
border-radius: 8px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

Some files were not shown because too many files have changed in this diff Show More