I know it's been a while, but you can blame the lockdown here in France for providing me free time...
I started from Gonzalo Medina's proposal and build the missing stuff around it.
I believe this is the single most difficult thing I've ever done with LaTeX, so thanks for your question, I learned a lot of stuff preparing this answer.
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{calc,patterns.meta}
% To provide total amount of sections throughout the document
\usepackage{totcount}
% Registers de total amount of sections (see https://tex.stackexchange.com/a/192506/141947)
\regtotcounter{section}
% To be able to refer to sections when needed
\usepackage{nameref}
% Redefinition of the \section command so that each one is labeled \label{sec:n} where n is its index
\let\oldsection\section
\renewcommand{\section}[2][\relax]{%
\ifx#1\relax
\oldsection{#2}%
\else
\oldsection[#1]{#2}%
\fi%
\label{sec:\thesection}%
}
% Definition of custom colors based on the initial figure of the bar by the OP
\definecolor{myblue}{HTML}{57AED1}
\definecolor{mygreen}{HTML}{8BC53F}
\definecolor{mygray}{HTML}{DDDDDD}
% Definition of custom tikz styles in order to ease readability
\tikzset{
% Bar style (Argument : color)
sectionbar/.style={
% Filling with one color as a preaction, in order to avoid reset by the pattern color
preaction={fill=#1!70},
% Application of the line pattern on to of the fill
pattern={Lines[angle=45,distance={6pt},line width=3pt]},pattern color=#1
},
% Node style (Arguments : color, section number)
sectionnode/.style 2 args={
fill=#1,
draw=white,
thick,
circle,
text=white,
radius=10pt,
% Display of the section name below the cicle
label={[text=#1]below:\nameref{sec:#2}},
}
}
% Actual definition of the colorbar based on Gonzalo Medina's initial proposal
\makeatletter
\def\pbar@progressbar{} % the progress bar
\newcount\pbar@tmpcnta% auxiliary counter
\newcount\pbar@tmpcntb% auxiliary counter
\newdimen\pbar@pbht %progressbar height
\newdimen\pbar@pbwd %progressbar width
\newdimen\pbar@tmpdim % auxiliary dimension
\pbar@pbwd=\linewidth
\pbar@pbht=4pt
% The progress bar
\def\pbar@progressbar{%
\pbar@tmpcnta=\value{section} % tmpcnta stores the section number
\pbar@tmpcntb=\totvalue{section} % tmbcountb sotres the total amount of sections
\advance\pbar@tmpcntb by 1 % tmbcountb is advanced by 1 in order to have the last bar segment after the last node
\begin{tikzpicture}[very thin]
% Clipping scope to avoid tests for the bar dimensions
\begin{scope}
% Clipping path
\path[rounded corners=2pt,clip] (0pt,{-\pbar@pbht/2}) rectangle (\pbar@pbwd,{\pbar@pbht/2});
% Gray bar (from 0 to last section)
\path[sectionbar=mygray] (0pt,{-\pbar@pbht/2}) rectangle (\linewidth,{\pbar@pbht/2});
% Blue bar (from 0 to the current section)
\path[sectionbar=myblue] (0pt,{-\pbar@pbht/2}) rectangle ({(\[email protected])*\linewidth/\pbar@tmpcntb},{\pbar@pbht/2});
% Green bar (from current to next section)
\path[sectionbar=mygreen] ({(\[email protected])*\linewidth/\pbar@tmpcntb},{-\pbar@pbht/2}) rectangle ({(\pbar@tmpcnta+0.5)*\linewidth/\pbar@tmpcntb},{\pbar@pbht/2});
\end{scope}
% Drawing of the nodes on top of the bars, based on the number of the current section
\foreach \secnumber in {1,...,\totvalue{section}}{
% Number is lower, section is past, blue color
\ifnum\secnumber<\pbar@tmpcnta
\node[sectionnode={myblue}{\secnumber}] at ({(\secnumber-0.5)*\linewidth/\pbar@tmpcntb},0) {\strut\secnumber};
\fi
% Number is equal, section is current, green color
\ifnum\secnumber=\pbar@tmpcnta
\node[sectionnode={mygreen}{\secnumber}] at ({(\secnumber-0.5)*\linewidth/\pbar@tmpcntb},0) {\strut\secnumber};
\fi
% Number is larger, to be done section, gray color
\ifnum\secnumber>\pbar@tmpcnta
\node[sectionnode={mygray}{\secnumber}] at ({(\secnumber-0.5)*\linewidth/\pbar@tmpcntb},0) {\strut\secnumber};
\fi
}
\end{tikzpicture}%
}
\addtobeamertemplate{headline}{}
{%
\begin{beamercolorbox}[wd=\paperwidth,ht=10ex,center,dp=1ex]{white}%
\pbar@progressbar%
\end{beamercolorbox}%
}
\makeatother
\begin{document}
\section{Introduction}
\begin{frame}
\frametitle{Introduction}
test
\end{frame}
\section{Motivation}
\begin{frame}
\frametitle{Motivation}
test
\end{frame}
\section{Methodology}
\begin{frame}
\frametitle{Experiments}
test
\end{frame}
\begin{frame}
\frametitle{Statistics}
test
\end{frame}
\section{Results}
\begin{frame}
\frametitle{Results 1}
test
\end{frame}
\begin{frame}
\frametitle{Results 2}
test
\end{frame}
\section{Conclusion}
\begin{frame}
\frametitle{Conclusion}
test
\end{frame}
\end{document}

EDIT Just for fun, a slightly leaner definition or the bar using a pgf
ifthenelse
construct and precomputing \linewidth/\pbar@tempcntb
.
% The progress bar
\def\pbar@progressbar{%
\pbar@tmpcnta=\value{section} % tmpcnta stores the section number
\pbar@tmpcntb=\totvalue{section} % tmbcountb sotres the total amount of sections
\advance\pbar@tmpcntb by 1 % tmbcountb is advanced by 1 in order to have the last bar segment after the last node
\pbar@tmpdim=\linewidth
\divide\pbar@tmpdim by \pbar@tmpcntb
\begin{tikzpicture}[very thin]
% Clipping scope to avoid tests for the bar dimensions
\begin{scope}
% Clipping path
\path[rounded corners=2pt,clip] (0pt,{-\pbar@pbht/2}) rectangle (\pbar@pbwd,{\pbar@pbht/2});
% Gray bar (from 0 to last section)
\path[sectionbar=mygray] (0pt,{-\pbar@pbht/2}) rectangle (\linewidth,{\pbar@pbht/2});
% Blue bar (from 0 to the current section)
\path[sectionbar=myblue] (0pt,{-\pbar@pbht/2}) rectangle ({(\[email protected])*\pbar@tmpdim},{\pbar@pbht/2});
% Green bar (from current to next section)
\path[sectionbar=mygreen] ({(\[email protected])*\pbar@tmpdim},{-\pbar@pbht/2}) rectangle ({(\pbar@tmpcnta+0.5)*\pbar@tmpdim},{\pbar@pbht/2});
\end{scope}
% Drawing of the nodes on top of the bars, based on the number of the current section
\foreach \secnumber in {1,...,\totvalue{section}}{
% Conditional definition of the colors
\pgfmathsetmacro{\currcolor}{(\secnumber<\pbar@tmpcnta ? "myblue" : (\secnumber==\pbar@tmpcnta ? "mygreen" : "mygray"))}
\node[sectionnode={\currcolor}{\secnumber}] at ({(\secnumber-0.5)*\pbar@tmpdim},0) {\strut\secnumber};
}
\end{tikzpicture}%
}
\addtobeamertemplate{headline}{}
{%
\begin{beamercolorbox}[wd=\paperwidth,ht=10ex,center,dp=1ex]{white}%
\pbar@progressbar%
\end{beamercolorbox}%
}
\makeatother
Berlin
,Darmstadt
orBerkeley
do. Anyway, I doubt of the benefits of any progress bar. The bars take a valuable space (except maybe using one as discrete as in themetropolis
theme) and overall, is distracting. Do you want people focused on your dissertation or in how many sections rest to leave?