Merge branch 'master' of gitlab.com:chriscochrun/dotfiles
This commit is contained in:
		
						commit
						dc40c281e1
					
				
					 10 changed files with 178 additions and 65 deletions
				
			
		| 
						 | 
				
			
			@ -1 +1 @@
 | 
			
		|||
Subproject commit 2cb0c54ebe6aea8c133da8259fd44b40ae94b9eb
 | 
			
		||||
Subproject commit ae211c2cae257a19cf2aed3faeb76959ad714da9
 | 
			
		||||
							
								
								
									
										100
									
								
								awesome/init.fnl
									
										
									
									
									
								
							
							
						
						
									
										100
									
								
								awesome/init.fnl
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -48,7 +48,8 @@
 | 
			
		|||
(beautiful.init "/home/chris/.config/awesome/theme.lua")
 | 
			
		||||
 | 
			
		||||
;; Import the bling modules and layouts
 | 
			
		||||
;;(local bling (require "bling"))
 | 
			
		||||
(local bling (require "bling"))
 | 
			
		||||
;;(local awestore (require "awestore"))
 | 
			
		||||
 | 
			
		||||
;; This is used later as the default terminal and editor to run.
 | 
			
		||||
(var terminal "alacritty")
 | 
			
		||||
| 
						 | 
				
			
			@ -76,7 +77,7 @@
 | 
			
		|||
 | 
			
		||||
;; Table of layouts to cover with awful.layout.inc, order matters.
 | 
			
		||||
(set awful.layout.layouts [
 | 
			
		||||
                           ;;bling.layout.mstab
 | 
			
		||||
                           bling.layout.mstab
 | 
			
		||||
                           awful.layout.suit.tile
 | 
			
		||||
                           ;;bling.layout.centered
 | 
			
		||||
                           awful.layout.suit.floating
 | 
			
		||||
| 
						 | 
				
			
			@ -156,38 +157,38 @@
 | 
			
		|||
     ;; Make buffers on all sides so that tiled clients aren't pushed to edges
 | 
			
		||||
     (set s.padding (dpi 10))
 | 
			
		||||
 | 
			
		||||
   ;; Create a promptbox for each screen
 | 
			
		||||
   (set s.mypromptbox (awful.widget.prompt))
 | 
			
		||||
   ;; Create an imagebox widget which will contain an icon indicating which layout we're using.
 | 
			
		||||
   ;; We need one layoutbox per screen.
 | 
			
		||||
   (set s.mylayoutbox (awful.widget.layoutbox s))
 | 
			
		||||
   (: s.mylayoutbox :buttons (gears.table.join
 | 
			
		||||
                              (awful.button [] 1 (fn [] (awful.layout.inc 1 s awful.layout.layouts)))
 | 
			
		||||
                              (awful.button [] 3 (fn [] (awful.layout.inc -1 s)))
 | 
			
		||||
                              (awful.button [] 4 (fn [] (awful.layout.inc 1 s)))
 | 
			
		||||
                              (awful.button [] 5 (fn [] (awful.layout.inc -1 s)))))
 | 
			
		||||
 | 
			
		||||
   ;; Create a taglist widget
 | 
			
		||||
   (set s.mytaglist (awful.widget.taglist {
 | 
			
		||||
                                           :screen s
 | 
			
		||||
                                           :filter awful.widget.taglist.filter.all
 | 
			
		||||
                                           :buttons taglist_buttons
 | 
			
		||||
                                           :style {
 | 
			
		||||
                                                   :bg_focus beautiful.bg_focus
 | 
			
		||||
                                                   :fg_focus beautiful.base01
 | 
			
		||||
                                                   :bg_occupied beautiful.bg_normal
 | 
			
		||||
                                                   :bg_empty beautiful.bg_normal
 | 
			
		||||
                                                   }
 | 
			
		||||
                                           :layout {
 | 
			
		||||
                                                    :spacing (dpi 5)
 | 
			
		||||
                                                    :spacing_widget {
 | 
			
		||||
                                                                       :valign "center"
 | 
			
		||||
                                                                       :halign "center"
 | 
			
		||||
                                                                       :widget wibox.container.place
 | 
			
		||||
                                                                       }
 | 
			
		||||
                                                    :layout wibox.layout.flex.horizontal
 | 
			
		||||
                                                    }
 | 
			
		||||
                                           }))
 | 
			
		||||
     ;; Create a promptbox for each screen
 | 
			
		||||
     (set s.mypromptbox (awful.widget.prompt))
 | 
			
		||||
     ;; Create an imagebox widget which will contain an icon indicating which layout we're using.
 | 
			
		||||
     ;; We need one layoutbox per screen.
 | 
			
		||||
     (set s.mylayoutbox (awful.widget.layoutbox s))
 | 
			
		||||
     (: s.mylayoutbox :buttons (gears.table.join
 | 
			
		||||
                                (awful.button [] 1 (fn [] (awful.layout.inc 1 s awful.layout.layouts)))
 | 
			
		||||
                                (awful.button [] 3 (fn [] (awful.layout.inc -1 s)))
 | 
			
		||||
                                (awful.button [] 4 (fn [] (awful.layout.inc 1 s)))
 | 
			
		||||
                                (awful.button [] 5 (fn [] (awful.layout.inc -1 s)))))
 | 
			
		||||
     
 | 
			
		||||
     ;; Create a taglist widget
 | 
			
		||||
     (set s.mytaglist (awful.widget.taglist {
 | 
			
		||||
                                             :screen s
 | 
			
		||||
                                             :filter awful.widget.taglist.filter.all
 | 
			
		||||
                                             :buttons taglist_buttons
 | 
			
		||||
                                             :style {
 | 
			
		||||
                                                     :bg_focus beautiful.bg_focus
 | 
			
		||||
                                                     :fg_focus beautiful.base01
 | 
			
		||||
                                                     :bg_occupied beautiful.bg_normal
 | 
			
		||||
                                                     :bg_empty beautiful.bg_normal
 | 
			
		||||
                                                     }
 | 
			
		||||
                                             :layout {
 | 
			
		||||
                                                      :spacing (dpi 5)
 | 
			
		||||
                                                      :spacing_widget {
 | 
			
		||||
                                                                         :valign "center"
 | 
			
		||||
                                                                         :halign "center"
 | 
			
		||||
                                                                         :widget wibox.container.place
 | 
			
		||||
                                                                         }
 | 
			
		||||
                                                      :layout wibox.layout.flex.horizontal
 | 
			
		||||
                                                      }
 | 
			
		||||
                                             }))
 | 
			
		||||
 | 
			
		||||
   ;; (set s.mytaglistbg ( {
 | 
			
		||||
   ;;                        1 {
 | 
			
		||||
| 
						 | 
				
			
			@ -383,7 +384,6 @@
 | 
			
		|||
                                         2 s.cputext
 | 
			
		||||
                                         3 s.cpuspace
 | 
			
		||||
                                        :layout wibox.layout.fixed.horizontal
 | 
			
		||||
                                        :fg beautiful.base0B
 | 
			
		||||
                                        })
 | 
			
		||||
                                :widget wibox.container.margin
 | 
			
		||||
                                :left (dpi 9)}
 | 
			
		||||
| 
						 | 
				
			
			@ -403,6 +403,23 @@
 | 
			
		|||
                                         2 s.mailtext
 | 
			
		||||
                                         3 s.mailspace
 | 
			
		||||
                                        :layout wibox.layout.fixed.horizontal
 | 
			
		||||
                                        })
 | 
			
		||||
                                :widget wibox.container.margin
 | 
			
		||||
                                :left (dpi 9)}
 | 
			
		||||
                            :widget wibox.container.background
 | 
			
		||||
                            :shape gears.shape.rounded_bar
 | 
			
		||||
                            :bg beautiful.bg_normal
 | 
			
		||||
                            :fg beautiful.base0C}
 | 
			
		||||
                      :widget wibox.container.margin
 | 
			
		||||
                      :right (dpi 10)})
 | 
			
		||||
 | 
			
		||||
     (set s.wttrtext (awful.widget.watch "wttr" 1200))
 | 
			
		||||
     (set s.wttrspace (wibox.widget.textbox " "))
 | 
			
		||||
            
 | 
			
		||||
     (set s.wttrwidget { 1 { 1 { 1 (wibox.widget {
 | 
			
		||||
                                         1 s.wttrtext
 | 
			
		||||
                                         2 s.wttrspace
 | 
			
		||||
                                        :layout wibox.layout.fixed.horizontal
 | 
			
		||||
                                        :fg beautiful.base0B
 | 
			
		||||
                                        })
 | 
			
		||||
                                :widget wibox.container.margin
 | 
			
		||||
| 
						 | 
				
			
			@ -430,12 +447,13 @@
 | 
			
		|||
     (set s.myrightwidgets {
 | 
			
		||||
                            1 {
 | 
			
		||||
                               :layout wibox.layout.fixed.horizontal
 | 
			
		||||
                               1 s.mailwidget
 | 
			
		||||
                               2 s.cpuwidget
 | 
			
		||||
                               3 s.volumewidget
 | 
			
		||||
                               4 (if laptop s.batterywidget s.myemptywidget)
 | 
			
		||||
                               5 (if (= s.index 1) s.mysystray)
 | 
			
		||||
                               6 s.mylayoutbox
 | 
			
		||||
                               1 s.wttrwidget
 | 
			
		||||
                               2 s.mailwidget
 | 
			
		||||
                               3 s.cpuwidget
 | 
			
		||||
                               4 s.volumewidget
 | 
			
		||||
                               5 (if laptop s.batterywidget s.myemptywidget)
 | 
			
		||||
                               6 (if (= s.index 1) s.mysystray)
 | 
			
		||||
                               7 s.mylayoutbox
 | 
			
		||||
                               }
 | 
			
		||||
                            :widget wibox.container.background
 | 
			
		||||
                            })
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -133,7 +133,7 @@
 | 
			
		|||
                     (awful.key [ modkey ] "x" (fn [] (awful.spawn "emacsclient -c -e '(org-capture)'"))
 | 
			
		||||
                                {:description "launch scratchpad in new emacs frame" :group "apps" })
 | 
			
		||||
                     (awful.key [ modkey ] "'" (fn [] (awful.spawn "emacsclient -e '(org-agenda-list)'"
 | 
			
		||||
{:name "*Org Agenda(a)*"}))
 | 
			
		||||
{:name "*Org Agenda(a)*" :floating true :placement awful.placement.centered :class "org-agenda" :instance "org-agenda"}))
 | 
			
		||||
                                {:description "launch org-agenda in new emacs frame" :group "apps" })
 | 
			
		||||
                     (awful.key [ modkey alt ] "m" (fn [] (awful.spawn "emacsclient -c -e '(org-roam-capture)'"))
 | 
			
		||||
                                {:description "launch org-roam-capture in new emacs frame" :group "apps" })
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
-- pcall(require, "luarocks.loader")
 | 
			
		||||
pcall(require, "luarocks.loader")
 | 
			
		||||
fennel = require("fennel")
 | 
			
		||||
local gears = require("gears")
 | 
			
		||||
fennel.path = fennel.path .. ";.config/awesome/?.fnl"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -76,11 +76,16 @@
 | 
			
		|||
                          :name [
 | 
			
		||||
                                 "*Org Agenda(a)*"
 | 
			
		||||
                                 ]
 | 
			
		||||
                          :class [
 | 
			
		||||
                                  "org-agenda"
 | 
			
		||||
                                  ]
 | 
			
		||||
                          :instance [
 | 
			
		||||
                                     "org-agenda"
 | 
			
		||||
                                     ]
 | 
			
		||||
                          }
 | 
			
		||||
               :properties {
 | 
			
		||||
                            :floating true
 | 
			
		||||
                            :raise true
 | 
			
		||||
                            :screen 1
 | 
			
		||||
                            :placement (+ awful.placement.no_offscreen awful.placement.centered)
 | 
			
		||||
                            }
 | 
			
		||||
               }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,6 +34,8 @@ theme.base0D        = "#57c7ff"
 | 
			
		|||
theme.base0E        = "#ff6ac1"
 | 
			
		||||
theme.base0F        = "#b2643c"
 | 
			
		||||
 | 
			
		||||
theme.bg_darker     = "#1a1a25"
 | 
			
		||||
 | 
			
		||||
theme.bg_normal     = theme.base00
 | 
			
		||||
theme.bg_light      = theme.base01
 | 
			
		||||
theme.bg_focus      = theme.base0D -- Base02
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										12
									
								
								nyxt/auto-config.lisp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								nyxt/auto-config.lisp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
(DEFINE-CONFIGURATION NYXT/REDUCE-TRACKING-MODE:REDUCE-TRACKING-MODE
 | 
			
		||||
  ((VISIBLE-IN-STATUS-P NIL)))
 | 
			
		||||
(DEFINE-CONFIGURATION NYXT/FORCE-HTTPS-MODE:FORCE-HTTPS-MODE
 | 
			
		||||
  ((VISIBLE-IN-STATUS-P NIL)))
 | 
			
		||||
(DEFINE-CONFIGURATION NYXT/AUTO-MODE:AUTO-MODE
 | 
			
		||||
  ((VISIBLE-IN-STATUS-P NIL)))
 | 
			
		||||
(DEFINE-CONFIGURATION NYXT/CERTIFICATE-EXCEPTION-MODE:CERTIFICATE-EXCEPTION-MODE
 | 
			
		||||
  ((VISIBLE-IN-STATUS-P NIL)))
 | 
			
		||||
(DEFINE-CONFIGURATION NYXT/HELP-MODE:HELP-MODE
 | 
			
		||||
  ((VISIBLE-IN-STATUS-P NIL)))
 | 
			
		||||
(DEFINE-CONFIGURATION NYXT/WEB-MODE:WEB-MODE
 | 
			
		||||
  ((VISIBLE-IN-STATUS-P NIL)))
 | 
			
		||||
							
								
								
									
										111
									
								
								nyxt/init.lisp
									
										
									
									
									
								
							
							
						
						
									
										111
									
								
								nyxt/init.lisp
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -13,7 +13,7 @@
 | 
			
		|||
    "Show a set of element hints, and copy the URL of the user inputted one."
 | 
			
		||||
  (nyxt/web-mode:query-hints "Copy element URL"
 | 
			
		||||
                             (lambda (nyxt/web-mode::result)
 | 
			
		||||
                               (mpv (first nyxt/web-mode::result)))
 | 
			
		||||
                               (echo (first nyxt/web-mode::result)))
 | 
			
		||||
                             :annotate-visible-only-p
 | 
			
		||||
                             nyxt/web-mode::annotate-visible-only-p))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -27,7 +27,8 @@
 | 
			
		|||
(define-mode chris-mode ()
 | 
			
		||||
  "Dummy mode for the custom key bindings in `*chris-keymap*'."
 | 
			
		||||
  ((keymap-scheme (keymap:make-scheme
 | 
			
		||||
                   scheme:vi-normal *chris-keymap*))))
 | 
			
		||||
                   scheme:vi-normal *chris-keymap*))
 | 
			
		||||
   (visible-in-status-p nil)))
 | 
			
		||||
 | 
			
		||||
(define-configuration buffer
 | 
			
		||||
  ((default-modes (append '(vi-normal-mode
 | 
			
		||||
| 
						 | 
				
			
			@ -37,6 +38,7 @@
 | 
			
		|||
                            chris-mode)
 | 
			
		||||
                   %slot-default%))))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
(define-configuration status-buffer
 | 
			
		||||
  ((style
 | 
			
		||||
    (str:concat
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +46,46 @@
 | 
			
		|||
     (cl-css:css
 | 
			
		||||
      '((body
 | 
			
		||||
         :background "#282a36"
 | 
			
		||||
         :color "#e2e4e5")))))))
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        ("#container"
 | 
			
		||||
         :grid-template-columns "0px 0px 1.5fr 0px 2fr 0px 1fr 0px")
 | 
			
		||||
        ("#controls"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#f3f99d"
 | 
			
		||||
         :width "0px"
 | 
			
		||||
         :padding-left "0px"
 | 
			
		||||
         :hidden)
 | 
			
		||||
        ("#url"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#5af78e")
 | 
			
		||||
        ("#modes"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#f3f99d")
 | 
			
		||||
        ("#tabs"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#5af78e")
 | 
			
		||||
        (".tab"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#9aedfe")
 | 
			
		||||
        (".tab:hover"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#f1f1f0")
 | 
			
		||||
        (".button"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#5af78e")
 | 
			
		||||
        (".button:hover"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#f1f1f0")
 | 
			
		||||
        (".arrow"
 | 
			
		||||
         :width "0px"
 | 
			
		||||
         :height "0px")
 | 
			
		||||
        (".arrow-right"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#5af78e")
 | 
			
		||||
        (".arrow-left"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#5af78e")
 | 
			
		||||
        ))))))
 | 
			
		||||
 | 
			
		||||
(define-configuration internal-buffer
 | 
			
		||||
  ((style
 | 
			
		||||
| 
						 | 
				
			
			@ -52,12 +93,11 @@
 | 
			
		|||
     %slot-default%
 | 
			
		||||
     (cl-css:css
 | 
			
		||||
      '((body
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :background "#282a36"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        (hr
 | 
			
		||||
         :color "#5af78e")
 | 
			
		||||
        (.button
 | 
			
		||||
         :color "#e2e4e5")))))))
 | 
			
		||||
 | 
			
		||||
(define-configuration window
 | 
			
		||||
  ((message-buffer-style
 | 
			
		||||
    (str:concat
 | 
			
		||||
| 
						 | 
				
			
			@ -67,17 +107,50 @@
 | 
			
		|||
         :background-color "#282a36"
 | 
			
		||||
         :color "#e2e4e5")))))))
 | 
			
		||||
 | 
			
		||||
;; (define-configuration prompt-buffer
 | 
			
		||||
;;   ((style
 | 
			
		||||
;;     (str:concat
 | 
			
		||||
;;      %slot-default%
 | 
			
		||||
;;      (cl-css:css
 | 
			
		||||
;;       '((body
 | 
			
		||||
;;          :background-color "#282a36"
 | 
			
		||||
;;          :color "#e2e4e5")
 | 
			
		||||
;;         ('#prompt-area'
 | 
			
		||||
;;          :background-color "#282a36")
 | 
			
		||||
;;         (.button
 | 
			
		||||
;;          :color "#e2e4e5")))))))
 | 
			
		||||
(define-configuration prompt-buffer
 | 
			
		||||
  ((style
 | 
			
		||||
    (str:concat
 | 
			
		||||
     %slot-default%
 | 
			
		||||
     (cl-css:css
 | 
			
		||||
      '((body
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        ("#prompt-area"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#57c7ff")
 | 
			
		||||
        ("#prompt"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        ("#input"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        ("#suggestions"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        (.source
 | 
			
		||||
         :margin-left "5px")
 | 
			
		||||
        (.source-name
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        (.source-content
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        (".source-content td"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        (".source-content th"
 | 
			
		||||
         :background-color "#43454f"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        ("#selection"
 | 
			
		||||
         :background-color "#57c7ff"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        (.marked
 | 
			
		||||
         :background-color "#5af78e"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        (.selected
 | 
			
		||||
         :background-color "#57c7ff"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        (.button
 | 
			
		||||
         :color "#e2e4e5")))))))
 | 
			
		||||
 | 
			
		||||
(load-after-system :slynk "~/.config/nyxt/my-slynk.lisp")
 | 
			
		||||
(load-after-system :slynk (nyxt-init-file "my-slynk.lisp"))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ round-borders-exclude = [
 | 
			
		|||
shadow = true;
 | 
			
		||||
 | 
			
		||||
# The blur radius for shadows, in pixels. (defaults to 12)
 | 
			
		||||
shadow-radius = 13;
 | 
			
		||||
shadow-radius = 18;
 | 
			
		||||
 | 
			
		||||
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
 | 
			
		||||
shadow-opacity = .75;
 | 
			
		||||
| 
						 | 
				
			
			@ -169,6 +169,7 @@ opacity-rule = [
 | 
			
		|||
  # "100:class_g    = 'kitty'",
 | 
			
		||||
  "100:class_g    = 'Alacritty'",
 | 
			
		||||
  "100:class_g    = 'qutebrowser'",
 | 
			
		||||
  "100:class_g    = 'scribus'",
 | 
			
		||||
  "100:class_g    = 'OpenLP'",
 | 
			
		||||
  "80:class_g     = 'Polybar'",
 | 
			
		||||
  "100:class_g    = 'code-oss'",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								scripts/wttr
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								scripts/wttr
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
#!/usr/bin/sh
 | 
			
		||||
curl 'wttr.in/long_island,ks?format=%c%t+💦+%h+☔+%p\n'
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue